@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.
Files changed (414) hide show
  1. package/bitbucket-pipelines.yml +4 -13
  2. package/dist/Maintenance/Maintenance.scss.js +1 -1
  3. package/dist/index.js +2 -0
  4. package/dist/product-set/form/ProductsControl.d.ts +1 -2
  5. package/dist/product-set/form/ProductsControl.d.ts.map +1 -1
  6. package/dist/product-set/form/ProductsControl.js +24 -0
  7. package/dist/v2/components/ActionMenu/ActionMenu.scss.js +1 -1
  8. package/dist/v2/components/Badge/Badge.scss.js +1 -1
  9. package/dist/v2/components/Button/Button.scss.js +1 -1
  10. package/dist/v2/components/Button/GhostButton.scss.js +1 -1
  11. package/dist/v2/components/Checkbox/Checkbox.scss.js +1 -1
  12. package/dist/v2/components/DataTable/DataTable.d.ts.map +1 -1
  13. package/dist/v2/components/DataTable/DataTable.js +2 -86
  14. package/dist/v2/components/IconButton/IconButton.scss.js +1 -1
  15. package/dist/v2/components/Modal/DeleteModal.d.ts.map +1 -1
  16. package/dist/v2/components/Modal/DeleteModal.js +11 -13
  17. package/dist/v2/components/Modal/DeleteModal.scss.js +1 -1
  18. package/dist/v2/components/NPSScore/NPSScore.scss.js +1 -1
  19. package/dist/v2/components/NewTabs/NewTabs.scss.js +1 -1
  20. package/dist/v2/components/PeriodCard/PeriodCard.d.ts +66 -0
  21. package/dist/v2/components/PeriodCard/PeriodCard.d.ts.map +1 -0
  22. package/dist/v2/components/PeriodCard/PeriodCard.js +351 -0
  23. package/dist/v2/components/PeriodCard/PeriodCard.scss.js +6 -0
  24. package/dist/v2/components/PeriodCard/index.d.ts +3 -0
  25. package/dist/v2/components/PeriodCard/index.d.ts.map +1 -0
  26. package/dist/v2/components/ReorderRow/ReorderRow.d.ts +24 -0
  27. package/dist/v2/components/ReorderRow/ReorderRow.d.ts.map +1 -0
  28. package/dist/v2/components/ReorderRow/ReorderRow.js +109 -0
  29. package/dist/v2/components/ReorderRow/ReorderRow.scss.js +6 -0
  30. package/dist/v2/components/ReorderRow/index.d.ts +3 -0
  31. package/dist/v2/components/ReorderRow/index.d.ts.map +1 -0
  32. package/dist/v2/components/Select/Select.scss.js +1 -1
  33. package/dist/v2/components/StatusBadge/StatusBadge.scss.js +1 -1
  34. package/dist/v2/components/StepIndicator/StepIndicator.scss.js +1 -1
  35. package/dist/v2/components/Tabs/Tabs.scss.js +1 -1
  36. package/dist/v2/components/Toggle/Toggle.d.ts.map +1 -1
  37. package/dist/v2/components/Toggle/Toggle.js +5 -8
  38. package/dist/v2/components/Tooltip/Tooltip.scss.js +1 -1
  39. package/dist/v2/components/UserAvatar/UserAvatar.scss.js +1 -1
  40. package/dist/v2/components/UserPanel/UserPanel.scss.js +1 -1
  41. package/dist/v2/components/WYSIWYGEditor/WYSIWYGEditor.scss.js +1 -1
  42. package/dist/v2/components/ZoneCard/ZoneCard.scss.js +1 -1
  43. package/dist/v2/components/index.d.ts +4 -0
  44. package/dist/v2/components/index.d.ts.map +1 -1
  45. package/dist/v2/dashboard-analytics/chart/Chart.scss.js +1 -1
  46. package/dist/v2/dashboard-analytics/metric-card/MetricCard.scss.js +1 -1
  47. package/dist/v2/dashboard-analytics/venue-card/VenueCard.scss.js +1 -1
  48. package/dist/v2/dashboard-analytics/venue-closed-card/VenueClosedCard.scss.js +1 -1
  49. package/dist/v2/icons/index.js +16 -1
  50. package/dist/v2/index.d.ts +8 -0
  51. package/dist/v2/index.d.ts.map +1 -1
  52. package/dist/v2/navigation/DashboardLayout/AdminSidebar.scss.js +1 -1
  53. package/dist/v2/navigation/DashboardLayout/DashboardLayout.scss.js +1 -1
  54. package/dist/v2/navigation/DashboardLayout/ProviderSidebar.scss.js +1 -1
  55. package/dist/v2/navigation/DashboardLayout/TopNavigation.scss.js +1 -1
  56. package/dist/v2/pages/Settings/SettingsTabs.scss.js +1 -1
  57. package/dist/v2/pages/Settings/components/SidebarCustomisation.js +5 -0
  58. package/dist/v2/pages/Settings/components/SidebarCustomisation.scss.js +1 -1
  59. package/dist/v2/pages/Settings/components/SidebarNavItem.js +5 -0
  60. package/dist/v2/pages/auth/AuthLayout/AuthLayout.scss.js +1 -1
  61. package/dist/v2/shadcn/components/ui/accordion.d.ts +8 -0
  62. package/dist/v2/shadcn/components/ui/accordion.d.ts.map +1 -0
  63. package/dist/v2/shadcn/components/ui/alert-dialog.d.ts +21 -0
  64. package/dist/v2/shadcn/components/ui/alert-dialog.d.ts.map +1 -0
  65. package/dist/v2/shadcn/components/ui/alert.d.ts +9 -0
  66. package/dist/v2/shadcn/components/ui/alert.d.ts.map +1 -0
  67. package/dist/v2/shadcn/components/ui/aspect-ratio.d.ts +4 -0
  68. package/dist/v2/shadcn/components/ui/aspect-ratio.d.ts.map +1 -0
  69. package/dist/v2/shadcn/components/ui/avatar.d.ts +7 -0
  70. package/dist/v2/shadcn/components/ui/avatar.d.ts.map +1 -0
  71. package/dist/v2/shadcn/components/ui/badge.d.ts +10 -0
  72. package/dist/v2/shadcn/components/ui/badge.d.ts.map +1 -0
  73. package/dist/v2/shadcn/components/ui/breadcrumb.d.ts +20 -0
  74. package/dist/v2/shadcn/components/ui/breadcrumb.d.ts.map +1 -0
  75. package/dist/v2/shadcn/components/ui/button.d.ts +14 -0
  76. package/dist/v2/shadcn/components/ui/button.d.ts.map +1 -0
  77. package/dist/v2/shadcn/components/ui/calendar.d.ts +9 -0
  78. package/dist/v2/shadcn/components/ui/calendar.d.ts.map +1 -0
  79. package/dist/v2/shadcn/components/ui/card.d.ts +9 -0
  80. package/dist/v2/shadcn/components/ui/card.d.ts.map +1 -0
  81. package/dist/v2/shadcn/components/ui/carousel.d.ts +19 -0
  82. package/dist/v2/shadcn/components/ui/carousel.d.ts.map +1 -0
  83. package/dist/v2/shadcn/components/ui/checkbox.d.ts +6 -0
  84. package/dist/v2/shadcn/components/ui/checkbox.d.ts.map +1 -0
  85. package/dist/v2/shadcn/components/ui/checkbox.js +115 -0
  86. package/dist/v2/shadcn/components/ui/checkbox.scss.js +6 -0
  87. package/dist/v2/shadcn/components/ui/collapsible.d.ts +6 -0
  88. package/dist/v2/shadcn/components/ui/collapsible.d.ts.map +1 -0
  89. package/dist/v2/shadcn/components/ui/command.d.ts +83 -0
  90. package/dist/v2/shadcn/components/ui/command.d.ts.map +1 -0
  91. package/dist/v2/shadcn/components/ui/context-menu.d.ts +28 -0
  92. package/dist/v2/shadcn/components/ui/context-menu.d.ts.map +1 -0
  93. package/dist/v2/shadcn/components/ui/dialog.d.ts +20 -0
  94. package/dist/v2/shadcn/components/ui/dialog.d.ts.map +1 -0
  95. package/dist/v2/shadcn/components/ui/dialog.js +169 -0
  96. package/dist/v2/shadcn/components/ui/drawer.d.ts +23 -0
  97. package/dist/v2/shadcn/components/ui/drawer.d.ts.map +1 -0
  98. package/dist/v2/shadcn/components/ui/dropdown-menu.d.ts +28 -0
  99. package/dist/v2/shadcn/components/ui/dropdown-menu.d.ts.map +1 -0
  100. package/dist/v2/shadcn/components/ui/form.d.ts +24 -0
  101. package/dist/v2/shadcn/components/ui/form.d.ts.map +1 -0
  102. package/dist/v2/shadcn/components/ui/hover-card.d.ts +7 -0
  103. package/dist/v2/shadcn/components/ui/hover-card.d.ts.map +1 -0
  104. package/dist/v2/shadcn/components/ui/input-otp.d.ts +35 -0
  105. package/dist/v2/shadcn/components/ui/input-otp.d.ts.map +1 -0
  106. package/dist/v2/shadcn/components/ui/input.d.ts +6 -0
  107. package/dist/v2/shadcn/components/ui/input.d.ts.map +1 -0
  108. package/dist/v2/shadcn/components/ui/label.d.ts +6 -0
  109. package/dist/v2/shadcn/components/ui/label.d.ts.map +1 -0
  110. package/dist/v2/shadcn/components/ui/menubar.d.ts +34 -0
  111. package/dist/v2/shadcn/components/ui/menubar.d.ts.map +1 -0
  112. package/dist/v2/shadcn/components/ui/navigation-menu.d.ts +13 -0
  113. package/dist/v2/shadcn/components/ui/navigation-menu.d.ts.map +1 -0
  114. package/dist/v2/shadcn/components/ui/pagination.d.ts +29 -0
  115. package/dist/v2/shadcn/components/ui/pagination.d.ts.map +1 -0
  116. package/dist/v2/shadcn/components/ui/popover.d.ts +7 -0
  117. package/dist/v2/shadcn/components/ui/popover.d.ts.map +1 -0
  118. package/dist/v2/shadcn/components/ui/progress.d.ts +5 -0
  119. package/dist/v2/shadcn/components/ui/progress.d.ts.map +1 -0
  120. package/dist/v2/shadcn/components/ui/radio-card.d.ts +12 -0
  121. package/dist/v2/shadcn/components/ui/radio-card.d.ts.map +1 -0
  122. package/dist/v2/shadcn/components/ui/radio-group.d.ts +6 -0
  123. package/dist/v2/shadcn/components/ui/radio-group.d.ts.map +1 -0
  124. package/dist/v2/shadcn/components/ui/scroll-area.d.ts +6 -0
  125. package/dist/v2/shadcn/components/ui/scroll-area.d.ts.map +1 -0
  126. package/dist/v2/shadcn/components/ui/select.d.ts +14 -0
  127. package/dist/v2/shadcn/components/ui/select.d.ts.map +1 -0
  128. package/dist/v2/shadcn/components/ui/separator.d.ts +5 -0
  129. package/dist/v2/shadcn/components/ui/separator.d.ts.map +1 -0
  130. package/dist/v2/shadcn/components/ui/sheet.d.ts +26 -0
  131. package/dist/v2/shadcn/components/ui/sheet.d.ts.map +1 -0
  132. package/dist/v2/shadcn/components/ui/sidebar.d.ts +67 -0
  133. package/dist/v2/shadcn/components/ui/sidebar.d.ts.map +1 -0
  134. package/dist/v2/shadcn/components/ui/skeleton.d.ts +3 -0
  135. package/dist/v2/shadcn/components/ui/skeleton.d.ts.map +1 -0
  136. package/dist/v2/shadcn/components/ui/slider.d.ts +5 -0
  137. package/dist/v2/shadcn/components/ui/slider.d.ts.map +1 -0
  138. package/dist/v2/shadcn/components/ui/switch.d.ts +6 -0
  139. package/dist/v2/shadcn/components/ui/switch.d.ts.map +1 -0
  140. package/dist/v2/shadcn/components/ui/switch.js +115 -0
  141. package/dist/v2/shadcn/components/ui/switch.scss.js +6 -0
  142. package/dist/v2/shadcn/components/ui/table-pagination.d.ts +11 -0
  143. package/dist/v2/shadcn/components/ui/table-pagination.d.ts.map +1 -0
  144. package/dist/v2/shadcn/components/ui/table.d.ts +11 -0
  145. package/dist/v2/shadcn/components/ui/table.d.ts.map +1 -0
  146. package/dist/v2/shadcn/components/ui/tabs.d.ts +8 -0
  147. package/dist/v2/shadcn/components/ui/tabs.d.ts.map +1 -0
  148. package/dist/v2/shadcn/components/ui/textarea.d.ts +6 -0
  149. package/dist/v2/shadcn/components/ui/textarea.d.ts.map +1 -0
  150. package/dist/v2/shadcn/components/ui/toast.d.ts +16 -0
  151. package/dist/v2/shadcn/components/ui/toast.d.ts.map +1 -0
  152. package/dist/v2/shadcn/components/ui/toaster.d.ts +2 -0
  153. package/dist/v2/shadcn/components/ui/toaster.d.ts.map +1 -0
  154. package/dist/v2/shadcn/components/ui/toggle-group.d.ts +13 -0
  155. package/dist/v2/shadcn/components/ui/toggle-group.d.ts.map +1 -0
  156. package/dist/v2/shadcn/components/ui/toggle.d.ts +13 -0
  157. package/dist/v2/shadcn/components/ui/toggle.d.ts.map +1 -0
  158. package/dist/v2/shadcn/components/ui/tooltip.d.ts +8 -0
  159. package/dist/v2/shadcn/components/ui/tooltip.d.ts.map +1 -0
  160. package/dist/v2/shadcn/components/ui/use-toast.d.ts +3 -0
  161. package/dist/v2/shadcn/components/ui/use-toast.d.ts.map +1 -0
  162. package/dist/v2/shadcn/hooks/use-mobile.d.ts +2 -0
  163. package/dist/v2/shadcn/hooks/use-mobile.d.ts.map +1 -0
  164. package/dist/v2/shadcn/hooks/use-toast.d.ts +45 -0
  165. package/dist/v2/shadcn/hooks/use-toast.d.ts.map +1 -0
  166. package/dist/v2/shadcn/index.d.ts +20 -0
  167. package/dist/v2/shadcn/index.d.ts.map +1 -0
  168. package/dist/v2/shadcn/lib/utils.d.ts +3 -0
  169. package/dist/v2/shadcn/lib/utils.d.ts.map +1 -0
  170. package/dist/v2/shadcn/lib/utils.js +11 -0
  171. package/dist/v2/shadcn/styles/globals.css +112 -0
  172. package/dist/v2/styles/form/NewInput.scss.js +1 -1
  173. package/package.json +6 -6
  174. package/rollup.config.js +2 -16
  175. package/src/iframe/payment/payment-status-page/PaymentStatusPage.tsx +1 -1
  176. package/src/product-set/form/ProductsControl.tsx +1 -2
  177. package/src/v2/components/DataTable/DataTable.tsx +1 -23
  178. package/src/v2/components/Modal/DeleteModal.tsx +20 -12
  179. package/src/v2/components/PeriodCard/PeriodCard.scss +157 -0
  180. package/src/v2/components/PeriodCard/PeriodCard.stories.tsx +245 -0
  181. package/src/v2/components/PeriodCard/PeriodCard.tsx +350 -0
  182. package/src/v2/components/PeriodCard/index.ts +8 -0
  183. package/src/v2/components/ReorderRow/ReorderRow.scss +68 -0
  184. package/src/v2/components/ReorderRow/ReorderRow.stories.tsx +124 -0
  185. package/src/v2/components/ReorderRow/ReorderRow.tsx +88 -0
  186. package/src/v2/components/ReorderRow/index.ts +2 -0
  187. package/src/v2/components/Toggle/Toggle.tsx +5 -6
  188. package/src/v2/components/index.ts +6 -0
  189. package/src/v2/index.ts +82 -0
  190. package/src/v2/shadcn/_reference/AccountManagerCard.tsx +45 -0
  191. package/src/v2/shadcn/_reference/AffiliatesTable.tsx +178 -0
  192. package/src/v2/shadcn/_reference/AuditArchive.tsx +165 -0
  193. package/src/v2/shadcn/_reference/AuditContent.tsx +270 -0
  194. package/src/v2/shadcn/_reference/AutomationsGeneralSettings.tsx +251 -0
  195. package/src/v2/shadcn/_reference/AvatarUpload.tsx +150 -0
  196. package/src/v2/shadcn/_reference/BookingsSummaryCard.tsx +268 -0
  197. package/src/v2/shadcn/_reference/CodeCleanUpAudit.tsx +274 -0
  198. package/src/v2/shadcn/_reference/CompaniesTable.tsx +387 -0
  199. package/src/v2/shadcn/_reference/ComponentAudit.tsx +239 -0
  200. package/src/v2/shadcn/_reference/ConfigureSettingsCard.tsx +95 -0
  201. package/src/v2/shadcn/_reference/CustomerCard.tsx +155 -0
  202. package/src/v2/shadcn/_reference/DashboardCards.tsx +50 -0
  203. package/src/v2/shadcn/_reference/DashboardFooter.tsx +18 -0
  204. package/src/v2/shadcn/_reference/DiarySettings.tsx +187 -0
  205. package/src/v2/shadcn/_reference/DiaryView.tsx +998 -0
  206. package/src/v2/shadcn/_reference/EmptyState.tsx +76 -0
  207. package/src/v2/shadcn/_reference/EntityInfoCard.tsx +48 -0
  208. package/src/v2/shadcn/_reference/ExistingUserAssignments.tsx +131 -0
  209. package/src/v2/shadcn/_reference/FeatureToggle.tsx +72 -0
  210. package/src/v2/shadcn/_reference/FlowCard.tsx +170 -0
  211. package/src/v2/shadcn/_reference/FlowsContent.tsx +688 -0
  212. package/src/v2/shadcn/_reference/FlowsGeneralSettings.tsx +27 -0
  213. package/src/v2/shadcn/_reference/GeneralSettings.tsx +33 -0
  214. package/src/v2/shadcn/_reference/InventoryGeneralSettings.tsx +82 -0
  215. package/src/v2/shadcn/_reference/LanguageSelector.tsx +97 -0
  216. package/src/v2/shadcn/_reference/LoadingScreen.tsx +25 -0
  217. package/src/v2/shadcn/_reference/LoadingSpinner.tsx +41 -0
  218. package/src/v2/shadcn/_reference/ManagedClientsList.tsx +121 -0
  219. package/src/v2/shadcn/_reference/NPSScore.tsx +379 -0
  220. package/src/v2/shadcn/_reference/NPSSummaryCard.tsx +181 -0
  221. package/src/v2/shadcn/_reference/NotificationBanner.tsx +129 -0
  222. package/src/v2/shadcn/_reference/NotificationPanel.tsx +208 -0
  223. package/src/v2/shadcn/_reference/OnlineUsersCard.tsx +73 -0
  224. package/src/v2/shadcn/_reference/ProtectedRoute.tsx +39 -0
  225. package/src/v2/shadcn/_reference/ProvidersTable.tsx +353 -0
  226. package/src/v2/shadcn/_reference/QuickAddPanel.tsx +1057 -0
  227. package/src/v2/shadcn/_reference/QuickFilters.tsx +112 -0
  228. package/src/v2/shadcn/_reference/ScheduleView.tsx +410 -0
  229. package/src/v2/shadcn/_reference/ScrollToTop.tsx +14 -0
  230. package/src/v2/shadcn/_reference/SecondaryNav.tsx +50 -0
  231. package/src/v2/shadcn/_reference/SecuritySettings.tsx +258 -0
  232. package/src/v2/shadcn/_reference/SessionDetailView.tsx +294 -0
  233. package/src/v2/shadcn/_reference/Sidebar.tsx +14 -0
  234. package/src/v2/shadcn/_reference/SidebarAwareLayout.tsx +30 -0
  235. package/src/v2/shadcn/_reference/SidebarLabelCustomization.tsx +285 -0
  236. package/src/v2/shadcn/_reference/SimulationBanner.tsx +57 -0
  237. package/src/v2/shadcn/_reference/SortControls.tsx +65 -0
  238. package/src/v2/shadcn/_reference/StatusBadge.tsx +49 -0
  239. package/src/v2/shadcn/_reference/StyleGuideContent.tsx +331 -0
  240. package/src/v2/shadcn/_reference/TableActionMenu.tsx +126 -0
  241. package/src/v2/shadcn/_reference/ThemeProvider.tsx +119 -0
  242. package/src/v2/shadcn/_reference/ThemeSettings.tsx +73 -0
  243. package/src/v2/shadcn/_reference/TopNavigation.tsx +332 -0
  244. package/src/v2/shadcn/_reference/UserActivityHistory.tsx +209 -0
  245. package/src/v2/shadcn/_reference/UserLanguageSettings.tsx +94 -0
  246. package/src/v2/shadcn/_reference/UserPanel.tsx +472 -0
  247. package/src/v2/shadcn/_reference/UsersTable.tsx +1023 -0
  248. package/src/v2/shadcn/_reference/WaiverForm.tsx +301 -0
  249. package/src/v2/shadcn/_reference/WaiversGeneralSettings.tsx +46 -0
  250. package/src/v2/shadcn/_reference/WaiversTable.tsx +290 -0
  251. package/src/v2/shadcn/_reference/WaiversTemplatesSettings.tsx +416 -0
  252. package/src/v2/shadcn/_reference/ai/AIChatPanel.tsx +313 -0
  253. package/src/v2/shadcn/_reference/ai/AIChatSearchBar.tsx +36 -0
  254. package/src/v2/shadcn/_reference/ai/ChatInteractiveBlock.tsx +298 -0
  255. package/src/v2/shadcn/_reference/ai/ChatMessageContent.tsx +40 -0
  256. package/src/v2/shadcn/_reference/ai/parseInteractiveBlocks.ts +142 -0
  257. package/src/v2/shadcn/_reference/auth/AuthLayout.tsx +55 -0
  258. package/src/v2/shadcn/_reference/auth/CreatePasswordForm.tsx +285 -0
  259. package/src/v2/shadcn/_reference/auth/CreatePasswordPanel.tsx +20 -0
  260. package/src/v2/shadcn/_reference/auth/LoginFooter.tsx +14 -0
  261. package/src/v2/shadcn/_reference/auth/LoginForm.tsx +205 -0
  262. package/src/v2/shadcn/_reference/auth/LoginPanel.tsx +41 -0
  263. package/src/v2/shadcn/_reference/auth/ResetPasswordForm.tsx +102 -0
  264. package/src/v2/shadcn/_reference/auth/ResetPasswordPanel.tsx +20 -0
  265. package/src/v2/shadcn/_reference/auth/VerifyEmailForm.tsx +95 -0
  266. package/src/v2/shadcn/_reference/auth/VerifyEmailPanel.tsx +20 -0
  267. package/src/v2/shadcn/_reference/email/EmailAttachment.tsx +119 -0
  268. package/src/v2/shadcn/_reference/email/EmailAutomation.tsx +92 -0
  269. package/src/v2/shadcn/_reference/email/EmailPlaceholders.tsx +64 -0
  270. package/src/v2/shadcn/_reference/email/UnlayerEmailEditor.tsx +41 -0
  271. package/src/v2/shadcn/_reference/email/emailTemplateData.ts +53 -0
  272. package/src/v2/shadcn/_reference/emptyStateIcons.tsx +103 -0
  273. package/src/v2/shadcn/_reference/games/MazeGame.tsx +394 -0
  274. package/src/v2/shadcn/_reference/games/RunnerGame.tsx +497 -0
  275. package/src/v2/shadcn/_reference/logos/BookedLogoFull.tsx +36 -0
  276. package/src/v2/shadcn/_reference/logos/BookedLogoMark.tsx +31 -0
  277. package/src/v2/shadcn/_reference/logos/BookedLogoNew.tsx +36 -0
  278. package/src/v2/shadcn/_reference/pricing/DynamicPricingRulesEditor.tsx +401 -0
  279. package/src/v2/shadcn/_reference/pricing/DynamicPricingTierCard.tsx +77 -0
  280. package/src/v2/shadcn/_reference/pricing/DynamicPricingTiersList.tsx +218 -0
  281. package/src/v2/shadcn/_reference/pricing/PricingCalendar.tsx +810 -0
  282. package/src/v2/shadcn/_reference/pricing/PricingPeriodCard.tsx +152 -0
  283. package/src/v2/shadcn/_reference/pricing/PricingPeriodForm.tsx +377 -0
  284. package/src/v2/shadcn/_reference/pricing/PricingPeriodsList.tsx +213 -0
  285. package/src/v2/shadcn/_reference/pricing/getRuleSummary.ts +39 -0
  286. package/src/v2/shadcn/_reference/products/AvailabilityRulesSection.tsx +184 -0
  287. package/src/v2/shadcn/_reference/products/AvailabilitySection.tsx +677 -0
  288. package/src/v2/shadcn/_reference/products/BookingTypeConfigOptions.tsx +40 -0
  289. package/src/v2/shadcn/_reference/products/CapacityPeriodsSection.tsx +238 -0
  290. package/src/v2/shadcn/_reference/products/DynamicPricingTiersSection.tsx +131 -0
  291. package/src/v2/shadcn/_reference/products/GiftCardOrdersTab.tsx +192 -0
  292. package/src/v2/shadcn/_reference/products/GiftCardSettings.tsx +342 -0
  293. package/src/v2/shadcn/_reference/products/PackageProductsSection.tsx +322 -0
  294. package/src/v2/shadcn/_reference/products/PricingSection.tsx +173 -0
  295. package/src/v2/shadcn/_reference/products/ProductTypeFields.tsx +353 -0
  296. package/src/v2/shadcn/_reference/products/ProductTypeIcon.tsx +95 -0
  297. package/src/v2/shadcn/_reference/products/VariablePricingSection.tsx +140 -0
  298. package/src/v2/shadcn/_reference/products/productTypeConfig.ts +182 -0
  299. package/src/v2/shadcn/_reference/shared/BackButton.tsx +50 -0
  300. package/src/v2/shadcn/_reference/shared/CancelConfirmationDialog.tsx +18 -0
  301. package/src/v2/shadcn/_reference/shared/ConfirmationDialog.tsx +136 -0
  302. package/src/v2/shadcn/_reference/shared/DeleteConfirmationDialog.tsx +18 -0
  303. package/src/v2/shadcn/_reference/shared/DeleteEntityPage.tsx +221 -0
  304. package/src/v2/shadcn/_reference/shared/SidebarIcons.tsx +108 -0
  305. package/src/v2/shadcn/_reference/shared/UnifiedSidebar.tsx +722 -0
  306. package/src/v2/shadcn/_reference/tables/BulkActionsBar.tsx +68 -0
  307. package/src/v2/shadcn/_reference/tables/DataTable.tsx +221 -0
  308. package/src/v2/shadcn/_reference/tables/TableControls.tsx +94 -0
  309. package/src/v2/shadcn/_reference/tables/index.ts +3 -0
  310. package/src/v2/shadcn/_reference/tables/types.ts +79 -0
  311. package/src/v2/shadcn/_reference/zones/LegacyZoneSettings.tsx +299 -0
  312. package/src/v2/shadcn/components/ui/accordion.stories.tsx +63 -0
  313. package/src/v2/shadcn/components/ui/accordion.tsx +52 -0
  314. package/src/v2/shadcn/components/ui/alert-dialog.stories.tsx +44 -0
  315. package/src/v2/shadcn/components/ui/alert-dialog.tsx +104 -0
  316. package/src/v2/shadcn/components/ui/alert.stories.tsx +44 -0
  317. package/src/v2/shadcn/components/ui/alert.tsx +43 -0
  318. package/src/v2/shadcn/components/ui/aspect-ratio.stories.tsx +46 -0
  319. package/src/v2/shadcn/components/ui/aspect-ratio.tsx +5 -0
  320. package/src/v2/shadcn/components/ui/avatar.stories.tsx +39 -0
  321. package/src/v2/shadcn/components/ui/avatar.tsx +38 -0
  322. package/src/v2/shadcn/components/ui/badge.stories.tsx +17 -0
  323. package/src/v2/shadcn/components/ui/badge.tsx +30 -0
  324. package/src/v2/shadcn/components/ui/breadcrumb.stories.tsx +91 -0
  325. package/src/v2/shadcn/components/ui/breadcrumb.tsx +90 -0
  326. package/src/v2/shadcn/components/ui/button.stories.tsx +20 -0
  327. package/src/v2/shadcn/components/ui/button.tsx +60 -0
  328. package/src/v2/shadcn/components/ui/calendar.stories.tsx +61 -0
  329. package/src/v2/shadcn/components/ui/calendar.tsx +54 -0
  330. package/src/v2/shadcn/components/ui/card.stories.tsx +37 -0
  331. package/src/v2/shadcn/components/ui/card.tsx +43 -0
  332. package/src/v2/shadcn/components/ui/carousel.stories.tsx +92 -0
  333. package/src/v2/shadcn/components/ui/carousel.tsx +224 -0
  334. package/src/v2/shadcn/components/ui/checkbox.scss +38 -0
  335. package/src/v2/shadcn/components/ui/checkbox.stories.tsx +23 -0
  336. package/src/v2/shadcn/components/ui/checkbox.tsx +24 -0
  337. package/src/v2/shadcn/components/ui/collapsible.stories.tsx +59 -0
  338. package/src/v2/shadcn/components/ui/collapsible.tsx +9 -0
  339. package/src/v2/shadcn/components/ui/command.stories.tsx +70 -0
  340. package/src/v2/shadcn/components/ui/command.tsx +132 -0
  341. package/src/v2/shadcn/components/ui/context-menu.stories.tsx +72 -0
  342. package/src/v2/shadcn/components/ui/context-menu.tsx +178 -0
  343. package/src/v2/shadcn/components/ui/dialog.stories.tsx +67 -0
  344. package/src/v2/shadcn/components/ui/dialog.tsx +95 -0
  345. package/src/v2/shadcn/components/ui/drawer.stories.tsx +50 -0
  346. package/src/v2/shadcn/components/ui/drawer.tsx +87 -0
  347. package/src/v2/shadcn/components/ui/dropdown-menu.stories.tsx +73 -0
  348. package/src/v2/shadcn/components/ui/dropdown-menu.tsx +179 -0
  349. package/src/v2/shadcn/components/ui/form.stories.tsx +105 -0
  350. package/src/v2/shadcn/components/ui/form.tsx +129 -0
  351. package/src/v2/shadcn/components/ui/hover-card.stories.tsx +35 -0
  352. package/src/v2/shadcn/components/ui/hover-card.tsx +27 -0
  353. package/src/v2/shadcn/components/ui/input-otp.stories.tsx +72 -0
  354. package/src/v2/shadcn/components/ui/input-otp.tsx +61 -0
  355. package/src/v2/shadcn/components/ui/input.stories.tsx +16 -0
  356. package/src/v2/shadcn/components/ui/input.tsx +25 -0
  357. package/src/v2/shadcn/components/ui/label.stories.tsx +13 -0
  358. package/src/v2/shadcn/components/ui/label.tsx +17 -0
  359. package/src/v2/shadcn/components/ui/menubar.stories.tsx +86 -0
  360. package/src/v2/shadcn/components/ui/menubar.tsx +207 -0
  361. package/src/v2/shadcn/components/ui/navigation-menu.stories.tsx +68 -0
  362. package/src/v2/shadcn/components/ui/navigation-menu.tsx +120 -0
  363. package/src/v2/shadcn/components/ui/pagination.stories.tsx +78 -0
  364. package/src/v2/shadcn/components/ui/pagination.tsx +81 -0
  365. package/src/v2/shadcn/components/ui/popover.stories.tsx +44 -0
  366. package/src/v2/shadcn/components/ui/popover.tsx +29 -0
  367. package/src/v2/shadcn/components/ui/progress.stories.tsx +17 -0
  368. package/src/v2/shadcn/components/ui/progress.tsx +23 -0
  369. package/src/v2/shadcn/components/ui/radio-card.stories.tsx +68 -0
  370. package/src/v2/shadcn/components/ui/radio-card.tsx +52 -0
  371. package/src/v2/shadcn/components/ui/radio-group.stories.tsx +77 -0
  372. package/src/v2/shadcn/components/ui/radio-group.tsx +35 -0
  373. package/src/v2/shadcn/components/ui/scroll-area.stories.tsx +56 -0
  374. package/src/v2/shadcn/components/ui/scroll-area.tsx +38 -0
  375. package/src/v2/shadcn/components/ui/select.stories.tsx +60 -0
  376. package/src/v2/shadcn/components/ui/select.tsx +148 -0
  377. package/src/v2/shadcn/components/ui/separator.stories.tsx +30 -0
  378. package/src/v2/shadcn/components/ui/separator.tsx +20 -0
  379. package/src/v2/shadcn/components/ui/sheet.stories.tsx +115 -0
  380. package/src/v2/shadcn/components/ui/sheet.tsx +107 -0
  381. package/src/v2/shadcn/components/ui/sidebar.stories.tsx +167 -0
  382. package/src/v2/shadcn/components/ui/sidebar.tsx +637 -0
  383. package/src/v2/shadcn/components/ui/skeleton.stories.tsx +36 -0
  384. package/src/v2/shadcn/components/ui/skeleton.tsx +7 -0
  385. package/src/v2/shadcn/components/ui/slider.stories.tsx +16 -0
  386. package/src/v2/shadcn/components/ui/slider.tsx +23 -0
  387. package/src/v2/shadcn/components/ui/switch.scss +63 -0
  388. package/src/v2/shadcn/components/ui/switch.stories.tsx +23 -0
  389. package/src/v2/shadcn/components/ui/switch.tsx +24 -0
  390. package/src/v2/shadcn/components/ui/table-pagination.stories.tsx +81 -0
  391. package/src/v2/shadcn/components/ui/table-pagination.tsx +61 -0
  392. package/src/v2/shadcn/components/ui/table.stories.tsx +40 -0
  393. package/src/v2/shadcn/components/ui/table.tsx +72 -0
  394. package/src/v2/shadcn/components/ui/tabs.stories.tsx +85 -0
  395. package/src/v2/shadcn/components/ui/tabs.tsx +53 -0
  396. package/src/v2/shadcn/components/ui/textarea.stories.tsx +15 -0
  397. package/src/v2/shadcn/components/ui/textarea.tsx +21 -0
  398. package/src/v2/shadcn/components/ui/toast.stories.tsx +77 -0
  399. package/src/v2/shadcn/components/ui/toast.tsx +111 -0
  400. package/src/v2/shadcn/components/ui/toaster.stories.tsx +46 -0
  401. package/src/v2/shadcn/components/ui/toaster.tsx +24 -0
  402. package/src/v2/shadcn/components/ui/toggle-group.stories.tsx +95 -0
  403. package/src/v2/shadcn/components/ui/toggle-group.tsx +49 -0
  404. package/src/v2/shadcn/components/ui/toggle.stories.tsx +18 -0
  405. package/src/v2/shadcn/components/ui/toggle.tsx +37 -0
  406. package/src/v2/shadcn/components/ui/tooltip.stories.tsx +57 -0
  407. package/src/v2/shadcn/components/ui/tooltip.tsx +28 -0
  408. package/src/v2/shadcn/components/ui/use-toast.ts +3 -0
  409. package/src/v2/shadcn/hooks/use-mobile.tsx +19 -0
  410. package/src/v2/shadcn/hooks/use-toast.ts +184 -0
  411. package/src/v2/shadcn/index.ts +76 -0
  412. package/src/v2/shadcn/lib/utils.ts +6 -0
  413. package/src/v2/shadcn/styles/globals.css +112 -0
  414. 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 };