@getmicdrop/svelte-components 2.2.0 → 2.4.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 (84) hide show
  1. package/dist/components/Accordion/Accordion.svelte +44 -0
  2. package/dist/components/Accordion/Accordion.svelte.d.ts +42 -0
  3. package/dist/components/Accordion/Accordion.svelte.d.ts.map +1 -0
  4. package/dist/components/Accordion/AccordionItem.svelte +141 -0
  5. package/dist/components/Accordion/AccordionItem.svelte.d.ts +50 -0
  6. package/dist/components/Accordion/AccordionItem.svelte.d.ts.map +1 -0
  7. package/dist/components/Badges/Badge.svelte +129 -3
  8. package/dist/components/Badges/Badge.svelte.d.ts +8 -2
  9. package/dist/components/Badges/Badge.svelte.d.ts.map +1 -1
  10. package/dist/components/Breadcrumb/Breadcrumb.svelte +65 -36
  11. package/dist/components/Breadcrumb/Breadcrumb.svelte.d.ts +16 -2
  12. package/dist/components/Breadcrumb/Breadcrumb.svelte.d.ts.map +1 -1
  13. package/dist/components/Button/Button.svelte +1 -0
  14. package/dist/components/Checkbox/Checkbox.svelte +116 -0
  15. package/dist/components/Checkbox/Checkbox.svelte.d.ts +52 -0
  16. package/dist/components/Checkbox/Checkbox.svelte.d.ts.map +1 -0
  17. package/dist/components/Drawer/Drawer.svelte +207 -0
  18. package/dist/components/Drawer/Drawer.svelte.d.ts +74 -0
  19. package/dist/components/Drawer/Drawer.svelte.d.ts.map +1 -0
  20. package/dist/components/Dropdown/Dropdown.svelte +129 -0
  21. package/dist/components/Dropdown/Dropdown.svelte.d.ts +48 -0
  22. package/dist/components/Dropdown/Dropdown.svelte.d.ts.map +1 -0
  23. package/dist/components/Dropdown/DropdownItem.svelte +111 -0
  24. package/dist/components/Dropdown/DropdownItem.svelte.d.ts +48 -0
  25. package/dist/components/Dropdown/DropdownItem.svelte.d.ts.map +1 -0
  26. package/dist/components/Input/Input.svelte.d.ts +6 -6
  27. package/dist/components/Input/MultiSelect.svelte +4 -5
  28. package/dist/components/Input/MultiSelect.svelte.d.ts +6 -6
  29. package/dist/components/Input/MultiSelect.svelte.d.ts.map +1 -1
  30. package/dist/components/Input/Search.svelte +173 -0
  31. package/dist/components/Input/Search.svelte.d.ts +68 -0
  32. package/dist/components/Input/Search.svelte.d.ts.map +1 -0
  33. package/dist/components/Input/Select.svelte +4 -5
  34. package/dist/components/Input/Select.svelte.d.ts +6 -6
  35. package/dist/components/Input/Select.svelte.d.ts.map +1 -1
  36. package/dist/components/Input/Textarea.svelte +160 -0
  37. package/dist/components/Input/Textarea.svelte.d.ts +69 -0
  38. package/dist/components/Input/Textarea.svelte.d.ts.map +1 -0
  39. package/dist/components/Label/Label.svelte +60 -0
  40. package/dist/components/Label/Label.svelte.d.ts +48 -0
  41. package/dist/components/Label/Label.svelte.d.ts.map +1 -0
  42. package/dist/components/Layout/Header.svelte +14 -4
  43. package/dist/components/Modal/ConfirmationModal.svelte +69 -17
  44. package/dist/components/Modal/ConfirmationModal.svelte.d.ts +22 -0
  45. package/dist/components/Modal/ConfirmationModal.svelte.d.ts.map +1 -1
  46. package/dist/components/Modal/InputModal.svelte +180 -0
  47. package/dist/components/Modal/InputModal.svelte.d.ts +77 -0
  48. package/dist/components/Modal/InputModal.svelte.d.ts.map +1 -0
  49. package/dist/components/Modal/Modal.svelte +34 -8
  50. package/dist/components/Modal/Modal.svelte.d.ts +2 -0
  51. package/dist/components/Modal/Modal.svelte.d.ts.map +1 -1
  52. package/dist/components/Modal/StatusModal.svelte +221 -0
  53. package/dist/components/Modal/StatusModal.svelte.d.ts +59 -0
  54. package/dist/components/Modal/StatusModal.svelte.d.ts.map +1 -0
  55. package/dist/components/OrderSummary/OrderSummary.svelte +2 -2
  56. package/dist/components/OrderSummary/OrderSummary.svelte.d.ts.map +1 -1
  57. package/dist/components/Pagination/Pagination.svelte +197 -0
  58. package/dist/components/Pagination/Pagination.svelte.d.ts +53 -0
  59. package/dist/components/Pagination/Pagination.svelte.d.ts.map +1 -0
  60. package/dist/components/PasswordStrengthIndicator/PasswordStrengthIndicator.svelte.d.ts +2 -2
  61. package/dist/components/Radio/Radio.svelte +119 -0
  62. package/dist/components/Radio/Radio.svelte.d.ts +54 -0
  63. package/dist/components/Radio/Radio.svelte.d.ts.map +1 -0
  64. package/dist/components/Skeleton/Skeleton.svelte +68 -0
  65. package/dist/components/Skeleton/Skeleton.svelte.d.ts +37 -0
  66. package/dist/components/Skeleton/Skeleton.svelte.d.ts.map +1 -0
  67. package/dist/components/Tabs/TabItem.svelte +39 -0
  68. package/dist/components/Tabs/TabItem.svelte.d.ts +52 -0
  69. package/dist/components/Tabs/TabItem.svelte.d.ts.map +1 -0
  70. package/dist/components/Tabs/Tabs.svelte +181 -0
  71. package/dist/components/Tabs/Tabs.svelte.d.ts +46 -0
  72. package/dist/components/Tabs/Tabs.svelte.d.ts.map +1 -0
  73. package/dist/components/pages/performers/ShowItemCard.svelte.d.ts +2 -2
  74. package/dist/components/pages/performers/SwitchOption.svelte.d.ts +2 -2
  75. package/dist/components/pages/performers/VenueInfo.svelte.d.ts +2 -2
  76. package/dist/components/pages/performers/VenueItemCard.svelte +2 -2
  77. package/dist/components/pages/performers/VenueItemCard.svelte.d.ts +2 -2
  78. package/dist/components/pages/profile/profile-form.svelte +1 -1
  79. package/dist/constants/formOptions.d.ts +5 -2
  80. package/dist/constants/formOptions.d.ts.map +1 -1
  81. package/dist/constants/formOptions.js +2 -1
  82. package/dist/index.d.ts +16 -0
  83. package/dist/index.js +18 -0
  84. package/package.json +1 -1
@@ -223,7 +223,7 @@
223
223
  {#if loading}
224
224
  <Spinner size="sm" color="white" />
225
225
  {:else}
226
- {btnText}
226
+ <span translate="no">{btnText}</span>
227
227
  {/if}
228
228
  </button>
229
229
  </div>
@@ -345,7 +345,7 @@
345
345
  {#if loading}
346
346
  <Spinner size="sm" color="white" />
347
347
  {:else}
348
- Checkout
348
+ <span translate="no">Checkout</span>
349
349
  {/if}
350
350
  </button>
351
351
  </div>
@@ -1 +1 @@
1
- {"version":3,"file":"OrderSummary.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/OrderSummary/OrderSummary.svelte.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAuVA;;;;;;;;;;;;;;;;;;;;;;;mBAA2S;6CAT9P,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,OAAO,OAAO,QAAQ;IAC3L,cAAc,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,WAAW,OAAO,SAAS,KAAK,GAAG;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IAC9G,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"OrderSummary.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/OrderSummary/OrderSummary.svelte.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAyVA;;;;;;;;;;;;;;;;;;;;;;;mBAA2S;6CAT9P,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,OAAO,OAAO,QAAQ;IAC3L,cAAc,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,WAAW,OAAO,SAAS,KAAK,GAAG;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IAC9G,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,197 @@
1
+ <script>
2
+ import { createEventDispatcher } from "svelte";
3
+
4
+ /** @type {number} Current page (1-indexed) */
5
+ export let currentPage = 1;
6
+ /** @type {number} Total number of pages */
7
+ export let totalPages = 1;
8
+ /** @type {number} Max page buttons to show */
9
+ export let maxVisible = 5;
10
+ /** @type {boolean} Show previous/next buttons */
11
+ export let showPrevNext = true;
12
+ /** @type {boolean} Flowbite API: alias for showPrevNext */
13
+ export let showIcons = undefined;
14
+ /** @type {string} Flowbite API: previous button label */
15
+ export let previousLabel = undefined;
16
+ /** @type {string} Flowbite API: next button label */
17
+ export let nextLabel = undefined;
18
+ /** @type {string} Additional CSS classes */
19
+ let className = "";
20
+ export { className as class };
21
+
22
+ const dispatch = createEventDispatcher();
23
+
24
+ // Support flowbite's showIcons prop
25
+ $: effectiveShowPrevNext = showIcons !== undefined ? showIcons : showPrevNext;
26
+
27
+ function goToPage(page) {
28
+ if (page >= 1 && page <= totalPages && page !== currentPage) {
29
+ currentPage = page;
30
+ dispatch("change", { page });
31
+ // Also dispatch flowbite-style event
32
+ dispatch("pageChange", page);
33
+ }
34
+ }
35
+
36
+ function previous() {
37
+ goToPage(currentPage - 1);
38
+ }
39
+
40
+ function next() {
41
+ goToPage(currentPage + 1);
42
+ }
43
+
44
+ // Calculate which page numbers to show
45
+ $: visiblePages = (() => {
46
+ const pages = [];
47
+ let start = Math.max(1, currentPage - Math.floor(maxVisible / 2));
48
+ let end = Math.min(totalPages, start + maxVisible - 1);
49
+
50
+ // Adjust start if we're near the end
51
+ if (end - start + 1 < maxVisible) {
52
+ start = Math.max(1, end - maxVisible + 1);
53
+ }
54
+
55
+ for (let i = start; i <= end; i++) {
56
+ pages.push(i);
57
+ }
58
+
59
+ return pages;
60
+ })();
61
+
62
+ $: showStartEllipsis = visiblePages[0] > 1;
63
+ $: showEndEllipsis = visiblePages[visiblePages.length - 1] < totalPages;
64
+ </script>
65
+
66
+ <nav class="pagination {className}" aria-label="Pagination">
67
+ {#if effectiveShowPrevNext}
68
+ <button
69
+ type="button"
70
+ class="pagination__button pagination__button--prev"
71
+ disabled={currentPage === 1}
72
+ on:click={previous}
73
+ aria-label="Previous page"
74
+ >
75
+ {#if $$slots.prev}
76
+ <slot name="prev" />
77
+ {:else}
78
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
79
+ <path d="M12.5 15L7.5 10L12.5 5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
80
+ </svg>
81
+ {/if}
82
+ </button>
83
+ {/if}
84
+
85
+ <div class="pagination__pages">
86
+ {#if showStartEllipsis}
87
+ <button
88
+ type="button"
89
+ class="pagination__page"
90
+ on:click={() => goToPage(1)}
91
+ >
92
+ 1
93
+ </button>
94
+ <span class="pagination__ellipsis">...</span>
95
+ {/if}
96
+
97
+ {#each visiblePages as page}
98
+ <button
99
+ type="button"
100
+ class="pagination__page"
101
+ class:pagination__page--active={page === currentPage}
102
+ on:click={() => goToPage(page)}
103
+ aria-current={page === currentPage ? "page" : undefined}
104
+ >
105
+ {page}
106
+ </button>
107
+ {/each}
108
+
109
+ {#if showEndEllipsis}
110
+ <span class="pagination__ellipsis">...</span>
111
+ <button
112
+ type="button"
113
+ class="pagination__page"
114
+ on:click={() => goToPage(totalPages)}
115
+ >
116
+ {totalPages}
117
+ </button>
118
+ {/if}
119
+ </div>
120
+
121
+ {#if effectiveShowPrevNext}
122
+ <button
123
+ type="button"
124
+ class="pagination__button pagination__button--next"
125
+ disabled={currentPage === totalPages}
126
+ on:click={next}
127
+ aria-label="Next page"
128
+ >
129
+ {#if $$slots.next}
130
+ <slot name="next" />
131
+ {:else}
132
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
133
+ <path d="M7.5 5L12.5 10L7.5 15" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
134
+ </svg>
135
+ {/if}
136
+ </button>
137
+ {/if}
138
+ </nav>
139
+
140
+ <style>
141
+ .pagination {
142
+ display: flex;
143
+ align-items: center;
144
+ gap: 0.25rem;
145
+ }
146
+
147
+ .pagination__pages {
148
+ display: flex;
149
+ align-items: center;
150
+ gap: 0.25rem;
151
+ }
152
+
153
+ .pagination__button,
154
+ .pagination__page {
155
+ display: flex;
156
+ align-items: center;
157
+ justify-content: center;
158
+ min-width: 2.25rem;
159
+ height: 2.25rem;
160
+ padding: 0 0.5rem;
161
+ border: 1px solid hsl(var(--Stroke-Primary, 220 13% 85%));
162
+ border-radius: 0.375rem;
163
+ background-color: hsl(var(--BG-Primary, 0 0% 100%));
164
+ color: hsl(var(--Text-Primary, 220 13% 13%));
165
+ font-size: 0.875rem;
166
+ font-weight: 500;
167
+ cursor: pointer;
168
+ transition: all 0.15s ease;
169
+ }
170
+
171
+ .pagination__button:hover:not(:disabled),
172
+ .pagination__page:hover:not(.pagination__page--active) {
173
+ background-color: hsl(var(--BG-Secondary, 220 14% 96%));
174
+ border-color: hsl(var(--Stroke-Secondary, 220 13% 75%));
175
+ }
176
+
177
+ .pagination__button:disabled {
178
+ opacity: 0.5;
179
+ cursor: not-allowed;
180
+ }
181
+
182
+ .pagination__page--active {
183
+ background-color: hsl(var(--Brand-Primary, 221 83% 53%));
184
+ border-color: hsl(var(--Brand-Primary, 221 83% 53%));
185
+ color: white;
186
+ }
187
+
188
+ .pagination__ellipsis {
189
+ display: flex;
190
+ align-items: center;
191
+ justify-content: center;
192
+ width: 2.25rem;
193
+ height: 2.25rem;
194
+ color: hsl(var(--Text-Secondary, 220 9% 46%));
195
+ font-size: 0.875rem;
196
+ }
197
+ </style>
@@ -0,0 +1,53 @@
1
+ export default Pagination;
2
+ type Pagination = SvelteComponent<{
3
+ class?: string | undefined;
4
+ currentPage?: number | undefined;
5
+ totalPages?: number | undefined;
6
+ maxVisible?: number | undefined;
7
+ showPrevNext?: boolean | undefined;
8
+ showIcons?: boolean | undefined;
9
+ previousLabel?: string | undefined;
10
+ nextLabel?: string | undefined;
11
+ }, {
12
+ change: CustomEvent<any>;
13
+ pageChange: CustomEvent<any>;
14
+ } & {
15
+ [evt: string]: CustomEvent<any>;
16
+ }, {
17
+ prev: {};
18
+ next: {};
19
+ }> & {
20
+ $$bindings?: string | undefined;
21
+ };
22
+ declare const Pagination: $$__sveltets_2_IsomorphicComponent<{
23
+ class?: string | undefined;
24
+ currentPage?: number | undefined;
25
+ totalPages?: number | undefined;
26
+ maxVisible?: number | undefined;
27
+ showPrevNext?: boolean | undefined;
28
+ showIcons?: boolean | undefined;
29
+ previousLabel?: string | undefined;
30
+ nextLabel?: string | undefined;
31
+ }, {
32
+ change: CustomEvent<any>;
33
+ pageChange: CustomEvent<any>;
34
+ } & {
35
+ [evt: string]: CustomEvent<any>;
36
+ }, {
37
+ prev: {};
38
+ next: {};
39
+ }, {}, string>;
40
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
41
+ new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
42
+ $$bindings?: Bindings;
43
+ } & Exports;
44
+ (internal: unknown, props: Props & {
45
+ $$events?: Events;
46
+ $$slots?: Slots;
47
+ }): Exports & {
48
+ $set?: any;
49
+ $on?: any;
50
+ };
51
+ z_$$bindings?: Bindings;
52
+ }
53
+ //# sourceMappingURL=Pagination.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Pagination.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/Pagination/Pagination.svelte.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAgJA;;;;;;;;;;;;;;;;;eAAsO;6CAdzL,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,OAAO,OAAO,QAAQ;IAC3L,cAAc,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,WAAW,OAAO,SAAS,KAAK,GAAG;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IAC9G,eAAe,QAAQ,CAAC"}
@@ -1,9 +1,9 @@
1
1
  export default PasswordStrengthIndicator;
2
2
  type PasswordStrengthIndicator = SvelteComponent<$$__sveltets_2_PropsWithChildren<{
3
+ textColor?: string | undefined;
3
4
  password?: string | undefined;
4
5
  strengthText?: string | undefined;
5
6
  score?: number | undefined;
6
- textColor?: string | undefined;
7
7
  }, {
8
8
  default: {};
9
9
  }>, {
@@ -14,10 +14,10 @@ type PasswordStrengthIndicator = SvelteComponent<$$__sveltets_2_PropsWithChildre
14
14
  $$bindings?: string | undefined;
15
15
  };
16
16
  declare const PasswordStrengthIndicator: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsWithChildren<{
17
+ textColor?: string | undefined;
17
18
  password?: string | undefined;
18
19
  strengthText?: string | undefined;
19
20
  score?: number | undefined;
20
- textColor?: string | undefined;
21
21
  }, {
22
22
  default: {};
23
23
  }>, {
@@ -0,0 +1,119 @@
1
+ <script>
2
+ import { createEventDispatcher } from "svelte";
3
+
4
+ /** @type {string} The value of this radio option */
5
+ export let value = "";
6
+ /** @type {string} The currently selected value (bind:group) */
7
+ export let group = "";
8
+ /** @type {string} Name attribute for grouping radios */
9
+ export let name = "";
10
+ /** @type {boolean} Whether the radio is disabled */
11
+ export let disabled = false;
12
+ /** @type {boolean|undefined} Direct checked prop for flowbite API compatibility */
13
+ export let checked = undefined;
14
+ /** @type {string} Additional CSS classes */
15
+ let className = "";
16
+ export { className as class };
17
+
18
+ const dispatch = createEventDispatcher();
19
+
20
+ // Support both flowbite-style checked prop and group binding
21
+ $: isChecked = checked !== undefined ? checked : group === value;
22
+
23
+ function handleChange() {
24
+ group = value;
25
+ dispatch("change", { value });
26
+ }
27
+ </script>
28
+
29
+ <label class="radio {className}" class:radio--disabled={disabled}>
30
+ <input
31
+ type="radio"
32
+ {name}
33
+ {value}
34
+ {disabled}
35
+ checked={isChecked}
36
+ on:change={handleChange}
37
+ class="radio__input"
38
+ />
39
+ <span class="radio__circle">
40
+ <span class="radio__dot"></span>
41
+ </span>
42
+ {#if $$slots.default}
43
+ <span class="radio__label">
44
+ <slot />
45
+ </span>
46
+ {/if}
47
+ </label>
48
+
49
+ <style>
50
+ .radio {
51
+ display: inline-flex;
52
+ align-items: flex-start;
53
+ gap: 0.5rem;
54
+ cursor: pointer;
55
+ -webkit-user-select: none;
56
+ -moz-user-select: none;
57
+ user-select: none;
58
+ }
59
+
60
+ .radio--disabled {
61
+ cursor: not-allowed;
62
+ opacity: 0.5;
63
+ }
64
+
65
+ .radio__input {
66
+ position: absolute;
67
+ opacity: 0;
68
+ width: 0;
69
+ height: 0;
70
+ }
71
+
72
+ .radio__circle {
73
+ flex-shrink: 0;
74
+ width: 1.125rem;
75
+ height: 1.125rem;
76
+ border: 2px solid hsl(var(--Stroke-Primary, 220 13% 85%));
77
+ border-radius: 50%;
78
+ background-color: hsl(var(--BG-Primary, 0 0% 100%));
79
+ display: flex;
80
+ align-items: center;
81
+ justify-content: center;
82
+ transition: all 0.15s ease;
83
+ margin-top: 0.1875rem; /* Align with text baseline */
84
+ }
85
+
86
+ .radio__dot {
87
+ width: 0.5rem;
88
+ height: 0.5rem;
89
+ border-radius: 50%;
90
+ background-color: hsl(var(--Brand-Primary, 221 83% 53%));
91
+ opacity: 0;
92
+ transform: scale(0);
93
+ transition: all 0.15s ease;
94
+ }
95
+
96
+ .radio__input:checked + .radio__circle {
97
+ border-color: hsl(var(--Brand-Primary, 221 83% 53%));
98
+ }
99
+
100
+ .radio__input:checked + .radio__circle .radio__dot {
101
+ opacity: 1;
102
+ transform: scale(1);
103
+ }
104
+
105
+ .radio__input:focus-visible + .radio__circle {
106
+ outline: 2px solid hsl(var(--Brand-Primary, 221 83% 53%));
107
+ outline-offset: 2px;
108
+ }
109
+
110
+ .radio__input:disabled + .radio__circle {
111
+ background-color: hsl(var(--BG-Secondary, 220 14% 96%));
112
+ }
113
+
114
+ .radio__label {
115
+ color: hsl(var(--Text-Primary, 220 13% 13%));
116
+ font-size: 0.875rem;
117
+ line-height: 1.5;
118
+ }
119
+ </style>
@@ -0,0 +1,54 @@
1
+ export default Radio;
2
+ type Radio = SvelteComponent<$$__sveltets_2_PropsWithChildren<{
3
+ class?: string | undefined;
4
+ disabled?: boolean | undefined;
5
+ checked?: boolean | undefined;
6
+ value?: string | undefined;
7
+ name?: string | undefined;
8
+ group?: string | undefined;
9
+ }, {
10
+ default: {};
11
+ }>, {
12
+ change: CustomEvent<any>;
13
+ } & {
14
+ [evt: string]: CustomEvent<any>;
15
+ }, {
16
+ default: {};
17
+ }> & {
18
+ $$bindings?: string | undefined;
19
+ };
20
+ declare const Radio: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsWithChildren<{
21
+ class?: string | undefined;
22
+ disabled?: boolean | undefined;
23
+ checked?: boolean | undefined;
24
+ value?: string | undefined;
25
+ name?: string | undefined;
26
+ group?: string | undefined;
27
+ }, {
28
+ default: {};
29
+ }>, {
30
+ change: CustomEvent<any>;
31
+ } & {
32
+ [evt: string]: CustomEvent<any>;
33
+ }, {
34
+ default: {};
35
+ }, {}, string>;
36
+ type $$__sveltets_2_PropsWithChildren<Props, Slots> = Props & (Slots extends {
37
+ default: any;
38
+ } ? Props extends Record<string, never> ? any : {
39
+ children?: any;
40
+ } : {});
41
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
42
+ new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
43
+ $$bindings?: Bindings;
44
+ } & Exports;
45
+ (internal: unknown, props: Props & {
46
+ $$events?: Events;
47
+ $$slots?: Slots;
48
+ }): Exports & {
49
+ $set?: any;
50
+ $on?: any;
51
+ };
52
+ z_$$bindings?: Bindings;
53
+ }
54
+ //# sourceMappingURL=Radio.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Radio.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/Radio/Radio.svelte.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAqEA;;;cAhBW,OAAO,GAAC,SAAS;;;;;;;;;;;;eAgBkJ;sCATxI,KAAK,EAAE,KAAK;;;;;6CALL,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,OAAO,OAAO,QAAQ;IAC3L,cAAc,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,WAAW,OAAO,SAAS,KAAK,GAAG;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IAC9G,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,68 @@
1
+ <script>
2
+ /** @type {'text' | 'circular' | 'rectangular'} Shape variant */
3
+ export let variant = "text";
4
+ /** @type {string} Width (CSS value) */
5
+ export let width = "100%";
6
+ /** @type {string} Height (CSS value) */
7
+ export let height = "1rem";
8
+ /** @type {boolean} Whether to animate */
9
+ export let animation = true;
10
+ /** @type {string} Additional CSS classes */
11
+ let className = "";
12
+ export { className as class };
13
+ /** @type {string} Flowbite-style divClass for Tailwind classes */
14
+ export let divClass = "";
15
+
16
+ // If divClass is provided, use it instead of explicit width/height
17
+ $: useFlowbiteStyle = divClass !== "";
18
+ $: computedStyle = useFlowbiteStyle ? "" : `width: ${width}; height: ${height};`;
19
+ $: computedClass = useFlowbiteStyle
20
+ ? `skeleton skeleton--${variant} ${divClass} ${className}`.trim()
21
+ : `skeleton skeleton--${variant} ${className}`.trim();
22
+ </script>
23
+
24
+ <div
25
+ class={computedClass}
26
+ class:skeleton--animated={animation}
27
+ style={computedStyle}
28
+ aria-hidden="true"
29
+ ></div>
30
+
31
+ <style>
32
+ .skeleton {
33
+ background-color: hsl(var(--BG-Secondary, 220 14% 96%));
34
+ display: block;
35
+ }
36
+
37
+ .skeleton--text {
38
+ border-radius: 0.25rem;
39
+ }
40
+
41
+ .skeleton--circular {
42
+ border-radius: 50%;
43
+ }
44
+
45
+ .skeleton--rectangular {
46
+ border-radius: 0.5rem;
47
+ }
48
+
49
+ .skeleton--animated {
50
+ animation: skeleton-pulse 1.5s ease-in-out infinite;
51
+ background: linear-gradient(
52
+ 90deg,
53
+ hsl(var(--BG-Secondary, 220 14% 96%)) 0%,
54
+ hsl(var(--BG-Primary, 0 0% 100%)) 50%,
55
+ hsl(var(--BG-Secondary, 220 14% 96%)) 100%
56
+ );
57
+ background-size: 200% 100%;
58
+ }
59
+
60
+ @keyframes skeleton-pulse {
61
+ 0% {
62
+ background-position: 200% 0;
63
+ }
64
+ 100% {
65
+ background-position: -200% 0;
66
+ }
67
+ }
68
+ </style>
@@ -0,0 +1,37 @@
1
+ export default Skeleton;
2
+ type Skeleton = SvelteComponent<{
3
+ class?: string | undefined;
4
+ variant?: "text" | "circular" | "rectangular" | undefined;
5
+ width?: string | undefined;
6
+ height?: string | undefined;
7
+ animation?: boolean | undefined;
8
+ divClass?: string | undefined;
9
+ }, {
10
+ [evt: string]: CustomEvent<any>;
11
+ }, {}> & {
12
+ $$bindings?: string | undefined;
13
+ };
14
+ declare const Skeleton: $$__sveltets_2_IsomorphicComponent<{
15
+ class?: string | undefined;
16
+ variant?: "text" | "circular" | "rectangular" | undefined;
17
+ width?: string | undefined;
18
+ height?: string | undefined;
19
+ animation?: boolean | undefined;
20
+ divClass?: string | undefined;
21
+ }, {
22
+ [evt: string]: CustomEvent<any>;
23
+ }, {}, {}, string>;
24
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
25
+ new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
26
+ $$bindings?: Bindings;
27
+ } & Exports;
28
+ (internal: unknown, props: Props & {
29
+ $$events?: Events;
30
+ $$slots?: Slots;
31
+ }): Exports & {
32
+ $set?: any;
33
+ $on?: any;
34
+ };
35
+ z_$$bindings?: Bindings;
36
+ }
37
+ //# sourceMappingURL=Skeleton.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Skeleton.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/Skeleton/Skeleton.svelte.js"],"names":[],"mappings":";;;;;;;;;;;;;AA+CA;;;;;;;;;mBAAiL;6CATpI,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,OAAO,OAAO,QAAQ;IAC3L,cAAc,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,WAAW,OAAO,SAAS,KAAK,GAAG;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IAC9G,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,39 @@
1
+ <script>
2
+ import { getContext, onMount, createEventDispatcher } from "svelte";
3
+
4
+ /** @type {string} Tab title displayed in the tab button */
5
+ export let title = "";
6
+ /** @type {boolean} Whether this tab is initially open/active (flowbite API) */
7
+ export let open = false;
8
+ /** @type {string|number|undefined} Unique identifier for this tab */
9
+ export let value = undefined;
10
+ /** @type {boolean} Whether the tab is disabled */
11
+ export let disabled = false;
12
+ /** @type {string} Additional CSS classes for the tab button */
13
+ let className = "";
14
+ export { className as class };
15
+
16
+ const dispatch = createEventDispatcher();
17
+ const { activeTab, registerTab } = getContext("tabs");
18
+
19
+ // Generate unique ID
20
+ let tabId = value || `tab-${Math.random().toString(36).substring(2, 9)}`;
21
+
22
+ onMount(() => {
23
+ registerTab(tabId, title, open);
24
+ });
25
+
26
+ $: isActive = $activeTab === tabId;
27
+ </script>
28
+
29
+ {#if isActive}
30
+ <div class="tab-panel" role="tabpanel" on:click={() => dispatch("click")}>
31
+ <slot />
32
+ </div>
33
+ {/if}
34
+
35
+ <style>
36
+ .tab-panel {
37
+ /* Content panel styling can be customized via contentClass on Tabs */
38
+ }
39
+ </style>
@@ -0,0 +1,52 @@
1
+ export default TabItem;
2
+ type TabItem = SvelteComponent<$$__sveltets_2_PropsWithChildren<{
3
+ class?: string | undefined;
4
+ open?: boolean | undefined;
5
+ title?: string | undefined;
6
+ disabled?: boolean | undefined;
7
+ value?: string | number | undefined;
8
+ }, {
9
+ default: {};
10
+ }>, {
11
+ click: CustomEvent<any>;
12
+ } & {
13
+ [evt: string]: CustomEvent<any>;
14
+ }, {
15
+ default: {};
16
+ }> & {
17
+ $$bindings?: string | undefined;
18
+ };
19
+ declare const TabItem: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsWithChildren<{
20
+ class?: string | undefined;
21
+ open?: boolean | undefined;
22
+ title?: string | undefined;
23
+ disabled?: boolean | undefined;
24
+ value?: string | number | undefined;
25
+ }, {
26
+ default: {};
27
+ }>, {
28
+ click: CustomEvent<any>;
29
+ } & {
30
+ [evt: string]: CustomEvent<any>;
31
+ }, {
32
+ default: {};
33
+ }, {}, string>;
34
+ type $$__sveltets_2_PropsWithChildren<Props, Slots> = Props & (Slots extends {
35
+ default: any;
36
+ } ? Props extends Record<string, never> ? any : {
37
+ children?: any;
38
+ } : {});
39
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
40
+ new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
41
+ $$bindings?: Bindings;
42
+ } & Exports;
43
+ (internal: unknown, props: Props & {
44
+ $$events?: Events;
45
+ $$slots?: Slots;
46
+ }): Exports & {
47
+ $set?: any;
48
+ $on?: any;
49
+ };
50
+ z_$$bindings?: Bindings;
51
+ }
52
+ //# sourceMappingURL=TabItem.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TabItem.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/Tabs/TabItem.svelte.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AA8DA;;;;;YAjBW,MAAM,GAAC,MAAM,GAAC,SAAS;;;;;;;;;eAiBoI;sCAThI,KAAK,EAAE,KAAK;;;;;6CALL,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,OAAO,OAAO,QAAQ;IAC3L,cAAc,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,WAAW,OAAO,SAAS,KAAK,GAAG;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IAC9G,eAAe,QAAQ,CAAC"}