@licklist/design 0.78.19 → 0.78.21

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 (268) hide show
  1. package/.storybook/main.cjs +55 -6
  2. package/.storybook/preview.jsx +77 -7
  3. package/dist/Maintenance/Maintenance.scss.js +6 -0
  4. package/dist/Maintenance/MaintenancePage.d.ts +12 -0
  5. package/dist/Maintenance/MaintenancePage.d.ts.map +1 -0
  6. package/dist/Maintenance/MaintenancePage.js +98 -0
  7. package/dist/Maintenance/SkeletonSidebar.d.ts +5 -0
  8. package/dist/Maintenance/SkeletonSidebar.d.ts.map +1 -0
  9. package/dist/Maintenance/SkeletonSidebar.js +101 -0
  10. package/dist/PageNotFound/PageNotFound.d.ts +10 -0
  11. package/dist/PageNotFound/PageNotFound.d.ts.map +1 -0
  12. package/dist/PageNotFound/PageNotFound.js +42 -0
  13. package/dist/PageNotFound/index.d.ts +2 -0
  14. package/dist/PageNotFound/index.d.ts.map +1 -0
  15. package/dist/UnderMaintenance/UnderMaintenance.d.ts +4 -0
  16. package/dist/UnderMaintenance/UnderMaintenance.d.ts.map +1 -0
  17. package/dist/UnderMaintenance/UnderMaintenance.js +39 -0
  18. package/dist/UnderMaintenance/UnderMaintenance.scss.js +6 -0
  19. package/dist/UnderMaintenance/index.d.ts +2 -0
  20. package/dist/UnderMaintenance/index.d.ts.map +1 -0
  21. package/dist/auth/Authorizer.d.ts.map +1 -1
  22. package/dist/auth/Authorizer.js +4 -3
  23. package/dist/auth/Layout/UserNavDropDown.js +1 -1
  24. package/dist/auth/Login/LoginComponent.d.ts.map +1 -1
  25. package/dist/auth/Login/LoginComponent.js +8 -6
  26. package/dist/auth/Logout/Logout.js +1 -1
  27. package/dist/iframe/ProductWithModifierModal/ModifierSetModal/ProductWithModifierSetModal.js +4 -3
  28. package/dist/iframe/ProductWithModifierModal/ModifierSetModal/controll/ModifierSetControll.js +2 -1
  29. package/dist/iframe/ProductWithModifierModal/ModifierSetModal/controll/ProductControll.js +1 -1
  30. package/dist/index.d.ts +2 -0
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +2 -0
  33. package/dist/notification/components/NotificationPlaceholders.js +1 -1
  34. package/dist/product-set/form/ProductCategoriesControl.d.ts.map +1 -1
  35. package/dist/product-set/form/ProductCategoriesControl.js +13 -5
  36. package/dist/provider/provider-details-input/ProviderDetailsInput.js +1 -1
  37. package/dist/recurrence-input/RecurrenceEndInput.d.ts.map +1 -1
  38. package/dist/recurrence-input/RecurrenceEndInput.js +7 -3
  39. package/dist/sortable-tree/SortableTree.js +1 -26
  40. package/dist/styles/overrides/_functions.scss +1 -1
  41. package/dist/v2/components/Alert/Alert.d.ts +14 -0
  42. package/dist/v2/components/Alert/Alert.d.ts.map +1 -0
  43. package/dist/v2/components/Alert/index.d.ts +3 -0
  44. package/dist/v2/components/Alert/index.d.ts.map +1 -0
  45. package/dist/v2/components/Button/Button.d.ts +10 -0
  46. package/dist/v2/components/Button/Button.d.ts.map +1 -0
  47. package/dist/v2/components/Button/index.d.ts +3 -0
  48. package/dist/v2/components/Button/index.d.ts.map +1 -0
  49. package/dist/v2/components/Colors/Colors.d.ts +21 -0
  50. package/dist/v2/components/Colors/Colors.d.ts.map +1 -0
  51. package/dist/v2/components/Colors/index.d.ts +3 -0
  52. package/dist/v2/components/Colors/index.d.ts.map +1 -0
  53. package/dist/v2/components/Typography/Typography.d.ts +11 -0
  54. package/dist/v2/components/Typography/Typography.d.ts.map +1 -0
  55. package/dist/v2/components/Typography/index.d.ts +3 -0
  56. package/dist/v2/components/Typography/index.d.ts.map +1 -0
  57. package/dist/v2/hooks/useAuth.d.ts +4 -0
  58. package/dist/v2/hooks/useAuth.d.ts.map +1 -0
  59. package/dist/v2/index.d.ts +56 -0
  60. package/dist/v2/index.d.ts.map +1 -0
  61. package/dist/v2/navigation/FigmasAdminSideBar/FigmasAdminSideBar.d.ts +8 -0
  62. package/dist/v2/navigation/FigmasAdminSideBar/FigmasAdminSideBar.d.ts.map +1 -0
  63. package/dist/v2/navigation/FigmasAdminSideBar/index.d.ts +3 -0
  64. package/dist/v2/navigation/FigmasAdminSideBar/index.d.ts.map +1 -0
  65. package/dist/v2/navigation/FigmasSideBar/FigmasSideBar.d.ts +22 -0
  66. package/dist/v2/navigation/FigmasSideBar/FigmasSideBar.d.ts.map +1 -0
  67. package/dist/v2/navigation/FigmasSideBar/index.d.ts +3 -0
  68. package/dist/v2/navigation/FigmasSideBar/index.d.ts.map +1 -0
  69. package/dist/v2/navigation/FigmasTopHat/FigmasTopHat.d.ts +15 -0
  70. package/dist/v2/navigation/FigmasTopHat/FigmasTopHat.d.ts.map +1 -0
  71. package/dist/v2/navigation/FigmasTopHat/index.d.ts +3 -0
  72. package/dist/v2/navigation/FigmasTopHat/index.d.ts.map +1 -0
  73. package/dist/v2/navigation/Navigation/Navigation.d.ts +9 -0
  74. package/dist/v2/navigation/Navigation/Navigation.d.ts.map +1 -0
  75. package/dist/v2/navigation/Navigation/index.d.ts +3 -0
  76. package/dist/v2/navigation/Navigation/index.d.ts.map +1 -0
  77. package/dist/v2/navigation/NavigationItem/NavigationItem.d.ts +12 -0
  78. package/dist/v2/navigation/NavigationItem/NavigationItem.d.ts.map +1 -0
  79. package/dist/v2/navigation/NavigationItem/index.d.ts +3 -0
  80. package/dist/v2/navigation/NavigationItem/index.d.ts.map +1 -0
  81. package/dist/v2/navigation/NavigationSection/NavigationSection.d.ts +8 -0
  82. package/dist/v2/navigation/NavigationSection/NavigationSection.d.ts.map +1 -0
  83. package/dist/v2/navigation/NavigationSection/index.d.ts +3 -0
  84. package/dist/v2/navigation/NavigationSection/index.d.ts.map +1 -0
  85. package/dist/v2/navigation/SideBarToggleLarge/SideBarToggleLarge.d.ts +9 -0
  86. package/dist/v2/navigation/SideBarToggleLarge/SideBarToggleLarge.d.ts.map +1 -0
  87. package/dist/v2/navigation/SideBarToggleLarge/index.d.ts +3 -0
  88. package/dist/v2/navigation/SideBarToggleLarge/index.d.ts.map +1 -0
  89. package/dist/v2/navigation/SidebarUserElement/SidebarUserElement.d.ts +15 -0
  90. package/dist/v2/navigation/SidebarUserElement/SidebarUserElement.d.ts.map +1 -0
  91. package/dist/v2/navigation/SidebarUserElement/index.d.ts +3 -0
  92. package/dist/v2/navigation/SidebarUserElement/index.d.ts.map +1 -0
  93. package/dist/v2/navigation/SidebarWithAuth.d.ts +20 -0
  94. package/dist/v2/navigation/SidebarWithAuth.d.ts.map +1 -0
  95. package/dist/v2/navigation/TopHatControlDisc/TopHatControlDisc.d.ts +9 -0
  96. package/dist/v2/navigation/TopHatControlDisc/TopHatControlDisc.d.ts.map +1 -0
  97. package/dist/v2/navigation/TopHatControlDisc/index.d.ts +3 -0
  98. package/dist/v2/navigation/TopHatControlDisc/index.d.ts.map +1 -0
  99. package/dist/v2/navigation/config.d.ts +3 -0
  100. package/dist/v2/navigation/config.d.ts.map +1 -0
  101. package/dist/v2/navigation/icons/index.d.ts +12 -0
  102. package/dist/v2/navigation/icons/index.d.ts.map +1 -0
  103. package/dist/v2/navigation/index.d.ts +23 -0
  104. package/dist/v2/navigation/index.d.ts.map +1 -0
  105. package/dist/v2/types/navigation.d.ts +17 -0
  106. package/dist/v2/types/navigation.d.ts.map +1 -0
  107. package/package.json +4 -3
  108. package/rollup.config.js +13 -0
  109. package/src/Maintenance/Maintenance.scss +253 -0
  110. package/src/Maintenance/MaintenancePage.tsx +59 -0
  111. package/src/Maintenance/SkeletonSidebar.tsx +56 -0
  112. package/src/PageNotFound/PageNotFound.scss +8 -0
  113. package/src/PageNotFound/PageNotFound.stories.tsx +23 -0
  114. package/src/PageNotFound/PageNotFound.tsx +43 -0
  115. package/src/PageNotFound/index.ts +1 -0
  116. package/src/UnderMaintenance/UnderMaintenance.scss +6 -0
  117. package/src/UnderMaintenance/UnderMaintenance.stories.tsx +23 -0
  118. package/src/UnderMaintenance/UnderMaintenance.tsx +22 -0
  119. package/src/UnderMaintenance/index.ts +1 -0
  120. package/src/auth/Auth.stories.tsx +37 -3
  121. package/src/auth/Authorizer.tsx +3 -2
  122. package/src/auth/ChangePassword/ChangePassword.stories.tsx +1 -8
  123. package/src/auth/Layout/UserNavDropDown.tsx +1 -1
  124. package/src/auth/Login/Login.stories.tsx +1 -6
  125. package/src/auth/Login/LoginComponent.tsx +7 -5
  126. package/src/auth/Logout/Logout.stories.tsx +3 -0
  127. package/src/auth/Logout/Logout.tsx +1 -1
  128. package/src/auth/Register/Register.stories.tsx +3 -7
  129. package/src/auth/ResetPassword/ResetPassword.stories.tsx +1 -8
  130. package/src/auth/Social/Social.stories.tsx +1 -6
  131. package/src/collapsible-input-group/CollapsibleInputGroup.stories.tsx +72 -4
  132. package/src/events/edit-event-modal/component/EditEventForm/EditEventForm.stories.tsx +2 -1
  133. package/src/events/edit-recurrent-event-modal/EditRecurrentEventModal.stories.tsx +3 -2
  134. package/src/events/event-card/EventCard.stories.tsx +3 -2
  135. package/src/events/event-statistic-modal/EventStatisticModal.stories.tsx +2 -1
  136. package/src/events/event-venue-map/EventVenueMap.stories.tsx +8 -1
  137. package/src/iframe/ProductWithModifierModal/ModifierSetModal/ProductWithModifierSetModal.tsx +3 -3
  138. package/src/iframe/ProductWithModifierModal/ModifierSetModal/controll/ModifierSetControll.tsx +2 -2
  139. package/src/iframe/ProductWithModifierModal/ModifierSetModal/controll/ProductControll.tsx +1 -1
  140. package/src/iframe/custom-fields/components/CustomDateField.stories.tsx +3 -2
  141. package/src/iframe/event/event-card/IframeEventCard.stories.tsx +7 -5
  142. package/src/iframe/event/event-card/IframeEventCards.stories.tsx +7 -6
  143. package/src/iframe/event/event-description/EventDescription.stories.tsx +3 -2
  144. package/src/iframe/event/event-venue-map/IframeEventVenueMap.stories.tsx +3 -2
  145. package/src/iframe/external-modal/ExternalModal.stories.tsx +3 -0
  146. package/src/iframe/order-process/components/CalendarStepsForm/CalendarStepsForm.stories.tsx +5 -0
  147. package/src/iframe/order-process/components/NavigationSteps/NavigationSteps.stories.tsx +2 -1
  148. package/src/iframe/order-process/components/PaymentCard/PaymentCard.stories.tsx +2 -1
  149. package/src/iframe/page/Page.stories.tsx +9 -8
  150. package/src/iframe/payment/order-items-table/OrderItemsTable.stories.tsx +2 -1
  151. package/src/iframe/payment/payment-status-header/PaymentStatusHeader.stories.tsx +2 -1
  152. package/src/index.ts +2 -0
  153. package/src/logo/Logo.stories.tsx +17 -14
  154. package/src/modals/confirmation/Confirmation.stories.tsx +2 -1
  155. package/src/notification/components/NotificationPlaceholders.stories.tsx +4 -0
  156. package/src/notification/components/NotificationPlaceholders.tsx +1 -1
  157. package/src/product-set/form/ProductCategoriesControl.tsx +12 -6
  158. package/src/product-set/form/ProductSetForm.stories.tsx +13 -4
  159. package/src/provider/location-input/LocationInput.stories.tsx +47 -2
  160. package/src/provider/provider-details-input/ProviderDetailsInput.stories.tsx +10 -1
  161. package/src/provider/provider-details-input/ProviderDetailsInput.tsx +1 -1
  162. package/src/provider/provider-form/ProviderForm.stories.tsx +46 -0
  163. package/src/provider/venue-form/VenueForm.stories.tsx +49 -0
  164. package/src/recurrence-input/RecurrenceEndInput.tsx +7 -5
  165. package/src/recurrence-input/RecurrenceInput.stories.tsx +3 -0
  166. package/src/resource/form/ResourceForm.stories.tsx +2 -1
  167. package/src/sales/guest-profile/previous-bookings/PreviousBookings.stories.tsx +2 -1
  168. package/src/sales/life-time-sales/LifeTimeSalesChart.stories.tsx +2 -1
  169. package/src/sales/manual-booking/select-date-type-control/SelectDateTypeControl.stories.tsx +2 -1
  170. package/src/sales/manual-booking/select-menu/SelectMenu.stories.tsx +2 -1
  171. package/src/sales/modals/payment-modal/PaymentModal.stories.tsx +3 -2
  172. package/src/sales/modals/refund-modal/RefundModal.stories.tsx +5 -4
  173. package/src/sales/payment-form/SalePaymentForm.stories.tsx +3 -2
  174. package/src/setting/dashboard/snippet-templates/card/SnippetTemplateCard.stories.tsx +2 -1
  175. package/src/snippet/snippet-template/SnippetTemplate.stories.tsx +2 -1
  176. package/src/snippet/snippet-template/form/SnippetTemplateForm.stories.tsx +4 -2
  177. package/src/sortable-tree/SortableTree.tsx +1 -1
  178. package/src/sortable-tree/SortableTreeItem.stories.tsx +12 -14
  179. package/src/styles/overrides/_functions.scss +1 -1
  180. package/src/table/Table.stories.tsx +3 -24
  181. package/src/tiptap-editor/TipTapMenu/TipTapMenu.stories.tsx +27 -3
  182. package/src/v2/components/Alert/Alert.scss +186 -0
  183. package/src/v2/components/Alert/Alert.stories.tsx +176 -0
  184. package/src/v2/components/Alert/Alert.tsx +62 -0
  185. package/src/v2/components/Alert/assets/alert-icon.svg +3 -0
  186. package/src/v2/components/Alert/assets/error-icon.svg +3 -0
  187. package/src/v2/components/Alert/assets/info-icon.svg +3 -0
  188. package/src/v2/components/Alert/assets/success-icon.svg +3 -0
  189. package/src/v2/components/Alert/index.ts +2 -0
  190. package/src/v2/components/Button/Button.scss +19 -0
  191. package/src/v2/components/Button/Button.stories.tsx +93 -0
  192. package/src/v2/components/Button/Button.tsx +37 -0
  193. package/src/v2/components/Button/index.ts +3 -0
  194. package/src/v2/components/Colors/Colors.scss +64 -0
  195. package/src/v2/components/Colors/Colors.stories.tsx +143 -0
  196. package/src/v2/components/Colors/Colors.tsx +51 -0
  197. package/src/v2/components/Colors/ColorsAliases.stories.tsx +285 -0
  198. package/src/v2/components/Colors/Sizes.stories.tsx +141 -0
  199. package/src/v2/components/Colors/index.ts +2 -0
  200. package/src/v2/components/Typography/Typography.scss +72 -0
  201. package/src/v2/components/Typography/Typography.stories.tsx +266 -0
  202. package/src/v2/components/Typography/Typography.tsx +56 -0
  203. package/src/v2/components/Typography/index.ts +2 -0
  204. package/src/v2/hooks/useAuth.ts +40 -0
  205. package/src/v2/index.ts +105 -0
  206. package/src/v2/navigation/FigmasAdminSideBar/FigmasAdminSideBar.scss +148 -0
  207. package/src/v2/navigation/FigmasAdminSideBar/FigmasAdminSideBar.stories.tsx +132 -0
  208. package/src/v2/navigation/FigmasAdminSideBar/FigmasAdminSideBar.tsx +272 -0
  209. package/src/v2/navigation/FigmasAdminSideBar/index.ts +2 -0
  210. package/src/v2/navigation/FigmasSideBar/FigmasSideBar.scss +214 -0
  211. package/src/v2/navigation/FigmasSideBar/FigmasSideBar.stories.tsx +164 -0
  212. package/src/v2/navigation/FigmasSideBar/FigmasSideBar.tsx +310 -0
  213. package/src/v2/navigation/FigmasSideBar/index.ts +2 -0
  214. package/src/v2/navigation/FigmasTopHat/FigmasTopHat.scss +291 -0
  215. package/src/v2/navigation/FigmasTopHat/FigmasTopHat.stories.tsx +201 -0
  216. package/src/v2/navigation/FigmasTopHat/FigmasTopHat.tsx +158 -0
  217. package/src/v2/navigation/FigmasTopHat/assets/bell-icon.svg +3 -0
  218. package/src/v2/navigation/FigmasTopHat/assets/disc-icon.svg +4 -0
  219. package/src/v2/navigation/FigmasTopHat/assets/inbox-icon.svg +3 -0
  220. package/src/v2/navigation/FigmasTopHat/assets/logo-desktop-1.svg +3 -0
  221. package/src/v2/navigation/FigmasTopHat/assets/logo-desktop-2.svg +4 -0
  222. package/src/v2/navigation/FigmasTopHat/assets/user-icon.svg +4 -0
  223. package/src/v2/navigation/FigmasTopHat/index.ts +2 -0
  224. package/src/v2/navigation/Navigation/Navigation.scss +15 -0
  225. package/src/v2/navigation/Navigation/Navigation.stories.tsx +137 -0
  226. package/src/v2/navigation/Navigation/Navigation.tsx +127 -0
  227. package/src/v2/navigation/Navigation/index.ts +3 -0
  228. package/src/v2/navigation/NavigationItem/NavigationItem.scss +61 -0
  229. package/src/v2/navigation/NavigationItem/NavigationItem.stories.tsx +110 -0
  230. package/src/v2/navigation/NavigationItem/NavigationItem.tsx +38 -0
  231. package/src/v2/navigation/NavigationItem/index.ts +3 -0
  232. package/src/v2/navigation/NavigationSection/NavigationSection.scss +20 -0
  233. package/src/v2/navigation/NavigationSection/NavigationSection.tsx +19 -0
  234. package/src/v2/navigation/NavigationSection/index.ts +3 -0
  235. package/src/v2/navigation/SideBarToggleLarge/SideBarToggleLarge.scss +64 -0
  236. package/src/v2/navigation/SideBarToggleLarge/SideBarToggleLarge.stories.tsx +183 -0
  237. package/src/v2/navigation/SideBarToggleLarge/SideBarToggleLarge.tsx +30 -0
  238. package/src/v2/navigation/SideBarToggleLarge/assets/sidebar-icon.svg +5 -0
  239. package/src/v2/navigation/SideBarToggleLarge/index.ts +2 -0
  240. package/src/v2/navigation/SidebarUserElement/SidebarUserElement.scss +148 -0
  241. package/src/v2/navigation/SidebarUserElement/SidebarUserElement.stories.tsx +342 -0
  242. package/src/v2/navigation/SidebarUserElement/SidebarUserElement.tsx +113 -0
  243. package/src/v2/navigation/SidebarUserElement/index.ts +2 -0
  244. package/src/v2/navigation/SidebarWithAuth.stories.tsx +208 -0
  245. package/src/v2/navigation/SidebarWithAuth.tsx +49 -0
  246. package/src/v2/navigation/TopHatControlDisc/TopHatControlDisc.scss +57 -0
  247. package/src/v2/navigation/TopHatControlDisc/TopHatControlDisc.stories.tsx +153 -0
  248. package/src/v2/navigation/TopHatControlDisc/TopHatControlDisc.tsx +30 -0
  249. package/src/v2/navigation/TopHatControlDisc/assets/disc-icon.svg +4 -0
  250. package/src/v2/navigation/TopHatControlDisc/index.ts +2 -0
  251. package/src/v2/navigation/config.tsx +150 -0
  252. package/src/v2/navigation/icons/index.tsx +72 -0
  253. package/src/v2/navigation/index.ts +23 -0
  254. package/src/v2/styles/components/Button.scss +168 -0
  255. package/src/v2/styles/form/NewInput.scss +172 -0
  256. package/src/v2/styles/index.scss +5 -0
  257. package/src/v2/styles/navigation/Navigation.scss +17 -0
  258. package/src/v2/styles/navigation/NavigationItem.scss +86 -0
  259. package/src/v2/styles/navigation/NavigationSection.scss +26 -0
  260. package/src/v2/styles/navigation/_index.scss +9 -0
  261. package/src/v2/styles/tokens/_aliases.scss +199 -0
  262. package/src/v2/styles/tokens/_colors.scss +121 -0
  263. package/src/v2/styles/tokens/_sizes.scss +122 -0
  264. package/src/v2/styles/tokens/_status.scss +108 -0
  265. package/src/v2/styles/tokens/_typography.scss +146 -0
  266. package/src/v2/types/navigation.ts +17 -0
  267. package/src/zone/form/ZoneForm.stories.tsx +2 -1
  268. package/styles/overrides/_functions.scss +6 -0
@@ -0,0 +1,15 @@
1
+ .navigation {
2
+ width: 100%;
3
+ height: 100%;
4
+ padding: 0 8px;
5
+ display: inline-flex;
6
+ flex-direction: column;
7
+ justify-content: flex-start;
8
+ align-items: flex-start;
9
+ gap: 4px;
10
+ background: var(--fills-background-primary, #FFFFFF);
11
+
12
+ &--collapsed {
13
+ width: 60px; // Collapsed width for icon-only mode
14
+ }
15
+ }
@@ -0,0 +1,137 @@
1
+ import { Meta, StoryObj } from '@storybook/react'
2
+ import React, { useState } from 'react'
3
+ import { Navigation } from './Navigation'
4
+
5
+ export default {
6
+ title: 'v2/Navigation/Navigation',
7
+ component: Navigation,
8
+ parameters: {
9
+ layout: 'fullscreen',
10
+ },
11
+ argTypes: {
12
+ isCollapsed: {
13
+ control: 'boolean',
14
+ description: 'Toggle between expanded (with labels) and collapsed (icons only) navigation',
15
+ },
16
+ activeItem: {
17
+ control: 'select',
18
+ options: ['home', 'companies', 'venues', 'promoters', 'admin', 'users', 'customers', 'reports', 'analytics', 'payments', 'settings'],
19
+ description: 'Which navigation item is currently active',
20
+ },
21
+ },
22
+ } as Meta
23
+
24
+ type Story = StoryObj<typeof Navigation>
25
+
26
+ // Default expanded navigation
27
+ export const Expanded: Story = {
28
+ args: {
29
+ isCollapsed: false,
30
+ activeItem: 'home',
31
+ },
32
+ render: (args) => (
33
+ <div style={{ width: '250px', height: '100vh', background: 'var(--fills-background-primary, #FFFFFF)', borderRight: '1px solid #E5E7EB' }}>
34
+ <Navigation {...args} />
35
+ </div>
36
+ ),
37
+ }
38
+
39
+ // Collapsed navigation (icons only)
40
+ export const Collapsed: Story = {
41
+ args: {
42
+ isCollapsed: true,
43
+ activeItem: 'home',
44
+ },
45
+ render: (args) => (
46
+ <div style={{ width: '76px', height: '100vh', background: 'var(--fills-background-primary, #FFFFFF)', borderRight: '1px solid #E5E7EB' }}>
47
+ <Navigation {...args} />
48
+ </div>
49
+ ),
50
+ }
51
+
52
+ // Interactive with toggle
53
+ export const Interactive: Story = {
54
+ render: function () {
55
+ const [isCollapsed, setIsCollapsed] = useState(false);
56
+ const [activeItem, setActiveItem] = useState('home');
57
+
58
+ return (
59
+ <div style={{ display: 'flex', height: '100vh' }}>
60
+ <div style={{ width: isCollapsed ? '76px' : '250px', background: 'var(--fills-background-primary, #FFFFFF)', borderRight: '1px solid #E5E7EB', transition: 'width 0.3s ease' }}>
61
+ <div style={{ padding: '16px', borderBottom: '1px solid #E5E7EB' }}>
62
+ <button
63
+ onClick={() => setIsCollapsed(!isCollapsed)}
64
+ style={{
65
+ padding: '8px 12px',
66
+ background: '#14215A',
67
+ color: 'white',
68
+ border: 'none',
69
+ borderRadius: '6px',
70
+ cursor: 'pointer',
71
+ fontSize: '13px',
72
+ fontWeight: '500',
73
+ }}
74
+ >
75
+ {isCollapsed ? '→' : '←'}
76
+ </button>
77
+ </div>
78
+ <Navigation
79
+ isCollapsed={isCollapsed}
80
+ activeItem={activeItem}
81
+ onItemClick={setActiveItem}
82
+ />
83
+ </div>
84
+ <div style={{ flex: 1, padding: '24px', background: '#F9FAFB' }}>
85
+ <h1 style={{ fontSize: '24px', fontWeight: '600', color: '#111827', marginBottom: '8px' }}>
86
+ Active Page: {activeItem.charAt(0).toUpperCase() + activeItem.slice(1)}
87
+ </h1>
88
+ <p style={{ color: '#6B7280' }}>Click a navigation item to change the active page</p>
89
+ </div>
90
+ </div>
91
+ );
92
+ },
93
+ }
94
+
95
+ // Different active states
96
+ export const ActiveOnCompanies: Story = {
97
+ args: {
98
+ isCollapsed: false,
99
+ activeItem: 'companies',
100
+ },
101
+ render: (args) => (
102
+ <div style={{ width: '250px', height: '100vh', background: 'var(--fills-background-primary, #FFFFFF)', borderRight: '1px solid #E5E7EB' }}>
103
+ <Navigation {...args} />
104
+ </div>
105
+ ),
106
+ }
107
+
108
+ export const ActiveOnSettings: Story = {
109
+ args: {
110
+ isCollapsed: false,
111
+ activeItem: 'settings',
112
+ },
113
+ render: (args) => (
114
+ <div style={{ width: '250px', height: '100vh', background: 'var(--fills-background-primary, #FFFFFF)', borderRight: '1px solid #E5E7EB' }}>
115
+ <Navigation {...args} />
116
+ </div>
117
+ ),
118
+ }
119
+
120
+ // Mobile viewport
121
+ export const Mobile: Story = {
122
+ args: {
123
+ isCollapsed: false,
124
+ activeItem: 'home',
125
+ },
126
+ parameters: {
127
+ viewport: {
128
+ defaultViewport: 'mobile1',
129
+ },
130
+ },
131
+ render: (args) => (
132
+ <div style={{ width: '100%', height: '100vh', background: 'var(--fills-background-primary, #FFFFFF)' }}>
133
+ <Navigation {...args} />
134
+ </div>
135
+ ),
136
+ }
137
+
@@ -0,0 +1,127 @@
1
+ import React from 'react'
2
+ import { NavigationItem } from '../NavigationItem'
3
+ import { NavigationSection } from '../NavigationSection'
4
+ import {
5
+ DashboardIcon,
6
+ CompanyIcon,
7
+ VenueIcon,
8
+ MarketingIcon,
9
+ AdminIcon,
10
+ ProfileIcon,
11
+ CustomersIcon,
12
+ ReportsIcon,
13
+ AnalyticsIcon,
14
+ PaymentsIcon,
15
+ SettingsIcon,
16
+ } from '../icons'
17
+ import './Navigation.scss'
18
+
19
+ export interface NavigationProps {
20
+ isCollapsed?: boolean
21
+ activeItem?: string
22
+ onItemClick?: (item: string) => void
23
+ }
24
+
25
+ export const Navigation: React.FC<NavigationProps> = ({
26
+ isCollapsed = false,
27
+ activeItem = 'home',
28
+ onItemClick,
29
+ }) => {
30
+ const handleClick = (item: string) => {
31
+ if (onItemClick) {
32
+ onItemClick(item)
33
+ }
34
+ }
35
+
36
+ return (
37
+ <nav className={`navigation ${isCollapsed ? 'navigation--collapsed' : ''}`}>
38
+ <NavigationSection title="Admin" isCollapsed={isCollapsed} />
39
+ <NavigationItem
40
+ icon={<DashboardIcon />}
41
+ label="Home"
42
+ isActive={activeItem === 'home'}
43
+ isCollapsed={isCollapsed}
44
+ onClick={() => handleClick('home')}
45
+ />
46
+
47
+ <NavigationSection title="Providers" isCollapsed={isCollapsed} />
48
+ <NavigationItem
49
+ icon={<CompanyIcon />}
50
+ label="Companies"
51
+ isActive={activeItem === 'companies'}
52
+ isCollapsed={isCollapsed}
53
+ onClick={() => handleClick('companies')}
54
+ />
55
+ <NavigationItem
56
+ icon={<VenueIcon />}
57
+ label="Venues"
58
+ isActive={activeItem === 'venues'}
59
+ isCollapsed={isCollapsed}
60
+ onClick={() => handleClick('venues')}
61
+ />
62
+ <NavigationItem
63
+ icon={<MarketingIcon />}
64
+ label="Promoters"
65
+ isActive={activeItem === 'promoters'}
66
+ isCollapsed={isCollapsed}
67
+ onClick={() => handleClick('promoters')}
68
+ />
69
+
70
+ <NavigationSection title="Users" isCollapsed={isCollapsed} />
71
+ <NavigationItem
72
+ icon={<AdminIcon />}
73
+ label="Booked it Admin"
74
+ isActive={activeItem === 'admin'}
75
+ isCollapsed={isCollapsed}
76
+ onClick={() => handleClick('admin')}
77
+ />
78
+ <NavigationItem
79
+ icon={<ProfileIcon />}
80
+ label="Users"
81
+ isActive={activeItem === 'users'}
82
+ isCollapsed={isCollapsed}
83
+ onClick={() => handleClick('users')}
84
+ />
85
+ <NavigationItem
86
+ icon={<CustomersIcon />}
87
+ label="Customers"
88
+ isActive={activeItem === 'customers'}
89
+ isCollapsed={isCollapsed}
90
+ onClick={() => handleClick('customers')}
91
+ />
92
+
93
+ <NavigationSection title="Reporting" isCollapsed={isCollapsed} />
94
+ <NavigationItem
95
+ icon={<ReportsIcon />}
96
+ label="Reports"
97
+ isActive={activeItem === 'reports'}
98
+ isCollapsed={isCollapsed}
99
+ onClick={() => handleClick('reports')}
100
+ />
101
+ <NavigationItem
102
+ icon={<AnalyticsIcon />}
103
+ label="Analytics"
104
+ isActive={activeItem === 'analytics'}
105
+ isCollapsed={isCollapsed}
106
+ onClick={() => handleClick('analytics')}
107
+ />
108
+ <NavigationItem
109
+ icon={<PaymentsIcon />}
110
+ label="Payments"
111
+ isActive={activeItem === 'payments'}
112
+ isCollapsed={isCollapsed}
113
+ onClick={() => handleClick('payments')}
114
+ />
115
+
116
+ <NavigationSection title="More" isCollapsed={isCollapsed} />
117
+ <NavigationItem
118
+ icon={<SettingsIcon />}
119
+ label="Settings"
120
+ isActive={activeItem === 'settings'}
121
+ isCollapsed={isCollapsed}
122
+ onClick={() => handleClick('settings')}
123
+ />
124
+ </nav>
125
+ )
126
+ }
127
+
@@ -0,0 +1,3 @@
1
+ export { Navigation } from './Navigation'
2
+ export type { NavigationProps } from './Navigation'
3
+
@@ -0,0 +1,61 @@
1
+ .navigation-item {
2
+ width: 100%;
3
+ flex: 1 1 0;
4
+ padding: 8px;
5
+ border-radius: 8px;
6
+ display: flex;
7
+ justify-content: flex-start;
8
+ align-items: center;
9
+ gap: 8px;
10
+ border: none;
11
+ background: transparent;
12
+ cursor: pointer;
13
+ transition: background-color 0.2s ease;
14
+ text-decoration: none;
15
+
16
+ &:hover {
17
+ background-color: rgba(0, 0, 0, 0.04);
18
+ }
19
+
20
+ &--active {
21
+ background-color: var(--fills-main-fill-secondary, rgba(20, 33, 90, 0.08));
22
+
23
+ .navigation-item__label {
24
+ font-weight: 600;
25
+ }
26
+ }
27
+
28
+ &--collapsed {
29
+ justify-content: center;
30
+ gap: 0;
31
+ }
32
+
33
+ &__icon {
34
+ width: 24px;
35
+ height: 24px;
36
+ position: relative;
37
+ overflow: hidden;
38
+ border-radius: 6px;
39
+ display: flex;
40
+ align-items: center;
41
+ justify-content: center;
42
+ flex-shrink: 0;
43
+
44
+ svg,
45
+ img {
46
+ width: 18px;
47
+ height: 18px;
48
+ color: var(--fills-main-fill-primary, #14215A);
49
+ }
50
+ }
51
+
52
+ &__label {
53
+ color: var(--labels-main-label-primary, #121E52);
54
+ font-size: 13px;
55
+ font-family: Geist, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
56
+ font-weight: 500;
57
+ line-height: 16px;
58
+ word-wrap: break-word;
59
+ white-space: nowrap;
60
+ }
61
+ }
@@ -0,0 +1,110 @@
1
+ import { Meta, StoryObj } from '@storybook/react'
2
+ import React from 'react'
3
+ import { NavigationItem } from './NavigationItem'
4
+ import { DashboardIcon, CompanyIcon, SettingsIcon } from '../icons'
5
+
6
+ export default {
7
+ title: 'v2/Navigation/NavigationItem',
8
+ component: NavigationItem,
9
+ argTypes: {
10
+ isActive: {
11
+ control: 'boolean',
12
+ description: 'Whether this navigation item is currently active/selected',
13
+ },
14
+ isCollapsed: {
15
+ control: 'boolean',
16
+ description: 'Whether to show only the icon (collapsed) or icon + label (expanded)',
17
+ },
18
+ label: {
19
+ control: 'text',
20
+ description: 'The text label for the navigation item',
21
+ },
22
+ },
23
+ } as Meta
24
+
25
+ type Story = StoryObj<typeof NavigationItem>
26
+
27
+ // Default expanded state
28
+ export const Default: Story = {
29
+ args: {
30
+ icon: <DashboardIcon />,
31
+ label: 'Home',
32
+ isActive: false,
33
+ isCollapsed: false,
34
+ },
35
+ }
36
+
37
+ // Active/selected state
38
+ export const Active: Story = {
39
+ args: {
40
+ icon: <DashboardIcon />,
41
+ label: 'Home',
42
+ isActive: true,
43
+ isCollapsed: false,
44
+ },
45
+ }
46
+
47
+ // Collapsed state (icon only)
48
+ export const Collapsed: Story = {
49
+ args: {
50
+ icon: <DashboardIcon />,
51
+ label: 'Home',
52
+ isActive: false,
53
+ isCollapsed: true,
54
+ },
55
+ }
56
+
57
+ // Collapsed and active
58
+ export const CollapsedActive: Story = {
59
+ args: {
60
+ icon: <DashboardIcon />,
61
+ label: 'Home',
62
+ isActive: true,
63
+ isCollapsed: true,
64
+ },
65
+ }
66
+
67
+ // With click handler
68
+ export const WithClickHandler: Story = {
69
+ args: {
70
+ icon: <DashboardIcon />,
71
+ label: 'Home',
72
+ isActive: false,
73
+ isCollapsed: false,
74
+ onClick: () => alert('Home clicked!'),
75
+ },
76
+ }
77
+
78
+ // As link (with href)
79
+ export const AsLink: Story = {
80
+ args: {
81
+ icon: <DashboardIcon />,
82
+ label: 'Home',
83
+ isActive: false,
84
+ isCollapsed: false,
85
+ href: '/dashboard',
86
+ },
87
+ }
88
+
89
+ // Multiple items preview
90
+ export const MultipleItems: Story = {
91
+ render: () => (
92
+ <div style={{ width: '250px', display: 'flex', flexDirection: 'column', gap: '4px', padding: '8px' }}>
93
+ <NavigationItem icon={<DashboardIcon />} label="Home" isActive={true} />
94
+ <NavigationItem icon={<CompanyIcon />} label="Companies" isActive={false} />
95
+ <NavigationItem icon={<SettingsIcon />} label="Settings" isActive={false} />
96
+ </div>
97
+ ),
98
+ }
99
+
100
+ // Collapsed navigation bar
101
+ export const CollapsedNavigation: Story = {
102
+ render: () => (
103
+ <div style={{ width: '76px', display: 'flex', flexDirection: 'column', gap: '4px', padding: '8px' }}>
104
+ <NavigationItem icon={<DashboardIcon />} label="Home" isActive={true} isCollapsed={true} />
105
+ <NavigationItem icon={<CompanyIcon />} label="Companies" isActive={false} isCollapsed={true} />
106
+ <NavigationItem icon={<SettingsIcon />} label="Settings" isActive={false} isCollapsed={true} />
107
+ </div>
108
+ ),
109
+ }
110
+
@@ -0,0 +1,38 @@
1
+ import React from 'react'
2
+ import './NavigationItem.scss'
3
+
4
+ export interface NavigationItemProps {
5
+ icon: React.ReactNode
6
+ label: string
7
+ isActive?: boolean
8
+ isCollapsed?: boolean
9
+ onClick?: () => void
10
+ href?: string
11
+ }
12
+
13
+ export const NavigationItem: React.FC<NavigationItemProps> = ({
14
+ icon,
15
+ label,
16
+ isActive = false,
17
+ isCollapsed = false,
18
+ onClick,
19
+ href,
20
+ }) => {
21
+ const Component = href ? 'a' : 'button'
22
+ const className = `navigation-item ${isActive ? 'navigation-item--active' : ''} ${isCollapsed ? 'navigation-item--collapsed' : ''
23
+ }`
24
+
25
+ return (
26
+ <Component
27
+ className={className}
28
+ onClick={onClick}
29
+ href={href}
30
+ aria-label={label}
31
+ aria-current={isActive ? 'page' : undefined}
32
+ >
33
+ <div className="navigation-item__icon">{icon}</div>
34
+ {!isCollapsed && <span className="navigation-item__label">{label}</span>}
35
+ </Component>
36
+ )
37
+ }
38
+
@@ -0,0 +1,3 @@
1
+ export { NavigationItem } from './NavigationItem'
2
+ export type { NavigationItemProps } from './NavigationItem'
3
+
@@ -0,0 +1,20 @@
1
+ .navigation-section {
2
+ align-self: stretch;
3
+ padding: 8px 8px 0;
4
+ display: flex;
5
+ flex-direction: column;
6
+ justify-content: center;
7
+ align-items: flex-start;
8
+ gap: 8px;
9
+
10
+ &__title {
11
+ color: var(--labels-main-label-secondary, #626A90);
12
+ font-size: 13px;
13
+ font-family: Geist, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;
14
+ font-weight: 500;
15
+ line-height: 16px;
16
+ word-wrap: break-word;
17
+ text-transform: uppercase;
18
+ letter-spacing: 0.5px;
19
+ }
20
+ }
@@ -0,0 +1,19 @@
1
+ import React from 'react'
2
+ import './NavigationSection.scss'
3
+
4
+ export interface NavigationSectionProps {
5
+ title: string
6
+ isCollapsed?: boolean
7
+ }
8
+
9
+ export const NavigationSection: React.FC<NavigationSectionProps> = ({
10
+ title,
11
+ isCollapsed = false,
12
+ }) => {
13
+ return (
14
+ <div className={`navigation-section ${isCollapsed ? 'navigation-section--collapsed' : ''}`}>
15
+ <div className="navigation-section__title">{title}</div>
16
+ </div>
17
+ )
18
+ }
19
+
@@ -0,0 +1,3 @@
1
+ export { NavigationSection } from './NavigationSection'
2
+ export type { NavigationSectionProps } from './NavigationSection'
3
+
@@ -0,0 +1,64 @@
1
+ @import '../../../styles/overrides/functions';
2
+
3
+ .sidebar-toggle-large {
4
+ background: var(--surfaces-main-background-primary, #ffffff);
5
+ border: 1px solid var(--borders-main-border-primary, #E8E9EF);
6
+ box-sizing: border-box;
7
+ display: flex;
8
+ gap: 8px;
9
+ align-items: flex-start;
10
+ justify-content: center;
11
+ padding: 10px 8px;
12
+ border-radius: 6px;
13
+ cursor: pointer;
14
+ transition: all 0.2s ease;
15
+ position: relative;
16
+ width: 100%;
17
+ height: 100%;
18
+
19
+ &:hover {
20
+ background: var(--surfaces-main-background-tertiary, #E8E9EF);
21
+ }
22
+
23
+ &:focus-visible {
24
+ outline: 2px solid var(--fills-main-fill-primary, #14215A);
25
+ outline-offset: 2px;
26
+ }
27
+
28
+ &--hover {
29
+ background: var(--surfaces-main-background-tertiary, #E8E9EF);
30
+ }
31
+
32
+ &--pressed {
33
+ background: var(--surfaces-main-background-quaternary, #D1D3D8);
34
+ transform: translateY(1px);
35
+ border-color: var(--borders-main-border-secondary, #D1D3D8);
36
+ }
37
+
38
+ &__icon {
39
+ display: grid;
40
+ grid-template-columns: max-content;
41
+ grid-template-rows: max-content;
42
+ justify-items: start;
43
+ line-height: 0;
44
+ flex-shrink: 0;
45
+ width: 24px;
46
+ height: 20px;
47
+
48
+ &-inner {
49
+ grid-column: 1;
50
+ grid-row: 1;
51
+ height: 20px;
52
+ margin-left: 0;
53
+ margin-top: 0;
54
+ width: 24px;
55
+
56
+ .sidebar-toggle-large__icon-img {
57
+ width: 100%;
58
+ height: 100%;
59
+ display: block;
60
+ max-width: none;
61
+ }
62
+ }
63
+ }
64
+ }