@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,365 @@
1
+ <!--
2
+ @component Badge
3
+
4
+ A status badge component for displaying statuses, labels, and counts.
5
+ Supports semantic status variants for healthcare workflows.
6
+
7
+ @example
8
+ <Badge status="success">Active</Badge>
9
+
10
+ @example
11
+ <Badge status="warning" size="lg">
12
+ <Icon slot="icon" />
13
+ Pending Review
14
+ </Badge>
15
+ -->
16
+ <script lang="ts">
17
+ import type { Snippet } from 'svelte';
18
+ import { cn } from '../../utils/cn.js';
19
+ import type { Status } from '../../types/index.js';
20
+
21
+ type BadgeSize = 'sm' | 'md' | 'lg';
22
+ type BadgeVariant = Status | 'primary' | 'outline';
23
+
24
+ interface Props {
25
+ /** Status/variant of the badge */
26
+ status?: BadgeVariant;
27
+ /** Size of the badge */
28
+ size?: BadgeSize;
29
+ /** Whether to render as a pill (fully rounded) */
30
+ pill?: boolean;
31
+ /** Whether this badge represents a dot indicator (no text) */
32
+ dot?: boolean;
33
+ /** Icon to display */
34
+ icon?: Snippet;
35
+ /** Additional CSS classes */
36
+ class?: string;
37
+ /** Badge content */
38
+ children?: Snippet;
39
+ }
40
+
41
+ let {
42
+ status = 'neutral',
43
+ size = 'md',
44
+ pill = false,
45
+ dot = false,
46
+ icon,
47
+ class: className = '',
48
+ children
49
+ }: Props = $props();
50
+ </script>
51
+
52
+ {#if dot}
53
+ <span
54
+ class={cn('badge-dot', `badge-dot-${size}`, `badge-${status}`, className)}
55
+ role="status"
56
+ aria-label={status}
57
+ >
58
+ <span class="sr-only">{status}</span>
59
+ </span>
60
+ {:else}
61
+ <span
62
+ class={cn('badge', `badge-${size}`, `badge-${status}`, pill && 'badge-pill', className)}
63
+ role="status"
64
+ >
65
+ {#if icon}
66
+ <span class="badge-icon" aria-hidden="true">
67
+ {@render icon()}
68
+ </span>
69
+ {/if}
70
+ {#if children}
71
+ {@render children()}
72
+ {/if}
73
+ </span>
74
+ {/if}
75
+
76
+ <style>
77
+ /* ========================================
78
+ BASE BADGE STYLES
79
+ ======================================== */
80
+ .badge {
81
+ display: inline-flex;
82
+ align-items: center;
83
+ gap: 0.375rem;
84
+ font-weight: 500;
85
+ border-radius: 0.25rem;
86
+ transition: all 0.15s ease;
87
+ white-space: nowrap;
88
+ }
89
+
90
+ .badge-pill {
91
+ border-radius: 9999px;
92
+ }
93
+
94
+ .badge-icon {
95
+ display: inline-flex;
96
+ flex-shrink: 0;
97
+ }
98
+
99
+ /* Screen reader only */
100
+ .sr-only {
101
+ position: absolute;
102
+ width: 1px;
103
+ height: 1px;
104
+ padding: 0;
105
+ margin: -1px;
106
+ overflow: hidden;
107
+ clip: rect(0, 0, 0, 0);
108
+ white-space: nowrap;
109
+ border: 0;
110
+ }
111
+
112
+ /* ========================================
113
+ SIZE VARIANTS
114
+ ======================================== */
115
+ .badge-sm {
116
+ padding: 0.125rem 0.375rem;
117
+ font-size: 0.6875rem;
118
+ }
119
+
120
+ .badge-md {
121
+ padding: 0.1875rem 0.5rem;
122
+ font-size: 0.75rem;
123
+ }
124
+
125
+ .badge-lg {
126
+ padding: 0.25rem 0.625rem;
127
+ font-size: 0.8125rem;
128
+ }
129
+
130
+ /* ========================================
131
+ DOT INDICATOR STYLES
132
+ ======================================== */
133
+ .badge-dot {
134
+ display: inline-block;
135
+ border-radius: 9999px;
136
+ }
137
+
138
+ .badge-dot-sm {
139
+ width: 0.375rem;
140
+ height: 0.375rem;
141
+ }
142
+
143
+ .badge-dot-md {
144
+ width: 0.5rem;
145
+ height: 0.5rem;
146
+ }
147
+
148
+ .badge-dot-lg {
149
+ width: 0.625rem;
150
+ height: 0.625rem;
151
+ }
152
+
153
+ /* ========================================
154
+ NEUTRAL VARIANT
155
+ ======================================== */
156
+ .badge-neutral {
157
+ background: var(--ui-bg-tertiary);
158
+ color: var(--ui-text-secondary);
159
+ border: 1px solid var(--ui-border-default);
160
+ }
161
+
162
+ .badge-dot.badge-neutral {
163
+ background: var(--ui-text-tertiary);
164
+ border: none;
165
+ }
166
+
167
+ /* ========================================
168
+ PRIMARY VARIANT
169
+ ======================================== */
170
+ .badge-primary {
171
+ background: rgb(var(--ui-color-primary) / 0.1);
172
+ color: rgb(var(--ui-color-primary));
173
+ border: 1px solid rgb(var(--ui-color-primary) / 0.2);
174
+ }
175
+
176
+ .badge-dot.badge-primary {
177
+ background: rgb(var(--ui-color-primary));
178
+ border: none;
179
+ }
180
+
181
+ /* Dark mode */
182
+ :global([data-theme='dark']) .badge-primary {
183
+ background: rgb(var(--ui-color-primary-light) / 0.15);
184
+ color: rgb(var(--ui-color-primary-light));
185
+ border-color: rgb(var(--ui-color-primary-light) / 0.25);
186
+ }
187
+
188
+ :global([data-theme='dark']) .badge-dot.badge-primary {
189
+ background: rgb(var(--ui-color-primary-light));
190
+ }
191
+
192
+ @media (prefers-color-scheme: dark) {
193
+ :global(:root:not([data-theme='light'])) .badge-primary {
194
+ background: rgb(var(--ui-color-primary-light) / 0.15);
195
+ color: rgb(var(--ui-color-primary-light));
196
+ border-color: rgb(var(--ui-color-primary-light) / 0.25);
197
+ }
198
+
199
+ :global(:root:not([data-theme='light'])) .badge-dot.badge-primary {
200
+ background: rgb(var(--ui-color-primary-light));
201
+ }
202
+ }
203
+
204
+ /* ========================================
205
+ SUCCESS VARIANT
206
+ ======================================== */
207
+ .badge-success {
208
+ background: rgb(var(--ui-color-success) / 0.1);
209
+ color: rgb(var(--ui-color-success));
210
+ border: 1px solid rgb(var(--ui-color-success) / 0.2);
211
+ }
212
+
213
+ .badge-dot.badge-success {
214
+ background: rgb(var(--ui-color-success));
215
+ border: none;
216
+ }
217
+
218
+ /* Dark mode */
219
+ :global([data-theme='dark']) .badge-success {
220
+ background: rgb(var(--ui-color-success-light) / 0.15);
221
+ color: rgb(var(--ui-color-success-light));
222
+ border-color: rgb(var(--ui-color-success-light) / 0.25);
223
+ }
224
+
225
+ :global([data-theme='dark']) .badge-dot.badge-success {
226
+ background: rgb(var(--ui-color-success-light));
227
+ }
228
+
229
+ @media (prefers-color-scheme: dark) {
230
+ :global(:root:not([data-theme='light'])) .badge-success {
231
+ background: rgb(var(--ui-color-success-light) / 0.15);
232
+ color: rgb(var(--ui-color-success-light));
233
+ border-color: rgb(var(--ui-color-success-light) / 0.25);
234
+ }
235
+
236
+ :global(:root:not([data-theme='light'])) .badge-dot.badge-success {
237
+ background: rgb(var(--ui-color-success-light));
238
+ }
239
+ }
240
+
241
+ /* ========================================
242
+ WARNING VARIANT
243
+ ======================================== */
244
+ .badge-warning {
245
+ background: rgb(var(--ui-color-warning) / 0.1);
246
+ color: rgb(var(--ui-color-warning));
247
+ border: 1px solid rgb(var(--ui-color-warning) / 0.2);
248
+ }
249
+
250
+ .badge-dot.badge-warning {
251
+ background: rgb(var(--ui-color-warning));
252
+ border: none;
253
+ }
254
+
255
+ /* Dark mode */
256
+ :global([data-theme='dark']) .badge-warning {
257
+ background: rgb(var(--ui-color-warning-light) / 0.15);
258
+ color: rgb(var(--ui-color-warning-light));
259
+ border-color: rgb(var(--ui-color-warning-light) / 0.25);
260
+ }
261
+
262
+ :global([data-theme='dark']) .badge-dot.badge-warning {
263
+ background: rgb(var(--ui-color-warning-light));
264
+ }
265
+
266
+ @media (prefers-color-scheme: dark) {
267
+ :global(:root:not([data-theme='light'])) .badge-warning {
268
+ background: rgb(var(--ui-color-warning-light) / 0.15);
269
+ color: rgb(var(--ui-color-warning-light));
270
+ border-color: rgb(var(--ui-color-warning-light) / 0.25);
271
+ }
272
+
273
+ :global(:root:not([data-theme='light'])) .badge-dot.badge-warning {
274
+ background: rgb(var(--ui-color-warning-light));
275
+ }
276
+ }
277
+
278
+ /* ========================================
279
+ ERROR VARIANT
280
+ ======================================== */
281
+ .badge-error {
282
+ background: rgb(var(--ui-color-error) / 0.1);
283
+ color: rgb(var(--ui-color-error));
284
+ border: 1px solid rgb(var(--ui-color-error) / 0.2);
285
+ }
286
+
287
+ .badge-dot.badge-error {
288
+ background: rgb(var(--ui-color-error));
289
+ border: none;
290
+ }
291
+
292
+ /* Dark mode */
293
+ :global([data-theme='dark']) .badge-error {
294
+ background: rgb(var(--ui-color-error-light) / 0.15);
295
+ color: rgb(var(--ui-color-error-light));
296
+ border-color: rgb(var(--ui-color-error-light) / 0.25);
297
+ }
298
+
299
+ :global([data-theme='dark']) .badge-dot.badge-error {
300
+ background: rgb(var(--ui-color-error-light));
301
+ }
302
+
303
+ @media (prefers-color-scheme: dark) {
304
+ :global(:root:not([data-theme='light'])) .badge-error {
305
+ background: rgb(var(--ui-color-error-light) / 0.15);
306
+ color: rgb(var(--ui-color-error-light));
307
+ border-color: rgb(var(--ui-color-error-light) / 0.25);
308
+ }
309
+
310
+ :global(:root:not([data-theme='light'])) .badge-dot.badge-error {
311
+ background: rgb(var(--ui-color-error-light));
312
+ }
313
+ }
314
+
315
+ /* ========================================
316
+ INFO VARIANT
317
+ ======================================== */
318
+ .badge-info {
319
+ background: rgb(var(--ui-color-info) / 0.1);
320
+ color: rgb(var(--ui-color-info));
321
+ border: 1px solid rgb(var(--ui-color-info) / 0.2);
322
+ }
323
+
324
+ .badge-dot.badge-info {
325
+ background: rgb(var(--ui-color-info));
326
+ border: none;
327
+ }
328
+
329
+ /* Dark mode */
330
+ :global([data-theme='dark']) .badge-info {
331
+ background: rgb(var(--ui-color-info-light) / 0.15);
332
+ color: rgb(var(--ui-color-info-light));
333
+ border-color: rgb(var(--ui-color-info-light) / 0.25);
334
+ }
335
+
336
+ :global([data-theme='dark']) .badge-dot.badge-info {
337
+ background: rgb(var(--ui-color-info-light));
338
+ }
339
+
340
+ @media (prefers-color-scheme: dark) {
341
+ :global(:root:not([data-theme='light'])) .badge-info {
342
+ background: rgb(var(--ui-color-info-light) / 0.15);
343
+ color: rgb(var(--ui-color-info-light));
344
+ border-color: rgb(var(--ui-color-info-light) / 0.25);
345
+ }
346
+
347
+ :global(:root:not([data-theme='light'])) .badge-dot.badge-info {
348
+ background: rgb(var(--ui-color-info-light));
349
+ }
350
+ }
351
+
352
+ /* ========================================
353
+ OUTLINE VARIANT
354
+ ======================================== */
355
+ .badge-outline {
356
+ background: transparent;
357
+ color: var(--ui-text-secondary);
358
+ border: 1px solid var(--ui-border-default);
359
+ }
360
+
361
+ .badge-dot.badge-outline {
362
+ background: var(--ui-text-tertiary);
363
+ border: none;
364
+ }
365
+ </style>
@@ -0,0 +1,39 @@
1
+ import type { Snippet } from 'svelte';
2
+ import type { Status } from '../../types/index.js';
3
+ type BadgeSize = 'sm' | 'md' | 'lg';
4
+ type BadgeVariant = Status | 'primary' | 'outline';
5
+ interface Props {
6
+ /** Status/variant of the badge */
7
+ status?: BadgeVariant;
8
+ /** Size of the badge */
9
+ size?: BadgeSize;
10
+ /** Whether to render as a pill (fully rounded) */
11
+ pill?: boolean;
12
+ /** Whether this badge represents a dot indicator (no text) */
13
+ dot?: boolean;
14
+ /** Icon to display */
15
+ icon?: Snippet;
16
+ /** Additional CSS classes */
17
+ class?: string;
18
+ /** Badge content */
19
+ children?: Snippet;
20
+ }
21
+ /**
22
+ * Badge
23
+ *
24
+ * A status badge component for displaying statuses, labels, and counts.
25
+ * Supports semantic status variants for healthcare workflows.
26
+ *
27
+ * @example
28
+ * <Badge status="success">Active</Badge>
29
+ *
30
+ * @example
31
+ * <Badge status="warning" size="lg">
32
+ * <Icon slot="icon" />
33
+ * Pending Review
34
+ * </Badge>
35
+ */
36
+ declare const Badge: import("svelte").Component<Props, {}, "">;
37
+ type Badge = ReturnType<typeof Badge>;
38
+ export default Badge;
39
+ //# sourceMappingURL=Badge.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Badge.svelte.d.ts","sourceRoot":"","sources":["../../../src/primitives/Badge/Badge.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAGlD,KAAK,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AACpC,KAAK,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;AAEnD,UAAU,KAAK;IACd,kCAAkC;IAClC,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,wBAAwB;IACxB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,kDAAkD;IAClD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,8DAA8D;IAC9D,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,sBAAsB;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oBAAoB;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;AA0CF;;;;;;;;;;;;;;GAcG;AACH,QAAA,MAAM,KAAK,2CAAwC,CAAC;AACpD,KAAK,KAAK,GAAG,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC;AACtC,eAAe,KAAK,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { default as Badge } from './Badge.svelte';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/primitives/Badge/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1 @@
1
+ export { default as Badge } from './Badge.svelte';