@stachelock/ui 0.5.5 → 0.6.1
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.
- package/README.md +118 -5
- package/dist/AddDeleteButtonGroup.vue_vue_type_script_setup_true_lang-6taLcPq0.js +77 -0
- package/dist/{AlertModal.vue_vue_type_script_setup_true_lang-C6q8Mpl4.js → AlertModal.vue_vue_type_script_setup_true_lang-DzhVQdx4.js} +45 -65
- package/dist/BackgroundGradientWrapper.vue_vue_type_script_setup_true_lang-C8msTrTn.js +0 -1
- package/dist/BarChart.vue_vue_type_script_setup_true_lang-xCb0DCbf.js +0 -1
- package/dist/{BaseModal.vue_vue_type_script_setup_true_lang-B67Pt3tW.js → BaseModal.vue_vue_type_script_setup_true_lang--iGzFCnC.js} +42 -44
- package/dist/{CalendarHeader.vue_vue_type_script_setup_true_lang-CkSUiLOH.js → CalendarHeader.vue_vue_type_script_setup_true_lang-hGa2MLyo.js} +114 -141
- package/dist/CardWrapper.vue_vue_type_script_setup_true_lang-D59QBAi9.js +0 -1
- package/dist/CheckboxInput.vue_vue_type_script_setup_true_lang-BikR9rgi.js +0 -1
- package/dist/ComboboxInput.vue_vue_type_script_setup_true_lang-BigvbBAU.js +331 -0
- package/dist/ComingSoon.vue_vue_type_script_setup_true_lang-CJ8FXE42.js +0 -1
- package/dist/{DashboardLayout.vue_vue_type_script_setup_true_lang-B0M6-9os.js → DashboardLayout.vue_vue_type_script_setup_true_lang-BAx4gKqh.js} +44 -47
- package/dist/{DatepickerInput.vue_vue_type_style_index_0_lang-BdkGLw0H.js → DatepickerInput.vue_vue_type_style_index_0_lang-DbI3619T.js} +23 -24
- package/dist/{DayCalendar.vue_vue_type_script_setup_true_lang-8al4Fotu.js → DayCalendar.vue_vue_type_script_setup_true_lang-D-4jcUvI.js} +1 -2
- package/dist/DefaultLayout.vue_vue_type_script_setup_true_lang-BZAz6aC-.js +0 -1
- package/dist/DisclosureWrapper.vue_vue_type_script_setup_true_lang-CgHPOC-w.js +35 -0
- package/dist/{DynamicForm.vue_vue_type_script_setup_true_lang-CxSaO5Cl.js → DynamicForm.vue_vue_type_script_setup_true_lang-BR8Pq7Kw.js} +52 -53
- package/dist/{DynamicFormField.vue_vue_type_script_setup_true_lang-CSLSRFM7.js → DynamicFormField.vue_vue_type_script_setup_true_lang-BCVmqg_n.js} +7 -8
- package/dist/EmailInput.vue_vue_type_script_setup_true_lang-BicPMIop.js +0 -1
- package/dist/EmptyInput.vue_vue_type_script_setup_true_lang-FWDCFF2c.js +0 -1
- package/dist/EmptyState.vue_vue_type_script_setup_true_lang-7mcKkOWP.js +0 -1
- package/dist/EventCard.vue_vue_type_script_setup_true_lang-B3TP-mWX.js +74 -0
- package/dist/EventsList.vue_vue_type_script_setup_true_lang-BTIoGr_e.js +87 -0
- package/dist/FileDropzoneInput.vue_vue_type_script_setup_true_lang-BJR-_ngq.js +176 -0
- package/dist/{FormErrorWrapper.vue_vue_type_script_setup_true_lang-BQOlG_ab.js → FormErrorWrapper.vue_vue_type_script_setup_true_lang-D7ZAgfPs.js} +12 -13
- package/dist/FunnelChart.vue_vue_type_script_setup_true_lang-B4pH6xCV.js +0 -1
- package/dist/HeaderLayout.vue_vue_type_script_setup_true_lang-BY2G6hCc.js +0 -1
- package/dist/HiddenInput.vue_vue_type_script_setup_true_lang-PtGZ4eLW.js +0 -1
- package/dist/{InlineTabs.vue_vue_type_script_setup_true_lang-CD0lnkUm.js → InlineTabs.vue_vue_type_script_setup_true_lang-B5w4yzcZ.js} +1 -2
- package/dist/LineChart.vue_vue_type_script_setup_true_lang-DJo0edLJ.js +0 -1
- package/dist/{LottieAnimation.vue_vue_type_script_setup_true_lang-swmHdR0_.js → LottieAnimation.vue_vue_type_script_setup_true_lang-C0R4ADBb.js} +1 -2
- package/dist/{MonthCalendar.vue_vue_type_style_index_0_lang-Cyzq7A9j.js → MonthCalendar.vue_vue_type_style_index_0_lang-lnKkvJ9u.js} +1 -2
- package/dist/NavigationGroup.vue_vue_type_script_setup_true_lang-BWq5fpEm.js +0 -1
- package/dist/NavigationItem.vue_vue_type_script_setup_true_lang-C8aX-84Q.js +0 -1
- package/dist/{NotificationContainer.vue_vue_type_style_index_0_lang-DSfNw4Ge.js → NotificationContainer.vue_vue_type_style_index_0_lang-CvJRwezr.js} +1 -2
- package/dist/{NotificationToast.vue_vue_type_script_setup_true_lang-CU__ORw8.js → NotificationToast.vue_vue_type_script_setup_true_lang-BBWpW4km.js} +61 -64
- package/dist/PieChart.vue_vue_type_script_setup_true_lang-e3wsA9O4.js +0 -1
- package/dist/ProfileHeaderAvatar.vue_vue_type_script_setup_true_lang-CKCoHD1o.js +0 -1
- package/dist/ProjectLogo.vue_vue_type_script_setup_true_lang-DYjp-RNh.js +0 -1
- package/dist/{SelectInput.vue_vue_type_script_setup_true_lang-DHiZ-7K2.js → SelectInput.vue_vue_type_script_setup_true_lang-D4GNv0MY.js} +56 -58
- package/dist/{SelectTextInput.vue_vue_type_script_setup_true_lang-DYrXW14A.js → SelectTextInput.vue_vue_type_script_setup_true_lang-BVaViHPl.js} +66 -69
- package/dist/{SidebarLayout.vue_vue_type_script_setup_true_lang-BJ5jadgZ.js → SidebarLayout.vue_vue_type_script_setup_true_lang-CZ21EVcZ.js} +36 -39
- package/dist/SparklineChart.vue_vue_type_script_setup_true_lang-BlNk5ZqM.js +0 -1
- package/dist/StatCard.vue_vue_type_script_setup_true_lang-B5SuaSXL.js +66 -0
- package/dist/{StepperPanels.vue_vue_type_script_setup_true_lang-D6Fv7iz3.js → StepperPanels.vue_vue_type_script_setup_true_lang-DPLQ9mQn.js} +34 -49
- package/dist/SwitchInput.vue_vue_type_script_setup_true_lang-D5Es9AjF.js +200 -0
- package/dist/{SwitchInputGroup.vue_vue_type_script_setup_true_lang-CK9JWl4F.js → SwitchInputGroup.vue_vue_type_script_setup_true_lang-DigNYqVZ.js} +1 -2
- package/dist/{TabGroup.vue_vue_type_script_setup_true_lang-DVVeOgWH.js → TabGroup.vue_vue_type_script_setup_true_lang-BsbiEA4E.js} +19 -20
- package/dist/{TabGroupUnderline.vue_vue_type_script_setup_true_lang-_3XtOn3w.js → TabGroupUnderline.vue_vue_type_script_setup_true_lang-CPcp1-Za.js} +21 -22
- package/dist/{TabsInPills.vue_vue_type_script_setup_true_lang-DY1NkXCQ.js → TabsInPills.vue_vue_type_script_setup_true_lang-U5CdRL7s.js} +1 -2
- package/dist/{TagifyInput.vue_vue_type_script_setup_true_lang-Da6-pRJ2.js → TagifyInput.vue_vue_type_script_setup_true_lang-BF2mK8JC.js} +14 -15
- package/dist/TextAreaInput.vue_vue_type_script_setup_true_lang-Cf0MJobG.js +0 -1
- package/dist/UiAvatar.vue_vue_type_script_setup_true_lang-WVY6JbUL.js +0 -1
- package/dist/UiBadge.vue_vue_type_script_setup_true_lang-DOtbLb9x.js +0 -1
- package/dist/UiButtonGroup.vue_vue_type_script_setup_true_lang-CVwXB-cb.js +0 -1
- package/dist/UiCheckbox.vue_vue_type_script_setup_true_lang-BxyM_F-V.js +0 -1
- package/dist/UiLoading.vue_vue_type_script_setup_true_lang-rNvtzKbq.js +0 -1
- package/dist/{UiMapAll.vue_vue_type_script_setup_true_lang-CMAyvJMk.js → UiMapAll.vue_vue_type_script_setup_true_lang-11yT7mTH.js} +93 -111
- package/dist/UiMenu.vue_vue_type_script_setup_true_lang-gnoIJm6x.js +127 -0
- package/dist/{UiModal.vue_vue_type_script_setup_true_lang-CpwFUDVU.js → UiModal.vue_vue_type_script_setup_true_lang-BZC7aN7K.js} +41 -43
- package/dist/{UiNavLink.vue_vue_type_script_setup_true_lang-DnWMn40M.js → UiNavLink.vue_vue_type_script_setup_true_lang-C5Gicm8o.js} +4 -5
- package/dist/UiProgressBar.vue_vue_type_script_setup_true_lang-BCh4orZW.js +0 -1
- package/dist/UiTable.vue_vue_type_script_setup_true_lang-xGAiJ9rS.js +0 -1
- package/dist/UiTransition.vue_vue_type_script_setup_true_lang-C4jb9I-3.js +0 -1
- package/dist/YearCalendar.vue_vue_type_script_setup_true_lang-CfKSpLLN.js +0 -1
- package/dist/_plugin-vue_export-helper-CHgC5LLL.js +0 -1
- package/dist/calendar-DLry-Vik.js +147 -0
- package/dist/calendars/CalendarDashboard.js +3 -4
- package/dist/calendars/CalendarHeader.js +1 -2
- package/dist/calendars/DayCalendar.js +1 -2
- package/dist/calendars/EventCard.js +1 -2
- package/dist/calendars/EventsList.js +1 -2
- package/dist/calendars/MonthCalendar.js +1 -2
- package/dist/calendars/WeekCalendar.js +1 -2
- package/dist/calendars/YearCalendar.js +0 -1
- package/dist/charts/BarChart.js +0 -1
- package/dist/charts/BaseChart.js +42 -59
- package/dist/charts/FunnelChart.js +0 -1
- package/dist/charts/LineChart.js +0 -1
- package/dist/charts/PieChart.js +0 -1
- package/dist/charts/SparklineChart.js +0 -1
- package/dist/charts/StatCard.js +1 -2
- package/dist/charts/chartTheme.js +0 -1
- package/dist/charts/index.js +1 -2
- package/dist/components/Avatar.js +0 -1
- package/dist/components/Badge.js +0 -1
- package/dist/components/Banner.js +178 -351
- package/dist/components/Breadcrumb.js +41 -42
- package/dist/components/Button.js +0 -1
- package/dist/components/ButtonGroup.js +0 -1
- package/dist/components/Checkbox.js +0 -1
- package/dist/components/CloudinaryImage.js +51 -81
- package/dist/components/Loading.js +0 -1
- package/dist/components/LoadingDots.js +0 -1
- package/dist/components/LottieAnimation.js +1 -2
- package/dist/components/Menu.js +1 -2
- package/dist/components/Modal.js +1 -2
- package/dist/components/NavLink.js +1 -2
- package/dist/components/ProgressBar.js +0 -1
- package/dist/components/RadialProgressBar.js +0 -1
- package/dist/components/Table.js +0 -1
- package/dist/components/Transition.js +0 -1
- package/dist/composables/index.js +1 -2
- package/dist/composables/useCalendar.js +1 -2
- package/dist/composables/useFormValidation.js +0 -1
- package/dist/composables/useMap.js +3 -3
- package/dist/composables/useModal.js +0 -1
- package/dist/composables/useNotifications.js +0 -1
- package/dist/composables/useTabs.js +87 -193
- package/dist/composables/useTheme.js +0 -1
- package/dist/empty-state/ComingSoon.js +0 -1
- package/dist/empty-state/EmptyState.js +0 -1
- package/dist/empty-state/index.js +0 -1
- package/dist/forms/DynamicForm.js +1 -2
- package/dist/forms/DynamicFormField.js +1 -2
- package/dist/forms/FormFieldWrapper.js +7 -8
- package/dist/id-DafBB_QF.js +0 -1
- package/dist/index.js +1343 -725
- package/dist/inputs/AddDeleteButtonGroup.js +1 -2
- package/dist/inputs/CheckboxInput.js +0 -1
- package/dist/inputs/ComboboxInput.js +1 -2
- package/dist/inputs/DatepickerInput.js +1 -2
- package/dist/inputs/EmailInput.js +0 -1
- package/dist/inputs/EmptyInput.js +0 -1
- package/dist/inputs/FileDropzoneInput.js +1 -2
- package/dist/inputs/HiddenInput.js +0 -1
- package/dist/inputs/PhoneInput.js +371 -3539
- package/dist/inputs/RichTextInput.js +235 -17298
- package/dist/inputs/SelectInput.js +1 -2
- package/dist/inputs/SelectTextInput.js +1 -2
- package/dist/inputs/SwitchInput.js +1 -2
- package/dist/inputs/SwitchInputGroup.js +1 -2
- package/dist/inputs/TagifyInput.js +1 -2
- package/dist/inputs/TextAreaInput.js +0 -1
- package/dist/inputs/TextInput.js +7 -8
- package/dist/layouts/DashboardLayout.js +1 -2
- package/dist/layouts/DefaultLayout.js +0 -1
- package/dist/layouts/HeaderLayout.js +0 -1
- package/dist/layouts/NavigationGroup.js +0 -1
- package/dist/layouts/NavigationItem.js +0 -1
- package/dist/layouts/ProfileHeaderAvatar.js +0 -1
- package/dist/layouts/ProjectLogo.js +0 -1
- package/dist/layouts/SidebarLayout.js +1 -2
- package/dist/loading/ContentSkeleton.js +0 -1
- package/dist/loading/SmartLoadingIndicator.js +0 -1
- package/dist/loading/index.js +0 -1
- package/dist/mapThemes-DFE9fZm3.js +0 -1
- package/dist/maps/GoogleMap.js +13 -14
- package/dist/maps/UiInfoWindow.js +41 -43
- package/dist/maps/UiMap.js +28 -31
- package/dist/maps/UiMapAll.js +1 -2
- package/dist/maps/UiMapMarker.js +1 -2
- package/dist/maps/index.js +1 -2
- package/dist/modals/AlertModal.js +1 -2
- package/dist/modals/BaseModal.js +1 -2
- package/dist/modals/ImageCropperModal.js +130 -1666
- package/dist/notifications/NotificationContainer.js +1 -2
- package/dist/notifications/NotificationToast.js +1 -2
- package/dist/notifications/index.js +2 -3
- package/dist/src/components/inputs/AddressInput.d.ts +40 -0
- package/dist/src/components/inputs/DatepickerInput.d.ts +7 -7
- package/dist/src/components/inputs/index.d.ts +1 -0
- package/dist/src/components/maps/UiMap.d.ts +1 -1
- package/dist/src/components/maps/UiMapAll.d.ts +6 -6
- package/dist/src/plugin/configure.d.ts +3 -1
- package/dist/src/services/geocoding.service.d.ts +68 -0
- package/dist/src/services/index.d.ts +1 -0
- package/dist/src/types/address.d.ts +164 -0
- package/dist/src/types/index.d.ts +1 -0
- package/dist/src/views/inputs/index.d.ts +1 -0
- package/dist/stepper/StepperPanels.js +1 -2
- package/dist/stepper/index.js +1 -2
- package/dist/style.css +1 -1
- package/dist/tabs/InlineTabs.js +1 -2
- package/dist/tabs/TabGroup.js +1 -2
- package/dist/tabs/TabGroupUnderline.js +1 -2
- package/dist/tabs/TabsInPills.js +1 -2
- package/dist/tabs/index.js +4 -5
- package/dist/ui.css +1 -1
- package/dist/useEventSegments-B-r_8zCW.js +0 -1
- package/dist/useMap-BGg0H582.js +297 -0
- package/dist/useSimpleTabs-CSgkChEU.js +0 -1
- package/dist/useStringTransform-CSr7nZWg.js +0 -1
- package/dist/wrappers/BackgroundGradientWrapper.js +0 -1
- package/dist/wrappers/CardWrapper.js +0 -1
- package/dist/wrappers/DisclosureWrapper.js +1 -2
- package/dist/wrappers/FormErrorWrapper.js +1 -2
- package/dist/wrappers/index.js +2 -3
- package/package.json +9 -1
- package/dist/AddDeleteButtonGroup.vue_vue_type_script_setup_true_lang-CFS3lVF-.js +0 -128
- package/dist/AddDeleteButtonGroup.vue_vue_type_script_setup_true_lang-CFS3lVF-.js.map +0 -1
- package/dist/AlertModal.vue_vue_type_script_setup_true_lang-C6q8Mpl4.js.map +0 -1
- package/dist/BackgroundGradientWrapper.vue_vue_type_script_setup_true_lang-C8msTrTn.js.map +0 -1
- package/dist/BarChart.vue_vue_type_script_setup_true_lang-xCb0DCbf.js.map +0 -1
- package/dist/Bars3Icon-BdOqcGcY.js +0 -22
- package/dist/Bars3Icon-BdOqcGcY.js.map +0 -1
- package/dist/BaseModal.vue_vue_type_script_setup_true_lang-B67Pt3tW.js.map +0 -1
- package/dist/CalendarHeader.vue_vue_type_script_setup_true_lang-CkSUiLOH.js.map +0 -1
- package/dist/CardWrapper.vue_vue_type_script_setup_true_lang-D59QBAi9.js.map +0 -1
- package/dist/CheckIcon-BGlsmVwT.js +0 -20
- package/dist/CheckIcon-BGlsmVwT.js.map +0 -1
- package/dist/CheckboxInput.vue_vue_type_script_setup_true_lang-BikR9rgi.js.map +0 -1
- package/dist/ChevronRightIcon-DkUqw988.js +0 -20
- package/dist/ChevronRightIcon-DkUqw988.js.map +0 -1
- package/dist/ChevronUpDownIcon-Bq_fsgrb.js +0 -20
- package/dist/ChevronUpDownIcon-Bq_fsgrb.js.map +0 -1
- package/dist/ComboboxInput.vue_vue_type_script_setup_true_lang-kEj-NYqm.js +0 -1362
- package/dist/ComboboxInput.vue_vue_type_script_setup_true_lang-kEj-NYqm.js.map +0 -1
- package/dist/ComingSoon.vue_vue_type_script_setup_true_lang-CJ8FXE42.js.map +0 -1
- package/dist/DashboardLayout.vue_vue_type_script_setup_true_lang-B0M6-9os.js.map +0 -1
- package/dist/DatepickerInput.vue_vue_type_style_index_0_lang-BdkGLw0H.js.map +0 -1
- package/dist/DayCalendar.vue_vue_type_script_setup_true_lang-8al4Fotu.js.map +0 -1
- package/dist/DefaultLayout.vue_vue_type_script_setup_true_lang-BZAz6aC-.js.map +0 -1
- package/dist/DisclosureWrapper.vue_vue_type_script_setup_true_lang-C7y2bNhW.js +0 -138
- package/dist/DisclosureWrapper.vue_vue_type_script_setup_true_lang-C7y2bNhW.js.map +0 -1
- package/dist/DynamicForm.vue_vue_type_script_setup_true_lang-CxSaO5Cl.js.map +0 -1
- package/dist/DynamicFormField.vue_vue_type_script_setup_true_lang-CSLSRFM7.js.map +0 -1
- package/dist/EmailInput.vue_vue_type_script_setup_true_lang-BicPMIop.js.map +0 -1
- package/dist/EmptyInput.vue_vue_type_script_setup_true_lang-FWDCFF2c.js.map +0 -1
- package/dist/EmptyState.vue_vue_type_script_setup_true_lang-7mcKkOWP.js.map +0 -1
- package/dist/EventCard.vue_vue_type_script_setup_true_lang-j1mtKShZ.js +0 -136
- package/dist/EventCard.vue_vue_type_script_setup_true_lang-j1mtKShZ.js.map +0 -1
- package/dist/EventsList.vue_vue_type_script_setup_true_lang-MhuVi5u8.js +0 -102
- package/dist/EventsList.vue_vue_type_script_setup_true_lang-MhuVi5u8.js.map +0 -1
- package/dist/ExclamationCircleIcon-DjxYk45_.js +0 -22
- package/dist/ExclamationCircleIcon-DjxYk45_.js.map +0 -1
- package/dist/ExclamationCircleIcon-DmL8Wwjo.js +0 -36
- package/dist/ExclamationCircleIcon-DmL8Wwjo.js.map +0 -1
- package/dist/ExclamationTriangleIcon-BNKYmV_J.js +0 -22
- package/dist/ExclamationTriangleIcon-BNKYmV_J.js.map +0 -1
- package/dist/FileDropzoneInput.vue_vue_type_script_setup_true_lang-CclXceTb.js +0 -211
- package/dist/FileDropzoneInput.vue_vue_type_script_setup_true_lang-CclXceTb.js.map +0 -1
- package/dist/FormErrorWrapper.vue_vue_type_script_setup_true_lang-BQOlG_ab.js.map +0 -1
- package/dist/FunnelChart.vue_vue_type_script_setup_true_lang-B4pH6xCV.js.map +0 -1
- package/dist/HeaderLayout.vue_vue_type_script_setup_true_lang-BY2G6hCc.js.map +0 -1
- package/dist/HiddenInput.vue_vue_type_script_setup_true_lang-PtGZ4eLW.js.map +0 -1
- package/dist/InformationCircleIcon-B322GNIt.js +0 -40
- package/dist/InformationCircleIcon-B322GNIt.js.map +0 -1
- package/dist/InlineTabs.vue_vue_type_script_setup_true_lang-CD0lnkUm.js.map +0 -1
- package/dist/LineChart.vue_vue_type_script_setup_true_lang-DJo0edLJ.js.map +0 -1
- package/dist/LottieAnimation.vue_vue_type_script_setup_true_lang-swmHdR0_.js.map +0 -1
- package/dist/MapPinIcon-CSTDUZnD.js +0 -27
- package/dist/MapPinIcon-CSTDUZnD.js.map +0 -1
- package/dist/MonthCalendar.vue_vue_type_style_index_0_lang-Cyzq7A9j.js.map +0 -1
- package/dist/NavigationGroup.vue_vue_type_script_setup_true_lang-BWq5fpEm.js.map +0 -1
- package/dist/NavigationItem.vue_vue_type_script_setup_true_lang-C8aX-84Q.js.map +0 -1
- package/dist/NotificationContainer.vue_vue_type_style_index_0_lang-DSfNw4Ge.js.map +0 -1
- package/dist/NotificationToast.vue_vue_type_script_setup_true_lang-CU__ORw8.js.map +0 -1
- package/dist/PieChart.vue_vue_type_script_setup_true_lang-e3wsA9O4.js.map +0 -1
- package/dist/PlusIcon-aDFVlB90.js +0 -40
- package/dist/PlusIcon-aDFVlB90.js.map +0 -1
- package/dist/ProfileHeaderAvatar.vue_vue_type_script_setup_true_lang-CKCoHD1o.js.map +0 -1
- package/dist/ProjectLogo.vue_vue_type_script_setup_true_lang-DYjp-RNh.js.map +0 -1
- package/dist/SelectInput.vue_vue_type_script_setup_true_lang-DHiZ-7K2.js.map +0 -1
- package/dist/SelectTextInput.vue_vue_type_script_setup_true_lang-DYrXW14A.js.map +0 -1
- package/dist/SidebarLayout.vue_vue_type_script_setup_true_lang-BJ5jadgZ.js.map +0 -1
- package/dist/SparklineChart.vue_vue_type_script_setup_true_lang-BlNk5ZqM.js.map +0 -1
- package/dist/StatCard.vue_vue_type_script_setup_true_lang-BfFupfmC.js +0 -111
- package/dist/StatCard.vue_vue_type_script_setup_true_lang-BfFupfmC.js.map +0 -1
- package/dist/StepperPanels.vue_vue_type_script_setup_true_lang-D6Fv7iz3.js.map +0 -1
- package/dist/SwitchInput.vue_vue_type_script_setup_true_lang-C88FcxuK.js +0 -280
- package/dist/SwitchInput.vue_vue_type_script_setup_true_lang-C88FcxuK.js.map +0 -1
- package/dist/SwitchInputGroup.vue_vue_type_script_setup_true_lang-CK9JWl4F.js.map +0 -1
- package/dist/TabGroup.vue_vue_type_script_setup_true_lang-DVVeOgWH.js.map +0 -1
- package/dist/TabGroupUnderline.vue_vue_type_script_setup_true_lang-_3XtOn3w.js.map +0 -1
- package/dist/TabsInPills.vue_vue_type_script_setup_true_lang-DY1NkXCQ.js.map +0 -1
- package/dist/TagifyInput.vue_vue_type_script_setup_true_lang-Da6-pRJ2.js.map +0 -1
- package/dist/TextAreaInput.vue_vue_type_script_setup_true_lang-Cf0MJobG.js.map +0 -1
- package/dist/UiAvatar.vue_vue_type_script_setup_true_lang-WVY6JbUL.js.map +0 -1
- package/dist/UiBadge.vue_vue_type_script_setup_true_lang-DOtbLb9x.js.map +0 -1
- package/dist/UiButtonGroup.vue_vue_type_script_setup_true_lang-CVwXB-cb.js.map +0 -1
- package/dist/UiCheckbox.vue_vue_type_script_setup_true_lang-BxyM_F-V.js.map +0 -1
- package/dist/UiLoading.vue_vue_type_script_setup_true_lang-rNvtzKbq.js.map +0 -1
- package/dist/UiMapAll.vue_vue_type_script_setup_true_lang-CMAyvJMk.js.map +0 -1
- package/dist/UiMenu.vue_vue_type_script_setup_true_lang-bQdfCzk6.js +0 -330
- package/dist/UiMenu.vue_vue_type_script_setup_true_lang-bQdfCzk6.js.map +0 -1
- package/dist/UiModal.vue_vue_type_script_setup_true_lang-CpwFUDVU.js.map +0 -1
- package/dist/UiNavLink.vue_vue_type_script_setup_true_lang-DnWMn40M.js.map +0 -1
- package/dist/UiProgressBar.vue_vue_type_script_setup_true_lang-BCh4orZW.js.map +0 -1
- package/dist/UiTable.vue_vue_type_script_setup_true_lang-xGAiJ9rS.js.map +0 -1
- package/dist/UiTransition.vue_vue_type_script_setup_true_lang-C4jb9I-3.js.map +0 -1
- package/dist/XMarkIcon-Cwy3T6p8.js +0 -22
- package/dist/XMarkIcon-Cwy3T6p8.js.map +0 -1
- package/dist/XMarkIcon-DNvCkiOy.js +0 -16
- package/dist/XMarkIcon-DNvCkiOy.js.map +0 -1
- package/dist/YearCalendar.vue_vue_type_script_setup_true_lang-CfKSpLLN.js.map +0 -1
- package/dist/_plugin-vue_export-helper-CHgC5LLL.js.map +0 -1
- package/dist/active-element-history-BTBNVIJN.js +0 -17
- package/dist/active-element-history-BTBNVIJN.js.map +0 -1
- package/dist/calculate-active-index-Dim3sT-5.js +0 -55
- package/dist/calculate-active-index-Dim3sT-5.js.map +0 -1
- package/dist/calendar-BlSSD4nO.js +0 -575
- package/dist/calendar-BlSSD4nO.js.map +0 -1
- package/dist/calendars/CalendarDashboard.js.map +0 -1
- package/dist/calendars/CalendarHeader.js.map +0 -1
- package/dist/calendars/DayCalendar.js.map +0 -1
- package/dist/calendars/EventCard.js.map +0 -1
- package/dist/calendars/EventsList.js.map +0 -1
- package/dist/calendars/MonthCalendar.js.map +0 -1
- package/dist/calendars/WeekCalendar.js.map +0 -1
- package/dist/calendars/YearCalendar.js.map +0 -1
- package/dist/charts/BarChart.js.map +0 -1
- package/dist/charts/BaseChart.js.map +0 -1
- package/dist/charts/FunnelChart.js.map +0 -1
- package/dist/charts/LineChart.js.map +0 -1
- package/dist/charts/PieChart.js.map +0 -1
- package/dist/charts/SparklineChart.js.map +0 -1
- package/dist/charts/StatCard.js.map +0 -1
- package/dist/charts/chartTheme.js.map +0 -1
- package/dist/charts/index.js.map +0 -1
- package/dist/components/Avatar.js.map +0 -1
- package/dist/components/Badge.js.map +0 -1
- package/dist/components/Banner.js.map +0 -1
- package/dist/components/Breadcrumb.js.map +0 -1
- package/dist/components/Button.js.map +0 -1
- package/dist/components/ButtonGroup.js.map +0 -1
- package/dist/components/Checkbox.js.map +0 -1
- package/dist/components/CloudinaryImage.js.map +0 -1
- package/dist/components/Loading.js.map +0 -1
- package/dist/components/LoadingDots.js.map +0 -1
- package/dist/components/LottieAnimation.js.map +0 -1
- package/dist/components/Menu.js.map +0 -1
- package/dist/components/Modal.js.map +0 -1
- package/dist/components/NavLink.js.map +0 -1
- package/dist/components/ProgressBar.js.map +0 -1
- package/dist/components/RadialProgressBar.js.map +0 -1
- package/dist/components/Table.js.map +0 -1
- package/dist/components/Transition.js.map +0 -1
- package/dist/composables/index.js.map +0 -1
- package/dist/composables/useCalendar.js.map +0 -1
- package/dist/composables/useFormValidation.js.map +0 -1
- package/dist/composables/useMap.js.map +0 -1
- package/dist/composables/useModal.js.map +0 -1
- package/dist/composables/useNotifications.js.map +0 -1
- package/dist/composables/useTabs.js.map +0 -1
- package/dist/composables/useTheme.js.map +0 -1
- package/dist/description-C7cRw0tq.js +0 -30
- package/dist/description-C7cRw0tq.js.map +0 -1
- package/dist/dialog-BJ2Ld8l3.js +0 -499
- package/dist/dialog-BJ2Ld8l3.js.map +0 -1
- package/dist/empty-state/ComingSoon.js.map +0 -1
- package/dist/empty-state/EmptyState.js.map +0 -1
- package/dist/empty-state/index.js.map +0 -1
- package/dist/env-BZfPsfnF.js +0 -29
- package/dist/env-BZfPsfnF.js.map +0 -1
- package/dist/form-f8yP4kN-.js +0 -35
- package/dist/form-f8yP4kN-.js.map +0 -1
- package/dist/forms/DynamicForm.js.map +0 -1
- package/dist/forms/DynamicFormField.js.map +0 -1
- package/dist/forms/FormFieldWrapper.js.map +0 -1
- package/dist/hidden-BSRluD1y.js +0 -15
- package/dist/hidden-BSRluD1y.js.map +0 -1
- package/dist/id-DafBB_QF.js.map +0 -1
- package/dist/index-Dca39bYA.js +0 -2167
- package/dist/index-Dca39bYA.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/inputs/AddDeleteButtonGroup.js.map +0 -1
- package/dist/inputs/CheckboxInput.js.map +0 -1
- package/dist/inputs/ComboboxInput.js.map +0 -1
- package/dist/inputs/DatepickerInput.js.map +0 -1
- package/dist/inputs/EmailInput.js.map +0 -1
- package/dist/inputs/EmptyInput.js.map +0 -1
- package/dist/inputs/FileDropzoneInput.js.map +0 -1
- package/dist/inputs/HiddenInput.js.map +0 -1
- package/dist/inputs/PhoneInput.js.map +0 -1
- package/dist/inputs/RichTextInput.js.map +0 -1
- package/dist/inputs/SelectInput.js.map +0 -1
- package/dist/inputs/SelectTextInput.js.map +0 -1
- package/dist/inputs/SwitchInput.js.map +0 -1
- package/dist/inputs/SwitchInputGroup.js.map +0 -1
- package/dist/inputs/TagifyInput.js.map +0 -1
- package/dist/inputs/TextAreaInput.js.map +0 -1
- package/dist/inputs/TextInput.js.map +0 -1
- package/dist/keyboard-Dd_2-cFu.js +0 -5
- package/dist/keyboard-Dd_2-cFu.js.map +0 -1
- package/dist/layouts/DashboardLayout.js.map +0 -1
- package/dist/layouts/DefaultLayout.js.map +0 -1
- package/dist/layouts/HeaderLayout.js.map +0 -1
- package/dist/layouts/NavigationGroup.js.map +0 -1
- package/dist/layouts/NavigationItem.js.map +0 -1
- package/dist/layouts/ProfileHeaderAvatar.js.map +0 -1
- package/dist/layouts/ProjectLogo.js.map +0 -1
- package/dist/layouts/SidebarLayout.js.map +0 -1
- package/dist/listbox-YaWWZiiG.js +0 -257
- package/dist/listbox-YaWWZiiG.js.map +0 -1
- package/dist/loading/ContentSkeleton.js.map +0 -1
- package/dist/loading/SmartLoadingIndicator.js.map +0 -1
- package/dist/loading/index.js.map +0 -1
- package/dist/mapThemes-DFE9fZm3.js.map +0 -1
- package/dist/maps/GoogleMap.js.map +0 -1
- package/dist/maps/UiInfoWindow.js.map +0 -1
- package/dist/maps/UiMap.js.map +0 -1
- package/dist/maps/UiMapAll.js.map +0 -1
- package/dist/maps/UiMapMarker.js.map +0 -1
- package/dist/maps/index.js.map +0 -1
- package/dist/micro-task-D-oTY33s.js +0 -9
- package/dist/micro-task-D-oTY33s.js.map +0 -1
- package/dist/modals/AlertModal.js.map +0 -1
- package/dist/modals/BaseModal.js.map +0 -1
- package/dist/modals/ImageCropperModal.js.map +0 -1
- package/dist/notifications/NotificationContainer.js.map +0 -1
- package/dist/notifications/NotificationToast.js.map +0 -1
- package/dist/notifications/index.js.map +0 -1
- package/dist/open-closed-JTEvYTg2.js +0 -19
- package/dist/open-closed-JTEvYTg2.js.map +0 -1
- package/dist/render-QUUPyNjX.js +0 -101
- package/dist/render-QUUPyNjX.js.map +0 -1
- package/dist/stepper/StepperPanels.js.map +0 -1
- package/dist/stepper/index.js.map +0 -1
- package/dist/tabs/InlineTabs.js.map +0 -1
- package/dist/tabs/TabGroup.js.map +0 -1
- package/dist/tabs/TabGroupUnderline.js.map +0 -1
- package/dist/tabs/TabsInPills.js.map +0 -1
- package/dist/tabs/index.js.map +0 -1
- package/dist/tabs-J5phClGv.js +0 -202
- package/dist/tabs-J5phClGv.js.map +0 -1
- package/dist/transition-_rPfnoET.js +0 -191
- package/dist/transition-_rPfnoET.js.map +0 -1
- package/dist/use-outside-click-14T0Zn98.js +0 -151
- package/dist/use-outside-click-14T0Zn98.js.map +0 -1
- package/dist/use-resolve-button-type-h6n-lm9q.js +0 -20
- package/dist/use-resolve-button-type-h6n-lm9q.js.map +0 -1
- package/dist/use-text-value-DKnkjK00.js +0 -44
- package/dist/use-text-value-DKnkjK00.js.map +0 -1
- package/dist/use-tree-walker-Bo9gIb_K.js +0 -16
- package/dist/use-tree-walker-Bo9gIb_K.js.map +0 -1
- package/dist/useEventSegments-B-r_8zCW.js.map +0 -1
- package/dist/useMap-BaZEIoWM.js +0 -525
- package/dist/useMap-BaZEIoWM.js.map +0 -1
- package/dist/useSimpleTabs-CSgkChEU.js.map +0 -1
- package/dist/useStringTransform-CSr7nZWg.js.map +0 -1
- package/dist/vue-datepicker-CEn0-fJj.js +0 -4871
- package/dist/vue-datepicker-CEn0-fJj.js.map +0 -1
- package/dist/vue-router-B3K2xmg_.js +0 -120
- package/dist/vue-router-B3K2xmg_.js.map +0 -1
- package/dist/vue3-lottie.es-DT4qZE-F.js +0 -7981
- package/dist/vue3-lottie.es-DT4qZE-F.js.map +0 -1
- package/dist/wrappers/BackgroundGradientWrapper.js.map +0 -1
- package/dist/wrappers/CardWrapper.js.map +0 -1
- package/dist/wrappers/DisclosureWrapper.js.map +0 -1
- package/dist/wrappers/FormErrorWrapper.js.map +0 -1
- package/dist/wrappers/index.js.map +0 -1
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
import { createElementBlock as V, openBlock as P, createElementVNode as I, defineComponent as h, ref as p, provide as E, computed as g, onMounted as $, onUnmounted as _, watchEffect as H, inject as j, createBlock as U, unref as b, withCtx as D, createVNode as S, toDisplayString as z, normalizeClass as A, renderSlot as Q } from "vue";
|
|
2
|
-
import { i as O, u as B, A as x, o as d, N as C } from "./render-QUUPyNjX.js";
|
|
3
|
-
import { s as R } from "./use-resolve-button-type-h6n-lm9q.js";
|
|
4
|
-
import { t as W, i as y, l as Z } from "./open-closed-JTEvYTg2.js";
|
|
5
|
-
import { o as f } from "./keyboard-Dd_2-cFu.js";
|
|
6
|
-
function q(l, n) {
|
|
7
|
-
return P(), V("svg", {
|
|
8
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
9
|
-
viewBox: "0 0 20 20",
|
|
10
|
-
fill: "currentColor",
|
|
11
|
-
"aria-hidden": "true",
|
|
12
|
-
"data-slot": "icon"
|
|
13
|
-
}, [
|
|
14
|
-
I("path", {
|
|
15
|
-
"fill-rule": "evenodd",
|
|
16
|
-
d: "M9.47 6.47a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 1 1-1.06 1.06L10 8.06l-3.72 3.72a.75.75 0 0 1-1.06-1.06l4.25-4.25Z",
|
|
17
|
-
"clip-rule": "evenodd"
|
|
18
|
-
})
|
|
19
|
-
]);
|
|
20
|
-
}
|
|
21
|
-
var F = ((l) => (l[l.Open = 0] = "Open", l[l.Closed = 1] = "Closed", l))(F || {});
|
|
22
|
-
let M = Symbol("DisclosureContext");
|
|
23
|
-
function w(l) {
|
|
24
|
-
let n = j(M, null);
|
|
25
|
-
if (n === null) {
|
|
26
|
-
let r = new Error(`<${l} /> is missing a parent <Disclosure /> component.`);
|
|
27
|
-
throw Error.captureStackTrace && Error.captureStackTrace(r, w), r;
|
|
28
|
-
}
|
|
29
|
-
return n;
|
|
30
|
-
}
|
|
31
|
-
let N = Symbol("DisclosurePanelContext");
|
|
32
|
-
function G() {
|
|
33
|
-
return j(N, null);
|
|
34
|
-
}
|
|
35
|
-
let J = h({ name: "Disclosure", props: { as: { type: [Object, String], default: "template" }, defaultOpen: { type: [Boolean], default: !1 } }, setup(l, { slots: n, attrs: r }) {
|
|
36
|
-
let o = p(l.defaultOpen ? 0 : 1), e = p(null), i = p(null), a = { buttonId: p(`headlessui-disclosure-button-${O()}`), panelId: p(`headlessui-disclosure-panel-${O()}`), disclosureState: o, panel: e, button: i, toggleDisclosure() {
|
|
37
|
-
o.value = B(o.value, { 0: 1, 1: 0 });
|
|
38
|
-
}, closeDisclosure() {
|
|
39
|
-
o.value !== 1 && (o.value = 1);
|
|
40
|
-
}, close(t) {
|
|
41
|
-
a.closeDisclosure();
|
|
42
|
-
let u = t ? t instanceof HTMLElement ? t : t.value instanceof HTMLElement ? d(t) : d(a.button) : d(a.button);
|
|
43
|
-
u?.focus();
|
|
44
|
-
} };
|
|
45
|
-
return E(M, a), W(g(() => B(o.value, { 0: y.Open, 1: y.Closed }))), () => {
|
|
46
|
-
let { defaultOpen: t, ...u } = l, c = { open: o.value === 0, close: a.close };
|
|
47
|
-
return x({ theirProps: u, ourProps: {}, slot: c, slots: n, attrs: r, name: "Disclosure" });
|
|
48
|
-
};
|
|
49
|
-
} }), X = h({ name: "DisclosureButton", props: { as: { type: [Object, String], default: "button" }, disabled: { type: [Boolean], default: !1 }, id: { type: String, default: null } }, setup(l, { attrs: n, slots: r, expose: o }) {
|
|
50
|
-
let e = w("DisclosureButton"), i = G(), a = g(() => i === null ? !1 : i.value === e.panelId.value);
|
|
51
|
-
$(() => {
|
|
52
|
-
a.value || l.id !== null && (e.buttonId.value = l.id);
|
|
53
|
-
}), _(() => {
|
|
54
|
-
a.value || (e.buttonId.value = null);
|
|
55
|
-
});
|
|
56
|
-
let t = p(null);
|
|
57
|
-
o({ el: t, $el: t }), a.value || H(() => {
|
|
58
|
-
e.button.value = t.value;
|
|
59
|
-
});
|
|
60
|
-
let u = R(g(() => ({ as: l.as, type: n.type })), t);
|
|
61
|
-
function c() {
|
|
62
|
-
var s;
|
|
63
|
-
l.disabled || (a.value ? (e.toggleDisclosure(), (s = d(e.button)) == null || s.focus()) : e.toggleDisclosure());
|
|
64
|
-
}
|
|
65
|
-
function v(s) {
|
|
66
|
-
var m;
|
|
67
|
-
if (!l.disabled) if (a.value) switch (s.key) {
|
|
68
|
-
case f.Space:
|
|
69
|
-
case f.Enter:
|
|
70
|
-
s.preventDefault(), s.stopPropagation(), e.toggleDisclosure(), (m = d(e.button)) == null || m.focus();
|
|
71
|
-
break;
|
|
72
|
-
}
|
|
73
|
-
else switch (s.key) {
|
|
74
|
-
case f.Space:
|
|
75
|
-
case f.Enter:
|
|
76
|
-
s.preventDefault(), s.stopPropagation(), e.toggleDisclosure();
|
|
77
|
-
break;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
function k(s) {
|
|
81
|
-
switch (s.key) {
|
|
82
|
-
case f.Space:
|
|
83
|
-
s.preventDefault();
|
|
84
|
-
break;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
return () => {
|
|
88
|
-
var s;
|
|
89
|
-
let m = { open: e.disclosureState.value === 0 }, { id: T, ...K } = l, L = a.value ? { ref: t, type: u.value, onClick: c, onKeydown: v } : { id: (s = e.buttonId.value) != null ? s : T, ref: t, type: u.value, "aria-expanded": e.disclosureState.value === 0, "aria-controls": e.disclosureState.value === 0 || d(e.panel) ? e.panelId.value : void 0, disabled: l.disabled ? !0 : void 0, onClick: c, onKeydown: v, onKeyup: k };
|
|
90
|
-
return x({ ourProps: L, theirProps: K, slot: m, attrs: n, slots: r, name: "DisclosureButton" });
|
|
91
|
-
};
|
|
92
|
-
} }), Y = h({ name: "DisclosurePanel", props: { as: { type: [Object, String], default: "div" }, static: { type: Boolean, default: !1 }, unmount: { type: Boolean, default: !0 }, id: { type: String, default: null } }, setup(l, { attrs: n, slots: r, expose: o }) {
|
|
93
|
-
let e = w("DisclosurePanel");
|
|
94
|
-
$(() => {
|
|
95
|
-
l.id !== null && (e.panelId.value = l.id);
|
|
96
|
-
}), _(() => {
|
|
97
|
-
e.panelId.value = null;
|
|
98
|
-
}), o({ el: e.panel, $el: e.panel }), E(N, e.panelId);
|
|
99
|
-
let i = Z(), a = g(() => i !== null ? (i.value & y.Open) === y.Open : e.disclosureState.value === 0);
|
|
100
|
-
return () => {
|
|
101
|
-
var t;
|
|
102
|
-
let u = { open: e.disclosureState.value === 0, close: e.close }, { id: c, ...v } = l, k = { id: (t = e.panelId.value) != null ? t : c, ref: e.panel };
|
|
103
|
-
return x({ ourProps: k, theirProps: v, slot: u, attrs: n, slots: r, features: C.RenderStrategy | C.Static, visible: a.value, name: "DisclosurePanel" });
|
|
104
|
-
};
|
|
105
|
-
} });
|
|
106
|
-
const oe = /* @__PURE__ */ h({
|
|
107
|
-
__name: "DisclosureWrapper",
|
|
108
|
-
props: {
|
|
109
|
-
title: {},
|
|
110
|
-
defaultOpen: { type: Boolean, default: !0 }
|
|
111
|
-
},
|
|
112
|
-
setup(l) {
|
|
113
|
-
return (n, r) => (P(), U(b(J), { "default-open": l.defaultOpen }, {
|
|
114
|
-
default: D(({ open: o }) => [
|
|
115
|
-
S(b(X), { class: "sl-flex sl-w-full sl-justify-between sl-rounded-lg sl-bg-stachelock-100 dark:sl-bg-slate-700 sl-px-4 sl-py-2 sl-text-left sl-text-sm sl-font-medium sl-text-stachelock-900 dark:sl-text-white hover:sl-bg-stachelock-200 dark:hover:sl-bg-slate-600 focus:sl-outline-none focus-visible:sl-ring focus-visible:sl-ring-stachelock-500/75 sl-transition-colors" }, {
|
|
116
|
-
default: D(() => [
|
|
117
|
-
I("span", null, z(l.title), 1),
|
|
118
|
-
S(b(q), {
|
|
119
|
-
class: A([o ? "sl-rotate-180 sl-transform" : "", "sl-h-5 sl-w-5 sl-text-stachelock-500 dark:sl-text-stachelock-400 sl-transition-transform sl-duration-200"])
|
|
120
|
-
}, null, 8, ["class"])
|
|
121
|
-
]),
|
|
122
|
-
_: 2
|
|
123
|
-
}, 1024),
|
|
124
|
-
S(b(Y), { class: "sl-px-4 sl-pb-2 sl-pt-4 sl-text-sm sl-text-gray-500 dark:sl-text-slate-300" }, {
|
|
125
|
-
default: D(() => [
|
|
126
|
-
Q(n.$slots, "main")
|
|
127
|
-
]),
|
|
128
|
-
_: 3
|
|
129
|
-
})
|
|
130
|
-
]),
|
|
131
|
-
_: 3
|
|
132
|
-
}, 8, ["default-open"]));
|
|
133
|
-
}
|
|
134
|
-
});
|
|
135
|
-
export {
|
|
136
|
-
oe as _
|
|
137
|
-
};
|
|
138
|
-
//# sourceMappingURL=DisclosureWrapper.vue_vue_type_script_setup_true_lang-C7y2bNhW.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DisclosureWrapper.vue_vue_type_script_setup_true_lang-C7y2bNhW.js","sources":["../node_modules/@heroicons/vue/20/solid/esm/ChevronUpIcon.js","../node_modules/@headlessui/vue/dist/components/disclosure/disclosure.js","../src/components/wrappers/DisclosureWrapper.vue"],"sourcesContent":["import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport default function render(_ctx, _cache) {\n return (_openBlock(), _createElementBlock(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\"\n }, [\n _createElementVNode(\"path\", {\n \"fill-rule\": \"evenodd\",\n d: \"M9.47 6.47a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 1 1-1.06 1.06L10 8.06l-3.72 3.72a.75.75 0 0 1-1.06-1.06l4.25-4.25Z\",\n \"clip-rule\": \"evenodd\"\n })\n ]))\n}","import{computed as m,defineComponent as b,inject as I,onMounted as P,onUnmounted as h,provide as R,ref as d,watchEffect as w}from\"vue\";import{useId as E}from'../../hooks/use-id.js';import{useResolveButtonType as H}from'../../hooks/use-resolve-button-type.js';import{State as y,useOpenClosed as L,useOpenClosedProvider as j}from'../../internal/open-closed.js';import{Keys as f}from'../../keyboard.js';import{dom as p}from'../../utils/dom.js';import{match as x}from'../../utils/match.js';import{Features as B,render as g}from'../../utils/render.js';var $=(o=>(o[o.Open=0]=\"Open\",o[o.Closed=1]=\"Closed\",o))($||{});let T=Symbol(\"DisclosureContext\");function O(t){let r=I(T,null);if(r===null){let o=new Error(`<${t} /> is missing a parent <Disclosure /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(o,O),o}return r}let k=Symbol(\"DisclosurePanelContext\");function U(){return I(k,null)}let N=b({name:\"Disclosure\",props:{as:{type:[Object,String],default:\"template\"},defaultOpen:{type:[Boolean],default:!1}},setup(t,{slots:r,attrs:o}){let s=d(t.defaultOpen?0:1),e=d(null),i=d(null),n={buttonId:d(`headlessui-disclosure-button-${E()}`),panelId:d(`headlessui-disclosure-panel-${E()}`),disclosureState:s,panel:e,button:i,toggleDisclosure(){s.value=x(s.value,{[0]:1,[1]:0})},closeDisclosure(){s.value!==1&&(s.value=1)},close(l){n.closeDisclosure();let a=(()=>l?l instanceof HTMLElement?l:l.value instanceof HTMLElement?p(l):p(n.button):p(n.button))();a==null||a.focus()}};return R(T,n),j(m(()=>x(s.value,{[0]:y.Open,[1]:y.Closed}))),()=>{let{defaultOpen:l,...a}=t,c={open:s.value===0,close:n.close};return g({theirProps:a,ourProps:{},slot:c,slots:r,attrs:o,name:\"Disclosure\"})}}}),Q=b({name:\"DisclosureButton\",props:{as:{type:[Object,String],default:\"button\"},disabled:{type:[Boolean],default:!1},id:{type:String,default:null}},setup(t,{attrs:r,slots:o,expose:s}){let e=O(\"DisclosureButton\"),i=U(),n=m(()=>i===null?!1:i.value===e.panelId.value);P(()=>{n.value||t.id!==null&&(e.buttonId.value=t.id)}),h(()=>{n.value||(e.buttonId.value=null)});let l=d(null);s({el:l,$el:l}),n.value||w(()=>{e.button.value=l.value});let a=H(m(()=>({as:t.as,type:r.type})),l);function c(){var u;t.disabled||(n.value?(e.toggleDisclosure(),(u=p(e.button))==null||u.focus()):e.toggleDisclosure())}function D(u){var S;if(!t.disabled)if(n.value)switch(u.key){case f.Space:case f.Enter:u.preventDefault(),u.stopPropagation(),e.toggleDisclosure(),(S=p(e.button))==null||S.focus();break}else switch(u.key){case f.Space:case f.Enter:u.preventDefault(),u.stopPropagation(),e.toggleDisclosure();break}}function v(u){switch(u.key){case f.Space:u.preventDefault();break}}return()=>{var C;let u={open:e.disclosureState.value===0},{id:S,...K}=t,M=n.value?{ref:l,type:a.value,onClick:c,onKeydown:D}:{id:(C=e.buttonId.value)!=null?C:S,ref:l,type:a.value,\"aria-expanded\":e.disclosureState.value===0,\"aria-controls\":e.disclosureState.value===0||p(e.panel)?e.panelId.value:void 0,disabled:t.disabled?!0:void 0,onClick:c,onKeydown:D,onKeyup:v};return g({ourProps:M,theirProps:K,slot:u,attrs:r,slots:o,name:\"DisclosureButton\"})}}}),V=b({name:\"DisclosurePanel\",props:{as:{type:[Object,String],default:\"div\"},static:{type:Boolean,default:!1},unmount:{type:Boolean,default:!0},id:{type:String,default:null}},setup(t,{attrs:r,slots:o,expose:s}){let e=O(\"DisclosurePanel\");P(()=>{t.id!==null&&(e.panelId.value=t.id)}),h(()=>{e.panelId.value=null}),s({el:e.panel,$el:e.panel}),R(k,e.panelId);let i=L(),n=m(()=>i!==null?(i.value&y.Open)===y.Open:e.disclosureState.value===0);return()=>{var v;let l={open:e.disclosureState.value===0,close:e.close},{id:a,...c}=t,D={id:(v=e.panelId.value)!=null?v:a,ref:e.panel};return g({ourProps:D,theirProps:c,slot:l,attrs:r,slots:o,features:B.RenderStrategy|B.Static,visible:n.value,name:\"DisclosurePanel\"})}}});export{N as Disclosure,Q as DisclosureButton,V as DisclosurePanel};\n","<!--\n @component DisclosureWrapper\n @description Accordion/collapsible section wrapper using HeadlessUI.\n \n A disclosure component that shows/hides content with a clickable header.\n Built on HeadlessUI's Disclosure for accessibility.\n \n @props\n - title (string, required): The disclosure header text\n - defaultOpen (boolean, optional): Whether to start expanded (default: true)\n \n @slots\n - main: The collapsible content\n \n @example\n <DisclosureWrapper title=\"Advanced Options\" :default-open=\"false\">\n <template #main>\n <p>Hidden content here</p>\n </template>\n </DisclosureWrapper>\n-->\n<template>\n <Disclosure v-slot=\"{ open }\" :default-open=\"defaultOpen\">\n <DisclosureButton\n class=\"sl-flex sl-w-full sl-justify-between sl-rounded-lg sl-bg-stachelock-100 dark:sl-bg-slate-700 sl-px-4 sl-py-2 sl-text-left sl-text-sm sl-font-medium sl-text-stachelock-900 dark:sl-text-white hover:sl-bg-stachelock-200 dark:hover:sl-bg-slate-600 focus:sl-outline-none focus-visible:sl-ring focus-visible:sl-ring-stachelock-500/75 sl-transition-colors\"\n >\n <span>{{ title }}</span>\n <ChevronUpIcon \n :class=\"open ? 'sl-rotate-180 sl-transform' : ''\" \n class=\"sl-h-5 sl-w-5 sl-text-stachelock-500 dark:sl-text-stachelock-400 sl-transition-transform sl-duration-200\" \n />\n </DisclosureButton>\n <DisclosurePanel class=\"sl-px-4 sl-pb-2 sl-pt-4 sl-text-sm sl-text-gray-500 dark:sl-text-slate-300\">\n <slot name=\"main\" />\n </DisclosurePanel>\n </Disclosure>\n</template>\n\n<script setup lang=\"ts\">\nimport { Disclosure, DisclosureButton, DisclosurePanel } from '@headlessui/vue';\nimport { ChevronUpIcon } from '@heroicons/vue/20/solid';\n\ninterface Props {\n title: string;\n defaultOpen?: boolean;\n}\n\nwithDefaults(defineProps<Props>(), {\n defaultOpen: true\n});\n</script>\n\n"],"names":["render","_ctx","_cache","_openBlock","_createElementBlock","_createElementVNode","$","o","T","O","t","r","I","k","U","N","b","s","d","i","n","E","x","l","a","p","R","j","m","y","g","Q","P","h","w","H","u","D","S","f","v","C","M","V","L","c","B","_createBlock","_unref","Disclosure","__props","_withCtx","open","_createVNode","DisclosureButton","ChevronUpIcon","_normalizeClass","DisclosurePanel","_renderSlot"],"mappings":"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","x_google_ignoreList":[0,1]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DynamicForm.vue_vue_type_script_setup_true_lang-CxSaO5Cl.js","sources":["../src/components/forms/DynamicForm.vue"],"sourcesContent":["<!--\n @component DynamicForm\n @description Schema-driven form component with validation.\n \n Renders forms from a schema definition with sections, fields, conditional\n visibility, and integrated validation via vee-validate.\n \n @props\n - schema (DynamicFormSchema, required): Form schema with sections and fields\n - modelValue (object, optional): Form data via v-model\n - loading (boolean, optional): Loading state for submit button\n - showActions (boolean, optional): Show submit/cancel buttons\n - showCancelButton (boolean, optional): Show cancel button\n - submitButtonText (string, optional): Submit button text\n - cancelButtonText (string, optional): Cancel button text\n - actionsAlignment (string, optional): Button alignment - left/center/right\n - formError (string, optional): Form-level error message\n \n @emits\n - update:modelValue: Emitted when form data changes\n - submit: Emitted on form submit with data and error setter\n - cancel: Emitted when cancel is clicked\n - field-change: Emitted when any field value changes\n \n @exposes\n - validate(): Promise<boolean> - Validate form and return validity\n - reset(): void - Reset form to initial values\n - setFieldValue(name, value): void - Set a field value\n - getFieldValue(name): any - Get a field value\n - formData: Record<string, any> - Current form data\n \n @example\n <DynamicForm\n :schema=\"formSchema\"\n v-model=\"formData\"\n @submit=\"handleSubmit\"\n @cancel=\"handleCancel\"\n />\n-->\n<template>\n <form\n ref=\"formRef\"\n :class=\"formClasses\"\n @submit.prevent=\"handleSubmit\"\n >\n <!-- Form title and description -->\n <div v-if=\"schema.title || schema.description\" class=\"sl-mb-6\">\n <h2 v-if=\"schema.title\" class=\"sl-text-lg sl-font-semibold sl-text-gray-900 sl-mb-2\">\n {{ schema.title }}\n </h2>\n <p v-if=\"schema.description\" class=\"sl-text-sm sl-text-gray-600\">\n {{ schema.description }}\n </p>\n </div>\n\n <!-- Form sections -->\n <div v-for=\"(section, sectionIndex) in formSections\" :key=\"section.id || sectionIndex\">\n <!-- Section header -->\n <div v-if=\"section.title || section.description\" class=\"sl-mb-4\">\n <h3 v-if=\"section.title\" class=\"sl-text-md sl-font-medium sl-text-gray-900 sl-mb-1\">\n {{ section.title }}\n </h3>\n <p v-if=\"section.description\" class=\"sl-text-sm sl-text-gray-600\">\n {{ section.description }}\n </p>\n </div>\n\n <!-- Section fields -->\n <div :class=\"sectionClasses(section)\">\n <div\n v-for=\"field in section.fields\"\n :key=\"field.name\"\n :class=\"fieldClasses(field)\"\n >\n <!-- Conditional rendering -->\n <SlDynamicFormField\n v-if=\"shouldShowField(field)\"\n :field=\"field\"\n v-model=\"formData[field.name]\"\n :form-data=\"formData\"\n @field-change=\"handleFieldChange\"\n />\n </div>\n </div>\n </div>\n\n <!-- Form actions -->\n <div\n v-if=\"showActions\"\n :class=\"[\n 'sl-flex sl-gap-3',\n actionsAlignment === 'center' ? 'sl-justify-center' :\n actionsAlignment === 'right' ? 'sl-justify-end' :\n 'sl-justify-start'\n ]\"\n >\n <SlButton\n v-if=\"showCancelButton\"\n variant=\"outline\"\n :disabled=\"loading\"\n type=\"button\"\n @click=\"handleCancel\"\n >\n {{ cancelButtonText || 'Cancel' }}\n </SlButton>\n \n <SlButton\n :variant=\"submitButtonVariant\"\n :loading=\"loading\"\n :disabled=\"!isFormValid || loading\"\n type=\"submit\"\n >\n {{ submitButtonText || 'Submit' }}\n </SlButton>\n </div>\n \n <!-- Form-level errors -->\n <div v-if=\"formError\" class=\"sl-mt-4\">\n <div class=\"sl-bg-red-50 sl-border sl-border-red-200 sl-rounded-md sl-p-4\">\n <div class=\"sl-flex\">\n <ExclamationCircleIcon class=\"sl-h-5 sl-w-5 sl-text-red-400\" />\n <div class=\"sl-ml-3\">\n <h3 class=\"sl-text-sm sl-font-medium sl-text-red-800\">\n Form Error\n </h3>\n <div class=\"sl-mt-2 sl-text-sm sl-text-red-700\">\n <p>{{ formError }}</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n </form>\n</template>\n\n<script setup lang=\"ts\">\n/**\n * DynamicForm - Schema-driven form component\n * \n * Renders forms dynamically from a schema definition. Supports sections,\n * conditional fields, validation, and form-level error handling.\n * \n * ## Features\n * - Schema-driven form generation\n * - Multi-section support with columns\n * - Conditional field visibility\n * - vee-validate integration\n * - Field change callbacks\n * - Form-level error display\n * \n * ## Schema Structure\n * ```typescript\n * {\n * title?: string,\n * description?: string,\n * sections: [\n * {\n * title?: string,\n * columns?: 1 | 2 | 3,\n * fields: [\n * { name: 'email', type: 'text', label: 'Email', rules: schema }\n * ]\n * }\n * ]\n * }\n * ```\n * \n * @module components/forms/DynamicForm\n * @see {@link DynamicFormSchema} for schema interface\n * @see {@link DynamicFormField} for field configuration\n */\nimport { computed, reactive, ref, watch } from 'vue'\nimport { useForm } from 'vee-validate'\nimport { ExclamationCircleIcon } from '@heroicons/vue/24/outline'\nimport SlButton from '../UiButton.vue'\nimport SlDynamicFormField from './DynamicFormField.vue'\nimport type { \n DynamicFormSchema, \n DynamicFormSection,\n DynamicFormField,\n ButtonVariant \n} from '../../types/form'\n\nimport type { FormData, FormValue } from '../../types/form'\n\ninterface Props {\n schema: DynamicFormSchema\n modelValue?: FormData\n loading?: boolean\n showActions?: boolean\n showCancelButton?: boolean\n submitButtonText?: string\n cancelButtonText?: string\n submitButtonVariant?: ButtonVariant\n actionsAlignment?: 'left' | 'center' | 'right'\n formError?: string\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n showActions: true,\n showCancelButton: false,\n submitButtonVariant: 'primary',\n actionsAlignment: 'right'\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: FormData): void\n (e: 'submit', data: FormData, ctx: { setErrors: (errors: Record<string, string>) => void }): void\n (e: 'cancel'): void\n (e: 'field-change', field: DynamicFormField, value: FormValue, formData: FormData): void\n}>()\n\nconst formRef = ref<HTMLFormElement>()\nconst formData = reactive<FormData>({})\n\n// Initialize form with vee-validate\nconst { handleSubmit: veeHandleSubmit, setErrors, errors, meta, validate: veeValidate, resetForm: veeResetForm, setFieldTouched } = useForm({\n keepValuesOnUnmount: true\n})\n\n// Get default value based on field type\nconst getDefaultValue = (type: string) => {\n switch (type) {\n case 'checkbox':\n case 'switch':\n return false\n case 'select':\n return null\n case 'number':\n return 0\n default:\n return ''\n }\n}\n\n// Initialize form data\nconst initializeFormData = () => {\n const initialData = { ...props.modelValue } || {}\n \n // Set default values from schema\n props.schema.sections.forEach(section => {\n section.fields.forEach(field => {\n if (!(field.name in initialData)) {\n initialData[field.name] = field.defaultValue ?? getDefaultValue(field.type)\n }\n })\n })\n \n Object.assign(formData, initialData)\n}\n\n// Watch for external changes to modelValue\nwatch(\n () => props.modelValue,\n (newValue) => {\n if (newValue) {\n Object.assign(formData, newValue)\n }\n },\n { deep: true }\n)\n\n// Watch form data changes and emit updates\nwatch(\n formData,\n (newData) => {\n emit('update:modelValue', { ...newData })\n },\n { deep: true }\n)\n\n// Initialize form data on mount\ninitializeFormData()\n\nconst formSections = computed(() => {\n return props.schema.sections.filter(section => \n section.condition ? section.condition(formData) : true\n )\n})\n\nconst formClasses = computed(() => {\n const baseClasses = ['sl-space-y-6']\n \n if (props.schema.className) {\n baseClasses.push(props.schema.className)\n }\n \n return baseClasses.join(' ')\n})\n\nconst sectionClasses = (section: DynamicFormSection) => {\n const baseClasses = [\n 'sl-grid',\n 'sl-gap-4'\n ]\n \n // Grid columns based on section layout\n const columns = section.columns || 1\n baseClasses.push(`sl-grid-cols-1`)\n \n if (columns > 1) {\n baseClasses.push(`md:sl-grid-cols-${Math.min(columns, 3)}`)\n }\n \n if (section.className) {\n baseClasses.push(section.className)\n }\n \n return baseClasses.join(' ')\n}\n\nconst fieldClasses = (field: DynamicFormField) => {\n const baseClasses: string[] = []\n \n // Field span\n if (field.colSpan && field.colSpan > 1) {\n baseClasses.push(`sl-col-span-${Math.min(field.colSpan, 3)}`)\n }\n \n if (field.className) {\n baseClasses.push(field.className)\n }\n \n return baseClasses.join(' ')\n}\n\nconst shouldShowField = (field: DynamicFormField): boolean => {\n if (field.condition) {\n return field.condition(formData, field)\n }\n return true\n}\n\nconst isFormValid = computed(() => {\n return meta.value.valid\n})\n\nconst handleSubmit = veeHandleSubmit((values) => {\n emit('submit', values, { setErrors })\n})\n\nconst handleCancel = () => {\n emit('cancel')\n}\n\nconst handleFieldChange = (field: DynamicFormField, value: FormValue) => {\n emit('field-change', field, value, formData)\n \n // Handle field dependencies\n if (field.onFieldChange) {\n field.onFieldChange(value, field, formData)\n }\n}\n\n// Expose form methods matching DynamicFormRef interface\n\n/** Submit the form */\nconst submitForm = async (): Promise<void> => {\n await handleSubmit()\n}\n\n/** Reset form to initial values */\nconst resetForm = (): void => {\n veeResetForm()\n Object.keys(formData).forEach(key => {\n delete formData[key]\n })\n initializeFormData()\n}\n\n/** Build FormValidationResult from current state */\nconst buildValidationResult = (): { valid: boolean; errors: Record<string, string>; values: FormData } => {\n // Filter out undefined values from errors\n const filteredErrors: Record<string, string> = {}\n for (const [key, value] of Object.entries(errors.value)) {\n if (value !== undefined) {\n filteredErrors[key] = value\n }\n }\n return {\n valid: meta.value.valid,\n errors: filteredErrors,\n values: { ...formData }\n }\n}\n\n/** Validate form and return result */\nconst validateForm = async (): Promise<{ valid: boolean; errors: Record<string, string>; values: FormData }> => {\n await veeValidate()\n return buildValidationResult()\n}\n\n/** Validate including nested forms */\nconst validateWithChildren = async (): Promise<{ valid: boolean; errors: Record<string, string>; values: FormData }> => {\n // For now, same as validateForm since we don't have nested form support yet\n await veeValidate()\n return buildValidationResult()\n}\n\n/** Trigger pseudo-submit (validate without actual submit) */\nconst handlePseudoSubmit = async (): Promise<void> => {\n await veeValidate()\n}\n\n/** Get current form metadata */\nconst getFormMeta = () => {\n return {\n valid: meta.value.valid,\n dirty: meta.value.dirty,\n touched: meta.value.touched,\n pending: meta.value.pending\n }\n}\n\n/** Set touched state for all fields */\nconst setTouched = (value: boolean): void => {\n props.schema.sections.forEach(section => {\n section.fields.forEach(field => {\n setFieldTouched(field.name, value)\n })\n })\n}\n\n/** Highlight a field with an error */\nconst highlightFieldWithError = (fieldName: string, message?: string): void => {\n if (message) {\n setErrors({ [fieldName]: message })\n }\n setFieldTouched(fieldName, true)\n}\n\n/** Clear field errors */\nconst clearFieldErrors = (fieldName?: string): void => {\n if (fieldName) {\n setErrors({ [fieldName]: '' })\n } else {\n const clearedErrors: Record<string, string> = {}\n Object.keys(errors.value).forEach(key => {\n clearedErrors[key] = ''\n })\n setErrors(clearedErrors)\n }\n}\n\n/** Get current validation errors */\nconst getCurrentErrors = (): Record<string, string> => {\n // Filter out undefined values from errors\n const filteredErrors: Record<string, string> = {}\n for (const [key, value] of Object.entries(errors.value)) {\n if (value !== undefined) {\n filteredErrors[key] = value\n }\n }\n return filteredErrors\n}\n\n// Legacy methods for backwards compatibility\nconst setFieldValue = (fieldName: string, value: any) => {\n formData[fieldName] = value\n}\n\nconst getFieldValue = (fieldName: string) => {\n return formData[fieldName]\n}\n\ndefineExpose({\n // DynamicFormRef interface methods\n submitForm,\n resetForm,\n validateForm,\n validateWithChildren,\n handlePseudoSubmit,\n getFormMeta,\n setTouched,\n highlightFieldWithError,\n clearFieldErrors,\n getCurrentErrors,\n // Legacy/additional methods\n validate: validateForm,\n reset: resetForm,\n setFieldValue,\n getFieldValue,\n formData,\n formRef\n})\n</script>\n"],"names":["props","__props","emit","__emit","formRef","ref","formData","reactive","veeHandleSubmit","setErrors","errors","meta","veeValidate","veeResetForm","setFieldTouched","useForm","getDefaultValue","type","initializeFormData","initialData","section","field","watch","newValue","newData","formSections","computed","formClasses","baseClasses","sectionClasses","columns","fieldClasses","shouldShowField","isFormValid","handleSubmit","values","handleCancel","handleFieldChange","value","submitForm","resetForm","key","buildValidationResult","filteredErrors","validateForm","__expose","fieldName","message","clearedErrors","_createElementBlock","_cache","_withModifiers","_unref","args","_openBlock","_hoisted_1","_hoisted_2","_toDisplayString","_hoisted_3","_Fragment","_renderList","sectionIndex","_hoisted_4","_hoisted_5","_hoisted_6","_createElementVNode","_normalizeClass","_createBlock","SlDynamicFormField","$event","SlButton","_createVNode","_hoisted_7","_hoisted_8","_hoisted_9","ExclamationCircleIcon","_hoisted_10","_hoisted_11"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DynamicFormField.vue_vue_type_script_setup_true_lang-CSLSRFM7.js","sources":["../src/components/forms/DynamicFormField.vue"],"sourcesContent":["<!--\n @component DynamicFormField\n @description Renders a single field based on field configuration.\n \n Used by DynamicForm to render individual fields. Maps field type to\n appropriate input component and passes configuration props.\n \n @props\n - field (DynamicFormField, required): Field configuration object\n - modelValue (any, optional): Field value via v-model\n - formData (object, optional): Complete form data for conditional logic\n \n @emits\n - update:modelValue: Emitted when field value changes\n - field-change: Emitted with field and value on change\n \n @example\n <DynamicFormField\n :field=\"{ name: 'email', type: 'email', label: 'Email' }\"\n v-model=\"formData.email\"\n />\n-->\n<template>\n <component\n :is=\"fieldComponent\"\n v-if=\"fieldComponent\"\n v-bind=\"componentProps\"\n v-on=\"componentEvents\"\n :model-value=\"fieldValue\"\n @update:model-value=\"handleFieldChange\"\n />\n \n <!-- Fallback for unknown field types -->\n <div \n v-else\n class=\"sl-p-4 sl-bg-yellow-50 sl-border sl-border-yellow-200 sl-rounded-md\"\n >\n <div class=\"sl-flex\">\n <ExclamationTriangleIcon class=\"sl-h-5 sl-w-5 sl-text-yellow-400\" />\n <div class=\"sl-ml-3\">\n <h3 class=\"sl-text-sm sl-font-medium sl-text-yellow-800\">\n Unknown field type\n </h3>\n <div class=\"sl-mt-2 sl-text-sm sl-text-yellow-700\">\n <p>Field type \"{{ field.type }}\" is not supported.</p>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n/**\n * DynamicFormField - Field renderer for DynamicForm\n * \n * Dynamically loads and renders the appropriate input component based on\n * the field type configuration. Handles prop mapping and event forwarding.\n * \n * ## Supported Field Types\n * - text, email, password, number, tel, url → UiTextInput\n * - textarea → TextAreaInput\n * - select → SelectInput\n * - combobox → ComboboxInput\n * - checkbox → CheckboxInput\n * - switch → SwitchInput\n * \n * @module components/forms/DynamicFormField\n * @see {@link DynamicFormField} for field configuration\n */\nimport { computed, defineAsyncComponent } from 'vue'\nimport UiTextInput from '../inputs/TextInput.vue'\nimport { ExclamationTriangleIcon } from '@heroicons/vue/24/outline'\nimport type { DynamicFormField, FormData, FormValue } from '../../types/form'\n\ninterface Props {\n field: DynamicFormField\n modelValue?: FormValue\n formData?: FormData\n}\n\nconst props = defineProps<Props>()\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: FormValue]\n 'field-change': [field: DynamicFormField, value: FormValue]\n}>()\n\nimport type { Component } from 'vue';\n\n// Component mapping for dynamic loading\nconst componentMap: Record<string, () => Promise<Component>> = {\n text: () => Promise.resolve(UiTextInput as Component),\n email: () => Promise.resolve(UiTextInput as Component), \n password: () => Promise.resolve(UiTextInput as Component),\n number: () => Promise.resolve(UiTextInput as Component),\n tel: () => Promise.resolve(UiTextInput as Component),\n url: () => Promise.resolve(UiTextInput as Component),\n textarea: () => import('../inputs/TextAreaInput.vue') as Promise<Component>,\n select: () => import('../inputs/SelectInput.vue') as Promise<Component>,\n combobox: () => import('../inputs/ComboboxInput.vue') as Promise<Component>,\n checkbox: () => import('../inputs/CheckboxInput.vue') as Promise<Component>,\n switch: () => import('../inputs/SwitchInput.vue') as Promise<Component>,\n}\n\nconst fieldComponent = computed(() => {\n const componentLoader = componentMap[props.field.type]\n if (componentLoader) {\n return defineAsyncComponent({\n loader: componentLoader,\n errorComponent: () => null,\n delay: 0\n })\n }\n return null\n})\n\nconst fieldValue = computed({\n get: () => props.modelValue ?? props.field.defaultValue ?? getDefaultValue(),\n set: (value) => {\n emit('update:modelValue', value)\n emit('field-change', props.field, value)\n }\n})\n\nconst componentProps = computed(() => {\n const baseProps: Record<string, unknown> = {\n name: props.field.name,\n label: props.field.label,\n placeholder: props.field.placeholder,\n disabled: props.field.disabled,\n rules: props.field.validation,\n validateOnMount: props.field.validateOnMount,\n tertiaryLabel: props.field.tertiaryLabel,\n successMessage: props.field.successMessage\n }\n\n // Type-specific props\n switch (props.field.type) {\n case 'text':\n case 'email':\n case 'password':\n case 'number':\n case 'tel':\n case 'url':\n return {\n ...baseProps,\n type: props.field.inputType || props.field.type,\n maxlength: props.field.maxLength,\n minlength: props.field.minLength,\n min: props.field.min,\n max: props.field.max,\n step: props.field.step,\n spellcheck: props.field.spellcheck,\n autocomplete: props.field.autocomplete\n }\n \n case 'textarea':\n return {\n ...baseProps,\n rows: props.field.rows,\n maxlength: props.field.maxLength,\n spellcheck: props.field.spellcheck\n }\n \n case 'select':\n return {\n ...baseProps,\n items: props.field.options || [],\n multiple: props.field.multiple,\n itemKey: props.field.optionKey || 'value',\n itemText: props.field.optionLabel || 'label',\n showAll: props.field.showSelectAll\n }\n \n case 'combobox':\n return {\n ...baseProps,\n items: props.field.options || [],\n itemKey: props.field.optionKey || 'value',\n itemText: props.field.optionLabel || 'label',\n customQuery: props.field.customQuery,\n loading: props.field.loading\n }\n \n case 'checkbox':\n return {\n ...baseProps,\n description: props.field.description,\n immediate: props.field.immediate ?? true,\n isDescriptionHtml: props.field.isDescriptionHtml\n }\n \n case 'switch':\n return {\n ...baseProps,\n description: props.field.description,\n immediate: props.field.immediate ?? true,\n boxShadow: props.field.boxShadow,\n hideMainLabel: props.field.hideMainLabel,\n textTrue: props.field.textTrue,\n textFalse: props.field.textFalse\n }\n \n default:\n return baseProps\n }\n})\n\nconst componentEvents = computed(() => {\n const baseEvents: Record<string, Function> = {}\n \n // Add event handlers based on field configuration\n if (props.field.onBlur) {\n baseEvents.blur = props.field.onBlur\n }\n \n if (props.field.onFocus) {\n baseEvents.focus = props.field.onFocus\n }\n \n if (props.field.onChange) {\n baseEvents['update:modelValue'] = (value: any) => {\n fieldValue.value = value\n props.field.onChange?.(value, props.field, props.formData ?? {})\n }\n }\n \n return baseEvents\n})\n\nconst getDefaultValue = () => {\n switch (props.field.type) {\n case 'checkbox':\n case 'switch':\n return false\n case 'select':\n return props.field.multiple ? [] : null\n case 'number':\n return props.field.min || 0\n default:\n return ''\n }\n}\n\nconst handleFieldChange = (value: any) => {\n fieldValue.value = value\n}\n</script>\n"],"names":["props","__props","emit","__emit","componentMap","UiTextInput","fieldComponent","computed","componentLoader","defineAsyncComponent","fieldValue","getDefaultValue","value","componentProps","baseProps","componentEvents","baseEvents","handleFieldChange","_createBlock","_resolveDynamicComponent","_mergeProps","_toHandlers","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_createVNode","_unref","ExclamationTriangleIcon","_hoisted_3","_cache","_hoisted_4","_toDisplayString"],"mappings":";;;;;;;;;;;;;;;AAgFA,UAAMA,IAAQC,GAERC,IAAOC,GAQPC,IAAyD;AAAA,MAC7D,MAAM,MAAM,QAAQ,QAAQC,CAAwB;AAAA,MACpD,OAAO,MAAM,QAAQ,QAAQA,CAAwB;AAAA,MACrD,UAAU,MAAM,QAAQ,QAAQA,CAAwB;AAAA,MACxD,QAAQ,MAAM,QAAQ,QAAQA,CAAwB;AAAA,MACtD,KAAK,MAAM,QAAQ,QAAQA,CAAwB;AAAA,MACnD,KAAK,MAAM,QAAQ,QAAQA,CAAwB;AAAA,MACnD,UAAU,MAAM,OAAO,2BAA6B;AAAA,MACpD,QAAQ,MAAM,OAAO,yBAA2B;AAAA,MAChD,UAAU,MAAM,OAAO,2BAA6B;AAAA,MACpD,UAAU,MAAM,OAAO,2BAA6B;AAAA,MACpD,QAAQ,MAAM,OAAO,yBAA2B;AAAA,IAAA,GAG5CC,IAAiBC,EAAS,MAAM;AACpC,YAAMC,IAAkBJ,EAAaJ,EAAM,MAAM,IAAI;AACrD,aAAIQ,IACKC,EAAqB;AAAA,QAC1B,QAAQD;AAAA,QACR,gBAAgB,MAAM;AAAA,QACtB,OAAO;AAAA,MAAA,CACR,IAEI;AAAA,IACT,CAAC,GAEKE,IAAaH,EAAS;AAAA,MAC1B,KAAK,MAAMP,EAAM,cAAcA,EAAM,MAAM,gBAAgBW,EAAA;AAAA,MAC3D,KAAK,CAACC,MAAU;AACd,QAAAV,EAAK,qBAAqBU,CAAK,GAC/BV,EAAK,gBAAgBF,EAAM,OAAOY,CAAK;AAAA,MACzC;AAAA,IAAA,CACD,GAEKC,IAAiBN,EAAS,MAAM;AACpC,YAAMO,IAAqC;AAAA,QACzC,MAAMd,EAAM,MAAM;AAAA,QAClB,OAAOA,EAAM,MAAM;AAAA,QACnB,aAAaA,EAAM,MAAM;AAAA,QACzB,UAAUA,EAAM,MAAM;AAAA,QACtB,OAAOA,EAAM,MAAM;AAAA,QACnB,iBAAiBA,EAAM,MAAM;AAAA,QAC7B,eAAeA,EAAM,MAAM;AAAA,QAC3B,gBAAgBA,EAAM,MAAM;AAAA,MAAA;AAI9B,cAAQA,EAAM,MAAM,MAAA;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO;AAAA,YACL,GAAGc;AAAA,YACH,MAAMd,EAAM,MAAM,aAAaA,EAAM,MAAM;AAAA,YAC3C,WAAWA,EAAM,MAAM;AAAA,YACvB,WAAWA,EAAM,MAAM;AAAA,YACvB,KAAKA,EAAM,MAAM;AAAA,YACjB,KAAKA,EAAM,MAAM;AAAA,YACjB,MAAMA,EAAM,MAAM;AAAA,YAClB,YAAYA,EAAM,MAAM;AAAA,YACxB,cAAcA,EAAM,MAAM;AAAA,UAAA;AAAA,QAG9B,KAAK;AACH,iBAAO;AAAA,YACL,GAAGc;AAAA,YACH,MAAMd,EAAM,MAAM;AAAA,YAClB,WAAWA,EAAM,MAAM;AAAA,YACvB,YAAYA,EAAM,MAAM;AAAA,UAAA;AAAA,QAG5B,KAAK;AACH,iBAAO;AAAA,YACL,GAAGc;AAAA,YACH,OAAOd,EAAM,MAAM,WAAW,CAAA;AAAA,YAC9B,UAAUA,EAAM,MAAM;AAAA,YACtB,SAASA,EAAM,MAAM,aAAa;AAAA,YAClC,UAAUA,EAAM,MAAM,eAAe;AAAA,YACrC,SAASA,EAAM,MAAM;AAAA,UAAA;AAAA,QAGzB,KAAK;AACH,iBAAO;AAAA,YACL,GAAGc;AAAA,YACH,OAAOd,EAAM,MAAM,WAAW,CAAA;AAAA,YAC9B,SAASA,EAAM,MAAM,aAAa;AAAA,YAClC,UAAUA,EAAM,MAAM,eAAe;AAAA,YACrC,aAAaA,EAAM,MAAM;AAAA,YACzB,SAASA,EAAM,MAAM;AAAA,UAAA;AAAA,QAGzB,KAAK;AACH,iBAAO;AAAA,YACL,GAAGc;AAAA,YACH,aAAad,EAAM,MAAM;AAAA,YACzB,WAAWA,EAAM,MAAM,aAAa;AAAA,YACpC,mBAAmBA,EAAM,MAAM;AAAA,UAAA;AAAA,QAGnC,KAAK;AACH,iBAAO;AAAA,YACL,GAAGc;AAAA,YACH,aAAad,EAAM,MAAM;AAAA,YACzB,WAAWA,EAAM,MAAM,aAAa;AAAA,YACpC,WAAWA,EAAM,MAAM;AAAA,YACvB,eAAeA,EAAM,MAAM;AAAA,YAC3B,UAAUA,EAAM,MAAM;AAAA,YACtB,WAAWA,EAAM,MAAM;AAAA,UAAA;AAAA,QAG3B;AACE,iBAAOc;AAAA,MAAA;AAAA,IAEb,CAAC,GAEKC,IAAkBR,EAAS,MAAM;AACrC,YAAMS,IAAuC,CAAA;AAG7C,aAAIhB,EAAM,MAAM,WACdgB,EAAW,OAAOhB,EAAM,MAAM,SAG5BA,EAAM,MAAM,YACdgB,EAAW,QAAQhB,EAAM,MAAM,UAG7BA,EAAM,MAAM,aACdgB,EAAW,mBAAmB,IAAI,CAACJ,MAAe;AAChD,QAAAF,EAAW,QAAQE,GACnBZ,EAAM,MAAM,WAAWY,GAAOZ,EAAM,OAAOA,EAAM,YAAY,EAAE;AAAA,MACjE,IAGKgB;AAAA,IACT,CAAC,GAEKL,IAAkB,MAAM;AAC5B,cAAQX,EAAM,MAAM,MAAA;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AACH,iBAAOA,EAAM,MAAM,WAAW,CAAA,IAAK;AAAA,QACrC,KAAK;AACH,iBAAOA,EAAM,MAAM,OAAO;AAAA,QAC5B;AACE,iBAAO;AAAA,MAAA;AAAA,IAEb,GAEMiB,IAAoB,CAACL,MAAe;AACxC,MAAAF,EAAW,QAAQE;AAAA,IACrB;qBA7NUN,EAAA,cAFRY,EAOEC,EANKb,OAAc,GADrBc,EAOE,YAJQP,EAAA,OACRQ,EAAsBN,EAAA,KAAD,GAAA;AAAA,MACpB,eAAaL,EAAA;AAAA,MACb,uBAAoBO;AAAA,IAAA,mCAIvBK,KAAAC,EAeM,OAfNC,GAeM;AAAA,MAXJC,EAUM,OAVNC,GAUM;AAAA,QATJC,EAAoEC,EAAAC,CAAA,GAAA,EAA3C,OAAM,oCAAkC;AAAA,QACjEJ,EAOM,OAPNK,GAOM;AAAA,UANJC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAAN,EAEK,MAAA,EAFD,OAAM,+CAAA,GAA+C,wBAEzD,EAAA;AAAA,UACAA,EAEM,OAFNO,GAEM;AAAA,YADJP,EAAsD,WAAnD,iBAAYQ,EAAGhC,QAAM,IAAI,IAAG,uBAAmB,CAAA;AAAA,UAAA;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EmailInput.vue_vue_type_script_setup_true_lang-BicPMIop.js","sources":["../src/components/inputs/EmailInput.vue"],"sourcesContent":["<!--\n @component EmailInput\n @description Specialized email input with validation and optional verification.\n \n A text input specifically designed for email addresses with built-in\n email validation. Extends the base text input with email-specific\n features like type=\"email\" and email validation rules.\n \n @props\n - name (string, required): Field name for form binding\n - value (string, optional): Email value (use v-model:value)\n - label (string, optional): Display label\n - placeholder (string, optional): Placeholder text\n - disabled (boolean, optional): Disabled state\n - rules (Schema, optional): Custom validation rules\n - colorfulValidation (boolean, optional): Color-coded validation states\n - showValidCheck (boolean, optional): Show check icon when valid\n - showErrors (boolean, optional): Force show errors\n - autoComplete (string, optional): Autocomplete attribute value\n \n @emits\n - update:value: Emitted when value changes\n - update:validity: Emitted when validation state changes\n - focus: Emitted on focus\n - blur: Emitted on blur\n - submit: Emitted when Enter is pressed with valid email\n \n @example\n <EmailInput\n name=\"email\"\n label=\"Email Address\"\n v-model:value=\"form.email\"\n placeholder=\"you@example.com\"\n />\n-->\n<template>\n <div class=\"sl-w-full\">\n <FormFieldWrapper\n :id=\"id\"\n :name=\"name\"\n :label=\"label\"\n :tertiary-label=\"tertiaryLabel\"\n :error-message=\"errorMessage\"\n :success-message=\"successMessage\"\n :is-valid=\"meta.valid\"\n :is-touched=\"meta.touched\"\n :show-errors=\"showErrors\"\n :show-valid-check=\"showValidCheck\"\n :colorful-validation=\"colorfulValidation\"\n :disabled=\"disabled\"\n :disabled-message=\"disabledMessage\"\n >\n <template #default=\"{ inputClasses }\">\n <input\n :name=\"name\"\n :id=\"id\"\n type=\"email\"\n :value=\"inputValue\"\n :placeholder=\"placeholder\"\n :autocomplete=\"autoComplete\"\n :disabled=\"disabled\"\n class=\"sl-block sl-w-full sl-bg-transparent sl-text-gray-900 dark:sl-text-gray-100 placeholder:sl-text-gray-400 dark:placeholder:sl-text-gray-500 focus:sl-ring-0 focus:sl-outline-none sm:sl-text-sm sm:sl-leading-6\"\n :class=\"[\n inputClasses,\n 'sl-py-1.5 sl-pl-2',\n { 'sl-text-gray-400': disabled },\n { 'sl-pr-10': showValidCheck },\n ]\"\n @input=\"handleInput\"\n @focus=\"handleFocus\"\n @blur=\"handleBlur\"\n @keydown.enter.prevent=\"handleEnterKey\"\n enterkeyhint=\"go\"\n data-testid=\"email-input\"\n />\n </template>\n\n <template #input-right>\n <slot name=\"input-right\" />\n </template>\n </FormFieldWrapper>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, toRef, watch, nextTick } from 'vue'\nimport { useField } from 'vee-validate'\nimport { string as yupString, type AnySchema } from 'yup'\nimport FormFieldWrapper from '../forms/FormFieldWrapper.vue'\nimport { generateId } from '../../utils/id'\n\ninterface Props {\n name: string\n value?: string\n label?: string\n placeholder?: string\n disabled?: boolean\n disabledMessage?: string\n rules?: AnySchema\n successMessage?: string\n tertiaryLabel?: string\n colorfulValidation?: boolean\n showValidCheck?: boolean\n showErrors?: boolean\n autoComplete?: string\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n value: '',\n label: 'Email',\n placeholder: 'you@example.com',\n disabled: false,\n disabledMessage: '',\n rules: () => yupString().email('Invalid email address').required('Email is required'),\n successMessage: '',\n tertiaryLabel: '',\n colorfulValidation: true,\n showValidCheck: true,\n showErrors: false,\n autoComplete: 'email'\n})\n\nconst emit = defineEmits<{\n 'update:value': [value: string]\n 'update:validity': [isValid: boolean]\n focus: [event: FocusEvent]\n blur: [event: FocusEvent]\n submit: []\n}>()\n\nconst id = generateId(`sl-${props.name}`)\nconst touched = ref(false)\n\nconst {\n value: inputValue,\n errorMessage,\n handleBlur: veeHandleBlur,\n handleChange,\n meta,\n validate,\n setTouched\n} = useField(toRef(props, 'name'), toRef(props, 'rules'), {\n initialValue: props.value,\n validateOnValueUpdate: true,\n validateOnMount: false\n})\n\n// Sync external value changes\nwatch(\n () => props.value,\n (newValue) => {\n if (newValue !== undefined && newValue !== inputValue.value) {\n inputValue.value = newValue\n }\n },\n { immediate: true }\n)\n\n// Emit validity changes\nwatch(\n () => meta.valid,\n (v) => nextTick(() => emit('update:validity', v)),\n { immediate: true }\n)\n\n// Emit value changes\nwatch(inputValue, (newValue, oldValue) => {\n if (newValue !== oldValue) {\n emit('update:value', newValue || '')\n }\n})\n\nfunction handleInput(e: Event) {\n const v = (e.target as HTMLInputElement).value\n handleChange(v)\n emit('update:value', v)\n}\n\nasync function handleBlur(e: FocusEvent) {\n if (!touched.value) {\n touched.value = true\n setTouched(true)\n }\n await validate()\n veeHandleBlur(e)\n emit('blur', e)\n}\n\nfunction handleFocus(e: FocusEvent) {\n emit('focus', e)\n}\n\nfunction handleEnterKey() {\n if (meta.valid && inputValue.value) {\n emit('submit')\n }\n}\n\ndefineExpose({\n focus: () => {\n const el = document.getElementById(id)\n el?.focus()\n },\n blur: () => {\n const el = document.getElementById(id)\n el?.blur()\n },\n validate\n})\n</script>\n\n"],"names":["props","__props","emit","__emit","id","generateId","touched","ref","inputValue","errorMessage","veeHandleBlur","handleChange","meta","validate","setTouched","useField","toRef","watch","newValue","v","nextTick","oldValue","handleInput","handleBlur","handleFocus","handleEnterKey","__expose","_openBlock","_createElementBlock","_hoisted_1","_createVNode","FormFieldWrapper","_unref","_withCtx","inputClasses","_createElementVNode","_renderSlot","_ctx"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EmptyInput.vue_vue_type_script_setup_true_lang-FWDCFF2c.js","sources":["../src/components/inputs/EmptyInput.vue"],"sourcesContent":["<!--\n @component EmptyInput\n @description Placeholder component for empty/unavailable form fields.\n \n Displays a styled placeholder with optional title, description, and icon\n for form fields that are not yet available or have been removed.\n Useful for showing contextual information in form layouts.\n \n @props\n - title (string, optional): Main title text\n - description (string, optional): Descriptive text\n - icon (Component, optional): Heroicon or custom icon component\n \n @example\n <EmptyInput \n title=\"Coming Soon\" \n description=\"This feature is not yet available.\"\n :icon=\"ClockIcon\"\n />\n-->\n<template>\n <div \n class=\"sl-px-4 sl-py-5 sm:sl-p-6 sl-bg-gray-50 dark:sl-bg-slate-800 sl-rounded-lg sl-border sl-border-dashed sl-border-gray-300 dark:sl-border-slate-600\"\n data-testid=\"empty-input\"\n >\n <h3 \n v-if=\"title\" \n class=\"sl-text-base sl-font-semibold sl-leading-6 sl-text-gray-800 dark:sl-text-gray-200\"\n >\n {{ title }}\n </h3>\n <div class=\"sl-mt-2 sl-max-w-xl sl-text-sm sl-text-gray-500 dark:sl-text-gray-300 sl-flex sl-items-center\">\n <component \n v-if=\"icon\" \n :is=\"icon\" \n class=\"sl-mr-2 sl-h-6 sl-w-6 sl-text-gray-400 dark:sl-text-gray-300 sl-flex-shrink-0\" \n aria-hidden=\"true\"\n />\n <p v-if=\"description\">{{ description }}</p>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport type { FunctionalComponent, HTMLAttributes, VNodeProps } from 'vue'\n\ninterface Props {\n title?: string\n description?: string\n icon?: FunctionalComponent<HTMLAttributes & VNodeProps>\n}\n\nwithDefaults(defineProps<Props>(), {\n title: '',\n description: ''\n})\n</script>\n\n"],"names":["_openBlock","_createElementBlock","_hoisted_1","__props","_hoisted_2","_toDisplayString","_createElementVNode","_hoisted_3","_createBlock","_resolveDynamicComponent"],"mappings":";;;;;;;;;;;;;;;sBAqBEA,EAAA,GAAAC,EAmBM,OAnBNC,GAmBM;AAAA,MAdIC,EAAA,cADRF,EAKK,MALLG,GAKKC,EADAF,EAAA,KAAK,GAAA,CAAA;MAEVG,EAQM,OARNC,GAQM;AAAA,QANIJ,EAAA,QADRH,EAAA,GAAAQ,EAKEC,EAHKN,EAAA,IAAI,GAAA;AAAA;UACT,OAAM;AAAA,UACN,eAAY;AAAA,QAAA;QAELA,EAAA,eAATH,EAAA,GAAAC,EAA2C,UAAlBE,EAAA,WAAW,GAAA,CAAA;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EmptyState.vue_vue_type_script_setup_true_lang-7mcKkOWP.js","sources":["../src/components/empty-state/EmptyState.vue"],"sourcesContent":["<!--\n @component EmptyState\n @description Generic empty state display with customizable content.\n \n A flexible empty state component with icon, title, description,\n and action button support.\n \n @props\n - title (string, required): Main heading text\n - description (string, optional): Description text\n - icon (Component, optional): Icon component to display\n - actionLabel (string, optional): Action button label\n - actionHref (string, optional): Action button link\n - compact (boolean, optional): Use compact layout\n \n @emits\n - action: Emitted when action button is clicked\n \n @slots\n - icon: Custom icon slot\n - description: Custom description content\n - action: Custom action content\n \n @example\n <EmptyState\n title=\"No items found\"\n description=\"Get started by creating a new item.\"\n action-label=\"Create Item\"\n @action=\"handleCreate\"\n >\n <template #icon>\n <PlusIcon class=\"sl-h-12 sl-w-12\" />\n </template>\n </EmptyState>\n-->\n<template>\n <div \n class=\"sl-text-center\"\n :class=\"compact ? 'sl-py-6' : 'sl-py-12'\"\n >\n <!-- Icon -->\n <div v-if=\"icon || $slots.icon\" class=\"sl-flex sl-justify-center sl-mb-4\">\n <slot name=\"icon\">\n <component \n :is=\"icon\" \n :class=\"[\n 'sl-text-gray-400 dark:sl-text-slate-500',\n compact ? 'sl-h-10 sl-w-10' : 'sl-h-12 sl-w-12'\n ]\"\n aria-hidden=\"true\" \n />\n </slot>\n </div>\n\n <!-- Title -->\n <h3 \n :class=\"[\n 'sl-font-medium sl-text-gray-900 dark:sl-text-white',\n compact ? 'sl-text-sm' : 'sl-text-lg'\n ]\"\n >\n {{ title }}\n </h3>\n\n <!-- Description -->\n <div \n v-if=\"description || $slots.description\" \n :class=\"[\n 'sl-text-gray-500 dark:sl-text-slate-400',\n compact ? 'sl-mt-1 sl-text-sm' : 'sl-mt-2 sl-text-base'\n ]\"\n >\n <slot name=\"description\">\n <p>{{ description }}</p>\n </slot>\n </div>\n\n <!-- Action -->\n <div \n v-if=\"actionLabel || $slots.action\" \n :class=\"compact ? 'sl-mt-4' : 'sl-mt-6'\"\n >\n <slot name=\"action\">\n <a\n v-if=\"actionHref\"\n :href=\"actionHref\"\n class=\"sl-inline-flex sl-items-center sl-rounded-md sl-bg-stachelock-600 sl-px-4 sl-py-2 sl-text-sm sl-font-medium sl-text-white sl-shadow-sm hover:sl-bg-stachelock-700 focus:sl-outline-none focus:sl-ring-2 focus:sl-ring-stachelock-500 focus:sl-ring-offset-2 sl-transition-colors\"\n >\n {{ actionLabel }}\n </a>\n <button\n v-else\n type=\"button\"\n @click=\"handleAction\"\n class=\"sl-inline-flex sl-items-center sl-rounded-md sl-bg-stachelock-600 sl-px-4 sl-py-2 sl-text-sm sl-font-medium sl-text-white sl-shadow-sm hover:sl-bg-stachelock-700 focus:sl-outline-none focus:sl-ring-2 focus:sl-ring-stachelock-500 focus:sl-ring-offset-2 sl-transition-colors\"\n >\n {{ actionLabel }}\n </button>\n </slot>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport type { Component } from 'vue';\n\ninterface Props {\n title: string;\n description?: string;\n icon?: Component;\n actionLabel?: string;\n actionHref?: string;\n compact?: boolean;\n}\n\nwithDefaults(defineProps<Props>(), {\n compact: false,\n});\n\nconst emit = defineEmits<{\n action: [];\n}>();\n\nconst handleAction = (): void => {\n emit('action');\n};\n</script>\n\n"],"names":["emit","__emit","handleAction","_createElementBlock","_normalizeClass","__props","$slots","_openBlock","_hoisted_1","_renderSlot","_ctx","_createBlock","_resolveDynamicComponent","_createElementVNode","_hoisted_2"],"mappings":";;;;;;;;;;;;;;;;AAuHA,UAAMA,IAAOC,GAIPC,IAAe,MAAY;AAC/B,MAAAF,EAAK,QAAQ;AAAA,IACf;2BAzFEG,EAgEM,OAAA;AAAA,MA/DJ,OAAKC,EAAA,CAAC,kBACEC,EAAA,UAAO,YAAA,UAAA,CAAA;AAAA,IAAA;MAGJA,EAAA,QAAQC,EAAAA,OAAO,QAA1BC,KAAAJ,EAWM,OAXNK,GAWM;AAAA,QAVJC,EASOC,sBATP,MASO;AAAA,WARLH,KAAAI,EAOEC,EANKP,EAAA,IAAI,GAAA;AAAA,YACR,OAAKD,EAAA;AAAA;cAAuEC,EAAA,UAAO,oBAAA;AAAA,YAAA;YAIpF,eAAY;AAAA,UAAA;;;MAMlBQ,EAOK,MAAA;AAAA,QANF,OAAKT,EAAA;AAAA;UAA0EC,EAAA,UAAO,eAAA;AAAA,QAAA;WAKpFA,EAAA,KAAK,GAAA,CAAA;AAAA,MAKFA,EAAA,eAAeC,EAAAA,OAAO,oBAD9BH,EAUM,OAAA;AAAA;QARH,OAAKC,EAAA;AAAA;UAA+DC,EAAA,UAAO,uBAAA;AAAA,QAAA;;QAK5EI,EAEOC,6BAFP,MAEO;AAAA,UADLG,EAAwB,aAAlBR,EAAA,WAAW,GAAA,CAAA;AAAA,QAAA;;MAMbA,EAAA,eAAeC,EAAAA,OAAO,eAD9BH,EAqBM,OAAA;AAAA;QAnBH,SAAOE,EAAA,UAAO,YAAA,SAAA;AAAA,MAAA;QAEfI,EAgBOC,wBAhBP,MAgBO;AAAA,UAdGL,EAAA,mBADRF,EAMI,KAAA;AAAA;YAJD,MAAME,EAAA;AAAA,YACP,OAAM;AAAA,UAAA,KAEHA,EAAA,WAAW,GAAA,GAAAS,CAAA,WAEhBX,EAOS,UAAA;AAAA;YALP,MAAK;AAAA,YACJ,SAAOD;AAAA,YACR,OAAM;AAAA,UAAA,KAEHG,EAAA,WAAW,GAAA,CAAA;AAAA,QAAA;;;;;"}
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
import { createElementBlock as s, openBlock as t, createElementVNode as l, defineComponent as x, createVNode as r, unref as a, toDisplayString as o, createBlock as f } from "vue";
|
|
2
|
-
import { r as w } from "./MapPinIcon-CSTDUZnD.js";
|
|
3
|
-
function g(e, n) {
|
|
4
|
-
return t(), s("svg", {
|
|
5
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
6
|
-
fill: "none",
|
|
7
|
-
viewBox: "0 0 24 24",
|
|
8
|
-
"stroke-width": "1.5",
|
|
9
|
-
stroke: "currentColor",
|
|
10
|
-
"aria-hidden": "true",
|
|
11
|
-
"data-slot": "icon"
|
|
12
|
-
}, [
|
|
13
|
-
l("path", {
|
|
14
|
-
"stroke-linecap": "round",
|
|
15
|
-
"stroke-linejoin": "round",
|
|
16
|
-
d: "M18.364 18.364A9 9 0 0 0 5.636 5.636m12.728 12.728A9 9 0 0 1 5.636 5.636m12.728 12.728L5.636 5.636"
|
|
17
|
-
})
|
|
18
|
-
]);
|
|
19
|
-
}
|
|
20
|
-
function y(e, n) {
|
|
21
|
-
return t(), s("svg", {
|
|
22
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
23
|
-
viewBox: "0 0 24 24",
|
|
24
|
-
fill: "currentColor",
|
|
25
|
-
"aria-hidden": "true",
|
|
26
|
-
"data-slot": "icon"
|
|
27
|
-
}, [
|
|
28
|
-
l("path", {
|
|
29
|
-
"fill-rule": "evenodd",
|
|
30
|
-
d: "M6.75 2.25A.75.75 0 0 1 7.5 3v1.5h9V3A.75.75 0 0 1 18 3v1.5h.75a3 3 0 0 1 3 3v11.25a3 3 0 0 1-3 3H5.25a3 3 0 0 1-3-3V7.5a3 3 0 0 1 3-3H6V3a.75.75 0 0 1 .75-.75Zm13.5 9a1.5 1.5 0 0 0-1.5-1.5H5.25a1.5 1.5 0 0 0-1.5 1.5v7.5a1.5 1.5 0 0 0 1.5 1.5h13.5a1.5 1.5 0 0 0 1.5-1.5v-7.5Z",
|
|
31
|
-
"clip-rule": "evenodd"
|
|
32
|
-
})
|
|
33
|
-
]);
|
|
34
|
-
}
|
|
35
|
-
function i(e, n) {
|
|
36
|
-
return t(), s("svg", {
|
|
37
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
38
|
-
viewBox: "0 0 24 24",
|
|
39
|
-
fill: "currentColor",
|
|
40
|
-
"aria-hidden": "true",
|
|
41
|
-
"data-slot": "icon"
|
|
42
|
-
}, [
|
|
43
|
-
l("path", {
|
|
44
|
-
"fill-rule": "evenodd",
|
|
45
|
-
d: "m11.54 22.351.07.04.028.016a.76.76 0 0 0 .723 0l.028-.015.071-.041a16.975 16.975 0 0 0 1.144-.742 19.58 19.58 0 0 0 2.683-2.282c1.944-1.99 3.963-4.98 3.963-8.827a8.25 8.25 0 0 0-16.5 0c0 3.846 2.02 6.837 3.963 8.827a19.58 19.58 0 0 0 2.682 2.282 16.975 16.975 0 0 0 1.145.742ZM12 13.5a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z",
|
|
46
|
-
"clip-rule": "evenodd"
|
|
47
|
-
})
|
|
48
|
-
]);
|
|
49
|
-
}
|
|
50
|
-
function _(e, n) {
|
|
51
|
-
return t(), s("svg", {
|
|
52
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
53
|
-
viewBox: "0 0 24 24",
|
|
54
|
-
fill: "currentColor",
|
|
55
|
-
"aria-hidden": "true",
|
|
56
|
-
"data-slot": "icon"
|
|
57
|
-
}, [
|
|
58
|
-
l("path", {
|
|
59
|
-
"fill-rule": "evenodd",
|
|
60
|
-
d: "m6.72 5.66 11.62 11.62A8.25 8.25 0 0 0 6.72 5.66Zm10.56 12.68L5.66 6.72a8.25 8.25 0 0 0 11.62 11.62ZM5.105 5.106c3.807-3.808 9.98-3.808 13.788 0 3.808 3.807 3.808 9.98 0 13.788-3.807 3.808-9.98 3.808-13.788 0-3.808-3.807-3.808-9.98 0-13.788Z",
|
|
61
|
-
"clip-rule": "evenodd"
|
|
62
|
-
})
|
|
63
|
-
]);
|
|
64
|
-
}
|
|
65
|
-
const p = ["src"], k = {
|
|
66
|
-
key: 1,
|
|
67
|
-
class: "sl-h-14 sl-w-14 sl-flex-none sl-rounded-md sl-bg-gray-100 sl-flex sl-items-center sl-justify-center"
|
|
68
|
-
}, b = { class: "sl-relative sl-h-8 sl-w-8" }, C = { class: "sl-flex-auto" }, B = { class: "sl-font-semibold sl-text-gray-800" }, Z = { class: "sl-mt-2 sl-flex sl-flex-col xl:sl-flex-row" }, A = { class: "sl-flex sl-items-start sl-space-x-3" }, V = ["datetime"], D = { class: "sl-flex sl-items-start sl-space-x-3 sl-mt-2 xl:sl-ml-3.5 xl:sl-mt-0 xl:sl-border-l xl:sl-border-gray-400 xl:sl-border-opacity-50 xl:sl-pl-3.5" }, M = {
|
|
69
|
-
key: 1,
|
|
70
|
-
class: "sl-relative sl-h-5 sl-w-5"
|
|
71
|
-
}, E = /* @__PURE__ */ x({
|
|
72
|
-
__name: "EventCard",
|
|
73
|
-
props: {
|
|
74
|
-
event: {
|
|
75
|
-
type: Object,
|
|
76
|
-
required: !0
|
|
77
|
-
}
|
|
78
|
-
},
|
|
79
|
-
emits: ["navigate-to-event"],
|
|
80
|
-
setup(e, { emit: n }) {
|
|
81
|
-
const d = e, u = n, h = () => {
|
|
82
|
-
u("navigate-to-event", d.event.id);
|
|
83
|
-
}, v = (c) => new Date(c).toLocaleDateString("en-US", {
|
|
84
|
-
month: "short",
|
|
85
|
-
day: "2-digit",
|
|
86
|
-
year: "numeric"
|
|
87
|
-
});
|
|
88
|
-
return (c, m) => (t(), s("li", {
|
|
89
|
-
class: "sl-relative sl-flex sl-space-x-6 sl-py-6 sl-cursor-pointer",
|
|
90
|
-
onClick: h
|
|
91
|
-
}, [
|
|
92
|
-
e.event.geocodeResult?.thumbnailUrl ? (t(), s("img", {
|
|
93
|
-
key: 0,
|
|
94
|
-
src: e.event.geocodeResult.thumbnailUrl,
|
|
95
|
-
alt: "",
|
|
96
|
-
class: "sl-h-14 sl-w-14 sl-flex-none sl-rounded-md"
|
|
97
|
-
}, null, 8, p)) : (t(), s("div", k, [
|
|
98
|
-
l("div", b, [
|
|
99
|
-
r(a(g), { class: "sl-absolute sl-h-full sl-w-full sl-text-gray-400" }),
|
|
100
|
-
r(a(w), { class: "sl-absolute sl-top-1/2 sl-left-1/2 sl-h-5 sl-w-5 -sl-translate-x-1/2 -sl-translate-y-1/2 sl-text-gray-400" })
|
|
101
|
-
])
|
|
102
|
-
])),
|
|
103
|
-
l("div", C, [
|
|
104
|
-
l("h3", B, o(e.event.name), 1),
|
|
105
|
-
l("dl", Z, [
|
|
106
|
-
l("div", A, [
|
|
107
|
-
r(a(y), {
|
|
108
|
-
class: "sl-h-5 sl-w-5 sl-text-gray-400",
|
|
109
|
-
"aria-hidden": "true"
|
|
110
|
-
}),
|
|
111
|
-
l("dd", null, [
|
|
112
|
-
l("time", {
|
|
113
|
-
datetime: e.event.datetime
|
|
114
|
-
}, o(v(e.event.date)) + " at " + o(e.event.time), 9, V)
|
|
115
|
-
])
|
|
116
|
-
]),
|
|
117
|
-
l("div", D, [
|
|
118
|
-
e.event.geocodeResult ? (t(), f(a(i), {
|
|
119
|
-
key: 0,
|
|
120
|
-
class: "sl-h-5 sl-w-5 sl-text-gray-400",
|
|
121
|
-
"aria-hidden": "true"
|
|
122
|
-
})) : (t(), s("div", M, [
|
|
123
|
-
r(a(_), { class: "sl-absolute sl-h-full sl-w-full sl-text-gray-400" }),
|
|
124
|
-
r(a(i), { class: "sl-absolute sl-top-1/2 sl-left-1/2 sl-h-3 sl-w-3 -sl-translate-x-1/2 -sl-translate-y-1/2 sl-text-gray-400" })
|
|
125
|
-
])),
|
|
126
|
-
l("dd", null, o(e.event.location), 1)
|
|
127
|
-
])
|
|
128
|
-
])
|
|
129
|
-
])
|
|
130
|
-
]));
|
|
131
|
-
}
|
|
132
|
-
});
|
|
133
|
-
export {
|
|
134
|
-
E as _
|
|
135
|
-
};
|
|
136
|
-
//# sourceMappingURL=EventCard.vue_vue_type_script_setup_true_lang-j1mtKShZ.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EventCard.vue_vue_type_script_setup_true_lang-j1mtKShZ.js","sources":["../node_modules/@heroicons/vue/24/outline/esm/NoSymbolIcon.js","../node_modules/@heroicons/vue/24/solid/esm/CalendarIcon.js","../node_modules/@heroicons/vue/24/solid/esm/MapPinIcon.js","../node_modules/@heroicons/vue/24/solid/esm/NoSymbolIcon.js","../src/components/calendars/EventCard.vue"],"sourcesContent":["import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport default function render(_ctx, _cache) {\n return (_openBlock(), _createElementBlock(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n \"stroke-width\": \"1.5\",\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\"\n }, [\n _createElementVNode(\"path\", {\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n d: \"M18.364 18.364A9 9 0 0 0 5.636 5.636m12.728 12.728A9 9 0 0 1 5.636 5.636m12.728 12.728L5.636 5.636\"\n })\n ]))\n}","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport default function render(_ctx, _cache) {\n return (_openBlock(), _createElementBlock(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\"\n }, [\n _createElementVNode(\"path\", {\n \"fill-rule\": \"evenodd\",\n d: \"M6.75 2.25A.75.75 0 0 1 7.5 3v1.5h9V3A.75.75 0 0 1 18 3v1.5h.75a3 3 0 0 1 3 3v11.25a3 3 0 0 1-3 3H5.25a3 3 0 0 1-3-3V7.5a3 3 0 0 1 3-3H6V3a.75.75 0 0 1 .75-.75Zm13.5 9a1.5 1.5 0 0 0-1.5-1.5H5.25a1.5 1.5 0 0 0-1.5 1.5v7.5a1.5 1.5 0 0 0 1.5 1.5h13.5a1.5 1.5 0 0 0 1.5-1.5v-7.5Z\",\n \"clip-rule\": \"evenodd\"\n })\n ]))\n}","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport default function render(_ctx, _cache) {\n return (_openBlock(), _createElementBlock(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\"\n }, [\n _createElementVNode(\"path\", {\n \"fill-rule\": \"evenodd\",\n d: \"m11.54 22.351.07.04.028.016a.76.76 0 0 0 .723 0l.028-.015.071-.041a16.975 16.975 0 0 0 1.144-.742 19.58 19.58 0 0 0 2.683-2.282c1.944-1.99 3.963-4.98 3.963-8.827a8.25 8.25 0 0 0-16.5 0c0 3.846 2.02 6.837 3.963 8.827a19.58 19.58 0 0 0 2.682 2.282 16.975 16.975 0 0 0 1.145.742ZM12 13.5a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z\",\n \"clip-rule\": \"evenodd\"\n })\n ]))\n}","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport default function render(_ctx, _cache) {\n return (_openBlock(), _createElementBlock(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\"\n }, [\n _createElementVNode(\"path\", {\n \"fill-rule\": \"evenodd\",\n d: \"m6.72 5.66 11.62 11.62A8.25 8.25 0 0 0 6.72 5.66Zm10.56 12.68L5.66 6.72a8.25 8.25 0 0 0 11.62 11.62ZM5.105 5.106c3.807-3.808 9.98-3.808 13.788 0 3.808 3.807 3.808 9.98 0 13.788-3.807 3.808-9.98 3.808-13.788 0-3.808-3.807-3.808-9.98 0-13.788Z\",\n \"clip-rule\": \"evenodd\"\n })\n ]))\n}","<template>\n <li class=\"sl-relative sl-flex sl-space-x-6 sl-py-6 sl-cursor-pointer\" @click=\"handleClick\">\n <!-- Event Thumbnail or Placeholder -->\n <img v-if=\"event.geocodeResult?.thumbnailUrl\" :src=\"event.geocodeResult.thumbnailUrl\" alt=\"\"\n class=\"sl-h-14 sl-w-14 sl-flex-none sl-rounded-md\" />\n <div v-else class=\"sl-h-14 sl-w-14 sl-flex-none sl-rounded-md sl-bg-gray-100 sl-flex sl-items-center sl-justify-center\">\n <div class=\"sl-relative sl-h-8 sl-w-8\">\n <NoSymbolOutline class=\"sl-absolute sl-h-full sl-w-full sl-text-gray-400\" />\n <MapPinOutline\n class=\"sl-absolute sl-top-1/2 sl-left-1/2 sl-h-5 sl-w-5 -sl-translate-x-1/2 -sl-translate-y-1/2 sl-text-gray-400\" />\n </div>\n </div>\n\n <div class=\"sl-flex-auto\">\n <h3 class=\"sl-font-semibold sl-text-gray-800\">{{ event.name }}</h3>\n <dl class=\"sl-mt-2 sl-flex sl-flex-col xl:sl-flex-row\">\n <div class=\"sl-flex sl-items-start sl-space-x-3\">\n <CalendarIcon class=\"sl-h-5 sl-w-5 sl-text-gray-400\" aria-hidden=\"true\" />\n <dd>\n <time :datetime=\"event.datetime\">\n {{ formatDate(event.date) }} at {{ event.time }}\n </time>\n </dd>\n </div>\n <div class=\"sl-flex sl-items-start sl-space-x-3 sl-mt-2 xl:sl-ml-3.5 xl:sl-mt-0 xl:sl-border-l xl:sl-border-gray-400 xl:sl-border-opacity-50 xl:sl-pl-3.5\">\n <template v-if=\"event.geocodeResult\">\n <MapPinSolid class=\"sl-h-5 sl-w-5 sl-text-gray-400\" aria-hidden=\"true\" />\n </template>\n <template v-else>\n <div class=\"sl-relative sl-h-5 sl-w-5\">\n <NoSymbolSolid class=\"sl-absolute sl-h-full sl-w-full sl-text-gray-400\" />\n <MapPinSolid\n class=\"sl-absolute sl-top-1/2 sl-left-1/2 sl-h-3 sl-w-3 -sl-translate-x-1/2 -sl-translate-y-1/2 sl-text-gray-400\" />\n </div>\n </template>\n <dd>{{ event.location }}</dd>\n </div>\n </dl>\n </div>\n </li>\n</template>\n\n<script setup lang=\"ts\">\nimport { CalendarIcon, MapPinIcon as MapPinSolid, NoSymbolIcon as NoSymbolSolid } from '@heroicons/vue/24/solid';\nimport { MapPinIcon as MapPinOutline, NoSymbolIcon as NoSymbolOutline } from '@heroicons/vue/24/outline';\nimport type { ListEvent } from '@/utils/calendar';\n\nconst props = defineProps({\n event: {\n type: Object as () => ListEvent,\n required: true,\n },\n});\n\nconst emit = defineEmits(['navigate-to-event']);\n\nconst handleClick = () => {\n emit('navigate-to-event', props.event.id);\n};\n\nconst formatDate = (dateStr: string) => {\n const date = new Date(dateStr);\n return date.toLocaleDateString('en-US', { \n month: 'short', \n day: '2-digit', \n year: 'numeric' \n });\n};\n</script>\n\n<style scoped>\n</style>\n"],"names":["render","_ctx","_cache","_openBlock","_createElementBlock","_createElementVNode","props","__props","emit","__emit","handleClick","formatDate","dateStr","_hoisted_2","_hoisted_3","_createVNode","_unref","NoSymbolOutline","MapPinOutline","_hoisted_4","_hoisted_5","_toDisplayString","_hoisted_6","_hoisted_7","CalendarIcon","_hoisted_8","_hoisted_9","_createBlock","MapPinSolid","_hoisted_10","NoSymbolSolid"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
import { createElementBlock as n, openBlock as t, createElementVNode as r, defineComponent as A, computed as h, createCommentVNode as u, createBlock as g, Fragment as a, createTextVNode as m, withCtx as D, renderList as y, toDisplayString as B, createVNode as E, unref as N } from "vue";
|
|
2
|
-
import V from "./components/Button.js";
|
|
3
|
-
import { _ as x } from "./EventCard.vue_vue_type_script_setup_true_lang-j1mtKShZ.js";
|
|
4
|
-
function C(c, p) {
|
|
5
|
-
return t(), n("svg", {
|
|
6
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
7
|
-
viewBox: "0 0 20 20",
|
|
8
|
-
fill: "currentColor",
|
|
9
|
-
"aria-hidden": "true",
|
|
10
|
-
"data-slot": "icon"
|
|
11
|
-
}, [
|
|
12
|
-
r("path", {
|
|
13
|
-
"fill-rule": "evenodd",
|
|
14
|
-
d: "M5.75 2a.75.75 0 0 1 .75.75V4h7V2.75a.75.75 0 0 1 1.5 0V4h.25A2.75 2.75 0 0 1 18 6.75v8.5A2.75 2.75 0 0 1 15.25 18H4.75A2.75 2.75 0 0 1 2 15.25v-8.5A2.75 2.75 0 0 1 4.75 4H5V2.75A.75.75 0 0 1 5.75 2Zm-1 5.5c-.69 0-1.25.56-1.25 1.25v6.5c0 .69.56 1.25 1.25 1.25h10.5c.69 0 1.25-.56 1.25-1.25v-6.5c0-.69-.56-1.25-1.25-1.25H4.75Z",
|
|
15
|
-
"clip-rule": "evenodd"
|
|
16
|
-
})
|
|
17
|
-
]);
|
|
18
|
-
}
|
|
19
|
-
const T = { class: "sl-relative" }, M = { class: "sl-flex sl-justify-between sl-items-center sl-mb-4" }, S = { class: "sl-text-lg sl-font-bold" }, F = { key: 0 }, H = { class: "sl-divide-y sl-divide-gray-100 sl-text-sm sl-leading-6 sl-mb-8" }, j = { key: 1 }, L = { class: "sl-text-lg sl-font-bold sl-mb-2" }, P = { class: "sl-divide-y sl-divide-gray-100 sl-text-sm sl-leading-6" }, U = {
|
|
20
|
-
key: 2,
|
|
21
|
-
class: "sl-px-6 sl-py-14 sl-text-center sl-text-sm sm:sl-px-14"
|
|
22
|
-
}, O = /* @__PURE__ */ A({
|
|
23
|
-
__name: "EventsList",
|
|
24
|
-
props: {
|
|
25
|
-
events: {},
|
|
26
|
-
showAllButton: { type: Boolean }
|
|
27
|
-
},
|
|
28
|
-
emits: ["show:all"],
|
|
29
|
-
setup(c, { emit: p }) {
|
|
30
|
-
const o = c, _ = p, v = /* @__PURE__ */ new Date(), w = /* @__PURE__ */ new Date();
|
|
31
|
-
w.setMonth(v.getMonth() + 3);
|
|
32
|
-
const i = h(() => !o.events || !Array.isArray(o.events) ? [] : o.events.filter((l) => {
|
|
33
|
-
const e = new Date(l.datetime);
|
|
34
|
-
return e >= v && e <= w;
|
|
35
|
-
}).sort((l, e) => new Date(l.datetime).getTime() - new Date(e.datetime).getTime())), b = h(() => !o.events || !Array.isArray(o.events) ? [] : o.events.filter((l) => new Date(l.datetime) < v).sort((l, e) => new Date(e.datetime).getTime() - new Date(l.datetime).getTime())), d = h(() => {
|
|
36
|
-
const l = {};
|
|
37
|
-
return b.value.forEach((e) => {
|
|
38
|
-
const s = new Date(e.datetime).getFullYear().toString();
|
|
39
|
-
l[s] || (l[s] = []), l[s].push(e);
|
|
40
|
-
}), Object.entries(l).sort(([e], [s]) => Number(s) - Number(e)).map(([e, s]) => ({ year: e, events: s }));
|
|
41
|
-
}), k = () => _("show:all");
|
|
42
|
-
return (l, e) => (t(), n("div", T, [
|
|
43
|
-
r("div", M, [
|
|
44
|
-
r("h2", S, [
|
|
45
|
-
i.value.length ? (t(), n(a, { key: 0 }, [
|
|
46
|
-
m("Upcoming Events")
|
|
47
|
-
], 64)) : d.value.length ? (t(), n(a, { key: 1 }, [
|
|
48
|
-
m("Past Events")
|
|
49
|
-
], 64)) : (t(), n(a, { key: 2 }, [
|
|
50
|
-
m("Events")
|
|
51
|
-
], 64))
|
|
52
|
-
]),
|
|
53
|
-
c.showAllButton ? (t(), g(V, {
|
|
54
|
-
key: 0,
|
|
55
|
-
"center-label": "",
|
|
56
|
-
size: "xs",
|
|
57
|
-
onButtonClick: k
|
|
58
|
-
}, {
|
|
59
|
-
default: D(() => [...e[0] || (e[0] = [
|
|
60
|
-
m(" Show all ", -1)
|
|
61
|
-
])]),
|
|
62
|
-
_: 1
|
|
63
|
-
})) : u("", !0)
|
|
64
|
-
]),
|
|
65
|
-
i.value.length ? (t(), n("div", F, [
|
|
66
|
-
r("ol", H, [
|
|
67
|
-
(t(!0), n(a, null, y(i.value, (s) => (t(), g(x, {
|
|
68
|
-
key: s.id,
|
|
69
|
-
event: s
|
|
70
|
-
}, null, 8, ["event"]))), 128))
|
|
71
|
-
])
|
|
72
|
-
])) : u("", !0),
|
|
73
|
-
d.value.length ? (t(), n("div", j, [
|
|
74
|
-
(t(!0), n(a, null, y(d.value, (s) => (t(), n("div", {
|
|
75
|
-
key: s.year,
|
|
76
|
-
class: "sl-mb-8"
|
|
77
|
-
}, [
|
|
78
|
-
r("h2", L, B(s.year), 1),
|
|
79
|
-
e[1] || (e[1] = r("hr", { class: "sl-border-gray-200 sl-mb-4" }, null, -1)),
|
|
80
|
-
r("ol", P, [
|
|
81
|
-
(t(!0), n(a, null, y(s.events, (f) => (t(), g(x, {
|
|
82
|
-
key: f.id,
|
|
83
|
-
event: f
|
|
84
|
-
}, null, 8, ["event"]))), 128))
|
|
85
|
-
])
|
|
86
|
-
]))), 128))
|
|
87
|
-
])) : u("", !0),
|
|
88
|
-
!i.value.length && !d.value.length ? (t(), n("div", U, [
|
|
89
|
-
E(N(C), {
|
|
90
|
-
class: "sl-mx-auto sl-h-6 sl-w-6 sl-text-gray-400",
|
|
91
|
-
"aria-hidden": "true"
|
|
92
|
-
}),
|
|
93
|
-
e[2] || (e[2] = r("p", { class: "sl-mt-4 sl-font-semibold sl-text-gray-800" }, "No events", -1)),
|
|
94
|
-
e[3] || (e[3] = r("p", { class: "sl-mt-2 sl-text-gray-500" }, "Add events to get started!", -1))
|
|
95
|
-
])) : u("", !0)
|
|
96
|
-
]));
|
|
97
|
-
}
|
|
98
|
-
});
|
|
99
|
-
export {
|
|
100
|
-
O as _
|
|
101
|
-
};
|
|
102
|
-
//# sourceMappingURL=EventsList.vue_vue_type_script_setup_true_lang-MhuVi5u8.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EventsList.vue_vue_type_script_setup_true_lang-MhuVi5u8.js","sources":["../node_modules/@heroicons/vue/20/solid/esm/CalendarIcon.js","../src/components/calendars/EventsList.vue"],"sourcesContent":["import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport default function render(_ctx, _cache) {\n return (_openBlock(), _createElementBlock(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\"\n }, [\n _createElementVNode(\"path\", {\n \"fill-rule\": \"evenodd\",\n d: \"M5.75 2a.75.75 0 0 1 .75.75V4h7V2.75a.75.75 0 0 1 1.5 0V4h.25A2.75 2.75 0 0 1 18 6.75v8.5A2.75 2.75 0 0 1 15.25 18H4.75A2.75 2.75 0 0 1 2 15.25v-8.5A2.75 2.75 0 0 1 4.75 4H5V2.75A.75.75 0 0 1 5.75 2Zm-1 5.5c-.69 0-1.25.56-1.25 1.25v6.5c0 .69.56 1.25 1.25 1.25h10.5c.69 0 1.25-.56 1.25-1.25v-6.5c0-.69-.56-1.25-1.25-1.25H4.75Z\",\n \"clip-rule\": \"evenodd\"\n })\n ]))\n}","<template>\n <div class=\"sl-relative\">\n <!-- Header -->\n <div class=\"sl-flex sl-justify-between sl-items-center sl-mb-4\">\n <h2 class=\"sl-text-lg sl-font-bold\">\n <template v-if=\"upcomingEvents.length\">Upcoming Events</template>\n <template v-else-if=\"groupedPastEventsByYear.length\">Past Events</template>\n <template v-else>Events</template>\n </h2>\n <UiButton v-if=\"showAllButton\" center-label size=\"xs\" @button-click=\"handleShowAll\">\n Show all\n </UiButton>\n </div>\n\n <!-- Upcoming Events -->\n <div v-if=\"upcomingEvents.length\">\n <ol class=\"sl-divide-y sl-divide-gray-100 sl-text-sm sl-leading-6 sl-mb-8\">\n <EventCard v-for=\"event in upcomingEvents\" :key=\"event.id\" :event=\"event\" />\n </ol>\n </div>\n\n <!-- Past Events -->\n <div v-if=\"groupedPastEventsByYear.length\">\n <div v-for=\"group in groupedPastEventsByYear\" :key=\"group.year\" class=\"sl-mb-8\">\n <h2 class=\"sl-text-lg sl-font-bold sl-mb-2\">{{ group.year }}</h2>\n <hr class=\"sl-border-gray-200 sl-mb-4\" />\n <ol class=\"sl-divide-y sl-divide-gray-100 sl-text-sm sl-leading-6\">\n <EventCard v-for=\"event in group.events\" :key=\"event.id\" :event=\"event\" />\n </ol>\n </div>\n </div>\n\n <!-- No Events Message -->\n <div v-if=\"!upcomingEvents.length && !groupedPastEventsByYear.length\"\n class=\"sl-px-6 sl-py-14 sl-text-center sl-text-sm sm:sl-px-14\">\n <CalendarIcon class=\"sl-mx-auto sl-h-6 sl-w-6 sl-text-gray-400\" aria-hidden=\"true\" />\n <p class=\"sl-mt-4 sl-font-semibold sl-text-gray-800\">No events</p>\n <p class=\"sl-mt-2 sl-text-gray-500\">Add events to get started!</p>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { CalendarIcon } from '@heroicons/vue/20/solid';\nimport type { ListEvent } from '@/utils/calendar';\nimport UiButton from '@/components/UiButton.vue';\nimport EventCard from './EventCard.vue';\n\nconst props = defineProps<{ \n events: ListEvent[]; \n showAllButton?: boolean;\n}>();\nconst emit = defineEmits(['show:all']);\n\nconst now = new Date();\nconst threeMonthsFromNow = new Date();\nthreeMonthsFromNow.setMonth(now.getMonth() + 3);\n\n// Upcoming events: events occurring between now and three months from now\nconst upcomingEvents = computed(() => {\n if (!props.events || !Array.isArray(props.events)) return [];\n return props.events\n .filter((event) => {\n const eventDate = new Date(event.datetime);\n return eventDate >= now && eventDate <= threeMonthsFromNow;\n })\n .sort((a, b) => new Date(a.datetime).getTime() - new Date(b.datetime).getTime());\n});\n\n// Past events: events that occurred before now\nconst pastEvents = computed(() => {\n if (!props.events || !Array.isArray(props.events)) return [];\n return props.events\n .filter((event) => new Date(event.datetime) < now)\n .sort((a, b) => new Date(b.datetime).getTime() - new Date(a.datetime).getTime());\n});\n\n// Group past events by year in descending order\nconst groupedPastEventsByYear = computed(() => {\n const groups: Record<string, ListEvent[]> = {};\n pastEvents.value.forEach((event) => {\n const year = new Date(event.datetime).getFullYear().toString();\n if (!groups[year]) {\n groups[year] = [];\n }\n groups[year].push(event);\n });\n return Object.entries(groups)\n .sort(([yearA], [yearB]) => Number(yearB) - Number(yearA))\n .map(([year, events]) => ({ year, events }));\n});\n\nconst handleShowAll = () => emit('show:all');\n</script>\n\n<style scoped>\n</style>\n"],"names":["render","_ctx","_cache","_openBlock","_createElementBlock","_createElementVNode","props","__props","emit","__emit","now","threeMonthsFromNow","upcomingEvents","computed","event","eventDate","a","b","pastEvents","groupedPastEventsByYear","groups","year","yearA","yearB","events","handleShowAll","_hoisted_1","_hoisted_2","_hoisted_3","_Fragment","_createBlock","UiButton","_hoisted_4","_hoisted_5","_renderList","EventCard","_hoisted_6","group","_hoisted_7","_toDisplayString","_hoisted_8","_hoisted_9","_createVNode","_unref","CalendarIcon"],"mappings":";;;AAEe,SAASA,EAAOC,GAAMC,GAAQ;AAC3C,SAAQC,EAAU,GAAIC,EAAoB,OAAO;AAAA,IAC/C,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,eAAe;AAAA,IACf,aAAa;AAAA,EACjB,GAAK;AAAA,IACDC,EAAoB,QAAQ;AAAA,MAC1B,aAAa;AAAA,MACb,GAAG;AAAA,MACH,aAAa;AAAA,IACnB,CAAK;AAAA,EACL,CAAG;AACH;;;;;;;;;;;;ACiCA,UAAMC,IAAQC,GAIRC,IAAOC,GAEPC,wBAAU,KAAA,GACVC,wBAAyB,KAAA;AAC/B,IAAAA,EAAmB,SAASD,EAAI,SAAA,IAAa,CAAC;AAG9C,UAAME,IAAiBC,EAAS,MAC1B,CAACP,EAAM,UAAU,CAAC,MAAM,QAAQA,EAAM,MAAM,IAAU,CAAA,IACnDA,EAAM,OACV,OAAO,CAACQ,MAAU;AACjB,YAAMC,IAAY,IAAI,KAAKD,EAAM,QAAQ;AACzC,aAAOC,KAAaL,KAAOK,KAAaJ;AAAA,IAC1C,CAAC,EACA,KAAK,CAACK,GAAGC,MAAM,IAAI,KAAKD,EAAE,QAAQ,EAAE,QAAA,IAAY,IAAI,KAAKC,EAAE,QAAQ,EAAE,SAAS,CAClF,GAGKC,IAAaL,EAAS,MACtB,CAACP,EAAM,UAAU,CAAC,MAAM,QAAQA,EAAM,MAAM,IAAU,CAAA,IACnDA,EAAM,OACV,OAAO,CAACQ,MAAU,IAAI,KAAKA,EAAM,QAAQ,IAAIJ,CAAG,EAChD,KAAK,CAACM,GAAGC,MAAM,IAAI,KAAKA,EAAE,QAAQ,EAAE,YAAY,IAAI,KAAKD,EAAE,QAAQ,EAAE,SAAS,CAClF,GAGKG,IAA0BN,EAAS,MAAM;AAC7C,YAAMO,IAAsC,CAAA;AAC5C,aAAAF,EAAW,MAAM,QAAQ,CAACJ,MAAU;AAClC,cAAMO,IAAO,IAAI,KAAKP,EAAM,QAAQ,EAAE,YAAA,EAAc,SAAA;AACpD,QAAKM,EAAOC,CAAI,MACdD,EAAOC,CAAI,IAAI,CAAA,IAEjBD,EAAOC,CAAI,EAAE,KAAKP,CAAK;AAAA,MACzB,CAAC,GACM,OAAO,QAAQM,CAAM,EACzB,KAAK,CAAC,CAACE,CAAK,GAAG,CAACC,CAAK,MAAM,OAAOA,CAAK,IAAI,OAAOD,CAAK,CAAC,EACxD,IAAI,CAAC,CAACD,GAAMG,CAAM,OAAO,EAAE,MAAAH,GAAM,QAAAG,EAAA,EAAS;AAAA,IAC/C,CAAC,GAEKC,IAAgB,MAAMjB,EAAK,UAAU;sBA5FzCL,EAAA,GAAAC,EAsCM,OAtCNsB,GAsCM;AAAA,MApCJrB,EASM,OATNsB,GASM;AAAA,QARJtB,EAIK,MAJLuB,GAIK;AAAA,UAHahB,EAAA,MAAe,eAA/BR,EAAiEyB,GAAA,EAAA,KAAA,KAAA;AAAA,cAA1B,iBAAe;AAAA,UAAA,UACjCV,EAAA,MAAwB,eAA7Cf,EAA2EyB,GAAA,EAAA,KAAA,KAAA;AAAA,cAAtB,aAAW;AAAA,UAAA,gBAChEzB,EAAkCyB,GAAA,EAAA,KAAA,KAAA;AAAA,cAAjB,QAAM;AAAA,UAAA;;QAETtB,EAAA,sBAAhBuB,EAEWC,GAAA;AAAA;UAFoB,gBAAA;AAAA,UAAa,MAAK;AAAA,UAAM,eAAcN;AAAA,QAAA;qBAAe,MAEpF,CAAA,GAAAvB,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA;AAAA,cAFoF,cAEpF,EAAA;AAAA,UAAA;;;;MAISU,EAAA,MAAe,eAA1BR,EAIM,OAAA4B,GAAA;AAAA,QAHJ3B,EAEK,MAFL4B,GAEK;AAAA,kBADH7B,EAA4EyB,GAAA,MAAAK,EAAjDtB,EAAA,OAAc,CAAvBE,YAAlBgB,EAA4EK,GAAA;AAAA,YAAhC,KAAKrB,EAAM;AAAA,YAAK,OAAAA;AAAA,UAAA;;;MAKrDK,EAAA,MAAwB,eAAnCf,EAQM,OAAAgC,GAAA;AAAA,gBAPJhC,EAMMyB,GAAA,MAAAK,EANef,EAAA,OAAuB,CAAhCkB,YAAZjC,EAMM,OAAA;AAAA,UANyC,KAAKiC,EAAM;AAAA,UAAM,OAAM;AAAA,QAAA;UACpEhC,EAAiE,MAAjEiC,GAAiEC,EAAlBF,EAAM,IAAI,GAAA,CAAA;AAAA,0BACzDhC,EAAyC,MAAA,EAArC,OAAM,6BAAA,GAA4B,MAAA,EAAA;AAAA,UACtCA,EAEK,MAFLmC,GAEK;AAAA,aADHrC,EAAA,EAAA,GAAAC,EAA0EyB,GAAA,MAAAK,EAA/CG,EAAM,SAAfvB,YAAlBgB,EAA0EK,GAAA;AAAA,cAAhC,KAAKrB,EAAM;AAAA,cAAK,OAAAA;AAAA,YAAA;;;;MAMpD,CAAAF,EAAA,MAAe,UAAM,CAAKO,EAAA,MAAwB,UAA9DhB,EAAA,GAAAC,EAKM,OALNqC,GAKM;AAAA,QAHJC,EAAqFC,EAAAC,CAAA,GAAA;AAAA,UAAvE,OAAM;AAAA,UAA4C,eAAY;AAAA,QAAA;QAC5E1C,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAAG,EAAkE,KAAA,EAA/D,OAAM,4CAAA,GAA4C,aAAS,EAAA;AAAA,QAC9DH,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAAG,EAAkE,KAAA,EAA/D,OAAM,8BAA2B,8BAA0B,EAAA;AAAA,MAAA;;;;","x_google_ignoreList":[0]}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { createElementBlock as e, openBlock as o, createElementVNode as r } from "vue";
|
|
2
|
-
function c(t, n) {
|
|
3
|
-
return o(), e("svg", {
|
|
4
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
5
|
-
fill: "none",
|
|
6
|
-
viewBox: "0 0 24 24",
|
|
7
|
-
"stroke-width": "1.5",
|
|
8
|
-
stroke: "currentColor",
|
|
9
|
-
"aria-hidden": "true",
|
|
10
|
-
"data-slot": "icon"
|
|
11
|
-
}, [
|
|
12
|
-
r("path", {
|
|
13
|
-
"stroke-linecap": "round",
|
|
14
|
-
"stroke-linejoin": "round",
|
|
15
|
-
d: "M12 9v3.75m9-.75a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9 3.75h.008v.008H12v-.008Z"
|
|
16
|
-
})
|
|
17
|
-
]);
|
|
18
|
-
}
|
|
19
|
-
export {
|
|
20
|
-
c as r
|
|
21
|
-
};
|
|
22
|
-
//# sourceMappingURL=ExclamationCircleIcon-DjxYk45_.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ExclamationCircleIcon-DjxYk45_.js","sources":["../node_modules/@heroicons/vue/24/outline/esm/ExclamationCircleIcon.js"],"sourcesContent":["import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport default function render(_ctx, _cache) {\n return (_openBlock(), _createElementBlock(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n \"stroke-width\": \"1.5\",\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\"\n }, [\n _createElementVNode(\"path\", {\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n d: \"M12 9v3.75m9-.75a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9 3.75h.008v.008H12v-.008Z\"\n })\n ]))\n}"],"names":["render","_ctx","_cache","_openBlock","_createElementBlock","_createElementVNode"],"mappings":";AAEe,SAASA,EAAOC,GAAMC,GAAQ;AAC3C,SAAQC,EAAU,GAAIC,EAAoB,OAAO;AAAA,IAC/C,OAAO;AAAA,IACP,MAAM;AAAA,IACN,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,QAAQ;AAAA,IACR,eAAe;AAAA,IACf,aAAa;AAAA,EACjB,GAAK;AAAA,IACDC,EAAoB,QAAQ;AAAA,MAC1B,kBAAkB;AAAA,MAClB,mBAAmB;AAAA,MACnB,GAAG;AAAA,IACT,CAAK;AAAA,EACL,CAAG;AACH;","x_google_ignoreList":[0]}
|