@wildo-ai/presets-components 1.1.1 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/components/actions/action-button.d.ts +1 -4
- package/dist/esm/components/actions/action-button.d.ts.map +1 -1
- package/dist/esm/components/actions/action-button.js +21 -5
- package/dist/esm/components/actions/action-button.js.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/artifact-browser.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/artifacts/artifact-browser.js +7 -3
- package/dist/esm/components/ai-elements/artifacts/artifact-browser.js.map +1 -1
- package/dist/esm/components/ai-elements/execution/task.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/execution/task.js +10 -2
- package/dist/esm/components/ai-elements/execution/task.js.map +1 -1
- package/dist/esm/components/app/app-layout-main-container.labels.d.ts.map +1 -1
- package/dist/esm/components/app/app-layout-main-container.labels.js +10 -2
- package/dist/esm/components/app/app-layout-main-container.labels.js.map +1 -1
- package/dist/esm/components/app/public-layout-main-container.d.ts.map +1 -1
- package/dist/esm/components/app/public-layout-main-container.js +52 -5
- package/dist/esm/components/app/public-layout-main-container.js.map +1 -1
- package/dist/esm/components/data-display/description-list.d.ts.map +1 -1
- package/dist/esm/components/data-display/description-list.js +10 -7
- package/dist/esm/components/data-display/description-list.js.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-string.d.ts.map +1 -1
- package/dist/esm/components/data-display/formatters/display-field-string.js +3 -0
- package/dist/esm/components/data-display/formatters/display-field-string.js.map +1 -1
- package/dist/esm/components/form/chromes/form-primitive.labels.js +2 -2
- package/dist/esm/components/form/chromes/form-primitive.labels.js.map +1 -1
- package/dist/esm/components/navigation/app-level/menu-user-org.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/menu-user-org.js +8 -2
- package/dist/esm/components/navigation/app-level/menu-user-org.js.map +1 -1
- package/dist/esm/components/navigation/app-level/sidebar.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/sidebar.js +32 -15
- package/dist/esm/components/navigation/app-level/sidebar.js.map +1 -1
- package/dist/esm/components/overlays/containers/sheet.d.ts.map +1 -1
- package/dist/esm/components/overlays/containers/sheet.js +2 -2
- package/dist/esm/components/overlays/containers/sheet.js.map +1 -1
- package/dist/esm/components/sections/accordion.d.ts.map +1 -1
- package/dist/esm/components/sections/accordion.js +43 -13
- package/dist/esm/components/sections/accordion.js.map +1 -1
- package/dist/esm/components/sections/collapsible.d.ts.map +1 -1
- package/dist/esm/components/sections/collapsible.js +17 -3
- package/dist/esm/components/sections/collapsible.js.map +1 -1
- package/dist/esm/components/sections/content-section.d.ts.map +1 -1
- package/dist/esm/components/sections/content-section.js +11 -7
- package/dist/esm/components/sections/content-section.js.map +1 -1
- package/dist/esm/components/sections/disclosure-nesting.d.ts +20 -0
- package/dist/esm/components/sections/disclosure-nesting.d.ts.map +1 -0
- package/dist/esm/components/sections/disclosure-nesting.js +20 -0
- package/dist/esm/components/sections/disclosure-nesting.js.map +1 -0
- package/dist/esm/components/sections/tabs.d.ts.map +1 -1
- package/dist/esm/components/sections/tabs.js +141 -10
- package/dist/esm/components/sections/tabs.js.map +1 -1
- package/dist/esm/config/preset-kits.d.ts.map +1 -1
- package/dist/esm/config/preset-kits.js +0 -4
- package/dist/esm/config/preset-kits.js.map +1 -1
- package/dist/esm/config/preset-shell.d.ts.map +1 -1
- package/dist/esm/config/preset-shell.js +0 -4
- package/dist/esm/config/preset-shell.js.map +1 -1
- package/dist/esm/config/presets.d.ts.map +1 -1
- package/dist/esm/config/presets.js +0 -1
- package/dist/esm/config/presets.js.map +1 -1
- package/dist/esm/config/resources/application.resource-presets.d.ts.map +1 -1
- package/dist/esm/config/resources/application.resource-presets.js +6 -6
- package/dist/esm/config/resources/application.resource-presets.js.map +1 -1
- package/dist/esm/config/resources/billing.resource-presets.d.ts.map +1 -1
- package/dist/esm/config/resources/billing.resource-presets.js +8 -8
- package/dist/esm/config/resources/billing.resource-presets.js.map +1 -1
- package/dist/esm/config/resources/guidance.resource-presets.d.ts.map +1 -1
- package/dist/esm/config/resources/guidance.resource-presets.js +7 -7
- package/dist/esm/config/resources/guidance.resource-presets.js.map +1 -1
- package/dist/esm/config/resources/identity.resource-presets.d.ts.map +1 -1
- package/dist/esm/config/resources/identity.resource-presets.js +7 -7
- package/dist/esm/config/resources/identity.resource-presets.js.map +1 -1
- package/dist/esm/config/resources/organizations.resource-presets.d.ts.map +1 -1
- package/dist/esm/config/resources/organizations.resource-presets.js +8 -8
- package/dist/esm/config/resources/organizations.resource-presets.js.map +1 -1
- package/dist/esm/config/resources/security.resource-presets.d.ts.map +1 -1
- package/dist/esm/config/resources/security.resource-presets.js +9 -9
- package/dist/esm/config/resources/security.resource-presets.js.map +1 -1
- package/dist/esm/themes/cozy.theme.d.ts.map +1 -1
- package/dist/esm/themes/cozy.theme.js +8 -3
- package/dist/esm/themes/cozy.theme.js.map +1 -1
- package/dist/esm/themes/dense.theme.d.ts.map +1 -1
- package/dist/esm/themes/dense.theme.js +8 -5
- package/dist/esm/themes/dense.theme.js.map +1 -1
- package/dist/esm/themes/editorial.theme.d.ts.map +1 -1
- package/dist/esm/themes/editorial.theme.js +8 -3
- package/dist/esm/themes/editorial.theme.js.map +1 -1
- package/dist/esm/themes/glass.theme.d.ts.map +1 -1
- package/dist/esm/themes/glass.theme.js +10 -4
- package/dist/esm/themes/glass.theme.js.map +1 -1
- package/dist/esm/themes/neo-brutalist.theme.d.ts.map +1 -1
- package/dist/esm/themes/neo-brutalist.theme.js +8 -3
- package/dist/esm/themes/neo-brutalist.theme.js.map +1 -1
- package/dist/esm/themes/terminal.theme.d.ts.map +1 -1
- package/dist/esm/themes/terminal.theme.js +8 -3
- package/dist/esm/themes/terminal.theme.js.map +1 -1
- package/dist/esm/themes/trading.theme.d.ts.map +1 -1
- package/dist/esm/themes/trading.theme.js +8 -3
- package/dist/esm/themes/trading.theme.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +7 -7
- package/dist/esm/.builder.pid +0 -9
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { InteractiveVariant, SurfaceVariant, FormControlVariant, IndicatorVariant, SelectableVariant, TypographyVariant, SpacingSemantic, DesignTokenModeStrategy, DesignTokenValueType, } from '@wildo-ai/presets-components-models';
|
|
1
|
+
import { DividerVariant, InteractiveVariant, SurfaceVariant, FormControlVariant, IndicatorVariant, SelectableVariant, TypographyVariant, SpacingSemantic, DesignTokenModeStrategy, DesignTokenValueType, SKELETON_NEUTRAL_TINT, } from '@wildo-ai/presets-components-models';
|
|
2
2
|
function recipe(r) {
|
|
3
3
|
return { base: r.base, states: r.states ?? {}, sizes: r.sizes, motion: r.motion ?? {}, gesture: r.gesture, policy: r.policy };
|
|
4
4
|
}
|
|
@@ -354,9 +354,13 @@ const overlayBackdrop = recipe({
|
|
|
354
354
|
},
|
|
355
355
|
});
|
|
356
356
|
// Reference: dropdown separator "-mx-1 my-1 h-0.5 bg-border"
|
|
357
|
-
const divider =
|
|
357
|
+
const divider = {
|
|
358
|
+
[DividerVariant.DEFAULT]: recipe({ base: 'bg-foreground shrink-0' }),
|
|
359
|
+
// Nested-disclosure guide: the theme's own divider material, as a left edge.
|
|
360
|
+
[DividerVariant.NESTING_GUIDE]: recipe({ base: 'border-s-2 border-foreground' }),
|
|
361
|
+
};
|
|
358
362
|
// Reference: skeleton "animate-pulse rounded-base bg-secondary-background border-2 border-border"
|
|
359
|
-
const skeleton = recipe({ base:
|
|
363
|
+
const skeleton = recipe({ base: `${SKELETON_NEUTRAL_TINT} ${NB.border} animate-pulse ${NB.radius} motion-reduce:animate-none` });
|
|
360
364
|
const loadingSpinner = recipe({
|
|
361
365
|
base: `text-foreground animate-spin ${NB.border} motion-reduce:animate-none`,
|
|
362
366
|
});
|
|
@@ -390,6 +394,7 @@ const typography = {
|
|
|
390
394
|
h2: "text-3xl",
|
|
391
395
|
h3: "text-2xl",
|
|
392
396
|
h4: "text-xl",
|
|
397
|
+
h5: "text-lg",
|
|
393
398
|
md: "text-xl",
|
|
394
399
|
},
|
|
395
400
|
}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"neo-brutalist.theme.js","sourceRoot":"","sources":["../../../../src/themes/neo-brutalist.theme.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ComponentStyleTheme, DesignTokenConfiguration } from '@wildo-ai/presets-components-models';\nimport {\n InteractiveVariant,\n SurfaceVariant,\n FormControlVariant,\n IndicatorVariant,\n SelectableVariant,\n TypographyVariant,\n SpacingSemantic,\n DesignTokenModeStrategy,\n DesignTokenValueType,\n} from '@wildo-ai/presets-components-models';\nimport type { UIBehaviorRecipe } from '@wildo-ai/presets-components-models';\n\nfunction recipe(r: Partial<UIBehaviorRecipe> & { base: string }): UIBehaviorRecipe {\n return { base: r.base, states: r.states ?? {}, sizes: r.sizes, motion: r.motion ?? {}, gesture: r.gesture, policy: r.policy };\n}\n\n// ============================================================\n// Neo-Brutalist theme\n//\n// Extracted from neobrutalism.dev v3 reference repo (exact classes).\n//\n// Design tokens (from reference CSS variables):\n// --border-radius: 5px → rounded-lg (via global --radius token)\n// --shadow: 4px 4px 0px 0px var(--border) → shadow-[4px_4px_0px_0px_var(--foreground)]\n// --heading-font-weight: 700 → font-bold\n// --base-font-weight: 500 → font-medium\n// border: 2px solid → border-2 border-foreground\n// overlay: rgba(0,0,0,0.8) → bg-black/80\n//\n// Hover pattern: translate toward shadow + flatten (press-in)\n// hover:translate-x-[4px] hover:translate-y-[4px] hover:shadow-none\n//\n// Key differences from shadcn:\n// - Card bg = primary (main) color, not white\n// - Select/dropdown bg = primary color\n// - Tooltip bg = primary color\n// - Close buttons: opacity-100 (no subtlety)\n// - Sidebar header/footer: border-b-2/border-t-2\n// - Accordion trigger: bg-primary, text-primary-foreground\n// - Skeleton: border-2 on skeleton\n// - Progress bar indicator: border-r-2\n// ============================================================\n\n// -- Shared constants matching reference --\n\nconst NB = {\n // References the global --radius token (set to 5px by theme.radius below).\n // Always use rounded-* tiers, never hardcoded rounded-[Npx].\n radius: \"rounded-lg\",\n border: \"border-2 border-foreground\",\n shadow: \"shadow-[4px_4px_0px_0px_var(--foreground)]\",\n hover: \"hover:translate-x-[4px] hover:translate-y-[4px] hover:shadow-none\",\n focus: \"focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-foreground focus-visible:ring-offset-2\",\n disabled: \"disabled:pointer-events-none disabled:opacity-[var(--opacity-disabled)]\",\n invalid: \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n};\n\n// ============================================================\n// MOTION PERSONALITY — Neo-Brutalist\n// ============================================================\n// Hover/focus : INSTANT (50ms) + LINEAR → abrupt, no polish.\n// The 4px translate-x/-y on\n// press is THE motion (the\n// button \"lands\" against\n// the hard-offset shadow).\n// Overlay enter: FAST (150ms) + LINEAR → directional slide-2.\n// Overlay exit : INSTANT (50ms) + LINEAR → close = vanish (matches\n// the abrupt press feedback).\n// Backdrop : FAST/INSTANT + LINEAR → consistent.\n// Gestures : NONE — CSS translate IS the press feedback. Adding\n// motion.dev springs would soften the \"thud\" that is\n// the brutalist signature.\n//\n// Why LINEAR explicitly: previously overlay/backdrop omitted ease-,\n// so Tailwind/browser fell back to the soft `ease` curve — quietly\n// undermining the abrupt brutalist personality. TR-14 motion-coherence\n// pass adds explicit LINEAR easing to every overlay/backdrop.\n// ============================================================\nconst NB_MOTION = {\n interactive: \"transition-[background-color,color,border-color,box-shadow,transform] duration-[var(--motion-duration-instant)] ease-[var(--motion-easing-linear)] motion-reduce:transition-none\",\n formControl: \"transition-[color,border-color,box-shadow] duration-[var(--motion-duration-instant)] ease-[var(--motion-easing-linear)] motion-reduce:transition-none\",\n selectable: \"transition-[background-color,color,border-color,outline-color] duration-[var(--motion-duration-instant)] ease-[var(--motion-easing-linear)] motion-reduce:transition-none\",\n enterFadeZoom: \"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=open]:duration-[var(--motion-duration-fast)] data-[state=open]:ease-[var(--motion-easing-linear)] motion-reduce:data-[state=open]:animate-none\",\n exitFadeZoom: \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=closed]:duration-[var(--motion-duration-instant)] data-[state=closed]:ease-[var(--motion-easing-linear)] motion-reduce:data-[state=closed]:animate-none\",\n enterDirectional: \"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=open]:duration-[var(--motion-duration-fast)] data-[state=open]:ease-[var(--motion-easing-linear)] data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 motion-reduce:data-[state=open]:animate-none\",\n backdropEnter: \"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:duration-[var(--motion-duration-fast)] data-[state=open]:ease-[var(--motion-easing-linear)] motion-reduce:data-[state=open]:animate-none\",\n backdropExit: \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:duration-[var(--motion-duration-instant)] data-[state=closed]:ease-[var(--motion-easing-linear)] motion-reduce:data-[state=closed]:animate-none\",\n};\n\n// ============================================================\n// INTERACTIVE\n// Reference: button.tsx variants\n// ============================================================\n\nconst interactiveSizes: Record<string, string> = {\n xs: \"h-8 px-2.5 text-xs gap-1 pointer-coarse:min-h-10\",\n sm: \"h-9 px-3 pointer-coarse:min-h-11\",\n md: \"h-10 px-4 py-2 pointer-coarse:min-h-11\",\n lg: \"h-11 px-8 pointer-coarse:min-h-11\",\n icon: \"size-10 pointer-coarse:min-h-11 pointer-coarse:min-w-11\",\n \"icon-sm\": \"size-8 pointer-coarse:min-h-9 pointer-coarse:min-w-9\",\n};\n\nconst interactive: Record<InteractiveVariant, UIBehaviorRecipe> = {\n // Reference variant: \"default\" → bg-main text-main-foreground shadow-shadow hover:shift\n [InteractiveVariant.PRIMARY]: recipe({\n base: `bg-primary text-primary-foreground ${NB.border} ${NB.shadow} ${NB.radius} font-medium text-sm cursor-pointer`,\n states: { hover: NB.hover, active: \"active:translate-x-[4px] active:translate-y-[4px] active:shadow-none\", focus: NB.focus, disabled: NB.disabled, invalid: NB.invalid },\n sizes: interactiveSizes,\n motion: { transition: NB_MOTION.interactive },\n }),\n\n // Reference variant: \"neutral\" → bg-bw (secondary bg) text-text shadow-shadow hover:shift\n [InteractiveVariant.SECONDARY]: recipe({\n base: `bg-secondary text-secondary-foreground ${NB.border} ${NB.shadow} ${NB.radius} font-medium text-sm cursor-pointer`,\n states: { hover: NB.hover, active: \"active:translate-x-[4px] active:translate-y-[4px] active:shadow-none\", focus: NB.focus, disabled: NB.disabled, invalid: NB.invalid },\n sizes: interactiveSizes,\n motion: { transition: NB_MOTION.interactive },\n }),\n\n // Reference variant: \"reverse\" → bg-main, NO shadow, gains shadow on hover\n [InteractiveVariant.OUTLINE]: recipe({\n base: `bg-primary text-primary-foreground ${NB.border} ${NB.radius} font-medium text-sm cursor-pointer`,\n states: {\n hover: \"hover:-translate-x-[4px] hover:-translate-y-[4px] hover:shadow-[4px_4px_0px_0px_var(--foreground)]\",\n active: \"active:translate-x-0 active:translate-y-0 active:shadow-none\",\n focus: NB.focus,\n selected: \"data-[state=on]:bg-primary data-[state=on]:text-primary-foreground data-[state=on]:border-foreground data-[state=on]:shadow-[2px_2px_0px_0px_var(--foreground)]\",\n disabled: NB.disabled, invalid: NB.invalid,\n },\n sizes: interactiveSizes,\n motion: { transition: NB_MOTION.interactive },\n }),\n\n // Destructive — same pattern as primary but destructive colors\n [InteractiveVariant.DESTRUCTIVE]: recipe({\n base: `bg-destructive text-destructive-foreground ${NB.border} ${NB.shadow} ${NB.radius} font-medium text-sm cursor-pointer`,\n states: { hover: NB.hover, active: \"active:translate-x-[4px] active:translate-y-[4px] active:shadow-none\", focus: NB.focus, highlighted: \"focus:bg-destructive focus:text-destructive-foreground focus:border-foreground\", disabled: NB.disabled, invalid: NB.invalid },\n sizes: interactiveSizes,\n motion: { transition: NB_MOTION.interactive },\n }),\n\n // Reference variant: \"noShadow\" → bg-main, border, no shadow, no hover shift\n [InteractiveVariant.GHOST]: recipe({\n base: `text-foreground ${NB.border} border-transparent ${NB.radius} font-medium text-sm cursor-pointer`,\n states: {\n hover: \"hover:bg-primary hover:text-primary-foreground hover:border-foreground\",\n active: \"active:bg-primary/80 active:text-primary-foreground\",\n focus: NB.focus,\n selected: \"data-[state=on]:bg-primary data-[state=on]:text-primary-foreground data-[state=on]:border-foreground\",\n highlighted: \"focus:bg-primary focus:text-primary-foreground focus:border-foreground\",\n open: \"data-[state=open]:bg-primary data-[state=open]:text-primary-foreground data-[state=open]:border-foreground\",\n disabled: NB.disabled, invalid: NB.invalid,\n },\n sizes: interactiveSizes,\n motion: { transition: NB_MOTION.interactive },\n }),\n\n [InteractiveVariant.LINK]: recipe({\n base: `text-primary underline underline-offset-4 decoration-2 ${NB.radius} font-medium text-sm cursor-pointer`,\n states: {\n hover: \"hover:decoration-foreground\",\n active: \"active:text-primary/80\",\n focus: NB.focus, disabled: NB.disabled, invalid: NB.invalid,\n },\n sizes: { xs: \"h-8 px-2.5 text-xs gap-1 pointer-coarse:min-h-10\", sm: \"h-9 px-3 pointer-coarse:min-h-11\", md: \"h-10 px-4 py-2 pointer-coarse:min-h-11\", lg: \"h-11 px-8 pointer-coarse:min-h-11\", icon: \"size-10 pointer-coarse:min-h-11 pointer-coarse:min-w-11\", \"icon-sm\": \"size-8 pointer-coarse:min-h-9 pointer-coarse:min-w-9\" },\n motion: { transition: NB_MOTION.interactive },\n }),\n\n [InteractiveVariant.ACCENT]: recipe({\n // TT-2: Reuse the same theme-resolvable accent-gradient stops as the\n // default theme so tenant rebrands flow through (was hardcoded\n // violet/pink/amber). The neo-brutalist motion + border treatment is\n // unchanged.\n base: `bg-primary text-primary-foreground font-black ${NB.border} shadow-[4px_4px_0px_0px_var(--foreground)] bg-[length:300%_100%] bg-gradient-to-r from-accent-gradient-from via-accent-gradient-via to-accent-gradient-to animate-[gradient-rotate_4s_steps(8)_infinite] motion-reduce:animate-none ${NB.radius} text-sm cursor-pointer`,\n states: {\n hover: 'hover:translate-x-[4px] hover:translate-y-[4px] hover:shadow-none',\n active: 'active:translate-x-[4px] active:translate-y-[4px] active:shadow-none',\n focus: 'focus-visible:ring-2 focus-visible:ring-foreground focus-visible:ring-offset-2',\n disabled: NB.disabled,\n invalid: NB.invalid,\n },\n sizes: interactiveSizes,\n motion: {\n transition: 'transition-[transform,shadow,background-position] duration-[var(--motion-duration-instant)] ease-[var(--motion-easing-linear)] motion-reduce:transition-none',\n },\n }),\n};\n\n// ============================================================\n// SURFACE\n// Reference: card.tsx, dialog.tsx, select.tsx (content), tooltip.tsx\n// SURFACE PERSONALITY — poster-board panels: hard borders, hard shadows,\n// saturated callouts. New variants keep the same physical cut-paper logic.\n// ============================================================\n\nconst surface: ComponentStyleTheme['surface'] = {\n // Reference card: \"bg-background text-foreground border-2 border-border shadow-shadow rounded-base font-base\"\n [SurfaceVariant.BASE]: recipe({\n base: `bg-background text-foreground ${NB.border} ${NB.shadow} ${NB.radius} font-medium`,\n }),\n\n // Reference card with a lifted fill: hard border + offset shadow over the\n // elevated `surface-raised` so the card reads against the page. Always painted.\n [SurfaceVariant.CARD]: recipe({\n base: `bg-surface-raised text-surface-raised-foreground ${NB.border} ${NB.shadow} ${NB.radius} font-medium`,\n }),\n\n // Reference dropdown/tooltip: \"bg-main text-main-foreground border-2 border-border rounded-base\"\n // Popovers/dropdowns use primary color bg in neo-brutalism\n [SurfaceVariant.RAISED]: recipe({\n // `fill-*` mirrors `bg-*` so the Tooltip's Radix arrow (an SVG painted via\n // `fill`, inherited across Radix's arrow-wrapper span) matches the body.\n base: `bg-primary fill-primary text-primary-foreground ${NB.border} ${NB.radius} font-medium`,\n motion: {\n enter: NB_MOTION.enterDirectional,\n exit: NB_MOTION.exitFadeZoom,\n },\n }),\n\n // Reference dialog: \"bg-background border-2 border-border shadow-shadow rounded-base\"\n [SurfaceVariant.OVERLAY]: recipe({\n base: `bg-background text-foreground ${NB.border} ${NB.shadow} ${NB.radius}`,\n motion: {\n enter: NB_MOTION.enterFadeZoom + \" data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]\",\n exit: NB_MOTION.exitFadeZoom + \" data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%]\",\n },\n }),\n\n // Reference sidebar inset: \"bg-secondary-background\"\n [SurfaceVariant.INSET]: recipe({\n base: `bg-secondary text-foreground ${NB.radius}`,\n }),\n\n // Reference sidebar: \"bg-secondary-background text-foreground\" + border-r-2\n [SurfaceVariant.SUNKEN]: recipe({\n base: \"bg-secondary text-foreground\",\n }),\n\n [SurfaceVariant.TAB_PANEL]: recipe({\n // Tab panel is still loud, but drops the top border so it locks to the tabs.\n base: `bg-background text-foreground border-x-2 border-b-2 border-border ${NB.shadow} rounded-b-lg font-medium`,\n }),\n\n [SurfaceVariant.SHELL]: recipe({\n // Page shell: flat poster background; children carry the hard frames.\n base: 'bg-background text-foreground font-medium',\n }),\n\n [SurfaceVariant.TRANSIENT]: recipe({\n // Toast: punchy callout, primary color plus the signature hard shadow.\n base: `bg-primary text-primary-foreground ${NB.border} ${NB.shadow} ${NB.radius} font-medium`,\n motion: {\n enter: NB_MOTION.enterDirectional,\n exit: NB_MOTION.exitFadeZoom,\n },\n }),\n};\n\n// ============================================================\n// FORM_CONTROL\n// Reference: input.tsx, textarea.tsx, select trigger\n// ============================================================\n\nconst formControl: Record<FormControlVariant, UIBehaviorRecipe> = {\n // Reference input: \"bg-secondary-background border-2 border-border rounded-base text-sm font-base text-foreground placeholder:text-foreground/50\"\n [FormControlVariant.DEFAULT]: recipe({\n base: `bg-secondary ${NB.border} ${NB.radius} text-base md:text-sm font-medium text-foreground placeholder:text-foreground/50 selection:bg-primary selection:text-primary-foreground`,\n states: { focus: NB.focus, disabled: \"disabled:cursor-not-allowed disabled:opacity-[var(--opacity-disabled)]\", invalid: NB.invalid },\n sizes: { md: \"h-10 px-3 py-2 pointer-coarse:min-h-11\", sm: \"h-9 px-3 text-sm pointer-coarse:min-h-11\", lg: \"h-12 px-4 py-2 pointer-coarse:min-h-12\" },\n motion: { transition: NB_MOTION.formControl },\n }),\n\n [FormControlVariant.FILLED]: recipe({\n base: `bg-muted ${NB.border} ${NB.radius} text-base md:text-sm font-medium text-foreground placeholder:text-foreground/50`,\n states: { focus: NB.focus, disabled: \"disabled:cursor-not-allowed disabled:opacity-[var(--opacity-disabled)]\", invalid: NB.invalid },\n sizes: { md: \"h-10 px-3 py-2 pointer-coarse:min-h-11\", sm: \"h-9 px-3 text-sm pointer-coarse:min-h-11\", lg: \"h-12 px-4 py-2 pointer-coarse:min-h-12\" },\n motion: { transition: NB_MOTION.formControl },\n }),\n\n [FormControlVariant.UNDERLINED]: recipe({\n base: `bg-transparent border-0 border-b-2 border-foreground rounded-none text-base md:text-sm font-medium text-foreground placeholder:text-foreground/50`,\n states: { focus: \"focus-visible:border-primary\", disabled: \"disabled:opacity-[var(--opacity-disabled)]\", invalid: \"aria-invalid:border-destructive\" },\n sizes: { md: \"h-10 px-0 py-2 pointer-coarse:min-h-11\", sm: \"h-9 px-0 text-sm pointer-coarse:min-h-11\", lg: \"h-12 px-0 py-2 pointer-coarse:min-h-12\" },\n motion: { transition: \"transition-[border-color] duration-[var(--motion-duration-instant)] ease-[var(--motion-easing-linear)] motion-reduce:transition-none\" },\n }),\n\n [FormControlVariant.CHECKBOX]: recipe({\n base: `${NB.border} ${NB.radius} shadow-[2px_2px_0px_0px_var(--foreground)]`,\n states: {\n focus: NB.focus,\n selected: `data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:border-foreground`,\n disabled: \"disabled:cursor-not-allowed disabled:opacity-[var(--opacity-disabled)]\",\n invalid: NB.invalid,\n },\n motion: { transition: \"transition-[color,box-shadow] duration-[var(--motion-duration-instant)] ease-[var(--motion-easing-linear)] motion-reduce:transition-none\" },\n }),\n\n [FormControlVariant.SWITCH]: recipe({\n base: `data-[state=unchecked]:bg-secondary ${NB.border} shadow-[2px_2px_0px_0px_var(--foreground)]`,\n states: {\n focus: NB.focus,\n selected: \"data-[state=checked]:bg-primary\",\n disabled: \"disabled:cursor-not-allowed disabled:opacity-[var(--opacity-disabled)]\",\n invalid: NB.invalid,\n },\n motion: { transition: \"transition-all duration-[var(--motion-duration-instant)] ease-[var(--motion-easing-linear)] motion-reduce:transition-none\" },\n }),\n};\n\n// ============================================================\n// INDICATOR\n// Reference: badge.tsx — \"border-2 border-border rounded-base px-2.5 py-0.5 text-xs font-base\"\n// ============================================================\n\nconst nbIndicatorShared = {\n states: { hover: \"[a&]:hover:opacity-[var(--opacity-hover)]\", focus: NB.focus, invalid: NB.invalid },\n motion: { transition: NB_MOTION.interactive },\n};\n\nconst indicator: Record<IndicatorVariant, UIBehaviorRecipe> = {\n [IndicatorVariant.NEUTRAL]: recipe({ base: `bg-secondary text-foreground ${NB.border} ${NB.radius} px-2.5 py-0.5 text-xs font-medium`, ...nbIndicatorShared }),\n [IndicatorVariant.INFO]: recipe({ base: `bg-info text-info-foreground ${NB.border} ${NB.radius} px-2.5 py-0.5 text-xs font-medium`, ...nbIndicatorShared }),\n [IndicatorVariant.SUCCESS]: recipe({ base: `bg-success text-success-foreground ${NB.border} ${NB.radius} px-2.5 py-0.5 text-xs font-medium`, ...nbIndicatorShared }),\n [IndicatorVariant.WARNING]: recipe({ base: `bg-warning text-warning-foreground ${NB.border} ${NB.radius} px-2.5 py-0.5 text-xs font-medium`, ...nbIndicatorShared }),\n [IndicatorVariant.ERROR]: recipe({ base: `bg-destructive text-destructive-foreground ${NB.border} ${NB.radius} px-2.5 py-0.5 text-xs font-medium`, ...nbIndicatorShared }),\n};\n\n// ============================================================\n// SELECTABLE\n// Reference: tabs.tsx trigger, sidebar menu-button\n// TabsTrigger: \"rounded-base border-2 border-transparent ... data-[state=active]:bg-main data-[state=active]:text-main-foreground data-[state=active]:border-border\"\n// SidebarMenuButton: \"hover:bg-main hover:text-main-foreground hover:outline-border\"\n// ============================================================\n\nconst selectable: Record<SelectableVariant, UIBehaviorRecipe> = {\n [SelectableVariant.FILLED]: recipe({\n base: `${NB.radius} text-sm font-medium outline-hidden border-2 border-transparent`,\n states: {\n hover: \"hover:bg-primary hover:text-primary-foreground hover:border-foreground\",\n focus: \"focus-visible:ring-2 focus-visible:ring-foreground\",\n active: \"active:bg-primary active:text-primary-foreground\",\n selected: \"data-[active=true]:bg-primary data-[active=true]:text-primary-foreground data-[active=true]:border-foreground data-[state=active]:bg-primary data-[state=active]:text-primary-foreground data-[state=active]:border-foreground\",\n disabled: \"disabled:pointer-events-none disabled:opacity-[var(--opacity-disabled)]\",\n },\n sizes: { sm: \"h-7 text-xs\", md: \"h-8 text-sm\", lg: \"h-12 text-sm\" },\n motion: { transition: NB_MOTION.selectable },\n }),\n [SelectableVariant.UNDERLINE]: recipe({\n // Tailwind v4 only ships `border-{0,2,4,8}` utilities by default — `border-b-3`\n // would silently produce no underline. Use the arbitrary `[3px]` value so the\n // brutalist heavier-than-base underline (2px badges, 3px tab indicator) renders.\n base: \"rounded-none border-b-[3px] border-transparent text-sm font-medium outline-hidden\",\n states: {\n hover: \"hover:text-foreground\",\n focus: \"focus-visible:ring-2 focus-visible:ring-foreground\",\n selected: \"data-[state=active]:border-foreground data-[state=active]:text-foreground data-[state=active]:font-bold\",\n disabled: \"disabled:pointer-events-none disabled:opacity-[var(--opacity-disabled)]\",\n },\n sizes: { sm: \"h-8 text-xs pb-1\", md: \"h-9 text-sm pb-2\", lg: \"h-11 text-sm pb-3\" },\n motion: { transition: NB_MOTION.selectable },\n }),\n [SelectableVariant.PILL]: recipe({\n base: `${NB.radius} border-2 border-transparent text-sm font-medium outline-hidden`,\n states: {\n hover: \"hover:border-foreground\",\n focus: \"focus-visible:ring-2 focus-visible:ring-foreground\",\n selected: `data-[state=active]:bg-primary data-[state=active]:text-primary-foreground data-[state=active]:border-foreground data-[state=active]:shadow-[2px_2px_0px_0px_var(--foreground)]`,\n disabled: \"disabled:pointer-events-none disabled:opacity-[var(--opacity-disabled)]\",\n },\n sizes: { sm: \"h-8 px-3 text-xs\", md: \"h-9 px-4 text-sm\", lg: \"h-11 px-5 text-sm\" },\n motion: { transition: NB_MOTION.selectable },\n }),\n [SelectableVariant.INDICATOR]: recipe({\n // Same Tailwind v4 caveat as UNDERLINE: `border-s-3` is not a built-in utility\n // and would silently fail. Use arbitrary `[3px]` so the brutalist start-edge\n // indicator stays visually heavier than its 2px peers.\n base: `${NB.radius} text-sm font-medium outline-hidden border-s-[3px] border-transparent`,\n states: {\n hover: \"hover:bg-accent\",\n focus: \"focus-visible:ring-2 focus-visible:ring-foreground\",\n selected: \"data-[active=true]:border-foreground data-[active=true]:bg-primary data-[active=true]:text-primary-foreground data-[active=true]:font-bold\",\n disabled: \"disabled:pointer-events-none disabled:opacity-[var(--opacity-disabled)]\",\n },\n sizes: { sm: \"h-8 text-xs\", md: \"h-9 text-sm\", lg: \"h-12 text-sm\" },\n motion: { transition: NB_MOTION.selectable },\n }),\n};\n\n// ============================================================\n// OVERLAY, DIVIDER, SKELETON\n// Reference: dialog overlay \"bg-overlay\" = rgba(0,0,0,0.8)\n// Reference: skeleton \"border-2 border-border bg-secondary-background animate-pulse rounded-base\"\n// ============================================================\n\nconst overlayBackdrop: UIBehaviorRecipe = recipe({\n base: \"bg-black/80\",\n motion: {\n enter: NB_MOTION.backdropEnter,\n exit: NB_MOTION.backdropExit,\n },\n});\n\n// Reference: dropdown separator \"-mx-1 my-1 h-0.5 bg-border\"\nconst divider: UIBehaviorRecipe = recipe({ base: \"bg-foreground shrink-0\" });\n\n// Reference: skeleton \"animate-pulse rounded-base bg-secondary-background border-2 border-border\"\nconst skeleton: UIBehaviorRecipe = recipe({ base: `bg-secondary ${NB.border} animate-pulse ${NB.radius} motion-reduce:animate-none` });\n\nconst loadingSpinner: UIBehaviorRecipe = recipe({\n base: `text-foreground animate-spin ${NB.border} motion-reduce:animate-none`,\n});\n\nconst loadingOverlay: UIBehaviorRecipe = recipe({\n base: `bg-background/80 ${NB.border}`,\n motion: {\n enter: \"animate-in fade-in-0 duration-[var(--motion-duration-fast)] ease-[var(--motion-easing-linear)] motion-reduce:animate-none\",\n exit: \"animate-out fade-out-0 duration-[var(--motion-duration-instant)] ease-[var(--motion-easing-linear)] motion-reduce:animate-none\",\n },\n});\n\n// ============================================================\n// TYPOGRAPHY\n// Reference: CardTitle \"font-heading leading-none\"\n// Reference: CardDescription \"text-sm font-base\"\n// Reference: DialogTitle \"text-lg font-heading leading-none tracking-tight\"\n// Reference: Label \"text-sm font-heading leading-none\"\n// ============================================================\n\nconst typography: Record<TypographyVariant, UIBehaviorRecipe> = {\n [TypographyVariant.HEADING]: recipe({\n // Neo-brutalist typography is loud by definition. Pump h1 a full step\n // above the default theme (text-5xl vs text-4xl) so headings land with\n // the same weight as the 2px borders + 4px hard shadows — anything\n // smaller looks visually outweighed by the chrome. `display` is wired\n // here for future hero/marketing surfaces; the current Heading component\n // looks up `h{level}`, so it's an opt-in via `getRecipe(...).sizes.display`\n // until a `Display`/`Hero` companion ships (tracked in audit doc).\n base: \"font-bold leading-none tracking-tight\",\n sizes: {\n display: \"text-6xl\",\n h1: \"text-5xl\",\n h2: \"text-3xl\",\n h3: \"text-2xl\",\n h4: \"text-xl\",\n md: \"text-xl\",\n },\n }),\n [TypographyVariant.BODY]: recipe({\n base: \"text-foreground text-sm font-medium\",\n sizes: { sm: \"text-xs\", md: \"text-sm\", lg: \"text-base\" },\n }),\n // Reference: Label \"text-sm font-heading\"\n [TypographyVariant.LABEL]: recipe({\n base: \"font-bold text-sm leading-none\",\n sizes: { sm: \"text-xs\", md: \"text-sm\", lg: \"text-base\" },\n }),\n // Reference: DialogDescription \"text-sm font-base text-foreground\" (NOT muted — brutalism is direct)\n [TypographyVariant.DESCRIPTION]: recipe({\n base: \"text-foreground text-sm font-medium\",\n sizes: { sm: \"text-xs\", md: \"text-sm\" },\n }),\n [TypographyVariant.CODE]: recipe({\n base: `font-mono text-sm bg-secondary ${NB.border} border-foreground/20 ${NB.radius} px-1.5 py-0.5`,\n sizes: { sm: \"text-xs\", md: \"text-sm\", lg: \"text-base\" },\n }),\n};\n\n// ============================================================\n// ASSEMBLED THEME\n// ============================================================\n\n// ============================================================\n// SPACING\n//\n// Neo-brutalism is graphic and chunky: 2px borders and 4px hard\n// shadows add visual weight around every element. The spacing\n// scale accounts for this by:\n// - Enlarging card/container padding so content doesn't bump\n// into thick borders.\n// - Slightly increasing field/section gaps so adjacent shadows\n// never overlap.\n// - Item/element gaps stay close to default since inline items\n// don't carry their own shadow boxes.\n// ============================================================\n\nconst spacing: ComponentStyleTheme['spacing'] = {\n [SpacingSemantic.ELEMENT]: '0.625rem', // 10px (default 8px) — room for shadow offsets\n [SpacingSemantic.ITEM]: '0.375rem', // 6px (default 4px) — slightly roomier list items\n [SpacingSemantic.GROUP]: '0.875rem', // 14px (default 12px) — groups stand out more\n [SpacingSemantic.FIELD]: '1.25rem', // 20px (default 16px) — shadow-friendly field gaps\n [SpacingSemantic.SECTION]: '1.75rem', // 28px (default 24px) — sections breathe around shadows\n [SpacingSemantic.REGION]: '2.5rem', // 40px (default 32px) — regions clearly separated\n [SpacingSemantic.CARD]: '1.25rem', // 20px (default 16px) — internal padding clears 2px border\n [SpacingSemantic.CONTAINER]: '1.75rem', // 28px (default 24px) — page padding accommodates shadow\n};\n\n// ============================================================\n// REQUIRED CUSTOM TOKENS — palette + font overrides\n//\n// Neo-brutalism is defined as much by its palette/typography as by its\n// borders and shadows. Without these overrides, the theme inherited the\n// host's corporate primary (a soft sky blue) and the host font stack\n// (Inter), which fought the brutalist DNA — heavy borders + hard shadows\n// against a polite, conventional palette read as \"shadcn with extra\n// outlines\" rather than the neobrutalism.dev v3 reference.\n//\n// `requiredCustomTokens` is consumed by UIContext at theme-apply time\n// (see `mergeThemeRequiredCustomTokens` + `applyCustomTokens`), which\n// writes each entry as `--<key>: <value>` onto `document.documentElement`\n// via `style.setProperty`. Inline-style precedence (1,0,0,0) beats the\n// `:root` rules emitted by the design-token CSS generator (0,1,0), so\n// these declarations override the standard `--primary`, `--background`,\n// etc. tokens for the lifetime of the theme.\n//\n// Palette is derived from neobrutalism.dev v3 reference variables:\n// --main: #88aaee (light) / #4a7dde (dark) → primary brutalist blue\n// --bg: #f5f5f5 (light) / #272933 (dark) → page background\n// --text: #000 (light) / #fff (dark) → high-contrast foreground\n// --border: same as text → \"drawn-with-marker\" outlines\n// ============================================================\n\nfunction colorOverride(lightOklch: string, darkOklch: string): DesignTokenConfiguration {\n return {\n type: DesignTokenValueType.COLOR,\n modeStrategy: DesignTokenModeStrategy.LIGHT_DARK,\n lightValue: lightOklch,\n darkValue: darkOklch,\n };\n}\n\nfunction colorSingle(oklch: string): DesignTokenConfiguration {\n return {\n type: DesignTokenValueType.COLOR,\n modeStrategy: DesignTokenModeStrategy.SINGLE,\n value: oklch,\n };\n}\n\nfunction stringSingle(value: string): DesignTokenConfiguration {\n return {\n type: DesignTokenValueType.STRING,\n modeStrategy: DesignTokenModeStrategy.SINGLE,\n value,\n };\n}\n\nconst requiredCustomTokens: Record<string, DesignTokenConfiguration> = {\n // === Brutalist blue (~#88aaee in light, ~#7da0e8 in dark) — the chrome\n // accent on which cards, popovers, dropdowns and tooltips paint themselves.\n //\n // Both lightness values are deliberately above L≈0.68 so the always-black\n // primary-foreground keeps a comfortable ≥4.5:1 contrast (WCAG AA body).\n // An earlier draft used L=0.58 in dark, which dipped to ~3.9:1 — the\n // brutalist DNA explicitly demands \"high contrast everything\", so we trade\n // a touch of dark-mode chroma for legibility instead of switching the text\n // to white (which would soften the brutalist look).\n primary: colorOverride('0.74 0.115 264', '0.70 0.135 264'),\n // Pure black on the chrome accent — brutalism is high contrast, not soft.\n 'primary-foreground': colorSingle('0 0 0'),\n\n // === Page background: warm off-white in light, deep slate in dark\n // (matches neobrutalism.dev `--bg` / `--bg-dark` variables).\n background: colorOverride('0.965 0 0', '0.272 0.013 280'),\n // === Body text: pure black on light, pure white on dark — high contrast\n // is non-negotiable for the brutalist style.\n foreground: colorOverride('0 0 0', '1 0 0'),\n\n // === Borders + focus rings: same as foreground so the 2px outlines read\n // as \"drawn with a marker\" and the focus ring picks up the same color.\n border: colorOverride('0 0 0', '1 0 0'),\n ring: colorOverride('0 0 0', '1 0 0'),\n input: colorOverride('0 0 0', '1 0 0'),\n\n // === Secondary surface: pure white in light (the classic \"white card\"),\n // and the same deep slate as bg in dark for visual continuity.\n secondary: colorOverride('1 0 0', '0.21 0.013 280'),\n 'secondary-foreground': colorOverride('0 0 0', '1 0 0'),\n\n // === Muted backgrounds: a faint blue tint of the primary so muted\n // surfaces stay \"in the family\" instead of going neutral grey.\n muted: colorOverride('0.95 0.015 264', '0.32 0.02 280'),\n 'muted-foreground': colorOverride('0.30 0.02 264', '0.78 0.02 264'),\n\n // === Destructive: hot brutalist red (#ff3838) — the OG \"stop\" color, not\n // the muted desaturated red the corporate default ships.\n destructive: colorOverride('0.65 0.26 27', '0.62 0.26 27'),\n 'destructive-foreground': colorSingle('1 0 0'),\n\n // === Accent (the rotating gradient stops): keep them in the brutalist\n // blue family rather than violet/blue/pink — uniform color story. Dark\n // value matches `primary` (0.70) so the gradient stays bright on dark\n // backgrounds where ACCENT chrome is most visible.\n 'accent-gradient-from': colorOverride('0.74 0.115 264', '0.70 0.135 264'),\n 'accent-gradient-via': colorOverride('0.85 0.18 90', '0.80 0.20 90'), // electric yellow midpoint\n 'accent-gradient-to': colorOverride('0.62 0.24 0', '0.58 0.26 0'), // hot pink endpoint\n\n // === Font stack: prefer architectural / monospaced-leaning families that\n // ship with most OSes, falling through to system. The brutalist DNA still\n // mostly comes from the borders + shadows + colors, but a more rigid\n // letterform reinforces it. Hosts wanting full fidelity (Public Sans,\n // Archivo Black, IBM Plex Sans) should @font-face them in app CSS — the\n // declarations below will pick them up automatically once available.\n 'font-body': stringSingle(\"'Public Sans', 'IBM Plex Sans', Inter, ui-sans-serif, system-ui, sans-serif\"),\n 'font-heading': stringSingle(\"'Archivo Black', 'Public Sans', 'IBM Plex Sans', Inter, ui-sans-serif, system-ui, sans-serif\"),\n};\n\nexport const neoBrutalistTheme: ComponentStyleTheme = {\n id: 'neo-brutalist',\n name: 'Neo-Brutalist',\n description: 'Based on neobrutalism.dev v3. 2px borders, 4px hard-offset shadows, 5px radius, 700/500 font weight split, heavy 80% overlay, primary-colored dropdowns/tooltips. Ships its own brutalist palette (#88aaee chrome blue, pure black/white duotone, hot red destructive) and architectural font stack via requiredCustomTokens — host palette/fonts are fully overridden when this theme is active.',\n\n requiredCustomTokens,\n spacing,\n\n interactive,\n surface,\n formControl,\n indicator,\n selectable,\n overlayBackdrop,\n divider,\n skeleton,\n loadingSpinner,\n loadingOverlay,\n typography,\n radius: '5px',\n backgroundLayer: undefined,\n chartStyle: {\n colorShadeLight: 600,\n colorShadeDark: 500,\n gridPadding: { top: 30, right: 20, bottom: 30, left: 60 },\n axis: { showAxisLine: true, showTicks: true, splitLineType: 'solid', hideOverlap: true, yAxisNameLocation: 'middle', yAxisNameGap: 50 },\n tooltip: { extraCss: 'border: 2px solid currentColor; box-shadow: 4px 4px 0 currentColor;', borderWidth: 0 },\n animation: { enabled: true, durationMs: 100, easing: 'linear' },\n series: { lineWidth: 3, pointSize: 6, areaOpacity: 0.4, barBorderRadius: 0, pieBorderWidth: 3 },\n typography: { titleFontSize: 18, titleFontWeight: 800, subtitleFontSize: 14, legendFontSize: 13, tooltipFontSize: 13, axisLabelFontSize: 12, axisNameFontSize: 13 },\n emphasis: { shadowBlur: 0, shadowColor: 'transparent', shadowOffsetX: 0 },\n responsive: { smallMaxWidth: 400, mediumMaxWidth: 799, smallGridPadding: { top: 20, right: 10, bottom: 20, left: 30 }, mediumGridPadding: { left: 50, right: 20, bottom: 40 }, hideLegendOnSmall: true, smallAxisLabelRotate: 45, smallFontSize: 11, mediumFontSize: 12 },\n multiSeriesLegendBottomPadding: 50,\n },\n};\n"]}
|
|
1
|
+
{"version":3,"file":"neo-brutalist.theme.js","sourceRoot":"","sources":["../../../../src/themes/neo-brutalist.theme.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ComponentStyleTheme, DesignTokenConfiguration } from '@wildo-ai/presets-components-models';\nimport {\n DividerVariant,\n InteractiveVariant,\n SurfaceVariant,\n FormControlVariant,\n IndicatorVariant,\n SelectableVariant,\n TypographyVariant,\n SpacingSemantic,\n DesignTokenModeStrategy,\n DesignTokenValueType,\n SKELETON_NEUTRAL_TINT,\n} from '@wildo-ai/presets-components-models';\nimport type { UIBehaviorRecipe } from '@wildo-ai/presets-components-models';\n\nfunction recipe(r: Partial<UIBehaviorRecipe> & { base: string }): UIBehaviorRecipe {\n return { base: r.base, states: r.states ?? {}, sizes: r.sizes, motion: r.motion ?? {}, gesture: r.gesture, policy: r.policy };\n}\n\n// ============================================================\n// Neo-Brutalist theme\n//\n// Extracted from neobrutalism.dev v3 reference repo (exact classes).\n//\n// Design tokens (from reference CSS variables):\n// --border-radius: 5px → rounded-lg (via global --radius token)\n// --shadow: 4px 4px 0px 0px var(--border) → shadow-[4px_4px_0px_0px_var(--foreground)]\n// --heading-font-weight: 700 → font-bold\n// --base-font-weight: 500 → font-medium\n// border: 2px solid → border-2 border-foreground\n// overlay: rgba(0,0,0,0.8) → bg-black/80\n//\n// Hover pattern: translate toward shadow + flatten (press-in)\n// hover:translate-x-[4px] hover:translate-y-[4px] hover:shadow-none\n//\n// Key differences from shadcn:\n// - Card bg = primary (main) color, not white\n// - Select/dropdown bg = primary color\n// - Tooltip bg = primary color\n// - Close buttons: opacity-100 (no subtlety)\n// - Sidebar header/footer: border-b-2/border-t-2\n// - Accordion trigger: bg-primary, text-primary-foreground\n// - Skeleton: border-2 on skeleton\n// - Progress bar indicator: border-r-2\n// ============================================================\n\n// -- Shared constants matching reference --\n\nconst NB = {\n // References the global --radius token (set to 5px by theme.radius below).\n // Always use rounded-* tiers, never hardcoded rounded-[Npx].\n radius: \"rounded-lg\",\n border: \"border-2 border-foreground\",\n shadow: \"shadow-[4px_4px_0px_0px_var(--foreground)]\",\n hover: \"hover:translate-x-[4px] hover:translate-y-[4px] hover:shadow-none\",\n focus: \"focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-foreground focus-visible:ring-offset-2\",\n disabled: \"disabled:pointer-events-none disabled:opacity-[var(--opacity-disabled)]\",\n invalid: \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n};\n\n// ============================================================\n// MOTION PERSONALITY — Neo-Brutalist\n// ============================================================\n// Hover/focus : INSTANT (50ms) + LINEAR → abrupt, no polish.\n// The 4px translate-x/-y on\n// press is THE motion (the\n// button \"lands\" against\n// the hard-offset shadow).\n// Overlay enter: FAST (150ms) + LINEAR → directional slide-2.\n// Overlay exit : INSTANT (50ms) + LINEAR → close = vanish (matches\n// the abrupt press feedback).\n// Backdrop : FAST/INSTANT + LINEAR → consistent.\n// Gestures : NONE — CSS translate IS the press feedback. Adding\n// motion.dev springs would soften the \"thud\" that is\n// the brutalist signature.\n//\n// Why LINEAR explicitly: previously overlay/backdrop omitted ease-,\n// so Tailwind/browser fell back to the soft `ease` curve — quietly\n// undermining the abrupt brutalist personality. TR-14 motion-coherence\n// pass adds explicit LINEAR easing to every overlay/backdrop.\n// ============================================================\nconst NB_MOTION = {\n interactive: \"transition-[background-color,color,border-color,box-shadow,transform] duration-[var(--motion-duration-instant)] ease-[var(--motion-easing-linear)] motion-reduce:transition-none\",\n formControl: \"transition-[color,border-color,box-shadow] duration-[var(--motion-duration-instant)] ease-[var(--motion-easing-linear)] motion-reduce:transition-none\",\n selectable: \"transition-[background-color,color,border-color,outline-color] duration-[var(--motion-duration-instant)] ease-[var(--motion-easing-linear)] motion-reduce:transition-none\",\n enterFadeZoom: \"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=open]:duration-[var(--motion-duration-fast)] data-[state=open]:ease-[var(--motion-easing-linear)] motion-reduce:data-[state=open]:animate-none\",\n exitFadeZoom: \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=closed]:duration-[var(--motion-duration-instant)] data-[state=closed]:ease-[var(--motion-easing-linear)] motion-reduce:data-[state=closed]:animate-none\",\n enterDirectional: \"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=open]:duration-[var(--motion-duration-fast)] data-[state=open]:ease-[var(--motion-easing-linear)] data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 motion-reduce:data-[state=open]:animate-none\",\n backdropEnter: \"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:duration-[var(--motion-duration-fast)] data-[state=open]:ease-[var(--motion-easing-linear)] motion-reduce:data-[state=open]:animate-none\",\n backdropExit: \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:duration-[var(--motion-duration-instant)] data-[state=closed]:ease-[var(--motion-easing-linear)] motion-reduce:data-[state=closed]:animate-none\",\n};\n\n// ============================================================\n// INTERACTIVE\n// Reference: button.tsx variants\n// ============================================================\n\nconst interactiveSizes: Record<string, string> = {\n xs: \"h-8 px-2.5 text-xs gap-1 pointer-coarse:min-h-10\",\n sm: \"h-9 px-3 pointer-coarse:min-h-11\",\n md: \"h-10 px-4 py-2 pointer-coarse:min-h-11\",\n lg: \"h-11 px-8 pointer-coarse:min-h-11\",\n icon: \"size-10 pointer-coarse:min-h-11 pointer-coarse:min-w-11\",\n \"icon-sm\": \"size-8 pointer-coarse:min-h-9 pointer-coarse:min-w-9\",\n};\n\nconst interactive: Record<InteractiveVariant, UIBehaviorRecipe> = {\n // Reference variant: \"default\" → bg-main text-main-foreground shadow-shadow hover:shift\n [InteractiveVariant.PRIMARY]: recipe({\n base: `bg-primary text-primary-foreground ${NB.border} ${NB.shadow} ${NB.radius} font-medium text-sm cursor-pointer`,\n states: { hover: NB.hover, active: \"active:translate-x-[4px] active:translate-y-[4px] active:shadow-none\", focus: NB.focus, disabled: NB.disabled, invalid: NB.invalid },\n sizes: interactiveSizes,\n motion: { transition: NB_MOTION.interactive },\n }),\n\n // Reference variant: \"neutral\" → bg-bw (secondary bg) text-text shadow-shadow hover:shift\n [InteractiveVariant.SECONDARY]: recipe({\n base: `bg-secondary text-secondary-foreground ${NB.border} ${NB.shadow} ${NB.radius} font-medium text-sm cursor-pointer`,\n states: { hover: NB.hover, active: \"active:translate-x-[4px] active:translate-y-[4px] active:shadow-none\", focus: NB.focus, disabled: NB.disabled, invalid: NB.invalid },\n sizes: interactiveSizes,\n motion: { transition: NB_MOTION.interactive },\n }),\n\n // Reference variant: \"reverse\" → bg-main, NO shadow, gains shadow on hover\n [InteractiveVariant.OUTLINE]: recipe({\n base: `bg-primary text-primary-foreground ${NB.border} ${NB.radius} font-medium text-sm cursor-pointer`,\n states: {\n hover: \"hover:-translate-x-[4px] hover:-translate-y-[4px] hover:shadow-[4px_4px_0px_0px_var(--foreground)]\",\n active: \"active:translate-x-0 active:translate-y-0 active:shadow-none\",\n focus: NB.focus,\n selected: \"data-[state=on]:bg-primary data-[state=on]:text-primary-foreground data-[state=on]:border-foreground data-[state=on]:shadow-[2px_2px_0px_0px_var(--foreground)]\",\n disabled: NB.disabled, invalid: NB.invalid,\n },\n sizes: interactiveSizes,\n motion: { transition: NB_MOTION.interactive },\n }),\n\n // Destructive — same pattern as primary but destructive colors\n [InteractiveVariant.DESTRUCTIVE]: recipe({\n base: `bg-destructive text-destructive-foreground ${NB.border} ${NB.shadow} ${NB.radius} font-medium text-sm cursor-pointer`,\n states: { hover: NB.hover, active: \"active:translate-x-[4px] active:translate-y-[4px] active:shadow-none\", focus: NB.focus, highlighted: \"focus:bg-destructive focus:text-destructive-foreground focus:border-foreground\", disabled: NB.disabled, invalid: NB.invalid },\n sizes: interactiveSizes,\n motion: { transition: NB_MOTION.interactive },\n }),\n\n // Reference variant: \"noShadow\" → bg-main, border, no shadow, no hover shift\n [InteractiveVariant.GHOST]: recipe({\n base: `text-foreground ${NB.border} border-transparent ${NB.radius} font-medium text-sm cursor-pointer`,\n states: {\n hover: \"hover:bg-primary hover:text-primary-foreground hover:border-foreground\",\n active: \"active:bg-primary/80 active:text-primary-foreground\",\n focus: NB.focus,\n selected: \"data-[state=on]:bg-primary data-[state=on]:text-primary-foreground data-[state=on]:border-foreground\",\n highlighted: \"focus:bg-primary focus:text-primary-foreground focus:border-foreground\",\n open: \"data-[state=open]:bg-primary data-[state=open]:text-primary-foreground data-[state=open]:border-foreground\",\n disabled: NB.disabled, invalid: NB.invalid,\n },\n sizes: interactiveSizes,\n motion: { transition: NB_MOTION.interactive },\n }),\n\n [InteractiveVariant.LINK]: recipe({\n base: `text-primary underline underline-offset-4 decoration-2 ${NB.radius} font-medium text-sm cursor-pointer`,\n states: {\n hover: \"hover:decoration-foreground\",\n active: \"active:text-primary/80\",\n focus: NB.focus, disabled: NB.disabled, invalid: NB.invalid,\n },\n sizes: { xs: \"h-8 px-2.5 text-xs gap-1 pointer-coarse:min-h-10\", sm: \"h-9 px-3 pointer-coarse:min-h-11\", md: \"h-10 px-4 py-2 pointer-coarse:min-h-11\", lg: \"h-11 px-8 pointer-coarse:min-h-11\", icon: \"size-10 pointer-coarse:min-h-11 pointer-coarse:min-w-11\", \"icon-sm\": \"size-8 pointer-coarse:min-h-9 pointer-coarse:min-w-9\" },\n motion: { transition: NB_MOTION.interactive },\n }),\n\n [InteractiveVariant.ACCENT]: recipe({\n // TT-2: Reuse the same theme-resolvable accent-gradient stops as the\n // default theme so tenant rebrands flow through (was hardcoded\n // violet/pink/amber). The neo-brutalist motion + border treatment is\n // unchanged.\n base: `bg-primary text-primary-foreground font-black ${NB.border} shadow-[4px_4px_0px_0px_var(--foreground)] bg-[length:300%_100%] bg-gradient-to-r from-accent-gradient-from via-accent-gradient-via to-accent-gradient-to animate-[gradient-rotate_4s_steps(8)_infinite] motion-reduce:animate-none ${NB.radius} text-sm cursor-pointer`,\n states: {\n hover: 'hover:translate-x-[4px] hover:translate-y-[4px] hover:shadow-none',\n active: 'active:translate-x-[4px] active:translate-y-[4px] active:shadow-none',\n focus: 'focus-visible:ring-2 focus-visible:ring-foreground focus-visible:ring-offset-2',\n disabled: NB.disabled,\n invalid: NB.invalid,\n },\n sizes: interactiveSizes,\n motion: {\n transition: 'transition-[transform,shadow,background-position] duration-[var(--motion-duration-instant)] ease-[var(--motion-easing-linear)] motion-reduce:transition-none',\n },\n }),\n};\n\n// ============================================================\n// SURFACE\n// Reference: card.tsx, dialog.tsx, select.tsx (content), tooltip.tsx\n// SURFACE PERSONALITY — poster-board panels: hard borders, hard shadows,\n// saturated callouts. New variants keep the same physical cut-paper logic.\n// ============================================================\n\nconst surface: ComponentStyleTheme['surface'] = {\n // Reference card: \"bg-background text-foreground border-2 border-border shadow-shadow rounded-base font-base\"\n [SurfaceVariant.BASE]: recipe({\n base: `bg-background text-foreground ${NB.border} ${NB.shadow} ${NB.radius} font-medium`,\n }),\n\n // Reference card with a lifted fill: hard border + offset shadow over the\n // elevated `surface-raised` so the card reads against the page. Always painted.\n [SurfaceVariant.CARD]: recipe({\n base: `bg-surface-raised text-surface-raised-foreground ${NB.border} ${NB.shadow} ${NB.radius} font-medium`,\n }),\n\n // Reference dropdown/tooltip: \"bg-main text-main-foreground border-2 border-border rounded-base\"\n // Popovers/dropdowns use primary color bg in neo-brutalism\n [SurfaceVariant.RAISED]: recipe({\n // `fill-*` mirrors `bg-*` so the Tooltip's Radix arrow (an SVG painted via\n // `fill`, inherited across Radix's arrow-wrapper span) matches the body.\n base: `bg-primary fill-primary text-primary-foreground ${NB.border} ${NB.radius} font-medium`,\n motion: {\n enter: NB_MOTION.enterDirectional,\n exit: NB_MOTION.exitFadeZoom,\n },\n }),\n\n // Reference dialog: \"bg-background border-2 border-border shadow-shadow rounded-base\"\n [SurfaceVariant.OVERLAY]: recipe({\n base: `bg-background text-foreground ${NB.border} ${NB.shadow} ${NB.radius}`,\n motion: {\n enter: NB_MOTION.enterFadeZoom + \" data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]\",\n exit: NB_MOTION.exitFadeZoom + \" data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%]\",\n },\n }),\n\n // Reference sidebar inset: \"bg-secondary-background\"\n [SurfaceVariant.INSET]: recipe({\n base: `bg-secondary text-foreground ${NB.radius}`,\n }),\n\n // Reference sidebar: \"bg-secondary-background text-foreground\" + border-r-2\n [SurfaceVariant.SUNKEN]: recipe({\n base: \"bg-secondary text-foreground\",\n }),\n\n [SurfaceVariant.TAB_PANEL]: recipe({\n // Tab panel is still loud, but drops the top border so it locks to the tabs.\n base: `bg-background text-foreground border-x-2 border-b-2 border-border ${NB.shadow} rounded-b-lg font-medium`,\n }),\n\n [SurfaceVariant.SHELL]: recipe({\n // Page shell: flat poster background; children carry the hard frames.\n base: 'bg-background text-foreground font-medium',\n }),\n\n [SurfaceVariant.TRANSIENT]: recipe({\n // Toast: punchy callout, primary color plus the signature hard shadow.\n base: `bg-primary text-primary-foreground ${NB.border} ${NB.shadow} ${NB.radius} font-medium`,\n motion: {\n enter: NB_MOTION.enterDirectional,\n exit: NB_MOTION.exitFadeZoom,\n },\n }),\n};\n\n// ============================================================\n// FORM_CONTROL\n// Reference: input.tsx, textarea.tsx, select trigger\n// ============================================================\n\nconst formControl: Record<FormControlVariant, UIBehaviorRecipe> = {\n // Reference input: \"bg-secondary-background border-2 border-border rounded-base text-sm font-base text-foreground placeholder:text-foreground/50\"\n [FormControlVariant.DEFAULT]: recipe({\n base: `bg-secondary ${NB.border} ${NB.radius} text-base md:text-sm font-medium text-foreground placeholder:text-foreground/50 selection:bg-primary selection:text-primary-foreground`,\n states: { focus: NB.focus, disabled: \"disabled:cursor-not-allowed disabled:opacity-[var(--opacity-disabled)]\", invalid: NB.invalid },\n sizes: { md: \"h-10 px-3 py-2 pointer-coarse:min-h-11\", sm: \"h-9 px-3 text-sm pointer-coarse:min-h-11\", lg: \"h-12 px-4 py-2 pointer-coarse:min-h-12\" },\n motion: { transition: NB_MOTION.formControl },\n }),\n\n [FormControlVariant.FILLED]: recipe({\n base: `bg-muted ${NB.border} ${NB.radius} text-base md:text-sm font-medium text-foreground placeholder:text-foreground/50`,\n states: { focus: NB.focus, disabled: \"disabled:cursor-not-allowed disabled:opacity-[var(--opacity-disabled)]\", invalid: NB.invalid },\n sizes: { md: \"h-10 px-3 py-2 pointer-coarse:min-h-11\", sm: \"h-9 px-3 text-sm pointer-coarse:min-h-11\", lg: \"h-12 px-4 py-2 pointer-coarse:min-h-12\" },\n motion: { transition: NB_MOTION.formControl },\n }),\n\n [FormControlVariant.UNDERLINED]: recipe({\n base: `bg-transparent border-0 border-b-2 border-foreground rounded-none text-base md:text-sm font-medium text-foreground placeholder:text-foreground/50`,\n states: { focus: \"focus-visible:border-primary\", disabled: \"disabled:opacity-[var(--opacity-disabled)]\", invalid: \"aria-invalid:border-destructive\" },\n sizes: { md: \"h-10 px-0 py-2 pointer-coarse:min-h-11\", sm: \"h-9 px-0 text-sm pointer-coarse:min-h-11\", lg: \"h-12 px-0 py-2 pointer-coarse:min-h-12\" },\n motion: { transition: \"transition-[border-color] duration-[var(--motion-duration-instant)] ease-[var(--motion-easing-linear)] motion-reduce:transition-none\" },\n }),\n\n [FormControlVariant.CHECKBOX]: recipe({\n base: `${NB.border} ${NB.radius} shadow-[2px_2px_0px_0px_var(--foreground)]`,\n states: {\n focus: NB.focus,\n selected: `data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:border-foreground`,\n disabled: \"disabled:cursor-not-allowed disabled:opacity-[var(--opacity-disabled)]\",\n invalid: NB.invalid,\n },\n motion: { transition: \"transition-[color,box-shadow] duration-[var(--motion-duration-instant)] ease-[var(--motion-easing-linear)] motion-reduce:transition-none\" },\n }),\n\n [FormControlVariant.SWITCH]: recipe({\n base: `data-[state=unchecked]:bg-secondary ${NB.border} shadow-[2px_2px_0px_0px_var(--foreground)]`,\n states: {\n focus: NB.focus,\n selected: \"data-[state=checked]:bg-primary\",\n disabled: \"disabled:cursor-not-allowed disabled:opacity-[var(--opacity-disabled)]\",\n invalid: NB.invalid,\n },\n motion: { transition: \"transition-all duration-[var(--motion-duration-instant)] ease-[var(--motion-easing-linear)] motion-reduce:transition-none\" },\n }),\n};\n\n// ============================================================\n// INDICATOR\n// Reference: badge.tsx — \"border-2 border-border rounded-base px-2.5 py-0.5 text-xs font-base\"\n// ============================================================\n\nconst nbIndicatorShared = {\n states: { hover: \"[a&]:hover:opacity-[var(--opacity-hover)]\", focus: NB.focus, invalid: NB.invalid },\n motion: { transition: NB_MOTION.interactive },\n};\n\nconst indicator: Record<IndicatorVariant, UIBehaviorRecipe> = {\n [IndicatorVariant.NEUTRAL]: recipe({ base: `bg-secondary text-foreground ${NB.border} ${NB.radius} px-2.5 py-0.5 text-xs font-medium`, ...nbIndicatorShared }),\n [IndicatorVariant.INFO]: recipe({ base: `bg-info text-info-foreground ${NB.border} ${NB.radius} px-2.5 py-0.5 text-xs font-medium`, ...nbIndicatorShared }),\n [IndicatorVariant.SUCCESS]: recipe({ base: `bg-success text-success-foreground ${NB.border} ${NB.radius} px-2.5 py-0.5 text-xs font-medium`, ...nbIndicatorShared }),\n [IndicatorVariant.WARNING]: recipe({ base: `bg-warning text-warning-foreground ${NB.border} ${NB.radius} px-2.5 py-0.5 text-xs font-medium`, ...nbIndicatorShared }),\n [IndicatorVariant.ERROR]: recipe({ base: `bg-destructive text-destructive-foreground ${NB.border} ${NB.radius} px-2.5 py-0.5 text-xs font-medium`, ...nbIndicatorShared }),\n};\n\n// ============================================================\n// SELECTABLE\n// Reference: tabs.tsx trigger, sidebar menu-button\n// TabsTrigger: \"rounded-base border-2 border-transparent ... data-[state=active]:bg-main data-[state=active]:text-main-foreground data-[state=active]:border-border\"\n// SidebarMenuButton: \"hover:bg-main hover:text-main-foreground hover:outline-border\"\n// ============================================================\n\nconst selectable: Record<SelectableVariant, UIBehaviorRecipe> = {\n [SelectableVariant.FILLED]: recipe({\n base: `${NB.radius} text-sm font-medium outline-hidden border-2 border-transparent`,\n states: {\n hover: \"hover:bg-primary hover:text-primary-foreground hover:border-foreground\",\n focus: \"focus-visible:ring-2 focus-visible:ring-foreground\",\n active: \"active:bg-primary active:text-primary-foreground\",\n selected: \"data-[active=true]:bg-primary data-[active=true]:text-primary-foreground data-[active=true]:border-foreground data-[state=active]:bg-primary data-[state=active]:text-primary-foreground data-[state=active]:border-foreground\",\n disabled: \"disabled:pointer-events-none disabled:opacity-[var(--opacity-disabled)]\",\n },\n sizes: { sm: \"h-7 text-xs\", md: \"h-8 text-sm\", lg: \"h-12 text-sm\" },\n motion: { transition: NB_MOTION.selectable },\n }),\n [SelectableVariant.UNDERLINE]: recipe({\n // Tailwind v4 only ships `border-{0,2,4,8}` utilities by default — `border-b-3`\n // would silently produce no underline. Use the arbitrary `[3px]` value so the\n // brutalist heavier-than-base underline (2px badges, 3px tab indicator) renders.\n base: \"rounded-none border-b-[3px] border-transparent text-sm font-medium outline-hidden\",\n states: {\n hover: \"hover:text-foreground\",\n focus: \"focus-visible:ring-2 focus-visible:ring-foreground\",\n selected: \"data-[state=active]:border-foreground data-[state=active]:text-foreground data-[state=active]:font-bold\",\n disabled: \"disabled:pointer-events-none disabled:opacity-[var(--opacity-disabled)]\",\n },\n sizes: { sm: \"h-8 text-xs pb-1\", md: \"h-9 text-sm pb-2\", lg: \"h-11 text-sm pb-3\" },\n motion: { transition: NB_MOTION.selectable },\n }),\n [SelectableVariant.PILL]: recipe({\n base: `${NB.radius} border-2 border-transparent text-sm font-medium outline-hidden`,\n states: {\n hover: \"hover:border-foreground\",\n focus: \"focus-visible:ring-2 focus-visible:ring-foreground\",\n selected: `data-[state=active]:bg-primary data-[state=active]:text-primary-foreground data-[state=active]:border-foreground data-[state=active]:shadow-[2px_2px_0px_0px_var(--foreground)]`,\n disabled: \"disabled:pointer-events-none disabled:opacity-[var(--opacity-disabled)]\",\n },\n sizes: { sm: \"h-8 px-3 text-xs\", md: \"h-9 px-4 text-sm\", lg: \"h-11 px-5 text-sm\" },\n motion: { transition: NB_MOTION.selectable },\n }),\n [SelectableVariant.INDICATOR]: recipe({\n // Same Tailwind v4 caveat as UNDERLINE: `border-s-3` is not a built-in utility\n // and would silently fail. Use arbitrary `[3px]` so the brutalist start-edge\n // indicator stays visually heavier than its 2px peers.\n base: `${NB.radius} text-sm font-medium outline-hidden border-s-[3px] border-transparent`,\n states: {\n hover: \"hover:bg-accent\",\n focus: \"focus-visible:ring-2 focus-visible:ring-foreground\",\n selected: \"data-[active=true]:border-foreground data-[active=true]:bg-primary data-[active=true]:text-primary-foreground data-[active=true]:font-bold\",\n disabled: \"disabled:pointer-events-none disabled:opacity-[var(--opacity-disabled)]\",\n },\n sizes: { sm: \"h-8 text-xs\", md: \"h-9 text-sm\", lg: \"h-12 text-sm\" },\n motion: { transition: NB_MOTION.selectable },\n }),\n};\n\n// ============================================================\n// OVERLAY, DIVIDER, SKELETON\n// Reference: dialog overlay \"bg-overlay\" = rgba(0,0,0,0.8)\n// Reference: skeleton \"border-2 border-border bg-secondary-background animate-pulse rounded-base\"\n// ============================================================\n\nconst overlayBackdrop: UIBehaviorRecipe = recipe({\n base: \"bg-black/80\",\n motion: {\n enter: NB_MOTION.backdropEnter,\n exit: NB_MOTION.backdropExit,\n },\n});\n\n// Reference: dropdown separator \"-mx-1 my-1 h-0.5 bg-border\"\nconst divider: Record<DividerVariant, UIBehaviorRecipe> = {\n [DividerVariant.DEFAULT]: recipe({ base: 'bg-foreground shrink-0' }),\n // Nested-disclosure guide: the theme's own divider material, as a left edge.\n [DividerVariant.NESTING_GUIDE]: recipe({ base: 'border-s-2 border-foreground' }),\n};\n\n// Reference: skeleton \"animate-pulse rounded-base bg-secondary-background border-2 border-border\"\nconst skeleton: UIBehaviorRecipe = recipe({ base: `${SKELETON_NEUTRAL_TINT} ${NB.border} animate-pulse ${NB.radius} motion-reduce:animate-none` });\n\nconst loadingSpinner: UIBehaviorRecipe = recipe({\n base: `text-foreground animate-spin ${NB.border} motion-reduce:animate-none`,\n});\n\nconst loadingOverlay: UIBehaviorRecipe = recipe({\n base: `bg-background/80 ${NB.border}`,\n motion: {\n enter: \"animate-in fade-in-0 duration-[var(--motion-duration-fast)] ease-[var(--motion-easing-linear)] motion-reduce:animate-none\",\n exit: \"animate-out fade-out-0 duration-[var(--motion-duration-instant)] ease-[var(--motion-easing-linear)] motion-reduce:animate-none\",\n },\n});\n\n// ============================================================\n// TYPOGRAPHY\n// Reference: CardTitle \"font-heading leading-none\"\n// Reference: CardDescription \"text-sm font-base\"\n// Reference: DialogTitle \"text-lg font-heading leading-none tracking-tight\"\n// Reference: Label \"text-sm font-heading leading-none\"\n// ============================================================\n\nconst typography: Record<TypographyVariant, UIBehaviorRecipe> = {\n [TypographyVariant.HEADING]: recipe({\n // Neo-brutalist typography is loud by definition. Pump h1 a full step\n // above the default theme (text-5xl vs text-4xl) so headings land with\n // the same weight as the 2px borders + 4px hard shadows — anything\n // smaller looks visually outweighed by the chrome. `display` is wired\n // here for future hero/marketing surfaces; the current Heading component\n // looks up `h{level}`, so it's an opt-in via `getRecipe(...).sizes.display`\n // until a `Display`/`Hero` companion ships (tracked in audit doc).\n base: \"font-bold leading-none tracking-tight\",\n sizes: {\n display: \"text-6xl\",\n h1: \"text-5xl\",\n h2: \"text-3xl\",\n h3: \"text-2xl\",\n h4: \"text-xl\",\n h5: \"text-lg\",\n md: \"text-xl\",\n },\n }),\n [TypographyVariant.BODY]: recipe({\n base: \"text-foreground text-sm font-medium\",\n sizes: { sm: \"text-xs\", md: \"text-sm\", lg: \"text-base\" },\n }),\n // Reference: Label \"text-sm font-heading\"\n [TypographyVariant.LABEL]: recipe({\n base: \"font-bold text-sm leading-none\",\n sizes: { sm: \"text-xs\", md: \"text-sm\", lg: \"text-base\" },\n }),\n // Reference: DialogDescription \"text-sm font-base text-foreground\" (NOT muted — brutalism is direct)\n [TypographyVariant.DESCRIPTION]: recipe({\n base: \"text-foreground text-sm font-medium\",\n sizes: { sm: \"text-xs\", md: \"text-sm\" },\n }),\n [TypographyVariant.CODE]: recipe({\n base: `font-mono text-sm bg-secondary ${NB.border} border-foreground/20 ${NB.radius} px-1.5 py-0.5`,\n sizes: { sm: \"text-xs\", md: \"text-sm\", lg: \"text-base\" },\n }),\n};\n\n// ============================================================\n// ASSEMBLED THEME\n// ============================================================\n\n// ============================================================\n// SPACING\n//\n// Neo-brutalism is graphic and chunky: 2px borders and 4px hard\n// shadows add visual weight around every element. The spacing\n// scale accounts for this by:\n// - Enlarging card/container padding so content doesn't bump\n// into thick borders.\n// - Slightly increasing field/section gaps so adjacent shadows\n// never overlap.\n// - Item/element gaps stay close to default since inline items\n// don't carry their own shadow boxes.\n// ============================================================\n\nconst spacing: ComponentStyleTheme['spacing'] = {\n [SpacingSemantic.ELEMENT]: '0.625rem', // 10px (default 8px) — room for shadow offsets\n [SpacingSemantic.ITEM]: '0.375rem', // 6px (default 4px) — slightly roomier list items\n [SpacingSemantic.GROUP]: '0.875rem', // 14px (default 12px) — groups stand out more\n [SpacingSemantic.FIELD]: '1.25rem', // 20px (default 16px) — shadow-friendly field gaps\n [SpacingSemantic.SECTION]: '1.75rem', // 28px (default 24px) — sections breathe around shadows\n [SpacingSemantic.REGION]: '2.5rem', // 40px (default 32px) — regions clearly separated\n [SpacingSemantic.CARD]: '1.25rem', // 20px (default 16px) — internal padding clears 2px border\n [SpacingSemantic.CONTAINER]: '1.75rem', // 28px (default 24px) — page padding accommodates shadow\n};\n\n// ============================================================\n// REQUIRED CUSTOM TOKENS — palette + font overrides\n//\n// Neo-brutalism is defined as much by its palette/typography as by its\n// borders and shadows. Without these overrides, the theme inherited the\n// host's corporate primary (a soft sky blue) and the host font stack\n// (Inter), which fought the brutalist DNA — heavy borders + hard shadows\n// against a polite, conventional palette read as \"shadcn with extra\n// outlines\" rather than the neobrutalism.dev v3 reference.\n//\n// `requiredCustomTokens` is consumed by UIContext at theme-apply time\n// (see `mergeThemeRequiredCustomTokens` + `applyCustomTokens`), which\n// writes each entry as `--<key>: <value>` onto `document.documentElement`\n// via `style.setProperty`. Inline-style precedence (1,0,0,0) beats the\n// `:root` rules emitted by the design-token CSS generator (0,1,0), so\n// these declarations override the standard `--primary`, `--background`,\n// etc. tokens for the lifetime of the theme.\n//\n// Palette is derived from neobrutalism.dev v3 reference variables:\n// --main: #88aaee (light) / #4a7dde (dark) → primary brutalist blue\n// --bg: #f5f5f5 (light) / #272933 (dark) → page background\n// --text: #000 (light) / #fff (dark) → high-contrast foreground\n// --border: same as text → \"drawn-with-marker\" outlines\n// ============================================================\n\nfunction colorOverride(lightOklch: string, darkOklch: string): DesignTokenConfiguration {\n return {\n type: DesignTokenValueType.COLOR,\n modeStrategy: DesignTokenModeStrategy.LIGHT_DARK,\n lightValue: lightOklch,\n darkValue: darkOklch,\n };\n}\n\nfunction colorSingle(oklch: string): DesignTokenConfiguration {\n return {\n type: DesignTokenValueType.COLOR,\n modeStrategy: DesignTokenModeStrategy.SINGLE,\n value: oklch,\n };\n}\n\nfunction stringSingle(value: string): DesignTokenConfiguration {\n return {\n type: DesignTokenValueType.STRING,\n modeStrategy: DesignTokenModeStrategy.SINGLE,\n value,\n };\n}\n\nconst requiredCustomTokens: Record<string, DesignTokenConfiguration> = {\n // === Brutalist blue (~#88aaee in light, ~#7da0e8 in dark) — the chrome\n // accent on which cards, popovers, dropdowns and tooltips paint themselves.\n //\n // Both lightness values are deliberately above L≈0.68 so the always-black\n // primary-foreground keeps a comfortable ≥4.5:1 contrast (WCAG AA body).\n // An earlier draft used L=0.58 in dark, which dipped to ~3.9:1 — the\n // brutalist DNA explicitly demands \"high contrast everything\", so we trade\n // a touch of dark-mode chroma for legibility instead of switching the text\n // to white (which would soften the brutalist look).\n primary: colorOverride('0.74 0.115 264', '0.70 0.135 264'),\n // Pure black on the chrome accent — brutalism is high contrast, not soft.\n 'primary-foreground': colorSingle('0 0 0'),\n\n // === Page background: warm off-white in light, deep slate in dark\n // (matches neobrutalism.dev `--bg` / `--bg-dark` variables).\n background: colorOverride('0.965 0 0', '0.272 0.013 280'),\n // === Body text: pure black on light, pure white on dark — high contrast\n // is non-negotiable for the brutalist style.\n foreground: colorOverride('0 0 0', '1 0 0'),\n\n // === Borders + focus rings: same as foreground so the 2px outlines read\n // as \"drawn with a marker\" and the focus ring picks up the same color.\n border: colorOverride('0 0 0', '1 0 0'),\n ring: colorOverride('0 0 0', '1 0 0'),\n input: colorOverride('0 0 0', '1 0 0'),\n\n // === Secondary surface: pure white in light (the classic \"white card\"),\n // and the same deep slate as bg in dark for visual continuity.\n secondary: colorOverride('1 0 0', '0.21 0.013 280'),\n 'secondary-foreground': colorOverride('0 0 0', '1 0 0'),\n\n // === Muted backgrounds: a faint blue tint of the primary so muted\n // surfaces stay \"in the family\" instead of going neutral grey.\n muted: colorOverride('0.95 0.015 264', '0.32 0.02 280'),\n 'muted-foreground': colorOverride('0.30 0.02 264', '0.78 0.02 264'),\n\n // === Destructive: hot brutalist red (#ff3838) — the OG \"stop\" color, not\n // the muted desaturated red the corporate default ships.\n destructive: colorOverride('0.65 0.26 27', '0.62 0.26 27'),\n 'destructive-foreground': colorSingle('1 0 0'),\n\n // === Accent (the rotating gradient stops): keep them in the brutalist\n // blue family rather than violet/blue/pink — uniform color story. Dark\n // value matches `primary` (0.70) so the gradient stays bright on dark\n // backgrounds where ACCENT chrome is most visible.\n 'accent-gradient-from': colorOverride('0.74 0.115 264', '0.70 0.135 264'),\n 'accent-gradient-via': colorOverride('0.85 0.18 90', '0.80 0.20 90'), // electric yellow midpoint\n 'accent-gradient-to': colorOverride('0.62 0.24 0', '0.58 0.26 0'), // hot pink endpoint\n\n // === Font stack: prefer architectural / monospaced-leaning families that\n // ship with most OSes, falling through to system. The brutalist DNA still\n // mostly comes from the borders + shadows + colors, but a more rigid\n // letterform reinforces it. Hosts wanting full fidelity (Public Sans,\n // Archivo Black, IBM Plex Sans) should @font-face them in app CSS — the\n // declarations below will pick them up automatically once available.\n 'font-body': stringSingle(\"'Public Sans', 'IBM Plex Sans', Inter, ui-sans-serif, system-ui, sans-serif\"),\n 'font-heading': stringSingle(\"'Archivo Black', 'Public Sans', 'IBM Plex Sans', Inter, ui-sans-serif, system-ui, sans-serif\"),\n};\n\nexport const neoBrutalistTheme: ComponentStyleTheme = {\n id: 'neo-brutalist',\n name: 'Neo-Brutalist',\n description: 'Based on neobrutalism.dev v3. 2px borders, 4px hard-offset shadows, 5px radius, 700/500 font weight split, heavy 80% overlay, primary-colored dropdowns/tooltips. Ships its own brutalist palette (#88aaee chrome blue, pure black/white duotone, hot red destructive) and architectural font stack via requiredCustomTokens — host palette/fonts are fully overridden when this theme is active.',\n\n requiredCustomTokens,\n spacing,\n\n interactive,\n surface,\n formControl,\n indicator,\n selectable,\n overlayBackdrop,\n divider,\n skeleton,\n loadingSpinner,\n loadingOverlay,\n typography,\n radius: '5px',\n backgroundLayer: undefined,\n chartStyle: {\n colorShadeLight: 600,\n colorShadeDark: 500,\n gridPadding: { top: 30, right: 20, bottom: 30, left: 60 },\n axis: { showAxisLine: true, showTicks: true, splitLineType: 'solid', hideOverlap: true, yAxisNameLocation: 'middle', yAxisNameGap: 50 },\n tooltip: { extraCss: 'border: 2px solid currentColor; box-shadow: 4px 4px 0 currentColor;', borderWidth: 0 },\n animation: { enabled: true, durationMs: 100, easing: 'linear' },\n series: { lineWidth: 3, pointSize: 6, areaOpacity: 0.4, barBorderRadius: 0, pieBorderWidth: 3 },\n typography: { titleFontSize: 18, titleFontWeight: 800, subtitleFontSize: 14, legendFontSize: 13, tooltipFontSize: 13, axisLabelFontSize: 12, axisNameFontSize: 13 },\n emphasis: { shadowBlur: 0, shadowColor: 'transparent', shadowOffsetX: 0 },\n responsive: { smallMaxWidth: 400, mediumMaxWidth: 799, smallGridPadding: { top: 20, right: 10, bottom: 20, left: 30 }, mediumGridPadding: { left: 50, right: 20, bottom: 40 }, hideLegendOnSmall: true, smallAxisLabelRotate: 45, smallFontSize: 11, mediumFontSize: 12 },\n multiSeriesLegendBottomPadding: 50,\n },\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal.theme.d.ts","sourceRoot":"","sources":["../../../../src/themes/terminal.theme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAA4B,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"terminal.theme.d.ts","sourceRoot":"","sources":["../../../../src/themes/terminal.theme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAA4B,MAAM,qCAAqC,CAAC;AAuqBzG,eAAO,MAAM,aAAa,EAAE,mBAgE3B,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { InteractiveVariant, SurfaceVariant, FormControlVariant, IndicatorVariant, SelectableVariant, TypographyVariant, SpacingSemantic, DesignTokenModeStrategy, DesignTokenValueType, } from '@wildo-ai/presets-components-models';
|
|
1
|
+
import { DividerVariant, InteractiveVariant, SurfaceVariant, FormControlVariant, IndicatorVariant, SelectableVariant, TypographyVariant, SpacingSemantic, DesignTokenModeStrategy, DesignTokenValueType, SKELETON_NEUTRAL_TINT, } from '@wildo-ai/presets-components-models';
|
|
2
2
|
function recipe(r) {
|
|
3
3
|
return { base: r.base, states: r.states ?? {}, sizes: r.sizes, motion: r.motion ?? {}, gesture: r.gesture, policy: r.policy };
|
|
4
4
|
}
|
|
@@ -414,9 +414,13 @@ const overlayBackdrop = recipe({
|
|
|
414
414
|
exit: TM_MOTION.backdropExit,
|
|
415
415
|
},
|
|
416
416
|
});
|
|
417
|
-
const divider =
|
|
417
|
+
const divider = {
|
|
418
|
+
[DividerVariant.DEFAULT]: recipe({ base: 'bg-foreground/15 shrink-0' }),
|
|
419
|
+
// Nested-disclosure guide: the theme's own divider material, as a left edge.
|
|
420
|
+
[DividerVariant.NESTING_GUIDE]: recipe({ base: 'border-s border-foreground/15' }),
|
|
421
|
+
};
|
|
418
422
|
const skeleton = recipe({
|
|
419
|
-
base:
|
|
423
|
+
base: `${SKELETON_NEUTRAL_TINT} animate-pulse ${TM.radiusTight} motion-reduce:animate-none`,
|
|
420
424
|
});
|
|
421
425
|
const loadingSpinner = recipe({
|
|
422
426
|
base: 'text-primary animate-spin motion-reduce:animate-none',
|
|
@@ -443,6 +447,7 @@ const typography = {
|
|
|
443
447
|
h2: 'text-2xl',
|
|
444
448
|
h3: 'text-lg',
|
|
445
449
|
h4: 'text-base',
|
|
450
|
+
h5: 'text-sm',
|
|
446
451
|
md: 'text-base',
|
|
447
452
|
},
|
|
448
453
|
}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal.theme.js","sourceRoot":"","sources":["../../../../src/themes/terminal.theme.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ComponentStyleTheme, DesignTokenConfiguration } from '@wildo-ai/presets-components-models';\nimport {\n InteractiveVariant,\n SurfaceVariant,\n FormControlVariant,\n IndicatorVariant,\n SelectableVariant,\n TypographyVariant,\n SpacingSemantic,\n DesignTokenModeStrategy,\n DesignTokenValueType,\n} from '@wildo-ai/presets-components-models';\nimport type { UIBehaviorRecipe } from '@wildo-ai/presets-components-models';\n\nfunction recipe(r: Partial<UIBehaviorRecipe> & { base: string }): UIBehaviorRecipe {\n return { base: r.base, states: r.states ?? {}, sizes: r.sizes, motion: r.motion ?? {}, gesture: r.gesture, policy: r.policy };\n}\n\n// ============================================================\n// Terminal theme (Geist-inspired)\n//\n// Persona: developer tools, IDE-adjacent UIs, infra dashboards,\n// CLI companions, internal devops.\n// References: Vercel Geist, Linear, GitHub Primer, Raycast.\n//\n// Design DNA:\n// - GEIST SANS for body + headings (precise, slightly condensed,\n// designed for high-density UIs). Geist Mono for indicators,\n// numerics, code, and keyboard hints — the \"terminal\" signal.\n// - High density: smaller default control heights (h-7/h-8 ladder)\n// and tighter spacing than default. The whole theme assumes a\n// power user with a keyboard.\n// - Crisp 1px borders using `border-foreground/15` — terminal apps\n// are line-art, not box-shadow art.\n// - 4–6px radius (`rounded-md` baseline) — IDE-like, not pill-y.\n// - Near-monochrome palette + a single SIGNAL-GREEN accent\n// (`oklch(0.72 0.20 145)`) — the unmistakable \"active prompt /\n// diff-add\" color of every developer tool.\n// - INSTANT motion (duration-fast, linear) — devs hate latency,\n// real or perceived. No spring physics, no easing curves.\n// - Square checkboxes (`rounded-sm`) — feels closer to a TTY.\n// - Indicators are uppercase mono — small caps with kerning, like\n// `[INFO]` / `[WARN]` log prefixes.\n// ============================================================\n\n// -- Shared constants --\n\nconst TM = {\n hairline: 'border border-foreground/15',\n edge: 'border border-foreground/20',\n radius: 'rounded-md',\n radiusTight: 'rounded-sm',\n focus:\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/70 focus-visible:ring-offset-1 focus-visible:ring-offset-background',\n disabled: 'disabled:pointer-events-none disabled:opacity-[var(--opacity-disabled)]',\n invalid:\n 'aria-invalid:ring-destructive/30 dark:aria-invalid:ring-destructive/50 aria-invalid:border-destructive',\n};\n\n// ============================================================\n// MOTION PERSONALITY — Terminal\n// ============================================================\n// Hover/focus : FAST (150ms) + LINEAR → snappy 1:1 input/output,\n// no designerly choreography.\n// Overlay enter: FAST (150ms) + LINEAR → directional slide-1 (tight,\n// matches compact density).\n// Overlay exit : INSTANT (50ms) + LINEAR → close = vanish.\n// Backdrop : FAST/INSTANT + LINEAR → consistent with overlays.\n// Gestures : NONE — devs expect direct manipulation; springs\n// read as \"designed for marketing screenshots.\"\n//\n// Why LINEAR explicitly: the previous implementation set duration but\n// omitted ease- on overlay/backdrop animations. Browsers fell back to\n// the CSS default `ease` curve (cubic-bezier(0.25, 0.1, 0.25, 1)) — a\n// soft S-curve that contradicted the LINEAR personality. Every overlay\n// and backdrop now has explicit `ease-[var(--motion-easing-linear)]`\n// (TR-14 motion-coherence pass).\n// ============================================================\nconst TM_MOTION = {\n interactive:\n 'transition-[background-color,color,border-color,box-shadow] duration-[var(--motion-duration-fast)] ease-[var(--motion-easing-linear)] motion-reduce:transition-none',\n formControl:\n 'transition-[color,border-color,box-shadow] duration-[var(--motion-duration-fast)] ease-[var(--motion-easing-linear)] motion-reduce:transition-none',\n selectable:\n 'transition-[background-color,color,border-color] duration-[var(--motion-duration-fast)] ease-[var(--motion-easing-linear)] motion-reduce:transition-none',\n enterFadeZoom:\n 'data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=open]:duration-[var(--motion-duration-fast)] data-[state=open]:ease-[var(--motion-easing-linear)] motion-reduce:data-[state=open]:animate-none',\n exitFadeZoom:\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=closed]:duration-[var(--motion-duration-instant)] data-[state=closed]:ease-[var(--motion-easing-linear)] motion-reduce:data-[state=closed]:animate-none',\n enterDirectional:\n 'data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=open]:duration-[var(--motion-duration-fast)] data-[state=open]:ease-[var(--motion-easing-linear)] data-[side=bottom]:slide-in-from-top-1 data-[side=left]:slide-in-from-right-1 data-[side=right]:slide-in-from-left-1 data-[side=top]:slide-in-from-bottom-1 motion-reduce:data-[state=open]:animate-none',\n backdropEnter:\n 'data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:duration-[var(--motion-duration-fast)] data-[state=open]:ease-[var(--motion-easing-linear)] motion-reduce:data-[state=open]:animate-none',\n backdropExit:\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:duration-[var(--motion-duration-instant)] data-[state=closed]:ease-[var(--motion-easing-linear)] motion-reduce:data-[state=closed]:animate-none',\n};\n\n// ============================================================\n// INTERACTIVE\n// Compact ladder: h-7/h-8/h-9 by default (vs default theme's h-9/h-9/h-10).\n// This is the visual signal of a \"power-user-density\" theme.\n// ============================================================\n\nconst interactiveSizes: Record<string, string> = {\n xs: 'h-6 px-2 text-xs gap-1 pointer-coarse:min-h-9',\n sm: 'h-7 px-2.5 gap-1 pointer-coarse:min-h-11',\n md: 'h-8 px-3 gap-1.5 pointer-coarse:min-h-11',\n lg: 'h-10 px-5 pointer-coarse:min-h-11',\n icon: 'size-8 pointer-coarse:min-h-11 pointer-coarse:min-w-11',\n 'icon-sm': 'size-6 pointer-coarse:min-h-9 pointer-coarse:min-w-9',\n};\n\nconst interactive: Record<InteractiveVariant, UIBehaviorRecipe> = {\n [InteractiveVariant.PRIMARY]: recipe({\n base: `bg-primary text-primary-foreground ${TM.radius} font-medium text-sm cursor-pointer shadow-[inset_0_1px_0_0_rgba(255,255,255,0.08)]`,\n states: {\n hover: 'hover:bg-primary/90',\n active: 'active:bg-primary/80',\n focus: TM.focus,\n disabled: TM.disabled,\n invalid: TM.invalid,\n },\n sizes: interactiveSizes,\n motion: { transition: TM_MOTION.interactive },\n }),\n\n [InteractiveVariant.SECONDARY]: recipe({\n // Geist-style \"secondary\" = subtle bg with crisp border, the workhorse\n // button on developer-tool pages. Distinguished from outline by having\n // a fill at all (outline is fully transparent).\n base: `bg-muted/40 text-foreground ${TM.hairline} ${TM.radius} font-medium text-sm cursor-pointer`,\n states: {\n hover: 'hover:bg-muted hover:border-foreground/25',\n active: 'active:bg-muted/80',\n focus: TM.focus,\n disabled: TM.disabled,\n invalid: TM.invalid,\n },\n sizes: interactiveSizes,\n motion: { transition: TM_MOTION.interactive },\n }),\n\n [InteractiveVariant.OUTLINE]: recipe({\n base: `bg-transparent text-foreground ${TM.edge} ${TM.radius} font-medium text-sm cursor-pointer`,\n states: {\n hover: 'hover:bg-muted hover:border-foreground/30',\n active: 'active:bg-muted/80',\n focus: TM.focus,\n selected:\n 'data-[state=on]:bg-foreground data-[state=on]:text-background data-[state=on]:border-foreground',\n disabled: TM.disabled,\n invalid: TM.invalid,\n },\n sizes: interactiveSizes,\n motion: { transition: TM_MOTION.interactive },\n }),\n\n [InteractiveVariant.DESTRUCTIVE]: recipe({\n base: `bg-destructive text-destructive-foreground ${TM.radius} font-medium text-sm cursor-pointer`,\n states: {\n hover: 'hover:bg-destructive/90',\n active: 'active:bg-destructive/80',\n focus: TM.focus,\n highlighted: 'focus:bg-destructive/15 focus:text-destructive',\n disabled: TM.disabled,\n invalid: TM.invalid,\n },\n sizes: interactiveSizes,\n motion: { transition: TM_MOTION.interactive },\n }),\n\n [InteractiveVariant.GHOST]: recipe({\n base: `text-foreground ${TM.radius} font-medium text-sm cursor-pointer`,\n states: {\n hover: 'hover:bg-muted',\n active: 'active:bg-muted/80',\n focus: TM.focus,\n selected: 'data-[state=on]:bg-muted data-[state=on]:text-foreground',\n highlighted: 'focus:bg-muted',\n open: 'data-[state=open]:bg-muted',\n disabled: TM.disabled,\n invalid: TM.invalid,\n },\n sizes: interactiveSizes,\n motion: { transition: TM_MOTION.interactive },\n }),\n\n [InteractiveVariant.LINK]: recipe({\n // Mono-feel underline: `decoration-1` keeps it crisp, no thickening\n // on hover (terminal links don't morph).\n base: 'text-primary underline underline-offset-[3px] decoration-1 decoration-primary/60 font-medium text-sm cursor-pointer',\n states: {\n hover: 'hover:decoration-primary',\n active: 'active:text-primary/80',\n focus: TM.focus,\n disabled: TM.disabled,\n invalid: TM.invalid,\n },\n sizes: {\n xs: 'h-6 px-1.5 text-xs gap-1 pointer-coarse:min-h-9',\n sm: 'h-7 px-1.5 gap-1 pointer-coarse:min-h-11',\n md: 'h-8 px-1.5 gap-1.5 pointer-coarse:min-h-11',\n lg: 'h-10 px-1.5 pointer-coarse:min-h-11',\n icon: 'size-8 pointer-coarse:min-h-11 pointer-coarse:min-w-11',\n 'icon-sm': 'size-6 pointer-coarse:min-h-9 pointer-coarse:min-w-9',\n },\n motion: { transition: TM_MOTION.interactive },\n }),\n\n [InteractiveVariant.ACCENT]: recipe({\n // Terminal accent: a \"scanline\" sweep using mono font. Gradient stops\n // resolve from theme tokens — the accent gradient defaults to\n // green→cyan→blue (terminal phosphor → cyan IDE highlight → link blue).\n base: 'relative bg-primary text-primary-foreground font-mono font-semibold tracking-tight rounded-md bg-[length:200%_100%] bg-gradient-to-r from-accent-gradient-from via-accent-gradient-via to-accent-gradient-to animate-[gradient-rotate_3s_linear_infinite] motion-reduce:animate-none text-sm cursor-pointer',\n states: {\n hover: 'hover:brightness-110',\n active: 'active:brightness-95',\n focus: TM.focus,\n disabled: TM.disabled,\n invalid: TM.invalid,\n },\n sizes: interactiveSizes,\n motion: {\n transition:\n 'transition-[background-position,filter] duration-[var(--motion-duration-fast)] ease-[var(--motion-easing-linear)] motion-reduce:transition-none',\n },\n }),\n};\n\n// ============================================================\n// SURFACE\n// SURFACE PERSONALITY — crisp terminal panes: 1px line art, mono posture, low\n// elevation. New variants behave like attached panes and compact status blocks.\n// Cards/dialogs are line-art panels with crisp 1px borders and\n// minimal shadows. Popovers get a subtle drop because they need\n// to lift off the page — but never the heavy shadow of glass/cozy.\n// ============================================================\n\nconst surface: ComponentStyleTheme['surface'] = {\n [SurfaceVariant.BASE]: recipe({\n base: `bg-background text-foreground ${TM.hairline} ${TM.radius}`,\n }),\n\n [SurfaceVariant.CARD]: recipe({\n // Content card: distinct `surface-raised` fill + terminal edge + radius.\n // Always painted.\n base: `bg-surface-raised text-surface-raised-foreground ${TM.edge} ${TM.radius}`,\n }),\n\n [SurfaceVariant.RAISED]: recipe({\n // `fill-*` mirrors `bg-*` so the Tooltip's Radix arrow (an SVG painted via\n // `fill`, inherited across Radix's arrow-wrapper span) matches the body.\n base: `bg-background fill-background text-foreground ${TM.edge} ${TM.radius} shadow-[0_2px_8px_rgba(0,0,0,0.06)] dark:shadow-[0_2px_8px_rgba(0,0,0,0.5)]`,\n motion: {\n enter: TM_MOTION.enterDirectional,\n exit: TM_MOTION.exitFadeZoom,\n },\n }),\n\n [SurfaceVariant.OVERLAY]: recipe({\n base: `bg-background text-foreground ${TM.edge} ${TM.radius} shadow-[0_8px_32px_rgba(0,0,0,0.10)] dark:shadow-[0_8px_32px_rgba(0,0,0,0.6)]`,\n motion: {\n enter: TM_MOTION.enterFadeZoom,\n exit: TM_MOTION.exitFadeZoom,\n },\n }),\n\n [SurfaceVariant.INSET]: recipe({\n base: `bg-muted/50 text-foreground ${TM.radiusTight} font-mono`,\n }),\n\n [SurfaceVariant.SUNKEN]: recipe({\n // Sidebar: terminal-app left rail — slightly darker bg, crisp right border.\n base: 'bg-muted/30 text-foreground border-r border-foreground/15',\n }),\n\n [SurfaceVariant.TAB_PANEL]: recipe({\n // Terminal tab panel: a crisp continuation, top rule omitted.\n base: 'bg-background text-foreground border-x border-b border-foreground/15 rounded-b-md',\n }),\n\n [SurfaceVariant.SHELL]: recipe({\n // Page shell: flat terminal canvas; nested panels draw the line art.\n base: 'bg-background text-foreground font-mono',\n }),\n\n [SurfaceVariant.TRANSIENT]: recipe({\n // Toast: compact terminal status panel.\n base: `bg-background text-foreground ${TM.edge} ${TM.radius} font-mono shadow-[0_4px_16px_rgba(0,0,0,0.10)] dark:shadow-[0_4px_16px_rgba(0,0,0,0.6)]`,\n motion: {\n enter: TM_MOTION.enterDirectional,\n exit: TM_MOTION.exitFadeZoom,\n },\n }),\n};\n\n// ============================================================\n// FORM_CONTROL\n// Tight, crisp, square-ish. Checkbox is `rounded-sm` (closer to TTY).\n// ============================================================\n\nconst formControl: Record<FormControlVariant, UIBehaviorRecipe> = {\n [FormControlVariant.DEFAULT]: recipe({\n base: `bg-background ${TM.edge} ${TM.radius} text-base md:text-sm text-foreground placeholder:text-muted-foreground/60 selection:bg-primary/30 selection:text-foreground`,\n states: {\n focus: TM.focus,\n disabled: 'disabled:cursor-not-allowed disabled:opacity-[var(--opacity-disabled)]',\n invalid: TM.invalid,\n },\n sizes: {\n md: 'h-8 px-2.5 py-1 pointer-coarse:min-h-11',\n sm: 'h-7 px-2 text-sm pointer-coarse:min-h-11',\n lg: 'h-10 px-3 py-2 pointer-coarse:min-h-11',\n },\n motion: { transition: TM_MOTION.formControl },\n }),\n\n [FormControlVariant.FILLED]: recipe({\n base: `bg-muted/60 ${TM.radius} border-0 text-base md:text-sm text-foreground placeholder:text-muted-foreground/60`,\n states: {\n focus: TM.focus,\n disabled: 'disabled:cursor-not-allowed disabled:opacity-[var(--opacity-disabled)]',\n invalid: TM.invalid,\n },\n sizes: {\n md: 'h-8 px-2.5 py-1 pointer-coarse:min-h-11',\n sm: 'h-7 px-2 text-sm pointer-coarse:min-h-11',\n lg: 'h-10 px-3 py-2 pointer-coarse:min-h-11',\n },\n motion: { transition: TM_MOTION.formControl },\n }),\n\n [FormControlVariant.UNDERLINED]: recipe({\n base: 'bg-transparent border-0 border-b border-foreground/25 rounded-none text-base md:text-sm text-foreground placeholder:text-muted-foreground/60',\n states: {\n focus: 'focus-visible:outline-none focus-visible:border-primary focus-visible:border-b-2',\n disabled: 'disabled:opacity-[var(--opacity-disabled)]',\n invalid: 'aria-invalid:border-destructive',\n },\n sizes: {\n md: 'h-8 px-0 py-1 pointer-coarse:min-h-11',\n sm: 'h-7 px-0 text-sm pointer-coarse:min-h-11',\n lg: 'h-10 px-0 py-2 pointer-coarse:min-h-11',\n },\n motion: {\n transition:\n 'transition-[border-color] duration-[var(--motion-duration-fast)] ease-[var(--motion-easing-linear)] motion-reduce:transition-none',\n },\n }),\n\n [FormControlVariant.CHECKBOX]: recipe({\n // `rounded-sm` (3px) — feels like a TTY checkbox `[x]`, not a pill.\n base: `${TM.edge} ${TM.radiusTight}`,\n states: {\n focus: TM.focus,\n selected:\n 'data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:border-primary',\n disabled: 'disabled:cursor-not-allowed disabled:opacity-[var(--opacity-disabled)]',\n invalid: TM.invalid,\n },\n motion: {\n transition:\n 'transition-[color,box-shadow] duration-[var(--motion-duration-fast)] ease-[var(--motion-easing-linear)] motion-reduce:transition-none',\n },\n }),\n\n [FormControlVariant.SWITCH]: recipe({\n base: 'data-[state=unchecked]:bg-muted/60 border border-foreground/20',\n states: {\n focus: TM.focus,\n selected: 'data-[state=checked]:bg-primary',\n disabled: 'disabled:cursor-not-allowed disabled:opacity-[var(--opacity-disabled)]',\n invalid: TM.invalid,\n },\n motion: {\n transition:\n 'transition-all duration-[var(--motion-duration-fast)] ease-[var(--motion-easing-linear)] motion-reduce:transition-none',\n },\n }),\n};\n\n// ============================================================\n// INDICATOR\n// Mono uppercase + bracket-feel — `[INFO]` / `[WARN]` / `[ERROR]`,\n// without literally adding the brackets (those would clash with badge\n// rendering inside other components). Tight padding, crisp border.\n// ============================================================\n\nconst tmIndicatorShared = {\n states: { hover: '[a&]:hover:opacity-[var(--opacity-hover)]', focus: TM.focus, invalid: TM.invalid },\n motion: { transition: TM_MOTION.interactive },\n};\n\nconst indicator: Record<IndicatorVariant, UIBehaviorRecipe> = {\n [IndicatorVariant.NEUTRAL]: recipe({\n base: `bg-muted/50 text-muted-foreground ${TM.radiusTight} ${TM.hairline} px-1.5 py-0.5 text-[0.625rem] font-mono font-semibold uppercase tracking-wider`,\n ...tmIndicatorShared,\n }),\n [IndicatorVariant.INFO]: recipe({\n base: `bg-info/15 text-info ${TM.radiusTight} border border-info/30 px-1.5 py-0.5 text-[0.625rem] font-mono font-semibold uppercase tracking-wider`,\n ...tmIndicatorShared,\n }),\n [IndicatorVariant.SUCCESS]: recipe({\n base: `bg-success/15 text-success ${TM.radiusTight} border border-success/30 px-1.5 py-0.5 text-[0.625rem] font-mono font-semibold uppercase tracking-wider`,\n ...tmIndicatorShared,\n }),\n [IndicatorVariant.WARNING]: recipe({\n base: `bg-warning/15 text-warning ${TM.radiusTight} border border-warning/30 px-1.5 py-0.5 text-[0.625rem] font-mono font-semibold uppercase tracking-wider`,\n ...tmIndicatorShared,\n }),\n [IndicatorVariant.ERROR]: recipe({\n base: `bg-destructive/15 text-destructive ${TM.radiusTight} border border-destructive/30 px-1.5 py-0.5 text-[0.625rem] font-mono font-semibold uppercase tracking-wider`,\n ...tmIndicatorShared,\n }),\n};\n\n// ============================================================\n// SELECTABLE\n// Compact, crisp. Underline tab uses 2px solid (vs editorial's\n// hairline-becomes-2px) — no animation curve, just on/off.\n// ============================================================\n\nconst selectable: Record<SelectableVariant, UIBehaviorRecipe> = {\n [SelectableVariant.FILLED]: recipe({\n base: `${TM.radius} text-sm outline-hidden`,\n states: {\n hover: 'hover:bg-muted',\n focus: 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/70',\n selected:\n 'data-[active=true]:bg-muted data-[active=true]:text-foreground data-[active=true]:font-medium data-[state=active]:bg-muted data-[state=active]:text-foreground',\n disabled: 'disabled:pointer-events-none disabled:opacity-[var(--opacity-disabled)]',\n },\n sizes: { sm: 'h-6 text-xs', md: 'h-7 text-sm', lg: 'h-10 text-sm' },\n motion: { transition: TM_MOTION.selectable },\n }),\n [SelectableVariant.UNDERLINE]: recipe({\n base: 'rounded-none border-b-2 border-transparent text-sm text-muted-foreground outline-hidden',\n states: {\n hover: 'hover:text-foreground',\n focus: 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/70',\n selected:\n 'data-[state=active]:border-primary data-[state=active]:text-foreground data-[state=active]:font-medium',\n disabled: 'disabled:pointer-events-none disabled:opacity-[var(--opacity-disabled)]',\n },\n sizes: { sm: 'h-7 text-xs pb-1', md: 'h-8 text-sm pb-1.5', lg: 'h-10 text-sm pb-2' },\n motion: { transition: TM_MOTION.selectable },\n }),\n [SelectableVariant.PILL]: recipe({\n base: `${TM.radius} text-sm outline-hidden ${TM.hairline} border-transparent`,\n states: {\n hover: 'hover:bg-muted hover:border-foreground/15',\n focus: 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/70',\n selected:\n 'data-[state=active]:bg-foreground data-[state=active]:text-background data-[state=active]:border-foreground',\n disabled: 'disabled:pointer-events-none disabled:opacity-[var(--opacity-disabled)]',\n },\n sizes: { sm: 'h-6 px-2 text-xs', md: 'h-7 px-3 text-sm', lg: 'h-9 px-4 text-sm' },\n motion: { transition: TM_MOTION.selectable },\n }),\n [SelectableVariant.INDICATOR]: recipe({\n base: `${TM.radius} text-sm outline-hidden border-s-2 border-transparent`,\n states: {\n hover: 'hover:bg-muted',\n focus: 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/70',\n selected:\n 'data-[active=true]:border-primary data-[active=true]:bg-muted data-[active=true]:text-foreground data-[active=true]:font-medium',\n disabled: 'disabled:pointer-events-none disabled:opacity-[var(--opacity-disabled)]',\n },\n sizes: { sm: 'h-6 text-xs', md: 'h-7 text-sm', lg: 'h-10 text-sm' },\n motion: { transition: TM_MOTION.selectable },\n }),\n};\n\n// ============================================================\n// OVERLAY, DIVIDER, SKELETON\n// ============================================================\n\nconst overlayBackdrop: UIBehaviorRecipe = recipe({\n // Terminal scrim: dark, no blur (devs hate \"blurry IDE\" feel).\n base: 'bg-foreground/50',\n motion: {\n enter: TM_MOTION.backdropEnter,\n exit: TM_MOTION.backdropExit,\n },\n});\n\nconst divider: UIBehaviorRecipe = recipe({ base: 'bg-foreground/15 shrink-0' });\n\nconst skeleton: UIBehaviorRecipe = recipe({\n base: `bg-muted/60 animate-pulse ${TM.radiusTight} motion-reduce:animate-none`,\n});\n\nconst loadingSpinner: UIBehaviorRecipe = recipe({\n base: 'text-primary animate-spin motion-reduce:animate-none',\n});\n\nconst loadingOverlay: UIBehaviorRecipe = recipe({\n base: 'bg-background/85',\n motion: {\n enter: 'animate-in fade-in-0 duration-[var(--motion-duration-fast)] ease-[var(--motion-easing-linear)] motion-reduce:animate-none',\n exit: 'animate-out fade-out-0 duration-[var(--motion-duration-instant)] ease-[var(--motion-easing-linear)] motion-reduce:animate-none',\n },\n});\n\n// ============================================================\n// TYPOGRAPHY\n// Geist Sans for everything except CODE (Geist Mono). Heading scale\n// stays close to default (devs don't want hero-sized h1 on a settings\n// page) but BODY drops to text-[0.8125rem] for the dense feel.\n// LABEL is mono uppercase — small caps tracking, log-prefix vibe.\n// ============================================================\n\nconst typography: Record<TypographyVariant, UIBehaviorRecipe> = {\n [TypographyVariant.HEADING]: recipe({\n base: 'font-heading font-semibold leading-tight tracking-tight text-foreground',\n sizes: {\n h1: 'text-3xl',\n h2: 'text-2xl',\n h3: 'text-lg',\n h4: 'text-base',\n md: 'text-base',\n },\n }),\n [TypographyVariant.BODY]: recipe({\n // 13px body — IDE-density, not article-density. Default uses 14px.\n // `font-sans` (NOT `font-body`) — only `font-sans/serif/mono/heading/display`\n // are exposed as Tailwind utilities via @theme; `font-sans` resolves to\n // `var(--font-body)` which our requiredCustomTokens overrides to Geist.\n // Using `font-body` here would silently no-op.\n base: 'font-sans text-foreground text-[0.8125rem] leading-snug',\n sizes: { sm: 'text-xs', md: 'text-[0.8125rem]', lg: 'text-sm' },\n }),\n [TypographyVariant.LABEL]: recipe({\n // Mono uppercase: the \"log prefix\" / \"CLI flag\" idiom.\n base: 'font-mono font-medium text-2xs leading-none uppercase tracking-[0.08em] text-muted-foreground',\n sizes: { sm: 'text-[0.5625rem]', md: 'text-2xs', lg: 'text-xs' },\n }),\n [TypographyVariant.DESCRIPTION]: recipe({\n base: 'font-sans text-muted-foreground text-xs leading-snug',\n sizes: { sm: 'text-[0.6875rem]', md: 'text-xs' },\n }),\n [TypographyVariant.CODE]: recipe({\n // Inline code: tighter padding, mono, sharp corners.\n base: 'font-mono text-[0.85em] bg-muted/60 rounded-sm px-1 py-0.5 border border-foreground/10',\n sizes: { sm: 'text-[0.75em]', md: 'text-[0.85em]', lg: 'text-[0.9em]' },\n }),\n};\n\n// ============================================================\n// SPACING\n// Tightest in lineup. Devs want to see more on screen.\n// ============================================================\n\nconst spacing: ComponentStyleTheme['spacing'] = {\n [SpacingSemantic.ELEMENT]: '0.375rem',\n [SpacingSemantic.ITEM]: '0.1875rem',\n [SpacingSemantic.GROUP]: '0.625rem',\n [SpacingSemantic.FIELD]: '0.875rem',\n [SpacingSemantic.SECTION]: '1.25rem',\n [SpacingSemantic.REGION]: '1.75rem',\n [SpacingSemantic.CARD]: '0.875rem',\n [SpacingSemantic.CONTAINER]: '1.25rem',\n};\n\n// ============================================================\n// REQUIRED CUSTOM TOKENS — Geist palette + Geist font stacks\n//\n// Same `requiredCustomTokens` mechanism as neo-brutalist + editorial.\n// The Geist family is the visual signature of the theme — anything\n// else and you get \"default theme but tighter\".\n// ============================================================\n\nfunction colorOverride(lightOklch: string, darkOklch: string): DesignTokenConfiguration {\n return {\n type: DesignTokenValueType.COLOR,\n modeStrategy: DesignTokenModeStrategy.LIGHT_DARK,\n lightValue: lightOklch,\n darkValue: darkOklch,\n };\n}\n\nfunction colorSingle(oklch: string): DesignTokenConfiguration {\n return { type: DesignTokenValueType.COLOR, modeStrategy: DesignTokenModeStrategy.SINGLE, value: oklch };\n}\n\nfunction stringSingle(value: string): DesignTokenConfiguration {\n return { type: DesignTokenValueType.STRING, modeStrategy: DesignTokenModeStrategy.SINGLE, value };\n}\n\nconst requiredCustomTokens: Record<string, DesignTokenConfiguration> = {\n // === Page palette: pure-ish whites/blacks. Slight cool tint (hue 240)\n // matches Geist's documentation site exactly (`oklch(...)` derivations\n // from Vercel's published design tokens).\n background: colorOverride('1 0 0', '0.13 0.005 240'),\n foreground: colorOverride('0.16 0.005 240', '0.97 0 0'),\n\n // === Signal green primary: the \"active prompt / diff-add / git-add\"\n // color of every developer tool.\n //\n // ⚠ Wave G follow-up TR-13 (contrast correction): a high-luminance hue\n // (green at L=0.55 chroma 0.18 hue 145 → sRGB Y≈0.30) gives only ~3.0:1\n // contrast against pure white text, well below WCAG AA 4.5:1. Earlier\n // self-review claimed 5.1:1 — that was an OKLCH-L → sRGB-Y conversion\n // mistake (OKLCH L is perceptual; for green hues sRGB Y rises faster\n // than L would suggest). Fix: keep the signal-green hue/L (the visual\n // signature of the theme) and flip the FOREGROUND to near-black in\n // BOTH modes. This is also the canonical \"matrix / phosphor terminal\"\n // aesthetic — dark text on neon green is THE iconic developer-tool\n // look, never white-on-green. New contrast: L=0.55 vs L=0.10 ≈ 5.5:1\n // (light), L=0.72 vs L=0.10 ≈ 7.5:1 (dark). Both AA, dark mode AAA.\n primary: colorOverride('0.55 0.18 145', '0.72 0.20 145'),\n 'primary-foreground': colorSingle('0.10 0.005 240'),\n\n // === Secondary surface: subtle off-white / off-black. Distinguishes\n // from background but stays in the monochrome family.\n secondary: colorOverride('0.965 0.002 240', '0.18 0.005 240'),\n 'secondary-foreground': colorOverride('0.16 0.005 240', '0.97 0 0'),\n\n // === Muted: the \"code block\" / inset background.\n muted: colorOverride('0.955 0.002 240', '0.20 0.005 240'),\n 'muted-foreground': colorOverride('0.45 0.005 240', '0.62 0.005 240'),\n\n // === Borders: crisp but not loud — terminal apps live on grid lines.\n border: colorOverride('0.90 0.003 240', '0.27 0.005 240'),\n ring: colorOverride('0.55 0.18 145', '0.72 0.20 145'),\n input: colorOverride('0.90 0.003 240', '0.27 0.005 240'),\n\n // === Destructive: GitHub-style red.\n destructive: colorOverride('0.58 0.22 27', '0.65 0.24 27'),\n 'destructive-foreground': colorSingle('1 0 0'),\n\n // === Semantic info/success/warning — terminal-tool palette\n // (matches `tput setaf` vibes: cyan/green/yellow). Override these so\n // the theme doesn't depend on the host shipping reasonable defaults.\n // TR-13: same OKLCH→sRGB luminance issue as primary. info-blue at\n // L=0.62 hue 220 has sRGB Y≈0.27 → ~3.4:1 with white. success-green\n // is the same signal-green as primary → same ~3.0:1 with white.\n // Flip both foregrounds to near-black for AA in light mode (≥5:1).\n // Dark mode still uses dark foreground for visual consistency\n // (info/success indicators read as a coherent semantic family).\n info: colorOverride('0.62 0.13 220', '0.72 0.15 220'),\n 'info-foreground': colorSingle('0.10 0.005 240'),\n success: colorOverride('0.55 0.18 145', '0.72 0.20 145'),\n 'success-foreground': colorSingle('0.10 0.005 240'),\n warning: colorOverride('0.72 0.16 70', '0.78 0.18 70'),\n 'warning-foreground': colorSingle('0.10 0.005 240'),\n\n // === Accent gradient: green → cyan → blue (terminal phosphor sweep).\n // Matches the LINK + PRIMARY colors so the ACCENT recipe feels in-family.\n 'accent-gradient-from': colorOverride('0.55 0.18 145', '0.72 0.20 145'),\n 'accent-gradient-via': colorOverride('0.62 0.13 220', '0.72 0.15 220'),\n 'accent-gradient-to': colorOverride('0.55 0.16 250', '0.65 0.18 250'),\n\n // === Font stacks: Geist family. Geist is the visual signal of the\n // theme. Hosts that @font-face Geist Sans + Geist Mono get the\n // canonical look; fallback chain reaches Inter / SF Pro / Cascadia /\n // JetBrains Mono — all \"developer-friendly\" sans+mono.\n 'font-heading': stringSingle(\n \"'Geist', 'Inter', -apple-system, 'SF Pro Text', 'Segoe UI', system-ui, sans-serif\"\n ),\n 'font-body': stringSingle(\n \"'Geist', 'Inter', -apple-system, 'SF Pro Text', 'Segoe UI', system-ui, sans-serif\"\n ),\n 'font-mono': stringSingle(\n \"'Geist Mono', 'JetBrains Mono', 'Fira Code', 'Cascadia Code', 'IBM Plex Mono', 'Menlo', 'Consolas', monospace\"\n ),\n};\n\n// ============================================================\n// ASSEMBLED THEME\n// ============================================================\n\nexport const terminalTheme: ComponentStyleTheme = {\n id: 'terminal',\n name: 'Terminal',\n description:\n 'Geist-inspired theme for developer tools, IDE-adjacent UIs, infra dashboards. Geist Sans body + Geist Mono labels/indicators/code. High density (h-7/h-8 control ladder, tightest spacing in lineup), crisp 1px hairlines, 4–6px radius (3px on checkboxes for TTY feel). Near-monochrome palette + signal-green primary (the universal \"active prompt / diff-add\" color). Instant linear motion (no easing curves, no spring physics). Mono uppercase indicators with small-caps tracking — the \"[INFO]/[WARN]/[ERROR]\" log-prefix idiom. Ships its own Geist font stacks via requiredCustomTokens.',\n\n requiredCustomTokens,\n spacing,\n\n interactive,\n surface,\n formControl,\n indicator,\n selectable,\n overlayBackdrop,\n divider,\n skeleton,\n loadingSpinner,\n loadingOverlay,\n typography,\n radius: '6px',\n backgroundLayer: undefined,\n chartStyle: {\n // Terminal charts: dense, instant, mono labels, thin lines.\n colorShadeLight: 500,\n colorShadeDark: 400,\n gridPadding: { top: 24, right: 16, bottom: 24, left: 48 },\n axis: {\n showAxisLine: true,\n showTicks: true,\n splitLineType: 'dashed',\n hideOverlap: true,\n yAxisNameLocation: 'middle',\n yAxisNameGap: 40,\n },\n tooltip: {\n extraCss:\n 'font-family: \"Geist Mono\", \"JetBrains Mono\", monospace; border: 1px solid color-mix(in oklch, currentColor 25%, transparent); border-radius: 4px; box-shadow: 0 2px 8px rgba(0,0,0,0.08);',\n borderWidth: 1,\n },\n animation: { enabled: true, durationMs: 150, easing: 'linear' },\n series: { lineWidth: 1.5, pointSize: 3, areaOpacity: 0.12, barBorderRadius: 2, pieBorderWidth: 1 },\n typography: {\n titleFontSize: 14,\n titleFontWeight: 600,\n subtitleFontSize: 12,\n legendFontSize: 11,\n tooltipFontSize: 11,\n axisLabelFontSize: 10,\n axisNameFontSize: 11,\n },\n emphasis: { shadowBlur: 4, shadowColor: 'rgba(0, 0, 0, 0.15)', shadowOffsetX: 0 },\n responsive: {\n smallMaxWidth: 400,\n mediumMaxWidth: 799,\n smallGridPadding: { top: 16, right: 8, bottom: 16, left: 24 },\n mediumGridPadding: { left: 40, right: 16, bottom: 32 },\n hideLegendOnSmall: true,\n smallAxisLabelRotate: 45,\n smallFontSize: 9,\n mediumFontSize: 10,\n },\n multiSeriesLegendBottomPadding: 40,\n },\n};\n"]}
|
|
1
|
+
{"version":3,"file":"terminal.theme.js","sourceRoot":"","sources":["../../../../src/themes/terminal.theme.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ComponentStyleTheme, DesignTokenConfiguration } from '@wildo-ai/presets-components-models';\nimport {\n DividerVariant,\n InteractiveVariant,\n SurfaceVariant,\n FormControlVariant,\n IndicatorVariant,\n SelectableVariant,\n TypographyVariant,\n SpacingSemantic,\n DesignTokenModeStrategy,\n DesignTokenValueType,\n SKELETON_NEUTRAL_TINT,\n} from '@wildo-ai/presets-components-models';\nimport type { UIBehaviorRecipe } from '@wildo-ai/presets-components-models';\n\nfunction recipe(r: Partial<UIBehaviorRecipe> & { base: string }): UIBehaviorRecipe {\n return { base: r.base, states: r.states ?? {}, sizes: r.sizes, motion: r.motion ?? {}, gesture: r.gesture, policy: r.policy };\n}\n\n// ============================================================\n// Terminal theme (Geist-inspired)\n//\n// Persona: developer tools, IDE-adjacent UIs, infra dashboards,\n// CLI companions, internal devops.\n// References: Vercel Geist, Linear, GitHub Primer, Raycast.\n//\n// Design DNA:\n// - GEIST SANS for body + headings (precise, slightly condensed,\n// designed for high-density UIs). Geist Mono for indicators,\n// numerics, code, and keyboard hints — the \"terminal\" signal.\n// - High density: smaller default control heights (h-7/h-8 ladder)\n// and tighter spacing than default. The whole theme assumes a\n// power user with a keyboard.\n// - Crisp 1px borders using `border-foreground/15` — terminal apps\n// are line-art, not box-shadow art.\n// - 4–6px radius (`rounded-md` baseline) — IDE-like, not pill-y.\n// - Near-monochrome palette + a single SIGNAL-GREEN accent\n// (`oklch(0.72 0.20 145)`) — the unmistakable \"active prompt /\n// diff-add\" color of every developer tool.\n// - INSTANT motion (duration-fast, linear) — devs hate latency,\n// real or perceived. No spring physics, no easing curves.\n// - Square checkboxes (`rounded-sm`) — feels closer to a TTY.\n// - Indicators are uppercase mono — small caps with kerning, like\n// `[INFO]` / `[WARN]` log prefixes.\n// ============================================================\n\n// -- Shared constants --\n\nconst TM = {\n hairline: 'border border-foreground/15',\n edge: 'border border-foreground/20',\n radius: 'rounded-md',\n radiusTight: 'rounded-sm',\n focus:\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/70 focus-visible:ring-offset-1 focus-visible:ring-offset-background',\n disabled: 'disabled:pointer-events-none disabled:opacity-[var(--opacity-disabled)]',\n invalid:\n 'aria-invalid:ring-destructive/30 dark:aria-invalid:ring-destructive/50 aria-invalid:border-destructive',\n};\n\n// ============================================================\n// MOTION PERSONALITY — Terminal\n// ============================================================\n// Hover/focus : FAST (150ms) + LINEAR → snappy 1:1 input/output,\n// no designerly choreography.\n// Overlay enter: FAST (150ms) + LINEAR → directional slide-1 (tight,\n// matches compact density).\n// Overlay exit : INSTANT (50ms) + LINEAR → close = vanish.\n// Backdrop : FAST/INSTANT + LINEAR → consistent with overlays.\n// Gestures : NONE — devs expect direct manipulation; springs\n// read as \"designed for marketing screenshots.\"\n//\n// Why LINEAR explicitly: the previous implementation set duration but\n// omitted ease- on overlay/backdrop animations. Browsers fell back to\n// the CSS default `ease` curve (cubic-bezier(0.25, 0.1, 0.25, 1)) — a\n// soft S-curve that contradicted the LINEAR personality. Every overlay\n// and backdrop now has explicit `ease-[var(--motion-easing-linear)]`\n// (TR-14 motion-coherence pass).\n// ============================================================\nconst TM_MOTION = {\n interactive:\n 'transition-[background-color,color,border-color,box-shadow] duration-[var(--motion-duration-fast)] ease-[var(--motion-easing-linear)] motion-reduce:transition-none',\n formControl:\n 'transition-[color,border-color,box-shadow] duration-[var(--motion-duration-fast)] ease-[var(--motion-easing-linear)] motion-reduce:transition-none',\n selectable:\n 'transition-[background-color,color,border-color] duration-[var(--motion-duration-fast)] ease-[var(--motion-easing-linear)] motion-reduce:transition-none',\n enterFadeZoom:\n 'data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=open]:duration-[var(--motion-duration-fast)] data-[state=open]:ease-[var(--motion-easing-linear)] motion-reduce:data-[state=open]:animate-none',\n exitFadeZoom:\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=closed]:duration-[var(--motion-duration-instant)] data-[state=closed]:ease-[var(--motion-easing-linear)] motion-reduce:data-[state=closed]:animate-none',\n enterDirectional:\n 'data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=open]:duration-[var(--motion-duration-fast)] data-[state=open]:ease-[var(--motion-easing-linear)] data-[side=bottom]:slide-in-from-top-1 data-[side=left]:slide-in-from-right-1 data-[side=right]:slide-in-from-left-1 data-[side=top]:slide-in-from-bottom-1 motion-reduce:data-[state=open]:animate-none',\n backdropEnter:\n 'data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:duration-[var(--motion-duration-fast)] data-[state=open]:ease-[var(--motion-easing-linear)] motion-reduce:data-[state=open]:animate-none',\n backdropExit:\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:duration-[var(--motion-duration-instant)] data-[state=closed]:ease-[var(--motion-easing-linear)] motion-reduce:data-[state=closed]:animate-none',\n};\n\n// ============================================================\n// INTERACTIVE\n// Compact ladder: h-7/h-8/h-9 by default (vs default theme's h-9/h-9/h-10).\n// This is the visual signal of a \"power-user-density\" theme.\n// ============================================================\n\nconst interactiveSizes: Record<string, string> = {\n xs: 'h-6 px-2 text-xs gap-1 pointer-coarse:min-h-9',\n sm: 'h-7 px-2.5 gap-1 pointer-coarse:min-h-11',\n md: 'h-8 px-3 gap-1.5 pointer-coarse:min-h-11',\n lg: 'h-10 px-5 pointer-coarse:min-h-11',\n icon: 'size-8 pointer-coarse:min-h-11 pointer-coarse:min-w-11',\n 'icon-sm': 'size-6 pointer-coarse:min-h-9 pointer-coarse:min-w-9',\n};\n\nconst interactive: Record<InteractiveVariant, UIBehaviorRecipe> = {\n [InteractiveVariant.PRIMARY]: recipe({\n base: `bg-primary text-primary-foreground ${TM.radius} font-medium text-sm cursor-pointer shadow-[inset_0_1px_0_0_rgba(255,255,255,0.08)]`,\n states: {\n hover: 'hover:bg-primary/90',\n active: 'active:bg-primary/80',\n focus: TM.focus,\n disabled: TM.disabled,\n invalid: TM.invalid,\n },\n sizes: interactiveSizes,\n motion: { transition: TM_MOTION.interactive },\n }),\n\n [InteractiveVariant.SECONDARY]: recipe({\n // Geist-style \"secondary\" = subtle bg with crisp border, the workhorse\n // button on developer-tool pages. Distinguished from outline by having\n // a fill at all (outline is fully transparent).\n base: `bg-muted/40 text-foreground ${TM.hairline} ${TM.radius} font-medium text-sm cursor-pointer`,\n states: {\n hover: 'hover:bg-muted hover:border-foreground/25',\n active: 'active:bg-muted/80',\n focus: TM.focus,\n disabled: TM.disabled,\n invalid: TM.invalid,\n },\n sizes: interactiveSizes,\n motion: { transition: TM_MOTION.interactive },\n }),\n\n [InteractiveVariant.OUTLINE]: recipe({\n base: `bg-transparent text-foreground ${TM.edge} ${TM.radius} font-medium text-sm cursor-pointer`,\n states: {\n hover: 'hover:bg-muted hover:border-foreground/30',\n active: 'active:bg-muted/80',\n focus: TM.focus,\n selected:\n 'data-[state=on]:bg-foreground data-[state=on]:text-background data-[state=on]:border-foreground',\n disabled: TM.disabled,\n invalid: TM.invalid,\n },\n sizes: interactiveSizes,\n motion: { transition: TM_MOTION.interactive },\n }),\n\n [InteractiveVariant.DESTRUCTIVE]: recipe({\n base: `bg-destructive text-destructive-foreground ${TM.radius} font-medium text-sm cursor-pointer`,\n states: {\n hover: 'hover:bg-destructive/90',\n active: 'active:bg-destructive/80',\n focus: TM.focus,\n highlighted: 'focus:bg-destructive/15 focus:text-destructive',\n disabled: TM.disabled,\n invalid: TM.invalid,\n },\n sizes: interactiveSizes,\n motion: { transition: TM_MOTION.interactive },\n }),\n\n [InteractiveVariant.GHOST]: recipe({\n base: `text-foreground ${TM.radius} font-medium text-sm cursor-pointer`,\n states: {\n hover: 'hover:bg-muted',\n active: 'active:bg-muted/80',\n focus: TM.focus,\n selected: 'data-[state=on]:bg-muted data-[state=on]:text-foreground',\n highlighted: 'focus:bg-muted',\n open: 'data-[state=open]:bg-muted',\n disabled: TM.disabled,\n invalid: TM.invalid,\n },\n sizes: interactiveSizes,\n motion: { transition: TM_MOTION.interactive },\n }),\n\n [InteractiveVariant.LINK]: recipe({\n // Mono-feel underline: `decoration-1` keeps it crisp, no thickening\n // on hover (terminal links don't morph).\n base: 'text-primary underline underline-offset-[3px] decoration-1 decoration-primary/60 font-medium text-sm cursor-pointer',\n states: {\n hover: 'hover:decoration-primary',\n active: 'active:text-primary/80',\n focus: TM.focus,\n disabled: TM.disabled,\n invalid: TM.invalid,\n },\n sizes: {\n xs: 'h-6 px-1.5 text-xs gap-1 pointer-coarse:min-h-9',\n sm: 'h-7 px-1.5 gap-1 pointer-coarse:min-h-11',\n md: 'h-8 px-1.5 gap-1.5 pointer-coarse:min-h-11',\n lg: 'h-10 px-1.5 pointer-coarse:min-h-11',\n icon: 'size-8 pointer-coarse:min-h-11 pointer-coarse:min-w-11',\n 'icon-sm': 'size-6 pointer-coarse:min-h-9 pointer-coarse:min-w-9',\n },\n motion: { transition: TM_MOTION.interactive },\n }),\n\n [InteractiveVariant.ACCENT]: recipe({\n // Terminal accent: a \"scanline\" sweep using mono font. Gradient stops\n // resolve from theme tokens — the accent gradient defaults to\n // green→cyan→blue (terminal phosphor → cyan IDE highlight → link blue).\n base: 'relative bg-primary text-primary-foreground font-mono font-semibold tracking-tight rounded-md bg-[length:200%_100%] bg-gradient-to-r from-accent-gradient-from via-accent-gradient-via to-accent-gradient-to animate-[gradient-rotate_3s_linear_infinite] motion-reduce:animate-none text-sm cursor-pointer',\n states: {\n hover: 'hover:brightness-110',\n active: 'active:brightness-95',\n focus: TM.focus,\n disabled: TM.disabled,\n invalid: TM.invalid,\n },\n sizes: interactiveSizes,\n motion: {\n transition:\n 'transition-[background-position,filter] duration-[var(--motion-duration-fast)] ease-[var(--motion-easing-linear)] motion-reduce:transition-none',\n },\n }),\n};\n\n// ============================================================\n// SURFACE\n// SURFACE PERSONALITY — crisp terminal panes: 1px line art, mono posture, low\n// elevation. New variants behave like attached panes and compact status blocks.\n// Cards/dialogs are line-art panels with crisp 1px borders and\n// minimal shadows. Popovers get a subtle drop because they need\n// to lift off the page — but never the heavy shadow of glass/cozy.\n// ============================================================\n\nconst surface: ComponentStyleTheme['surface'] = {\n [SurfaceVariant.BASE]: recipe({\n base: `bg-background text-foreground ${TM.hairline} ${TM.radius}`,\n }),\n\n [SurfaceVariant.CARD]: recipe({\n // Content card: distinct `surface-raised` fill + terminal edge + radius.\n // Always painted.\n base: `bg-surface-raised text-surface-raised-foreground ${TM.edge} ${TM.radius}`,\n }),\n\n [SurfaceVariant.RAISED]: recipe({\n // `fill-*` mirrors `bg-*` so the Tooltip's Radix arrow (an SVG painted via\n // `fill`, inherited across Radix's arrow-wrapper span) matches the body.\n base: `bg-background fill-background text-foreground ${TM.edge} ${TM.radius} shadow-[0_2px_8px_rgba(0,0,0,0.06)] dark:shadow-[0_2px_8px_rgba(0,0,0,0.5)]`,\n motion: {\n enter: TM_MOTION.enterDirectional,\n exit: TM_MOTION.exitFadeZoom,\n },\n }),\n\n [SurfaceVariant.OVERLAY]: recipe({\n base: `bg-background text-foreground ${TM.edge} ${TM.radius} shadow-[0_8px_32px_rgba(0,0,0,0.10)] dark:shadow-[0_8px_32px_rgba(0,0,0,0.6)]`,\n motion: {\n enter: TM_MOTION.enterFadeZoom,\n exit: TM_MOTION.exitFadeZoom,\n },\n }),\n\n [SurfaceVariant.INSET]: recipe({\n base: `bg-muted/50 text-foreground ${TM.radiusTight} font-mono`,\n }),\n\n [SurfaceVariant.SUNKEN]: recipe({\n // Sidebar: terminal-app left rail — slightly darker bg, crisp right border.\n base: 'bg-muted/30 text-foreground border-r border-foreground/15',\n }),\n\n [SurfaceVariant.TAB_PANEL]: recipe({\n // Terminal tab panel: a crisp continuation, top rule omitted.\n base: 'bg-background text-foreground border-x border-b border-foreground/15 rounded-b-md',\n }),\n\n [SurfaceVariant.SHELL]: recipe({\n // Page shell: flat terminal canvas; nested panels draw the line art.\n base: 'bg-background text-foreground font-mono',\n }),\n\n [SurfaceVariant.TRANSIENT]: recipe({\n // Toast: compact terminal status panel.\n base: `bg-background text-foreground ${TM.edge} ${TM.radius} font-mono shadow-[0_4px_16px_rgba(0,0,0,0.10)] dark:shadow-[0_4px_16px_rgba(0,0,0,0.6)]`,\n motion: {\n enter: TM_MOTION.enterDirectional,\n exit: TM_MOTION.exitFadeZoom,\n },\n }),\n};\n\n// ============================================================\n// FORM_CONTROL\n// Tight, crisp, square-ish. Checkbox is `rounded-sm` (closer to TTY).\n// ============================================================\n\nconst formControl: Record<FormControlVariant, UIBehaviorRecipe> = {\n [FormControlVariant.DEFAULT]: recipe({\n base: `bg-background ${TM.edge} ${TM.radius} text-base md:text-sm text-foreground placeholder:text-muted-foreground/60 selection:bg-primary/30 selection:text-foreground`,\n states: {\n focus: TM.focus,\n disabled: 'disabled:cursor-not-allowed disabled:opacity-[var(--opacity-disabled)]',\n invalid: TM.invalid,\n },\n sizes: {\n md: 'h-8 px-2.5 py-1 pointer-coarse:min-h-11',\n sm: 'h-7 px-2 text-sm pointer-coarse:min-h-11',\n lg: 'h-10 px-3 py-2 pointer-coarse:min-h-11',\n },\n motion: { transition: TM_MOTION.formControl },\n }),\n\n [FormControlVariant.FILLED]: recipe({\n base: `bg-muted/60 ${TM.radius} border-0 text-base md:text-sm text-foreground placeholder:text-muted-foreground/60`,\n states: {\n focus: TM.focus,\n disabled: 'disabled:cursor-not-allowed disabled:opacity-[var(--opacity-disabled)]',\n invalid: TM.invalid,\n },\n sizes: {\n md: 'h-8 px-2.5 py-1 pointer-coarse:min-h-11',\n sm: 'h-7 px-2 text-sm pointer-coarse:min-h-11',\n lg: 'h-10 px-3 py-2 pointer-coarse:min-h-11',\n },\n motion: { transition: TM_MOTION.formControl },\n }),\n\n [FormControlVariant.UNDERLINED]: recipe({\n base: 'bg-transparent border-0 border-b border-foreground/25 rounded-none text-base md:text-sm text-foreground placeholder:text-muted-foreground/60',\n states: {\n focus: 'focus-visible:outline-none focus-visible:border-primary focus-visible:border-b-2',\n disabled: 'disabled:opacity-[var(--opacity-disabled)]',\n invalid: 'aria-invalid:border-destructive',\n },\n sizes: {\n md: 'h-8 px-0 py-1 pointer-coarse:min-h-11',\n sm: 'h-7 px-0 text-sm pointer-coarse:min-h-11',\n lg: 'h-10 px-0 py-2 pointer-coarse:min-h-11',\n },\n motion: {\n transition:\n 'transition-[border-color] duration-[var(--motion-duration-fast)] ease-[var(--motion-easing-linear)] motion-reduce:transition-none',\n },\n }),\n\n [FormControlVariant.CHECKBOX]: recipe({\n // `rounded-sm` (3px) — feels like a TTY checkbox `[x]`, not a pill.\n base: `${TM.edge} ${TM.radiusTight}`,\n states: {\n focus: TM.focus,\n selected:\n 'data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:border-primary',\n disabled: 'disabled:cursor-not-allowed disabled:opacity-[var(--opacity-disabled)]',\n invalid: TM.invalid,\n },\n motion: {\n transition:\n 'transition-[color,box-shadow] duration-[var(--motion-duration-fast)] ease-[var(--motion-easing-linear)] motion-reduce:transition-none',\n },\n }),\n\n [FormControlVariant.SWITCH]: recipe({\n base: 'data-[state=unchecked]:bg-muted/60 border border-foreground/20',\n states: {\n focus: TM.focus,\n selected: 'data-[state=checked]:bg-primary',\n disabled: 'disabled:cursor-not-allowed disabled:opacity-[var(--opacity-disabled)]',\n invalid: TM.invalid,\n },\n motion: {\n transition:\n 'transition-all duration-[var(--motion-duration-fast)] ease-[var(--motion-easing-linear)] motion-reduce:transition-none',\n },\n }),\n};\n\n// ============================================================\n// INDICATOR\n// Mono uppercase + bracket-feel — `[INFO]` / `[WARN]` / `[ERROR]`,\n// without literally adding the brackets (those would clash with badge\n// rendering inside other components). Tight padding, crisp border.\n// ============================================================\n\nconst tmIndicatorShared = {\n states: { hover: '[a&]:hover:opacity-[var(--opacity-hover)]', focus: TM.focus, invalid: TM.invalid },\n motion: { transition: TM_MOTION.interactive },\n};\n\nconst indicator: Record<IndicatorVariant, UIBehaviorRecipe> = {\n [IndicatorVariant.NEUTRAL]: recipe({\n base: `bg-muted/50 text-muted-foreground ${TM.radiusTight} ${TM.hairline} px-1.5 py-0.5 text-[0.625rem] font-mono font-semibold uppercase tracking-wider`,\n ...tmIndicatorShared,\n }),\n [IndicatorVariant.INFO]: recipe({\n base: `bg-info/15 text-info ${TM.radiusTight} border border-info/30 px-1.5 py-0.5 text-[0.625rem] font-mono font-semibold uppercase tracking-wider`,\n ...tmIndicatorShared,\n }),\n [IndicatorVariant.SUCCESS]: recipe({\n base: `bg-success/15 text-success ${TM.radiusTight} border border-success/30 px-1.5 py-0.5 text-[0.625rem] font-mono font-semibold uppercase tracking-wider`,\n ...tmIndicatorShared,\n }),\n [IndicatorVariant.WARNING]: recipe({\n base: `bg-warning/15 text-warning ${TM.radiusTight} border border-warning/30 px-1.5 py-0.5 text-[0.625rem] font-mono font-semibold uppercase tracking-wider`,\n ...tmIndicatorShared,\n }),\n [IndicatorVariant.ERROR]: recipe({\n base: `bg-destructive/15 text-destructive ${TM.radiusTight} border border-destructive/30 px-1.5 py-0.5 text-[0.625rem] font-mono font-semibold uppercase tracking-wider`,\n ...tmIndicatorShared,\n }),\n};\n\n// ============================================================\n// SELECTABLE\n// Compact, crisp. Underline tab uses 2px solid (vs editorial's\n// hairline-becomes-2px) — no animation curve, just on/off.\n// ============================================================\n\nconst selectable: Record<SelectableVariant, UIBehaviorRecipe> = {\n [SelectableVariant.FILLED]: recipe({\n base: `${TM.radius} text-sm outline-hidden`,\n states: {\n hover: 'hover:bg-muted',\n focus: 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/70',\n selected:\n 'data-[active=true]:bg-muted data-[active=true]:text-foreground data-[active=true]:font-medium data-[state=active]:bg-muted data-[state=active]:text-foreground',\n disabled: 'disabled:pointer-events-none disabled:opacity-[var(--opacity-disabled)]',\n },\n sizes: { sm: 'h-6 text-xs', md: 'h-7 text-sm', lg: 'h-10 text-sm' },\n motion: { transition: TM_MOTION.selectable },\n }),\n [SelectableVariant.UNDERLINE]: recipe({\n base: 'rounded-none border-b-2 border-transparent text-sm text-muted-foreground outline-hidden',\n states: {\n hover: 'hover:text-foreground',\n focus: 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/70',\n selected:\n 'data-[state=active]:border-primary data-[state=active]:text-foreground data-[state=active]:font-medium',\n disabled: 'disabled:pointer-events-none disabled:opacity-[var(--opacity-disabled)]',\n },\n sizes: { sm: 'h-7 text-xs pb-1', md: 'h-8 text-sm pb-1.5', lg: 'h-10 text-sm pb-2' },\n motion: { transition: TM_MOTION.selectable },\n }),\n [SelectableVariant.PILL]: recipe({\n base: `${TM.radius} text-sm outline-hidden ${TM.hairline} border-transparent`,\n states: {\n hover: 'hover:bg-muted hover:border-foreground/15',\n focus: 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/70',\n selected:\n 'data-[state=active]:bg-foreground data-[state=active]:text-background data-[state=active]:border-foreground',\n disabled: 'disabled:pointer-events-none disabled:opacity-[var(--opacity-disabled)]',\n },\n sizes: { sm: 'h-6 px-2 text-xs', md: 'h-7 px-3 text-sm', lg: 'h-9 px-4 text-sm' },\n motion: { transition: TM_MOTION.selectable },\n }),\n [SelectableVariant.INDICATOR]: recipe({\n base: `${TM.radius} text-sm outline-hidden border-s-2 border-transparent`,\n states: {\n hover: 'hover:bg-muted',\n focus: 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/70',\n selected:\n 'data-[active=true]:border-primary data-[active=true]:bg-muted data-[active=true]:text-foreground data-[active=true]:font-medium',\n disabled: 'disabled:pointer-events-none disabled:opacity-[var(--opacity-disabled)]',\n },\n sizes: { sm: 'h-6 text-xs', md: 'h-7 text-sm', lg: 'h-10 text-sm' },\n motion: { transition: TM_MOTION.selectable },\n }),\n};\n\n// ============================================================\n// OVERLAY, DIVIDER, SKELETON\n// ============================================================\n\nconst overlayBackdrop: UIBehaviorRecipe = recipe({\n // Terminal scrim: dark, no blur (devs hate \"blurry IDE\" feel).\n base: 'bg-foreground/50',\n motion: {\n enter: TM_MOTION.backdropEnter,\n exit: TM_MOTION.backdropExit,\n },\n});\n\nconst divider: Record<DividerVariant, UIBehaviorRecipe> = {\n [DividerVariant.DEFAULT]: recipe({ base: 'bg-foreground/15 shrink-0' }),\n // Nested-disclosure guide: the theme's own divider material, as a left edge.\n [DividerVariant.NESTING_GUIDE]: recipe({ base: 'border-s border-foreground/15' }),\n};\n\nconst skeleton: UIBehaviorRecipe = recipe({\n base: `${SKELETON_NEUTRAL_TINT} animate-pulse ${TM.radiusTight} motion-reduce:animate-none`,\n});\n\nconst loadingSpinner: UIBehaviorRecipe = recipe({\n base: 'text-primary animate-spin motion-reduce:animate-none',\n});\n\nconst loadingOverlay: UIBehaviorRecipe = recipe({\n base: 'bg-background/85',\n motion: {\n enter: 'animate-in fade-in-0 duration-[var(--motion-duration-fast)] ease-[var(--motion-easing-linear)] motion-reduce:animate-none',\n exit: 'animate-out fade-out-0 duration-[var(--motion-duration-instant)] ease-[var(--motion-easing-linear)] motion-reduce:animate-none',\n },\n});\n\n// ============================================================\n// TYPOGRAPHY\n// Geist Sans for everything except CODE (Geist Mono). Heading scale\n// stays close to default (devs don't want hero-sized h1 on a settings\n// page) but BODY drops to text-[0.8125rem] for the dense feel.\n// LABEL is mono uppercase — small caps tracking, log-prefix vibe.\n// ============================================================\n\nconst typography: Record<TypographyVariant, UIBehaviorRecipe> = {\n [TypographyVariant.HEADING]: recipe({\n base: 'font-heading font-semibold leading-tight tracking-tight text-foreground',\n sizes: {\n h1: 'text-3xl',\n h2: 'text-2xl',\n h3: 'text-lg',\n h4: 'text-base',\n h5: 'text-sm',\n md: 'text-base',\n },\n }),\n [TypographyVariant.BODY]: recipe({\n // 13px body — IDE-density, not article-density. Default uses 14px.\n // `font-sans` (NOT `font-body`) — only `font-sans/serif/mono/heading/display`\n // are exposed as Tailwind utilities via @theme; `font-sans` resolves to\n // `var(--font-body)` which our requiredCustomTokens overrides to Geist.\n // Using `font-body` here would silently no-op.\n base: 'font-sans text-foreground text-[0.8125rem] leading-snug',\n sizes: { sm: 'text-xs', md: 'text-[0.8125rem]', lg: 'text-sm' },\n }),\n [TypographyVariant.LABEL]: recipe({\n // Mono uppercase: the \"log prefix\" / \"CLI flag\" idiom.\n base: 'font-mono font-medium text-2xs leading-none uppercase tracking-[0.08em] text-muted-foreground',\n sizes: { sm: 'text-[0.5625rem]', md: 'text-2xs', lg: 'text-xs' },\n }),\n [TypographyVariant.DESCRIPTION]: recipe({\n base: 'font-sans text-muted-foreground text-xs leading-snug',\n sizes: { sm: 'text-[0.6875rem]', md: 'text-xs' },\n }),\n [TypographyVariant.CODE]: recipe({\n // Inline code: tighter padding, mono, sharp corners.\n base: 'font-mono text-[0.85em] bg-muted/60 rounded-sm px-1 py-0.5 border border-foreground/10',\n sizes: { sm: 'text-[0.75em]', md: 'text-[0.85em]', lg: 'text-[0.9em]' },\n }),\n};\n\n// ============================================================\n// SPACING\n// Tightest in lineup. Devs want to see more on screen.\n// ============================================================\n\nconst spacing: ComponentStyleTheme['spacing'] = {\n [SpacingSemantic.ELEMENT]: '0.375rem',\n [SpacingSemantic.ITEM]: '0.1875rem',\n [SpacingSemantic.GROUP]: '0.625rem',\n [SpacingSemantic.FIELD]: '0.875rem',\n [SpacingSemantic.SECTION]: '1.25rem',\n [SpacingSemantic.REGION]: '1.75rem',\n [SpacingSemantic.CARD]: '0.875rem',\n [SpacingSemantic.CONTAINER]: '1.25rem',\n};\n\n// ============================================================\n// REQUIRED CUSTOM TOKENS — Geist palette + Geist font stacks\n//\n// Same `requiredCustomTokens` mechanism as neo-brutalist + editorial.\n// The Geist family is the visual signature of the theme — anything\n// else and you get \"default theme but tighter\".\n// ============================================================\n\nfunction colorOverride(lightOklch: string, darkOklch: string): DesignTokenConfiguration {\n return {\n type: DesignTokenValueType.COLOR,\n modeStrategy: DesignTokenModeStrategy.LIGHT_DARK,\n lightValue: lightOklch,\n darkValue: darkOklch,\n };\n}\n\nfunction colorSingle(oklch: string): DesignTokenConfiguration {\n return { type: DesignTokenValueType.COLOR, modeStrategy: DesignTokenModeStrategy.SINGLE, value: oklch };\n}\n\nfunction stringSingle(value: string): DesignTokenConfiguration {\n return { type: DesignTokenValueType.STRING, modeStrategy: DesignTokenModeStrategy.SINGLE, value };\n}\n\nconst requiredCustomTokens: Record<string, DesignTokenConfiguration> = {\n // === Page palette: pure-ish whites/blacks. Slight cool tint (hue 240)\n // matches Geist's documentation site exactly (`oklch(...)` derivations\n // from Vercel's published design tokens).\n background: colorOverride('1 0 0', '0.13 0.005 240'),\n foreground: colorOverride('0.16 0.005 240', '0.97 0 0'),\n\n // === Signal green primary: the \"active prompt / diff-add / git-add\"\n // color of every developer tool.\n //\n // ⚠ Wave G follow-up TR-13 (contrast correction): a high-luminance hue\n // (green at L=0.55 chroma 0.18 hue 145 → sRGB Y≈0.30) gives only ~3.0:1\n // contrast against pure white text, well below WCAG AA 4.5:1. Earlier\n // self-review claimed 5.1:1 — that was an OKLCH-L → sRGB-Y conversion\n // mistake (OKLCH L is perceptual; for green hues sRGB Y rises faster\n // than L would suggest). Fix: keep the signal-green hue/L (the visual\n // signature of the theme) and flip the FOREGROUND to near-black in\n // BOTH modes. This is also the canonical \"matrix / phosphor terminal\"\n // aesthetic — dark text on neon green is THE iconic developer-tool\n // look, never white-on-green. New contrast: L=0.55 vs L=0.10 ≈ 5.5:1\n // (light), L=0.72 vs L=0.10 ≈ 7.5:1 (dark). Both AA, dark mode AAA.\n primary: colorOverride('0.55 0.18 145', '0.72 0.20 145'),\n 'primary-foreground': colorSingle('0.10 0.005 240'),\n\n // === Secondary surface: subtle off-white / off-black. Distinguishes\n // from background but stays in the monochrome family.\n secondary: colorOverride('0.965 0.002 240', '0.18 0.005 240'),\n 'secondary-foreground': colorOverride('0.16 0.005 240', '0.97 0 0'),\n\n // === Muted: the \"code block\" / inset background.\n muted: colorOverride('0.955 0.002 240', '0.20 0.005 240'),\n 'muted-foreground': colorOverride('0.45 0.005 240', '0.62 0.005 240'),\n\n // === Borders: crisp but not loud — terminal apps live on grid lines.\n border: colorOverride('0.90 0.003 240', '0.27 0.005 240'),\n ring: colorOverride('0.55 0.18 145', '0.72 0.20 145'),\n input: colorOverride('0.90 0.003 240', '0.27 0.005 240'),\n\n // === Destructive: GitHub-style red.\n destructive: colorOverride('0.58 0.22 27', '0.65 0.24 27'),\n 'destructive-foreground': colorSingle('1 0 0'),\n\n // === Semantic info/success/warning — terminal-tool palette\n // (matches `tput setaf` vibes: cyan/green/yellow). Override these so\n // the theme doesn't depend on the host shipping reasonable defaults.\n // TR-13: same OKLCH→sRGB luminance issue as primary. info-blue at\n // L=0.62 hue 220 has sRGB Y≈0.27 → ~3.4:1 with white. success-green\n // is the same signal-green as primary → same ~3.0:1 with white.\n // Flip both foregrounds to near-black for AA in light mode (≥5:1).\n // Dark mode still uses dark foreground for visual consistency\n // (info/success indicators read as a coherent semantic family).\n info: colorOverride('0.62 0.13 220', '0.72 0.15 220'),\n 'info-foreground': colorSingle('0.10 0.005 240'),\n success: colorOverride('0.55 0.18 145', '0.72 0.20 145'),\n 'success-foreground': colorSingle('0.10 0.005 240'),\n warning: colorOverride('0.72 0.16 70', '0.78 0.18 70'),\n 'warning-foreground': colorSingle('0.10 0.005 240'),\n\n // === Accent gradient: green → cyan → blue (terminal phosphor sweep).\n // Matches the LINK + PRIMARY colors so the ACCENT recipe feels in-family.\n 'accent-gradient-from': colorOverride('0.55 0.18 145', '0.72 0.20 145'),\n 'accent-gradient-via': colorOverride('0.62 0.13 220', '0.72 0.15 220'),\n 'accent-gradient-to': colorOverride('0.55 0.16 250', '0.65 0.18 250'),\n\n // === Font stacks: Geist family. Geist is the visual signal of the\n // theme. Hosts that @font-face Geist Sans + Geist Mono get the\n // canonical look; fallback chain reaches Inter / SF Pro / Cascadia /\n // JetBrains Mono — all \"developer-friendly\" sans+mono.\n 'font-heading': stringSingle(\n \"'Geist', 'Inter', -apple-system, 'SF Pro Text', 'Segoe UI', system-ui, sans-serif\"\n ),\n 'font-body': stringSingle(\n \"'Geist', 'Inter', -apple-system, 'SF Pro Text', 'Segoe UI', system-ui, sans-serif\"\n ),\n 'font-mono': stringSingle(\n \"'Geist Mono', 'JetBrains Mono', 'Fira Code', 'Cascadia Code', 'IBM Plex Mono', 'Menlo', 'Consolas', monospace\"\n ),\n};\n\n// ============================================================\n// ASSEMBLED THEME\n// ============================================================\n\nexport const terminalTheme: ComponentStyleTheme = {\n id: 'terminal',\n name: 'Terminal',\n description:\n 'Geist-inspired theme for developer tools, IDE-adjacent UIs, infra dashboards. Geist Sans body + Geist Mono labels/indicators/code. High density (h-7/h-8 control ladder, tightest spacing in lineup), crisp 1px hairlines, 4–6px radius (3px on checkboxes for TTY feel). Near-monochrome palette + signal-green primary (the universal \"active prompt / diff-add\" color). Instant linear motion (no easing curves, no spring physics). Mono uppercase indicators with small-caps tracking — the \"[INFO]/[WARN]/[ERROR]\" log-prefix idiom. Ships its own Geist font stacks via requiredCustomTokens.',\n\n requiredCustomTokens,\n spacing,\n\n interactive,\n surface,\n formControl,\n indicator,\n selectable,\n overlayBackdrop,\n divider,\n skeleton,\n loadingSpinner,\n loadingOverlay,\n typography,\n radius: '6px',\n backgroundLayer: undefined,\n chartStyle: {\n // Terminal charts: dense, instant, mono labels, thin lines.\n colorShadeLight: 500,\n colorShadeDark: 400,\n gridPadding: { top: 24, right: 16, bottom: 24, left: 48 },\n axis: {\n showAxisLine: true,\n showTicks: true,\n splitLineType: 'dashed',\n hideOverlap: true,\n yAxisNameLocation: 'middle',\n yAxisNameGap: 40,\n },\n tooltip: {\n extraCss:\n 'font-family: \"Geist Mono\", \"JetBrains Mono\", monospace; border: 1px solid color-mix(in oklch, currentColor 25%, transparent); border-radius: 4px; box-shadow: 0 2px 8px rgba(0,0,0,0.08);',\n borderWidth: 1,\n },\n animation: { enabled: true, durationMs: 150, easing: 'linear' },\n series: { lineWidth: 1.5, pointSize: 3, areaOpacity: 0.12, barBorderRadius: 2, pieBorderWidth: 1 },\n typography: {\n titleFontSize: 14,\n titleFontWeight: 600,\n subtitleFontSize: 12,\n legendFontSize: 11,\n tooltipFontSize: 11,\n axisLabelFontSize: 10,\n axisNameFontSize: 11,\n },\n emphasis: { shadowBlur: 4, shadowColor: 'rgba(0, 0, 0, 0.15)', shadowOffsetX: 0 },\n responsive: {\n smallMaxWidth: 400,\n mediumMaxWidth: 799,\n smallGridPadding: { top: 16, right: 8, bottom: 16, left: 24 },\n mediumGridPadding: { left: 40, right: 16, bottom: 32 },\n hideLegendOnSmall: true,\n smallAxisLabelRotate: 45,\n smallFontSize: 9,\n mediumFontSize: 10,\n },\n multiSeriesLegendBottomPadding: 40,\n },\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trading.theme.d.ts","sourceRoot":"","sources":["../../../../src/themes/trading.theme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAA4B,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"trading.theme.d.ts","sourceRoot":"","sources":["../../../../src/themes/trading.theme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAA4B,MAAM,qCAAqC,CAAC;AAyuBzG,eAAO,MAAM,YAAY,EAAE,mBAiE1B,CAAC"}
|