用途:为使用 Vaadin 25 的项目提供主题选型与定制指导,帮助在 Aura 与 Lumo 两套官方主题之间做出选择并正确配置。资料建议在不确定具体 API 细节时,使用 Vaadin MCP 工具(search_vaadin_docs、get_component_styling、get_component_java_api)查询最新文档,并将 vaadin_version 设为 "25"、ui_language 设为 "java"。
主要能力:一,对比 Aura 与 Lumo 的视觉风格、定制模型、颜色系统、字号、间距、圆角、工具类、暗色模式与阴影机制,并给出选型建议——需要现代化外观、少量配置即可全局适配时选 Aura;需要细粒度控制单个设计令牌、从 Java 使用工具类或需要紧凑预设时选 Lumo。二,说明主题加载方式:通过 AppShellConfigurator 上的 @StyleSheet 加载,主题样式表必须先于其他样式表,例如 @StyleSheet(Aura.STYLESHEET) 或 @StyleSheet(Lumo.STYLESHEET),Lumo 工具类需额外加载 Lumo.UTILITY_STYLESHEET。三,颜色定制:Aura 提供 neutral、red、orange、yellow、green、blue、purple 七色调色板及自动计算的文本、边框、表面变体,重写 --aura-accent-color-light/dark 等;Lumo 使用带透明度变体的语义色阶,如 --lumo-primary-color 及 50pct、10pct、text、contrast 变体。四,暗色模式:两套主题共用 @ColorScheme 注解,取值 LIGHT、DARK、LIGHT_DARK,并基于原生 color-scheme;Aura 分别覆盖 -light/-dark 变体,Lumo 使用 light-dark() 函数。五,字体、间距、圆角与阴影:Aura 从 --aura-base-font-size、--aura-base-size、--aura-base-radius 等核心值计算整套刻度,并提供 theme="small" 等内置变体;Lumo 提供 --lumo-font-size-、--lumo-space-、--lumo-border-radius-、--lumo-box-shadow- 等独立令牌及紧凑预设。六,组件变体通过 addThemeVariants() 应用,但并非所有变体在两套主题中都可用,需查阅组件文档。七,LumoUtility.* 提供类似 Tailwind 的工具类,仅适用于 Lumo;Aura 无等价工具类,可用 CSS 自定义属性、内联样式或自定义 CSS 类,或启用实验性 Tailwind 支持。
使用方式:在 AppShellConfigurator 类上用 @StyleSheet 按顺序加载主题与自定义样式表;用 CSS 自定义属性在 html 选择器上覆盖令牌;组件内部样式使用 ::part()。
限制与注意:应选定一套主题并保持一致,混用 Aura 与 Lumo 的令牌或工具类会导致样式异常;Aura 无工具类样式表,Lumo.UTILITY_STYLESHEET 仅对 Lumo 有效;--aura-surface-level 等表面属性仅在源码列表匹配的特定选择器上可改;Vaadin 25 不推荐 @CssImport,应改用 @StyleSheet。更完整的令牌表、变体对照与主题设置配方见 references/theming-patterns.md,组件 ::part() 选择器与 CSS 动画见 frontend-design 技能的 references/design-patterns.md。