@tenerife.music/ui 0.0.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 (182) hide show
  1. package/LICENSE +27 -0
  2. package/README.md +197 -0
  3. package/dist/components/admin/Dashboard.d.ts +7 -0
  4. package/dist/components/admin/Dashboard.d.ts.map +1 -0
  5. package/dist/components/admin/UserManagement.d.ts +7 -0
  6. package/dist/components/admin/UserManagement.d.ts.map +1 -0
  7. package/dist/components/auth/LoginForm.d.ts +7 -0
  8. package/dist/components/auth/LoginForm.d.ts.map +1 -0
  9. package/dist/components/auth/ProfileCard.d.ts +10 -0
  10. package/dist/components/auth/ProfileCard.d.ts.map +1 -0
  11. package/dist/components/auth/RegisterForm.d.ts +7 -0
  12. package/dist/components/auth/RegisterForm.d.ts.map +1 -0
  13. package/dist/components/cards/EventCard.d.ts +35 -0
  14. package/dist/components/cards/EventCard.d.ts.map +1 -0
  15. package/dist/components/cards/VenueCard.d.ts +36 -0
  16. package/dist/components/cards/VenueCard.d.ts.map +1 -0
  17. package/dist/components/controls/LanguageSelector.d.ts +16 -0
  18. package/dist/components/controls/LanguageSelector.d.ts.map +1 -0
  19. package/dist/components/data/List.d.ts +13 -0
  20. package/dist/components/data/List.d.ts.map +1 -0
  21. package/dist/components/data/Table.d.ts +15 -0
  22. package/dist/components/data/Table.d.ts.map +1 -0
  23. package/dist/components/data/Timeline.d.ts +14 -0
  24. package/dist/components/data/Timeline.d.ts.map +1 -0
  25. package/dist/components/feedback/Alert.d.ts +10 -0
  26. package/dist/components/feedback/Alert.d.ts.map +1 -0
  27. package/dist/components/feedback/ConsentBanner.d.ts +7 -0
  28. package/dist/components/feedback/ConsentBanner.d.ts.map +1 -0
  29. package/dist/components/feedback/Progress.d.ts +9 -0
  30. package/dist/components/feedback/Progress.d.ts.map +1 -0
  31. package/dist/components/feedback/Skeleton.d.ts +7 -0
  32. package/dist/components/feedback/Skeleton.d.ts.map +1 -0
  33. package/dist/components/filters/DateRangePicker.d.ts +19 -0
  34. package/dist/components/filters/DateRangePicker.d.ts.map +1 -0
  35. package/dist/components/filters/FilterBar.d.ts +21 -0
  36. package/dist/components/filters/FilterBar.d.ts.map +1 -0
  37. package/dist/components/filters/FilterSelect.d.ts +24 -0
  38. package/dist/components/filters/FilterSelect.d.ts.map +1 -0
  39. package/dist/components/filters/PriceRangeSlider.d.ts +21 -0
  40. package/dist/components/filters/PriceRangeSlider.d.ts.map +1 -0
  41. package/dist/components/filters/SearchFilters.d.ts +11 -0
  42. package/dist/components/filters/SearchFilters.d.ts.map +1 -0
  43. package/dist/components/filters/SearchInput.d.ts +17 -0
  44. package/dist/components/filters/SearchInput.d.ts.map +1 -0
  45. package/dist/components/filters/types.d.ts +49 -0
  46. package/dist/components/filters/types.d.ts.map +1 -0
  47. package/dist/components/forms/FormInput.d.ts +16 -0
  48. package/dist/components/forms/FormInput.d.ts.map +1 -0
  49. package/dist/components/forms/FormSelect.d.ts +18 -0
  50. package/dist/components/forms/FormSelect.d.ts.map +1 -0
  51. package/dist/components/forms/FormTextarea.d.ts +15 -0
  52. package/dist/components/forms/FormTextarea.d.ts.map +1 -0
  53. package/dist/components/icons/TrendingIcon.d.ts +7 -0
  54. package/dist/components/icons/TrendingIcon.d.ts.map +1 -0
  55. package/dist/components/layout/Container.d.ts +11 -0
  56. package/dist/components/layout/Container.d.ts.map +1 -0
  57. package/dist/components/layout/Flex.d.ts +14 -0
  58. package/dist/components/layout/Flex.d.ts.map +1 -0
  59. package/dist/components/layout/Footer.d.ts +10 -0
  60. package/dist/components/layout/Footer.d.ts.map +1 -0
  61. package/dist/components/layout/Grid.d.ts +13 -0
  62. package/dist/components/layout/Grid.d.ts.map +1 -0
  63. package/dist/components/layout/ModeHero.d.ts +11 -0
  64. package/dist/components/layout/ModeHero.d.ts.map +1 -0
  65. package/dist/components/layout/Navbar.d.ts +10 -0
  66. package/dist/components/layout/Navbar.d.ts.map +1 -0
  67. package/dist/components/layout/Section.d.ts +11 -0
  68. package/dist/components/layout/Section.d.ts.map +1 -0
  69. package/dist/components/layout/Stack.d.ts +12 -0
  70. package/dist/components/layout/Stack.d.ts.map +1 -0
  71. package/dist/components/menus/DropdownMenu.d.ts +28 -0
  72. package/dist/components/menus/DropdownMenu.d.ts.map +1 -0
  73. package/dist/components/menus/NavigationMenu.d.ts +13 -0
  74. package/dist/components/menus/NavigationMenu.d.ts.map +1 -0
  75. package/dist/components/menus/Tabs.d.ts +8 -0
  76. package/dist/components/menus/Tabs.d.ts.map +1 -0
  77. package/dist/components/modals/ConfirmDialog.d.ts +23 -0
  78. package/dist/components/modals/ConfirmDialog.d.ts.map +1 -0
  79. package/dist/components/modals/CustomDialog.d.ts +12 -0
  80. package/dist/components/modals/CustomDialog.d.ts.map +1 -0
  81. package/dist/components/modals/Modal.d.ts +20 -0
  82. package/dist/components/modals/Modal.d.ts.map +1 -0
  83. package/dist/components/modals/ModalProvider.d.ts +17 -0
  84. package/dist/components/modals/ModalProvider.d.ts.map +1 -0
  85. package/dist/components/modals/SimpleModal.d.ts +11 -0
  86. package/dist/components/modals/SimpleModal.d.ts.map +1 -0
  87. package/dist/components/navigation/Breadcrumbs.d.ts +12 -0
  88. package/dist/components/navigation/Breadcrumbs.d.ts.map +1 -0
  89. package/dist/components/navigation/Pagination.d.ts +10 -0
  90. package/dist/components/navigation/Pagination.d.ts.map +1 -0
  91. package/dist/components/overlays/OverlayPortal.d.ts +23 -0
  92. package/dist/components/overlays/OverlayPortal.d.ts.map +1 -0
  93. package/dist/components/overlays/Popover.d.ts +31 -0
  94. package/dist/components/overlays/Popover.d.ts.map +1 -0
  95. package/dist/components/overlays/Tooltip.d.ts +29 -0
  96. package/dist/components/overlays/Tooltip.d.ts.map +1 -0
  97. package/dist/components/primitives/Badge.d.ts +10 -0
  98. package/dist/components/primitives/Badge.d.ts.map +1 -0
  99. package/dist/components/primitives/Button.d.ts +2 -0
  100. package/dist/components/primitives/Button.d.ts.map +1 -0
  101. package/dist/components/primitives/Card.d.ts +2 -0
  102. package/dist/components/primitives/Card.d.ts.map +1 -0
  103. package/dist/components/primitives/Divider.d.ts +8 -0
  104. package/dist/components/primitives/Divider.d.ts.map +1 -0
  105. package/dist/components/primitives/Input.d.ts +5 -0
  106. package/dist/components/primitives/Input.d.ts.map +1 -0
  107. package/dist/components/primitives/Label.d.ts +2 -0
  108. package/dist/components/primitives/Label.d.ts.map +1 -0
  109. package/dist/components/primitives/Link.d.ts +12 -0
  110. package/dist/components/primitives/Link.d.ts.map +1 -0
  111. package/dist/components/primitives/ThemeSwitch.d.ts +9 -0
  112. package/dist/components/primitives/ThemeSwitch.d.ts.map +1 -0
  113. package/dist/components/primitives/Typography.d.ts +21 -0
  114. package/dist/components/primitives/Typography.d.ts.map +1 -0
  115. package/dist/components/search/SearchBar.d.ts +11 -0
  116. package/dist/components/search/SearchBar.d.ts.map +1 -0
  117. package/dist/components/sections/ArticlesSection.d.ts +16 -0
  118. package/dist/components/sections/ArticlesSection.d.ts.map +1 -0
  119. package/dist/components/sections/TrendingSection.d.ts +10 -0
  120. package/dist/components/sections/TrendingSection.d.ts.map +1 -0
  121. package/dist/components/skeletons/EventCardSkeleton.d.ts +7 -0
  122. package/dist/components/skeletons/EventCardSkeleton.d.ts.map +1 -0
  123. package/dist/components/skeletons/VenueCardSkeleton.d.ts +7 -0
  124. package/dist/components/skeletons/VenueCardSkeleton.d.ts.map +1 -0
  125. package/dist/components/toasts/Toast.d.ts +13 -0
  126. package/dist/components/toasts/Toast.d.ts.map +1 -0
  127. package/dist/components/toasts/ToastProvider.d.ts +27 -0
  128. package/dist/components/toasts/ToastProvider.d.ts.map +1 -0
  129. package/dist/components/ui/button.d.ts +12 -0
  130. package/dist/components/ui/button.d.ts.map +1 -0
  131. package/dist/components/ui/card.d.ts +9 -0
  132. package/dist/components/ui/card.d.ts.map +1 -0
  133. package/dist/components/ui/dialog.d.ts +20 -0
  134. package/dist/components/ui/dialog.d.ts.map +1 -0
  135. package/dist/components/ui/input.d.ts +4 -0
  136. package/dist/components/ui/input.d.ts.map +1 -0
  137. package/dist/components/ui/label.d.ts +6 -0
  138. package/dist/components/ui/label.d.ts.map +1 -0
  139. package/dist/components/ui/toast.d.ts +16 -0
  140. package/dist/components/ui/toast.d.ts.map +1 -0
  141. package/dist/components/ui/toaster.d.ts +2 -0
  142. package/dist/components/ui/toaster.d.ts.map +1 -0
  143. package/dist/components/ui/tooltip.d.ts +8 -0
  144. package/dist/components/ui/tooltip.d.ts.map +1 -0
  145. package/dist/hooks/use-toast.d.ts +45 -0
  146. package/dist/hooks/use-toast.d.ts.map +1 -0
  147. package/dist/hooks/useModal.d.ts +20 -0
  148. package/dist/hooks/useModal.d.ts.map +1 -0
  149. package/dist/hooks/useToast.d.ts +27 -0
  150. package/dist/hooks/useToast.d.ts.map +1 -0
  151. package/dist/index.cjs +2 -0
  152. package/dist/index.d.ts +68 -0
  153. package/dist/index.d.ts.map +1 -0
  154. package/dist/index.mjs +4520 -0
  155. package/dist/lib/utils.d.ts +9 -0
  156. package/dist/lib/utils.d.ts.map +1 -0
  157. package/dist/styles.css +1 -0
  158. package/dist/test/setup.d.ts +1 -0
  159. package/dist/test/setup.d.ts.map +1 -0
  160. package/dist/theme/applyMode.d.ts +3 -0
  161. package/dist/theme/applyMode.d.ts.map +1 -0
  162. package/dist/theme/colors.d.ts +71 -0
  163. package/dist/theme/colors.d.ts.map +1 -0
  164. package/dist/theme/index.d.ts +5 -0
  165. package/dist/theme/index.d.ts.map +1 -0
  166. package/dist/theme/motion.d.ts +128 -0
  167. package/dist/theme/motion.d.ts.map +1 -0
  168. package/dist/theme/spacing.d.ts +35 -0
  169. package/dist/theme/spacing.d.ts.map +1 -0
  170. package/dist/theme/typography.d.ts +46 -0
  171. package/dist/theme/typography.d.ts.map +1 -0
  172. package/dist/tokens/colors.d.ts +71 -0
  173. package/dist/tokens/colors.d.ts.map +1 -0
  174. package/dist/tokens/index.d.ts +5 -0
  175. package/dist/tokens/index.d.ts.map +1 -0
  176. package/dist/tokens/radius.d.ts +13 -0
  177. package/dist/tokens/radius.d.ts.map +1 -0
  178. package/dist/tokens/spacing.d.ts +39 -0
  179. package/dist/tokens/spacing.d.ts.map +1 -0
  180. package/dist/tokens/typography.d.ts +79 -0
  181. package/dist/tokens/typography.d.ts.map +1 -0
  182. package/package.json +122 -0
package/dist/index.mjs ADDED
@@ -0,0 +1,4520 @@
1
+ "use client";
2
+ import { jsx as n, jsxs as l } from "react/jsx-runtime";
3
+ import * as m from "react";
4
+ import re, { useState as Y, useCallback as F, createContext as Me, useContext as Ce, forwardRef as lt, createElement as me, useRef as ct, useEffect as Se, useMemo as ut } from "react";
5
+ import { Slot as De } from "@radix-ui/react-slot";
6
+ import { cva as L } from "class-variance-authority";
7
+ import { clsx as mt } from "clsx";
8
+ import { twMerge as ft } from "tailwind-merge";
9
+ import * as Te from "@radix-ui/react-label";
10
+ import { Sun as ht, Moon as gt, X as de, ChevronRight as le, Check as Oe, Circle as pt, ChevronDown as ce, Search as bt, ChevronUp as yt, Calendar as xt, Info as fe, AlertTriangle as wt, AlertCircle as vt, CheckCircle as Nt, ChevronLeft as kt } from "lucide-react";
11
+ import * as M from "@radix-ui/react-dialog";
12
+ import * as k from "@radix-ui/react-dropdown-menu";
13
+ import * as P from "@radix-ui/react-navigation-menu";
14
+ import * as _ from "@radix-ui/react-tabs";
15
+ import * as S from "@radix-ui/react-select";
16
+ import * as ee from "@radix-ui/react-tooltip";
17
+ import * as q from "@radix-ui/react-popover";
18
+ import { createPortal as Mt } from "react-dom";
19
+ const nn = {
20
+ day: {
21
+ background: "hsl(var(--background))",
22
+ foreground: "hsl(var(--foreground))",
23
+ card: "hsl(var(--card))",
24
+ cardForeground: "hsl(var(--card-foreground))",
25
+ popover: "hsl(var(--popover))",
26
+ popoverForeground: "hsl(var(--popover-foreground))",
27
+ primary: "hsl(var(--tm-primary))",
28
+ primaryForeground: "hsl(var(--tm-primary-foreground))",
29
+ secondary: "hsl(var(--tm-secondary))",
30
+ secondaryForeground: "hsl(var(--tm-secondary-foreground))",
31
+ muted: "hsl(var(--muted))",
32
+ mutedForeground: "hsl(var(--muted-foreground))",
33
+ accent: "hsl(var(--tm-accent))",
34
+ accentForeground: "hsl(var(--tm-accent-foreground))",
35
+ destructive: "hsl(var(--destructive))",
36
+ destructiveForeground: "hsl(var(--destructive-foreground))",
37
+ border: "hsl(var(--border))",
38
+ input: "hsl(var(--input))",
39
+ ring: "hsl(var(--ring))",
40
+ chart1: "hsl(12, 76%, 61%)",
41
+ chart2: "hsl(173, 58%, 39%)",
42
+ chart3: "hsl(197, 37%, 24%)",
43
+ chart4: "hsl(43, 74%, 66%)",
44
+ chart5: "hsl(27, 87%, 67%)"
45
+ },
46
+ night: {
47
+ background: "hsl(var(--background))",
48
+ foreground: "hsl(var(--foreground))",
49
+ card: "hsl(var(--card))",
50
+ cardForeground: "hsl(var(--card-foreground))",
51
+ popover: "hsl(var(--popover))",
52
+ popoverForeground: "hsl(var(--popover-foreground))",
53
+ primary: "hsl(var(--tm-primary))",
54
+ primaryForeground: "hsl(var(--tm-primary-foreground))",
55
+ secondary: "hsl(var(--tm-secondary))",
56
+ secondaryForeground: "hsl(var(--tm-secondary-foreground))",
57
+ muted: "hsl(var(--muted))",
58
+ mutedForeground: "hsl(var(--muted-foreground))",
59
+ accent: "hsl(var(--tm-accent))",
60
+ accentForeground: "hsl(var(--tm-accent-foreground))",
61
+ destructive: "hsl(var(--destructive))",
62
+ destructiveForeground: "hsl(var(--destructive-foreground))",
63
+ border: "hsl(var(--border))",
64
+ input: "hsl(var(--input))",
65
+ ring: "hsl(var(--ring))",
66
+ chart1: "hsl(220, 70%, 50%)",
67
+ chart2: "hsl(160, 60%, 45%)",
68
+ chart3: "hsl(30, 80%, 55%)",
69
+ chart4: "hsl(280, 65%, 60%)",
70
+ chart5: "hsl(340, 75%, 55%)"
71
+ }
72
+ }, on = {
73
+ background: "hsl(var(--background))",
74
+ foreground: "hsl(var(--foreground))",
75
+ card: {
76
+ DEFAULT: "hsl(var(--card))",
77
+ foreground: "hsl(var(--card-foreground))"
78
+ },
79
+ popover: {
80
+ DEFAULT: "hsl(var(--popover))",
81
+ foreground: "hsl(var(--popover-foreground))"
82
+ },
83
+ primary: {
84
+ DEFAULT: "hsl(var(--tm-primary))",
85
+ foreground: "hsl(var(--tm-primary-foreground))"
86
+ },
87
+ secondary: {
88
+ DEFAULT: "hsl(var(--tm-secondary))",
89
+ foreground: "hsl(var(--tm-secondary-foreground))"
90
+ },
91
+ muted: {
92
+ DEFAULT: "hsl(var(--muted))",
93
+ foreground: "hsl(var(--muted-foreground))"
94
+ },
95
+ accent: {
96
+ DEFAULT: "hsl(var(--tm-accent))",
97
+ foreground: "hsl(var(--tm-accent-foreground))"
98
+ },
99
+ destructive: {
100
+ DEFAULT: "hsl(var(--destructive))",
101
+ foreground: "hsl(var(--destructive-foreground))"
102
+ },
103
+ border: "hsl(var(--border))",
104
+ input: "hsl(var(--input))",
105
+ ring: "hsl(var(--ring))",
106
+ chart: {
107
+ 1: "hsl(var(--chart-1))",
108
+ 2: "hsl(var(--chart-2))",
109
+ 3: "hsl(var(--chart-3))",
110
+ 4: "hsl(var(--chart-4))",
111
+ 5: "hsl(var(--chart-5))"
112
+ }
113
+ }, sn = {
114
+ px: "1px",
115
+ 0: "0px",
116
+ 0.5: "0.125rem",
117
+ // 2px
118
+ 1: "0.25rem",
119
+ // 4px
120
+ 1.5: "0.375rem",
121
+ // 6px
122
+ 2: "0.5rem",
123
+ // 8px
124
+ 2.5: "0.625rem",
125
+ // 10px
126
+ 3: "0.75rem",
127
+ // 12px
128
+ 3.5: "0.875rem",
129
+ // 14px
130
+ 4: "1rem",
131
+ // 16px
132
+ 5: "1.25rem",
133
+ // 20px
134
+ 6: "1.5rem",
135
+ // 24px
136
+ 7: "1.75rem",
137
+ // 28px
138
+ 8: "2rem",
139
+ // 32px
140
+ 9: "2.25rem",
141
+ // 36px
142
+ 10: "2.5rem",
143
+ // 40px
144
+ 11: "2.75rem",
145
+ // 44px
146
+ 12: "3rem",
147
+ // 48px
148
+ 14: "3.5rem",
149
+ // 56px
150
+ 16: "4rem",
151
+ // 64px
152
+ 20: "5rem",
153
+ // 80px
154
+ 24: "6rem",
155
+ // 96px
156
+ 28: "7rem",
157
+ // 112px
158
+ 32: "8rem",
159
+ // 128px
160
+ 36: "9rem",
161
+ // 144px
162
+ 40: "10rem",
163
+ // 160px
164
+ 44: "11rem",
165
+ // 176px
166
+ 48: "12rem",
167
+ // 192px
168
+ 52: "13rem",
169
+ // 208px
170
+ 56: "14rem",
171
+ // 224px
172
+ 60: "15rem",
173
+ // 240px
174
+ 64: "16rem",
175
+ // 256px
176
+ 72: "18rem",
177
+ // 288px
178
+ 80: "20rem",
179
+ // 320px
180
+ 96: "24rem"
181
+ // 384px
182
+ }, dn = {
183
+ sans: [
184
+ "ui-sans-serif",
185
+ "system-ui",
186
+ "-apple-system",
187
+ "BlinkMacSystemFont",
188
+ "Segoe UI",
189
+ "Roboto",
190
+ "Helvetica Neue",
191
+ "Arial",
192
+ "Noto Sans",
193
+ "sans-serif",
194
+ "Apple Color Emoji",
195
+ "Segoe UI Emoji",
196
+ "Segoe UI Symbol",
197
+ "Noto Color Emoji"
198
+ ],
199
+ serif: [
200
+ "ui-serif",
201
+ "Georgia",
202
+ "Cambria",
203
+ "Times New Roman",
204
+ "Times",
205
+ "serif"
206
+ ],
207
+ mono: [
208
+ "ui-monospace",
209
+ "SFMono-Regular",
210
+ "Menlo",
211
+ "Monaco",
212
+ "Consolas",
213
+ "Liberation Mono",
214
+ "Courier New",
215
+ "monospace"
216
+ ]
217
+ }, ln = {
218
+ xs: ["0.75rem", { lineHeight: "1rem" }],
219
+ sm: ["0.875rem", { lineHeight: "1.25rem" }],
220
+ base: ["1rem", { lineHeight: "1.5rem" }],
221
+ lg: ["1.125rem", { lineHeight: "1.75rem" }],
222
+ xl: ["1.25rem", { lineHeight: "1.75rem" }],
223
+ "2xl": ["1.5rem", { lineHeight: "2rem" }],
224
+ "3xl": ["1.875rem", { lineHeight: "2.25rem" }],
225
+ "4xl": ["2.25rem", { lineHeight: "2.5rem" }],
226
+ "5xl": ["3rem", { lineHeight: "1" }],
227
+ "6xl": ["3.75rem", { lineHeight: "1" }],
228
+ "7xl": ["4.5rem", { lineHeight: "1" }],
229
+ "8xl": ["6rem", { lineHeight: "1" }],
230
+ "9xl": ["8rem", { lineHeight: "1" }]
231
+ }, cn = {
232
+ thin: "100",
233
+ extralight: "200",
234
+ light: "300",
235
+ normal: "400",
236
+ medium: "500",
237
+ semibold: "600",
238
+ bold: "700",
239
+ extrabold: "800",
240
+ black: "900"
241
+ }, un = {
242
+ tighter: "-0.05em",
243
+ tight: "-0.025em",
244
+ normal: "0em",
245
+ wide: "0.025em",
246
+ wider: "0.05em",
247
+ widest: "0.1em"
248
+ }, mn = {
249
+ none: "1",
250
+ tight: "1.25",
251
+ snug: "1.375",
252
+ normal: "1.5",
253
+ relaxed: "1.625",
254
+ loose: "2"
255
+ }, fn = {
256
+ none: "0px",
257
+ sm: "0.125rem",
258
+ // 2px
259
+ DEFAULT: "0.25rem",
260
+ // 4px
261
+ md: "0.375rem",
262
+ // 6px
263
+ lg: "0.5rem",
264
+ // 8px
265
+ xl: "0.75rem",
266
+ // 12px
267
+ "2xl": "1rem",
268
+ // 16px
269
+ "3xl": "1.5rem",
270
+ // 24px
271
+ full: "9999px"
272
+ };
273
+ function d(...e) {
274
+ return ft(mt(e));
275
+ }
276
+ function Ct(e) {
277
+ return new Intl.DateTimeFormat("en-US", {
278
+ month: "long",
279
+ day: "numeric",
280
+ year: "numeric"
281
+ }).format(new Date(e));
282
+ }
283
+ function St(e) {
284
+ return new Intl.DateTimeFormat("en-US", {
285
+ hour: "numeric",
286
+ minute: "2-digit",
287
+ hour12: !0
288
+ }).format(new Date(e));
289
+ }
290
+ function hn(e) {
291
+ return `${Ct(e)} at ${St(e)}`;
292
+ }
293
+ function gn() {
294
+ return Math.random().toString(36).substr(2, 9);
295
+ }
296
+ function pn(e, t) {
297
+ let r;
298
+ return (...a) => {
299
+ clearTimeout(r), r = setTimeout(() => e(...a), t);
300
+ };
301
+ }
302
+ function bn(e, t) {
303
+ let r;
304
+ return (...a) => {
305
+ r || (e(...a), r = !0, setTimeout(() => r = !1, t));
306
+ };
307
+ }
308
+ const Dt = L(
309
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
310
+ {
311
+ variants: {
312
+ variant: {
313
+ default: "bg-primary text-primary-foreground shadow hover:bg-primary/90",
314
+ destructive: "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",
315
+ outline: "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",
316
+ secondary: "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",
317
+ ghost: "hover:bg-accent hover:text-accent-foreground",
318
+ link: "text-primary underline-offset-4 hover:underline"
319
+ },
320
+ size: {
321
+ default: "h-9 px-4 py-2",
322
+ sm: "h-8 rounded-md px-3 text-xs",
323
+ lg: "h-10 rounded-md px-8",
324
+ icon: "h-9 w-9"
325
+ }
326
+ },
327
+ defaultVariants: {
328
+ variant: "default",
329
+ size: "default"
330
+ }
331
+ }
332
+ ), j = m.forwardRef(
333
+ ({ className: e, variant: t, size: r, asChild: a = !1, ...o }, s) => /* @__PURE__ */ n(
334
+ a ? De : "button",
335
+ {
336
+ className: d(Dt({ variant: t, size: r, className: e })),
337
+ ref: s,
338
+ ...o
339
+ }
340
+ )
341
+ );
342
+ j.displayName = "Button";
343
+ const Tt = L(
344
+ "inline-flex items-center justify-center whitespace-nowrap text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
345
+ {
346
+ variants: {
347
+ variant: {
348
+ default: "text-primary hover:text-primary/80 underline-offset-4 hover:underline",
349
+ destructive: "text-destructive hover:text-destructive/80 underline-offset-4 hover:underline",
350
+ ghost: "text-foreground hover:text-accent-foreground hover:bg-accent rounded-md px-3 py-2",
351
+ secondary: "text-secondary-foreground underline-offset-4 hover:underline",
352
+ button: "bg-primary text-primary-foreground hover:bg-primary/90 rounded-md",
353
+ "button-outline": "border border-input bg-background hover:bg-accent hover:text-accent-foreground rounded-md",
354
+ "button-secondary": "bg-secondary text-secondary-foreground hover:bg-secondary/80 rounded-md"
355
+ },
356
+ size: {
357
+ default: "h-10 px-4 py-2",
358
+ sm: "h-9 px-3",
359
+ lg: "h-11 px-8",
360
+ icon: "h-10 w-10",
361
+ none: "h-auto px-0 py-0"
362
+ }
363
+ },
364
+ defaultVariants: {
365
+ variant: "default",
366
+ size: "none"
367
+ }
368
+ }
369
+ ), H = m.forwardRef(
370
+ ({ className: e, variant: t, size: r, asChild: a = !1, ...o }, s) => /* @__PURE__ */ n(
371
+ a ? De : "a",
372
+ {
373
+ className: d(Tt({ variant: t, size: r, className: e })),
374
+ ref: s,
375
+ ...o
376
+ }
377
+ )
378
+ );
379
+ H.displayName = "Link";
380
+ const X = m.forwardRef(
381
+ ({ className: e, type: t, ...r }, a) => /* @__PURE__ */ n(
382
+ "input",
383
+ {
384
+ type: t,
385
+ className: d(
386
+ "flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
387
+ e
388
+ ),
389
+ ref: a,
390
+ ...r
391
+ }
392
+ )
393
+ );
394
+ X.displayName = "Input";
395
+ const J = m.forwardRef(({ className: e, ...t }, r) => /* @__PURE__ */ n(
396
+ "div",
397
+ {
398
+ ref: r,
399
+ className: d(
400
+ "rounded-xl border bg-card text-card-foreground shadow",
401
+ e
402
+ ),
403
+ ...t
404
+ }
405
+ ));
406
+ J.displayName = "Card";
407
+ const Ot = m.forwardRef(({ className: e, ...t }, r) => /* @__PURE__ */ n(
408
+ "div",
409
+ {
410
+ ref: r,
411
+ className: d("flex flex-col space-y-1.5 p-6", e),
412
+ ...t
413
+ }
414
+ ));
415
+ Ot.displayName = "CardHeader";
416
+ const Rt = m.forwardRef(({ className: e, ...t }, r) => /* @__PURE__ */ n(
417
+ "div",
418
+ {
419
+ ref: r,
420
+ className: d("font-semibold leading-none tracking-tight", e),
421
+ ...t
422
+ }
423
+ ));
424
+ Rt.displayName = "CardTitle";
425
+ const Pt = m.forwardRef(({ className: e, ...t }, r) => /* @__PURE__ */ n(
426
+ "div",
427
+ {
428
+ ref: r,
429
+ className: d("text-sm text-muted-foreground", e),
430
+ ...t
431
+ }
432
+ ));
433
+ Pt.displayName = "CardDescription";
434
+ const K = m.forwardRef(({ className: e, ...t }, r) => /* @__PURE__ */ n("div", { ref: r, className: d("p-6 pt-0", e), ...t }));
435
+ K.displayName = "CardContent";
436
+ const Et = m.forwardRef(({ className: e, ...t }, r) => /* @__PURE__ */ n(
437
+ "div",
438
+ {
439
+ ref: r,
440
+ className: d("flex items-center p-6 pt-0", e),
441
+ ...t
442
+ }
443
+ ));
444
+ Et.displayName = "CardFooter";
445
+ const Lt = L(
446
+ "inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
447
+ {
448
+ variants: {
449
+ variant: {
450
+ default: "border-transparent bg-primary text-primary-foreground hover:bg-primary/80",
451
+ secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
452
+ destructive: "border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",
453
+ outline: "text-foreground"
454
+ }
455
+ },
456
+ defaultVariants: {
457
+ variant: "default"
458
+ }
459
+ }
460
+ );
461
+ function yn({ className: e, variant: t, ...r }) {
462
+ return /* @__PURE__ */ n("div", { className: d(Lt({ variant: t }), e), ...r });
463
+ }
464
+ const Ft = m.forwardRef(
465
+ ({ className: e, orientation: t = "horizontal", variant: r = "solid", ...a }, o) => {
466
+ const s = {
467
+ solid: "border-solid",
468
+ dashed: "border-dashed",
469
+ dotted: "border-dotted"
470
+ };
471
+ return /* @__PURE__ */ n(
472
+ "div",
473
+ {
474
+ ref: o,
475
+ className: d(
476
+ "border-border",
477
+ t === "horizontal" ? `w-full border-t ${s[r]}` : `h-full border-l ${s[r]}`,
478
+ e
479
+ ),
480
+ ...a
481
+ }
482
+ );
483
+ }
484
+ );
485
+ Ft.displayName = "Divider";
486
+ const jt = L(
487
+ "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
488
+ ), te = m.forwardRef(({ className: e, ...t }, r) => /* @__PURE__ */ n(
489
+ Te.Root,
490
+ {
491
+ ref: r,
492
+ className: d(jt(), e),
493
+ ...t
494
+ }
495
+ ));
496
+ te.displayName = Te.Root.displayName;
497
+ const Wt = "data-mode", Vt = "data-theme", he = "dark", zt = {
498
+ day: {
499
+ "--background": "#ffffff",
500
+ "--foreground": "#171717",
501
+ "--popover": "#ffffff",
502
+ "--tm-primary": "#00bfa6",
503
+ "--tm-secondary": "#f4f4f5",
504
+ "--tm-accent": "#e5e7eb"
505
+ },
506
+ night: {
507
+ "--background": "#0b0b10",
508
+ "--foreground": "#e5e7eb",
509
+ "--popover": "#0e1016",
510
+ "--tm-primary": "#7b5eff",
511
+ "--tm-secondary": "#12121b",
512
+ "--tm-accent": "#1a1a26"
513
+ }
514
+ };
515
+ function It(e) {
516
+ if (typeof document > "u") return;
517
+ const t = document.documentElement;
518
+ t.setAttribute(Wt, e), t.setAttribute(Vt, e), e === "night" ? t.classList.add(he) : t.classList.remove(he);
519
+ const r = zt[e];
520
+ Object.entries(r).forEach(([o, s]) => {
521
+ s ? t.style.setProperty(o, s) : t.style.removeProperty(o);
522
+ });
523
+ const a = document.body;
524
+ if (a) {
525
+ a.dataset.mode = e;
526
+ const o = r["--background"], s = r["--foreground"];
527
+ o ? a.style.backgroundColor = o : a.style.removeProperty("background-color"), s ? a.style.color = s : a.style.removeProperty("color");
528
+ }
529
+ }
530
+ const Re = "tm_mode", Pe = "tm_mode", Ee = "theme", Le = "data-mode", Fe = "data-theme", At = "dark";
531
+ function je(e) {
532
+ var o, s;
533
+ if (((s = (o = globalThis.process) == null ? void 0 : o.env) == null ? void 0 : s.NODE_ENV) === "production" || typeof document > "u") return;
534
+ const r = document.documentElement, a = {
535
+ "data-mode": r.getAttribute(Le),
536
+ "data-theme": r.getAttribute(Fe),
537
+ darkClass: r.classList.contains(At),
538
+ "--background": getComputedStyle(r).getPropertyValue("--background"),
539
+ "--tm-primary": getComputedStyle(r).getPropertyValue("--tm-primary")
540
+ };
541
+ console.log("[theme-switch]", e, a);
542
+ }
543
+ function Yt(e) {
544
+ var a;
545
+ if (typeof document > "u") return;
546
+ const r = `; ${document.cookie}`.split(`; ${e}=`);
547
+ if (r.length === 2)
548
+ return (a = r.pop()) == null ? void 0 : a.split(";")[0];
549
+ }
550
+ function ge() {
551
+ var a, o;
552
+ if (typeof document > "u")
553
+ return "day";
554
+ const e = document.documentElement.getAttribute(Le);
555
+ if (e === "day" || e === "night")
556
+ return e;
557
+ const t = document.documentElement.getAttribute(Fe);
558
+ if (t === "day" || t === "night")
559
+ return t;
560
+ try {
561
+ const s = window.localStorage.getItem(Pe);
562
+ if (s === "day" || s === "night")
563
+ return s;
564
+ const i = window.localStorage.getItem(Ee);
565
+ if (i === "dark") return "night";
566
+ if (i === "light") return "day";
567
+ } catch {
568
+ }
569
+ const r = Yt(Re);
570
+ return r === "day" || r === "night" ? r : typeof window < "u" && ((o = (a = window.matchMedia) == null ? void 0 : a.call(window, "(prefers-color-scheme: dark)")) == null ? void 0 : o.matches) ? "night" : "day";
571
+ }
572
+ function pe(e) {
573
+ It(e);
574
+ try {
575
+ window.localStorage.setItem(Pe, e), window.localStorage.setItem(Ee, e === "night" ? "dark" : "light");
576
+ } catch {
577
+ }
578
+ const t = /* @__PURE__ */ new Date();
579
+ t.setFullYear(t.getFullYear() + 1), document.cookie = `${Re}=${e};expires=${t.toUTCString()};path=/;SameSite=Lax`, je(`persist:${e}`);
580
+ }
581
+ const xn = ({
582
+ className: e,
583
+ size: t = "md",
584
+ variant: r = "default"
585
+ }) => {
586
+ const [a, o] = re.useState(() => ge());
587
+ re.useEffect(() => {
588
+ const u = ge();
589
+ o(u), pe(u), je(`initial:${u}`);
590
+ }, []);
591
+ const s = () => {
592
+ o((u) => {
593
+ const f = u === "night" ? "day" : "night";
594
+ return pe(f), f;
595
+ });
596
+ }, i = {
597
+ sm: "h-8 w-8",
598
+ md: "h-10 w-10",
599
+ lg: "h-12 w-12"
600
+ }, c = {
601
+ default: "bg-primary text-primary-foreground hover:bg-primary/90",
602
+ outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground",
603
+ ghost: "hover:bg-accent hover:text-accent-foreground"
604
+ };
605
+ return /* @__PURE__ */ n(
606
+ "button",
607
+ {
608
+ onClick: s,
609
+ className: d(
610
+ "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
611
+ i[t],
612
+ c[r],
613
+ e
614
+ ),
615
+ "aria-label": `Switch to ${a === "night" ? "day" : "night"} theme`,
616
+ type: "button",
617
+ children: a === "night" ? /* @__PURE__ */ n(ht, { className: "h-4 w-4" }) : /* @__PURE__ */ n(gt, { className: "h-4 w-4" })
618
+ }
619
+ );
620
+ }, wn = ({
621
+ className: e,
622
+ children: t,
623
+ as: r,
624
+ level: a = 1
625
+ }) => {
626
+ const o = r || `h${a}`;
627
+ return /* @__PURE__ */ n(o, { className: d({
628
+ 1: "text-4xl font-bold tracking-tight",
629
+ 2: "text-3xl font-bold tracking-tight",
630
+ 3: "text-2xl font-bold tracking-tight",
631
+ 4: "text-xl font-semibold tracking-tight",
632
+ 5: "text-lg font-semibold tracking-tight",
633
+ 6: "text-base font-semibold tracking-tight"
634
+ }[a], e), children: t });
635
+ }, Ht = ({
636
+ className: e,
637
+ children: t,
638
+ size: r = "base",
639
+ weight: a = "normal",
640
+ color: o = "default"
641
+ }) => {
642
+ const s = {
643
+ xs: "text-xs",
644
+ sm: "text-sm",
645
+ base: "text-base",
646
+ lg: "text-lg",
647
+ xl: "text-xl"
648
+ }, i = {
649
+ normal: "font-normal",
650
+ medium: "font-medium",
651
+ semibold: "font-semibold",
652
+ bold: "font-bold"
653
+ }, c = {
654
+ default: "text-foreground",
655
+ muted: "text-muted-foreground",
656
+ primary: "text-primary",
657
+ destructive: "text-destructive"
658
+ };
659
+ return /* @__PURE__ */ n("span", { className: d(
660
+ s[r],
661
+ i[a],
662
+ c[o],
663
+ e
664
+ ), children: t });
665
+ }, vn = ({ className: e, children: t, ...r }) => /* @__PURE__ */ n("p", { className: d("leading-7 [&:not(:first-child)]:mt-6", e), children: /* @__PURE__ */ n(Ht, { ...r, children: t }) }), Nn = ({ className: e, children: t }) => /* @__PURE__ */ n("code", { className: d(
666
+ "relative rounded bg-muted px-[0.3rem] py-[0.2rem] font-mono text-sm font-semibold",
667
+ e
668
+ ), children: t }), kn = ({ className: e, children: t }) => /* @__PURE__ */ n("blockquote", { className: d("mt-6 border-l-2 pl-6 italic", e), children: t }), $t = L("flex", {
669
+ variants: {
670
+ direction: {
671
+ row: "flex-row",
672
+ "row-reverse": "flex-row-reverse",
673
+ column: "flex-col",
674
+ "column-reverse": "flex-col-reverse"
675
+ },
676
+ wrap: {
677
+ nowrap: "flex-nowrap",
678
+ wrap: "flex-wrap",
679
+ "wrap-reverse": "flex-wrap-reverse"
680
+ },
681
+ justify: {
682
+ start: "justify-start",
683
+ end: "justify-end",
684
+ center: "justify-center",
685
+ between: "justify-between",
686
+ around: "justify-around",
687
+ evenly: "justify-evenly"
688
+ },
689
+ align: {
690
+ start: "items-start",
691
+ end: "items-end",
692
+ center: "items-center",
693
+ baseline: "items-baseline",
694
+ stretch: "items-stretch"
695
+ },
696
+ gap: {
697
+ 0: "gap-0",
698
+ 1: "gap-1",
699
+ 2: "gap-2",
700
+ 3: "gap-3",
701
+ 4: "gap-4",
702
+ 5: "gap-5",
703
+ 6: "gap-6",
704
+ 8: "gap-8",
705
+ 10: "gap-10",
706
+ 12: "gap-12",
707
+ 16: "gap-16",
708
+ 20: "gap-20",
709
+ 24: "gap-24"
710
+ }
711
+ },
712
+ defaultVariants: {
713
+ direction: "row",
714
+ wrap: "nowrap",
715
+ justify: "start",
716
+ align: "start",
717
+ gap: 0
718
+ }
719
+ }), _t = m.forwardRef(
720
+ ({ className: e, direction: t, wrap: r, justify: a, align: o, gap: s, ...i }, c) => /* @__PURE__ */ n(
721
+ "div",
722
+ {
723
+ ref: c,
724
+ className: d($t({ direction: t, wrap: r, justify: a, align: o, gap: s, className: e })),
725
+ ...i
726
+ }
727
+ )
728
+ );
729
+ _t.displayName = "Flex";
730
+ const Bt = L("grid", {
731
+ variants: {
732
+ cols: {
733
+ 1: "grid-cols-1",
734
+ 2: "grid-cols-2",
735
+ 3: "grid-cols-3",
736
+ 4: "grid-cols-4",
737
+ 5: "grid-cols-5",
738
+ 6: "grid-cols-6",
739
+ 12: "grid-cols-12",
740
+ none: "grid-cols-none"
741
+ },
742
+ rows: {
743
+ 1: "grid-rows-1",
744
+ 2: "grid-rows-2",
745
+ 3: "grid-rows-3",
746
+ 4: "grid-rows-4",
747
+ 5: "grid-rows-5",
748
+ 6: "grid-rows-6",
749
+ none: "grid-rows-none"
750
+ },
751
+ gap: {
752
+ 0: "gap-0",
753
+ 1: "gap-1",
754
+ 2: "gap-2",
755
+ 3: "gap-3",
756
+ 4: "gap-4",
757
+ 5: "gap-5",
758
+ 6: "gap-6",
759
+ 8: "gap-8",
760
+ 10: "gap-10",
761
+ 12: "gap-12",
762
+ 16: "gap-16",
763
+ 20: "gap-20",
764
+ 24: "gap-24"
765
+ },
766
+ flow: {
767
+ row: "grid-flow-row",
768
+ col: "grid-flow-col",
769
+ dense: "grid-flow-dense",
770
+ "row-dense": "grid-flow-row-dense",
771
+ "col-dense": "grid-flow-col-dense"
772
+ }
773
+ },
774
+ defaultVariants: {
775
+ cols: 1,
776
+ rows: "none",
777
+ gap: 0,
778
+ flow: "row"
779
+ }
780
+ }), qt = m.forwardRef(
781
+ ({ className: e, cols: t, rows: r, gap: a, flow: o, ...s }, i) => /* @__PURE__ */ n(
782
+ "div",
783
+ {
784
+ ref: i,
785
+ className: d(Bt({ cols: t, rows: r, gap: a, flow: o, className: e })),
786
+ ...s
787
+ }
788
+ )
789
+ );
790
+ qt.displayName = "Grid";
791
+ const Gt = L("flex flex-col", {
792
+ variants: {
793
+ spacing: {
794
+ 0: "space-y-0",
795
+ 1: "space-y-1",
796
+ 2: "space-y-2",
797
+ 3: "space-y-3",
798
+ 4: "space-y-4",
799
+ 5: "space-y-5",
800
+ 6: "space-y-6",
801
+ 8: "space-y-8",
802
+ 10: "space-y-10",
803
+ 12: "space-y-12",
804
+ 16: "space-y-16",
805
+ 20: "space-y-20",
806
+ 24: "space-y-24"
807
+ },
808
+ align: {
809
+ start: "items-start",
810
+ end: "items-end",
811
+ center: "items-center",
812
+ stretch: "items-stretch"
813
+ },
814
+ justify: {
815
+ start: "justify-start",
816
+ end: "justify-end",
817
+ center: "justify-center",
818
+ between: "justify-between",
819
+ around: "justify-around"
820
+ }
821
+ },
822
+ defaultVariants: {
823
+ spacing: 4,
824
+ align: "stretch",
825
+ justify: "start"
826
+ }
827
+ }), Ut = m.forwardRef(
828
+ ({ className: e, spacing: t, align: r, justify: a, ...o }, s) => /* @__PURE__ */ n(
829
+ "div",
830
+ {
831
+ ref: s,
832
+ className: d(Gt({ spacing: t, align: r, justify: a, className: e })),
833
+ ...o
834
+ }
835
+ )
836
+ );
837
+ Ut.displayName = "Stack";
838
+ const Qt = L("mx-auto px-4", {
839
+ variants: {
840
+ size: {
841
+ sm: "max-w-sm",
842
+ md: "max-w-md",
843
+ lg: "max-w-lg",
844
+ xl: "max-w-xl",
845
+ "2xl": "max-w-2xl",
846
+ "3xl": "max-w-3xl",
847
+ "4xl": "max-w-4xl",
848
+ "5xl": "max-w-5xl",
849
+ "6xl": "max-w-6xl",
850
+ "7xl": "max-w-7xl",
851
+ full: "max-w-full"
852
+ },
853
+ padding: {
854
+ none: "px-0",
855
+ sm: "px-2",
856
+ md: "px-4",
857
+ lg: "px-6",
858
+ xl: "px-8"
859
+ }
860
+ },
861
+ defaultVariants: {
862
+ size: "7xl",
863
+ padding: "md"
864
+ }
865
+ }), Xt = m.forwardRef(
866
+ ({ className: e, size: t, padding: r, ...a }, o) => /* @__PURE__ */ n(
867
+ "div",
868
+ {
869
+ ref: o,
870
+ className: d(Qt({ size: t, padding: r, className: e })),
871
+ ...a
872
+ }
873
+ )
874
+ );
875
+ Xt.displayName = "Container";
876
+ const Mn = ({
877
+ className: e,
878
+ children: t,
879
+ padding: r = "md",
880
+ background: a = "default",
881
+ as: o = "section"
882
+ }) => {
883
+ const s = {
884
+ none: "",
885
+ sm: "py-4",
886
+ md: "py-8",
887
+ lg: "py-12",
888
+ xl: "py-16"
889
+ }, i = {
890
+ default: "",
891
+ muted: "bg-muted",
892
+ card: "bg-card"
893
+ };
894
+ return /* @__PURE__ */ n(o, { className: d(
895
+ "w-full",
896
+ s[r],
897
+ i[a],
898
+ e
899
+ ), children: t });
900
+ }, Cn = ({
901
+ dayLabel: e = "Day Mode",
902
+ nightLabel: t = "Night Mode",
903
+ dayDescription: r = "Bright theme for daytime browsing",
904
+ nightDescription: a = "Dark theme for nighttime browsing",
905
+ className: o
906
+ }) => /* @__PURE__ */ n("div", { className: d(
907
+ "bg-gradient-to-r from-blue-500 to-purple-600 text-white p-8 rounded-lg",
908
+ o
909
+ ), children: /* @__PURE__ */ l("div", { className: "max-w-4xl mx-auto text-center", children: [
910
+ /* @__PURE__ */ n("h1", { className: "text-4xl font-bold mb-4", children: "Tenerife Music Platform" }),
911
+ /* @__PURE__ */ n("p", { className: "text-xl mb-8", children: "Discover amazing music events in Tenerife" }),
912
+ /* @__PURE__ */ l("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [
913
+ /* @__PURE__ */ n(J, { className: "bg-white/10 backdrop-blur-sm border-white/20", children: /* @__PURE__ */ l(K, { className: "p-6", children: [
914
+ /* @__PURE__ */ n("h3", { className: "text-2xl font-semibold mb-2", children: e }),
915
+ /* @__PURE__ */ n("p", { className: "text-white/80", children: r })
916
+ ] }) }),
917
+ /* @__PURE__ */ n(J, { className: "bg-white/10 backdrop-blur-sm border-white/20", children: /* @__PURE__ */ l(K, { className: "p-6", children: [
918
+ /* @__PURE__ */ n("h3", { className: "text-2xl font-semibold mb-2", children: t }),
919
+ /* @__PURE__ */ n("p", { className: "text-white/80", children: a })
920
+ ] }) })
921
+ ] })
922
+ ] }) }), Sn = ({
923
+ className: e,
924
+ left: t,
925
+ right: r,
926
+ children: a
927
+ }) => /* @__PURE__ */ l("nav", { className: d(
928
+ "flex items-center justify-between w-full px-4 py-3",
929
+ e
930
+ ), children: [
931
+ t && /* @__PURE__ */ n("div", { className: "flex items-center", children: t }),
932
+ a && /* @__PURE__ */ n("div", { className: "flex items-center", children: a }),
933
+ r && /* @__PURE__ */ n("div", { className: "flex items-center", children: r })
934
+ ] }), Dn = ({
935
+ className: e,
936
+ left: t,
937
+ right: r,
938
+ children: a
939
+ }) => /* @__PURE__ */ n("footer", { className: d(
940
+ "w-full border-t bg-background px-4 py-6",
941
+ e
942
+ ), children: /* @__PURE__ */ l("div", { className: "flex items-center justify-between w-full", children: [
943
+ t && /* @__PURE__ */ n("div", { className: "flex items-center", children: t }),
944
+ a && /* @__PURE__ */ n("div", { className: "flex items-center", children: a }),
945
+ r && /* @__PURE__ */ n("div", { className: "flex items-center", children: r })
946
+ ] }) }), Jt = M.Root, Tn = M.Trigger, Kt = M.Portal, On = M.Close, We = m.forwardRef(({ className: e, ...t }, r) => /* @__PURE__ */ n(
947
+ M.Overlay,
948
+ {
949
+ ref: r,
950
+ className: d(
951
+ "fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
952
+ e
953
+ ),
954
+ ...t
955
+ }
956
+ ));
957
+ We.displayName = M.Overlay.displayName;
958
+ const Ve = m.forwardRef(({ className: e, children: t, ...r }, a) => /* @__PURE__ */ l(Kt, { children: [
959
+ /* @__PURE__ */ n(We, {}),
960
+ /* @__PURE__ */ l(
961
+ M.Content,
962
+ {
963
+ ref: a,
964
+ className: d(
965
+ "fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",
966
+ e
967
+ ),
968
+ ...r,
969
+ children: [
970
+ t,
971
+ /* @__PURE__ */ l(M.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground", children: [
972
+ /* @__PURE__ */ n(de, { className: "h-4 w-4" }),
973
+ /* @__PURE__ */ n("span", { className: "sr-only", children: "Close" })
974
+ ] })
975
+ ]
976
+ }
977
+ )
978
+ ] }));
979
+ Ve.displayName = M.Content.displayName;
980
+ const ze = ({
981
+ className: e,
982
+ ...t
983
+ }) => /* @__PURE__ */ n(
984
+ "div",
985
+ {
986
+ className: d(
987
+ "flex flex-col space-y-1.5 text-center sm:text-left",
988
+ e
989
+ ),
990
+ ...t
991
+ }
992
+ );
993
+ ze.displayName = "ModalHeader";
994
+ const Ie = ({
995
+ className: e,
996
+ ...t
997
+ }) => /* @__PURE__ */ n(
998
+ "div",
999
+ {
1000
+ className: d(
1001
+ "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
1002
+ e
1003
+ ),
1004
+ ...t
1005
+ }
1006
+ );
1007
+ Ie.displayName = "ModalFooter";
1008
+ const Ae = m.forwardRef(({ className: e, ...t }, r) => /* @__PURE__ */ n(
1009
+ M.Title,
1010
+ {
1011
+ ref: r,
1012
+ className: d(
1013
+ "text-lg font-semibold leading-none tracking-tight",
1014
+ e
1015
+ ),
1016
+ ...t
1017
+ }
1018
+ ));
1019
+ Ae.displayName = M.Title.displayName;
1020
+ const Ye = m.forwardRef(({ className: e, ...t }, r) => /* @__PURE__ */ n(
1021
+ M.Description,
1022
+ {
1023
+ ref: r,
1024
+ className: d("text-sm text-muted-foreground", e),
1025
+ ...t
1026
+ }
1027
+ ));
1028
+ Ye.displayName = M.Description.displayName;
1029
+ function Zt({
1030
+ isOpen: e,
1031
+ onClose: t,
1032
+ onConfirm: r,
1033
+ title: a = "Confirm Action",
1034
+ description: o = "Are you sure you want to proceed? This action cannot be undone.",
1035
+ confirmText: s = "Confirm",
1036
+ cancelText: i = "Cancel",
1037
+ variant: c = "default",
1038
+ isLoading: u = !1
1039
+ }) {
1040
+ return /* @__PURE__ */ n(Jt, { open: e, onOpenChange: t, children: /* @__PURE__ */ l(Ve, { children: [
1041
+ /* @__PURE__ */ l(ze, { children: [
1042
+ /* @__PURE__ */ n(Ae, { children: a }),
1043
+ /* @__PURE__ */ n(Ye, { children: o })
1044
+ ] }),
1045
+ /* @__PURE__ */ l(Ie, { children: [
1046
+ /* @__PURE__ */ n(j, { variant: "outline", onClick: t, disabled: u, children: i }),
1047
+ /* @__PURE__ */ n(
1048
+ j,
1049
+ {
1050
+ variant: c,
1051
+ onClick: () => {
1052
+ r(), t();
1053
+ },
1054
+ disabled: u,
1055
+ children: u ? "Loading..." : s
1056
+ }
1057
+ )
1058
+ ] })
1059
+ ] }) });
1060
+ }
1061
+ function Rn() {
1062
+ const [e, t] = m.useState({
1063
+ isOpen: !1
1064
+ }), r = m.useCallback(
1065
+ (s) => {
1066
+ t({
1067
+ isOpen: !0,
1068
+ ...s
1069
+ });
1070
+ },
1071
+ []
1072
+ ), a = m.useCallback(() => {
1073
+ t({
1074
+ isOpen: !1
1075
+ });
1076
+ }, []), o = m.useMemo(
1077
+ () => /* @__PURE__ */ n(
1078
+ Zt,
1079
+ {
1080
+ isOpen: e.isOpen,
1081
+ onClose: a,
1082
+ onConfirm: e.onConfirm || (() => {
1083
+ }),
1084
+ title: e.title,
1085
+ description: e.description,
1086
+ variant: e.variant
1087
+ }
1088
+ ),
1089
+ [e, a]
1090
+ );
1091
+ return {
1092
+ showConfirm: r,
1093
+ hideConfirm: a,
1094
+ ConfirmDialog: o
1095
+ };
1096
+ }
1097
+ function Pn(e = !1) {
1098
+ const [t, r] = Y({
1099
+ isOpen: e,
1100
+ data: void 0
1101
+ }), a = F((i) => {
1102
+ r({
1103
+ isOpen: !0,
1104
+ data: i
1105
+ });
1106
+ }, []), o = F(() => {
1107
+ r((i) => ({
1108
+ ...i,
1109
+ isOpen: !1
1110
+ }));
1111
+ }, []), s = F(() => {
1112
+ r((i) => ({
1113
+ ...i,
1114
+ isOpen: !i.isOpen
1115
+ }));
1116
+ }, []);
1117
+ return {
1118
+ isOpen: t.isOpen,
1119
+ data: t.data,
1120
+ open: a,
1121
+ close: o,
1122
+ toggle: s
1123
+ };
1124
+ }
1125
+ function er() {
1126
+ const [e, t] = Y({}), r = F((c, u) => {
1127
+ t((f) => ({
1128
+ ...f,
1129
+ [c]: {
1130
+ isOpen: !0,
1131
+ data: u
1132
+ }
1133
+ }));
1134
+ }, []), a = F((c) => {
1135
+ t((u) => ({
1136
+ ...u,
1137
+ [c]: {
1138
+ isOpen: !1,
1139
+ data: void 0
1140
+ }
1141
+ }));
1142
+ }, []), o = F((c) => {
1143
+ t((u) => {
1144
+ var f, h;
1145
+ return {
1146
+ ...u,
1147
+ [c]: {
1148
+ isOpen: !((f = u[c]) != null && f.isOpen),
1149
+ data: (h = u[c]) == null ? void 0 : h.data
1150
+ }
1151
+ };
1152
+ });
1153
+ }, []), s = F((c) => {
1154
+ var u;
1155
+ return ((u = e[c]) == null ? void 0 : u.isOpen) || !1;
1156
+ }, [e]), i = F((c) => {
1157
+ var u;
1158
+ return (u = e[c]) == null ? void 0 : u.data;
1159
+ }, [e]);
1160
+ return {
1161
+ openModal: r,
1162
+ closeModal: a,
1163
+ toggleModal: o,
1164
+ isModalOpen: s,
1165
+ getModalData: i
1166
+ };
1167
+ }
1168
+ const He = Me(void 0);
1169
+ function En({ children: e }) {
1170
+ const t = er();
1171
+ return /* @__PURE__ */ n(He.Provider, { value: t, children: e });
1172
+ }
1173
+ function tr() {
1174
+ const e = Ce(He);
1175
+ if (e === void 0)
1176
+ throw new Error("useModalContext must be used within a ModalProvider");
1177
+ return e;
1178
+ }
1179
+ function Ln(e, t) {
1180
+ return function(a) {
1181
+ const { openModal: o, closeModal: s, toggleModal: i, isModalOpen: c, getModalData: u } = tr(), f = {
1182
+ [`${t}Open`]: () => o(t),
1183
+ [`${t}Close`]: () => s(t),
1184
+ [`${t}Toggle`]: () => i(t),
1185
+ [`is${t}Open`]: c(t),
1186
+ [`${t}Data`]: u(t)
1187
+ };
1188
+ return /* @__PURE__ */ n(e, { ...a, ...f });
1189
+ };
1190
+ }
1191
+ function rr(e, t) {
1192
+ if (e == null) return {};
1193
+ var r = {}, a = Object.keys(e), o, s;
1194
+ for (s = 0; s < a.length; s++)
1195
+ o = a[s], !(t.indexOf(o) >= 0) && (r[o] = e[o]);
1196
+ return r;
1197
+ }
1198
+ var ar = ["color"], nr = /* @__PURE__ */ lt(function(e, t) {
1199
+ var r = e.color, a = r === void 0 ? "currentColor" : r, o = rr(e, ar);
1200
+ return me("svg", Object.assign({
1201
+ width: "15",
1202
+ height: "15",
1203
+ viewBox: "0 0 15 15",
1204
+ fill: "none",
1205
+ xmlns: "http://www.w3.org/2000/svg"
1206
+ }, o, {
1207
+ ref: t
1208
+ }), me("path", {
1209
+ d: "M11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31316L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157Z",
1210
+ fill: a,
1211
+ fillRule: "evenodd",
1212
+ clipRule: "evenodd"
1213
+ }));
1214
+ });
1215
+ const or = M.Root, sr = M.Portal, $e = m.forwardRef(({ className: e, ...t }, r) => /* @__PURE__ */ n(
1216
+ M.Overlay,
1217
+ {
1218
+ ref: r,
1219
+ className: d(
1220
+ "fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
1221
+ e
1222
+ ),
1223
+ ...t
1224
+ }
1225
+ ));
1226
+ $e.displayName = M.Overlay.displayName;
1227
+ const _e = m.forwardRef(({ className: e, children: t, ...r }, a) => /* @__PURE__ */ l(sr, { children: [
1228
+ /* @__PURE__ */ n($e, {}),
1229
+ /* @__PURE__ */ l(
1230
+ M.Content,
1231
+ {
1232
+ ref: a,
1233
+ className: d(
1234
+ "fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",
1235
+ e
1236
+ ),
1237
+ ...r,
1238
+ children: [
1239
+ t,
1240
+ /* @__PURE__ */ l(M.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground", children: [
1241
+ /* @__PURE__ */ n(nr, { className: "h-4 w-4" }),
1242
+ /* @__PURE__ */ n("span", { className: "sr-only", children: "Close" })
1243
+ ] })
1244
+ ]
1245
+ }
1246
+ )
1247
+ ] }));
1248
+ _e.displayName = M.Content.displayName;
1249
+ const Be = ({
1250
+ className: e,
1251
+ ...t
1252
+ }) => /* @__PURE__ */ n(
1253
+ "div",
1254
+ {
1255
+ className: d(
1256
+ "flex flex-col space-y-1.5 text-center sm:text-left",
1257
+ e
1258
+ ),
1259
+ ...t
1260
+ }
1261
+ );
1262
+ Be.displayName = "DialogHeader";
1263
+ const qe = m.forwardRef(({ className: e, ...t }, r) => /* @__PURE__ */ n(
1264
+ M.Title,
1265
+ {
1266
+ ref: r,
1267
+ className: d(
1268
+ "text-lg font-semibold leading-none tracking-tight",
1269
+ e
1270
+ ),
1271
+ ...t
1272
+ }
1273
+ ));
1274
+ qe.displayName = M.Title.displayName;
1275
+ const Ge = m.forwardRef(({ className: e, ...t }, r) => /* @__PURE__ */ n(
1276
+ M.Description,
1277
+ {
1278
+ ref: r,
1279
+ className: d("text-sm text-muted-foreground", e),
1280
+ ...t
1281
+ }
1282
+ ));
1283
+ Ge.displayName = M.Description.displayName;
1284
+ const Fn = ({
1285
+ isOpen: e,
1286
+ onClose: t,
1287
+ title: r,
1288
+ description: a,
1289
+ children: o,
1290
+ className: s
1291
+ }) => /* @__PURE__ */ n(or, { open: e, onOpenChange: (i) => !i && t(), children: /* @__PURE__ */ l(_e, { className: d("max-w-md", s), children: [
1292
+ (r || a) && /* @__PURE__ */ l(Be, { children: [
1293
+ r && /* @__PURE__ */ n(qe, { children: r }),
1294
+ a && /* @__PURE__ */ n(Ge, { children: a })
1295
+ ] }),
1296
+ o
1297
+ ] }) }), jn = ({
1298
+ isOpen: e,
1299
+ onClose: t,
1300
+ title: r,
1301
+ children: a,
1302
+ className: o
1303
+ }) => e ? /* @__PURE__ */ l("div", { className: "fixed inset-0 z-50 flex items-center justify-center", children: [
1304
+ /* @__PURE__ */ n(
1305
+ "div",
1306
+ {
1307
+ className: "fixed inset-0 bg-black/50",
1308
+ onClick: t
1309
+ }
1310
+ ),
1311
+ /* @__PURE__ */ l("div", { className: d(
1312
+ "relative bg-card border rounded-lg shadow-lg max-w-md w-full mx-4",
1313
+ o
1314
+ ), children: [
1315
+ r && /* @__PURE__ */ n("div", { className: "p-6 border-b", children: /* @__PURE__ */ n("h2", { className: "text-lg font-semibold", children: r }) }),
1316
+ /* @__PURE__ */ n("div", { className: "p-6", children: a })
1317
+ ] })
1318
+ ] }) : null, Wn = k.Root, Vn = k.Trigger, zn = k.Group, In = k.Portal, An = k.Sub, Yn = k.RadioGroup, ir = m.forwardRef(({ className: e, inset: t, children: r, ...a }, o) => /* @__PURE__ */ l(
1319
+ k.SubTrigger,
1320
+ {
1321
+ ref: o,
1322
+ className: d(
1323
+ "flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent",
1324
+ t && "pl-8",
1325
+ e
1326
+ ),
1327
+ ...a,
1328
+ children: [
1329
+ r,
1330
+ /* @__PURE__ */ n(le, { className: "ml-auto h-4 w-4" })
1331
+ ]
1332
+ }
1333
+ ));
1334
+ ir.displayName = k.SubTrigger.displayName;
1335
+ const dr = m.forwardRef(({ className: e, ...t }, r) => /* @__PURE__ */ n(
1336
+ k.SubContent,
1337
+ {
1338
+ ref: r,
1339
+ className: d(
1340
+ "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
1341
+ e
1342
+ ),
1343
+ ...t
1344
+ }
1345
+ ));
1346
+ dr.displayName = k.SubContent.displayName;
1347
+ const lr = m.forwardRef(({ className: e, sideOffset: t = 4, ...r }, a) => /* @__PURE__ */ n(k.Portal, { children: /* @__PURE__ */ n(
1348
+ k.Content,
1349
+ {
1350
+ ref: a,
1351
+ sideOffset: t,
1352
+ className: d(
1353
+ "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
1354
+ e
1355
+ ),
1356
+ ...r
1357
+ }
1358
+ ) }));
1359
+ lr.displayName = k.Content.displayName;
1360
+ const cr = m.forwardRef(({ className: e, inset: t, ...r }, a) => /* @__PURE__ */ n(
1361
+ k.Item,
1362
+ {
1363
+ ref: a,
1364
+ className: d(
1365
+ "relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
1366
+ t && "pl-8",
1367
+ e
1368
+ ),
1369
+ ...r
1370
+ }
1371
+ ));
1372
+ cr.displayName = k.Item.displayName;
1373
+ const ur = m.forwardRef(({ className: e, children: t, checked: r, ...a }, o) => /* @__PURE__ */ l(
1374
+ k.CheckboxItem,
1375
+ {
1376
+ ref: o,
1377
+ className: d(
1378
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
1379
+ e
1380
+ ),
1381
+ checked: r,
1382
+ ...a,
1383
+ children: [
1384
+ /* @__PURE__ */ n("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ n(k.ItemIndicator, { children: /* @__PURE__ */ n(Oe, { className: "h-4 w-4" }) }) }),
1385
+ t
1386
+ ]
1387
+ }
1388
+ ));
1389
+ ur.displayName = k.CheckboxItem.displayName;
1390
+ const mr = m.forwardRef(({ className: e, children: t, ...r }, a) => /* @__PURE__ */ l(
1391
+ k.RadioItem,
1392
+ {
1393
+ ref: a,
1394
+ className: d(
1395
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
1396
+ e
1397
+ ),
1398
+ ...r,
1399
+ children: [
1400
+ /* @__PURE__ */ n("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ n(k.ItemIndicator, { children: /* @__PURE__ */ n(pt, { className: "h-2 w-2 fill-current" }) }) }),
1401
+ t
1402
+ ]
1403
+ }
1404
+ ));
1405
+ mr.displayName = k.RadioItem.displayName;
1406
+ const fr = m.forwardRef(({ className: e, inset: t, ...r }, a) => /* @__PURE__ */ n(
1407
+ k.Label,
1408
+ {
1409
+ ref: a,
1410
+ className: d(
1411
+ "px-2 py-1.5 text-sm font-semibold",
1412
+ t && "pl-8",
1413
+ e
1414
+ ),
1415
+ ...r
1416
+ }
1417
+ ));
1418
+ fr.displayName = k.Label.displayName;
1419
+ const hr = m.forwardRef(({ className: e, ...t }, r) => /* @__PURE__ */ n(
1420
+ k.Separator,
1421
+ {
1422
+ ref: r,
1423
+ className: d("-mx-1 my-1 h-px bg-muted", e),
1424
+ ...t
1425
+ }
1426
+ ));
1427
+ hr.displayName = k.Separator.displayName;
1428
+ const gr = ({
1429
+ className: e,
1430
+ ...t
1431
+ }) => /* @__PURE__ */ n(
1432
+ "span",
1433
+ {
1434
+ className: d("ml-auto text-xs tracking-widest opacity-60", e),
1435
+ ...t
1436
+ }
1437
+ );
1438
+ gr.displayName = "DropdownMenuShortcut";
1439
+ const pr = m.forwardRef(({ className: e, children: t, ...r }, a) => /* @__PURE__ */ l(
1440
+ P.Root,
1441
+ {
1442
+ ref: a,
1443
+ className: d(
1444
+ "relative z-10 flex max-w-max flex-1 items-center justify-center",
1445
+ e
1446
+ ),
1447
+ ...r,
1448
+ children: [
1449
+ t,
1450
+ /* @__PURE__ */ n(Ue, {})
1451
+ ]
1452
+ }
1453
+ ));
1454
+ pr.displayName = P.Root.displayName;
1455
+ const br = m.forwardRef(({ className: e, ...t }, r) => /* @__PURE__ */ n(
1456
+ P.List,
1457
+ {
1458
+ ref: r,
1459
+ className: d(
1460
+ "group flex flex-1 list-none items-center justify-center space-x-1",
1461
+ e
1462
+ ),
1463
+ ...t
1464
+ }
1465
+ ));
1466
+ br.displayName = P.List.displayName;
1467
+ const Hn = P.Item, yr = L(
1468
+ "group inline-flex h-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50"
1469
+ ), xr = m.forwardRef(({ className: e, children: t, ...r }, a) => /* @__PURE__ */ l(
1470
+ P.Trigger,
1471
+ {
1472
+ ref: a,
1473
+ className: d(yr(), "group", e),
1474
+ ...r,
1475
+ children: [
1476
+ t,
1477
+ " ",
1478
+ /* @__PURE__ */ n(
1479
+ ce,
1480
+ {
1481
+ className: "relative top-[1px] ml-1 h-3 w-3 transition duration-200 group-data-[state=open]:rotate-180",
1482
+ "aria-hidden": "true"
1483
+ }
1484
+ )
1485
+ ]
1486
+ }
1487
+ ));
1488
+ xr.displayName = P.Trigger.displayName;
1489
+ const wr = m.forwardRef(({ className: e, ...t }, r) => /* @__PURE__ */ n(
1490
+ P.Content,
1491
+ {
1492
+ ref: r,
1493
+ className: d(
1494
+ "left-0 top-0 w-full data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 md:absolute md:w-auto",
1495
+ e
1496
+ ),
1497
+ ...t
1498
+ }
1499
+ ));
1500
+ wr.displayName = P.Content.displayName;
1501
+ const $n = P.Link, Ue = m.forwardRef(({ className: e, ...t }, r) => /* @__PURE__ */ n("div", { className: d("absolute left-0 top-full flex justify-center"), children: /* @__PURE__ */ n(
1502
+ P.Viewport,
1503
+ {
1504
+ className: d(
1505
+ "origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 md:w-[var(--radix-navigation-menu-viewport-width)]",
1506
+ e
1507
+ ),
1508
+ ref: r,
1509
+ ...t
1510
+ }
1511
+ ) }));
1512
+ Ue.displayName = P.Viewport.displayName;
1513
+ const vr = m.forwardRef(({ className: e, ...t }, r) => /* @__PURE__ */ n(
1514
+ P.Indicator,
1515
+ {
1516
+ ref: r,
1517
+ className: d(
1518
+ "top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52",
1519
+ e
1520
+ ),
1521
+ ...t,
1522
+ children: /* @__PURE__ */ n("div", { className: "relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md" })
1523
+ }
1524
+ ));
1525
+ vr.displayName = P.Indicator.displayName;
1526
+ const _n = _.Root, Nr = m.forwardRef(({ className: e, ...t }, r) => /* @__PURE__ */ n(
1527
+ _.List,
1528
+ {
1529
+ ref: r,
1530
+ className: d(
1531
+ "inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground",
1532
+ e
1533
+ ),
1534
+ ...t
1535
+ }
1536
+ ));
1537
+ Nr.displayName = _.List.displayName;
1538
+ const kr = m.forwardRef(({ className: e, ...t }, r) => /* @__PURE__ */ n(
1539
+ _.Trigger,
1540
+ {
1541
+ ref: r,
1542
+ className: d(
1543
+ "inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm",
1544
+ e
1545
+ ),
1546
+ ...t
1547
+ }
1548
+ ));
1549
+ kr.displayName = _.Trigger.displayName;
1550
+ const Mr = m.forwardRef(({ className: e, ...t }, r) => /* @__PURE__ */ n(
1551
+ _.Content,
1552
+ {
1553
+ ref: r,
1554
+ className: d(
1555
+ "mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
1556
+ e
1557
+ ),
1558
+ ...t
1559
+ }
1560
+ ));
1561
+ Mr.displayName = _.Content.displayName;
1562
+ function ue({
1563
+ value: e,
1564
+ onChange: t,
1565
+ onClear: r,
1566
+ placeholder: a = "Search...",
1567
+ showClearButton: o = !0,
1568
+ debounceMs: s = 300,
1569
+ className: i,
1570
+ id: c,
1571
+ name: u,
1572
+ ...f
1573
+ }) {
1574
+ const h = c || m.useId(), g = u || `search-input-${h}`, [p, C] = m.useState(e), y = m.useRef(null);
1575
+ m.useEffect(() => {
1576
+ C(e);
1577
+ }, [e]);
1578
+ const N = (E) => {
1579
+ const b = E.target.value;
1580
+ C(b), y.current && clearTimeout(y.current), y.current = setTimeout(() => {
1581
+ t(b);
1582
+ }, s);
1583
+ }, R = () => {
1584
+ C(""), t(""), r == null || r();
1585
+ };
1586
+ return m.useEffect(() => () => {
1587
+ y.current && clearTimeout(y.current);
1588
+ }, []), /* @__PURE__ */ l("div", { className: d("relative", i), children: [
1589
+ /* @__PURE__ */ n(bt, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground" }),
1590
+ /* @__PURE__ */ n(
1591
+ X,
1592
+ {
1593
+ ...f,
1594
+ id: h,
1595
+ name: g,
1596
+ value: p,
1597
+ onChange: N,
1598
+ placeholder: a,
1599
+ className: "pl-10 pr-10"
1600
+ }
1601
+ ),
1602
+ o && p && /* @__PURE__ */ n(
1603
+ j,
1604
+ {
1605
+ type: "button",
1606
+ variant: "ghost",
1607
+ size: "icon",
1608
+ className: "absolute right-1 top-1/2 h-6 w-6 -translate-y-1/2",
1609
+ onClick: R,
1610
+ children: /* @__PURE__ */ n(de, { className: "h-3 w-3" })
1611
+ }
1612
+ )
1613
+ ] });
1614
+ }
1615
+ function Bn(e = "") {
1616
+ const [t, r] = m.useState(e), [a, o] = m.useState(e);
1617
+ m.useEffect(() => {
1618
+ const i = setTimeout(() => {
1619
+ o(t);
1620
+ }, 300);
1621
+ return () => clearTimeout(i);
1622
+ }, [t]);
1623
+ const s = m.useCallback(() => {
1624
+ r(""), o("");
1625
+ }, []);
1626
+ return {
1627
+ search: t,
1628
+ debouncedSearch: a,
1629
+ setSearch: r,
1630
+ clearSearch: s
1631
+ };
1632
+ }
1633
+ const Cr = S.Root, qn = S.Group, Sr = S.Value, Qe = m.forwardRef(({ className: e, children: t, ...r }, a) => /* @__PURE__ */ l(
1634
+ S.Trigger,
1635
+ {
1636
+ ref: a,
1637
+ className: d(
1638
+ "flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",
1639
+ e
1640
+ ),
1641
+ ...r,
1642
+ children: [
1643
+ t,
1644
+ /* @__PURE__ */ n(S.Icon, { asChild: !0, children: /* @__PURE__ */ n(ce, { className: "h-4 w-4 opacity-50" }) })
1645
+ ]
1646
+ }
1647
+ ));
1648
+ Qe.displayName = S.Trigger.displayName;
1649
+ const Xe = m.forwardRef(({ className: e, ...t }, r) => /* @__PURE__ */ n(
1650
+ S.ScrollUpButton,
1651
+ {
1652
+ ref: r,
1653
+ className: d(
1654
+ "flex cursor-default items-center justify-center py-1",
1655
+ e
1656
+ ),
1657
+ ...t,
1658
+ children: /* @__PURE__ */ n(yt, { className: "h-4 w-4" })
1659
+ }
1660
+ ));
1661
+ Xe.displayName = S.ScrollUpButton.displayName;
1662
+ const Je = m.forwardRef(({ className: e, ...t }, r) => /* @__PURE__ */ n(
1663
+ S.ScrollDownButton,
1664
+ {
1665
+ ref: r,
1666
+ className: d(
1667
+ "flex cursor-default items-center justify-center py-1",
1668
+ e
1669
+ ),
1670
+ ...t,
1671
+ children: /* @__PURE__ */ n(ce, { className: "h-4 w-4" })
1672
+ }
1673
+ ));
1674
+ Je.displayName = S.ScrollDownButton.displayName;
1675
+ const Ke = m.forwardRef(({ className: e, children: t, position: r = "popper", ...a }, o) => /* @__PURE__ */ n(S.Portal, { children: /* @__PURE__ */ l(
1676
+ S.Content,
1677
+ {
1678
+ ref: o,
1679
+ className: d(
1680
+ "relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
1681
+ r === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
1682
+ e
1683
+ ),
1684
+ position: r,
1685
+ ...a,
1686
+ children: [
1687
+ /* @__PURE__ */ n(Xe, {}),
1688
+ /* @__PURE__ */ n(
1689
+ S.Viewport,
1690
+ {
1691
+ className: d(
1692
+ "p-1",
1693
+ r === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"
1694
+ ),
1695
+ children: t
1696
+ }
1697
+ ),
1698
+ /* @__PURE__ */ n(Je, {})
1699
+ ]
1700
+ }
1701
+ ) }));
1702
+ Ke.displayName = S.Content.displayName;
1703
+ const Dr = m.forwardRef(({ className: e, ...t }, r) => /* @__PURE__ */ n(
1704
+ S.Label,
1705
+ {
1706
+ ref: r,
1707
+ className: d("py-1.5 pl-8 pr-2 text-sm font-semibold", e),
1708
+ ...t
1709
+ }
1710
+ ));
1711
+ Dr.displayName = S.Label.displayName;
1712
+ const Ze = m.forwardRef(({ className: e, children: t, ...r }, a) => /* @__PURE__ */ l(
1713
+ S.Item,
1714
+ {
1715
+ ref: a,
1716
+ className: d(
1717
+ "relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
1718
+ e
1719
+ ),
1720
+ ...r,
1721
+ children: [
1722
+ /* @__PURE__ */ n("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ n(S.ItemIndicator, { children: /* @__PURE__ */ n(Oe, { className: "h-4 w-4" }) }) }),
1723
+ /* @__PURE__ */ n(S.ItemText, { children: t })
1724
+ ]
1725
+ }
1726
+ ));
1727
+ Ze.displayName = S.Item.displayName;
1728
+ const Tr = m.forwardRef(({ className: e, ...t }, r) => /* @__PURE__ */ n(
1729
+ S.Separator,
1730
+ {
1731
+ ref: r,
1732
+ className: d("-mx-1 my-1 h-px bg-muted", e),
1733
+ ...t
1734
+ }
1735
+ ));
1736
+ Tr.displayName = S.Separator.displayName;
1737
+ function ae({
1738
+ value: e,
1739
+ onValueChange: t,
1740
+ options: r,
1741
+ placeholder: a = "Select option...",
1742
+ label: o,
1743
+ className: s
1744
+ }) {
1745
+ const i = r.filter((c) => c.value !== "" && c.value != null);
1746
+ return /* @__PURE__ */ l("div", { className: d("space-y-2", s), children: [
1747
+ o && /* @__PURE__ */ n("label", { className: "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70", children: o }),
1748
+ /* @__PURE__ */ l(Cr, { value: e || void 0, onValueChange: t, children: [
1749
+ /* @__PURE__ */ n(Qe, { children: /* @__PURE__ */ n(Sr, { placeholder: a }) }),
1750
+ /* @__PURE__ */ n(Ke, { children: i.map((c) => !c.value || c.value === "" ? null : /* @__PURE__ */ n(Ze, { value: c.value, children: /* @__PURE__ */ l("div", { className: "flex items-center justify-between w-full", children: [
1751
+ /* @__PURE__ */ n("span", { children: c.label }),
1752
+ c.count !== void 0 && /* @__PURE__ */ l("span", { className: "text-xs text-muted-foreground ml-2", children: [
1753
+ "(",
1754
+ c.count,
1755
+ ")"
1756
+ ] })
1757
+ ] }) }, c.value)) })
1758
+ ] })
1759
+ ] });
1760
+ }
1761
+ function W(e) {
1762
+ const t = Object.prototype.toString.call(e);
1763
+ return e instanceof Date || typeof e == "object" && t === "[object Date]" ? new e.constructor(+e) : typeof e == "number" || t === "[object Number]" || typeof e == "string" || t === "[object String]" ? new Date(e) : /* @__PURE__ */ new Date(NaN);
1764
+ }
1765
+ function $(e, t) {
1766
+ return e instanceof Date ? new e.constructor(t) : new Date(t);
1767
+ }
1768
+ const et = 6048e5, Or = 864e5;
1769
+ let Rr = {};
1770
+ function oe() {
1771
+ return Rr;
1772
+ }
1773
+ function Z(e, t) {
1774
+ var c, u, f, h;
1775
+ const r = oe(), a = (t == null ? void 0 : t.weekStartsOn) ?? ((u = (c = t == null ? void 0 : t.locale) == null ? void 0 : c.options) == null ? void 0 : u.weekStartsOn) ?? r.weekStartsOn ?? ((h = (f = r.locale) == null ? void 0 : f.options) == null ? void 0 : h.weekStartsOn) ?? 0, o = W(e), s = o.getDay(), i = (s < a ? 7 : 0) + s - a;
1776
+ return o.setDate(o.getDate() - i), o.setHours(0, 0, 0, 0), o;
1777
+ }
1778
+ function ne(e) {
1779
+ return Z(e, { weekStartsOn: 1 });
1780
+ }
1781
+ function tt(e) {
1782
+ const t = W(e), r = t.getFullYear(), a = $(e, 0);
1783
+ a.setFullYear(r + 1, 0, 4), a.setHours(0, 0, 0, 0);
1784
+ const o = ne(a), s = $(e, 0);
1785
+ s.setFullYear(r, 0, 4), s.setHours(0, 0, 0, 0);
1786
+ const i = ne(s);
1787
+ return t.getTime() >= o.getTime() ? r + 1 : t.getTime() >= i.getTime() ? r : r - 1;
1788
+ }
1789
+ function be(e) {
1790
+ const t = W(e);
1791
+ return t.setHours(0, 0, 0, 0), t;
1792
+ }
1793
+ function ye(e) {
1794
+ const t = W(e), r = new Date(
1795
+ Date.UTC(
1796
+ t.getFullYear(),
1797
+ t.getMonth(),
1798
+ t.getDate(),
1799
+ t.getHours(),
1800
+ t.getMinutes(),
1801
+ t.getSeconds(),
1802
+ t.getMilliseconds()
1803
+ )
1804
+ );
1805
+ return r.setUTCFullYear(t.getFullYear()), +e - +r;
1806
+ }
1807
+ function Pr(e, t) {
1808
+ const r = be(e), a = be(t), o = +r - ye(r), s = +a - ye(a);
1809
+ return Math.round((o - s) / Or);
1810
+ }
1811
+ function Er(e) {
1812
+ const t = tt(e), r = $(e, 0);
1813
+ return r.setFullYear(t, 0, 4), r.setHours(0, 0, 0, 0), ne(r);
1814
+ }
1815
+ function Lr(e) {
1816
+ return e instanceof Date || typeof e == "object" && Object.prototype.toString.call(e) === "[object Date]";
1817
+ }
1818
+ function Fr(e) {
1819
+ if (!Lr(e) && typeof e != "number")
1820
+ return !1;
1821
+ const t = W(e);
1822
+ return !isNaN(Number(t));
1823
+ }
1824
+ function jr(e) {
1825
+ const t = W(e), r = $(e, 0);
1826
+ return r.setFullYear(t.getFullYear(), 0, 1), r.setHours(0, 0, 0, 0), r;
1827
+ }
1828
+ const Wr = {
1829
+ lessThanXSeconds: {
1830
+ one: "less than a second",
1831
+ other: "less than {{count}} seconds"
1832
+ },
1833
+ xSeconds: {
1834
+ one: "1 second",
1835
+ other: "{{count}} seconds"
1836
+ },
1837
+ halfAMinute: "half a minute",
1838
+ lessThanXMinutes: {
1839
+ one: "less than a minute",
1840
+ other: "less than {{count}} minutes"
1841
+ },
1842
+ xMinutes: {
1843
+ one: "1 minute",
1844
+ other: "{{count}} minutes"
1845
+ },
1846
+ aboutXHours: {
1847
+ one: "about 1 hour",
1848
+ other: "about {{count}} hours"
1849
+ },
1850
+ xHours: {
1851
+ one: "1 hour",
1852
+ other: "{{count}} hours"
1853
+ },
1854
+ xDays: {
1855
+ one: "1 day",
1856
+ other: "{{count}} days"
1857
+ },
1858
+ aboutXWeeks: {
1859
+ one: "about 1 week",
1860
+ other: "about {{count}} weeks"
1861
+ },
1862
+ xWeeks: {
1863
+ one: "1 week",
1864
+ other: "{{count}} weeks"
1865
+ },
1866
+ aboutXMonths: {
1867
+ one: "about 1 month",
1868
+ other: "about {{count}} months"
1869
+ },
1870
+ xMonths: {
1871
+ one: "1 month",
1872
+ other: "{{count}} months"
1873
+ },
1874
+ aboutXYears: {
1875
+ one: "about 1 year",
1876
+ other: "about {{count}} years"
1877
+ },
1878
+ xYears: {
1879
+ one: "1 year",
1880
+ other: "{{count}} years"
1881
+ },
1882
+ overXYears: {
1883
+ one: "over 1 year",
1884
+ other: "over {{count}} years"
1885
+ },
1886
+ almostXYears: {
1887
+ one: "almost 1 year",
1888
+ other: "almost {{count}} years"
1889
+ }
1890
+ }, Vr = (e, t, r) => {
1891
+ let a;
1892
+ const o = Wr[e];
1893
+ return typeof o == "string" ? a = o : t === 1 ? a = o.one : a = o.other.replace("{{count}}", t.toString()), r != null && r.addSuffix ? r.comparison && r.comparison > 0 ? "in " + a : a + " ago" : a;
1894
+ };
1895
+ function se(e) {
1896
+ return (t = {}) => {
1897
+ const r = t.width ? String(t.width) : e.defaultWidth;
1898
+ return e.formats[r] || e.formats[e.defaultWidth];
1899
+ };
1900
+ }
1901
+ const zr = {
1902
+ full: "EEEE, MMMM do, y",
1903
+ long: "MMMM do, y",
1904
+ medium: "MMM d, y",
1905
+ short: "MM/dd/yyyy"
1906
+ }, Ir = {
1907
+ full: "h:mm:ss a zzzz",
1908
+ long: "h:mm:ss a z",
1909
+ medium: "h:mm:ss a",
1910
+ short: "h:mm a"
1911
+ }, Ar = {
1912
+ full: "{{date}} 'at' {{time}}",
1913
+ long: "{{date}} 'at' {{time}}",
1914
+ medium: "{{date}}, {{time}}",
1915
+ short: "{{date}}, {{time}}"
1916
+ }, Yr = {
1917
+ date: se({
1918
+ formats: zr,
1919
+ defaultWidth: "full"
1920
+ }),
1921
+ time: se({
1922
+ formats: Ir,
1923
+ defaultWidth: "full"
1924
+ }),
1925
+ dateTime: se({
1926
+ formats: Ar,
1927
+ defaultWidth: "full"
1928
+ })
1929
+ }, Hr = {
1930
+ lastWeek: "'last' eeee 'at' p",
1931
+ yesterday: "'yesterday at' p",
1932
+ today: "'today at' p",
1933
+ tomorrow: "'tomorrow at' p",
1934
+ nextWeek: "eeee 'at' p",
1935
+ other: "P"
1936
+ }, $r = (e, t, r, a) => Hr[e];
1937
+ function G(e) {
1938
+ return (t, r) => {
1939
+ const a = r != null && r.context ? String(r.context) : "standalone";
1940
+ let o;
1941
+ if (a === "formatting" && e.formattingValues) {
1942
+ const i = e.defaultFormattingWidth || e.defaultWidth, c = r != null && r.width ? String(r.width) : i;
1943
+ o = e.formattingValues[c] || e.formattingValues[i];
1944
+ } else {
1945
+ const i = e.defaultWidth, c = r != null && r.width ? String(r.width) : e.defaultWidth;
1946
+ o = e.values[c] || e.values[i];
1947
+ }
1948
+ const s = e.argumentCallback ? e.argumentCallback(t) : t;
1949
+ return o[s];
1950
+ };
1951
+ }
1952
+ const _r = {
1953
+ narrow: ["B", "A"],
1954
+ abbreviated: ["BC", "AD"],
1955
+ wide: ["Before Christ", "Anno Domini"]
1956
+ }, Br = {
1957
+ narrow: ["1", "2", "3", "4"],
1958
+ abbreviated: ["Q1", "Q2", "Q3", "Q4"],
1959
+ wide: ["1st quarter", "2nd quarter", "3rd quarter", "4th quarter"]
1960
+ }, qr = {
1961
+ narrow: ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"],
1962
+ abbreviated: [
1963
+ "Jan",
1964
+ "Feb",
1965
+ "Mar",
1966
+ "Apr",
1967
+ "May",
1968
+ "Jun",
1969
+ "Jul",
1970
+ "Aug",
1971
+ "Sep",
1972
+ "Oct",
1973
+ "Nov",
1974
+ "Dec"
1975
+ ],
1976
+ wide: [
1977
+ "January",
1978
+ "February",
1979
+ "March",
1980
+ "April",
1981
+ "May",
1982
+ "June",
1983
+ "July",
1984
+ "August",
1985
+ "September",
1986
+ "October",
1987
+ "November",
1988
+ "December"
1989
+ ]
1990
+ }, Gr = {
1991
+ narrow: ["S", "M", "T", "W", "T", "F", "S"],
1992
+ short: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
1993
+ abbreviated: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
1994
+ wide: [
1995
+ "Sunday",
1996
+ "Monday",
1997
+ "Tuesday",
1998
+ "Wednesday",
1999
+ "Thursday",
2000
+ "Friday",
2001
+ "Saturday"
2002
+ ]
2003
+ }, Ur = {
2004
+ narrow: {
2005
+ am: "a",
2006
+ pm: "p",
2007
+ midnight: "mi",
2008
+ noon: "n",
2009
+ morning: "morning",
2010
+ afternoon: "afternoon",
2011
+ evening: "evening",
2012
+ night: "night"
2013
+ },
2014
+ abbreviated: {
2015
+ am: "AM",
2016
+ pm: "PM",
2017
+ midnight: "midnight",
2018
+ noon: "noon",
2019
+ morning: "morning",
2020
+ afternoon: "afternoon",
2021
+ evening: "evening",
2022
+ night: "night"
2023
+ },
2024
+ wide: {
2025
+ am: "a.m.",
2026
+ pm: "p.m.",
2027
+ midnight: "midnight",
2028
+ noon: "noon",
2029
+ morning: "morning",
2030
+ afternoon: "afternoon",
2031
+ evening: "evening",
2032
+ night: "night"
2033
+ }
2034
+ }, Qr = {
2035
+ narrow: {
2036
+ am: "a",
2037
+ pm: "p",
2038
+ midnight: "mi",
2039
+ noon: "n",
2040
+ morning: "in the morning",
2041
+ afternoon: "in the afternoon",
2042
+ evening: "in the evening",
2043
+ night: "at night"
2044
+ },
2045
+ abbreviated: {
2046
+ am: "AM",
2047
+ pm: "PM",
2048
+ midnight: "midnight",
2049
+ noon: "noon",
2050
+ morning: "in the morning",
2051
+ afternoon: "in the afternoon",
2052
+ evening: "in the evening",
2053
+ night: "at night"
2054
+ },
2055
+ wide: {
2056
+ am: "a.m.",
2057
+ pm: "p.m.",
2058
+ midnight: "midnight",
2059
+ noon: "noon",
2060
+ morning: "in the morning",
2061
+ afternoon: "in the afternoon",
2062
+ evening: "in the evening",
2063
+ night: "at night"
2064
+ }
2065
+ }, Xr = (e, t) => {
2066
+ const r = Number(e), a = r % 100;
2067
+ if (a > 20 || a < 10)
2068
+ switch (a % 10) {
2069
+ case 1:
2070
+ return r + "st";
2071
+ case 2:
2072
+ return r + "nd";
2073
+ case 3:
2074
+ return r + "rd";
2075
+ }
2076
+ return r + "th";
2077
+ }, Jr = {
2078
+ ordinalNumber: Xr,
2079
+ era: G({
2080
+ values: _r,
2081
+ defaultWidth: "wide"
2082
+ }),
2083
+ quarter: G({
2084
+ values: Br,
2085
+ defaultWidth: "wide",
2086
+ argumentCallback: (e) => e - 1
2087
+ }),
2088
+ month: G({
2089
+ values: qr,
2090
+ defaultWidth: "wide"
2091
+ }),
2092
+ day: G({
2093
+ values: Gr,
2094
+ defaultWidth: "wide"
2095
+ }),
2096
+ dayPeriod: G({
2097
+ values: Ur,
2098
+ defaultWidth: "wide",
2099
+ formattingValues: Qr,
2100
+ defaultFormattingWidth: "wide"
2101
+ })
2102
+ };
2103
+ function U(e) {
2104
+ return (t, r = {}) => {
2105
+ const a = r.width, o = a && e.matchPatterns[a] || e.matchPatterns[e.defaultMatchWidth], s = t.match(o);
2106
+ if (!s)
2107
+ return null;
2108
+ const i = s[0], c = a && e.parsePatterns[a] || e.parsePatterns[e.defaultParseWidth], u = Array.isArray(c) ? Zr(c, (g) => g.test(i)) : (
2109
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type
2110
+ Kr(c, (g) => g.test(i))
2111
+ );
2112
+ let f;
2113
+ f = e.valueCallback ? e.valueCallback(u) : u, f = r.valueCallback ? (
2114
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type
2115
+ r.valueCallback(f)
2116
+ ) : f;
2117
+ const h = t.slice(i.length);
2118
+ return { value: f, rest: h };
2119
+ };
2120
+ }
2121
+ function Kr(e, t) {
2122
+ for (const r in e)
2123
+ if (Object.prototype.hasOwnProperty.call(e, r) && t(e[r]))
2124
+ return r;
2125
+ }
2126
+ function Zr(e, t) {
2127
+ for (let r = 0; r < e.length; r++)
2128
+ if (t(e[r]))
2129
+ return r;
2130
+ }
2131
+ function ea(e) {
2132
+ return (t, r = {}) => {
2133
+ const a = t.match(e.matchPattern);
2134
+ if (!a) return null;
2135
+ const o = a[0], s = t.match(e.parsePattern);
2136
+ if (!s) return null;
2137
+ let i = e.valueCallback ? e.valueCallback(s[0]) : s[0];
2138
+ i = r.valueCallback ? r.valueCallback(i) : i;
2139
+ const c = t.slice(o.length);
2140
+ return { value: i, rest: c };
2141
+ };
2142
+ }
2143
+ const ta = /^(\d+)(th|st|nd|rd)?/i, ra = /\d+/i, aa = {
2144
+ narrow: /^(b|a)/i,
2145
+ abbreviated: /^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,
2146
+ wide: /^(before christ|before common era|anno domini|common era)/i
2147
+ }, na = {
2148
+ any: [/^b/i, /^(a|c)/i]
2149
+ }, oa = {
2150
+ narrow: /^[1234]/i,
2151
+ abbreviated: /^q[1234]/i,
2152
+ wide: /^[1234](th|st|nd|rd)? quarter/i
2153
+ }, sa = {
2154
+ any: [/1/i, /2/i, /3/i, /4/i]
2155
+ }, ia = {
2156
+ narrow: /^[jfmasond]/i,
2157
+ abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,
2158
+ wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i
2159
+ }, da = {
2160
+ narrow: [
2161
+ /^j/i,
2162
+ /^f/i,
2163
+ /^m/i,
2164
+ /^a/i,
2165
+ /^m/i,
2166
+ /^j/i,
2167
+ /^j/i,
2168
+ /^a/i,
2169
+ /^s/i,
2170
+ /^o/i,
2171
+ /^n/i,
2172
+ /^d/i
2173
+ ],
2174
+ any: [
2175
+ /^ja/i,
2176
+ /^f/i,
2177
+ /^mar/i,
2178
+ /^ap/i,
2179
+ /^may/i,
2180
+ /^jun/i,
2181
+ /^jul/i,
2182
+ /^au/i,
2183
+ /^s/i,
2184
+ /^o/i,
2185
+ /^n/i,
2186
+ /^d/i
2187
+ ]
2188
+ }, la = {
2189
+ narrow: /^[smtwf]/i,
2190
+ short: /^(su|mo|tu|we|th|fr|sa)/i,
2191
+ abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,
2192
+ wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i
2193
+ }, ca = {
2194
+ narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],
2195
+ any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]
2196
+ }, ua = {
2197
+ narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,
2198
+ any: /^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i
2199
+ }, ma = {
2200
+ any: {
2201
+ am: /^a/i,
2202
+ pm: /^p/i,
2203
+ midnight: /^mi/i,
2204
+ noon: /^no/i,
2205
+ morning: /morning/i,
2206
+ afternoon: /afternoon/i,
2207
+ evening: /evening/i,
2208
+ night: /night/i
2209
+ }
2210
+ }, fa = {
2211
+ ordinalNumber: ea({
2212
+ matchPattern: ta,
2213
+ parsePattern: ra,
2214
+ valueCallback: (e) => parseInt(e, 10)
2215
+ }),
2216
+ era: U({
2217
+ matchPatterns: aa,
2218
+ defaultMatchWidth: "wide",
2219
+ parsePatterns: na,
2220
+ defaultParseWidth: "any"
2221
+ }),
2222
+ quarter: U({
2223
+ matchPatterns: oa,
2224
+ defaultMatchWidth: "wide",
2225
+ parsePatterns: sa,
2226
+ defaultParseWidth: "any",
2227
+ valueCallback: (e) => e + 1
2228
+ }),
2229
+ month: U({
2230
+ matchPatterns: ia,
2231
+ defaultMatchWidth: "wide",
2232
+ parsePatterns: da,
2233
+ defaultParseWidth: "any"
2234
+ }),
2235
+ day: U({
2236
+ matchPatterns: la,
2237
+ defaultMatchWidth: "wide",
2238
+ parsePatterns: ca,
2239
+ defaultParseWidth: "any"
2240
+ }),
2241
+ dayPeriod: U({
2242
+ matchPatterns: ua,
2243
+ defaultMatchWidth: "any",
2244
+ parsePatterns: ma,
2245
+ defaultParseWidth: "any"
2246
+ })
2247
+ }, ha = {
2248
+ code: "en-US",
2249
+ formatDistance: Vr,
2250
+ formatLong: Yr,
2251
+ formatRelative: $r,
2252
+ localize: Jr,
2253
+ match: fa,
2254
+ options: {
2255
+ weekStartsOn: 0,
2256
+ firstWeekContainsDate: 1
2257
+ }
2258
+ };
2259
+ function ga(e) {
2260
+ const t = W(e);
2261
+ return Pr(t, jr(t)) + 1;
2262
+ }
2263
+ function pa(e) {
2264
+ const t = W(e), r = +ne(t) - +Er(t);
2265
+ return Math.round(r / et) + 1;
2266
+ }
2267
+ function rt(e, t) {
2268
+ var h, g, p, C;
2269
+ const r = W(e), a = r.getFullYear(), o = oe(), s = (t == null ? void 0 : t.firstWeekContainsDate) ?? ((g = (h = t == null ? void 0 : t.locale) == null ? void 0 : h.options) == null ? void 0 : g.firstWeekContainsDate) ?? o.firstWeekContainsDate ?? ((C = (p = o.locale) == null ? void 0 : p.options) == null ? void 0 : C.firstWeekContainsDate) ?? 1, i = $(e, 0);
2270
+ i.setFullYear(a + 1, 0, s), i.setHours(0, 0, 0, 0);
2271
+ const c = Z(i, t), u = $(e, 0);
2272
+ u.setFullYear(a, 0, s), u.setHours(0, 0, 0, 0);
2273
+ const f = Z(u, t);
2274
+ return r.getTime() >= c.getTime() ? a + 1 : r.getTime() >= f.getTime() ? a : a - 1;
2275
+ }
2276
+ function ba(e, t) {
2277
+ var c, u, f, h;
2278
+ const r = oe(), a = (t == null ? void 0 : t.firstWeekContainsDate) ?? ((u = (c = t == null ? void 0 : t.locale) == null ? void 0 : c.options) == null ? void 0 : u.firstWeekContainsDate) ?? r.firstWeekContainsDate ?? ((h = (f = r.locale) == null ? void 0 : f.options) == null ? void 0 : h.firstWeekContainsDate) ?? 1, o = rt(e, t), s = $(e, 0);
2279
+ return s.setFullYear(o, 0, a), s.setHours(0, 0, 0, 0), Z(s, t);
2280
+ }
2281
+ function ya(e, t) {
2282
+ const r = W(e), a = +Z(r, t) - +ba(r, t);
2283
+ return Math.round(a / et) + 1;
2284
+ }
2285
+ function w(e, t) {
2286
+ const r = e < 0 ? "-" : "", a = Math.abs(e).toString().padStart(t, "0");
2287
+ return r + a;
2288
+ }
2289
+ const V = {
2290
+ // Year
2291
+ y(e, t) {
2292
+ const r = e.getFullYear(), a = r > 0 ? r : 1 - r;
2293
+ return w(t === "yy" ? a % 100 : a, t.length);
2294
+ },
2295
+ // Month
2296
+ M(e, t) {
2297
+ const r = e.getMonth();
2298
+ return t === "M" ? String(r + 1) : w(r + 1, 2);
2299
+ },
2300
+ // Day of the month
2301
+ d(e, t) {
2302
+ return w(e.getDate(), t.length);
2303
+ },
2304
+ // AM or PM
2305
+ a(e, t) {
2306
+ const r = e.getHours() / 12 >= 1 ? "pm" : "am";
2307
+ switch (t) {
2308
+ case "a":
2309
+ case "aa":
2310
+ return r.toUpperCase();
2311
+ case "aaa":
2312
+ return r;
2313
+ case "aaaaa":
2314
+ return r[0];
2315
+ case "aaaa":
2316
+ default:
2317
+ return r === "am" ? "a.m." : "p.m.";
2318
+ }
2319
+ },
2320
+ // Hour [1-12]
2321
+ h(e, t) {
2322
+ return w(e.getHours() % 12 || 12, t.length);
2323
+ },
2324
+ // Hour [0-23]
2325
+ H(e, t) {
2326
+ return w(e.getHours(), t.length);
2327
+ },
2328
+ // Minute
2329
+ m(e, t) {
2330
+ return w(e.getMinutes(), t.length);
2331
+ },
2332
+ // Second
2333
+ s(e, t) {
2334
+ return w(e.getSeconds(), t.length);
2335
+ },
2336
+ // Fraction of second
2337
+ S(e, t) {
2338
+ const r = t.length, a = e.getMilliseconds(), o = Math.trunc(
2339
+ a * Math.pow(10, r - 3)
2340
+ );
2341
+ return w(o, t.length);
2342
+ }
2343
+ }, B = {
2344
+ midnight: "midnight",
2345
+ noon: "noon",
2346
+ morning: "morning",
2347
+ afternoon: "afternoon",
2348
+ evening: "evening",
2349
+ night: "night"
2350
+ }, xe = {
2351
+ // Era
2352
+ G: function(e, t, r) {
2353
+ const a = e.getFullYear() > 0 ? 1 : 0;
2354
+ switch (t) {
2355
+ case "G":
2356
+ case "GG":
2357
+ case "GGG":
2358
+ return r.era(a, { width: "abbreviated" });
2359
+ case "GGGGG":
2360
+ return r.era(a, { width: "narrow" });
2361
+ case "GGGG":
2362
+ default:
2363
+ return r.era(a, { width: "wide" });
2364
+ }
2365
+ },
2366
+ // Year
2367
+ y: function(e, t, r) {
2368
+ if (t === "yo") {
2369
+ const a = e.getFullYear(), o = a > 0 ? a : 1 - a;
2370
+ return r.ordinalNumber(o, { unit: "year" });
2371
+ }
2372
+ return V.y(e, t);
2373
+ },
2374
+ // Local week-numbering year
2375
+ Y: function(e, t, r, a) {
2376
+ const o = rt(e, a), s = o > 0 ? o : 1 - o;
2377
+ if (t === "YY") {
2378
+ const i = s % 100;
2379
+ return w(i, 2);
2380
+ }
2381
+ return t === "Yo" ? r.ordinalNumber(s, { unit: "year" }) : w(s, t.length);
2382
+ },
2383
+ // ISO week-numbering year
2384
+ R: function(e, t) {
2385
+ const r = tt(e);
2386
+ return w(r, t.length);
2387
+ },
2388
+ // Extended year. This is a single number designating the year of this calendar system.
2389
+ // The main difference between `y` and `u` localizers are B.C. years:
2390
+ // | Year | `y` | `u` |
2391
+ // |------|-----|-----|
2392
+ // | AC 1 | 1 | 1 |
2393
+ // | BC 1 | 1 | 0 |
2394
+ // | BC 2 | 2 | -1 |
2395
+ // Also `yy` always returns the last two digits of a year,
2396
+ // while `uu` pads single digit years to 2 characters and returns other years unchanged.
2397
+ u: function(e, t) {
2398
+ const r = e.getFullYear();
2399
+ return w(r, t.length);
2400
+ },
2401
+ // Quarter
2402
+ Q: function(e, t, r) {
2403
+ const a = Math.ceil((e.getMonth() + 1) / 3);
2404
+ switch (t) {
2405
+ case "Q":
2406
+ return String(a);
2407
+ case "QQ":
2408
+ return w(a, 2);
2409
+ case "Qo":
2410
+ return r.ordinalNumber(a, { unit: "quarter" });
2411
+ case "QQQ":
2412
+ return r.quarter(a, {
2413
+ width: "abbreviated",
2414
+ context: "formatting"
2415
+ });
2416
+ case "QQQQQ":
2417
+ return r.quarter(a, {
2418
+ width: "narrow",
2419
+ context: "formatting"
2420
+ });
2421
+ case "QQQQ":
2422
+ default:
2423
+ return r.quarter(a, {
2424
+ width: "wide",
2425
+ context: "formatting"
2426
+ });
2427
+ }
2428
+ },
2429
+ // Stand-alone quarter
2430
+ q: function(e, t, r) {
2431
+ const a = Math.ceil((e.getMonth() + 1) / 3);
2432
+ switch (t) {
2433
+ case "q":
2434
+ return String(a);
2435
+ case "qq":
2436
+ return w(a, 2);
2437
+ case "qo":
2438
+ return r.ordinalNumber(a, { unit: "quarter" });
2439
+ case "qqq":
2440
+ return r.quarter(a, {
2441
+ width: "abbreviated",
2442
+ context: "standalone"
2443
+ });
2444
+ case "qqqqq":
2445
+ return r.quarter(a, {
2446
+ width: "narrow",
2447
+ context: "standalone"
2448
+ });
2449
+ case "qqqq":
2450
+ default:
2451
+ return r.quarter(a, {
2452
+ width: "wide",
2453
+ context: "standalone"
2454
+ });
2455
+ }
2456
+ },
2457
+ // Month
2458
+ M: function(e, t, r) {
2459
+ const a = e.getMonth();
2460
+ switch (t) {
2461
+ case "M":
2462
+ case "MM":
2463
+ return V.M(e, t);
2464
+ case "Mo":
2465
+ return r.ordinalNumber(a + 1, { unit: "month" });
2466
+ case "MMM":
2467
+ return r.month(a, {
2468
+ width: "abbreviated",
2469
+ context: "formatting"
2470
+ });
2471
+ case "MMMMM":
2472
+ return r.month(a, {
2473
+ width: "narrow",
2474
+ context: "formatting"
2475
+ });
2476
+ case "MMMM":
2477
+ default:
2478
+ return r.month(a, { width: "wide", context: "formatting" });
2479
+ }
2480
+ },
2481
+ // Stand-alone month
2482
+ L: function(e, t, r) {
2483
+ const a = e.getMonth();
2484
+ switch (t) {
2485
+ case "L":
2486
+ return String(a + 1);
2487
+ case "LL":
2488
+ return w(a + 1, 2);
2489
+ case "Lo":
2490
+ return r.ordinalNumber(a + 1, { unit: "month" });
2491
+ case "LLL":
2492
+ return r.month(a, {
2493
+ width: "abbreviated",
2494
+ context: "standalone"
2495
+ });
2496
+ case "LLLLL":
2497
+ return r.month(a, {
2498
+ width: "narrow",
2499
+ context: "standalone"
2500
+ });
2501
+ case "LLLL":
2502
+ default:
2503
+ return r.month(a, { width: "wide", context: "standalone" });
2504
+ }
2505
+ },
2506
+ // Local week of year
2507
+ w: function(e, t, r, a) {
2508
+ const o = ya(e, a);
2509
+ return t === "wo" ? r.ordinalNumber(o, { unit: "week" }) : w(o, t.length);
2510
+ },
2511
+ // ISO week of year
2512
+ I: function(e, t, r) {
2513
+ const a = pa(e);
2514
+ return t === "Io" ? r.ordinalNumber(a, { unit: "week" }) : w(a, t.length);
2515
+ },
2516
+ // Day of the month
2517
+ d: function(e, t, r) {
2518
+ return t === "do" ? r.ordinalNumber(e.getDate(), { unit: "date" }) : V.d(e, t);
2519
+ },
2520
+ // Day of year
2521
+ D: function(e, t, r) {
2522
+ const a = ga(e);
2523
+ return t === "Do" ? r.ordinalNumber(a, { unit: "dayOfYear" }) : w(a, t.length);
2524
+ },
2525
+ // Day of week
2526
+ E: function(e, t, r) {
2527
+ const a = e.getDay();
2528
+ switch (t) {
2529
+ case "E":
2530
+ case "EE":
2531
+ case "EEE":
2532
+ return r.day(a, {
2533
+ width: "abbreviated",
2534
+ context: "formatting"
2535
+ });
2536
+ case "EEEEE":
2537
+ return r.day(a, {
2538
+ width: "narrow",
2539
+ context: "formatting"
2540
+ });
2541
+ case "EEEEEE":
2542
+ return r.day(a, {
2543
+ width: "short",
2544
+ context: "formatting"
2545
+ });
2546
+ case "EEEE":
2547
+ default:
2548
+ return r.day(a, {
2549
+ width: "wide",
2550
+ context: "formatting"
2551
+ });
2552
+ }
2553
+ },
2554
+ // Local day of week
2555
+ e: function(e, t, r, a) {
2556
+ const o = e.getDay(), s = (o - a.weekStartsOn + 8) % 7 || 7;
2557
+ switch (t) {
2558
+ case "e":
2559
+ return String(s);
2560
+ case "ee":
2561
+ return w(s, 2);
2562
+ case "eo":
2563
+ return r.ordinalNumber(s, { unit: "day" });
2564
+ case "eee":
2565
+ return r.day(o, {
2566
+ width: "abbreviated",
2567
+ context: "formatting"
2568
+ });
2569
+ case "eeeee":
2570
+ return r.day(o, {
2571
+ width: "narrow",
2572
+ context: "formatting"
2573
+ });
2574
+ case "eeeeee":
2575
+ return r.day(o, {
2576
+ width: "short",
2577
+ context: "formatting"
2578
+ });
2579
+ case "eeee":
2580
+ default:
2581
+ return r.day(o, {
2582
+ width: "wide",
2583
+ context: "formatting"
2584
+ });
2585
+ }
2586
+ },
2587
+ // Stand-alone local day of week
2588
+ c: function(e, t, r, a) {
2589
+ const o = e.getDay(), s = (o - a.weekStartsOn + 8) % 7 || 7;
2590
+ switch (t) {
2591
+ case "c":
2592
+ return String(s);
2593
+ case "cc":
2594
+ return w(s, t.length);
2595
+ case "co":
2596
+ return r.ordinalNumber(s, { unit: "day" });
2597
+ case "ccc":
2598
+ return r.day(o, {
2599
+ width: "abbreviated",
2600
+ context: "standalone"
2601
+ });
2602
+ case "ccccc":
2603
+ return r.day(o, {
2604
+ width: "narrow",
2605
+ context: "standalone"
2606
+ });
2607
+ case "cccccc":
2608
+ return r.day(o, {
2609
+ width: "short",
2610
+ context: "standalone"
2611
+ });
2612
+ case "cccc":
2613
+ default:
2614
+ return r.day(o, {
2615
+ width: "wide",
2616
+ context: "standalone"
2617
+ });
2618
+ }
2619
+ },
2620
+ // ISO day of week
2621
+ i: function(e, t, r) {
2622
+ const a = e.getDay(), o = a === 0 ? 7 : a;
2623
+ switch (t) {
2624
+ case "i":
2625
+ return String(o);
2626
+ case "ii":
2627
+ return w(o, t.length);
2628
+ case "io":
2629
+ return r.ordinalNumber(o, { unit: "day" });
2630
+ case "iii":
2631
+ return r.day(a, {
2632
+ width: "abbreviated",
2633
+ context: "formatting"
2634
+ });
2635
+ case "iiiii":
2636
+ return r.day(a, {
2637
+ width: "narrow",
2638
+ context: "formatting"
2639
+ });
2640
+ case "iiiiii":
2641
+ return r.day(a, {
2642
+ width: "short",
2643
+ context: "formatting"
2644
+ });
2645
+ case "iiii":
2646
+ default:
2647
+ return r.day(a, {
2648
+ width: "wide",
2649
+ context: "formatting"
2650
+ });
2651
+ }
2652
+ },
2653
+ // AM or PM
2654
+ a: function(e, t, r) {
2655
+ const o = e.getHours() / 12 >= 1 ? "pm" : "am";
2656
+ switch (t) {
2657
+ case "a":
2658
+ case "aa":
2659
+ return r.dayPeriod(o, {
2660
+ width: "abbreviated",
2661
+ context: "formatting"
2662
+ });
2663
+ case "aaa":
2664
+ return r.dayPeriod(o, {
2665
+ width: "abbreviated",
2666
+ context: "formatting"
2667
+ }).toLowerCase();
2668
+ case "aaaaa":
2669
+ return r.dayPeriod(o, {
2670
+ width: "narrow",
2671
+ context: "formatting"
2672
+ });
2673
+ case "aaaa":
2674
+ default:
2675
+ return r.dayPeriod(o, {
2676
+ width: "wide",
2677
+ context: "formatting"
2678
+ });
2679
+ }
2680
+ },
2681
+ // AM, PM, midnight, noon
2682
+ b: function(e, t, r) {
2683
+ const a = e.getHours();
2684
+ let o;
2685
+ switch (a === 12 ? o = B.noon : a === 0 ? o = B.midnight : o = a / 12 >= 1 ? "pm" : "am", t) {
2686
+ case "b":
2687
+ case "bb":
2688
+ return r.dayPeriod(o, {
2689
+ width: "abbreviated",
2690
+ context: "formatting"
2691
+ });
2692
+ case "bbb":
2693
+ return r.dayPeriod(o, {
2694
+ width: "abbreviated",
2695
+ context: "formatting"
2696
+ }).toLowerCase();
2697
+ case "bbbbb":
2698
+ return r.dayPeriod(o, {
2699
+ width: "narrow",
2700
+ context: "formatting"
2701
+ });
2702
+ case "bbbb":
2703
+ default:
2704
+ return r.dayPeriod(o, {
2705
+ width: "wide",
2706
+ context: "formatting"
2707
+ });
2708
+ }
2709
+ },
2710
+ // in the morning, in the afternoon, in the evening, at night
2711
+ B: function(e, t, r) {
2712
+ const a = e.getHours();
2713
+ let o;
2714
+ switch (a >= 17 ? o = B.evening : a >= 12 ? o = B.afternoon : a >= 4 ? o = B.morning : o = B.night, t) {
2715
+ case "B":
2716
+ case "BB":
2717
+ case "BBB":
2718
+ return r.dayPeriod(o, {
2719
+ width: "abbreviated",
2720
+ context: "formatting"
2721
+ });
2722
+ case "BBBBB":
2723
+ return r.dayPeriod(o, {
2724
+ width: "narrow",
2725
+ context: "formatting"
2726
+ });
2727
+ case "BBBB":
2728
+ default:
2729
+ return r.dayPeriod(o, {
2730
+ width: "wide",
2731
+ context: "formatting"
2732
+ });
2733
+ }
2734
+ },
2735
+ // Hour [1-12]
2736
+ h: function(e, t, r) {
2737
+ if (t === "ho") {
2738
+ let a = e.getHours() % 12;
2739
+ return a === 0 && (a = 12), r.ordinalNumber(a, { unit: "hour" });
2740
+ }
2741
+ return V.h(e, t);
2742
+ },
2743
+ // Hour [0-23]
2744
+ H: function(e, t, r) {
2745
+ return t === "Ho" ? r.ordinalNumber(e.getHours(), { unit: "hour" }) : V.H(e, t);
2746
+ },
2747
+ // Hour [0-11]
2748
+ K: function(e, t, r) {
2749
+ const a = e.getHours() % 12;
2750
+ return t === "Ko" ? r.ordinalNumber(a, { unit: "hour" }) : w(a, t.length);
2751
+ },
2752
+ // Hour [1-24]
2753
+ k: function(e, t, r) {
2754
+ let a = e.getHours();
2755
+ return a === 0 && (a = 24), t === "ko" ? r.ordinalNumber(a, { unit: "hour" }) : w(a, t.length);
2756
+ },
2757
+ // Minute
2758
+ m: function(e, t, r) {
2759
+ return t === "mo" ? r.ordinalNumber(e.getMinutes(), { unit: "minute" }) : V.m(e, t);
2760
+ },
2761
+ // Second
2762
+ s: function(e, t, r) {
2763
+ return t === "so" ? r.ordinalNumber(e.getSeconds(), { unit: "second" }) : V.s(e, t);
2764
+ },
2765
+ // Fraction of second
2766
+ S: function(e, t) {
2767
+ return V.S(e, t);
2768
+ },
2769
+ // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)
2770
+ X: function(e, t, r) {
2771
+ const a = e.getTimezoneOffset();
2772
+ if (a === 0)
2773
+ return "Z";
2774
+ switch (t) {
2775
+ case "X":
2776
+ return ve(a);
2777
+ case "XXXX":
2778
+ case "XX":
2779
+ return A(a);
2780
+ case "XXXXX":
2781
+ case "XXX":
2782
+ default:
2783
+ return A(a, ":");
2784
+ }
2785
+ },
2786
+ // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)
2787
+ x: function(e, t, r) {
2788
+ const a = e.getTimezoneOffset();
2789
+ switch (t) {
2790
+ case "x":
2791
+ return ve(a);
2792
+ case "xxxx":
2793
+ case "xx":
2794
+ return A(a);
2795
+ case "xxxxx":
2796
+ case "xxx":
2797
+ default:
2798
+ return A(a, ":");
2799
+ }
2800
+ },
2801
+ // Timezone (GMT)
2802
+ O: function(e, t, r) {
2803
+ const a = e.getTimezoneOffset();
2804
+ switch (t) {
2805
+ case "O":
2806
+ case "OO":
2807
+ case "OOO":
2808
+ return "GMT" + we(a, ":");
2809
+ case "OOOO":
2810
+ default:
2811
+ return "GMT" + A(a, ":");
2812
+ }
2813
+ },
2814
+ // Timezone (specific non-location)
2815
+ z: function(e, t, r) {
2816
+ const a = e.getTimezoneOffset();
2817
+ switch (t) {
2818
+ case "z":
2819
+ case "zz":
2820
+ case "zzz":
2821
+ return "GMT" + we(a, ":");
2822
+ case "zzzz":
2823
+ default:
2824
+ return "GMT" + A(a, ":");
2825
+ }
2826
+ },
2827
+ // Seconds timestamp
2828
+ t: function(e, t, r) {
2829
+ const a = Math.trunc(e.getTime() / 1e3);
2830
+ return w(a, t.length);
2831
+ },
2832
+ // Milliseconds timestamp
2833
+ T: function(e, t, r) {
2834
+ const a = e.getTime();
2835
+ return w(a, t.length);
2836
+ }
2837
+ };
2838
+ function we(e, t = "") {
2839
+ const r = e > 0 ? "-" : "+", a = Math.abs(e), o = Math.trunc(a / 60), s = a % 60;
2840
+ return s === 0 ? r + String(o) : r + String(o) + t + w(s, 2);
2841
+ }
2842
+ function ve(e, t) {
2843
+ return e % 60 === 0 ? (e > 0 ? "-" : "+") + w(Math.abs(e) / 60, 2) : A(e, t);
2844
+ }
2845
+ function A(e, t = "") {
2846
+ const r = e > 0 ? "-" : "+", a = Math.abs(e), o = w(Math.trunc(a / 60), 2), s = w(a % 60, 2);
2847
+ return r + o + t + s;
2848
+ }
2849
+ const Ne = (e, t) => {
2850
+ switch (e) {
2851
+ case "P":
2852
+ return t.date({ width: "short" });
2853
+ case "PP":
2854
+ return t.date({ width: "medium" });
2855
+ case "PPP":
2856
+ return t.date({ width: "long" });
2857
+ case "PPPP":
2858
+ default:
2859
+ return t.date({ width: "full" });
2860
+ }
2861
+ }, at = (e, t) => {
2862
+ switch (e) {
2863
+ case "p":
2864
+ return t.time({ width: "short" });
2865
+ case "pp":
2866
+ return t.time({ width: "medium" });
2867
+ case "ppp":
2868
+ return t.time({ width: "long" });
2869
+ case "pppp":
2870
+ default:
2871
+ return t.time({ width: "full" });
2872
+ }
2873
+ }, xa = (e, t) => {
2874
+ const r = e.match(/(P+)(p+)?/) || [], a = r[1], o = r[2];
2875
+ if (!o)
2876
+ return Ne(e, t);
2877
+ let s;
2878
+ switch (a) {
2879
+ case "P":
2880
+ s = t.dateTime({ width: "short" });
2881
+ break;
2882
+ case "PP":
2883
+ s = t.dateTime({ width: "medium" });
2884
+ break;
2885
+ case "PPP":
2886
+ s = t.dateTime({ width: "long" });
2887
+ break;
2888
+ case "PPPP":
2889
+ default:
2890
+ s = t.dateTime({ width: "full" });
2891
+ break;
2892
+ }
2893
+ return s.replace("{{date}}", Ne(a, t)).replace("{{time}}", at(o, t));
2894
+ }, wa = {
2895
+ p: at,
2896
+ P: xa
2897
+ }, va = /^D+$/, Na = /^Y+$/, ka = ["D", "DD", "YY", "YYYY"];
2898
+ function Ma(e) {
2899
+ return va.test(e);
2900
+ }
2901
+ function Ca(e) {
2902
+ return Na.test(e);
2903
+ }
2904
+ function Sa(e, t, r) {
2905
+ const a = Da(e, t, r);
2906
+ if (console.warn(a), ka.includes(e)) throw new RangeError(a);
2907
+ }
2908
+ function Da(e, t, r) {
2909
+ const a = e[0] === "Y" ? "years" : "days of the month";
2910
+ return `Use \`${e.toLowerCase()}\` instead of \`${e}\` (in \`${t}\`) for formatting ${a} to the input \`${r}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`;
2911
+ }
2912
+ const Ta = /[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g, Oa = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g, Ra = /^'([^]*?)'?$/, Pa = /''/g, Ea = /[a-zA-Z]/;
2913
+ function ie(e, t, r) {
2914
+ var h, g, p, C;
2915
+ const a = oe(), o = a.locale ?? ha, s = a.firstWeekContainsDate ?? ((g = (h = a.locale) == null ? void 0 : h.options) == null ? void 0 : g.firstWeekContainsDate) ?? 1, i = a.weekStartsOn ?? ((C = (p = a.locale) == null ? void 0 : p.options) == null ? void 0 : C.weekStartsOn) ?? 0, c = W(e);
2916
+ if (!Fr(c))
2917
+ throw new RangeError("Invalid time value");
2918
+ let u = t.match(Oa).map((y) => {
2919
+ const N = y[0];
2920
+ if (N === "p" || N === "P") {
2921
+ const R = wa[N];
2922
+ return R(y, o.formatLong);
2923
+ }
2924
+ return y;
2925
+ }).join("").match(Ta).map((y) => {
2926
+ if (y === "''")
2927
+ return { isToken: !1, value: "'" };
2928
+ const N = y[0];
2929
+ if (N === "'")
2930
+ return { isToken: !1, value: La(y) };
2931
+ if (xe[N])
2932
+ return { isToken: !0, value: y };
2933
+ if (N.match(Ea))
2934
+ throw new RangeError(
2935
+ "Format string contains an unescaped latin alphabet character `" + N + "`"
2936
+ );
2937
+ return { isToken: !1, value: y };
2938
+ });
2939
+ o.localize.preprocessor && (u = o.localize.preprocessor(c, u));
2940
+ const f = {
2941
+ firstWeekContainsDate: s,
2942
+ weekStartsOn: i,
2943
+ locale: o
2944
+ };
2945
+ return u.map((y) => {
2946
+ if (!y.isToken) return y.value;
2947
+ const N = y.value;
2948
+ (Ca(N) || Ma(N)) && Sa(N, t, String(e));
2949
+ const R = xe[N[0]];
2950
+ return R(c, N, o.localize, f);
2951
+ }).join("");
2952
+ }
2953
+ function La(e) {
2954
+ const t = e.match(Ra);
2955
+ return t ? t[1].replace(Pa, "'") : e;
2956
+ }
2957
+ function nt({
2958
+ value: e,
2959
+ onChange: t,
2960
+ placeholder: r = "Pick a date range",
2961
+ className: a,
2962
+ disabled: o = !1
2963
+ }) {
2964
+ const [s, i] = m.useState(!1), c = (h) => h.from ? h.to ? `${ie(h.from, "LLL dd, y")} - ${ie(h.to, "LLL dd, y")}` : ie(h.from, "LLL dd, y") : r, u = (h) => {
2965
+ if (!h) {
2966
+ t({ from: void 0, to: void 0 });
2967
+ return;
2968
+ }
2969
+ !e.from || e.from && e.to ? t({ from: h, to: void 0 }) : e.from && !e.to && (h < e.from ? t({ from: h, to: e.from }) : t({ from: e.from, to: h }), i(!1));
2970
+ }, f = () => {
2971
+ t({ from: void 0, to: void 0 });
2972
+ };
2973
+ return /* @__PURE__ */ l("div", { className: d("relative", a), children: [
2974
+ /* @__PURE__ */ l(
2975
+ j,
2976
+ {
2977
+ variant: "outline",
2978
+ className: d(
2979
+ "w-full justify-start text-left font-normal",
2980
+ !e.from && "text-muted-foreground"
2981
+ ),
2982
+ onClick: () => i(!s),
2983
+ disabled: o,
2984
+ children: [
2985
+ /* @__PURE__ */ n(xt, { className: "mr-2 h-4 w-4" }),
2986
+ c(e)
2987
+ ]
2988
+ }
2989
+ ),
2990
+ s && /* @__PURE__ */ n("div", { className: "absolute top-full left-0 z-50 mt-1 w-full rounded-md border bg-popover p-3 shadow-lg", children: /* @__PURE__ */ l("div", { className: "space-y-2", children: [
2991
+ /* @__PURE__ */ n("div", { className: "text-sm font-medium", children: "Select Date Range" }),
2992
+ /* @__PURE__ */ l("div", { className: "grid grid-cols-7 gap-1 text-xs", children: [
2993
+ ["S", "M", "T", "W", "T", "F", "S"].map((h) => /* @__PURE__ */ n("div", { className: "p-2 text-center font-medium text-muted-foreground", children: h }, h)),
2994
+ Array.from({ length: 35 }, (h, g) => {
2995
+ const p = /* @__PURE__ */ new Date();
2996
+ p.setDate(p.getDate() - p.getDay() + g);
2997
+ const C = e.from && p.toDateString() === e.from.toDateString() || e.to && p.toDateString() === e.to.toDateString(), y = e.from && e.to && p > e.from && p < e.to;
2998
+ return /* @__PURE__ */ n(
2999
+ "button",
3000
+ {
3001
+ className: d(
3002
+ "h-8 w-8 rounded text-sm hover:bg-accent",
3003
+ C && "bg-primary text-primary-foreground",
3004
+ y && "bg-accent/50"
3005
+ ),
3006
+ onClick: () => u(p),
3007
+ children: p.getDate()
3008
+ },
3009
+ g
3010
+ );
3011
+ })
3012
+ ] }),
3013
+ /* @__PURE__ */ l("div", { className: "flex justify-between pt-2", children: [
3014
+ /* @__PURE__ */ n(
3015
+ j,
3016
+ {
3017
+ variant: "outline",
3018
+ size: "sm",
3019
+ onClick: f,
3020
+ children: "Clear"
3021
+ }
3022
+ ),
3023
+ /* @__PURE__ */ n(
3024
+ j,
3025
+ {
3026
+ variant: "outline",
3027
+ size: "sm",
3028
+ onClick: () => i(!1),
3029
+ children: "Close"
3030
+ }
3031
+ )
3032
+ ] })
3033
+ ] }) })
3034
+ ] });
3035
+ }
3036
+ function Gn(e = { from: void 0, to: void 0 }) {
3037
+ const [t, r] = m.useState(e), a = m.useCallback((i) => {
3038
+ r(i);
3039
+ }, []), o = m.useCallback(() => {
3040
+ r({ from: void 0, to: void 0 });
3041
+ }, []), s = t.from && t.to;
3042
+ return {
3043
+ range: t,
3044
+ setDateRange: a,
3045
+ clearRange: o,
3046
+ isRangeComplete: s
3047
+ };
3048
+ }
3049
+ function Fa({
3050
+ value: e,
3051
+ onChange: t,
3052
+ min: r = 0,
3053
+ max: a = 1e3,
3054
+ step: o = 10,
3055
+ currency: s = "€",
3056
+ className: i
3057
+ }) {
3058
+ var v, I;
3059
+ const c = m.useId(), u = m.useId(), [f, h] = m.useState(((v = e.min) == null ? void 0 : v.toString()) || ""), [g, p] = m.useState(((I = e.max) == null ? void 0 : I.toString()) || "");
3060
+ m.useEffect(() => {
3061
+ var T, x;
3062
+ h(((T = e.min) == null ? void 0 : T.toString()) || ""), p(((x = e.max) == null ? void 0 : x.toString()) || "");
3063
+ }, [e.min, e.max]);
3064
+ const C = (T) => {
3065
+ const x = T.target.value;
3066
+ h(x);
3067
+ const D = x === "" ? null : Math.max(r, parseInt(x) || r), O = e.max ? Math.min(a, e.max) : null;
3068
+ D !== null && O !== null && D > O ? t({ min: D, max: D }) : t({ min: D, max: O });
3069
+ }, y = (T) => {
3070
+ const x = T.target.value;
3071
+ p(x);
3072
+ const D = x === "" ? null : Math.min(a, parseInt(x) || a), O = e.min ? Math.max(r, e.min) : null;
3073
+ O !== null && D !== null && O > D ? t({ min: D, max: D }) : t({ min: O, max: D });
3074
+ }, N = (T, x) => {
3075
+ if (T === "min") {
3076
+ const D = Math.max(r, Math.min(a, x)), O = e.max ? Math.max(D, e.max) : null;
3077
+ t({ min: D, max: O });
3078
+ } else {
3079
+ const D = Math.max(r, Math.min(a, x)), O = e.min ? Math.min(D, e.min) : null;
3080
+ t({ min: O, max: D });
3081
+ }
3082
+ }, R = () => {
3083
+ h(""), p(""), t({ min: null, max: null });
3084
+ }, E = e.min || r, b = e.max || a;
3085
+ return /* @__PURE__ */ l("div", { className: d("space-y-4", i), children: [
3086
+ /* @__PURE__ */ l("div", { className: "space-y-2", children: [
3087
+ /* @__PURE__ */ n(te, { children: "Price Range" }),
3088
+ /* @__PURE__ */ l("div", { className: "flex items-center space-x-2", children: [
3089
+ /* @__PURE__ */ l("div", { className: "flex-1", children: [
3090
+ /* @__PURE__ */ n(te, { htmlFor: c, className: "text-xs text-muted-foreground", children: "Min" }),
3091
+ /* @__PURE__ */ l("div", { className: "relative", children: [
3092
+ /* @__PURE__ */ n("span", { className: "absolute left-3 top-1/2 -translate-y-1/2 text-sm text-muted-foreground", children: s }),
3093
+ /* @__PURE__ */ n(
3094
+ X,
3095
+ {
3096
+ id: c,
3097
+ name: `min-price-${c}`,
3098
+ type: "number",
3099
+ value: f,
3100
+ onChange: C,
3101
+ placeholder: r.toString(),
3102
+ min: r,
3103
+ max: a,
3104
+ step: o,
3105
+ className: "pl-8"
3106
+ }
3107
+ )
3108
+ ] })
3109
+ ] }),
3110
+ /* @__PURE__ */ l("div", { className: "flex-1", children: [
3111
+ /* @__PURE__ */ n(te, { htmlFor: u, className: "text-xs text-muted-foreground", children: "Max" }),
3112
+ /* @__PURE__ */ l("div", { className: "relative", children: [
3113
+ /* @__PURE__ */ n("span", { className: "absolute left-3 top-1/2 -translate-y-1/2 text-sm text-muted-foreground", children: s }),
3114
+ /* @__PURE__ */ n(
3115
+ X,
3116
+ {
3117
+ id: u,
3118
+ name: `max-price-${u}`,
3119
+ type: "number",
3120
+ value: g,
3121
+ onChange: y,
3122
+ placeholder: a.toString(),
3123
+ min: r,
3124
+ max: a,
3125
+ step: o,
3126
+ className: "pl-8"
3127
+ }
3128
+ )
3129
+ ] })
3130
+ ] })
3131
+ ] })
3132
+ ] }),
3133
+ /* @__PURE__ */ l("div", { className: "space-y-2", children: [
3134
+ /* @__PURE__ */ l("div", { className: "relative", children: [
3135
+ /* @__PURE__ */ n(
3136
+ "input",
3137
+ {
3138
+ type: "range",
3139
+ id: `${c}-slider`,
3140
+ name: `min-price-slider-${c}`,
3141
+ min: r,
3142
+ max: a,
3143
+ step: o,
3144
+ value: E,
3145
+ onChange: (T) => N("min", parseInt(T.target.value)),
3146
+ className: "absolute w-full h-2 bg-transparent appearance-none cursor-pointer slider-thumb",
3147
+ "aria-label": "Minimum price"
3148
+ }
3149
+ ),
3150
+ /* @__PURE__ */ n(
3151
+ "input",
3152
+ {
3153
+ type: "range",
3154
+ id: `${u}-slider`,
3155
+ name: `max-price-slider-${u}`,
3156
+ min: r,
3157
+ max: a,
3158
+ step: o,
3159
+ value: b,
3160
+ onChange: (T) => N("max", parseInt(T.target.value)),
3161
+ className: "absolute w-full h-2 bg-transparent appearance-none cursor-pointer slider-thumb",
3162
+ "aria-label": "Maximum price"
3163
+ }
3164
+ ),
3165
+ /* @__PURE__ */ n("div", { className: "h-2 bg-muted rounded-full", children: /* @__PURE__ */ n(
3166
+ "div",
3167
+ {
3168
+ className: "h-2 bg-primary rounded-full",
3169
+ style: {
3170
+ left: `${(E - r) / (a - r) * 100}%`,
3171
+ width: `${(b - E) / (a - r) * 100}%`
3172
+ }
3173
+ }
3174
+ ) })
3175
+ ] }),
3176
+ /* @__PURE__ */ l("div", { className: "flex justify-between text-xs text-muted-foreground", children: [
3177
+ /* @__PURE__ */ l("span", { children: [
3178
+ s,
3179
+ r
3180
+ ] }),
3181
+ /* @__PURE__ */ l("span", { children: [
3182
+ s,
3183
+ a
3184
+ ] })
3185
+ ] })
3186
+ ] }),
3187
+ /* @__PURE__ */ l("div", { className: "flex justify-between items-center", children: [
3188
+ /* @__PURE__ */ n("span", { className: "text-sm text-muted-foreground", children: e.min !== null || e.max !== null ? `${s}${e.min || r} - ${s}${e.max || a}` : "Any price" }),
3189
+ /* @__PURE__ */ n(
3190
+ "button",
3191
+ {
3192
+ type: "button",
3193
+ onClick: R,
3194
+ className: "text-xs text-muted-foreground hover:text-foreground",
3195
+ children: "Clear"
3196
+ }
3197
+ )
3198
+ ] })
3199
+ ] });
3200
+ }
3201
+ function Un(e = { min: null, max: null }) {
3202
+ const [t, r] = m.useState(e), a = m.useCallback((i) => {
3203
+ r(i);
3204
+ }, []), o = m.useCallback(() => {
3205
+ r({ min: null, max: null });
3206
+ }, []), s = t.min !== null || t.max !== null;
3207
+ return {
3208
+ range: t,
3209
+ setPriceRange: a,
3210
+ clearRange: o,
3211
+ isRangeSet: s
3212
+ };
3213
+ }
3214
+ const ja = () => (console.warn("useFilterManager: This is a mock implementation. Use the actual hook from apps/web/src/stores/useFiltersStore"), {
3215
+ search: "",
3216
+ category: "",
3217
+ tags: [],
3218
+ dateRange: { start: null, end: null },
3219
+ priceRange: { min: null, max: null },
3220
+ sortBy: "date",
3221
+ sortOrder: "desc",
3222
+ setSearch: (e) => {
3223
+ },
3224
+ setCategory: (e) => {
3225
+ },
3226
+ setTags: (e) => {
3227
+ },
3228
+ addTag: (e) => {
3229
+ },
3230
+ removeTag: (e) => {
3231
+ },
3232
+ setDateRange: (e, t) => {
3233
+ },
3234
+ setPriceRange: (e, t) => {
3235
+ },
3236
+ setSorting: (e, t) => {
3237
+ },
3238
+ resetFilters: () => {
3239
+ },
3240
+ getActiveFiltersCount: () => 0,
3241
+ getFilterSummary: () => [],
3242
+ hasActiveFilters: !1,
3243
+ clearAllFilters: () => {
3244
+ }
3245
+ });
3246
+ function Wa({
3247
+ className: e,
3248
+ showSearch: t = !0,
3249
+ showCategory: r = !0,
3250
+ showDateRange: a = !0,
3251
+ showPriceRange: o = !0,
3252
+ showSorting: s = !0,
3253
+ categories: i = [],
3254
+ sortOptions: c = [
3255
+ { value: "date", label: "Date" },
3256
+ { value: "name", label: "Name" },
3257
+ { value: "price", label: "Price" }
3258
+ ],
3259
+ onFiltersChange: u
3260
+ }) {
3261
+ const {
3262
+ search: f,
3263
+ category: h,
3264
+ dateRange: g,
3265
+ priceRange: p,
3266
+ sortBy: C,
3267
+ sortOrder: y,
3268
+ setSearch: N,
3269
+ setCategory: R,
3270
+ setDateRange: E,
3271
+ setPriceRange: b,
3272
+ hasActiveFilters: v
3273
+ } = ja();
3274
+ m.useEffect(() => {
3275
+ u && u({
3276
+ search: f,
3277
+ category: h,
3278
+ dateRange: g,
3279
+ priceRange: p,
3280
+ sortBy: C,
3281
+ sortOrder: y
3282
+ });
3283
+ }, [f, h, g, p, C, y, u]);
3284
+ const I = (x) => {
3285
+ E(x.from || null, x.to || null);
3286
+ }, T = (x) => {
3287
+ b(x.min, x.max);
3288
+ };
3289
+ return /* @__PURE__ */ l("div", { className: d("space-y-4", e), children: [
3290
+ /* @__PURE__ */ l("div", { className: "flex flex-col sm:flex-row gap-4", children: [
3291
+ t && /* @__PURE__ */ n("div", { className: "flex-1", children: /* @__PURE__ */ n(
3292
+ ue,
3293
+ {
3294
+ value: f,
3295
+ onChange: N,
3296
+ placeholder: "Search events, venues, artists..."
3297
+ }
3298
+ ) }),
3299
+ v
3300
+ ] }),
3301
+ /* @__PURE__ */ l("div", { className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4", children: [
3302
+ r && i.length > 0 && /* @__PURE__ */ n(
3303
+ ae,
3304
+ {
3305
+ value: h,
3306
+ onValueChange: R,
3307
+ options: i,
3308
+ label: "Category",
3309
+ placeholder: "All categories"
3310
+ }
3311
+ ),
3312
+ a && /* @__PURE__ */ l("div", { className: "space-y-2", children: [
3313
+ /* @__PURE__ */ n("label", { className: "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70", children: "Date Range" }),
3314
+ /* @__PURE__ */ n(
3315
+ nt,
3316
+ {
3317
+ value: {
3318
+ from: g.start || void 0,
3319
+ to: g.end || void 0
3320
+ },
3321
+ onChange: I,
3322
+ placeholder: "Any date"
3323
+ }
3324
+ )
3325
+ ] }),
3326
+ o && /* @__PURE__ */ n(
3327
+ Fa,
3328
+ {
3329
+ value: p,
3330
+ onChange: T,
3331
+ min: 0,
3332
+ max: 500,
3333
+ step: 10,
3334
+ currency: "€"
3335
+ }
3336
+ ),
3337
+ s && /* @__PURE__ */ l("div", { className: "space-y-2", children: [
3338
+ /* @__PURE__ */ n("label", { className: "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70", children: "Sort by" }),
3339
+ /* @__PURE__ */ n(
3340
+ ae,
3341
+ {
3342
+ value: `${C}-${y}`,
3343
+ onValueChange: (x) => {
3344
+ const [D, O] = x.split("-");
3345
+ },
3346
+ options: c.map((x) => ({
3347
+ value: `${x.value}-asc`,
3348
+ label: `${x.label} (A-Z)`
3349
+ })).concat(
3350
+ c.map((x) => ({
3351
+ value: `${x.value}-desc`,
3352
+ label: `${x.label} (Z-A)`
3353
+ }))
3354
+ ),
3355
+ placeholder: "Sort by..."
3356
+ }
3357
+ )
3358
+ ] })
3359
+ ] }),
3360
+ v
3361
+ ] });
3362
+ }
3363
+ function Qn({
3364
+ className: e,
3365
+ ...t
3366
+ }) {
3367
+ return /* @__PURE__ */ n(
3368
+ Wa,
3369
+ {
3370
+ className: d("space-y-2", e),
3371
+ ...t
3372
+ }
3373
+ );
3374
+ }
3375
+ const Xn = ({
3376
+ onSearch: e,
3377
+ onDateChange: t,
3378
+ onGenreChange: r,
3379
+ onVenueChange: a,
3380
+ className: o
3381
+ }) => /* @__PURE__ */ n("div", { className: d(
3382
+ "bg-white dark:bg-gray-800 p-6 rounded-lg shadow-lg",
3383
+ o
3384
+ ), children: /* @__PURE__ */ l("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4", children: [
3385
+ /* @__PURE__ */ l("div", { children: [
3386
+ /* @__PURE__ */ n("label", { className: "block text-sm font-medium mb-2", children: "Search" }),
3387
+ /* @__PURE__ */ n(
3388
+ ue,
3389
+ {
3390
+ placeholder: "Search events...",
3391
+ value: "",
3392
+ onChange: () => {
3393
+ }
3394
+ }
3395
+ )
3396
+ ] }),
3397
+ /* @__PURE__ */ l("div", { children: [
3398
+ /* @__PURE__ */ n("label", { className: "block text-sm font-medium mb-2", children: "Date" }),
3399
+ /* @__PURE__ */ n(
3400
+ nt,
3401
+ {
3402
+ value: { from: void 0, to: void 0 },
3403
+ onChange: () => {
3404
+ }
3405
+ }
3406
+ )
3407
+ ] }),
3408
+ /* @__PURE__ */ l("div", { children: [
3409
+ /* @__PURE__ */ n("label", { className: "block text-sm font-medium mb-2", children: "Genre" }),
3410
+ /* @__PURE__ */ n(
3411
+ ae,
3412
+ {
3413
+ placeholder: "Select genre",
3414
+ value: "",
3415
+ options: [
3416
+ { value: "classical", label: "Classical" },
3417
+ { value: "rock", label: "Rock" },
3418
+ { value: "jazz", label: "Jazz" },
3419
+ { value: "electronic", label: "Electronic" },
3420
+ { value: "folk", label: "Folk" }
3421
+ ],
3422
+ onValueChange: r || (() => {
3423
+ })
3424
+ }
3425
+ )
3426
+ ] }),
3427
+ /* @__PURE__ */ l("div", { children: [
3428
+ /* @__PURE__ */ n("label", { className: "block text-sm font-medium mb-2", children: "Venue" }),
3429
+ /* @__PURE__ */ n(
3430
+ ae,
3431
+ {
3432
+ placeholder: "Select venue",
3433
+ value: "",
3434
+ options: [
3435
+ { value: "auditorio", label: "Auditorio de Tenerife" },
3436
+ { value: "teatro", label: "Teatro Guimerá" },
3437
+ { value: "casino", label: "Casino de Tenerife" },
3438
+ { value: "outdoor", label: "Outdoor Venues" }
3439
+ ],
3440
+ onValueChange: a || (() => {
3441
+ })
3442
+ }
3443
+ )
3444
+ ] })
3445
+ ] }) });
3446
+ function Va() {
3447
+ const [e, t] = Y([]), r = F((i) => {
3448
+ const c = Math.random().toString(36).substr(2, 9), u = {
3449
+ id: c,
3450
+ duration: 5e3,
3451
+ ...i
3452
+ };
3453
+ return t((f) => [...f, u]), u.duration && u.duration > 0 && setTimeout(() => {
3454
+ a(c);
3455
+ }, u.duration), c;
3456
+ }, []), a = F((i) => {
3457
+ t((c) => c.filter((u) => u.id !== i));
3458
+ }, []), o = F(() => {
3459
+ t([]);
3460
+ }, []), s = F((i, c) => {
3461
+ t(
3462
+ (u) => u.map(
3463
+ (f) => f.id === i ? { ...f, ...c } : f
3464
+ )
3465
+ );
3466
+ }, []);
3467
+ return {
3468
+ toasts: e,
3469
+ toast: r,
3470
+ dismiss: a,
3471
+ dismissAll: o,
3472
+ updateToast: s
3473
+ };
3474
+ }
3475
+ const za = L(
3476
+ "group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-6 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",
3477
+ {
3478
+ variants: {
3479
+ type: {
3480
+ default: "border bg-background text-foreground",
3481
+ success: "border-green-200 bg-green-50 text-green-900 dark:border-green-800 dark:bg-green-950 dark:text-green-100",
3482
+ error: "border-red-200 bg-red-50 text-red-900 dark:border-red-800 dark:bg-red-950 dark:text-red-100",
3483
+ warning: "border-yellow-200 bg-yellow-50 text-yellow-900 dark:border-yellow-800 dark:bg-yellow-950 dark:text-yellow-100",
3484
+ info: "border-blue-200 bg-blue-50 text-blue-900 dark:border-blue-800 dark:bg-blue-950 dark:text-blue-100"
3485
+ }
3486
+ },
3487
+ defaultVariants: {
3488
+ type: "default"
3489
+ }
3490
+ }
3491
+ ), Ia = L("h-4 w-4 flex-shrink-0", {
3492
+ variants: {
3493
+ type: {
3494
+ default: "text-foreground",
3495
+ success: "text-green-600 dark:text-green-400",
3496
+ error: "text-red-600 dark:text-red-400",
3497
+ warning: "text-yellow-600 dark:text-yellow-400",
3498
+ info: "text-blue-600 dark:text-blue-400"
3499
+ }
3500
+ },
3501
+ defaultVariants: {
3502
+ type: "default"
3503
+ }
3504
+ }), Aa = (e) => {
3505
+ switch (e) {
3506
+ case "success":
3507
+ return Nt;
3508
+ case "error":
3509
+ return vt;
3510
+ case "warning":
3511
+ return wt;
3512
+ case "info":
3513
+ return fe;
3514
+ default:
3515
+ return fe;
3516
+ }
3517
+ }, ot = m.forwardRef(
3518
+ ({ className: e, toast: t, onDismiss: r, type: a = t.type, ...o }, s) => {
3519
+ const i = Aa(t.type);
3520
+ return /* @__PURE__ */ l(
3521
+ "div",
3522
+ {
3523
+ ref: s,
3524
+ className: d(za({ type: a, className: e })),
3525
+ ...o,
3526
+ children: [
3527
+ /* @__PURE__ */ l("div", { className: "flex items-start space-x-3 flex-1", children: [
3528
+ /* @__PURE__ */ n(i, { className: d(Ia({ type: t.type })) }),
3529
+ /* @__PURE__ */ l("div", { className: "flex-1 space-y-1", children: [
3530
+ t.title && /* @__PURE__ */ n("div", { className: "text-sm font-semibold", children: t.title }),
3531
+ t.description && /* @__PURE__ */ n("div", { className: "text-sm opacity-90", children: t.description }),
3532
+ t.action && /* @__PURE__ */ n("div", { className: "mt-2", children: /* @__PURE__ */ n(
3533
+ j,
3534
+ {
3535
+ variant: "outline",
3536
+ size: "sm",
3537
+ onClick: t.action.onClick,
3538
+ className: "h-8 px-2 text-xs",
3539
+ children: t.action.label
3540
+ }
3541
+ ) })
3542
+ ] })
3543
+ ] }),
3544
+ /* @__PURE__ */ n(
3545
+ j,
3546
+ {
3547
+ variant: "ghost",
3548
+ size: "icon",
3549
+ className: "absolute right-1 top-1 h-6 w-6 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-1 group-hover:opacity-100",
3550
+ onClick: () => r(t.id),
3551
+ children: /* @__PURE__ */ n(de, { className: "h-4 w-4" })
3552
+ }
3553
+ )
3554
+ ]
3555
+ }
3556
+ );
3557
+ }
3558
+ );
3559
+ ot.displayName = "Toast";
3560
+ const st = Me(void 0);
3561
+ function Jn({
3562
+ children: e,
3563
+ position: t = "top-right",
3564
+ maxToasts: r = 5
3565
+ }) {
3566
+ const a = Va(), { toasts: o, toast: s, dismiss: i, dismissAll: c, updateToast: u } = a, f = o.slice(-r), h = {
3567
+ "top-left": "top-4 left-4",
3568
+ "top-center": "top-4 left-1/2 -translate-x-1/2",
3569
+ "top-right": "top-4 right-4",
3570
+ "bottom-left": "bottom-4 left-4",
3571
+ "bottom-center": "bottom-4 left-1/2 -translate-x-1/2",
3572
+ "bottom-right": "bottom-4 right-4"
3573
+ };
3574
+ return /* @__PURE__ */ l(st.Provider, { value: { toast: s, dismiss: i, dismissAll: c, updateToast: u }, children: [
3575
+ e,
3576
+ /* @__PURE__ */ n(
3577
+ Ha,
3578
+ {
3579
+ position: t,
3580
+ positionClasses: h[t],
3581
+ children: f.map((g) => /* @__PURE__ */ n(
3582
+ ot,
3583
+ {
3584
+ toast: g,
3585
+ onDismiss: i
3586
+ },
3587
+ g.id
3588
+ ))
3589
+ }
3590
+ )
3591
+ ] });
3592
+ }
3593
+ function Ya() {
3594
+ const e = Ce(st);
3595
+ if (e === void 0)
3596
+ throw new Error("useToastContext must be used within a ToastProvider");
3597
+ return e;
3598
+ }
3599
+ function Kn() {
3600
+ const { toast: e, dismiss: t, dismissAll: r, updateToast: a } = Ya();
3601
+ return {
3602
+ toast: e,
3603
+ dismiss: t,
3604
+ dismissAll: r,
3605
+ updateToast: a,
3606
+ success: (o) => e({ ...o, type: "success" }),
3607
+ error: (o) => e({ ...o, type: "error" }),
3608
+ warning: (o) => e({ ...o, type: "warning" }),
3609
+ info: (o) => e({ ...o, type: "info" })
3610
+ };
3611
+ }
3612
+ function Ha({ children: e, positionClasses: t }) {
3613
+ return /* @__PURE__ */ n(
3614
+ "div",
3615
+ {
3616
+ className: d(
3617
+ "fixed z-[100] flex max-h-screen w-full flex-col-reverse p-0 sm:flex-col",
3618
+ t
3619
+ ),
3620
+ style: {
3621
+ pointerEvents: "none"
3622
+ },
3623
+ children: /* @__PURE__ */ n("div", { className: "pointer-events-auto flex flex-col gap-2", children: e })
3624
+ }
3625
+ );
3626
+ }
3627
+ const $a = ee.Provider, _a = ee.Root, Ba = ee.Trigger, qa = L(
3628
+ "z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
3629
+ {
3630
+ variants: {
3631
+ variant: {
3632
+ default: "bg-popover text-popover-foreground border-border",
3633
+ destructive: "border-destructive/50 text-destructive bg-destructive/10",
3634
+ warning: "border-yellow-500/50 text-yellow-700 bg-yellow-50",
3635
+ success: "border-green-500/50 text-green-700 bg-green-50",
3636
+ info: "border-blue-500/50 text-blue-700 bg-blue-50"
3637
+ }
3638
+ },
3639
+ defaultVariants: {
3640
+ variant: "default"
3641
+ }
3642
+ }
3643
+ ), it = m.forwardRef(({ className: e, variant: t, sideOffset: r = 4, ...a }, o) => /* @__PURE__ */ n(
3644
+ ee.Content,
3645
+ {
3646
+ ref: o,
3647
+ sideOffset: r,
3648
+ className: d(qa({ variant: t, className: e })),
3649
+ ...a
3650
+ }
3651
+ ));
3652
+ it.displayName = ee.Content.displayName;
3653
+ function Zn({
3654
+ children: e,
3655
+ content: t,
3656
+ variant: r,
3657
+ side: a = "top",
3658
+ align: o = "center",
3659
+ sideOffset: s,
3660
+ alignOffset: i,
3661
+ delayDuration: c = 400,
3662
+ skipDelayDuration: u = 300,
3663
+ disableHoverableContent: f = !1,
3664
+ open: h,
3665
+ onOpenChange: g
3666
+ }) {
3667
+ return /* @__PURE__ */ n($a, { delayDuration: c, skipDelayDuration: u, children: /* @__PURE__ */ l(_a, { open: h, onOpenChange: g, children: [
3668
+ /* @__PURE__ */ n(Ba, { asChild: !0, children: e }),
3669
+ /* @__PURE__ */ n(
3670
+ it,
3671
+ {
3672
+ variant: r,
3673
+ side: a,
3674
+ align: o,
3675
+ sideOffset: s,
3676
+ alignOffset: i,
3677
+ children: t
3678
+ }
3679
+ )
3680
+ ] }) });
3681
+ }
3682
+ const Ga = q.Root, Ua = q.Trigger, eo = q.Anchor, Qa = L(
3683
+ "z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
3684
+ {
3685
+ variants: {
3686
+ variant: {
3687
+ default: "bg-popover text-popover-foreground border-border",
3688
+ destructive: "border-destructive/50 text-destructive bg-destructive/10",
3689
+ warning: "border-yellow-500/50 text-yellow-700 bg-yellow-50",
3690
+ success: "border-green-500/50 text-green-700 bg-green-50",
3691
+ info: "border-blue-500/50 text-blue-700 bg-blue-50"
3692
+ },
3693
+ size: {
3694
+ sm: "w-48 p-3",
3695
+ md: "w-72 p-4",
3696
+ lg: "w-96 p-6",
3697
+ xl: "w-[32rem] p-8"
3698
+ }
3699
+ },
3700
+ defaultVariants: {
3701
+ variant: "default",
3702
+ size: "md"
3703
+ }
3704
+ }
3705
+ ), dt = m.forwardRef(({ className: e, variant: t, size: r, align: a = "center", sideOffset: o = 4, ...s }, i) => /* @__PURE__ */ n(q.Portal, { children: /* @__PURE__ */ n(
3706
+ q.Content,
3707
+ {
3708
+ ref: i,
3709
+ align: a,
3710
+ sideOffset: o,
3711
+ className: d(Qa({ variant: t, size: r, className: e })),
3712
+ ...s
3713
+ }
3714
+ ) }));
3715
+ dt.displayName = q.Content.displayName;
3716
+ function to({
3717
+ children: e,
3718
+ content: t,
3719
+ variant: r,
3720
+ size: a,
3721
+ side: o = "bottom",
3722
+ align: s = "center",
3723
+ sideOffset: i,
3724
+ alignOffset: c,
3725
+ open: u,
3726
+ onOpenChange: f,
3727
+ modal: h = !0,
3728
+ closeOnInteractOutside: g = !0
3729
+ }) {
3730
+ return /* @__PURE__ */ l(Ga, { open: u, onOpenChange: f, modal: h, children: [
3731
+ /* @__PURE__ */ n(Ua, { asChild: !0, children: e }),
3732
+ /* @__PURE__ */ n(
3733
+ dt,
3734
+ {
3735
+ variant: r,
3736
+ size: a,
3737
+ side: o,
3738
+ align: s,
3739
+ sideOffset: i,
3740
+ alignOffset: c,
3741
+ onInteractOutside: g ? void 0 : (p) => p.preventDefault(),
3742
+ children: t
3743
+ }
3744
+ )
3745
+ ] });
3746
+ }
3747
+ function ro({
3748
+ children: e,
3749
+ container: t,
3750
+ className: r,
3751
+ style: a
3752
+ }) {
3753
+ const [o, s] = m.useState(!1);
3754
+ if (m.useEffect(() => {
3755
+ s(!0);
3756
+ }, []), !o)
3757
+ return null;
3758
+ const i = t || document.body;
3759
+ return Mt(
3760
+ /* @__PURE__ */ n(
3761
+ "div",
3762
+ {
3763
+ className: d(
3764
+ "fixed inset-0 z-50",
3765
+ r
3766
+ ),
3767
+ style: a,
3768
+ children: e
3769
+ }
3770
+ ),
3771
+ i
3772
+ );
3773
+ }
3774
+ function ao({
3775
+ onClick: e,
3776
+ className: t,
3777
+ style: r
3778
+ }) {
3779
+ return /* @__PURE__ */ n(
3780
+ "div",
3781
+ {
3782
+ className: d(
3783
+ "absolute inset-0 bg-black/50 backdrop-blur-sm",
3784
+ t
3785
+ ),
3786
+ style: r,
3787
+ onClick: e
3788
+ }
3789
+ );
3790
+ }
3791
+ function no({
3792
+ children: e,
3793
+ className: t,
3794
+ style: r,
3795
+ position: a = "center"
3796
+ }) {
3797
+ return /* @__PURE__ */ n(
3798
+ "div",
3799
+ {
3800
+ className: d(
3801
+ "relative w-full h-full min-h-screen",
3802
+ {
3803
+ center: "flex items-center justify-center",
3804
+ top: "flex justify-center pt-8",
3805
+ bottom: "flex justify-center pb-8",
3806
+ left: "flex items-center pl-8",
3807
+ right: "flex items-center pr-8",
3808
+ "top-left": "flex justify-start items-start pt-8 pl-8",
3809
+ "top-right": "flex justify-end items-start pt-8 pr-8",
3810
+ "bottom-left": "flex justify-start items-end pb-8 pl-8",
3811
+ "bottom-right": "flex justify-end items-end pb-8 pr-8"
3812
+ }[a],
3813
+ t
3814
+ ),
3815
+ style: r,
3816
+ children: e
3817
+ }
3818
+ );
3819
+ }
3820
+ const oo = ({
3821
+ variant: e = "info",
3822
+ title: t,
3823
+ description: r,
3824
+ className: a
3825
+ }) => /* @__PURE__ */ l("div", { className: d(
3826
+ "border rounded-lg p-4",
3827
+ {
3828
+ success: "bg-green-50 border-green-200 text-green-800",
3829
+ error: "bg-red-50 border-red-200 text-red-800",
3830
+ warning: "bg-yellow-50 border-yellow-200 text-yellow-800",
3831
+ info: "bg-blue-50 border-blue-200 text-blue-800"
3832
+ }[e],
3833
+ a
3834
+ ), children: [
3835
+ t && /* @__PURE__ */ n("h4", { className: "font-semibold mb-2", children: t }),
3836
+ r && /* @__PURE__ */ n("p", { className: "text-sm", children: r })
3837
+ ] }), so = ({
3838
+ value: e,
3839
+ max: t = 100,
3840
+ className: r
3841
+ }) => {
3842
+ const a = Math.min(100, Math.max(0, e / t * 100));
3843
+ return /* @__PURE__ */ n("div", { className: d(
3844
+ "w-full bg-secondary rounded-full h-2",
3845
+ r
3846
+ ), children: /* @__PURE__ */ n(
3847
+ "div",
3848
+ {
3849
+ className: "bg-primary h-2 rounded-full transition-all duration-300",
3850
+ style: { width: `${a}%` }
3851
+ }
3852
+ ) });
3853
+ }, z = ({ className: e }) => /* @__PURE__ */ n("div", { className: d(
3854
+ "animate-pulse bg-gray-200 dark:bg-gray-700 rounded",
3855
+ e
3856
+ ) }), io = ({
3857
+ items: e,
3858
+ className: t
3859
+ }) => /* @__PURE__ */ n("nav", { className: d("flex items-center space-x-2 text-sm", t), children: e.map((r, a) => /* @__PURE__ */ l(re.Fragment, { children: [
3860
+ a > 0 && /* @__PURE__ */ n(le, { className: "h-4 w-4 text-muted-foreground" }),
3861
+ r.href ? /* @__PURE__ */ n(
3862
+ H,
3863
+ {
3864
+ href: r.href,
3865
+ className: "text-muted-foreground hover:text-foreground transition-colors",
3866
+ children: r.label
3867
+ }
3868
+ ) : /* @__PURE__ */ n("span", { className: "text-foreground font-medium", children: r.label })
3869
+ ] }, a)) }), lo = ({
3870
+ currentPage: e,
3871
+ totalPages: t,
3872
+ onPageChange: r,
3873
+ className: a
3874
+ }) => {
3875
+ const o = () => {
3876
+ const i = [], c = [];
3877
+ for (let u = Math.max(2, e - 2); u <= Math.min(t - 1, e + 2); u++)
3878
+ i.push(u);
3879
+ return e - 2 > 2 ? c.push(1, "...") : c.push(1), c.push(...i), e + 2 < t - 1 ? c.push("...", t) : c.push(t), c;
3880
+ };
3881
+ return /* @__PURE__ */ l("nav", { className: d("flex items-center space-x-1", a), children: [
3882
+ /* @__PURE__ */ n(
3883
+ "button",
3884
+ {
3885
+ onClick: () => r(e - 1),
3886
+ disabled: e === 1,
3887
+ className: "p-2 rounded-md border border-input bg-background hover:bg-accent disabled:opacity-50 disabled:cursor-not-allowed",
3888
+ children: /* @__PURE__ */ n(kt, { className: "h-4 w-4" })
3889
+ }
3890
+ ),
3891
+ o().map((s, i) => /* @__PURE__ */ n(re.Fragment, { children: s === "..." ? /* @__PURE__ */ n("span", { className: "px-3 py-2 text-muted-foreground", children: "..." }) : /* @__PURE__ */ n(
3892
+ "button",
3893
+ {
3894
+ onClick: () => r(s),
3895
+ className: d(
3896
+ "px-3 py-2 rounded-md border transition-colors",
3897
+ s === e ? "bg-primary text-primary-foreground border-primary" : "border-input bg-background hover:bg-accent"
3898
+ ),
3899
+ children: s
3900
+ }
3901
+ ) }, i)),
3902
+ /* @__PURE__ */ n(
3903
+ "button",
3904
+ {
3905
+ onClick: () => r(e + 1),
3906
+ disabled: e === t,
3907
+ className: "p-2 rounded-md border border-input bg-background hover:bg-accent disabled:opacity-50 disabled:cursor-not-allowed",
3908
+ children: /* @__PURE__ */ n(le, { className: "h-4 w-4" })
3909
+ }
3910
+ )
3911
+ ] });
3912
+ }, co = ({
3913
+ data: e,
3914
+ columns: t,
3915
+ rowKey: r,
3916
+ className: a
3917
+ }) => /* @__PURE__ */ n("div", { className: d("overflow-x-auto", a), children: /* @__PURE__ */ l("table", { className: "w-full border-collapse", children: [
3918
+ /* @__PURE__ */ n("thead", { children: /* @__PURE__ */ n("tr", { className: "border-b", children: t.map((o) => /* @__PURE__ */ n(
3919
+ "th",
3920
+ {
3921
+ className: "text-left p-3 font-medium text-muted-foreground",
3922
+ children: o.title
3923
+ },
3924
+ String(o.key)
3925
+ )) }) }),
3926
+ /* @__PURE__ */ n("tbody", { children: e.map((o) => /* @__PURE__ */ n("tr", { className: "border-b hover:bg-muted/50", children: t.map((s) => /* @__PURE__ */ n("td", { className: "p-3", children: s.render ? s.render(o[s.key], o) : String(o[s.key]) }, String(s.key))) }, String(o[r]))) })
3927
+ ] }) }), uo = ({
3928
+ items: e,
3929
+ className: t
3930
+ }) => /* @__PURE__ */ n("div", { className: d("space-y-2", t), children: e.map((r) => /* @__PURE__ */ l(
3931
+ "div",
3932
+ {
3933
+ className: "p-4 border rounded-lg hover:bg-muted/50 transition-colors",
3934
+ children: [
3935
+ /* @__PURE__ */ n("h3", { className: "font-medium text-foreground", children: r.title }),
3936
+ r.description && /* @__PURE__ */ n("p", { className: "text-sm text-muted-foreground mt-1", children: r.description })
3937
+ ]
3938
+ },
3939
+ r.id
3940
+ )) }), mo = ({
3941
+ items: e,
3942
+ className: t
3943
+ }) => /* @__PURE__ */ n("div", { className: d("space-y-6", t), children: e.map((r, a) => /* @__PURE__ */ l("div", { className: "relative flex", children: [
3944
+ /* @__PURE__ */ l("div", { className: "flex flex-col items-center", children: [
3945
+ /* @__PURE__ */ n("div", { className: "w-3 h-3 bg-primary rounded-full border-2 border-background" }),
3946
+ a < e.length - 1 && /* @__PURE__ */ n("div", { className: "w-px h-12 bg-border mt-2" })
3947
+ ] }),
3948
+ /* @__PURE__ */ l("div", { className: "ml-4 flex-1", children: [
3949
+ /* @__PURE__ */ n("h3", { className: "font-medium text-foreground", children: r.title }),
3950
+ /* @__PURE__ */ n("p", { className: "text-sm text-muted-foreground", children: r.date }),
3951
+ r.description && /* @__PURE__ */ n("p", { className: "text-sm text-muted-foreground mt-1", children: r.description })
3952
+ ] })
3953
+ ] }, r.id)) }), fo = ({
3954
+ event: e,
3955
+ className: t,
3956
+ featured: r = !1,
3957
+ showImage: a = !0
3958
+ }) => {
3959
+ var h, g, p, C, y, N, R, E, b, v, I, T, x, D, O;
3960
+ const o = typeof (e == null ? void 0 : e.name) == "string" ? e.name : ((h = e == null ? void 0 : e.name) == null ? void 0 : h.en) || ((g = e == null ? void 0 : e.name) == null ? void 0 : g.es) || ((p = e == null ? void 0 : e.name) == null ? void 0 : p.ru) || "Sample Event", s = typeof (e == null ? void 0 : e.description) == "string" ? e.description : ((C = e == null ? void 0 : e.description) == null ? void 0 : C.en) || ((y = e == null ? void 0 : e.description) == null ? void 0 : y.es) || ((N = e == null ? void 0 : e.description) == null ? void 0 : N.ru) || "Sample event description", i = (e == null ? void 0 : e.start_date) || "2024-12-31", c = typeof ((R = e == null ? void 0 : e.venue_id) == null ? void 0 : R.name) == "string" ? e.venue_id.name : ((b = (E = e == null ? void 0 : e.venue_id) == null ? void 0 : E.name) == null ? void 0 : b.en) || ((I = (v = e == null ? void 0 : e.venue_id) == null ? void 0 : v.name) == null ? void 0 : I.es) || ((x = (T = e == null ? void 0 : e.venue_id) == null ? void 0 : T.name) == null ? void 0 : x.ru) || "Sample Venue", u = typeof (e == null ? void 0 : e.price) == "string" ? e.price : typeof (e == null ? void 0 : e.price) == "object" && (e == null ? void 0 : e.price) !== null ? `€${((D = e.price) == null ? void 0 : D.min) || 0} - €${((O = e.price) == null ? void 0 : O.max) || "∞"}` : "€25", f = e == null ? void 0 : e.image;
3961
+ return /* @__PURE__ */ l(J, { className: d(
3962
+ "group relative overflow-hidden border-transparent hover:border-primary/20 shadow-md hover:shadow-xl transition-all duration-300 animate-fade-in-up",
3963
+ r && "ring-2 ring-primary/50",
3964
+ t
3965
+ ), children: [
3966
+ r && /* @__PURE__ */ n("div", { className: "absolute top-3 right-3 z-10", children: /* @__PURE__ */ n("span", { className: "inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-semibold bg-gradient-to-r from-orange-500 to-purple-600 text-white shadow-lg", children: "🔥 Trending" }) }),
3967
+ a && /* @__PURE__ */ l("div", { className: "relative w-full h-48 bg-gradient-to-br from-gray-200 to-gray-300 dark:from-gray-700 dark:to-gray-800 rounded-t-lg overflow-hidden", children: [
3968
+ f ? /* @__PURE__ */ n(
3969
+ "img",
3970
+ {
3971
+ src: f,
3972
+ alt: o,
3973
+ className: "w-full h-full object-cover group-hover:scale-110 transition-transform duration-500"
3974
+ }
3975
+ ) : /* @__PURE__ */ n("div", { className: "w-full h-full flex items-center justify-center", children: /* @__PURE__ */ n("svg", { className: "w-16 h-16 text-gray-400 dark:text-gray-600", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ n("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 10l4.553-2.276A1 1 0 0121 8.618v6.764a1 1 0 01-1.447.894L15 14M5 18h8a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v8a2 2 0 002 2z" }) }) }),
3976
+ /* @__PURE__ */ n("div", { className: "absolute inset-0 bg-gradient-to-t from-black/60 via-transparent to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-300" })
3977
+ ] }),
3978
+ /* @__PURE__ */ l(K, { className: "p-4", children: [
3979
+ /* @__PURE__ */ n("h3", { className: "text-lg font-bold mb-2 group-hover:text-primary transition-colors line-clamp-2", children: e != null && e.slug ? /* @__PURE__ */ n(H, { href: `/events/${e.slug}`, variant: "ghost", size: "none", children: o }) : o }),
3980
+ /* @__PURE__ */ n("p", { className: "text-sm text-gray-600 dark:text-gray-300 mb-3 line-clamp-2", children: s }),
3981
+ /* @__PURE__ */ l("div", { className: "flex flex-col gap-2 mb-3", children: [
3982
+ /* @__PURE__ */ l("div", { className: "flex items-center gap-2 text-xs text-gray-500", children: [
3983
+ /* @__PURE__ */ n("svg", { className: "w-4 h-4", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ n("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z" }) }),
3984
+ /* @__PURE__ */ n("span", { children: i })
3985
+ ] }),
3986
+ /* @__PURE__ */ l("div", { className: "flex items-center gap-2 text-xs text-gray-500", children: [
3987
+ /* @__PURE__ */ l("svg", { className: "w-4 h-4", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: [
3988
+ /* @__PURE__ */ n("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z" }),
3989
+ /* @__PURE__ */ n("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 11a3 3 0 11-6 0 3 3 0 016 0z" })
3990
+ ] }),
3991
+ /* @__PURE__ */ n("span", { className: "line-clamp-1", children: c })
3992
+ ] })
3993
+ ] }),
3994
+ /* @__PURE__ */ n("div", { className: "pt-3 border-t border-gray-200 dark:border-gray-700", children: e != null && e.ticket_url ? /* @__PURE__ */ l(
3995
+ H,
3996
+ {
3997
+ href: e.ticket_url,
3998
+ className: "inline-flex items-center justify-center w-full py-2 px-4 bg-gradient-to-r from-orange-500 to-purple-600 hover:from-orange-600 hover:to-purple-700 text-white font-semibold transition-all duration-300 transform hover:scale-105 shadow-md hover:shadow-lg",
3999
+ target: "_blank",
4000
+ rel: "noopener noreferrer",
4001
+ children: [
4002
+ "Get Tickets",
4003
+ /* @__PURE__ */ n("svg", { className: "ml-2 w-4 h-4", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ n("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M14 5l7 7m0 0l-7 7m7-7H3" }) })
4004
+ ]
4005
+ }
4006
+ ) : /* @__PURE__ */ n("div", { className: "text-right", children: /* @__PURE__ */ n("span", { className: "text-lg font-bold bg-gradient-to-r from-orange-500 to-purple-600 bg-clip-text text-transparent", children: u }) }) })
4007
+ ] })
4008
+ ] });
4009
+ }, ho = ({
4010
+ venue: e,
4011
+ className: t,
4012
+ featured: r = !1,
4013
+ showImage: a = !0
4014
+ }) => {
4015
+ var h, g;
4016
+ const o = typeof (e == null ? void 0 : e.name) == "string" ? e.name : ((h = e == null ? void 0 : e.name) == null ? void 0 : h.en) || "Sample Venue", s = typeof (e == null ? void 0 : e.description) == "string" ? e.description : ((g = e == null ? void 0 : e.description) == null ? void 0 : g.en) || "Sample venue description", i = typeof (e == null ? void 0 : e.location) == "string" ? e.location : (e == null ? void 0 : e.address) || "Tenerife, Spain", c = (e == null ? void 0 : e.capacity) || "500", u = e == null ? void 0 : e.image, f = (e == null ? void 0 : e.events_count) || 0;
4017
+ return /* @__PURE__ */ l(J, { className: d(
4018
+ "group relative overflow-hidden border-transparent hover:border-primary/20 shadow-md hover:shadow-xl transition-all duration-300 animate-fade-in-up",
4019
+ r && "ring-2 ring-primary/50",
4020
+ t
4021
+ ), children: [
4022
+ r && /* @__PURE__ */ n("div", { className: "absolute top-3 right-3 z-10", children: /* @__PURE__ */ n("span", { className: "inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-semibold bg-gradient-to-r from-purple-500 to-orange-500 text-white shadow-lg", children: "⭐ Popular" }) }),
4023
+ a && /* @__PURE__ */ l("div", { className: "relative w-full h-48 bg-gradient-to-br from-gray-200 to-gray-300 dark:from-gray-700 dark:to-gray-800 rounded-t-lg overflow-hidden", children: [
4024
+ u ? /* @__PURE__ */ n(
4025
+ "img",
4026
+ {
4027
+ src: u,
4028
+ alt: o,
4029
+ className: "w-full h-full object-cover group-hover:scale-110 transition-transform duration-500"
4030
+ }
4031
+ ) : /* @__PURE__ */ n("div", { className: "w-full h-full flex items-center justify-center", children: /* @__PURE__ */ n("svg", { className: "w-16 h-16 text-gray-400 dark:text-gray-600", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ n("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4" }) }) }),
4032
+ /* @__PURE__ */ n("div", { className: "absolute inset-0 bg-gradient-to-t from-black/60 via-transparent to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-300" })
4033
+ ] }),
4034
+ /* @__PURE__ */ l(K, { className: "p-4", children: [
4035
+ /* @__PURE__ */ n("h3", { className: "text-lg font-bold mb-2 group-hover:text-primary transition-colors line-clamp-2", children: e != null && e.slug ? /* @__PURE__ */ n(H, { href: `/venues/${e.slug}`, variant: "ghost", size: "none", children: o }) : o }),
4036
+ /* @__PURE__ */ n("p", { className: "text-sm text-gray-600 dark:text-gray-300 mb-3 line-clamp-2", children: s }),
4037
+ /* @__PURE__ */ n("div", { className: "flex flex-col gap-2 mb-3", children: /* @__PURE__ */ l("div", { className: "flex items-center gap-2 text-xs text-gray-500", children: [
4038
+ /* @__PURE__ */ l("svg", { className: "w-4 h-4", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: [
4039
+ /* @__PURE__ */ n("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z" }),
4040
+ /* @__PURE__ */ n("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 11a3 3 0 11-6 0 3 3 0 016 0z" })
4041
+ ] }),
4042
+ /* @__PURE__ */ n("span", { className: "line-clamp-1", children: i })
4043
+ ] }) }),
4044
+ /* @__PURE__ */ n("div", { className: "pt-3 border-t border-gray-200 dark:border-gray-700", children: /* @__PURE__ */ l("div", { className: "flex justify-between items-center text-xs", children: [
4045
+ f > 0 && /* @__PURE__ */ l("div", { className: "flex items-center gap-1 text-primary font-medium", children: [
4046
+ /* @__PURE__ */ n("svg", { className: "w-4 h-4", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ n("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 10l4.553-2.276A1 1 0 0121 8.618v6.764a1 1 0 01-1.447.894L15 14M5 18h8a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v8a2 2 0 002 2z" }) }),
4047
+ /* @__PURE__ */ l("span", { children: [
4048
+ f,
4049
+ " events"
4050
+ ] })
4051
+ ] }),
4052
+ c !== "500" && /* @__PURE__ */ l("div", { className: "flex items-center gap-1 text-gray-500", children: [
4053
+ /* @__PURE__ */ n("svg", { className: "w-4 h-4", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ n("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z" }) }),
4054
+ /* @__PURE__ */ l("span", { children: [
4055
+ "Cap: ",
4056
+ c
4057
+ ] })
4058
+ ] })
4059
+ ] }) })
4060
+ ] })
4061
+ ] });
4062
+ }, Q = ({
4063
+ id: e,
4064
+ name: t,
4065
+ label: r,
4066
+ type: a = "text",
4067
+ placeholder: o,
4068
+ value: s = "",
4069
+ onChange: i,
4070
+ error: c,
4071
+ helperText: u,
4072
+ className: f
4073
+ }) => /* @__PURE__ */ l("div", { className: d("space-y-2", f), children: [
4074
+ r && /* @__PURE__ */ n("label", { className: "block text-sm font-medium", children: r }),
4075
+ /* @__PURE__ */ n(
4076
+ X,
4077
+ {
4078
+ id: e,
4079
+ name: t,
4080
+ type: a,
4081
+ placeholder: o,
4082
+ value: s,
4083
+ onChange: (h) => i == null ? void 0 : i(h.target.value)
4084
+ }
4085
+ ),
4086
+ u && !c && /* @__PURE__ */ n("p", { className: "text-sm text-gray-500", children: u }),
4087
+ c && /* @__PURE__ */ n("p", { className: "text-sm text-red-500", children: c })
4088
+ ] }), go = ({
4089
+ id: e,
4090
+ name: t,
4091
+ label: r,
4092
+ placeholder: a,
4093
+ options: o = [],
4094
+ value: s = "",
4095
+ onChange: i,
4096
+ error: c,
4097
+ className: u
4098
+ }) => /* @__PURE__ */ l("div", { className: d("space-y-2", u), children: [
4099
+ r && /* @__PURE__ */ n("label", { className: "block text-sm font-medium", children: r }),
4100
+ /* @__PURE__ */ l(
4101
+ "select",
4102
+ {
4103
+ id: e,
4104
+ name: t,
4105
+ value: s,
4106
+ onChange: (f) => i == null ? void 0 : i(f.target.value),
4107
+ className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-800",
4108
+ children: [
4109
+ a && /* @__PURE__ */ n("option", { value: "", disabled: !0, children: a }),
4110
+ o.map((f) => /* @__PURE__ */ n("option", { value: f.value, children: f.label }, f.value))
4111
+ ]
4112
+ }
4113
+ ),
4114
+ c && /* @__PURE__ */ n("p", { className: "text-sm text-red-500", children: c })
4115
+ ] }), po = ({
4116
+ id: e,
4117
+ name: t,
4118
+ label: r,
4119
+ placeholder: a,
4120
+ value: o = "",
4121
+ onChange: s,
4122
+ error: i,
4123
+ rows: c = 4,
4124
+ className: u
4125
+ }) => /* @__PURE__ */ l("div", { className: d("space-y-2", u), children: [
4126
+ r && /* @__PURE__ */ n("label", { className: "block text-sm font-medium", children: r }),
4127
+ /* @__PURE__ */ n(
4128
+ "textarea",
4129
+ {
4130
+ id: e,
4131
+ name: t,
4132
+ placeholder: a,
4133
+ value: o,
4134
+ onChange: (f) => s == null ? void 0 : s(f.target.value),
4135
+ className: "w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-800",
4136
+ rows: c
4137
+ }
4138
+ ),
4139
+ i && /* @__PURE__ */ n("p", { className: "text-sm text-red-500", children: i })
4140
+ ] }), bo = ({ className: e }) => /* @__PURE__ */ l("div", { className: d("space-y-4", e), children: [
4141
+ /* @__PURE__ */ n(Q, { label: "Email", placeholder: "Enter your email" }),
4142
+ /* @__PURE__ */ n(Q, { label: "Password", placeholder: "Enter your password" }),
4143
+ /* @__PURE__ */ n(j, { className: "w-full", children: "Login" })
4144
+ ] }), yo = ({ className: e }) => /* @__PURE__ */ l("div", { className: d("space-y-4", e), children: [
4145
+ /* @__PURE__ */ n(Q, { label: "Name", placeholder: "Enter your name" }),
4146
+ /* @__PURE__ */ n(Q, { label: "Email", placeholder: "Enter your email" }),
4147
+ /* @__PURE__ */ n(Q, { label: "Password", placeholder: "Enter your password" }),
4148
+ /* @__PURE__ */ n(j, { className: "w-full", children: "Register" })
4149
+ ] }), xo = ({
4150
+ name: e = "John Doe",
4151
+ email: t = "john@example.com",
4152
+ avatar: r,
4153
+ className: a
4154
+ }) => /* @__PURE__ */ l("div", { className: d(
4155
+ "bg-white dark:bg-gray-800 rounded-lg shadow-md p-4",
4156
+ a
4157
+ ), children: [
4158
+ r && /* @__PURE__ */ n("div", { className: "w-16 h-16 bg-gray-200 dark:bg-gray-700 rounded-full mb-4" }),
4159
+ /* @__PURE__ */ n("h3", { className: "text-lg font-semibold", children: e }),
4160
+ /* @__PURE__ */ n("p", { className: "text-gray-600 dark:text-gray-300", children: t })
4161
+ ] }), wo = ({ className: e }) => /* @__PURE__ */ l("div", { className: d(
4162
+ "bg-white dark:bg-gray-800 rounded-lg shadow-md p-6",
4163
+ e
4164
+ ), children: [
4165
+ /* @__PURE__ */ n("h2", { className: "text-2xl font-bold mb-4", children: "Dashboard" }),
4166
+ /* @__PURE__ */ n("p", { className: "text-gray-600 dark:text-gray-300", children: "Admin dashboard content" })
4167
+ ] }), vo = ({ className: e }) => /* @__PURE__ */ l("div", { className: d(
4168
+ "bg-white dark:bg-gray-800 rounded-lg shadow-md p-6",
4169
+ e
4170
+ ), children: [
4171
+ /* @__PURE__ */ n("h2", { className: "text-2xl font-bold mb-4", children: "User Management" }),
4172
+ /* @__PURE__ */ n("p", { className: "text-gray-600 dark:text-gray-300", children: "User management content" })
4173
+ ] }), No = ({
4174
+ placeholder: e = "Search artists, venues...",
4175
+ className: t,
4176
+ onSearch: r,
4177
+ suggestions: a = [],
4178
+ onSuggestionSelect: o
4179
+ }) => {
4180
+ const [s, i] = Y(""), [c, u] = Y(!1), [f, h] = Y(-1), g = ct(null), p = (b) => {
4181
+ i(b), h(-1), r && r(b);
4182
+ }, C = () => {
4183
+ u(!0);
4184
+ }, y = (b) => {
4185
+ setTimeout(() => {
4186
+ var v;
4187
+ (v = g.current) != null && v.contains(document.activeElement) || (u(!1), h(-1));
4188
+ }, 200);
4189
+ }, N = (b) => {
4190
+ if (a.length !== 0)
4191
+ if (b.key === "ArrowDown")
4192
+ b.preventDefault(), h(
4193
+ (v) => v < a.length - 1 ? v + 1 : v
4194
+ );
4195
+ else if (b.key === "ArrowUp")
4196
+ b.preventDefault(), h((v) => v > 0 ? v - 1 : -1);
4197
+ else if (b.key === "Enter" && f >= 0 && f < a.length) {
4198
+ b.preventDefault();
4199
+ const v = a[f];
4200
+ v && (i(v), p(v), o == null || o(v), u(!1));
4201
+ } else b.key === "Escape" && (u(!1), h(-1));
4202
+ }, R = (b) => {
4203
+ i(b), p(b), o == null || o(b), u(!1);
4204
+ };
4205
+ Se(() => {
4206
+ const b = (v) => {
4207
+ g.current && !g.current.contains(v.target) && (u(!1), h(-1));
4208
+ };
4209
+ return document.addEventListener("mousedown", b), () => document.removeEventListener("mousedown", b);
4210
+ }, []);
4211
+ const E = a.filter(
4212
+ (b) => b.toLowerCase().includes(s.toLowerCase())
4213
+ );
4214
+ return /* @__PURE__ */ l("div", { ref: g, className: d("relative w-full max-w-sm", t), children: [
4215
+ /* @__PURE__ */ n(
4216
+ ue,
4217
+ {
4218
+ placeholder: e,
4219
+ value: s,
4220
+ onChange: p,
4221
+ onFocus: C,
4222
+ onBlur: y,
4223
+ onKeyDown: N,
4224
+ className: d(
4225
+ "transition-all duration-200",
4226
+ "focus:ring-2 focus:ring-primary focus:ring-offset-2",
4227
+ "hover:border-primary/50",
4228
+ c && "border-primary shadow-sm"
4229
+ )
4230
+ }
4231
+ ),
4232
+ c && E.length > 0 && /* @__PURE__ */ n("div", { className: "absolute z-50 w-full mt-1 bg-popover border rounded-md shadow-lg max-h-60 overflow-auto", children: E.map((b, v) => /* @__PURE__ */ n(
4233
+ "button",
4234
+ {
4235
+ type: "button",
4236
+ onClick: () => R(b),
4237
+ className: d(
4238
+ "w-full text-left px-4 py-2 text-sm transition-colors",
4239
+ "hover:bg-accent hover:text-accent-foreground",
4240
+ "focus:bg-accent focus:text-accent-foreground focus:outline-none",
4241
+ v === f && "bg-accent text-accent-foreground"
4242
+ ),
4243
+ children: b
4244
+ },
4245
+ b
4246
+ )) })
4247
+ ] });
4248
+ }, ko = ({
4249
+ events: e = [],
4250
+ limit: t = 5,
4251
+ loading: r = !1,
4252
+ className: a
4253
+ }) => /* @__PURE__ */ l("div", { className: d(
4254
+ "bg-white dark:bg-gray-800 rounded-lg shadow-md p-6",
4255
+ a
4256
+ ), children: [
4257
+ /* @__PURE__ */ n("h2", { className: "text-2xl font-bold mb-4", children: "Trending Events" }),
4258
+ r ? /* @__PURE__ */ n("p", { className: "text-gray-600 dark:text-gray-300", children: "Loading trending events..." }) : /* @__PURE__ */ l("p", { className: "text-gray-600 dark:text-gray-300", children: [
4259
+ "Showing ",
4260
+ e.length,
4261
+ " trending events (limit: ",
4262
+ t,
4263
+ ")"
4264
+ ] })
4265
+ ] }), Mo = ({
4266
+ articles: e,
4267
+ readMoreLabel: t = "Read more",
4268
+ className: r
4269
+ }) => /* @__PURE__ */ n("div", { className: d("space-y-6", r), children: e.map((a) => /* @__PURE__ */ l("article", { className: "border rounded-lg p-6 hover:shadow-md transition-shadow", children: [
4270
+ a.image && /* @__PURE__ */ n("div", { className: "w-full h-48 bg-muted rounded-md mb-4" }),
4271
+ /* @__PURE__ */ l("div", { className: "space-y-2", children: [
4272
+ /* @__PURE__ */ n("h2", { className: "text-xl font-semibold", children: /* @__PURE__ */ n(
4273
+ H,
4274
+ {
4275
+ href: `/news/${a.slug}`,
4276
+ variant: "ghost",
4277
+ size: "none",
4278
+ className: "hover:text-primary",
4279
+ children: a.title
4280
+ }
4281
+ ) }),
4282
+ a.description && /* @__PURE__ */ n("p", { className: "text-muted-foreground", children: a.description }),
4283
+ a.date && /* @__PURE__ */ n("p", { className: "text-sm text-muted-foreground", children: a.date }),
4284
+ /* @__PURE__ */ l(
4285
+ H,
4286
+ {
4287
+ href: `/news/${a.slug}`,
4288
+ variant: "default",
4289
+ size: "none",
4290
+ className: "inline-flex items-center",
4291
+ children: [
4292
+ t,
4293
+ " →"
4294
+ ]
4295
+ }
4296
+ )
4297
+ ] })
4298
+ ] }, a.slug)) }), Co = ({ className: e }) => /* @__PURE__ */ n("div", { className: d(
4299
+ "w-6 h-6 bg-primary rounded-full flex items-center justify-center",
4300
+ e
4301
+ ), children: /* @__PURE__ */ n("span", { className: "text-white text-sm", children: "↑" }) }), ke = [
4302
+ { code: "en", label: "English" },
4303
+ { code: "es", label: "Español" },
4304
+ { code: "ru", label: "Русский" }
4305
+ ], So = ({
4306
+ className: e,
4307
+ languages: t = ke,
4308
+ value: r,
4309
+ defaultValue: a,
4310
+ disabled: o,
4311
+ onLanguageChange: s
4312
+ }) => {
4313
+ const i = ut(() => t.length > 0 ? t : ke, [t]), c = () => {
4314
+ var g;
4315
+ return r !== void 0 ? r : a && i.some((p) => p.code === a) ? a : ((g = i[0]) == null ? void 0 : g.code) ?? "en";
4316
+ }, [u, f] = Y(c);
4317
+ return Se(() => {
4318
+ r !== void 0 && r !== u && f(r);
4319
+ }, [r, u]), /* @__PURE__ */ n(
4320
+ "select",
4321
+ {
4322
+ value: r ?? u,
4323
+ onChange: (g) => {
4324
+ const p = g.target.value;
4325
+ r === void 0 && f(p), s == null || s(p);
4326
+ },
4327
+ disabled: o,
4328
+ className: d(
4329
+ "px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-800 text-sm",
4330
+ o && "opacity-70 cursor-not-allowed",
4331
+ e
4332
+ ),
4333
+ "aria-label": "Language selector",
4334
+ "data-testid": "language-selector",
4335
+ children: i.map(({ code: g, label: p }) => /* @__PURE__ */ n("option", { value: g, children: p }, g))
4336
+ }
4337
+ );
4338
+ }, Do = ({ className: e }) => /* @__PURE__ */ l("div", { className: d(
4339
+ "bg-white dark:bg-gray-800 rounded-lg shadow-md p-4",
4340
+ e
4341
+ ), children: [
4342
+ /* @__PURE__ */ n(z, { className: "w-full h-48 mb-4" }),
4343
+ /* @__PURE__ */ n(z, { className: "h-6 w-3/4 mb-2" }),
4344
+ /* @__PURE__ */ n(z, { className: "h-4 w-full mb-2" }),
4345
+ /* @__PURE__ */ n(z, { className: "h-4 w-1/2" })
4346
+ ] }), To = ({ className: e }) => /* @__PURE__ */ l("div", { className: d(
4347
+ "bg-white dark:bg-gray-800 rounded-lg shadow-md p-4",
4348
+ e
4349
+ ), children: [
4350
+ /* @__PURE__ */ n(z, { className: "w-full h-48 mb-4" }),
4351
+ /* @__PURE__ */ n(z, { className: "h-6 w-3/4 mb-2" }),
4352
+ /* @__PURE__ */ n(z, { className: "h-4 w-full mb-2" }),
4353
+ /* @__PURE__ */ n(z, { className: "h-4 w-1/2" })
4354
+ ] });
4355
+ export {
4356
+ oo as Alert,
4357
+ Mo as ArticlesSection,
4358
+ yn as Badge,
4359
+ kn as Blockquote,
4360
+ io as Breadcrumbs,
4361
+ j as Button,
4362
+ J as Card,
4363
+ K as CardContent,
4364
+ Pt as CardDescription,
4365
+ Et as CardFooter,
4366
+ Ot as CardHeader,
4367
+ Rt as CardTitle,
4368
+ Nn as Code,
4369
+ Zt as ConfirmDialog,
4370
+ Xt as Container,
4371
+ Fn as CustomDialog,
4372
+ wo as Dashboard,
4373
+ nt as DateRangePicker,
4374
+ Ft as Divider,
4375
+ Wn as DropdownMenu,
4376
+ ur as DropdownMenuCheckboxItem,
4377
+ lr as DropdownMenuContent,
4378
+ zn as DropdownMenuGroup,
4379
+ cr as DropdownMenuItem,
4380
+ fr as DropdownMenuLabel,
4381
+ In as DropdownMenuPortal,
4382
+ Yn as DropdownMenuRadioGroup,
4383
+ mr as DropdownMenuRadioItem,
4384
+ hr as DropdownMenuSeparator,
4385
+ gr as DropdownMenuShortcut,
4386
+ An as DropdownMenuSub,
4387
+ dr as DropdownMenuSubContent,
4388
+ ir as DropdownMenuSubTrigger,
4389
+ Vn as DropdownMenuTrigger,
4390
+ fo as EventCard,
4391
+ Do as EventCardSkeleton,
4392
+ Do as EventCardSkeletonUI,
4393
+ Wa as FilterBar,
4394
+ Qn as FilterBarCompact,
4395
+ ae as FilterSelect,
4396
+ _t as Flex,
4397
+ Dn as Footer,
4398
+ Q as FormInput,
4399
+ go as FormSelect,
4400
+ po as FormTextarea,
4401
+ qt as Grid,
4402
+ wn as Heading,
4403
+ X as Input,
4404
+ te as Label,
4405
+ So as LanguageSelector,
4406
+ H as Link,
4407
+ uo as List,
4408
+ bo as LoginForm,
4409
+ Jt as Modal,
4410
+ On as ModalClose,
4411
+ Ve as ModalContent,
4412
+ Ye as ModalDescription,
4413
+ Ie as ModalFooter,
4414
+ ze as ModalHeader,
4415
+ We as ModalOverlay,
4416
+ Kt as ModalPortal,
4417
+ En as ModalProvider,
4418
+ Ae as ModalTitle,
4419
+ Tn as ModalTrigger,
4420
+ Cn as ModeHero,
4421
+ Sn as Navbar,
4422
+ pr as NavigationMenu,
4423
+ wr as NavigationMenuContent,
4424
+ vr as NavigationMenuIndicator,
4425
+ Hn as NavigationMenuItem,
4426
+ $n as NavigationMenuLink,
4427
+ br as NavigationMenuList,
4428
+ xr as NavigationMenuTrigger,
4429
+ Ue as NavigationMenuViewport,
4430
+ ao as OverlayBackdrop,
4431
+ no as OverlayContainer,
4432
+ ro as OverlayPortal,
4433
+ lo as Pagination,
4434
+ vn as Paragraph,
4435
+ Ga as Popover,
4436
+ eo as PopoverAnchor,
4437
+ dt as PopoverContent,
4438
+ Ua as PopoverTrigger,
4439
+ to as PopoverWrapper,
4440
+ Fa as PriceRangeSlider,
4441
+ xo as ProfileCard,
4442
+ so as Progress,
4443
+ yo as RegisterForm,
4444
+ No as SearchBar,
4445
+ Xn as SearchFilters,
4446
+ ue as SearchInput,
4447
+ Mn as Section,
4448
+ Cr as Select,
4449
+ Ke as SelectContent,
4450
+ qn as SelectGroup,
4451
+ Ze as SelectItem,
4452
+ Dr as SelectLabel,
4453
+ Je as SelectScrollDownButton,
4454
+ Xe as SelectScrollUpButton,
4455
+ Tr as SelectSeparator,
4456
+ Qe as SelectTrigger,
4457
+ Sr as SelectValue,
4458
+ jn as SimpleModal,
4459
+ z as Skeleton,
4460
+ Ut as Stack,
4461
+ co as Table,
4462
+ _n as Tabs,
4463
+ Mr as TabsContent,
4464
+ Nr as TabsList,
4465
+ kr as TabsTrigger,
4466
+ Ht as Text,
4467
+ xn as ThemeSwitch,
4468
+ mo as Timeline,
4469
+ ot as Toast,
4470
+ Jn as ToastProvider,
4471
+ _a as Tooltip,
4472
+ it as TooltipContent,
4473
+ $a as TooltipProvider,
4474
+ Ba as TooltipTrigger,
4475
+ Zn as TooltipWrapper,
4476
+ Co as TrendingIcon,
4477
+ ko as TrendingSection,
4478
+ vo as UserManagement,
4479
+ ho as VenueCard,
4480
+ To as VenueCardSkeleton,
4481
+ To as VenueCardSkeletonUI,
4482
+ It as applyDocumentMode,
4483
+ Lt as badgeVariants,
4484
+ fn as borderRadius,
4485
+ Dt as buttonVariants,
4486
+ d as cn,
4487
+ Qt as containerVariants,
4488
+ nn as cssVariableColorTokens,
4489
+ pn as debounce,
4490
+ $t as flexVariants,
4491
+ dn as fontFamily,
4492
+ ln as fontSize,
4493
+ cn as fontWeight,
4494
+ Ct as formatDate,
4495
+ hn as formatDateTime,
4496
+ St as formatTime,
4497
+ gn as generateId,
4498
+ Bt as gridVariants,
4499
+ un as letterSpacing,
4500
+ mn as lineHeight,
4501
+ Tt as linkVariants,
4502
+ yr as navigationMenuTriggerStyle,
4503
+ Qa as popoverContentVariants,
4504
+ sn as spacing,
4505
+ Gt as stackVariants,
4506
+ on as tailwindThemeColors,
4507
+ bn as throttle,
4508
+ za as toastVariants,
4509
+ qa as tooltipContentVariants,
4510
+ Rn as useConfirmDialog,
4511
+ Gn as useDateRange,
4512
+ Pn as useModal,
4513
+ tr as useModalContext,
4514
+ er as useModalManager,
4515
+ Un as usePriceRange,
4516
+ Bn as useSearch,
4517
+ Kn as useToast,
4518
+ Ya as useToastContext,
4519
+ Ln as withModal
4520
+ };