@licklist/design 0.78.5-dev.107 → 0.78.5-dev.109
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/bitbucket-pipelines.yml +4 -13
- package/dist/Maintenance/Maintenance.scss.js +1 -1
- package/dist/index.js +2 -0
- package/dist/product-set/form/ProductsControl.d.ts +1 -2
- package/dist/product-set/form/ProductsControl.d.ts.map +1 -1
- package/dist/product-set/form/ProductsControl.js +24 -0
- package/dist/v2/components/ActionMenu/ActionMenu.scss.js +1 -1
- package/dist/v2/components/Badge/Badge.scss.js +1 -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.map +1 -1
- package/dist/v2/components/DataTable/DataTable.js +2 -86
- package/dist/v2/components/IconButton/IconButton.scss.js +1 -1
- package/dist/v2/components/Modal/DeleteModal.d.ts.map +1 -1
- package/dist/v2/components/Modal/DeleteModal.js +11 -13
- package/dist/v2/components/Modal/DeleteModal.scss.js +1 -1
- package/dist/v2/components/NPSScore/NPSScore.scss.js +1 -1
- package/dist/v2/components/NewTabs/NewTabs.scss.js +1 -1
- package/dist/v2/components/PeriodCard/PeriodCard.d.ts +66 -0
- package/dist/v2/components/PeriodCard/PeriodCard.d.ts.map +1 -0
- package/dist/v2/components/PeriodCard/PeriodCard.js +351 -0
- package/dist/v2/components/PeriodCard/PeriodCard.scss.js +6 -0
- package/dist/v2/components/PeriodCard/index.d.ts +3 -0
- package/dist/v2/components/PeriodCard/index.d.ts.map +1 -0
- package/dist/v2/components/ReorderRow/ReorderRow.d.ts +24 -0
- package/dist/v2/components/ReorderRow/ReorderRow.d.ts.map +1 -0
- package/dist/v2/components/ReorderRow/ReorderRow.js +109 -0
- package/dist/v2/components/ReorderRow/ReorderRow.scss.js +6 -0
- package/dist/v2/components/ReorderRow/index.d.ts +3 -0
- package/dist/v2/components/ReorderRow/index.d.ts.map +1 -0
- package/dist/v2/components/Select/Select.scss.js +1 -1
- package/dist/v2/components/StatusBadge/StatusBadge.scss.js +1 -1
- package/dist/v2/components/StepIndicator/StepIndicator.scss.js +1 -1
- package/dist/v2/components/Tabs/Tabs.scss.js +1 -1
- package/dist/v2/components/Toggle/Toggle.d.ts.map +1 -1
- package/dist/v2/components/Toggle/Toggle.js +5 -8
- package/dist/v2/components/Tooltip/Tooltip.scss.js +1 -1
- package/dist/v2/components/UserAvatar/UserAvatar.scss.js +1 -1
- package/dist/v2/components/UserPanel/UserPanel.scss.js +1 -1
- package/dist/v2/components/WYSIWYGEditor/WYSIWYGEditor.scss.js +1 -1
- package/dist/v2/components/ZoneCard/ZoneCard.scss.js +1 -1
- package/dist/v2/components/index.d.ts +4 -0
- package/dist/v2/components/index.d.ts.map +1 -1
- package/dist/v2/dashboard-analytics/chart/Chart.scss.js +1 -1
- package/dist/v2/dashboard-analytics/metric-card/MetricCard.scss.js +1 -1
- package/dist/v2/dashboard-analytics/venue-card/VenueCard.scss.js +1 -1
- package/dist/v2/dashboard-analytics/venue-closed-card/VenueClosedCard.scss.js +1 -1
- package/dist/v2/icons/index.js +16 -1
- package/dist/v2/index.d.ts +8 -0
- package/dist/v2/index.d.ts.map +1 -1
- package/dist/v2/navigation/DashboardLayout/AdminSidebar.scss.js +1 -1
- package/dist/v2/navigation/DashboardLayout/DashboardLayout.scss.js +1 -1
- package/dist/v2/navigation/DashboardLayout/ProviderSidebar.scss.js +1 -1
- package/dist/v2/navigation/DashboardLayout/TopNavigation.scss.js +1 -1
- package/dist/v2/pages/Settings/SettingsTabs.scss.js +1 -1
- package/dist/v2/pages/Settings/components/SidebarCustomisation.js +5 -0
- package/dist/v2/pages/Settings/components/SidebarCustomisation.scss.js +1 -1
- package/dist/v2/pages/Settings/components/SidebarNavItem.js +5 -0
- package/dist/v2/pages/auth/AuthLayout/AuthLayout.scss.js +1 -1
- 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/form/NewInput.scss.js +1 -1
- package/package.json +6 -6
- package/rollup.config.js +2 -16
- package/src/iframe/payment/payment-status-page/PaymentStatusPage.tsx +1 -1
- package/src/product-set/form/ProductsControl.tsx +1 -2
- package/src/v2/components/DataTable/DataTable.tsx +1 -23
- package/src/v2/components/Modal/DeleteModal.tsx +20 -12
- package/src/v2/components/PeriodCard/PeriodCard.scss +157 -0
- package/src/v2/components/PeriodCard/PeriodCard.stories.tsx +245 -0
- package/src/v2/components/PeriodCard/PeriodCard.tsx +350 -0
- package/src/v2/components/PeriodCard/index.ts +8 -0
- package/src/v2/components/ReorderRow/ReorderRow.scss +68 -0
- package/src/v2/components/ReorderRow/ReorderRow.stories.tsx +124 -0
- package/src/v2/components/ReorderRow/ReorderRow.tsx +88 -0
- package/src/v2/components/ReorderRow/index.ts +2 -0
- package/src/v2/components/Toggle/Toggle.tsx +5 -6
- package/src/v2/components/index.ts +6 -0
- package/src/v2/index.ts +82 -0
- 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 +20 -0
- package/src/v2/shadcn/_reference/auth/LoginFooter.tsx +14 -0
- package/src/v2/shadcn/_reference/auth/LoginForm.tsx +205 -0
- package/src/v2/shadcn/_reference/auth/LoginPanel.tsx +41 -0
- package/src/v2/shadcn/_reference/auth/ResetPasswordForm.tsx +102 -0
- package/src/v2/shadcn/_reference/auth/ResetPasswordPanel.tsx +20 -0
- package/src/v2/shadcn/_reference/auth/VerifyEmailForm.tsx +95 -0
- package/src/v2/shadcn/_reference/auth/VerifyEmailPanel.tsx +20 -0
- package/src/v2/shadcn/_reference/email/EmailAttachment.tsx +119 -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 +136 -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/.vscode/settings.json +0 -3
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import * as PopoverPrimitive from "@radix-ui/react-popover";
|
|
3
|
+
|
|
4
|
+
import { cn } from "../../lib/utils";
|
|
5
|
+
|
|
6
|
+
const Popover = PopoverPrimitive.Root;
|
|
7
|
+
|
|
8
|
+
const PopoverTrigger = PopoverPrimitive.Trigger;
|
|
9
|
+
|
|
10
|
+
const PopoverContent = React.forwardRef<
|
|
11
|
+
React.ElementRef<typeof PopoverPrimitive.Content>,
|
|
12
|
+
React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>
|
|
13
|
+
>(({ className, align = "center", sideOffset = 4, ...props }, ref) => (
|
|
14
|
+
<PopoverPrimitive.Portal>
|
|
15
|
+
<PopoverPrimitive.Content
|
|
16
|
+
ref={ref}
|
|
17
|
+
align={align}
|
|
18
|
+
sideOffset={sideOffset}
|
|
19
|
+
className={cn(
|
|
20
|
+
"z-50 w-72 rounded-2xl border border-border-primary bg-surface-primary p-4 text-label-primary shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
|
|
21
|
+
className,
|
|
22
|
+
)}
|
|
23
|
+
{...props}
|
|
24
|
+
/>
|
|
25
|
+
</PopoverPrimitive.Portal>
|
|
26
|
+
));
|
|
27
|
+
PopoverContent.displayName = PopoverPrimitive.Content.displayName;
|
|
28
|
+
|
|
29
|
+
export { Popover, PopoverTrigger, PopoverContent };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react'
|
|
2
|
+
import { Progress } from './progress'
|
|
3
|
+
|
|
4
|
+
export default {
|
|
5
|
+
title: 'v2/Shadcn/Progress',
|
|
6
|
+
component: Progress,
|
|
7
|
+
parameters: { layout: 'padded' },
|
|
8
|
+
} as Meta<typeof Progress>
|
|
9
|
+
|
|
10
|
+
type Story = StoryObj<typeof Progress>
|
|
11
|
+
|
|
12
|
+
export const Default: Story = { args: { value: 60, className: 'w-[60%]' } }
|
|
13
|
+
export const Empty: Story = { args: { value: 0, className: 'w-[60%]' } }
|
|
14
|
+
export const Quarter: Story = { args: { value: 25, className: 'w-[60%]' } }
|
|
15
|
+
export const Half: Story = { args: { value: 50, className: 'w-[60%]' } }
|
|
16
|
+
export const ThreeQuarter: Story = { args: { value: 75, className: 'w-[60%]' } }
|
|
17
|
+
export const Full: Story = { args: { value: 100, className: 'w-[60%]' } }
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import * as ProgressPrimitive from "@radix-ui/react-progress";
|
|
3
|
+
|
|
4
|
+
import { cn } from "../../lib/utils";
|
|
5
|
+
|
|
6
|
+
const Progress = React.forwardRef<
|
|
7
|
+
React.ElementRef<typeof ProgressPrimitive.Root>,
|
|
8
|
+
React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>
|
|
9
|
+
>(({ className, value, ...props }, ref) => (
|
|
10
|
+
<ProgressPrimitive.Root
|
|
11
|
+
ref={ref}
|
|
12
|
+
className={cn("relative h-4 w-full overflow-hidden rounded-full bg-surface-secondary", className)}
|
|
13
|
+
{...props}
|
|
14
|
+
>
|
|
15
|
+
<ProgressPrimitive.Indicator
|
|
16
|
+
className="h-full w-full flex-1 bg-fill-action transition-all"
|
|
17
|
+
style={{ transform: `translateX(-${100 - (value || 0)}%)` }}
|
|
18
|
+
/>
|
|
19
|
+
</ProgressPrimitive.Root>
|
|
20
|
+
));
|
|
21
|
+
Progress.displayName = ProgressPrimitive.Root.displayName;
|
|
22
|
+
|
|
23
|
+
export { Progress };
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import type { Meta, StoryObj } from '@storybook/react'
|
|
3
|
+
import { RadioCard } from './radio-card'
|
|
4
|
+
import { RadioGroup } from './radio-group'
|
|
5
|
+
|
|
6
|
+
function RadioCardDefault() {
|
|
7
|
+
const [value, setValue] = React.useState('manager')
|
|
8
|
+
return (
|
|
9
|
+
<RadioGroup value={value} onValueChange={setValue} className="max-w-md">
|
|
10
|
+
<RadioCard
|
|
11
|
+
value="manager"
|
|
12
|
+
id="rc-manager"
|
|
13
|
+
title="Manager"
|
|
14
|
+
subtitle="Full access to manage the provider"
|
|
15
|
+
/>
|
|
16
|
+
<RadioCard
|
|
17
|
+
value="viewer"
|
|
18
|
+
id="rc-viewer"
|
|
19
|
+
title="Viewer"
|
|
20
|
+
subtitle="Read-only access to view data"
|
|
21
|
+
/>
|
|
22
|
+
<RadioCard
|
|
23
|
+
value="editor"
|
|
24
|
+
id="rc-editor"
|
|
25
|
+
title="Editor"
|
|
26
|
+
subtitle="Can edit content but not settings"
|
|
27
|
+
/>
|
|
28
|
+
</RadioGroup>
|
|
29
|
+
)
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function RadioCardWithIcons() {
|
|
33
|
+
const [value, setValue] = React.useState('admin')
|
|
34
|
+
return (
|
|
35
|
+
<RadioGroup value={value} onValueChange={setValue} className="max-w-md">
|
|
36
|
+
<RadioCard
|
|
37
|
+
value="admin"
|
|
38
|
+
id="rc-icon-admin"
|
|
39
|
+
title="Admin"
|
|
40
|
+
subtitle="Full system access"
|
|
41
|
+
icon={<span className="text-lg">A</span>}
|
|
42
|
+
/>
|
|
43
|
+
<RadioCard
|
|
44
|
+
value="user"
|
|
45
|
+
id="rc-icon-user"
|
|
46
|
+
title="User"
|
|
47
|
+
subtitle="Standard user access"
|
|
48
|
+
icon={<span className="text-lg">U</span>}
|
|
49
|
+
/>
|
|
50
|
+
</RadioGroup>
|
|
51
|
+
)
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export default {
|
|
55
|
+
title: 'v2/Shadcn/RadioCard',
|
|
56
|
+
component: RadioCard,
|
|
57
|
+
parameters: { layout: 'padded' },
|
|
58
|
+
} as Meta<typeof RadioCard>
|
|
59
|
+
|
|
60
|
+
type Story = StoryObj<typeof RadioCard>
|
|
61
|
+
|
|
62
|
+
export const Default: Story = {
|
|
63
|
+
render: () => React.createElement(RadioCardDefault),
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export const WithIcons: Story = {
|
|
67
|
+
render: () => React.createElement(RadioCardWithIcons),
|
|
68
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { RadioGroupItem } from "./radio-group";
|
|
3
|
+
import { Label } from "./label";
|
|
4
|
+
import { cn } from "../../lib/utils";
|
|
5
|
+
|
|
6
|
+
interface RadioCardProps {
|
|
7
|
+
value: string;
|
|
8
|
+
id: string;
|
|
9
|
+
icon?: React.ReactNode;
|
|
10
|
+
title: string;
|
|
11
|
+
subtitle?: string;
|
|
12
|
+
className?: string;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export const RadioCard = React.forwardRef<HTMLLabelElement, RadioCardProps>(
|
|
16
|
+
({ value, id, icon, title, subtitle, className }, ref) => {
|
|
17
|
+
return (
|
|
18
|
+
<Label
|
|
19
|
+
ref={ref}
|
|
20
|
+
htmlFor={id}
|
|
21
|
+
className={cn(
|
|
22
|
+
"flex flex-1 px-1 py-3 items-center gap-2 rounded-lg cursor-pointer hover:bg-surface-primary-hover transition-colors",
|
|
23
|
+
className
|
|
24
|
+
)}
|
|
25
|
+
>
|
|
26
|
+
{icon && (
|
|
27
|
+
<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]">
|
|
28
|
+
{icon}
|
|
29
|
+
<div className="flex items-center justify-center w-full">
|
|
30
|
+
<RadioGroupItem value={value} id={id} />
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|
|
33
|
+
)}
|
|
34
|
+
{!icon && (
|
|
35
|
+
<div className="flex items-center justify-center px-3">
|
|
36
|
+
<RadioGroupItem value={value} id={id} />
|
|
37
|
+
</div>
|
|
38
|
+
)}
|
|
39
|
+
<div className="flex flex-col flex-1 min-w-0">
|
|
40
|
+
<span className="text-label-primary text-sm font-semibold leading-tight">{title}</span>
|
|
41
|
+
{subtitle && (
|
|
42
|
+
<p className="text-label-secondary text-xs font-normal leading-normal">
|
|
43
|
+
{subtitle}
|
|
44
|
+
</p>
|
|
45
|
+
)}
|
|
46
|
+
</div>
|
|
47
|
+
</Label>
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
);
|
|
51
|
+
|
|
52
|
+
RadioCard.displayName = "RadioCard";
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import type { Meta, StoryObj } from '@storybook/react'
|
|
3
|
+
import { RadioGroup, RadioGroupItem } from './radio-group'
|
|
4
|
+
import { Label } from './label'
|
|
5
|
+
|
|
6
|
+
function RadioGroupDefault() {
|
|
7
|
+
return (
|
|
8
|
+
<RadioGroup defaultValue="option-1">
|
|
9
|
+
<div className="flex items-center space-x-2">
|
|
10
|
+
<RadioGroupItem value="option-1" id="option-1" />
|
|
11
|
+
<Label htmlFor="option-1">Option One</Label>
|
|
12
|
+
</div>
|
|
13
|
+
<div className="flex items-center space-x-2">
|
|
14
|
+
<RadioGroupItem value="option-2" id="option-2" />
|
|
15
|
+
<Label htmlFor="option-2">Option Two</Label>
|
|
16
|
+
</div>
|
|
17
|
+
<div className="flex items-center space-x-2">
|
|
18
|
+
<RadioGroupItem value="option-3" id="option-3" />
|
|
19
|
+
<Label htmlFor="option-3">Option Three</Label>
|
|
20
|
+
</div>
|
|
21
|
+
</RadioGroup>
|
|
22
|
+
)
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function RadioGroupDisabled() {
|
|
26
|
+
return (
|
|
27
|
+
<RadioGroup defaultValue="option-1" disabled>
|
|
28
|
+
<div className="flex items-center space-x-2">
|
|
29
|
+
<RadioGroupItem value="option-1" id="d-option-1" />
|
|
30
|
+
<Label htmlFor="d-option-1">Disabled Option One</Label>
|
|
31
|
+
</div>
|
|
32
|
+
<div className="flex items-center space-x-2">
|
|
33
|
+
<RadioGroupItem value="option-2" id="d-option-2" />
|
|
34
|
+
<Label htmlFor="d-option-2">Disabled Option Two</Label>
|
|
35
|
+
</div>
|
|
36
|
+
</RadioGroup>
|
|
37
|
+
)
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function RadioGroupHorizontal() {
|
|
41
|
+
return (
|
|
42
|
+
<RadioGroup defaultValue="a" className="flex flex-row gap-4">
|
|
43
|
+
<div className="flex items-center space-x-2">
|
|
44
|
+
<RadioGroupItem value="a" id="h-a" />
|
|
45
|
+
<Label htmlFor="h-a">A</Label>
|
|
46
|
+
</div>
|
|
47
|
+
<div className="flex items-center space-x-2">
|
|
48
|
+
<RadioGroupItem value="b" id="h-b" />
|
|
49
|
+
<Label htmlFor="h-b">B</Label>
|
|
50
|
+
</div>
|
|
51
|
+
<div className="flex items-center space-x-2">
|
|
52
|
+
<RadioGroupItem value="c" id="h-c" />
|
|
53
|
+
<Label htmlFor="h-c">C</Label>
|
|
54
|
+
</div>
|
|
55
|
+
</RadioGroup>
|
|
56
|
+
)
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export default {
|
|
60
|
+
title: 'v2/Shadcn/RadioGroup',
|
|
61
|
+
component: RadioGroup,
|
|
62
|
+
parameters: { layout: 'padded' },
|
|
63
|
+
} as Meta<typeof RadioGroup>
|
|
64
|
+
|
|
65
|
+
type Story = StoryObj<typeof RadioGroup>
|
|
66
|
+
|
|
67
|
+
export const Default: Story = {
|
|
68
|
+
render: () => React.createElement(RadioGroupDefault),
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export const Disabled: Story = {
|
|
72
|
+
render: () => React.createElement(RadioGroupDisabled),
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export const Horizontal: Story = {
|
|
76
|
+
render: () => React.createElement(RadioGroupHorizontal),
|
|
77
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
|
|
3
|
+
|
|
4
|
+
import { cn } from "../../lib/utils";
|
|
5
|
+
|
|
6
|
+
const RadioGroup = React.forwardRef<
|
|
7
|
+
React.ElementRef<typeof RadioGroupPrimitive.Root>,
|
|
8
|
+
React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>
|
|
9
|
+
>(({ className, ...props }, ref) => {
|
|
10
|
+
return <RadioGroupPrimitive.Root className={cn("grid gap-2", className)} {...props} ref={ref} />;
|
|
11
|
+
});
|
|
12
|
+
RadioGroup.displayName = RadioGroupPrimitive.Root.displayName;
|
|
13
|
+
|
|
14
|
+
const RadioGroupItem = React.forwardRef<
|
|
15
|
+
React.ElementRef<typeof RadioGroupPrimitive.Item>,
|
|
16
|
+
React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>
|
|
17
|
+
>(({ className, ...props }, ref) => {
|
|
18
|
+
return (
|
|
19
|
+
<RadioGroupPrimitive.Item
|
|
20
|
+
ref={ref}
|
|
21
|
+
className={cn(
|
|
22
|
+
"aspect-square h-4 w-4 rounded-full border border-border-primary bg-surface-primary focus:outline-none focus-visible:border-border-selected disabled:cursor-not-allowed disabled:opacity-50",
|
|
23
|
+
className,
|
|
24
|
+
)}
|
|
25
|
+
{...props}
|
|
26
|
+
>
|
|
27
|
+
<RadioGroupPrimitive.Indicator className="flex items-center justify-center h-full w-full">
|
|
28
|
+
<div className="h-2.5 w-2.5 rounded-full bg-fill-primary" />
|
|
29
|
+
</RadioGroupPrimitive.Indicator>
|
|
30
|
+
</RadioGroupPrimitive.Item>
|
|
31
|
+
);
|
|
32
|
+
});
|
|
33
|
+
RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
|
|
34
|
+
|
|
35
|
+
export { RadioGroup, RadioGroupItem };
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import type { Meta, StoryObj } from '@storybook/react'
|
|
3
|
+
import { ScrollArea, ScrollBar } from './scroll-area'
|
|
4
|
+
import { Separator } from './separator'
|
|
5
|
+
|
|
6
|
+
const tags = Array.from({ length: 50 }).map((_, i) => `Tag ${i + 1}`)
|
|
7
|
+
|
|
8
|
+
function ScrollAreaVertical() {
|
|
9
|
+
return (
|
|
10
|
+
<ScrollArea className="h-72 w-48 rounded-md border border-border-primary">
|
|
11
|
+
<div className="p-4">
|
|
12
|
+
<h4 className="mb-4 text-sm font-medium leading-none">Tags</h4>
|
|
13
|
+
{tags.map((tag) => (
|
|
14
|
+
<div key={tag}>
|
|
15
|
+
<div className="text-sm">{tag}</div>
|
|
16
|
+
<Separator className="my-2" />
|
|
17
|
+
</div>
|
|
18
|
+
))}
|
|
19
|
+
</div>
|
|
20
|
+
</ScrollArea>
|
|
21
|
+
)
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function ScrollAreaHorizontal() {
|
|
25
|
+
return (
|
|
26
|
+
<ScrollArea className="w-96 whitespace-nowrap rounded-md border border-border-primary">
|
|
27
|
+
<div className="flex w-max space-x-4 p-4">
|
|
28
|
+
{Array.from({ length: 20 }).map((_, i) => (
|
|
29
|
+
<div
|
|
30
|
+
key={i}
|
|
31
|
+
className="flex h-20 w-32 shrink-0 items-center justify-center rounded-md bg-surface-secondary text-sm"
|
|
32
|
+
>
|
|
33
|
+
Item {i + 1}
|
|
34
|
+
</div>
|
|
35
|
+
))}
|
|
36
|
+
</div>
|
|
37
|
+
<ScrollBar orientation="horizontal" />
|
|
38
|
+
</ScrollArea>
|
|
39
|
+
)
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export default {
|
|
43
|
+
title: 'v2/Shadcn/ScrollArea',
|
|
44
|
+
component: ScrollArea,
|
|
45
|
+
parameters: { layout: 'padded' },
|
|
46
|
+
} as Meta<typeof ScrollArea>
|
|
47
|
+
|
|
48
|
+
type Story = StoryObj<typeof ScrollArea>
|
|
49
|
+
|
|
50
|
+
export const Vertical: Story = {
|
|
51
|
+
render: () => React.createElement(ScrollAreaVertical),
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export const Horizontal: Story = {
|
|
55
|
+
render: () => React.createElement(ScrollAreaHorizontal),
|
|
56
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
|
|
3
|
+
|
|
4
|
+
import { cn } from "../../lib/utils";
|
|
5
|
+
|
|
6
|
+
const ScrollArea = React.forwardRef<
|
|
7
|
+
React.ElementRef<typeof ScrollAreaPrimitive.Root>,
|
|
8
|
+
React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>
|
|
9
|
+
>(({ className, children, ...props }, ref) => (
|
|
10
|
+
<ScrollAreaPrimitive.Root ref={ref} className={cn("relative overflow-hidden", className)} {...props}>
|
|
11
|
+
<ScrollAreaPrimitive.Viewport className="h-full w-full rounded-[inherit]">{children}</ScrollAreaPrimitive.Viewport>
|
|
12
|
+
<ScrollBar />
|
|
13
|
+
<ScrollAreaPrimitive.Corner />
|
|
14
|
+
</ScrollAreaPrimitive.Root>
|
|
15
|
+
));
|
|
16
|
+
ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
|
|
17
|
+
|
|
18
|
+
const ScrollBar = React.forwardRef<
|
|
19
|
+
React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,
|
|
20
|
+
React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>
|
|
21
|
+
>(({ className, orientation = "vertical", ...props }, ref) => (
|
|
22
|
+
<ScrollAreaPrimitive.ScrollAreaScrollbar
|
|
23
|
+
ref={ref}
|
|
24
|
+
orientation={orientation}
|
|
25
|
+
className={cn(
|
|
26
|
+
"flex touch-none select-none transition-colors",
|
|
27
|
+
orientation === "vertical" && "h-full w-2.5 border-l border-l-transparent p-[1px]",
|
|
28
|
+
orientation === "horizontal" && "h-2.5 flex-col border-t border-t-transparent p-[1px]",
|
|
29
|
+
className,
|
|
30
|
+
)}
|
|
31
|
+
{...props}
|
|
32
|
+
>
|
|
33
|
+
<ScrollAreaPrimitive.ScrollAreaThumb className="relative flex-1 rounded-full bg-border" />
|
|
34
|
+
</ScrollAreaPrimitive.ScrollAreaScrollbar>
|
|
35
|
+
));
|
|
36
|
+
ScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;
|
|
37
|
+
|
|
38
|
+
export { ScrollArea, ScrollBar };
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react'
|
|
2
|
+
import { Select, SelectTrigger, SelectValue, SelectContent, SelectItem, SelectGroup, SelectLabel } from './select'
|
|
3
|
+
|
|
4
|
+
export default {
|
|
5
|
+
title: 'v2/Shadcn/Select',
|
|
6
|
+
component: Select,
|
|
7
|
+
parameters: { layout: 'padded' },
|
|
8
|
+
} as Meta<typeof Select>
|
|
9
|
+
|
|
10
|
+
type Story = StoryObj<typeof Select>
|
|
11
|
+
|
|
12
|
+
export const Default: Story = {
|
|
13
|
+
render: () => (
|
|
14
|
+
<Select>
|
|
15
|
+
<SelectTrigger className="w-48">
|
|
16
|
+
<SelectValue placeholder="Select a fruit" />
|
|
17
|
+
</SelectTrigger>
|
|
18
|
+
<SelectContent>
|
|
19
|
+
<SelectItem value="apple">Apple</SelectItem>
|
|
20
|
+
<SelectItem value="banana">Banana</SelectItem>
|
|
21
|
+
<SelectItem value="cherry">Cherry</SelectItem>
|
|
22
|
+
</SelectContent>
|
|
23
|
+
</Select>
|
|
24
|
+
),
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export const WithGroups: Story = {
|
|
28
|
+
render: () => (
|
|
29
|
+
<Select>
|
|
30
|
+
<SelectTrigger className="w-48">
|
|
31
|
+
<SelectValue placeholder="Select a role" />
|
|
32
|
+
</SelectTrigger>
|
|
33
|
+
<SelectContent>
|
|
34
|
+
<SelectGroup>
|
|
35
|
+
<SelectLabel>Global</SelectLabel>
|
|
36
|
+
<SelectItem value="super_admin">Super Admin</SelectItem>
|
|
37
|
+
<SelectItem value="system_admin">System Admin</SelectItem>
|
|
38
|
+
</SelectGroup>
|
|
39
|
+
<SelectGroup>
|
|
40
|
+
<SelectLabel>Provider</SelectLabel>
|
|
41
|
+
<SelectItem value="manager">Manager</SelectItem>
|
|
42
|
+
<SelectItem value="staff">Staff</SelectItem>
|
|
43
|
+
</SelectGroup>
|
|
44
|
+
</SelectContent>
|
|
45
|
+
</Select>
|
|
46
|
+
),
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export const Disabled: Story = {
|
|
50
|
+
render: () => (
|
|
51
|
+
<Select disabled>
|
|
52
|
+
<SelectTrigger className="w-48">
|
|
53
|
+
<SelectValue placeholder="Disabled" />
|
|
54
|
+
</SelectTrigger>
|
|
55
|
+
<SelectContent>
|
|
56
|
+
<SelectItem value="a">Option A</SelectItem>
|
|
57
|
+
</SelectContent>
|
|
58
|
+
</Select>
|
|
59
|
+
),
|
|
60
|
+
}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import * as SelectPrimitive from "@radix-ui/react-select";
|
|
3
|
+
|
|
4
|
+
import { cn } from "../../lib/utils";
|
|
5
|
+
|
|
6
|
+
const ChevronDown = () => (
|
|
7
|
+
<svg width="11" height="6" viewBox="0 0 11 6" fill="none" className="h-2 w-2">
|
|
8
|
+
<path d="M1 1L5.5 5L10 1" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" className="stroke-fill-secondary" />
|
|
9
|
+
</svg>
|
|
10
|
+
);
|
|
11
|
+
|
|
12
|
+
const ChevronUp = () => (
|
|
13
|
+
<svg width="11" height="6" viewBox="0 0 11 6" fill="none" className="h-2 w-2">
|
|
14
|
+
<path d="M10 5L5.5 1L1 5" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" className="stroke-fill-secondary" />
|
|
15
|
+
</svg>
|
|
16
|
+
);
|
|
17
|
+
|
|
18
|
+
const Select = SelectPrimitive.Root;
|
|
19
|
+
|
|
20
|
+
const SelectGroup = SelectPrimitive.Group;
|
|
21
|
+
|
|
22
|
+
const SelectValue = SelectPrimitive.Value;
|
|
23
|
+
|
|
24
|
+
const SelectTrigger = React.forwardRef<
|
|
25
|
+
React.ElementRef<typeof SelectPrimitive.Trigger>,
|
|
26
|
+
React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>
|
|
27
|
+
>(({ className, children, ...props }, ref) => (
|
|
28
|
+
<SelectPrimitive.Trigger
|
|
29
|
+
ref={ref}
|
|
30
|
+
className={cn(
|
|
31
|
+
"flex h-10 w-full items-center justify-between rounded-md border border-border-primary bg-surface-primary px-3 py-2 text-sm text-label-primary placeholder:text-label-secondary focus:outline-none focus:border-border-selected disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",
|
|
32
|
+
className,
|
|
33
|
+
)}
|
|
34
|
+
{...props}
|
|
35
|
+
>
|
|
36
|
+
{children}
|
|
37
|
+
<SelectPrimitive.Icon asChild>
|
|
38
|
+
<ChevronDown />
|
|
39
|
+
</SelectPrimitive.Icon>
|
|
40
|
+
</SelectPrimitive.Trigger>
|
|
41
|
+
));
|
|
42
|
+
SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
|
|
43
|
+
|
|
44
|
+
const SelectScrollUpButton = React.forwardRef<
|
|
45
|
+
React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,
|
|
46
|
+
React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>
|
|
47
|
+
>(({ className, ...props }, ref) => (
|
|
48
|
+
<SelectPrimitive.ScrollUpButton
|
|
49
|
+
ref={ref}
|
|
50
|
+
className={cn("flex cursor-default items-center justify-center py-1", className)}
|
|
51
|
+
{...props}
|
|
52
|
+
>
|
|
53
|
+
<ChevronUp />
|
|
54
|
+
</SelectPrimitive.ScrollUpButton>
|
|
55
|
+
));
|
|
56
|
+
SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
|
|
57
|
+
|
|
58
|
+
const SelectScrollDownButton = React.forwardRef<
|
|
59
|
+
React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,
|
|
60
|
+
React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>
|
|
61
|
+
>(({ className, ...props }, ref) => (
|
|
62
|
+
<SelectPrimitive.ScrollDownButton
|
|
63
|
+
ref={ref}
|
|
64
|
+
className={cn("flex cursor-default items-center justify-center py-1", className)}
|
|
65
|
+
{...props}
|
|
66
|
+
>
|
|
67
|
+
<ChevronDown />
|
|
68
|
+
</SelectPrimitive.ScrollDownButton>
|
|
69
|
+
));
|
|
70
|
+
SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
|
|
71
|
+
|
|
72
|
+
const SelectContent = React.forwardRef<
|
|
73
|
+
React.ElementRef<typeof SelectPrimitive.Content>,
|
|
74
|
+
React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>
|
|
75
|
+
>(({ className, children, position = "popper", ...props }, ref) => (
|
|
76
|
+
<SelectPrimitive.Portal>
|
|
77
|
+
<SelectPrimitive.Content
|
|
78
|
+
ref={ref}
|
|
79
|
+
className={cn(
|
|
80
|
+
"relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-[16px] bg-surface-primary shadow-[0_4px_12px_rgba(20,33,90,0.2)] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
|
|
81
|
+
position === "popper" &&
|
|
82
|
+
"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
|
|
83
|
+
className,
|
|
84
|
+
)}
|
|
85
|
+
position={position}
|
|
86
|
+
{...props}
|
|
87
|
+
>
|
|
88
|
+
<SelectScrollUpButton />
|
|
89
|
+
<SelectPrimitive.Viewport
|
|
90
|
+
className={cn(
|
|
91
|
+
"",
|
|
92
|
+
position === "popper" &&
|
|
93
|
+
"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]",
|
|
94
|
+
)}
|
|
95
|
+
>
|
|
96
|
+
{children}
|
|
97
|
+
</SelectPrimitive.Viewport>
|
|
98
|
+
<SelectScrollDownButton />
|
|
99
|
+
</SelectPrimitive.Content>
|
|
100
|
+
</SelectPrimitive.Portal>
|
|
101
|
+
));
|
|
102
|
+
SelectContent.displayName = SelectPrimitive.Content.displayName;
|
|
103
|
+
|
|
104
|
+
const SelectLabel = React.forwardRef<
|
|
105
|
+
React.ElementRef<typeof SelectPrimitive.Label>,
|
|
106
|
+
React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>
|
|
107
|
+
>(({ className, ...props }, ref) => (
|
|
108
|
+
<SelectPrimitive.Label ref={ref} className={cn("px-4 py-3 text-[13px] font-semibold text-label-secondary", className)} {...props} />
|
|
109
|
+
));
|
|
110
|
+
SelectLabel.displayName = SelectPrimitive.Label.displayName;
|
|
111
|
+
|
|
112
|
+
const SelectItem = React.forwardRef<
|
|
113
|
+
React.ElementRef<typeof SelectPrimitive.Item>,
|
|
114
|
+
React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>
|
|
115
|
+
>(({ className, children, ...props }, ref) => (
|
|
116
|
+
<SelectPrimitive.Item
|
|
117
|
+
ref={ref}
|
|
118
|
+
className={cn(
|
|
119
|
+
"relative flex w-full cursor-default select-none items-center px-4 py-3 text-[13px] font-medium text-label-primary outline-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 hover:bg-surface-primary-hover focus:bg-surface-primary-hover",
|
|
120
|
+
className,
|
|
121
|
+
)}
|
|
122
|
+
{...props}
|
|
123
|
+
>
|
|
124
|
+
<SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>
|
|
125
|
+
</SelectPrimitive.Item>
|
|
126
|
+
));
|
|
127
|
+
SelectItem.displayName = SelectPrimitive.Item.displayName;
|
|
128
|
+
|
|
129
|
+
const SelectSeparator = React.forwardRef<
|
|
130
|
+
React.ElementRef<typeof SelectPrimitive.Separator>,
|
|
131
|
+
React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>
|
|
132
|
+
>(({ className, ...props }, ref) => (
|
|
133
|
+
<SelectPrimitive.Separator ref={ref} className={cn("-mx-1 my-1 h-px bg-border-primary", className)} {...props} />
|
|
134
|
+
));
|
|
135
|
+
SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
|
|
136
|
+
|
|
137
|
+
export {
|
|
138
|
+
Select,
|
|
139
|
+
SelectGroup,
|
|
140
|
+
SelectValue,
|
|
141
|
+
SelectTrigger,
|
|
142
|
+
SelectContent,
|
|
143
|
+
SelectLabel,
|
|
144
|
+
SelectItem,
|
|
145
|
+
SelectSeparator,
|
|
146
|
+
SelectScrollUpButton,
|
|
147
|
+
SelectScrollDownButton,
|
|
148
|
+
};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react'
|
|
2
|
+
import { Separator } from './separator'
|
|
3
|
+
|
|
4
|
+
export default {
|
|
5
|
+
title: 'v2/Shadcn/Separator',
|
|
6
|
+
component: Separator,
|
|
7
|
+
parameters: { layout: 'padded' },
|
|
8
|
+
} as Meta<typeof Separator>
|
|
9
|
+
|
|
10
|
+
type Story = StoryObj<typeof Separator>
|
|
11
|
+
|
|
12
|
+
export const Horizontal: Story = {
|
|
13
|
+
render: () => (
|
|
14
|
+
<div className="w-64">
|
|
15
|
+
<p className="text-sm">Above</p>
|
|
16
|
+
<Separator className="my-4" />
|
|
17
|
+
<p className="text-sm">Below</p>
|
|
18
|
+
</div>
|
|
19
|
+
),
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export const Vertical: Story = {
|
|
23
|
+
render: () => (
|
|
24
|
+
<div className="flex h-8 items-center gap-4">
|
|
25
|
+
<span className="text-sm">Left</span>
|
|
26
|
+
<Separator orientation="vertical" />
|
|
27
|
+
<span className="text-sm">Right</span>
|
|
28
|
+
</div>
|
|
29
|
+
),
|
|
30
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import * as SeparatorPrimitive from "@radix-ui/react-separator";
|
|
3
|
+
|
|
4
|
+
import { cn } from "../../lib/utils";
|
|
5
|
+
|
|
6
|
+
const Separator = React.forwardRef<
|
|
7
|
+
React.ElementRef<typeof SeparatorPrimitive.Root>,
|
|
8
|
+
React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>
|
|
9
|
+
>(({ className, orientation = "horizontal", decorative = true, ...props }, ref) => (
|
|
10
|
+
<SeparatorPrimitive.Root
|
|
11
|
+
ref={ref}
|
|
12
|
+
decorative={decorative}
|
|
13
|
+
orientation={orientation}
|
|
14
|
+
className={cn("shrink-0 bg-[var(--border-primary)]", orientation === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]", className)}
|
|
15
|
+
{...props}
|
|
16
|
+
/>
|
|
17
|
+
));
|
|
18
|
+
Separator.displayName = SeparatorPrimitive.Root.displayName;
|
|
19
|
+
|
|
20
|
+
export { Separator };
|