@licklist/design 0.78.5-dev.92 → 0.78.5-dev.93
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/.storybook/preview.jsx +1 -0
- package/bitbucket-pipelines.yml +4 -0
- package/components.json +20 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -9
- package/dist/v2/components/AccountManagerCard/AccountManagerCard.d.ts +11 -0
- package/dist/v2/components/AccountManagerCard/AccountManagerCard.d.ts.map +1 -0
- package/dist/v2/components/AccountManagerCard/AccountManagerCard.js +62 -0
- package/dist/v2/components/AccountManagerCard/AccountManagerCard.scss.js +6 -0
- package/dist/v2/components/AccountManagerCard/index.d.ts +3 -0
- package/dist/v2/components/AccountManagerCard/index.d.ts.map +1 -0
- package/dist/v2/components/ActionMenu/ActionMenu.scss.js +1 -1
- package/dist/v2/components/Alert/Alert.scss.js +1 -1
- package/dist/v2/components/AvatarUpload/AvatarUpload.d.ts.map +1 -1
- package/dist/v2/components/AvatarUpload/AvatarUpload.js +23 -13
- package/dist/v2/components/AvatarUpload/AvatarUpload.scss.js +1 -1
- package/dist/v2/components/Button/Button.d.ts.map +1 -1
- package/dist/v2/components/Button/Button.js +2 -1
- package/dist/v2/components/Button/Button.scss.js +1 -1
- package/dist/v2/components/Button/GhostButton.scss.js +1 -1
- package/dist/v2/components/Checkbox/Checkbox.scss.js +1 -1
- package/dist/v2/components/DataTable/DataTable.d.ts +3 -1
- package/dist/v2/components/DataTable/DataTable.d.ts.map +1 -1
- package/dist/v2/components/DataTable/DataTable.js +40 -39
- package/dist/v2/components/DataTable/DataTable.scss.js +1 -1
- package/dist/v2/components/EmptyState/EmptyState.scss.js +1 -1
- package/dist/v2/components/FeatureToggle/FeatureToggle.d.ts +14 -0
- package/dist/v2/components/FeatureToggle/FeatureToggle.d.ts.map +1 -0
- package/dist/v2/components/FeatureToggle/FeatureToggle.js +47 -0
- package/dist/v2/components/FeatureToggle/FeatureToggle.scss.js +6 -0
- package/dist/v2/components/FeatureToggle/index.d.ts +3 -0
- package/dist/v2/components/FeatureToggle/index.d.ts.map +1 -0
- package/dist/v2/components/FormField/FormField.scss.js +1 -1
- package/dist/v2/components/InfoGrid/InfoGrid.scss.js +1 -1
- package/dist/v2/components/InputCheckbox/InputCheckbox.scss.js +1 -1
- package/dist/v2/components/Modal/DeleteModal.d.ts.map +1 -1
- package/dist/v2/components/Modal/DeleteModal.js +74 -76
- package/dist/v2/components/Modal/DeleteModal.scss.js +1 -1
- package/dist/v2/components/NotificationBanner/NotificationBanner.d.ts +16 -0
- package/dist/v2/components/NotificationBanner/NotificationBanner.d.ts.map +1 -0
- package/dist/v2/components/NotificationBanner/NotificationBanner.js +50 -0
- package/dist/v2/components/NotificationBanner/NotificationBanner.scss.js +6 -0
- package/dist/v2/components/NotificationBanner/index.d.ts +3 -0
- package/dist/v2/components/NotificationBanner/index.d.ts.map +1 -0
- package/dist/v2/components/RadioCard/{RadioCard.d.ts → RadioCardGroup.d.ts} +5 -4
- package/dist/v2/components/RadioCard/RadioCardGroup.d.ts.map +1 -0
- package/dist/v2/components/RadioCard/RadioCardGroup.js +69 -0
- package/dist/v2/components/RadioCard/RadioCardGroup.scss.js +6 -0
- package/dist/v2/components/RadioCard/index.d.ts +1 -1
- package/dist/v2/components/RadioCard/index.d.ts.map +1 -1
- package/dist/v2/components/Select/Select.d.ts +7 -1
- package/dist/v2/components/Select/Select.d.ts.map +1 -1
- package/dist/v2/components/Select/Select.js +9 -2
- package/dist/v2/components/Select/index.d.ts +1 -1
- package/dist/v2/components/Select/index.d.ts.map +1 -1
- package/dist/v2/components/StatusBadge/StatusBadge.d.ts +2 -1
- package/dist/v2/components/StatusBadge/StatusBadge.d.ts.map +1 -1
- package/dist/v2/components/StatusBadge/StatusBadge.js +7 -3
- package/dist/v2/components/StatusBadge/StatusBadge.scss.js +1 -1
- package/dist/v2/components/TableControls/TableControls.scss.js +1 -1
- package/dist/v2/components/Tabs/Tabs.d.ts.map +1 -1
- package/dist/v2/components/Tabs/Tabs.js +40 -0
- package/dist/v2/components/Tabs/Tabs.scss.js +1 -1
- package/dist/v2/components/Toggle/Toggle.d.ts +10 -0
- package/dist/v2/components/Toggle/Toggle.d.ts.map +1 -0
- package/dist/v2/components/Toggle/Toggle.js +17 -0
- package/dist/v2/components/Toggle/Toggle.scss.js +6 -0
- package/dist/v2/components/Toggle/index.d.ts +3 -0
- package/dist/v2/components/Toggle/index.d.ts.map +1 -0
- package/dist/v2/components/Tooltip/Tooltip.d.ts +0 -1
- package/dist/v2/components/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/v2/components/WYSIWYGEditor/WYSIWYGEditor.scss.js +1 -1
- package/dist/v2/components/index.d.ts +13 -2
- package/dist/v2/components/index.d.ts.map +1 -1
- package/dist/v2/dashboard-analytics/blog-posts/index.d.ts +1 -1
- package/dist/v2/dashboard-analytics/blog-posts/index.d.ts.map +1 -1
- package/dist/v2/dashboard-analytics/chart/Chart.d.ts.map +1 -1
- package/dist/v2/dashboard-analytics/chart/Chart.js +6 -5
- package/dist/v2/dashboard-analytics/venue-card/VenueCard.d.ts +2 -2
- package/dist/v2/dashboard-analytics/venue-card/VenueCard.d.ts.map +1 -1
- package/dist/v2/icons/index.d.ts +98 -4
- package/dist/v2/icons/index.d.ts.map +1 -1
- package/dist/v2/icons/index.js +497 -2
- package/dist/v2/index.d.ts +15 -4
- package/dist/v2/index.d.ts.map +1 -1
- package/dist/v2/navigation/DashboardLayout/AdminSidebar.d.ts +3 -0
- package/dist/v2/navigation/DashboardLayout/AdminSidebar.d.ts.map +1 -1
- package/dist/v2/navigation/DashboardLayout/AdminSidebar.js +34 -60
- package/dist/v2/navigation/DashboardLayout/AdminSidebar.scss.js +1 -1
- package/dist/v2/navigation/DashboardLayout/DashboardLayout.d.ts +3 -0
- package/dist/v2/navigation/DashboardLayout/DashboardLayout.d.ts.map +1 -1
- package/dist/v2/navigation/DashboardLayout/DashboardLayout.js +16 -6
- package/dist/v2/navigation/DashboardLayout/DashboardLayout.scss.js +1 -1
- package/dist/v2/navigation/DashboardLayout/ProviderSidebar.d.ts.map +1 -1
- package/dist/v2/navigation/DashboardLayout/ProviderSidebar.js +7 -26
- package/dist/v2/navigation/DashboardLayout/TopNavigation.d.ts +1 -0
- package/dist/v2/navigation/DashboardLayout/TopNavigation.d.ts.map +1 -1
- package/dist/v2/navigation/DashboardLayout/TopNavigation.js +27 -8
- package/dist/v2/navigation/DashboardLayout/TopNavigation.scss.js +1 -1
- package/dist/v2/navigation/FigmasSideBar/FigmasSideBar.d.ts.map +1 -1
- package/dist/v2/navigation/config.d.ts.map +1 -1
- package/dist/v2/pages/Settings/SettingsPage.scss.js +1 -1
- package/dist/v2/pages/Settings/SettingsTabs.scss.js +1 -1
- package/dist/v2/pages/Settings/components/SidebarCustomisation.js +9 -1
- package/dist/v2/pages/Settings/components/SidebarCustomisation.scss.js +1 -1
- package/dist/v2/pages/Settings/components/SidebarNavItem.js +9 -1
- package/dist/v2/pages/Settings/components/SidebarNavItem.scss.js +1 -1
- package/dist/v2/pages/auth/AuthLayout/AuthLayout.js +138 -0
- package/dist/v2/pages/auth/AuthLayout/AuthLayout.scss.js +6 -0
- package/dist/v2/pages/auth/CreatePassword/CreatePasswordPage.js +377 -0
- package/dist/v2/pages/auth/CreatePassword/CreatePasswordPage.scss.js +6 -0
- package/dist/{auth → v2/pages/auth}/Login/LoginPage.js +97 -46
- package/dist/v2/pages/auth/Login/LoginPage.scss.js +6 -0
- package/dist/v2/pages/auth/ResetPassword/ResetPasswordPage.js +274 -0
- package/dist/v2/pages/auth/ResetPassword/ResetPasswordPage.scss.js +6 -0
- package/dist/v2/pages/auth/VerifyEmail/VerifyEmailPage.js +313 -0
- package/dist/v2/pages/auth/VerifyEmail/VerifyEmailPage.scss.js +6 -0
- package/dist/v2/shadcn/_reference/AccountManagerCard.d.ts +10 -0
- package/dist/v2/shadcn/_reference/AccountManagerCard.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/AffiliatesTable.d.ts +18 -0
- package/dist/v2/shadcn/_reference/AffiliatesTable.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/AuditArchive.d.ts +7 -0
- package/dist/v2/shadcn/_reference/AuditArchive.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/AuditContent.d.ts +4 -0
- package/dist/v2/shadcn/_reference/AuditContent.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/AutomationsGeneralSettings.d.ts +4 -0
- package/dist/v2/shadcn/_reference/AutomationsGeneralSettings.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/AvatarUpload.d.ts +9 -0
- package/dist/v2/shadcn/_reference/AvatarUpload.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/BookingsSummaryCard.d.ts +7 -0
- package/dist/v2/shadcn/_reference/BookingsSummaryCard.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/CodeCleanUpAudit.d.ts +4 -0
- package/dist/v2/shadcn/_reference/CodeCleanUpAudit.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/CompaniesTable.d.ts +4 -0
- package/dist/v2/shadcn/_reference/CompaniesTable.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/ComponentAudit.d.ts +4 -0
- package/dist/v2/shadcn/_reference/ComponentAudit.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/ConfigureSettingsCard.d.ts +28 -0
- package/dist/v2/shadcn/_reference/ConfigureSettingsCard.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/CustomerCard.d.ts +16 -0
- package/dist/v2/shadcn/_reference/CustomerCard.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/DashboardCards.d.ts +4 -0
- package/dist/v2/shadcn/_reference/DashboardCards.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/DashboardFooter.d.ts +3 -0
- package/dist/v2/shadcn/_reference/DashboardFooter.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/DiarySettings.d.ts +4 -0
- package/dist/v2/shadcn/_reference/DiarySettings.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/DiaryView.d.ts +15 -0
- package/dist/v2/shadcn/_reference/DiaryView.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/EmptyState.d.ts +10 -0
- package/dist/v2/shadcn/_reference/EmptyState.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/EntityInfoCard.d.ts +14 -0
- package/dist/v2/shadcn/_reference/EntityInfoCard.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/ExistingUserAssignments.d.ts +7 -0
- package/dist/v2/shadcn/_reference/ExistingUserAssignments.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/FeatureToggle.d.ts +20 -0
- package/dist/v2/shadcn/_reference/FeatureToggle.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/FlowCard.d.ts +21 -0
- package/dist/v2/shadcn/_reference/FlowCard.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/FlowsContent.d.ts +12 -0
- package/dist/v2/shadcn/_reference/FlowsContent.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/FlowsGeneralSettings.d.ts +8 -0
- package/dist/v2/shadcn/_reference/FlowsGeneralSettings.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/GeneralSettings.d.ts +8 -0
- package/dist/v2/shadcn/_reference/GeneralSettings.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/InventoryGeneralSettings.d.ts +17 -0
- package/dist/v2/shadcn/_reference/InventoryGeneralSettings.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/LanguageSelector.d.ts +12 -0
- package/dist/v2/shadcn/_reference/LanguageSelector.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/LoadingScreen.d.ts +8 -0
- package/dist/v2/shadcn/_reference/LoadingScreen.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/LoadingSpinner.d.ts +8 -0
- package/dist/v2/shadcn/_reference/LoadingSpinner.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/ManagedClientsList.d.ts +7 -0
- package/dist/v2/shadcn/_reference/ManagedClientsList.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/NPSScore.d.ts +8 -0
- package/dist/v2/shadcn/_reference/NPSScore.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/NPSSummaryCard.d.ts +8 -0
- package/dist/v2/shadcn/_reference/NPSSummaryCard.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/NotificationBanner.d.ts +20 -0
- package/dist/v2/shadcn/_reference/NotificationBanner.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/NotificationPanel.d.ts +11 -0
- package/dist/v2/shadcn/_reference/NotificationPanel.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/OnlineUsersCard.d.ts +7 -0
- package/dist/v2/shadcn/_reference/OnlineUsersCard.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/ProtectedRoute.d.ts +6 -0
- package/dist/v2/shadcn/_reference/ProtectedRoute.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/ProvidersTable.d.ts +7 -0
- package/dist/v2/shadcn/_reference/ProvidersTable.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/QuickAddPanel.d.ts +18 -0
- package/dist/v2/shadcn/_reference/QuickAddPanel.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/QuickFilters.d.ts +28 -0
- package/dist/v2/shadcn/_reference/QuickFilters.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/ScheduleView.d.ts +29 -0
- package/dist/v2/shadcn/_reference/ScheduleView.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/ScrollToTop.d.ts +3 -0
- package/dist/v2/shadcn/_reference/ScrollToTop.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/SecondaryNav.d.ts +12 -0
- package/dist/v2/shadcn/_reference/SecondaryNav.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/SecuritySettings.d.ts +8 -0
- package/dist/v2/shadcn/_reference/SecuritySettings.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/SessionDetailView.d.ts +33 -0
- package/dist/v2/shadcn/_reference/SessionDetailView.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/Sidebar.d.ts +4 -0
- package/dist/v2/shadcn/_reference/Sidebar.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/SidebarAwareLayout.d.ts +9 -0
- package/dist/v2/shadcn/_reference/SidebarAwareLayout.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/SidebarLabelCustomization.d.ts +9 -0
- package/dist/v2/shadcn/_reference/SidebarLabelCustomization.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/SimulationBanner.d.ts +3 -0
- package/dist/v2/shadcn/_reference/SimulationBanner.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/SortControls.d.ts +10 -0
- package/dist/v2/shadcn/_reference/SortControls.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/StatusBadge.d.ts +7 -0
- package/dist/v2/shadcn/_reference/StatusBadge.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/StyleGuideContent.d.ts +85 -0
- package/dist/v2/shadcn/_reference/StyleGuideContent.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/TableActionMenu.d.ts +21 -0
- package/dist/v2/shadcn/_reference/TableActionMenu.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/ThemeProvider.d.ts +14 -0
- package/dist/v2/shadcn/_reference/ThemeProvider.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/ThemeSettings.d.ts +4 -0
- package/dist/v2/shadcn/_reference/ThemeSettings.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/TopNavigation.d.ts +4 -0
- package/dist/v2/shadcn/_reference/TopNavigation.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/UserActivityHistory.d.ts +8 -0
- package/dist/v2/shadcn/_reference/UserActivityHistory.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/UserLanguageSettings.d.ts +4 -0
- package/dist/v2/shadcn/_reference/UserLanguageSettings.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/UserPanel.d.ts +9 -0
- package/dist/v2/shadcn/_reference/UserPanel.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/UsersTable.d.ts +23 -0
- package/dist/v2/shadcn/_reference/UsersTable.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/WaiverForm.d.ts +8 -0
- package/dist/v2/shadcn/_reference/WaiverForm.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/WaiversGeneralSettings.d.ts +4 -0
- package/dist/v2/shadcn/_reference/WaiversGeneralSettings.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/WaiversTable.d.ts +27 -0
- package/dist/v2/shadcn/_reference/WaiversTable.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/WaiversTemplatesSettings.d.ts +4 -0
- package/dist/v2/shadcn/_reference/WaiversTemplatesSettings.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/ai/AIChatPanel.d.ts +8 -0
- package/dist/v2/shadcn/_reference/ai/AIChatPanel.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/ai/AIChatSearchBar.d.ts +4 -0
- package/dist/v2/shadcn/_reference/ai/AIChatSearchBar.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/ai/ChatInteractiveBlock.d.ts +12 -0
- package/dist/v2/shadcn/_reference/ai/ChatInteractiveBlock.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/ai/ChatMessageContent.d.ts +11 -0
- package/dist/v2/shadcn/_reference/ai/ChatMessageContent.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/ai/parseInteractiveBlocks.d.ts +68 -0
- package/dist/v2/shadcn/_reference/ai/parseInteractiveBlocks.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/auth/AuthLayout.d.ts +11 -0
- package/dist/v2/shadcn/_reference/auth/AuthLayout.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/auth/CreatePasswordForm.d.ts +3 -0
- package/dist/v2/shadcn/_reference/auth/CreatePasswordForm.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/auth/CreatePasswordPanel.d.ts +3 -0
- package/dist/v2/shadcn/_reference/auth/CreatePasswordPanel.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/auth/LoginFooter.d.ts +3 -0
- package/dist/v2/shadcn/_reference/auth/LoginFooter.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/auth/LoginForm.d.ts +3 -0
- package/dist/v2/shadcn/_reference/auth/LoginForm.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/auth/LoginPanel.d.ts +3 -0
- package/dist/v2/shadcn/_reference/auth/LoginPanel.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/auth/ResetPasswordForm.d.ts +3 -0
- package/dist/v2/shadcn/_reference/auth/ResetPasswordForm.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/auth/ResetPasswordPanel.d.ts +3 -0
- package/dist/v2/shadcn/_reference/auth/ResetPasswordPanel.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/auth/VerifyEmailForm.d.ts +3 -0
- package/dist/v2/shadcn/_reference/auth/VerifyEmailForm.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/auth/VerifyEmailPanel.d.ts +3 -0
- package/dist/v2/shadcn/_reference/auth/VerifyEmailPanel.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/email/EmailAttachment.d.ts +14 -0
- package/dist/v2/shadcn/_reference/email/EmailAttachment.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/email/EmailAutomation.d.ts +12 -0
- package/dist/v2/shadcn/_reference/email/EmailAutomation.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/email/EmailPlaceholders.d.ts +11 -0
- package/dist/v2/shadcn/_reference/email/EmailPlaceholders.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/email/UnlayerEmailEditor.d.ts +9 -0
- package/dist/v2/shadcn/_reference/email/UnlayerEmailEditor.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/email/emailTemplateData.d.ts +14 -0
- package/dist/v2/shadcn/_reference/email/emailTemplateData.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/emptyStateIcons.d.ts +18 -0
- package/dist/v2/shadcn/_reference/emptyStateIcons.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/games/MazeGame.d.ts +4 -0
- package/dist/v2/shadcn/_reference/games/MazeGame.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/games/RunnerGame.d.ts +4 -0
- package/dist/v2/shadcn/_reference/games/RunnerGame.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/logos/BookedLogoFull.d.ts +6 -0
- package/dist/v2/shadcn/_reference/logos/BookedLogoFull.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/logos/BookedLogoMark.d.ts +7 -0
- package/dist/v2/shadcn/_reference/logos/BookedLogoMark.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/logos/BookedLogoNew.d.ts +6 -0
- package/dist/v2/shadcn/_reference/logos/BookedLogoNew.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/pricing/DynamicPricingRulesEditor.d.ts +31 -0
- package/dist/v2/shadcn/_reference/pricing/DynamicPricingRulesEditor.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/pricing/DynamicPricingTierCard.d.ts +24 -0
- package/dist/v2/shadcn/_reference/pricing/DynamicPricingTierCard.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/pricing/DynamicPricingTiersList.d.ts +4 -0
- package/dist/v2/shadcn/_reference/pricing/DynamicPricingTiersList.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/pricing/PricingCalendar.d.ts +4 -0
- package/dist/v2/shadcn/_reference/pricing/PricingCalendar.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/pricing/PricingPeriodCard.d.ts +35 -0
- package/dist/v2/shadcn/_reference/pricing/PricingPeriodCard.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/pricing/PricingPeriodForm.d.ts +19 -0
- package/dist/v2/shadcn/_reference/pricing/PricingPeriodForm.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/pricing/PricingPeriodsList.d.ts +4 -0
- package/dist/v2/shadcn/_reference/pricing/PricingPeriodsList.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/pricing/getRuleSummary.d.ts +4 -0
- package/dist/v2/shadcn/_reference/pricing/getRuleSummary.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/products/AvailabilityRulesSection.d.ts +24 -0
- package/dist/v2/shadcn/_reference/products/AvailabilityRulesSection.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/products/AvailabilitySection.d.ts +20 -0
- package/dist/v2/shadcn/_reference/products/AvailabilitySection.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/products/BookingTypeConfigOptions.d.ts +17 -0
- package/dist/v2/shadcn/_reference/products/BookingTypeConfigOptions.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/products/CapacityPeriodsSection.d.ts +18 -0
- package/dist/v2/shadcn/_reference/products/CapacityPeriodsSection.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/products/DynamicPricingTiersSection.d.ts +17 -0
- package/dist/v2/shadcn/_reference/products/DynamicPricingTiersSection.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/products/GiftCardOrdersTab.d.ts +7 -0
- package/dist/v2/shadcn/_reference/products/GiftCardOrdersTab.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/products/GiftCardSettings.d.ts +28 -0
- package/dist/v2/shadcn/_reference/products/GiftCardSettings.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/products/PackageProductsSection.d.ts +18 -0
- package/dist/v2/shadcn/_reference/products/PackageProductsSection.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/products/PricingSection.d.ts +13 -0
- package/dist/v2/shadcn/_reference/products/PricingSection.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/products/ProductTypeFields.d.ts +13 -0
- package/dist/v2/shadcn/_reference/products/ProductTypeFields.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/products/ProductTypeIcon.d.ts +9 -0
- package/dist/v2/shadcn/_reference/products/ProductTypeIcon.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/products/VariablePricingSection.d.ts +26 -0
- package/dist/v2/shadcn/_reference/products/VariablePricingSection.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/products/productTypeConfig.d.ts +28 -0
- package/dist/v2/shadcn/_reference/products/productTypeConfig.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/shared/BackButton.d.ts +13 -0
- package/dist/v2/shadcn/_reference/shared/BackButton.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/shared/CancelConfirmationDialog.d.ts +12 -0
- package/dist/v2/shadcn/_reference/shared/CancelConfirmationDialog.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/shared/ConfirmationDialog.d.ts +16 -0
- package/dist/v2/shadcn/_reference/shared/ConfirmationDialog.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/shared/DeleteConfirmationDialog.d.ts +12 -0
- package/dist/v2/shadcn/_reference/shared/DeleteConfirmationDialog.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/shared/DeleteEntityPage.d.ts +39 -0
- package/dist/v2/shadcn/_reference/shared/DeleteEntityPage.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/shared/SidebarIcons.d.ts +18 -0
- package/dist/v2/shadcn/_reference/shared/SidebarIcons.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/shared/UnifiedSidebar.d.ts +29 -0
- package/dist/v2/shadcn/_reference/shared/UnifiedSidebar.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/tables/BulkActionsBar.d.ts +17 -0
- package/dist/v2/shadcn/_reference/tables/BulkActionsBar.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/tables/DataTable.d.ts +7 -0
- package/dist/v2/shadcn/_reference/tables/DataTable.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/tables/TableControls.d.ts +8 -0
- package/dist/v2/shadcn/_reference/tables/TableControls.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/tables/index.d.ts +4 -0
- package/dist/v2/shadcn/_reference/tables/index.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/tables/types.d.ts +64 -0
- package/dist/v2/shadcn/_reference/tables/types.d.ts.map +1 -0
- package/dist/v2/shadcn/_reference/zones/LegacyZoneSettings.d.ts +24 -0
- package/dist/v2/shadcn/_reference/zones/LegacyZoneSettings.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/accordion.d.ts +8 -0
- package/dist/v2/shadcn/components/ui/accordion.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/alert-dialog.d.ts +21 -0
- package/dist/v2/shadcn/components/ui/alert-dialog.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/alert.d.ts +9 -0
- package/dist/v2/shadcn/components/ui/alert.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/aspect-ratio.d.ts +4 -0
- package/dist/v2/shadcn/components/ui/aspect-ratio.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/avatar.d.ts +7 -0
- package/dist/v2/shadcn/components/ui/avatar.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/badge.d.ts +10 -0
- package/dist/v2/shadcn/components/ui/badge.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/breadcrumb.d.ts +20 -0
- package/dist/v2/shadcn/components/ui/breadcrumb.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/button.d.ts +14 -0
- package/dist/v2/shadcn/components/ui/button.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/calendar.d.ts +9 -0
- package/dist/v2/shadcn/components/ui/calendar.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/card.d.ts +9 -0
- package/dist/v2/shadcn/components/ui/card.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/carousel.d.ts +19 -0
- package/dist/v2/shadcn/components/ui/carousel.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/checkbox.d.ts +6 -0
- package/dist/v2/shadcn/components/ui/checkbox.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/checkbox.js +115 -0
- package/dist/v2/shadcn/components/ui/checkbox.scss.js +6 -0
- package/dist/v2/shadcn/components/ui/collapsible.d.ts +6 -0
- package/dist/v2/shadcn/components/ui/collapsible.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/command.d.ts +83 -0
- package/dist/v2/shadcn/components/ui/command.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/context-menu.d.ts +28 -0
- package/dist/v2/shadcn/components/ui/context-menu.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/dialog.d.ts +20 -0
- package/dist/v2/shadcn/components/ui/dialog.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/dialog.js +169 -0
- package/dist/v2/shadcn/components/ui/drawer.d.ts +23 -0
- package/dist/v2/shadcn/components/ui/drawer.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/dropdown-menu.d.ts +28 -0
- package/dist/v2/shadcn/components/ui/dropdown-menu.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/form.d.ts +24 -0
- package/dist/v2/shadcn/components/ui/form.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/hover-card.d.ts +7 -0
- package/dist/v2/shadcn/components/ui/hover-card.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/input-otp.d.ts +35 -0
- package/dist/v2/shadcn/components/ui/input-otp.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/input.d.ts +6 -0
- package/dist/v2/shadcn/components/ui/input.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/label.d.ts +6 -0
- package/dist/v2/shadcn/components/ui/label.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/menubar.d.ts +34 -0
- package/dist/v2/shadcn/components/ui/menubar.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/navigation-menu.d.ts +13 -0
- package/dist/v2/shadcn/components/ui/navigation-menu.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/pagination.d.ts +29 -0
- package/dist/v2/shadcn/components/ui/pagination.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/popover.d.ts +7 -0
- package/dist/v2/shadcn/components/ui/popover.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/progress.d.ts +5 -0
- package/dist/v2/shadcn/components/ui/progress.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/radio-card.d.ts +12 -0
- package/dist/v2/shadcn/components/ui/radio-card.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/radio-group.d.ts +6 -0
- package/dist/v2/shadcn/components/ui/radio-group.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/scroll-area.d.ts +6 -0
- package/dist/v2/shadcn/components/ui/scroll-area.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/select.d.ts +14 -0
- package/dist/v2/shadcn/components/ui/select.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/separator.d.ts +5 -0
- package/dist/v2/shadcn/components/ui/separator.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/sheet.d.ts +26 -0
- package/dist/v2/shadcn/components/ui/sheet.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/sidebar.d.ts +67 -0
- package/dist/v2/shadcn/components/ui/sidebar.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/skeleton.d.ts +3 -0
- package/dist/v2/shadcn/components/ui/skeleton.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/slider.d.ts +5 -0
- package/dist/v2/shadcn/components/ui/slider.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/switch.d.ts +6 -0
- package/dist/v2/shadcn/components/ui/switch.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/switch.js +115 -0
- package/dist/v2/shadcn/components/ui/switch.scss.js +6 -0
- package/dist/v2/shadcn/components/ui/table-pagination.d.ts +11 -0
- package/dist/v2/shadcn/components/ui/table-pagination.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/table.d.ts +11 -0
- package/dist/v2/shadcn/components/ui/table.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/tabs.d.ts +8 -0
- package/dist/v2/shadcn/components/ui/tabs.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/textarea.d.ts +6 -0
- package/dist/v2/shadcn/components/ui/textarea.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/toast.d.ts +16 -0
- package/dist/v2/shadcn/components/ui/toast.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/toaster.d.ts +2 -0
- package/dist/v2/shadcn/components/ui/toaster.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/toggle-group.d.ts +13 -0
- package/dist/v2/shadcn/components/ui/toggle-group.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/toggle.d.ts +13 -0
- package/dist/v2/shadcn/components/ui/toggle.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/tooltip.d.ts +8 -0
- package/dist/v2/shadcn/components/ui/tooltip.d.ts.map +1 -0
- package/dist/v2/shadcn/components/ui/use-toast.d.ts +3 -0
- package/dist/v2/shadcn/components/ui/use-toast.d.ts.map +1 -0
- package/dist/v2/shadcn/hooks/use-mobile.d.ts +2 -0
- package/dist/v2/shadcn/hooks/use-mobile.d.ts.map +1 -0
- package/dist/v2/shadcn/hooks/use-toast.d.ts +45 -0
- package/dist/v2/shadcn/hooks/use-toast.d.ts.map +1 -0
- package/dist/v2/shadcn/index.d.ts +20 -0
- package/dist/v2/shadcn/index.d.ts.map +1 -0
- package/dist/v2/shadcn/lib/utils.d.ts +3 -0
- package/dist/v2/shadcn/lib/utils.d.ts.map +1 -0
- package/dist/v2/shadcn/lib/utils.js +11 -0
- package/dist/v2/shadcn/styles/globals.css +112 -0
- package/dist/v2/styles/components/Button.scss +21 -23
- package/dist/v2/styles/form/NewInput.scss +1 -1
- package/dist/v2/styles/form/NewInput.scss.js +1 -1
- package/dist/v2/styles/tokens/_colors.scss +20 -0
- package/dist/v2/styles/tokens/_sizes.scss +4 -4
- package/dist/v2/types/navigation.d.ts +1 -0
- package/dist/v2/types/navigation.d.ts.map +1 -1
- package/package.json +38 -3
- package/rollup.config.js +1 -0
- package/src/index.ts +4 -2
- package/src/v2/components/AccountManagerCard/AccountManagerCard.scss +75 -0
- package/src/v2/components/AccountManagerCard/AccountManagerCard.stories.tsx +35 -0
- package/src/v2/components/AccountManagerCard/AccountManagerCard.tsx +37 -0
- package/src/v2/components/AccountManagerCard/index.ts +2 -0
- package/src/v2/components/AvatarUpload/AvatarUpload.scss +31 -9
- package/src/v2/components/AvatarUpload/AvatarUpload.tsx +13 -7
- package/src/v2/components/Button/Button.tsx +1 -0
- package/src/v2/components/Button/GhostButton.scss +2 -2
- package/src/v2/components/DataTable/DataTable.scss +14 -20
- package/src/v2/components/DataTable/DataTable.tsx +35 -34
- package/src/v2/components/FeatureToggle/FeatureToggle.scss +64 -0
- package/src/v2/components/FeatureToggle/FeatureToggle.stories.tsx +56 -0
- package/src/v2/components/FeatureToggle/FeatureToggle.tsx +41 -0
- package/src/v2/components/FeatureToggle/index.ts +2 -0
- package/src/v2/components/InputCheckbox/InputCheckbox.scss +6 -6
- package/src/v2/components/Modal/DeleteModal.scss +46 -85
- package/src/v2/components/Modal/DeleteModal.tsx +39 -35
- package/src/v2/components/NPSScore/NPSScore.tsx +2 -2
- package/src/v2/components/NotificationBanner/NotificationBanner.scss +123 -0
- package/src/v2/components/NotificationBanner/NotificationBanner.stories.tsx +54 -0
- package/src/v2/components/NotificationBanner/NotificationBanner.tsx +45 -0
- package/src/v2/components/NotificationBanner/index.ts +2 -0
- package/src/v2/components/RadioCard/RadioCard.stories.tsx +8 -8
- package/src/v2/components/RadioCard/{RadioCard.scss → RadioCardGroup.scss} +31 -6
- package/src/v2/components/RadioCard/{RadioCard.tsx → RadioCardGroup.tsx} +12 -4
- package/src/v2/components/RadioCard/index.ts +1 -1
- package/src/v2/components/Select/Select.tsx +15 -1
- package/src/v2/components/Select/index.ts +1 -1
- package/src/v2/components/StatusBadge/StatusBadge.tsx +11 -2
- package/src/v2/components/Tabs/Tabs.scss +41 -14
- package/src/v2/components/Tabs/Tabs.tsx +2 -1
- package/src/v2/components/Toggle/Toggle.scss +2 -0
- package/src/v2/components/Toggle/Toggle.tsx +20 -0
- package/src/v2/components/Toggle/index.ts +2 -0
- package/src/v2/components/Tooltip/Tooltip.tsx +0 -1
- package/src/v2/components/index.ts +26 -1
- package/src/v2/dashboard-analytics/blog-posts/index.ts +1 -1
- package/src/v2/dashboard-analytics/chart/Chart.tsx +20 -17
- package/src/v2/dashboard-analytics/venue-card/VenueCard.tsx +2 -2
- package/src/v2/icons/index.tsx +175 -9
- package/src/v2/index.ts +88 -7
- package/src/v2/navigation/DashboardLayout/AdminSidebar.scss +46 -8
- package/src/v2/navigation/DashboardLayout/AdminSidebar.tsx +35 -21
- package/src/v2/navigation/DashboardLayout/DashboardLayout.scss +3 -2
- package/src/v2/navigation/DashboardLayout/DashboardLayout.tsx +23 -5
- package/src/v2/navigation/DashboardLayout/ProviderSidebar.tsx +6 -7
- package/src/v2/navigation/DashboardLayout/TopNavigation.scss +16 -1
- package/src/v2/navigation/DashboardLayout/TopNavigation.tsx +20 -41
- package/src/v2/navigation/FigmasAdminSideBar/FigmasAdminSideBar.tsx +1 -1
- package/src/v2/navigation/FigmasSideBar/FigmasSideBar.tsx +1 -2
- package/src/v2/navigation/FigmasTopHat/FigmasTopHat.tsx +6 -6
- package/src/v2/navigation/Navigation/Navigation.scss +1 -1
- package/src/v2/navigation/Navigation/Navigation.tsx +0 -1
- package/src/v2/navigation/Navigation/index.ts +0 -1
- package/src/v2/navigation/SideBarToggleLarge/SideBarToggleLarge.tsx +1 -1
- package/src/v2/navigation/TopHatControlDisc/TopHatControlDisc.tsx +1 -1
- package/src/v2/navigation/config.tsx +0 -1
- package/src/v2/shadcn/_reference/AccountManagerCard.tsx +45 -0
- package/src/v2/shadcn/_reference/AffiliatesTable.tsx +178 -0
- package/src/v2/shadcn/_reference/AuditArchive.tsx +165 -0
- package/src/v2/shadcn/_reference/AuditContent.tsx +270 -0
- package/src/v2/shadcn/_reference/AutomationsGeneralSettings.tsx +251 -0
- package/src/v2/shadcn/_reference/AvatarUpload.tsx +150 -0
- package/src/v2/shadcn/_reference/BookingsSummaryCard.tsx +268 -0
- package/src/v2/shadcn/_reference/CodeCleanUpAudit.tsx +274 -0
- package/src/v2/shadcn/_reference/CompaniesTable.tsx +387 -0
- package/src/v2/shadcn/_reference/ComponentAudit.tsx +239 -0
- package/src/v2/shadcn/_reference/ConfigureSettingsCard.tsx +95 -0
- package/src/v2/shadcn/_reference/CustomerCard.tsx +155 -0
- package/src/v2/shadcn/_reference/DashboardCards.tsx +50 -0
- package/src/v2/shadcn/_reference/DashboardFooter.tsx +18 -0
- package/src/v2/shadcn/_reference/DiarySettings.tsx +187 -0
- package/src/v2/shadcn/_reference/DiaryView.tsx +998 -0
- package/src/v2/shadcn/_reference/EmptyState.tsx +76 -0
- package/src/v2/shadcn/_reference/EntityInfoCard.tsx +48 -0
- package/src/v2/shadcn/_reference/ExistingUserAssignments.tsx +131 -0
- package/src/v2/shadcn/_reference/FeatureToggle.tsx +72 -0
- package/src/v2/shadcn/_reference/FlowCard.tsx +170 -0
- package/src/v2/shadcn/_reference/FlowsContent.tsx +688 -0
- package/src/v2/shadcn/_reference/FlowsGeneralSettings.tsx +27 -0
- package/src/v2/shadcn/_reference/GeneralSettings.tsx +33 -0
- package/src/v2/shadcn/_reference/InventoryGeneralSettings.tsx +82 -0
- package/src/v2/shadcn/_reference/LanguageSelector.tsx +97 -0
- package/src/v2/shadcn/_reference/LoadingScreen.tsx +25 -0
- package/src/v2/shadcn/_reference/LoadingSpinner.tsx +41 -0
- package/src/v2/shadcn/_reference/ManagedClientsList.tsx +121 -0
- package/src/v2/shadcn/_reference/NPSScore.tsx +379 -0
- package/src/v2/shadcn/_reference/NPSSummaryCard.tsx +181 -0
- package/src/v2/shadcn/_reference/NotificationBanner.tsx +129 -0
- package/src/v2/shadcn/_reference/NotificationPanel.tsx +208 -0
- package/src/v2/shadcn/_reference/OnlineUsersCard.tsx +73 -0
- package/src/v2/shadcn/_reference/ProtectedRoute.tsx +39 -0
- package/src/v2/shadcn/_reference/ProvidersTable.tsx +353 -0
- package/src/v2/shadcn/_reference/QuickAddPanel.tsx +1057 -0
- package/src/v2/shadcn/_reference/QuickFilters.tsx +112 -0
- package/src/v2/shadcn/_reference/ScheduleView.tsx +410 -0
- package/src/v2/shadcn/_reference/ScrollToTop.tsx +14 -0
- package/src/v2/shadcn/_reference/SecondaryNav.tsx +50 -0
- package/src/v2/shadcn/_reference/SecuritySettings.tsx +258 -0
- package/src/v2/shadcn/_reference/SessionDetailView.tsx +294 -0
- package/src/v2/shadcn/_reference/Sidebar.tsx +14 -0
- package/src/v2/shadcn/_reference/SidebarAwareLayout.tsx +30 -0
- package/src/v2/shadcn/_reference/SidebarLabelCustomization.tsx +285 -0
- package/src/v2/shadcn/_reference/SimulationBanner.tsx +57 -0
- package/src/v2/shadcn/_reference/SortControls.tsx +65 -0
- package/src/v2/shadcn/_reference/StatusBadge.tsx +49 -0
- package/src/v2/shadcn/_reference/StyleGuideContent.tsx +331 -0
- package/src/v2/shadcn/_reference/TableActionMenu.tsx +126 -0
- package/src/v2/shadcn/_reference/ThemeProvider.tsx +119 -0
- package/src/v2/shadcn/_reference/ThemeSettings.tsx +73 -0
- package/src/v2/shadcn/_reference/TopNavigation.tsx +332 -0
- package/src/v2/shadcn/_reference/UserActivityHistory.tsx +209 -0
- package/src/v2/shadcn/_reference/UserLanguageSettings.tsx +94 -0
- package/src/v2/shadcn/_reference/UserPanel.tsx +472 -0
- package/src/v2/shadcn/_reference/UsersTable.tsx +1023 -0
- package/src/v2/shadcn/_reference/WaiverForm.tsx +301 -0
- package/src/v2/shadcn/_reference/WaiversGeneralSettings.tsx +46 -0
- package/src/v2/shadcn/_reference/WaiversTable.tsx +290 -0
- package/src/v2/shadcn/_reference/WaiversTemplatesSettings.tsx +416 -0
- package/src/v2/shadcn/_reference/ai/AIChatPanel.tsx +313 -0
- package/src/v2/shadcn/_reference/ai/AIChatSearchBar.tsx +36 -0
- package/src/v2/shadcn/_reference/ai/ChatInteractiveBlock.tsx +298 -0
- package/src/v2/shadcn/_reference/ai/ChatMessageContent.tsx +40 -0
- package/src/v2/shadcn/_reference/ai/parseInteractiveBlocks.ts +142 -0
- package/src/v2/shadcn/_reference/auth/AuthLayout.tsx +55 -0
- package/src/v2/shadcn/_reference/auth/CreatePasswordForm.tsx +285 -0
- package/src/v2/shadcn/_reference/auth/CreatePasswordPanel.tsx +18 -0
- package/src/v2/shadcn/_reference/auth/LoginFooter.tsx +14 -0
- package/src/v2/shadcn/_reference/auth/LoginForm.tsx +201 -0
- package/src/v2/shadcn/_reference/auth/LoginPanel.tsx +39 -0
- package/src/v2/shadcn/_reference/auth/ResetPasswordForm.tsx +100 -0
- package/src/v2/shadcn/_reference/auth/ResetPasswordPanel.tsx +18 -0
- package/src/v2/shadcn/_reference/auth/VerifyEmailForm.tsx +93 -0
- package/src/v2/shadcn/_reference/auth/VerifyEmailPanel.tsx +18 -0
- package/src/v2/shadcn/_reference/email/EmailAttachment.tsx +117 -0
- package/src/v2/shadcn/_reference/email/EmailAutomation.tsx +92 -0
- package/src/v2/shadcn/_reference/email/EmailPlaceholders.tsx +64 -0
- package/src/v2/shadcn/_reference/email/UnlayerEmailEditor.tsx +41 -0
- package/src/v2/shadcn/_reference/email/emailTemplateData.ts +53 -0
- package/src/v2/shadcn/_reference/emptyStateIcons.tsx +103 -0
- package/src/v2/shadcn/_reference/games/MazeGame.tsx +394 -0
- package/src/v2/shadcn/_reference/games/RunnerGame.tsx +497 -0
- package/src/v2/shadcn/_reference/logos/BookedLogoFull.tsx +36 -0
- package/src/v2/shadcn/_reference/logos/BookedLogoMark.tsx +31 -0
- package/src/v2/shadcn/_reference/logos/BookedLogoNew.tsx +36 -0
- package/src/v2/shadcn/_reference/pricing/DynamicPricingRulesEditor.tsx +401 -0
- package/src/v2/shadcn/_reference/pricing/DynamicPricingTierCard.tsx +77 -0
- package/src/v2/shadcn/_reference/pricing/DynamicPricingTiersList.tsx +218 -0
- package/src/v2/shadcn/_reference/pricing/PricingCalendar.tsx +810 -0
- package/src/v2/shadcn/_reference/pricing/PricingPeriodCard.tsx +152 -0
- package/src/v2/shadcn/_reference/pricing/PricingPeriodForm.tsx +377 -0
- package/src/v2/shadcn/_reference/pricing/PricingPeriodsList.tsx +213 -0
- package/src/v2/shadcn/_reference/pricing/getRuleSummary.ts +39 -0
- package/src/v2/shadcn/_reference/products/AvailabilityRulesSection.tsx +184 -0
- package/src/v2/shadcn/_reference/products/AvailabilitySection.tsx +677 -0
- package/src/v2/shadcn/_reference/products/BookingTypeConfigOptions.tsx +40 -0
- package/src/v2/shadcn/_reference/products/CapacityPeriodsSection.tsx +238 -0
- package/src/v2/shadcn/_reference/products/DynamicPricingTiersSection.tsx +131 -0
- package/src/v2/shadcn/_reference/products/GiftCardOrdersTab.tsx +192 -0
- package/src/v2/shadcn/_reference/products/GiftCardSettings.tsx +342 -0
- package/src/v2/shadcn/_reference/products/PackageProductsSection.tsx +322 -0
- package/src/v2/shadcn/_reference/products/PricingSection.tsx +173 -0
- package/src/v2/shadcn/_reference/products/ProductTypeFields.tsx +353 -0
- package/src/v2/shadcn/_reference/products/ProductTypeIcon.tsx +95 -0
- package/src/v2/shadcn/_reference/products/VariablePricingSection.tsx +140 -0
- package/src/v2/shadcn/_reference/products/productTypeConfig.ts +182 -0
- package/src/v2/shadcn/_reference/shared/BackButton.tsx +50 -0
- package/src/v2/shadcn/_reference/shared/CancelConfirmationDialog.tsx +18 -0
- package/src/v2/shadcn/_reference/shared/ConfirmationDialog.tsx +134 -0
- package/src/v2/shadcn/_reference/shared/DeleteConfirmationDialog.tsx +18 -0
- package/src/v2/shadcn/_reference/shared/DeleteEntityPage.tsx +221 -0
- package/src/v2/shadcn/_reference/shared/SidebarIcons.tsx +108 -0
- package/src/v2/shadcn/_reference/shared/UnifiedSidebar.tsx +722 -0
- package/src/v2/shadcn/_reference/tables/BulkActionsBar.tsx +68 -0
- package/src/v2/shadcn/_reference/tables/DataTable.tsx +221 -0
- package/src/v2/shadcn/_reference/tables/TableControls.tsx +94 -0
- package/src/v2/shadcn/_reference/tables/index.ts +3 -0
- package/src/v2/shadcn/_reference/tables/types.ts +79 -0
- package/src/v2/shadcn/_reference/zones/LegacyZoneSettings.tsx +299 -0
- package/src/v2/shadcn/components/ui/accordion.stories.tsx +63 -0
- package/src/v2/shadcn/components/ui/accordion.tsx +52 -0
- package/src/v2/shadcn/components/ui/alert-dialog.stories.tsx +44 -0
- package/src/v2/shadcn/components/ui/alert-dialog.tsx +104 -0
- package/src/v2/shadcn/components/ui/alert.stories.tsx +44 -0
- package/src/v2/shadcn/components/ui/alert.tsx +43 -0
- package/src/v2/shadcn/components/ui/aspect-ratio.stories.tsx +46 -0
- package/src/v2/shadcn/components/ui/aspect-ratio.tsx +5 -0
- package/src/v2/shadcn/components/ui/avatar.stories.tsx +39 -0
- package/src/v2/shadcn/components/ui/avatar.tsx +38 -0
- package/src/v2/shadcn/components/ui/badge.stories.tsx +17 -0
- package/src/v2/shadcn/components/ui/badge.tsx +30 -0
- package/src/v2/shadcn/components/ui/breadcrumb.stories.tsx +91 -0
- package/src/v2/shadcn/components/ui/breadcrumb.tsx +90 -0
- package/src/v2/shadcn/components/ui/button.stories.tsx +20 -0
- package/src/v2/shadcn/components/ui/button.tsx +60 -0
- package/src/v2/shadcn/components/ui/calendar.stories.tsx +61 -0
- package/src/v2/shadcn/components/ui/calendar.tsx +54 -0
- package/src/v2/shadcn/components/ui/card.stories.tsx +37 -0
- package/src/v2/shadcn/components/ui/card.tsx +43 -0
- package/src/v2/shadcn/components/ui/carousel.stories.tsx +92 -0
- package/src/v2/shadcn/components/ui/carousel.tsx +224 -0
- package/src/v2/shadcn/components/ui/checkbox.scss +38 -0
- package/src/v2/shadcn/components/ui/checkbox.stories.tsx +23 -0
- package/src/v2/shadcn/components/ui/checkbox.tsx +24 -0
- package/src/v2/shadcn/components/ui/collapsible.stories.tsx +59 -0
- package/src/v2/shadcn/components/ui/collapsible.tsx +9 -0
- package/src/v2/shadcn/components/ui/command.stories.tsx +70 -0
- package/src/v2/shadcn/components/ui/command.tsx +132 -0
- package/src/v2/shadcn/components/ui/context-menu.stories.tsx +72 -0
- package/src/v2/shadcn/components/ui/context-menu.tsx +178 -0
- package/src/v2/shadcn/components/ui/dialog.stories.tsx +67 -0
- package/src/v2/shadcn/components/ui/dialog.tsx +95 -0
- package/src/v2/shadcn/components/ui/drawer.stories.tsx +50 -0
- package/src/v2/shadcn/components/ui/drawer.tsx +87 -0
- package/src/v2/shadcn/components/ui/dropdown-menu.stories.tsx +73 -0
- package/src/v2/shadcn/components/ui/dropdown-menu.tsx +179 -0
- package/src/v2/shadcn/components/ui/form.stories.tsx +105 -0
- package/src/v2/shadcn/components/ui/form.tsx +129 -0
- package/src/v2/shadcn/components/ui/hover-card.stories.tsx +35 -0
- package/src/v2/shadcn/components/ui/hover-card.tsx +27 -0
- package/src/v2/shadcn/components/ui/input-otp.stories.tsx +72 -0
- package/src/v2/shadcn/components/ui/input-otp.tsx +61 -0
- package/src/v2/shadcn/components/ui/input.stories.tsx +16 -0
- package/src/v2/shadcn/components/ui/input.tsx +25 -0
- package/src/v2/shadcn/components/ui/label.stories.tsx +13 -0
- package/src/v2/shadcn/components/ui/label.tsx +17 -0
- package/src/v2/shadcn/components/ui/menubar.stories.tsx +86 -0
- package/src/v2/shadcn/components/ui/menubar.tsx +207 -0
- package/src/v2/shadcn/components/ui/navigation-menu.stories.tsx +68 -0
- package/src/v2/shadcn/components/ui/navigation-menu.tsx +120 -0
- package/src/v2/shadcn/components/ui/pagination.stories.tsx +78 -0
- package/src/v2/shadcn/components/ui/pagination.tsx +81 -0
- package/src/v2/shadcn/components/ui/popover.stories.tsx +44 -0
- package/src/v2/shadcn/components/ui/popover.tsx +29 -0
- package/src/v2/shadcn/components/ui/progress.stories.tsx +17 -0
- package/src/v2/shadcn/components/ui/progress.tsx +23 -0
- package/src/v2/shadcn/components/ui/radio-card.stories.tsx +68 -0
- package/src/v2/shadcn/components/ui/radio-card.tsx +52 -0
- package/src/v2/shadcn/components/ui/radio-group.stories.tsx +77 -0
- package/src/v2/shadcn/components/ui/radio-group.tsx +35 -0
- package/src/v2/shadcn/components/ui/scroll-area.stories.tsx +56 -0
- package/src/v2/shadcn/components/ui/scroll-area.tsx +38 -0
- package/src/v2/shadcn/components/ui/select.stories.tsx +60 -0
- package/src/v2/shadcn/components/ui/select.tsx +148 -0
- package/src/v2/shadcn/components/ui/separator.stories.tsx +30 -0
- package/src/v2/shadcn/components/ui/separator.tsx +20 -0
- package/src/v2/shadcn/components/ui/sheet.stories.tsx +115 -0
- package/src/v2/shadcn/components/ui/sheet.tsx +107 -0
- package/src/v2/shadcn/components/ui/sidebar.stories.tsx +167 -0
- package/src/v2/shadcn/components/ui/sidebar.tsx +637 -0
- package/src/v2/shadcn/components/ui/skeleton.stories.tsx +36 -0
- package/src/v2/shadcn/components/ui/skeleton.tsx +7 -0
- package/src/v2/shadcn/components/ui/slider.stories.tsx +16 -0
- package/src/v2/shadcn/components/ui/slider.tsx +23 -0
- package/src/v2/shadcn/components/ui/switch.scss +63 -0
- package/src/v2/shadcn/components/ui/switch.stories.tsx +23 -0
- package/src/v2/shadcn/components/ui/switch.tsx +24 -0
- package/src/v2/shadcn/components/ui/table-pagination.stories.tsx +81 -0
- package/src/v2/shadcn/components/ui/table-pagination.tsx +61 -0
- package/src/v2/shadcn/components/ui/table.stories.tsx +40 -0
- package/src/v2/shadcn/components/ui/table.tsx +72 -0
- package/src/v2/shadcn/components/ui/tabs.stories.tsx +85 -0
- package/src/v2/shadcn/components/ui/tabs.tsx +53 -0
- package/src/v2/shadcn/components/ui/textarea.stories.tsx +15 -0
- package/src/v2/shadcn/components/ui/textarea.tsx +21 -0
- package/src/v2/shadcn/components/ui/toast.stories.tsx +77 -0
- package/src/v2/shadcn/components/ui/toast.tsx +111 -0
- package/src/v2/shadcn/components/ui/toaster.stories.tsx +46 -0
- package/src/v2/shadcn/components/ui/toaster.tsx +24 -0
- package/src/v2/shadcn/components/ui/toggle-group.stories.tsx +95 -0
- package/src/v2/shadcn/components/ui/toggle-group.tsx +49 -0
- package/src/v2/shadcn/components/ui/toggle.stories.tsx +18 -0
- package/src/v2/shadcn/components/ui/toggle.tsx +37 -0
- package/src/v2/shadcn/components/ui/tooltip.stories.tsx +57 -0
- package/src/v2/shadcn/components/ui/tooltip.tsx +28 -0
- package/src/v2/shadcn/components/ui/use-toast.ts +3 -0
- package/src/v2/shadcn/hooks/use-mobile.tsx +19 -0
- package/src/v2/shadcn/hooks/use-toast.ts +184 -0
- package/src/v2/shadcn/index.ts +76 -0
- package/src/v2/shadcn/lib/utils.ts +6 -0
- package/src/v2/shadcn/styles/globals.css +112 -0
- package/src/v2/styles/components/Button.scss +21 -23
- package/src/v2/styles/form/NewInput.scss +1 -1
- package/src/v2/styles/tokens/_colors.scss +20 -0
- package/src/v2/styles/tokens/_sizes.scss +4 -4
- package/src/v2/types/navigation.ts +1 -0
- package/tailwind.config.js +46 -4
- package/dist/v2/components/RadioCard/RadioCard.d.ts.map +0 -1
- package/src/v2/navigation/Navigation/Navigation.stories.tsx +0 -137
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { IconCopy, IconTick } from '../../../icons';
|
|
3
|
+
import { Tooltip, TooltipContent, TooltipTrigger } from '../ui/tooltip';
|
|
4
|
+
|
|
5
|
+
interface Placeholder {
|
|
6
|
+
key: string;
|
|
7
|
+
description: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
interface EmailPlaceholdersProps {
|
|
11
|
+
placeholders: Placeholder[];
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const EmailPlaceholders: React.FC<EmailPlaceholdersProps> = ({ placeholders }) => {
|
|
15
|
+
const [copiedKey, setCopiedKey] = useState<string | null>(null);
|
|
16
|
+
|
|
17
|
+
const handleCopy = async (key: string) => {
|
|
18
|
+
await navigator.clipboard.writeText(key);
|
|
19
|
+
setCopiedKey(key);
|
|
20
|
+
setTimeout(() => setCopiedKey(null), 2000);
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
return (
|
|
24
|
+
<div className="flex flex-col gap-3">
|
|
25
|
+
<h2 className="text-label-primary text-lg font-semibold">Email Placeholders</h2>
|
|
26
|
+
<div className="grid grid-cols-1 sm:grid-cols-2 gap-x-6">
|
|
27
|
+
{placeholders.map((p) => (
|
|
28
|
+
<div
|
|
29
|
+
key={p.key}
|
|
30
|
+
className="flex items-center justify-between gap-3 px-1 py-3 border-b border-border-primary"
|
|
31
|
+
>
|
|
32
|
+
<div className="flex flex-col gap-1 min-w-0">
|
|
33
|
+
<code className="text-label-primary text-xs font-mono bg-surface-action-soft px-2 py-1 rounded-md self-start">
|
|
34
|
+
{p.key}
|
|
35
|
+
</code>
|
|
36
|
+
<span className="text-label-secondary text-xs">{p.description}</span>
|
|
37
|
+
</div>
|
|
38
|
+
<Tooltip open={copiedKey === p.key ? true : undefined}>
|
|
39
|
+
<TooltipTrigger asChild>
|
|
40
|
+
<button
|
|
41
|
+
type="button"
|
|
42
|
+
onClick={() => handleCopy(p.key)}
|
|
43
|
+
className="flex-shrink-0 w-8 h-8 flex items-center justify-center rounded-full transition-colors hover:bg-surface-action-soft"
|
|
44
|
+
title="Copy placeholder"
|
|
45
|
+
>
|
|
46
|
+
{copiedKey === p.key ? (
|
|
47
|
+
<IconTick size={18} className="fill-fill-success" />
|
|
48
|
+
) : (
|
|
49
|
+
<IconCopy size={18} className="fill-fill-secondary" />
|
|
50
|
+
)}
|
|
51
|
+
</button>
|
|
52
|
+
</TooltipTrigger>
|
|
53
|
+
<TooltipContent>
|
|
54
|
+
{copiedKey === p.key ? 'Copied!' : 'Copy'}
|
|
55
|
+
</TooltipContent>
|
|
56
|
+
</Tooltip>
|
|
57
|
+
</div>
|
|
58
|
+
))}
|
|
59
|
+
</div>
|
|
60
|
+
</div>
|
|
61
|
+
);
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
export default EmailPlaceholders;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import React, { useRef, useCallback } from 'react';
|
|
2
|
+
import EmailEditor, { EditorRef, EmailEditorProps } from 'react-email-editor';
|
|
3
|
+
|
|
4
|
+
interface UnlayerEmailEditorProps {
|
|
5
|
+
onReady?: () => void;
|
|
6
|
+
editorRef?: React.MutableRefObject<EditorRef | null>;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
const UnlayerEmailEditor: React.FC<UnlayerEmailEditorProps> = ({ onReady, editorRef }) => {
|
|
10
|
+
const internalRef = useRef<EditorRef>(null);
|
|
11
|
+
const ref = editorRef || internalRef;
|
|
12
|
+
|
|
13
|
+
const handleReady: EmailEditorProps['onReady'] = useCallback((unlayer) => {
|
|
14
|
+
onReady?.();
|
|
15
|
+
}, [onReady]);
|
|
16
|
+
|
|
17
|
+
return (
|
|
18
|
+
<div className="flex flex-col gap-2">
|
|
19
|
+
<h2 className="text-label-primary text-lg font-semibold">Email Content</h2>
|
|
20
|
+
<div className="border border-border-primary rounded-lg overflow-hidden" style={{ minHeight: 500 }}>
|
|
21
|
+
<EmailEditor
|
|
22
|
+
ref={ref}
|
|
23
|
+
onReady={handleReady}
|
|
24
|
+
minHeight={500}
|
|
25
|
+
options={{
|
|
26
|
+
features: {
|
|
27
|
+
textEditor: {
|
|
28
|
+
spellChecker: true,
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
appearance: {
|
|
32
|
+
theme: 'modern_light',
|
|
33
|
+
},
|
|
34
|
+
}}
|
|
35
|
+
/>
|
|
36
|
+
</div>
|
|
37
|
+
</div>
|
|
38
|
+
);
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
export default UnlayerEmailEditor;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export const templateCategories = [
|
|
2
|
+
{
|
|
3
|
+
group: 'Booking Templates',
|
|
4
|
+
options: [
|
|
5
|
+
{ value: 'booking-confirmation', title: 'Confirmation', subtitle: 'Sent after the guest has completed a booking.' },
|
|
6
|
+
{ value: 'booking-reminder', title: 'Reminder', subtitle: 'Sent ahead of the visit to remind guests of their booking.' },
|
|
7
|
+
{ value: 'booking-followup', title: 'Follow Up', subtitle: 'Sent after the booking to encourage reviews and repeat bookings.' },
|
|
8
|
+
],
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
group: 'Deposit Templates',
|
|
12
|
+
options: [
|
|
13
|
+
{ value: 'deposit-confirmation', title: 'Confirmation', subtitle: 'Sent if someone pays a deposit as part of their booking.' },
|
|
14
|
+
{ value: 'deposit-payment-link', title: 'Payment link', subtitle: "Sent to guest's when they have an outstanding payment for their booking." },
|
|
15
|
+
],
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
group: 'Waiver Templates',
|
|
19
|
+
options: [
|
|
20
|
+
{ value: 'waiver-confirmation', title: 'Confirmation', subtitle: 'Sent to guests when they have completed their waiver.' },
|
|
21
|
+
{ value: 'waiver-request', title: 'Request', subtitle: 'Sent to guests to request they complete their waiver.' },
|
|
22
|
+
{ value: 'waiver-reminder', title: 'Reminder', subtitle: 'Sent to remind guests to complete their waiver.' },
|
|
23
|
+
{ value: 'waiver-expired', title: 'Expired', subtitle: 'Sent to guests when their waiver has expired.' },
|
|
24
|
+
],
|
|
25
|
+
},
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
export const emailPlaceholders = [
|
|
29
|
+
{ key: '[order.id]', description: 'The Order ID from the booking confirmation.' },
|
|
30
|
+
{ key: '[user.email]', description: 'The customer email address.' },
|
|
31
|
+
{ key: '[order.amount]', description: 'Orders total amount.' },
|
|
32
|
+
{ key: '[payment.link]', description: 'Link for outstanding payment.' },
|
|
33
|
+
{ key: '[event.name]', description: 'The event or activity name.' },
|
|
34
|
+
{ key: '[deposit.details]', description: 'Deposit payment details.' },
|
|
35
|
+
{ key: '[event.description]', description: 'The event description.' },
|
|
36
|
+
{ key: '[deposit.paid]', description: 'Amount of deposit paid.' },
|
|
37
|
+
{ key: '[event.start_date]', description: 'The event start date.' },
|
|
38
|
+
{ key: '[remaining.amount]', description: 'Remaining balance amount.' },
|
|
39
|
+
{ key: '[venue.name]', description: 'The venue name.' },
|
|
40
|
+
{ key: '[payment.due_date]', description: 'Payment due date.' },
|
|
41
|
+
{ key: '[user.first_name]', description: 'Customer first name.' },
|
|
42
|
+
{ key: '[user.last_name]', description: 'Customer last name.' },
|
|
43
|
+
{ key: '[waiver.link]', description: 'Link to complete waiver.' },
|
|
44
|
+
{ key: '[provider.name]', description: 'The provider/venue name.' },
|
|
45
|
+
];
|
|
46
|
+
|
|
47
|
+
export const getTemplateTypeLabel = (type: string): string => {
|
|
48
|
+
for (const cat of templateCategories) {
|
|
49
|
+
const found = cat.options.find(o => o.value === type);
|
|
50
|
+
if (found) return `${cat.group.replace(' Templates', '')} - ${found.title}`;
|
|
51
|
+
}
|
|
52
|
+
return type;
|
|
53
|
+
};
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
export const AnalyticsIcon = () => (
|
|
4
|
+
<svg width="48" height="48" viewBox="0 0 24 24" fill="none" className="mb-4">
|
|
5
|
+
<path d="M6.75 5.25V17.25H18.75V18.75H5.25V5.25H6.75ZM18.2197 7.71967L19.2803 8.78033L15 13.0606L12.75 10.8112L9.53033 14.0303L8.46967 12.9697L12.75 8.68934L15 10.9388L18.2197 7.71967Z" fill="var(--fill-secondary)" />
|
|
6
|
+
</svg>
|
|
7
|
+
);
|
|
8
|
+
|
|
9
|
+
export const BookingTypesIcon = () => (
|
|
10
|
+
<svg width="48" height="48" viewBox="0 0 24 24" fill="none" className="mb-4">
|
|
11
|
+
<path d="M10.9 2.1l9.899 1.415 1.414 9.9-9.192 9.192a1 1 0 0 1-1.414 0l-9.9-9.9a1 1 0 0 1 0-1.414L10.9 2.1zm.707 2.122L3.828 12l8.486 8.485 7.778-7.778-1.06-7.425-7.425-1.06zm2.12 6.364a2 2 0 1 1 2.83-2.829 2 2 0 0 1-2.83 2.829z" fill="var(--fill-secondary)" />
|
|
12
|
+
</svg>
|
|
13
|
+
);
|
|
14
|
+
|
|
15
|
+
export const ReportsIcon = () => (
|
|
16
|
+
<svg width="48" height="48" viewBox="0 0 24 24" fill="none" className="mb-4">
|
|
17
|
+
<path d="M11.25 8.25H12.75V15.75H11.25V8.25ZM14.25 11.25H15.75V15.75H14.25V11.25ZM8.25 12.75H9.75V15.75H8.25V12.75ZM14.25 6H6.75V18H17.25V9H14.25V6ZM5.25 5.24385C5.25 4.83304 5.58562 4.5 5.99888 4.5H15L18.7498 8.25L18.75 18.7444C18.75 19.1617 18.4163 19.5 18.0049 19.5H5.99505C5.58357 19.5 5.25 19.1585 5.25 18.7561V5.24385Z" fill="var(--fill-secondary)" />
|
|
18
|
+
</svg>
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
export const DatesEventsIcon = () => (
|
|
22
|
+
<svg width="48" height="48" viewBox="0 0 24 24" fill="none" className="mb-4">
|
|
23
|
+
<path d="M9.75 4.5V6H14.25V4.5H15.75V6H18.75C19.1642 6 19.5 6.33579 19.5 6.75V18.75C19.5 19.1642 19.1642 19.5 18.75 19.5H5.25C4.83579 19.5 4.5 19.1642 4.5 18.75V6.75C4.5 6.33579 4.83579 6 5.25 6H8.25V4.5H9.75ZM18 12H6V18H18V12ZM11.25 13.5V16.5H7.5V13.5H11.25ZM8.25 7.5H6V10.5H18V7.5H15.75V9H14.25V7.5H9.75V9H8.25V7.5Z" fill="var(--fill-secondary)" />
|
|
24
|
+
</svg>
|
|
25
|
+
);
|
|
26
|
+
|
|
27
|
+
export const LoyaltyIcon = () => (
|
|
28
|
+
<svg width="48" height="48" viewBox="0 0 24 24" fill="none" className="mb-4">
|
|
29
|
+
<path d="M12.0005 16.695L6.71036 19.6562L7.89186 13.7099L3.44092 9.59385L9.4612 8.88004L12.0005 3.375L14.5396 8.88004L20.5599 9.59385L16.109 13.7099L17.2905 19.6562L12.0005 16.695ZM12.0005 14.976L15.1855 16.7588L14.4741 13.1788L17.1539 10.7006L13.5292 10.2708L12.0005 6.95626L10.4716 10.2708L6.84691 10.7006L9.52673 13.1788L8.81537 16.7588L12.0005 14.976Z" fill="var(--fill-secondary)" />
|
|
30
|
+
</svg>
|
|
31
|
+
);
|
|
32
|
+
|
|
33
|
+
export const CustomersIcon = () => (
|
|
34
|
+
<svg width="48" height="48" viewBox="0 0 24 24" fill="none" className="mb-4">
|
|
35
|
+
<path d="M4.5 19.5C4.5 16.1863 7.18629 13.5 10.5 13.5C13.8137 13.5 16.5 16.1863 16.5 19.5H15C15 17.0147 12.9853 15 10.5 15C8.01472 15 6 17.0147 6 19.5H4.5ZM10.5 12.75C8.01375 12.75 6 10.7362 6 8.25C6 5.76375 8.01375 3.75 10.5 3.75C12.9862 3.75 15 5.76375 15 8.25C15 10.7362 12.9862 12.75 10.5 12.75ZM10.5 11.25C12.1575 11.25 13.5 9.9075 13.5 8.25C13.5 6.5925 12.1575 5.25 10.5 5.25C8.8425 5.25 7.5 6.5925 7.5 8.25C7.5 9.9075 8.8425 11.25 10.5 11.25ZM16.7128 14.0271C18.7983 14.9671 20.25 17.064 20.25 19.5H18.75C18.75 17.673 17.6612 16.1003 16.0971 15.3953L16.7128 14.0271ZM16.1972 5.55991C17.6958 6.17777 18.75 7.65271 18.75 9.375C18.75 11.5276 17.1032 13.2939 15 13.4832V11.9734C16.2725 11.7916 17.25 10.698 17.25 9.375C17.25 8.33951 16.6512 7.44452 15.7808 7.01726L16.1972 5.55991Z" fill="var(--fill-secondary)" />
|
|
36
|
+
</svg>
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
export const AffiliatesIcon = () => (
|
|
40
|
+
<svg width="48" height="48" viewBox="0 0 24 24" fill="none" className="mb-4">
|
|
41
|
+
<path d="M16.2424 14.1213L15.1818 13.0606L16.2424 12C17.414 10.8284 17.414 8.92892 16.2424 7.75734C15.0708 6.58577 13.1713 6.58577 11.9997 7.75734L10.9391 8.81801L9.87842 7.75734L10.9391 6.69668C12.6964 4.93932 15.5457 4.93932 17.3031 6.69668C19.0604 8.45405 19.0604 11.3033 17.3031 13.0606L16.2424 14.1213ZM14.121 16.2427L13.0604 17.3033C11.3031 19.0606 8.45379 19.0606 6.69644 17.3033C4.93908 15.5459 4.93908 12.6967 6.69644 10.9393L7.7571 9.87866L8.81775 10.9393L7.7571 12C6.58552 13.1716 6.58552 15.0711 7.7571 16.2427C8.92867 17.4142 10.8282 17.4142 11.9997 16.2427L13.0604 15.1819L14.121 16.2427ZM14.121 8.81801L15.1818 9.87866L9.87842 15.1819L8.81775 14.1213L14.121 8.81801Z" fill="var(--fill-secondary)" />
|
|
42
|
+
</svg>
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
export const BookingsIcon = () => (
|
|
46
|
+
<svg width="48" height="48" viewBox="0 0 24 24" fill="none" className="mb-4">
|
|
47
|
+
<path d="M17.2073 2.29291L15.793 3.70712L18.0859 6.00002H13.0002V8.00001H18.0859L15.793 10.2929L17.2073 11.7071L21.9144 7.00001L17.2073 2.29291ZM9.50015 7.00001C9.50015 5.6193 8.38086 4.50001 7.00015 4.50001C5.61944 4.50001 4.50015 5.6193 4.50015 7.00001C4.50015 8.38073 5.61944 9.50001 7.00015 9.50001C8.38086 9.50001 9.50015 8.38073 9.50015 7.00001ZM11.5002 7.00001C11.5002 9.4853 9.48543 11.5 7.00015 11.5C4.51487 11.5 2.50015 9.4853 2.50015 7.00001C2.50015 4.51473 4.51487 2.50001 7.00015 2.50001C9.48543 2.50001 11.5002 4.51473 11.5002 7.00001ZM5.91436 18L8.20726 20.2929L6.79304 21.7071L2.08594 17L6.79304 12.2929L8.20726 13.7071L5.91436 16H11.0002V18H5.91436ZM15.0002 19H19.0002V15H15.0002V19ZM13.0002 14C13.0002 13.4477 13.4479 13 14.0002 13H20.0002C20.5524 13 21.0002 13.4477 21.0002 14V20C21.0002 20.5523 20.5524 21 20.0002 21H14.0002C13.4479 21 13.0002 20.5523 13.0002 20V14Z" fill="var(--fill-secondary)" />
|
|
48
|
+
</svg>
|
|
49
|
+
);
|
|
50
|
+
|
|
51
|
+
export const CampaignsIcon = () => (
|
|
52
|
+
<svg width="48" height="48" viewBox="0 0 24 24" fill="none" className="mb-4">
|
|
53
|
+
<path d="M10.7195 16.3629C10.7195 16.3629 15.9848 15.7286 18.7404 17.3195L19.4649 17.1254C19.865 17.0182 20.1024 16.607 19.9952 16.2069L18.8183 11.8146C19.4001 11.4863 19.7099 10.7953 19.529 10.1201C19.3481 9.44504 18.7343 9.00145 18.0663 9.00807L16.8894 4.61576C16.7822 4.21567 16.3709 3.97822 15.9708 4.08543L15.2464 4.27955C13.6554 7.03522 8.7784 9.11847 8.7784 9.11847L5.88062 9.89492C5.08042 10.1093 4.60555 10.9318 4.81996 11.732L5.98464 16.0787C6.19906 16.8789 7.02156 17.3538 7.82176 17.1394L8.54621 16.9453L10.2412 20.3734L11.6901 19.9851L10.7195 16.3629ZM10.5497 9.93369C11.0163 9.69484 11.5885 9.38415 12.197 9.01286C13.317 8.32952 14.7109 7.3523 15.7461 6.14469L18.2407 15.4544C16.7403 14.9262 15.0445 14.7769 13.733 14.7451C13.0204 14.7278 12.3694 14.7448 11.846 14.7712L10.5497 9.93369ZM6.26885 11.3438L9.16662 10.5674L10.3313 14.914L7.43353 15.6905L6.26885 11.3438Z" fill="var(--fill-secondary)" />
|
|
54
|
+
</svg>
|
|
55
|
+
);
|
|
56
|
+
|
|
57
|
+
export const WaiversIcon = () => (
|
|
58
|
+
<svg width="48" height="48" viewBox="0 0 32 32" fill="none" className="mb-4">
|
|
59
|
+
<path d="M19.5771 18.5563C20.9411 17.6264 22.718 17.1662 25.1523 17.4449L25.6484 17.5104L25.749 17.5309C26.2398 17.6564 26.5658 18.1363 26.4893 18.6481C26.4124 19.1602 25.9595 19.523 25.4531 19.4987L25.3516 19.4889L24.9297 19.4323C22.8719 19.1952 21.596 19.6007 20.7041 20.2086C19.7063 20.8889 19.0536 21.9054 18.3594 23.0729C17.718 24.1516 16.9733 25.5059 15.7871 26.2936C14.5585 27.1092 13.0355 27.2399 11.0518 26.5787L10.6484 26.4362L10.5547 26.3951C10.1007 26.17 9.88172 25.6328 10.0635 25.1481C10.2455 24.6636 10.7639 24.4027 11.2539 24.5319L11.3516 24.5631L11.6816 24.6803C13.2821 25.216 14.1232 24.9983 14.6816 24.6276C15.4013 24.1496 15.9073 23.2847 16.6406 22.0514C17.3213 20.9067 18.1691 19.5164 19.5771 18.5563ZM14.6758 4.54749C14.9256 4.0552 15.5271 3.85842 16.0195 4.10803L20.5703 6.41467L20.6582 6.46545C21.085 6.73909 21.2439 7.29752 21.0098 7.7594L14.4189 20.7594C14.3389 20.9171 14.2179 21.0511 14.0693 21.1471L9.81738 23.8932C9.51875 24.0861 9.14038 24.1056 8.82324 23.9449C8.50608 23.7842 8.29737 23.4669 8.27637 23.1119L7.97852 18.0592C7.96811 17.8825 8.00497 17.7053 8.08496 17.5475L14.6758 4.54749ZM9.99121 18.2106L10.1719 21.2819L12.7578 19.6129L18.7734 7.7467L16.0068 6.34436L9.99121 18.2106Z" fill="var(--fill-secondary)" />
|
|
60
|
+
</svg>
|
|
61
|
+
);
|
|
62
|
+
|
|
63
|
+
export const InboxIcon = () => (
|
|
64
|
+
<svg width="48" height="48" viewBox="0 0 24 24" fill="none" className="mb-4">
|
|
65
|
+
<path d="M2.25 6.75C2.25 6.33579 2.58579 6 3 6H21C21.4142 6 21.75 6.33579 21.75 6.75V17.25C21.75 17.6642 21.4142 18 21 18H3C2.58579 18 2.25 17.6642 2.25 17.25V6.75ZM3.75 8.78304V16.5H20.25V8.78304L12.6349 13.4577C12.247 13.6968 11.753 13.6968 11.3651 13.4577L3.75 8.78304ZM19.0598 7.5H4.94022L12 11.8422L19.0598 7.5Z" fill="var(--fill-secondary)" />
|
|
66
|
+
</svg>
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
export const SentIcon = () => (
|
|
70
|
+
<svg width="48" height="48" viewBox="0 0 24 24" fill="none" className="mb-4">
|
|
71
|
+
<path d="M3.51472 4.76473L20.4853 11.25L3.51472 17.7353L3.5 12.75H10.5V10.25H3.5L3.51472 4.76473ZM2.06558 2.65381C2.05093 2.45149 2.11491 2.25005 2.2459 2.09244C2.3769 1.93483 2.56455 1.8333 2.76736 1.80827C2.97016 1.78324 3.17559 1.83666 3.34151 1.95786L22.1582 11.0829C22.3113 11.1958 22.4242 11.3559 22.4802 11.5392C22.5362 11.7224 22.5324 11.9192 22.4693 12.1001C22.4062 12.2809 22.287 12.4365 22.13 12.5434C21.973 12.6502 21.7866 12.7025 21.5975 12.6929L4.22306 12.0929L4.2087 17.5959C4.20789 17.8175 4.12796 18.0312 3.98367 18.1988C3.83937 18.3664 3.64013 18.4768 3.42184 18.51C3.20356 18.5431 2.98041 18.4968 2.79301 18.3789C2.60561 18.2611 2.46639 18.0796 2.40111 17.8681L2.06558 2.65381Z" fill="var(--fill-secondary)" />
|
|
72
|
+
</svg>
|
|
73
|
+
);
|
|
74
|
+
|
|
75
|
+
export const UsersIcon = () => (
|
|
76
|
+
<svg width="48" height="48" viewBox="0 0 24 24" fill="none" className="mb-4">
|
|
77
|
+
<path d="M4.5 19.5C4.5 16.1863 7.18629 13.5 10.5 13.5C13.8137 13.5 16.5 16.1863 16.5 19.5H15C15 17.0147 12.9853 15 10.5 15C8.01472 15 6 17.0147 6 19.5H4.5ZM10.5 12.75C8.01375 12.75 6 10.7362 6 8.25C6 5.76375 8.01375 3.75 10.5 3.75C12.9862 3.75 15 5.76375 15 8.25C15 10.7362 12.9862 12.75 10.5 12.75ZM10.5 11.25C12.1575 11.25 13.5 9.9075 13.5 8.25C13.5 6.5925 12.1575 5.25 10.5 5.25C8.8425 5.25 7.5 6.5925 7.5 8.25C7.5 9.9075 8.8425 11.25 10.5 11.25ZM16.7128 14.0271C18.7983 14.9671 20.25 17.064 20.25 19.5H18.75C18.75 17.673 17.6612 16.1003 16.0971 15.3953L16.7128 14.0271ZM16.1972 5.55991C17.6958 6.17777 18.75 7.65271 18.75 9.375C18.75 11.5276 17.1032 13.2939 15 13.4832V11.9734C16.2725 11.7916 17.25 10.698 17.25 9.375C17.25 8.33951 16.6512 7.44452 15.7808 7.01726L16.1972 5.55991Z" fill="var(--fill-secondary)" />
|
|
78
|
+
</svg>
|
|
79
|
+
);
|
|
80
|
+
|
|
81
|
+
export const HomeIcon = () => (
|
|
82
|
+
<svg width="48" height="48" viewBox="0 0 24 24" fill="none" className="mb-4">
|
|
83
|
+
<path d="M17.7273 20.1182H6.27273C5.82086 20.1182 5.45455 19.7423 5.45455 19.2785V11.7207H3L11.4496 3.83661C11.7617 3.54543 12.2383 3.54543 12.5504 3.83661L21 11.7207H18.5455V19.2785C18.5455 19.7423 18.1792 20.1182 17.7273 20.1182ZM7.09091 18.4387H16.9091V10.1734L12 5.59288L7.09091 10.1734V18.4387Z" fill="var(--fill-secondary)" />
|
|
84
|
+
</svg>
|
|
85
|
+
);
|
|
86
|
+
|
|
87
|
+
export const CompanyIcon = () => (
|
|
88
|
+
<svg width="48" height="48" viewBox="0 0 24 24" fill="none" className="mb-4">
|
|
89
|
+
<path d="M19.5 18.75H4.5V17.25H5.25V6C5.25 5.58579 5.58579 5.25 6 5.25H16.5C16.9142 5.25 17.25 5.58579 17.25 6V9.75H18.75V17.25H19.5V18.75ZM15.75 17.25H17.25V11.25H12.75V17.25H14.25V12.75H15.75V17.25ZM15.75 9.75V6.75H6.75V17.25H11.25V9.75H15.75ZM8.25 11.25H9.75V12.75H8.25V11.25ZM8.25 14.25H9.75V15.75H8.25V14.25ZM8.25 8.25H9.75V9.75H8.25V8.25Z" fill="var(--fill-secondary)" />
|
|
90
|
+
</svg>
|
|
91
|
+
);
|
|
92
|
+
|
|
93
|
+
export const PaymentsIcon = () => (
|
|
94
|
+
<svg width="48" height="48" viewBox="0 0 24 24" fill="none" className="mb-4">
|
|
95
|
+
<path d="M18.75 6.75H5.25C4.83579 6.75 4.5 7.08579 4.5 7.5V16.5C4.5 16.9142 4.83579 17.25 5.25 17.25H18.75C19.1642 17.25 19.5 16.9142 19.5 16.5V7.5C19.5 7.08579 19.1642 6.75 18.75 6.75ZM18 15.75H6V11.25H18V15.75ZM6 9.75V8.25H18V9.75H6ZM7.5 13.5H9.75V14.25H7.5V13.5Z" fill="var(--fill-secondary)" />
|
|
96
|
+
</svg>
|
|
97
|
+
);
|
|
98
|
+
|
|
99
|
+
export const ZonesIcon = () => (
|
|
100
|
+
<svg width="48" height="48" viewBox="0 0 32 32" fill="none" className="mb-4">
|
|
101
|
+
<path d="M16 22.4853L20.2426 18.2426C22.5858 15.8995 22.5858 12.1005 20.2426 9.75736C17.8995 7.41421 14.1005 7.41421 11.7574 9.75736C9.41421 12.1005 9.41421 15.8995 11.7574 18.2426L16 22.4853ZM21.6569 19.6569L16 25.3137L10.3432 19.6569C7.21895 16.5327 7.21895 11.4673 10.3432 8.34315C13.4673 5.21895 18.5327 5.21895 21.6569 8.34315C24.781 11.4673 24.781 16.5327 21.6569 19.6569ZM9 26H23V28H9V26Z" fill="var(--fill-secondary)" />
|
|
102
|
+
</svg>
|
|
103
|
+
);
|
|
@@ -0,0 +1,394 @@
|
|
|
1
|
+
import React, { useEffect, useRef, useCallback, useState } from 'react';
|
|
2
|
+
import { useIsMobile } from '../../hooks/use-mobile';
|
|
3
|
+
|
|
4
|
+
const CELL_SIZE = 16;
|
|
5
|
+
const PLAYER_SIZE = 12;
|
|
6
|
+
const CHUNK_SIZE = 12;
|
|
7
|
+
const VISIBLE_COLS = 20;
|
|
8
|
+
const VISIBLE_ROWS = 16;
|
|
9
|
+
|
|
10
|
+
interface Cell {
|
|
11
|
+
x: number;
|
|
12
|
+
y: number;
|
|
13
|
+
walls: { top: boolean; right: boolean; bottom: boolean; left: boolean };
|
|
14
|
+
visited: boolean;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
type WallSide = 'top' | 'right' | 'bottom' | 'left';
|
|
18
|
+
type Direction = 'up' | 'down' | 'left' | 'right';
|
|
19
|
+
|
|
20
|
+
const generateMazeChunk = (
|
|
21
|
+
chunkX: number,
|
|
22
|
+
chunkY: number,
|
|
23
|
+
existingCells: Map<string, Cell>
|
|
24
|
+
): Map<string, Cell> => {
|
|
25
|
+
const cells = new Map<string, Cell>();
|
|
26
|
+
const startX = chunkX * CHUNK_SIZE;
|
|
27
|
+
const startY = chunkY * CHUNK_SIZE;
|
|
28
|
+
|
|
29
|
+
// Create fresh cells for this chunk only
|
|
30
|
+
for (let y = startY; y < startY + CHUNK_SIZE; y++) {
|
|
31
|
+
for (let x = startX; x < startX + CHUNK_SIZE; x++) {
|
|
32
|
+
const key = `${x},${y}`;
|
|
33
|
+
if (existingCells.has(key)) {
|
|
34
|
+
// Already generated — skip entirely
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
cells.set(key, { x, y, walls: { top: true, right: true, bottom: true, left: true }, visited: false });
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// If all cells already existed, nothing to do
|
|
42
|
+
if (cells.size === 0) return cells;
|
|
43
|
+
|
|
44
|
+
// Run DFS only on new (unvisited) cells
|
|
45
|
+
const allNewKeys = Array.from(cells.keys());
|
|
46
|
+
const firstKey = allNewKeys[0];
|
|
47
|
+
const stack: Cell[] = [];
|
|
48
|
+
const first = cells.get(firstKey)!;
|
|
49
|
+
first.visited = true;
|
|
50
|
+
stack.push(first);
|
|
51
|
+
|
|
52
|
+
const oppMap: Record<WallSide, WallSide> = { top: 'bottom', bottom: 'top', left: 'right', right: 'left' };
|
|
53
|
+
|
|
54
|
+
while (stack.length > 0) {
|
|
55
|
+
const current = stack[stack.length - 1];
|
|
56
|
+
const neighbors: { cell: Cell; dir: WallSide }[] = [];
|
|
57
|
+
const dirs: { dx: number; dy: number; dir: WallSide }[] = [
|
|
58
|
+
{ dx: 0, dy: -1, dir: 'top' },
|
|
59
|
+
{ dx: 1, dy: 0, dir: 'right' },
|
|
60
|
+
{ dx: 0, dy: 1, dir: 'bottom' },
|
|
61
|
+
{ dx: -1, dy: 0, dir: 'left' },
|
|
62
|
+
];
|
|
63
|
+
|
|
64
|
+
for (const { dx, dy, dir } of dirs) {
|
|
65
|
+
const nx = current.x + dx;
|
|
66
|
+
const ny = current.y + dy;
|
|
67
|
+
const key = `${nx},${ny}`;
|
|
68
|
+
const neighbor = cells.get(key);
|
|
69
|
+
if (neighbor && !neighbor.visited) {
|
|
70
|
+
neighbors.push({ cell: neighbor, dir });
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
if (neighbors.length > 0) {
|
|
75
|
+
const { cell: next, dir } = neighbors[Math.floor(Math.random() * neighbors.length)];
|
|
76
|
+
current.walls[dir] = false;
|
|
77
|
+
next.walls[oppMap[dir]] = false;
|
|
78
|
+
next.visited = true;
|
|
79
|
+
stack.push(next);
|
|
80
|
+
} else {
|
|
81
|
+
stack.pop();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// Open passages at chunk borders and sync with existing neighbors
|
|
86
|
+
for (let i = 0; i < CHUNK_SIZE; i++) {
|
|
87
|
+
// Right border
|
|
88
|
+
if (Math.random() < 0.3) {
|
|
89
|
+
const cell = cells.get(`${startX + CHUNK_SIZE - 1},${startY + i}`);
|
|
90
|
+
const neighborKey = `${startX + CHUNK_SIZE},${startY + i}`;
|
|
91
|
+
const neighbor = existingCells.get(neighborKey);
|
|
92
|
+
if (cell) {
|
|
93
|
+
cell.walls.right = false;
|
|
94
|
+
if (neighbor) neighbor.walls.left = false;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
// Bottom border
|
|
98
|
+
if (Math.random() < 0.3) {
|
|
99
|
+
const cell = cells.get(`${startX + i},${startY + CHUNK_SIZE - 1}`);
|
|
100
|
+
const neighborKey = `${startX + i},${startY + CHUNK_SIZE}`;
|
|
101
|
+
const neighbor = existingCells.get(neighborKey);
|
|
102
|
+
if (cell) {
|
|
103
|
+
cell.walls.bottom = false;
|
|
104
|
+
if (neighbor) neighbor.walls.top = false;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
// Left border
|
|
108
|
+
if (Math.random() < 0.3) {
|
|
109
|
+
const cell = cells.get(`${startX},${startY + i}`);
|
|
110
|
+
const neighborKey = `${startX - 1},${startY + i}`;
|
|
111
|
+
const neighbor = existingCells.get(neighborKey);
|
|
112
|
+
if (cell) {
|
|
113
|
+
cell.walls.left = false;
|
|
114
|
+
if (neighbor) neighbor.walls.right = false;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
// Top border
|
|
118
|
+
if (Math.random() < 0.3) {
|
|
119
|
+
const cell = cells.get(`${startX + i},${startY}`);
|
|
120
|
+
const neighborKey = `${startX + i},${startY - 1}`;
|
|
121
|
+
const neighbor = existingCells.get(neighborKey);
|
|
122
|
+
if (cell) {
|
|
123
|
+
cell.walls.top = false;
|
|
124
|
+
if (neighbor) neighbor.walls.bottom = false;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// CRITICAL: Sync walls with any pre-existing neighbor cells.
|
|
130
|
+
// If an existing neighbor already has a wall open toward us, we must match it.
|
|
131
|
+
cells.forEach((cell) => {
|
|
132
|
+
const syncDirs: { dx: number; dy: number; wall: WallSide; oppWall: WallSide }[] = [
|
|
133
|
+
{ dx: 0, dy: -1, wall: 'top', oppWall: 'bottom' },
|
|
134
|
+
{ dx: 1, dy: 0, wall: 'right', oppWall: 'left' },
|
|
135
|
+
{ dx: 0, dy: 1, wall: 'bottom', oppWall: 'top' },
|
|
136
|
+
{ dx: -1, dy: 0, wall: 'left', oppWall: 'right' },
|
|
137
|
+
];
|
|
138
|
+
for (const { dx, dy, wall, oppWall } of syncDirs) {
|
|
139
|
+
const neighborKey = `${cell.x + dx},${cell.y + dy}`;
|
|
140
|
+
const neighbor = existingCells.get(neighborKey);
|
|
141
|
+
if (neighbor) {
|
|
142
|
+
// If neighbor has its wall open toward us, open our wall too
|
|
143
|
+
if (!neighbor.walls[oppWall]) {
|
|
144
|
+
cell.walls[wall] = false;
|
|
145
|
+
}
|
|
146
|
+
// If we have our wall open toward neighbor, open their wall too
|
|
147
|
+
if (!cell.walls[wall]) {
|
|
148
|
+
neighbor.walls[oppWall] = false;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
return cells;
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
const DPad: React.FC<{ onDirection: (dir: Direction) => void }> = ({ onDirection }) => {
|
|
158
|
+
const btnClass = "w-10 h-10 flex items-center justify-center border border-border-primary rounded-lg bg-surface-secondary text-label-primary text-base font-mono active:bg-surface-tertiary select-none touch-manipulation";
|
|
159
|
+
|
|
160
|
+
return (
|
|
161
|
+
<div className="flex flex-col items-center gap-1">
|
|
162
|
+
<button
|
|
163
|
+
className={btnClass}
|
|
164
|
+
onTouchStart={(e) => { e.preventDefault(); onDirection('up'); }}
|
|
165
|
+
onMouseDown={() => onDirection('up')}
|
|
166
|
+
type="button"
|
|
167
|
+
>↑</button>
|
|
168
|
+
<div className="flex gap-1">
|
|
169
|
+
<button
|
|
170
|
+
className={btnClass}
|
|
171
|
+
onTouchStart={(e) => { e.preventDefault(); onDirection('left'); }}
|
|
172
|
+
onMouseDown={() => onDirection('left')}
|
|
173
|
+
type="button"
|
|
174
|
+
>←</button>
|
|
175
|
+
<button
|
|
176
|
+
className={btnClass}
|
|
177
|
+
onTouchStart={(e) => { e.preventDefault(); onDirection('down'); }}
|
|
178
|
+
onMouseDown={() => onDirection('down')}
|
|
179
|
+
type="button"
|
|
180
|
+
>↓</button>
|
|
181
|
+
<button
|
|
182
|
+
className={btnClass}
|
|
183
|
+
onTouchStart={(e) => { e.preventDefault(); onDirection('right'); }}
|
|
184
|
+
onMouseDown={() => onDirection('right')}
|
|
185
|
+
type="button"
|
|
186
|
+
>→</button>
|
|
187
|
+
</div>
|
|
188
|
+
</div>
|
|
189
|
+
);
|
|
190
|
+
};
|
|
191
|
+
|
|
192
|
+
const MazeGame: React.FC = () => {
|
|
193
|
+
const canvasRef = useRef<HTMLCanvasElement>(null);
|
|
194
|
+
const isMobile = useIsMobile();
|
|
195
|
+
const gameStateRef = useRef({
|
|
196
|
+
playerX: 1,
|
|
197
|
+
playerY: 1,
|
|
198
|
+
visualX: 1,
|
|
199
|
+
visualY: 1,
|
|
200
|
+
cells: new Map<string, Cell>(),
|
|
201
|
+
loadedChunks: new Set<string>(),
|
|
202
|
+
moveQueue: [] as Direction[],
|
|
203
|
+
isAnimating: false,
|
|
204
|
+
});
|
|
205
|
+
const animFrameRef = useRef<number>(0);
|
|
206
|
+
const [gameStarted, setGameStarted] = useState(false);
|
|
207
|
+
|
|
208
|
+
const ensureChunksAround = useCallback((px: number, py: number) => {
|
|
209
|
+
const state = gameStateRef.current;
|
|
210
|
+
const cx = Math.floor(px / CHUNK_SIZE);
|
|
211
|
+
const cy = Math.floor(py / CHUNK_SIZE);
|
|
212
|
+
|
|
213
|
+
for (let dy = -1; dy <= 1; dy++) {
|
|
214
|
+
for (let dx = -1; dx <= 1; dx++) {
|
|
215
|
+
const key = `${cx + dx},${cy + dy}`;
|
|
216
|
+
if (!state.loadedChunks.has(key)) {
|
|
217
|
+
state.loadedChunks.add(key);
|
|
218
|
+
const newCells = generateMazeChunk(cx + dx, cy + dy, state.cells);
|
|
219
|
+
newCells.forEach((cell, k) => {
|
|
220
|
+
state.cells.set(k, cell);
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}, []);
|
|
226
|
+
|
|
227
|
+
const dirToWall: Record<Direction, WallSide> = { up: 'top', down: 'bottom', left: 'left', right: 'right' };
|
|
228
|
+
|
|
229
|
+
const canMoveDir = useCallback((x: number, y: number, dir: Direction): boolean => {
|
|
230
|
+
const state = gameStateRef.current;
|
|
231
|
+
const cell = state.cells.get(`${x},${y}`);
|
|
232
|
+
if (!cell) return false;
|
|
233
|
+
if (cell.walls[dirToWall[dir]]) return false;
|
|
234
|
+
|
|
235
|
+
// Also check the destination cell's opposing wall
|
|
236
|
+
const moveMap: Record<Direction, { dx: number; dy: number }> = {
|
|
237
|
+
up: { dx: 0, dy: -1 }, down: { dx: 0, dy: 1 },
|
|
238
|
+
left: { dx: -1, dy: 0 }, right: { dx: 1, dy: 0 },
|
|
239
|
+
};
|
|
240
|
+
const oppWall: Record<Direction, WallSide> = { up: 'bottom', down: 'top', left: 'right', right: 'left' };
|
|
241
|
+
const dest = state.cells.get(`${x + moveMap[dir].dx},${y + moveMap[dir].dy}`);
|
|
242
|
+
if (!dest) return false;
|
|
243
|
+
return !dest.walls[oppWall[dir]];
|
|
244
|
+
}, []);
|
|
245
|
+
|
|
246
|
+
const draw = useCallback(() => {
|
|
247
|
+
const canvas = canvasRef.current;
|
|
248
|
+
if (!canvas) return;
|
|
249
|
+
const ctx = canvas.getContext('2d');
|
|
250
|
+
if (!ctx) return;
|
|
251
|
+
|
|
252
|
+
const state = gameStateRef.current;
|
|
253
|
+
const { visualX, visualY } = state;
|
|
254
|
+
|
|
255
|
+
const computedStyle = getComputedStyle(document.documentElement);
|
|
256
|
+
const wallColor = computedStyle.getPropertyValue('--fill-secondary').trim();
|
|
257
|
+
const playerColor = computedStyle.getPropertyValue('--fill-primary').trim();
|
|
258
|
+
const bgColor = computedStyle.getPropertyValue('--surface-primary').trim();
|
|
259
|
+
|
|
260
|
+
ctx.fillStyle = bgColor;
|
|
261
|
+
ctx.fillRect(0, 0, canvas.width, canvas.height);
|
|
262
|
+
|
|
263
|
+
const offsetX = visualX - Math.floor(VISIBLE_COLS / 2);
|
|
264
|
+
const offsetY = visualY - Math.floor(VISIBLE_ROWS / 2);
|
|
265
|
+
|
|
266
|
+
const fracX = offsetX % 1;
|
|
267
|
+
const fracY = offsetY % 1;
|
|
268
|
+
const baseX = Math.floor(offsetX);
|
|
269
|
+
const baseY = Math.floor(offsetY);
|
|
270
|
+
|
|
271
|
+
for (let vy = -2; vy <= VISIBLE_ROWS + 2; vy++) {
|
|
272
|
+
for (let vx = -2; vx <= VISIBLE_COLS + 2; vx++) {
|
|
273
|
+
const cellX = baseX + vx;
|
|
274
|
+
const cellY = baseY + vy;
|
|
275
|
+
const cell = state.cells.get(`${cellX},${cellY}`);
|
|
276
|
+
if (!cell) continue;
|
|
277
|
+
|
|
278
|
+
const sx = (vx - fracX) * CELL_SIZE;
|
|
279
|
+
const sy = (vy - fracY) * CELL_SIZE;
|
|
280
|
+
|
|
281
|
+
ctx.strokeStyle = wallColor;
|
|
282
|
+
ctx.lineWidth = 2;
|
|
283
|
+
|
|
284
|
+
if (cell.walls.top) { ctx.beginPath(); ctx.moveTo(sx, sy); ctx.lineTo(sx + CELL_SIZE, sy); ctx.stroke(); }
|
|
285
|
+
if (cell.walls.right) { ctx.beginPath(); ctx.moveTo(sx + CELL_SIZE, sy); ctx.lineTo(sx + CELL_SIZE, sy + CELL_SIZE); ctx.stroke(); }
|
|
286
|
+
if (cell.walls.bottom) { ctx.beginPath(); ctx.moveTo(sx, sy + CELL_SIZE); ctx.lineTo(sx + CELL_SIZE, sy + CELL_SIZE); ctx.stroke(); }
|
|
287
|
+
if (cell.walls.left) { ctx.beginPath(); ctx.moveTo(sx, sy); ctx.lineTo(sx, sy + CELL_SIZE); ctx.stroke(); }
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
const px = Math.floor(VISIBLE_COLS / 2) * CELL_SIZE + (CELL_SIZE - PLAYER_SIZE) / 2;
|
|
292
|
+
const py = Math.floor(VISIBLE_ROWS / 2) * CELL_SIZE + (CELL_SIZE - PLAYER_SIZE) / 2;
|
|
293
|
+
ctx.fillStyle = playerColor;
|
|
294
|
+
ctx.fillRect(px, py, PLAYER_SIZE, PLAYER_SIZE);
|
|
295
|
+
ctx.fillStyle = bgColor;
|
|
296
|
+
ctx.fillRect(px + 2, py + 3, 3, 3);
|
|
297
|
+
ctx.fillRect(px + PLAYER_SIZE - 5, py + 3, 3, 3);
|
|
298
|
+
}, []);
|
|
299
|
+
|
|
300
|
+
const animate = useCallback(() => {
|
|
301
|
+
const state = gameStateRef.current;
|
|
302
|
+
const lerp = 0.25;
|
|
303
|
+
const dx = state.playerX - state.visualX;
|
|
304
|
+
const dy = state.playerY - state.visualY;
|
|
305
|
+
|
|
306
|
+
if (Math.abs(dx) < 0.01 && Math.abs(dy) < 0.01) {
|
|
307
|
+
state.visualX = state.playerX;
|
|
308
|
+
state.visualY = state.playerY;
|
|
309
|
+
state.isAnimating = false;
|
|
310
|
+
draw();
|
|
311
|
+
return;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
state.visualX += dx * lerp;
|
|
315
|
+
state.visualY += dy * lerp;
|
|
316
|
+
draw();
|
|
317
|
+
animFrameRef.current = requestAnimationFrame(animate);
|
|
318
|
+
}, [draw]);
|
|
319
|
+
|
|
320
|
+
const startAnimation = useCallback(() => {
|
|
321
|
+
const state = gameStateRef.current;
|
|
322
|
+
if (!state.isAnimating) {
|
|
323
|
+
state.isAnimating = true;
|
|
324
|
+
animFrameRef.current = requestAnimationFrame(animate);
|
|
325
|
+
}
|
|
326
|
+
}, [animate]);
|
|
327
|
+
|
|
328
|
+
const movePlayer = useCallback((dir: Direction) => {
|
|
329
|
+
const state = gameStateRef.current;
|
|
330
|
+
const moveMap: Record<Direction, { dx: number; dy: number }> = {
|
|
331
|
+
up: { dx: 0, dy: -1 }, down: { dx: 0, dy: 1 },
|
|
332
|
+
left: { dx: -1, dy: 0 }, right: { dx: 1, dy: 0 },
|
|
333
|
+
};
|
|
334
|
+
|
|
335
|
+
if (!gameStarted) setGameStarted(true);
|
|
336
|
+
|
|
337
|
+
if (canMoveDir(state.playerX, state.playerY, dir)) {
|
|
338
|
+
state.playerX += moveMap[dir].dx;
|
|
339
|
+
state.playerY += moveMap[dir].dy;
|
|
340
|
+
ensureChunksAround(state.playerX, state.playerY);
|
|
341
|
+
startAnimation();
|
|
342
|
+
}
|
|
343
|
+
}, [canMoveDir, ensureChunksAround, gameStarted, startAnimation]);
|
|
344
|
+
|
|
345
|
+
useEffect(() => {
|
|
346
|
+
const state = gameStateRef.current;
|
|
347
|
+
ensureChunksAround(state.playerX, state.playerY);
|
|
348
|
+
draw();
|
|
349
|
+
|
|
350
|
+
const handleKeyDown = (e: KeyboardEvent) => {
|
|
351
|
+
const dirMap: Record<string, Direction> = {
|
|
352
|
+
ArrowUp: 'up', ArrowDown: 'down', ArrowLeft: 'left', ArrowRight: 'right',
|
|
353
|
+
w: 'up', s: 'down', a: 'left', d: 'right',
|
|
354
|
+
W: 'up', S: 'down', A: 'left', D: 'right',
|
|
355
|
+
};
|
|
356
|
+
const dir = dirMap[e.key];
|
|
357
|
+
if (!dir) return;
|
|
358
|
+
e.preventDefault();
|
|
359
|
+
movePlayer(dir);
|
|
360
|
+
};
|
|
361
|
+
|
|
362
|
+
window.addEventListener('keydown', handleKeyDown);
|
|
363
|
+
return () => {
|
|
364
|
+
window.removeEventListener('keydown', handleKeyDown);
|
|
365
|
+
cancelAnimationFrame(animFrameRef.current);
|
|
366
|
+
};
|
|
367
|
+
}, [draw, ensureChunksAround, movePlayer]);
|
|
368
|
+
|
|
369
|
+
return (
|
|
370
|
+
<div className="flex flex-col items-start gap-3">
|
|
371
|
+
<p className="text-[13px] leading-4 font-mono text-label-secondary">
|
|
372
|
+
{gameStarted
|
|
373
|
+
? "Escape the maze and we'll grant you access."
|
|
374
|
+
: isMobile ? "Tap the arrows to start" : "Use arrow keys to start"
|
|
375
|
+
}
|
|
376
|
+
</p>
|
|
377
|
+
<div className="border-2 border-border-primary rounded-lg overflow-hidden relative">
|
|
378
|
+
<canvas
|
|
379
|
+
ref={canvasRef}
|
|
380
|
+
width={VISIBLE_COLS * CELL_SIZE}
|
|
381
|
+
height={VISIBLE_ROWS * CELL_SIZE}
|
|
382
|
+
className="block"
|
|
383
|
+
style={{ imageRendering: 'pixelated' }}
|
|
384
|
+
/>
|
|
385
|
+
</div>
|
|
386
|
+
|
|
387
|
+
{isMobile && (
|
|
388
|
+
<DPad onDirection={movePlayer} />
|
|
389
|
+
)}
|
|
390
|
+
</div>
|
|
391
|
+
);
|
|
392
|
+
};
|
|
393
|
+
|
|
394
|
+
export default MazeGame;
|