@getmicdrop/svelte-components 2.6.0 → 2.6.3

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 (152) hide show
  1. package/dist/__LIB_STORES__.js +2 -30
  2. package/dist/components/Badges/Badge.svelte +17 -268
  3. package/dist/components/Badges/Badge.svelte.d.ts +2 -18
  4. package/dist/components/Badges/Badge.svelte.d.ts.map +1 -1
  5. package/dist/components/Breadcrumb/Breadcrumb.svelte +36 -65
  6. package/dist/components/Breadcrumb/Breadcrumb.svelte.d.ts +2 -16
  7. package/dist/components/Breadcrumb/Breadcrumb.svelte.d.ts.map +1 -1
  8. package/dist/components/Button/Button.svelte +3 -136
  9. package/dist/components/Button/Button.svelte.d.ts +0 -2
  10. package/dist/components/Button/Button.svelte.d.ts.map +1 -1
  11. package/dist/components/Calendar/Calendar.spec.d.ts +2 -0
  12. package/dist/components/Calendar/Calendar.spec.d.ts.map +1 -0
  13. package/dist/components/Calendar/Calendar.spec.js +131 -0
  14. package/dist/components/Calendar/Calendar.svelte +1115 -0
  15. package/dist/components/Calendar/{MiniMonthCalendar.svelte.d.ts → Calendar.svelte.d.ts} +21 -20
  16. package/dist/components/Calendar/Calendar.svelte.d.ts.map +1 -0
  17. package/dist/components/Calendar/QuarterView.spec.d.ts +2 -0
  18. package/dist/components/Calendar/QuarterView.spec.d.ts.map +1 -0
  19. package/dist/components/Calendar/QuarterView.spec.js +394 -0
  20. package/dist/components/Calendar/QuarterView.stories.svelte +134 -0
  21. package/dist/components/{ShowTimeCard/ShowTimeCard.svelte.d.ts → Calendar/QuarterView.stories.svelte.d.ts} +21 -17
  22. package/dist/components/Calendar/QuarterView.stories.svelte.d.ts.map +1 -0
  23. package/dist/components/Calendar/QuarterView.svelte +736 -0
  24. package/dist/components/{FAQs/FAQs.svelte.d.ts → Calendar/QuarterView.svelte.d.ts} +10 -10
  25. package/dist/components/{Skeleton/Skeleton.svelte.d.ts.map → Calendar/QuarterView.svelte.d.ts.map} +1 -1
  26. package/dist/components/Card.svelte +2 -2
  27. package/dist/components/Card.svelte.d.ts +2 -2
  28. package/dist/components/Card.svelte.d.ts.map +1 -1
  29. package/dist/components/DarkModeToggle.svelte +0 -2
  30. package/dist/components/DarkModeToggle.svelte.d.ts.map +1 -1
  31. package/dist/components/ErrorDisplay.svelte.d.ts +2 -2
  32. package/dist/components/Input/Input.svelte +12 -105
  33. package/dist/components/Input/Input.svelte.d.ts +12 -28
  34. package/dist/components/Input/Input.svelte.d.ts.map +1 -1
  35. package/dist/components/Input/MultiSelect.svelte +5 -4
  36. package/dist/components/Input/MultiSelect.svelte.d.ts +8 -8
  37. package/dist/components/Input/MultiSelect.svelte.d.ts.map +1 -1
  38. package/dist/components/Input/OTPInput.svelte +1 -1
  39. package/dist/components/Input/Select.svelte +5 -4
  40. package/dist/components/Input/Select.svelte.d.ts +8 -8
  41. package/dist/components/Input/Select.svelte.d.ts.map +1 -1
  42. package/dist/components/Layout/Header.svelte +4 -14
  43. package/dist/components/Modal/ConfirmationModal.svelte +17 -69
  44. package/dist/components/Modal/ConfirmationModal.svelte.d.ts +0 -22
  45. package/dist/components/Modal/ConfirmationModal.svelte.d.ts.map +1 -1
  46. package/dist/components/Modal/Modal.svelte +8 -34
  47. package/dist/components/Modal/Modal.svelte.d.ts +0 -2
  48. package/dist/components/Modal/Modal.svelte.d.ts.map +1 -1
  49. package/dist/components/PasswordStrengthIndicator/PasswordStrengthIndicator.svelte.d.ts +2 -2
  50. package/dist/components/Spinner/Spinner.svelte +17 -73
  51. package/dist/components/Spinner/Spinner.svelte.d.ts +3 -5
  52. package/dist/components/Spinner/Spinner.svelte.d.ts.map +1 -1
  53. package/dist/components/pages/performers/AvailabilityCalendarModal.svelte +632 -0
  54. package/dist/components/{PublicCard/PublicCard.svelte.d.ts → pages/performers/AvailabilityCalendarModal.svelte.d.ts} +14 -12
  55. package/dist/components/pages/performers/AvailabilityCalendarModal.svelte.d.ts.map +1 -0
  56. package/dist/components/pages/performers/ShowDetails.svelte.d.ts +4 -4
  57. package/dist/components/pages/performers/ShowItemCard.svelte.d.ts +8 -8
  58. package/dist/components/pages/performers/SwitchOption.svelte.d.ts +2 -2
  59. package/dist/components/pages/performers/VenueInfo.svelte.d.ts +2 -2
  60. package/dist/components/pages/performers/VenueItemCard.svelte +2 -2
  61. package/dist/components/pages/performers/VenueItemCard.svelte.d.ts +4 -4
  62. package/dist/components/pages/profile/profile-form.svelte +1 -1
  63. package/dist/components/pages/settings/tabs/CustomImageDropzone.svelte.d.ts +2 -2
  64. package/dist/components/pages/shows/TabNavigation.svelte +8 -7
  65. package/dist/constants/formOptions.d.ts +2 -5
  66. package/dist/constants/formOptions.d.ts.map +1 -1
  67. package/dist/constants/formOptions.js +1 -2
  68. package/dist/index.d.ts +4 -28
  69. package/dist/index.js +29 -33
  70. package/dist/services/EventService.js +75 -75
  71. package/dist/services/EventService.spec.js +217 -217
  72. package/dist/services/ShowService.spec.js +342 -342
  73. package/package.json +160 -160
  74. package/dist/components/AboutShow/AboutShow.svelte +0 -278
  75. package/dist/components/AboutShow/AboutShow.svelte.d.ts +0 -43
  76. package/dist/components/AboutShow/AboutShow.svelte.d.ts.map +0 -1
  77. package/dist/components/Accordion/Accordion.svelte +0 -44
  78. package/dist/components/Accordion/Accordion.svelte.d.ts +0 -42
  79. package/dist/components/Accordion/Accordion.svelte.d.ts.map +0 -1
  80. package/dist/components/Accordion/AccordionItem.svelte +0 -141
  81. package/dist/components/Accordion/AccordionItem.svelte.d.ts +0 -50
  82. package/dist/components/Accordion/AccordionItem.svelte.d.ts.map +0 -1
  83. package/dist/components/Calendar/MiniMonthCalendar.svelte +0 -1446
  84. package/dist/components/Calendar/MiniMonthCalendar.svelte.d.ts.map +0 -1
  85. package/dist/components/Checkbox/Checkbox.svelte +0 -90
  86. package/dist/components/Checkbox/Checkbox.svelte.d.ts +0 -64
  87. package/dist/components/Checkbox/Checkbox.svelte.d.ts.map +0 -1
  88. package/dist/components/Drawer/Drawer.svelte +0 -207
  89. package/dist/components/Drawer/Drawer.svelte.d.ts +0 -74
  90. package/dist/components/Drawer/Drawer.svelte.d.ts.map +0 -1
  91. package/dist/components/Dropdown/Dropdown.svelte +0 -193
  92. package/dist/components/Dropdown/Dropdown.svelte.d.ts +0 -50
  93. package/dist/components/Dropdown/Dropdown.svelte.d.ts.map +0 -1
  94. package/dist/components/Dropdown/DropdownItem.svelte +0 -111
  95. package/dist/components/Dropdown/DropdownItem.svelte.d.ts +0 -48
  96. package/dist/components/Dropdown/DropdownItem.svelte.d.ts.map +0 -1
  97. package/dist/components/Dropdown/SelectDropdown.svelte +0 -301
  98. package/dist/components/Dropdown/SelectDropdown.svelte.d.ts +0 -51
  99. package/dist/components/Dropdown/SelectDropdown.svelte.d.ts.map +0 -1
  100. package/dist/components/EmptyState/EmptyState.svelte +0 -80
  101. package/dist/components/EmptyState/EmptyState.svelte.d.ts +0 -37
  102. package/dist/components/EmptyState/EmptyState.svelte.d.ts.map +0 -1
  103. package/dist/components/FAQs/FAQs.svelte +0 -49
  104. package/dist/components/FAQs/FAQs.svelte.d.ts.map +0 -1
  105. package/dist/components/Input/Search.svelte +0 -173
  106. package/dist/components/Input/Search.svelte.d.ts +0 -68
  107. package/dist/components/Input/Search.svelte.d.ts.map +0 -1
  108. package/dist/components/Input/Textarea.svelte +0 -160
  109. package/dist/components/Input/Textarea.svelte.d.ts +0 -69
  110. package/dist/components/Input/Textarea.svelte.d.ts.map +0 -1
  111. package/dist/components/Label/Label.svelte +0 -60
  112. package/dist/components/Label/Label.svelte.d.ts +0 -48
  113. package/dist/components/Label/Label.svelte.d.ts.map +0 -1
  114. package/dist/components/Layout/PageLayout.svelte +0 -64
  115. package/dist/components/Layout/PageLayout.svelte.d.ts +0 -58
  116. package/dist/components/Layout/PageLayout.svelte.d.ts.map +0 -1
  117. package/dist/components/Modal/InputModal.svelte +0 -180
  118. package/dist/components/Modal/InputModal.svelte.d.ts +0 -77
  119. package/dist/components/Modal/InputModal.svelte.d.ts.map +0 -1
  120. package/dist/components/Modal/StatusModal.svelte +0 -221
  121. package/dist/components/Modal/StatusModal.svelte.d.ts +0 -59
  122. package/dist/components/Modal/StatusModal.svelte.d.ts.map +0 -1
  123. package/dist/components/MonthSwitcher/MonthSwitcher.svelte +0 -206
  124. package/dist/components/MonthSwitcher/MonthSwitcher.svelte.d.ts +0 -37
  125. package/dist/components/MonthSwitcher/MonthSwitcher.svelte.d.ts.map +0 -1
  126. package/dist/components/OrderSummary/OrderSummary.svelte +0 -553
  127. package/dist/components/OrderSummary/OrderSummary.svelte.d.ts +0 -65
  128. package/dist/components/OrderSummary/OrderSummary.svelte.d.ts.map +0 -1
  129. package/dist/components/Pagination/Pagination.svelte +0 -197
  130. package/dist/components/Pagination/Pagination.svelte.d.ts +0 -53
  131. package/dist/components/Pagination/Pagination.svelte.d.ts.map +0 -1
  132. package/dist/components/PublicCard/PublicCard.svelte +0 -267
  133. package/dist/components/PublicCard/PublicCard.svelte.d.ts.map +0 -1
  134. package/dist/components/Radio/Radio.svelte +0 -119
  135. package/dist/components/Radio/Radio.svelte.d.ts +0 -54
  136. package/dist/components/Radio/Radio.svelte.d.ts.map +0 -1
  137. package/dist/components/ShowCard/ShowCard.svelte +0 -240
  138. package/dist/components/ShowCard/ShowCard.svelte.d.ts +0 -39
  139. package/dist/components/ShowCard/ShowCard.svelte.d.ts.map +0 -1
  140. package/dist/components/ShowTimeCard/ShowTimeCard.svelte +0 -92
  141. package/dist/components/ShowTimeCard/ShowTimeCard.svelte.d.ts.map +0 -1
  142. package/dist/components/Skeleton/Skeleton.svelte +0 -68
  143. package/dist/components/Skeleton/Skeleton.svelte.d.ts +0 -37
  144. package/dist/components/Tabs/TabItem.svelte +0 -39
  145. package/dist/components/Tabs/TabItem.svelte.d.ts +0 -52
  146. package/dist/components/Tabs/TabItem.svelte.d.ts.map +0 -1
  147. package/dist/components/Tabs/Tabs.svelte +0 -181
  148. package/dist/components/Tabs/Tabs.svelte.d.ts +0 -46
  149. package/dist/components/Tabs/Tabs.svelte.d.ts.map +0 -1
  150. package/dist/components/Typography/Typography.svelte +0 -50
  151. package/dist/components/Typography/Typography.svelte.d.ts +0 -48
  152. package/dist/components/Typography/Typography.svelte.d.ts.map +0 -1
@@ -1,197 +0,0 @@
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>
@@ -1,53 +0,0 @@
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
@@ -1 +0,0 @@
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,267 +0,0 @@
1
- <script>
2
- import { createEventDispatcher, onMount, onDestroy } from "svelte";
3
-
4
- export let events = [];
5
- export let view = "row"; // 'row' for list view, 'col' for gallery view
6
- export let placeholderImage = null; // Allow custom placeholder
7
-
8
- const dispatch = createEventDispatcher();
9
- let isSmallScreen = false;
10
-
11
- // Default placeholder image for events without images
12
- const DEFAULT_PLACEHOLDER = "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Crect fill='%23e5e7eb' width='100' height='100'/%3E%3Cpath d='M50 25c-8.3 0-15 6.7-15 15v5c0 8.3 6.7 15 15 15s15-6.7 15-15v-5c0-8.3-6.7-15-15-15zm0 45c-13.8 0-25 5.6-25 12.5V90h50v-7.5c0-6.9-11.2-12.5-25-12.5z' fill='%239ca3af'/%3E%3C/svg%3E";
13
-
14
- $: placeholder = placeholderImage || DEFAULT_PLACEHOLDER;
15
-
16
- let options = {
17
- weekday: "short",
18
- month: "short",
19
- day: "numeric",
20
- };
21
-
22
- onMount(() => {
23
- isSmallScreen = window.innerWidth < 768;
24
- window.addEventListener("resize", handleResize);
25
- });
26
-
27
- onDestroy(() => {
28
- if (typeof window !== 'undefined') {
29
- window.removeEventListener("resize", handleResize);
30
- }
31
- });
32
-
33
- function handleResize() {
34
- isSmallScreen = window.innerWidth < 768;
35
- }
36
-
37
- function handleEventClick(event) {
38
- dispatch("eventClick", event);
39
- }
40
-
41
- function handleKeydown(e, event) {
42
- if (e.key === 'Enter' || e.key === ' ') {
43
- e.preventDefault();
44
- handleEventClick(event);
45
- }
46
- }
47
-
48
- function getStatusBadgeClass(status) {
49
- switch (status) {
50
- case 'Sold out':
51
- return 'badge-sold-out';
52
- case 'Selling fast':
53
- return 'badge-selling-fast';
54
- case 'Almost sold out':
55
- return 'badge-almost-sold-out';
56
- default:
57
- return '';
58
- }
59
- }
60
-
61
- // Only show badges for urgency statuses (not "On Sale" which is the default state)
62
- function shouldShowBadge(status) {
63
- return status === 'Sold out' || status === 'Selling fast' || status === 'Almost sold out';
64
- }
65
-
66
- function formatEventDate(dateStr) {
67
- if (!dateStr) return '';
68
- // Parse as local date (not UTC)
69
- const [year, month, day] = dateStr.split('-').map(Number);
70
- const date = new Date(year, month - 1, day);
71
- return date.toLocaleDateString("en-US", options);
72
- }
73
- </script>
74
-
75
- {#each events as event}
76
- <article
77
- class={`event-card rounded-lg cursor-pointer overflow-hidden bg-bg-primary border border-stroke-secondary transition-all duration-200 hover:shadow-lg hover:border-stroke-primary focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 relative ${
78
- view === "col"
79
- ? "flex flex-col"
80
- : "grid grid-cols-[100px_1fr] sm:grid-cols-[160px_1fr] gap-3 sm:gap-4 p-3 sm:p-4"
81
- }`}
82
- on:click={() => handleEventClick(event)}
83
- on:keydown={(e) => handleKeydown(e, event)}
84
- tabindex="0"
85
- role="button"
86
- aria-label={`${event.name}, ${event.status || 'On Sale'}, ${formatEventDate(event.date)}. Press Enter to view details.`}
87
- >
88
- <!-- Event Image -->
89
- <div
90
- class={`bg-bg-secondary flex items-center justify-center overflow-hidden ${
91
- view === "col"
92
- ? "w-full aspect-[4/3] rounded-t-lg"
93
- : "w-[100px] h-[100px] sm:w-[160px] sm:h-[120px] rounded-lg flex-shrink-0"
94
- }`}
95
- >
96
- <img
97
- src={event.image || placeholder}
98
- alt={event.name}
99
- class="object-contain w-full h-full"
100
- loading="lazy"
101
- />
102
- </div>
103
-
104
- <!-- Event Details -->
105
- <div
106
- class={`flex flex-col ${
107
- view === "col" ? "p-3 gap-1" : "gap-1.5 sm:gap-2 justify-center"
108
- }`}
109
- >
110
- <!-- Status Badge for gallery view - positioned over image -->
111
- {#if view === "col" && event.status && shouldShowBadge(event.status)}
112
- <span
113
- class={`status-badge ${getStatusBadgeClass(event.status)} absolute top-2 left-2`}
114
- >
115
- {event.status}
116
- </span>
117
- {/if}
118
-
119
- <!-- Status Badge for list view - inline -->
120
- {#if view === "row" && event.status && shouldShowBadge(event.status)}
121
- <span
122
- class={`status-badge ${getStatusBadgeClass(event.status)}`}
123
- >
124
- {event.status}
125
- </span>
126
- {/if}
127
-
128
- <!-- Event Name -->
129
- <h3
130
- class={`font-semibold text-text-primary leading-tight ${
131
- view === "col"
132
- ? "text-sm sm:text-base line-clamp-2"
133
- : "text-sm sm:text-lg line-clamp-2"
134
- }`}
135
- >
136
- {event.name}
137
- </h3>
138
-
139
- <!-- Date & Time -->
140
- <div
141
- class={`text-text-secondary ${
142
- view === "col" ? "text-xs" : "text-xs sm:text-sm"
143
- }`}
144
- >
145
- <span class="font-medium">
146
- {formatEventDate(event.date)}
147
- {#if event.timeline}
148
- <span class="text-text-tertiary">•</span>
149
- {event.timeline.split("-")[0].trim()}
150
- {/if}
151
- </span>
152
- </div>
153
-
154
- <!-- Description (list view only) -->
155
- {#if view === "row" && event.description}
156
- <p class="text-text-tertiary text-xs sm:text-sm line-clamp-2 mt-1">
157
- {event.description}
158
- </p>
159
- {/if}
160
-
161
- <!-- Doors time (if available) -->
162
- {#if event.doorsTimeline && view === "row"}
163
- <div class="text-[10px] sm:text-xs text-text-tertiary">
164
- {event.doorsTimeline}
165
- </div>
166
- {/if}
167
- </div>
168
- </article>
169
- {/each}
170
-
171
- <style>
172
- /* Event card base styles */
173
- .event-card {
174
- background-color: hsl(var(--BG-Primary));
175
- border-color: hsl(var(--Stroke-Secondary));
176
- transition: all 0.2s ease-in-out;
177
- }
178
-
179
- .event-card:hover {
180
- transform: translateY(-2px);
181
- border-color: hsl(var(--Stroke-Primary));
182
- }
183
-
184
- .event-card:active {
185
- transform: translateY(0);
186
- }
187
-
188
- /* Text colors using CSS variables */
189
- .text-text-primary {
190
- color: hsl(var(--Text-Primary));
191
- }
192
-
193
- .text-text-secondary {
194
- color: hsl(var(--Text-Secondary));
195
- }
196
-
197
- .text-text-tertiary {
198
- color: hsl(var(--Text-Tartiary));
199
- }
200
-
201
- .bg-bg-secondary {
202
- background-color: hsl(var(--BG-Secondary));
203
- }
204
-
205
- /* Status badge base styles - compact inline pill */
206
- .status-badge {
207
- display: inline-flex;
208
- align-items: center;
209
- width: -moz-fit-content;
210
- width: fit-content;
211
- padding: 2px 8px;
212
- font-size: 11px;
213
- font-weight: 600;
214
- line-height: 1.4;
215
- border-radius: 4px;
216
- }
217
-
218
- @media (min-width: 640px) {
219
- .status-badge {
220
- font-size: 12px;
221
- padding: 3px 10px;
222
- }
223
- }
224
-
225
- /* Status badge variants using CSS variables */
226
- .badge-selling-fast {
227
- background-color: hsl(var(--Status-SellingFast) / 0.15);
228
- color: hsl(var(--Status-SellingFast));
229
- }
230
-
231
- .badge-sold-out {
232
- background-color: hsl(var(--Status-SoldOut) / 0.15);
233
- color: hsl(var(--Status-SoldOut));
234
- }
235
-
236
- .badge-almost-sold-out {
237
- background-color: hsl(var(--Status-SoldOut) / 0.15);
238
- color: hsl(var(--Status-SoldOut));
239
- }
240
-
241
- /* Line clamping for text truncation */
242
- .line-clamp-2 {
243
- display: -webkit-box;
244
- -webkit-line-clamp: 2;
245
- line-clamp: 2;
246
- -webkit-box-orient: vertical;
247
- overflow: hidden;
248
- }
249
-
250
- /* Reduced motion support */
251
- @media (prefers-reduced-motion: reduce) {
252
- .event-card {
253
- transition: none;
254
- }
255
-
256
- .event-card:hover {
257
- transform: none;
258
- }
259
- }
260
-
261
- /* Mobile optimizations */
262
- @media (max-width: 640px) {
263
- .event-card {
264
- -webkit-tap-highlight-color: transparent;
265
- }
266
- }
267
- </style>
@@ -1 +0,0 @@
1
- {"version":3,"file":"PublicCard.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/PublicCard/PublicCard.svelte.js"],"names":[],"mappings":";;;;;;;;;;;;AAoKA;;;;;;;;mBAA4J;6CAT/G,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,119 +0,0 @@
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>
@@ -1,54 +0,0 @@
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
@@ -1 +0,0 @@
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"}