@licklist/design 0.78.5-dev.105 → 0.78.5-dev.107
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/.vscode/settings.json +3 -0
- package/bitbucket-pipelines.yml +13 -4
- package/dist/index.js +1 -1
- package/dist/product-set/form/ProductsControl.d.ts +2 -1
- package/dist/product-set/form/ProductsControl.d.ts.map +1 -1
- package/dist/product-set/form/ProductsControl.js +0 -24
- package/dist/v2/components/DataTable/DataTable.d.ts.map +1 -1
- package/dist/v2/components/DataTable/DataTable.js +86 -2
- 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 +13 -11
- package/dist/v2/components/Toggle/Toggle.d.ts.map +1 -1
- package/dist/v2/components/Toggle/Toggle.js +8 -5
- package/dist/v2/components/ZoneCard/ZoneCard.scss.js +1 -1
- package/dist/v2/components/index.d.ts +1 -1
- package/dist/v2/components/index.d.ts.map +1 -1
- package/dist/v2/icons/index.d.ts +4 -0
- package/dist/v2/icons/index.d.ts.map +1 -1
- package/dist/v2/icons/index.js +47 -16
- package/dist/v2/index.d.ts +0 -4
- package/dist/v2/index.d.ts.map +1 -1
- package/dist/v2/pages/Settings/components/SidebarCustomisation.js +0 -3
- package/dist/v2/pages/Settings/components/SidebarNavItem.js +0 -3
- package/package.json +6 -6
- package/rollup.config.js +16 -2
- package/src/iframe/payment/payment-status-page/PaymentStatusPage.tsx +1 -1
- package/src/product-set/form/ProductsControl.tsx +2 -1
- package/src/v2/components/DataTable/DataTable.tsx +23 -1
- package/src/v2/components/InputCheckbox/InputCheckbox.scss +6 -6
- package/src/v2/components/Modal/DeleteModal.tsx +12 -20
- package/src/v2/components/Toggle/Toggle.tsx +6 -5
- package/src/v2/components/ZoneCard/ZoneCard.scss +78 -0
- package/src/v2/components/index.ts +1 -0
- package/src/v2/icons/index.tsx +10 -0
- package/src/v2/index.ts +0 -73
- package/src/v2/navigation/Navigation/Navigation.stories.tsx +137 -0
- package/dist/v2/shadcn/components/ui/accordion.d.ts +0 -8
- package/dist/v2/shadcn/components/ui/accordion.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/alert-dialog.d.ts +0 -21
- package/dist/v2/shadcn/components/ui/alert-dialog.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/alert.d.ts +0 -9
- package/dist/v2/shadcn/components/ui/alert.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/aspect-ratio.d.ts +0 -4
- package/dist/v2/shadcn/components/ui/aspect-ratio.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/avatar.d.ts +0 -7
- package/dist/v2/shadcn/components/ui/avatar.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/badge.d.ts +0 -10
- package/dist/v2/shadcn/components/ui/badge.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/breadcrumb.d.ts +0 -20
- package/dist/v2/shadcn/components/ui/breadcrumb.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/button.d.ts +0 -14
- package/dist/v2/shadcn/components/ui/button.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/calendar.d.ts +0 -9
- package/dist/v2/shadcn/components/ui/calendar.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/card.d.ts +0 -9
- package/dist/v2/shadcn/components/ui/card.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/carousel.d.ts +0 -19
- package/dist/v2/shadcn/components/ui/carousel.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/checkbox.d.ts +0 -6
- package/dist/v2/shadcn/components/ui/checkbox.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/checkbox.js +0 -115
- package/dist/v2/shadcn/components/ui/checkbox.scss.js +0 -6
- package/dist/v2/shadcn/components/ui/collapsible.d.ts +0 -6
- package/dist/v2/shadcn/components/ui/collapsible.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/command.d.ts +0 -83
- package/dist/v2/shadcn/components/ui/command.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/context-menu.d.ts +0 -28
- package/dist/v2/shadcn/components/ui/context-menu.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/dialog.d.ts +0 -20
- package/dist/v2/shadcn/components/ui/dialog.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/dialog.js +0 -169
- package/dist/v2/shadcn/components/ui/drawer.d.ts +0 -23
- package/dist/v2/shadcn/components/ui/drawer.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/dropdown-menu.d.ts +0 -28
- package/dist/v2/shadcn/components/ui/dropdown-menu.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/form.d.ts +0 -24
- package/dist/v2/shadcn/components/ui/form.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/hover-card.d.ts +0 -7
- package/dist/v2/shadcn/components/ui/hover-card.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/input-otp.d.ts +0 -35
- package/dist/v2/shadcn/components/ui/input-otp.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/input.d.ts +0 -6
- package/dist/v2/shadcn/components/ui/input.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/label.d.ts +0 -6
- package/dist/v2/shadcn/components/ui/label.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/menubar.d.ts +0 -34
- package/dist/v2/shadcn/components/ui/menubar.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/navigation-menu.d.ts +0 -13
- package/dist/v2/shadcn/components/ui/navigation-menu.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/pagination.d.ts +0 -29
- package/dist/v2/shadcn/components/ui/pagination.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/popover.d.ts +0 -7
- package/dist/v2/shadcn/components/ui/popover.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/progress.d.ts +0 -5
- package/dist/v2/shadcn/components/ui/progress.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/radio-card.d.ts +0 -12
- package/dist/v2/shadcn/components/ui/radio-card.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/radio-group.d.ts +0 -6
- package/dist/v2/shadcn/components/ui/radio-group.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/scroll-area.d.ts +0 -6
- package/dist/v2/shadcn/components/ui/scroll-area.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/select.d.ts +0 -14
- package/dist/v2/shadcn/components/ui/select.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/separator.d.ts +0 -5
- package/dist/v2/shadcn/components/ui/separator.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/sheet.d.ts +0 -26
- package/dist/v2/shadcn/components/ui/sheet.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/sidebar.d.ts +0 -67
- package/dist/v2/shadcn/components/ui/sidebar.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/skeleton.d.ts +0 -3
- package/dist/v2/shadcn/components/ui/skeleton.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/slider.d.ts +0 -5
- package/dist/v2/shadcn/components/ui/slider.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/switch.d.ts +0 -6
- package/dist/v2/shadcn/components/ui/switch.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/switch.js +0 -115
- package/dist/v2/shadcn/components/ui/switch.scss.js +0 -6
- package/dist/v2/shadcn/components/ui/table-pagination.d.ts +0 -11
- package/dist/v2/shadcn/components/ui/table-pagination.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/table.d.ts +0 -11
- package/dist/v2/shadcn/components/ui/table.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/tabs.d.ts +0 -8
- package/dist/v2/shadcn/components/ui/tabs.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/textarea.d.ts +0 -6
- package/dist/v2/shadcn/components/ui/textarea.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/toast.d.ts +0 -16
- package/dist/v2/shadcn/components/ui/toast.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/toaster.d.ts +0 -2
- package/dist/v2/shadcn/components/ui/toaster.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/toggle-group.d.ts +0 -13
- package/dist/v2/shadcn/components/ui/toggle-group.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/toggle.d.ts +0 -13
- package/dist/v2/shadcn/components/ui/toggle.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/tooltip.d.ts +0 -8
- package/dist/v2/shadcn/components/ui/tooltip.d.ts.map +0 -1
- package/dist/v2/shadcn/components/ui/use-toast.d.ts +0 -3
- package/dist/v2/shadcn/components/ui/use-toast.d.ts.map +0 -1
- package/dist/v2/shadcn/hooks/use-mobile.d.ts +0 -2
- package/dist/v2/shadcn/hooks/use-mobile.d.ts.map +0 -1
- package/dist/v2/shadcn/hooks/use-toast.d.ts +0 -45
- package/dist/v2/shadcn/hooks/use-toast.d.ts.map +0 -1
- package/dist/v2/shadcn/index.d.ts +0 -20
- package/dist/v2/shadcn/index.d.ts.map +0 -1
- package/dist/v2/shadcn/lib/utils.d.ts +0 -3
- package/dist/v2/shadcn/lib/utils.d.ts.map +0 -1
- package/dist/v2/shadcn/lib/utils.js +0 -11
- package/dist/v2/shadcn/styles/globals.css +0 -112
- package/src/v2/shadcn/_reference/AccountManagerCard.tsx +0 -45
- package/src/v2/shadcn/_reference/AffiliatesTable.tsx +0 -178
- package/src/v2/shadcn/_reference/AuditArchive.tsx +0 -165
- package/src/v2/shadcn/_reference/AuditContent.tsx +0 -270
- package/src/v2/shadcn/_reference/AutomationsGeneralSettings.tsx +0 -251
- package/src/v2/shadcn/_reference/AvatarUpload.tsx +0 -150
- package/src/v2/shadcn/_reference/BookingsSummaryCard.tsx +0 -268
- package/src/v2/shadcn/_reference/CodeCleanUpAudit.tsx +0 -274
- package/src/v2/shadcn/_reference/CompaniesTable.tsx +0 -387
- package/src/v2/shadcn/_reference/ComponentAudit.tsx +0 -239
- package/src/v2/shadcn/_reference/ConfigureSettingsCard.tsx +0 -95
- package/src/v2/shadcn/_reference/CustomerCard.tsx +0 -155
- package/src/v2/shadcn/_reference/DashboardCards.tsx +0 -50
- package/src/v2/shadcn/_reference/DashboardFooter.tsx +0 -18
- package/src/v2/shadcn/_reference/DiarySettings.tsx +0 -187
- package/src/v2/shadcn/_reference/DiaryView.tsx +0 -998
- package/src/v2/shadcn/_reference/EmptyState.tsx +0 -76
- package/src/v2/shadcn/_reference/EntityInfoCard.tsx +0 -48
- package/src/v2/shadcn/_reference/ExistingUserAssignments.tsx +0 -131
- package/src/v2/shadcn/_reference/FeatureToggle.tsx +0 -72
- package/src/v2/shadcn/_reference/FlowCard.tsx +0 -170
- package/src/v2/shadcn/_reference/FlowsContent.tsx +0 -688
- package/src/v2/shadcn/_reference/FlowsGeneralSettings.tsx +0 -27
- package/src/v2/shadcn/_reference/GeneralSettings.tsx +0 -33
- package/src/v2/shadcn/_reference/InventoryGeneralSettings.tsx +0 -82
- package/src/v2/shadcn/_reference/LanguageSelector.tsx +0 -97
- package/src/v2/shadcn/_reference/LoadingScreen.tsx +0 -25
- package/src/v2/shadcn/_reference/LoadingSpinner.tsx +0 -41
- package/src/v2/shadcn/_reference/ManagedClientsList.tsx +0 -121
- package/src/v2/shadcn/_reference/NPSScore.tsx +0 -379
- package/src/v2/shadcn/_reference/NPSSummaryCard.tsx +0 -181
- package/src/v2/shadcn/_reference/NotificationBanner.tsx +0 -129
- package/src/v2/shadcn/_reference/NotificationPanel.tsx +0 -208
- package/src/v2/shadcn/_reference/OnlineUsersCard.tsx +0 -73
- package/src/v2/shadcn/_reference/ProtectedRoute.tsx +0 -39
- package/src/v2/shadcn/_reference/ProvidersTable.tsx +0 -353
- package/src/v2/shadcn/_reference/QuickAddPanel.tsx +0 -1057
- package/src/v2/shadcn/_reference/QuickFilters.tsx +0 -112
- package/src/v2/shadcn/_reference/ScheduleView.tsx +0 -410
- package/src/v2/shadcn/_reference/ScrollToTop.tsx +0 -14
- package/src/v2/shadcn/_reference/SecondaryNav.tsx +0 -50
- package/src/v2/shadcn/_reference/SecuritySettings.tsx +0 -258
- package/src/v2/shadcn/_reference/SessionDetailView.tsx +0 -294
- package/src/v2/shadcn/_reference/Sidebar.tsx +0 -14
- package/src/v2/shadcn/_reference/SidebarAwareLayout.tsx +0 -30
- package/src/v2/shadcn/_reference/SidebarLabelCustomization.tsx +0 -285
- package/src/v2/shadcn/_reference/SimulationBanner.tsx +0 -57
- package/src/v2/shadcn/_reference/SortControls.tsx +0 -65
- package/src/v2/shadcn/_reference/StatusBadge.tsx +0 -49
- package/src/v2/shadcn/_reference/StyleGuideContent.tsx +0 -331
- package/src/v2/shadcn/_reference/TableActionMenu.tsx +0 -126
- package/src/v2/shadcn/_reference/ThemeProvider.tsx +0 -119
- package/src/v2/shadcn/_reference/ThemeSettings.tsx +0 -73
- package/src/v2/shadcn/_reference/TopNavigation.tsx +0 -332
- package/src/v2/shadcn/_reference/UserActivityHistory.tsx +0 -209
- package/src/v2/shadcn/_reference/UserLanguageSettings.tsx +0 -94
- package/src/v2/shadcn/_reference/UserPanel.tsx +0 -472
- package/src/v2/shadcn/_reference/UsersTable.tsx +0 -1023
- package/src/v2/shadcn/_reference/WaiverForm.tsx +0 -301
- package/src/v2/shadcn/_reference/WaiversGeneralSettings.tsx +0 -46
- package/src/v2/shadcn/_reference/WaiversTable.tsx +0 -290
- package/src/v2/shadcn/_reference/WaiversTemplatesSettings.tsx +0 -416
- package/src/v2/shadcn/_reference/ai/AIChatPanel.tsx +0 -313
- package/src/v2/shadcn/_reference/ai/AIChatSearchBar.tsx +0 -36
- package/src/v2/shadcn/_reference/ai/ChatInteractiveBlock.tsx +0 -298
- package/src/v2/shadcn/_reference/ai/ChatMessageContent.tsx +0 -40
- package/src/v2/shadcn/_reference/ai/parseInteractiveBlocks.ts +0 -142
- package/src/v2/shadcn/_reference/auth/AuthLayout.tsx +0 -55
- package/src/v2/shadcn/_reference/auth/CreatePasswordForm.tsx +0 -285
- package/src/v2/shadcn/_reference/auth/CreatePasswordPanel.tsx +0 -20
- package/src/v2/shadcn/_reference/auth/LoginFooter.tsx +0 -14
- package/src/v2/shadcn/_reference/auth/LoginForm.tsx +0 -205
- package/src/v2/shadcn/_reference/auth/LoginPanel.tsx +0 -41
- package/src/v2/shadcn/_reference/auth/ResetPasswordForm.tsx +0 -102
- package/src/v2/shadcn/_reference/auth/ResetPasswordPanel.tsx +0 -20
- package/src/v2/shadcn/_reference/auth/VerifyEmailForm.tsx +0 -95
- package/src/v2/shadcn/_reference/auth/VerifyEmailPanel.tsx +0 -20
- package/src/v2/shadcn/_reference/email/EmailAttachment.tsx +0 -119
- package/src/v2/shadcn/_reference/email/EmailAutomation.tsx +0 -92
- package/src/v2/shadcn/_reference/email/EmailPlaceholders.tsx +0 -64
- package/src/v2/shadcn/_reference/email/UnlayerEmailEditor.tsx +0 -41
- package/src/v2/shadcn/_reference/email/emailTemplateData.ts +0 -53
- package/src/v2/shadcn/_reference/emptyStateIcons.tsx +0 -103
- package/src/v2/shadcn/_reference/games/MazeGame.tsx +0 -394
- package/src/v2/shadcn/_reference/games/RunnerGame.tsx +0 -497
- package/src/v2/shadcn/_reference/logos/BookedLogoFull.tsx +0 -36
- package/src/v2/shadcn/_reference/logos/BookedLogoMark.tsx +0 -31
- package/src/v2/shadcn/_reference/logos/BookedLogoNew.tsx +0 -36
- package/src/v2/shadcn/_reference/pricing/DynamicPricingRulesEditor.tsx +0 -401
- package/src/v2/shadcn/_reference/pricing/DynamicPricingTierCard.tsx +0 -77
- package/src/v2/shadcn/_reference/pricing/DynamicPricingTiersList.tsx +0 -218
- package/src/v2/shadcn/_reference/pricing/PricingCalendar.tsx +0 -810
- package/src/v2/shadcn/_reference/pricing/PricingPeriodCard.tsx +0 -152
- package/src/v2/shadcn/_reference/pricing/PricingPeriodForm.tsx +0 -377
- package/src/v2/shadcn/_reference/pricing/PricingPeriodsList.tsx +0 -213
- package/src/v2/shadcn/_reference/pricing/getRuleSummary.ts +0 -39
- package/src/v2/shadcn/_reference/products/AvailabilityRulesSection.tsx +0 -184
- package/src/v2/shadcn/_reference/products/AvailabilitySection.tsx +0 -677
- package/src/v2/shadcn/_reference/products/BookingTypeConfigOptions.tsx +0 -40
- package/src/v2/shadcn/_reference/products/CapacityPeriodsSection.tsx +0 -238
- package/src/v2/shadcn/_reference/products/DynamicPricingTiersSection.tsx +0 -131
- package/src/v2/shadcn/_reference/products/GiftCardOrdersTab.tsx +0 -192
- package/src/v2/shadcn/_reference/products/GiftCardSettings.tsx +0 -342
- package/src/v2/shadcn/_reference/products/PackageProductsSection.tsx +0 -322
- package/src/v2/shadcn/_reference/products/PricingSection.tsx +0 -173
- package/src/v2/shadcn/_reference/products/ProductTypeFields.tsx +0 -353
- package/src/v2/shadcn/_reference/products/ProductTypeIcon.tsx +0 -95
- package/src/v2/shadcn/_reference/products/VariablePricingSection.tsx +0 -140
- package/src/v2/shadcn/_reference/products/productTypeConfig.ts +0 -182
- package/src/v2/shadcn/_reference/shared/BackButton.tsx +0 -50
- package/src/v2/shadcn/_reference/shared/CancelConfirmationDialog.tsx +0 -18
- package/src/v2/shadcn/_reference/shared/ConfirmationDialog.tsx +0 -136
- package/src/v2/shadcn/_reference/shared/DeleteConfirmationDialog.tsx +0 -18
- package/src/v2/shadcn/_reference/shared/DeleteEntityPage.tsx +0 -221
- package/src/v2/shadcn/_reference/shared/SidebarIcons.tsx +0 -108
- package/src/v2/shadcn/_reference/shared/UnifiedSidebar.tsx +0 -722
- package/src/v2/shadcn/_reference/tables/BulkActionsBar.tsx +0 -68
- package/src/v2/shadcn/_reference/tables/DataTable.tsx +0 -221
- package/src/v2/shadcn/_reference/tables/TableControls.tsx +0 -94
- package/src/v2/shadcn/_reference/tables/index.ts +0 -3
- package/src/v2/shadcn/_reference/tables/types.ts +0 -79
- package/src/v2/shadcn/_reference/zones/LegacyZoneSettings.tsx +0 -299
- package/src/v2/shadcn/components/ui/accordion.stories.tsx +0 -63
- package/src/v2/shadcn/components/ui/accordion.tsx +0 -52
- package/src/v2/shadcn/components/ui/alert-dialog.stories.tsx +0 -44
- package/src/v2/shadcn/components/ui/alert-dialog.tsx +0 -104
- package/src/v2/shadcn/components/ui/alert.stories.tsx +0 -44
- package/src/v2/shadcn/components/ui/alert.tsx +0 -43
- package/src/v2/shadcn/components/ui/aspect-ratio.stories.tsx +0 -46
- package/src/v2/shadcn/components/ui/aspect-ratio.tsx +0 -5
- package/src/v2/shadcn/components/ui/avatar.stories.tsx +0 -39
- package/src/v2/shadcn/components/ui/avatar.tsx +0 -38
- package/src/v2/shadcn/components/ui/badge.stories.tsx +0 -17
- package/src/v2/shadcn/components/ui/badge.tsx +0 -30
- package/src/v2/shadcn/components/ui/breadcrumb.stories.tsx +0 -91
- package/src/v2/shadcn/components/ui/breadcrumb.tsx +0 -90
- package/src/v2/shadcn/components/ui/button.stories.tsx +0 -20
- package/src/v2/shadcn/components/ui/button.tsx +0 -60
- package/src/v2/shadcn/components/ui/calendar.stories.tsx +0 -61
- package/src/v2/shadcn/components/ui/calendar.tsx +0 -54
- package/src/v2/shadcn/components/ui/card.stories.tsx +0 -37
- package/src/v2/shadcn/components/ui/card.tsx +0 -43
- package/src/v2/shadcn/components/ui/carousel.stories.tsx +0 -92
- package/src/v2/shadcn/components/ui/carousel.tsx +0 -224
- package/src/v2/shadcn/components/ui/checkbox.scss +0 -38
- package/src/v2/shadcn/components/ui/checkbox.stories.tsx +0 -23
- package/src/v2/shadcn/components/ui/checkbox.tsx +0 -24
- package/src/v2/shadcn/components/ui/collapsible.stories.tsx +0 -59
- package/src/v2/shadcn/components/ui/collapsible.tsx +0 -9
- package/src/v2/shadcn/components/ui/command.stories.tsx +0 -70
- package/src/v2/shadcn/components/ui/command.tsx +0 -132
- package/src/v2/shadcn/components/ui/context-menu.stories.tsx +0 -72
- package/src/v2/shadcn/components/ui/context-menu.tsx +0 -178
- package/src/v2/shadcn/components/ui/dialog.stories.tsx +0 -67
- package/src/v2/shadcn/components/ui/dialog.tsx +0 -95
- package/src/v2/shadcn/components/ui/drawer.stories.tsx +0 -50
- package/src/v2/shadcn/components/ui/drawer.tsx +0 -87
- package/src/v2/shadcn/components/ui/dropdown-menu.stories.tsx +0 -73
- package/src/v2/shadcn/components/ui/dropdown-menu.tsx +0 -179
- package/src/v2/shadcn/components/ui/form.stories.tsx +0 -105
- package/src/v2/shadcn/components/ui/form.tsx +0 -129
- package/src/v2/shadcn/components/ui/hover-card.stories.tsx +0 -35
- package/src/v2/shadcn/components/ui/hover-card.tsx +0 -27
- package/src/v2/shadcn/components/ui/input-otp.stories.tsx +0 -72
- package/src/v2/shadcn/components/ui/input-otp.tsx +0 -61
- package/src/v2/shadcn/components/ui/input.stories.tsx +0 -16
- package/src/v2/shadcn/components/ui/input.tsx +0 -25
- package/src/v2/shadcn/components/ui/label.stories.tsx +0 -13
- package/src/v2/shadcn/components/ui/label.tsx +0 -17
- package/src/v2/shadcn/components/ui/menubar.stories.tsx +0 -86
- package/src/v2/shadcn/components/ui/menubar.tsx +0 -207
- package/src/v2/shadcn/components/ui/navigation-menu.stories.tsx +0 -68
- package/src/v2/shadcn/components/ui/navigation-menu.tsx +0 -120
- package/src/v2/shadcn/components/ui/pagination.stories.tsx +0 -78
- package/src/v2/shadcn/components/ui/pagination.tsx +0 -81
- package/src/v2/shadcn/components/ui/popover.stories.tsx +0 -44
- package/src/v2/shadcn/components/ui/popover.tsx +0 -29
- package/src/v2/shadcn/components/ui/progress.stories.tsx +0 -17
- package/src/v2/shadcn/components/ui/progress.tsx +0 -23
- package/src/v2/shadcn/components/ui/radio-card.stories.tsx +0 -68
- package/src/v2/shadcn/components/ui/radio-card.tsx +0 -52
- package/src/v2/shadcn/components/ui/radio-group.stories.tsx +0 -77
- package/src/v2/shadcn/components/ui/radio-group.tsx +0 -35
- package/src/v2/shadcn/components/ui/scroll-area.stories.tsx +0 -56
- package/src/v2/shadcn/components/ui/scroll-area.tsx +0 -38
- package/src/v2/shadcn/components/ui/select.stories.tsx +0 -60
- package/src/v2/shadcn/components/ui/select.tsx +0 -148
- package/src/v2/shadcn/components/ui/separator.stories.tsx +0 -30
- package/src/v2/shadcn/components/ui/separator.tsx +0 -20
- package/src/v2/shadcn/components/ui/sheet.stories.tsx +0 -115
- package/src/v2/shadcn/components/ui/sheet.tsx +0 -107
- package/src/v2/shadcn/components/ui/sidebar.stories.tsx +0 -167
- package/src/v2/shadcn/components/ui/sidebar.tsx +0 -637
- package/src/v2/shadcn/components/ui/skeleton.stories.tsx +0 -36
- package/src/v2/shadcn/components/ui/skeleton.tsx +0 -7
- package/src/v2/shadcn/components/ui/slider.stories.tsx +0 -16
- package/src/v2/shadcn/components/ui/slider.tsx +0 -23
- package/src/v2/shadcn/components/ui/switch.scss +0 -63
- package/src/v2/shadcn/components/ui/switch.stories.tsx +0 -23
- package/src/v2/shadcn/components/ui/switch.tsx +0 -24
- package/src/v2/shadcn/components/ui/table-pagination.stories.tsx +0 -81
- package/src/v2/shadcn/components/ui/table-pagination.tsx +0 -61
- package/src/v2/shadcn/components/ui/table.stories.tsx +0 -40
- package/src/v2/shadcn/components/ui/table.tsx +0 -72
- package/src/v2/shadcn/components/ui/tabs.stories.tsx +0 -85
- package/src/v2/shadcn/components/ui/tabs.tsx +0 -53
- package/src/v2/shadcn/components/ui/textarea.stories.tsx +0 -15
- package/src/v2/shadcn/components/ui/textarea.tsx +0 -21
- package/src/v2/shadcn/components/ui/toast.stories.tsx +0 -77
- package/src/v2/shadcn/components/ui/toast.tsx +0 -111
- package/src/v2/shadcn/components/ui/toaster.stories.tsx +0 -46
- package/src/v2/shadcn/components/ui/toaster.tsx +0 -24
- package/src/v2/shadcn/components/ui/toggle-group.stories.tsx +0 -95
- package/src/v2/shadcn/components/ui/toggle-group.tsx +0 -49
- package/src/v2/shadcn/components/ui/toggle.stories.tsx +0 -18
- package/src/v2/shadcn/components/ui/toggle.tsx +0 -37
- package/src/v2/shadcn/components/ui/tooltip.stories.tsx +0 -57
- package/src/v2/shadcn/components/ui/tooltip.tsx +0 -28
- package/src/v2/shadcn/components/ui/use-toast.ts +0 -3
- package/src/v2/shadcn/hooks/use-mobile.tsx +0 -19
- package/src/v2/shadcn/hooks/use-toast.ts +0 -184
- package/src/v2/shadcn/index.ts +0 -76
- package/src/v2/shadcn/lib/utils.ts +0 -6
- package/src/v2/shadcn/styles/globals.css +0 -112
|
@@ -1,331 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
|
|
3
|
-
interface StyleGuideContentProps {
|
|
4
|
-
typographyScale: Array<{
|
|
5
|
-
name: string;
|
|
6
|
-
size: string;
|
|
7
|
-
weight: string;
|
|
8
|
-
lineHeight: string;
|
|
9
|
-
letterSpacing: string;
|
|
10
|
-
fontFamily: string;
|
|
11
|
-
class: string;
|
|
12
|
-
}>;
|
|
13
|
-
baseColors: Array<{
|
|
14
|
-
name: string;
|
|
15
|
-
prefix: string;
|
|
16
|
-
shades: Array<{ value: string; hex: string }>;
|
|
17
|
-
}>;
|
|
18
|
-
mainColors: Array<{
|
|
19
|
-
category: string;
|
|
20
|
-
tokens: Array<{ name: string; maps: string; hex: string }>;
|
|
21
|
-
}>;
|
|
22
|
-
semanticColors: Array<{
|
|
23
|
-
name: string;
|
|
24
|
-
tokens: Array<{ name: string; maps: string; hex: string }>;
|
|
25
|
-
}>;
|
|
26
|
-
mappedColors: {
|
|
27
|
-
label: string[];
|
|
28
|
-
surface: string[];
|
|
29
|
-
border: string[];
|
|
30
|
-
fill: string[];
|
|
31
|
-
gradient: string[];
|
|
32
|
-
};
|
|
33
|
-
gradientInfo: {
|
|
34
|
-
light: Array<{ stop: string; maps: string; hex: string }>;
|
|
35
|
-
dark: Array<{ stop: string; maps: string; hex: string }>;
|
|
36
|
-
};
|
|
37
|
-
customIcons?: {
|
|
38
|
-
navigation: Array<{ name: string; file: string; usage: string }>;
|
|
39
|
-
user: Array<{ name: string; file: string; usage: string }>;
|
|
40
|
-
interface: Array<{ name: string; file: string; usage: string }>;
|
|
41
|
-
theme: Array<{ name: string; file: string; usage: string }>;
|
|
42
|
-
branding: Array<{ name: string; file: string; usage: string }>;
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
const StyleGuideContent: React.FC<StyleGuideContentProps> = ({
|
|
47
|
-
typographyScale,
|
|
48
|
-
baseColors,
|
|
49
|
-
mainColors,
|
|
50
|
-
semanticColors,
|
|
51
|
-
mappedColors,
|
|
52
|
-
gradientInfo,
|
|
53
|
-
customIcons,
|
|
54
|
-
}) => {
|
|
55
|
-
return (
|
|
56
|
-
<>
|
|
57
|
-
{/* Anchor Navigation */}
|
|
58
|
-
<div className="flex items-start gap-4 self-stretch py-4 px-4 bg-surface-secondary rounded-lg sticky top-14 z-10">
|
|
59
|
-
<a href="#icons" className="text-[13px] font-semibold text-label-secondary hover:text-label-primary transition-colors">
|
|
60
|
-
Icons
|
|
61
|
-
</a>
|
|
62
|
-
<span className="text-label-secondary">•</span>
|
|
63
|
-
<a href="#typography" className="text-[13px] font-semibold text-label-secondary hover:text-label-primary transition-colors">
|
|
64
|
-
Typography
|
|
65
|
-
</a>
|
|
66
|
-
<span className="text-label-secondary">•</span>
|
|
67
|
-
<a href="#base-colors" className="text-[13px] font-semibold text-label-secondary hover:text-label-primary transition-colors">
|
|
68
|
-
Base Colors
|
|
69
|
-
</a>
|
|
70
|
-
<span className="text-label-secondary">•</span>
|
|
71
|
-
<a href="#main-colors" className="text-[13px] font-semibold text-label-secondary hover:text-label-primary transition-colors">
|
|
72
|
-
Main Colors
|
|
73
|
-
</a>
|
|
74
|
-
<span className="text-label-secondary">•</span>
|
|
75
|
-
<a href="#semantic-colors" className="text-[13px] font-semibold text-label-secondary hover:text-label-primary transition-colors">
|
|
76
|
-
Semantic Colors
|
|
77
|
-
</a>
|
|
78
|
-
<span className="text-label-secondary">•</span>
|
|
79
|
-
<a href="#mapped-colors" className="text-[13px] font-semibold text-label-secondary hover:text-label-primary transition-colors">
|
|
80
|
-
Mapped Colors
|
|
81
|
-
</a>
|
|
82
|
-
</div>
|
|
83
|
-
|
|
84
|
-
{/* Icons Section */}
|
|
85
|
-
{customIcons && (
|
|
86
|
-
<div id="icons" className="flex flex-col gap-4 self-stretch">
|
|
87
|
-
<h2 className="text-label-primary text-xl font-semibold leading-6">Custom Icon System</h2>
|
|
88
|
-
<p className="text-label-secondary text-sm">
|
|
89
|
-
Custom SVG icons designed specifically for this application. These icons maintain consistent sizing and styling across the interface.
|
|
90
|
-
</p>
|
|
91
|
-
|
|
92
|
-
{Object.entries(customIcons).map(([category, icons]) => (
|
|
93
|
-
<div key={category} className="flex flex-col gap-3">
|
|
94
|
-
<h3 className="text-label-primary text-base font-semibold capitalize">{category} Icons</h3>
|
|
95
|
-
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-3">
|
|
96
|
-
{icons.map((icon) => (
|
|
97
|
-
<div key={icon.name} className="flex items-center gap-4 p-4 bg-surface-secondary rounded-lg">
|
|
98
|
-
<div className="w-12 h-12 flex items-center justify-center bg-surface-primary rounded-lg">
|
|
99
|
-
<img
|
|
100
|
-
src={`/src/assets/${icon.file}`}
|
|
101
|
-
alt={icon.name}
|
|
102
|
-
className="w-8 h-8"
|
|
103
|
-
/>
|
|
104
|
-
</div>
|
|
105
|
-
<div className="flex-1">
|
|
106
|
-
<div className="text-label-primary font-semibold text-sm">{icon.name}</div>
|
|
107
|
-
<div className="text-label-secondary text-xs mt-1">{icon.usage}</div>
|
|
108
|
-
<div className="text-label-tertiary text-xs font-mono mt-1">{icon.file}</div>
|
|
109
|
-
</div>
|
|
110
|
-
</div>
|
|
111
|
-
))}
|
|
112
|
-
</div>
|
|
113
|
-
</div>
|
|
114
|
-
))}
|
|
115
|
-
</div>
|
|
116
|
-
)}
|
|
117
|
-
|
|
118
|
-
{/* Typography Section */}
|
|
119
|
-
<div id="typography" className="flex flex-col gap-4 self-stretch">
|
|
120
|
-
<h2 className="text-label-primary text-xl font-semibold leading-6">Typography Scale</h2>
|
|
121
|
-
<div className="flex flex-col gap-3">
|
|
122
|
-
{typographyScale.map((type) => (
|
|
123
|
-
<div key={type.name} className="flex items-center gap-4 p-4 bg-surface-secondary rounded-lg">
|
|
124
|
-
<div className="flex-1 min-w-[200px]">
|
|
125
|
-
<div className="text-label-primary font-semibold text-sm">{type.name}</div>
|
|
126
|
-
<div className="text-label-secondary text-xs mt-1">
|
|
127
|
-
{type.size} / {type.weight} / {type.lineHeight}
|
|
128
|
-
</div>
|
|
129
|
-
<div className="text-label-secondary text-xs mt-1">
|
|
130
|
-
<strong>Family:</strong> {type.fontFamily}
|
|
131
|
-
</div>
|
|
132
|
-
<div className="text-label-secondary text-xs">
|
|
133
|
-
<strong>Style:</strong> normal / <strong>Spacing:</strong> {type.letterSpacing}
|
|
134
|
-
</div>
|
|
135
|
-
</div>
|
|
136
|
-
<div className="flex-1">
|
|
137
|
-
<div className={type.class}>The quick brown fox</div>
|
|
138
|
-
</div>
|
|
139
|
-
</div>
|
|
140
|
-
))}
|
|
141
|
-
</div>
|
|
142
|
-
</div>
|
|
143
|
-
|
|
144
|
-
{/* Base Colors Section */}
|
|
145
|
-
<div id="base-colors" className="flex flex-col gap-4 self-stretch">
|
|
146
|
-
<h2 className="text-label-primary text-xl font-semibold leading-6">Base Colors</h2>
|
|
147
|
-
<div className="grid grid-cols-1 gap-4">
|
|
148
|
-
{baseColors.map((color) => (
|
|
149
|
-
<div key={color.name} className="flex flex-col gap-2 p-4 bg-surface-secondary rounded-lg">
|
|
150
|
-
<h3 className="text-label-primary font-semibold text-sm mb-2">{color.name}</h3>
|
|
151
|
-
<div className="grid grid-cols-5 gap-2 max-sm:grid-cols-2">
|
|
152
|
-
{color.shades.map((shade) => (
|
|
153
|
-
<div key={shade.value} className="flex flex-col gap-2">
|
|
154
|
-
<div
|
|
155
|
-
className="h-16 rounded border border-border-primary"
|
|
156
|
-
style={{ backgroundColor: shade.hex }}
|
|
157
|
-
/>
|
|
158
|
-
<div className="text-label-secondary text-xs">
|
|
159
|
-
<div className="font-semibold">{color.prefix}-{shade.value}</div>
|
|
160
|
-
<code className="text-[10px] text-label-secondary font-mono">
|
|
161
|
-
{shade.hex}
|
|
162
|
-
</code>
|
|
163
|
-
</div>
|
|
164
|
-
</div>
|
|
165
|
-
))}
|
|
166
|
-
</div>
|
|
167
|
-
</div>
|
|
168
|
-
))}
|
|
169
|
-
</div>
|
|
170
|
-
</div>
|
|
171
|
-
|
|
172
|
-
{/* Main Colors Section */}
|
|
173
|
-
<div id="main-colors" className="flex flex-col gap-4 self-stretch">
|
|
174
|
-
<h2 className="text-label-primary text-xl font-semibold leading-6">Main Colors (Semantic Names)</h2>
|
|
175
|
-
|
|
176
|
-
{mainColors.map((colorGroup) => (
|
|
177
|
-
<div key={colorGroup.category} className="flex flex-col gap-2 p-4 bg-surface-secondary rounded-lg">
|
|
178
|
-
<h3 className="text-label-primary font-semibold text-sm mb-2">{colorGroup.category}</h3>
|
|
179
|
-
<div className="grid grid-cols-4 gap-2 max-sm:grid-cols-2">
|
|
180
|
-
{colorGroup.tokens.map((token) => (
|
|
181
|
-
<div key={token.name} className="flex flex-col gap-2">
|
|
182
|
-
<div
|
|
183
|
-
className="h-16 rounded border border-border-primary"
|
|
184
|
-
style={{ backgroundColor: token.hex }}
|
|
185
|
-
/>
|
|
186
|
-
<div className="text-label-secondary text-xs">
|
|
187
|
-
<div className="font-semibold">{colorGroup.category.toLowerCase()}-{token.name}</div>
|
|
188
|
-
<div className="text-[10px]">→ {token.maps}</div>
|
|
189
|
-
<code className="text-[10px] text-label-secondary font-mono">
|
|
190
|
-
{token.hex}
|
|
191
|
-
</code>
|
|
192
|
-
</div>
|
|
193
|
-
</div>
|
|
194
|
-
))}
|
|
195
|
-
</div>
|
|
196
|
-
</div>
|
|
197
|
-
))}
|
|
198
|
-
</div>
|
|
199
|
-
|
|
200
|
-
{/* Semantic Colors Section */}
|
|
201
|
-
<div id="semantic-colors" className="flex flex-col gap-4 self-stretch">
|
|
202
|
-
<h2 className="text-label-primary text-xl font-semibold leading-6">Semantic Theme Colors</h2>
|
|
203
|
-
{semanticColors.map((semantic) => (
|
|
204
|
-
<div key={semantic.name} className="flex flex-col gap-2 p-4 bg-surface-secondary rounded-lg">
|
|
205
|
-
<h3 className="text-label-primary font-semibold text-sm mb-2">{semantic.name}</h3>
|
|
206
|
-
<div className="grid grid-cols-4 gap-2 max-sm:grid-cols-2">
|
|
207
|
-
{semantic.tokens.map((token) => (
|
|
208
|
-
<div key={token.name} className="flex flex-col gap-2">
|
|
209
|
-
<div
|
|
210
|
-
className="h-16 rounded border border-border-primary"
|
|
211
|
-
style={{ backgroundColor: token.hex }}
|
|
212
|
-
/>
|
|
213
|
-
<div className="text-label-secondary text-xs">
|
|
214
|
-
<div className="font-semibold">{semantic.name.toLowerCase()}-{token.name}</div>
|
|
215
|
-
<div className="text-[10px]">→ {token.maps}</div>
|
|
216
|
-
<code className="text-[10px] text-label-secondary font-mono">
|
|
217
|
-
{token.hex}
|
|
218
|
-
</code>
|
|
219
|
-
</div>
|
|
220
|
-
</div>
|
|
221
|
-
))}
|
|
222
|
-
</div>
|
|
223
|
-
</div>
|
|
224
|
-
))}
|
|
225
|
-
</div>
|
|
226
|
-
|
|
227
|
-
{/* Mapped Colors Section */}
|
|
228
|
-
<div id="mapped-colors" className="flex flex-col gap-4 self-stretch">
|
|
229
|
-
<h2 className="text-label-primary text-xl font-semibold leading-6">Mapped Colors</h2>
|
|
230
|
-
|
|
231
|
-
{/* Label Tokens */}
|
|
232
|
-
<div className="flex flex-col gap-2 p-4 bg-surface-secondary rounded-lg">
|
|
233
|
-
<h3 className="text-label-primary font-semibold text-sm mb-2">Label Tokens</h3>
|
|
234
|
-
<div className="grid grid-cols-3 gap-2 max-sm:grid-cols-1">
|
|
235
|
-
{mappedColors.label.map((token) => (
|
|
236
|
-
<div key={token} className="flex items-center gap-2 p-2 bg-surface-primary rounded border border-border-primary">
|
|
237
|
-
<div className={`w-6 h-6 rounded border border-border-primary flex-shrink-0`} style={{ backgroundColor: `var(--label-${token})` }} />
|
|
238
|
-
<code className="text-xs text-label-primary font-mono">label-{token}</code>
|
|
239
|
-
</div>
|
|
240
|
-
))}
|
|
241
|
-
</div>
|
|
242
|
-
</div>
|
|
243
|
-
|
|
244
|
-
{/* Surface Tokens */}
|
|
245
|
-
<div className="flex flex-col gap-2 p-4 bg-surface-secondary rounded-lg">
|
|
246
|
-
<h3 className="text-label-primary font-semibold text-sm mb-2">Surface Tokens</h3>
|
|
247
|
-
<div className="grid grid-cols-3 gap-2 max-sm:grid-cols-1">
|
|
248
|
-
{mappedColors.surface.map((token) => (
|
|
249
|
-
<div key={token} className="flex items-center gap-2 p-2 bg-surface-primary rounded border border-border-primary">
|
|
250
|
-
<div className={`w-6 h-6 rounded border border-border-primary flex-shrink-0 bg-surface-${token}`} />
|
|
251
|
-
<code className="text-xs text-label-primary font-mono">surface-{token}</code>
|
|
252
|
-
</div>
|
|
253
|
-
))}
|
|
254
|
-
</div>
|
|
255
|
-
</div>
|
|
256
|
-
|
|
257
|
-
{/* Border Tokens */}
|
|
258
|
-
<div className="flex flex-col gap-2 p-4 bg-surface-secondary rounded-lg">
|
|
259
|
-
<h3 className="text-label-primary font-semibold text-sm mb-2">Border Tokens</h3>
|
|
260
|
-
<div className="grid grid-cols-3 gap-2 max-sm:grid-cols-1">
|
|
261
|
-
{mappedColors.border.map((token) => (
|
|
262
|
-
<div key={token} className="flex items-center gap-2 p-2 bg-surface-primary rounded border border-border-primary">
|
|
263
|
-
<div className={`w-6 h-6 rounded flex-shrink-0 border-2`} style={{ borderColor: `var(--border-${token})` }} />
|
|
264
|
-
<code className="text-xs text-label-primary font-mono">border-{token}</code>
|
|
265
|
-
</div>
|
|
266
|
-
))}
|
|
267
|
-
</div>
|
|
268
|
-
</div>
|
|
269
|
-
|
|
270
|
-
{/* Fill Tokens */}
|
|
271
|
-
<div className="flex flex-col gap-2 p-4 bg-surface-secondary rounded-lg">
|
|
272
|
-
<h3 className="text-label-primary font-semibold text-sm mb-2">Fill Tokens</h3>
|
|
273
|
-
<div className="grid grid-cols-3 gap-2 max-sm:grid-cols-1">
|
|
274
|
-
{mappedColors.fill.map((token) => (
|
|
275
|
-
<div key={token} className="flex items-center gap-2 p-2 bg-surface-primary rounded border border-border-primary">
|
|
276
|
-
<div className={`w-6 h-6 rounded border border-border-primary flex-shrink-0`} style={{ backgroundColor: `var(--fill-${token})` }} />
|
|
277
|
-
<code className="text-xs text-label-primary font-mono">fill-{token}</code>
|
|
278
|
-
</div>
|
|
279
|
-
))}
|
|
280
|
-
</div>
|
|
281
|
-
</div>
|
|
282
|
-
|
|
283
|
-
{/* Gradients - Light Mode */}
|
|
284
|
-
<div className="flex flex-col gap-2 p-4 bg-surface-secondary rounded-lg">
|
|
285
|
-
<h3 className="text-label-primary font-semibold text-sm mb-2">Gradient Stops (Light Mode)</h3>
|
|
286
|
-
<div className="grid grid-cols-3 gap-3 max-sm:grid-cols-1">
|
|
287
|
-
{gradientInfo.light.map((info) => (
|
|
288
|
-
<div key={info.stop} className="flex items-center gap-3 p-3 bg-surface-primary rounded border border-border-primary">
|
|
289
|
-
<div
|
|
290
|
-
className="w-12 h-12 rounded border border-border-primary flex-shrink-0"
|
|
291
|
-
style={{ backgroundColor: info.hex }}
|
|
292
|
-
/>
|
|
293
|
-
<div className="flex-1 min-w-0">
|
|
294
|
-
<div className="text-label-primary font-semibold text-xs truncate">gradient-{info.stop}</div>
|
|
295
|
-
<div className="text-label-secondary text-[10px] truncate">→ {info.maps}</div>
|
|
296
|
-
<code className="text-[10px] text-label-secondary font-mono">
|
|
297
|
-
{info.hex}
|
|
298
|
-
</code>
|
|
299
|
-
</div>
|
|
300
|
-
</div>
|
|
301
|
-
))}
|
|
302
|
-
</div>
|
|
303
|
-
</div>
|
|
304
|
-
|
|
305
|
-
{/* Gradients - Dark Mode */}
|
|
306
|
-
<div className="flex flex-col gap-2 p-4 bg-surface-secondary rounded-lg">
|
|
307
|
-
<h3 className="text-label-primary font-semibold text-sm mb-2">Gradient Stops (Dark Mode)</h3>
|
|
308
|
-
<div className="grid grid-cols-3 gap-3 max-sm:grid-cols-1">
|
|
309
|
-
{gradientInfo.dark.map((info) => (
|
|
310
|
-
<div key={info.stop} className="flex items-center gap-3 p-3 bg-surface-primary rounded border border-border-primary">
|
|
311
|
-
<div
|
|
312
|
-
className="w-12 h-12 rounded border border-border-primary flex-shrink-0"
|
|
313
|
-
style={{ backgroundColor: info.hex }}
|
|
314
|
-
/>
|
|
315
|
-
<div className="flex-1 min-w-0">
|
|
316
|
-
<div className="text-label-primary font-semibold text-xs truncate">gradient-{info.stop}</div>
|
|
317
|
-
<div className="text-label-secondary text-[10px] truncate">→ {info.maps}</div>
|
|
318
|
-
<code className="text-[10px] text-label-secondary font-mono">
|
|
319
|
-
{info.hex}
|
|
320
|
-
</code>
|
|
321
|
-
</div>
|
|
322
|
-
</div>
|
|
323
|
-
))}
|
|
324
|
-
</div>
|
|
325
|
-
</div>
|
|
326
|
-
</div>
|
|
327
|
-
</>
|
|
328
|
-
);
|
|
329
|
-
};
|
|
330
|
-
|
|
331
|
-
export default StyleGuideContent;
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
import React, { useState } from 'react';
|
|
2
|
-
import { IconCross } from '../../icons';
|
|
3
|
-
|
|
4
|
-
export interface MenuItem {
|
|
5
|
-
label: string;
|
|
6
|
-
onClick: () => void;
|
|
7
|
-
variant?: 'default' | 'danger';
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
interface TableActionMenuProps {
|
|
11
|
-
items: MenuItem[];
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Reusable circular action button with the soft-action surface and fill-action icon tint.
|
|
16
|
-
* Used standalone (with `icon` + `onClick`) or as the trigger for TableActionMenu.
|
|
17
|
-
*/
|
|
18
|
-
export const ActionButton: React.FC<{
|
|
19
|
-
icon: React.ReactNode;
|
|
20
|
-
onClick: () => void;
|
|
21
|
-
className?: string;
|
|
22
|
-
}> = ({ icon, onClick, className = '' }) => (
|
|
23
|
-
<button
|
|
24
|
-
onClick={onClick}
|
|
25
|
-
className={`w-8 h-8 relative flex items-center justify-center hover:opacity-80 transition-opacity flex-shrink-0 ${className}`}
|
|
26
|
-
>
|
|
27
|
-
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" className="absolute inset-0">
|
|
28
|
-
<circle cx="16" cy="16" r="16" className="fill-surface-action-soft" />
|
|
29
|
-
</svg>
|
|
30
|
-
<span className="relative z-10 text-fill-action flex items-center justify-center">
|
|
31
|
-
{icon}
|
|
32
|
-
</span>
|
|
33
|
-
</button>
|
|
34
|
-
);
|
|
35
|
-
|
|
36
|
-
const ThreeDotsIcon = () => (
|
|
37
|
-
<svg width="18" height="4" viewBox="0 0 18 4" fill="none">
|
|
38
|
-
<path d="M2 0C3.10457 0 4 0.895431 4 2C4 3.10457 3.10457 4 2 4C0.895431 4 0 3.10457 0 2C0 0.895431 0.895431 0 2 0ZM9 0C10.1046 0 11 0.895431 11 2C11 3.10457 10.1046 4 9 4C7.89543 4 7 3.10457 7 2C7 0.895431 7.89543 0 9 0ZM16 0C17.1046 0 18 0.895431 18 2C18 3.10457 17.1046 4 16 4C14.8954 4 14 3.10457 14 2C14 0.895431 14.8954 0 16 0Z" className="fill-fill-action" />
|
|
39
|
-
</svg>
|
|
40
|
-
);
|
|
41
|
-
|
|
42
|
-
const TableActionMenu: React.FC<TableActionMenuProps> = ({ items }) => {
|
|
43
|
-
const [isMenuOpen, setIsMenuOpen] = useState(false);
|
|
44
|
-
const [menuPosition, setMenuPosition] = useState({ top: 0, right: 0, openUpward: false });
|
|
45
|
-
const buttonRef = React.useRef<HTMLButtonElement>(null);
|
|
46
|
-
|
|
47
|
-
const handleToggle = () => {
|
|
48
|
-
if (!isMenuOpen && buttonRef.current) {
|
|
49
|
-
const rect = buttonRef.current.getBoundingClientRect();
|
|
50
|
-
const spacing = 8;
|
|
51
|
-
|
|
52
|
-
const estimatedMenuHeight = items.length * 40 + 16;
|
|
53
|
-
const spaceBelow = window.innerHeight - rect.bottom;
|
|
54
|
-
const spaceAbove = rect.top;
|
|
55
|
-
|
|
56
|
-
const shouldOpenUpward = spaceBelow < estimatedMenuHeight && spaceAbove > spaceBelow;
|
|
57
|
-
|
|
58
|
-
setMenuPosition({
|
|
59
|
-
top: shouldOpenUpward ? rect.top - spacing : rect.bottom + spacing,
|
|
60
|
-
right: window.innerWidth - rect.right,
|
|
61
|
-
openUpward: shouldOpenUpward
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
setIsMenuOpen(!isMenuOpen);
|
|
65
|
-
};
|
|
66
|
-
|
|
67
|
-
return (
|
|
68
|
-
<div className="relative">
|
|
69
|
-
<button
|
|
70
|
-
ref={buttonRef}
|
|
71
|
-
onClick={handleToggle}
|
|
72
|
-
className="w-8 h-8 relative flex items-center justify-center hover:opacity-80 transition-opacity flex-shrink-0"
|
|
73
|
-
>
|
|
74
|
-
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" className="absolute inset-0">
|
|
75
|
-
<circle cx="16" cy="16" r="16" className="fill-surface-action-soft" />
|
|
76
|
-
</svg>
|
|
77
|
-
{isMenuOpen ? (
|
|
78
|
-
<IconCross size={16} className="relative z-10 text-fill-action" />
|
|
79
|
-
) : (
|
|
80
|
-
<span className="relative z-10">
|
|
81
|
-
<ThreeDotsIcon />
|
|
82
|
-
</span>
|
|
83
|
-
)}
|
|
84
|
-
</button>
|
|
85
|
-
|
|
86
|
-
{/* Dropdown Menu */}
|
|
87
|
-
{isMenuOpen && (
|
|
88
|
-
<>
|
|
89
|
-
<div
|
|
90
|
-
className="fixed inset-0 z-40"
|
|
91
|
-
onClick={() => setIsMenuOpen(false)}
|
|
92
|
-
/>
|
|
93
|
-
<div
|
|
94
|
-
className="fixed min-w-[160px] max-w-[240px] w-auto bg-surface-primary rounded-[16px] overflow-hidden z-50 animate-scale-in"
|
|
95
|
-
style={{
|
|
96
|
-
boxShadow: '0 4px 12px rgba(20, 33, 90, 0.2)',
|
|
97
|
-
[menuPosition.openUpward ? 'bottom' : 'top']: menuPosition.openUpward
|
|
98
|
-
? `${window.innerHeight - menuPosition.top}px`
|
|
99
|
-
: `${menuPosition.top}px`,
|
|
100
|
-
right: `${menuPosition.right}px`
|
|
101
|
-
}}
|
|
102
|
-
>
|
|
103
|
-
{items.map((item, index) => (
|
|
104
|
-
<button
|
|
105
|
-
key={index}
|
|
106
|
-
onClick={() => {
|
|
107
|
-
item.onClick();
|
|
108
|
-
setIsMenuOpen(false);
|
|
109
|
-
}}
|
|
110
|
-
className={`w-full text-left px-4 py-3 text-[13px] font-medium transition-colors whitespace-nowrap ${
|
|
111
|
-
item.variant === 'danger'
|
|
112
|
-
? 'text-label-danger hover:bg-surface-danger-soft-hover'
|
|
113
|
-
: 'text-label-primary hover:bg-surface-primary-hover'
|
|
114
|
-
}`}
|
|
115
|
-
>
|
|
116
|
-
{item.label}
|
|
117
|
-
</button>
|
|
118
|
-
))}
|
|
119
|
-
</div>
|
|
120
|
-
</>
|
|
121
|
-
)}
|
|
122
|
-
</div>
|
|
123
|
-
);
|
|
124
|
-
};
|
|
125
|
-
|
|
126
|
-
export default TableActionMenu;
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
import { createContext, useContext, useEffect, useState, useCallback } from "react"
|
|
2
|
-
import { supabase } from "@/integrations/supabase/client"
|
|
3
|
-
|
|
4
|
-
type Theme = "light" | "dark" | "system"
|
|
5
|
-
|
|
6
|
-
type ThemeProviderProps = {
|
|
7
|
-
children: React.ReactNode
|
|
8
|
-
defaultTheme?: Theme
|
|
9
|
-
storageKey?: string
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
type ThemeProviderState = {
|
|
13
|
-
theme: Theme
|
|
14
|
-
setTheme: (theme: Theme) => void
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
const initialState: ThemeProviderState = {
|
|
18
|
-
theme: "system",
|
|
19
|
-
setTheme: () => null,
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
const ThemeProviderContext = createContext<ThemeProviderState>(initialState)
|
|
23
|
-
|
|
24
|
-
export function ThemeProvider({
|
|
25
|
-
children,
|
|
26
|
-
defaultTheme = "system",
|
|
27
|
-
storageKey = "ui-theme",
|
|
28
|
-
...props
|
|
29
|
-
}: ThemeProviderProps) {
|
|
30
|
-
const [theme, setThemeState] = useState<Theme>(
|
|
31
|
-
() => (localStorage.getItem(storageKey) as Theme) || defaultTheme
|
|
32
|
-
)
|
|
33
|
-
|
|
34
|
-
// Sync theme from database on auth
|
|
35
|
-
useEffect(() => {
|
|
36
|
-
const loadThemeFromDb = async () => {
|
|
37
|
-
const { data: { user } } = await supabase.auth.getUser()
|
|
38
|
-
if (!user) return
|
|
39
|
-
|
|
40
|
-
const { data } = await supabase
|
|
41
|
-
.from('profiles')
|
|
42
|
-
.select('theme_preference')
|
|
43
|
-
.eq('id', user.id)
|
|
44
|
-
.single()
|
|
45
|
-
|
|
46
|
-
if (data?.theme_preference && data.theme_preference !== theme) {
|
|
47
|
-
const dbTheme = data.theme_preference as Theme
|
|
48
|
-
localStorage.setItem(storageKey, dbTheme)
|
|
49
|
-
setThemeState(dbTheme)
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
loadThemeFromDb()
|
|
54
|
-
|
|
55
|
-
const { data: { subscription } } = supabase.auth.onAuthStateChange((event) => {
|
|
56
|
-
if (event === 'SIGNED_IN') {
|
|
57
|
-
loadThemeFromDb()
|
|
58
|
-
}
|
|
59
|
-
})
|
|
60
|
-
|
|
61
|
-
return () => subscription.unsubscribe()
|
|
62
|
-
}, [])
|
|
63
|
-
|
|
64
|
-
// Apply theme to DOM
|
|
65
|
-
useEffect(() => {
|
|
66
|
-
const root = window.document.documentElement
|
|
67
|
-
|
|
68
|
-
const applyTheme = (resolvedTheme: "light" | "dark") => {
|
|
69
|
-
root.classList.remove("light", "dark")
|
|
70
|
-
root.classList.add(resolvedTheme)
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
if (theme === "system") {
|
|
74
|
-
const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)")
|
|
75
|
-
const systemTheme = mediaQuery.matches ? "dark" : "light"
|
|
76
|
-
applyTheme(systemTheme)
|
|
77
|
-
|
|
78
|
-
const handleChange = (e: MediaQueryListEvent) => {
|
|
79
|
-
applyTheme(e.matches ? "dark" : "light")
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
mediaQuery.addEventListener("change", handleChange)
|
|
83
|
-
return () => mediaQuery.removeEventListener("change", handleChange)
|
|
84
|
-
} else {
|
|
85
|
-
applyTheme(theme)
|
|
86
|
-
}
|
|
87
|
-
}, [theme])
|
|
88
|
-
|
|
89
|
-
const setTheme = useCallback(async (newTheme: Theme) => {
|
|
90
|
-
localStorage.setItem(storageKey, newTheme)
|
|
91
|
-
setThemeState(newTheme)
|
|
92
|
-
|
|
93
|
-
// Persist to database
|
|
94
|
-
const { data: { user } } = await supabase.auth.getUser()
|
|
95
|
-
if (user) {
|
|
96
|
-
await supabase
|
|
97
|
-
.from('profiles')
|
|
98
|
-
.update({ theme_preference: newTheme })
|
|
99
|
-
.eq('id', user.id)
|
|
100
|
-
}
|
|
101
|
-
}, [storageKey])
|
|
102
|
-
|
|
103
|
-
const value = { theme, setTheme }
|
|
104
|
-
|
|
105
|
-
return (
|
|
106
|
-
<ThemeProviderContext.Provider {...props} value={value}>
|
|
107
|
-
{children}
|
|
108
|
-
</ThemeProviderContext.Provider>
|
|
109
|
-
)
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
export const useTheme = () => {
|
|
113
|
-
const context = useContext(ThemeProviderContext)
|
|
114
|
-
|
|
115
|
-
if (context === undefined)
|
|
116
|
-
throw new Error("useTheme must be used within a ThemeProvider")
|
|
117
|
-
|
|
118
|
-
return context
|
|
119
|
-
}
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { useTheme } from './ThemeProvider';
|
|
3
|
-
import { RadioGroup, RadioGroupItem } from './ui/radio-group';
|
|
4
|
-
import { Label } from './ui/label';
|
|
5
|
-
import { LightModeIcon, DarkModeIcon, SystemModeIcon } from './icons/ThemeIcons';
|
|
6
|
-
|
|
7
|
-
const ThemeSettings: React.FC = () => {
|
|
8
|
-
const { theme, setTheme } = useTheme();
|
|
9
|
-
|
|
10
|
-
return (
|
|
11
|
-
<div className="flex flex-col gap-4 p-2 self-stretch bg-surface-primary rounded-lg">
|
|
12
|
-
<h3 className="text-label-primary text-xl font-semibold px-2">Theme</h3>
|
|
13
|
-
|
|
14
|
-
<RadioGroup value={theme} onValueChange={(value) => setTheme(value as "light" | "dark" | "system")} className="flex flex-col gap-2">
|
|
15
|
-
<Label
|
|
16
|
-
htmlFor="light"
|
|
17
|
-
className="flex p-2 items-center gap-3 rounded-lg cursor-pointer hover:bg-surface-primary-hover transition-colors"
|
|
18
|
-
>
|
|
19
|
-
<div className="flex flex-col items-center justify-center gap-2 px-2 pb-2 pt-1 bg-surface-secondary rounded flex-shrink-0 w-[60px]">
|
|
20
|
-
<LightModeIcon />
|
|
21
|
-
<div className="flex items-center justify-center w-full">
|
|
22
|
-
<RadioGroupItem value="light" id="light" />
|
|
23
|
-
</div>
|
|
24
|
-
</div>
|
|
25
|
-
<div className="flex flex-col flex-1 min-w-0">
|
|
26
|
-
<span className="text-label-primary text-base font-semibold leading-tight">Light Mode</span>
|
|
27
|
-
<p className="text-label-secondary text-sm font-normal leading-normal">
|
|
28
|
-
Adopt a brighter, lighter theme.
|
|
29
|
-
</p>
|
|
30
|
-
</div>
|
|
31
|
-
</Label>
|
|
32
|
-
|
|
33
|
-
<Label
|
|
34
|
-
htmlFor="dark"
|
|
35
|
-
className="flex p-2 items-center gap-3 rounded-lg cursor-pointer hover:bg-surface-primary-hover transition-colors"
|
|
36
|
-
>
|
|
37
|
-
<div className="flex flex-col items-center justify-center gap-2 px-2 pb-2 pt-1 bg-surface-secondary rounded flex-shrink-0 w-[60px]">
|
|
38
|
-
<DarkModeIcon />
|
|
39
|
-
<div className="flex items-center justify-center w-full">
|
|
40
|
-
<RadioGroupItem value="dark" id="dark" />
|
|
41
|
-
</div>
|
|
42
|
-
</div>
|
|
43
|
-
<div className="flex flex-col flex-1 min-w-0">
|
|
44
|
-
<span className="text-label-primary text-base font-semibold leading-tight">Dark Mode</span>
|
|
45
|
-
<p className="text-label-secondary text-sm font-normal leading-normal">
|
|
46
|
-
Adopt a darker, richer theme.
|
|
47
|
-
</p>
|
|
48
|
-
</div>
|
|
49
|
-
</Label>
|
|
50
|
-
|
|
51
|
-
<Label
|
|
52
|
-
htmlFor="system"
|
|
53
|
-
className="flex p-2 items-center gap-3 rounded-lg cursor-pointer hover:bg-surface-primary-hover transition-colors"
|
|
54
|
-
>
|
|
55
|
-
<div className="flex flex-col items-center justify-center gap-2 px-2 pb-2 pt-1 bg-surface-secondary rounded flex-shrink-0 w-[60px]">
|
|
56
|
-
<SystemModeIcon />
|
|
57
|
-
<div className="flex items-center justify-center w-full">
|
|
58
|
-
<RadioGroupItem value="system" id="system" />
|
|
59
|
-
</div>
|
|
60
|
-
</div>
|
|
61
|
-
<div className="flex flex-col flex-1 min-w-0">
|
|
62
|
-
<span className="text-label-primary text-base font-semibold leading-tight">System</span>
|
|
63
|
-
<p className="text-label-secondary text-sm font-normal leading-normal">
|
|
64
|
-
Switch theme based on device settings.
|
|
65
|
-
</p>
|
|
66
|
-
</div>
|
|
67
|
-
</Label>
|
|
68
|
-
</RadioGroup>
|
|
69
|
-
</div>
|
|
70
|
-
);
|
|
71
|
-
};
|
|
72
|
-
|
|
73
|
-
export default ThemeSettings;
|