@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
@@ -0,0 +1,111 @@
1
+ <script>
2
+ import { getContext, createEventDispatcher } from "svelte";
3
+
4
+ /** @type {string|undefined} Optional href to make the item a link */
5
+ export let href = undefined;
6
+ /** @type {boolean} Whether the item is disabled */
7
+ export let disabled = false;
8
+ /** @type {string} Additional CSS classes */
9
+ let className = "";
10
+ export { className as class };
11
+
12
+ const dispatch = createEventDispatcher();
13
+ const context = getContext("dropdown");
14
+
15
+ $: isActive = context?.activeUrl && href && context.activeUrl === href;
16
+
17
+ function handleClick(event) {
18
+ if (disabled) {
19
+ event.preventDefault();
20
+ return;
21
+ }
22
+ dispatch("click", event);
23
+ // Close dropdown after click (unless it's a link that will navigate)
24
+ if (!href && context?.close) {
25
+ context.close();
26
+ }
27
+ }
28
+
29
+ function handleKeydown(event) {
30
+ if (event.key === "Enter" || event.key === " ") {
31
+ handleClick(event);
32
+ }
33
+ }
34
+ </script>
35
+
36
+ {#if href}
37
+ <a
38
+ {href}
39
+ class="dropdown-item {className}"
40
+ class:dropdown-item--active={isActive}
41
+ class:dropdown-item--disabled={disabled}
42
+ role="menuitem"
43
+ tabindex={disabled ? -1 : 0}
44
+ on:click={handleClick}
45
+ on:keydown={handleKeydown}
46
+ >
47
+ <slot />
48
+ </a>
49
+ {:else}
50
+ <button
51
+ type="button"
52
+ class="dropdown-item {className}"
53
+ class:dropdown-item--disabled={disabled}
54
+ role="menuitem"
55
+ tabindex={disabled ? -1 : 0}
56
+ {disabled}
57
+ on:click={handleClick}
58
+ on:keydown={handleKeydown}
59
+ >
60
+ <slot />
61
+ </button>
62
+ {/if}
63
+
64
+ <style>
65
+ .dropdown-item {
66
+ display: flex;
67
+ align-items: center;
68
+ width: 100%;
69
+ padding: 0.5rem 1rem;
70
+ font-size: 0.875rem;
71
+ color: hsl(var(--Text-Primary, 220 13% 13%));
72
+ background: transparent;
73
+ border: none;
74
+ text-align: left;
75
+ cursor: pointer;
76
+ text-decoration: none;
77
+ transition: background-color 0.15s ease;
78
+ }
79
+
80
+ .dropdown-item:hover:not(.dropdown-item--disabled) {
81
+ background-color: hsl(var(--BG-Secondary, 220 14% 96%));
82
+ }
83
+
84
+ .dropdown-item:focus {
85
+ outline: none;
86
+ background-color: hsl(var(--BG-Secondary, 220 14% 96%));
87
+ }
88
+
89
+ .dropdown-item--active {
90
+ background-color: hsl(var(--Brand-Primary, 221 83% 53%) / 0.1);
91
+ color: hsl(var(--Brand-Primary, 221 83% 53%));
92
+ }
93
+
94
+ .dropdown-item--disabled {
95
+ opacity: 0.5;
96
+ cursor: not-allowed;
97
+ }
98
+
99
+ /* Dark mode */
100
+ :global(.dark) .dropdown-item {
101
+ color: hsl(var(--Text-Primary, 0 0% 95%));
102
+ }
103
+
104
+ :global(.dark) .dropdown-item:hover:not(.dropdown-item--disabled) {
105
+ background-color: hsl(var(--BG-Secondary, 220 13% 20%));
106
+ }
107
+
108
+ :global(.dark) .dropdown-item:focus {
109
+ background-color: hsl(var(--BG-Secondary, 220 13% 20%));
110
+ }
111
+ </style>
@@ -0,0 +1,48 @@
1
+ export default DropdownItem;
2
+ type DropdownItem = SvelteComponent<$$__sveltets_2_PropsWithChildren<{
3
+ class?: string | undefined;
4
+ disabled?: boolean | undefined;
5
+ href?: string | undefined;
6
+ }, {
7
+ default: {};
8
+ }>, {
9
+ click: CustomEvent<any>;
10
+ } & {
11
+ [evt: string]: CustomEvent<any>;
12
+ }, {
13
+ default: {};
14
+ }> & {
15
+ $$bindings?: string | undefined;
16
+ };
17
+ declare const DropdownItem: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsWithChildren<{
18
+ class?: string | undefined;
19
+ disabled?: boolean | undefined;
20
+ href?: string | undefined;
21
+ }, {
22
+ default: {};
23
+ }>, {
24
+ click: CustomEvent<any>;
25
+ } & {
26
+ [evt: string]: CustomEvent<any>;
27
+ }, {
28
+ default: {};
29
+ }, {}, string>;
30
+ type $$__sveltets_2_PropsWithChildren<Props, Slots> = Props & (Slots extends {
31
+ default: any;
32
+ } ? Props extends Record<string, never> ? any : {
33
+ children?: any;
34
+ } : {});
35
+ 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> {
36
+ new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
37
+ $$bindings?: Bindings;
38
+ } & Exports;
39
+ (internal: unknown, props: Props & {
40
+ $$events?: Events;
41
+ $$slots?: Slots;
42
+ }): Exports & {
43
+ $set?: any;
44
+ $on?: any;
45
+ };
46
+ z_$$bindings?: Bindings;
47
+ }
48
+ //# sourceMappingURL=DropdownItem.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DropdownItem.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/Dropdown/DropdownItem.svelte.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAuEA;;;WAjBW,MAAM,GAAC,SAAS;;;;;;;;;eAiBgI;sCATrH,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"}
@@ -4,8 +4,10 @@ type Input = SvelteComponent<{
4
4
  size?: string | undefined;
5
5
  className?: string | undefined;
6
6
  disabled?: boolean | undefined;
7
- label?: string | undefined;
7
+ value?: string | undefined;
8
8
  name?: string | undefined;
9
+ label?: string | undefined;
10
+ id?: string | undefined;
9
11
  icon?: null | undefined;
10
12
  required?: boolean | undefined;
11
13
  optional?: boolean | undefined;
@@ -14,7 +16,6 @@ type Input = SvelteComponent<{
14
16
  maxlength?: null | undefined;
15
17
  minlength?: null | undefined;
16
18
  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;
@@ -52,8 +52,10 @@ declare const Input: $$__sveltets_2_IsomorphicComponent<{
52
52
  size?: string | undefined;
53
53
  className?: string | undefined;
54
54
  disabled?: boolean | undefined;
55
- label?: string | undefined;
55
+ value?: string | undefined;
56
56
  name?: string | undefined;
57
+ label?: string | undefined;
58
+ id?: string | undefined;
57
59
  icon?: null | undefined;
58
60
  required?: boolean | undefined;
59
61
  optional?: boolean | undefined;
@@ -62,7 +64,6 @@ declare const Input: $$__sveltets_2_IsomorphicComponent<{
62
64
  maxlength?: null | undefined;
63
65
  minlength?: null | undefined;
64
66
  placeholder?: string | undefined;
65
- id?: string | undefined;
66
67
  textareaSize?: string | undefined;
67
68
  errorText?: string | undefined;
68
69
  helperText?: string | undefined;
@@ -73,7 +74,6 @@ declare const Input: $$__sveltets_2_IsomorphicComponent<{
73
74
  readonly?: boolean | undefined;
74
75
  controlled?: boolean | undefined;
75
76
  onButtonClick?: null | undefined;
76
- value?: string | undefined;
77
77
  autocomplete?: null | undefined;
78
78
  autofocus?: boolean | undefined;
79
79
  showPasswordToggle?: boolean | undefined;
@@ -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
+ label?: string | undefined;
8
+ id?: string | undefined;
7
9
  required?: boolean | undefined;
8
10
  placeholder?: string | undefined;
9
- id?: string | undefined;
10
- value?: any[] | 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
+ label?: string | undefined;
27
+ id?: string | undefined;
26
28
  required?: boolean | undefined;
27
29
  placeholder?: string | undefined;
28
- id?: string | undefined;
29
- value?: any[] | 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"}
@@ -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"}
@@ -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
 
@@ -96,10 +96,9 @@
96
96
 
97
97
  onMount(() => {
98
98
  document.addEventListener("click", handleClickOutside);
99
- });
100
-
101
- onDestroy(() => {
102
- document.removeEventListener("click", handleClickOutside);
99
+ return () => {
100
+ document.removeEventListener("click", handleClickOutside);
101
+ };
103
102
  });
104
103
  </script>
105
104
 
@@ -2,12 +2,12 @@ export default Select;
2
2
  type Select = SvelteComponent<{
3
3
  error?: string | undefined;
4
4
  disabled?: boolean | undefined;
5
- label?: string | undefined;
5
+ value?: string | undefined;
6
6
  name?: string | undefined;
7
+ label?: string | undefined;
8
+ id?: string | undefined;
7
9
  required?: boolean | undefined;
8
10
  placeholder?: string | undefined;
9
- id?: string | undefined;
10
- value?: string | undefined;
11
11
  animateFocus?: boolean | undefined;
12
12
  items?: any[] | undefined;
13
13
  }, {
@@ -20,12 +20,12 @@ type Select = SvelteComponent<{
20
20
  declare const Select: $$__sveltets_2_IsomorphicComponent<{
21
21
  error?: string | undefined;
22
22
  disabled?: boolean | undefined;
23
- label?: string | undefined;
23
+ value?: string | undefined;
24
24
  name?: string | undefined;
25
+ label?: string | undefined;
26
+ id?: string | undefined;
25
27
  required?: boolean | undefined;
26
28
  placeholder?: string | undefined;
27
- id?: string | undefined;
28
- value?: string | undefined;
29
29
  animateFocus?: boolean | undefined;
30
30
  items?: any[] | undefined;
31
31
  }, {
@@ -1 +1 @@
1
- {"version":3,"file":"Select.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/Input/Select.svelte.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAqKA;;;;;;;;;;;;;;;mBAAoN;6CATvK,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":"Select.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/Input/Select.svelte.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAoKA;;;;;;;;;;;;;;;mBAAoN;6CATvK,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"}