@licklist/design 0.78.5-dev.91 → 0.78.5-dev.93

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (777) hide show
  1. package/.storybook/preview.jsx +1 -0
  2. package/bitbucket-pipelines.yml +4 -0
  3. package/components.json +20 -0
  4. package/dist/index.d.ts +4 -2
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +21 -9
  7. package/dist/v2/components/AccountManagerCard/AccountManagerCard.d.ts +11 -0
  8. package/dist/v2/components/AccountManagerCard/AccountManagerCard.d.ts.map +1 -0
  9. package/dist/v2/components/AccountManagerCard/AccountManagerCard.js +62 -0
  10. package/dist/v2/components/AccountManagerCard/AccountManagerCard.scss.js +6 -0
  11. package/dist/v2/components/AccountManagerCard/index.d.ts +3 -0
  12. package/dist/v2/components/AccountManagerCard/index.d.ts.map +1 -0
  13. package/dist/v2/components/ActionMenu/ActionMenu.scss.js +1 -1
  14. package/dist/v2/components/Alert/Alert.scss.js +1 -1
  15. package/dist/v2/components/AvatarUpload/AvatarUpload.d.ts.map +1 -1
  16. package/dist/v2/components/AvatarUpload/AvatarUpload.js +23 -13
  17. package/dist/v2/components/AvatarUpload/AvatarUpload.scss.js +1 -1
  18. package/dist/v2/components/Button/Button.d.ts.map +1 -1
  19. package/dist/v2/components/Button/Button.js +2 -1
  20. package/dist/v2/components/Button/Button.scss.js +1 -1
  21. package/dist/v2/components/Button/GhostButton.scss.js +1 -1
  22. package/dist/v2/components/Checkbox/Checkbox.scss.js +1 -1
  23. package/dist/v2/components/DataTable/DataTable.d.ts +3 -1
  24. package/dist/v2/components/DataTable/DataTable.d.ts.map +1 -1
  25. package/dist/v2/components/DataTable/DataTable.js +40 -39
  26. package/dist/v2/components/DataTable/DataTable.scss.js +1 -1
  27. package/dist/v2/components/EmptyState/EmptyState.scss.js +1 -1
  28. package/dist/v2/components/FeatureToggle/FeatureToggle.d.ts +14 -0
  29. package/dist/v2/components/FeatureToggle/FeatureToggle.d.ts.map +1 -0
  30. package/dist/v2/components/FeatureToggle/FeatureToggle.js +47 -0
  31. package/dist/v2/components/FeatureToggle/FeatureToggle.scss.js +6 -0
  32. package/dist/v2/components/FeatureToggle/index.d.ts +3 -0
  33. package/dist/v2/components/FeatureToggle/index.d.ts.map +1 -0
  34. package/dist/v2/components/FormField/FormField.scss.js +1 -1
  35. package/dist/v2/components/InfoGrid/InfoGrid.scss.js +1 -1
  36. package/dist/v2/components/InputCheckbox/InputCheckbox.scss.js +1 -1
  37. package/dist/v2/components/Modal/DeleteModal.d.ts.map +1 -1
  38. package/dist/v2/components/Modal/DeleteModal.js +74 -76
  39. package/dist/v2/components/Modal/DeleteModal.scss.js +1 -1
  40. package/dist/v2/components/NewTable/NewTable.scss.js +1 -1
  41. package/dist/v2/components/NewTabs/NewTabs.scss.js +1 -1
  42. package/dist/v2/components/NotificationBanner/NotificationBanner.d.ts +16 -0
  43. package/dist/v2/components/NotificationBanner/NotificationBanner.d.ts.map +1 -0
  44. package/dist/v2/components/NotificationBanner/NotificationBanner.js +50 -0
  45. package/dist/v2/components/NotificationBanner/NotificationBanner.scss.js +6 -0
  46. package/dist/v2/components/NotificationBanner/index.d.ts +3 -0
  47. package/dist/v2/components/NotificationBanner/index.d.ts.map +1 -0
  48. package/dist/v2/components/RadioCard/{RadioCard.d.ts → RadioCardGroup.d.ts} +5 -4
  49. package/dist/v2/components/RadioCard/RadioCardGroup.d.ts.map +1 -0
  50. package/dist/v2/components/RadioCard/RadioCardGroup.js +69 -0
  51. package/dist/v2/components/RadioCard/RadioCardGroup.scss.js +6 -0
  52. package/dist/v2/components/RadioCard/index.d.ts +1 -1
  53. package/dist/v2/components/RadioCard/index.d.ts.map +1 -1
  54. package/dist/v2/components/Select/Select.d.ts +7 -1
  55. package/dist/v2/components/Select/Select.d.ts.map +1 -1
  56. package/dist/v2/components/Select/Select.js +9 -2
  57. package/dist/v2/components/Select/index.d.ts +1 -1
  58. package/dist/v2/components/Select/index.d.ts.map +1 -1
  59. package/dist/v2/components/StatusBadge/StatusBadge.d.ts +2 -1
  60. package/dist/v2/components/StatusBadge/StatusBadge.d.ts.map +1 -1
  61. package/dist/v2/components/StatusBadge/StatusBadge.js +7 -3
  62. package/dist/v2/components/StatusBadge/StatusBadge.scss.js +1 -1
  63. package/dist/v2/components/TableControls/TableControls.scss.js +1 -1
  64. package/dist/v2/components/Tabs/Tabs.d.ts.map +1 -1
  65. package/dist/v2/components/Tabs/Tabs.js +40 -0
  66. package/dist/v2/components/Tabs/Tabs.scss.js +1 -1
  67. package/dist/v2/components/Toggle/Toggle.d.ts +10 -0
  68. package/dist/v2/components/Toggle/Toggle.d.ts.map +1 -0
  69. package/dist/v2/components/Toggle/Toggle.js +17 -0
  70. package/dist/v2/components/Toggle/Toggle.scss.js +6 -0
  71. package/dist/v2/components/Toggle/index.d.ts +3 -0
  72. package/dist/v2/components/Toggle/index.d.ts.map +1 -0
  73. package/dist/v2/components/Tooltip/Tooltip.d.ts +0 -1
  74. package/dist/v2/components/Tooltip/Tooltip.d.ts.map +1 -1
  75. package/dist/v2/components/WYSIWYGEditor/WYSIWYGEditor.scss.js +1 -1
  76. package/dist/v2/components/index.d.ts +13 -2
  77. package/dist/v2/components/index.d.ts.map +1 -1
  78. package/dist/v2/dashboard-analytics/blog-posts/index.d.ts +1 -1
  79. package/dist/v2/dashboard-analytics/blog-posts/index.d.ts.map +1 -1
  80. package/dist/v2/dashboard-analytics/chart/Chart.d.ts.map +1 -1
  81. package/dist/v2/dashboard-analytics/chart/Chart.js +6 -5
  82. package/dist/v2/dashboard-analytics/venue-card/VenueCard.d.ts +2 -2
  83. package/dist/v2/dashboard-analytics/venue-card/VenueCard.d.ts.map +1 -1
  84. package/dist/v2/icons/index.d.ts +98 -4
  85. package/dist/v2/icons/index.d.ts.map +1 -1
  86. package/dist/v2/icons/index.js +497 -2
  87. package/dist/v2/index.d.ts +15 -4
  88. package/dist/v2/index.d.ts.map +1 -1
  89. package/dist/v2/navigation/DashboardLayout/AdminSidebar.d.ts +3 -0
  90. package/dist/v2/navigation/DashboardLayout/AdminSidebar.d.ts.map +1 -1
  91. package/dist/v2/navigation/DashboardLayout/AdminSidebar.js +34 -60
  92. package/dist/v2/navigation/DashboardLayout/AdminSidebar.scss.js +1 -1
  93. package/dist/v2/navigation/DashboardLayout/DashboardLayout.d.ts +3 -0
  94. package/dist/v2/navigation/DashboardLayout/DashboardLayout.d.ts.map +1 -1
  95. package/dist/v2/navigation/DashboardLayout/DashboardLayout.js +16 -6
  96. package/dist/v2/navigation/DashboardLayout/DashboardLayout.scss.js +1 -1
  97. package/dist/v2/navigation/DashboardLayout/ProviderSidebar.d.ts.map +1 -1
  98. package/dist/v2/navigation/DashboardLayout/ProviderSidebar.js +7 -26
  99. package/dist/v2/navigation/DashboardLayout/TopNavigation.d.ts +1 -0
  100. package/dist/v2/navigation/DashboardLayout/TopNavigation.d.ts.map +1 -1
  101. package/dist/v2/navigation/DashboardLayout/TopNavigation.js +27 -8
  102. package/dist/v2/navigation/DashboardLayout/TopNavigation.scss.js +1 -1
  103. package/dist/v2/navigation/FigmasSideBar/FigmasSideBar.d.ts.map +1 -1
  104. package/dist/v2/navigation/config.d.ts.map +1 -1
  105. package/dist/v2/pages/Settings/SettingsPage.scss.js +1 -1
  106. package/dist/v2/pages/Settings/SettingsTabs.scss.js +1 -1
  107. package/dist/v2/pages/Settings/components/SidebarCustomisation.js +9 -1
  108. package/dist/v2/pages/Settings/components/SidebarCustomisation.scss.js +1 -1
  109. package/dist/v2/pages/Settings/components/SidebarNavItem.js +9 -1
  110. package/dist/v2/pages/Settings/components/SidebarNavItem.scss.js +1 -1
  111. package/dist/v2/pages/auth/AuthLayout/AuthLayout.js +138 -0
  112. package/dist/v2/pages/auth/AuthLayout/AuthLayout.scss.js +6 -0
  113. package/dist/v2/pages/auth/CreatePassword/CreatePasswordPage.js +377 -0
  114. package/dist/v2/pages/auth/CreatePassword/CreatePasswordPage.scss.js +6 -0
  115. package/dist/{auth → v2/pages/auth}/Login/LoginPage.js +97 -46
  116. package/dist/v2/pages/auth/Login/LoginPage.scss.js +6 -0
  117. package/dist/v2/pages/auth/ResetPassword/ResetPasswordPage.js +274 -0
  118. package/dist/v2/pages/auth/ResetPassword/ResetPasswordPage.scss.js +6 -0
  119. package/dist/v2/pages/auth/VerifyEmail/VerifyEmailPage.js +313 -0
  120. package/dist/v2/pages/auth/VerifyEmail/VerifyEmailPage.scss.js +6 -0
  121. package/dist/v2/shadcn/_reference/AccountManagerCard.d.ts +10 -0
  122. package/dist/v2/shadcn/_reference/AccountManagerCard.d.ts.map +1 -0
  123. package/dist/v2/shadcn/_reference/AffiliatesTable.d.ts +18 -0
  124. package/dist/v2/shadcn/_reference/AffiliatesTable.d.ts.map +1 -0
  125. package/dist/v2/shadcn/_reference/AuditArchive.d.ts +7 -0
  126. package/dist/v2/shadcn/_reference/AuditArchive.d.ts.map +1 -0
  127. package/dist/v2/shadcn/_reference/AuditContent.d.ts +4 -0
  128. package/dist/v2/shadcn/_reference/AuditContent.d.ts.map +1 -0
  129. package/dist/v2/shadcn/_reference/AutomationsGeneralSettings.d.ts +4 -0
  130. package/dist/v2/shadcn/_reference/AutomationsGeneralSettings.d.ts.map +1 -0
  131. package/dist/v2/shadcn/_reference/AvatarUpload.d.ts +9 -0
  132. package/dist/v2/shadcn/_reference/AvatarUpload.d.ts.map +1 -0
  133. package/dist/v2/shadcn/_reference/BookingsSummaryCard.d.ts +7 -0
  134. package/dist/v2/shadcn/_reference/BookingsSummaryCard.d.ts.map +1 -0
  135. package/dist/v2/shadcn/_reference/CodeCleanUpAudit.d.ts +4 -0
  136. package/dist/v2/shadcn/_reference/CodeCleanUpAudit.d.ts.map +1 -0
  137. package/dist/v2/shadcn/_reference/CompaniesTable.d.ts +4 -0
  138. package/dist/v2/shadcn/_reference/CompaniesTable.d.ts.map +1 -0
  139. package/dist/v2/shadcn/_reference/ComponentAudit.d.ts +4 -0
  140. package/dist/v2/shadcn/_reference/ComponentAudit.d.ts.map +1 -0
  141. package/dist/v2/shadcn/_reference/ConfigureSettingsCard.d.ts +28 -0
  142. package/dist/v2/shadcn/_reference/ConfigureSettingsCard.d.ts.map +1 -0
  143. package/dist/v2/shadcn/_reference/CustomerCard.d.ts +16 -0
  144. package/dist/v2/shadcn/_reference/CustomerCard.d.ts.map +1 -0
  145. package/dist/v2/shadcn/_reference/DashboardCards.d.ts +4 -0
  146. package/dist/v2/shadcn/_reference/DashboardCards.d.ts.map +1 -0
  147. package/dist/v2/shadcn/_reference/DashboardFooter.d.ts +3 -0
  148. package/dist/v2/shadcn/_reference/DashboardFooter.d.ts.map +1 -0
  149. package/dist/v2/shadcn/_reference/DiarySettings.d.ts +4 -0
  150. package/dist/v2/shadcn/_reference/DiarySettings.d.ts.map +1 -0
  151. package/dist/v2/shadcn/_reference/DiaryView.d.ts +15 -0
  152. package/dist/v2/shadcn/_reference/DiaryView.d.ts.map +1 -0
  153. package/dist/v2/shadcn/_reference/EmptyState.d.ts +10 -0
  154. package/dist/v2/shadcn/_reference/EmptyState.d.ts.map +1 -0
  155. package/dist/v2/shadcn/_reference/EntityInfoCard.d.ts +14 -0
  156. package/dist/v2/shadcn/_reference/EntityInfoCard.d.ts.map +1 -0
  157. package/dist/v2/shadcn/_reference/ExistingUserAssignments.d.ts +7 -0
  158. package/dist/v2/shadcn/_reference/ExistingUserAssignments.d.ts.map +1 -0
  159. package/dist/v2/shadcn/_reference/FeatureToggle.d.ts +20 -0
  160. package/dist/v2/shadcn/_reference/FeatureToggle.d.ts.map +1 -0
  161. package/dist/v2/shadcn/_reference/FlowCard.d.ts +21 -0
  162. package/dist/v2/shadcn/_reference/FlowCard.d.ts.map +1 -0
  163. package/dist/v2/shadcn/_reference/FlowsContent.d.ts +12 -0
  164. package/dist/v2/shadcn/_reference/FlowsContent.d.ts.map +1 -0
  165. package/dist/v2/shadcn/_reference/FlowsGeneralSettings.d.ts +8 -0
  166. package/dist/v2/shadcn/_reference/FlowsGeneralSettings.d.ts.map +1 -0
  167. package/dist/v2/shadcn/_reference/GeneralSettings.d.ts +8 -0
  168. package/dist/v2/shadcn/_reference/GeneralSettings.d.ts.map +1 -0
  169. package/dist/v2/shadcn/_reference/InventoryGeneralSettings.d.ts +17 -0
  170. package/dist/v2/shadcn/_reference/InventoryGeneralSettings.d.ts.map +1 -0
  171. package/dist/v2/shadcn/_reference/LanguageSelector.d.ts +12 -0
  172. package/dist/v2/shadcn/_reference/LanguageSelector.d.ts.map +1 -0
  173. package/dist/v2/shadcn/_reference/LoadingScreen.d.ts +8 -0
  174. package/dist/v2/shadcn/_reference/LoadingScreen.d.ts.map +1 -0
  175. package/dist/v2/shadcn/_reference/LoadingSpinner.d.ts +8 -0
  176. package/dist/v2/shadcn/_reference/LoadingSpinner.d.ts.map +1 -0
  177. package/dist/v2/shadcn/_reference/ManagedClientsList.d.ts +7 -0
  178. package/dist/v2/shadcn/_reference/ManagedClientsList.d.ts.map +1 -0
  179. package/dist/v2/shadcn/_reference/NPSScore.d.ts +8 -0
  180. package/dist/v2/shadcn/_reference/NPSScore.d.ts.map +1 -0
  181. package/dist/v2/shadcn/_reference/NPSSummaryCard.d.ts +8 -0
  182. package/dist/v2/shadcn/_reference/NPSSummaryCard.d.ts.map +1 -0
  183. package/dist/v2/shadcn/_reference/NotificationBanner.d.ts +20 -0
  184. package/dist/v2/shadcn/_reference/NotificationBanner.d.ts.map +1 -0
  185. package/dist/v2/shadcn/_reference/NotificationPanel.d.ts +11 -0
  186. package/dist/v2/shadcn/_reference/NotificationPanel.d.ts.map +1 -0
  187. package/dist/v2/shadcn/_reference/OnlineUsersCard.d.ts +7 -0
  188. package/dist/v2/shadcn/_reference/OnlineUsersCard.d.ts.map +1 -0
  189. package/dist/v2/shadcn/_reference/ProtectedRoute.d.ts +6 -0
  190. package/dist/v2/shadcn/_reference/ProtectedRoute.d.ts.map +1 -0
  191. package/dist/v2/shadcn/_reference/ProvidersTable.d.ts +7 -0
  192. package/dist/v2/shadcn/_reference/ProvidersTable.d.ts.map +1 -0
  193. package/dist/v2/shadcn/_reference/QuickAddPanel.d.ts +18 -0
  194. package/dist/v2/shadcn/_reference/QuickAddPanel.d.ts.map +1 -0
  195. package/dist/v2/shadcn/_reference/QuickFilters.d.ts +28 -0
  196. package/dist/v2/shadcn/_reference/QuickFilters.d.ts.map +1 -0
  197. package/dist/v2/shadcn/_reference/ScheduleView.d.ts +29 -0
  198. package/dist/v2/shadcn/_reference/ScheduleView.d.ts.map +1 -0
  199. package/dist/v2/shadcn/_reference/ScrollToTop.d.ts +3 -0
  200. package/dist/v2/shadcn/_reference/ScrollToTop.d.ts.map +1 -0
  201. package/dist/v2/shadcn/_reference/SecondaryNav.d.ts +12 -0
  202. package/dist/v2/shadcn/_reference/SecondaryNav.d.ts.map +1 -0
  203. package/dist/v2/shadcn/_reference/SecuritySettings.d.ts +8 -0
  204. package/dist/v2/shadcn/_reference/SecuritySettings.d.ts.map +1 -0
  205. package/dist/v2/shadcn/_reference/SessionDetailView.d.ts +33 -0
  206. package/dist/v2/shadcn/_reference/SessionDetailView.d.ts.map +1 -0
  207. package/dist/v2/shadcn/_reference/Sidebar.d.ts +4 -0
  208. package/dist/v2/shadcn/_reference/Sidebar.d.ts.map +1 -0
  209. package/dist/v2/shadcn/_reference/SidebarAwareLayout.d.ts +9 -0
  210. package/dist/v2/shadcn/_reference/SidebarAwareLayout.d.ts.map +1 -0
  211. package/dist/v2/shadcn/_reference/SidebarLabelCustomization.d.ts +9 -0
  212. package/dist/v2/shadcn/_reference/SidebarLabelCustomization.d.ts.map +1 -0
  213. package/dist/v2/shadcn/_reference/SimulationBanner.d.ts +3 -0
  214. package/dist/v2/shadcn/_reference/SimulationBanner.d.ts.map +1 -0
  215. package/dist/v2/shadcn/_reference/SortControls.d.ts +10 -0
  216. package/dist/v2/shadcn/_reference/SortControls.d.ts.map +1 -0
  217. package/dist/v2/shadcn/_reference/StatusBadge.d.ts +7 -0
  218. package/dist/v2/shadcn/_reference/StatusBadge.d.ts.map +1 -0
  219. package/dist/v2/shadcn/_reference/StyleGuideContent.d.ts +85 -0
  220. package/dist/v2/shadcn/_reference/StyleGuideContent.d.ts.map +1 -0
  221. package/dist/v2/shadcn/_reference/TableActionMenu.d.ts +21 -0
  222. package/dist/v2/shadcn/_reference/TableActionMenu.d.ts.map +1 -0
  223. package/dist/v2/shadcn/_reference/ThemeProvider.d.ts +14 -0
  224. package/dist/v2/shadcn/_reference/ThemeProvider.d.ts.map +1 -0
  225. package/dist/v2/shadcn/_reference/ThemeSettings.d.ts +4 -0
  226. package/dist/v2/shadcn/_reference/ThemeSettings.d.ts.map +1 -0
  227. package/dist/v2/shadcn/_reference/TopNavigation.d.ts +4 -0
  228. package/dist/v2/shadcn/_reference/TopNavigation.d.ts.map +1 -0
  229. package/dist/v2/shadcn/_reference/UserActivityHistory.d.ts +8 -0
  230. package/dist/v2/shadcn/_reference/UserActivityHistory.d.ts.map +1 -0
  231. package/dist/v2/shadcn/_reference/UserLanguageSettings.d.ts +4 -0
  232. package/dist/v2/shadcn/_reference/UserLanguageSettings.d.ts.map +1 -0
  233. package/dist/v2/shadcn/_reference/UserPanel.d.ts +9 -0
  234. package/dist/v2/shadcn/_reference/UserPanel.d.ts.map +1 -0
  235. package/dist/v2/shadcn/_reference/UsersTable.d.ts +23 -0
  236. package/dist/v2/shadcn/_reference/UsersTable.d.ts.map +1 -0
  237. package/dist/v2/shadcn/_reference/WaiverForm.d.ts +8 -0
  238. package/dist/v2/shadcn/_reference/WaiverForm.d.ts.map +1 -0
  239. package/dist/v2/shadcn/_reference/WaiversGeneralSettings.d.ts +4 -0
  240. package/dist/v2/shadcn/_reference/WaiversGeneralSettings.d.ts.map +1 -0
  241. package/dist/v2/shadcn/_reference/WaiversTable.d.ts +27 -0
  242. package/dist/v2/shadcn/_reference/WaiversTable.d.ts.map +1 -0
  243. package/dist/v2/shadcn/_reference/WaiversTemplatesSettings.d.ts +4 -0
  244. package/dist/v2/shadcn/_reference/WaiversTemplatesSettings.d.ts.map +1 -0
  245. package/dist/v2/shadcn/_reference/ai/AIChatPanel.d.ts +8 -0
  246. package/dist/v2/shadcn/_reference/ai/AIChatPanel.d.ts.map +1 -0
  247. package/dist/v2/shadcn/_reference/ai/AIChatSearchBar.d.ts +4 -0
  248. package/dist/v2/shadcn/_reference/ai/AIChatSearchBar.d.ts.map +1 -0
  249. package/dist/v2/shadcn/_reference/ai/ChatInteractiveBlock.d.ts +12 -0
  250. package/dist/v2/shadcn/_reference/ai/ChatInteractiveBlock.d.ts.map +1 -0
  251. package/dist/v2/shadcn/_reference/ai/ChatMessageContent.d.ts +11 -0
  252. package/dist/v2/shadcn/_reference/ai/ChatMessageContent.d.ts.map +1 -0
  253. package/dist/v2/shadcn/_reference/ai/parseInteractiveBlocks.d.ts +68 -0
  254. package/dist/v2/shadcn/_reference/ai/parseInteractiveBlocks.d.ts.map +1 -0
  255. package/dist/v2/shadcn/_reference/auth/AuthLayout.d.ts +11 -0
  256. package/dist/v2/shadcn/_reference/auth/AuthLayout.d.ts.map +1 -0
  257. package/dist/v2/shadcn/_reference/auth/CreatePasswordForm.d.ts +3 -0
  258. package/dist/v2/shadcn/_reference/auth/CreatePasswordForm.d.ts.map +1 -0
  259. package/dist/v2/shadcn/_reference/auth/CreatePasswordPanel.d.ts +3 -0
  260. package/dist/v2/shadcn/_reference/auth/CreatePasswordPanel.d.ts.map +1 -0
  261. package/dist/v2/shadcn/_reference/auth/LoginFooter.d.ts +3 -0
  262. package/dist/v2/shadcn/_reference/auth/LoginFooter.d.ts.map +1 -0
  263. package/dist/v2/shadcn/_reference/auth/LoginForm.d.ts +3 -0
  264. package/dist/v2/shadcn/_reference/auth/LoginForm.d.ts.map +1 -0
  265. package/dist/v2/shadcn/_reference/auth/LoginPanel.d.ts +3 -0
  266. package/dist/v2/shadcn/_reference/auth/LoginPanel.d.ts.map +1 -0
  267. package/dist/v2/shadcn/_reference/auth/ResetPasswordForm.d.ts +3 -0
  268. package/dist/v2/shadcn/_reference/auth/ResetPasswordForm.d.ts.map +1 -0
  269. package/dist/v2/shadcn/_reference/auth/ResetPasswordPanel.d.ts +3 -0
  270. package/dist/v2/shadcn/_reference/auth/ResetPasswordPanel.d.ts.map +1 -0
  271. package/dist/v2/shadcn/_reference/auth/VerifyEmailForm.d.ts +3 -0
  272. package/dist/v2/shadcn/_reference/auth/VerifyEmailForm.d.ts.map +1 -0
  273. package/dist/v2/shadcn/_reference/auth/VerifyEmailPanel.d.ts +3 -0
  274. package/dist/v2/shadcn/_reference/auth/VerifyEmailPanel.d.ts.map +1 -0
  275. package/dist/v2/shadcn/_reference/email/EmailAttachment.d.ts +14 -0
  276. package/dist/v2/shadcn/_reference/email/EmailAttachment.d.ts.map +1 -0
  277. package/dist/v2/shadcn/_reference/email/EmailAutomation.d.ts +12 -0
  278. package/dist/v2/shadcn/_reference/email/EmailAutomation.d.ts.map +1 -0
  279. package/dist/v2/shadcn/_reference/email/EmailPlaceholders.d.ts +11 -0
  280. package/dist/v2/shadcn/_reference/email/EmailPlaceholders.d.ts.map +1 -0
  281. package/dist/v2/shadcn/_reference/email/UnlayerEmailEditor.d.ts +9 -0
  282. package/dist/v2/shadcn/_reference/email/UnlayerEmailEditor.d.ts.map +1 -0
  283. package/dist/v2/shadcn/_reference/email/emailTemplateData.d.ts +14 -0
  284. package/dist/v2/shadcn/_reference/email/emailTemplateData.d.ts.map +1 -0
  285. package/dist/v2/shadcn/_reference/emptyStateIcons.d.ts +18 -0
  286. package/dist/v2/shadcn/_reference/emptyStateIcons.d.ts.map +1 -0
  287. package/dist/v2/shadcn/_reference/games/MazeGame.d.ts +4 -0
  288. package/dist/v2/shadcn/_reference/games/MazeGame.d.ts.map +1 -0
  289. package/dist/v2/shadcn/_reference/games/RunnerGame.d.ts +4 -0
  290. package/dist/v2/shadcn/_reference/games/RunnerGame.d.ts.map +1 -0
  291. package/dist/v2/shadcn/_reference/logos/BookedLogoFull.d.ts +6 -0
  292. package/dist/v2/shadcn/_reference/logos/BookedLogoFull.d.ts.map +1 -0
  293. package/dist/v2/shadcn/_reference/logos/BookedLogoMark.d.ts +7 -0
  294. package/dist/v2/shadcn/_reference/logos/BookedLogoMark.d.ts.map +1 -0
  295. package/dist/v2/shadcn/_reference/logos/BookedLogoNew.d.ts +6 -0
  296. package/dist/v2/shadcn/_reference/logos/BookedLogoNew.d.ts.map +1 -0
  297. package/dist/v2/shadcn/_reference/pricing/DynamicPricingRulesEditor.d.ts +31 -0
  298. package/dist/v2/shadcn/_reference/pricing/DynamicPricingRulesEditor.d.ts.map +1 -0
  299. package/dist/v2/shadcn/_reference/pricing/DynamicPricingTierCard.d.ts +24 -0
  300. package/dist/v2/shadcn/_reference/pricing/DynamicPricingTierCard.d.ts.map +1 -0
  301. package/dist/v2/shadcn/_reference/pricing/DynamicPricingTiersList.d.ts +4 -0
  302. package/dist/v2/shadcn/_reference/pricing/DynamicPricingTiersList.d.ts.map +1 -0
  303. package/dist/v2/shadcn/_reference/pricing/PricingCalendar.d.ts +4 -0
  304. package/dist/v2/shadcn/_reference/pricing/PricingCalendar.d.ts.map +1 -0
  305. package/dist/v2/shadcn/_reference/pricing/PricingPeriodCard.d.ts +35 -0
  306. package/dist/v2/shadcn/_reference/pricing/PricingPeriodCard.d.ts.map +1 -0
  307. package/dist/v2/shadcn/_reference/pricing/PricingPeriodForm.d.ts +19 -0
  308. package/dist/v2/shadcn/_reference/pricing/PricingPeriodForm.d.ts.map +1 -0
  309. package/dist/v2/shadcn/_reference/pricing/PricingPeriodsList.d.ts +4 -0
  310. package/dist/v2/shadcn/_reference/pricing/PricingPeriodsList.d.ts.map +1 -0
  311. package/dist/v2/shadcn/_reference/pricing/getRuleSummary.d.ts +4 -0
  312. package/dist/v2/shadcn/_reference/pricing/getRuleSummary.d.ts.map +1 -0
  313. package/dist/v2/shadcn/_reference/products/AvailabilityRulesSection.d.ts +24 -0
  314. package/dist/v2/shadcn/_reference/products/AvailabilityRulesSection.d.ts.map +1 -0
  315. package/dist/v2/shadcn/_reference/products/AvailabilitySection.d.ts +20 -0
  316. package/dist/v2/shadcn/_reference/products/AvailabilitySection.d.ts.map +1 -0
  317. package/dist/v2/shadcn/_reference/products/BookingTypeConfigOptions.d.ts +17 -0
  318. package/dist/v2/shadcn/_reference/products/BookingTypeConfigOptions.d.ts.map +1 -0
  319. package/dist/v2/shadcn/_reference/products/CapacityPeriodsSection.d.ts +18 -0
  320. package/dist/v2/shadcn/_reference/products/CapacityPeriodsSection.d.ts.map +1 -0
  321. package/dist/v2/shadcn/_reference/products/DynamicPricingTiersSection.d.ts +17 -0
  322. package/dist/v2/shadcn/_reference/products/DynamicPricingTiersSection.d.ts.map +1 -0
  323. package/dist/v2/shadcn/_reference/products/GiftCardOrdersTab.d.ts +7 -0
  324. package/dist/v2/shadcn/_reference/products/GiftCardOrdersTab.d.ts.map +1 -0
  325. package/dist/v2/shadcn/_reference/products/GiftCardSettings.d.ts +28 -0
  326. package/dist/v2/shadcn/_reference/products/GiftCardSettings.d.ts.map +1 -0
  327. package/dist/v2/shadcn/_reference/products/PackageProductsSection.d.ts +18 -0
  328. package/dist/v2/shadcn/_reference/products/PackageProductsSection.d.ts.map +1 -0
  329. package/dist/v2/shadcn/_reference/products/PricingSection.d.ts +13 -0
  330. package/dist/v2/shadcn/_reference/products/PricingSection.d.ts.map +1 -0
  331. package/dist/v2/shadcn/_reference/products/ProductTypeFields.d.ts +13 -0
  332. package/dist/v2/shadcn/_reference/products/ProductTypeFields.d.ts.map +1 -0
  333. package/dist/v2/shadcn/_reference/products/ProductTypeIcon.d.ts +9 -0
  334. package/dist/v2/shadcn/_reference/products/ProductTypeIcon.d.ts.map +1 -0
  335. package/dist/v2/shadcn/_reference/products/VariablePricingSection.d.ts +26 -0
  336. package/dist/v2/shadcn/_reference/products/VariablePricingSection.d.ts.map +1 -0
  337. package/dist/v2/shadcn/_reference/products/productTypeConfig.d.ts +28 -0
  338. package/dist/v2/shadcn/_reference/products/productTypeConfig.d.ts.map +1 -0
  339. package/dist/v2/shadcn/_reference/shared/BackButton.d.ts +13 -0
  340. package/dist/v2/shadcn/_reference/shared/BackButton.d.ts.map +1 -0
  341. package/dist/v2/shadcn/_reference/shared/CancelConfirmationDialog.d.ts +12 -0
  342. package/dist/v2/shadcn/_reference/shared/CancelConfirmationDialog.d.ts.map +1 -0
  343. package/dist/v2/shadcn/_reference/shared/ConfirmationDialog.d.ts +16 -0
  344. package/dist/v2/shadcn/_reference/shared/ConfirmationDialog.d.ts.map +1 -0
  345. package/dist/v2/shadcn/_reference/shared/DeleteConfirmationDialog.d.ts +12 -0
  346. package/dist/v2/shadcn/_reference/shared/DeleteConfirmationDialog.d.ts.map +1 -0
  347. package/dist/v2/shadcn/_reference/shared/DeleteEntityPage.d.ts +39 -0
  348. package/dist/v2/shadcn/_reference/shared/DeleteEntityPage.d.ts.map +1 -0
  349. package/dist/v2/shadcn/_reference/shared/SidebarIcons.d.ts +18 -0
  350. package/dist/v2/shadcn/_reference/shared/SidebarIcons.d.ts.map +1 -0
  351. package/dist/v2/shadcn/_reference/shared/UnifiedSidebar.d.ts +29 -0
  352. package/dist/v2/shadcn/_reference/shared/UnifiedSidebar.d.ts.map +1 -0
  353. package/dist/v2/shadcn/_reference/tables/BulkActionsBar.d.ts +17 -0
  354. package/dist/v2/shadcn/_reference/tables/BulkActionsBar.d.ts.map +1 -0
  355. package/dist/v2/shadcn/_reference/tables/DataTable.d.ts +7 -0
  356. package/dist/v2/shadcn/_reference/tables/DataTable.d.ts.map +1 -0
  357. package/dist/v2/shadcn/_reference/tables/TableControls.d.ts +8 -0
  358. package/dist/v2/shadcn/_reference/tables/TableControls.d.ts.map +1 -0
  359. package/dist/v2/shadcn/_reference/tables/index.d.ts +4 -0
  360. package/dist/v2/shadcn/_reference/tables/index.d.ts.map +1 -0
  361. package/dist/v2/shadcn/_reference/tables/types.d.ts +64 -0
  362. package/dist/v2/shadcn/_reference/tables/types.d.ts.map +1 -0
  363. package/dist/v2/shadcn/_reference/zones/LegacyZoneSettings.d.ts +24 -0
  364. package/dist/v2/shadcn/_reference/zones/LegacyZoneSettings.d.ts.map +1 -0
  365. package/dist/v2/shadcn/components/ui/accordion.d.ts +8 -0
  366. package/dist/v2/shadcn/components/ui/accordion.d.ts.map +1 -0
  367. package/dist/v2/shadcn/components/ui/alert-dialog.d.ts +21 -0
  368. package/dist/v2/shadcn/components/ui/alert-dialog.d.ts.map +1 -0
  369. package/dist/v2/shadcn/components/ui/alert.d.ts +9 -0
  370. package/dist/v2/shadcn/components/ui/alert.d.ts.map +1 -0
  371. package/dist/v2/shadcn/components/ui/aspect-ratio.d.ts +4 -0
  372. package/dist/v2/shadcn/components/ui/aspect-ratio.d.ts.map +1 -0
  373. package/dist/v2/shadcn/components/ui/avatar.d.ts +7 -0
  374. package/dist/v2/shadcn/components/ui/avatar.d.ts.map +1 -0
  375. package/dist/v2/shadcn/components/ui/badge.d.ts +10 -0
  376. package/dist/v2/shadcn/components/ui/badge.d.ts.map +1 -0
  377. package/dist/v2/shadcn/components/ui/breadcrumb.d.ts +20 -0
  378. package/dist/v2/shadcn/components/ui/breadcrumb.d.ts.map +1 -0
  379. package/dist/v2/shadcn/components/ui/button.d.ts +14 -0
  380. package/dist/v2/shadcn/components/ui/button.d.ts.map +1 -0
  381. package/dist/v2/shadcn/components/ui/calendar.d.ts +9 -0
  382. package/dist/v2/shadcn/components/ui/calendar.d.ts.map +1 -0
  383. package/dist/v2/shadcn/components/ui/card.d.ts +9 -0
  384. package/dist/v2/shadcn/components/ui/card.d.ts.map +1 -0
  385. package/dist/v2/shadcn/components/ui/carousel.d.ts +19 -0
  386. package/dist/v2/shadcn/components/ui/carousel.d.ts.map +1 -0
  387. package/dist/v2/shadcn/components/ui/checkbox.d.ts +6 -0
  388. package/dist/v2/shadcn/components/ui/checkbox.d.ts.map +1 -0
  389. package/dist/v2/shadcn/components/ui/checkbox.js +115 -0
  390. package/dist/v2/shadcn/components/ui/checkbox.scss.js +6 -0
  391. package/dist/v2/shadcn/components/ui/collapsible.d.ts +6 -0
  392. package/dist/v2/shadcn/components/ui/collapsible.d.ts.map +1 -0
  393. package/dist/v2/shadcn/components/ui/command.d.ts +83 -0
  394. package/dist/v2/shadcn/components/ui/command.d.ts.map +1 -0
  395. package/dist/v2/shadcn/components/ui/context-menu.d.ts +28 -0
  396. package/dist/v2/shadcn/components/ui/context-menu.d.ts.map +1 -0
  397. package/dist/v2/shadcn/components/ui/dialog.d.ts +20 -0
  398. package/dist/v2/shadcn/components/ui/dialog.d.ts.map +1 -0
  399. package/dist/v2/shadcn/components/ui/dialog.js +169 -0
  400. package/dist/v2/shadcn/components/ui/drawer.d.ts +23 -0
  401. package/dist/v2/shadcn/components/ui/drawer.d.ts.map +1 -0
  402. package/dist/v2/shadcn/components/ui/dropdown-menu.d.ts +28 -0
  403. package/dist/v2/shadcn/components/ui/dropdown-menu.d.ts.map +1 -0
  404. package/dist/v2/shadcn/components/ui/form.d.ts +24 -0
  405. package/dist/v2/shadcn/components/ui/form.d.ts.map +1 -0
  406. package/dist/v2/shadcn/components/ui/hover-card.d.ts +7 -0
  407. package/dist/v2/shadcn/components/ui/hover-card.d.ts.map +1 -0
  408. package/dist/v2/shadcn/components/ui/input-otp.d.ts +35 -0
  409. package/dist/v2/shadcn/components/ui/input-otp.d.ts.map +1 -0
  410. package/dist/v2/shadcn/components/ui/input.d.ts +6 -0
  411. package/dist/v2/shadcn/components/ui/input.d.ts.map +1 -0
  412. package/dist/v2/shadcn/components/ui/label.d.ts +6 -0
  413. package/dist/v2/shadcn/components/ui/label.d.ts.map +1 -0
  414. package/dist/v2/shadcn/components/ui/menubar.d.ts +34 -0
  415. package/dist/v2/shadcn/components/ui/menubar.d.ts.map +1 -0
  416. package/dist/v2/shadcn/components/ui/navigation-menu.d.ts +13 -0
  417. package/dist/v2/shadcn/components/ui/navigation-menu.d.ts.map +1 -0
  418. package/dist/v2/shadcn/components/ui/pagination.d.ts +29 -0
  419. package/dist/v2/shadcn/components/ui/pagination.d.ts.map +1 -0
  420. package/dist/v2/shadcn/components/ui/popover.d.ts +7 -0
  421. package/dist/v2/shadcn/components/ui/popover.d.ts.map +1 -0
  422. package/dist/v2/shadcn/components/ui/progress.d.ts +5 -0
  423. package/dist/v2/shadcn/components/ui/progress.d.ts.map +1 -0
  424. package/dist/v2/shadcn/components/ui/radio-card.d.ts +12 -0
  425. package/dist/v2/shadcn/components/ui/radio-card.d.ts.map +1 -0
  426. package/dist/v2/shadcn/components/ui/radio-group.d.ts +6 -0
  427. package/dist/v2/shadcn/components/ui/radio-group.d.ts.map +1 -0
  428. package/dist/v2/shadcn/components/ui/scroll-area.d.ts +6 -0
  429. package/dist/v2/shadcn/components/ui/scroll-area.d.ts.map +1 -0
  430. package/dist/v2/shadcn/components/ui/select.d.ts +14 -0
  431. package/dist/v2/shadcn/components/ui/select.d.ts.map +1 -0
  432. package/dist/v2/shadcn/components/ui/separator.d.ts +5 -0
  433. package/dist/v2/shadcn/components/ui/separator.d.ts.map +1 -0
  434. package/dist/v2/shadcn/components/ui/sheet.d.ts +26 -0
  435. package/dist/v2/shadcn/components/ui/sheet.d.ts.map +1 -0
  436. package/dist/v2/shadcn/components/ui/sidebar.d.ts +67 -0
  437. package/dist/v2/shadcn/components/ui/sidebar.d.ts.map +1 -0
  438. package/dist/v2/shadcn/components/ui/skeleton.d.ts +3 -0
  439. package/dist/v2/shadcn/components/ui/skeleton.d.ts.map +1 -0
  440. package/dist/v2/shadcn/components/ui/slider.d.ts +5 -0
  441. package/dist/v2/shadcn/components/ui/slider.d.ts.map +1 -0
  442. package/dist/v2/shadcn/components/ui/switch.d.ts +6 -0
  443. package/dist/v2/shadcn/components/ui/switch.d.ts.map +1 -0
  444. package/dist/v2/shadcn/components/ui/switch.js +115 -0
  445. package/dist/v2/shadcn/components/ui/switch.scss.js +6 -0
  446. package/dist/v2/shadcn/components/ui/table-pagination.d.ts +11 -0
  447. package/dist/v2/shadcn/components/ui/table-pagination.d.ts.map +1 -0
  448. package/dist/v2/shadcn/components/ui/table.d.ts +11 -0
  449. package/dist/v2/shadcn/components/ui/table.d.ts.map +1 -0
  450. package/dist/v2/shadcn/components/ui/tabs.d.ts +8 -0
  451. package/dist/v2/shadcn/components/ui/tabs.d.ts.map +1 -0
  452. package/dist/v2/shadcn/components/ui/textarea.d.ts +6 -0
  453. package/dist/v2/shadcn/components/ui/textarea.d.ts.map +1 -0
  454. package/dist/v2/shadcn/components/ui/toast.d.ts +16 -0
  455. package/dist/v2/shadcn/components/ui/toast.d.ts.map +1 -0
  456. package/dist/v2/shadcn/components/ui/toaster.d.ts +2 -0
  457. package/dist/v2/shadcn/components/ui/toaster.d.ts.map +1 -0
  458. package/dist/v2/shadcn/components/ui/toggle-group.d.ts +13 -0
  459. package/dist/v2/shadcn/components/ui/toggle-group.d.ts.map +1 -0
  460. package/dist/v2/shadcn/components/ui/toggle.d.ts +13 -0
  461. package/dist/v2/shadcn/components/ui/toggle.d.ts.map +1 -0
  462. package/dist/v2/shadcn/components/ui/tooltip.d.ts +8 -0
  463. package/dist/v2/shadcn/components/ui/tooltip.d.ts.map +1 -0
  464. package/dist/v2/shadcn/components/ui/use-toast.d.ts +3 -0
  465. package/dist/v2/shadcn/components/ui/use-toast.d.ts.map +1 -0
  466. package/dist/v2/shadcn/hooks/use-mobile.d.ts +2 -0
  467. package/dist/v2/shadcn/hooks/use-mobile.d.ts.map +1 -0
  468. package/dist/v2/shadcn/hooks/use-toast.d.ts +45 -0
  469. package/dist/v2/shadcn/hooks/use-toast.d.ts.map +1 -0
  470. package/dist/v2/shadcn/index.d.ts +20 -0
  471. package/dist/v2/shadcn/index.d.ts.map +1 -0
  472. package/dist/v2/shadcn/lib/utils.d.ts +3 -0
  473. package/dist/v2/shadcn/lib/utils.d.ts.map +1 -0
  474. package/dist/v2/shadcn/lib/utils.js +11 -0
  475. package/dist/v2/shadcn/styles/globals.css +112 -0
  476. package/dist/v2/styles/components/Button.scss +21 -23
  477. package/dist/v2/styles/form/NewInput.scss +1 -1
  478. package/dist/v2/styles/form/NewInput.scss.js +1 -1
  479. package/dist/v2/styles/tokens/_colors.scss +20 -0
  480. package/dist/v2/styles/tokens/_sizes.scss +4 -4
  481. package/dist/v2/types/navigation.d.ts +1 -0
  482. package/dist/v2/types/navigation.d.ts.map +1 -1
  483. package/package.json +38 -3
  484. package/rollup.config.js +1 -0
  485. package/src/index.ts +4 -2
  486. package/src/v2/components/AccountManagerCard/AccountManagerCard.scss +75 -0
  487. package/src/v2/components/AccountManagerCard/AccountManagerCard.stories.tsx +35 -0
  488. package/src/v2/components/AccountManagerCard/AccountManagerCard.tsx +37 -0
  489. package/src/v2/components/AccountManagerCard/index.ts +2 -0
  490. package/src/v2/components/AvatarUpload/AvatarUpload.scss +31 -9
  491. package/src/v2/components/AvatarUpload/AvatarUpload.tsx +13 -7
  492. package/src/v2/components/Button/Button.tsx +1 -0
  493. package/src/v2/components/Button/GhostButton.scss +2 -2
  494. package/src/v2/components/Customer/CustomersList.scss +48 -28
  495. package/src/v2/components/DataTable/DataTable.scss +14 -20
  496. package/src/v2/components/DataTable/DataTable.tsx +35 -34
  497. package/src/v2/components/FeatureToggle/FeatureToggle.scss +64 -0
  498. package/src/v2/components/FeatureToggle/FeatureToggle.stories.tsx +56 -0
  499. package/src/v2/components/FeatureToggle/FeatureToggle.tsx +41 -0
  500. package/src/v2/components/FeatureToggle/index.ts +2 -0
  501. package/src/v2/components/InputCheckbox/InputCheckbox.scss +6 -6
  502. package/src/v2/components/Modal/DeleteModal.scss +46 -85
  503. package/src/v2/components/Modal/DeleteModal.tsx +39 -35
  504. package/src/v2/components/NPSScore/NPSScore.tsx +2 -2
  505. package/src/v2/components/NewTable/NewTable.scss +1 -1
  506. package/src/v2/components/NewTabs/NewTabs.scss +4 -4
  507. package/src/v2/components/NotificationBanner/NotificationBanner.scss +123 -0
  508. package/src/v2/components/NotificationBanner/NotificationBanner.stories.tsx +54 -0
  509. package/src/v2/components/NotificationBanner/NotificationBanner.tsx +45 -0
  510. package/src/v2/components/NotificationBanner/index.ts +2 -0
  511. package/src/v2/components/RadioCard/RadioCard.stories.tsx +8 -8
  512. package/src/v2/components/RadioCard/{RadioCard.scss → RadioCardGroup.scss} +31 -6
  513. package/src/v2/components/RadioCard/{RadioCard.tsx → RadioCardGroup.tsx} +12 -4
  514. package/src/v2/components/RadioCard/index.ts +1 -1
  515. package/src/v2/components/Select/Select.tsx +15 -1
  516. package/src/v2/components/Select/index.ts +1 -1
  517. package/src/v2/components/StatusBadge/StatusBadge.tsx +11 -2
  518. package/src/v2/components/Tabs/Tabs.scss +41 -14
  519. package/src/v2/components/Tabs/Tabs.tsx +2 -1
  520. package/src/v2/components/Toggle/Toggle.scss +2 -0
  521. package/src/v2/components/Toggle/Toggle.tsx +20 -0
  522. package/src/v2/components/Toggle/index.ts +2 -0
  523. package/src/v2/components/Tooltip/Tooltip.tsx +0 -1
  524. package/src/v2/components/index.ts +26 -1
  525. package/src/v2/dashboard-analytics/blog-posts/index.ts +1 -1
  526. package/src/v2/dashboard-analytics/chart/Chart.tsx +20 -17
  527. package/src/v2/dashboard-analytics/venue-card/VenueCard.tsx +2 -2
  528. package/src/v2/icons/index.tsx +175 -9
  529. package/src/v2/index.ts +88 -7
  530. package/src/v2/navigation/DashboardLayout/AdminSidebar.scss +46 -8
  531. package/src/v2/navigation/DashboardLayout/AdminSidebar.tsx +35 -21
  532. package/src/v2/navigation/DashboardLayout/DashboardLayout.scss +3 -2
  533. package/src/v2/navigation/DashboardLayout/DashboardLayout.tsx +23 -5
  534. package/src/v2/navigation/DashboardLayout/ProviderSidebar.tsx +6 -7
  535. package/src/v2/navigation/DashboardLayout/TopNavigation.scss +16 -1
  536. package/src/v2/navigation/DashboardLayout/TopNavigation.tsx +20 -41
  537. package/src/v2/navigation/FigmasAdminSideBar/FigmasAdminSideBar.tsx +1 -1
  538. package/src/v2/navigation/FigmasSideBar/FigmasSideBar.tsx +1 -2
  539. package/src/v2/navigation/FigmasTopHat/FigmasTopHat.tsx +6 -6
  540. package/src/v2/navigation/Navigation/Navigation.scss +1 -1
  541. package/src/v2/navigation/Navigation/Navigation.tsx +0 -1
  542. package/src/v2/navigation/Navigation/index.ts +0 -1
  543. package/src/v2/navigation/SideBarToggleLarge/SideBarToggleLarge.tsx +1 -1
  544. package/src/v2/navigation/TopHatControlDisc/TopHatControlDisc.tsx +1 -1
  545. package/src/v2/navigation/config.tsx +0 -1
  546. package/src/v2/shadcn/_reference/AccountManagerCard.tsx +45 -0
  547. package/src/v2/shadcn/_reference/AffiliatesTable.tsx +178 -0
  548. package/src/v2/shadcn/_reference/AuditArchive.tsx +165 -0
  549. package/src/v2/shadcn/_reference/AuditContent.tsx +270 -0
  550. package/src/v2/shadcn/_reference/AutomationsGeneralSettings.tsx +251 -0
  551. package/src/v2/shadcn/_reference/AvatarUpload.tsx +150 -0
  552. package/src/v2/shadcn/_reference/BookingsSummaryCard.tsx +268 -0
  553. package/src/v2/shadcn/_reference/CodeCleanUpAudit.tsx +274 -0
  554. package/src/v2/shadcn/_reference/CompaniesTable.tsx +387 -0
  555. package/src/v2/shadcn/_reference/ComponentAudit.tsx +239 -0
  556. package/src/v2/shadcn/_reference/ConfigureSettingsCard.tsx +95 -0
  557. package/src/v2/shadcn/_reference/CustomerCard.tsx +155 -0
  558. package/src/v2/shadcn/_reference/DashboardCards.tsx +50 -0
  559. package/src/v2/shadcn/_reference/DashboardFooter.tsx +18 -0
  560. package/src/v2/shadcn/_reference/DiarySettings.tsx +187 -0
  561. package/src/v2/shadcn/_reference/DiaryView.tsx +998 -0
  562. package/src/v2/shadcn/_reference/EmptyState.tsx +76 -0
  563. package/src/v2/shadcn/_reference/EntityInfoCard.tsx +48 -0
  564. package/src/v2/shadcn/_reference/ExistingUserAssignments.tsx +131 -0
  565. package/src/v2/shadcn/_reference/FeatureToggle.tsx +72 -0
  566. package/src/v2/shadcn/_reference/FlowCard.tsx +170 -0
  567. package/src/v2/shadcn/_reference/FlowsContent.tsx +688 -0
  568. package/src/v2/shadcn/_reference/FlowsGeneralSettings.tsx +27 -0
  569. package/src/v2/shadcn/_reference/GeneralSettings.tsx +33 -0
  570. package/src/v2/shadcn/_reference/InventoryGeneralSettings.tsx +82 -0
  571. package/src/v2/shadcn/_reference/LanguageSelector.tsx +97 -0
  572. package/src/v2/shadcn/_reference/LoadingScreen.tsx +25 -0
  573. package/src/v2/shadcn/_reference/LoadingSpinner.tsx +41 -0
  574. package/src/v2/shadcn/_reference/ManagedClientsList.tsx +121 -0
  575. package/src/v2/shadcn/_reference/NPSScore.tsx +379 -0
  576. package/src/v2/shadcn/_reference/NPSSummaryCard.tsx +181 -0
  577. package/src/v2/shadcn/_reference/NotificationBanner.tsx +129 -0
  578. package/src/v2/shadcn/_reference/NotificationPanel.tsx +208 -0
  579. package/src/v2/shadcn/_reference/OnlineUsersCard.tsx +73 -0
  580. package/src/v2/shadcn/_reference/ProtectedRoute.tsx +39 -0
  581. package/src/v2/shadcn/_reference/ProvidersTable.tsx +353 -0
  582. package/src/v2/shadcn/_reference/QuickAddPanel.tsx +1057 -0
  583. package/src/v2/shadcn/_reference/QuickFilters.tsx +112 -0
  584. package/src/v2/shadcn/_reference/ScheduleView.tsx +410 -0
  585. package/src/v2/shadcn/_reference/ScrollToTop.tsx +14 -0
  586. package/src/v2/shadcn/_reference/SecondaryNav.tsx +50 -0
  587. package/src/v2/shadcn/_reference/SecuritySettings.tsx +258 -0
  588. package/src/v2/shadcn/_reference/SessionDetailView.tsx +294 -0
  589. package/src/v2/shadcn/_reference/Sidebar.tsx +14 -0
  590. package/src/v2/shadcn/_reference/SidebarAwareLayout.tsx +30 -0
  591. package/src/v2/shadcn/_reference/SidebarLabelCustomization.tsx +285 -0
  592. package/src/v2/shadcn/_reference/SimulationBanner.tsx +57 -0
  593. package/src/v2/shadcn/_reference/SortControls.tsx +65 -0
  594. package/src/v2/shadcn/_reference/StatusBadge.tsx +49 -0
  595. package/src/v2/shadcn/_reference/StyleGuideContent.tsx +331 -0
  596. package/src/v2/shadcn/_reference/TableActionMenu.tsx +126 -0
  597. package/src/v2/shadcn/_reference/ThemeProvider.tsx +119 -0
  598. package/src/v2/shadcn/_reference/ThemeSettings.tsx +73 -0
  599. package/src/v2/shadcn/_reference/TopNavigation.tsx +332 -0
  600. package/src/v2/shadcn/_reference/UserActivityHistory.tsx +209 -0
  601. package/src/v2/shadcn/_reference/UserLanguageSettings.tsx +94 -0
  602. package/src/v2/shadcn/_reference/UserPanel.tsx +472 -0
  603. package/src/v2/shadcn/_reference/UsersTable.tsx +1023 -0
  604. package/src/v2/shadcn/_reference/WaiverForm.tsx +301 -0
  605. package/src/v2/shadcn/_reference/WaiversGeneralSettings.tsx +46 -0
  606. package/src/v2/shadcn/_reference/WaiversTable.tsx +290 -0
  607. package/src/v2/shadcn/_reference/WaiversTemplatesSettings.tsx +416 -0
  608. package/src/v2/shadcn/_reference/ai/AIChatPanel.tsx +313 -0
  609. package/src/v2/shadcn/_reference/ai/AIChatSearchBar.tsx +36 -0
  610. package/src/v2/shadcn/_reference/ai/ChatInteractiveBlock.tsx +298 -0
  611. package/src/v2/shadcn/_reference/ai/ChatMessageContent.tsx +40 -0
  612. package/src/v2/shadcn/_reference/ai/parseInteractiveBlocks.ts +142 -0
  613. package/src/v2/shadcn/_reference/auth/AuthLayout.tsx +55 -0
  614. package/src/v2/shadcn/_reference/auth/CreatePasswordForm.tsx +285 -0
  615. package/src/v2/shadcn/_reference/auth/CreatePasswordPanel.tsx +18 -0
  616. package/src/v2/shadcn/_reference/auth/LoginFooter.tsx +14 -0
  617. package/src/v2/shadcn/_reference/auth/LoginForm.tsx +201 -0
  618. package/src/v2/shadcn/_reference/auth/LoginPanel.tsx +39 -0
  619. package/src/v2/shadcn/_reference/auth/ResetPasswordForm.tsx +100 -0
  620. package/src/v2/shadcn/_reference/auth/ResetPasswordPanel.tsx +18 -0
  621. package/src/v2/shadcn/_reference/auth/VerifyEmailForm.tsx +93 -0
  622. package/src/v2/shadcn/_reference/auth/VerifyEmailPanel.tsx +18 -0
  623. package/src/v2/shadcn/_reference/email/EmailAttachment.tsx +117 -0
  624. package/src/v2/shadcn/_reference/email/EmailAutomation.tsx +92 -0
  625. package/src/v2/shadcn/_reference/email/EmailPlaceholders.tsx +64 -0
  626. package/src/v2/shadcn/_reference/email/UnlayerEmailEditor.tsx +41 -0
  627. package/src/v2/shadcn/_reference/email/emailTemplateData.ts +53 -0
  628. package/src/v2/shadcn/_reference/emptyStateIcons.tsx +103 -0
  629. package/src/v2/shadcn/_reference/games/MazeGame.tsx +394 -0
  630. package/src/v2/shadcn/_reference/games/RunnerGame.tsx +497 -0
  631. package/src/v2/shadcn/_reference/logos/BookedLogoFull.tsx +36 -0
  632. package/src/v2/shadcn/_reference/logos/BookedLogoMark.tsx +31 -0
  633. package/src/v2/shadcn/_reference/logos/BookedLogoNew.tsx +36 -0
  634. package/src/v2/shadcn/_reference/pricing/DynamicPricingRulesEditor.tsx +401 -0
  635. package/src/v2/shadcn/_reference/pricing/DynamicPricingTierCard.tsx +77 -0
  636. package/src/v2/shadcn/_reference/pricing/DynamicPricingTiersList.tsx +218 -0
  637. package/src/v2/shadcn/_reference/pricing/PricingCalendar.tsx +810 -0
  638. package/src/v2/shadcn/_reference/pricing/PricingPeriodCard.tsx +152 -0
  639. package/src/v2/shadcn/_reference/pricing/PricingPeriodForm.tsx +377 -0
  640. package/src/v2/shadcn/_reference/pricing/PricingPeriodsList.tsx +213 -0
  641. package/src/v2/shadcn/_reference/pricing/getRuleSummary.ts +39 -0
  642. package/src/v2/shadcn/_reference/products/AvailabilityRulesSection.tsx +184 -0
  643. package/src/v2/shadcn/_reference/products/AvailabilitySection.tsx +677 -0
  644. package/src/v2/shadcn/_reference/products/BookingTypeConfigOptions.tsx +40 -0
  645. package/src/v2/shadcn/_reference/products/CapacityPeriodsSection.tsx +238 -0
  646. package/src/v2/shadcn/_reference/products/DynamicPricingTiersSection.tsx +131 -0
  647. package/src/v2/shadcn/_reference/products/GiftCardOrdersTab.tsx +192 -0
  648. package/src/v2/shadcn/_reference/products/GiftCardSettings.tsx +342 -0
  649. package/src/v2/shadcn/_reference/products/PackageProductsSection.tsx +322 -0
  650. package/src/v2/shadcn/_reference/products/PricingSection.tsx +173 -0
  651. package/src/v2/shadcn/_reference/products/ProductTypeFields.tsx +353 -0
  652. package/src/v2/shadcn/_reference/products/ProductTypeIcon.tsx +95 -0
  653. package/src/v2/shadcn/_reference/products/VariablePricingSection.tsx +140 -0
  654. package/src/v2/shadcn/_reference/products/productTypeConfig.ts +182 -0
  655. package/src/v2/shadcn/_reference/shared/BackButton.tsx +50 -0
  656. package/src/v2/shadcn/_reference/shared/CancelConfirmationDialog.tsx +18 -0
  657. package/src/v2/shadcn/_reference/shared/ConfirmationDialog.tsx +134 -0
  658. package/src/v2/shadcn/_reference/shared/DeleteConfirmationDialog.tsx +18 -0
  659. package/src/v2/shadcn/_reference/shared/DeleteEntityPage.tsx +221 -0
  660. package/src/v2/shadcn/_reference/shared/SidebarIcons.tsx +108 -0
  661. package/src/v2/shadcn/_reference/shared/UnifiedSidebar.tsx +722 -0
  662. package/src/v2/shadcn/_reference/tables/BulkActionsBar.tsx +68 -0
  663. package/src/v2/shadcn/_reference/tables/DataTable.tsx +221 -0
  664. package/src/v2/shadcn/_reference/tables/TableControls.tsx +94 -0
  665. package/src/v2/shadcn/_reference/tables/index.ts +3 -0
  666. package/src/v2/shadcn/_reference/tables/types.ts +79 -0
  667. package/src/v2/shadcn/_reference/zones/LegacyZoneSettings.tsx +299 -0
  668. package/src/v2/shadcn/components/ui/accordion.stories.tsx +63 -0
  669. package/src/v2/shadcn/components/ui/accordion.tsx +52 -0
  670. package/src/v2/shadcn/components/ui/alert-dialog.stories.tsx +44 -0
  671. package/src/v2/shadcn/components/ui/alert-dialog.tsx +104 -0
  672. package/src/v2/shadcn/components/ui/alert.stories.tsx +44 -0
  673. package/src/v2/shadcn/components/ui/alert.tsx +43 -0
  674. package/src/v2/shadcn/components/ui/aspect-ratio.stories.tsx +46 -0
  675. package/src/v2/shadcn/components/ui/aspect-ratio.tsx +5 -0
  676. package/src/v2/shadcn/components/ui/avatar.stories.tsx +39 -0
  677. package/src/v2/shadcn/components/ui/avatar.tsx +38 -0
  678. package/src/v2/shadcn/components/ui/badge.stories.tsx +17 -0
  679. package/src/v2/shadcn/components/ui/badge.tsx +30 -0
  680. package/src/v2/shadcn/components/ui/breadcrumb.stories.tsx +91 -0
  681. package/src/v2/shadcn/components/ui/breadcrumb.tsx +90 -0
  682. package/src/v2/shadcn/components/ui/button.stories.tsx +20 -0
  683. package/src/v2/shadcn/components/ui/button.tsx +60 -0
  684. package/src/v2/shadcn/components/ui/calendar.stories.tsx +61 -0
  685. package/src/v2/shadcn/components/ui/calendar.tsx +54 -0
  686. package/src/v2/shadcn/components/ui/card.stories.tsx +37 -0
  687. package/src/v2/shadcn/components/ui/card.tsx +43 -0
  688. package/src/v2/shadcn/components/ui/carousel.stories.tsx +92 -0
  689. package/src/v2/shadcn/components/ui/carousel.tsx +224 -0
  690. package/src/v2/shadcn/components/ui/checkbox.scss +38 -0
  691. package/src/v2/shadcn/components/ui/checkbox.stories.tsx +23 -0
  692. package/src/v2/shadcn/components/ui/checkbox.tsx +24 -0
  693. package/src/v2/shadcn/components/ui/collapsible.stories.tsx +59 -0
  694. package/src/v2/shadcn/components/ui/collapsible.tsx +9 -0
  695. package/src/v2/shadcn/components/ui/command.stories.tsx +70 -0
  696. package/src/v2/shadcn/components/ui/command.tsx +132 -0
  697. package/src/v2/shadcn/components/ui/context-menu.stories.tsx +72 -0
  698. package/src/v2/shadcn/components/ui/context-menu.tsx +178 -0
  699. package/src/v2/shadcn/components/ui/dialog.stories.tsx +67 -0
  700. package/src/v2/shadcn/components/ui/dialog.tsx +95 -0
  701. package/src/v2/shadcn/components/ui/drawer.stories.tsx +50 -0
  702. package/src/v2/shadcn/components/ui/drawer.tsx +87 -0
  703. package/src/v2/shadcn/components/ui/dropdown-menu.stories.tsx +73 -0
  704. package/src/v2/shadcn/components/ui/dropdown-menu.tsx +179 -0
  705. package/src/v2/shadcn/components/ui/form.stories.tsx +105 -0
  706. package/src/v2/shadcn/components/ui/form.tsx +129 -0
  707. package/src/v2/shadcn/components/ui/hover-card.stories.tsx +35 -0
  708. package/src/v2/shadcn/components/ui/hover-card.tsx +27 -0
  709. package/src/v2/shadcn/components/ui/input-otp.stories.tsx +72 -0
  710. package/src/v2/shadcn/components/ui/input-otp.tsx +61 -0
  711. package/src/v2/shadcn/components/ui/input.stories.tsx +16 -0
  712. package/src/v2/shadcn/components/ui/input.tsx +25 -0
  713. package/src/v2/shadcn/components/ui/label.stories.tsx +13 -0
  714. package/src/v2/shadcn/components/ui/label.tsx +17 -0
  715. package/src/v2/shadcn/components/ui/menubar.stories.tsx +86 -0
  716. package/src/v2/shadcn/components/ui/menubar.tsx +207 -0
  717. package/src/v2/shadcn/components/ui/navigation-menu.stories.tsx +68 -0
  718. package/src/v2/shadcn/components/ui/navigation-menu.tsx +120 -0
  719. package/src/v2/shadcn/components/ui/pagination.stories.tsx +78 -0
  720. package/src/v2/shadcn/components/ui/pagination.tsx +81 -0
  721. package/src/v2/shadcn/components/ui/popover.stories.tsx +44 -0
  722. package/src/v2/shadcn/components/ui/popover.tsx +29 -0
  723. package/src/v2/shadcn/components/ui/progress.stories.tsx +17 -0
  724. package/src/v2/shadcn/components/ui/progress.tsx +23 -0
  725. package/src/v2/shadcn/components/ui/radio-card.stories.tsx +68 -0
  726. package/src/v2/shadcn/components/ui/radio-card.tsx +52 -0
  727. package/src/v2/shadcn/components/ui/radio-group.stories.tsx +77 -0
  728. package/src/v2/shadcn/components/ui/radio-group.tsx +35 -0
  729. package/src/v2/shadcn/components/ui/scroll-area.stories.tsx +56 -0
  730. package/src/v2/shadcn/components/ui/scroll-area.tsx +38 -0
  731. package/src/v2/shadcn/components/ui/select.stories.tsx +60 -0
  732. package/src/v2/shadcn/components/ui/select.tsx +148 -0
  733. package/src/v2/shadcn/components/ui/separator.stories.tsx +30 -0
  734. package/src/v2/shadcn/components/ui/separator.tsx +20 -0
  735. package/src/v2/shadcn/components/ui/sheet.stories.tsx +115 -0
  736. package/src/v2/shadcn/components/ui/sheet.tsx +107 -0
  737. package/src/v2/shadcn/components/ui/sidebar.stories.tsx +167 -0
  738. package/src/v2/shadcn/components/ui/sidebar.tsx +637 -0
  739. package/src/v2/shadcn/components/ui/skeleton.stories.tsx +36 -0
  740. package/src/v2/shadcn/components/ui/skeleton.tsx +7 -0
  741. package/src/v2/shadcn/components/ui/slider.stories.tsx +16 -0
  742. package/src/v2/shadcn/components/ui/slider.tsx +23 -0
  743. package/src/v2/shadcn/components/ui/switch.scss +63 -0
  744. package/src/v2/shadcn/components/ui/switch.stories.tsx +23 -0
  745. package/src/v2/shadcn/components/ui/switch.tsx +24 -0
  746. package/src/v2/shadcn/components/ui/table-pagination.stories.tsx +81 -0
  747. package/src/v2/shadcn/components/ui/table-pagination.tsx +61 -0
  748. package/src/v2/shadcn/components/ui/table.stories.tsx +40 -0
  749. package/src/v2/shadcn/components/ui/table.tsx +72 -0
  750. package/src/v2/shadcn/components/ui/tabs.stories.tsx +85 -0
  751. package/src/v2/shadcn/components/ui/tabs.tsx +53 -0
  752. package/src/v2/shadcn/components/ui/textarea.stories.tsx +15 -0
  753. package/src/v2/shadcn/components/ui/textarea.tsx +21 -0
  754. package/src/v2/shadcn/components/ui/toast.stories.tsx +77 -0
  755. package/src/v2/shadcn/components/ui/toast.tsx +111 -0
  756. package/src/v2/shadcn/components/ui/toaster.stories.tsx +46 -0
  757. package/src/v2/shadcn/components/ui/toaster.tsx +24 -0
  758. package/src/v2/shadcn/components/ui/toggle-group.stories.tsx +95 -0
  759. package/src/v2/shadcn/components/ui/toggle-group.tsx +49 -0
  760. package/src/v2/shadcn/components/ui/toggle.stories.tsx +18 -0
  761. package/src/v2/shadcn/components/ui/toggle.tsx +37 -0
  762. package/src/v2/shadcn/components/ui/tooltip.stories.tsx +57 -0
  763. package/src/v2/shadcn/components/ui/tooltip.tsx +28 -0
  764. package/src/v2/shadcn/components/ui/use-toast.ts +3 -0
  765. package/src/v2/shadcn/hooks/use-mobile.tsx +19 -0
  766. package/src/v2/shadcn/hooks/use-toast.ts +184 -0
  767. package/src/v2/shadcn/index.ts +76 -0
  768. package/src/v2/shadcn/lib/utils.ts +6 -0
  769. package/src/v2/shadcn/styles/globals.css +112 -0
  770. package/src/v2/styles/components/Button.scss +21 -23
  771. package/src/v2/styles/form/NewInput.scss +1 -1
  772. package/src/v2/styles/tokens/_colors.scss +20 -0
  773. package/src/v2/styles/tokens/_sizes.scss +4 -4
  774. package/src/v2/types/navigation.ts +1 -0
  775. package/tailwind.config.js +46 -4
  776. package/dist/v2/components/RadioCard/RadioCard.d.ts.map +0 -1
  777. package/src/v2/navigation/Navigation/Navigation.stories.tsx +0 -137
@@ -0,0 +1,332 @@
1
+ import React, { useState } from 'react';
2
+ import { useNavigate, useLocation } from 'react-router-dom';
3
+ import SidebarOpenIcon from './icons/SidebarOpenIcon';
4
+ import SidebarCollapsedIcon from './icons/SidebarCollapsedIcon';
5
+ import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from './ui/tooltip';
6
+ import { NotificationPanel } from './NotificationPanel';
7
+ import { AIChatPanel } from './ai/AIChatPanel';
8
+ import { useAIChatPanel } from '@/contexts/AIChatPanelContext';
9
+ import { IconNew } from '../../icons';
10
+ import { UserPanel } from './UserPanel';
11
+ import { useSidebar } from '@/contexts/SidebarContext';
12
+ import { useUser } from '@/contexts/UserContext';
13
+ import { BookedLogoMark } from './logos/BookedLogoMark';
14
+ import { BookedLogoFull } from './logos/BookedLogoFull';
15
+
16
+ const TopNavigation: React.FC = () => {
17
+ const navigate = useNavigate();
18
+ const location = useLocation();
19
+ const { collapsed, toggleSidebar, mobileMenuOpen, toggleMobileMenu } = useSidebar();
20
+ const { profile, isLoading: isLoadingUser } = useUser();
21
+ const [hoveredItem, setHoveredItem] = useState<string | null>(null);
22
+ const [isUserPanelOpen, setIsUserPanelOpen] = useState(false);
23
+ const [isNotificationPanelOpen, setIsNotificationPanelOpen] = useState(false);
24
+ const { isPanelOpen: isAIChatPanelOpen, setIsPanelOpen: setIsAIChatPanelOpen } = useAIChatPanel();
25
+ const [unreadNotificationCount, setUnreadNotificationCount] = useState(12);
26
+
27
+ const userName = profile?.fullName || "User";
28
+ const userInitials = profile?.initials || "-";
29
+ const avatarUrl = profile?.avatarUrl || null;
30
+
31
+ const isInboxActive = location.pathname.startsWith('/inbox');
32
+ const isNotificationsActive = location.pathname === '/notifications';
33
+ const isProfilePage = location.pathname === '/profile' || location.pathname === '/profile/edit' || location.pathname === '/user-settings';
34
+ const isSidebarDisabled = isInboxActive || isNotificationsActive || isProfilePage;
35
+
36
+ const handleMarkAllRead = () => {
37
+ setUnreadNotificationCount(0);
38
+ };
39
+
40
+ const handleViewAllNotifications = () => {
41
+ navigate('/notifications');
42
+ };
43
+
44
+ return (
45
+ <TooltipProvider delayDuration={200}>
46
+ <header className="flex justify-between items-center bg-surface-secondary h-12 px-1 border-b border-border-primary w-full fixed top-0 left-0 right-0 z-30">
47
+ {/* Left Side - Sidebar Toggle & Logo */}
48
+ <div className="flex items-center gap-4 flex-1">
49
+ {/* Mobile Burger Menu */}
50
+ <button
51
+ className={`flex sm:hidden justify-center items-center bg-surface-primary w-10 h-10 rounded-md transition-colors ${
52
+ isSidebarDisabled
53
+ ? 'opacity-30 cursor-not-allowed'
54
+ : 'hover:bg-surface-primary-hover'
55
+ }`}
56
+ onClick={isSidebarDisabled ? undefined : toggleMobileMenu}
57
+ aria-label="Toggle mobile menu"
58
+ disabled={isSidebarDisabled}
59
+ >
60
+ {mobileMenuOpen ? (
61
+ <svg width="24" height="24" viewBox="0 0 32 32" fill="none">
62
+ <rect x="9" y="22" width="18" height="2" transform="rotate(-45 9 22)" className="fill-fill-primary"/>
63
+ <rect x="10" y="9" width="18" height="2" transform="rotate(45 10 9)" className="fill-fill-primary"/>
64
+ </svg>
65
+ ) : (
66
+ <svg width="24" height="24" viewBox="0 0 32 32" fill="none">
67
+ <rect x="7" y="20" width="18" height="2" className="fill-fill-primary"/>
68
+ <rect x="7" y="15" width="18" height="2" className="fill-fill-primary"/>
69
+ <rect x="7" y="10" width="18" height="2" className="fill-fill-primary"/>
70
+ </svg>
71
+ )}
72
+ </button>
73
+
74
+ {/* Desktop Sidebar Toggle */}
75
+ {isSidebarDisabled ? (
76
+ <button
77
+ className="hidden sm:flex justify-center items-center bg-surface-primary w-10 h-10 rounded-md opacity-30 cursor-not-allowed transition-colors"
78
+ aria-label="Toggle sidebar"
79
+ disabled
80
+ >
81
+ {collapsed ? <SidebarCollapsedIcon /> : <SidebarOpenIcon />}
82
+ </button>
83
+ ) : (
84
+ <Tooltip>
85
+ <TooltipTrigger asChild>
86
+ <button
87
+ className="hidden sm:flex justify-center items-center bg-surface-primary w-10 h-10 rounded-md hover:bg-surface-primary-hover transition-colors"
88
+ onClick={toggleSidebar}
89
+ aria-label="Toggle sidebar"
90
+ >
91
+ {collapsed ? <SidebarCollapsedIcon /> : <SidebarOpenIcon />}
92
+ </button>
93
+ </TooltipTrigger>
94
+ <TooltipContent side="bottom" sideOffset={8} className="mx-2">
95
+ <p>{collapsed ? 'Expand ' : 'Collapse '}<span className="font-bold">{collapsed ? ']' : '['}</span></p>
96
+ </TooltipContent>
97
+ </Tooltip>
98
+ )}
99
+
100
+ {/* Logo - Desktop: Full logo, Mobile: Just the mark */}
101
+ <BookedLogoMark className="sm:hidden" size={36} />
102
+ <BookedLogoFull className="hidden sm:block h-7" />
103
+ </div>
104
+
105
+ {/* Right Side - User Avatar, Inbox, Notifications, Help */}
106
+ <div className="flex justify-end items-center gap-2 py-1 px-1">
107
+ {/* User Avatar */}
108
+ <Tooltip open={isUserPanelOpen ? false : (hoveredItem === 'avatar' ? true : false)}>
109
+ <TooltipTrigger asChild>
110
+ <button
111
+ className={`flex flex-col justify-center items-center p-1 rounded-lg transition-colors ${
112
+ isUserPanelOpen
113
+ ? 'bg-gradient-to-tr from-gradient-stop1 via-gradient-stop2 to-gradient-stop3'
114
+ : 'bg-surface-primary hover:bg-surface-primary-hover'
115
+ }`}
116
+ onMouseEnter={() => setHoveredItem('avatar')}
117
+ onMouseLeave={() => setHoveredItem(null)}
118
+ onClick={() => setIsUserPanelOpen(!isUserPanelOpen)}
119
+ >
120
+ <div className="w-8 h-8 relative flex items-center justify-center overflow-hidden rounded-full">
121
+ {avatarUrl ? (
122
+ <img src={avatarUrl} alt="Profile" className="w-full h-full object-cover" />
123
+ ) : (
124
+ <>
125
+ <svg width="32" height="32" viewBox="0 0 32 32" fill="none" className="absolute">
126
+ <circle cx="16" cy="16" r="15" className={isUserPanelOpen ? "fill-fill-primary-alt stroke-fill-primary-alt" : "fill-fill-secondary stroke-fill-secondary"} fillOpacity="0.2" strokeWidth="2" />
127
+ </svg>
128
+ <div className={`text-[10px] font-extrabold leading-[8px] relative mt-0.5 ${isUserPanelOpen ? 'text-label-primary-alt' : 'text-label-secondary'}`}>
129
+ {userInitials}
130
+ </div>
131
+ </>
132
+ )}
133
+ </div>
134
+ </button>
135
+ </TooltipTrigger>
136
+ <TooltipContent side="bottom" sideOffset={8} className="mx-2">
137
+ <p>Hey {userName}</p>
138
+ </TooltipContent>
139
+ </Tooltip>
140
+
141
+ {/* Inbox */}
142
+ <Tooltip>
143
+ <TooltipTrigger asChild>
144
+ <button
145
+ className={`relative flex justify-center items-center gap-0.5 rounded-lg transition-colors min-w-10 h-10 px-1 ${
146
+ isInboxActive
147
+ ? 'bg-gradient-to-tr from-gradient-stop1 via-gradient-stop2 to-gradient-stop3'
148
+ : 'bg-surface-primary hover:bg-surface-primary-hover'
149
+ }`}
150
+ onMouseEnter={() => setHoveredItem('inbox')}
151
+ onMouseLeave={() => setHoveredItem(null)}
152
+ onClick={() => navigate('/inbox')}
153
+ >
154
+ <div className="w-8 h-8 flex items-center justify-center flex-shrink-0">
155
+ <svg width="32" height="32" viewBox="0 0 32 32" fill="none">
156
+ {hoveredItem === 'inbox' && !isInboxActive && (
157
+ <path d="M11 10H21L22.5 18H19L18 20L16 20.5L14 20L13 18H9.5L11 10Z" className="fill-fill-secondary" fillOpacity="0.3"/>
158
+ )}
159
+ {isInboxActive && (
160
+ <path d="M11 10H21L22.5 18H19L18 20L16 20.5L14 20L13 18H9.5L11 10Z" className="fill-fill-primary-alt" fillOpacity="0.3"/>
161
+ )}
162
+ <path d="M8.02381 7.78307C8.12549 7.32553 8.5313 7 9 7H23C23.4687 7 23.8745 7.32553 23.9762 7.78307L25.9762 16.7831C25.992 16.8543 26 16.927 26 17V24C26 24.5523 25.5523 25 25 25H7C6.44772 25 6 24.5523 6 24V17C6 16.927 6.00799 16.8543 6.02381 16.7831L8.02381 7.78307ZM9.80217 9L8.24662 16H13C13 17.6569 14.3431 19 16 19C17.6569 19 19 17.6569 19 16H23.7534L22.1978 9H9.80217ZM20.584 18C19.8124 19.7659 18.0503 21 16 21C13.9497 21 12.1876 19.7659 11.416 18H8V23H24V18H20.584Z" className={isInboxActive ? "fill-fill-primary-alt" : "fill-fill-secondary"}/>
163
+ </svg>
164
+ </div>
165
+ {3 > 0 && (
166
+ <>
167
+ {/* Dot indicator for very small screens */}
168
+ <div className={`xs:hidden absolute top-0.5 right-0.5 w-2.5 h-2.5 rounded-full ${
169
+ isInboxActive
170
+ ? 'bg-label-primary-alt/60'
171
+ : 'bg-surface-colour-green-soft border border-colour-overlay'
172
+ }`} />
173
+ {/* Full count for larger screens */}
174
+ <div className={`hidden xs:flex justify-center items-center px-2 py-1 rounded-full border mr-1 ${
175
+ isInboxActive
176
+ ? 'bg-label-primary-alt/30 border-border-primary/30'
177
+ : 'bg-surface-colour-green-soft border-colour-overlay'
178
+ }`}>
179
+ <span className={`text-[10px] font-semibold leading-[13px] font-mono ${
180
+ isInboxActive ? 'text-label-primary-alt' : 'text-label-primary'
181
+ }`}>3</span>
182
+ </div>
183
+ </>
184
+ )}
185
+ </button>
186
+ </TooltipTrigger>
187
+ <TooltipContent side="bottom" sideOffset={8} className="mx-2">
188
+ <p>Inbox</p>
189
+ </TooltipContent>
190
+ </Tooltip>
191
+
192
+ {/* Notifications */}
193
+ <Tooltip>
194
+ <TooltipTrigger asChild>
195
+ <button
196
+ className={`relative flex justify-center items-center gap-0.5 rounded-lg transition-colors min-w-10 h-10 px-1 ${
197
+ isNotificationPanelOpen || isNotificationsActive
198
+ ? 'bg-gradient-to-tr from-gradient-stop1 via-gradient-stop2 to-gradient-stop3'
199
+ : 'bg-surface-primary hover:bg-surface-primary-hover'
200
+ }`}
201
+ onMouseEnter={() => setHoveredItem('notifications')}
202
+ onMouseLeave={() => setHoveredItem(null)}
203
+ onClick={() => setIsNotificationPanelOpen(!isNotificationPanelOpen)}
204
+ >
205
+ <div className="w-8 h-8 flex items-center justify-center flex-shrink-0">
206
+ {isNotificationPanelOpen || isNotificationsActive ? (
207
+ <svg width="32" height="32" viewBox="0 0 32 32" fill="none">
208
+ <path d="M22 14C22 10.6863 19.3137 8 16 8C12.6863 8 10 10.6863 10 14V22H22V14ZM24 22.6667L24.4 23.2C24.5657 23.4209 24.5209 23.7343 24.3 23.9C24.2135 23.9649 24.1082 24 24 24H8C7.72386 24 7.5 23.7761 7.5 23.5C7.5 23.3918 7.53509 23.2865 7.6 23.2L8 22.6667V14C8 9.58172 11.5817 6 16 6C20.4183 6 24 9.58172 24 14V22.6667ZM13.5 25H18.5C18.5 26.3807 17.3807 27.5 16 27.5C14.6193 27.5 13.5 26.3807 13.5 25Z" className="fill-fill-primary-alt" />
209
+ </svg>
210
+ ) : hoveredItem === 'notifications' ? (
211
+ <svg width="32" height="32" viewBox="0 0 32 32" fill="none">
212
+ <path d="M22.4874 15.5353C23.2901 12.3202 21.3346 9.06324 18.1196 8.26054C14.9045 7.45785 11.6475 9.41342 10.8448 12.6284L8.90696 20.3902L20.5496 23.297L22.4874 15.5353ZM22.3285 24.4283L22.5874 25.0426C22.6947 25.2971 22.5753 25.5903 22.3208 25.6976C22.2212 25.7396 22.1105 25.7481 22.0055 25.7219L6.48205 21.8461C6.21413 21.7792 6.05118 21.5078 6.11806 21.2399C6.14427 21.1349 6.20382 21.0413 6.28775 20.9731L6.80502 20.5525L8.9044 12.144C9.97467 7.85727 14.3173 5.24985 18.604 6.32011C22.8907 7.39038 25.4981 11.733 24.4279 16.0197L22.3285 24.4283ZM15.4569 25.1176L20.308 26.3288C19.9735 27.6683 18.6164 28.4832 17.2768 28.1487C15.9373 27.8143 15.1224 26.4572 15.4569 25.1176Z" className="fill-fill-secondary"/>
213
+ </svg>
214
+ ) : (
215
+ <svg width="32" height="32" viewBox="0 0 32 32" fill="none">
216
+ <path d="M22 14C22 10.6863 19.3137 8 16 8C12.6863 8 10 10.6863 10 14V22H22V14ZM24 22.6667L24.4 23.2C24.5657 23.4209 24.5209 23.7343 24.3 23.9C24.2135 23.9649 24.1082 24 24 24H8C7.72386 24 7.5 23.7761 7.5 23.5C7.5 23.3918 7.53509 23.2865 7.6 23.2L8 22.6667V14C8 9.58172 11.5817 6 16 6C20.4183 6 24 9.58172 24 14V22.6667ZM13.5 25H18.5C18.5 26.3807 17.3807 27.5 16 27.5C14.6193 27.5 13.5 26.3807 13.5 25Z" className="fill-fill-secondary"/>
217
+ </svg>
218
+ )}
219
+ </div>
220
+ {unreadNotificationCount > 0 && (
221
+ <>
222
+ {/* Dot indicator for very small screens */}
223
+ <div className={`xs:hidden absolute top-0.5 right-0.5 w-2.5 h-2.5 rounded-full ${
224
+ isNotificationPanelOpen || isNotificationsActive
225
+ ? 'bg-label-primary-alt/60'
226
+ : 'bg-surface-colour-orange-soft border border-colour-overlay'
227
+ }`} />
228
+ {/* Full count for larger screens */}
229
+ <div className={`hidden xs:flex justify-center items-center px-2 py-1 rounded-full border mr-1 ${
230
+ isNotificationPanelOpen || isNotificationsActive
231
+ ? 'bg-label-primary-alt/30 border-border-primary/30'
232
+ : 'bg-surface-colour-orange-soft border-colour-overlay'
233
+ }`}>
234
+ <span className={`text-[10px] font-semibold leading-[13px] font-mono ${
235
+ isNotificationPanelOpen || isNotificationsActive ? 'text-label-primary-alt' : 'text-label-primary'
236
+ }`}>
237
+ {unreadNotificationCount}
238
+ </span>
239
+ </div>
240
+ </>
241
+ )}
242
+ </button>
243
+ </TooltipTrigger>
244
+ <TooltipContent side="bottom" sideOffset={8} className="mx-2">
245
+ <p>Notifications</p>
246
+ </TooltipContent>
247
+ </Tooltip>
248
+
249
+ {/* AI Assistant */}
250
+ <Tooltip open={isAIChatPanelOpen ? false : (hoveredItem === 'ai' ? true : false)}>
251
+ <TooltipTrigger asChild>
252
+ <button
253
+ className={`flex justify-center items-center w-10 h-10 rounded-lg transition-colors ${
254
+ isAIChatPanelOpen
255
+ ? 'bg-gradient-to-tr from-gradient-stop1 via-gradient-stop2 to-gradient-stop3'
256
+ : 'bg-surface-primary hover:bg-surface-primary-hover'
257
+ }`}
258
+ onMouseEnter={() => setHoveredItem('ai')}
259
+ onMouseLeave={() => setHoveredItem(null)}
260
+ onClick={() => setIsAIChatPanelOpen(!isAIChatPanelOpen)}
261
+ >
262
+ <div className={`w-8 h-8 flex items-center justify-center ${
263
+ isAIChatPanelOpen ? 'text-fill-primary-alt' : hoveredItem === 'ai' ? 'bkit-icon-glow' : 'text-fill-secondary'
264
+ }`}>
265
+ <IconNew size={32} />
266
+ </div>
267
+ </button>
268
+ </TooltipTrigger>
269
+ <TooltipContent side="bottom" sideOffset={8} className="mx-2">
270
+ <p>Brad Bot</p>
271
+ </TooltipContent>
272
+ </Tooltip>
273
+
274
+ {/* Help */}
275
+ <Tooltip>
276
+ <TooltipTrigger asChild>
277
+ <button
278
+ className="flex justify-center items-center bg-surface-primary w-10 h-10 rounded-lg hover:bg-surface-primary-hover transition-colors"
279
+ onMouseEnter={() => setHoveredItem('help')}
280
+ onMouseLeave={() => setHoveredItem(null)}
281
+ onClick={() => window.open('https://bookedit.zohodesk.com/portal/en/kb/bookedit', '_blank')}
282
+ >
283
+ <div className="w-8 h-8 flex items-center justify-center">
284
+ {hoveredItem === 'help' ? (
285
+ <svg width="32" height="32" viewBox="0 0 32 32" fill="none">
286
+ <circle opacity="0.1" cx="16" cy="16" r="10" className="fill-fill-secondary"/>
287
+ <path d="M16 5C22.0751 5 27 9.92487 27 16C27 22.0751 22.0751 27 16 27C9.92487 27 5 22.0751 5 16C5 9.92487 9.92487 5 16 5ZM16 7C11.0294 7 7 11.0294 7 16C7 20.9706 11.0294 25 16 25C20.9706 25 25 20.9706 25 16C25 11.0294 20.9706 7 16 7Z" className="fill-fill-secondary"/>
288
+ <path d="M14.8184 17.6655V17.5086C14.8214 16.97 14.8691 16.5407 14.9615 16.2206C15.0569 15.9005 15.1954 15.642 15.377 15.445C15.5585 15.2481 15.777 15.0696 16.0325 14.9095C16.2233 14.7864 16.3941 14.6587 16.5449 14.5263C16.6957 14.394 16.8158 14.2478 16.905 14.0878C16.9943 13.9247 17.0389 13.7431 17.0389 13.543C17.0389 13.3307 16.9881 13.1445 16.8865 12.9844C16.785 12.8244 16.648 12.7013 16.4757 12.6151C16.3064 12.5289 16.1187 12.4859 15.9125 12.4859C15.7124 12.4859 15.5231 12.5305 15.3446 12.6197C15.1661 12.7059 15.0199 12.8352 14.9061 13.0075C14.7922 13.1768 14.7306 13.3876 14.7214 13.64H12.8379C12.8533 13.0245 13.001 12.5166 13.2811 12.1165C13.5611 11.7134 13.932 11.4133 14.3936 11.2163C14.8553 11.0163 15.3646 10.9163 15.9217 10.9163C16.5342 10.9163 17.0758 11.0178 17.5467 11.2209C18.0176 11.421 18.3869 11.7118 18.6547 12.0935C18.9224 12.4751 19.0563 12.9352 19.0563 13.4738C19.0563 13.8339 18.9963 14.1539 18.8762 14.434C18.7593 14.711 18.5946 14.9572 18.3823 15.1727C18.1699 15.385 17.9191 15.5774 17.6298 15.7497C17.3867 15.8944 17.1866 16.0452 17.0297 16.2021C16.8758 16.3591 16.7604 16.5407 16.6834 16.7469C16.6096 16.9531 16.5711 17.207 16.568 17.5086V17.6655H14.8184ZM15.7324 20.6201C15.4247 20.6201 15.1615 20.5124 14.943 20.2969C14.7276 20.0784 14.6214 19.8168 14.6245 19.5121C14.6214 19.2105 14.7276 18.952 14.943 18.7366C15.1615 18.5211 15.4247 18.4134 15.7324 18.4134C16.0248 18.4134 16.2818 18.5211 16.5034 18.7366C16.725 18.952 16.8373 19.2105 16.8404 19.5121C16.8373 19.7153 16.7834 19.9015 16.6788 20.0707C16.5772 20.2369 16.4434 20.3708 16.2772 20.4724C16.111 20.5709 15.9294 20.6201 15.7324 20.6201Z" className="fill-fill-secondary"/>
289
+ </svg>
290
+ ) : (
291
+ <svg width="32" height="32" viewBox="0 0 32 32" fill="none">
292
+ <path d="M16 5C22.0751 5 27 9.92487 27 16C27 22.0751 22.0751 27 16 27C9.92487 27 5 22.0751 5 16C5 9.92487 9.92487 5 16 5ZM16 7C11.0294 7 7 11.0294 7 16C7 20.9706 11.0294 25 16 25C20.9706 25 25 20.9706 25 16C25 11.0294 20.9706 7 16 7Z" className="fill-fill-secondary"/>
293
+ <path d="M15.7324 18.4131C16.0246 18.4131 16.2814 18.5211 16.5029 18.7363C16.7244 18.9517 16.8367 19.2103 16.8398 19.5117C16.8368 19.7147 16.7832 19.9011 16.6787 20.0703C16.5772 20.2365 16.4435 20.3711 16.2773 20.4727C16.1112 20.5711 15.9293 20.6201 15.7324 20.6201C15.4248 20.6201 15.1618 20.5122 14.9434 20.2969C14.7279 20.0784 14.6209 19.8164 14.624 19.5117C14.621 19.2103 14.728 18.9517 14.9434 18.7363C15.1618 18.5211 15.4248 18.4131 15.7324 18.4131ZM15.9219 10.916C16.5342 10.916 17.0761 11.0176 17.5469 11.2207C18.0177 11.4207 18.3866 11.7122 18.6543 12.0938C18.922 12.4753 19.0566 12.9351 19.0566 13.4736C19.0566 13.8336 18.9959 14.1536 18.876 14.4336C18.759 14.7106 18.5942 14.9574 18.3818 15.1729C18.1695 15.3851 17.919 15.5777 17.6299 15.75C17.3867 15.8946 17.1863 16.0452 17.0293 16.2021C16.8755 16.3591 16.7605 16.5409 16.6836 16.7471C16.6098 16.9532 16.5714 17.2072 16.5684 17.5088V17.665H14.8184V17.5088C14.8214 16.9704 14.8687 16.5408 14.9609 16.2207C15.0563 15.9007 15.1954 15.6423 15.377 15.4453C15.5585 15.2483 15.7768 15.0692 16.0322 14.9092C16.223 14.7861 16.3941 14.6587 16.5449 14.5264C16.6957 14.394 16.816 14.2479 16.9053 14.0879C16.9945 13.9248 17.0391 13.743 17.0391 13.543C17.0391 13.3307 16.9882 13.1444 16.8867 12.9844C16.7852 12.8244 16.6479 12.7014 16.4756 12.6152C16.3063 12.5291 16.1183 12.4854 15.9121 12.4854C15.7121 12.4854 15.5232 12.5309 15.3447 12.6201C15.1662 12.7063 15.0201 12.8355 14.9062 13.0078C14.7925 13.177 14.7309 13.3875 14.7217 13.6396H12.8379C12.8533 13.0242 13.0012 12.5162 13.2812 12.1162C13.5613 11.7132 13.932 11.4127 14.3936 11.2158C14.8552 11.0158 15.3649 10.916 15.9219 10.916Z" className="fill-fill-secondary"/>
294
+ </svg>
295
+ )}
296
+ </div>
297
+ </button>
298
+ </TooltipTrigger>
299
+ <TooltipContent side="bottom" sideOffset={8} className="mx-2">
300
+ <p>Help & FAQ's</p>
301
+ </TooltipContent>
302
+ </Tooltip>
303
+ </div>
304
+ </header>
305
+
306
+
307
+ {/* User Panel */}
308
+ <UserPanel
309
+ isOpen={isUserPanelOpen}
310
+ onClose={() => setIsUserPanelOpen(false)}
311
+ userName={userName}
312
+ />
313
+
314
+ {/* Notification Panel */}
315
+ <NotificationPanel
316
+ isOpen={isNotificationPanelOpen}
317
+ onClose={() => setIsNotificationPanelOpen(false)}
318
+ latestCount={Math.min(unreadNotificationCount, 12)}
319
+ onMarkAllRead={handleMarkAllRead}
320
+ onViewAll={handleViewAllNotifications}
321
+ />
322
+
323
+ {/* AI Chat Panel */}
324
+ <AIChatPanel
325
+ isOpen={isAIChatPanelOpen}
326
+ onClose={() => setIsAIChatPanelOpen(false)}
327
+ />
328
+ </TooltipProvider>
329
+ );
330
+ };
331
+
332
+ export default TopNavigation;
@@ -0,0 +1,209 @@
1
+ import React, { useState } from 'react';
2
+ import { useQuery } from '@tanstack/react-query';
3
+ import { supabase } from '@/integrations/supabase/client';
4
+ import { format } from 'date-fns';
5
+ import EmptyState from './EmptyState';
6
+ import { useNavigate } from 'react-router-dom';
7
+ import { TablePagination } from './ui/table-pagination';
8
+ import LoadingSpinner from './LoadingSpinner';
9
+
10
+ interface ActivityLog {
11
+ id: string;
12
+ user_id: string;
13
+ action_type: string;
14
+ action_description: string;
15
+ entity_type: string | null;
16
+ entity_id: string | null;
17
+ entity_friendly_id: string | null;
18
+ created_at: string;
19
+ }
20
+
21
+ interface UserActivityHistoryProps {
22
+ userId: string;
23
+ userCreatedAt?: string;
24
+ }
25
+
26
+ const ITEMS_PER_PAGE = 24;
27
+
28
+ const UserActivityHistory: React.FC<UserActivityHistoryProps> = ({ userId, userCreatedAt }) => {
29
+ const navigate = useNavigate();
30
+ const [currentPage, setCurrentPage] = useState(1);
31
+
32
+ const { data: activities = [], isLoading } = useQuery({
33
+ queryKey: ['user-activity-log', userId, userCreatedAt],
34
+ queryFn: async () => {
35
+ // Fetch actions BY the user and actions ON the user (e.g. role changes by admins)
36
+ const [byUser, onUser] = await Promise.all([
37
+ supabase
38
+ .from('user_activity_log')
39
+ .select('id, user_id, action_type, action_description, entity_type, entity_id, entity_friendly_id, created_at')
40
+ .eq('user_id', userId)
41
+ .order('created_at', { ascending: false })
42
+ .limit(200),
43
+ supabase
44
+ .from('user_activity_log')
45
+ .select('id, user_id, action_type, action_description, entity_type, entity_id, entity_friendly_id, created_at')
46
+ .eq('entity_type', 'user')
47
+ .eq('entity_id', userId)
48
+ .neq('user_id', userId)
49
+ .order('created_at', { ascending: false })
50
+ .limit(200),
51
+ ]);
52
+
53
+ if (byUser.error) throw byUser.error;
54
+
55
+ const byUserLogs = (byUser.data || []) as ActivityLog[];
56
+ const onUserLogs = (onUser.error ? [] : onUser.data || []) as ActivityLog[];
57
+
58
+ // Merge and deduplicate by id
59
+ const allMap = new Map<string, ActivityLog>();
60
+ for (const log of [...byUserLogs, ...onUserLogs]) {
61
+ allMap.set(log.id, log);
62
+ }
63
+
64
+ const logs = Array.from(allMap.values());
65
+
66
+ // Append a synthetic "User created" entry
67
+ if (userCreatedAt) {
68
+ logs.push({
69
+ id: 'user-created',
70
+ user_id: '',
71
+ action_type: 'user_created',
72
+ action_description: 'User account created',
73
+ entity_type: 'user',
74
+ entity_id: userId,
75
+ entity_friendly_id: null,
76
+ created_at: userCreatedAt,
77
+ });
78
+ }
79
+
80
+ // Sort by date descending
81
+ logs.sort((a, b) => new Date(b.created_at).getTime() - new Date(a.created_at).getTime());
82
+
83
+ return logs;
84
+ },
85
+ enabled: !!userId,
86
+ });
87
+
88
+ const getEntityLink = (activity: ActivityLog): string | null => {
89
+ if (!activity.entity_id || !activity.entity_type) return null;
90
+ switch (activity.entity_type) {
91
+ case 'customer': return `/admin/customers/${activity.entity_id}`;
92
+ case 'user': return `/admin/users/${activity.entity_id}`;
93
+ case 'order':
94
+ case 'booking': return null;
95
+ case 'product': return null;
96
+ default: return null;
97
+ }
98
+ };
99
+
100
+ const formatEntityId = (activity: ActivityLog): string | null => {
101
+ if (activity.entity_friendly_id) return activity.entity_friendly_id;
102
+ if (!activity.entity_id) return null;
103
+ return activity.entity_id.substring(0, 8).toUpperCase();
104
+ };
105
+
106
+ if (isLoading) {
107
+ return (
108
+ <div className="flex items-center justify-center py-12">
109
+ <LoadingSpinner size="sm" />
110
+ </div>
111
+ );
112
+ }
113
+
114
+ if (activities.length === 0) {
115
+ return (
116
+ <EmptyState
117
+ icon={
118
+ <svg width="48" height="48" viewBox="0 0 24 24" fill="none" className="mb-4">
119
+ <path d="M12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2ZM12 3.5C7.30558 3.5 3.5 7.30558 3.5 12C3.5 16.6944 7.30558 20.5 12 20.5C16.6944 20.5 20.5 16.6944 20.5 12C20.5 7.30558 16.6944 3.5 12 3.5ZM12.75 7V12.1893L16.0303 15.4697L14.9697 16.5303L11.25 12.8107V7H12.75Z" fill="var(--fill-secondary)" />
120
+ </svg>
121
+ }
122
+ title="No activity recorded"
123
+ description="Key actions taken by this user will appear here."
124
+ />
125
+ );
126
+ }
127
+
128
+ const totalPages = Math.ceil(activities.length / ITEMS_PER_PAGE);
129
+ const paginatedActivities = activities.slice(
130
+ (currentPage - 1) * ITEMS_PER_PAGE,
131
+ currentPage * ITEMS_PER_PAGE
132
+ );
133
+
134
+ return (
135
+ <div className="flex flex-col w-full overflow-hidden">
136
+ {/* Table Header */}
137
+ <div className="flex h-12 items-center self-stretch bg-surface-secondary px-4 border-b border-border-primary gap-4">
138
+ <div className="w-[100px] flex-shrink-0 text-label-secondary text-[13px] font-medium leading-4">
139
+ Date / Time
140
+ </div>
141
+ <div className="flex-1 text-label-secondary text-[13px] font-medium leading-4">
142
+ Action
143
+ </div>
144
+ <div className="w-[140px] flex-shrink-0 text-label-secondary text-[13px] font-medium leading-4">
145
+ Reference
146
+ </div>
147
+ </div>
148
+
149
+ {/* Table Body */}
150
+ <div className="flex flex-col">
151
+ {paginatedActivities.map((activity) => {
152
+ const entityId = formatEntityId(activity);
153
+ const link = getEntityLink(activity);
154
+
155
+ return (
156
+ <div
157
+ key={activity.id}
158
+ className="flex items-center self-stretch px-4 py-4 border-b border-border-primary last:border-b-0 hover:bg-surface-primary-hover transition-colors gap-4"
159
+ >
160
+ <div className="w-[100px] flex-shrink-0 flex flex-col items-start">
161
+ <span className="text-label-secondary text-[11px] font-mono leading-4">
162
+ {format(new Date(activity.created_at), 'dd/MM/yyyy')}
163
+ </span>
164
+ <span className="text-label-secondary text-[11px] font-mono leading-4">
165
+ {format(new Date(activity.created_at), 'HH:mm')}
166
+ </span>
167
+ </div>
168
+ <div className="flex-1 text-label-primary text-[13px] leading-4">
169
+ {activity.action_description}
170
+ </div>
171
+ <div className="w-[140px] flex-shrink-0">
172
+ {entityId ? (
173
+ link ? (
174
+ <button
175
+ onClick={() => navigate(link)}
176
+ className="text-label-action text-[13px] font-mono leading-4 hover:underline"
177
+ >
178
+ {entityId}
179
+ </button>
180
+ ) : (
181
+ <span className="text-label-secondary text-[13px] font-mono leading-4">
182
+ {entityId}
183
+ </span>
184
+ )
185
+ ) : (
186
+ <span className="text-label-secondary text-[13px] leading-4">—</span>
187
+ )}
188
+ </div>
189
+ </div>
190
+ );
191
+ })}
192
+ </div>
193
+
194
+ {/* Pagination */}
195
+ {totalPages > 1 && (
196
+ <TablePagination
197
+ currentPage={currentPage}
198
+ totalPages={totalPages}
199
+ totalItems={activities.length}
200
+ itemsPerPage={ITEMS_PER_PAGE}
201
+ onPageChange={setCurrentPage}
202
+ entityName="entries"
203
+ />
204
+ )}
205
+ </div>
206
+ );
207
+ };
208
+
209
+ export default UserActivityHistory;
@@ -0,0 +1,94 @@
1
+ import React, { useState } from 'react';
2
+ import { RadioGroup, RadioGroupItem } from './ui/radio-group';
3
+ import { Label } from './ui/label';
4
+ import { IconGlobe } from '../../icons';
5
+ import { AVAILABLE_LANGUAGES } from '@/i18n';
6
+ import { useAppSettings } from '@/contexts/AppSettingsContext';
7
+ import { supabase } from '@/integrations/supabase/client';
8
+ import { useUser } from '@/contexts/UserContext';
9
+
10
+ const UserLanguageSettings: React.FC = () => {
11
+ const { profile, refreshProfile } = useUser();
12
+ const { settings } = useAppSettings();
13
+ const [saving, setSaving] = useState(false);
14
+
15
+ const currentValue = profile?.languagePreference || 'default';
16
+
17
+ // Only show languages enabled globally
18
+ const availableLanguages = AVAILABLE_LANGUAGES.filter(
19
+ lang => settings.supportedLanguages.includes(lang.code)
20
+ );
21
+
22
+ // If translation not enabled, don't show
23
+ if (!settings.languageTranslationEnabled) {
24
+ return null;
25
+ }
26
+
27
+ const handleChange = async (value: string) => {
28
+ setSaving(true);
29
+ try {
30
+ const { data: { user } } = await supabase.auth.getUser();
31
+ if (!user) return;
32
+
33
+ await supabase
34
+ .from('profiles')
35
+ .update({ language_preference: value } as any)
36
+ .eq('id', user.id);
37
+
38
+ await refreshProfile();
39
+ } catch (error) {
40
+ console.error('Error updating language preference:', error);
41
+ } finally {
42
+ setSaving(false);
43
+ }
44
+ };
45
+
46
+ return (
47
+ <div className="flex flex-col gap-4 p-2 self-stretch bg-surface-primary rounded-lg">
48
+ <h3 className="text-label-primary text-xl font-semibold px-2">Language</h3>
49
+
50
+ <RadioGroup value={currentValue} onValueChange={handleChange} className="flex flex-col gap-2">
51
+ <Label
52
+ htmlFor="lang-default"
53
+ className="flex p-2 items-center gap-3 rounded-lg cursor-pointer hover:bg-surface-primary-hover transition-colors"
54
+ >
55
+ <div className="flex flex-col items-center justify-center gap-2 px-2 pb-2 pt-1 bg-surface-secondary rounded flex-shrink-0 w-[60px]">
56
+ <IconGlobe size={24} className="text-fill-secondary" />
57
+ <div className="flex items-center justify-center w-full">
58
+ <RadioGroupItem value="default" id="lang-default" />
59
+ </div>
60
+ </div>
61
+ <div className="flex flex-col flex-1 min-w-0">
62
+ <span className="text-label-primary text-base font-semibold leading-tight">Use Dashboard Default</span>
63
+ <p className="text-label-secondary text-sm font-normal leading-normal">
64
+ Use the language set by the dashboard you're viewing.
65
+ </p>
66
+ </div>
67
+ </Label>
68
+
69
+ {availableLanguages.map((lang) => (
70
+ <Label
71
+ key={lang.code}
72
+ htmlFor={`lang-${lang.code}`}
73
+ className="flex p-2 items-center gap-3 rounded-lg cursor-pointer hover:bg-surface-primary-hover transition-colors"
74
+ >
75
+ <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]">
76
+ <span className="text-label-secondary text-sm font-medium uppercase">{lang.code}</span>
77
+ <div className="flex items-center justify-center w-full">
78
+ <RadioGroupItem value={lang.code} id={`lang-${lang.code}`} />
79
+ </div>
80
+ </div>
81
+ <div className="flex flex-col flex-1 min-w-0">
82
+ <span className="text-label-primary text-base font-semibold leading-tight">{lang.label}</span>
83
+ <p className="text-label-secondary text-sm font-normal leading-normal">
84
+ {lang.dir === 'rtl' ? 'Right-to-left layout' : 'Left-to-right layout'}
85
+ </p>
86
+ </div>
87
+ </Label>
88
+ ))}
89
+ </RadioGroup>
90
+ </div>
91
+ );
92
+ };
93
+
94
+ export default UserLanguageSettings;