@almadar/ui 4.57.5 → 5.1.0

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 (48) hide show
  1. package/dist/avl/index.cjs +2499 -1903
  2. package/dist/avl/index.js +1111 -518
  3. package/dist/components/atoms/Icon.d.ts +7 -4
  4. package/dist/components/index.cjs +2064 -1636
  5. package/dist/components/index.js +905 -480
  6. package/dist/components/molecules/Breadcrumb.d.ts +4 -4
  7. package/dist/components/molecules/EmptyState.d.ts +1 -1
  8. package/dist/components/templates/DashboardLayout.d.ts +1 -1
  9. package/dist/context/index.cjs +199 -0
  10. package/dist/context/index.js +199 -0
  11. package/dist/context/themeTokens.d.ts +1 -1
  12. package/dist/docs/index.cjs +456 -98
  13. package/dist/docs/index.d.cts +7 -4
  14. package/dist/docs/index.js +429 -74
  15. package/dist/lib/iconFamily.d.ts +41 -0
  16. package/dist/marketing/index.cjs +480 -124
  17. package/dist/marketing/index.d.cts +7 -4
  18. package/dist/marketing/index.js +446 -93
  19. package/dist/providers/index.cjs +1933 -1505
  20. package/dist/providers/index.js +909 -484
  21. package/dist/runtime/index.cjs +2130 -1534
  22. package/dist/runtime/index.js +1071 -478
  23. package/package.json +5 -2
  24. package/tailwind-preset.cjs +118 -3
  25. package/themes/_contract.md +198 -0
  26. package/themes/almadar-website.css +212 -0
  27. package/themes/almadar.css +210 -0
  28. package/themes/arctic.css +210 -0
  29. package/themes/atelier.css +427 -0
  30. package/themes/copper.css +210 -0
  31. package/themes/ember.css +210 -0
  32. package/themes/forest.css +210 -0
  33. package/themes/gazette.css +411 -0
  34. package/themes/index.css +12 -0
  35. package/themes/kiosk.css +412 -0
  36. package/themes/lavender.css +210 -0
  37. package/themes/midnight.css +210 -0
  38. package/themes/minimalist.css +210 -0
  39. package/themes/neon.css +210 -0
  40. package/themes/ocean.css +210 -0
  41. package/themes/prism.css +406 -0
  42. package/themes/rose.css +210 -0
  43. package/themes/sand.css +210 -0
  44. package/themes/slate.css +210 -0
  45. package/themes/sunset.css +210 -0
  46. package/themes/terminal.css +422 -0
  47. package/themes/trait-wars.css +210 -0
  48. package/themes/wireframe.css +216 -0
@@ -0,0 +1,411 @@
1
+ /**
2
+ * Gazette Theme
3
+ *
4
+ * Spacious editorial aesthetic in the Substack/Notion lineage. Warm paper
5
+ * backgrounds, serif headlines, generous whitespace, and a single muted rust
6
+ * accent paired with sage — old-magazine warmth over corporate neutrals.
7
+ */
8
+
9
+ /* ==========================================================================
10
+ * LIGHT MODE
11
+ * ========================================================================== */
12
+ [data-theme="gazette-light"] {
13
+ /* Shadows - Soft, prominent for editorial card lift */
14
+ --shadow-none: none;
15
+ --shadow-sm: 0 1px 2px rgba(26, 22, 20, 0.06);
16
+ --shadow-main:
17
+ 0 4px 16px rgba(26, 22, 20, 0.08), 0 2px 4px rgba(26, 22, 20, 0.04);
18
+ --shadow-lg:
19
+ 0 16px 48px rgba(26, 22, 20, 0.14), 0 6px 16px rgba(26, 22, 20, 0.06);
20
+ --shadow-inner: inset 0 1px 2px rgba(26, 22, 20, 0.06);
21
+ --shadow-hover:
22
+ 0 20px 56px rgba(26, 22, 20, 0.16), 0 8px 20px rgba(26, 22, 20, 0.08);
23
+ --shadow-active: 0 2px 8px rgba(26, 22, 20, 0.1);
24
+
25
+ /* Border radius - Soft */
26
+ --radius-none: 0px;
27
+ --radius-sm: 6px;
28
+ --radius-md: 10px;
29
+ --radius-lg: 12px;
30
+ --radius-xl: 16px;
31
+ --radius-full: 9999px;
32
+
33
+ /* Border width - Hairline */
34
+ --border-width: 1px;
35
+ --border-width-thin: 1px;
36
+ --border-width-thick: 2px;
37
+
38
+ /* Colors - Warm paper with rust + sage accents */
39
+ --color-primary: #a85436;
40
+ --color-primary-hover: #8c4329;
41
+ --color-primary-foreground: #fdfbf6;
42
+
43
+ --color-secondary: #6b8e5a;
44
+ --color-secondary-hover: #5a7a4b;
45
+ --color-secondary-foreground: #fdfbf6;
46
+
47
+ --color-accent: #a85436;
48
+ --color-accent-foreground: #fdfbf6;
49
+
50
+ --color-muted: #f3eee3;
51
+ --color-muted-foreground: #6b5f55;
52
+
53
+ --color-background: #fdfbf6;
54
+ --color-foreground: #1a1614;
55
+ --color-card: #ffffff;
56
+ --color-card-foreground: #1a1614;
57
+ --color-surface: #f8f3e8;
58
+ --color-border: #e6dccb;
59
+ --color-input: #e6dccb;
60
+ --color-ring: #a85436;
61
+
62
+ /* Semantic colors */
63
+ --color-error: #b3402c;
64
+ --color-error-foreground: #fdfbf6;
65
+ --color-success: #5a7a4b;
66
+ --color-success-foreground: #fdfbf6;
67
+ --color-warning: #c08a2e;
68
+ --color-warning-foreground: #1a1614;
69
+ --color-info: #4a6b8a;
70
+ --color-info-foreground: #fdfbf6;
71
+
72
+ /* Typography - Editorial: serif display + Inter body + JetBrains mono */
73
+ --font-family:
74
+ "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
75
+ --font-weight-normal: 400;
76
+ --font-weight-medium: 500;
77
+ --font-weight-bold: 700;
78
+ --letter-spacing: -0.005em;
79
+ --line-height: 1.75;
80
+
81
+ /* Icon styling - Phosphor duotone, soft stroke */
82
+ --icon-stroke-width: 1.5;
83
+ --icon-color: #1a1614;
84
+
85
+ /* Transitions - Organic */
86
+ --transition-fast: 250ms;
87
+ --transition-normal: 400ms;
88
+ --transition-slow: 600ms;
89
+ --transition-timing: cubic-bezier(0.2, 0, 0, 1);
90
+
91
+ /* Hover/Active transforms - Gentle lift */
92
+ --hover-scale: 1;
93
+ --hover-translate-y: -2px;
94
+ --hover-translate-x: 0;
95
+ --active-scale: 0.99;
96
+ --active-translate-y: 0;
97
+
98
+ /* Focus ring - Rust */
99
+ --focus-ring-width: 2px;
100
+ --focus-ring-offset: 3px;
101
+ --focus-ring-color: #a85436;
102
+
103
+ /* Density axis — spacious 8pt rhythm */
104
+ --space-0: 0px;
105
+ --space-1: 4px;
106
+ --space-2: 8px;
107
+ --space-3: 12px;
108
+ --space-4: 16px;
109
+ --space-5: 20px;
110
+ --space-6: 24px;
111
+ --space-7: 32px;
112
+ --space-8: 40px;
113
+ --space-9: 48px;
114
+ --space-10: 56px;
115
+ --space-11: 64px;
116
+ --space-12: 80px;
117
+ /* Density axis — per-element heights (generous) */
118
+ --button-height-sm: 36px;
119
+ --button-height-md: 40px;
120
+ --button-height-lg: 44px;
121
+ --input-height-sm: 36px;
122
+ --input-height-md: 40px;
123
+ --input-height-lg: 44px;
124
+ --row-height-compact: 44px;
125
+ --row-height-normal: 56px;
126
+ --row-height-spacious: 64px;
127
+ /* Density axis — per-element padding (editorial breathing room) */
128
+ --card-padding-sm: 16px;
129
+ --card-padding-md: 24px;
130
+ --card-padding-lg: 32px;
131
+ --dialog-padding: 32px;
132
+ --section-gap: 48px;
133
+ /* Type axis — editorial family triplet */
134
+ --font-family-display: "Fraunces", "Charter", Georgia, serif;
135
+ --font-family-body:
136
+ "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
137
+ --font-family-mono:
138
+ "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
139
+ monospace;
140
+ /* Type axis — size scale (generous reading leading) */
141
+ --text-xs: 13px;
142
+ --leading-xs: 18px;
143
+ --text-sm: 14px;
144
+ --leading-sm: 22px;
145
+ --text-base: 16px;
146
+ --leading-base: 28px;
147
+ --text-lg: 19px;
148
+ --leading-lg: 30px;
149
+ --text-xl: 22px;
150
+ --leading-xl: 32px;
151
+ --text-2xl: 26px;
152
+ --leading-2xl: 34px;
153
+ --text-3xl: 30px;
154
+ --leading-3xl: 38px;
155
+ --text-4xl: 38px;
156
+ --leading-4xl: 46px;
157
+ --text-display-1: 52px;
158
+ --leading-display-1: 60px;
159
+ --text-display-2: 68px;
160
+ --leading-display-2: 76px;
161
+ /* Type axis — intent mapping (serif headlines, generous leading) */
162
+ --intent-heading-major-size: var(--text-3xl);
163
+ --intent-heading-major-weight: var(--font-weight-bold);
164
+ --intent-heading-major-leading: var(--leading-3xl);
165
+ --intent-heading-minor-size: var(--text-xl);
166
+ --intent-heading-minor-weight: var(--font-weight-bold);
167
+ --intent-heading-minor-leading: var(--leading-xl);
168
+ --intent-body-emphasis-size: var(--text-base);
169
+ --intent-body-emphasis-weight: var(--font-weight-medium);
170
+ --intent-body-emphasis-leading: var(--leading-base);
171
+ --intent-body-default-size: var(--text-base);
172
+ --intent-body-default-weight: var(--font-weight-normal);
173
+ --intent-body-default-leading: var(--leading-base);
174
+ --intent-body-quiet-size: var(--text-sm);
175
+ --intent-body-quiet-weight: var(--font-weight-normal);
176
+ --intent-body-quiet-leading: var(--leading-sm);
177
+ --intent-caption-size: var(--text-xs);
178
+ --intent-caption-weight: var(--font-weight-normal);
179
+ --intent-caption-leading: var(--leading-xs);
180
+ --intent-numeric-size: var(--text-sm);
181
+ --intent-numeric-weight: var(--font-weight-medium);
182
+ --intent-numeric-leading: var(--leading-sm);
183
+ /* Motion axis — organic durations */
184
+ --duration-instant: 0ms;
185
+ --duration-fast: 250ms;
186
+ --duration-normal: 400ms;
187
+ --duration-slow: 600ms;
188
+ --duration-dramatic: 900ms;
189
+ /* Motion axis — emphasized easing palette */
190
+ --easing-linear: linear;
191
+ --easing-standard: cubic-bezier(0.2, 0, 0, 1);
192
+ --easing-emphasized: cubic-bezier(0.2, 0, 0, 1);
193
+ --easing-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
194
+ /* Iconography axis — phosphor duotone, larger default */
195
+ --icon-family: phosphor-duotone;
196
+ --icon-default-size: 20px;
197
+ /* Elevation axis — shadowed editorial cards */
198
+ --elevation-card: var(--shadow-main);
199
+ --elevation-popover: var(--shadow-lg);
200
+ --elevation-dialog: var(--shadow-lg);
201
+ --elevation-toast: var(--shadow-main);
202
+ /* Geometry axis — soft hairlines */
203
+ --radius-container: 12px;
204
+ --radius-interactive: 10px;
205
+ --radius-pill: var(--radius-full);
206
+ --border-hairline: 1px;
207
+ --border-standard: var(--border-width);
208
+ --border-heavy: var(--border-width-thick);
209
+ }
210
+
211
+ /* ==========================================================================
212
+ * DARK MODE
213
+ * ========================================================================== */
214
+ [data-theme="gazette-dark"] {
215
+ /* Shadows - Deeper for night-mode editorial */
216
+ --shadow-none: none;
217
+ --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.3);
218
+ --shadow-main:
219
+ 0 4px 16px rgba(0, 0, 0, 0.45), 0 2px 4px rgba(0, 0, 0, 0.25);
220
+ --shadow-lg:
221
+ 0 16px 48px rgba(0, 0, 0, 0.55), 0 6px 16px rgba(0, 0, 0, 0.3);
222
+ --shadow-inner: inset 0 1px 2px rgba(0, 0, 0, 0.4);
223
+ --shadow-hover:
224
+ 0 20px 56px rgba(0, 0, 0, 0.6), 0 8px 20px rgba(0, 0, 0, 0.35);
225
+ --shadow-active: 0 2px 8px rgba(0, 0, 0, 0.4);
226
+
227
+ /* Border radius - Soft */
228
+ --radius-none: 0px;
229
+ --radius-sm: 6px;
230
+ --radius-md: 10px;
231
+ --radius-lg: 12px;
232
+ --radius-xl: 16px;
233
+ --radius-full: 9999px;
234
+
235
+ /* Border width - Hairline */
236
+ --border-width: 1px;
237
+ --border-width-thin: 1px;
238
+ --border-width-thick: 2px;
239
+
240
+ /* Colors - Warm deep-black with rust + brighter sage */
241
+ --color-primary: #c0664a;
242
+ --color-primary-hover: #d57a5d;
243
+ --color-primary-foreground: #14110d;
244
+
245
+ --color-secondary: #8aac76;
246
+ --color-secondary-hover: #9dbf89;
247
+ --color-secondary-foreground: #14110d;
248
+
249
+ --color-accent: #c0664a;
250
+ --color-accent-foreground: #14110d;
251
+
252
+ --color-muted: #1f1a16;
253
+ --color-muted-foreground: #a89e91;
254
+
255
+ --color-background: #14110d;
256
+ --color-foreground: #f5efe6;
257
+ --color-card: #1f1a16;
258
+ --color-card-foreground: #f5efe6;
259
+ --color-surface: #1a1612;
260
+ --color-border: #2e2620;
261
+ --color-input: #2e2620;
262
+ --color-ring: #c0664a;
263
+
264
+ /* Semantic colors - Warmer for dark */
265
+ --color-error: #d96650;
266
+ --color-error-foreground: #14110d;
267
+ --color-success: #8aac76;
268
+ --color-success-foreground: #14110d;
269
+ --color-warning: #d9a85a;
270
+ --color-warning-foreground: #14110d;
271
+ --color-info: #7a9ec0;
272
+ --color-info-foreground: #14110d;
273
+
274
+ /* Typography - Editorial: serif display + Inter body + JetBrains mono */
275
+ --font-family:
276
+ "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
277
+ --font-weight-normal: 400;
278
+ --font-weight-medium: 500;
279
+ --font-weight-bold: 700;
280
+ --letter-spacing: -0.005em;
281
+ --line-height: 1.75;
282
+
283
+ /* Icon styling - Phosphor duotone, soft stroke */
284
+ --icon-stroke-width: 1.5;
285
+ --icon-color: #f5efe6;
286
+
287
+ /* Transitions - Organic */
288
+ --transition-fast: 250ms;
289
+ --transition-normal: 400ms;
290
+ --transition-slow: 600ms;
291
+ --transition-timing: cubic-bezier(0.2, 0, 0, 1);
292
+
293
+ /* Hover/Active transforms - Gentle lift */
294
+ --hover-scale: 1;
295
+ --hover-translate-y: -2px;
296
+ --hover-translate-x: 0;
297
+ --active-scale: 0.99;
298
+ --active-translate-y: 0;
299
+
300
+ /* Focus ring - Rust */
301
+ --focus-ring-width: 2px;
302
+ --focus-ring-offset: 3px;
303
+ --focus-ring-color: #c0664a;
304
+
305
+ /* Density axis — spacious 8pt rhythm */
306
+ --space-0: 0px;
307
+ --space-1: 4px;
308
+ --space-2: 8px;
309
+ --space-3: 12px;
310
+ --space-4: 16px;
311
+ --space-5: 20px;
312
+ --space-6: 24px;
313
+ --space-7: 32px;
314
+ --space-8: 40px;
315
+ --space-9: 48px;
316
+ --space-10: 56px;
317
+ --space-11: 64px;
318
+ --space-12: 80px;
319
+ /* Density axis — per-element heights (generous) */
320
+ --button-height-sm: 36px;
321
+ --button-height-md: 40px;
322
+ --button-height-lg: 44px;
323
+ --input-height-sm: 36px;
324
+ --input-height-md: 40px;
325
+ --input-height-lg: 44px;
326
+ --row-height-compact: 44px;
327
+ --row-height-normal: 56px;
328
+ --row-height-spacious: 64px;
329
+ /* Density axis — per-element padding (editorial breathing room) */
330
+ --card-padding-sm: 16px;
331
+ --card-padding-md: 24px;
332
+ --card-padding-lg: 32px;
333
+ --dialog-padding: 32px;
334
+ --section-gap: 48px;
335
+ /* Type axis — editorial family triplet */
336
+ --font-family-display: "Fraunces", "Charter", Georgia, serif;
337
+ --font-family-body:
338
+ "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
339
+ --font-family-mono:
340
+ "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
341
+ monospace;
342
+ /* Type axis — size scale (generous reading leading) */
343
+ --text-xs: 13px;
344
+ --leading-xs: 18px;
345
+ --text-sm: 14px;
346
+ --leading-sm: 22px;
347
+ --text-base: 16px;
348
+ --leading-base: 28px;
349
+ --text-lg: 19px;
350
+ --leading-lg: 30px;
351
+ --text-xl: 22px;
352
+ --leading-xl: 32px;
353
+ --text-2xl: 26px;
354
+ --leading-2xl: 34px;
355
+ --text-3xl: 30px;
356
+ --leading-3xl: 38px;
357
+ --text-4xl: 38px;
358
+ --leading-4xl: 46px;
359
+ --text-display-1: 52px;
360
+ --leading-display-1: 60px;
361
+ --text-display-2: 68px;
362
+ --leading-display-2: 76px;
363
+ /* Type axis — intent mapping (serif headlines, generous leading) */
364
+ --intent-heading-major-size: var(--text-3xl);
365
+ --intent-heading-major-weight: var(--font-weight-bold);
366
+ --intent-heading-major-leading: var(--leading-3xl);
367
+ --intent-heading-minor-size: var(--text-xl);
368
+ --intent-heading-minor-weight: var(--font-weight-bold);
369
+ --intent-heading-minor-leading: var(--leading-xl);
370
+ --intent-body-emphasis-size: var(--text-base);
371
+ --intent-body-emphasis-weight: var(--font-weight-medium);
372
+ --intent-body-emphasis-leading: var(--leading-base);
373
+ --intent-body-default-size: var(--text-base);
374
+ --intent-body-default-weight: var(--font-weight-normal);
375
+ --intent-body-default-leading: var(--leading-base);
376
+ --intent-body-quiet-size: var(--text-sm);
377
+ --intent-body-quiet-weight: var(--font-weight-normal);
378
+ --intent-body-quiet-leading: var(--leading-sm);
379
+ --intent-caption-size: var(--text-xs);
380
+ --intent-caption-weight: var(--font-weight-normal);
381
+ --intent-caption-leading: var(--leading-xs);
382
+ --intent-numeric-size: var(--text-sm);
383
+ --intent-numeric-weight: var(--font-weight-medium);
384
+ --intent-numeric-leading: var(--leading-sm);
385
+ /* Motion axis — organic durations */
386
+ --duration-instant: 0ms;
387
+ --duration-fast: 250ms;
388
+ --duration-normal: 400ms;
389
+ --duration-slow: 600ms;
390
+ --duration-dramatic: 900ms;
391
+ /* Motion axis — emphasized easing palette */
392
+ --easing-linear: linear;
393
+ --easing-standard: cubic-bezier(0.2, 0, 0, 1);
394
+ --easing-emphasized: cubic-bezier(0.2, 0, 0, 1);
395
+ --easing-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
396
+ /* Iconography axis — phosphor duotone, larger default */
397
+ --icon-family: phosphor-duotone;
398
+ --icon-default-size: 20px;
399
+ /* Elevation axis — shadowed editorial cards */
400
+ --elevation-card: var(--shadow-main);
401
+ --elevation-popover: var(--shadow-lg);
402
+ --elevation-dialog: var(--shadow-lg);
403
+ --elevation-toast: var(--shadow-main);
404
+ /* Geometry axis — soft hairlines */
405
+ --radius-container: 12px;
406
+ --radius-interactive: 10px;
407
+ --radius-pill: var(--radius-full);
408
+ --border-hairline: 1px;
409
+ --border-standard: var(--border-width);
410
+ --border-heavy: var(--border-width-thick);
411
+ }
package/themes/index.css CHANGED
@@ -8,6 +8,11 @@
8
8
  * IMPORTANT: @import must precede all other statements (Vite requirement).
9
9
  */
10
10
 
11
+ /* Layer 1 skin axes — font families consumed by prism / gazette / terminal / atelier / kiosk.
12
+ * Combined into a single Google Fonts request for fewer round-trips. font-display: swap
13
+ * means body text renders immediately with the fallback chain while the web fonts load. */
14
+ @import url("https://fonts.googleapis.com/css2?family=Fraunces:wght@400;500;700;900&family=Inter:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500;700&family=Manrope:wght@400;500;600;700;800&display=swap");
15
+
11
16
  /* Core themes */
12
17
  @import "./wireframe.css";
13
18
  @import "./minimalist.css";
@@ -29,6 +34,13 @@
29
34
  @import "./arctic.css";
30
35
  @import "./copper.css";
31
36
 
37
+ /* Layer 1 skin axes — truly-unique themes (see docs/Almadar_Std_Variations.md) */
38
+ @import "./prism.css";
39
+ @import "./gazette.css";
40
+ @import "./terminal.css";
41
+ @import "./atelier.css";
42
+ @import "./kiosk.css";
43
+
32
44
  /**
33
45
  * Minimal element reset for @almadar/ui components.
34
46
  *