@getmicdrop/svelte-components 5.19.0 → 5.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (381) hide show
  1. package/dist/base.css +18 -0
  2. package/dist/calendar/AboutShow/AboutShow.svelte +191 -191
  3. package/dist/calendar/Calendar/MiniMonthCalendar.svelte +803 -801
  4. package/dist/calendar/Calendar/MiniMonthCalendar.svelte.d.ts.map +1 -1
  5. package/dist/calendar/FAQs/FAQs.svelte +88 -88
  6. package/dist/calendar/MonthSwitcher/MonthSwitcher.svelte +140 -140
  7. package/dist/calendar/OrderSummary/OrderSummary.svelte +461 -461
  8. package/dist/calendar/PublicCard/PublicCard.svelte +164 -164
  9. package/dist/calendar/ShowCard/ShowCard.svelte +180 -180
  10. package/dist/calendar/ShowTimeCard/ShowTimeCard.svelte +80 -80
  11. package/dist/calendar/index.js +15 -15
  12. package/dist/components/Heading.spec.js +89 -89
  13. package/dist/components/Heading.svelte +66 -60
  14. package/dist/components/Heading.svelte.d.ts +1 -0
  15. package/dist/components/Heading.svelte.d.ts.map +1 -1
  16. package/dist/components/Layout/AppShell.svelte +104 -104
  17. package/dist/components/Layout/ContentSection.svelte +80 -80
  18. package/dist/components/Layout/Grid.svelte +101 -101
  19. package/dist/components/Layout/Heading.svelte +81 -81
  20. package/dist/components/Layout/PageContainer.svelte +69 -69
  21. package/dist/components/Layout/Responsive.svelte +75 -75
  22. package/dist/components/Layout/Section.svelte +80 -80
  23. package/dist/components/Layout/ShowOnDesktop.svelte +37 -37
  24. package/dist/components/Layout/ShowOnMobile.svelte +37 -37
  25. package/dist/components/Layout/Sidebar.svelte +108 -108
  26. package/dist/components/Layout/Stack.spec.js +1 -1
  27. package/dist/components/Layout/Stack.svelte +52 -52
  28. package/dist/components/Layout/Text.svelte +87 -87
  29. package/dist/components/Layout/TwoColumn.svelte +108 -108
  30. package/dist/components/Text.spec.js +89 -89
  31. package/dist/components/Text.svelte +64 -53
  32. package/dist/components/Text.svelte.d.ts +2 -1
  33. package/dist/components/Text.svelte.d.ts.map +1 -1
  34. package/dist/config.js +151 -151
  35. package/dist/config.spec.js +29 -29
  36. package/dist/constants/formOptions.d.ts +2 -5
  37. package/dist/constants/formOptions.d.ts.map +1 -1
  38. package/dist/constants/formOptions.js +48 -48
  39. package/dist/constants/formOptions.spec.js +2 -7
  40. package/dist/constants/validation.js +91 -91
  41. package/dist/constants/validation.spec.js +64 -64
  42. package/dist/datetime/README.md +323 -323
  43. package/dist/datetime/__tests__/format.test.js +1 -1
  44. package/dist/datetime/__tests__/parse.test.js +1 -1
  45. package/dist/datetime/__tests__/timezone.test.js +1 -1
  46. package/dist/datetime/parse.js +1 -1
  47. package/dist/forms/createFormStore.svelte.js +0 -1
  48. package/dist/forms/createFormStore.svelte.spec.js +0 -1
  49. package/dist/index.d.ts +6 -2
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +85 -66
  52. package/dist/index.spec.js +369 -369
  53. package/dist/patterns/chat/ChatActivityNotice.spec.js +59 -59
  54. package/dist/patterns/chat/ChatActivityNotice.svelte +41 -41
  55. package/dist/patterns/chat/ChatBubble.spec.js +91 -91
  56. package/dist/patterns/chat/ChatBubble.svelte +103 -103
  57. package/dist/patterns/chat/ChatContainer.spec.js +30 -30
  58. package/dist/patterns/chat/ChatContainer.svelte +46 -46
  59. package/dist/patterns/chat/ChatDateDivider.spec.js +30 -30
  60. package/dist/patterns/chat/ChatDateDivider.svelte +27 -27
  61. package/dist/patterns/chat/ChatInvitationBubble.spec.js +46 -46
  62. package/dist/patterns/chat/ChatInvitationBubble.svelte +46 -46
  63. package/dist/patterns/chat/ChatInvitationNotice.spec.js +32 -32
  64. package/dist/patterns/chat/ChatInvitationNotice.svelte +36 -36
  65. package/dist/patterns/chat/ChatMessageGroup.spec.js +58 -58
  66. package/dist/patterns/chat/ChatMessageGroup.svelte +57 -57
  67. package/dist/patterns/chat/ChatSlotUpdate.spec.js +65 -65
  68. package/dist/patterns/chat/ChatSlotUpdate.svelte +46 -46
  69. package/dist/patterns/chat/ChatStatusBadge.spec.js +79 -79
  70. package/dist/patterns/chat/ChatStatusBadge.svelte +91 -91
  71. package/dist/patterns/chat/ChatStatusTransition.spec.js +81 -81
  72. package/dist/patterns/chat/ChatStatusTransition.svelte +64 -64
  73. package/dist/patterns/chat/ChatTextBubble.spec.js +35 -35
  74. package/dist/patterns/chat/ChatTextBubble.svelte +41 -41
  75. package/dist/patterns/chat/index.js +22 -22
  76. package/dist/patterns/data/DataGrid.svelte +45 -45
  77. package/dist/patterns/data/DataList.svelte +24 -24
  78. package/dist/patterns/data/DataTable.svelte +45 -45
  79. package/dist/patterns/data/index.js +4 -4
  80. package/dist/patterns/forms/FormActions.spec.js +95 -95
  81. package/dist/patterns/forms/FormActions.stories.svelte +97 -97
  82. package/dist/patterns/forms/FormActions.svelte +46 -46
  83. package/dist/patterns/forms/FormGrid.svelte +33 -33
  84. package/dist/patterns/forms/FormSection.svelte +33 -32
  85. package/dist/patterns/forms/FormSection.svelte.d.ts +2 -0
  86. package/dist/patterns/forms/FormSection.svelte.d.ts.map +1 -1
  87. package/dist/patterns/forms/FormValidationSummary.stories.svelte +97 -97
  88. package/dist/patterns/forms/FormValidationSummary.svelte +82 -82
  89. package/dist/patterns/forms/index.js +5 -5
  90. package/dist/patterns/index.js +21 -21
  91. package/dist/patterns/layout/Sidebar.svelte +39 -39
  92. package/dist/patterns/layout/SidebarTestWrapper.svelte +34 -34
  93. package/dist/patterns/layout/Stack.svelte +61 -61
  94. package/dist/patterns/layout/index.js +29 -29
  95. package/dist/patterns/navigation/BottomNav.stories.svelte +117 -117
  96. package/dist/patterns/navigation/BottomNav.svelte +82 -82
  97. package/dist/patterns/navigation/Header.stories.svelte +77 -77
  98. package/dist/patterns/navigation/Header.svelte +263 -263
  99. package/dist/patterns/navigation/index.js +3 -3
  100. package/dist/patterns/page/PageHeader.svelte +49 -49
  101. package/dist/patterns/page/PageLayout.svelte +40 -40
  102. package/dist/patterns/page/PageLoader.spec.js +57 -57
  103. package/dist/patterns/page/PageLoader.stories.svelte +137 -137
  104. package/dist/patterns/page/PageLoader.svelte +62 -62
  105. package/dist/patterns/page/SectionHeader.svelte +51 -51
  106. package/dist/patterns/page/index.js +5 -5
  107. package/dist/presets/badges.js +112 -112
  108. package/dist/presets/buttons.js +76 -76
  109. package/dist/presets/index.js +9 -9
  110. package/dist/primitives/Accordion/Accordion.stories.svelte +75 -75
  111. package/dist/primitives/Accordion/Accordion.svelte +62 -62
  112. package/dist/primitives/Accordion/AccordionItem.svelte +103 -103
  113. package/dist/primitives/Accordion/AccordionItemWrapper.test.svelte +107 -107
  114. package/dist/primitives/Accordion/AccordionToggleWrapper.test.svelte +28 -28
  115. package/dist/primitives/Alert/Alert.spec.js +173 -173
  116. package/dist/primitives/Alert/Alert.stories.svelte +88 -88
  117. package/dist/primitives/Alert/Alert.svelte +72 -72
  118. package/dist/primitives/Avatar/Avatar.stories.svelte +94 -94
  119. package/dist/primitives/Avatar/Avatar.svelte +66 -66
  120. package/dist/primitives/AvatarButton/AvatarButton.svelte +57 -57
  121. package/dist/primitives/Badges/Badge.spec.js +144 -144
  122. package/dist/primitives/Badges/Badge.stories.svelte +86 -86
  123. package/dist/primitives/Badges/Badge.svelte +99 -99
  124. package/dist/primitives/BottomSheet/BottomSheet.spec.js +238 -238
  125. package/dist/primitives/BottomSheet/BottomSheet.stories.svelte +83 -83
  126. package/dist/primitives/BottomSheet/BottomSheet.svelte +115 -115
  127. package/dist/primitives/BottomSheet/BottomSheetWithActions.test.svelte +20 -20
  128. package/dist/primitives/Breadcrumb/Breadcrumb.spec.js +123 -123
  129. package/dist/primitives/Breadcrumb/Breadcrumb.stories.svelte +23 -23
  130. package/dist/primitives/Breadcrumb/Breadcrumb.svelte +107 -107
  131. package/dist/primitives/Button/Button.spec.js +225 -225
  132. package/dist/primitives/Button/Button.stories.svelte +76 -76
  133. package/dist/primitives/Button/Button.svelte +278 -278
  134. package/dist/primitives/Button/ButtonGroup.spec.js +44 -44
  135. package/dist/primitives/Button/ButtonGroup.svelte +50 -50
  136. package/dist/primitives/Button/ButtonSaveDemo.spec.js +146 -146
  137. package/dist/primitives/Button/ButtonSaveDemo.svelte +25 -25
  138. package/dist/primitives/Button/ButtonVariantShowcase.svelte +129 -129
  139. package/dist/primitives/Card.spec.js +49 -49
  140. package/dist/primitives/Card.stories.svelte +22 -22
  141. package/dist/primitives/Card.svelte +28 -28
  142. package/dist/primitives/CardAction/CardAction.svelte +68 -68
  143. package/dist/primitives/Checkbox/Checkbox.spec.js +4 -15
  144. package/dist/primitives/Checkbox/Checkbox.stories.svelte +84 -84
  145. package/dist/primitives/Checkbox/Checkbox.svelte +88 -88
  146. package/dist/primitives/DarkModeToggle.spec.js +390 -390
  147. package/dist/primitives/DarkModeToggle.stories.svelte +57 -57
  148. package/dist/primitives/DarkModeToggle.svelte +147 -147
  149. package/dist/primitives/Drawer/Drawer.stories.svelte +100 -100
  150. package/dist/primitives/Drawer/Drawer.svelte +224 -224
  151. package/dist/primitives/Drawer/DrawerTestWrapper.svelte +86 -86
  152. package/dist/primitives/Dropdown/Dropdown.stories.svelte +137 -137
  153. package/dist/primitives/Dropdown/Dropdown.svelte +179 -179
  154. package/dist/primitives/Dropdown/DropdownDivider.spec.js +30 -30
  155. package/dist/primitives/Dropdown/DropdownDivider.svelte +9 -9
  156. package/dist/primitives/Dropdown/DropdownItem.svelte +80 -80
  157. package/dist/primitives/Dropdown/DropdownItemTestWrapper.svelte +43 -43
  158. package/dist/primitives/Helper/Helper.spec.js +57 -57
  159. package/dist/primitives/Helper/Helper.svelte +33 -33
  160. package/dist/primitives/Icons/ArrowLeft.svelte +21 -21
  161. package/dist/primitives/Icons/ArrowRight.svelte +21 -21
  162. package/dist/primitives/Icons/Availability.svelte +27 -27
  163. package/dist/primitives/Icons/Back.svelte +27 -27
  164. package/dist/primitives/Icons/CheckCircle.svelte +19 -19
  165. package/dist/primitives/Icons/CheckCircleOutline.svelte +28 -28
  166. package/dist/primitives/Icons/ChevronLeft.svelte +17 -17
  167. package/dist/primitives/Icons/ChevronRight.svelte +17 -17
  168. package/dist/primitives/Icons/Copy.svelte +28 -28
  169. package/dist/primitives/Icons/Cross.svelte +18 -18
  170. package/dist/primitives/Icons/DownArrow.svelte +21 -21
  171. package/dist/primitives/Icons/ErrorCircle.svelte +19 -19
  172. package/dist/primitives/Icons/FacebookIcon.svelte +15 -15
  173. package/dist/primitives/Icons/Home.svelte +28 -28
  174. package/dist/primitives/Icons/Icon.spec.js +175 -175
  175. package/dist/primitives/Icons/Icon.stories.svelte +100 -100
  176. package/dist/primitives/Icons/Icon.svelte +79 -79
  177. package/dist/primitives/Icons/IconGallery.stories.svelte +235 -235
  178. package/dist/primitives/Icons/ImageOutline.svelte +21 -21
  179. package/dist/primitives/Icons/Info.svelte +20 -20
  180. package/dist/primitives/Icons/InstagramIcon.svelte +21 -21
  181. package/dist/primitives/Icons/LogoInstagram.svelte +15 -15
  182. package/dist/primitives/Icons/Message.svelte +28 -28
  183. package/dist/primitives/Icons/MoonIcon.svelte +18 -18
  184. package/dist/primitives/Icons/More.svelte +34 -34
  185. package/dist/primitives/Icons/MoreHori.spec.js +67 -67
  186. package/dist/primitives/Icons/MoreHori.svelte +35 -35
  187. package/dist/primitives/Icons/Notification.svelte +27 -27
  188. package/dist/primitives/Icons/Payment.svelte +27 -27
  189. package/dist/primitives/Icons/Profile.svelte +34 -34
  190. package/dist/primitives/Icons/Reload.svelte +42 -42
  191. package/dist/primitives/Icons/Shows.svelte +34 -34
  192. package/dist/primitives/Icons/Signout.svelte +34 -34
  193. package/dist/primitives/Icons/SunIcon.svelte +21 -21
  194. package/dist/primitives/Icons/TiktokIcon.svelte +15 -15
  195. package/dist/primitives/Icons/TrashBinOutline.svelte +21 -21
  196. package/dist/primitives/Icons/TwitterIcon.svelte +15 -15
  197. package/dist/primitives/Icons/WarningIcon.spec.js +30 -30
  198. package/dist/primitives/Icons/WarningIcon.svelte +24 -24
  199. package/dist/primitives/Input/Input.spec.js +1237 -1237
  200. package/dist/primitives/Input/Input.stories.svelte +139 -139
  201. package/dist/primitives/Input/Input.svelte +444 -444
  202. package/dist/primitives/Input/Select.spec.js +632 -632
  203. package/dist/primitives/Input/Select.stories.svelte +112 -112
  204. package/dist/primitives/Input/Select.svelte +252 -252
  205. package/dist/primitives/Input/Textarea.stories.svelte +137 -137
  206. package/dist/primitives/Input/Textarea.svelte +105 -105
  207. package/dist/primitives/Label/Label.svelte +37 -37
  208. package/dist/primitives/LandingButton/LandingButton.spec.js +61 -61
  209. package/dist/primitives/LandingButton/LandingButton.svelte +92 -92
  210. package/dist/primitives/MenuItem/MenuItem.spec.js +130 -130
  211. package/dist/primitives/MenuItem/MenuItem.svelte +85 -85
  212. package/dist/primitives/Modal/Modal.spec.js +314 -314
  213. package/dist/primitives/Modal/Modal.stories.svelte +86 -86
  214. package/dist/primitives/Modal/Modal.svelte +181 -181
  215. package/dist/primitives/NavItem/NavItem.spec.js +97 -97
  216. package/dist/primitives/NavItem/NavItem.svelte +75 -75
  217. package/dist/primitives/NumberInput/NumberInput.svelte +113 -113
  218. package/dist/primitives/Pagination/DotIndicator.svelte +66 -0
  219. package/dist/primitives/Pagination/DotIndicator.svelte.d.ts +18 -0
  220. package/dist/primitives/Pagination/DotIndicator.svelte.d.ts.map +1 -0
  221. package/dist/primitives/Pagination/Pagination.stories.svelte +76 -76
  222. package/dist/primitives/Pagination/Pagination.svelte +275 -275
  223. package/dist/primitives/Radio/Radio.stories.svelte +80 -80
  224. package/dist/primitives/Radio/Radio.svelte +67 -67
  225. package/dist/primitives/SearchResultItem/SearchResultItem.spec.js +78 -78
  226. package/dist/primitives/SearchResultItem/SearchResultItem.svelte +109 -109
  227. package/dist/primitives/SidebarToggle/SidebarToggle.spec.js +61 -61
  228. package/dist/primitives/SidebarToggle/SidebarToggle.svelte +55 -55
  229. package/dist/primitives/Skeleton/CardPlaceholder.svelte +96 -96
  230. package/dist/primitives/Skeleton/ImagePlaceholder.svelte +68 -68
  231. package/dist/primitives/Skeleton/ListPlaceholder.svelte +85 -85
  232. package/dist/primitives/Skeleton/Skeleton.stories.svelte +151 -151
  233. package/dist/primitives/Skeleton/Skeleton.svelte +55 -55
  234. package/dist/primitives/Spinner/Spinner.spec.js +84 -84
  235. package/dist/primitives/Spinner/Spinner.stories.svelte +29 -29
  236. package/dist/primitives/Spinner/Spinner.svelte +52 -52
  237. package/dist/primitives/Tabs/TabItem.svelte +52 -52
  238. package/dist/primitives/Tabs/Tabs.stories.svelte +112 -112
  239. package/dist/primitives/Tabs/Tabs.svelte +137 -137
  240. package/dist/primitives/Toggle.spec.js +221 -221
  241. package/dist/primitives/Toggle.stories.svelte +92 -92
  242. package/dist/primitives/Toggle.svelte +141 -141
  243. package/dist/primitives/ToggleTestWrapper.svelte +30 -30
  244. package/dist/primitives/Tooltip/Tooltip.spec.js +126 -126
  245. package/dist/primitives/Tooltip/Tooltip.svelte +83 -83
  246. package/dist/primitives/Typography/Typography.svelte +53 -53
  247. package/dist/primitives/ValidationError.spec.js +103 -103
  248. package/dist/primitives/ValidationError.stories.svelte +112 -112
  249. package/dist/primitives/ValidationError.svelte +29 -29
  250. package/dist/primitives/index.d.ts +1 -0
  251. package/dist/primitives/index.js +114 -113
  252. package/dist/recipes/CropImage/CropImage.spec.js +208 -208
  253. package/dist/recipes/CropImage/CropImage.stories.svelte +104 -104
  254. package/dist/recipes/CropImage/CropImage.svelte +241 -241
  255. package/dist/recipes/ImageUploader/ImageUploader.stories.svelte +125 -125
  256. package/dist/recipes/ImageUploader/ImageUploader.svelte +994 -994
  257. package/dist/recipes/Toaster/Toaster.stories.svelte +62 -62
  258. package/dist/recipes/feedback/EmptyState/EmptyState.svelte +75 -75
  259. package/dist/recipes/feedback/ErrorDisplay.spec.js +69 -69
  260. package/dist/recipes/feedback/ErrorDisplay.stories.svelte +113 -113
  261. package/dist/recipes/feedback/ErrorDisplay.svelte +67 -67
  262. package/dist/recipes/feedback/StatusIndicator/StatusIndicator.spec.js +133 -133
  263. package/dist/recipes/feedback/StatusIndicator/StatusIndicator.svelte +176 -176
  264. package/dist/recipes/feedback/index.js +4 -4
  265. package/dist/recipes/fields/CheckboxField.svelte +85 -85
  266. package/dist/recipes/fields/FormField.svelte +58 -58
  267. package/dist/recipes/fields/RadioGroup.svelte +95 -95
  268. package/dist/recipes/fields/SelectField.svelte +82 -82
  269. package/dist/recipes/fields/TextareaField.svelte +101 -101
  270. package/dist/recipes/fields/ToggleField.svelte +60 -60
  271. package/dist/recipes/fields/index.js +7 -7
  272. package/dist/recipes/index.js +24 -24
  273. package/dist/recipes/inputs/MultiSelect.spec.js +263 -263
  274. package/dist/recipes/inputs/MultiSelect.stories.svelte +133 -133
  275. package/dist/recipes/inputs/MultiSelect.svelte +291 -291
  276. package/dist/recipes/inputs/OTPInput.spec.js +251 -251
  277. package/dist/recipes/inputs/OTPInput.stories.svelte +162 -162
  278. package/dist/recipes/inputs/OTPInput.svelte +128 -128
  279. package/dist/recipes/inputs/PasswordInput.svelte +130 -130
  280. package/dist/recipes/inputs/PasswordStrengthIndicator/PasswordStrengthIndicator.svelte +142 -142
  281. package/dist/recipes/inputs/PhoneInput.svelte +254 -254
  282. package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.stories.svelte +170 -170
  283. package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.svelte +349 -349
  284. package/dist/recipes/inputs/Search.svelte +110 -110
  285. package/dist/recipes/inputs/index.js +8 -8
  286. package/dist/recipes/inputs/phoneInput/CountrySelector.svelte +240 -240
  287. package/dist/recipes/modals/AlertModal.svelte +139 -139
  288. package/dist/recipes/modals/ConfirmationModal.spec.js +396 -396
  289. package/dist/recipes/modals/ConfirmationModal.stories.svelte +119 -119
  290. package/dist/recipes/modals/ConfirmationModal.svelte +169 -169
  291. package/dist/recipes/modals/FeedbackModal.svelte +205 -0
  292. package/dist/recipes/modals/FeedbackModal.svelte.d.ts +24 -0
  293. package/dist/recipes/modals/FeedbackModal.svelte.d.ts.map +1 -0
  294. package/dist/recipes/modals/InputModal.svelte +194 -194
  295. package/dist/recipes/modals/ModalStateManager.spec.js +100 -100
  296. package/dist/recipes/modals/ModalStateManager.svelte +77 -77
  297. package/dist/recipes/modals/ModalTestWrapper.svelte +65 -65
  298. package/dist/recipes/modals/StatusModal.svelte +216 -216
  299. package/dist/recipes/modals/index.d.ts +1 -0
  300. package/dist/recipes/modals/index.js +8 -7
  301. package/dist/schemas/common.js +1 -1
  302. package/dist/schemas/event.js +1 -1
  303. package/dist/schemas/order.js +0 -1
  304. package/dist/schemas/performer.js +1 -1
  305. package/dist/schemas/promo.js +2 -2
  306. package/dist/schemas/ticket.js +1 -1
  307. package/dist/schemas/user.js +1 -2
  308. package/dist/services/show.service.d.ts +46 -46
  309. package/dist/stores/auth.d.ts +8 -8
  310. package/dist/stores/auth.svelte.spec.js +1 -1
  311. package/dist/stores/index.js +9 -9
  312. package/dist/stores/toaster.d.ts +3 -3
  313. package/dist/stores/toaster.js +13 -13
  314. package/dist/stores/toaster.spec.js +59 -59
  315. package/dist/stories/ButtonAuditReview.stories.svelte +14 -14
  316. package/dist/stories/ButtonAuditReview.svelte +427 -427
  317. package/dist/stories/PatternsGallery.stories.svelte +19 -19
  318. package/dist/stories/PatternsGallery.svelte +399 -399
  319. package/dist/stories/PrimitivesGallery.stories.svelte +19 -19
  320. package/dist/stories/PrimitivesGallery.svelte +756 -756
  321. package/dist/stories/RecipesGallery.stories.svelte +19 -19
  322. package/dist/stories/RecipesGallery.svelte +454 -454
  323. package/dist/stories/button-audit-manifest.json +11186 -11186
  324. package/dist/tailwind/preset.cjs +87 -82
  325. package/dist/tailwind/preset.d.cts +2 -0
  326. package/dist/tailwind/preset.d.cts.map +1 -1
  327. package/dist/telemetry.js +402 -402
  328. package/dist/telemetry.server.js +212 -212
  329. package/dist/telemetry.server.spec.js +437 -437
  330. package/dist/telemetry.spec.js +1173 -1173
  331. package/dist/tokens/__tests__/spacing.test.js +2 -2
  332. package/dist/tokens/__tests__/variants.test.js +12 -4
  333. package/dist/tokens/base-resets.css +124 -0
  334. package/dist/tokens/spacing.d.ts +2 -0
  335. package/dist/tokens/spacing.d.ts.map +1 -1
  336. package/dist/tokens/spacing.js +1 -0
  337. package/dist/tokens/tokens.css +87 -87
  338. package/dist/tokens/typography-base.css +163 -163
  339. package/dist/tokens/utilities.css +430 -353
  340. package/dist/tokens/variants.d.ts +4 -4
  341. package/dist/tokens/variants.js +4 -4
  342. package/dist/utils/__tests__/auth.test.js +431 -431
  343. package/dist/utils/apiConfig.d.ts +29 -29
  344. package/dist/utils/apiConfig.js +117 -117
  345. package/dist/utils/apiConfig.spec.js +226 -219
  346. package/dist/utils/auth.d.ts +46 -46
  347. package/dist/utils/auth.js +195 -195
  348. package/dist/utils/clickOutside.d.ts +4 -0
  349. package/dist/utils/clickOutside.d.ts.map +1 -0
  350. package/dist/utils/clickOutside.js +13 -0
  351. package/dist/utils/feedbackContext.d.ts +24 -0
  352. package/dist/utils/feedbackContext.d.ts.map +1 -0
  353. package/dist/utils/feedbackContext.js +19 -0
  354. package/dist/utils/fetchHelpers.d.ts.map +1 -1
  355. package/dist/utils/fetchHelpers.js +1 -0
  356. package/dist/utils/focusTrap.d.ts +20 -0
  357. package/dist/utils/focusTrap.d.ts.map +1 -0
  358. package/dist/utils/focusTrap.js +130 -0
  359. package/dist/utils/formatters.js +1 -1
  360. package/dist/utils/greetings.js +187 -187
  361. package/dist/utils/greetings.spec.js +337 -337
  362. package/dist/utils/haptic.spec.js +1 -1
  363. package/dist/utils/imageValidation.js +121 -121
  364. package/dist/utils/imageValidation.spec.js +223 -223
  365. package/dist/utils/logger.d.ts +25 -1
  366. package/dist/utils/logger.d.ts.map +1 -1
  367. package/dist/utils/logger.js +59 -1
  368. package/dist/utils/logger.spec.js +99 -1
  369. package/dist/utils/portal.d.ts +11 -11
  370. package/dist/utils/portal.js +25 -25
  371. package/dist/utils/portal.spec.js +143 -143
  372. package/dist/utils/transitions.d.ts +99 -1
  373. package/dist/utils/transitions.d.ts.map +1 -1
  374. package/dist/utils/transitions.js +148 -6
  375. package/dist/utils/utils/utils.d.ts +2 -2
  376. package/dist/utils/utils/utils.js +3 -3
  377. package/dist/utils/utils/utils.spec.js +698 -698
  378. package/dist/utils/utils.d.ts +41 -41
  379. package/dist/utils/utils.js +59 -59
  380. package/dist/utils/utils.spec.js +643 -643
  381. package/package.json +310 -301
@@ -1,89 +1,89 @@
1
- import { render } from '@testing-library/svelte';
2
- import { createRawSnippet } from 'svelte';
3
- import { expect, describe, test } from 'vitest';
4
- import Text from './Text.svelte';
5
-
6
- function textSnippet(text) {
7
- return createRawSnippet(() => ({
8
- render: () => `<span>${text}</span>`
9
- }));
10
- }
11
-
12
- describe('Text', () => {
13
- test('renders a span element', () => {
14
- const { container } = render(Text, { props: { children: textSnippet('Hello') } });
15
- expect(container.querySelector('span')).toBeInTheDocument();
16
- expect(container.textContent).toContain('Hello');
17
- });
18
-
19
- test('default size is md (text-base)', () => {
20
- const { container } = render(Text, { props: { children: textSnippet('T') } });
21
- expect(container.querySelector('span')).toHaveClass('text-base');
22
- });
23
-
24
- test('size xs', () => {
25
- const { container } = render(Text, { props: { size: 'xs', children: textSnippet('T') } });
26
- expect(container.querySelector('span')).toHaveClass('text-xs');
27
- });
28
-
29
- test('size lg', () => {
30
- const { container } = render(Text, { props: { size: 'lg', children: textSnippet('T') } });
31
- expect(container.querySelector('span')).toHaveClass('text-lg');
32
- });
33
-
34
- test('size 2xl', () => {
35
- const { container } = render(Text, { props: { size: '2xl', children: textSnippet('T') } });
36
- expect(container.querySelector('span')).toHaveClass('text-2xl');
37
- });
38
-
39
- test('default color is default (gray-900)', () => {
40
- const { container } = render(Text, { props: { children: textSnippet('T') } });
41
- expect(container.querySelector('span').className).toContain('text-gray-900');
42
- });
43
-
44
- test('color muted', () => {
45
- const { container } = render(Text, { props: { color: 'muted', children: textSnippet('T') } });
46
- expect(container.querySelector('span').className).toContain('text-gray-500');
47
- });
48
-
49
- test('color success', () => {
50
- const { container } = render(Text, { props: { color: 'success', children: textSnippet('T') } });
51
- expect(container.querySelector('span').className).toContain('text-green-600');
52
- });
53
-
54
- test('color error', () => {
55
- const { container } = render(Text, { props: { color: 'error', children: textSnippet('T') } });
56
- expect(container.querySelector('span').className).toContain('text-red-600');
57
- });
58
-
59
- test('leading tight', () => {
60
- const { container } = render(Text, { props: { leading: 'tight', children: textSnippet('T') } });
61
- expect(container.querySelector('span')).toHaveClass('leading-tight');
62
- });
63
-
64
- test('leading relaxed', () => {
65
- const { container } = render(Text, { props: { leading: 'relaxed', children: textSnippet('T') } });
66
- expect(container.querySelector('span')).toHaveClass('leading-relaxed');
67
- });
68
-
69
- test('no leading class when not provided', () => {
70
- const { container } = render(Text, { props: { children: textSnippet('T') } });
71
- const cls = container.querySelector('span').className;
72
- expect(cls).not.toContain('leading-');
73
- });
74
-
75
- test('applies custom className', () => {
76
- const { container } = render(Text, { props: { class: 'custom-text', children: textSnippet('T') } });
77
- expect(container.querySelector('span')).toHaveClass('custom-text');
78
- });
79
-
80
- test('invalid size falls back to text-base', () => {
81
- const { container } = render(Text, { props: { size: 'invalid', children: textSnippet('T') } });
82
- expect(container.querySelector('span')).toHaveClass('text-base');
83
- });
84
-
85
- test('invalid color falls back gracefully', () => {
86
- const { container } = render(Text, { props: { color: 'invalid', children: textSnippet('T') } });
87
- expect(container.querySelector('span')).toBeInTheDocument();
88
- });
89
- });
1
+ import { render } from '@testing-library/svelte';
2
+ import { createRawSnippet } from 'svelte';
3
+ import { expect, describe, test } from 'vitest';
4
+ import Text from './Text.svelte';
5
+
6
+ function textSnippet(text) {
7
+ return createRawSnippet(() => ({
8
+ render: () => `<span>${text}</span>`
9
+ }));
10
+ }
11
+
12
+ describe('Text', () => {
13
+ test('renders a span element', () => {
14
+ const { container } = render(Text, { props: { children: textSnippet('Hello') } });
15
+ expect(container.querySelector('span')).toBeInTheDocument();
16
+ expect(container.textContent).toContain('Hello');
17
+ });
18
+
19
+ test('default size is md (text-base)', () => {
20
+ const { container } = render(Text, { props: { children: textSnippet('T') } });
21
+ expect(container.querySelector('span')).toHaveClass('text-base');
22
+ });
23
+
24
+ test('size xs', () => {
25
+ const { container } = render(Text, { props: { size: 'xs', children: textSnippet('T') } });
26
+ expect(container.querySelector('span')).toHaveClass('text-xs');
27
+ });
28
+
29
+ test('size lg', () => {
30
+ const { container } = render(Text, { props: { size: 'lg', children: textSnippet('T') } });
31
+ expect(container.querySelector('span')).toHaveClass('text-lg');
32
+ });
33
+
34
+ test('size 2xl', () => {
35
+ const { container } = render(Text, { props: { size: '2xl', children: textSnippet('T') } });
36
+ expect(container.querySelector('span')).toHaveClass('text-2xl');
37
+ });
38
+
39
+ test('default color is default (gray-900)', () => {
40
+ const { container } = render(Text, { props: { children: textSnippet('T') } });
41
+ expect(container.querySelector('span').className).toContain('text-gray-900');
42
+ });
43
+
44
+ test('color muted', () => {
45
+ const { container } = render(Text, { props: { color: 'muted', children: textSnippet('T') } });
46
+ expect(container.querySelector('span').className).toContain('text-gray-500');
47
+ });
48
+
49
+ test('color success', () => {
50
+ const { container } = render(Text, { props: { color: 'success', children: textSnippet('T') } });
51
+ expect(container.querySelector('span').className).toContain('text-green-600');
52
+ });
53
+
54
+ test('color error', () => {
55
+ const { container } = render(Text, { props: { color: 'error', children: textSnippet('T') } });
56
+ expect(container.querySelector('span').className).toContain('text-red-600');
57
+ });
58
+
59
+ test('leading tight', () => {
60
+ const { container } = render(Text, { props: { leading: 'tight', children: textSnippet('T') } });
61
+ expect(container.querySelector('span')).toHaveClass('leading-tight');
62
+ });
63
+
64
+ test('leading relaxed', () => {
65
+ const { container } = render(Text, { props: { leading: 'relaxed', children: textSnippet('T') } });
66
+ expect(container.querySelector('span')).toHaveClass('leading-relaxed');
67
+ });
68
+
69
+ test('no leading class when not provided', () => {
70
+ const { container } = render(Text, { props: { children: textSnippet('T') } });
71
+ const cls = container.querySelector('span').className;
72
+ expect(cls).not.toContain('leading-');
73
+ });
74
+
75
+ test('applies custom className', () => {
76
+ const { container } = render(Text, { props: { class: 'custom-text', children: textSnippet('T') } });
77
+ expect(container.querySelector('span')).toHaveClass('custom-text');
78
+ });
79
+
80
+ test('invalid size falls back to text-base', () => {
81
+ const { container } = render(Text, { props: { size: 'invalid', children: textSnippet('T') } });
82
+ expect(container.querySelector('span')).toHaveClass('text-base');
83
+ });
84
+
85
+ test('invalid color falls back gracefully', () => {
86
+ const { container } = render(Text, { props: { color: 'invalid', children: textSnippet('T') } });
87
+ expect(container.querySelector('span')).toBeInTheDocument();
88
+ });
89
+ });
@@ -1,53 +1,64 @@
1
- <script lang="ts">
2
- import type { Snippet } from 'svelte';
3
-
4
- interface Props {
5
- size?: 'xs' | 'sm' | 'base' | 'md' | 'lg' | 'xl' | '2xl';
6
- leading?: 'none' | 'tight' | 'snug' | 'normal' | 'relaxed' | 'loose';
7
- color?: 'default' | 'muted' | 'primary' | 'secondary' | 'success' | 'warning' | 'error';
8
- class?: string;
9
- children: Snippet;
10
- }
11
-
12
- let {
13
- size = 'md',
14
- leading,
15
- color = 'default',
16
- class: className = '',
17
- children,
18
- }: Props = $props();
19
-
20
- const sizeClasses: Record<string, string> = {
21
- xs: 'text-xs',
22
- sm: 'text-sm',
23
- base: 'text-base',
24
- md: 'text-base',
25
- lg: 'text-lg',
26
- xl: 'text-xl',
27
- '2xl': 'text-2xl',
28
- };
29
-
30
- const colorClasses: Record<string, string> = {
31
- default: 'text-gray-900 dark:text-gray-100',
32
- muted: 'text-gray-500 dark:text-gray-400',
33
- primary: 'text-primary-600 dark:text-primary-400',
34
- secondary: 'text-gray-600 dark:text-gray-300',
35
- success: 'text-green-600 dark:text-green-400',
36
- warning: 'text-yellow-600 dark:text-yellow-400',
37
- error: 'text-red-600 dark:text-red-400',
38
- };
39
-
40
- const leadingClasses: Record<string, string> = {
41
- none: 'leading-none',
42
- tight: 'leading-tight',
43
- snug: 'leading-snug',
44
- normal: 'leading-normal',
45
- relaxed: 'leading-relaxed',
46
- loose: 'leading-loose',
47
- };
48
-
49
- let leadingClass = $derived(leading ? leadingClasses[leading] : '');
50
- let classes = $derived(`${sizeClasses[size] || 'text-base'} ${leadingClass} ${colorClasses[color] || ''} ${className}`.trim());
51
- </script>
52
-
53
- <span class={classes}>{@render children()}</span>
1
+ <script lang="ts">
2
+ import type { Snippet } from 'svelte';
3
+
4
+ interface Props {
5
+ as?: 'span' | 'p' | 'label' | 'div';
6
+ size?: 'xs' | 'sm' | 'base' | 'md' | 'lg' | 'xl' | '2xl';
7
+ leading?: 'none' | 'tight' | 'snug' | 'normal' | 'relaxed' | 'loose';
8
+ color?: 'default' | 'muted' | 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'none';
9
+ class?: string;
10
+ children: Snippet;
11
+ }
12
+
13
+ let {
14
+ as = 'span',
15
+ size = 'md',
16
+ leading,
17
+ color = 'default',
18
+ class: className = '',
19
+ children,
20
+ }: Props = $props();
21
+
22
+ const sizeClasses: Record<string, string> = {
23
+ xs: 'text-xs',
24
+ sm: 'text-sm',
25
+ base: 'text-base',
26
+ md: 'text-base',
27
+ lg: 'text-lg',
28
+ xl: 'text-xl',
29
+ '2xl': 'text-2xl',
30
+ };
31
+
32
+ const colorClasses: Record<string, string> = {
33
+ default: 'text-gray-900 dark:text-gray-100',
34
+ muted: 'text-gray-500 dark:text-gray-400',
35
+ primary: 'text-primary-600 dark:text-primary-400',
36
+ secondary: 'text-gray-600 dark:text-gray-300',
37
+ success: 'text-green-600 dark:text-green-400',
38
+ warning: 'text-yellow-600 dark:text-yellow-400',
39
+ error: 'text-red-600 dark:text-red-400',
40
+ none: '',
41
+ };
42
+
43
+ const leadingClasses: Record<string, string> = {
44
+ none: 'leading-none',
45
+ tight: 'leading-tight',
46
+ snug: 'leading-snug',
47
+ normal: 'leading-normal',
48
+ relaxed: 'leading-relaxed',
49
+ loose: 'leading-loose',
50
+ };
51
+
52
+ let leadingClass = $derived(leading ? leadingClasses[leading] : '');
53
+ let classes = $derived(`${sizeClasses[size] || 'text-base'} ${leadingClass} ${colorClasses[color] || ''} ${className}`.trim());
54
+ </script>
55
+
56
+ {#if as === 'p'}
57
+ <p class={classes}>{@render children()}</p>
58
+ {:else if as === 'label'}
59
+ <label class={classes}>{@render children()}</label>
60
+ {:else if as === 'div'}
61
+ <div class={classes}>{@render children()}</div>
62
+ {:else}
63
+ <span class={classes}>{@render children()}</span>
64
+ {/if}
@@ -1,8 +1,9 @@
1
1
  import type { Snippet } from 'svelte';
2
2
  interface Props {
3
+ as?: 'span' | 'p' | 'label' | 'div';
3
4
  size?: 'xs' | 'sm' | 'base' | 'md' | 'lg' | 'xl' | '2xl';
4
5
  leading?: 'none' | 'tight' | 'snug' | 'normal' | 'relaxed' | 'loose';
5
- color?: 'default' | 'muted' | 'primary' | 'secondary' | 'success' | 'warning' | 'error';
6
+ color?: 'default' | 'muted' | 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'none';
6
7
  class?: string;
7
8
  children: Snippet;
8
9
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Text.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/Text.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGpC,UAAU,KAAK;IACb,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;IACzD,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;IACrE,KAAK,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IACxF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;CACnB;AAkDH,QAAA,MAAM,IAAI,2CAAwC,CAAC;AACnD,KAAK,IAAI,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC;AACpC,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"Text.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/Text.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGpC,UAAU,KAAK;IACb,EAAE,CAAC,EAAE,MAAM,GAAG,GAAG,GAAG,OAAO,GAAG,KAAK,CAAC;IACpC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;IACzD,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;IACrE,KAAK,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;IACjG,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;CACnB;AA4DH,QAAA,MAAM,IAAI,2CAAwC,CAAC;AACnD,KAAK,IAAI,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC;AACpC,eAAe,IAAI,CAAC"}
package/dist/config.js CHANGED
@@ -1,152 +1,152 @@
1
- export const API_BASE_URL =
2
- import.meta.env.VITE_API_BASE_URL || 'https://get-micdrop.com';
3
-
4
- export const PUBLIC_GOOGLE_MAPS_API_KEY =
5
- import.meta.env.VITE_PUBLIC_GOOGLE_MAPS_API_KEY ||
6
- 'AIzaSyCFB0-9qay7P0jZZDw93SsTnyLtZDlch7Q';
7
-
8
- /**
9
- * String length limits for validation schemas
10
- */
11
- export const STRING_LIMITS = {
12
- EVENT_TITLE_MIN: 1,
13
- EVENT_TITLE_MAX: 200,
14
- EVENT_DESCRIPTION_MAX: 5000,
15
- VENUE_NAME_MIN: 1,
16
- VENUE_NAME_MAX: 200,
17
- VENUE_DESCRIPTION_MAX: 3000,
18
- PERFORMER_NAME_MIN: 1,
19
- PERFORMER_NAME_MAX: 100,
20
- PERFORMER_BIO_MAX: 2000,
21
- TICKET_NAME_MIN: 1,
22
- TICKET_NAME_MAX: 100,
23
- TICKET_DESCRIPTION_MAX: 500,
24
- PROMO_CODE_MIN: 3,
25
- PROMO_CODE_MAX: 20,
26
- SHORT_TEXT_MAX: 100,
27
- MEDIUM_TEXT_MAX: 500,
28
- LONG_TEXT_MAX: 2000,
29
- EMAIL_MAX: 254,
30
- PHONE_MAX: 20,
31
- URL_MAX: 2048,
32
- ADDRESS_MAX: 200,
33
- CITY_MAX: 100,
34
- POSTAL_CODE_MAX: 20,
35
- NOTES_MAX: 1000,
36
- };
37
-
38
- /**
39
- * Number limits for validation schemas
40
- */
41
- export const NUMBER_LIMITS = {
42
- AGE_MIN: 0,
43
- AGE_MAX: 21,
44
- PERCENT_MIN: 0,
45
- PERCENT_MAX: 100,
46
- CURRENCY_MIN: 0,
47
- CURRENCY_MAX: 1000000,
48
- QUANTITY_MIN: 0,
49
- QUANTITY_MAX: 100000,
50
- YEAR_MIN: 1900,
51
- YEAR_MAX: 2100,
52
- RATING_MIN: 1,
53
- RATING_MAX: 5,
54
- };
55
-
56
- /**
57
- * File validation limits
58
- */
59
- export const FILE_LIMITS = {
60
- MAX_SIZE: 10 * 1024 * 1024,
61
- MAX_IMAGE_SIZE: 5 * 1024 * 1024,
62
- MAX_CSV_SIZE: 50 * 1024 * 1024,
63
- MAX_FILENAME_LENGTH: 255,
64
- };
65
-
66
- /**
67
- * Input patterns (regex)
68
- */
69
- export const PATTERNS = {
70
- EMAIL: /^[^\s@]+@[^\s@]+\.[^\s@]+$/,
71
- PHONE: /^\+?1?[-.\s]?\(?[0-9]{3}\)?[-.\s]?[0-9]{3}[-.\s]?[0-9]{4}$/,
72
- ZIP_CODE: /^\d{5}(-\d{4})?$/,
73
- ALPHANUMERIC: /^[a-zA-Z0-9]+$/,
74
- SLUG: /^[a-z0-9]+(?:-[a-z0-9]+)*$/,
75
- PROMO_CODE: /^[A-Z0-9_]+$/,
76
- URL: /^https?:\/\/.+/,
77
- TIME_24H: /^([01]?[0-9]|2[0-3]):[0-5][0-9]$/,
78
- CURRENCY: /^\d+(\.\d{1,2})?$/,
79
- };
80
-
81
- /**
82
- * Password requirements
83
- */
84
- export const PASSWORD = {
85
- MIN_LENGTH: 8,
86
- MAX_LENGTH: 128,
87
- REQUIRE_UPPERCASE: true,
88
- REQUIRE_LOWERCASE: true,
89
- REQUIRE_NUMBER: true,
90
- REQUIRE_SPECIAL: false,
91
- };
92
-
93
- /**
94
- * Order limits
95
- */
96
- export const ORDER = {
97
- MIN_TICKETS: 1,
98
- MAX_TICKETS: 50,
99
- DEFAULT_MAX_TICKETS: 10,
100
- CART_TIMEOUT_MINUTES: 15,
101
- };
102
-
103
- /**
104
- * Ticket pricing limits
105
- */
106
- export const TICKET_PRICING = {
107
- MIN_PRICE: 0,
108
- MAX_PRICE: 10000,
109
- PRICE_PRECISION: 2,
110
- };
111
-
112
- /**
113
- * Event capacity limits
114
- */
115
- export const CAPACITY = {
116
- MIN_CAPACITY: 1,
117
- MAX_CAPACITY: 100000,
118
- DEFAULT_CAPACITY: 100,
119
- };
120
-
121
- /**
122
- * Promo code limits
123
- */
124
- export const PROMO_CODE = {
125
- MIN_CODE_LENGTH: 3,
126
- MAX_CODE_LENGTH: 20,
127
- MAX_DISCOUNT_PERCENT: 100,
128
- MAX_DISCOUNT_FIXED: 1000,
129
- DEFAULT_USAGE_LIMIT: 100,
130
- };
131
-
132
- /**
133
- * Performer/roster limits
134
- */
135
- export const PERFORMER = {
136
- MIN_SET_TIME: 5,
137
- MAX_SET_TIME: 180,
138
- DEFAULT_SET_TIME: 15,
139
- MAX_PER_EVENT: 50,
140
- MAX_TIER: 5,
141
- };
142
-
143
- /**
144
- * Schedule/timeline limits
145
- */
146
- export const SCHEDULE = {
147
- MIN_EVENT_DURATION: 15,
148
- MAX_EVENT_DURATION: 24 * 60,
149
- DEFAULT_EVENT_DURATION: 120,
150
- DEFAULT_DOORS_BEFORE: 30,
151
- MAX_ADVANCE_DAYS: 365,
1
+ export const API_BASE_URL =
2
+ import.meta.env.VITE_API_BASE_URL || 'https://get-micdrop.com';
3
+
4
+ export const PUBLIC_GOOGLE_MAPS_API_KEY =
5
+ import.meta.env.VITE_PUBLIC_GOOGLE_MAPS_API_KEY ||
6
+ 'AIzaSyCFB0-9qay7P0jZZDw93SsTnyLtZDlch7Q';
7
+
8
+ /**
9
+ * String length limits for validation schemas
10
+ */
11
+ export const STRING_LIMITS = {
12
+ EVENT_TITLE_MIN: 1,
13
+ EVENT_TITLE_MAX: 200,
14
+ EVENT_DESCRIPTION_MAX: 5000,
15
+ VENUE_NAME_MIN: 1,
16
+ VENUE_NAME_MAX: 200,
17
+ VENUE_DESCRIPTION_MAX: 3000,
18
+ PERFORMER_NAME_MIN: 1,
19
+ PERFORMER_NAME_MAX: 100,
20
+ PERFORMER_BIO_MAX: 2000,
21
+ TICKET_NAME_MIN: 1,
22
+ TICKET_NAME_MAX: 100,
23
+ TICKET_DESCRIPTION_MAX: 500,
24
+ PROMO_CODE_MIN: 3,
25
+ PROMO_CODE_MAX: 20,
26
+ SHORT_TEXT_MAX: 100,
27
+ MEDIUM_TEXT_MAX: 500,
28
+ LONG_TEXT_MAX: 2000,
29
+ EMAIL_MAX: 254,
30
+ PHONE_MAX: 20,
31
+ URL_MAX: 2048,
32
+ ADDRESS_MAX: 200,
33
+ CITY_MAX: 100,
34
+ POSTAL_CODE_MAX: 20,
35
+ NOTES_MAX: 1000,
36
+ };
37
+
38
+ /**
39
+ * Number limits for validation schemas
40
+ */
41
+ export const NUMBER_LIMITS = {
42
+ AGE_MIN: 0,
43
+ AGE_MAX: 21,
44
+ PERCENT_MIN: 0,
45
+ PERCENT_MAX: 100,
46
+ CURRENCY_MIN: 0,
47
+ CURRENCY_MAX: 1000000,
48
+ QUANTITY_MIN: 0,
49
+ QUANTITY_MAX: 100000,
50
+ YEAR_MIN: 1900,
51
+ YEAR_MAX: 2100,
52
+ RATING_MIN: 1,
53
+ RATING_MAX: 5,
54
+ };
55
+
56
+ /**
57
+ * File validation limits
58
+ */
59
+ export const FILE_LIMITS = {
60
+ MAX_SIZE: 10 * 1024 * 1024,
61
+ MAX_IMAGE_SIZE: 5 * 1024 * 1024,
62
+ MAX_CSV_SIZE: 50 * 1024 * 1024,
63
+ MAX_FILENAME_LENGTH: 255,
64
+ };
65
+
66
+ /**
67
+ * Input patterns (regex)
68
+ */
69
+ export const PATTERNS = {
70
+ EMAIL: /^[^\s@]+@[^\s@]+\.[^\s@]+$/,
71
+ PHONE: /^\+?1?[-.\s]?\(?[0-9]{3}\)?[-.\s]?[0-9]{3}[-.\s]?[0-9]{4}$/,
72
+ ZIP_CODE: /^\d{5}(-\d{4})?$/,
73
+ ALPHANUMERIC: /^[a-zA-Z0-9]+$/,
74
+ SLUG: /^[a-z0-9]+(?:-[a-z0-9]+)*$/,
75
+ PROMO_CODE: /^[A-Z0-9_]+$/,
76
+ URL: /^https?:\/\/.+/,
77
+ TIME_24H: /^([01]?[0-9]|2[0-3]):[0-5][0-9]$/,
78
+ CURRENCY: /^\d+(\.\d{1,2})?$/,
79
+ };
80
+
81
+ /**
82
+ * Password requirements
83
+ */
84
+ export const PASSWORD = {
85
+ MIN_LENGTH: 8,
86
+ MAX_LENGTH: 128,
87
+ REQUIRE_UPPERCASE: true,
88
+ REQUIRE_LOWERCASE: true,
89
+ REQUIRE_NUMBER: true,
90
+ REQUIRE_SPECIAL: false,
91
+ };
92
+
93
+ /**
94
+ * Order limits
95
+ */
96
+ export const ORDER = {
97
+ MIN_TICKETS: 1,
98
+ MAX_TICKETS: 50,
99
+ DEFAULT_MAX_TICKETS: 10,
100
+ CART_TIMEOUT_MINUTES: 15,
101
+ };
102
+
103
+ /**
104
+ * Ticket pricing limits
105
+ */
106
+ export const TICKET_PRICING = {
107
+ MIN_PRICE: 0,
108
+ MAX_PRICE: 10000,
109
+ PRICE_PRECISION: 2,
110
+ };
111
+
112
+ /**
113
+ * Event capacity limits
114
+ */
115
+ export const CAPACITY = {
116
+ MIN_CAPACITY: 1,
117
+ MAX_CAPACITY: 100000,
118
+ DEFAULT_CAPACITY: 100,
119
+ };
120
+
121
+ /**
122
+ * Promo code limits
123
+ */
124
+ export const PROMO_CODE = {
125
+ MIN_CODE_LENGTH: 3,
126
+ MAX_CODE_LENGTH: 20,
127
+ MAX_DISCOUNT_PERCENT: 100,
128
+ MAX_DISCOUNT_FIXED: 1000,
129
+ DEFAULT_USAGE_LIMIT: 100,
130
+ };
131
+
132
+ /**
133
+ * Performer/roster limits
134
+ */
135
+ export const PERFORMER = {
136
+ MIN_SET_TIME: 5,
137
+ MAX_SET_TIME: 180,
138
+ DEFAULT_SET_TIME: 15,
139
+ MAX_PER_EVENT: 50,
140
+ MAX_TIER: 5,
141
+ };
142
+
143
+ /**
144
+ * Schedule/timeline limits
145
+ */
146
+ export const SCHEDULE = {
147
+ MIN_EVENT_DURATION: 15,
148
+ MAX_EVENT_DURATION: 24 * 60,
149
+ DEFAULT_EVENT_DURATION: 120,
150
+ DEFAULT_DOORS_BEFORE: 30,
151
+ MAX_ADVANCE_DAYS: 365,
152
152
  };