PRIZM 4.0DSTA
Viewing C3 design language
Thick client

PRIZM for JavaFX

A parallel JavaFX library for thick-client C3 applications. Same design language, rendered natively.

Enterprise is web-only and not shipped for JavaFX.

How it works

Tokens, derived

The colour tokens are generated from the same canonical CSS the web library uses, converted to JavaFX looked-up colours. One source of truth, two rendered outputs.

Native, not embedded

Components are idiomatic JavaFX classes — thin subclasses of the stock controls — rendered by the JavaFX scene graph. No browser, no WebView.

Spec parity

Each component implements the same spec as its React counterpart, so variants, sizes, and defaults match across both libraries.

Setup

A Gradle module and a theme call.

Add the OpenJFX plugin, then apply a theme to your Scene. Switching mode or overlaying an extension pack is the same call with different arguments — every styled component re-reads its looked-up colours live.

Regenerate the theme stylesheets after any token change with pnpm generate:javafx-theme.

kotlin
// build.gradle.kts
plugins {
    application
    id("org.openjfx.javafxplugin") version "0.1.0"
}

javafx {
    version = "21.0.4"
    modules = listOf("javafx.controls")
}
java
import design.prizm.fx.PrizmTheme;

// C3 dark (operator-canonical default)
PrizmTheme.apply(scene, PrizmTheme.Mode.DARK);

// switch to light, overlay the RC3 (Ember) pack
PrizmTheme.apply(scene, PrizmTheme.Mode.LIGHT, PrizmTheme.Pack.RC3);
Components

Available now

PrizmButtonButton
extends Button
PrizmInputInput
extends TextField
PrizmTextareaTextarea
extends TextArea
PrizmCheckboxCheckbox
extends CheckBox
PrizmRadioGroupRadio Group
extends VBox
PrizmSwitchSwitch
extends ToggleButton
PrizmSelect<T>Select
extends ComboBox<T>
PrizmCombobox<T>Combobox
extends Region (custom: search field + filtered popup list)
PrizmSliderSlider
extends Slider
PrizmLabelLabel
extends Label
PrizmFieldField
extends VBox
PrizmCardCard
extends VBox
PrizmBadgeBadge
extends Label
PrizmAvatarAvatar
extends StackPane
PrizmTable<T>Table
extends TableView<T>
PrizmCalendarCalendar
extends VBox
PrizmKbdKbd
extends Label
PrizmCodeCode
extends Label
PrizmSeparatorSeparator
extends Separator
PrizmFrameFrame
extends VBox
PrizmGroupGroup
extends HBox
PrizmStackStack
extends VBox
PrizmAlertAlert
extends HBox
PrizmToastToast
extends HBox
PrizmProgressProgress
extends ProgressBar
PrizmSpinnerSpinner
extends Region
PrizmSkeletonSkeleton
extends Region
PrizmEmptyStateEmpty State
extends VBox
PrizmTabsTabs
extends TabPane
PrizmBreadcrumbBreadcrumb
extends HBox
PrizmPaginationPagination
extends HBox
PrizmNavigationMenuNavigation Menu
extends HBox
PrizmCommandCommand
extends VBox
PrizmLinkLink
extends Hyperlink
PrizmDialogDialog
extends (controller; overlays a StackPane)
PrizmSheetSheet
extends (controller; overlays a StackPane)
PrizmPopoverPopover
extends PopupControl
PrizmTooltipTooltip
extends Tooltip
PrizmMenuMenu
extends MenuButton
PrizmContextMenuContext Menu
extends ContextMenu
PrizmHoverCardHover Card
extends PopupControl
PrizmHeadingHeading
extends Label
PrizmTextText
extends Label
PrizmProseProse
extends VBox
Extension packs

RC3 — Robotics & Autonomy

The RC3 pack’s signature organisms, ported natively. Overlay the Ember accent with PrizmTheme.Pack.RC3 — identity marks read as Ember with or without it. All nine signature organisms, ported natively.

Templates

The operator shell, native

The C3 App Shell — the canonical starting point for a C3 application — ships for JavaFX as PrizmAppShell: top bar, status ticker, icon rail with an App Store, slide panels, and a full-bleed map canvas. Fill its slots rather than composing chrome from scratch.

Launch it standalone, or hit Launch App Shell in the gallery toolbar (it inherits the gallery’s theme + pack):

bash
cd javafx
gradle runShell

Same anatomy as the web

PrizmAppShell mirrors the web App Shell — see the template page for the layout, regions, and the design principles it embodies.

See it natively

Run the gallery

The docs site can’t render JavaFX, so the visual reference is a runnable gallery — every JavaFX-ready component, in all variants and states, with live theme and pack toggles.

Run from source

With a JDK 21 toolchain (e.g. brew install --cask temurin@21):

bash
cd javafx
gradle run

Packaged app — planned

A self-contained native build (no JDK required), produced with gradle jpackage. A download will be linked here once release hosting is set up; air-gapped builds ship it in the offline bundle.

Air-gap

OpenJFX is fetched from Maven Central at build time. In a disconnected build, point your repositories at the internal Maven mirror. The runtime is bundled by the consumer via jlink / jpackage.

Building with AI

When asked to build a JavaFX C3 surface, an AI should reach for these components and PrizmTheme rather than hand-rolling chrome — the same way it starts from the App Shell on the web.