@ojiepermana/angular-theme 22.0.35 → 22.0.41

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.
Files changed (64) hide show
  1. package/README.md +54 -22
  2. package/fesm2022/ojiepermana-angular-theme-layout-wrapper.mjs +74 -20
  3. package/fesm2022/ojiepermana-angular-theme-layout.mjs +14 -2
  4. package/fesm2022/ojiepermana-angular-theme-page.mjs +251 -101
  5. package/fesm2022/ojiepermana-angular-theme-styles.mjs +375 -53
  6. package/layout/README.md +21 -19
  7. package/package.json +3 -3
  8. package/page/README.md +53 -15
  9. package/styles/README.md +18 -3
  10. package/styles/css/{seasonal/base → base}/tailwind.css +9 -5
  11. package/styles/css/{seasonal/base → base}/theme.css +27 -52
  12. package/styles/css/{seasonal/base → base}/tokens.css +62 -44
  13. package/styles/css/color/amber.css +52 -0
  14. package/styles/css/color/blue.css +52 -0
  15. package/styles/css/color/brand.css +16 -0
  16. package/styles/css/color/cyan.css +52 -0
  17. package/styles/css/color/emerald.css +52 -0
  18. package/styles/css/color/fuchsia.css +52 -0
  19. package/styles/css/color/green.css +52 -0
  20. package/styles/css/color/index.css +19 -0
  21. package/styles/css/color/indigo.css +52 -0
  22. package/styles/css/color/lime.css +52 -0
  23. package/styles/css/color/orange.css +52 -0
  24. package/styles/css/color/pink.css +52 -0
  25. package/styles/css/color/purple.css +52 -0
  26. package/styles/css/color/red.css +52 -0
  27. package/styles/css/color/rose.css +52 -0
  28. package/styles/css/color/sky.css +52 -0
  29. package/styles/css/color/teal.css +52 -0
  30. package/styles/css/color/violet.css +52 -0
  31. package/styles/css/color/yellow.css +52 -0
  32. package/styles/css/index.css +15 -6
  33. package/styles/css/neutral/gray.css +36 -0
  34. package/styles/css/neutral/index.css +11 -0
  35. package/styles/css/neutral/mauve.css +36 -0
  36. package/styles/css/neutral/mist.css +36 -0
  37. package/styles/css/neutral/neutral.css +36 -0
  38. package/styles/css/neutral/olive.css +36 -0
  39. package/styles/css/neutral/slate.css +36 -0
  40. package/styles/css/neutral/stone.css +36 -0
  41. package/styles/css/neutral/taupe.css +36 -0
  42. package/styles/css/neutral/zinc.css +36 -0
  43. package/styles/css/radius/index.css +29 -0
  44. package/styles/css/space/index.css +24 -0
  45. package/types/ojiepermana-angular-theme-layout-wrapper.d.ts +43 -10
  46. package/types/ojiepermana-angular-theme-layout.d.ts +1 -0
  47. package/types/ojiepermana-angular-theme-page.d.ts +88 -36
  48. package/types/ojiepermana-angular-theme-styles.d.ts +169 -37
  49. package/styles/css/seasonal/ied/package.css +0 -4
  50. package/styles/css/seasonal/ied/theme.css +0 -78
  51. package/styles/css/seasonal/imlek/components.css +0 -87
  52. package/styles/css/seasonal/imlek/package.css +0 -6
  53. package/styles/css/seasonal/imlek/tailwind.css +0 -144
  54. package/styles/css/seasonal/imlek/theme.css +0 -95
  55. package/styles/css/seasonal/imlek/tokens.css +0 -152
  56. package/styles/css/seasonal/index.css +0 -6
  57. package/styles/css/seasonal/natal/package.css +0 -4
  58. package/styles/css/seasonal/natal/theme.css +0 -78
  59. package/styles/css/seasonal/new-year/package.css +0 -4
  60. package/styles/css/seasonal/new-year/theme.css +0 -78
  61. package/styles/css/seasonal/ramadhan/package.css +0 -4
  62. package/styles/css/seasonal/ramadhan/theme.css +0 -78
  63. /package/styles/css/{seasonal/base → base}/components.css +0 -0
  64. /package/styles/css/{seasonal/base → base}/package.css +0 -0
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Accent theme: teal. Generated by scripts/gen-theme-colors.mjs — do not edit.
3
+ */
4
+ @layer tokens {
5
+ html[theme-color='teal'][data-mode='light'] {
6
+ --background: 173 23% 98%;
7
+ --foreground: 173 27% 16%;
8
+ --surface: 173 26% 95%;
9
+ --surface-foreground: 173 27% 16%;
10
+ --card: 0 0% 100%;
11
+ --card-foreground: 173 27% 16%;
12
+ --popover: 0 0% 100%;
13
+ --popover-foreground: 173 27% 16%;
14
+ --muted: 173 23% 95%;
15
+ --muted-foreground: 173 15% 40%;
16
+ --border: 173 23% 87%;
17
+ --input: 173 23% 87%;
18
+ --layout-grid-line: 173 23% 82%;
19
+ --primary: 173 75% 48%;
20
+ --primary-foreground: 0 0% 100%;
21
+ --accent: 173 45% 94%;
22
+ --accent-foreground: 173 75% 32%;
23
+ --secondary: 173 30% 93%;
24
+ --secondary-foreground: 173 75% 28%;
25
+ --ring: 173 75% 48%;
26
+ --highlight: 173 75% 64%;
27
+ }
28
+
29
+ html[theme-color='teal'][data-mode='dark'] {
30
+ --background: 173 23% 8%;
31
+ --foreground: 173 11% 96%;
32
+ --surface: 173 19% 12%;
33
+ --surface-foreground: 173 11% 96%;
34
+ --card: 173 23% 9%;
35
+ --card-foreground: 173 11% 96%;
36
+ --popover: 173 23% 9%;
37
+ --popover-foreground: 173 11% 96%;
38
+ --muted: 173 19% 16%;
39
+ --muted-foreground: 173 15% 64%;
40
+ --border: 173 19% 18%;
41
+ --input: 173 19% 18%;
42
+ --layout-grid-line: 173 19% 23%;
43
+ --primary: 173 75% 58%;
44
+ --primary-foreground: 0 0% 100%;
45
+ --accent: 173 38% 18%;
46
+ --accent-foreground: 173 60% 80%;
47
+ --secondary: 173 30% 18%;
48
+ --secondary-foreground: 173 53% 82%;
49
+ --ring: 173 75% 58%;
50
+ --highlight: 173 75% 58%;
51
+ }
52
+ }
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Accent theme: violet. Generated by scripts/gen-theme-colors.mjs — do not edit.
3
+ */
4
+ @layer tokens {
5
+ html[theme-color='violet'][data-mode='light'] {
6
+ --background: 258 26% 98%;
7
+ --foreground: 258 30% 16%;
8
+ --surface: 258 30% 95%;
9
+ --surface-foreground: 258 30% 16%;
10
+ --card: 0 0% 100%;
11
+ --card-foreground: 258 30% 16%;
12
+ --popover: 0 0% 100%;
13
+ --popover-foreground: 258 30% 16%;
14
+ --muted: 258 26% 95%;
15
+ --muted-foreground: 258 17% 40%;
16
+ --border: 258 26% 87%;
17
+ --input: 258 26% 87%;
18
+ --layout-grid-line: 258 26% 82%;
19
+ --primary: 258 86% 48%;
20
+ --primary-foreground: 0 0% 100%;
21
+ --accent: 258 52% 94%;
22
+ --accent-foreground: 258 86% 32%;
23
+ --secondary: 258 34% 93%;
24
+ --secondary-foreground: 258 86% 28%;
25
+ --ring: 258 86% 48%;
26
+ --highlight: 258 86% 64%;
27
+ }
28
+
29
+ html[theme-color='violet'][data-mode='dark'] {
30
+ --background: 258 26% 8%;
31
+ --foreground: 258 13% 96%;
32
+ --surface: 258 22% 12%;
33
+ --surface-foreground: 258 13% 96%;
34
+ --card: 258 26% 9%;
35
+ --card-foreground: 258 13% 96%;
36
+ --popover: 258 26% 9%;
37
+ --popover-foreground: 258 13% 96%;
38
+ --muted: 258 22% 16%;
39
+ --muted-foreground: 258 17% 64%;
40
+ --border: 258 22% 18%;
41
+ --input: 258 22% 18%;
42
+ --layout-grid-line: 258 22% 23%;
43
+ --primary: 258 86% 58%;
44
+ --primary-foreground: 0 0% 100%;
45
+ --accent: 258 43% 18%;
46
+ --accent-foreground: 258 69% 80%;
47
+ --secondary: 258 34% 18%;
48
+ --secondary-foreground: 258 60% 82%;
49
+ --ring: 258 86% 58%;
50
+ --highlight: 258 86% 58%;
51
+ }
52
+ }
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Accent theme: yellow. Generated by scripts/gen-theme-colors.mjs — do not edit.
3
+ */
4
+ @layer tokens {
5
+ html[theme-color='yellow'][data-mode='light'] {
6
+ --background: 48 29% 98%;
7
+ --foreground: 48 32% 16%;
8
+ --surface: 48 34% 95%;
9
+ --surface-foreground: 48 32% 16%;
10
+ --card: 0 0% 100%;
11
+ --card-foreground: 48 32% 16%;
12
+ --popover: 0 0% 100%;
13
+ --popover-foreground: 48 32% 16%;
14
+ --muted: 48 29% 95%;
15
+ --muted-foreground: 48 19% 40%;
16
+ --border: 48 29% 87%;
17
+ --input: 48 29% 87%;
18
+ --layout-grid-line: 48 29% 82%;
19
+ --primary: 48 96% 48%;
20
+ --primary-foreground: 0 0% 12%;
21
+ --accent: 48 58% 94%;
22
+ --accent-foreground: 48 96% 32%;
23
+ --secondary: 48 38% 93%;
24
+ --secondary-foreground: 48 96% 28%;
25
+ --ring: 48 96% 48%;
26
+ --highlight: 48 96% 64%;
27
+ }
28
+
29
+ html[theme-color='yellow'][data-mode='dark'] {
30
+ --background: 48 29% 8%;
31
+ --foreground: 48 14% 96%;
32
+ --surface: 48 24% 12%;
33
+ --surface-foreground: 48 14% 96%;
34
+ --card: 48 29% 9%;
35
+ --card-foreground: 48 14% 96%;
36
+ --popover: 48 29% 9%;
37
+ --popover-foreground: 48 14% 96%;
38
+ --muted: 48 24% 16%;
39
+ --muted-foreground: 48 19% 64%;
40
+ --border: 48 24% 18%;
41
+ --input: 48 24% 18%;
42
+ --layout-grid-line: 48 24% 23%;
43
+ --primary: 48 96% 58%;
44
+ --primary-foreground: 0 0% 10%;
45
+ --accent: 48 48% 18%;
46
+ --accent-foreground: 48 77% 80%;
47
+ --secondary: 48 38% 18%;
48
+ --secondary-foreground: 48 67% 82%;
49
+ --ring: 48 96% 58%;
50
+ --highlight: 48 96% 58%;
51
+ }
52
+ }
@@ -1,9 +1,18 @@
1
1
  /*
2
- * Default theme stylesheet: base tokens/components only.
2
+ * Default theme stylesheet: core base theme + all runtime theme axes.
3
3
  *
4
- * CSS musiman TIDAK lagi di-bundle di sini (±36 kB). Musim aktif dimuat
5
- * runtime oleh ThemeSeasonService bila `seasonalCssUrl` dikonfigurasi pada
6
- * provideUiTheme(), atau impor manual './seasonal/<season>/package.css'
7
- * (semua musim sekaligus: './seasonal/index.css').
4
+ * - base/ core tokens, light/dark, components (all axes' 'base'/default)
5
+ * - color/ accent palettes (theme-color) full tinted palette per color
6
+ * - neutral/ gray families (theme-neutral) imported AFTER color so it wins
7
+ * the shared neutral tokens when both axes are set
8
+ * - radius/ corner radius presets (theme-radius) — drive --radius-base
9
+ * - space/ spacing density presets (theme-space) — drive --spacing-base
10
+ *
11
+ * Axes are runtime-switched via <html theme-color|theme-neutral|theme-radius|
12
+ * theme-space> by their services; --brand is set by ThemeBrandService.
8
13
  */
9
- @import './seasonal/base/package.css';
14
+ @import './base/package.css';
15
+ @import './color/index.css';
16
+ @import './neutral/index.css';
17
+ @import './radius/index.css';
18
+ @import './space/index.css';
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Neutral theme: gray. Generated by scripts/gen-theme-colors.mjs — do not edit.
3
+ */
4
+ @layer tokens {
5
+ html[theme-neutral='gray'][data-mode='light'] {
6
+ --background: 220 5% 98%;
7
+ --foreground: 220 9% 12%;
8
+ --surface: 220 9% 96%;
9
+ --surface-foreground: 220 9% 12%;
10
+ --card: 0 0% 100%;
11
+ --card-foreground: 220 9% 12%;
12
+ --popover: 0 0% 100%;
13
+ --popover-foreground: 220 9% 12%;
14
+ --muted: 220 9% 95%;
15
+ --muted-foreground: 220 9% 42%;
16
+ --border: 220 9% 88%;
17
+ --input: 220 9% 88%;
18
+ --layout-grid-line: 220 9% 82%;
19
+ }
20
+
21
+ html[theme-neutral='gray'][data-mode='dark'] {
22
+ --background: 220 9% 7%;
23
+ --foreground: 220 5% 96%;
24
+ --surface: 220 9% 11%;
25
+ --surface-foreground: 220 5% 96%;
26
+ --card: 220 9% 8%;
27
+ --card-foreground: 220 5% 96%;
28
+ --popover: 220 9% 8%;
29
+ --popover-foreground: 220 5% 96%;
30
+ --muted: 220 9% 15%;
31
+ --muted-foreground: 220 6% 64%;
32
+ --border: 220 9% 17%;
33
+ --input: 220 9% 17%;
34
+ --layout-grid-line: 220 9% 22%;
35
+ }
36
+ }
@@ -0,0 +1,11 @@
1
+ /* Neutral families (theme-neutral). Imported AFTER accent so it wins the gray
2
+ * family at equal specificity. base = core theme (no file). */
3
+ @import './slate.css';
4
+ @import './gray.css';
5
+ @import './zinc.css';
6
+ @import './neutral.css';
7
+ @import './stone.css';
8
+ @import './mauve.css';
9
+ @import './olive.css';
10
+ @import './mist.css';
11
+ @import './taupe.css';
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Neutral theme: mauve. Generated by scripts/gen-theme-colors.mjs — do not edit.
3
+ */
4
+ @layer tokens {
5
+ html[theme-neutral='mauve'][data-mode='light'] {
6
+ --background: 280 4% 98%;
7
+ --foreground: 280 6% 12%;
8
+ --surface: 280 6% 96%;
9
+ --surface-foreground: 280 6% 12%;
10
+ --card: 0 0% 100%;
11
+ --card-foreground: 280 6% 12%;
12
+ --popover: 0 0% 100%;
13
+ --popover-foreground: 280 6% 12%;
14
+ --muted: 280 6% 95%;
15
+ --muted-foreground: 280 6% 42%;
16
+ --border: 280 6% 88%;
17
+ --input: 280 6% 88%;
18
+ --layout-grid-line: 280 6% 82%;
19
+ }
20
+
21
+ html[theme-neutral='mauve'][data-mode='dark'] {
22
+ --background: 280 6% 7%;
23
+ --foreground: 280 3% 96%;
24
+ --surface: 280 6% 11%;
25
+ --surface-foreground: 280 3% 96%;
26
+ --card: 280 6% 8%;
27
+ --card-foreground: 280 3% 96%;
28
+ --popover: 280 6% 8%;
29
+ --popover-foreground: 280 3% 96%;
30
+ --muted: 280 6% 15%;
31
+ --muted-foreground: 280 4% 64%;
32
+ --border: 280 6% 17%;
33
+ --input: 280 6% 17%;
34
+ --layout-grid-line: 280 6% 22%;
35
+ }
36
+ }
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Neutral theme: mist. Generated by scripts/gen-theme-colors.mjs — do not edit.
3
+ */
4
+ @layer tokens {
5
+ html[theme-neutral='mist'][data-mode='light'] {
6
+ --background: 200 8% 98%;
7
+ --foreground: 200 14% 12%;
8
+ --surface: 200 14% 96%;
9
+ --surface-foreground: 200 14% 12%;
10
+ --card: 0 0% 100%;
11
+ --card-foreground: 200 14% 12%;
12
+ --popover: 0 0% 100%;
13
+ --popover-foreground: 200 14% 12%;
14
+ --muted: 200 14% 95%;
15
+ --muted-foreground: 200 14% 42%;
16
+ --border: 200 14% 88%;
17
+ --input: 200 14% 88%;
18
+ --layout-grid-line: 200 14% 82%;
19
+ }
20
+
21
+ html[theme-neutral='mist'][data-mode='dark'] {
22
+ --background: 200 14% 7%;
23
+ --foreground: 200 7% 96%;
24
+ --surface: 200 14% 11%;
25
+ --surface-foreground: 200 7% 96%;
26
+ --card: 200 14% 8%;
27
+ --card-foreground: 200 7% 96%;
28
+ --popover: 200 14% 8%;
29
+ --popover-foreground: 200 7% 96%;
30
+ --muted: 200 14% 15%;
31
+ --muted-foreground: 200 10% 64%;
32
+ --border: 200 14% 17%;
33
+ --input: 200 14% 17%;
34
+ --layout-grid-line: 200 14% 22%;
35
+ }
36
+ }
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Neutral theme: neutral. Generated by scripts/gen-theme-colors.mjs — do not edit.
3
+ */
4
+ @layer tokens {
5
+ html[theme-neutral='neutral'][data-mode='light'] {
6
+ --background: 0 0% 98%;
7
+ --foreground: 0 0% 12%;
8
+ --surface: 0 0% 96%;
9
+ --surface-foreground: 0 0% 12%;
10
+ --card: 0 0% 100%;
11
+ --card-foreground: 0 0% 12%;
12
+ --popover: 0 0% 100%;
13
+ --popover-foreground: 0 0% 12%;
14
+ --muted: 0 0% 95%;
15
+ --muted-foreground: 0 0% 42%;
16
+ --border: 0 0% 88%;
17
+ --input: 0 0% 88%;
18
+ --layout-grid-line: 0 0% 82%;
19
+ }
20
+
21
+ html[theme-neutral='neutral'][data-mode='dark'] {
22
+ --background: 0 0% 7%;
23
+ --foreground: 0 0% 96%;
24
+ --surface: 0 0% 11%;
25
+ --surface-foreground: 0 0% 96%;
26
+ --card: 0 0% 8%;
27
+ --card-foreground: 0 0% 96%;
28
+ --popover: 0 0% 8%;
29
+ --popover-foreground: 0 0% 96%;
30
+ --muted: 0 0% 15%;
31
+ --muted-foreground: 0 0% 64%;
32
+ --border: 0 0% 17%;
33
+ --input: 0 0% 17%;
34
+ --layout-grid-line: 0 0% 22%;
35
+ }
36
+ }
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Neutral theme: olive. Generated by scripts/gen-theme-colors.mjs — do not edit.
3
+ */
4
+ @layer tokens {
5
+ html[theme-neutral='olive'][data-mode='light'] {
6
+ --background: 80 5% 98%;
7
+ --foreground: 80 8% 12%;
8
+ --surface: 80 8% 96%;
9
+ --surface-foreground: 80 8% 12%;
10
+ --card: 0 0% 100%;
11
+ --card-foreground: 80 8% 12%;
12
+ --popover: 0 0% 100%;
13
+ --popover-foreground: 80 8% 12%;
14
+ --muted: 80 8% 95%;
15
+ --muted-foreground: 80 8% 42%;
16
+ --border: 80 8% 88%;
17
+ --input: 80 8% 88%;
18
+ --layout-grid-line: 80 8% 82%;
19
+ }
20
+
21
+ html[theme-neutral='olive'][data-mode='dark'] {
22
+ --background: 80 8% 7%;
23
+ --foreground: 80 4% 96%;
24
+ --surface: 80 8% 11%;
25
+ --surface-foreground: 80 4% 96%;
26
+ --card: 80 8% 8%;
27
+ --card-foreground: 80 4% 96%;
28
+ --popover: 80 8% 8%;
29
+ --popover-foreground: 80 4% 96%;
30
+ --muted: 80 8% 15%;
31
+ --muted-foreground: 80 6% 64%;
32
+ --border: 80 8% 17%;
33
+ --input: 80 8% 17%;
34
+ --layout-grid-line: 80 8% 22%;
35
+ }
36
+ }
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Neutral theme: slate. Generated by scripts/gen-theme-colors.mjs — do not edit.
3
+ */
4
+ @layer tokens {
5
+ html[theme-neutral='slate'][data-mode='light'] {
6
+ --background: 215 10% 98%;
7
+ --foreground: 215 16% 12%;
8
+ --surface: 215 16% 96%;
9
+ --surface-foreground: 215 16% 12%;
10
+ --card: 0 0% 100%;
11
+ --card-foreground: 215 16% 12%;
12
+ --popover: 0 0% 100%;
13
+ --popover-foreground: 215 16% 12%;
14
+ --muted: 215 16% 95%;
15
+ --muted-foreground: 215 16% 42%;
16
+ --border: 215 16% 88%;
17
+ --input: 215 16% 88%;
18
+ --layout-grid-line: 215 16% 82%;
19
+ }
20
+
21
+ html[theme-neutral='slate'][data-mode='dark'] {
22
+ --background: 215 16% 7%;
23
+ --foreground: 215 8% 96%;
24
+ --surface: 215 16% 11%;
25
+ --surface-foreground: 215 8% 96%;
26
+ --card: 215 16% 8%;
27
+ --card-foreground: 215 8% 96%;
28
+ --popover: 215 16% 8%;
29
+ --popover-foreground: 215 8% 96%;
30
+ --muted: 215 16% 15%;
31
+ --muted-foreground: 215 11% 64%;
32
+ --border: 215 16% 17%;
33
+ --input: 215 16% 17%;
34
+ --layout-grid-line: 215 16% 22%;
35
+ }
36
+ }
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Neutral theme: stone. Generated by scripts/gen-theme-colors.mjs — do not edit.
3
+ */
4
+ @layer tokens {
5
+ html[theme-neutral='stone'][data-mode='light'] {
6
+ --background: 30 4% 98%;
7
+ --foreground: 30 6% 12%;
8
+ --surface: 30 6% 96%;
9
+ --surface-foreground: 30 6% 12%;
10
+ --card: 0 0% 100%;
11
+ --card-foreground: 30 6% 12%;
12
+ --popover: 0 0% 100%;
13
+ --popover-foreground: 30 6% 12%;
14
+ --muted: 30 6% 95%;
15
+ --muted-foreground: 30 6% 42%;
16
+ --border: 30 6% 88%;
17
+ --input: 30 6% 88%;
18
+ --layout-grid-line: 30 6% 82%;
19
+ }
20
+
21
+ html[theme-neutral='stone'][data-mode='dark'] {
22
+ --background: 30 6% 7%;
23
+ --foreground: 30 3% 96%;
24
+ --surface: 30 6% 11%;
25
+ --surface-foreground: 30 3% 96%;
26
+ --card: 30 6% 8%;
27
+ --card-foreground: 30 3% 96%;
28
+ --popover: 30 6% 8%;
29
+ --popover-foreground: 30 3% 96%;
30
+ --muted: 30 6% 15%;
31
+ --muted-foreground: 30 4% 64%;
32
+ --border: 30 6% 17%;
33
+ --input: 30 6% 17%;
34
+ --layout-grid-line: 30 6% 22%;
35
+ }
36
+ }
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Neutral theme: taupe. Generated by scripts/gen-theme-colors.mjs — do not edit.
3
+ */
4
+ @layer tokens {
5
+ html[theme-neutral='taupe'][data-mode='light'] {
6
+ --background: 28 6% 98%;
7
+ --foreground: 28 10% 12%;
8
+ --surface: 28 10% 96%;
9
+ --surface-foreground: 28 10% 12%;
10
+ --card: 0 0% 100%;
11
+ --card-foreground: 28 10% 12%;
12
+ --popover: 0 0% 100%;
13
+ --popover-foreground: 28 10% 12%;
14
+ --muted: 28 10% 95%;
15
+ --muted-foreground: 28 10% 42%;
16
+ --border: 28 10% 88%;
17
+ --input: 28 10% 88%;
18
+ --layout-grid-line: 28 10% 82%;
19
+ }
20
+
21
+ html[theme-neutral='taupe'][data-mode='dark'] {
22
+ --background: 28 10% 7%;
23
+ --foreground: 28 5% 96%;
24
+ --surface: 28 10% 11%;
25
+ --surface-foreground: 28 5% 96%;
26
+ --card: 28 10% 8%;
27
+ --card-foreground: 28 5% 96%;
28
+ --popover: 28 10% 8%;
29
+ --popover-foreground: 28 5% 96%;
30
+ --muted: 28 10% 15%;
31
+ --muted-foreground: 28 7% 64%;
32
+ --border: 28 10% 17%;
33
+ --input: 28 10% 17%;
34
+ --layout-grid-line: 28 10% 22%;
35
+ }
36
+ }
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Neutral theme: zinc. Generated by scripts/gen-theme-colors.mjs — do not edit.
3
+ */
4
+ @layer tokens {
5
+ html[theme-neutral='zinc'][data-mode='light'] {
6
+ --background: 240 3% 98%;
7
+ --foreground: 240 5% 12%;
8
+ --surface: 240 5% 96%;
9
+ --surface-foreground: 240 5% 12%;
10
+ --card: 0 0% 100%;
11
+ --card-foreground: 240 5% 12%;
12
+ --popover: 0 0% 100%;
13
+ --popover-foreground: 240 5% 12%;
14
+ --muted: 240 5% 95%;
15
+ --muted-foreground: 240 5% 42%;
16
+ --border: 240 5% 88%;
17
+ --input: 240 5% 88%;
18
+ --layout-grid-line: 240 5% 82%;
19
+ }
20
+
21
+ html[theme-neutral='zinc'][data-mode='dark'] {
22
+ --background: 240 5% 7%;
23
+ --foreground: 240 3% 96%;
24
+ --surface: 240 5% 11%;
25
+ --surface-foreground: 240 3% 96%;
26
+ --card: 240 5% 8%;
27
+ --card-foreground: 240 3% 96%;
28
+ --popover: 240 5% 8%;
29
+ --popover-foreground: 240 3% 96%;
30
+ --muted: 240 5% 15%;
31
+ --muted-foreground: 240 4% 64%;
32
+ --border: 240 5% 17%;
33
+ --input: 240 5% 17%;
34
+ --layout-grid-line: 240 5% 22%;
35
+ }
36
+ }
@@ -0,0 +1,29 @@
1
+ /*
2
+ * Corner radius axis (theme-radius). Each preset sets the single --radius-base
3
+ * knob; the whole --radius-* scale + every rounded-* utility follows via the
4
+ * calc() chain (base/tailwind.css @theme inline). Runtime-switched by
5
+ * ThemeRadiusService via <html theme-radius>. 'md' = the 0.625rem default.
6
+ *
7
+ * Wrapped in @layer tokens to match base/tokens.css and the color/neutral
8
+ * presets; html[theme-radius='x'] (0,1,1) beats the :root default (0,1,0).
9
+ */
10
+ @layer tokens {
11
+ html[theme-radius='none'] {
12
+ --radius-base: 0px;
13
+ }
14
+ html[theme-radius='sm'] {
15
+ --radius-base: 0.375rem;
16
+ }
17
+ html[theme-radius='md'] {
18
+ --radius-base: 0.625rem;
19
+ }
20
+ html[theme-radius='lg'] {
21
+ --radius-base: 0.875rem;
22
+ }
23
+ html[theme-radius='xl'] {
24
+ --radius-base: 1.25rem;
25
+ }
26
+ html[theme-radius='full'] {
27
+ --radius-base: 9999px;
28
+ }
29
+ }
@@ -0,0 +1,24 @@
1
+ /*
2
+ * Spacing density axis (theme-space). Each preset sets the single --spacing-base
3
+ * knob; Tailwind derives --spacing from it (base/tailwind.css @theme inline), so
4
+ * every padding, margin, gap, width and height utility (and the --spacing-N
5
+ * scale) rescales at runtime. Switched by ThemeSpaceService via <html theme-space>.
6
+ * normal = the 0.25rem default (the Tailwind unit), so it is a no-op baseline.
7
+ *
8
+ * Wrapped in @layer tokens to match the radius/color/neutral presets;
9
+ * html[theme-space='x'] (0,1,1) beats the :root default (0,1,0).
10
+ */
11
+ @layer tokens {
12
+ html[theme-space='compact'] {
13
+ --spacing-base: 0.2rem;
14
+ }
15
+ html[theme-space='normal'] {
16
+ --spacing-base: 0.25rem;
17
+ }
18
+ html[theme-space='relaxed'] {
19
+ --spacing-base: 0.28rem;
20
+ }
21
+ html[theme-space='spacious'] {
22
+ --spacing-base: 0.32rem;
23
+ }
24
+ }