@almadar/ui 6.53.1 → 6.54.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 (49) hide show
  1. package/dist/Typography-CFI7JUVE.js +5 -0
  2. package/dist/{UISlotRenderer-P7A4SZSK.js → UISlotRenderer-QUEG6WFM.js} +7 -7
  3. package/dist/avl/index.cjs +709 -970
  4. package/dist/avl/index.js +24 -20
  5. package/dist/{avl-3d-context-MAt_NuU9.d.ts → avl-3d-context-BpBKZIbc.d.ts} +1 -0
  6. package/dist/{chunk-DQTV6QVS.js → chunk-4HC5HRHB.js} +53 -2
  7. package/dist/{chunk-HB4C27KU.js → chunk-4UP6BZ4R.js} +1 -1
  8. package/dist/{chunk-UOTYAPV5.js → chunk-FJDS4SVD.js} +3 -3
  9. package/dist/{chunk-QVXLKFUQ.js → chunk-MCKFWPT2.js} +1 -1
  10. package/dist/{chunk-7KSLPY56.js → chunk-N2V4LHFQ.js} +1 -0
  11. package/dist/{chunk-HUG25TT3.js → chunk-U2FGMHQP.js} +448 -885
  12. package/dist/{chunk-53VTY5CC.js → chunk-U3CGKPOK.js} +253 -92
  13. package/dist/{chunk-7LM6I3NA.js → chunk-Z5IYJU44.js} +1 -0
  14. package/dist/{chunk-FUQASYEW.js → chunk-Z7JWXIRE.js} +2 -2
  15. package/dist/components/index.cjs +449 -879
  16. package/dist/components/index.d.ts +5 -1
  17. package/dist/components/index.js +15 -16
  18. package/dist/context/index.cjs +2 -0
  19. package/dist/context/index.js +3 -1
  20. package/dist/hooks/index.cjs +6 -0
  21. package/dist/hooks/index.d.ts +10 -1
  22. package/dist/hooks/index.js +3 -4
  23. package/dist/lib/drawable/three/index.cjs +2 -0
  24. package/dist/lib/drawable/three/index.d.ts +2 -2
  25. package/dist/lib/drawable/three/index.js +6 -6
  26. package/dist/lib/index.cjs +1 -0
  27. package/dist/lib/index.js +3 -3
  28. package/dist/locales/index.cjs +3 -0
  29. package/dist/locales/index.js +3 -1
  30. package/dist/providers/index.cjs +444 -879
  31. package/dist/providers/index.d.ts +1 -1
  32. package/dist/providers/index.js +8 -8
  33. package/dist/runtime/index.cjs +3992 -4237
  34. package/dist/runtime/index.d.ts +22 -4
  35. package/dist/runtime/index.js +15 -12
  36. package/dist/ssr/index.cjs +2 -1
  37. package/dist/ssr/index.js +2 -1
  38. package/locales/ar.json +1 -0
  39. package/locales/en.json +1 -0
  40. package/locales/sl.json +1 -0
  41. package/package.json +7 -6
  42. package/scripts/audit-tailwind-safelist.ts +21 -1
  43. package/tailwind-preset.cjs +5 -6
  44. package/themes/_fonts.css +6 -4
  45. package/themes/_presets.css +2 -0
  46. package/themes/almadar-heritage.css +373 -0
  47. package/themes/orb.css +373 -0
  48. package/dist/Typography-7QEWUTW3.js +0 -5
  49. package/dist/chunk-E37BYSXY.js +0 -51
package/themes/orb.css ADDED
@@ -0,0 +1,373 @@
1
+ /**
2
+ * GENERATED — do not edit by hand.
3
+ * Source: packages/almadar-core/themes/orb.json
4
+ * Regenerate: node tools/almadar-pattern-sync/dist/index.js themes (or `almadar-sync themes`)
5
+ */
6
+
7
+ [data-theme="orb-light"] {
8
+ --color-primary: #14161a;
9
+ --color-primary-hover: #2a2d33;
10
+ --color-primary-foreground: #ffffff;
11
+ --color-secondary: #efede7;
12
+ --color-secondary-hover: #e6e3db;
13
+ --color-secondary-foreground: #14161a;
14
+ --color-accent: #00767c;
15
+ --color-accent-foreground: #ffffff;
16
+ --color-tertiary: #00b1b8;
17
+ --color-tertiary-hover: #0096a0;
18
+ --color-tertiary-foreground: #14161a;
19
+ --color-tertiary-muted: rgba(0, 177, 184, 0.14);
20
+ --color-muted: #f0eee8;
21
+ --color-muted-foreground: #4a4d55;
22
+ --color-background: #f7f6f2;
23
+ --color-foreground: #14161a;
24
+ --color-card: #fffefb;
25
+ --color-card-foreground: #14161a;
26
+ --color-surface: #f1efe9;
27
+ --color-border: #e2dfd6;
28
+ --color-input: #d6d2c7;
29
+ --color-ring: #00b1b8;
30
+ --color-error: #c0392b;
31
+ --color-error-foreground: #ffffff;
32
+ --color-success: #1e7a4c;
33
+ --color-success-foreground: #ffffff;
34
+ --color-warning: #a35a0f;
35
+ --color-warning-foreground: #ffffff;
36
+ --color-info: #00767c;
37
+ --color-info-foreground: #ffffff;
38
+ --color-scrim: rgba(20, 22, 43, 0.5);
39
+ --radius-none: 0px;
40
+ --radius-sm: 0px;
41
+ --radius-md: 2px;
42
+ --radius-lg: 0px;
43
+ --radius-xl: 0px;
44
+ --radius-full: 9999px;
45
+ --border-width: 1px;
46
+ --border-width-thin: 1px;
47
+ --border-width-thick: 2px;
48
+ --font-family: "Cairo", "Noto Naskh Arabic", "Segoe UI", sans-serif;
49
+ --font-weight-normal: 400;
50
+ --font-weight-medium: 500;
51
+ --font-weight-bold: 700;
52
+ --letter-spacing: 0em;
53
+ --line-height: 1.6;
54
+ --icon-color: #14161a;
55
+ --transition-fast: 140ms;
56
+ --transition-normal: 220ms;
57
+ --transition-slow: 360ms;
58
+ --transition-timing: cubic-bezier(0.4, 0, 0.2, 1);
59
+ --hover-scale: 1;
60
+ --hover-translate-y: 0px;
61
+ --hover-translate-x: 0px;
62
+ --active-scale: 1;
63
+ --active-translate-y: 0px;
64
+ --focus-ring-width: 2px;
65
+ --focus-ring-offset: 2px;
66
+ --focus-ring-color: #00b1b8;
67
+ --shadow-main: 0 1px 2px rgba(20, 22, 43, 0.05), 0 4px 16px rgba(79, 70, 229, 0.06);
68
+ --shadow-sm: 0 1px 2px rgba(20, 22, 43, 0.06);
69
+ --shadow-lg: 0 18px 48px rgba(20, 22, 43, 0.12);
70
+ --shadow-inner: inset 0 1px 3px rgba(31,63,143,0.12);
71
+ --shadow-none: none;
72
+ --shadow-hover: 0 10px 30px rgba(79, 70, 229, 0.12);
73
+ --shadow-active: 0 1px 2px rgba(31,63,143,0.15);
74
+ --space-0: 0px;
75
+ --space-1: 4px;
76
+ --space-2: 8px;
77
+ --space-3: 12px;
78
+ --space-4: 16px;
79
+ --space-5: 20px;
80
+ --space-6: 24px;
81
+ --space-7: 28px;
82
+ --space-8: 32px;
83
+ --space-9: 36px;
84
+ --space-10: 40px;
85
+ --space-11: 44px;
86
+ --space-12: 48px;
87
+ --button-height-sm: 30px;
88
+ --button-height-md: 40px;
89
+ --button-height-lg: 48px;
90
+ --input-height-sm: 30px;
91
+ --input-height-md: 40px;
92
+ --input-height-lg: 48px;
93
+ --row-height-compact: 32px;
94
+ --row-height-normal: 40px;
95
+ --row-height-spacious: 48px;
96
+ --card-padding-sm: 12px;
97
+ --card-padding-md: 18px;
98
+ --card-padding-lg: 24px;
99
+ --dialog-padding: 24px;
100
+ --section-gap: 32px;
101
+ --font-family-display: "IBM Plex Sans", "IBM Plex Sans Arabic", system-ui, sans-serif;
102
+ --font-family-body: "IBM Plex Sans", "IBM Plex Sans Arabic", system-ui, sans-serif;
103
+ --font-family-mono: "IBM Plex Mono", "IBM Plex Sans Arabic", ui-monospace, SFMono-Regular, Menlo, monospace;
104
+ --heading-weight: 600;
105
+ --heading-transform: none;
106
+ --heading-tracking: -0.015em;
107
+ --heading-style: normal;
108
+ --heading-shadow: none;
109
+ --text-xs: 12px;
110
+ --leading-xs: 16px;
111
+ --text-sm: 14px;
112
+ --leading-sm: 20px;
113
+ --text-base: 16px;
114
+ --leading-base: 24px;
115
+ --text-lg: 18px;
116
+ --leading-lg: 28px;
117
+ --text-xl: 20px;
118
+ --leading-xl: 28px;
119
+ --text-2xl: 24px;
120
+ --leading-2xl: 32px;
121
+ --text-3xl: 30px;
122
+ --leading-3xl: 36px;
123
+ --text-4xl: 36px;
124
+ --leading-4xl: 40px;
125
+ --text-display-1: 48px;
126
+ --leading-display-1: 52px;
127
+ --text-display-2: 60px;
128
+ --leading-display-2: 64px;
129
+ --intent-heading-major-size: var(--text-2xl);
130
+ --intent-heading-major-weight: var(--font-weight-bold);
131
+ --intent-heading-major-leading: var(--leading-2xl);
132
+ --intent-heading-minor-size: var(--text-lg);
133
+ --intent-heading-minor-weight: var(--font-weight-bold);
134
+ --intent-heading-minor-leading: var(--leading-lg);
135
+ --intent-body-emphasis-size: var(--text-base);
136
+ --intent-body-emphasis-weight: var(--font-weight-medium);
137
+ --intent-body-emphasis-leading: var(--leading-base);
138
+ --intent-body-default-size: var(--text-sm);
139
+ --intent-body-default-weight: var(--font-weight-normal);
140
+ --intent-body-default-leading: var(--leading-sm);
141
+ --intent-body-quiet-size: var(--text-sm);
142
+ --intent-body-quiet-weight: var(--font-weight-normal);
143
+ --intent-body-quiet-leading: var(--leading-sm);
144
+ --intent-caption-size: var(--text-xs);
145
+ --intent-caption-weight: var(--font-weight-normal);
146
+ --intent-caption-leading: var(--leading-xs);
147
+ --intent-numeric-size: var(--text-sm);
148
+ --intent-numeric-weight: var(--font-weight-medium);
149
+ --intent-numeric-leading: var(--leading-sm);
150
+ --duration-instant: 0ms;
151
+ --duration-fast: var(--transition-fast);
152
+ --duration-normal: var(--transition-normal);
153
+ --duration-slow: var(--transition-slow);
154
+ --duration-dramatic: 700ms;
155
+ --easing-linear: linear;
156
+ --easing-standard: var(--transition-timing);
157
+ --easing-emphasized: cubic-bezier(0.22, 0.61, 0.36, 1);
158
+ --easing-spring: cubic-bezier(0.25, 0.8, 0.25, 1);
159
+ --motion-modal-enter-from-transform: scale(0.96);
160
+ --motion-modal-exit-to-transform: scale(0.96);
161
+ --motion-popover-enter-from-transform: scale(0.97);
162
+ --motion-popover-exit-to-transform: scale(0.97);
163
+ --motion-toast-enter-from-transform: translateY(-12px);
164
+ --motion-toast-exit-to-transform: translateY(-12px);
165
+ --motion-page-enter-from-transform: translateY(8px);
166
+ --icon-family: phosphor-duotone;
167
+ --icon-stroke-width: 1.5;
168
+ --icon-default-size: 18px;
169
+ --elevation-card: none;
170
+ --elevation-popover: var(--shadow-main);
171
+ --elevation-dialog: var(--shadow-lg);
172
+ --elevation-toast: var(--shadow-main);
173
+ --elevation-interactive: none;
174
+ --elevation-pressed: var(--shadow-active);
175
+ --radius-container: var(--radius-lg);
176
+ --radius-interactive: var(--radius-md);
177
+ --radius-pill: var(--radius-full);
178
+ --border-hairline: 1px;
179
+ --border-standard: var(--border-width);
180
+ --border-heavy: var(--border-width-thick);
181
+ --corner-shape: round;
182
+ --corner-shape-pill: round;
183
+ --border-style: solid;
184
+ --border-style-interactive: solid;
185
+ --surface-backdrop: none;
186
+ --surface-card-image: none;
187
+ --surface-page-image: repeating-radial-gradient(circle at 92% -8%, transparent 0 95px, rgba(20,22,26,0.05) 96px 97px);
188
+ --surface-page-image-size: auto;
189
+ }
190
+
191
+ [data-theme="orb-dark"] {
192
+ --color-primary: #ecebe6;
193
+ --color-primary-hover: #ffffff;
194
+ --color-primary-foreground: #0e1013;
195
+ --color-secondary: #181b20;
196
+ --color-secondary-hover: #20242a;
197
+ --color-secondary-foreground: #ecebe6;
198
+ --color-accent: #2cc7cd;
199
+ --color-accent-foreground: #0e1013;
200
+ --color-tertiary: #2cc7cd;
201
+ --color-tertiary-hover: #4fd4d9;
202
+ --color-tertiary-foreground: #0e1013;
203
+ --color-tertiary-muted: rgba(44, 199, 205, 0.14);
204
+ --color-muted: #14171b;
205
+ --color-muted-foreground: #9aa0a8;
206
+ --color-background: #0e1013;
207
+ --color-foreground: #ecebe6;
208
+ --color-card: #15181c;
209
+ --color-card-foreground: #ecebe6;
210
+ --color-surface: #15181c;
211
+ --color-border: #262a31;
212
+ --color-input: #30353d;
213
+ --color-ring: #2cc7cd;
214
+ --color-error: #f2877a;
215
+ --color-error-foreground: #000000;
216
+ --color-success: #5fd39a;
217
+ --color-success-foreground: #000000;
218
+ --color-warning: #f0b46a;
219
+ --color-warning-foreground: #000000;
220
+ --color-info: #2cc7cd;
221
+ --color-info-foreground: #000000;
222
+ --color-scrim: rgba(0, 0, 0, 0.7);
223
+ --radius-none: 0px;
224
+ --radius-sm: 6px;
225
+ --radius-md: 8px;
226
+ --radius-lg: 12px;
227
+ --radius-xl: 16px;
228
+ --radius-full: 9999px;
229
+ --border-width: 1px;
230
+ --border-width-thin: 1px;
231
+ --border-width-thick: 2px;
232
+ --font-family: "Cairo", "Noto Naskh Arabic", "Segoe UI", sans-serif;
233
+ --font-weight-normal: 400;
234
+ --font-weight-medium: 500;
235
+ --font-weight-bold: 700;
236
+ --letter-spacing: 0em;
237
+ --line-height: 1.6;
238
+ --icon-color: #ecebe6;
239
+ --transition-fast: 140ms;
240
+ --transition-normal: 220ms;
241
+ --transition-slow: 360ms;
242
+ --transition-timing: cubic-bezier(0.4, 0, 0.2, 1);
243
+ --hover-scale: 1;
244
+ --hover-translate-y: 0px;
245
+ --hover-translate-x: 0px;
246
+ --active-scale: 1;
247
+ --active-translate-y: 0px;
248
+ --focus-ring-width: 2px;
249
+ --focus-ring-offset: 2px;
250
+ --focus-ring-color: #2cc7cd;
251
+ --shadow-main: 0 1px 2px rgba(0, 0, 0, 0.5), 0 6px 20px rgba(139, 140, 247, 0.08);
252
+ --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.45);
253
+ --shadow-lg: 0 18px 48px rgba(0, 0, 0, 0.6);
254
+ --shadow-inner: inset 0 1px 3px rgba(0,0,0,0.4);
255
+ --shadow-none: none;
256
+ --shadow-hover: 0 10px 30px rgba(139, 140, 247, 0.16);
257
+ --shadow-active: 0 1px 2px rgba(0,0,0,0.5);
258
+ --space-0: 0px;
259
+ --space-1: 4px;
260
+ --space-2: 8px;
261
+ --space-3: 12px;
262
+ --space-4: 16px;
263
+ --space-5: 20px;
264
+ --space-6: 24px;
265
+ --space-7: 28px;
266
+ --space-8: 32px;
267
+ --space-9: 36px;
268
+ --space-10: 40px;
269
+ --space-11: 44px;
270
+ --space-12: 48px;
271
+ --button-height-sm: 30px;
272
+ --button-height-md: 40px;
273
+ --button-height-lg: 48px;
274
+ --input-height-sm: 30px;
275
+ --input-height-md: 40px;
276
+ --input-height-lg: 48px;
277
+ --row-height-compact: 32px;
278
+ --row-height-normal: 40px;
279
+ --row-height-spacious: 48px;
280
+ --card-padding-sm: 12px;
281
+ --card-padding-md: 18px;
282
+ --card-padding-lg: 24px;
283
+ --dialog-padding: 24px;
284
+ --section-gap: 32px;
285
+ --font-family-display: "Geist", "IBM Plex Sans Arabic", system-ui, sans-serif;
286
+ --font-family-body: "Geist", "IBM Plex Sans Arabic", system-ui, sans-serif;
287
+ --font-family-mono: "Geist Mono", "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
288
+ --heading-weight: 600;
289
+ --heading-transform: none;
290
+ --heading-tracking: -0.025em;
291
+ --heading-style: normal;
292
+ --heading-shadow: none;
293
+ --text-xs: 12px;
294
+ --leading-xs: 16px;
295
+ --text-sm: 14px;
296
+ --leading-sm: 20px;
297
+ --text-base: 16px;
298
+ --leading-base: 24px;
299
+ --text-lg: 18px;
300
+ --leading-lg: 28px;
301
+ --text-xl: 20px;
302
+ --leading-xl: 28px;
303
+ --text-2xl: 24px;
304
+ --leading-2xl: 32px;
305
+ --text-3xl: 30px;
306
+ --leading-3xl: 36px;
307
+ --text-4xl: 36px;
308
+ --leading-4xl: 40px;
309
+ --text-display-1: 48px;
310
+ --leading-display-1: 52px;
311
+ --text-display-2: 60px;
312
+ --leading-display-2: 64px;
313
+ --intent-heading-major-size: var(--text-2xl);
314
+ --intent-heading-major-weight: var(--font-weight-bold);
315
+ --intent-heading-major-leading: var(--leading-2xl);
316
+ --intent-heading-minor-size: var(--text-lg);
317
+ --intent-heading-minor-weight: var(--font-weight-bold);
318
+ --intent-heading-minor-leading: var(--leading-lg);
319
+ --intent-body-emphasis-size: var(--text-base);
320
+ --intent-body-emphasis-weight: var(--font-weight-medium);
321
+ --intent-body-emphasis-leading: var(--leading-base);
322
+ --intent-body-default-size: var(--text-sm);
323
+ --intent-body-default-weight: var(--font-weight-normal);
324
+ --intent-body-default-leading: var(--leading-sm);
325
+ --intent-body-quiet-size: var(--text-sm);
326
+ --intent-body-quiet-weight: var(--font-weight-normal);
327
+ --intent-body-quiet-leading: var(--leading-sm);
328
+ --intent-caption-size: var(--text-xs);
329
+ --intent-caption-weight: var(--font-weight-normal);
330
+ --intent-caption-leading: var(--leading-xs);
331
+ --intent-numeric-size: var(--text-sm);
332
+ --intent-numeric-weight: var(--font-weight-medium);
333
+ --intent-numeric-leading: var(--leading-sm);
334
+ --duration-instant: 0ms;
335
+ --duration-fast: var(--transition-fast);
336
+ --duration-normal: var(--transition-normal);
337
+ --duration-slow: var(--transition-slow);
338
+ --duration-dramatic: 700ms;
339
+ --easing-linear: linear;
340
+ --easing-standard: var(--transition-timing);
341
+ --easing-emphasized: cubic-bezier(0.22, 0.61, 0.36, 1);
342
+ --easing-spring: cubic-bezier(0.25, 0.8, 0.25, 1);
343
+ --motion-modal-enter-from-transform: scale(0.96);
344
+ --motion-modal-exit-to-transform: scale(0.96);
345
+ --motion-popover-enter-from-transform: scale(0.97);
346
+ --motion-popover-exit-to-transform: scale(0.97);
347
+ --motion-toast-enter-from-transform: translateY(-12px);
348
+ --motion-toast-exit-to-transform: translateY(-12px);
349
+ --motion-page-enter-from-transform: translateY(8px);
350
+ --icon-family: phosphor-duotone;
351
+ --icon-stroke-width: 1.5;
352
+ --icon-default-size: 18px;
353
+ --elevation-card: var(--shadow-sm);
354
+ --elevation-popover: var(--shadow-main);
355
+ --elevation-dialog: var(--shadow-lg);
356
+ --elevation-toast: var(--shadow-main);
357
+ --elevation-interactive: var(--shadow-sm);
358
+ --elevation-pressed: var(--shadow-active);
359
+ --radius-container: var(--radius-lg);
360
+ --radius-interactive: var(--radius-md);
361
+ --radius-pill: var(--radius-full);
362
+ --border-hairline: 1px;
363
+ --border-standard: var(--border-width);
364
+ --border-heavy: var(--border-width-thick);
365
+ --corner-shape: round;
366
+ --corner-shape-pill: round;
367
+ --border-style: solid;
368
+ --border-style-interactive: solid;
369
+ --surface-backdrop: none;
370
+ --surface-card-image: none;
371
+ --surface-page-image: repeating-radial-gradient(circle at 92% -8%, transparent 0 95px, rgba(236,235,230,0.05) 96px 97px);
372
+ --surface-page-image-size: auto;
373
+ }
@@ -1,5 +0,0 @@
1
- export { Typography } from './chunk-HB4C27KU.js';
2
- import './chunk-64WACXM7.js';
3
- import './chunk-QVXLKFUQ.js';
4
- import './chunk-7KSLPY56.js';
5
- import './chunk-QPXIAUJD.js';
@@ -1,51 +0,0 @@
1
- import { DEFAULT_CURRENCY } from './chunk-QVXLKFUQ.js';
2
- import { en_default } from './chunk-7KSLPY56.js';
3
- import React, { createContext, useEffect, useContext, useMemo } from 'react';
4
-
5
- var { $meta: _meta, ...coreMessages } = en_default;
6
- var coreLocale = coreMessages;
7
- var I18nContext = createContext({
8
- locale: "en",
9
- direction: "ltr",
10
- t: (key, params) => {
11
- let msg = coreLocale[key] ?? key;
12
- if (params) {
13
- for (const [k, v] of Object.entries(params)) {
14
- msg = msg.split(`{{${k}}}`).join(String(v));
15
- }
16
- }
17
- return msg;
18
- }
19
- });
20
- I18nContext.displayName = "I18nContext";
21
- function I18nProvider({ value, children, documentRoot }) {
22
- useEffect(() => {
23
- if (!documentRoot) return;
24
- document.documentElement.lang = value.locale;
25
- document.documentElement.dir = value.direction;
26
- }, [documentRoot, value.locale, value.direction]);
27
- return React.createElement(I18nContext.Provider, { value }, children);
28
- }
29
- function useTranslate() {
30
- return useContext(I18nContext);
31
- }
32
- function useFormatContext() {
33
- const { t, locale, currency } = useContext(I18nContext);
34
- return useMemo(
35
- () => ({ locale, currency: currency ?? DEFAULT_CURRENCY, booleanLabels: { yes: t("common.yes"), no: t("common.no") } }),
36
- [t, locale, currency]
37
- );
38
- }
39
- function createTranslate(messages) {
40
- return (key, params) => {
41
- let msg = messages[key] ?? coreLocale[key] ?? key;
42
- if (params) {
43
- for (const [k, v] of Object.entries(params)) {
44
- msg = msg.split(`{{${k}}}`).join(String(v));
45
- }
46
- }
47
- return msg;
48
- };
49
- }
50
-
51
- export { I18nProvider, createTranslate, useFormatContext, useTranslate };