@aspect-ops/exon-ui 0.2.0 → 0.2.2

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 (74) hide show
  1. package/README.md +200 -0
  2. package/dist/components/Accordion/Accordion.svelte +2 -2
  3. package/dist/components/Accordion/AccordionItem.svelte +2 -2
  4. package/dist/components/AspectRatio/AspectRatio.svelte +1 -0
  5. package/dist/components/Card/FlipCard.svelte +155 -0
  6. package/dist/components/Card/FlipCard.svelte.d.ts +13 -0
  7. package/dist/components/Card/index.d.ts +1 -0
  8. package/dist/components/Card/index.js +1 -0
  9. package/dist/components/Chatbot/ChatMessage.svelte +143 -0
  10. package/dist/components/Chatbot/ChatMessage.svelte.d.ts +8 -0
  11. package/dist/components/Chatbot/Chatbot.svelte +640 -0
  12. package/dist/components/Chatbot/Chatbot.svelte.d.ts +22 -0
  13. package/dist/components/Chatbot/index.d.ts +3 -0
  14. package/dist/components/Chatbot/index.js +2 -0
  15. package/dist/components/Chatbot/types.d.ts +48 -0
  16. package/dist/components/Chatbot/types.js +2 -0
  17. package/dist/components/ContactForm/ContactForm.svelte +564 -0
  18. package/dist/components/ContactForm/ContactForm.svelte.d.ts +44 -0
  19. package/dist/components/ContactForm/index.d.ts +1 -0
  20. package/dist/components/ContactForm/index.js +1 -0
  21. package/dist/components/Container/Container.svelte +1 -0
  22. package/dist/components/DataTable/DataTable.svelte +460 -0
  23. package/dist/components/DataTable/DataTable.svelte.d.ts +49 -0
  24. package/dist/components/DataTable/index.d.ts +2 -0
  25. package/dist/components/DataTable/index.js +1 -0
  26. package/dist/components/DoughnutChart/DoughnutChart.svelte +390 -0
  27. package/dist/components/DoughnutChart/DoughnutChart.svelte.d.ts +25 -0
  28. package/dist/components/DoughnutChart/index.d.ts +1 -0
  29. package/dist/components/DoughnutChart/index.js +1 -0
  30. package/dist/components/FAB/FAB.svelte +5 -1
  31. package/dist/components/FAB/FABGroup.svelte +10 -2
  32. package/dist/components/FileUpload/FileUpload.svelte +12 -12
  33. package/dist/components/Icon/Icon.svelte +15 -18
  34. package/dist/components/Icon/Icon.svelte.d.ts +2 -1
  35. package/dist/components/Menu/MenuContent.svelte +1 -0
  36. package/dist/components/Menu/MenuSubContent.svelte +1 -0
  37. package/dist/components/Mermaid/Mermaid.svelte +320 -0
  38. package/dist/components/Mermaid/Mermaid.svelte.d.ts +38 -0
  39. package/dist/components/Mermaid/index.d.ts +1 -0
  40. package/dist/components/Mermaid/index.js +1 -0
  41. package/dist/components/Mermaid/mermaid.d.ts +21 -0
  42. package/dist/components/PageHeader/PageHeader.svelte +140 -0
  43. package/dist/components/PageHeader/PageHeader.svelte.d.ts +30 -0
  44. package/dist/components/PageHeader/index.d.ts +1 -0
  45. package/dist/components/PageHeader/index.js +1 -0
  46. package/dist/components/Popover/PopoverTrigger.svelte +1 -3
  47. package/dist/components/StatCircle/StatCircle.svelte +172 -0
  48. package/dist/components/StatCircle/StatCircle.svelte.d.ts +19 -0
  49. package/dist/components/StatCircle/index.d.ts +1 -0
  50. package/dist/components/StatCircle/index.js +1 -0
  51. package/dist/components/StatsCard/StatsCard.svelte +301 -0
  52. package/dist/components/StatsCard/StatsCard.svelte.d.ts +32 -0
  53. package/dist/components/StatsCard/index.d.ts +2 -0
  54. package/dist/components/StatsCard/index.js +1 -0
  55. package/dist/components/StatusBadge/StatusBadge.svelte +221 -0
  56. package/dist/components/StatusBadge/StatusBadge.svelte.d.ts +22 -0
  57. package/dist/components/StatusBadge/index.d.ts +2 -0
  58. package/dist/components/StatusBadge/index.js +1 -0
  59. package/dist/components/StatusBanner/StatusBanner.svelte +325 -0
  60. package/dist/components/StatusBanner/StatusBanner.svelte.d.ts +13 -0
  61. package/dist/components/StatusBanner/index.d.ts +1 -0
  62. package/dist/components/StatusBanner/index.js +1 -0
  63. package/dist/components/ViewCounter/ViewCounter.svelte +157 -0
  64. package/dist/components/ViewCounter/ViewCounter.svelte.d.ts +17 -0
  65. package/dist/components/ViewCounter/index.d.ts +1 -0
  66. package/dist/components/ViewCounter/index.js +1 -0
  67. package/dist/index.d.ts +17 -2
  68. package/dist/index.js +16 -1
  69. package/dist/styles/tokens.css +2 -1
  70. package/dist/types/data-display.d.ts +72 -0
  71. package/dist/types/feedback.d.ts +10 -0
  72. package/dist/types/index.d.ts +3 -3
  73. package/dist/types/input.d.ts +20 -0
  74. package/package.json +4 -2
@@ -0,0 +1,221 @@
1
+ <script lang="ts">
2
+ /**
3
+ * StatusBadge - A color-coded badge for displaying status values
4
+ * Automatically maps common status strings to semantic colors
5
+ */
6
+
7
+ type ColorVariant = 'success' | 'warning' | 'error' | 'info' | 'default';
8
+
9
+ interface Props {
10
+ /** The status text to display */
11
+ status: string;
12
+ /** Custom color mapping from status strings to color variants */
13
+ colorMap?: Record<string, ColorVariant>;
14
+ /** Size of the badge */
15
+ size?: 'sm' | 'md' | 'lg';
16
+ /** Show a dot indicator before the text */
17
+ dot?: boolean;
18
+ /** Transform text to uppercase */
19
+ uppercase?: boolean;
20
+ /** Additional CSS classes */
21
+ class?: string;
22
+ }
23
+
24
+ let {
25
+ status,
26
+ colorMap,
27
+ size = 'md',
28
+ dot = false,
29
+ uppercase = false,
30
+ class: className = ''
31
+ }: Props = $props();
32
+
33
+ // Default color mappings (case-insensitive)
34
+ const defaultColorMap: Record<string, ColorVariant> = {
35
+ // Success states
36
+ active: 'success',
37
+ approved: 'success',
38
+ completed: 'success',
39
+ success: 'success',
40
+ done: 'success',
41
+ verified: 'success',
42
+ confirmed: 'success',
43
+
44
+ // Warning states
45
+ pending: 'warning',
46
+ 'in progress': 'warning',
47
+ in_progress: 'warning',
48
+ 'on hold': 'warning',
49
+ on_hold: 'warning',
50
+ processing: 'warning',
51
+ draft: 'warning',
52
+
53
+ // Error states
54
+ rejected: 'error',
55
+ failed: 'error',
56
+ error: 'error',
57
+ cancelled: 'error',
58
+ inactive: 'error',
59
+ expired: 'error',
60
+ overdue: 'error',
61
+
62
+ // Info states
63
+ applied: 'info',
64
+ new: 'info',
65
+ 'to do': 'info',
66
+ todo: 'info',
67
+ open: 'info',
68
+ submitted: 'info'
69
+ };
70
+
71
+ // Compute the color variant based on status
72
+ const colorVariant = $derived(() => {
73
+ const normalizedStatus = status.toLowerCase().trim();
74
+
75
+ // Check custom colorMap first (case-insensitive)
76
+ if (colorMap) {
77
+ const customKey = Object.keys(colorMap).find((key) => key.toLowerCase() === normalizedStatus);
78
+ if (customKey) return colorMap[customKey];
79
+ }
80
+
81
+ // Fall back to default mappings
82
+ return defaultColorMap[normalizedStatus] || 'default';
83
+ });
84
+
85
+ const displayText = $derived(uppercase ? status.toUpperCase() : status);
86
+ </script>
87
+
88
+ <span
89
+ class="status-badge status-badge--{colorVariant()} status-badge--{size} {className}"
90
+ class:status-badge--uppercase={uppercase}
91
+ >
92
+ {#if dot}
93
+ <span class="status-badge__dot"></span>
94
+ {/if}
95
+ <span class="status-badge__text">{displayText}</span>
96
+ </span>
97
+
98
+ <style>
99
+ .status-badge {
100
+ display: inline-flex;
101
+ align-items: center;
102
+ gap: var(--space-xs, 0.25rem);
103
+ border-radius: var(--radius-full, 9999px);
104
+ font-family: inherit;
105
+ font-weight: 600;
106
+ line-height: 1;
107
+ white-space: nowrap;
108
+ }
109
+
110
+ /* Sizes */
111
+ .status-badge--sm {
112
+ padding: var(--space-xs, 0.125rem) var(--space-sm, 0.375rem);
113
+ font-size: var(--text-xs, 0.625rem);
114
+ }
115
+
116
+ .status-badge--md {
117
+ padding: var(--space-xs, 0.25rem) var(--space-sm, 0.5rem);
118
+ font-size: var(--text-xs, 0.75rem);
119
+ }
120
+
121
+ .status-badge--lg {
122
+ padding: var(--space-sm, 0.375rem) var(--space-md, 0.75rem);
123
+ font-size: var(--text-sm, 0.875rem);
124
+ }
125
+
126
+ /* Color variants - using soft/muted backgrounds */
127
+ .status-badge--default {
128
+ background: var(--color-bg-muted, #f3f4f6);
129
+ color: var(--color-text-muted, #6b7280);
130
+ }
131
+
132
+ .status-badge--success {
133
+ background: var(--color-success-soft, #dcfce7);
134
+ color: var(--color-success-text, #166534);
135
+ }
136
+
137
+ .status-badge--warning {
138
+ background: var(--color-warning-soft, #fef3c7);
139
+ color: var(--color-warning-text, #92400e);
140
+ }
141
+
142
+ .status-badge--error {
143
+ background: var(--color-error-soft, #fee2e2);
144
+ color: var(--color-error-text, #991b1b);
145
+ }
146
+
147
+ .status-badge--info {
148
+ background: var(--color-info-soft, #dbeafe);
149
+ color: var(--color-info-text, #1e40af);
150
+ }
151
+
152
+ /* Dot indicator */
153
+ .status-badge__dot {
154
+ width: 0.375rem;
155
+ height: 0.375rem;
156
+ border-radius: 50%;
157
+ flex-shrink: 0;
158
+ }
159
+
160
+ .status-badge--sm .status-badge__dot {
161
+ width: 0.25rem;
162
+ height: 0.25rem;
163
+ }
164
+
165
+ .status-badge--lg .status-badge__dot {
166
+ width: 0.5rem;
167
+ height: 0.5rem;
168
+ }
169
+
170
+ .status-badge--default .status-badge__dot {
171
+ background: var(--color-text-muted, #6b7280);
172
+ }
173
+
174
+ .status-badge--success .status-badge__dot {
175
+ background: var(--color-success, #22c55e);
176
+ }
177
+
178
+ .status-badge--warning .status-badge__dot {
179
+ background: var(--color-warning, #f59e0b);
180
+ }
181
+
182
+ .status-badge--error .status-badge__dot {
183
+ background: var(--color-error, #ef4444);
184
+ }
185
+
186
+ .status-badge--info .status-badge__dot {
187
+ background: var(--color-info, #3b82f6);
188
+ }
189
+
190
+ /* Uppercase modifier */
191
+ .status-badge--uppercase .status-badge__text {
192
+ text-transform: uppercase;
193
+ letter-spacing: 0.025em;
194
+ }
195
+
196
+ /* Dark mode support */
197
+ :global([data-theme='dark']) .status-badge--default {
198
+ background: var(--color-bg-muted-dark, #374151);
199
+ color: var(--color-text-muted-dark, #9ca3af);
200
+ }
201
+
202
+ :global([data-theme='dark']) .status-badge--success {
203
+ background: var(--color-success-soft-dark, #064e3b);
204
+ color: var(--color-success-text-dark, #6ee7b7);
205
+ }
206
+
207
+ :global([data-theme='dark']) .status-badge--warning {
208
+ background: var(--color-warning-soft-dark, #78350f);
209
+ color: var(--color-warning-text-dark, #fcd34d);
210
+ }
211
+
212
+ :global([data-theme='dark']) .status-badge--error {
213
+ background: var(--color-error-soft-dark, #7f1d1d);
214
+ color: var(--color-error-text-dark, #fca5a5);
215
+ }
216
+
217
+ :global([data-theme='dark']) .status-badge--info {
218
+ background: var(--color-info-soft-dark, #1e3a8a);
219
+ color: var(--color-info-text-dark, #93c5fd);
220
+ }
221
+ </style>
@@ -0,0 +1,22 @@
1
+ /**
2
+ * StatusBadge - A color-coded badge for displaying status values
3
+ * Automatically maps common status strings to semantic colors
4
+ */
5
+ type ColorVariant = 'success' | 'warning' | 'error' | 'info' | 'default';
6
+ interface Props {
7
+ /** The status text to display */
8
+ status: string;
9
+ /** Custom color mapping from status strings to color variants */
10
+ colorMap?: Record<string, ColorVariant>;
11
+ /** Size of the badge */
12
+ size?: 'sm' | 'md' | 'lg';
13
+ /** Show a dot indicator before the text */
14
+ dot?: boolean;
15
+ /** Transform text to uppercase */
16
+ uppercase?: boolean;
17
+ /** Additional CSS classes */
18
+ class?: string;
19
+ }
20
+ declare const StatusBadge: import("svelte").Component<Props, {}, "">;
21
+ type StatusBadge = ReturnType<typeof StatusBadge>;
22
+ export default StatusBadge;
@@ -0,0 +1,2 @@
1
+ export { default as StatusBadge } from './StatusBadge.svelte';
2
+ export type { StatusBadgeProps, StatusBadgeColor, StatusBadgeSize } from '../../types/index.js';
@@ -0,0 +1 @@
1
+ export { default as StatusBadge } from './StatusBadge.svelte';
@@ -0,0 +1,325 @@
1
+ <script lang="ts">
2
+ import type { StatusBannerStatus, StatusBannerPosition } from '../../types/index.js';
3
+
4
+ interface Props {
5
+ status: StatusBannerStatus;
6
+ message?: string;
7
+ description?: string;
8
+ dismissible?: boolean;
9
+ position?: StatusBannerPosition;
10
+ class?: string;
11
+ children?: import('svelte').Snippet;
12
+ }
13
+
14
+ let {
15
+ status,
16
+ message,
17
+ description,
18
+ dismissible = false,
19
+ position = 'sticky',
20
+ class: className = '',
21
+ children
22
+ }: Props = $props();
23
+
24
+ let dismissed = $state(false);
25
+ let visible = $state(true);
26
+
27
+ function handleDismiss() {
28
+ visible = false;
29
+ setTimeout(() => {
30
+ dismissed = true;
31
+ }, 300); // Match animation duration
32
+ }
33
+
34
+ // Default icons for each status
35
+ const statusIcons: Record<StatusBannerStatus, string> = {
36
+ online: '✓',
37
+ offline: '⚠',
38
+ warning: '⚠',
39
+ error: '✕',
40
+ reconnecting: '↻'
41
+ };
42
+
43
+ // Default messages if not provided
44
+ const statusMessages: Record<StatusBannerStatus, string> = {
45
+ online: 'Online',
46
+ offline: 'Offline',
47
+ warning: 'Warning',
48
+ error: 'Error',
49
+ reconnecting: 'Reconnecting'
50
+ };
51
+ </script>
52
+
53
+ {#if !dismissed}
54
+ <div
55
+ class="status-banner status-banner--{status} status-banner--{position} {className}"
56
+ class:status-banner--visible={visible}
57
+ role="status"
58
+ aria-live="polite"
59
+ >
60
+ <div class="status-banner__content">
61
+ <span class="status-banner__icon" aria-hidden="true">
62
+ {statusIcons[status]}
63
+ </span>
64
+ <div class="status-banner__text">
65
+ <span class="status-banner__message">
66
+ {message || statusMessages[status]}
67
+ </span>
68
+ {#if description}
69
+ <span class="status-banner__description">
70
+ {description}
71
+ </span>
72
+ {/if}
73
+ {#if children}
74
+ {@render children()}
75
+ {/if}
76
+ </div>
77
+ </div>
78
+ {#if dismissible}
79
+ <button
80
+ type="button"
81
+ class="status-banner__close"
82
+ onclick={handleDismiss}
83
+ aria-label="Dismiss status banner"
84
+ >
85
+ ×
86
+ </button>
87
+ {/if}
88
+ </div>
89
+ {/if}
90
+
91
+ <style>
92
+ .status-banner {
93
+ position: relative;
94
+ display: flex;
95
+ align-items: center;
96
+ justify-content: space-between;
97
+ width: 100%;
98
+ padding: 0.75rem 1rem;
99
+ font-family: inherit;
100
+ font-size: 0.875rem;
101
+ line-height: 1.5;
102
+ opacity: 0;
103
+ transform: translateY(-100%);
104
+ transition:
105
+ transform 0.3s ease,
106
+ opacity 0.3s ease;
107
+ z-index: 1000;
108
+ }
109
+
110
+ .status-banner--visible {
111
+ opacity: 1;
112
+ transform: translateY(0);
113
+ }
114
+
115
+ .status-banner--fixed {
116
+ position: fixed;
117
+ top: 0;
118
+ left: 0;
119
+ right: 0;
120
+ }
121
+
122
+ .status-banner--sticky {
123
+ position: sticky;
124
+ top: 0;
125
+ }
126
+
127
+ .status-banner--static {
128
+ position: static;
129
+ }
130
+
131
+ /* Support for mobile safe areas */
132
+ @supports (padding-top: env(safe-area-inset-top)) {
133
+ .status-banner--fixed,
134
+ .status-banner--sticky {
135
+ padding-top: calc(0.75rem + env(safe-area-inset-top));
136
+ }
137
+ }
138
+
139
+ .status-banner__content {
140
+ display: flex;
141
+ align-items: center;
142
+ gap: 0.75rem;
143
+ flex: 1;
144
+ }
145
+
146
+ .status-banner__icon {
147
+ flex-shrink: 0;
148
+ display: flex;
149
+ align-items: center;
150
+ justify-content: center;
151
+ width: 1.5rem;
152
+ height: 1.5rem;
153
+ font-size: 1rem;
154
+ font-weight: 600;
155
+ line-height: 1;
156
+ }
157
+
158
+ .status-banner__text {
159
+ display: flex;
160
+ flex-direction: column;
161
+ gap: 0.125rem;
162
+ flex: 1;
163
+ }
164
+
165
+ .status-banner__message {
166
+ font-weight: 600;
167
+ letter-spacing: 0.025em;
168
+ }
169
+
170
+ .status-banner__description {
171
+ font-size: 0.8125rem;
172
+ opacity: 0.9;
173
+ }
174
+
175
+ .status-banner__close {
176
+ flex-shrink: 0;
177
+ display: flex;
178
+ align-items: center;
179
+ justify-content: center;
180
+ width: 2rem;
181
+ height: 2rem;
182
+ margin: -0.25rem -0.25rem -0.25rem 0.5rem;
183
+ padding: 0;
184
+ border: none;
185
+ border-radius: var(--radius-sm, 0.25rem);
186
+ background: transparent;
187
+ font-family: inherit;
188
+ font-size: 1.25rem;
189
+ line-height: 1;
190
+ cursor: pointer;
191
+ transition: background-color 0.2s ease;
192
+ }
193
+
194
+ .status-banner__close:hover {
195
+ background-color: rgba(0, 0, 0, 0.1);
196
+ }
197
+
198
+ .status-banner__close:focus-visible {
199
+ outline: 2px solid currentColor;
200
+ outline-offset: 2px;
201
+ }
202
+
203
+ /* Online variant */
204
+ .status-banner--online {
205
+ background-color: var(--color-success-bg, #ecfdf5);
206
+ color: var(--color-success, #10b981);
207
+ }
208
+
209
+ .status-banner--online .status-banner__message,
210
+ .status-banner--online .status-banner__description {
211
+ color: var(--color-success-text, #065f46);
212
+ }
213
+
214
+ /* Offline variant */
215
+ .status-banner--offline {
216
+ background-color: var(--color-warning-bg, #fffbeb);
217
+ color: var(--color-warning, #f59e0b);
218
+ }
219
+
220
+ .status-banner--offline .status-banner__message,
221
+ .status-banner--offline .status-banner__description {
222
+ color: var(--color-warning-text, #92400e);
223
+ }
224
+
225
+ /* Warning variant */
226
+ .status-banner--warning {
227
+ background-color: var(--color-warning-bg, #fffbeb);
228
+ color: var(--color-warning, #f59e0b);
229
+ }
230
+
231
+ .status-banner--warning .status-banner__message,
232
+ .status-banner--warning .status-banner__description {
233
+ color: var(--color-warning-text, #92400e);
234
+ }
235
+
236
+ /* Error variant */
237
+ .status-banner--error {
238
+ background-color: var(--color-error-bg, #fef2f2);
239
+ color: var(--color-error, #ef4444);
240
+ }
241
+
242
+ .status-banner--error .status-banner__message,
243
+ .status-banner--error .status-banner__description {
244
+ color: var(--color-error-text, #991b1b);
245
+ }
246
+
247
+ /* Reconnecting variant */
248
+ .status-banner--reconnecting {
249
+ background-color: var(--color-info-bg, #eff6ff);
250
+ color: var(--color-info, #3b82f6);
251
+ }
252
+
253
+ .status-banner--reconnecting .status-banner__message,
254
+ .status-banner--reconnecting .status-banner__description {
255
+ color: var(--color-info-text, #1e3a8a);
256
+ }
257
+
258
+ .status-banner--reconnecting .status-banner__icon {
259
+ animation: spin 1s linear infinite;
260
+ }
261
+
262
+ @keyframes spin {
263
+ from {
264
+ transform: rotate(0deg);
265
+ }
266
+ to {
267
+ transform: rotate(360deg);
268
+ }
269
+ }
270
+
271
+ /* Dark mode support */
272
+ :global([data-theme='dark']) .status-banner--online {
273
+ background-color: var(--color-success-bg-dark, #064e3b);
274
+ color: var(--color-success-dark, #6ee7b7);
275
+ }
276
+
277
+ :global([data-theme='dark']) .status-banner--online .status-banner__message,
278
+ :global([data-theme='dark']) .status-banner--online .status-banner__description {
279
+ color: var(--color-success-text-dark, #d1fae5);
280
+ }
281
+
282
+ :global([data-theme='dark']) .status-banner--offline {
283
+ background-color: var(--color-warning-bg-dark, #78350f);
284
+ color: var(--color-warning-dark, #fcd34d);
285
+ }
286
+
287
+ :global([data-theme='dark']) .status-banner--offline .status-banner__message,
288
+ :global([data-theme='dark']) .status-banner--offline .status-banner__description {
289
+ color: var(--color-warning-text-dark, #fef3c7);
290
+ }
291
+
292
+ :global([data-theme='dark']) .status-banner--warning {
293
+ background-color: var(--color-warning-bg-dark, #78350f);
294
+ color: var(--color-warning-dark, #fcd34d);
295
+ }
296
+
297
+ :global([data-theme='dark']) .status-banner--warning .status-banner__message,
298
+ :global([data-theme='dark']) .status-banner--warning .status-banner__description {
299
+ color: var(--color-warning-text-dark, #fef3c7);
300
+ }
301
+
302
+ :global([data-theme='dark']) .status-banner--error {
303
+ background-color: var(--color-error-bg-dark, #7f1d1d);
304
+ color: var(--color-error-dark, #fca5a5);
305
+ }
306
+
307
+ :global([data-theme='dark']) .status-banner--error .status-banner__message,
308
+ :global([data-theme='dark']) .status-banner--error .status-banner__description {
309
+ color: var(--color-error-text-dark, #fee2e2);
310
+ }
311
+
312
+ :global([data-theme='dark']) .status-banner--reconnecting {
313
+ background-color: var(--color-info-bg-dark, #1e3a8a);
314
+ color: var(--color-info-dark, #93c5fd);
315
+ }
316
+
317
+ :global([data-theme='dark']) .status-banner--reconnecting .status-banner__message,
318
+ :global([data-theme='dark']) .status-banner--reconnecting .status-banner__description {
319
+ color: var(--color-info-text-dark, #dbeafe);
320
+ }
321
+
322
+ :global([data-theme='dark']) .status-banner__close:hover {
323
+ background-color: rgba(255, 255, 255, 0.1);
324
+ }
325
+ </style>
@@ -0,0 +1,13 @@
1
+ import type { StatusBannerStatus, StatusBannerPosition } from '../../types/index.js';
2
+ interface Props {
3
+ status: StatusBannerStatus;
4
+ message?: string;
5
+ description?: string;
6
+ dismissible?: boolean;
7
+ position?: StatusBannerPosition;
8
+ class?: string;
9
+ children?: import('svelte').Snippet;
10
+ }
11
+ declare const StatusBanner: import("svelte").Component<Props, {}, "">;
12
+ type StatusBanner = ReturnType<typeof StatusBanner>;
13
+ export default StatusBanner;
@@ -0,0 +1 @@
1
+ export { default as StatusBanner } from './StatusBanner.svelte';
@@ -0,0 +1 @@
1
+ export { default as StatusBanner } from './StatusBanner.svelte';