@ojiepermana/angular-theme 22.0.27

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 (42) hide show
  1. package/fesm2022/ojiepermana-angular-theme-layout-services.mjs +364 -0
  2. package/fesm2022/ojiepermana-angular-theme-layout-services.mjs.map +1 -0
  3. package/fesm2022/ojiepermana-angular-theme-layout-types.mjs +32 -0
  4. package/fesm2022/ojiepermana-angular-theme-layout-types.mjs.map +1 -0
  5. package/fesm2022/ojiepermana-angular-theme-layout.mjs +574 -0
  6. package/fesm2022/ojiepermana-angular-theme-layout.mjs.map +1 -0
  7. package/fesm2022/ojiepermana-angular-theme-page.mjs +510 -0
  8. package/fesm2022/ojiepermana-angular-theme-page.mjs.map +1 -0
  9. package/fesm2022/ojiepermana-angular-theme-styles.mjs +244 -0
  10. package/fesm2022/ojiepermana-angular-theme-styles.mjs.map +1 -0
  11. package/fesm2022/ojiepermana-angular-theme.mjs +11 -0
  12. package/fesm2022/ojiepermana-angular-theme.mjs.map +1 -0
  13. package/layout/README.md +471 -0
  14. package/package.json +60 -0
  15. package/page/README.md +239 -0
  16. package/styles/README.md +28 -0
  17. package/styles/css/index.css +9 -0
  18. package/styles/css/seasonal/base/components.css +129 -0
  19. package/styles/css/seasonal/base/package.css +6 -0
  20. package/styles/css/seasonal/base/tailwind.css +144 -0
  21. package/styles/css/seasonal/base/theme.css +287 -0
  22. package/styles/css/seasonal/base/tokens.css +152 -0
  23. package/styles/css/seasonal/ied/package.css +4 -0
  24. package/styles/css/seasonal/ied/theme.css +78 -0
  25. package/styles/css/seasonal/imlek/components.css +87 -0
  26. package/styles/css/seasonal/imlek/package.css +6 -0
  27. package/styles/css/seasonal/imlek/tailwind.css +144 -0
  28. package/styles/css/seasonal/imlek/theme.css +95 -0
  29. package/styles/css/seasonal/imlek/tokens.css +152 -0
  30. package/styles/css/seasonal/index.css +6 -0
  31. package/styles/css/seasonal/natal/package.css +4 -0
  32. package/styles/css/seasonal/natal/theme.css +78 -0
  33. package/styles/css/seasonal/new-year/package.css +4 -0
  34. package/styles/css/seasonal/new-year/theme.css +78 -0
  35. package/styles/css/seasonal/ramadhan/package.css +4 -0
  36. package/styles/css/seasonal/ramadhan/theme.css +78 -0
  37. package/types/ojiepermana-angular-theme-layout-services.d.ts +120 -0
  38. package/types/ojiepermana-angular-theme-layout-types.d.ts +33 -0
  39. package/types/ojiepermana-angular-theme-layout.d.ts +117 -0
  40. package/types/ojiepermana-angular-theme-page.d.ts +168 -0
  41. package/types/ojiepermana-angular-theme-styles.d.ts +89 -0
  42. package/types/ojiepermana-angular-theme.d.ts +2 -0
@@ -0,0 +1,287 @@
1
+ /**
2
+ * Core theme layers and shared tokens.
3
+ */
4
+ @layer reset, base, mat-mdc, tokens, components, utilities;
5
+
6
+ @layer tokens {
7
+ :root {
8
+ --radius-base: var(--theme-radius-base, 0.625rem);
9
+ --radius-none: 0px;
10
+ --rounded-base: var(--radius-none);
11
+ --scrollbar-size: 0.5rem;
12
+ --scrollbar-radius: 9999px;
13
+ --scrollbar-track: var(--primary) / var(--opacity-10);
14
+ --scrollbar-thumb: var(--primary);
15
+ --scrollbar-thumb-hover: var(--primary);
16
+ --spacing-base: 0.25rem;
17
+
18
+ --font-size-base: 1rem;
19
+ --line-height-base: 1.5;
20
+
21
+ --border-width-base: 1px;
22
+
23
+ --shadow-base: 0 1px 2px hsl(240 10% 3.9% / 0.08);
24
+
25
+ --duration-base: 200ms;
26
+ --ease-base: cubic-bezier(0.4, 0, 0.2, 1);
27
+
28
+ --control-height-base: 2.25rem;
29
+
30
+ --container-base: 80rem;
31
+
32
+ --z-base: 1;
33
+
34
+ --opacity-10: 0.1;
35
+ --opacity-20: 0.2;
36
+ --opacity-30: 0.3;
37
+ --opacity-40: 0.4;
38
+ --opacity-50: 0.5;
39
+ --opacity-60: 0.6;
40
+ --opacity-70: 0.7;
41
+ --opacity-80: 0.8;
42
+ --opacity-90: 0.9;
43
+
44
+ --radius-xs: calc(var(--radius-base) * 0.4);
45
+ --radius-sm: calc(var(--radius-base) * 0.6);
46
+ --radius-md: calc(var(--radius-base) * 0.8);
47
+ --radius-lg: var(--radius-base);
48
+ --radius-xl: calc(var(--radius-base) * 1.4);
49
+ --radius-2xl: calc(var(--radius-base) * 1.8);
50
+ --radius-3xl: calc(var(--radius-base) * 2.2);
51
+ --radius-4xl: calc(var(--radius-base) * 2.6);
52
+ --radius: var(--radius-base);
53
+
54
+ --spacing-xs: calc(var(--spacing-base) * 1);
55
+ --spacing-sm: calc(var(--spacing-base) * 2);
56
+ --spacing-md: calc(var(--spacing-base) * 4);
57
+ --spacing-lg: calc(var(--spacing-base) * 6);
58
+ --spacing-xl: calc(var(--spacing-base) * 8);
59
+ --spacing-2xl: calc(var(--spacing-base) * 12);
60
+ --spacing-3xl: calc(var(--spacing-base) * 16);
61
+ --spacing-4xl: calc(var(--spacing-base) * 24);
62
+
63
+ --font-size-xs: calc(var(--font-size-base) * 0.75);
64
+ --font-size-sm: calc(var(--font-size-base) * 0.875);
65
+ --font-size-md: var(--font-size-base);
66
+ --font-size-lg: calc(var(--font-size-base) * 1.125);
67
+ --font-size-xl: calc(var(--font-size-base) * 1.25);
68
+ --font-size-2xl: calc(var(--font-size-base) * 1.5);
69
+ --font-size-3xl: calc(var(--font-size-base) * 1.875);
70
+ --font-size-4xl: calc(var(--font-size-base) * 2.25);
71
+
72
+ --line-height-tight: 1.25;
73
+ --line-height-snug: 1.375;
74
+ --line-height-normal: var(--line-height-base);
75
+ --line-height-relaxed: 1.625;
76
+ --line-height-loose: 2;
77
+
78
+ --border-width-thin: var(--border-width-base);
79
+ --border-width-medium: calc(var(--border-width-base) * 2);
80
+ --border-width-thick: calc(var(--border-width-base) * 3);
81
+
82
+ /* Concrete values live in the *-base primitives. The --shadow-* aliases are
83
+ * re-emitted by the Tailwind @theme mapping as var(--theme-shadow-*) in the
84
+ * later `theme` layer, so pointing either alias back at --shadow-* would
85
+ * create a var() cycle that invalidates the whole chain. */
86
+ --shadow-xs-base: 0 1px 1px hsl(240 10% 3.9% / 0.05);
87
+ --shadow-md-base: 0 4px 6px hsl(240 10% 3.9% / 0.08);
88
+ --shadow-lg-base: 0 10px 15px hsl(240 10% 3.9% / 0.1);
89
+ --shadow-xl-base: 0 20px 25px hsl(240 10% 3.9% / 0.12);
90
+ --shadow-xs: var(--shadow-xs-base);
91
+ --shadow-sm: var(--shadow-base);
92
+ --shadow-md: var(--shadow-md-base);
93
+ --shadow-lg: var(--shadow-lg-base);
94
+ --shadow-xl: var(--shadow-xl-base);
95
+
96
+ --duration-fast: calc(var(--duration-base) * 0.5);
97
+ --duration-normal: var(--duration-base);
98
+ --duration-slow: calc(var(--duration-base) * 1.5);
99
+ --duration-slower: calc(var(--duration-base) * 2);
100
+
101
+ --ease-standard: var(--ease-base);
102
+ --ease-enter: cubic-bezier(0, 0, 0.2, 1);
103
+ --ease-exit: cubic-bezier(0.4, 0, 1, 1);
104
+
105
+ --control-height-xs: 1.75rem;
106
+ --control-height-sm: 2rem;
107
+ --control-height-md: var(--control-height-base);
108
+ --control-height-lg: 3rem;
109
+ --control-height-xl: 3.5rem;
110
+
111
+ --container-sm: 40rem;
112
+ --container-md: 48rem;
113
+ --container-lg: 64rem;
114
+ --container-xl: var(--container-base);
115
+ --container-2xl: 96rem;
116
+
117
+ --z-dropdown: calc(var(--z-base) * 100);
118
+ --z-sticky: calc(var(--z-base) * 200);
119
+ --z-fixed: calc(var(--z-base) * 300);
120
+ --z-overlay: calc(var(--z-base) * 400);
121
+ --z-modal: calc(var(--z-base) * 500);
122
+ --z-popover: calc(var(--z-base) * 600);
123
+ --z-tooltip: calc(var(--z-base) * 700);
124
+ --z-toast: calc(var(--z-base) * 800);
125
+
126
+ --timeline-indicator-red: 0 72% 51%;
127
+ --timeline-indicator-red-foreground: 0 0% 100%;
128
+ --timeline-indicator-orange: 24 95% 53%;
129
+ --timeline-indicator-orange-foreground: 0 0% 100%;
130
+ --timeline-indicator-amber: 38 92% 50%;
131
+ --timeline-indicator-amber-foreground: 0 0% 100%;
132
+ --timeline-indicator-yellow: 48 96% 53%;
133
+ --timeline-indicator-yellow-foreground: 0 0% 10%;
134
+ --timeline-indicator-lime: 84 81% 44%;
135
+ --timeline-indicator-lime-foreground: 0 0% 10%;
136
+ --timeline-indicator-green: 142 71% 45%;
137
+ --timeline-indicator-green-foreground: 0 0% 100%;
138
+ --timeline-indicator-emerald: 160 84% 39%;
139
+ --timeline-indicator-emerald-foreground: 0 0% 100%;
140
+ --timeline-indicator-teal: 173 80% 40%;
141
+ --timeline-indicator-teal-foreground: 0 0% 100%;
142
+ --timeline-indicator-cyan: 191 91% 36%;
143
+ --timeline-indicator-cyan-foreground: 0 0% 100%;
144
+ --timeline-indicator-sky: 199 89% 48%;
145
+ --timeline-indicator-sky-foreground: 0 0% 100%;
146
+ --timeline-indicator-blue: 221 83% 53%;
147
+ --timeline-indicator-blue-foreground: 0 0% 100%;
148
+ --timeline-indicator-indigo: 239 84% 67%;
149
+ --timeline-indicator-indigo-foreground: 0 0% 100%;
150
+ --timeline-indicator-violet: 258 90% 66%;
151
+ --timeline-indicator-violet-foreground: 0 0% 100%;
152
+ --timeline-indicator-purple: 271 91% 65%;
153
+ --timeline-indicator-purple-foreground: 0 0% 100%;
154
+ --timeline-indicator-fuchsia: 292 84% 61%;
155
+ --timeline-indicator-fuchsia-foreground: 0 0% 100%;
156
+ --timeline-indicator-pink: 330 81% 60%;
157
+ --timeline-indicator-pink-foreground: 0 0% 100%;
158
+ --timeline-indicator-rose: 349 89% 60%;
159
+ --timeline-indicator-rose-foreground: 0 0% 100%;
160
+
161
+ --layout-grid-line: var(--border);
162
+ --layout-grid-line-opacity: 0.18;
163
+ --layout-grid-dot-opacity: 0.22;
164
+
165
+ --overlay-backdrop: 240 10% 3.9% / 0.5;
166
+ --overlay-backdrop-strong: 240 10% 3.9% / 0.4;
167
+
168
+ --editor-highlight: 48 96% 80%;
169
+
170
+ --font-size-2xs: 0.625rem;
171
+ --line-height-2xs: 1rem;
172
+ --font-size-2xs-plus: 0.6875rem;
173
+ --line-height-2xs-plus: 1rem;
174
+
175
+ /* Deprecated: use the new primitive token names instead.
176
+ * Must reference the *-base primitives, never --shadow-* — the Tailwind
177
+ * @theme mapping re-emits --shadow-*: var(--theme-shadow-*), so an alias
178
+ * back to --shadow-* forms a var() cycle. */
179
+ --theme-shadow-xs: var(--shadow-xs-base);
180
+ --theme-radius-xs: var(--radius-xs);
181
+ --theme-radius-sm: var(--radius-sm);
182
+ --theme-radius-md: var(--radius-base);
183
+ --theme-radius-lg: var(--radius-xl);
184
+ --border-width: var(--border-width-base);
185
+ --theme-shadow-sm: var(--shadow-base);
186
+ --theme-shadow: var(--shadow-base);
187
+ --theme-shadow-md: var(--shadow-md-base);
188
+ --theme-shadow-lg: var(--shadow-lg-base);
189
+ --theme-shadow-xl: var(--shadow-xl-base);
190
+ }
191
+
192
+ :root,
193
+ [data-mode='light'] {
194
+ color-scheme: light;
195
+
196
+ --background: 0 0% 100%;
197
+ --foreground: 240 10% 3.9%;
198
+
199
+ --card: 0 0% 100%;
200
+ --card-foreground: 240 10% 3.9%;
201
+
202
+ --popover: 0 0% 100%;
203
+ --popover-foreground: 240 10% 3.9%;
204
+
205
+ --muted: 240 4.8% 95.9%;
206
+ --muted-foreground: 240 3.8% 46.1%;
207
+
208
+ --border: 240 5.9% 90%;
209
+ --input: 240 5.9% 90%;
210
+ }
211
+
212
+ [data-mode='dark'] {
213
+ color-scheme: dark;
214
+
215
+ --background: 240 10% 3.9%;
216
+ --foreground: 0 0% 98%;
217
+
218
+ --card: 240 10% 3.9%;
219
+ --card-foreground: 0 0% 98%;
220
+
221
+ --popover: 240 10% 3.9%;
222
+ --popover-foreground: 0 0% 98%;
223
+
224
+ --muted: 240 3.7% 15.9%;
225
+ --muted-foreground: 240 5% 64.9%;
226
+
227
+ --border: 240 3.7% 15.9%;
228
+ --input: 240 3.7% 15.9%;
229
+ }
230
+ }
231
+
232
+ @layer tokens {
233
+ :root {
234
+ --destructive: 0 72% 51%;
235
+ --destructive-foreground: 0 0% 100%;
236
+
237
+ --success: 142 71% 45%;
238
+ --success-foreground: 0 0% 100%;
239
+
240
+ --warning: 38 92% 50%;
241
+ --warning-foreground: 0 0% 10%;
242
+
243
+ --info: 217 91% 60%;
244
+ --info-foreground: 0 0% 100%;
245
+
246
+ --chart-1: var(--theme-chart-1, var(--primary));
247
+ --chart-2: var(--theme-chart-2, var(--accent-foreground));
248
+ --chart-3: var(--theme-chart-3, 271 81% 56%);
249
+ --chart-4: var(--theme-chart-4, 38 92% 50%);
250
+ --chart-5: var(--theme-chart-5, 355 78% 56%);
251
+
252
+ --sidebar: var(--card);
253
+ --sidebar-background: var(--sidebar);
254
+ --sidebar-foreground: var(--foreground);
255
+ --sidebar-primary: var(--primary);
256
+ --sidebar-primary-foreground: var(--primary-foreground);
257
+ --sidebar-accent: var(--accent);
258
+ --sidebar-accent-foreground: var(--accent-foreground);
259
+ --sidebar-border: var(--border);
260
+ --sidebar-ring: var(--ring);
261
+ }
262
+
263
+ [data-mode='dark'] {
264
+ --destructive: 0 62% 45%;
265
+ --destructive-foreground: 0 0% 95%;
266
+
267
+ --success: 142 60% 40%;
268
+ --success-foreground: 0 0% 95%;
269
+
270
+ --warning: 38 80% 45%;
271
+ --warning-foreground: 0 0% 10%;
272
+
273
+ --info: 217 80% 55%;
274
+ --info-foreground: 0 0% 95%;
275
+
276
+ --overlay-backdrop: 0 0% 0% / 0.64;
277
+ --overlay-backdrop-strong: 0 0% 0% / 0.5;
278
+
279
+ --editor-highlight: 48 70% 30%;
280
+
281
+ --chart-1: var(--theme-chart-1, var(--primary));
282
+ --chart-2: var(--theme-chart-2, var(--accent-foreground));
283
+ --chart-3: var(--theme-chart-3, 271 85% 70%);
284
+ --chart-4: var(--theme-chart-4, 38 96% 62%);
285
+ --chart-5: var(--theme-chart-5, 355 82% 68%);
286
+ }
287
+ }
@@ -0,0 +1,152 @@
1
+ /**
2
+ * Default theme color, style, and layout tokens.
3
+ */
4
+ @layer tokens {
5
+ :root {
6
+ --highlight: 0 0% 64%;
7
+ --highlight-border-alpha: 0.7;
8
+ --highlight-background-alpha: 0.7;
9
+
10
+ --background: 210 38% 98%;
11
+ --surface: 0 0% 89.8%;
12
+ --surface-foreground: 211 56% 12%;
13
+ --foreground: 211 56% 12%;
14
+
15
+ --card: 0 0% 100%;
16
+ --card-foreground: 211 56% 12%;
17
+
18
+ --popover: 0 0% 100%;
19
+ --popover-foreground: 211 56% 12%;
20
+
21
+ --muted: 211 34% 94%;
22
+ --muted-foreground: 211 24% 38%;
23
+
24
+ --border: 211 28% 82%;
25
+ --input: 211 28% 82%;
26
+
27
+ --primary: 211 95% 29%;
28
+ --primary-foreground: 0 0% 100%;
29
+ --accent: 211 95% 96%;
30
+ --accent-foreground: 211 95% 22%;
31
+ --secondary: 211 24% 95%;
32
+ --secondary-foreground: 211 75% 24%;
33
+ --ring: 211 95% 29%;
34
+
35
+ --radius-base: 0.625rem;
36
+ --radius: var(--radius-base);
37
+
38
+ /* Deprecated: use the --radius-* tokens directly. */
39
+ --theme-radius-base: var(--radius-base);
40
+ --theme-radius-xs: var(--radius-xs);
41
+ --theme-radius-sm: var(--radius-sm);
42
+ --theme-radius-md: var(--radius-base);
43
+ --theme-radius-lg: var(--radius-base);
44
+
45
+ --border-width-base: 1px;
46
+ --border-width: var(--border-width-base);
47
+
48
+ /* Concrete values live in the *-base primitives; --shadow-* and
49
+ * --theme-shadow-* are aliases. Never alias --theme-shadow-* back to
50
+ * --shadow-* — the Tailwind @theme mapping re-emits
51
+ * --shadow-*: var(--theme-shadow-*) in the later `theme` layer, which
52
+ * turns that into a var() cycle and invalidates both tokens. */
53
+ --shadow-base: 0 1px 0 0 hsl(211 95% 12% / 0.08);
54
+ --shadow-md-base: 0 8px 18px -14px hsl(211 95% 12% / 0.24);
55
+ --shadow-lg-base: 0 18px 36px -28px hsl(211 95% 12% / 0.34);
56
+ --shadow-xl-base: 0 24px 48px -36px hsl(211 95% 12% / 0.4);
57
+ --shadow-sm: var(--shadow-base);
58
+ --shadow-md: var(--shadow-md-base);
59
+ --shadow-lg: var(--shadow-lg-base);
60
+ --shadow-xl: var(--shadow-xl-base);
61
+
62
+ --theme-shadow-sm: var(--shadow-base);
63
+ --theme-shadow: 0 2px 4px -2px hsl(211 95% 12% / 0.14);
64
+ --theme-shadow-md: var(--shadow-md-base);
65
+ --theme-shadow-lg: var(--shadow-lg-base);
66
+ --theme-shadow-xl: var(--shadow-xl-base);
67
+ --shadow: var(--theme-shadow);
68
+
69
+ --theme-font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
70
+ --theme-font-mono: 'JetBrains Mono', 'Fira Code', monospace;
71
+
72
+ --font-sans: var(--theme-font-sans);
73
+ --font-mono: var(--theme-font-mono);
74
+ --font-weight-bold: 600;
75
+ --theme-text-scale: 1;
76
+ --font-size-base: 1rem;
77
+ --line-height-base: 1.5;
78
+ --control-height-base: 2.25rem;
79
+ --nav-font-family: var(--font-sans);
80
+ --nav-text-size: calc(var(--text-base) - 0.125rem);
81
+ --nav-text-line-height: var(--text-base--line-height);
82
+ --nav-heading-font-family: var(--font-sans);
83
+ --nav-heading-size: var(--text-sm);
84
+ --nav-heading-line-height: var(--text-sm--line-height);
85
+ --nav-heading-weight: 600;
86
+ --nav-heading-letter-spacing: 0.12em;
87
+ --nav-badge-font-family: var(--font-sans);
88
+ --nav-badge-size: var(--text-sm);
89
+ --nav-badge-line-height: var(--text-sm--line-height);
90
+ --nav-badge-weight: 500;
91
+ --letter-spacing: 0;
92
+ --spacing-base: 0.25rem;
93
+ --space-unit: var(--spacing-base);
94
+ --layout-topbar-height: 3.25rem;
95
+
96
+ --layout-shell-padding: clamp(1rem, 2vw, 2rem);
97
+ --layout-frame-radius: var(--radius-lg);
98
+ --layout-frame-shadow: var(--shadow-sm);
99
+ --layout-sidebar-width: 17.5rem;
100
+ --container-base: 80rem;
101
+ --layout-main-max-width: var(--container-base);
102
+ --layout-vertical-shell-max-width: calc(var(--layout-sidebar-width) + var(--layout-main-max-width));
103
+ --layout-empty-max-width: 24rem;
104
+ --layout-empty-padding: clamp(1.5rem, 4vw, 3rem);
105
+ --layout-topbar-inline: 0.875rem;
106
+ --layout-logo-mark-size: 2rem;
107
+ }
108
+
109
+ :root[data-mode='dark'] {
110
+ --highlight: 0 0% 64%;
111
+ --highlight-border-alpha: 0.45;
112
+ --highlight-background-alpha: 0.55;
113
+
114
+ --background: 211 38% 9%;
115
+ --surface: 211 22% 18%;
116
+ --surface-foreground: 210 40% 96%;
117
+ --foreground: 210 40% 96%;
118
+
119
+ --card: 211 34% 11%;
120
+ --card-foreground: 210 40% 96%;
121
+
122
+ --popover: 211 34% 11%;
123
+ --popover-foreground: 210 40% 96%;
124
+
125
+ --muted: 211 22% 18%;
126
+ --muted-foreground: 211 18% 70%;
127
+
128
+ --border: 211 24% 24%;
129
+ --input: 211 24% 24%;
130
+
131
+ --accent: 211 58% 18%;
132
+ --accent-foreground: 211 90% 84%;
133
+ --secondary: 211 24% 18%;
134
+ --secondary-foreground: 211 82% 84%;
135
+
136
+ --shadow-base: 0 1px 0 0 hsl(210 40% 96% / 0.08);
137
+ --shadow-sm: var(--shadow-base);
138
+ --theme-shadow-sm: var(--shadow-base);
139
+
140
+ --layout-frame-shadow: 0 0 0 1px hsl(var(--border));
141
+ }
142
+ }
143
+
144
+ @layer utilities {
145
+ .border-highlight {
146
+ border-color: hsl(var(--highlight, var(--border)) / var(--highlight-border-alpha, 0.7));
147
+ }
148
+
149
+ .bg-highlight {
150
+ background-color: hsl(var(--highlight, var(--border)) / var(--highlight-background-alpha, 0.7));
151
+ }
152
+ }
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Seasonal overrides for the Ied theme.
3
+ */
4
+ @import './theme.css';
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Token overrides for the Ied season.
3
+ */
4
+ @layer tokens {
5
+ html[theme-season='ied'][data-mode='light'] {
6
+ color-scheme: light;
7
+
8
+ --highlight: 188 84% 38%;
9
+
10
+ --background: 186 38% 98%;
11
+ --surface: 45 78% 96%;
12
+ --surface-foreground: 188 46% 16%;
13
+ --foreground: 188 46% 16%;
14
+
15
+ --card: 0 0% 100%;
16
+ --card-foreground: 188 46% 16%;
17
+
18
+ --popover: 0 0% 100%;
19
+ --popover-foreground: 188 46% 16%;
20
+
21
+ --muted: 186 22% 94%;
22
+ --muted-foreground: 188 16% 34%;
23
+
24
+ --border: 186 20% 85%;
25
+ --input: 186 20% 85%;
26
+
27
+ --primary: 188 84% 38%;
28
+ --primary-foreground: 0 0% 100%;
29
+ --accent: 45 92% 94%;
30
+ --accent-foreground: 188 52% 22%;
31
+ --secondary: 184 24% 93%;
32
+ --secondary-foreground: 188 48% 24%;
33
+ --ring: 45 88% 54%;
34
+
35
+ --chart-1: 188 84% 38%;
36
+ --chart-2: 45 88% 54%;
37
+ --chart-3: 149 48% 40%;
38
+ --chart-4: 223 74% 58%;
39
+ --chart-5: 25 92% 60%;
40
+ }
41
+
42
+ html[theme-season='ied'][data-mode='dark'] {
43
+ color-scheme: dark;
44
+
45
+ --highlight: 45 92% 68%;
46
+
47
+ --background: 189 34% 11%;
48
+ --surface: 189 24% 16%;
49
+ --surface-foreground: 46 72% 95%;
50
+ --foreground: 46 72% 95%;
51
+
52
+ --card: 189 24% 14%;
53
+ --card-foreground: 46 72% 95%;
54
+
55
+ --popover: 189 24% 14%;
56
+ --popover-foreground: 46 72% 95%;
57
+
58
+ --muted: 189 18% 19%;
59
+ --muted-foreground: 46 18% 78%;
60
+
61
+ --border: 189 16% 25%;
62
+ --input: 189 16% 25%;
63
+
64
+ --primary: 45 92% 68%;
65
+ --primary-foreground: 189 46% 16%;
66
+ --accent: 188 24% 21%;
67
+ --accent-foreground: 46 82% 90%;
68
+ --secondary: 189 18% 19%;
69
+ --secondary-foreground: 46 62% 88%;
70
+ --ring: 45 92% 68%;
71
+
72
+ --chart-1: 45 92% 68%;
73
+ --chart-2: 188 76% 58%;
74
+ --chart-3: 149 54% 54%;
75
+ --chart-4: 223 82% 70%;
76
+ --chart-5: 24 96% 68%;
77
+ }
78
+ }
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Global component-facing styles that should react to the active theme.
3
+ */
4
+ @layer base {
5
+ html[theme-season='imlek'] * {
6
+ border-color: hsl(var(--border));
7
+ outline-color: hsl(var(--ring) / var(--opacity-50));
8
+ }
9
+
10
+ html[theme-season='imlek'],
11
+ html[theme-season='imlek'] body {
12
+ min-height: 100%;
13
+ }
14
+
15
+ html[theme-season='imlek'] {
16
+ background: hsl(var(--background));
17
+ }
18
+
19
+ html[theme-season='imlek'] body {
20
+ background: hsl(var(--background));
21
+ color: hsl(var(--foreground));
22
+ font-family: var(--font-sans);
23
+ font-size: var(--text-base);
24
+ line-height: var(--text-base--line-height);
25
+ letter-spacing: var(--letter-spacing);
26
+ transition:
27
+ background-color var(--duration-normal) var(--ease-standard),
28
+ color var(--duration-normal) var(--ease-standard),
29
+ border-color var(--duration-normal) var(--ease-standard),
30
+ box-shadow var(--duration-normal) var(--ease-standard),
31
+ outline-color var(--duration-normal) var(--ease-standard);
32
+ }
33
+
34
+ html[theme-season='imlek'] button,
35
+ html[theme-season='imlek'] input,
36
+ html[theme-season='imlek'] select,
37
+ html[theme-season='imlek'] textarea {
38
+ font: inherit;
39
+ }
40
+
41
+ html[theme-season='imlek'] ::selection {
42
+ background: hsl(var(--primary) / var(--opacity-24));
43
+ color: hsl(var(--foreground));
44
+ }
45
+ }
46
+
47
+ @layer components {
48
+ html[theme-season='imlek'] .nav-text {
49
+ font-family: var(--nav-font-family, var(--font-sans));
50
+ font-size: var(--nav-text-size, var(--text-base));
51
+ line-height: var(--nav-text-line-height, var(--text-base--line-height));
52
+ }
53
+
54
+ html[theme-season='imlek'] .nav-hover-surface {
55
+ @apply relative isolate hover:text-accent-foreground;
56
+ }
57
+
58
+ html[theme-season='imlek'] .nav-hover-surface::before {
59
+ content: '';
60
+ border-radius: inherit;
61
+ @apply pointer-events-none absolute inset-y-0 left-2 right-2 z-0 bg-transparent transition-colors;
62
+ }
63
+
64
+ html[theme-season='imlek'] .nav-hover-surface:hover::before {
65
+ @apply bg-accent;
66
+ }
67
+
68
+ html[theme-season='imlek'] .nav-hover-surface > * {
69
+ @apply relative z-10;
70
+ }
71
+
72
+ html[theme-season='imlek'] .nav-heading {
73
+ font-family: var(--nav-heading-font-family, var(--nav-font-family, var(--font-sans)));
74
+ font-size: var(--nav-heading-size, var(--text-sm));
75
+ line-height: var(--nav-heading-line-height, var(--text-sm--line-height));
76
+ font-weight: var(--nav-heading-weight, 600);
77
+ letter-spacing: var(--nav-heading-letter-spacing, 0.12em);
78
+ text-transform: uppercase;
79
+ }
80
+
81
+ html[theme-season='imlek'] .nav-badge {
82
+ font-family: var(--nav-badge-font-family, var(--nav-font-family, var(--font-sans)));
83
+ font-size: var(--nav-badge-size, var(--text-sm));
84
+ line-height: var(--nav-badge-line-height, var(--text-sm--line-height));
85
+ font-weight: var(--nav-badge-weight, 500);
86
+ }
87
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Internal grouped Imlek theme stylesheet.
3
+ */
4
+ @import './theme.css';
5
+ @import './tokens.css';
6
+ @import './components.css';