@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
@@ -1,6 +1,7 @@
1
1
  <script>
2
2
  import { slide } from "svelte/transition";
3
3
  import { cubicOut } from "svelte/easing";
4
+ import { createEventDispatcher, onDestroy } from "svelte";
4
5
  import WarningIcon from "../Icons/WarningIcon.svelte";
5
6
 
6
7
  export let required = false;
@@ -41,8 +42,16 @@
41
42
  export let showErrors = false; // Show errors immediately (bypass touched requirement)
42
43
  export let disableBuiltInValidation = false; // When true, disables the built-in blur validation (use for custom validation)
43
44
 
45
+ // Instant search props
46
+ export let instantSearch = false; // Enable search-as-you-type with debouncing
47
+ export let debounceMs = 250; // Debounce delay for instant search
48
+ export let minSearchChars = 2; // Minimum characters before search triggers
49
+ export let showClearButton = false; // Show clear (X) button when input has value
50
+
44
51
  let inputValue = value;
45
52
  let inputElement;
53
+ let debounceTimer;
54
+ const dispatch = createEventDispatcher();
46
55
 
47
56
  // Derive inputmode from type if not explicitly set
48
57
  $: computedInputmode = inputmode || getInputmodeFromType(type);
@@ -163,8 +172,56 @@
163
172
 
164
173
  // Update exported value for parent bind:value
165
174
  value = inputValue;
175
+
176
+ // Instant search functionality
177
+ if (instantSearch) {
178
+ clearTimeout(debounceTimer);
179
+
180
+ // Dispatch immediately if cleared
181
+ if (inputValue.length === 0) {
182
+ dispatch('search', { query: '' });
183
+ return;
184
+ }
185
+
186
+ // Only search if we have enough characters
187
+ if (inputValue.length >= minSearchChars) {
188
+ debounceTimer = setTimeout(() => {
189
+ dispatch('search', { query: inputValue });
190
+ }, debounceMs);
191
+ }
192
+ }
166
193
  };
167
194
 
195
+ // Clear input (for instant search clear button)
196
+ function clearInput() {
197
+ inputValue = '';
198
+ value = '';
199
+ clearTimeout(debounceTimer);
200
+ if (instantSearch) {
201
+ dispatch('search', { query: '' });
202
+ }
203
+ if (inputElement) {
204
+ inputElement.focus();
205
+ }
206
+ }
207
+
208
+ // Handle keyboard shortcuts for instant search
209
+ function handleSearchKeyDown(event) {
210
+ if (instantSearch) {
211
+ if (event.key === 'Enter') {
212
+ clearTimeout(debounceTimer);
213
+ dispatch('search', { query: inputValue });
214
+ }
215
+ if (event.key === 'Escape') {
216
+ clearInput();
217
+ }
218
+ }
219
+ }
220
+
221
+ onDestroy(() => {
222
+ clearTimeout(debounceTimer);
223
+ });
224
+
168
225
  const isStrongPassword = (password) => {
169
226
  const minLength = 8;
170
227
  const hasUpperCase = /[A-Z]/.test(password);
@@ -230,6 +287,7 @@
230
287
  const getSizeClass = () => {
231
288
  switch (size) {
232
289
  case "full":
290
+ case "lg":
233
291
  return "w-full";
234
292
  case "large":
235
293
  return "w-96";
@@ -399,7 +457,12 @@
399
457
  </div>
400
458
  {:else}
401
459
  <!-- Standard Input Layout -->
402
- <div class="flex items-center">
460
+ <div class="relative flex items-center w-full">
461
+ {#if $$slots.leftIcon}
462
+ <div class="absolute left-3 top-1/2 transform -translate-y-1/2 text-gray-400 z-10 pointer-events-none">
463
+ <slot name="leftIcon" />
464
+ </div>
465
+ {/if}
403
466
  <input
404
467
  bind:this={inputElement}
405
468
  {id}
@@ -411,13 +474,15 @@
411
474
  on:change={checkForAutofill}
412
475
  on:animationstart={handleAnimationStart}
413
476
  on:blur={handleBlur}
477
+ on:keydown={handleSearchKeyDown}
414
478
  {maxlength}
415
479
  {minlength}
416
- class="input-field {icon
480
+ class="input-field flex-1 {icon || (showClearButton && inputValue)
417
481
  ? 'pr-10'
418
482
  : ''} {getContentFloatClass()} {displayErrorText
419
483
  ? 'input-error'
420
484
  : ''} {getSizeClass()} {shouldAnimate ? 'input-animate-focus' : ''} {className}"
485
+ style={$$slots.leftIcon ? 'padding-left: 2.5rem;' : ''}
421
486
  required={false}
422
487
  {disabled}
423
488
  {readonly}
@@ -426,7 +491,26 @@
426
491
  {autofocus}
427
492
  inputmode={computedInputmode}
428
493
  />
429
- {#if controlled && (buttonIcon || buttonText)}
494
+ {#if showClearButton && inputValue}
495
+ <button
496
+ type="button"
497
+ on:click={clearInput}
498
+ class="absolute right-2 top-1/2 -translate-y-1/2 flex items-center justify-center p-1 input-clear-button"
499
+ aria-label="Clear input"
500
+ tabindex="-1"
501
+ >
502
+ <svg
503
+ xmlns="http://www.w3.org/2000/svg"
504
+ viewBox="0 0 20 20"
505
+ fill="currentColor"
506
+ class="w-4 h-4"
507
+ >
508
+ <path
509
+ d="M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z"
510
+ />
511
+ </svg>
512
+ </button>
513
+ {:else if controlled && (buttonIcon || buttonText)}
430
514
  <button
431
515
  type="button"
432
516
  on:click={handleButtonClick}
@@ -447,6 +531,13 @@
447
531
  {/if}
448
532
  </button>
449
533
  {/if}
534
+ {#if icon && type !== "textarea" && !(showClearButton && inputValue)}
535
+ <img
536
+ src={icon}
537
+ alt="Input icon"
538
+ class="absolute inset-y-0 right-0 w-5 h-5 mr-3 top-1/2 transform -translate-y-1/2 text-Text-Primary"
539
+ />
540
+ {/if}
450
541
  </div>
451
542
  {/if}
452
543
 
@@ -467,17 +558,9 @@
467
558
  {#if helperIcon || hintIcon}
468
559
  <img src={helperIcon || hintIcon} alt="Helper icon" class="w-4 h-4 mr-2" />
469
560
  {/if}
470
- <span>{helperText || hintText}</span>
561
+ <span>{@html helperText || hintText}</span>
471
562
  </div>
472
563
  {/if}
473
-
474
- {#if icon && type !== "textarea"}
475
- <img
476
- src={icon}
477
- alt="Input icon"
478
- class="absolute inset-y-0 right-0 w-5 h-5 mr-3 top-1/2 transform -translate-y-1/2 text-Text-Primary"
479
- />
480
- {/if}
481
564
  </div>
482
565
  </div>
483
566
 
@@ -549,6 +632,18 @@
549
632
  cursor: not-allowed;
550
633
  }
551
634
 
635
+ .input-clear-button {
636
+ color: var(--input-text-placeholder);
637
+ background: transparent;
638
+ border: none;
639
+ cursor: pointer;
640
+ transition: color 0.15s ease;
641
+ }
642
+
643
+ .input-clear-button:hover {
644
+ color: var(--input-text);
645
+ }
646
+
552
647
  .input-field {
553
648
  padding: 0.25rem 0.625rem;
554
649
  height: 40px;
@@ -4,17 +4,18 @@ type Input = SvelteComponent<{
4
4
  size?: string | undefined;
5
5
  className?: string | undefined;
6
6
  disabled?: boolean | undefined;
7
- label?: string | undefined;
8
- name?: string | undefined;
9
7
  icon?: null | undefined;
8
+ value?: string | undefined;
9
+ name?: string | undefined;
10
+ label?: string | undefined;
11
+ id?: string | undefined;
12
+ placeholder?: string | undefined;
10
13
  required?: boolean | undefined;
11
14
  optional?: boolean | undefined;
12
15
  buttonIcon?: null | undefined;
13
16
  buttonText?: null | undefined;
14
17
  maxlength?: null | undefined;
15
18
  minlength?: null | undefined;
16
- placeholder?: string | undefined;
17
- id?: string | undefined;
18
19
  textareaSize?: string | undefined;
19
20
  errorText?: string | undefined;
20
21
  helperText?: string | undefined;
@@ -25,7 +26,6 @@ type Input = SvelteComponent<{
25
26
  readonly?: boolean | undefined;
26
27
  controlled?: boolean | undefined;
27
28
  onButtonClick?: null | undefined;
28
- value?: string | undefined;
29
29
  autocomplete?: null | undefined;
30
30
  autofocus?: boolean | undefined;
31
31
  showPasswordToggle?: boolean | undefined;
@@ -36,9 +36,17 @@ type Input = SvelteComponent<{
36
36
  inputmode?: null | undefined;
37
37
  showErrors?: boolean | undefined;
38
38
  disableBuiltInValidation?: boolean | undefined;
39
+ instantSearch?: boolean | undefined;
40
+ debounceMs?: number | undefined;
41
+ minSearchChars?: number | undefined;
42
+ showClearButton?: boolean | undefined;
39
43
  }, {
44
+ search: CustomEvent<any>;
45
+ } & {
40
46
  [evt: string]: CustomEvent<any>;
41
- }, {}> & {
47
+ }, {
48
+ leftIcon: {};
49
+ }> & {
42
50
  $$bindings?: string | undefined;
43
51
  };
44
52
  declare const Input: $$__sveltets_2_IsomorphicComponent<{
@@ -46,17 +54,18 @@ declare const Input: $$__sveltets_2_IsomorphicComponent<{
46
54
  size?: string | undefined;
47
55
  className?: string | undefined;
48
56
  disabled?: boolean | undefined;
49
- label?: string | undefined;
50
- name?: string | undefined;
51
57
  icon?: null | undefined;
58
+ value?: string | undefined;
59
+ name?: string | undefined;
60
+ label?: string | undefined;
61
+ id?: string | undefined;
62
+ placeholder?: string | undefined;
52
63
  required?: boolean | undefined;
53
64
  optional?: boolean | undefined;
54
65
  buttonIcon?: null | undefined;
55
66
  buttonText?: null | undefined;
56
67
  maxlength?: null | undefined;
57
68
  minlength?: null | undefined;
58
- placeholder?: string | undefined;
59
- id?: string | undefined;
60
69
  textareaSize?: string | undefined;
61
70
  errorText?: string | undefined;
62
71
  helperText?: string | undefined;
@@ -67,7 +76,6 @@ declare const Input: $$__sveltets_2_IsomorphicComponent<{
67
76
  readonly?: boolean | undefined;
68
77
  controlled?: boolean | undefined;
69
78
  onButtonClick?: null | undefined;
70
- value?: string | undefined;
71
79
  autocomplete?: null | undefined;
72
80
  autofocus?: boolean | undefined;
73
81
  showPasswordToggle?: boolean | undefined;
@@ -78,9 +86,17 @@ declare const Input: $$__sveltets_2_IsomorphicComponent<{
78
86
  inputmode?: null | undefined;
79
87
  showErrors?: boolean | undefined;
80
88
  disableBuiltInValidation?: boolean | undefined;
89
+ instantSearch?: boolean | undefined;
90
+ debounceMs?: number | undefined;
91
+ minSearchChars?: number | undefined;
92
+ showClearButton?: boolean | undefined;
81
93
  }, {
94
+ search: CustomEvent<any>;
95
+ } & {
82
96
  [evt: string]: CustomEvent<any>;
83
- }, {}, {}, string>;
97
+ }, {
98
+ leftIcon: {};
99
+ }, {}, string>;
84
100
  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> {
85
101
  new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
86
102
  $$bindings?: Bindings;
@@ -1 +1 @@
1
- {"version":3,"file":"Input.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/Input/Input.svelte.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyYA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAAkjB;6CATrgB,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":"Input.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/Input/Input.svelte.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmdA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAAwnB;6CAd3kB,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,5 +1,5 @@
1
1
  <script>
2
- import { createEventDispatcher, onMount, onDestroy } from "svelte";
2
+ import { createEventDispatcher, onMount } from "svelte";
3
3
 
4
4
  const dispatch = createEventDispatcher();
5
5
 
@@ -117,10 +117,9 @@
117
117
 
118
118
  onMount(() => {
119
119
  document.addEventListener("click", handleClickOutside);
120
- });
121
-
122
- onDestroy(() => {
123
- document.removeEventListener("click", handleClickOutside);
120
+ return () => {
121
+ document.removeEventListener("click", handleClickOutside);
122
+ };
124
123
  });
125
124
  </script>
126
125
 
@@ -2,12 +2,12 @@ export default MultiSelect;
2
2
  type MultiSelect = SvelteComponent<{
3
3
  error?: string | undefined;
4
4
  disabled?: boolean | undefined;
5
- label?: string | undefined;
5
+ value?: any[] | undefined;
6
6
  name?: string | undefined;
7
- required?: boolean | undefined;
8
- placeholder?: string | undefined;
7
+ label?: string | undefined;
9
8
  id?: string | undefined;
10
- value?: any[] | undefined;
9
+ placeholder?: string | undefined;
10
+ required?: boolean | undefined;
11
11
  animateFocus?: boolean | undefined;
12
12
  items?: any[] | undefined;
13
13
  hideClear?: boolean | undefined;
@@ -21,12 +21,12 @@ type MultiSelect = SvelteComponent<{
21
21
  declare const MultiSelect: $$__sveltets_2_IsomorphicComponent<{
22
22
  error?: string | undefined;
23
23
  disabled?: boolean | undefined;
24
- label?: string | undefined;
24
+ value?: any[] | undefined;
25
25
  name?: string | undefined;
26
- required?: boolean | undefined;
27
- placeholder?: string | undefined;
26
+ label?: string | undefined;
28
27
  id?: string | undefined;
29
- value?: any[] | undefined;
28
+ placeholder?: string | undefined;
29
+ required?: boolean | undefined;
30
30
  animateFocus?: boolean | undefined;
31
31
  items?: any[] | undefined;
32
32
  hideClear?: boolean | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"MultiSelect.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/Input/MultiSelect.svelte.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAuNA;;;;;;;;;;;;;;;;mBAAqO;6CATxL,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":"MultiSelect.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/Input/MultiSelect.svelte.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAsNA;;;;;;;;;;;;;;;;mBAAqO;6CATxL,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"}
@@ -89,7 +89,7 @@
89
89
  {disabled}
90
90
  aria-label="Digit {index + 1} of {length}"
91
91
  aria-describedby="otp-instructions"
92
- class="otp-input w-12 h-12 md:w-14 md:h-14 text-center text-xl md:text-2xl text-Text-Primary font-semibold border-2 border-stroke-Primary rounded-xl focus:border-primary-700 focus:outline-none transition-colors bg-BG-Primary disabled:bg-BG-Secondary disabled:cursor-not-allowed"
92
+ class="otp-input w-12 h-12 md:w-14 md:h-14 text-center text-xl md:text-2xl text-text-primary font-semibold border-2 border-stroke-secondary rounded-xl focus:border-brand-primary focus:outline-none transition-colors bg-bg-tertiary disabled:bg-bg-quaternary disabled:cursor-not-allowed"
93
93
  on:input={(e) => handleInput(index, e)}
94
94
  on:keydown={(e) => handleKeyDown(index, e)}
95
95
  on:paste={handlePaste}
@@ -0,0 +1,173 @@
1
+ <script>
2
+ import { createEventDispatcher } from "svelte";
3
+
4
+ const dispatch = createEventDispatcher();
5
+
6
+ // API compatible with flowbite-svelte Search
7
+ export let value = "";
8
+ export let placeholder = "Search";
9
+ export let size = "lg"; // sm, md, lg
10
+ export let disabled = false;
11
+ export let id = "";
12
+ export let name = "";
13
+
14
+ // Additional props
15
+ let className = "";
16
+ export { className as class };
17
+
18
+ const sizes = {
19
+ sm: { icon: "w-3.5 h-3.5", input: "h-8 text-xs pl-8", wrapper: "h-8" },
20
+ md: { icon: "w-4 h-4", input: "h-10 text-sm pl-9", wrapper: "h-10" },
21
+ lg: { icon: "w-5 h-5", input: "h-11 text-sm pl-10", wrapper: "h-11" }
22
+ };
23
+
24
+ $: sizeConfig = sizes[size] || sizes.lg;
25
+
26
+ function handleInput(event) {
27
+ value = event.target.value;
28
+ dispatch("input", event);
29
+ }
30
+
31
+ function handleChange(event) {
32
+ dispatch("change", event);
33
+ }
34
+
35
+ function handleKeydown(event) {
36
+ dispatch("keydown", event);
37
+ }
38
+
39
+ function handleKeyup(event) {
40
+ dispatch("keyup", event);
41
+ }
42
+
43
+ function handleFocus(event) {
44
+ dispatch("focus", event);
45
+ }
46
+
47
+ function handleBlur(event) {
48
+ dispatch("blur", event);
49
+ }
50
+ </script>
51
+
52
+ <div class="search-wrapper {sizeConfig.wrapper} {className}">
53
+ <div class="search-icon-wrapper">
54
+ <svg
55
+ class="search-icon {sizeConfig.icon}"
56
+ fill="currentColor"
57
+ viewBox="0 0 20 20"
58
+ xmlns="http://www.w3.org/2000/svg"
59
+ >
60
+ <path
61
+ fill-rule="evenodd"
62
+ d="M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z"
63
+ clip-rule="evenodd"
64
+ />
65
+ </svg>
66
+ </div>
67
+ <input
68
+ type="search"
69
+ {id}
70
+ {name}
71
+ {placeholder}
72
+ {disabled}
73
+ class="search-input {sizeConfig.input}"
74
+ bind:value
75
+ on:input={handleInput}
76
+ on:change={handleChange}
77
+ on:keydown={handleKeydown}
78
+ on:keyup={handleKeyup}
79
+ on:focus={handleFocus}
80
+ on:blur={handleBlur}
81
+ {...$$restProps}
82
+ />
83
+ {#if $$slots.default}
84
+ <div class="search-actions">
85
+ <slot />
86
+ </div>
87
+ {/if}
88
+ </div>
89
+
90
+ <style>
91
+ .search-wrapper {
92
+ --search-bg: #f9fafb;
93
+ --search-text: #0d1526;
94
+ --search-text-placeholder: #6b7280;
95
+ --search-border: #e5e7eb;
96
+ --search-focus-ring: #3b82f6;
97
+ --search-icon-color: #6b7280;
98
+ position: relative;
99
+ width: 100%;
100
+ }
101
+
102
+ .search-icon-wrapper {
103
+ position: absolute;
104
+ inset-y: 0;
105
+ left: 0;
106
+ display: flex;
107
+ align-items: center;
108
+ padding-left: 0.75rem;
109
+ pointer-events: none;
110
+ }
111
+
112
+ .search-icon {
113
+ color: var(--search-icon-color);
114
+ }
115
+
116
+ .search-input {
117
+ width: 100%;
118
+ padding-right: 0.75rem;
119
+ background-color: var(--search-bg);
120
+ color: var(--search-text);
121
+ font-weight: 500;
122
+ border: 1px solid var(--search-border);
123
+ border-radius: 0.5rem;
124
+ transition: border-color 0.15s ease, box-shadow 0.15s ease;
125
+ }
126
+
127
+ .search-input:focus {
128
+ outline: none;
129
+ box-shadow: 0 0 0 2px var(--search-focus-ring);
130
+ border-color: var(--search-focus-ring);
131
+ }
132
+
133
+ .search-input:hover:not(:focus):not(:disabled) {
134
+ border-color: var(--search-focus-ring);
135
+ }
136
+
137
+ .search-input:disabled {
138
+ opacity: 0.5;
139
+ cursor: not-allowed;
140
+ }
141
+
142
+ .search-input::-moz-placeholder {
143
+ color: var(--search-text-placeholder);
144
+ }
145
+
146
+ .search-input::placeholder {
147
+ color: var(--search-text-placeholder);
148
+ }
149
+
150
+ /* Hide browser's default clear button on search inputs */
151
+ .search-input::-webkit-search-cancel-button {
152
+ -webkit-appearance: none;
153
+ appearance: none;
154
+ }
155
+
156
+ .search-actions {
157
+ position: absolute;
158
+ inset-y: 0;
159
+ right: 0;
160
+ display: flex;
161
+ align-items: center;
162
+ color: var(--search-icon-color);
163
+ }
164
+
165
+ /* Dark mode overrides */
166
+ :global(.dark) .search-wrapper {
167
+ --search-bg: #111827;
168
+ --search-text: #f7f7f8;
169
+ --search-text-placeholder: #9ca3af;
170
+ --search-border: #374151;
171
+ --search-icon-color: #9ca3af;
172
+ }
173
+ </style>
@@ -0,0 +1,68 @@
1
+ export default Search;
2
+ type Search = SvelteComponent<$$__sveltets_2_PropsWithChildren<{
3
+ [x: string]: any;
4
+ class?: string | undefined;
5
+ size?: string | undefined;
6
+ disabled?: boolean | undefined;
7
+ value?: string | undefined;
8
+ name?: string | undefined;
9
+ id?: string | undefined;
10
+ placeholder?: string | undefined;
11
+ }, {
12
+ default: {};
13
+ }>, {
14
+ input: CustomEvent<any>;
15
+ change: CustomEvent<any>;
16
+ keydown: CustomEvent<any>;
17
+ keyup: CustomEvent<any>;
18
+ focus: CustomEvent<any>;
19
+ blur: CustomEvent<any>;
20
+ } & {
21
+ [evt: string]: CustomEvent<any>;
22
+ }, {
23
+ default: {};
24
+ }> & {
25
+ $$bindings?: string | undefined;
26
+ };
27
+ declare const Search: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsWithChildren<{
28
+ [x: string]: any;
29
+ class?: string | undefined;
30
+ size?: string | undefined;
31
+ disabled?: boolean | undefined;
32
+ value?: string | undefined;
33
+ name?: string | undefined;
34
+ id?: string | undefined;
35
+ placeholder?: string | undefined;
36
+ }, {
37
+ default: {};
38
+ }>, {
39
+ input: CustomEvent<any>;
40
+ change: CustomEvent<any>;
41
+ keydown: CustomEvent<any>;
42
+ keyup: CustomEvent<any>;
43
+ focus: CustomEvent<any>;
44
+ blur: CustomEvent<any>;
45
+ } & {
46
+ [evt: string]: CustomEvent<any>;
47
+ }, {
48
+ default: {};
49
+ }, {}, string>;
50
+ type $$__sveltets_2_PropsWithChildren<Props, Slots> = Props & (Slots extends {
51
+ default: any;
52
+ } ? Props extends Record<string, never> ? any : {
53
+ children?: any;
54
+ } : {});
55
+ 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> {
56
+ new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
57
+ $$bindings?: Bindings;
58
+ } & Exports;
59
+ (internal: unknown, props: Props & {
60
+ $$events?: Events;
61
+ $$slots?: Slots;
62
+ }): Exports & {
63
+ $set?: any;
64
+ $on?: any;
65
+ };
66
+ z_$$bindings?: Bindings;
67
+ }
68
+ //# sourceMappingURL=Search.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Search.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/Input/Search.svelte.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAwFA;;;;;;;;;;;;;;;;;;;;;;eAAgM;sCAT1J,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"}