Built with Norm.
JavaFX components built on ui, ui.desktop, and ui.theme.
dependency(repository: "github", name: "ui.desktop.kit", version: 11)
Set Card(sectionGap: 12.0, ...) to separate a custom header or footer from the body. The default is zero.
Use the public Norm widgets, bindings and field models defined by module.norm. Native component adapters are private implementation details. Applications that need JavaFX types import ui.desktop.native.* and use nativeComponent.
Layout and UI configuration protocols belong to ui; this library provides components and component-specific configuration. Typed form validation and reset are defined in form.norm.
Application examples cover task editing, typed order forms, and cancellable file work with virtualized rows.
The gallery and its catalog cover the component API. Its module resolves released packages by default. Gallery documentation, styling, images and capture support live in a separate sample artifact; they are not part of the production component JAR.
Run ./scripts/prepare.ps1 -UiRoot <ui-source> to build the artifacts and verify the pinned component digest and module. Run ./scripts/update-pin.ps1 -UiRoot <ui-source> intentionally after changing Java artifacts. Verification does not rewrite descriptors. Use an explicit -NormHome containing source-built dependencies for integration work; regular descriptors remain released dependency declarations.
Gallery documentation embeds the public UI source from an explicit -UiRoot input. Use the ui release source for published artifact verification. Missing source files fail the build.
build.gradle.kts owns Java dependencies, reproducible archives and tests. Java tests generate theme fixtures through the fixture entry point, using the canonical ui.desktop.themeCss. The default test task includes theme rendering contracts. -PskipThemeFixtures is available for focused tests that do not use CSS fixtures.
Norm tests, Java tests, and gallery window tests own executable verification. The workflow owns release checks.
MPL-2.0. Published Java archives carry the license in META-INF/LICENSE.
Module 11 provides NavigationItem(title, action, subtitle, selected), SectionHeading(title, description), and SettingRow(title, control, description). Rows use vertical whitespace without separators. Navigation items reserve room for two lines and use the existing theme selection tokens.