@synthaxai/ui 1.0.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 (185) hide show
  1. package/README.md +262 -0
  2. package/dist/app.css +2 -0
  3. package/dist/app.html +12 -0
  4. package/dist/data-display/DataTable/DataTable.svelte +773 -0
  5. package/dist/data-display/DataTable/DataTable.svelte.d.ts +120 -0
  6. package/dist/data-display/DataTable/DataTable.svelte.d.ts.map +1 -0
  7. package/dist/data-display/DataTable/index.d.ts +2 -0
  8. package/dist/data-display/DataTable/index.d.ts.map +1 -0
  9. package/dist/data-display/DataTable/index.js +1 -0
  10. package/dist/data-display/StatCard/StatCard.svelte +409 -0
  11. package/dist/data-display/StatCard/StatCard.svelte.d.ts +63 -0
  12. package/dist/data-display/StatCard/StatCard.svelte.d.ts.map +1 -0
  13. package/dist/data-display/StatCard/index.d.ts +2 -0
  14. package/dist/data-display/StatCard/index.d.ts.map +1 -0
  15. package/dist/data-display/StatCard/index.js +1 -0
  16. package/dist/data-display/index.d.ts +8 -0
  17. package/dist/data-display/index.d.ts.map +1 -0
  18. package/dist/data-display/index.js +7 -0
  19. package/dist/dialogs/ConfirmDialog/ConfirmDialog.svelte +693 -0
  20. package/dist/dialogs/ConfirmDialog/ConfirmDialog.svelte.d.ts +66 -0
  21. package/dist/dialogs/ConfirmDialog/ConfirmDialog.svelte.d.ts.map +1 -0
  22. package/dist/dialogs/ConfirmDialog/index.d.ts +2 -0
  23. package/dist/dialogs/ConfirmDialog/index.d.ts.map +1 -0
  24. package/dist/dialogs/ConfirmDialog/index.js +1 -0
  25. package/dist/dialogs/Modal/Modal.svelte +441 -0
  26. package/dist/dialogs/Modal/Modal.svelte.d.ts +69 -0
  27. package/dist/dialogs/Modal/Modal.svelte.d.ts.map +1 -0
  28. package/dist/dialogs/Modal/index.d.ts +2 -0
  29. package/dist/dialogs/Modal/index.d.ts.map +1 -0
  30. package/dist/dialogs/Modal/index.js +1 -0
  31. package/dist/dialogs/index.d.ts +8 -0
  32. package/dist/dialogs/index.d.ts.map +1 -0
  33. package/dist/dialogs/index.js +7 -0
  34. package/dist/feedback/Alert/Alert.svelte +565 -0
  35. package/dist/feedback/Alert/Alert.svelte.d.ts +60 -0
  36. package/dist/feedback/Alert/Alert.svelte.d.ts.map +1 -0
  37. package/dist/feedback/Alert/index.d.ts +2 -0
  38. package/dist/feedback/Alert/index.d.ts.map +1 -0
  39. package/dist/feedback/Alert/index.js +1 -0
  40. package/dist/feedback/EmptyState/EmptyState.svelte +377 -0
  41. package/dist/feedback/EmptyState/EmptyState.svelte.d.ts +63 -0
  42. package/dist/feedback/EmptyState/EmptyState.svelte.d.ts.map +1 -0
  43. package/dist/feedback/EmptyState/index.d.ts +2 -0
  44. package/dist/feedback/EmptyState/index.d.ts.map +1 -0
  45. package/dist/feedback/EmptyState/index.js +1 -0
  46. package/dist/feedback/ProgressBar/ProgressBar.svelte +585 -0
  47. package/dist/feedback/ProgressBar/ProgressBar.svelte.d.ts +68 -0
  48. package/dist/feedback/ProgressBar/ProgressBar.svelte.d.ts.map +1 -0
  49. package/dist/feedback/ProgressBar/index.d.ts +2 -0
  50. package/dist/feedback/ProgressBar/index.d.ts.map +1 -0
  51. package/dist/feedback/ProgressBar/index.js +1 -0
  52. package/dist/feedback/Skeleton/Skeleton.svelte +568 -0
  53. package/dist/feedback/Skeleton/Skeleton.svelte.d.ts +54 -0
  54. package/dist/feedback/Skeleton/Skeleton.svelte.d.ts.map +1 -0
  55. package/dist/feedback/Skeleton/index.d.ts +2 -0
  56. package/dist/feedback/Skeleton/index.d.ts.map +1 -0
  57. package/dist/feedback/Skeleton/index.js +1 -0
  58. package/dist/feedback/Spinner/Spinner.svelte +434 -0
  59. package/dist/feedback/Spinner/Spinner.svelte.d.ts +49 -0
  60. package/dist/feedback/Spinner/Spinner.svelte.d.ts.map +1 -0
  61. package/dist/feedback/Spinner/index.d.ts +2 -0
  62. package/dist/feedback/Spinner/index.d.ts.map +1 -0
  63. package/dist/feedback/Spinner/index.js +1 -0
  64. package/dist/feedback/Toast/Toast.svelte +587 -0
  65. package/dist/feedback/Toast/Toast.svelte.d.ts +55 -0
  66. package/dist/feedback/Toast/Toast.svelte.d.ts.map +1 -0
  67. package/dist/feedback/Toast/ToastContainer.svelte +168 -0
  68. package/dist/feedback/Toast/ToastContainer.svelte.d.ts +28 -0
  69. package/dist/feedback/Toast/ToastContainer.svelte.d.ts.map +1 -0
  70. package/dist/feedback/Toast/index.d.ts +4 -0
  71. package/dist/feedback/Toast/index.d.ts.map +1 -0
  72. package/dist/feedback/Toast/index.js +3 -0
  73. package/dist/feedback/Toast/toast-store.d.ts +72 -0
  74. package/dist/feedback/Toast/toast-store.d.ts.map +1 -0
  75. package/dist/feedback/Toast/toast-store.js +157 -0
  76. package/dist/feedback/index.d.ts +13 -0
  77. package/dist/feedback/index.d.ts.map +1 -0
  78. package/dist/feedback/index.js +12 -0
  79. package/dist/forms/Checkbox/Checkbox.svelte +404 -0
  80. package/dist/forms/Checkbox/Checkbox.svelte.d.ts +62 -0
  81. package/dist/forms/Checkbox/Checkbox.svelte.d.ts.map +1 -0
  82. package/dist/forms/Checkbox/index.d.ts +2 -0
  83. package/dist/forms/Checkbox/index.d.ts.map +1 -0
  84. package/dist/forms/Checkbox/index.js +1 -0
  85. package/dist/forms/FormField/FormField.svelte +299 -0
  86. package/dist/forms/FormField/FormField.svelte.d.ts +43 -0
  87. package/dist/forms/FormField/FormField.svelte.d.ts.map +1 -0
  88. package/dist/forms/FormField/index.d.ts +2 -0
  89. package/dist/forms/FormField/index.d.ts.map +1 -0
  90. package/dist/forms/FormField/index.js +1 -0
  91. package/dist/forms/RadioGroup/RadioGroup.svelte +418 -0
  92. package/dist/forms/RadioGroup/RadioGroup.svelte.d.ts +70 -0
  93. package/dist/forms/RadioGroup/RadioGroup.svelte.d.ts.map +1 -0
  94. package/dist/forms/RadioGroup/index.d.ts +2 -0
  95. package/dist/forms/RadioGroup/index.d.ts.map +1 -0
  96. package/dist/forms/RadioGroup/index.js +1 -0
  97. package/dist/forms/Select/Select.svelte +548 -0
  98. package/dist/forms/Select/Select.svelte.d.ts +74 -0
  99. package/dist/forms/Select/Select.svelte.d.ts.map +1 -0
  100. package/dist/forms/Select/index.d.ts +2 -0
  101. package/dist/forms/Select/index.d.ts.map +1 -0
  102. package/dist/forms/Select/index.js +1 -0
  103. package/dist/forms/TextInput/TextInput.svelte +628 -0
  104. package/dist/forms/TextInput/TextInput.svelte.d.ts +97 -0
  105. package/dist/forms/TextInput/TextInput.svelte.d.ts.map +1 -0
  106. package/dist/forms/TextInput/index.d.ts +2 -0
  107. package/dist/forms/TextInput/index.d.ts.map +1 -0
  108. package/dist/forms/TextInput/index.js +1 -0
  109. package/dist/forms/Textarea/Textarea.svelte +587 -0
  110. package/dist/forms/Textarea/Textarea.svelte.d.ts +71 -0
  111. package/dist/forms/Textarea/Textarea.svelte.d.ts.map +1 -0
  112. package/dist/forms/Textarea/index.d.ts +2 -0
  113. package/dist/forms/Textarea/index.d.ts.map +1 -0
  114. package/dist/forms/Textarea/index.js +1 -0
  115. package/dist/forms/index.d.ts +13 -0
  116. package/dist/forms/index.d.ts.map +1 -0
  117. package/dist/forms/index.js +12 -0
  118. package/dist/index.d.ts +37 -0
  119. package/dist/index.d.ts.map +1 -0
  120. package/dist/index.js +65 -0
  121. package/dist/layout/Card/Card.svelte +316 -0
  122. package/dist/layout/Card/Card.svelte.d.ts +63 -0
  123. package/dist/layout/Card/Card.svelte.d.ts.map +1 -0
  124. package/dist/layout/Card/index.d.ts +2 -0
  125. package/dist/layout/Card/index.d.ts.map +1 -0
  126. package/dist/layout/Card/index.js +1 -0
  127. package/dist/layout/Container/Container.svelte +252 -0
  128. package/dist/layout/Container/Container.svelte.d.ts +50 -0
  129. package/dist/layout/Container/Container.svelte.d.ts.map +1 -0
  130. package/dist/layout/Container/index.d.ts +2 -0
  131. package/dist/layout/Container/index.d.ts.map +1 -0
  132. package/dist/layout/Container/index.js +1 -0
  133. package/dist/layout/index.d.ts +8 -0
  134. package/dist/layout/index.d.ts.map +1 -0
  135. package/dist/layout/index.js +7 -0
  136. package/dist/navigation/StepIndicator/StepIndicator.svelte +601 -0
  137. package/dist/navigation/StepIndicator/StepIndicator.svelte.d.ts +70 -0
  138. package/dist/navigation/StepIndicator/StepIndicator.svelte.d.ts.map +1 -0
  139. package/dist/navigation/StepIndicator/index.d.ts +2 -0
  140. package/dist/navigation/StepIndicator/index.d.ts.map +1 -0
  141. package/dist/navigation/StepIndicator/index.js +1 -0
  142. package/dist/navigation/index.d.ts +7 -0
  143. package/dist/navigation/index.d.ts.map +1 -0
  144. package/dist/navigation/index.js +6 -0
  145. package/dist/primitives/Badge/Badge.svelte +365 -0
  146. package/dist/primitives/Badge/Badge.svelte.d.ts +39 -0
  147. package/dist/primitives/Badge/Badge.svelte.d.ts.map +1 -0
  148. package/dist/primitives/Badge/index.d.ts +2 -0
  149. package/dist/primitives/Badge/index.d.ts.map +1 -0
  150. package/dist/primitives/Badge/index.js +1 -0
  151. package/dist/primitives/Button/Button.svelte +430 -0
  152. package/dist/primitives/Button/Button.svelte.d.ts +50 -0
  153. package/dist/primitives/Button/Button.svelte.d.ts.map +1 -0
  154. package/dist/primitives/Button/index.d.ts +2 -0
  155. package/dist/primitives/Button/index.d.ts.map +1 -0
  156. package/dist/primitives/Button/index.js +1 -0
  157. package/dist/primitives/index.d.ts +9 -0
  158. package/dist/primitives/index.d.ts.map +1 -0
  159. package/dist/primitives/index.js +8 -0
  160. package/dist/routes/+layout.svelte +12 -0
  161. package/dist/routes/+layout.svelte.d.ts +12 -0
  162. package/dist/routes/+layout.svelte.d.ts.map +1 -0
  163. package/dist/routes/+page.svelte +53 -0
  164. package/dist/routes/+page.svelte.d.ts +27 -0
  165. package/dist/routes/+page.svelte.d.ts.map +1 -0
  166. package/dist/styles/tokens.css +399 -0
  167. package/dist/types/index.d.ts +175 -0
  168. package/dist/types/index.d.ts.map +1 -0
  169. package/dist/types/index.js +7 -0
  170. package/dist/utils/accessibility.d.ts +103 -0
  171. package/dist/utils/accessibility.d.ts.map +1 -0
  172. package/dist/utils/accessibility.js +202 -0
  173. package/dist/utils/cn.d.ts +71 -0
  174. package/dist/utils/cn.d.ts.map +1 -0
  175. package/dist/utils/cn.js +61 -0
  176. package/dist/utils/form-styles.d.ts +76 -0
  177. package/dist/utils/form-styles.d.ts.map +1 -0
  178. package/dist/utils/form-styles.js +95 -0
  179. package/dist/utils/index.d.ts +10 -0
  180. package/dist/utils/index.d.ts.map +1 -0
  181. package/dist/utils/index.js +13 -0
  182. package/dist/utils/keyboard.d.ts +94 -0
  183. package/dist/utils/keyboard.d.ts.map +1 -0
  184. package/dist/utils/keyboard.js +179 -0
  185. package/package.json +119 -0
@@ -0,0 +1,399 @@
1
+ /**
2
+ * @synthaxai/ui - Design Tokens
3
+ *
4
+ * Core design tokens for the Synthax component library.
5
+ * These tokens ensure visual consistency across all components.
6
+ *
7
+ * Usage:
8
+ * @import '@synthaxai/ui/styles';
9
+ *
10
+ * Or include in your app.css:
11
+ * @import '@synthaxai/ui/dist/styles/tokens.css';
12
+ */
13
+
14
+ :root {
15
+ /* ========================================================================
16
+ * Color Tokens
17
+ * ======================================================================== */
18
+
19
+ /* Primary Brand Colors (Deep Teal) */
20
+ --ui-color-primary: 18 69 69;
21
+ --ui-color-primary-light: 26 107 107;
22
+ --ui-color-primary-dark: 13 51 51;
23
+ --ui-color-primary-hover: 22 85 85;
24
+
25
+ /* Semantic Colors */
26
+ --ui-color-success: 39 174 96;
27
+ --ui-color-success-light: 46 204 113;
28
+ --ui-color-success-bg: 39 174 96 / 0.1;
29
+
30
+ --ui-color-warning: 243 156 18;
31
+ --ui-color-warning-light: 241 196 15;
32
+ --ui-color-warning-bg: 243 156 18 / 0.1;
33
+
34
+ --ui-color-error: 231 76 60;
35
+ --ui-color-error-light: 236 112 99;
36
+ --ui-color-error-bg: 231 76 60 / 0.1;
37
+
38
+ --ui-color-info: 52 152 219;
39
+ --ui-color-info-light: 93 173 226;
40
+ --ui-color-info-bg: 52 152 219 / 0.1;
41
+
42
+ /* ========================================================================
43
+ * Spacing Scale (8px base)
44
+ * ======================================================================== */
45
+ --ui-space-0: 0;
46
+ --ui-space-0-5: 0.125rem; /* 2px */
47
+ --ui-space-1: 0.25rem; /* 4px */
48
+ --ui-space-1-5: 0.375rem; /* 6px */
49
+ --ui-space-2: 0.5rem; /* 8px */
50
+ --ui-space-2-5: 0.625rem; /* 10px */
51
+ --ui-space-3: 0.75rem; /* 12px */
52
+ --ui-space-3-5: 0.875rem; /* 14px */
53
+ --ui-space-4: 1rem; /* 16px */
54
+ --ui-space-5: 1.25rem; /* 20px */
55
+ --ui-space-6: 1.5rem; /* 24px */
56
+ --ui-space-7: 1.75rem; /* 28px */
57
+ --ui-space-8: 2rem; /* 32px */
58
+ --ui-space-9: 2.25rem; /* 36px */
59
+ --ui-space-10: 2.5rem; /* 40px */
60
+ --ui-space-12: 3rem; /* 48px */
61
+ --ui-space-14: 3.5rem; /* 56px */
62
+ --ui-space-16: 4rem; /* 64px */
63
+ --ui-space-20: 5rem; /* 80px */
64
+ --ui-space-24: 6rem; /* 96px */
65
+
66
+ /* ========================================================================
67
+ * Typography Scale
68
+ * ======================================================================== */
69
+
70
+ /* Font Families */
71
+ --ui-font-sans: Inter, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
72
+ 'Helvetica Neue', Arial, sans-serif;
73
+ --ui-font-mono: 'SF Mono', 'Fira Code', 'Fira Mono', 'Roboto Mono', monospace;
74
+
75
+ /* Font Sizes */
76
+ --ui-text-xs: 0.75rem; /* 12px */
77
+ --ui-text-sm: 0.875rem; /* 14px */
78
+ --ui-text-base: 1rem; /* 16px */
79
+ --ui-text-lg: 1.125rem; /* 18px */
80
+ --ui-text-xl: 1.25rem; /* 20px */
81
+ --ui-text-2xl: 1.5rem; /* 24px */
82
+ --ui-text-3xl: 1.875rem; /* 30px */
83
+ --ui-text-4xl: 2.25rem; /* 36px */
84
+ --ui-text-5xl: 3rem; /* 48px */
85
+
86
+ /* Line Heights */
87
+ --ui-leading-none: 1;
88
+ --ui-leading-tight: 1.25;
89
+ --ui-leading-snug: 1.375;
90
+ --ui-leading-normal: 1.5;
91
+ --ui-leading-relaxed: 1.625;
92
+ --ui-leading-loose: 2;
93
+
94
+ /* Font Weights */
95
+ --ui-font-normal: 400;
96
+ --ui-font-medium: 500;
97
+ --ui-font-semibold: 600;
98
+ --ui-font-bold: 700;
99
+
100
+ /* ========================================================================
101
+ * Border Radius (following designer guidelines)
102
+ * ======================================================================== */
103
+ --ui-radius-none: 0;
104
+ --ui-radius-sm: 0.25rem; /* 4px - badges, tags */
105
+ --ui-radius-default: 0.375rem; /* 6px - small elements */
106
+ --ui-radius-lg: 0.5rem; /* 8px - buttons, inputs */
107
+ --ui-radius-xl: 0.75rem; /* 12px - small/medium cards */
108
+ --ui-radius-2xl: 1rem; /* 16px - large cards, modals */
109
+ --ui-radius-3xl: 1.5rem; /* 24px - hero sections */
110
+ --ui-radius-full: 9999px; /* circular */
111
+
112
+ /* ========================================================================
113
+ * Shadows (minimal, only for floating elements per designer)
114
+ * ======================================================================== */
115
+ --ui-shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
116
+ --ui-shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
117
+ --ui-shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
118
+ --ui-shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
119
+ --ui-shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25);
120
+
121
+ /* ========================================================================
122
+ * Transitions
123
+ * ======================================================================== */
124
+ --ui-duration-fast: 100ms;
125
+ --ui-duration-normal: 200ms;
126
+ --ui-duration-slow: 300ms;
127
+ --ui-duration-slower: 500ms;
128
+
129
+ --ui-ease-default: cubic-bezier(0.4, 0, 0.2, 1);
130
+ --ui-ease-in: cubic-bezier(0.4, 0, 1, 1);
131
+ --ui-ease-out: cubic-bezier(0, 0, 0.2, 1);
132
+ --ui-ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
133
+ --ui-ease-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55);
134
+
135
+ /* ========================================================================
136
+ * Z-Index Scale
137
+ * ======================================================================== */
138
+ --ui-z-dropdown: 50;
139
+ --ui-z-sticky: 60;
140
+ --ui-z-fixed: 70;
141
+ --ui-z-modal-backdrop: 80;
142
+ --ui-z-modal: 90;
143
+ --ui-z-popover: 100;
144
+ --ui-z-tooltip: 110;
145
+ --ui-z-toast: 120;
146
+
147
+ /* ========================================================================
148
+ * Container Widths
149
+ * ======================================================================== */
150
+ --ui-container-sm: 640px;
151
+ --ui-container-md: 768px;
152
+ --ui-container-lg: 1024px;
153
+ --ui-container-xl: 1280px;
154
+ --ui-container-2xl: 1536px;
155
+
156
+ /* ========================================================================
157
+ * Focus Ring (accessibility)
158
+ * ======================================================================== */
159
+ --ui-ring-width: 2px;
160
+ --ui-ring-offset: 2px;
161
+ --ui-ring-color: rgb(var(--ui-color-primary));
162
+ }
163
+
164
+ /* ============================================================================
165
+ * Light Theme (default)
166
+ * ============================================================================ */
167
+ :root,
168
+ [data-theme='light'] {
169
+ /* Text Colors */
170
+ --ui-text-primary: #111827;
171
+ --ui-text-secondary: #4b5563;
172
+ --ui-text-tertiary: #9ca3af;
173
+ --ui-text-inverse: #ffffff;
174
+ --ui-text-disabled: #d1d5db;
175
+
176
+ /* Background Colors */
177
+ --ui-bg-primary: #ffffff;
178
+ --ui-bg-secondary: #f9fafb;
179
+ --ui-bg-tertiary: #f3f4f6;
180
+ --ui-bg-inverse: #111827;
181
+
182
+ /* Border Colors */
183
+ --ui-border-default: #e5e7eb;
184
+ --ui-border-hover: #d1d5db;
185
+ --ui-border-focus: rgb(var(--ui-color-primary));
186
+
187
+ /* Glass Effect */
188
+ --ui-glass-bg: rgba(255, 255, 255, 0.7);
189
+ --ui-glass-border: rgba(255, 255, 255, 0.2);
190
+ --ui-glass-shadow: rgba(0, 0, 0, 0.1);
191
+
192
+ /* Backdrop */
193
+ --ui-backdrop: rgba(0, 0, 0, 0.5);
194
+ }
195
+
196
+ /* ============================================================================
197
+ * Dark Theme (explicit via data-theme attribute)
198
+ * ============================================================================ */
199
+ [data-theme='dark'] {
200
+ /* Text Colors */
201
+ --ui-text-primary: #f9fafb;
202
+ --ui-text-secondary: #d1d5db;
203
+ --ui-text-tertiary: #9ca3af;
204
+ --ui-text-inverse: #111827;
205
+ --ui-text-disabled: #4b5563;
206
+
207
+ /* Background Colors */
208
+ --ui-bg-primary: #0a0a0a;
209
+ --ui-bg-secondary: #121212;
210
+ --ui-bg-tertiary: #1f1f1f;
211
+ --ui-bg-inverse: #f9fafb;
212
+
213
+ /* Border Colors */
214
+ --ui-border-default: #374151;
215
+ --ui-border-hover: #4b5563;
216
+ --ui-border-focus: rgb(var(--ui-color-primary-light));
217
+
218
+ /* Glass Effect */
219
+ --ui-glass-bg: rgba(18, 18, 18, 0.8);
220
+ --ui-glass-border: rgba(255, 255, 255, 0.1);
221
+ --ui-glass-shadow: rgba(0, 0, 0, 0.3);
222
+
223
+ /* Backdrop */
224
+ --ui-backdrop: rgba(0, 0, 0, 0.7);
225
+ }
226
+
227
+ /* ============================================================================
228
+ * Dark Theme (automatic via system preference)
229
+ * Only applies when no explicit data-theme is set
230
+ * ============================================================================ */
231
+ @media (prefers-color-scheme: dark) {
232
+ :root:not([data-theme='light']) {
233
+ /* Text Colors */
234
+ --ui-text-primary: #f9fafb;
235
+ --ui-text-secondary: #d1d5db;
236
+ --ui-text-tertiary: #9ca3af;
237
+ --ui-text-inverse: #111827;
238
+ --ui-text-disabled: #4b5563;
239
+
240
+ /* Background Colors */
241
+ --ui-bg-primary: #0a0a0a;
242
+ --ui-bg-secondary: #121212;
243
+ --ui-bg-tertiary: #1f1f1f;
244
+ --ui-bg-inverse: #f9fafb;
245
+
246
+ /* Border Colors */
247
+ --ui-border-default: #374151;
248
+ --ui-border-hover: #4b5563;
249
+ --ui-border-focus: rgb(var(--ui-color-primary-light));
250
+
251
+ /* Glass Effect */
252
+ --ui-glass-bg: rgba(18, 18, 18, 0.8);
253
+ --ui-glass-border: rgba(255, 255, 255, 0.1);
254
+ --ui-glass-shadow: rgba(0, 0, 0, 0.3);
255
+
256
+ /* Backdrop */
257
+ --ui-backdrop: rgba(0, 0, 0, 0.7);
258
+ }
259
+ }
260
+
261
+ /* ============================================================================
262
+ * Utility Classes
263
+ * ============================================================================ */
264
+
265
+ /* Screen reader only */
266
+ .sr-only {
267
+ position: absolute;
268
+ width: 1px;
269
+ height: 1px;
270
+ padding: 0;
271
+ margin: -1px;
272
+ overflow: hidden;
273
+ clip: rect(0, 0, 0, 0);
274
+ white-space: nowrap;
275
+ border: 0;
276
+ }
277
+
278
+ /* Focus visible ring */
279
+ .focus-ring {
280
+ outline: none;
281
+ }
282
+
283
+ .focus-ring:focus-visible {
284
+ outline: var(--ui-ring-width) solid var(--ui-ring-color);
285
+ outline-offset: var(--ui-ring-offset);
286
+ }
287
+
288
+ /* Reduced motion */
289
+ @media (prefers-reduced-motion: reduce) {
290
+ *,
291
+ *::before,
292
+ *::after {
293
+ animation-duration: 0.01ms !important;
294
+ animation-iteration-count: 1 !important;
295
+ transition-duration: 0.01ms !important;
296
+ }
297
+ }
298
+
299
+ /* ============================================================================
300
+ * Animation Utility Classes
301
+ * ============================================================================ */
302
+ .ui-animate-spin {
303
+ animation: ui-spin 1s linear infinite;
304
+ }
305
+
306
+ .ui-animate-pulse {
307
+ animation: ui-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
308
+ }
309
+
310
+ .ui-animate-fade-in {
311
+ animation: ui-fade-in 0.2s ease-out;
312
+ }
313
+
314
+ .ui-animate-slide-in {
315
+ animation: ui-slide-up 0.2s ease-out;
316
+ }
317
+
318
+ .ui-animate-scale-in {
319
+ animation: ui-scale-in 0.3s ease-out;
320
+ }
321
+
322
+ /* ============================================================================
323
+ * Animation Keyframes
324
+ * ============================================================================ */
325
+ @keyframes ui-fade-in {
326
+ from {
327
+ opacity: 0;
328
+ }
329
+ to {
330
+ opacity: 1;
331
+ }
332
+ }
333
+
334
+ @keyframes ui-fade-out {
335
+ from {
336
+ opacity: 1;
337
+ }
338
+ to {
339
+ opacity: 0;
340
+ }
341
+ }
342
+
343
+ @keyframes ui-slide-up {
344
+ from {
345
+ opacity: 0;
346
+ transform: translateY(8px);
347
+ }
348
+ to {
349
+ opacity: 1;
350
+ transform: translateY(0);
351
+ }
352
+ }
353
+
354
+ @keyframes ui-slide-down {
355
+ from {
356
+ opacity: 0;
357
+ transform: translateY(-8px);
358
+ }
359
+ to {
360
+ opacity: 1;
361
+ transform: translateY(0);
362
+ }
363
+ }
364
+
365
+ @keyframes ui-scale-in {
366
+ from {
367
+ opacity: 0;
368
+ transform: scale(0.95);
369
+ }
370
+ to {
371
+ opacity: 1;
372
+ transform: scale(1);
373
+ }
374
+ }
375
+
376
+ @keyframes ui-spin {
377
+ to {
378
+ transform: rotate(360deg);
379
+ }
380
+ }
381
+
382
+ @keyframes ui-pulse {
383
+ 0%,
384
+ 100% {
385
+ opacity: 1;
386
+ }
387
+ 50% {
388
+ opacity: 0.5;
389
+ }
390
+ }
391
+
392
+ @keyframes ui-shimmer {
393
+ 0% {
394
+ background-position: -200% 0;
395
+ }
396
+ 100% {
397
+ background-position: 200% 0;
398
+ }
399
+ }
@@ -0,0 +1,175 @@
1
+ /**
2
+ * @synthaxai/ui - Type Definitions
3
+ *
4
+ * Core types used across all components in the library.
5
+ * These types ensure consistency and type safety throughout the component library.
6
+ */
7
+ /**
8
+ * Standard size variants used across components.
9
+ * Follows a consistent naming convention for predictable sizing.
10
+ */
11
+ export type Size = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
12
+ /**
13
+ * Common component size (most components use these three).
14
+ */
15
+ export type ComponentSize = 'sm' | 'md' | 'lg';
16
+ /**
17
+ * Component variants for visual hierarchy.
18
+ * - primary: Main action, prominent styling
19
+ * - secondary: Supporting action, subdued styling
20
+ * - ghost: Minimal styling, often transparent
21
+ * - outline: Border-only styling
22
+ */
23
+ export type Variant = 'primary' | 'secondary' | 'ghost' | 'outline';
24
+ /**
25
+ * Semantic status variants for feedback components.
26
+ * Used for badges, alerts, toasts, and status indicators.
27
+ */
28
+ export type Status = 'success' | 'warning' | 'error' | 'info' | 'neutral';
29
+ /**
30
+ * Loading states for async operations.
31
+ */
32
+ export type LoadingState = 'idle' | 'loading' | 'success' | 'error';
33
+ /**
34
+ * Standard validation result for form fields.
35
+ */
36
+ export interface ValidationResult {
37
+ /** Whether the field is valid */
38
+ valid: boolean;
39
+ /** Error message if invalid */
40
+ message?: string;
41
+ }
42
+ /**
43
+ * Validator function signature for form fields.
44
+ */
45
+ export type ValidatorFn = (value: string) => ValidationResult;
46
+ /**
47
+ * Form field state for tracking interaction and validation.
48
+ */
49
+ export interface FieldState {
50
+ /** Current field value */
51
+ value: string;
52
+ /** Whether the field has been touched (focused and blurred) */
53
+ touched: boolean;
54
+ /** Whether the field has been modified */
55
+ dirty: boolean;
56
+ /** Current validation error message, if any */
57
+ error?: string;
58
+ /** Whether the field is currently focused */
59
+ focused: boolean;
60
+ }
61
+ /**
62
+ * Input mode types for mobile keyboards.
63
+ */
64
+ export type InputMode = 'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url';
65
+ /**
66
+ * HTML autocomplete attribute values for form inputs.
67
+ */
68
+ export type AutoComplete = 'off' | 'on' | 'name' | 'given-name' | 'family-name' | 'email' | 'tel' | 'street-address' | 'postal-code' | 'address-level1' | 'address-level2' | 'country' | 'bday' | 'sex' | 'new-password' | 'current-password' | 'one-time-code' | 'organization' | 'cc-name' | 'cc-number' | 'cc-exp' | 'cc-csc';
69
+ /**
70
+ * Step state for multi-step flows.
71
+ */
72
+ export type StepState = 'pending' | 'active' | 'completed' | 'error';
73
+ /**
74
+ * Step definition for step indicators and wizards.
75
+ */
76
+ export interface Step {
77
+ /** Unique identifier for the step */
78
+ id: string;
79
+ /** Display label for the step */
80
+ label: string;
81
+ /** Optional description */
82
+ description?: string;
83
+ /** Current state of the step */
84
+ state: StepState;
85
+ /** Whether the step is optional */
86
+ optional?: boolean;
87
+ }
88
+ /**
89
+ * Column definition for data tables.
90
+ */
91
+ export interface TableColumn<T = unknown> {
92
+ /** Unique key for the column, corresponds to data property */
93
+ key: string;
94
+ /** Display header for the column */
95
+ header: string;
96
+ /** Whether the column is sortable */
97
+ sortable?: boolean;
98
+ /** Text alignment */
99
+ align?: 'left' | 'center' | 'right';
100
+ /** Custom width (CSS value) */
101
+ width?: string;
102
+ /** Hide column on mobile */
103
+ hideOnMobile?: boolean;
104
+ /** Custom render function */
105
+ render?: (value: unknown, row: T) => string;
106
+ }
107
+ /**
108
+ * Sort direction for data tables.
109
+ */
110
+ export type SortDirection = 'asc' | 'desc' | null;
111
+ /**
112
+ * Sort state for data tables.
113
+ */
114
+ export interface SortState {
115
+ column: string | null;
116
+ direction: SortDirection;
117
+ }
118
+ /**
119
+ * Dialog variant for styling.
120
+ */
121
+ export type DialogVariant = 'default' | 'danger' | 'success';
122
+ /**
123
+ * Position for modals and dialogs.
124
+ */
125
+ export type DialogPosition = 'center' | 'top' | 'bottom';
126
+ /**
127
+ * Toast notification configuration.
128
+ */
129
+ export interface Toast {
130
+ /** Unique identifier */
131
+ id: string;
132
+ /** Toast message */
133
+ message: string;
134
+ /** Toast type/status */
135
+ type: Status;
136
+ /** Duration in milliseconds (0 = persistent) */
137
+ duration?: number;
138
+ /** Optional title */
139
+ title?: string;
140
+ /** Optional action */
141
+ action?: {
142
+ label: string;
143
+ onClick: () => void;
144
+ };
145
+ }
146
+ /**
147
+ * Generic icon component type for Lucide icons.
148
+ * Allows passing any Lucide Svelte icon component as a prop.
149
+ */
150
+ export type IconComponent = typeof import('lucide-svelte').AlertCircle;
151
+ /**
152
+ * ARIA live region politeness levels.
153
+ */
154
+ export type AriaLive = 'off' | 'polite' | 'assertive';
155
+ /**
156
+ * ARIA role types commonly used in UI components.
157
+ */
158
+ export type AriaRole = 'alert' | 'alertdialog' | 'button' | 'checkbox' | 'dialog' | 'grid' | 'gridcell' | 'listbox' | 'menu' | 'menuitem' | 'option' | 'progressbar' | 'radio' | 'radiogroup' | 'row' | 'rowgroup' | 'searchbox' | 'slider' | 'spinbutton' | 'status' | 'switch' | 'tab' | 'tablist' | 'tabpanel' | 'textbox' | 'tooltip' | 'tree' | 'treeitem';
159
+ /**
160
+ * Makes specified properties required.
161
+ */
162
+ export type WithRequired<T, K extends keyof T> = T & {
163
+ [P in K]-?: T[P];
164
+ };
165
+ /**
166
+ * Makes all properties optional except specified ones.
167
+ */
168
+ export type PartialExcept<T, K extends keyof T> = Partial<T> & Pick<T, K>;
169
+ /**
170
+ * Extracts the props type from a component.
171
+ */
172
+ export type ComponentProps<T> = T extends new (...args: unknown[]) => {
173
+ $props: infer P;
174
+ } ? P : never;
175
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @synthaxai/ui - Type Definitions
3
+ *
4
+ * Core types used across all components in the library.
5
+ * These types ensure consistency and type safety throughout the component library.
6
+ */
7
+ export {};
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Accessibility utilities for healthcare UI components.
3
+ *
4
+ * Implements WCAG 2.1 Level AA compliance requirements for
5
+ * critical healthcare applications.
6
+ */
7
+ /**
8
+ * Screen reader only text.
9
+ * Visually hidden but accessible to assistive technologies.
10
+ */
11
+ export declare const srOnlyClass = "sr-only";
12
+ /**
13
+ * Announces a message to screen readers.
14
+ *
15
+ * @param message - The message to announce
16
+ * @param priority - 'polite' (default) or 'assertive'
17
+ *
18
+ * @example
19
+ * announce('Form submitted successfully');
20
+ * announce('Error: Please fix the highlighted fields', 'assertive');
21
+ */
22
+ export declare function announce(message: string, priority?: 'polite' | 'assertive'): void;
23
+ /**
24
+ * Checks if the user prefers reduced motion.
25
+ *
26
+ * @returns true if reduced motion is preferred
27
+ */
28
+ export declare function prefersReducedMotion(): boolean;
29
+ /**
30
+ * Returns animation duration based on user preferences.
31
+ * Returns 0 if user prefers reduced motion, otherwise returns the provided duration.
32
+ *
33
+ * @param duration - Normal animation duration in ms
34
+ * @returns Adjusted duration
35
+ */
36
+ export declare function getAnimationDuration(duration: number): number;
37
+ /**
38
+ * Checks if high contrast mode is preferred.
39
+ *
40
+ * @returns true if high contrast is preferred
41
+ */
42
+ export declare function prefersHighContrast(): boolean;
43
+ /**
44
+ * Describes an element for screen readers.
45
+ * Returns appropriate ARIA attributes for a described element.
46
+ *
47
+ * @param description - The description text
48
+ * @param id - The ID to use for the description element
49
+ */
50
+ export declare function createDescription(description: string, id: string): {
51
+ describedById: string;
52
+ descriptionProps: Record<string, string>;
53
+ text: string;
54
+ };
55
+ /**
56
+ * Formats a value for screen reader announcement.
57
+ * Useful for live regions that need to announce changes.
58
+ *
59
+ * @param value - The value to format
60
+ * @param label - Label describing the value
61
+ * @param unit - Optional unit (e.g., 'percent', 'dollars')
62
+ */
63
+ export declare function formatForAnnouncement(value: number | string, label: string, unit?: string): string;
64
+ /**
65
+ * Checks if an element is visible and focusable.
66
+ */
67
+ export declare function isElementFocusable(element: Element): boolean;
68
+ /**
69
+ * Gets all focusable elements within a container.
70
+ */
71
+ export declare function getFocusableElements(container: HTMLElement): HTMLElement[];
72
+ /**
73
+ * Creates an accessible label for a form field.
74
+ * Returns either labelledby or label props based on visibility.
75
+ */
76
+ export declare function createFieldLabel(label: string, fieldId: string, options?: {
77
+ visible?: boolean;
78
+ required?: boolean;
79
+ }): {
80
+ labelId: string;
81
+ labelProps: Record<string, string | boolean>;
82
+ fieldProps: Record<string, string>;
83
+ };
84
+ /**
85
+ * Creates ARIA props for an error message.
86
+ */
87
+ export declare function createErrorProps(fieldId: string, error?: string): {
88
+ errorId: string;
89
+ errorProps: Record<string, string>;
90
+ fieldErrorProps: Record<string, string | boolean>;
91
+ };
92
+ /**
93
+ * Role descriptions for healthcare-specific contexts.
94
+ * Can be used with aria-roledescription for more specific announcements.
95
+ */
96
+ export declare const healthcareRoles: {
97
+ readonly patientCard: "patient information card";
98
+ readonly vitalSign: "vital sign indicator";
99
+ readonly medicationItem: "medication entry";
100
+ readonly alertBanner: "clinical alert";
101
+ readonly statusIndicator: "status indicator";
102
+ };
103
+ //# sourceMappingURL=accessibility.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accessibility.d.ts","sourceRoot":"","sources":["../../src/utils/accessibility.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,eAAO,MAAM,WAAW,YAAY,CAAC;AAErC;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,QAAQ,GAAG,WAAsB,GAAG,IAAI,CAmC3F;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAG9C;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAG7C;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAChC,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,MAAM,GACR;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CASnF;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACpC,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,MAAM,GACX,MAAM,CAGR;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CA0B5D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,WAAW,GAAG,WAAW,EAAE,CAY1E;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC/B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GACrD;IACF,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;IAC7C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC,CAeA;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC/B,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,GACZ;IACF,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;CAClD,CAcA;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe;;;;;;CAMlB,CAAC"}