@acorex/core 22.1.3 → 22.1.5

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.
@@ -133,12 +133,15 @@ const THEME_TAIL_VERBATIM_FOOTER = `
133
133
  }
134
134
 
135
135
  @utility ax-outline {
136
- @apply border border-(--ax-comp-bg,var(--color-border-lightest)) bg-transparent text-(--ax-comp-bg,var(--color-on-lightest));
136
+ @apply border bg-transparent;
137
+ border-color: var(--ax-comp-edge, var(--ax-comp-bg, var(--color-border-lightest)));
138
+ color: var(--ax-comp-ink, var(--ax-comp-bg, var(--color-on-lightest)));
137
139
  &.ax-default {
138
140
  @apply border-border-lightest dark:border-border-darkest border;
139
141
  }
140
142
  &.ax-state-selected {
141
- @apply border-(--ax-comp-bg-darker,var(--color-border-light)) text-(--ax-comp-bg-darker,var(--color-on-light));
143
+ border-color: var(--ax-comp-edge-darker, var(--ax-comp-bg-darker, var(--color-border-light)));
144
+ color: var(--ax-comp-ink-darker, var(--ax-comp-bg-darker, var(--color-on-light)));
142
145
  }
143
146
  &.ax-editor-container {
144
147
  @apply focus-within:ring-primary/30 focus-within:border-primary focus-within:ring-3;
@@ -147,7 +150,7 @@ const THEME_TAIL_VERBATIM_FOOTER = `
147
150
 
148
151
  @utility ax-outline-interactive {
149
152
  @supports (color: color-mix(in lab, red, red)) {
150
- --ax-comp-ripple-color: color-mix(in oklab, var(--ax-comp-bg, var(--color-on-lightest)) 25%, transparent);
153
+ --ax-comp-ripple-color: color-mix(in oklab, var(--ax-comp-ink, var(--ax-comp-bg, var(--color-on-lightest))) 25%, transparent);
151
154
  }
152
155
  @apply ax-outline transition-colors;
153
156
  &:not(.ax-state-disabled, .ax-state-loading, .ax-state-selected) {
@@ -155,11 +158,13 @@ const THEME_TAIL_VERBATIM_FOOTER = `
155
158
  &:focus,
156
159
  &:focus-within,
157
160
  &:focus-visible {
158
- @apply border-(--ax-comp-bg-dark,var(--color-border-lighter)) text-(--ax-comp-bg-dark,var(--color-on-lighter));
161
+ border-color: var(--ax-comp-edge-dark, var(--ax-comp-bg-dark, var(--color-border-lighter)));
162
+ color: var(--ax-comp-ink-dark, var(--ax-comp-bg-dark, var(--color-on-lighter)));
159
163
  }
160
164
  }
161
165
  &:not(.ax-state-disabled, .ax-state-loading, .ax-state-selected):active {
162
- @apply border-(--ax-comp-bg-darker,var(--color-border-light)) text-(--ax-comp-bg-darker,var(--color-on-light));
166
+ border-color: var(--ax-comp-edge-darker, var(--ax-comp-bg-darker, var(--color-border-light)));
167
+ color: var(--ax-comp-ink-darker, var(--ax-comp-bg-darker, var(--color-on-light)));
163
168
  }
164
169
  }
165
170
 
@@ -172,7 +177,7 @@ const THEME_TAIL_VERBATIM_FOOTER = `
172
177
 
173
178
  @utility ax-twotone-interactive {
174
179
  @supports (color: color-mix(in lab, red, red)) {
175
- --ax-comp-ripple-color: color-mix(in oklab, var(--ax-comp-bg, var(--color-on-lightest)) 25%, transparent);
180
+ --ax-comp-ripple-color: color-mix(in oklab, var(--ax-comp-ink, var(--ax-comp-bg, var(--color-on-lightest))) 25%, transparent);
176
181
  }
177
182
  @apply ax-twotone transition-colors;
178
183
  &:not(.ax-state-disabled, .ax-state-loading, .ax-state-selected) {
@@ -189,7 +194,8 @@ const THEME_TAIL_VERBATIM_FOOTER = `
189
194
  }
190
195
 
191
196
  @utility ax-blank {
192
- @apply bg-transparent text-(--ax-comp-bg,var(--color-on-surface));
197
+ @apply bg-transparent;
198
+ color: var(--ax-comp-ink, var(--ax-comp-bg, var(--color-on-surface)));
193
199
  &.ax-state-selected {
194
200
  @apply bg-(--ax-comp-bg-lighter,var(--color-surface)) text-(--ax-comp-text-lighter,var(--color-on-surface));
195
201
  }
@@ -197,7 +203,7 @@ const THEME_TAIL_VERBATIM_FOOTER = `
197
203
 
198
204
  @utility ax-blank-interactive {
199
205
  @supports (color: color-mix(in lab, red, red)) {
200
- --ax-comp-ripple-color: color-mix(in oklab, var(--ax-comp-bg, var(--color-on-lightest)) 25%, transparent);
206
+ --ax-comp-ripple-color: color-mix(in oklab, var(--ax-comp-ink, var(--ax-comp-bg, var(--color-on-lightest))) 25%, transparent);
201
207
  }
202
208
  @apply ax-blank transition-colors;
203
209
  &:not(.ax-state-disabled, .ax-state-loading, .ax-state-selected) {
@@ -214,15 +220,16 @@ const THEME_TAIL_VERBATIM_FOOTER = `
214
220
  }
215
221
 
216
222
  @utility links {
217
- @apply bg-transparent text-(--ax-comp-bg,var(--color-on-surface));
223
+ @apply bg-transparent;
224
+ color: var(--ax-comp-ink, var(--ax-comp-bg, var(--color-on-surface)));
218
225
  &.ax-state-selected {
219
- @apply text-(--ax-comp-bg-darker,var(--color-on-surface));
226
+ color: var(--ax-comp-ink-darker, var(--ax-comp-bg-darker, var(--color-on-surface)));
220
227
  }
221
228
  }
222
229
 
223
230
  @utility links-interactive {
224
231
  @supports (color: color-mix(in lab, red, red)) {
225
- --ax-comp-ripple-color: color-mix(in oklab, var(--ax-comp-bg, var(--color-on-lightest)) 25%, transparent);
232
+ --ax-comp-ripple-color: color-mix(in oklab, var(--ax-comp-ink, var(--ax-comp-bg, var(--color-on-lightest))) 25%, transparent);
226
233
  }
227
234
  @apply links transition-colors;
228
235
  &:not(.ax-state-disabled, .ax-state-loading, .ax-state-selected) {
@@ -230,11 +237,11 @@ const THEME_TAIL_VERBATIM_FOOTER = `
230
237
  &:focus,
231
238
  &:focus-within,
232
239
  &:focus-visible {
233
- @apply text-(--ax-comp-bg-dark,var(--color-on-surface));
240
+ color: var(--ax-comp-ink-dark, var(--ax-comp-bg-dark, var(--color-on-surface)));
234
241
  }
235
242
  }
236
243
  &:not(.ax-state-disabled, .ax-state-loading, .ax-state-selected):active {
237
- @apply text-(--ax-comp-bg-darker,var(--color-on-surface));
244
+ color: var(--ax-comp-ink-darker, var(--ax-comp-bg-darker, var(--color-on-surface)));
238
245
  }
239
246
  }
240
247
  @utility h1 {
@@ -527,32 +534,6 @@ function cssTripletVars(role, level) {
527
534
  bd: `var(--color-border-${role}-${level})`,
528
535
  };
529
536
  }
530
- /** Inverted neutral scale for `ax-default` look (matches default.css). */
531
- const AX_DEFAULT_UTILITY = `@utility ax-default {
532
- --ax-comp-bg-lightest: var(--color-darkest);
533
- --ax-comp-text-lightest: var(--color-on-darkest);
534
- --ax-comp-border-lightest: var(--color-border-darkest);
535
- --ax-comp-bg-lighter: var(--color-darker);
536
- --ax-comp-text-lighter: var(--color-on-darker);
537
- --ax-comp-border-lighter: var(--color-border-darker);
538
- --ax-comp-bg-light: var(--color-dark);
539
- --ax-comp-text-light: var(--color-on-dark);
540
- --ax-comp-border-light: var(--color-border-dark);
541
- --ax-comp-bg: var(--color-on-surface);
542
- --ax-comp-text: var(--color-surface);
543
- --ax-comp-border: var(--color-border-surface);
544
- --ax-comp-bg-dark: var(--color-light);
545
- --ax-comp-text-dark: var(--color-on-light);
546
- --ax-comp-border-dark: var(--color-border-light);
547
- --ax-comp-bg-darker: var(--color-lighter);
548
- --ax-comp-text-darker: var(--color-on-lighter);
549
- --ax-comp-border-darker: var(--color-border-lighter);
550
- --ax-comp-bg-darkest: var(--color-lightest);
551
- --ax-comp-text-darkest: var(--color-on-lightest);
552
- --ax-comp-border-darkest: var(--color-border-lightest);
553
- }
554
-
555
- `;
556
537
  const AX_DARK_THEME_ALIAS_COMMENT = `/*
557
538
  * Re-declare every Tailwind theme color alias for the \`.ax-dark\` subtree.
558
539
  * \`@theme inline\` resolves inner \`var(--ax-sys-*)\` at :root; this block recomputes \`--color-*\`
@@ -620,9 +601,6 @@ function compoundSurfaceUtilities(role) {
620
601
 
621
602
  `;
622
603
  }
623
- if (role === 'primary') {
624
- css += AX_DEFAULT_UTILITY;
625
- }
626
604
  css += `@utility ax-${role} {\n`;
627
605
  for (const level of SEMANTIC_LEVELS) {
628
606
  const suf = level === 'surface' ? '' : `-${level}`;
@@ -631,6 +609,12 @@ function compoundSurfaceUtilities(role) {
631
609
  css += ` --ax-comp-text${suf}: ${refs.fg};\n`;
632
610
  css += ` --ax-comp-border${suf}: ${refs.bd};\n`;
633
611
  }
612
+ css += ` --ax-comp-ink: var(--color-${role});\n`;
613
+ css += ` --ax-comp-ink-dark: var(--color-${role}-dark);\n`;
614
+ css += ` --ax-comp-ink-darker: var(--color-${role}-darker);\n`;
615
+ css += ` --ax-comp-edge: var(--color-${role});\n`;
616
+ css += ` --ax-comp-edge-dark: var(--color-${role}-dark);\n`;
617
+ css += ` --ax-comp-edge-darker: var(--color-${role}-darker);\n`;
634
618
  css += `}
635
619
 
636
620
  `;
@@ -683,15 +667,15 @@ function neutralCompoundSurfaceUtilities() {
683
667
  }
684
668
 
685
669
  @utility ax-surface {
686
- --ax-comp-bg-lightest: var(--color-lightest);
687
- --ax-comp-text-lightest: var(--color-on-lightest);
688
- --ax-comp-border-lightest: var(--color-border-lightest);
689
- --ax-comp-bg-lighter: var(--color-lighter);
690
- --ax-comp-text-lighter: var(--color-on-lighter);
691
- --ax-comp-border-lighter: var(--color-border-lighter);
692
- --ax-comp-bg-light: var(--color-light);
693
- --ax-comp-text-light: var(--color-on-light);
694
- --ax-comp-border-light: var(--color-border-light);
670
+ --ax-comp-bg-lightest: var(--color-light);
671
+ --ax-comp-text-lightest: var(--color-on-light);
672
+ --ax-comp-border-lightest: var(--color-border-light);
673
+ --ax-comp-bg-lighter: var(--color-surface);
674
+ --ax-comp-text-lighter: var(--color-on-surface);
675
+ --ax-comp-border-lighter: var(--color-border-surface);
676
+ --ax-comp-bg-light: var(--color-dark);
677
+ --ax-comp-text-light: var(--color-on-dark);
678
+ --ax-comp-border-light: var(--color-border-dark);
695
679
  --ax-comp-bg: var(--color-surface);
696
680
  --ax-comp-text: var(--color-on-surface);
697
681
  --ax-comp-border: var(--color-border-surface);
@@ -704,6 +688,12 @@ function neutralCompoundSurfaceUtilities() {
704
688
  --ax-comp-bg-darkest: var(--color-darkest);
705
689
  --ax-comp-text-darkest: var(--color-on-darkest);
706
690
  --ax-comp-border-darkest: var(--color-border-darkest);
691
+ --ax-comp-ink: var(--color-on-surface);
692
+ --ax-comp-ink-dark: var(--color-on-dark);
693
+ --ax-comp-ink-darker: var(--color-on-darker);
694
+ --ax-comp-edge: var(--color-border-surface);
695
+ --ax-comp-edge-dark: var(--color-border-dark);
696
+ --ax-comp-edge-darker: var(--color-border-darker);
707
697
  }
708
698
 
709
699
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-core-theme-builder.mjs","sources":["../../../../packages/core/theme-builder/src/lib/theme-builder-export-roles.ts","../../../../packages/core/theme-builder/src/lib/theme-builder-export-tail.ts","../../../../packages/core/theme-builder/src/lib/theme-builder.ts","../../../../packages/core/theme-builder/src/lib/create-theme.ts","../../../../packages/core/theme-builder/src/acorex-core-theme-builder.ts"],"sourcesContent":["/**\n * Canonical role order for full-theme CSS export (must stay in sync with theme tail + `:root` generation).\n */\n\n/** Roles that produce `--ax-sys-color-{role}-*` tokens under `:root` / `.ax-dark`. */\nexport const EXPORT_ROOT_ROLE_ORDER = [\n 'primary',\n 'secondary',\n 'success',\n 'warning',\n 'danger',\n 'surface',\n 'accent',\n 'accent1',\n 'accent2',\n 'accent3',\n 'accent4',\n 'accent5',\n 'accent6',\n] as const;\n\nexport type ExportRootRole = (typeof EXPORT_ROOT_ROLE_ORDER)[number];\n\n/**\n * Roles mirrored in `@theme` and compound `@utility` blocks.\n * Omits grayscale `surface` (handled via neutral tokens + `--ax-sys-color-surface-*` scale only).\n */\nexport const EXPORT_TAIL_THEME_PALETTE_ORDER = [\n 'primary',\n 'secondary',\n 'success',\n 'warning',\n 'danger',\n 'accent',\n 'accent1',\n 'accent2',\n 'accent3',\n 'accent4',\n 'accent5',\n 'accent6',\n] as const;\n\nexport type ExportTailPaletteRole = (typeof EXPORT_TAIL_THEME_PALETTE_ORDER)[number];\n","/**\n * Mirrors `packages/styles/themes/default.css` from `@theme inline {` through the end:\n * `@theme inline`, `.ax-dark .ax-light` subtree overrides, `.ax-dark` color-alias re-declaration,\n * role utilities, typography, headings, spacing.\n * Only `--ax-sys-*` RGB triplets in `:root` / `.ax-dark` vary (handled in ThemeBuilderService).\n * Extends the package theme with `accent1`…`accent6` after `accent` (seven accent palettes total).\n */\n\nimport { EXPORT_TAIL_THEME_PALETTE_ORDER, type ExportTailPaletteRole } from './theme-builder-export-roles';\n\nconst SEMANTIC_LEVELS = ['lightest', 'lighter', 'light', 'surface', 'dark', 'darker', 'darkest'] as const;\n\n/**\n * Default Tailwind scale (matches `ax-md`) wired to `--ax-sys-*-base` tokens.\n * Mirrors `packages/styles/themes/default.css` `:root` and `@theme inline` blocks.\n */\nexport function buildDefaultTailwindScaleBlock(scope: 'root' | 'theme' = 'root'): string {\n const comment =\n scope === 'theme'\n ? ' /* Standard Tailwind scale (matches ax-md) — wired to base tokens so all utilities respond to theme changes */\\n'\n : ' /* Standard Tailwind type scale (matches ax-md) — used when no ax-* size class is applied */\\n';\n\n return (\n comment +\n ` --spacing: var(--ax-sys-spacing-base);\n --text-xs: var(--ax-sys-text-xs-base);\n --text-sm: var(--ax-sys-text-sm-base);\n --text-base: var(--ax-sys-body-font-size);\n --text-lg: var(--ax-sys-text-lg-base);\n --text-xl: var(--ax-sys-text-xl-base);\n --leading-3: var(--ax-sys-leading-3-base);\n --leading-4: var(--ax-sys-leading-4-base);\n --leading-5: var(--ax-sys-leading-5-base);\n --leading-6: var(--ax-sys-leading-6-base);\n\n`\n );\n}\n\n/** Verbatim Tailwind utilities after `ax-accent`; matches default.css § max-w-8xl … ax-xl */\nconst THEME_TAIL_VERBATIM_FOOTER = `\n@utility max-w-8xl {\n max-width: 90rem;\n}\n\n@utility ax-state-disabled {\n @apply cursor-not-allowed opacity-50 *:cursor-not-allowed;\n}\n\n@utility ax-state-readonly {\n @apply cursor-text opacity-70 *:cursor-text;\n}\n\n@utility ax-fill {\n &.ax-default {\n @apply light-surface dark:dark-surface;\n }\n &.ax-editor-container {\n @apply focus-within:ring-primary/30 focus-within:border-primary focus-within:ring-3;\n }\n}\n\n@utility ax-flat {\n @apply rounded-none;\n &.ax-default {\n @apply border-border-lightest dark:border-border-darkest border-b bg-transparent;\n }\n &.ax-editor-container {\n @apply focus-within:border-primary!;\n }\n}\n\n@utility ax-solid {\n @apply bg-(--ax-comp-bg,var(--color-lightest)) text-(--ax-comp-text,var(--color-on-lightest)) dark:bg-(--ax-comp-bg,var(--color-darkest)) dark:text-(--ax-comp-text,var(--color-on-darkest));\n &.ax-default {\n @apply lightest-surface dark:darkest-surface border;\n }\n &.ax-state-selected {\n @apply bg-(--ax-comp-bg-darker,var(--color-light)) text-(--ax-comp-text-darker,var(--color-on-light)) dark:bg-(--ax-comp-bg-darker,var(--color-dark)) dark:text-(--ax-comp-text-darker,var(--color-on-dark));\n }\n &.ax-editor-container {\n @apply focus-within:ring-primary/30 focus-within:border-primary focus-within:ring-3;\n }\n}\n\n@utility ax-solid-interactive {\n @supports (color: color-mix(in lab, red, red)) {\n --ax-comp-ripple-color: color-mix(in oklab, var(--ax-comp-bg-lightest, var(--color-on-lightest)) 25%, transparent);\n }\n @apply ax-solid transition-colors;\n &:not(.ax-state-disabled, .ax-state-loading, .ax-state-selected) {\n &:hover,\n &:focus,\n &:focus-within,\n &:focus-visible {\n @apply bg-(--ax-comp-bg-dark,var(--color-lighter)) text-(--ax-comp-text-dark,var(--color-on-lighter)) dark:bg-(--ax-comp-bg-dark,var(--color-darker)) dark:text-(--ax-comp-text-dark,var(--color-on-darker));\n }\n }\n &:not(.ax-state-disabled, .ax-state-loading, .ax-state-selected):active {\n @apply bg-(--ax-comp-bg-darker,var(--color-light)) text-(--ax-comp-text-darker,var(--color-on-light)) ring-1 ring-(--ax-comp-bg-dark) ring-offset-1 dark:bg-(--ax-comp-bg-darker,var(--color-dark)) dark:text-(--ax-comp-text-darker,var(--color-on-dark));\n }\n}\n\n@utility ax-outline {\n @apply border border-(--ax-comp-bg,var(--color-border-lightest)) bg-transparent text-(--ax-comp-bg,var(--color-on-lightest));\n &.ax-default {\n @apply border-border-lightest dark:border-border-darkest border;\n }\n &.ax-state-selected {\n @apply border-(--ax-comp-bg-darker,var(--color-border-light)) text-(--ax-comp-bg-darker,var(--color-on-light));\n }\n &.ax-editor-container {\n @apply focus-within:ring-primary/30 focus-within:border-primary focus-within:ring-3;\n }\n}\n\n@utility ax-outline-interactive {\n @supports (color: color-mix(in lab, red, red)) {\n --ax-comp-ripple-color: color-mix(in oklab, var(--ax-comp-bg, var(--color-on-lightest)) 25%, transparent);\n }\n @apply ax-outline transition-colors;\n &:not(.ax-state-disabled, .ax-state-loading, .ax-state-selected) {\n &:hover,\n &:focus,\n &:focus-within,\n &:focus-visible {\n @apply border-(--ax-comp-bg-dark,var(--color-border-lighter)) text-(--ax-comp-bg-dark,var(--color-on-lighter));\n }\n }\n &:not(.ax-state-disabled, .ax-state-loading, .ax-state-selected):active {\n @apply border-(--ax-comp-bg-darker,var(--color-border-light)) text-(--ax-comp-bg-darker,var(--color-on-light));\n }\n}\n\n@utility ax-twotone {\n @apply bg-(--ax-comp-bg-lightest,var(--color-lighter)) text-(--ax-comp-text-lightest,var(--color-on-lighter)) dark:bg-(--ax-comp-bg-lightest,var(--color-darker)) dark:text-(--ax-comp-text-lightest,var(--color-on-darker));\n &.ax-state-selected {\n @apply bg-(--ax-comp-bg-light,var(--color-surface)) text-(--ax-comp-text-light,var(--color-on-surface));\n }\n}\n\n@utility ax-twotone-interactive {\n @supports (color: color-mix(in lab, red, red)) {\n --ax-comp-ripple-color: color-mix(in oklab, var(--ax-comp-bg, var(--color-on-lightest)) 25%, transparent);\n }\n @apply ax-twotone transition-colors;\n &:not(.ax-state-disabled, .ax-state-loading, .ax-state-selected) {\n &:hover,\n &:focus,\n &:focus-within,\n &:focus-visible {\n @apply bg-(--ax-comp-bg-lighter,var(--color-light)) text-(--ax-comp-text-lighter,var(--color-on-light)) dark:bg-(--ax-comp-bg-lighter,var(--color-dark)) dark:text-(--ax-comp-text-lighter,var(--color-on-dark));\n }\n }\n &:not(.ax-state-disabled, .ax-state-loading, .ax-state-selected):active {\n @apply bg-(--ax-comp-bg-light,var(--color-surface)) text-(--ax-comp-text-light,var(--color-on-surface));\n }\n}\n\n@utility ax-blank {\n @apply bg-transparent text-(--ax-comp-bg,var(--color-on-surface));\n &.ax-state-selected {\n @apply bg-(--ax-comp-bg-lighter,var(--color-surface)) text-(--ax-comp-text-lighter,var(--color-on-surface));\n }\n}\n\n@utility ax-blank-interactive {\n @supports (color: color-mix(in lab, red, red)) {\n --ax-comp-ripple-color: color-mix(in oklab, var(--ax-comp-bg, var(--color-on-lightest)) 25%, transparent);\n }\n @apply ax-blank transition-colors;\n &:not(.ax-state-disabled, .ax-state-loading, .ax-state-selected) {\n &:hover,\n &:focus,\n &:focus-within,\n &:focus-visible {\n @apply bg-(--ax-comp-bg-lightest,var(--color-lighter)) text-(--ax-comp-text-lightest,var(--color-on-lighter)) dark:bg-(--ax-comp-bg-lightest,var(--color-darker)) dark:text-(--ax-comp-text-lightest,var(--color-on-darker));\n }\n }\n &:not(.ax-state-disabled, .ax-state-loading, .ax-state-selected):active {\n @apply bg-(--ax-comp-bg-lighter,var(--color-surface)) text-(--ax-comp-text-lighter,var(--color-on-surface));\n }\n}\n\n@utility links {\n @apply bg-transparent text-(--ax-comp-bg,var(--color-on-surface));\n &.ax-state-selected {\n @apply text-(--ax-comp-bg-darker,var(--color-on-surface));\n }\n}\n\n@utility links-interactive {\n @supports (color: color-mix(in lab, red, red)) {\n --ax-comp-ripple-color: color-mix(in oklab, var(--ax-comp-bg, var(--color-on-lightest)) 25%, transparent);\n }\n @apply links transition-colors;\n &:not(.ax-state-disabled, .ax-state-loading, .ax-state-selected) {\n &:hover,\n &:focus,\n &:focus-within,\n &:focus-visible {\n @apply text-(--ax-comp-bg-dark,var(--color-on-surface));\n }\n }\n &:not(.ax-state-disabled, .ax-state-loading, .ax-state-selected):active {\n @apply text-(--ax-comp-bg-darker,var(--color-on-surface));\n }\n}\n@utility h1 {\n font-size: 2.5rem;\n font-weight: 500;\n line-height: 2.5rem;\n}\n@utility h2 {\n font-size: 2rem;\n font-weight: 500;\n line-height: 2rem;\n}\n@utility h3 {\n font-size: 1.75rem;\n font-weight: 500;\n line-height: 1.75rem;\n}\n@utility h4 {\n font-size: 1.5rem;\n font-weight: 500;\n line-height: 1.5rem;\n}\n@utility h5 {\n font-size: 1.125rem;\n font-weight: 500;\n line-height: 1.125rem;\n}\n@utility h6 {\n font-size: 1rem;\n font-weight: 500;\n line-height: 1rem;\n}\n@utility heading {\n width: 100%;\n border-bottom: 1px solid;\n border-color: rgba(var(--ax-sys-color-border-lightest-surface));\n line-height: 0.1em;\n margin: 1rem auto;\n}\n@utility heading-start {\n text-align: start;\n}\n@utility heading-center {\n text-align: center;\n}\n@utility heading-end {\n text-align: end;\n}\n@utility subtitle {\n opacity: 74%;\n display: block;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.625rem;\n}\n@utility tabs-fit {\n width: 100%;\n}\n@utility ax-xs {\n /* Spacing */\n --spacing: calc(var(--ax-sys-spacing-base) * 0.5);\n --ax-sys-border-radius: calc(var(--ax-sys-border-radius-base) * 0.5);\n\n /* Typography */\n --text-xs: calc(var(--ax-sys-text-xs-base) * 5 / 6);\n --text-sm: calc(var(--ax-sys-text-sm-base) * 11 / 14);\n --text-base: calc(var(--ax-sys-body-font-size) * 0.75);\n --text-lg: calc(var(--ax-sys-text-lg-base) * 7 / 9);\n --text-xl: calc(var(--ax-sys-text-xl-base) * 0.8);\n\n /* Line Heights */\n --leading-3: var(--ax-sys-leading-3-base);\n --leading-4: calc(var(--ax-sys-leading-4-base) * 0.875);\n --leading-5: calc(var(--ax-sys-leading-5-base) * 0.8);\n --leading-6: calc(var(--ax-sys-leading-6-base) * 5 / 6);\n}\n\n@utility ax-sm {\n /* Spacing */\n --spacing: calc(var(--ax-sys-spacing-base) * 0.75);\n --ax-sys-border-radius: calc(var(--ax-sys-border-radius-base) * 0.75);\n\n /* Typography */\n --text-xs: calc(var(--ax-sys-text-xs-base) * 11 / 12);\n --text-sm: calc(var(--ax-sys-text-sm-base) * 6 / 7);\n --text-base: calc(var(--ax-sys-body-font-size) * 0.875);\n --text-lg: calc(var(--ax-sys-text-lg-base) * 8 / 9);\n --text-xl: calc(var(--ax-sys-text-xl-base) * 0.9);\n\n /* Line Heights */\n --leading-3: calc(var(--ax-sys-leading-3-base) * 7 / 6);\n --leading-4: var(--ax-sys-leading-4-base);\n --leading-5: calc(var(--ax-sys-leading-5-base) * 0.9);\n --leading-6: calc(var(--ax-sys-leading-6-base) * 11 / 12);\n}\n\n@utility ax-md {\n /* Tailwind Default Scale */\n --spacing: var(--ax-sys-spacing-base);\n --ax-sys-border-radius: var(--ax-sys-border-radius-base);\n\n /* Typography */\n --text-xs: var(--ax-sys-text-xs-base);\n --text-sm: var(--ax-sys-text-sm-base);\n --text-base: var(--ax-sys-body-font-size);\n --text-lg: var(--ax-sys-text-lg-base);\n --text-xl: var(--ax-sys-text-xl-base);\n\n /* Line Heights */\n --leading-3: var(--ax-sys-leading-3-base);\n --leading-4: var(--ax-sys-leading-4-base);\n --leading-5: var(--ax-sys-leading-5-base);\n --leading-6: var(--ax-sys-leading-6-base);\n}\n\n@utility ax-lg {\n /* Spacing */\n --spacing: calc(var(--ax-sys-spacing-base) * 1.25);\n --ax-sys-border-radius: calc(var(--ax-sys-border-radius-base) * 1.25);\n\n /* Typography */\n --text-xs: calc(var(--ax-sys-text-xs-base) * 13 / 12);\n --text-sm: calc(var(--ax-sys-text-sm-base) * 15 / 14);\n --text-base: calc(var(--ax-sys-body-font-size) * 17 / 16);\n --text-lg: calc(var(--ax-sys-text-lg-base) * 10 / 9);\n --text-xl: calc(var(--ax-sys-text-xl-base) * 1.1);\n\n /* Line Heights */\n --leading-3: calc(var(--ax-sys-leading-3-base) * 4 / 3);\n --leading-4: calc(var(--ax-sys-leading-4-base) * 1.125);\n --leading-5: calc(var(--ax-sys-leading-5-base) * 1.1);\n --leading-6: calc(var(--ax-sys-leading-6-base) * 13 / 12);\n}\n\n@utility ax-xl {\n /* Spacing */\n --spacing: calc(var(--ax-sys-spacing-base) * 1.5);\n --ax-sys-border-radius: calc(var(--ax-sys-border-radius-base) * 1.5);\n\n /* Typography */\n --text-xs: calc(var(--ax-sys-text-xs-base) * 7 / 6);\n --text-sm: calc(var(--ax-sys-text-sm-base) * 8 / 7);\n --text-base: calc(var(--ax-sys-body-font-size) * 1.125);\n --text-lg: calc(var(--ax-sys-text-lg-base) * 11 / 9);\n --text-xl: calc(var(--ax-sys-text-xl-base) * 1.2);\n\n /* Line Heights */\n --leading-3: calc(var(--ax-sys-leading-3-base) * 1.5);\n --leading-4: calc(var(--ax-sys-leading-4-base) * 1.25);\n --leading-5: calc(var(--ax-sys-leading-5-base) * 1.2);\n --leading-6: calc(var(--ax-sys-leading-6-base) * 7 / 6);\n}\n`;\n\nconst SHADE_KEYS = ['50', '100', '200', '300', '400', '500', '600', '700', '800', '900', '950'] as const;\n\nfunction roleSectionTitle(role: string): string {\n if (role === 'accent') return 'Accent Surfaces';\n const accentN = /^accent(\\d+)$/.exec(role);\n if (accentN?.[1]) return `Accent ${accentN[1]} Surfaces`;\n return `${role.charAt(0).toUpperCase()}${role.slice(1)} Surfaces`;\n}\n\n/** @theme semantic lines for neutral UI surfaces (matches default.css) */\nfunction neutralThemeSemanticBlock(options?: { omitDuplicateSurfaceLine?: boolean }): string {\n let css = `\\n`;\n css += ` --color-lightest: rgba(var(--ax-sys-color-lightest-surface));\\n`;\n css += ` --color-on-lightest: rgba(var(--ax-sys-color-on-lightest-surface));\\n`;\n css += ` --color-border-lightest: rgba(var(--ax-sys-color-border-lightest-surface));\\n`;\n css += ` --color-lighter: rgba(var(--ax-sys-color-lighter-surface));\\n`;\n css += ` --color-on-lighter: rgba(var(--ax-sys-color-on-lighter-surface));\\n`;\n css += ` --color-border-lighter: rgba(var(--ax-sys-color-border-lighter-surface));\\n`;\n css += ` --color-light: rgba(var(--ax-sys-color-light-surface));\\n`;\n css += ` --color-on-light: rgba(var(--ax-sys-color-on-light-surface));\\n`;\n css += ` --color-border-light: rgba(var(--ax-sys-color-border-light-surface));\\n`;\n if (!options?.omitDuplicateSurfaceLine) {\n css += ` --color-surface: rgba(var(--ax-sys-color-surface));\\n`;\n }\n css += ` --color-on-surface: rgba(var(--ax-sys-color-on-surface));\\n`;\n css += ` --color-border-surface: rgba(var(--ax-sys-color-border-surface));\\n`;\n css += ` --color-dark: rgba(var(--ax-sys-color-dark-surface));\\n`;\n css += ` --color-on-dark: rgba(var(--ax-sys-color-on-dark-surface));\\n`;\n css += ` --color-border-dark: rgba(var(--ax-sys-color-border-dark-surface));\\n`;\n css += ` --color-darker: rgba(var(--ax-sys-color-darker-surface));\\n`;\n css += ` --color-on-darker: rgba(var(--ax-sys-color-on-darker-surface));\\n`;\n css += ` --color-border-darker: rgba(var(--ax-sys-color-border-darker-surface));\\n`;\n css += ` --color-darkest: rgba(var(--ax-sys-color-darkest-surface));\\n`;\n css += ` --color-on-darkest: rgba(var(--ax-sys-color-on-darkest-surface));\\n`;\n css += ` --color-border-darkest: rgba(var(--ax-sys-color-border-darkest-surface));\\n`;\n return css;\n}\n\n/** Matches default.css `@theme inline` block per palette role (ordering and duplicate `--color-{role}` lines). */\nfunction themeNumericAndSemanticForRole(\n role: ExportTailPaletteRole,\n options?: { omitMiddleRoleSurfaceColorDup?: boolean },\n): string {\n let css = ` /* ${roleSectionTitle(role)} */\\n`;\n css += ` --color-${role}: rgba(var(--ax-sys-color-${role}-surface));\\n`;\n for (const shade of SHADE_KEYS) {\n css += ` --color-${role}-${shade}: rgba(var(--ax-sys-color-${role}-${shade}));\\n`;\n }\n css += `\\n`;\n\n const emitTriplet = (level: 'lightest' | 'lighter' | 'light' | 'dark' | 'darker' | 'darkest'): void => {\n css += ` --color-${role}-${level}: rgba(var(--ax-sys-color-${role}-${level}-surface));\\n`;\n css += ` --color-on-${role}-${level}: rgba(var(--ax-sys-color-on-${role}-${level}-surface));\\n`;\n css += ` --color-border-${role}-${level}: rgba(var(--ax-sys-color-border-${role}-${level}-surface));\\n`;\n };\n\n emitTriplet('lightest');\n emitTriplet('lighter');\n emitTriplet('light');\n\n if (!options?.omitMiddleRoleSurfaceColorDup) {\n css += ` --color-${role}: rgba(var(--ax-sys-color-${role}-surface));\\n`;\n }\n css += ` --color-on-${role}: rgba(var(--ax-sys-color-on-${role}-surface));\\n`;\n css += ` --color-border-${role}: rgba(var(--ax-sys-color-border-${role}-surface));\\n`;\n\n emitTriplet('dark');\n emitTriplet('darker');\n emitTriplet('darkest');\n\n const last = EXPORT_TAIL_THEME_PALETTE_ORDER[EXPORT_TAIL_THEME_PALETTE_ORDER.length - 1];\n if (role !== last) css += `\\n`;\n return css;\n}\n\n/** Surface scale (--color-surface-50…) at top of @theme */\nfunction themeSurfaceScaleBlock(): string {\n let css = ` /* Surface Surfaces */\\n`;\n css += ` --color-surface: rgba(var(--ax-sys-color-surface));\\n`;\n for (const shade of SHADE_KEYS) {\n css += ` --color-surface-${shade}: rgba(var(--ax-sys-color-surface-${shade}));\\n`;\n }\n css += `\\n`;\n return css;\n}\n\nfunction utilitiesPrefixBlock(): string {\n return `@utility bg-default {\n background-color: var(--color-bg-default);\n}\n\n@utility text-default {\n color: var(--color-text-default);\n}\n\n@utility border-default {\n border-color: var(--color-border-default);\n}\n\n@utility text {\n color: var(--color-text-default);\n}\n\n@utility border-s-default {\n border-inline-start-width: 1px;\n}\n\n@utility border-e-default {\n border-inline-end-width: 1px;\n}\n\n@utility border-t-default {\n border-top-width: 1px;\n}\n\n@utility border-b-default {\n border-bottom-width: 1px;\n}\n\n@utility border-x-default {\n border-left-width: 1px;\n border-right-width: 1px;\n}\n\n@utility border-y-default {\n border-top-width: 1px;\n border-bottom-width: 1px;\n}\n\n`;\n}\n\nfunction utilityClassName(role: string, level: (typeof SEMANTIC_LEVELS)[number]): string {\n return level === 'surface' ? `${role}-surface` : `${role}-${level}-surface`;\n}\n\n/** Background / foreground / border for one semantic level */\nfunction cssTripletVars(role: string, level: (typeof SEMANTIC_LEVELS)[number]): { bg: string; fg: string; bd: string } {\n if (level === 'surface') {\n return {\n bg: `var(--color-${role})`,\n fg: `var(--color-on-${role})`,\n bd: `var(--color-border-${role})`,\n };\n }\n return {\n bg: `var(--color-${role}-${level})`,\n fg: `var(--color-on-${role}-${level})`,\n bd: `var(--color-border-${role}-${level})`,\n };\n}\n\n/** Inverted neutral scale for `ax-default` look (matches default.css). */\nconst AX_DEFAULT_UTILITY = `@utility ax-default {\n --ax-comp-bg-lightest: var(--color-darkest);\n --ax-comp-text-lightest: var(--color-on-darkest);\n --ax-comp-border-lightest: var(--color-border-darkest);\n --ax-comp-bg-lighter: var(--color-darker);\n --ax-comp-text-lighter: var(--color-on-darker);\n --ax-comp-border-lighter: var(--color-border-darker);\n --ax-comp-bg-light: var(--color-dark);\n --ax-comp-text-light: var(--color-on-dark);\n --ax-comp-border-light: var(--color-border-dark);\n --ax-comp-bg: var(--color-on-surface);\n --ax-comp-text: var(--color-surface);\n --ax-comp-border: var(--color-border-surface);\n --ax-comp-bg-dark: var(--color-light);\n --ax-comp-text-dark: var(--color-on-light);\n --ax-comp-border-dark: var(--color-border-light);\n --ax-comp-bg-darker: var(--color-lighter);\n --ax-comp-text-darker: var(--color-on-lighter);\n --ax-comp-border-darker: var(--color-border-lighter);\n --ax-comp-bg-darkest: var(--color-lightest);\n --ax-comp-text-darkest: var(--color-on-lightest);\n --ax-comp-border-darkest: var(--color-border-lightest);\n}\n\n`;\n\nconst AX_DARK_THEME_ALIAS_COMMENT = `/*\n * Re-declare every Tailwind theme color alias for the \\`.ax-dark\\` subtree.\n * \\`@theme inline\\` resolves inner \\`var(--ax-sys-*)\\` at :root; this block recomputes \\`--color-*\\`\n * on \\`.ax-dark\\` so localized dark regions track updated primitives.\n * Static tokens (\\`--radius-default\\`, breakpoints) are omitted — same rationale as default.css.\n */\n\n`;\n\nconst AX_LIGHT_SUBTREE_COMMENT = `/*\n * Re-declare light theme primitives and Tailwind color aliases for the \\`.ax-light\\` subtree.\n * Mirrors the \\`.ax-dark\\` override pattern so localized light zones work inside a dark page.\n */\n\n`;\n\n/** Shared \\`--color-*\\` alias body for \\`@theme inline\\`, \\`.ax-dark .ax-light\\`, and \\`.ax-dark\\` alias blocks. */\nfunction buildThemeColorAliasesBody(options?: {\n omitMiddleRoleSurfaceColorDup?: boolean;\n omitDuplicateSurfaceLine?: boolean;\n}): string {\n let css = ` --color-bg-default: rgba(var(--ax-sys-color-bg-default));\\n`;\n css += ` --color-text-default: rgba(var(--ax-sys-color-text-default));\\n`;\n css += ` --color-border-default: rgba(var(--ax-sys-color-border-default));\\n\\n`;\n css += themeSurfaceScaleBlock();\n css += neutralThemeSemanticBlock({ omitDuplicateSurfaceLine: options?.omitDuplicateSurfaceLine });\n for (const role of EXPORT_TAIL_THEME_PALETTE_ORDER) {\n css += themeNumericAndSemanticForRole(role, {\n omitMiddleRoleSurfaceColorDup: options?.omitMiddleRoleSurfaceColorDup,\n });\n }\n return css;\n}\n\nfunction buildAxDarkThemeColorAliases(): string {\n let css = AX_DARK_THEME_ALIAS_COMMENT;\n css += `.ax-dark {\\n`;\n css += ` --ax-sys-theme-isDark: 1;\\n`;\n css += buildThemeColorAliasesBody({\n omitMiddleRoleSurfaceColorDup: true,\n omitDuplicateSurfaceLine: true,\n });\n css += `}\\n\\n`;\n return css;\n}\n\n/** Light subtree inside a dark page — primitives are generated from the light palette in ThemeBuilderService. */\nexport function buildAxLightSubtreeBlock(primitivesCss: string): string {\n let css = AX_LIGHT_SUBTREE_COMMENT;\n css += `.ax-dark .ax-light {\\n`;\n css += ` --ax-sys-theme-isDark: 0;\\n`;\n css += ` --ax-sys-scroller-track-color: rgba(var(--ax-sys-color-light-surface));\\n`;\n css += ` --ax-sys-scroller-thumb-color: rgba(var(--ax-sys-color-darkest-surface));\\n\\n`;\n css += primitivesCss;\n css += buildThemeColorAliasesBody({\n omitMiddleRoleSurfaceColorDup: true,\n omitDuplicateSurfaceLine: true,\n });\n css += `}\\n\\n`;\n return css;\n}\n\nfunction compoundSurfaceUtilities(role: ExportTailPaletteRole): string {\n let css = `/* ${roleSectionTitle(role)} */\\n\\n`;\n for (const level of SEMANTIC_LEVELS) {\n const name = utilityClassName(role, level);\n const { bg, fg, bd } = cssTripletVars(role, level);\n css += `@utility ${name} {\n background-color: ${bg};\n color: ${fg};\n border-color: ${bd};\n}\n\n`;\n }\n if (role === 'primary') {\n css += AX_DEFAULT_UTILITY;\n }\n css += `@utility ax-${role} {\\n`;\n for (const level of SEMANTIC_LEVELS) {\n const suf = level === 'surface' ? '' : `-${level}`;\n const refs = cssTripletVars(role, level);\n css += ` --ax-comp-bg${suf}: ${refs.bg};\\n`;\n css += ` --ax-comp-text${suf}: ${refs.fg};\\n`;\n css += ` --ax-comp-border${suf}: ${refs.bd};\\n`;\n }\n css += `}\n\n`;\n return css;\n}\n\n/** Neutral lightest … darkest utilities (between Danger and Accent in default.css) */\nfunction neutralCompoundSurfaceUtilities(): string {\n return `/* Surface Surfaces */\n\n@utility lightest-surface {\n background-color: var(--color-lightest);\n color: var(--color-on-lightest);\n border-color: var(--color-border-lightest);\n}\n\n@utility lighter-surface {\n background-color: var(--color-lighter);\n color: var(--color-on-lighter);\n border-color: var(--color-border-lighter);\n}\n\n@utility light-surface {\n background-color: var(--color-light);\n color: var(--color-on-light);\n border-color: var(--color-border-light);\n}\n\n@utility surface {\n background-color: var(--color-surface);\n color: var(--color-on-surface);\n border-color: var(--color-border-surface);\n}\n\n@utility dark-surface {\n background-color: var(--color-dark);\n color: var(--color-on-dark);\n border-color: var(--color-border-dark);\n}\n\n@utility darker-surface {\n background-color: var(--color-darker);\n color: var(--color-on-darker);\n border-color: var(--color-border-darker);\n}\n\n@utility darkest-surface {\n background-color: var(--color-darkest);\n color: var(--color-on-darkest);\n border-color: var(--color-border-darkest);\n}\n\n@utility ax-surface {\n --ax-comp-bg-lightest: var(--color-lightest);\n --ax-comp-text-lightest: var(--color-on-lightest);\n --ax-comp-border-lightest: var(--color-border-lightest);\n --ax-comp-bg-lighter: var(--color-lighter);\n --ax-comp-text-lighter: var(--color-on-lighter);\n --ax-comp-border-lighter: var(--color-border-lighter);\n --ax-comp-bg-light: var(--color-light);\n --ax-comp-text-light: var(--color-on-light);\n --ax-comp-border-light: var(--color-border-light);\n --ax-comp-bg: var(--color-surface);\n --ax-comp-text: var(--color-on-surface);\n --ax-comp-border: var(--color-border-surface);\n --ax-comp-bg-dark: var(--color-dark);\n --ax-comp-text-dark: var(--color-on-dark);\n --ax-comp-border-dark: var(--color-border-dark);\n --ax-comp-bg-darker: var(--color-darker);\n --ax-comp-text-darker: var(--color-on-darker);\n --ax-comp-border-darker: var(--color-border-darker);\n --ax-comp-bg-darkest: var(--color-darkest);\n --ax-comp-text-darkest: var(--color-on-darkest);\n --ax-comp-border-darkest: var(--color-border-darkest);\n}\n\n`;\n}\n\n/**\n * Tailwind \\`--color-*\\` aliases for theme-builder live preview.\n * Recomputes against container-scoped \\`--ax-sys-color-*\\` (same roles as default.css \\`@theme inline\\`).\n */\nexport function buildPreviewThemeColorAliases(): string {\n let css = ` --color-bg-default: rgba(var(--ax-sys-color-bg-default));\\n`;\n css += ` --color-text-default: rgba(var(--ax-sys-color-text-default));\\n`;\n css += ` --color-border-default: rgba(var(--ax-sys-color-border-default));\\n`;\n css += neutralThemeSemanticBlock();\n for (const role of EXPORT_TAIL_THEME_PALETTE_ORDER) {\n css += ` --color-${role}: rgba(var(--ax-sys-color-${role}-surface));\\n`;\n css += ` --color-on-${role}: rgba(var(--ax-sys-color-on-${role}-surface));\\n`;\n css += ` --color-border-${role}: rgba(var(--ax-sys-color-border-${role}-surface));\\n`;\n }\n return css;\n}\n\nexport function buildDefaultThemeCssTailLikePackage(axLightPrimitives?: string): string {\n let css = `@theme inline {\n --color-bg-default: rgba(var(--ax-sys-color-bg-default));\n --color-text-default: rgba(var(--ax-sys-color-text-default));\n --color-border-default: rgba(var(--ax-sys-color-border-default));\n --radius-default: var(--ax-sys-border-radius);\n --breakpoint-3xl: 1920px;\n --breakpoint-4xl: 2560px;\n`;\n css += themeSurfaceScaleBlock();\n css += neutralThemeSemanticBlock();\n for (const role of EXPORT_TAIL_THEME_PALETTE_ORDER) {\n css += themeNumericAndSemanticForRole(role);\n }\n css += buildDefaultTailwindScaleBlock('theme');\n css += `}\n\n`;\n\n if (axLightPrimitives) {\n css += buildAxLightSubtreeBlock(axLightPrimitives);\n }\n\n css += buildAxDarkThemeColorAliases();\n\n css += utilitiesPrefixBlock();\n\n for (const role of EXPORT_TAIL_THEME_PALETTE_ORDER) {\n if (role.startsWith('accent')) continue;\n css += compoundSurfaceUtilities(role);\n }\n css += neutralCompoundSurfaceUtilities();\n for (const role of EXPORT_TAIL_THEME_PALETTE_ORDER) {\n if (role.startsWith('accent')) {\n css += compoundSurfaceUtilities(role);\n }\n }\n css += THEME_TAIL_VERBATIM_FOOTER;\n return css;\n}\n","import * as culori from 'culori';\nimport { EXPORT_ROOT_ROLE_ORDER, type ExportRootRole } from './theme-builder-export-roles';\nimport {\n buildDefaultTailwindScaleBlock,\n buildDefaultThemeCssTailLikePackage,\n buildPreviewThemeColorAliases,\n} from './theme-builder-export-tail';\nimport {\n AXThemeBuilderColorVariants,\n AXThemeBuilderColors,\n AXThemeBuilderFullPalette,\n AXThemeBuilderPalette,\n} from './theme-builder.class';\n\ntype AXOklchColor = { l: number; c: number; h: number; mode: 'oklch'; alpha?: number };\ntype AXRgbColor = { r: number; g: number; b: number; mode: 'rgb'; alpha?: number };\n\ntype AXThemeBuilderColorScale = Record<AXThemeBuilderColorVariants, string>;\n\nconst AX_THEME_SHADES = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950] as const;\n\nconst ROLE_SURFACE_SHADE_MAP = {\n 'lightest-surface': 100,\n 'lighter-surface': 200,\n 'light-surface': 300,\n surface: 500,\n 'dark-surface': 600,\n 'darker-surface': 700,\n 'darkest-surface': 800,\n} as const;\n\nconst toOklch = culori.converter('oklch');\nconst toRgb = culori.converter('rgb');\nconst toHsl = culori.converter('hsl');\nconst toGamut = culori.toGamut('rgb');\n\nconst lightSurfaceColors = {\n 'lightest-surface': { bg: '255, 255, 255', on: '10, 10, 10', border: '233, 233, 233' },\n 'lighter-surface': { bg: '250, 250, 250', on: '10, 10, 10', border: '228, 228, 228' },\n 'light-surface': { bg: '245, 245, 245', on: '10, 10, 10', border: '223, 223, 223' },\n surface: { bg: '240, 240, 241', on: '10, 10, 10', border: '218, 218, 218' },\n 'dark-surface': { bg: '235, 235, 236', on: '10, 10, 10', border: '213, 213, 213' },\n 'darker-surface': { bg: '230, 230, 231', on: '10, 10, 10', border: '208, 208, 208' },\n 'darkest-surface': { bg: '224, 224, 225', on: '10, 10, 10', border: '202, 202, 202' },\n};\nconst darkSurfaceColors = {\n 'lightest-surface': { bg: '56, 56, 56', on: '245, 245, 245', border: '64, 64, 64' },\n 'lighter-surface': { bg: '49, 49, 49', on: '245, 245, 245', border: '56, 56, 56' },\n 'light-surface': { bg: '42, 42, 42', on: '245, 245, 245', border: '50, 50, 50' },\n surface: { bg: '33, 33, 33', on: '245, 245, 245', border: '44, 44, 44' },\n 'dark-surface': { bg: '27, 27, 27', on: '245, 245, 245', border: '38, 38, 38' },\n 'darker-surface': { bg: '20, 20, 20', on: '245, 245, 245', border: '32, 32, 32' },\n 'darkest-surface': { bg: '10, 10, 10', on: '245, 245, 245', border: '28, 28, 28' },\n};\n\n/** Mirrors packaged default theme (+ `accent1`…`accent6`). Only palette RGB triplets differ from static defaults. */\n\ntype ExportSeedMap = Record<ExportRootRole, string>;\n\nconst DEFAULT_EXPORT_SEEDS_LIGHT: ExportSeedMap = {\n primary: 'rgb(43, 127, 255)',\n secondary: 'rgb(106, 114, 130)',\n success: 'rgb(0, 188, 125)',\n warning: 'rgb(253, 154, 0)',\n danger: 'rgb(255, 32, 86)',\n surface: 'rgb(194, 194, 194)',\n accent: 'rgb(6, 182, 212)',\n accent1: 'rgb(217, 70, 239)',\n accent2: 'rgb(249, 115, 22)',\n accent3: 'rgb(20, 184, 166)',\n accent4: 'rgb(99, 102, 241)',\n accent5: 'rgb(236, 72, 153)',\n accent6: 'rgb(120, 113, 108)',\n};\n\nconst DEFAULT_EXPORT_SEEDS_DARK: ExportSeedMap = {\n primary: 'rgb(43, 127, 255)',\n secondary: 'rgb(153, 161, 175)',\n success: 'rgb(0, 188, 125)',\n warning: 'rgb(253, 154, 0)',\n danger: 'rgb(255, 99, 126)',\n surface: 'rgb(33, 33, 33)',\n accent: 'rgb(6, 182, 212)',\n accent1: 'rgb(217, 70, 239)',\n accent2: 'rgb(249, 115, 22)',\n accent3: 'rgb(20, 184, 166)',\n accent4: 'rgb(99, 102, 241)',\n accent5: 'rgb(236, 72, 153)',\n accent6: 'rgb(120, 113, 108)',\n};\n\nconst THEME_CSS_PREAMBLE = `@import 'tailwindcss';\n@import 'tw-animate';\n\n@custom-variant dark (&:where(.ax-dark, .ax-dark *):not(:where(.ax-light, .ax-light *)));\n@custom-variant hover (&:hover);\n\ninput:-webkit-autofill,\ninput:-webkit-autofill:hover,\ninput:-webkit-autofill:focus,\ntextarea:-webkit-autofill,\nselect:-webkit-autofill {\n -webkit-box-shadow: 0 0 0 1000px transparent inset !important;\n -webkit-text-fill-color: inherit !important;\n transition: background-color 9999s ease-in-out 0s;\n}\n\n@layer base {\n * {\n border-color: var(--color-border-default);\n scrollbar-width: thin;\n scrollbar-color: var(--ax-sys-scroller-thumb-color) var(--ax-sys-scroller-track-color);\n\n ::-webkit-scrollbar {\n width: var(--ax-sys-scroller-size);\n height: var(--ax-sys-scroller-size);\n }\n\n ::-webkit-scrollbar-track {\n background: var(--ax-sys-scroller-track-color);\n border-radius: var(--ax-sys-scroller-size-radius);\n }\n\n ::-webkit-scrollbar-thumb {\n background: var(--ax-sys-scroller-thumb-color);\n border-radius: var(--ax-sys-scroller-size-radius);\n }\n }\n}\n\nhtml {\n background-color: rgba(var(--ax-sys-color-lightest-surface));\n color: rgba(var(--ax-sys-color-on-lightest-surface));\n}\n\nhtml.ax-dark {\n background-color: rgba(var(--ax-sys-color-darkest-surface));\n color: rgba(var(--ax-sys-color-on-darkest-surface));\n}\n\n`;\n\n/** Size scope classes before \\`:root\\` (matches default.css). */\nconst THEME_SIZE_SCOPE_CLASSES = `.ax-xs {\n --ax-sys-size: ax-xs;\n}\n.ax-sm {\n --ax-sys-size: ax-sm;\n}\n.ax-md {\n --ax-sys-size: ax-md;\n}\n.ax-lg {\n --ax-sys-size: ax-lg;\n}\n.ax-xl {\n --ax-sys-size: ax-xl;\n}\n\n`;\n\nconst THEME_EXPORT_ROOT_METADATA = `:root {\n --ax-sys-theme-isDark: 0;\n --ax-sys-icon-size: 100%;\n --ax-sys-icon-weight: 400;\n --ax-sys-size-base: 2.5rem;\n --ax-overlay-full-width: 93;\n --ax-sys-icon-width: inherit;\n --ax-sys-icon-height: inherit;\n --ax-sys-body-font-size: 1rem;\n --ax-sys-border-radius-base: 0.5rem;\n --ax-sys-spacing-base: 0.25rem;\n --ax-sys-text-xs-base: 0.75rem;\n --ax-sys-text-sm-base: 0.875rem;\n --ax-sys-text-lg-base: 1.125rem;\n --ax-sys-text-xl-base: 1.25rem;\n --ax-sys-leading-3-base: 0.75rem;\n --ax-sys-leading-4-base: 1rem;\n --ax-sys-leading-5-base: 1.25rem;\n --ax-sys-leading-6-base: 1.5rem;\n\n${buildDefaultTailwindScaleBlock('root')} --ax-sys-border-radius: var(--ax-sys-border-radius-base);\n --ax-sys-transition-duration: 150ms;\n --ax-sys-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n\n --ax-sys-scroller-size: 5px;\n --ax-sys-scroller-size-radius: 3px;\n --ax-sys-scroller-track-color: rgba(var(--ax-sys-color-light-surface));\n --ax-sys-scroller-thumb-color: rgba(var(--ax-sys-color-darkest-surface));\n\n`;\n\nfunction generateLightPalette(seedHex: string): AXThemeBuilderColorScale {\n const shadeValueMap: Record<number, number> = {\n 50: 40,\n 100: 90,\n 200: 160,\n 300: 270,\n 400: 410,\n 500: 500,\n 600: 590,\n 700: 700,\n 800: 790,\n 900: 860,\n 950: 1060,\n };\n\n const initialColor = toOklch(normalizeCssColor(seedHex));\n if (!initialColor) return {} as AXThemeBuilderColorScale;\n\n const { l: initialLightness, c: initialChroma, h: initialHue } = initialColor;\n const lightModeTones: { [key: number]: number } = {};\n\n AX_THEME_SHADES.forEach((shadeKey) => {\n const shadeValue = shadeValueMap[shadeKey];\n if (shadeValue <= 500) {\n lightModeTones[shadeKey] = (-shadeValue + shadeValue * initialLightness + 500) / 500;\n } else {\n lightModeTones[shadeKey] = (1 - (shadeValue - 500) / 500) * (initialLightness - 0.3) + 0.3;\n }\n });\n\n const lightMode: AXThemeBuilderColorScale = {} as AXThemeBuilderColorScale;\n\n AX_THEME_SHADES.forEach((shade) => {\n const oklchColor: AXOklchColor = {\n l: lightModeTones[shade],\n c: initialChroma,\n h: initialHue ?? 0,\n mode: 'oklch',\n };\n\n let gamutMappedColor = toGamut(oklchColor) || oklchColor;\n\n if (shade === 950 || shade === 900 || shade === 800) {\n const oklchGamutMapped = toOklch(gamutMappedColor) as AXOklchColor;\n if (oklchGamutMapped) {\n if (shade === 950) {\n oklchGamutMapped.c *= 1 - 0.5;\n } else if (shade === 900) {\n oklchGamutMapped.c *= 1 - 0.33;\n } else if (shade === 800) {\n oklchGamutMapped.c *= 1 - 0.08;\n }\n gamutMappedColor = oklchGamutMapped;\n }\n }\n\n const rgbColor = toRgb(gamutMappedColor);\n\n if (rgbColor) {\n lightMode[String(shade) as keyof AXThemeBuilderColorScale] = formatRgbTriplet(rgbColor as AXRgbColor);\n }\n });\n\n const color500 = parseRgbTriplet(lightMode['500']);\n if (color500) {\n lightMode['on'] = contrastText(color500, false);\n }\n lightMode['on-contrast'] = lightMode['900'];\n\n return lightMode;\n}\n\nfunction generateDarkPalette(seedHex: string): AXThemeBuilderColorScale {\n const initialColor = toOklch(normalizeCssColor(seedHex));\n if (!initialColor) return {} as AXThemeBuilderColorScale;\n\n const { l: initialLightness, c: initialChroma, h: initialHue } = initialColor;\n const darkModeTones: { [key: number]: number } = {};\n\n AX_THEME_SHADES.forEach((shade) => {\n if (shade <= 700) {\n darkModeTones[shade] = (-shade + shade * initialLightness + 700) / 700;\n } else {\n darkModeTones[shade] = (1 - (shade - 700) / 700) * (initialLightness - 0.3) + 0.3;\n }\n });\n\n const darkMode: AXThemeBuilderColorScale = {} as AXThemeBuilderColorScale;\n\n AX_THEME_SHADES.forEach((shade) => {\n const oklchColor: AXOklchColor = {\n l: darkModeTones[shade],\n c: initialChroma,\n h: initialHue ?? 0,\n mode: 'oklch',\n };\n\n const gamutMapped = toGamut(oklchColor) || oklchColor;\n const rgbColor = toRgb(gamutMapped);\n\n if (rgbColor) {\n darkMode[String(shade) as keyof AXThemeBuilderColorScale] = formatRgbTriplet(rgbColor as AXRgbColor);\n }\n });\n\n const color500 = parseRgbTriplet(darkMode['500']);\n const color200 = parseRgbTriplet(darkMode['200']);\n if (color500) {\n darkMode['on'] = contrastText(color500, true);\n }\n if (color200) {\n darkMode['on-contrast'] = contrastText(color200, true);\n }\n\n return darkMode;\n}\n\nfunction lightnessCalc(hue: number): number {\n if (hue <= 80) return 0.06 * hue + 75;\n if (hue < 270) return -0.07 * hue + 85.82;\n return 0.09 * hue + 42.6;\n}\n\nfunction isDarkOnSurface(lightness: number, hue: number, isDark: boolean): boolean {\n const threshold = lightnessCalc(hue);\n if (isDark) {\n return lightness >= (threshold - 15) / 100;\n }\n return lightness >= threshold / 100;\n}\n\nfunction contrastText(color: AXRgbColor, isDark: boolean): string {\n const oklchColor = toOklch(color) as AXOklchColor;\n if (!oklchColor) return '0, 0, 0';\n\n const { l: oklchLightness, c: chroma, h: hue } = oklchColor;\n let newLightness: number;\n\n if (isDark) {\n newLightness = isDarkOnSurface(oklchLightness, hue ?? 0, true) ? 0.2 : 0.995;\n } else {\n newLightness = isDarkOnSurface(oklchLightness, hue ?? 0, false) ? 0.3 : 0.995;\n }\n\n const contrastOklch: AXOklchColor = { l: newLightness, c: chroma, h: hue, mode: 'oklch' };\n\n const gamutMapped = toGamut(contrastOklch) || contrastOklch;\n const finalRgb = toRgb(gamutMapped);\n return formatRgbTriplet(finalRgb as AXRgbColor);\n}\n\nfunction borderColor(color: AXRgbColor, isDark: boolean): string {\n const hslColor = toHsl(color);\n if (!hslColor) return '0, 0, 0';\n\n if (isDark) {\n hslColor.l += 0.09;\n } else {\n hslColor.l -= 0.07;\n }\n\n hslColor.l = Math.max(0, Math.min(1, hslColor.l));\n\n const finalRgb = toRgb(hslColor);\n return formatRgbTriplet(finalRgb as AXRgbColor);\n}\n\nfunction parseRgbTriplet(rgbStr: string): AXRgbColor | undefined {\n if (!rgbStr) return undefined;\n const [r, g, b] = rgbStr.split(',').map(Number);\n return { mode: 'rgb', r: r / 255, g: g / 255, b: b / 255 };\n}\n\nexport function formatRgbTriplet(color: AXRgbColor): string {\n const r = Math.min(255, Math.max(0, Math.round(color.r * 255)));\n const g = Math.min(255, Math.max(0, Math.round(color.g * 255)));\n const b = Math.min(255, Math.max(0, Math.round(color.b * 255)));\n return `${r}, ${g}, ${b}`;\n}\n\n/** Accepts `#hex`, `rgb()`, `rgba()`, named colors … for culori. */\nfunction normalizeCssColor(css: string): string {\n const t = css.trim();\n const parsed = culori.parse(t);\n if (!parsed) return t;\n const hex = culori.formatHex(parsed);\n return hex ?? t;\n}\n\n/** Neutral UI surfaces for live preview (static values from default.css \\`:root\\`). */\nfunction buildPreviewNeutralSurfaces(isDark: boolean): string {\n return buildNeutralRgbVariables(isDark ? darkSurfaceColors : lightSurfaceColors);\n}\n\n/** Default bg/text/border primitives for live preview. */\nfunction buildPreviewSemanticDefaults(isDark: boolean): string {\n if (isDark) {\n return (\n ` --ax-sys-color-bg-default: var(--ax-sys-color-darkest-surface);\\n` +\n ` --ax-sys-color-text-default: var(--ax-sys-color-on-darkest-surface);\\n` +\n ` --ax-sys-color-border-default: var(--ax-sys-color-border-darkest-surface);\\n`\n );\n }\n return (\n ` --ax-sys-color-bg-default: var(--ax-sys-color-lightest-surface);\\n` +\n ` --ax-sys-color-text-default: var(--ax-sys-color-on-lightest-surface);\\n` +\n ` --ax-sys-color-border-default: var(--ax-sys-color-border-lightest-surface);\\n`\n );\n}\n\nfunction generateCSSForRoles(palette: AXThemeBuilderColorScale, role: string): string {\n let css = '\\n';\n Object.entries(palette).forEach(([shade, rgbColor]) => {\n if (shade === 'on') {\n css += ` --ax-sys-color-on-${role}: ${rgbColor};\\n`;\n } else if (shade === 'on-contrast') {\n css += ` --ax-sys-color-on-contrast-${role}: ${rgbColor};\\n`;\n } else {\n css += ` --ax-sys-color-${role}-${shade}: ${rgbColor};\\n`;\n }\n });\n return css;\n}\n\n/**\n * Produces CSS aligned with `packages/styles/themes/default.css`: same sections, directives,\n * `@theme inline`, `.ax-dark .ax-light` / `.ax-dark` color-alias re-declaration, and utility layout.\n * Only `--ax-sys-color-*` RGB triplets (and thus derived contrasts/borders) differ from the packaged default theme.\n * Includes all roles in {@link EXPORT_ROOT_ROLE_ORDER}: `accent` plus `accent1`–`accent6`.\n */\nexport function generateFullThemeCSS(seeds: {\n light: { [role: string]: string };\n dark: { [role: string]: string };\n}): string {\n const merged = mergeExportSeeds(seeds);\n const allPalettes: {\n light: Record<string, AXThemeBuilderColorScale>;\n dark: Record<string, AXThemeBuilderColorScale>;\n } = {\n light: {},\n dark: {},\n };\n\n for (const role of EXPORT_ROOT_ROLE_ORDER) {\n allPalettes.light[role] = generateLightPalette(merged.light[role]);\n allPalettes.dark[role] = generateDarkPalette(merged.dark[role]);\n }\n\n let css = THEME_CSS_PREAMBLE;\n css += THEME_SIZE_SCOPE_CLASSES;\n css += THEME_EXPORT_ROOT_METADATA;\n css += buildNeutralRgbVariables(lightSurfaceColors);\n css += buildRoleRgbScales(allPalettes.light);\n css += buildSemanticSurfaceRgbTuples(allPalettes.light, false);\n css += ` --ax-sys-color-bg-default: var(--ax-sys-color-lightest-surface);\\n`;\n css += ` --ax-sys-color-text-default: var(--ax-sys-color-on-lightest-surface);\\n`;\n css += ` --ax-sys-color-border-default: var(--ax-sys-color-border-lightest-surface);\\n`;\n css += `}\\n\\n`;\n\n css += `.ax-dark {\n --ax-sys-theme-isDark: 1;\n --ax-sys-scroller-track-color: rgba(var(--ax-sys-color-darker-surface));\n --ax-sys-scroller-thumb-color: rgba(var(--ax-sys-color-lightest-surface));\n\n`;\n css += buildNeutralRgbVariables(darkSurfaceColors);\n css += buildRoleRgbScales(allPalettes.dark);\n css += buildSemanticSurfaceRgbTuples(allPalettes.dark, true);\n css += ` --ax-sys-color-bg-default: var(--ax-sys-color-darkest-surface);\\n`;\n css += ` --ax-sys-color-text-default: var(--ax-sys-color-on-darkest-surface);\\n`;\n css += ` --ax-sys-color-border-default: var(--ax-sys-color-border-darkest-surface);\\n`;\n css += `}\\n\\n`;\n\n css += buildDefaultThemeCssTailLikePackage(buildAxLightPrimitivesBlock(allPalettes.light));\n\n return css;\n}\n\nfunction buildAxLightPrimitivesBlock(palettes: Record<string, AXThemeBuilderColorScale>): string {\n let css = buildNeutralRgbVariables(lightSurfaceColors);\n css += buildRoleRgbScales(palettes);\n css += buildSemanticSurfaceRgbTuples(palettes, false);\n css += ` --ax-sys-color-bg-default: var(--ax-sys-color-lightest-surface);\\n`;\n css += ` --ax-sys-color-text-default: var(--ax-sys-color-on-lightest-surface);\\n`;\n css += ` --ax-sys-color-border-default: var(--ax-sys-color-border-lightest-surface);\\n\\n`;\n return css;\n}\n\nfunction mergeExportSeeds(seeds: { light: { [role: string]: string }; dark: { [role: string]: string } }): {\n light: ExportSeedMap;\n dark: ExportSeedMap;\n} {\n const out: { light: ExportSeedMap; dark: ExportSeedMap } = {\n light: { ...DEFAULT_EXPORT_SEEDS_LIGHT },\n dark: { ...DEFAULT_EXPORT_SEEDS_DARK },\n };\n for (const role of EXPORT_ROOT_ROLE_ORDER) {\n const l = seeds.light[role]?.trim();\n const d = seeds.dark[role]?.trim();\n if (l) out.light[role] = l;\n if (d) out.dark[role] = d;\n }\n return out;\n}\n\nfunction buildNeutralRgbVariables(surfaceColors: Record<string, { bg: string; on: string; border: string }>): string {\n let css = '';\n for (const [name, colors] of Object.entries(surfaceColors)) {\n css += ` --ax-sys-color-${name}: ${colors.bg};\\n`;\n css += ` --ax-sys-color-on-${name}: ${colors.on};\\n`;\n css += ` --ax-sys-color-border-${name}: ${colors.border};\\n\\n`;\n }\n return css;\n}\n\nfunction buildRoleRgbScales(palettes: Record<string, AXThemeBuilderColorScale>): string {\n let css = '';\n for (const role of EXPORT_ROOT_ROLE_ORDER) {\n for (const shade of AX_THEME_SHADES) {\n const v = palettes[role]?.[String(shade) as keyof AXThemeBuilderColorScale];\n if (v) {\n css += ` --ax-sys-color-${role}-${shade}: ${v};\\n`;\n }\n }\n css += `\\n`;\n }\n return css;\n}\n\n/** Semantic layering (`*-lightest-surface`, …): omitted for grayscale `surface` role (matches default.css). */\nfunction buildSemanticSurfaceRgbTuples(palettes: Record<string, AXThemeBuilderColorScale>, isDark: boolean): string {\n const surfaceMap = {\n 'lightest-surface': '100',\n 'lighter-surface': '200',\n 'light-surface': '300',\n surface: '500',\n 'dark-surface': '600',\n 'darker-surface': '700',\n 'darkest-surface': '800',\n } as const satisfies Record<\n string,\n '50' | '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900' | '950'\n >;\n\n let css = '';\n for (const role of EXPORT_ROOT_ROLE_ORDER) {\n if (role === 'surface') continue;\n\n for (const [surfName, shadeKey] of Object.entries(surfaceMap)) {\n const surfaceColorStr = palettes[role]?.[shadeKey];\n const surfaceRgb = surfaceColorStr ? parseRgbTriplet(surfaceColorStr) : undefined;\n\n if (surfaceRgb) {\n const suffix = surfName === 'surface' ? 'surface' : surfName;\n\n css += ` --ax-sys-color-${role}-${suffix}: ${surfaceColorStr};\\n`;\n css += ` --ax-sys-color-on-${role}-${suffix}: ${contrastText(surfaceRgb, isDark)};\\n`;\n css += ` --ax-sys-color-border-${role}-${suffix}: ${borderColor(surfaceRgb, isDark)};\\n\\n`;\n }\n }\n }\n return css;\n}\n\n/** Resolves a flat color map into per-mode seed maps, applying user values to both modes. */\nexport function resolveSeedsFromFlat(colors?: Partial<Record<AXThemeBuilderColors, string>>): {\n light: ExportSeedMap;\n dark: ExportSeedMap;\n} {\n const out: { light: ExportSeedMap; dark: ExportSeedMap } = {\n light: { ...DEFAULT_EXPORT_SEEDS_LIGHT },\n dark: { ...DEFAULT_EXPORT_SEEDS_DARK },\n };\n\n if (!colors) {\n return out;\n }\n\n for (const role of EXPORT_ROOT_ROLE_ORDER) {\n const value = colors[role]?.trim();\n if (value) {\n out.light[role] = value;\n out.dark[role] = value;\n }\n }\n\n return out;\n}\n\n/** Builds full light/dark palettes from resolved per-mode seeds. */\nexport function buildFullPalette(\n seeds: { light: ExportSeedMap; dark: ExportSeedMap },\n roles?: AXThemeBuilderColors[],\n): AXThemeBuilderFullPalette {\n const roleList = roles ?? [...EXPORT_ROOT_ROLE_ORDER];\n const palette = {\n light: {} as AXThemeBuilderFullPalette['light'],\n dark: {} as AXThemeBuilderFullPalette['dark'],\n };\n\n for (const role of roleList) {\n palette.light[role] = generateLightPalette(seeds.light[role]);\n palette.dark[role] = generateDarkPalette(seeds.dark[role]);\n }\n\n return palette;\n}\n\nfunction buildThemeVariableBlock(\n mode: 'light' | 'dark',\n variants: AXThemeBuilderPalette,\n roles: AXThemeBuilderColors[],\n): string {\n const isDark = mode === 'dark';\n let css = buildPreviewNeutralSurfaces(isDark);\n\n for (const colorName of roles) {\n const roleVariants = variants[colorName];\n if (roleVariants) {\n css += generateCSSForRoles(roleVariants, colorName);\n }\n }\n\n css += buildSemanticSurfaceColorsForRoles(variants, roles, isDark);\n css += buildPreviewSemanticDefaults(isDark);\n css += buildPreviewThemeColorAliases();\n\n return css;\n}\n\nfunction buildSemanticSurfaceColorsForRoles(\n variants: AXThemeBuilderPalette,\n roles: AXThemeBuilderColors[],\n isDark: boolean,\n): string {\n let css = '';\n\n for (const role of roles) {\n if (role === 'surface') continue;\n\n const roleVariants = variants[role];\n\n for (const [surfaceName, shade] of Object.entries(ROLE_SURFACE_SHADE_MAP)) {\n const surfaceColorStr = roleVariants?.[String(shade) as keyof typeof roleVariants];\n const surfaceRgb = surfaceColorStr ? parseRgbTriplet(surfaceColorStr) : undefined;\n\n if (surfaceRgb) {\n css += ` --ax-sys-color-${role}-${surfaceName}: ${surfaceColorStr};\\n`;\n css += ` --ax-sys-color-on-${role}-${surfaceName}: ${contrastText(surfaceRgb, isDark)};\\n`;\n css += ` --ax-sys-color-border-${role}-${surfaceName}: ${borderColor(surfaceRgb, isDark)};\\n\\n`;\n }\n }\n }\n\n return css;\n}\n\n/** Scoped CSS for live theme preview (variables only, no Tailwind layer). */\nexport function buildPreviewThemeCSS(\n palette: AXThemeBuilderFullPalette,\n scope?: { light: string; dark: string },\n roles?: AXThemeBuilderColors[],\n): string {\n const roleList = roles ?? [...EXPORT_ROOT_ROLE_ORDER];\n const lightScope = scope?.light ?? ':root';\n const darkScope = scope?.dark ?? '.ax-dark';\n\n let css = `${lightScope} {\\n`;\n css += buildThemeVariableBlock('light', palette.light, roleList);\n css += '}\\n\\n';\n\n css += `${darkScope} {\\n`;\n css += buildThemeVariableBlock('dark', palette.dark, roleList);\n css += '}\\n\\n';\n\n return css;\n}\n","import {\n AXThemeBuilderColors,\n AXThemeBuilderFullPalette,\n} from './theme-builder.class';\nimport {\n buildFullPalette,\n buildPreviewThemeCSS,\n generateFullThemeCSS,\n resolveSeedsFromFlat,\n} from './theme-builder';\n\nexport type AXThemeColors = Partial<Record<AXThemeBuilderColors, string>>;\n\nexport interface AXCreateThemeOptions {\n /** 'file' (default) emits a complete stylesheet with :root/.ax-dark plus the Tailwind layer.\n * 'preview' emits variables only, scoped to `scope`, for injecting into a live page. */\n target?: 'file' | 'preview';\n /** Selectors used when target is 'preview'. */\n scope?: { light: string; dark: string };\n /** Roles to emit when target is 'preview'. Defaults to all roles. */\n roles?: AXThemeBuilderColors[];\n}\n\nexport interface AXTheme {\n /** The generated CSS. */\n css: string;\n /** Generated shade scales per role, for both modes. */\n palette: AXThemeBuilderFullPalette;\n}\n\n/**\n * Creates an ACoreX theme from a flat map of role seed colors.\n *\n * Each provided color is applied to both light and dark modes; dark shades are\n * derived via the dark-palette tone mapping. Omitted roles fall back to the\n * packaged default seeds (which may differ per mode for `secondary`, `danger`, and `surface`).\n */\nexport function createTheme(colors?: AXThemeColors, options?: AXCreateThemeOptions): AXTheme {\n const target = options?.target ?? 'file';\n const seeds = resolveSeedsFromFlat(colors);\n const roles = options?.roles;\n const palette = buildFullPalette(seeds, roles);\n\n const css =\n target === 'preview'\n ? buildPreviewThemeCSS(palette, options?.scope, roles)\n : generateFullThemeCSS({ light: seeds.light, dark: seeds.dark });\n\n return { css, palette };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-core-theme-builder.mjs","sources":["../../../../packages/core/theme-builder/src/lib/theme-builder-export-roles.ts","../../../../packages/core/theme-builder/src/lib/theme-builder-export-tail.ts","../../../../packages/core/theme-builder/src/lib/theme-builder.ts","../../../../packages/core/theme-builder/src/lib/create-theme.ts","../../../../packages/core/theme-builder/src/acorex-core-theme-builder.ts"],"sourcesContent":["/**\n * Canonical role order for full-theme CSS export (must stay in sync with theme tail + `:root` generation).\n */\n\n/** Roles that produce `--ax-sys-color-{role}-*` tokens under `:root` / `.ax-dark`. */\nexport const EXPORT_ROOT_ROLE_ORDER = [\n 'primary',\n 'secondary',\n 'success',\n 'warning',\n 'danger',\n 'surface',\n 'accent',\n 'accent1',\n 'accent2',\n 'accent3',\n 'accent4',\n 'accent5',\n 'accent6',\n] as const;\n\nexport type ExportRootRole = (typeof EXPORT_ROOT_ROLE_ORDER)[number];\n\n/**\n * Roles mirrored in `@theme` and compound `@utility` blocks.\n * Omits grayscale `surface` (handled via neutral tokens + `--ax-sys-color-surface-*` scale only).\n */\nexport const EXPORT_TAIL_THEME_PALETTE_ORDER = [\n 'primary',\n 'secondary',\n 'success',\n 'warning',\n 'danger',\n 'accent',\n 'accent1',\n 'accent2',\n 'accent3',\n 'accent4',\n 'accent5',\n 'accent6',\n] as const;\n\nexport type ExportTailPaletteRole = (typeof EXPORT_TAIL_THEME_PALETTE_ORDER)[number];\n","/**\n * Mirrors `packages/styles/themes/default.css` from `@theme inline {` through the end:\n * `@theme inline`, `.ax-dark .ax-light` subtree overrides, `.ax-dark` color-alias re-declaration,\n * role utilities, typography, headings, spacing.\n * Only `--ax-sys-*` RGB triplets in `:root` / `.ax-dark` vary (handled in ThemeBuilderService).\n * Extends the package theme with `accent1`…`accent6` after `accent` (seven accent palettes total).\n */\n\nimport { EXPORT_TAIL_THEME_PALETTE_ORDER, type ExportTailPaletteRole } from './theme-builder-export-roles';\n\nconst SEMANTIC_LEVELS = ['lightest', 'lighter', 'light', 'surface', 'dark', 'darker', 'darkest'] as const;\n\n/**\n * Default Tailwind scale (matches `ax-md`) wired to `--ax-sys-*-base` tokens.\n * Mirrors `packages/styles/themes/default.css` `:root` and `@theme inline` blocks.\n */\nexport function buildDefaultTailwindScaleBlock(scope: 'root' | 'theme' = 'root'): string {\n const comment =\n scope === 'theme'\n ? ' /* Standard Tailwind scale (matches ax-md) — wired to base tokens so all utilities respond to theme changes */\\n'\n : ' /* Standard Tailwind type scale (matches ax-md) — used when no ax-* size class is applied */\\n';\n\n return (\n comment +\n ` --spacing: var(--ax-sys-spacing-base);\n --text-xs: var(--ax-sys-text-xs-base);\n --text-sm: var(--ax-sys-text-sm-base);\n --text-base: var(--ax-sys-body-font-size);\n --text-lg: var(--ax-sys-text-lg-base);\n --text-xl: var(--ax-sys-text-xl-base);\n --leading-3: var(--ax-sys-leading-3-base);\n --leading-4: var(--ax-sys-leading-4-base);\n --leading-5: var(--ax-sys-leading-5-base);\n --leading-6: var(--ax-sys-leading-6-base);\n\n`\n );\n}\n\n/** Verbatim Tailwind utilities after `ax-accent`; matches default.css § max-w-8xl … ax-xl */\nconst THEME_TAIL_VERBATIM_FOOTER = `\n@utility max-w-8xl {\n max-width: 90rem;\n}\n\n@utility ax-state-disabled {\n @apply cursor-not-allowed opacity-50 *:cursor-not-allowed;\n}\n\n@utility ax-state-readonly {\n @apply cursor-text opacity-70 *:cursor-text;\n}\n\n@utility ax-fill {\n &.ax-default {\n @apply light-surface dark:dark-surface;\n }\n &.ax-editor-container {\n @apply focus-within:ring-primary/30 focus-within:border-primary focus-within:ring-3;\n }\n}\n\n@utility ax-flat {\n @apply rounded-none;\n &.ax-default {\n @apply border-border-lightest dark:border-border-darkest border-b bg-transparent;\n }\n &.ax-editor-container {\n @apply focus-within:border-primary!;\n }\n}\n\n@utility ax-solid {\n @apply bg-(--ax-comp-bg,var(--color-lightest)) text-(--ax-comp-text,var(--color-on-lightest)) dark:bg-(--ax-comp-bg,var(--color-darkest)) dark:text-(--ax-comp-text,var(--color-on-darkest));\n &.ax-default {\n @apply lightest-surface dark:darkest-surface border;\n }\n &.ax-state-selected {\n @apply bg-(--ax-comp-bg-darker,var(--color-light)) text-(--ax-comp-text-darker,var(--color-on-light)) dark:bg-(--ax-comp-bg-darker,var(--color-dark)) dark:text-(--ax-comp-text-darker,var(--color-on-dark));\n }\n &.ax-editor-container {\n @apply focus-within:ring-primary/30 focus-within:border-primary focus-within:ring-3;\n }\n}\n\n@utility ax-solid-interactive {\n @supports (color: color-mix(in lab, red, red)) {\n --ax-comp-ripple-color: color-mix(in oklab, var(--ax-comp-bg-lightest, var(--color-on-lightest)) 25%, transparent);\n }\n @apply ax-solid transition-colors;\n &:not(.ax-state-disabled, .ax-state-loading, .ax-state-selected) {\n &:hover,\n &:focus,\n &:focus-within,\n &:focus-visible {\n @apply bg-(--ax-comp-bg-dark,var(--color-lighter)) text-(--ax-comp-text-dark,var(--color-on-lighter)) dark:bg-(--ax-comp-bg-dark,var(--color-darker)) dark:text-(--ax-comp-text-dark,var(--color-on-darker));\n }\n }\n &:not(.ax-state-disabled, .ax-state-loading, .ax-state-selected):active {\n @apply bg-(--ax-comp-bg-darker,var(--color-light)) text-(--ax-comp-text-darker,var(--color-on-light)) ring-1 ring-(--ax-comp-bg-dark) ring-offset-1 dark:bg-(--ax-comp-bg-darker,var(--color-dark)) dark:text-(--ax-comp-text-darker,var(--color-on-dark));\n }\n}\n\n@utility ax-outline {\n @apply border bg-transparent;\n border-color: var(--ax-comp-edge, var(--ax-comp-bg, var(--color-border-lightest)));\n color: var(--ax-comp-ink, var(--ax-comp-bg, var(--color-on-lightest)));\n &.ax-default {\n @apply border-border-lightest dark:border-border-darkest border;\n }\n &.ax-state-selected {\n border-color: var(--ax-comp-edge-darker, var(--ax-comp-bg-darker, var(--color-border-light)));\n color: var(--ax-comp-ink-darker, var(--ax-comp-bg-darker, var(--color-on-light)));\n }\n &.ax-editor-container {\n @apply focus-within:ring-primary/30 focus-within:border-primary focus-within:ring-3;\n }\n}\n\n@utility ax-outline-interactive {\n @supports (color: color-mix(in lab, red, red)) {\n --ax-comp-ripple-color: color-mix(in oklab, var(--ax-comp-ink, var(--ax-comp-bg, var(--color-on-lightest))) 25%, transparent);\n }\n @apply ax-outline transition-colors;\n &:not(.ax-state-disabled, .ax-state-loading, .ax-state-selected) {\n &:hover,\n &:focus,\n &:focus-within,\n &:focus-visible {\n border-color: var(--ax-comp-edge-dark, var(--ax-comp-bg-dark, var(--color-border-lighter)));\n color: var(--ax-comp-ink-dark, var(--ax-comp-bg-dark, var(--color-on-lighter)));\n }\n }\n &:not(.ax-state-disabled, .ax-state-loading, .ax-state-selected):active {\n border-color: var(--ax-comp-edge-darker, var(--ax-comp-bg-darker, var(--color-border-light)));\n color: var(--ax-comp-ink-darker, var(--ax-comp-bg-darker, var(--color-on-light)));\n }\n}\n\n@utility ax-twotone {\n @apply bg-(--ax-comp-bg-lightest,var(--color-lighter)) text-(--ax-comp-text-lightest,var(--color-on-lighter)) dark:bg-(--ax-comp-bg-lightest,var(--color-darker)) dark:text-(--ax-comp-text-lightest,var(--color-on-darker));\n &.ax-state-selected {\n @apply bg-(--ax-comp-bg-light,var(--color-surface)) text-(--ax-comp-text-light,var(--color-on-surface));\n }\n}\n\n@utility ax-twotone-interactive {\n @supports (color: color-mix(in lab, red, red)) {\n --ax-comp-ripple-color: color-mix(in oklab, var(--ax-comp-ink, var(--ax-comp-bg, var(--color-on-lightest))) 25%, transparent);\n }\n @apply ax-twotone transition-colors;\n &:not(.ax-state-disabled, .ax-state-loading, .ax-state-selected) {\n &:hover,\n &:focus,\n &:focus-within,\n &:focus-visible {\n @apply bg-(--ax-comp-bg-lighter,var(--color-light)) text-(--ax-comp-text-lighter,var(--color-on-light)) dark:bg-(--ax-comp-bg-lighter,var(--color-dark)) dark:text-(--ax-comp-text-lighter,var(--color-on-dark));\n }\n }\n &:not(.ax-state-disabled, .ax-state-loading, .ax-state-selected):active {\n @apply bg-(--ax-comp-bg-light,var(--color-surface)) text-(--ax-comp-text-light,var(--color-on-surface));\n }\n}\n\n@utility ax-blank {\n @apply bg-transparent;\n color: var(--ax-comp-ink, var(--ax-comp-bg, var(--color-on-surface)));\n &.ax-state-selected {\n @apply bg-(--ax-comp-bg-lighter,var(--color-surface)) text-(--ax-comp-text-lighter,var(--color-on-surface));\n }\n}\n\n@utility ax-blank-interactive {\n @supports (color: color-mix(in lab, red, red)) {\n --ax-comp-ripple-color: color-mix(in oklab, var(--ax-comp-ink, var(--ax-comp-bg, var(--color-on-lightest))) 25%, transparent);\n }\n @apply ax-blank transition-colors;\n &:not(.ax-state-disabled, .ax-state-loading, .ax-state-selected) {\n &:hover,\n &:focus,\n &:focus-within,\n &:focus-visible {\n @apply bg-(--ax-comp-bg-lightest,var(--color-lighter)) text-(--ax-comp-text-lightest,var(--color-on-lighter)) dark:bg-(--ax-comp-bg-lightest,var(--color-darker)) dark:text-(--ax-comp-text-lightest,var(--color-on-darker));\n }\n }\n &:not(.ax-state-disabled, .ax-state-loading, .ax-state-selected):active {\n @apply bg-(--ax-comp-bg-lighter,var(--color-surface)) text-(--ax-comp-text-lighter,var(--color-on-surface));\n }\n}\n\n@utility links {\n @apply bg-transparent;\n color: var(--ax-comp-ink, var(--ax-comp-bg, var(--color-on-surface)));\n &.ax-state-selected {\n color: var(--ax-comp-ink-darker, var(--ax-comp-bg-darker, var(--color-on-surface)));\n }\n}\n\n@utility links-interactive {\n @supports (color: color-mix(in lab, red, red)) {\n --ax-comp-ripple-color: color-mix(in oklab, var(--ax-comp-ink, var(--ax-comp-bg, var(--color-on-lightest))) 25%, transparent);\n }\n @apply links transition-colors;\n &:not(.ax-state-disabled, .ax-state-loading, .ax-state-selected) {\n &:hover,\n &:focus,\n &:focus-within,\n &:focus-visible {\n color: var(--ax-comp-ink-dark, var(--ax-comp-bg-dark, var(--color-on-surface)));\n }\n }\n &:not(.ax-state-disabled, .ax-state-loading, .ax-state-selected):active {\n color: var(--ax-comp-ink-darker, var(--ax-comp-bg-darker, var(--color-on-surface)));\n }\n}\n@utility h1 {\n font-size: 2.5rem;\n font-weight: 500;\n line-height: 2.5rem;\n}\n@utility h2 {\n font-size: 2rem;\n font-weight: 500;\n line-height: 2rem;\n}\n@utility h3 {\n font-size: 1.75rem;\n font-weight: 500;\n line-height: 1.75rem;\n}\n@utility h4 {\n font-size: 1.5rem;\n font-weight: 500;\n line-height: 1.5rem;\n}\n@utility h5 {\n font-size: 1.125rem;\n font-weight: 500;\n line-height: 1.125rem;\n}\n@utility h6 {\n font-size: 1rem;\n font-weight: 500;\n line-height: 1rem;\n}\n@utility heading {\n width: 100%;\n border-bottom: 1px solid;\n border-color: rgba(var(--ax-sys-color-border-lightest-surface));\n line-height: 0.1em;\n margin: 1rem auto;\n}\n@utility heading-start {\n text-align: start;\n}\n@utility heading-center {\n text-align: center;\n}\n@utility heading-end {\n text-align: end;\n}\n@utility subtitle {\n opacity: 74%;\n display: block;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.625rem;\n}\n@utility tabs-fit {\n width: 100%;\n}\n@utility ax-xs {\n /* Spacing */\n --spacing: calc(var(--ax-sys-spacing-base) * 0.5);\n --ax-sys-border-radius: calc(var(--ax-sys-border-radius-base) * 0.5);\n\n /* Typography */\n --text-xs: calc(var(--ax-sys-text-xs-base) * 5 / 6);\n --text-sm: calc(var(--ax-sys-text-sm-base) * 11 / 14);\n --text-base: calc(var(--ax-sys-body-font-size) * 0.75);\n --text-lg: calc(var(--ax-sys-text-lg-base) * 7 / 9);\n --text-xl: calc(var(--ax-sys-text-xl-base) * 0.8);\n\n /* Line Heights */\n --leading-3: var(--ax-sys-leading-3-base);\n --leading-4: calc(var(--ax-sys-leading-4-base) * 0.875);\n --leading-5: calc(var(--ax-sys-leading-5-base) * 0.8);\n --leading-6: calc(var(--ax-sys-leading-6-base) * 5 / 6);\n}\n\n@utility ax-sm {\n /* Spacing */\n --spacing: calc(var(--ax-sys-spacing-base) * 0.75);\n --ax-sys-border-radius: calc(var(--ax-sys-border-radius-base) * 0.75);\n\n /* Typography */\n --text-xs: calc(var(--ax-sys-text-xs-base) * 11 / 12);\n --text-sm: calc(var(--ax-sys-text-sm-base) * 6 / 7);\n --text-base: calc(var(--ax-sys-body-font-size) * 0.875);\n --text-lg: calc(var(--ax-sys-text-lg-base) * 8 / 9);\n --text-xl: calc(var(--ax-sys-text-xl-base) * 0.9);\n\n /* Line Heights */\n --leading-3: calc(var(--ax-sys-leading-3-base) * 7 / 6);\n --leading-4: var(--ax-sys-leading-4-base);\n --leading-5: calc(var(--ax-sys-leading-5-base) * 0.9);\n --leading-6: calc(var(--ax-sys-leading-6-base) * 11 / 12);\n}\n\n@utility ax-md {\n /* Tailwind Default Scale */\n --spacing: var(--ax-sys-spacing-base);\n --ax-sys-border-radius: var(--ax-sys-border-radius-base);\n\n /* Typography */\n --text-xs: var(--ax-sys-text-xs-base);\n --text-sm: var(--ax-sys-text-sm-base);\n --text-base: var(--ax-sys-body-font-size);\n --text-lg: var(--ax-sys-text-lg-base);\n --text-xl: var(--ax-sys-text-xl-base);\n\n /* Line Heights */\n --leading-3: var(--ax-sys-leading-3-base);\n --leading-4: var(--ax-sys-leading-4-base);\n --leading-5: var(--ax-sys-leading-5-base);\n --leading-6: var(--ax-sys-leading-6-base);\n}\n\n@utility ax-lg {\n /* Spacing */\n --spacing: calc(var(--ax-sys-spacing-base) * 1.25);\n --ax-sys-border-radius: calc(var(--ax-sys-border-radius-base) * 1.25);\n\n /* Typography */\n --text-xs: calc(var(--ax-sys-text-xs-base) * 13 / 12);\n --text-sm: calc(var(--ax-sys-text-sm-base) * 15 / 14);\n --text-base: calc(var(--ax-sys-body-font-size) * 17 / 16);\n --text-lg: calc(var(--ax-sys-text-lg-base) * 10 / 9);\n --text-xl: calc(var(--ax-sys-text-xl-base) * 1.1);\n\n /* Line Heights */\n --leading-3: calc(var(--ax-sys-leading-3-base) * 4 / 3);\n --leading-4: calc(var(--ax-sys-leading-4-base) * 1.125);\n --leading-5: calc(var(--ax-sys-leading-5-base) * 1.1);\n --leading-6: calc(var(--ax-sys-leading-6-base) * 13 / 12);\n}\n\n@utility ax-xl {\n /* Spacing */\n --spacing: calc(var(--ax-sys-spacing-base) * 1.5);\n --ax-sys-border-radius: calc(var(--ax-sys-border-radius-base) * 1.5);\n\n /* Typography */\n --text-xs: calc(var(--ax-sys-text-xs-base) * 7 / 6);\n --text-sm: calc(var(--ax-sys-text-sm-base) * 8 / 7);\n --text-base: calc(var(--ax-sys-body-font-size) * 1.125);\n --text-lg: calc(var(--ax-sys-text-lg-base) * 11 / 9);\n --text-xl: calc(var(--ax-sys-text-xl-base) * 1.2);\n\n /* Line Heights */\n --leading-3: calc(var(--ax-sys-leading-3-base) * 1.5);\n --leading-4: calc(var(--ax-sys-leading-4-base) * 1.25);\n --leading-5: calc(var(--ax-sys-leading-5-base) * 1.2);\n --leading-6: calc(var(--ax-sys-leading-6-base) * 7 / 6);\n}\n`;\n\nconst SHADE_KEYS = ['50', '100', '200', '300', '400', '500', '600', '700', '800', '900', '950'] as const;\n\nfunction roleSectionTitle(role: string): string {\n if (role === 'accent') return 'Accent Surfaces';\n const accentN = /^accent(\\d+)$/.exec(role);\n if (accentN?.[1]) return `Accent ${accentN[1]} Surfaces`;\n return `${role.charAt(0).toUpperCase()}${role.slice(1)} Surfaces`;\n}\n\n/** @theme semantic lines for neutral UI surfaces (matches default.css) */\nfunction neutralThemeSemanticBlock(options?: { omitDuplicateSurfaceLine?: boolean }): string {\n let css = `\\n`;\n css += ` --color-lightest: rgba(var(--ax-sys-color-lightest-surface));\\n`;\n css += ` --color-on-lightest: rgba(var(--ax-sys-color-on-lightest-surface));\\n`;\n css += ` --color-border-lightest: rgba(var(--ax-sys-color-border-lightest-surface));\\n`;\n css += ` --color-lighter: rgba(var(--ax-sys-color-lighter-surface));\\n`;\n css += ` --color-on-lighter: rgba(var(--ax-sys-color-on-lighter-surface));\\n`;\n css += ` --color-border-lighter: rgba(var(--ax-sys-color-border-lighter-surface));\\n`;\n css += ` --color-light: rgba(var(--ax-sys-color-light-surface));\\n`;\n css += ` --color-on-light: rgba(var(--ax-sys-color-on-light-surface));\\n`;\n css += ` --color-border-light: rgba(var(--ax-sys-color-border-light-surface));\\n`;\n if (!options?.omitDuplicateSurfaceLine) {\n css += ` --color-surface: rgba(var(--ax-sys-color-surface));\\n`;\n }\n css += ` --color-on-surface: rgba(var(--ax-sys-color-on-surface));\\n`;\n css += ` --color-border-surface: rgba(var(--ax-sys-color-border-surface));\\n`;\n css += ` --color-dark: rgba(var(--ax-sys-color-dark-surface));\\n`;\n css += ` --color-on-dark: rgba(var(--ax-sys-color-on-dark-surface));\\n`;\n css += ` --color-border-dark: rgba(var(--ax-sys-color-border-dark-surface));\\n`;\n css += ` --color-darker: rgba(var(--ax-sys-color-darker-surface));\\n`;\n css += ` --color-on-darker: rgba(var(--ax-sys-color-on-darker-surface));\\n`;\n css += ` --color-border-darker: rgba(var(--ax-sys-color-border-darker-surface));\\n`;\n css += ` --color-darkest: rgba(var(--ax-sys-color-darkest-surface));\\n`;\n css += ` --color-on-darkest: rgba(var(--ax-sys-color-on-darkest-surface));\\n`;\n css += ` --color-border-darkest: rgba(var(--ax-sys-color-border-darkest-surface));\\n`;\n return css;\n}\n\n/** Matches default.css `@theme inline` block per palette role (ordering and duplicate `--color-{role}` lines). */\nfunction themeNumericAndSemanticForRole(\n role: ExportTailPaletteRole,\n options?: { omitMiddleRoleSurfaceColorDup?: boolean },\n): string {\n let css = ` /* ${roleSectionTitle(role)} */\\n`;\n css += ` --color-${role}: rgba(var(--ax-sys-color-${role}-surface));\\n`;\n for (const shade of SHADE_KEYS) {\n css += ` --color-${role}-${shade}: rgba(var(--ax-sys-color-${role}-${shade}));\\n`;\n }\n css += `\\n`;\n\n const emitTriplet = (level: 'lightest' | 'lighter' | 'light' | 'dark' | 'darker' | 'darkest'): void => {\n css += ` --color-${role}-${level}: rgba(var(--ax-sys-color-${role}-${level}-surface));\\n`;\n css += ` --color-on-${role}-${level}: rgba(var(--ax-sys-color-on-${role}-${level}-surface));\\n`;\n css += ` --color-border-${role}-${level}: rgba(var(--ax-sys-color-border-${role}-${level}-surface));\\n`;\n };\n\n emitTriplet('lightest');\n emitTriplet('lighter');\n emitTriplet('light');\n\n if (!options?.omitMiddleRoleSurfaceColorDup) {\n css += ` --color-${role}: rgba(var(--ax-sys-color-${role}-surface));\\n`;\n }\n css += ` --color-on-${role}: rgba(var(--ax-sys-color-on-${role}-surface));\\n`;\n css += ` --color-border-${role}: rgba(var(--ax-sys-color-border-${role}-surface));\\n`;\n\n emitTriplet('dark');\n emitTriplet('darker');\n emitTriplet('darkest');\n\n const last = EXPORT_TAIL_THEME_PALETTE_ORDER[EXPORT_TAIL_THEME_PALETTE_ORDER.length - 1];\n if (role !== last) css += `\\n`;\n return css;\n}\n\n/** Surface scale (--color-surface-50…) at top of @theme */\nfunction themeSurfaceScaleBlock(): string {\n let css = ` /* Surface Surfaces */\\n`;\n css += ` --color-surface: rgba(var(--ax-sys-color-surface));\\n`;\n for (const shade of SHADE_KEYS) {\n css += ` --color-surface-${shade}: rgba(var(--ax-sys-color-surface-${shade}));\\n`;\n }\n css += `\\n`;\n return css;\n}\n\nfunction utilitiesPrefixBlock(): string {\n return `@utility bg-default {\n background-color: var(--color-bg-default);\n}\n\n@utility text-default {\n color: var(--color-text-default);\n}\n\n@utility border-default {\n border-color: var(--color-border-default);\n}\n\n@utility text {\n color: var(--color-text-default);\n}\n\n@utility border-s-default {\n border-inline-start-width: 1px;\n}\n\n@utility border-e-default {\n border-inline-end-width: 1px;\n}\n\n@utility border-t-default {\n border-top-width: 1px;\n}\n\n@utility border-b-default {\n border-bottom-width: 1px;\n}\n\n@utility border-x-default {\n border-left-width: 1px;\n border-right-width: 1px;\n}\n\n@utility border-y-default {\n border-top-width: 1px;\n border-bottom-width: 1px;\n}\n\n`;\n}\n\nfunction utilityClassName(role: string, level: (typeof SEMANTIC_LEVELS)[number]): string {\n return level === 'surface' ? `${role}-surface` : `${role}-${level}-surface`;\n}\n\n/** Background / foreground / border for one semantic level */\nfunction cssTripletVars(role: string, level: (typeof SEMANTIC_LEVELS)[number]): { bg: string; fg: string; bd: string } {\n if (level === 'surface') {\n return {\n bg: `var(--color-${role})`,\n fg: `var(--color-on-${role})`,\n bd: `var(--color-border-${role})`,\n };\n }\n return {\n bg: `var(--color-${role}-${level})`,\n fg: `var(--color-on-${role}-${level})`,\n bd: `var(--color-border-${role}-${level})`,\n };\n}\n\nconst AX_DARK_THEME_ALIAS_COMMENT = `/*\n * Re-declare every Tailwind theme color alias for the \\`.ax-dark\\` subtree.\n * \\`@theme inline\\` resolves inner \\`var(--ax-sys-*)\\` at :root; this block recomputes \\`--color-*\\`\n * on \\`.ax-dark\\` so localized dark regions track updated primitives.\n * Static tokens (\\`--radius-default\\`, breakpoints) are omitted — same rationale as default.css.\n */\n\n`;\n\nconst AX_LIGHT_SUBTREE_COMMENT = `/*\n * Re-declare light theme primitives and Tailwind color aliases for the \\`.ax-light\\` subtree.\n * Mirrors the \\`.ax-dark\\` override pattern so localized light zones work inside a dark page.\n */\n\n`;\n\n/** Shared \\`--color-*\\` alias body for \\`@theme inline\\`, \\`.ax-dark .ax-light\\`, and \\`.ax-dark\\` alias blocks. */\nfunction buildThemeColorAliasesBody(options?: {\n omitMiddleRoleSurfaceColorDup?: boolean;\n omitDuplicateSurfaceLine?: boolean;\n}): string {\n let css = ` --color-bg-default: rgba(var(--ax-sys-color-bg-default));\\n`;\n css += ` --color-text-default: rgba(var(--ax-sys-color-text-default));\\n`;\n css += ` --color-border-default: rgba(var(--ax-sys-color-border-default));\\n\\n`;\n css += themeSurfaceScaleBlock();\n css += neutralThemeSemanticBlock({ omitDuplicateSurfaceLine: options?.omitDuplicateSurfaceLine });\n for (const role of EXPORT_TAIL_THEME_PALETTE_ORDER) {\n css += themeNumericAndSemanticForRole(role, {\n omitMiddleRoleSurfaceColorDup: options?.omitMiddleRoleSurfaceColorDup,\n });\n }\n return css;\n}\n\nfunction buildAxDarkThemeColorAliases(): string {\n let css = AX_DARK_THEME_ALIAS_COMMENT;\n css += `.ax-dark {\\n`;\n css += ` --ax-sys-theme-isDark: 1;\\n`;\n css += buildThemeColorAliasesBody({\n omitMiddleRoleSurfaceColorDup: true,\n omitDuplicateSurfaceLine: true,\n });\n css += `}\\n\\n`;\n return css;\n}\n\n/** Light subtree inside a dark page — primitives are generated from the light palette in ThemeBuilderService. */\nexport function buildAxLightSubtreeBlock(primitivesCss: string): string {\n let css = AX_LIGHT_SUBTREE_COMMENT;\n css += `.ax-dark .ax-light {\\n`;\n css += ` --ax-sys-theme-isDark: 0;\\n`;\n css += ` --ax-sys-scroller-track-color: rgba(var(--ax-sys-color-light-surface));\\n`;\n css += ` --ax-sys-scroller-thumb-color: rgba(var(--ax-sys-color-darkest-surface));\\n\\n`;\n css += primitivesCss;\n css += buildThemeColorAliasesBody({\n omitMiddleRoleSurfaceColorDup: true,\n omitDuplicateSurfaceLine: true,\n });\n css += `}\\n\\n`;\n return css;\n}\n\nfunction compoundSurfaceUtilities(role: ExportTailPaletteRole): string {\n let css = `/* ${roleSectionTitle(role)} */\\n\\n`;\n for (const level of SEMANTIC_LEVELS) {\n const name = utilityClassName(role, level);\n const { bg, fg, bd } = cssTripletVars(role, level);\n css += `@utility ${name} {\n background-color: ${bg};\n color: ${fg};\n border-color: ${bd};\n}\n\n`;\n }\n css += `@utility ax-${role} {\\n`;\n for (const level of SEMANTIC_LEVELS) {\n const suf = level === 'surface' ? '' : `-${level}`;\n const refs = cssTripletVars(role, level);\n css += ` --ax-comp-bg${suf}: ${refs.bg};\\n`;\n css += ` --ax-comp-text${suf}: ${refs.fg};\\n`;\n css += ` --ax-comp-border${suf}: ${refs.bd};\\n`;\n }\n css += ` --ax-comp-ink: var(--color-${role});\\n`;\n css += ` --ax-comp-ink-dark: var(--color-${role}-dark);\\n`;\n css += ` --ax-comp-ink-darker: var(--color-${role}-darker);\\n`;\n css += ` --ax-comp-edge: var(--color-${role});\\n`;\n css += ` --ax-comp-edge-dark: var(--color-${role}-dark);\\n`;\n css += ` --ax-comp-edge-darker: var(--color-${role}-darker);\\n`;\n css += `}\n\n`;\n return css;\n}\n\n/** Neutral lightest … darkest utilities (between Danger and Accent in default.css) */\nfunction neutralCompoundSurfaceUtilities(): string {\n return `/* Surface Surfaces */\n\n@utility lightest-surface {\n background-color: var(--color-lightest);\n color: var(--color-on-lightest);\n border-color: var(--color-border-lightest);\n}\n\n@utility lighter-surface {\n background-color: var(--color-lighter);\n color: var(--color-on-lighter);\n border-color: var(--color-border-lighter);\n}\n\n@utility light-surface {\n background-color: var(--color-light);\n color: var(--color-on-light);\n border-color: var(--color-border-light);\n}\n\n@utility surface {\n background-color: var(--color-surface);\n color: var(--color-on-surface);\n border-color: var(--color-border-surface);\n}\n\n@utility dark-surface {\n background-color: var(--color-dark);\n color: var(--color-on-dark);\n border-color: var(--color-border-dark);\n}\n\n@utility darker-surface {\n background-color: var(--color-darker);\n color: var(--color-on-darker);\n border-color: var(--color-border-darker);\n}\n\n@utility darkest-surface {\n background-color: var(--color-darkest);\n color: var(--color-on-darkest);\n border-color: var(--color-border-darkest);\n}\n\n@utility ax-surface {\n --ax-comp-bg-lightest: var(--color-light);\n --ax-comp-text-lightest: var(--color-on-light);\n --ax-comp-border-lightest: var(--color-border-light);\n --ax-comp-bg-lighter: var(--color-surface);\n --ax-comp-text-lighter: var(--color-on-surface);\n --ax-comp-border-lighter: var(--color-border-surface);\n --ax-comp-bg-light: var(--color-dark);\n --ax-comp-text-light: var(--color-on-dark);\n --ax-comp-border-light: var(--color-border-dark);\n --ax-comp-bg: var(--color-surface);\n --ax-comp-text: var(--color-on-surface);\n --ax-comp-border: var(--color-border-surface);\n --ax-comp-bg-dark: var(--color-dark);\n --ax-comp-text-dark: var(--color-on-dark);\n --ax-comp-border-dark: var(--color-border-dark);\n --ax-comp-bg-darker: var(--color-darker);\n --ax-comp-text-darker: var(--color-on-darker);\n --ax-comp-border-darker: var(--color-border-darker);\n --ax-comp-bg-darkest: var(--color-darkest);\n --ax-comp-text-darkest: var(--color-on-darkest);\n --ax-comp-border-darkest: var(--color-border-darkest);\n --ax-comp-ink: var(--color-on-surface);\n --ax-comp-ink-dark: var(--color-on-dark);\n --ax-comp-ink-darker: var(--color-on-darker);\n --ax-comp-edge: var(--color-border-surface);\n --ax-comp-edge-dark: var(--color-border-dark);\n --ax-comp-edge-darker: var(--color-border-darker);\n}\n\n`;\n}\n\n/**\n * Tailwind \\`--color-*\\` aliases for theme-builder live preview.\n * Recomputes against container-scoped \\`--ax-sys-color-*\\` (same roles as default.css \\`@theme inline\\`).\n */\nexport function buildPreviewThemeColorAliases(): string {\n let css = ` --color-bg-default: rgba(var(--ax-sys-color-bg-default));\\n`;\n css += ` --color-text-default: rgba(var(--ax-sys-color-text-default));\\n`;\n css += ` --color-border-default: rgba(var(--ax-sys-color-border-default));\\n`;\n css += neutralThemeSemanticBlock();\n for (const role of EXPORT_TAIL_THEME_PALETTE_ORDER) {\n css += ` --color-${role}: rgba(var(--ax-sys-color-${role}-surface));\\n`;\n css += ` --color-on-${role}: rgba(var(--ax-sys-color-on-${role}-surface));\\n`;\n css += ` --color-border-${role}: rgba(var(--ax-sys-color-border-${role}-surface));\\n`;\n }\n return css;\n}\n\nexport function buildDefaultThemeCssTailLikePackage(axLightPrimitives?: string): string {\n let css = `@theme inline {\n --color-bg-default: rgba(var(--ax-sys-color-bg-default));\n --color-text-default: rgba(var(--ax-sys-color-text-default));\n --color-border-default: rgba(var(--ax-sys-color-border-default));\n --radius-default: var(--ax-sys-border-radius);\n --breakpoint-3xl: 1920px;\n --breakpoint-4xl: 2560px;\n`;\n css += themeSurfaceScaleBlock();\n css += neutralThemeSemanticBlock();\n for (const role of EXPORT_TAIL_THEME_PALETTE_ORDER) {\n css += themeNumericAndSemanticForRole(role);\n }\n css += buildDefaultTailwindScaleBlock('theme');\n css += `}\n\n`;\n\n if (axLightPrimitives) {\n css += buildAxLightSubtreeBlock(axLightPrimitives);\n }\n\n css += buildAxDarkThemeColorAliases();\n\n css += utilitiesPrefixBlock();\n\n for (const role of EXPORT_TAIL_THEME_PALETTE_ORDER) {\n if (role.startsWith('accent')) continue;\n css += compoundSurfaceUtilities(role);\n }\n css += neutralCompoundSurfaceUtilities();\n for (const role of EXPORT_TAIL_THEME_PALETTE_ORDER) {\n if (role.startsWith('accent')) {\n css += compoundSurfaceUtilities(role);\n }\n }\n css += THEME_TAIL_VERBATIM_FOOTER;\n return css;\n}\n","import * as culori from 'culori';\nimport { EXPORT_ROOT_ROLE_ORDER, type ExportRootRole } from './theme-builder-export-roles';\nimport {\n buildDefaultTailwindScaleBlock,\n buildDefaultThemeCssTailLikePackage,\n buildPreviewThemeColorAliases,\n} from './theme-builder-export-tail';\nimport {\n AXThemeBuilderColorVariants,\n AXThemeBuilderColors,\n AXThemeBuilderFullPalette,\n AXThemeBuilderPalette,\n} from './theme-builder.class';\n\ntype AXOklchColor = { l: number; c: number; h: number; mode: 'oklch'; alpha?: number };\ntype AXRgbColor = { r: number; g: number; b: number; mode: 'rgb'; alpha?: number };\n\ntype AXThemeBuilderColorScale = Record<AXThemeBuilderColorVariants, string>;\n\nconst AX_THEME_SHADES = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950] as const;\n\nconst ROLE_SURFACE_SHADE_MAP = {\n 'lightest-surface': 100,\n 'lighter-surface': 200,\n 'light-surface': 300,\n surface: 500,\n 'dark-surface': 600,\n 'darker-surface': 700,\n 'darkest-surface': 800,\n} as const;\n\nconst toOklch = culori.converter('oklch');\nconst toRgb = culori.converter('rgb');\nconst toHsl = culori.converter('hsl');\nconst toGamut = culori.toGamut('rgb');\n\nconst lightSurfaceColors = {\n 'lightest-surface': { bg: '255, 255, 255', on: '10, 10, 10', border: '233, 233, 233' },\n 'lighter-surface': { bg: '250, 250, 250', on: '10, 10, 10', border: '228, 228, 228' },\n 'light-surface': { bg: '245, 245, 245', on: '10, 10, 10', border: '223, 223, 223' },\n surface: { bg: '240, 240, 241', on: '10, 10, 10', border: '218, 218, 218' },\n 'dark-surface': { bg: '235, 235, 236', on: '10, 10, 10', border: '213, 213, 213' },\n 'darker-surface': { bg: '230, 230, 231', on: '10, 10, 10', border: '208, 208, 208' },\n 'darkest-surface': { bg: '224, 224, 225', on: '10, 10, 10', border: '202, 202, 202' },\n};\nconst darkSurfaceColors = {\n 'lightest-surface': { bg: '56, 56, 56', on: '245, 245, 245', border: '64, 64, 64' },\n 'lighter-surface': { bg: '49, 49, 49', on: '245, 245, 245', border: '56, 56, 56' },\n 'light-surface': { bg: '42, 42, 42', on: '245, 245, 245', border: '50, 50, 50' },\n surface: { bg: '33, 33, 33', on: '245, 245, 245', border: '44, 44, 44' },\n 'dark-surface': { bg: '27, 27, 27', on: '245, 245, 245', border: '38, 38, 38' },\n 'darker-surface': { bg: '20, 20, 20', on: '245, 245, 245', border: '32, 32, 32' },\n 'darkest-surface': { bg: '10, 10, 10', on: '245, 245, 245', border: '28, 28, 28' },\n};\n\n/** Mirrors packaged default theme (+ `accent1`…`accent6`). Only palette RGB triplets differ from static defaults. */\n\ntype ExportSeedMap = Record<ExportRootRole, string>;\n\nconst DEFAULT_EXPORT_SEEDS_LIGHT: ExportSeedMap = {\n primary: 'rgb(43, 127, 255)',\n secondary: 'rgb(106, 114, 130)',\n success: 'rgb(0, 188, 125)',\n warning: 'rgb(253, 154, 0)',\n danger: 'rgb(255, 32, 86)',\n surface: 'rgb(194, 194, 194)',\n accent: 'rgb(6, 182, 212)',\n accent1: 'rgb(217, 70, 239)',\n accent2: 'rgb(249, 115, 22)',\n accent3: 'rgb(20, 184, 166)',\n accent4: 'rgb(99, 102, 241)',\n accent5: 'rgb(236, 72, 153)',\n accent6: 'rgb(120, 113, 108)',\n};\n\nconst DEFAULT_EXPORT_SEEDS_DARK: ExportSeedMap = {\n primary: 'rgb(43, 127, 255)',\n secondary: 'rgb(153, 161, 175)',\n success: 'rgb(0, 188, 125)',\n warning: 'rgb(253, 154, 0)',\n danger: 'rgb(255, 99, 126)',\n surface: 'rgb(33, 33, 33)',\n accent: 'rgb(6, 182, 212)',\n accent1: 'rgb(217, 70, 239)',\n accent2: 'rgb(249, 115, 22)',\n accent3: 'rgb(20, 184, 166)',\n accent4: 'rgb(99, 102, 241)',\n accent5: 'rgb(236, 72, 153)',\n accent6: 'rgb(120, 113, 108)',\n};\n\nconst THEME_CSS_PREAMBLE = `@import 'tailwindcss';\n@import 'tw-animate';\n\n@custom-variant dark (&:where(.ax-dark, .ax-dark *):not(:where(.ax-light, .ax-light *)));\n@custom-variant hover (&:hover);\n\ninput:-webkit-autofill,\ninput:-webkit-autofill:hover,\ninput:-webkit-autofill:focus,\ntextarea:-webkit-autofill,\nselect:-webkit-autofill {\n -webkit-box-shadow: 0 0 0 1000px transparent inset !important;\n -webkit-text-fill-color: inherit !important;\n transition: background-color 9999s ease-in-out 0s;\n}\n\n@layer base {\n * {\n border-color: var(--color-border-default);\n scrollbar-width: thin;\n scrollbar-color: var(--ax-sys-scroller-thumb-color) var(--ax-sys-scroller-track-color);\n\n ::-webkit-scrollbar {\n width: var(--ax-sys-scroller-size);\n height: var(--ax-sys-scroller-size);\n }\n\n ::-webkit-scrollbar-track {\n background: var(--ax-sys-scroller-track-color);\n border-radius: var(--ax-sys-scroller-size-radius);\n }\n\n ::-webkit-scrollbar-thumb {\n background: var(--ax-sys-scroller-thumb-color);\n border-radius: var(--ax-sys-scroller-size-radius);\n }\n }\n}\n\nhtml {\n background-color: rgba(var(--ax-sys-color-lightest-surface));\n color: rgba(var(--ax-sys-color-on-lightest-surface));\n}\n\nhtml.ax-dark {\n background-color: rgba(var(--ax-sys-color-darkest-surface));\n color: rgba(var(--ax-sys-color-on-darkest-surface));\n}\n\n`;\n\n/** Size scope classes before \\`:root\\` (matches default.css). */\nconst THEME_SIZE_SCOPE_CLASSES = `.ax-xs {\n --ax-sys-size: ax-xs;\n}\n.ax-sm {\n --ax-sys-size: ax-sm;\n}\n.ax-md {\n --ax-sys-size: ax-md;\n}\n.ax-lg {\n --ax-sys-size: ax-lg;\n}\n.ax-xl {\n --ax-sys-size: ax-xl;\n}\n\n`;\n\nconst THEME_EXPORT_ROOT_METADATA = `:root {\n --ax-sys-theme-isDark: 0;\n --ax-sys-icon-size: 100%;\n --ax-sys-icon-weight: 400;\n --ax-sys-size-base: 2.5rem;\n --ax-overlay-full-width: 93;\n --ax-sys-icon-width: inherit;\n --ax-sys-icon-height: inherit;\n --ax-sys-body-font-size: 1rem;\n --ax-sys-border-radius-base: 0.5rem;\n --ax-sys-spacing-base: 0.25rem;\n --ax-sys-text-xs-base: 0.75rem;\n --ax-sys-text-sm-base: 0.875rem;\n --ax-sys-text-lg-base: 1.125rem;\n --ax-sys-text-xl-base: 1.25rem;\n --ax-sys-leading-3-base: 0.75rem;\n --ax-sys-leading-4-base: 1rem;\n --ax-sys-leading-5-base: 1.25rem;\n --ax-sys-leading-6-base: 1.5rem;\n\n${buildDefaultTailwindScaleBlock('root')} --ax-sys-border-radius: var(--ax-sys-border-radius-base);\n --ax-sys-transition-duration: 150ms;\n --ax-sys-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n\n --ax-sys-scroller-size: 5px;\n --ax-sys-scroller-size-radius: 3px;\n --ax-sys-scroller-track-color: rgba(var(--ax-sys-color-light-surface));\n --ax-sys-scroller-thumb-color: rgba(var(--ax-sys-color-darkest-surface));\n\n`;\n\nfunction generateLightPalette(seedHex: string): AXThemeBuilderColorScale {\n const shadeValueMap: Record<number, number> = {\n 50: 40,\n 100: 90,\n 200: 160,\n 300: 270,\n 400: 410,\n 500: 500,\n 600: 590,\n 700: 700,\n 800: 790,\n 900: 860,\n 950: 1060,\n };\n\n const initialColor = toOklch(normalizeCssColor(seedHex));\n if (!initialColor) return {} as AXThemeBuilderColorScale;\n\n const { l: initialLightness, c: initialChroma, h: initialHue } = initialColor;\n const lightModeTones: { [key: number]: number } = {};\n\n AX_THEME_SHADES.forEach((shadeKey) => {\n const shadeValue = shadeValueMap[shadeKey];\n if (shadeValue <= 500) {\n lightModeTones[shadeKey] = (-shadeValue + shadeValue * initialLightness + 500) / 500;\n } else {\n lightModeTones[shadeKey] = (1 - (shadeValue - 500) / 500) * (initialLightness - 0.3) + 0.3;\n }\n });\n\n const lightMode: AXThemeBuilderColorScale = {} as AXThemeBuilderColorScale;\n\n AX_THEME_SHADES.forEach((shade) => {\n const oklchColor: AXOklchColor = {\n l: lightModeTones[shade],\n c: initialChroma,\n h: initialHue ?? 0,\n mode: 'oklch',\n };\n\n let gamutMappedColor = toGamut(oklchColor) || oklchColor;\n\n if (shade === 950 || shade === 900 || shade === 800) {\n const oklchGamutMapped = toOklch(gamutMappedColor) as AXOklchColor;\n if (oklchGamutMapped) {\n if (shade === 950) {\n oklchGamutMapped.c *= 1 - 0.5;\n } else if (shade === 900) {\n oklchGamutMapped.c *= 1 - 0.33;\n } else if (shade === 800) {\n oklchGamutMapped.c *= 1 - 0.08;\n }\n gamutMappedColor = oklchGamutMapped;\n }\n }\n\n const rgbColor = toRgb(gamutMappedColor);\n\n if (rgbColor) {\n lightMode[String(shade) as keyof AXThemeBuilderColorScale] = formatRgbTriplet(rgbColor as AXRgbColor);\n }\n });\n\n const color500 = parseRgbTriplet(lightMode['500']);\n if (color500) {\n lightMode['on'] = contrastText(color500, false);\n }\n lightMode['on-contrast'] = lightMode['900'];\n\n return lightMode;\n}\n\nfunction generateDarkPalette(seedHex: string): AXThemeBuilderColorScale {\n const initialColor = toOklch(normalizeCssColor(seedHex));\n if (!initialColor) return {} as AXThemeBuilderColorScale;\n\n const { l: initialLightness, c: initialChroma, h: initialHue } = initialColor;\n const darkModeTones: { [key: number]: number } = {};\n\n AX_THEME_SHADES.forEach((shade) => {\n if (shade <= 700) {\n darkModeTones[shade] = (-shade + shade * initialLightness + 700) / 700;\n } else {\n darkModeTones[shade] = (1 - (shade - 700) / 700) * (initialLightness - 0.3) + 0.3;\n }\n });\n\n const darkMode: AXThemeBuilderColorScale = {} as AXThemeBuilderColorScale;\n\n AX_THEME_SHADES.forEach((shade) => {\n const oklchColor: AXOklchColor = {\n l: darkModeTones[shade],\n c: initialChroma,\n h: initialHue ?? 0,\n mode: 'oklch',\n };\n\n const gamutMapped = toGamut(oklchColor) || oklchColor;\n const rgbColor = toRgb(gamutMapped);\n\n if (rgbColor) {\n darkMode[String(shade) as keyof AXThemeBuilderColorScale] = formatRgbTriplet(rgbColor as AXRgbColor);\n }\n });\n\n const color500 = parseRgbTriplet(darkMode['500']);\n const color200 = parseRgbTriplet(darkMode['200']);\n if (color500) {\n darkMode['on'] = contrastText(color500, true);\n }\n if (color200) {\n darkMode['on-contrast'] = contrastText(color200, true);\n }\n\n return darkMode;\n}\n\nfunction lightnessCalc(hue: number): number {\n if (hue <= 80) return 0.06 * hue + 75;\n if (hue < 270) return -0.07 * hue + 85.82;\n return 0.09 * hue + 42.6;\n}\n\nfunction isDarkOnSurface(lightness: number, hue: number, isDark: boolean): boolean {\n const threshold = lightnessCalc(hue);\n if (isDark) {\n return lightness >= (threshold - 15) / 100;\n }\n return lightness >= threshold / 100;\n}\n\nfunction contrastText(color: AXRgbColor, isDark: boolean): string {\n const oklchColor = toOklch(color) as AXOklchColor;\n if (!oklchColor) return '0, 0, 0';\n\n const { l: oklchLightness, c: chroma, h: hue } = oklchColor;\n let newLightness: number;\n\n if (isDark) {\n newLightness = isDarkOnSurface(oklchLightness, hue ?? 0, true) ? 0.2 : 0.995;\n } else {\n newLightness = isDarkOnSurface(oklchLightness, hue ?? 0, false) ? 0.3 : 0.995;\n }\n\n const contrastOklch: AXOklchColor = { l: newLightness, c: chroma, h: hue, mode: 'oklch' };\n\n const gamutMapped = toGamut(contrastOklch) || contrastOklch;\n const finalRgb = toRgb(gamutMapped);\n return formatRgbTriplet(finalRgb as AXRgbColor);\n}\n\nfunction borderColor(color: AXRgbColor, isDark: boolean): string {\n const hslColor = toHsl(color);\n if (!hslColor) return '0, 0, 0';\n\n if (isDark) {\n hslColor.l += 0.09;\n } else {\n hslColor.l -= 0.07;\n }\n\n hslColor.l = Math.max(0, Math.min(1, hslColor.l));\n\n const finalRgb = toRgb(hslColor);\n return formatRgbTriplet(finalRgb as AXRgbColor);\n}\n\nfunction parseRgbTriplet(rgbStr: string): AXRgbColor | undefined {\n if (!rgbStr) return undefined;\n const [r, g, b] = rgbStr.split(',').map(Number);\n return { mode: 'rgb', r: r / 255, g: g / 255, b: b / 255 };\n}\n\nexport function formatRgbTriplet(color: AXRgbColor): string {\n const r = Math.min(255, Math.max(0, Math.round(color.r * 255)));\n const g = Math.min(255, Math.max(0, Math.round(color.g * 255)));\n const b = Math.min(255, Math.max(0, Math.round(color.b * 255)));\n return `${r}, ${g}, ${b}`;\n}\n\n/** Accepts `#hex`, `rgb()`, `rgba()`, named colors … for culori. */\nfunction normalizeCssColor(css: string): string {\n const t = css.trim();\n const parsed = culori.parse(t);\n if (!parsed) return t;\n const hex = culori.formatHex(parsed);\n return hex ?? t;\n}\n\n/** Neutral UI surfaces for live preview (static values from default.css \\`:root\\`). */\nfunction buildPreviewNeutralSurfaces(isDark: boolean): string {\n return buildNeutralRgbVariables(isDark ? darkSurfaceColors : lightSurfaceColors);\n}\n\n/** Default bg/text/border primitives for live preview. */\nfunction buildPreviewSemanticDefaults(isDark: boolean): string {\n if (isDark) {\n return (\n ` --ax-sys-color-bg-default: var(--ax-sys-color-darkest-surface);\\n` +\n ` --ax-sys-color-text-default: var(--ax-sys-color-on-darkest-surface);\\n` +\n ` --ax-sys-color-border-default: var(--ax-sys-color-border-darkest-surface);\\n`\n );\n }\n return (\n ` --ax-sys-color-bg-default: var(--ax-sys-color-lightest-surface);\\n` +\n ` --ax-sys-color-text-default: var(--ax-sys-color-on-lightest-surface);\\n` +\n ` --ax-sys-color-border-default: var(--ax-sys-color-border-lightest-surface);\\n`\n );\n}\n\nfunction generateCSSForRoles(palette: AXThemeBuilderColorScale, role: string): string {\n let css = '\\n';\n Object.entries(palette).forEach(([shade, rgbColor]) => {\n if (shade === 'on') {\n css += ` --ax-sys-color-on-${role}: ${rgbColor};\\n`;\n } else if (shade === 'on-contrast') {\n css += ` --ax-sys-color-on-contrast-${role}: ${rgbColor};\\n`;\n } else {\n css += ` --ax-sys-color-${role}-${shade}: ${rgbColor};\\n`;\n }\n });\n return css;\n}\n\n/**\n * Produces CSS aligned with `packages/styles/themes/default.css`: same sections, directives,\n * `@theme inline`, `.ax-dark .ax-light` / `.ax-dark` color-alias re-declaration, and utility layout.\n * Only `--ax-sys-color-*` RGB triplets (and thus derived contrasts/borders) differ from the packaged default theme.\n * Includes all roles in {@link EXPORT_ROOT_ROLE_ORDER}: `accent` plus `accent1`–`accent6`.\n */\nexport function generateFullThemeCSS(seeds: {\n light: { [role: string]: string };\n dark: { [role: string]: string };\n}): string {\n const merged = mergeExportSeeds(seeds);\n const allPalettes: {\n light: Record<string, AXThemeBuilderColorScale>;\n dark: Record<string, AXThemeBuilderColorScale>;\n } = {\n light: {},\n dark: {},\n };\n\n for (const role of EXPORT_ROOT_ROLE_ORDER) {\n allPalettes.light[role] = generateLightPalette(merged.light[role]);\n allPalettes.dark[role] = generateDarkPalette(merged.dark[role]);\n }\n\n let css = THEME_CSS_PREAMBLE;\n css += THEME_SIZE_SCOPE_CLASSES;\n css += THEME_EXPORT_ROOT_METADATA;\n css += buildNeutralRgbVariables(lightSurfaceColors);\n css += buildRoleRgbScales(allPalettes.light);\n css += buildSemanticSurfaceRgbTuples(allPalettes.light, false);\n css += ` --ax-sys-color-bg-default: var(--ax-sys-color-lightest-surface);\\n`;\n css += ` --ax-sys-color-text-default: var(--ax-sys-color-on-lightest-surface);\\n`;\n css += ` --ax-sys-color-border-default: var(--ax-sys-color-border-lightest-surface);\\n`;\n css += `}\\n\\n`;\n\n css += `.ax-dark {\n --ax-sys-theme-isDark: 1;\n --ax-sys-scroller-track-color: rgba(var(--ax-sys-color-darker-surface));\n --ax-sys-scroller-thumb-color: rgba(var(--ax-sys-color-lightest-surface));\n\n`;\n css += buildNeutralRgbVariables(darkSurfaceColors);\n css += buildRoleRgbScales(allPalettes.dark);\n css += buildSemanticSurfaceRgbTuples(allPalettes.dark, true);\n css += ` --ax-sys-color-bg-default: var(--ax-sys-color-darkest-surface);\\n`;\n css += ` --ax-sys-color-text-default: var(--ax-sys-color-on-darkest-surface);\\n`;\n css += ` --ax-sys-color-border-default: var(--ax-sys-color-border-darkest-surface);\\n`;\n css += `}\\n\\n`;\n\n css += buildDefaultThemeCssTailLikePackage(buildAxLightPrimitivesBlock(allPalettes.light));\n\n return css;\n}\n\nfunction buildAxLightPrimitivesBlock(palettes: Record<string, AXThemeBuilderColorScale>): string {\n let css = buildNeutralRgbVariables(lightSurfaceColors);\n css += buildRoleRgbScales(palettes);\n css += buildSemanticSurfaceRgbTuples(palettes, false);\n css += ` --ax-sys-color-bg-default: var(--ax-sys-color-lightest-surface);\\n`;\n css += ` --ax-sys-color-text-default: var(--ax-sys-color-on-lightest-surface);\\n`;\n css += ` --ax-sys-color-border-default: var(--ax-sys-color-border-lightest-surface);\\n\\n`;\n return css;\n}\n\nfunction mergeExportSeeds(seeds: { light: { [role: string]: string }; dark: { [role: string]: string } }): {\n light: ExportSeedMap;\n dark: ExportSeedMap;\n} {\n const out: { light: ExportSeedMap; dark: ExportSeedMap } = {\n light: { ...DEFAULT_EXPORT_SEEDS_LIGHT },\n dark: { ...DEFAULT_EXPORT_SEEDS_DARK },\n };\n for (const role of EXPORT_ROOT_ROLE_ORDER) {\n const l = seeds.light[role]?.trim();\n const d = seeds.dark[role]?.trim();\n if (l) out.light[role] = l;\n if (d) out.dark[role] = d;\n }\n return out;\n}\n\nfunction buildNeutralRgbVariables(surfaceColors: Record<string, { bg: string; on: string; border: string }>): string {\n let css = '';\n for (const [name, colors] of Object.entries(surfaceColors)) {\n css += ` --ax-sys-color-${name}: ${colors.bg};\\n`;\n css += ` --ax-sys-color-on-${name}: ${colors.on};\\n`;\n css += ` --ax-sys-color-border-${name}: ${colors.border};\\n\\n`;\n }\n return css;\n}\n\nfunction buildRoleRgbScales(palettes: Record<string, AXThemeBuilderColorScale>): string {\n let css = '';\n for (const role of EXPORT_ROOT_ROLE_ORDER) {\n for (const shade of AX_THEME_SHADES) {\n const v = palettes[role]?.[String(shade) as keyof AXThemeBuilderColorScale];\n if (v) {\n css += ` --ax-sys-color-${role}-${shade}: ${v};\\n`;\n }\n }\n css += `\\n`;\n }\n return css;\n}\n\n/** Semantic layering (`*-lightest-surface`, …): omitted for grayscale `surface` role (matches default.css). */\nfunction buildSemanticSurfaceRgbTuples(palettes: Record<string, AXThemeBuilderColorScale>, isDark: boolean): string {\n const surfaceMap = {\n 'lightest-surface': '100',\n 'lighter-surface': '200',\n 'light-surface': '300',\n surface: '500',\n 'dark-surface': '600',\n 'darker-surface': '700',\n 'darkest-surface': '800',\n } as const satisfies Record<\n string,\n '50' | '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900' | '950'\n >;\n\n let css = '';\n for (const role of EXPORT_ROOT_ROLE_ORDER) {\n if (role === 'surface') continue;\n\n for (const [surfName, shadeKey] of Object.entries(surfaceMap)) {\n const surfaceColorStr = palettes[role]?.[shadeKey];\n const surfaceRgb = surfaceColorStr ? parseRgbTriplet(surfaceColorStr) : undefined;\n\n if (surfaceRgb) {\n const suffix = surfName === 'surface' ? 'surface' : surfName;\n\n css += ` --ax-sys-color-${role}-${suffix}: ${surfaceColorStr};\\n`;\n css += ` --ax-sys-color-on-${role}-${suffix}: ${contrastText(surfaceRgb, isDark)};\\n`;\n css += ` --ax-sys-color-border-${role}-${suffix}: ${borderColor(surfaceRgb, isDark)};\\n\\n`;\n }\n }\n }\n return css;\n}\n\n/** Resolves a flat color map into per-mode seed maps, applying user values to both modes. */\nexport function resolveSeedsFromFlat(colors?: Partial<Record<AXThemeBuilderColors, string>>): {\n light: ExportSeedMap;\n dark: ExportSeedMap;\n} {\n const out: { light: ExportSeedMap; dark: ExportSeedMap } = {\n light: { ...DEFAULT_EXPORT_SEEDS_LIGHT },\n dark: { ...DEFAULT_EXPORT_SEEDS_DARK },\n };\n\n if (!colors) {\n return out;\n }\n\n for (const role of EXPORT_ROOT_ROLE_ORDER) {\n const value = colors[role]?.trim();\n if (value) {\n out.light[role] = value;\n out.dark[role] = value;\n }\n }\n\n return out;\n}\n\n/** Builds full light/dark palettes from resolved per-mode seeds. */\nexport function buildFullPalette(\n seeds: { light: ExportSeedMap; dark: ExportSeedMap },\n roles?: AXThemeBuilderColors[],\n): AXThemeBuilderFullPalette {\n const roleList = roles ?? [...EXPORT_ROOT_ROLE_ORDER];\n const palette = {\n light: {} as AXThemeBuilderFullPalette['light'],\n dark: {} as AXThemeBuilderFullPalette['dark'],\n };\n\n for (const role of roleList) {\n palette.light[role] = generateLightPalette(seeds.light[role]);\n palette.dark[role] = generateDarkPalette(seeds.dark[role]);\n }\n\n return palette;\n}\n\nfunction buildThemeVariableBlock(\n mode: 'light' | 'dark',\n variants: AXThemeBuilderPalette,\n roles: AXThemeBuilderColors[],\n): string {\n const isDark = mode === 'dark';\n let css = buildPreviewNeutralSurfaces(isDark);\n\n for (const colorName of roles) {\n const roleVariants = variants[colorName];\n if (roleVariants) {\n css += generateCSSForRoles(roleVariants, colorName);\n }\n }\n\n css += buildSemanticSurfaceColorsForRoles(variants, roles, isDark);\n css += buildPreviewSemanticDefaults(isDark);\n css += buildPreviewThemeColorAliases();\n\n return css;\n}\n\nfunction buildSemanticSurfaceColorsForRoles(\n variants: AXThemeBuilderPalette,\n roles: AXThemeBuilderColors[],\n isDark: boolean,\n): string {\n let css = '';\n\n for (const role of roles) {\n if (role === 'surface') continue;\n\n const roleVariants = variants[role];\n\n for (const [surfaceName, shade] of Object.entries(ROLE_SURFACE_SHADE_MAP)) {\n const surfaceColorStr = roleVariants?.[String(shade) as keyof typeof roleVariants];\n const surfaceRgb = surfaceColorStr ? parseRgbTriplet(surfaceColorStr) : undefined;\n\n if (surfaceRgb) {\n css += ` --ax-sys-color-${role}-${surfaceName}: ${surfaceColorStr};\\n`;\n css += ` --ax-sys-color-on-${role}-${surfaceName}: ${contrastText(surfaceRgb, isDark)};\\n`;\n css += ` --ax-sys-color-border-${role}-${surfaceName}: ${borderColor(surfaceRgb, isDark)};\\n\\n`;\n }\n }\n }\n\n return css;\n}\n\n/** Scoped CSS for live theme preview (variables only, no Tailwind layer). */\nexport function buildPreviewThemeCSS(\n palette: AXThemeBuilderFullPalette,\n scope?: { light: string; dark: string },\n roles?: AXThemeBuilderColors[],\n): string {\n const roleList = roles ?? [...EXPORT_ROOT_ROLE_ORDER];\n const lightScope = scope?.light ?? ':root';\n const darkScope = scope?.dark ?? '.ax-dark';\n\n let css = `${lightScope} {\\n`;\n css += buildThemeVariableBlock('light', palette.light, roleList);\n css += '}\\n\\n';\n\n css += `${darkScope} {\\n`;\n css += buildThemeVariableBlock('dark', palette.dark, roleList);\n css += '}\\n\\n';\n\n return css;\n}\n","import {\n AXThemeBuilderColors,\n AXThemeBuilderFullPalette,\n} from './theme-builder.class';\nimport {\n buildFullPalette,\n buildPreviewThemeCSS,\n generateFullThemeCSS,\n resolveSeedsFromFlat,\n} from './theme-builder';\n\nexport type AXThemeColors = Partial<Record<AXThemeBuilderColors, string>>;\n\nexport interface AXCreateThemeOptions {\n /** 'file' (default) emits a complete stylesheet with :root/.ax-dark plus the Tailwind layer.\n * 'preview' emits variables only, scoped to `scope`, for injecting into a live page. */\n target?: 'file' | 'preview';\n /** Selectors used when target is 'preview'. */\n scope?: { light: string; dark: string };\n /** Roles to emit when target is 'preview'. Defaults to all roles. */\n roles?: AXThemeBuilderColors[];\n}\n\nexport interface AXTheme {\n /** The generated CSS. */\n css: string;\n /** Generated shade scales per role, for both modes. */\n palette: AXThemeBuilderFullPalette;\n}\n\n/**\n * Creates an ACoreX theme from a flat map of role seed colors.\n *\n * Each provided color is applied to both light and dark modes; dark shades are\n * derived via the dark-palette tone mapping. Omitted roles fall back to the\n * packaged default seeds (which may differ per mode for `secondary`, `danger`, and `surface`).\n */\nexport function createTheme(colors?: AXThemeColors, options?: AXCreateThemeOptions): AXTheme {\n const target = options?.target ?? 'file';\n const seeds = resolveSeedsFromFlat(colors);\n const roles = options?.roles;\n const palette = buildFullPalette(seeds, roles);\n\n const css =\n target === 'preview'\n ? buildPreviewThemeCSS(palette, options?.scope, roles)\n : generateFullThemeCSS({ light: seeds.light, dark: seeds.dark });\n\n return { css, palette };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -22,6 +22,10 @@ const AXTranslationDefaultConfig = {
22
22
  'en-AU': ['en-US'],
23
23
  },
24
24
  },
25
+ available: {
26
+ langs: ['en-US', 'fa-IR', 'en-AU'],
27
+ scopes: ['acorex', 'common'],
28
+ },
25
29
  preload: {
26
30
  langs: ['en-US'],
27
31
  scopes: ['acorex'],