@getmicdrop/svelte-components 2.6.3 → 2.8.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 (153) hide show
  1. package/dist/__LIB_STORES__.js +30 -2
  2. package/dist/components/AboutShow/AboutShow.svelte +278 -0
  3. package/dist/components/AboutShow/AboutShow.svelte.d.ts +43 -0
  4. package/dist/components/AboutShow/AboutShow.svelte.d.ts.map +1 -0
  5. package/dist/components/Accordion/Accordion.svelte +44 -0
  6. package/dist/components/Accordion/Accordion.svelte.d.ts +42 -0
  7. package/dist/components/Accordion/Accordion.svelte.d.ts.map +1 -0
  8. package/dist/components/Accordion/AccordionItem.svelte +141 -0
  9. package/dist/components/Accordion/AccordionItem.svelte.d.ts +50 -0
  10. package/dist/components/Accordion/AccordionItem.svelte.d.ts.map +1 -0
  11. package/dist/components/Badges/Badge.svelte +268 -17
  12. package/dist/components/Badges/Badge.svelte.d.ts +18 -2
  13. package/dist/components/Badges/Badge.svelte.d.ts.map +1 -1
  14. package/dist/components/Breadcrumb/Breadcrumb.svelte +65 -36
  15. package/dist/components/Breadcrumb/Breadcrumb.svelte.d.ts +16 -2
  16. package/dist/components/Breadcrumb/Breadcrumb.svelte.d.ts.map +1 -1
  17. package/dist/components/Button/Button.svelte +136 -3
  18. package/dist/components/Button/Button.svelte.d.ts +2 -0
  19. package/dist/components/Button/Button.svelte.d.ts.map +1 -1
  20. package/dist/components/Calendar/MiniMonthCalendar.svelte +1446 -0
  21. package/dist/components/Calendar/{Calendar.svelte.d.ts → MiniMonthCalendar.svelte.d.ts} +20 -21
  22. package/dist/components/Calendar/MiniMonthCalendar.svelte.d.ts.map +1 -0
  23. package/dist/components/Card.svelte +2 -2
  24. package/dist/components/Card.svelte.d.ts +2 -2
  25. package/dist/components/Card.svelte.d.ts.map +1 -1
  26. package/dist/components/Checkbox/Checkbox.svelte +90 -0
  27. package/dist/components/Checkbox/Checkbox.svelte.d.ts +64 -0
  28. package/dist/components/Checkbox/Checkbox.svelte.d.ts.map +1 -0
  29. package/dist/components/DarkModeToggle.svelte +41 -52
  30. package/dist/components/DarkModeToggle.svelte.d.ts +0 -2
  31. package/dist/components/DarkModeToggle.svelte.d.ts.map +1 -1
  32. package/dist/components/Drawer/Drawer.svelte +207 -0
  33. package/dist/components/Drawer/Drawer.svelte.d.ts +74 -0
  34. package/dist/components/Drawer/Drawer.svelte.d.ts.map +1 -0
  35. package/dist/components/Dropdown/Dropdown.svelte +193 -0
  36. package/dist/components/Dropdown/Dropdown.svelte.d.ts +50 -0
  37. package/dist/components/Dropdown/Dropdown.svelte.d.ts.map +1 -0
  38. package/dist/components/Dropdown/DropdownItem.svelte +111 -0
  39. package/dist/components/Dropdown/DropdownItem.svelte.d.ts +48 -0
  40. package/dist/components/Dropdown/DropdownItem.svelte.d.ts.map +1 -0
  41. package/dist/components/Dropdown/SelectDropdown.svelte +301 -0
  42. package/dist/components/Dropdown/SelectDropdown.svelte.d.ts +51 -0
  43. package/dist/components/Dropdown/SelectDropdown.svelte.d.ts.map +1 -0
  44. package/dist/components/EmptyState/EmptyState.svelte +80 -0
  45. package/dist/components/{Calendar/QuarterView.stories.svelte.d.ts → EmptyState/EmptyState.svelte.d.ts} +17 -21
  46. package/dist/components/EmptyState/EmptyState.svelte.d.ts.map +1 -0
  47. package/dist/components/ErrorDisplay.svelte.d.ts +2 -2
  48. package/dist/components/FAQs/FAQs.svelte +49 -0
  49. package/dist/components/{Calendar/QuarterView.svelte.d.ts → FAQs/FAQs.svelte.d.ts} +10 -10
  50. package/dist/components/FAQs/FAQs.svelte.d.ts.map +1 -0
  51. package/dist/components/Input/Input.svelte +107 -12
  52. package/dist/components/Input/Input.svelte.d.ts +28 -12
  53. package/dist/components/Input/Input.svelte.d.ts.map +1 -1
  54. package/dist/components/Input/MultiSelect.svelte +4 -5
  55. package/dist/components/Input/MultiSelect.svelte.d.ts +8 -8
  56. package/dist/components/Input/MultiSelect.svelte.d.ts.map +1 -1
  57. package/dist/components/Input/OTPInput.svelte +1 -1
  58. package/dist/components/Input/Search.svelte +173 -0
  59. package/dist/components/Input/Search.svelte.d.ts +68 -0
  60. package/dist/components/Input/Search.svelte.d.ts.map +1 -0
  61. package/dist/components/Input/Select.svelte +42 -12
  62. package/dist/components/Input/Select.svelte.d.ts +8 -8
  63. package/dist/components/Input/Select.svelte.d.ts.map +1 -1
  64. package/dist/components/Input/Textarea.svelte +160 -0
  65. package/dist/components/Input/Textarea.svelte.d.ts +69 -0
  66. package/dist/components/Input/Textarea.svelte.d.ts.map +1 -0
  67. package/dist/components/Label/Label.svelte +60 -0
  68. package/dist/components/Label/Label.svelte.d.ts +48 -0
  69. package/dist/components/Label/Label.svelte.d.ts.map +1 -0
  70. package/dist/components/Layout/Header.svelte +14 -4
  71. package/dist/components/Layout/PageLayout.svelte +64 -0
  72. package/dist/components/Layout/PageLayout.svelte.d.ts +58 -0
  73. package/dist/components/Layout/PageLayout.svelte.d.ts.map +1 -0
  74. package/dist/components/Modal/ConfirmationModal.svelte +69 -17
  75. package/dist/components/Modal/ConfirmationModal.svelte.d.ts +22 -0
  76. package/dist/components/Modal/ConfirmationModal.svelte.d.ts.map +1 -1
  77. package/dist/components/Modal/InputModal.svelte +180 -0
  78. package/dist/components/Modal/InputModal.svelte.d.ts +77 -0
  79. package/dist/components/Modal/InputModal.svelte.d.ts.map +1 -0
  80. package/dist/components/Modal/Modal.svelte +34 -8
  81. package/dist/components/Modal/Modal.svelte.d.ts +2 -0
  82. package/dist/components/Modal/Modal.svelte.d.ts.map +1 -1
  83. package/dist/components/Modal/StatusModal.svelte +221 -0
  84. package/dist/components/Modal/StatusModal.svelte.d.ts +59 -0
  85. package/dist/components/Modal/StatusModal.svelte.d.ts.map +1 -0
  86. package/dist/components/MonthSwitcher/MonthSwitcher.svelte +206 -0
  87. package/dist/components/MonthSwitcher/MonthSwitcher.svelte.d.ts +37 -0
  88. package/dist/components/MonthSwitcher/MonthSwitcher.svelte.d.ts.map +1 -0
  89. package/dist/components/OrderSummary/OrderSummary.svelte +553 -0
  90. package/dist/components/OrderSummary/OrderSummary.svelte.d.ts +65 -0
  91. package/dist/components/OrderSummary/OrderSummary.svelte.d.ts.map +1 -0
  92. package/dist/components/Pagination/Pagination.svelte +197 -0
  93. package/dist/components/Pagination/Pagination.svelte.d.ts +53 -0
  94. package/dist/components/Pagination/Pagination.svelte.d.ts.map +1 -0
  95. package/dist/components/PasswordStrengthIndicator/PasswordStrengthIndicator.svelte.d.ts +2 -2
  96. package/dist/components/PublicCard/PublicCard.svelte +267 -0
  97. package/dist/components/{pages/performers/AvailabilityCalendarModal.svelte.d.ts → PublicCard/PublicCard.svelte.d.ts} +12 -14
  98. package/dist/components/PublicCard/PublicCard.svelte.d.ts.map +1 -0
  99. package/dist/components/Radio/Radio.svelte +119 -0
  100. package/dist/components/Radio/Radio.svelte.d.ts +54 -0
  101. package/dist/components/Radio/Radio.svelte.d.ts.map +1 -0
  102. package/dist/components/ShowCard/ShowCard.svelte +240 -0
  103. package/dist/components/ShowCard/ShowCard.svelte.d.ts +39 -0
  104. package/dist/components/ShowCard/ShowCard.svelte.d.ts.map +1 -0
  105. package/dist/components/ShowTimeCard/ShowTimeCard.svelte +92 -0
  106. package/dist/components/ShowTimeCard/ShowTimeCard.svelte.d.ts +37 -0
  107. package/dist/components/ShowTimeCard/ShowTimeCard.svelte.d.ts.map +1 -0
  108. package/dist/components/Skeleton/Skeleton.svelte +68 -0
  109. package/dist/components/Skeleton/Skeleton.svelte.d.ts +37 -0
  110. package/dist/components/{Calendar/QuarterView.svelte.d.ts.map → Skeleton/Skeleton.svelte.d.ts.map} +1 -1
  111. package/dist/components/Spinner/Spinner.svelte +73 -17
  112. package/dist/components/Spinner/Spinner.svelte.d.ts +5 -3
  113. package/dist/components/Spinner/Spinner.svelte.d.ts.map +1 -1
  114. package/dist/components/Tabs/TabItem.svelte +39 -0
  115. package/dist/components/Tabs/TabItem.svelte.d.ts +52 -0
  116. package/dist/components/Tabs/TabItem.svelte.d.ts.map +1 -0
  117. package/dist/components/Tabs/Tabs.svelte +181 -0
  118. package/dist/components/Tabs/Tabs.svelte.d.ts +46 -0
  119. package/dist/components/Tabs/Tabs.svelte.d.ts.map +1 -0
  120. package/dist/components/Typography/Typography.svelte +50 -0
  121. package/dist/components/Typography/Typography.svelte.d.ts +48 -0
  122. package/dist/components/Typography/Typography.svelte.d.ts.map +1 -0
  123. package/dist/components/pages/performers/ShowDetails.svelte.d.ts +4 -4
  124. package/dist/components/pages/performers/ShowItemCard.svelte.d.ts +8 -8
  125. package/dist/components/pages/performers/SwitchOption.svelte.d.ts +2 -2
  126. package/dist/components/pages/performers/VenueInfo.svelte.d.ts +2 -2
  127. package/dist/components/pages/performers/VenueItemCard.svelte +2 -2
  128. package/dist/components/pages/performers/VenueItemCard.svelte.d.ts +4 -4
  129. package/dist/components/pages/profile/profile-form.svelte +1 -1
  130. package/dist/components/pages/settings/tabs/CustomImageDropzone.svelte.d.ts +2 -2
  131. package/dist/components/pages/shows/TabNavigation.svelte +7 -8
  132. package/dist/constants/formOptions.d.ts +5 -2
  133. package/dist/constants/formOptions.d.ts.map +1 -1
  134. package/dist/constants/formOptions.js +2 -1
  135. package/dist/index.d.ts +28 -4
  136. package/dist/index.js +33 -29
  137. package/dist/services/EventService.js +75 -75
  138. package/dist/services/EventService.spec.js +217 -217
  139. package/dist/services/ShowService.spec.js +342 -342
  140. package/package.json +160 -160
  141. package/dist/components/Calendar/Calendar.spec.d.ts +0 -2
  142. package/dist/components/Calendar/Calendar.spec.d.ts.map +0 -1
  143. package/dist/components/Calendar/Calendar.spec.js +0 -131
  144. package/dist/components/Calendar/Calendar.svelte +0 -1115
  145. package/dist/components/Calendar/Calendar.svelte.d.ts.map +0 -1
  146. package/dist/components/Calendar/QuarterView.spec.d.ts +0 -2
  147. package/dist/components/Calendar/QuarterView.spec.d.ts.map +0 -1
  148. package/dist/components/Calendar/QuarterView.spec.js +0 -394
  149. package/dist/components/Calendar/QuarterView.stories.svelte +0 -134
  150. package/dist/components/Calendar/QuarterView.stories.svelte.d.ts.map +0 -1
  151. package/dist/components/Calendar/QuarterView.svelte +0 -736
  152. package/dist/components/pages/performers/AvailabilityCalendarModal.svelte +0 -632
  153. package/dist/components/pages/performers/AvailabilityCalendarModal.svelte.d.ts.map +0 -1
@@ -0,0 +1,301 @@
1
+ <script>
2
+ /**
3
+ * SelectDropdown - A self-contained dropdown with trigger button and option selection.
4
+ * Includes full keyboard navigation (Arrow keys, Home, End, Escape).
5
+ *
6
+ * @example
7
+ * <SelectDropdown
8
+ * options={[{ label: 'Option 1', value: 'opt1' }, { label: 'Option 2', value: 'opt2' }]}
9
+ * bind:selected
10
+ * placeholder="Select an option"
11
+ * on:select={(e) => console.log(e.detail)}
12
+ * />
13
+ */
14
+ import { createEventDispatcher, onMount, onDestroy, tick } from "svelte";
15
+
16
+ /** @type {Array<{label: string, value: string}>} Options to display */
17
+ export let options = [];
18
+ /** @type {{label: string, value: string}|null} Currently selected option */
19
+ export let selected = null;
20
+ /** @type {string} Placeholder text when no option is selected */
21
+ export let placeholder = "Select";
22
+ /** @type {string} Additional CSS classes for the container */
23
+ let className = "";
24
+ export { className as class };
25
+ /** @type {boolean} Whether the dropdown is disabled */
26
+ export let disabled = false;
27
+
28
+ const dispatch = createEventDispatcher();
29
+
30
+ let isOpen = false;
31
+ let triggerRef;
32
+ let menuRef;
33
+ let focusedIndex = -1;
34
+ let optionElements = [];
35
+
36
+ async function toggleDropdown() {
37
+ if (disabled) return;
38
+ isOpen = !isOpen;
39
+ if (isOpen) {
40
+ focusedIndex = -1;
41
+ await tick();
42
+ updateOptionElements();
43
+ }
44
+ }
45
+
46
+ function updateOptionElements() {
47
+ if (menuRef) {
48
+ optionElements = Array.from(menuRef.querySelectorAll('[role="option"]'));
49
+ }
50
+ }
51
+
52
+ function focusOption(index) {
53
+ if (optionElements.length === 0) return;
54
+ if (index < 0) index = optionElements.length - 1;
55
+ if (index >= optionElements.length) index = 0;
56
+ focusedIndex = index;
57
+ optionElements[focusedIndex]?.focus();
58
+ }
59
+
60
+ function selectOption(option) {
61
+ selected = option;
62
+ dispatch("select", option);
63
+ isOpen = false;
64
+ triggerRef?.focus();
65
+ }
66
+
67
+ function handleClickOutside(event) {
68
+ if (
69
+ triggerRef &&
70
+ !triggerRef.contains(event.target) &&
71
+ menuRef &&
72
+ !menuRef.contains(event.target)
73
+ ) {
74
+ isOpen = false;
75
+ }
76
+ }
77
+
78
+ function handleKeyDown(event) {
79
+ if (!isOpen) return;
80
+
81
+ // Only handle if event originated from within this dropdown
82
+ if (!menuRef?.contains(event.target) && !triggerRef?.contains(event.target)) {
83
+ return;
84
+ }
85
+
86
+ switch (event.key) {
87
+ case "Escape":
88
+ isOpen = false;
89
+ triggerRef?.focus();
90
+ event.preventDefault();
91
+ break;
92
+ case "ArrowDown":
93
+ focusOption(focusedIndex + 1);
94
+ event.preventDefault();
95
+ break;
96
+ case "ArrowUp":
97
+ focusOption(focusedIndex - 1);
98
+ event.preventDefault();
99
+ break;
100
+ case "Home":
101
+ focusOption(0);
102
+ event.preventDefault();
103
+ break;
104
+ case "End":
105
+ focusOption(optionElements.length - 1);
106
+ event.preventDefault();
107
+ break;
108
+ case "Tab":
109
+ isOpen = false;
110
+ break;
111
+ }
112
+ }
113
+
114
+ onMount(() => {
115
+ if (typeof window !== "undefined") {
116
+ window.addEventListener("click", handleClickOutside);
117
+ window.addEventListener("keydown", handleKeyDown);
118
+ }
119
+ });
120
+
121
+ onDestroy(() => {
122
+ if (typeof window !== "undefined") {
123
+ window.removeEventListener("click", handleClickOutside);
124
+ window.removeEventListener("keydown", handleKeyDown);
125
+ }
126
+ });
127
+ </script>
128
+
129
+ <div class="select-dropdown {className}">
130
+ <button
131
+ bind:this={triggerRef}
132
+ type="button"
133
+ class="select-dropdown__trigger"
134
+ class:select-dropdown__trigger--disabled={disabled}
135
+ on:click|preventDefault={toggleDropdown}
136
+ aria-haspopup="listbox"
137
+ aria-expanded={isOpen}
138
+ aria-label={placeholder}
139
+ {disabled}
140
+ >
141
+ <span class="select-dropdown__value">
142
+ {selected?.label || placeholder}
143
+ </span>
144
+ <svg
145
+ class="select-dropdown__icon"
146
+ class:select-dropdown__icon--open={isOpen}
147
+ fill="none"
148
+ stroke="currentColor"
149
+ viewBox="0 0 24 24"
150
+ xmlns="http://www.w3.org/2000/svg"
151
+ >
152
+ <path
153
+ stroke-linecap="round"
154
+ stroke-linejoin="round"
155
+ stroke-width="2"
156
+ d="M19 9l-7 7-7-7"
157
+ />
158
+ </svg>
159
+ </button>
160
+
161
+ {#if isOpen}
162
+ <div
163
+ bind:this={menuRef}
164
+ class="select-dropdown__menu"
165
+ role="listbox"
166
+ aria-label={placeholder}
167
+ >
168
+ {#each options as option}
169
+ <button
170
+ type="button"
171
+ class="select-dropdown__option"
172
+ class:select-dropdown__option--selected={selected?.value === option.value}
173
+ on:click|preventDefault={() => selectOption(option)}
174
+ role="option"
175
+ aria-selected={selected?.value === option.value}
176
+ >
177
+ {option.label}
178
+ </button>
179
+ {/each}
180
+ </div>
181
+ {/if}
182
+ </div>
183
+
184
+ <style>
185
+ .select-dropdown {
186
+ position: relative;
187
+ display: inline-block;
188
+ font-size: 0.75rem;
189
+ }
190
+
191
+ .select-dropdown__trigger {
192
+ display: flex;
193
+ align-items: center;
194
+ padding: 0.5rem 1rem;
195
+ text-align: left;
196
+ background-color: hsl(var(--BG-Primary, 0 0% 100%));
197
+ color: hsl(var(--Text-Primary, 220 13% 13%));
198
+ border: 1px solid hsl(var(--Stroke-Primary, 220 13% 85%));
199
+ border-radius: 0.375rem;
200
+ box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
201
+ cursor: pointer;
202
+ transition: border-color 0.15s ease, box-shadow 0.15s ease;
203
+ }
204
+
205
+ .select-dropdown__trigger:hover:not(:disabled) {
206
+ border-color: hsl(var(--Stroke-Secondary, 220 13% 75%));
207
+ }
208
+
209
+ .select-dropdown__trigger:focus {
210
+ outline: none;
211
+ border-color: hsl(var(--Brand-Primary, 221 83% 53%));
212
+ box-shadow: 0 0 0 2px hsl(var(--Brand-Primary, 221 83% 53%) / 0.2);
213
+ }
214
+
215
+ .select-dropdown__trigger--disabled {
216
+ opacity: 0.5;
217
+ cursor: not-allowed;
218
+ }
219
+
220
+ .select-dropdown__value {
221
+ flex: 1;
222
+ }
223
+
224
+ .select-dropdown__icon {
225
+ width: 1rem;
226
+ height: 1rem;
227
+ margin-left: 0.5rem;
228
+ transition: transform 0.15s ease;
229
+ }
230
+
231
+ .select-dropdown__icon--open {
232
+ transform: rotate(180deg);
233
+ }
234
+
235
+ .select-dropdown__menu {
236
+ position: absolute;
237
+ top: 100%;
238
+ left: 0;
239
+ z-index: 50;
240
+ display: flex;
241
+ flex-direction: column;
242
+ min-width: 100%;
243
+ margin-top: 0.25rem;
244
+ background-color: hsl(var(--BG-Primary, 0 0% 100%));
245
+ border: 1px solid hsl(var(--Stroke-Primary, 220 13% 85%));
246
+ border-radius: 0.375rem;
247
+ box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
248
+ max-height: 200px;
249
+ overflow-y: auto;
250
+ }
251
+
252
+ .select-dropdown__menu::-webkit-scrollbar {
253
+ display: none;
254
+ }
255
+
256
+ .select-dropdown__option {
257
+ width: 100%;
258
+ padding: 0.5rem 1rem;
259
+ text-align: left;
260
+ background: transparent;
261
+ border: none;
262
+ color: hsl(var(--Text-Primary, 220 13% 13%));
263
+ cursor: pointer;
264
+ transition: background-color 0.15s ease;
265
+ }
266
+
267
+ .select-dropdown__option:hover {
268
+ background-color: hsl(var(--BG-Secondary, 220 14% 96%));
269
+ }
270
+
271
+ .select-dropdown__option:focus {
272
+ outline: none;
273
+ background-color: hsl(var(--BG-Secondary, 220 14% 96%));
274
+ }
275
+
276
+ .select-dropdown__option--selected {
277
+ background-color: hsl(var(--Brand-Primary, 221 83% 53%) / 0.1);
278
+ color: hsl(var(--Brand-Primary, 221 83% 53%));
279
+ }
280
+
281
+ /* Dark mode */
282
+ :global(.dark) .select-dropdown__trigger {
283
+ background-color: hsl(var(--BG-Primary, 220 13% 15%));
284
+ color: hsl(var(--Text-Primary, 0 0% 95%));
285
+ border-color: hsl(var(--Stroke-Primary, 220 13% 30%));
286
+ }
287
+
288
+ :global(.dark) .select-dropdown__menu {
289
+ background-color: hsl(var(--BG-Primary, 220 13% 15%));
290
+ border-color: hsl(var(--Stroke-Primary, 220 13% 30%));
291
+ }
292
+
293
+ :global(.dark) .select-dropdown__option {
294
+ color: hsl(var(--Text-Primary, 0 0% 95%));
295
+ }
296
+
297
+ :global(.dark) .select-dropdown__option:hover,
298
+ :global(.dark) .select-dropdown__option:focus {
299
+ background-color: hsl(var(--BG-Secondary, 220 13% 20%));
300
+ }
301
+ </style>
@@ -0,0 +1,51 @@
1
+ export default SelectDropdown;
2
+ type SelectDropdown = SvelteComponent<{
3
+ class?: string | undefined;
4
+ disabled?: boolean | undefined;
5
+ options?: {
6
+ label: string;
7
+ value: string;
8
+ }[] | undefined;
9
+ selected?: {
10
+ label: string;
11
+ value: string;
12
+ } | null | undefined;
13
+ placeholder?: string | undefined;
14
+ }, {
15
+ select: CustomEvent<any>;
16
+ } & {
17
+ [evt: string]: CustomEvent<any>;
18
+ }, {}> & {
19
+ $$bindings?: string | undefined;
20
+ };
21
+ declare const SelectDropdown: $$__sveltets_2_IsomorphicComponent<{
22
+ class?: string | undefined;
23
+ disabled?: boolean | undefined;
24
+ options?: {
25
+ label: string;
26
+ value: string;
27
+ }[] | undefined;
28
+ selected?: {
29
+ label: string;
30
+ value: string;
31
+ } | null | undefined;
32
+ placeholder?: string | undefined;
33
+ }, {
34
+ select: CustomEvent<any>;
35
+ } & {
36
+ [evt: string]: CustomEvent<any>;
37
+ }, {}, {}, string>;
38
+ 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> {
39
+ new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
40
+ $$bindings?: Bindings;
41
+ } & Exports;
42
+ (internal: unknown, props: Props & {
43
+ $$events?: Events;
44
+ $$slots?: Slots;
45
+ }): Exports & {
46
+ $set?: any;
47
+ $on?: any;
48
+ };
49
+ z_$$bindings?: Bindings;
50
+ }
51
+ //# sourceMappingURL=SelectDropdown.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectDropdown.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/Dropdown/SelectDropdown.svelte.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AA6KA;;;;eAdyB,MAAM;eAAS,MAAM;;;eAC3B,MAAM;eAAS,MAAM;;;;;;;mBAa2I;6CATtI,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,80 @@
1
+ <script>
2
+ /**
3
+ * EmptyState - Display an empty state message with optional icon
4
+ *
5
+ * @example
6
+ * <EmptyState message="No results found" />
7
+ * <EmptyState message="No events" subtext="Create your first event to get started" />
8
+ */
9
+
10
+ /** @type {string} Main message to display */
11
+ export let message = 'No results found';
12
+ /** @type {string} Secondary descriptive text */
13
+ export let subtext = '';
14
+ /** @type {any} Icon component or image path */
15
+ export let icon = null;
16
+ /** @type {'component' | 'image'} Type of icon provided */
17
+ export let iconType = 'component';
18
+ /** @type {string} Size classes for the icon */
19
+ export let iconSize = 'w-20 h-20';
20
+ /** @type {string} Additional CSS classes */
21
+ let className = '';
22
+ export { className as class };
23
+ </script>
24
+
25
+ <div class="empty-state {className}">
26
+ {#if icon}
27
+ {#if iconType === 'component'}
28
+ <svelte:component this={icon} class="empty-state__icon {iconSize}" />
29
+ {:else if iconType === 'image'}
30
+ <img src={icon} alt="" class="empty-state__icon {iconSize}" />
31
+ {/if}
32
+ {/if}
33
+
34
+ <h3 class="empty-state__message">{message}</h3>
35
+ {#if subtext}
36
+ <p class="empty-state__subtext">{subtext}</p>
37
+ {/if}
38
+ </div>
39
+
40
+ <style>
41
+ .empty-state {
42
+ display: flex;
43
+ flex-direction: column;
44
+ align-items: center;
45
+ justify-content: center;
46
+ padding: 2.5rem 1.5rem;
47
+ text-align: center;
48
+ }
49
+
50
+ .empty-state__icon {
51
+ margin-bottom: 0.75rem;
52
+ color: hsl(var(--Text-Tertiary, 220 9% 46%));
53
+ }
54
+
55
+ .empty-state__message {
56
+ font-size: 1.125rem;
57
+ font-weight: 600;
58
+ color: hsl(var(--Text-Primary, 220 13% 18%));
59
+ margin: 0;
60
+ }
61
+
62
+ .empty-state__subtext {
63
+ font-size: 0.875rem;
64
+ color: hsl(var(--Text-Secondary, 220 9% 46%));
65
+ margin: 0.25rem 0 0;
66
+ }
67
+
68
+ /* Dark mode */
69
+ :global(.dark) .empty-state__icon {
70
+ color: hsl(var(--Text-Tertiary, 220 9% 60%));
71
+ }
72
+
73
+ :global(.dark) .empty-state__message {
74
+ color: hsl(var(--Text-Primary, 0 0% 95%));
75
+ }
76
+
77
+ :global(.dark) .empty-state__subtext {
78
+ color: hsl(var(--Text-Secondary, 220 9% 70%));
79
+ }
80
+ </style>
@@ -1,35 +1,31 @@
1
- export namespace meta {
2
- export let title: string;
3
- export { QuarterView as component };
4
- export namespace argTypes {
5
- namespace currentevents {
6
- let control: string;
7
- }
8
- namespace selectedDates {
9
- let control_1: string;
10
- export { control_1 as control };
11
- }
12
- }
13
- }
14
- export default QuarterView;
15
- type QuarterView = SvelteComponent<{
16
- [x: string]: never;
1
+ export default EmptyState;
2
+ type EmptyState = SvelteComponent<{
3
+ class?: string | undefined;
4
+ message?: string | undefined;
5
+ icon?: any;
6
+ subtext?: string | undefined;
7
+ iconType?: "image" | "component" | undefined;
8
+ iconSize?: string | undefined;
17
9
  }, {
18
10
  [evt: string]: CustomEvent<any>;
19
11
  }, {}> & {
20
12
  $$bindings?: string | undefined;
21
13
  };
22
- declare const QuarterView: $$__sveltets_2_IsomorphicComponent<{
23
- [x: string]: never;
14
+ declare const EmptyState: $$__sveltets_2_IsomorphicComponent<{
15
+ class?: string | undefined;
16
+ message?: string | undefined;
17
+ icon?: any;
18
+ subtext?: string | undefined;
19
+ iconType?: "image" | "component" | undefined;
20
+ iconSize?: string | undefined;
24
21
  }, {
25
22
  [evt: string]: CustomEvent<any>;
26
23
  }, {}, {}, string>;
27
- import QuarterView from "./QuarterView.svelte";
28
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> {
29
25
  new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
30
26
  $$bindings?: Bindings;
31
27
  } & Exports;
32
- (internal: unknown, props: {
28
+ (internal: unknown, props: Props & {
33
29
  $$events?: Events;
34
30
  $$slots?: Slots;
35
31
  }): Exports & {
@@ -38,4 +34,4 @@ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> =
38
34
  };
39
35
  z_$$bindings?: Bindings;
40
36
  }
41
- //# sourceMappingURL=QuarterView.stories.svelte.d.ts.map
37
+ //# sourceMappingURL=EmptyState.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmptyState.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/EmptyState/EmptyState.svelte.js"],"names":[],"mappings":";;;;;;;;;;;;;AA6DA;;;WAbW,GAAG;;;;;;mBAaoK;6CATrI,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"}
@@ -3,9 +3,9 @@ type ErrorDisplay = SvelteComponent<{
3
3
  className?: string | undefined;
4
4
  error?: string | undefined;
5
5
  show?: boolean | undefined;
6
- shake?: boolean | undefined;
7
6
  icon?: string | undefined;
8
7
  iconSize?: string | undefined;
8
+ shake?: boolean | undefined;
9
9
  }, {
10
10
  [evt: string]: CustomEvent<any>;
11
11
  }, {}> & {
@@ -15,9 +15,9 @@ declare const ErrorDisplay: $$__sveltets_2_IsomorphicComponent<{
15
15
  className?: string | undefined;
16
16
  error?: string | undefined;
17
17
  show?: boolean | undefined;
18
- shake?: boolean | undefined;
19
18
  icon?: string | undefined;
20
19
  iconSize?: string | undefined;
20
+ shake?: boolean | undefined;
21
21
  }, {
22
22
  [evt: string]: CustomEvent<any>;
23
23
  }, {}, {}, string>;
@@ -0,0 +1,49 @@
1
+ <script>
2
+ export let faqs = [];
3
+ export let title = "FAQs";
4
+ export let showTitle = true;
5
+
6
+ $: items = faqs.map(f =>
7
+ typeof f === 'string' ? { question: '', answer: f } : f
8
+ );
9
+ </script>
10
+
11
+ <div class="flex flex-col gap-3">
12
+ {#if showTitle}
13
+ <h2 class="section-title font-medium text-xl">{title}</h2>
14
+ {/if}
15
+
16
+ {#if items.length}
17
+ <div class="space-y-4">
18
+ {#each items as { question, answer }}
19
+ <div>
20
+ {#if question}
21
+ <p class="question-text text-[15px] font-medium mb-1">{question}</p>
22
+ {/if}
23
+ <p class="answer-text text-[15px] leading-relaxed">{answer}</p>
24
+ </div>
25
+ {/each}
26
+ </div>
27
+ {:else}
28
+ <p class="empty-text text-sm">No FAQs available.</p>
29
+ {/if}
30
+ </div>
31
+
32
+ <style>
33
+ /* Theme-responsive colors using CSS variables */
34
+ .section-title {
35
+ color: hsl(var(--Text-Primary));
36
+ }
37
+
38
+ .question-text {
39
+ color: hsl(var(--Text-Primary));
40
+ }
41
+
42
+ .answer-text {
43
+ color: hsl(var(--Text-Secondary));
44
+ }
45
+
46
+ .empty-text {
47
+ color: hsl(var(--Text-Tartiary));
48
+ }
49
+ </style>
@@ -1,17 +1,17 @@
1
- export default QuarterView;
2
- type QuarterView = SvelteComponent<{
3
- selectedDates: any;
4
- saveStatus?: string | undefined;
5
- currentevents?: any[] | undefined;
1
+ export default FAQs;
2
+ type FAQs = SvelteComponent<{
3
+ title?: string | undefined;
4
+ showTitle?: boolean | undefined;
5
+ faqs?: any[] | undefined;
6
6
  }, {
7
7
  [evt: string]: CustomEvent<any>;
8
8
  }, {}> & {
9
9
  $$bindings?: string | undefined;
10
10
  };
11
- declare const QuarterView: $$__sveltets_2_IsomorphicComponent<{
12
- selectedDates: any;
13
- saveStatus?: string | undefined;
14
- currentevents?: any[] | undefined;
11
+ declare const FAQs: $$__sveltets_2_IsomorphicComponent<{
12
+ title?: string | undefined;
13
+ showTitle?: boolean | undefined;
14
+ faqs?: any[] | undefined;
15
15
  }, {
16
16
  [evt: string]: CustomEvent<any>;
17
17
  }, {}, {}, string>;
@@ -28,4 +28,4 @@ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> =
28
28
  };
29
29
  z_$$bindings?: Bindings;
30
30
  }
31
- //# sourceMappingURL=QuarterView.svelte.d.ts.map
31
+ //# sourceMappingURL=FAQs.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FAQs.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/FAQs/FAQs.svelte.js"],"names":[],"mappings":";;;;;;;;;;AA+CA;;;;;;mBAA8I;6CATjG,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"}