Skip to content

Design System ​

Infinia 4.0.0 renders its entire UI — host shell and plugin micro-frontends alike — with Vuetify 3 on the Material Design 3 baseline. There is no JavaFX layer in the 4.0.0 desktop product; the Electron shell hosts the same Vue UI the browser does.

Material Design 3 baseline ​

The palette is Google's MD3 default (primary #6750A4). Colors, elevation, shape, and typography follow the Material 3 token system, surfaced through Vuetify 3's theme engine.

  • Light and dark themes ship out of the box.
  • The MD3 palette is defined in frontend/src/plugins/md3-themes.ts.

Theme store ​

Theming is driven by a single Pinia store, the useThemeStore singleton. Components read theme state from this store rather than touching Vuetify directly, so dark/light mode and palette swaps propagate consistently.

Plugin micro-frontends use the UI kit ​

A plugin runs in a separate iframe JavaScript realm, so it cannot reuse the host's Vue or Vuetify instances. It installs @infinia/plugin-ui, which creates a plugin-local Vuetify instance with FengYu's components, defaults, and themes:

ts
const vuetify = createFengYuVuetify()
app.use(vuetify)
await bindFengYuEnvironment(vuetify, fengyu)

bindFengYuEnvironment obtains the initial locale and theme during host.ready, then applies later environment events. Isolation is preserved while the visible theme stays aligned.

Summary ​

LayerWhat it is
Component libraryVuetify 3
Design languageMaterial Design 3 (Google default palette)
Palette sourcefrontend/src/plugins/md3-themes.ts
Theme runtimePinia useThemeStore singleton
Plugin themingLocal @infinia/plugin-ui instance bound to SDK environment events
ThemesLight and dark

Next steps ​

  • Features — what the MD3 UI renders.
  • Quick Start — run the frontend dev server to see it live.

Released under the GPL-3.0 License.