@licklist/design 0.78.18 → 0.78.20

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 (261) 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/iframe/ProductWithModifierModal/ModifierSetModal/ProductWithModifierSetModal.js +4 -3
  24. package/dist/iframe/ProductWithModifierModal/ModifierSetModal/controll/ModifierSetControll.js +2 -1
  25. package/dist/iframe/ProductWithModifierModal/ModifierSetModal/controll/ProductControll.js +1 -1
  26. package/dist/index.d.ts +2 -0
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +2 -0
  29. package/dist/notification/components/NotificationPlaceholders.js +1 -1
  30. package/dist/product-set/form/ProductCategoriesControl.d.ts.map +1 -1
  31. package/dist/product-set/form/ProductCategoriesControl.js +13 -5
  32. package/dist/provider/provider-details-input/ProviderDetailsInput.js +1 -1
  33. package/dist/recurrence-input/RecurrenceEndInput.d.ts.map +1 -1
  34. package/dist/recurrence-input/RecurrenceEndInput.js +7 -3
  35. package/dist/sortable-tree/SortableTree.js +1 -26
  36. package/dist/styles/overrides/_functions.scss +1 -1
  37. package/dist/v2/components/Alert/Alert.d.ts +14 -0
  38. package/dist/v2/components/Alert/Alert.d.ts.map +1 -0
  39. package/dist/v2/components/Alert/index.d.ts +3 -0
  40. package/dist/v2/components/Alert/index.d.ts.map +1 -0
  41. package/dist/v2/components/Button/Button.d.ts +10 -0
  42. package/dist/v2/components/Button/Button.d.ts.map +1 -0
  43. package/dist/v2/components/Button/index.d.ts +3 -0
  44. package/dist/v2/components/Button/index.d.ts.map +1 -0
  45. package/dist/v2/components/Colors/Colors.d.ts +21 -0
  46. package/dist/v2/components/Colors/Colors.d.ts.map +1 -0
  47. package/dist/v2/components/Colors/index.d.ts +3 -0
  48. package/dist/v2/components/Colors/index.d.ts.map +1 -0
  49. package/dist/v2/components/Typography/Typography.d.ts +11 -0
  50. package/dist/v2/components/Typography/Typography.d.ts.map +1 -0
  51. package/dist/v2/components/Typography/index.d.ts +3 -0
  52. package/dist/v2/components/Typography/index.d.ts.map +1 -0
  53. package/dist/v2/hooks/useAuth.d.ts +4 -0
  54. package/dist/v2/hooks/useAuth.d.ts.map +1 -0
  55. package/dist/v2/index.d.ts +56 -0
  56. package/dist/v2/index.d.ts.map +1 -0
  57. package/dist/v2/navigation/FigmasAdminSideBar/FigmasAdminSideBar.d.ts +8 -0
  58. package/dist/v2/navigation/FigmasAdminSideBar/FigmasAdminSideBar.d.ts.map +1 -0
  59. package/dist/v2/navigation/FigmasAdminSideBar/index.d.ts +3 -0
  60. package/dist/v2/navigation/FigmasAdminSideBar/index.d.ts.map +1 -0
  61. package/dist/v2/navigation/FigmasSideBar/FigmasSideBar.d.ts +22 -0
  62. package/dist/v2/navigation/FigmasSideBar/FigmasSideBar.d.ts.map +1 -0
  63. package/dist/v2/navigation/FigmasSideBar/index.d.ts +3 -0
  64. package/dist/v2/navigation/FigmasSideBar/index.d.ts.map +1 -0
  65. package/dist/v2/navigation/FigmasTopHat/FigmasTopHat.d.ts +15 -0
  66. package/dist/v2/navigation/FigmasTopHat/FigmasTopHat.d.ts.map +1 -0
  67. package/dist/v2/navigation/FigmasTopHat/index.d.ts +3 -0
  68. package/dist/v2/navigation/FigmasTopHat/index.d.ts.map +1 -0
  69. package/dist/v2/navigation/Navigation/Navigation.d.ts +9 -0
  70. package/dist/v2/navigation/Navigation/Navigation.d.ts.map +1 -0
  71. package/dist/v2/navigation/Navigation/index.d.ts +3 -0
  72. package/dist/v2/navigation/Navigation/index.d.ts.map +1 -0
  73. package/dist/v2/navigation/NavigationItem/NavigationItem.d.ts +12 -0
  74. package/dist/v2/navigation/NavigationItem/NavigationItem.d.ts.map +1 -0
  75. package/dist/v2/navigation/NavigationItem/index.d.ts +3 -0
  76. package/dist/v2/navigation/NavigationItem/index.d.ts.map +1 -0
  77. package/dist/v2/navigation/NavigationSection/NavigationSection.d.ts +8 -0
  78. package/dist/v2/navigation/NavigationSection/NavigationSection.d.ts.map +1 -0
  79. package/dist/v2/navigation/NavigationSection/index.d.ts +3 -0
  80. package/dist/v2/navigation/NavigationSection/index.d.ts.map +1 -0
  81. package/dist/v2/navigation/SideBarToggleLarge/SideBarToggleLarge.d.ts +9 -0
  82. package/dist/v2/navigation/SideBarToggleLarge/SideBarToggleLarge.d.ts.map +1 -0
  83. package/dist/v2/navigation/SideBarToggleLarge/index.d.ts +3 -0
  84. package/dist/v2/navigation/SideBarToggleLarge/index.d.ts.map +1 -0
  85. package/dist/v2/navigation/SidebarUserElement/SidebarUserElement.d.ts +15 -0
  86. package/dist/v2/navigation/SidebarUserElement/SidebarUserElement.d.ts.map +1 -0
  87. package/dist/v2/navigation/SidebarUserElement/index.d.ts +3 -0
  88. package/dist/v2/navigation/SidebarUserElement/index.d.ts.map +1 -0
  89. package/dist/v2/navigation/SidebarWithAuth.d.ts +20 -0
  90. package/dist/v2/navigation/SidebarWithAuth.d.ts.map +1 -0
  91. package/dist/v2/navigation/TopHatControlDisc/TopHatControlDisc.d.ts +9 -0
  92. package/dist/v2/navigation/TopHatControlDisc/TopHatControlDisc.d.ts.map +1 -0
  93. package/dist/v2/navigation/TopHatControlDisc/index.d.ts +3 -0
  94. package/dist/v2/navigation/TopHatControlDisc/index.d.ts.map +1 -0
  95. package/dist/v2/navigation/config.d.ts +3 -0
  96. package/dist/v2/navigation/config.d.ts.map +1 -0
  97. package/dist/v2/navigation/icons/index.d.ts +12 -0
  98. package/dist/v2/navigation/icons/index.d.ts.map +1 -0
  99. package/dist/v2/navigation/index.d.ts +23 -0
  100. package/dist/v2/navigation/index.d.ts.map +1 -0
  101. package/dist/v2/types/navigation.d.ts +17 -0
  102. package/dist/v2/types/navigation.d.ts.map +1 -0
  103. package/package.json +2 -1
  104. package/rollup.config.js +13 -0
  105. package/src/Maintenance/Maintenance.scss +253 -0
  106. package/src/Maintenance/MaintenancePage.tsx +59 -0
  107. package/src/Maintenance/SkeletonSidebar.tsx +56 -0
  108. package/src/PageNotFound/PageNotFound.scss +8 -0
  109. package/src/PageNotFound/PageNotFound.stories.tsx +23 -0
  110. package/src/PageNotFound/PageNotFound.tsx +43 -0
  111. package/src/PageNotFound/index.ts +1 -0
  112. package/src/UnderMaintenance/UnderMaintenance.scss +6 -0
  113. package/src/UnderMaintenance/UnderMaintenance.stories.tsx +23 -0
  114. package/src/UnderMaintenance/UnderMaintenance.tsx +22 -0
  115. package/src/UnderMaintenance/index.ts +1 -0
  116. package/src/auth/Auth.stories.tsx +37 -3
  117. package/src/auth/Authorizer.tsx +3 -2
  118. package/src/auth/ChangePassword/ChangePassword.stories.tsx +1 -8
  119. package/src/auth/Login/Login.stories.tsx +1 -6
  120. package/src/auth/Logout/Logout.stories.tsx +3 -0
  121. package/src/auth/Register/Register.stories.tsx +3 -7
  122. package/src/auth/ResetPassword/ResetPassword.stories.tsx +1 -8
  123. package/src/auth/Social/Social.stories.tsx +1 -6
  124. package/src/collapsible-input-group/CollapsibleInputGroup.stories.tsx +72 -4
  125. package/src/events/edit-event-modal/component/EditEventForm/EditEventForm.stories.tsx +2 -1
  126. package/src/events/edit-recurrent-event-modal/EditRecurrentEventModal.stories.tsx +3 -2
  127. package/src/events/event-card/EventCard.stories.tsx +3 -2
  128. package/src/events/event-statistic-modal/EventStatisticModal.stories.tsx +2 -1
  129. package/src/events/event-venue-map/EventVenueMap.stories.tsx +8 -1
  130. package/src/iframe/ProductWithModifierModal/ModifierSetModal/ProductWithModifierSetModal.tsx +3 -3
  131. package/src/iframe/ProductWithModifierModal/ModifierSetModal/controll/ModifierSetControll.tsx +2 -2
  132. package/src/iframe/ProductWithModifierModal/ModifierSetModal/controll/ProductControll.tsx +1 -1
  133. package/src/iframe/custom-fields/components/CustomDateField.stories.tsx +3 -2
  134. package/src/iframe/event/event-card/IframeEventCard.stories.tsx +7 -5
  135. package/src/iframe/event/event-card/IframeEventCards.stories.tsx +7 -6
  136. package/src/iframe/event/event-description/EventDescription.stories.tsx +3 -2
  137. package/src/iframe/event/event-venue-map/IframeEventVenueMap.stories.tsx +3 -2
  138. package/src/iframe/external-modal/ExternalModal.stories.tsx +3 -0
  139. package/src/iframe/order-process/components/CalendarStepsForm/CalendarStepsForm.stories.tsx +5 -0
  140. package/src/iframe/order-process/components/NavigationSteps/NavigationSteps.stories.tsx +2 -1
  141. package/src/iframe/order-process/components/PaymentCard/PaymentCard.stories.tsx +2 -1
  142. package/src/iframe/page/Page.stories.tsx +9 -8
  143. package/src/iframe/payment/order-items-table/OrderItemsTable.stories.tsx +2 -1
  144. package/src/iframe/payment/payment-status-header/PaymentStatusHeader.stories.tsx +2 -1
  145. package/src/index.ts +2 -0
  146. package/src/logo/Logo.stories.tsx +17 -14
  147. package/src/modals/confirmation/Confirmation.stories.tsx +2 -1
  148. package/src/notification/components/NotificationPlaceholders.stories.tsx +4 -0
  149. package/src/notification/components/NotificationPlaceholders.tsx +1 -1
  150. package/src/product-set/form/ProductCategoriesControl.tsx +12 -6
  151. package/src/product-set/form/ProductSetForm.stories.tsx +13 -4
  152. package/src/provider/location-input/LocationInput.stories.tsx +47 -2
  153. package/src/provider/provider-details-input/ProviderDetailsInput.stories.tsx +10 -1
  154. package/src/provider/provider-details-input/ProviderDetailsInput.tsx +1 -1
  155. package/src/provider/provider-form/ProviderForm.stories.tsx +46 -0
  156. package/src/provider/venue-form/VenueForm.stories.tsx +49 -0
  157. package/src/recurrence-input/RecurrenceEndInput.tsx +7 -5
  158. package/src/recurrence-input/RecurrenceInput.stories.tsx +3 -0
  159. package/src/resource/form/ResourceForm.stories.tsx +2 -1
  160. package/src/sales/guest-profile/previous-bookings/PreviousBookings.stories.tsx +2 -1
  161. package/src/sales/life-time-sales/LifeTimeSalesChart.stories.tsx +2 -1
  162. package/src/sales/manual-booking/select-date-type-control/SelectDateTypeControl.stories.tsx +2 -1
  163. package/src/sales/manual-booking/select-menu/SelectMenu.stories.tsx +2 -1
  164. package/src/sales/modals/payment-modal/PaymentModal.stories.tsx +3 -2
  165. package/src/sales/modals/refund-modal/RefundModal.stories.tsx +5 -4
  166. package/src/sales/payment-form/SalePaymentForm.stories.tsx +3 -2
  167. package/src/setting/dashboard/snippet-templates/card/SnippetTemplateCard.stories.tsx +2 -1
  168. package/src/snippet/snippet-template/SnippetTemplate.stories.tsx +2 -1
  169. package/src/snippet/snippet-template/form/SnippetTemplateForm.stories.tsx +4 -2
  170. package/src/sortable-tree/SortableTree.tsx +1 -1
  171. package/src/sortable-tree/SortableTreeItem.stories.tsx +12 -14
  172. package/src/styles/overrides/_functions.scss +1 -1
  173. package/src/table/Table.stories.tsx +3 -24
  174. package/src/tiptap-editor/TipTapMenu/TipTapMenu.stories.tsx +27 -3
  175. package/src/v2/components/Alert/Alert.scss +186 -0
  176. package/src/v2/components/Alert/Alert.stories.tsx +176 -0
  177. package/src/v2/components/Alert/Alert.tsx +62 -0
  178. package/src/v2/components/Alert/assets/alert-icon.svg +3 -0
  179. package/src/v2/components/Alert/assets/error-icon.svg +3 -0
  180. package/src/v2/components/Alert/assets/info-icon.svg +3 -0
  181. package/src/v2/components/Alert/assets/success-icon.svg +3 -0
  182. package/src/v2/components/Alert/index.ts +2 -0
  183. package/src/v2/components/Button/Button.scss +19 -0
  184. package/src/v2/components/Button/Button.stories.tsx +93 -0
  185. package/src/v2/components/Button/Button.tsx +37 -0
  186. package/src/v2/components/Button/index.ts +3 -0
  187. package/src/v2/components/Colors/Colors.scss +64 -0
  188. package/src/v2/components/Colors/Colors.stories.tsx +143 -0
  189. package/src/v2/components/Colors/Colors.tsx +51 -0
  190. package/src/v2/components/Colors/ColorsAliases.stories.tsx +285 -0
  191. package/src/v2/components/Colors/Sizes.stories.tsx +141 -0
  192. package/src/v2/components/Colors/index.ts +2 -0
  193. package/src/v2/components/Typography/Typography.scss +72 -0
  194. package/src/v2/components/Typography/Typography.stories.tsx +266 -0
  195. package/src/v2/components/Typography/Typography.tsx +56 -0
  196. package/src/v2/components/Typography/index.ts +2 -0
  197. package/src/v2/hooks/useAuth.ts +40 -0
  198. package/src/v2/index.ts +105 -0
  199. package/src/v2/navigation/FigmasAdminSideBar/FigmasAdminSideBar.scss +148 -0
  200. package/src/v2/navigation/FigmasAdminSideBar/FigmasAdminSideBar.stories.tsx +132 -0
  201. package/src/v2/navigation/FigmasAdminSideBar/FigmasAdminSideBar.tsx +272 -0
  202. package/src/v2/navigation/FigmasAdminSideBar/index.ts +2 -0
  203. package/src/v2/navigation/FigmasSideBar/FigmasSideBar.scss +214 -0
  204. package/src/v2/navigation/FigmasSideBar/FigmasSideBar.stories.tsx +164 -0
  205. package/src/v2/navigation/FigmasSideBar/FigmasSideBar.tsx +310 -0
  206. package/src/v2/navigation/FigmasSideBar/index.ts +2 -0
  207. package/src/v2/navigation/FigmasTopHat/FigmasTopHat.scss +291 -0
  208. package/src/v2/navigation/FigmasTopHat/FigmasTopHat.stories.tsx +201 -0
  209. package/src/v2/navigation/FigmasTopHat/FigmasTopHat.tsx +158 -0
  210. package/src/v2/navigation/FigmasTopHat/assets/bell-icon.svg +3 -0
  211. package/src/v2/navigation/FigmasTopHat/assets/disc-icon.svg +4 -0
  212. package/src/v2/navigation/FigmasTopHat/assets/inbox-icon.svg +3 -0
  213. package/src/v2/navigation/FigmasTopHat/assets/logo-desktop-1.svg +3 -0
  214. package/src/v2/navigation/FigmasTopHat/assets/logo-desktop-2.svg +4 -0
  215. package/src/v2/navigation/FigmasTopHat/assets/user-icon.svg +4 -0
  216. package/src/v2/navigation/FigmasTopHat/index.ts +2 -0
  217. package/src/v2/navigation/Navigation/Navigation.scss +15 -0
  218. package/src/v2/navigation/Navigation/Navigation.stories.tsx +137 -0
  219. package/src/v2/navigation/Navigation/Navigation.tsx +127 -0
  220. package/src/v2/navigation/Navigation/index.ts +3 -0
  221. package/src/v2/navigation/NavigationItem/NavigationItem.scss +61 -0
  222. package/src/v2/navigation/NavigationItem/NavigationItem.stories.tsx +110 -0
  223. package/src/v2/navigation/NavigationItem/NavigationItem.tsx +38 -0
  224. package/src/v2/navigation/NavigationItem/index.ts +3 -0
  225. package/src/v2/navigation/NavigationSection/NavigationSection.scss +20 -0
  226. package/src/v2/navigation/NavigationSection/NavigationSection.tsx +19 -0
  227. package/src/v2/navigation/NavigationSection/index.ts +3 -0
  228. package/src/v2/navigation/SideBarToggleLarge/SideBarToggleLarge.scss +64 -0
  229. package/src/v2/navigation/SideBarToggleLarge/SideBarToggleLarge.stories.tsx +183 -0
  230. package/src/v2/navigation/SideBarToggleLarge/SideBarToggleLarge.tsx +30 -0
  231. package/src/v2/navigation/SideBarToggleLarge/assets/sidebar-icon.svg +5 -0
  232. package/src/v2/navigation/SideBarToggleLarge/index.ts +2 -0
  233. package/src/v2/navigation/SidebarUserElement/SidebarUserElement.scss +148 -0
  234. package/src/v2/navigation/SidebarUserElement/SidebarUserElement.stories.tsx +342 -0
  235. package/src/v2/navigation/SidebarUserElement/SidebarUserElement.tsx +113 -0
  236. package/src/v2/navigation/SidebarUserElement/index.ts +2 -0
  237. package/src/v2/navigation/SidebarWithAuth.stories.tsx +208 -0
  238. package/src/v2/navigation/SidebarWithAuth.tsx +49 -0
  239. package/src/v2/navigation/TopHatControlDisc/TopHatControlDisc.scss +57 -0
  240. package/src/v2/navigation/TopHatControlDisc/TopHatControlDisc.stories.tsx +153 -0
  241. package/src/v2/navigation/TopHatControlDisc/TopHatControlDisc.tsx +30 -0
  242. package/src/v2/navigation/TopHatControlDisc/assets/disc-icon.svg +4 -0
  243. package/src/v2/navigation/TopHatControlDisc/index.ts +2 -0
  244. package/src/v2/navigation/config.tsx +150 -0
  245. package/src/v2/navigation/icons/index.tsx +72 -0
  246. package/src/v2/navigation/index.ts +23 -0
  247. package/src/v2/styles/components/Button.scss +168 -0
  248. package/src/v2/styles/form/NewInput.scss +172 -0
  249. package/src/v2/styles/index.scss +5 -0
  250. package/src/v2/styles/navigation/Navigation.scss +17 -0
  251. package/src/v2/styles/navigation/NavigationItem.scss +86 -0
  252. package/src/v2/styles/navigation/NavigationSection.scss +26 -0
  253. package/src/v2/styles/navigation/_index.scss +9 -0
  254. package/src/v2/styles/tokens/_aliases.scss +199 -0
  255. package/src/v2/styles/tokens/_colors.scss +121 -0
  256. package/src/v2/styles/tokens/_sizes.scss +122 -0
  257. package/src/v2/styles/tokens/_status.scss +108 -0
  258. package/src/v2/styles/tokens/_typography.scss +146 -0
  259. package/src/v2/types/navigation.ts +17 -0
  260. package/src/zone/form/ZoneForm.stories.tsx +2 -1
  261. package/styles/overrides/_functions.scss +6 -0
@@ -0,0 +1,291 @@
1
+ @import '../../../styles/overrides/functions';
2
+
3
+ .figmas-tophat {
4
+ background: var(--surfaces-main-background-secondary, #F8F8FA);
5
+ border-bottom: 1px solid var(--borders-main-border-primary, #E8E9EF);
6
+ box-sizing: border-box;
7
+ display: flex;
8
+ align-items: center;
9
+ justify-content: space-between;
10
+ width: 100%;
11
+
12
+ &--desktop {
13
+ padding: 4px;
14
+ width: 1369px;
15
+ }
16
+
17
+ &--mobile {
18
+ padding: 4px 4px 4px 16px;
19
+ width: 370px;
20
+ }
21
+
22
+ &__left-elements {
23
+ display: flex;
24
+ flex: 1 0 0;
25
+ gap: 8px;
26
+ align-items: center;
27
+ min-height: 0;
28
+ min-width: 0;
29
+ }
30
+
31
+ &__sidebar-toggle {
32
+ background: var(--surfaces-main-background-primary, #ffffff);
33
+ border: 1px solid var(--borders-main-border-primary, #E8E9EF);
34
+ box-sizing: border-box;
35
+ display: flex;
36
+ gap: 8px;
37
+ align-items: flex-start;
38
+ justify-content: center;
39
+ padding: 10px 8px;
40
+ border-radius: 6px;
41
+ cursor: pointer;
42
+ transition: all 0.2s ease;
43
+
44
+ &:hover {
45
+ background: var(--surfaces-main-background-tertiary, #E8E9EF);
46
+ }
47
+
48
+ &:focus-visible {
49
+ outline: 2px solid var(--fills-main-fill-primary, #14215A);
50
+ outline-offset: 2px;
51
+ }
52
+ }
53
+
54
+ &__sidebar-icon {
55
+ display: grid;
56
+ grid-template-columns: max-content;
57
+ grid-template-rows: max-content;
58
+ justify-items: start;
59
+ line-height: 0;
60
+ width: 24px;
61
+ height: 20px;
62
+
63
+ svg {
64
+ width: 100%;
65
+ height: 100%;
66
+ display: block;
67
+ }
68
+ }
69
+
70
+ &__logo-container {
71
+ flex-shrink: 0;
72
+ }
73
+
74
+ &__logo {
75
+ height: 32px;
76
+ overflow: hidden;
77
+ width: 124px;
78
+ position: relative;
79
+
80
+ &-shape1 {
81
+ position: absolute;
82
+ top: 0.05%;
83
+ right: 74.87%;
84
+ bottom: 0.16%;
85
+ left: 0.01%;
86
+ display: flex;
87
+ align-items: center;
88
+ justify-content: center;
89
+
90
+ .figmas-tophat__logo-img {
91
+ width: 17.523px;
92
+ height: 17.523px;
93
+ transform: rotate(314.61deg) skewX(359.221deg);
94
+ flex: none;
95
+ }
96
+ }
97
+
98
+ &-shape2 {
99
+ position: absolute;
100
+ top: 25.44%;
101
+ right: 4.15%;
102
+ bottom: 25.3%;
103
+ left: 27.75%;
104
+
105
+ .figmas-tophat__logo-img {
106
+ width: 100%;
107
+ height: 100%;
108
+ display: block;
109
+ max-width: none;
110
+ }
111
+ }
112
+ }
113
+
114
+ &__mobile-logo-container {
115
+ flex-shrink: 0;
116
+ }
117
+
118
+ &__mobile-logo {
119
+ height: 29px;
120
+ overflow: hidden;
121
+ width: 112px;
122
+ position: relative;
123
+
124
+ &-shape1 {
125
+ position: absolute;
126
+ top: 0.05%;
127
+ right: 74.87%;
128
+ bottom: 0.16%;
129
+ left: 0.01%;
130
+ display: flex;
131
+ align-items: center;
132
+ justify-content: center;
133
+
134
+ svg {
135
+ width: 17.523px;
136
+ height: 17.523px;
137
+ transform: rotate(314.61deg) skewX(359.221deg);
138
+ flex: none;
139
+ }
140
+ }
141
+
142
+ &-shape2 {
143
+ position: absolute;
144
+ top: 25.44%;
145
+ right: 4.15%;
146
+ bottom: 25.3%;
147
+ left: 27.75%;
148
+
149
+ svg {
150
+ width: 100%;
151
+ height: 100%;
152
+ display: block;
153
+ }
154
+ }
155
+ }
156
+
157
+ &__user-controls {
158
+ box-sizing: border-box;
159
+ display: flex;
160
+ gap: 8px;
161
+ align-items: center;
162
+ justify-content: flex-end;
163
+ padding-left: 0;
164
+ padding-right: 0;
165
+ flex-shrink: 0;
166
+ }
167
+
168
+ &__control {
169
+ background: var(--surfaces-main-background-primary, #ffffff);
170
+ box-sizing: border-box;
171
+ display: flex;
172
+ align-items: center;
173
+ justify-content: center;
174
+ border-radius: 8px;
175
+ cursor: pointer;
176
+ transition: all 0.2s ease;
177
+ position: relative;
178
+
179
+ &:hover {
180
+ background: var(--surfaces-main-background-tertiary, #E8E9EF);
181
+ }
182
+
183
+ &:focus-visible {
184
+ outline: 2px solid var(--fills-main-fill-primary, #14215A);
185
+ outline-offset: 2px;
186
+ }
187
+
188
+ &--disc {
189
+ flex-direction: column;
190
+ padding: 4px;
191
+ min-width: 40px;
192
+ }
193
+
194
+ &--inbox,
195
+ &--bell {
196
+ min-width: 40px;
197
+ padding: 2px 4px 2px 2px;
198
+ }
199
+
200
+ &--user {
201
+ flex-direction: column;
202
+ padding: 4px;
203
+ min-width: 40px;
204
+ }
205
+ }
206
+
207
+ &__control-icon {
208
+ overflow: hidden;
209
+ flex-shrink: 0;
210
+ width: 32px;
211
+ height: 32px;
212
+ position: relative;
213
+
214
+ &-inner {
215
+ position: absolute;
216
+ inset: 15.625%;
217
+ width: 22px;
218
+ height: 22px;
219
+
220
+ .figmas-tophat__control-icon-img {
221
+ width: 100%;
222
+ height: 100%;
223
+ display: block;
224
+ max-width: none;
225
+ }
226
+ }
227
+ }
228
+
229
+ // Special positioning for disc control icon
230
+ &__control--disc &__control-icon-inner {
231
+ left: 5px;
232
+ top: 5px;
233
+ width: 22px;
234
+ height: 22px;
235
+ }
236
+
237
+ // Special positioning for inbox control icon
238
+ &__control--inbox &__control-icon-inner {
239
+ inset: 21.88% 18.75%;
240
+ }
241
+
242
+ // Special positioning for bell control icon
243
+ &__control--bell &__control-icon-inner {
244
+ inset: 18.75% 23.44% 14.06% 23.44%;
245
+ }
246
+
247
+ &__user-initials {
248
+ position: absolute;
249
+ font-family: 'Geist', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;
250
+ font-weight: 800;
251
+ font-size: 8px;
252
+ line-height: 13px;
253
+ color: var(--labels-main-label-secondary, #626A90);
254
+ text-align: center;
255
+ top: 14px;
256
+ left: 20px;
257
+ transform: translateX(-50%);
258
+ width: 18px;
259
+ height: 12px;
260
+ margin: 0;
261
+ white-space: pre-wrap;
262
+ }
263
+
264
+ &__notification-badge {
265
+ border: 1px solid var(--borders-main-border-colour-overlay, rgba(18, 30, 82, 0.1));
266
+ box-sizing: border-box;
267
+ display: flex;
268
+ gap: 8px;
269
+ align-items: center;
270
+ justify-content: center;
271
+ padding: 4px 8px;
272
+ border-radius: 24px;
273
+ flex-shrink: 0;
274
+
275
+ span {
276
+ font-family: 'Geist', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;
277
+ font-weight: 600;
278
+ font-size: 10px;
279
+ line-height: 13px;
280
+ color: var(--labels-main-label-primary, #121E52);
281
+ }
282
+
283
+ &--teal {
284
+ background: var(--surfaces-colour-teal, #e9faf7);
285
+ }
286
+
287
+ &--orange {
288
+ background: var(--surfaces-colour-orange, #fff2e8);
289
+ }
290
+ }
291
+ }
@@ -0,0 +1,201 @@
1
+ import { Meta, StoryObj } from '@storybook/react'
2
+ import React from 'react'
3
+ import { FigmasTopHat } from './FigmasTopHat'
4
+
5
+ export default {
6
+ title: 'v2/Navigation/Figma Top Hat',
7
+ component: FigmasTopHat,
8
+ argTypes: {
9
+ variant: {
10
+ control: 'select',
11
+ options: ['desktop', 'mobile'],
12
+ description: 'Desktop or mobile variant',
13
+ },
14
+ inboxCount: {
15
+ control: 'number',
16
+ description: 'Number of inbox notifications',
17
+ },
18
+ bellCount: {
19
+ control: 'number',
20
+ description: 'Number of bell notifications',
21
+ },
22
+ userInitials: {
23
+ control: 'text',
24
+ description: 'User initials to display',
25
+ },
26
+ onSidebarToggle: { action: 'sidebar toggle clicked' },
27
+ onUserClick: { action: 'user clicked' },
28
+ onInboxClick: { action: 'inbox clicked' },
29
+ onBellClick: { action: 'bell clicked' },
30
+ onDiscClick: { action: 'disc clicked' },
31
+ },
32
+ parameters: {
33
+ layout: 'fullscreen',
34
+ },
35
+ } as Meta
36
+
37
+ type Story = StoryObj<typeof FigmasTopHat>
38
+
39
+ export const Desktop: Story = {
40
+ args: {
41
+ variant: 'desktop',
42
+ inboxCount: 3,
43
+ bellCount: 12,
44
+ userInitials: 'WW',
45
+ },
46
+ decorators: [
47
+ (Story) => (
48
+ <div style={{ width: '100%', height: '60px', borderBottom: '1px solid #E8E9EF' }}>
49
+ <Story />
50
+ </div>
51
+ ),
52
+ ],
53
+ }
54
+
55
+ export const Mobile: Story = {
56
+ args: {
57
+ variant: 'mobile',
58
+ inboxCount: 3,
59
+ bellCount: 12,
60
+ userInitials: 'WW',
61
+ },
62
+ decorators: [
63
+ (Story) => (
64
+ <div style={{ width: '370px', height: '60px', borderBottom: '1px solid #E8E9EF' }}>
65
+ <Story />
66
+ </div>
67
+ ),
68
+ ],
69
+ }
70
+
71
+ export const DesktopNoNotifications: Story = {
72
+ args: {
73
+ variant: 'desktop',
74
+ inboxCount: 0,
75
+ bellCount: 0,
76
+ userInitials: 'JD',
77
+ },
78
+ decorators: [
79
+ (Story) => (
80
+ <div style={{ width: '100%', height: '60px', borderBottom: '1px solid #E8E9EF' }}>
81
+ <Story />
82
+ </div>
83
+ ),
84
+ ],
85
+ }
86
+
87
+ export const MobileNoNotifications: Story = {
88
+ args: {
89
+ variant: 'mobile',
90
+ inboxCount: 0,
91
+ bellCount: 0,
92
+ userInitials: 'JD',
93
+ },
94
+ decorators: [
95
+ (Story) => (
96
+ <div style={{ width: '370px', height: '60px', borderBottom: '1px solid #E8E9EF' }}>
97
+ <Story />
98
+ </div>
99
+ ),
100
+ ],
101
+ }
102
+
103
+ export const DesktopHighNotifications: Story = {
104
+ args: {
105
+ variant: 'desktop',
106
+ inboxCount: 99,
107
+ bellCount: 5,
108
+ userInitials: 'AB',
109
+ },
110
+ decorators: [
111
+ (Story) => (
112
+ <div style={{ width: '100%', height: '60px', borderBottom: '1px solid #E8E9EF' }}>
113
+ <Story />
114
+ </div>
115
+ ),
116
+ ],
117
+ }
118
+
119
+ export const MobileHighNotifications: Story = {
120
+ args: {
121
+ variant: 'mobile',
122
+ inboxCount: 99,
123
+ bellCount: 5,
124
+ userInitials: 'AB',
125
+ },
126
+ decorators: [
127
+ (Story) => (
128
+ <div style={{ width: '370px', height: '60px', borderBottom: '1px solid #E8E9EF' }}>
129
+ <Story />
130
+ </div>
131
+ ),
132
+ ],
133
+ }
134
+
135
+ export const Interactive: Story = {
136
+ render: function (args) {
137
+ const [variant, setVariant] = React.useState<'desktop' | 'mobile'>('desktop');
138
+ const [inboxCount, setInboxCount] = React.useState(3);
139
+ const [bellCount, setBellCount] = React.useState(12);
140
+
141
+ return (
142
+ <div style={{ width: variant === 'desktop' ? '100%' : '370px', height: '60px', borderBottom: '1px solid #E8E9EF' }}>
143
+ <FigmasTopHat
144
+ {...args}
145
+ variant={variant}
146
+ inboxCount={inboxCount}
147
+ bellCount={bellCount}
148
+ onSidebarToggle={() => alert('Sidebar toggle clicked!')}
149
+ onUserClick={() => alert('User clicked!')}
150
+ onInboxClick={() => setInboxCount(0)}
151
+ onBellClick={() => setBellCount(0)}
152
+ onDiscClick={() => alert('Disc clicked!')}
153
+ />
154
+ <div style={{ position: 'absolute', top: '70px', left: '16px', display: 'flex', gap: '8px', flexDirection: 'column' }}>
155
+ <button
156
+ onClick={() => setVariant(variant === 'desktop' ? 'mobile' : 'desktop')}
157
+ style={{
158
+ padding: '8px 16px',
159
+ backgroundColor: '#14215A',
160
+ color: 'white',
161
+ border: 'none',
162
+ borderRadius: '4px',
163
+ cursor: 'pointer'
164
+ }}
165
+ >
166
+ Toggle {variant === 'desktop' ? 'Mobile' : 'Desktop'}
167
+ </button>
168
+ <button
169
+ onClick={() => setInboxCount(Math.floor(Math.random() * 20))}
170
+ style={{
171
+ padding: '8px 16px',
172
+ backgroundColor: '#e9faf7',
173
+ color: '#121E52',
174
+ border: '1px solid #E8E9EF',
175
+ borderRadius: '4px',
176
+ cursor: 'pointer'
177
+ }}
178
+ >
179
+ Random Inbox Count
180
+ </button>
181
+ <button
182
+ onClick={() => setBellCount(Math.floor(Math.random() * 20))}
183
+ style={{
184
+ padding: '8px 16px',
185
+ backgroundColor: '#fff2e8',
186
+ color: '#121E52',
187
+ border: '1px solid #E8E9EF',
188
+ borderRadius: '4px',
189
+ cursor: 'pointer'
190
+ }}
191
+ >
192
+ Random Bell Count
193
+ </button>
194
+ </div>
195
+ </div>
196
+ );
197
+ },
198
+ args: {
199
+ userInitials: 'WW',
200
+ },
201
+ }
@@ -0,0 +1,158 @@
1
+ import React from 'react'
2
+ import './FigmasTopHat.scss'
3
+ import logoDesktop1 from './assets/logo-desktop-1.svg'
4
+ import logoDesktop2 from './assets/logo-desktop-2.svg'
5
+ import discIcon from './assets/disc-icon.svg'
6
+ import inboxIcon from './assets/inbox-icon.svg'
7
+ import bellIcon from './assets/bell-icon.svg'
8
+ import userIcon from './assets/user-icon.svg'
9
+
10
+ // Image assets loaded from local assets folder
11
+ const SidebarToggleIcon = () => (
12
+ <svg width="24" height="20" viewBox="0 0 24 20" fill="none" xmlns="http://www.w3.org/2000/svg">
13
+ <rect x="3" y="3" width="18" height="2" rx="1" fill="var(--fills-main-fill-primary, #14215A)" />
14
+ <rect x="3" y="9" width="18" height="2" rx="1" fill="var(--fills-main-fill-primary, #14215A)" />
15
+ <rect x="3" y="15" width="18" height="2" rx="1" fill="var(--fills-main-fill-primary, #14215A)" />
16
+ </svg>
17
+ )
18
+
19
+ const MobileLogoShape1 = () => (
20
+ <svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
21
+ <path d="M9 1L11.5 5.5L16.5 6L13 9L14 14L9 11.5L4 14L5 9L1.5 6L6.5 5.5L9 1Z" fill="var(--fills-main-fill-primary, #14215A)" stroke="var(--fills-main-fill-primary, #14215A)" strokeWidth="0.5" />
22
+ </svg>
23
+ )
24
+
25
+ const MobileLogoShape2 = () => (
26
+ <svg width="112" height="29" viewBox="0 0 112 29" fill="none" xmlns="http://www.w3.org/2000/svg">
27
+ <rect x="0" y="0" width="112" height="29" rx="4" fill="var(--surfaces-main-background-primary, #ffffff)" stroke="var(--borders-main-border-primary, #E8E9EF)" strokeWidth="1" />
28
+ <text x="56" y="18" textAnchor="middle" fontFamily="Geist" fontSize="11" fontWeight="600" fill="var(--labels-main-label-primary, #121E52)">Booked it</text>
29
+ </svg>
30
+ )
31
+
32
+ export interface FigmasTopHatProps {
33
+ variant?: 'desktop' | 'mobile'
34
+ onSidebarToggle?: () => void
35
+ onUserClick?: () => void
36
+ onInboxClick?: () => void
37
+ onBellClick?: () => void
38
+ onDiscClick?: () => void
39
+ inboxCount?: number
40
+ bellCount?: number
41
+ userInitials?: string
42
+ }
43
+
44
+ export const FigmasTopHat: React.FC<FigmasTopHatProps> = ({
45
+ variant = 'desktop',
46
+ onSidebarToggle,
47
+ onUserClick,
48
+ onInboxClick,
49
+ onBellClick,
50
+ onDiscClick,
51
+ inboxCount = 3,
52
+ bellCount = 12,
53
+ userInitials = 'WW',
54
+ }) => {
55
+ const sidebarToggleIcon = (
56
+ <div className="figmas-tophat__sidebar-icon">
57
+ <SidebarToggleIcon />
58
+ </div>
59
+ )
60
+
61
+ const logoIcon = (
62
+ <div className="figmas-tophat__logo">
63
+ <div className="figmas-tophat__logo-shape1">
64
+ <img alt="Logo shape 1" className="figmas-tophat__logo-img" src={logoDesktop1} />
65
+ </div>
66
+ <div className="figmas-tophat__logo-shape2">
67
+ <img alt="Logo shape 2" className="figmas-tophat__logo-img" src={logoDesktop2} />
68
+ </div>
69
+ </div>
70
+ )
71
+
72
+ const mobileLogoIcon = (
73
+ <div className="figmas-tophat__mobile-logo">
74
+ <div className="figmas-tophat__mobile-logo-shape1">
75
+ <MobileLogoShape1 />
76
+ </div>
77
+ <div className="figmas-tophat__mobile-logo-shape2">
78
+ <MobileLogoShape2 />
79
+ </div>
80
+ </div>
81
+ )
82
+
83
+ const userControls = (
84
+ <div className="figmas-tophat__user-controls">
85
+ {/* Disc Control */}
86
+ <div className="figmas-tophat__control figmas-tophat__control--disc" onClick={onDiscClick}>
87
+ <div className="figmas-tophat__control-icon">
88
+ <div className="figmas-tophat__control-icon-inner">
89
+ <img alt="Disc icon" className="figmas-tophat__control-icon-img" src={discIcon} />
90
+ </div>
91
+ </div>
92
+ <p className="figmas-tophat__user-initials">{userInitials}</p>
93
+ </div>
94
+
95
+ {/* Inbox Control */}
96
+ <div className="figmas-tophat__control figmas-tophat__control--inbox" onClick={onInboxClick}>
97
+ <div className="figmas-tophat__control-icon">
98
+ <div className="figmas-tophat__control-icon-inner">
99
+ <img alt="Inbox icon" className="figmas-tophat__control-icon-img" src={inboxIcon} />
100
+ </div>
101
+ </div>
102
+ {inboxCount > 0 && (
103
+ <div className="figmas-tophat__notification-badge figmas-tophat__notification-badge--teal">
104
+ <span>{inboxCount}</span>
105
+ </div>
106
+ )}
107
+ </div>
108
+
109
+ {/* Bell Control */}
110
+ <div className="figmas-tophat__control figmas-tophat__control--bell" onClick={onBellClick}>
111
+ <div className="figmas-tophat__control-icon">
112
+ <div className="figmas-tophat__control-icon-inner">
113
+ <img alt="Bell icon" className="figmas-tophat__control-icon-img" src={bellIcon} />
114
+ </div>
115
+ </div>
116
+ {bellCount > 0 && (
117
+ <div className="figmas-tophat__notification-badge figmas-tophat__notification-badge--orange">
118
+ <span>{bellCount}</span>
119
+ </div>
120
+ )}
121
+ </div>
122
+
123
+ {/* User Control */}
124
+ <div className="figmas-tophat__control figmas-tophat__control--user" onClick={onUserClick}>
125
+ <div className="figmas-tophat__control-icon">
126
+ <div className="figmas-tophat__control-icon-inner">
127
+ <img alt="User icon" className="figmas-tophat__control-icon-img" src={userIcon} />
128
+ </div>
129
+ </div>
130
+ </div>
131
+ </div>
132
+ )
133
+
134
+ if (variant === 'mobile') {
135
+ return (
136
+ <div className="figmas-tophat figmas-tophat--mobile">
137
+ <div className="figmas-tophat__mobile-logo-container">
138
+ {mobileLogoIcon}
139
+ </div>
140
+ {userControls}
141
+ </div>
142
+ )
143
+ }
144
+
145
+ return (
146
+ <div className="figmas-tophat figmas-tophat--desktop">
147
+ <div className="figmas-tophat__left-elements">
148
+ <div className="figmas-tophat__sidebar-toggle" onClick={onSidebarToggle}>
149
+ {sidebarToggleIcon}
150
+ </div>
151
+ <div className="figmas-tophat__logo-container">
152
+ {logoIcon}
153
+ </div>
154
+ </div>
155
+ {userControls}
156
+ </div>
157
+ )
158
+ }
@@ -0,0 +1,3 @@
1
+ <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M8 18C8 18.5523 8.44772 19 9 19H13C13.5523 19 14 18.5523 14 18M8 18V16M14 18V16M8 18C5.79086 18 4 16.2091 4 14V9C4 6.79086 5.79086 5 8 5H14C16.2091 5 18 6.79086 18 9V14C18 16.2091 16.2091 18 14 18" stroke="var(--fills-main-fill-primary, #14215A)" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round"/>
3
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <circle cx="11" cy="11" r="10" fill="var(--fills-main-fill-primary, #14215A)" opacity="0.1" />
3
+ <circle cx="11" cy="11" r="6" fill="var(--fills-main-fill-primary, #14215A)" />
4
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M3 6L11 11L19 6M3 6V16C3 16.5523 3.44772 17 4 17H18C18.5523 17 19 16.5523 19 16V6M3 6H19" stroke="var(--fills-main-fill-primary, #14215A)" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M9 1L11.5 5.5L16.5 6L13 9L14 14L9 11.5L4 14L5 9L1.5 6L6.5 5.5L9 1Z" fill="var(--fills-main-fill-primary, #14215A)" stroke="var(--fills-main-fill-primary, #14215A)" strokeWidth="0.5" />
3
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg width="112" height="29" viewBox="0 0 112 29" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <rect x="0" y="0" width="112" height="29" rx="4" fill="var(--surfaces-main-background-primary, #ffffff)" stroke="var(--borders-main-border-primary, #E8E9EF)" strokeWidth="1" />
3
+ <text x="56" y="18" textAnchor="middle" fontFamily="Geist" fontSize="11" fontWeight="600" fill="var(--labels-main-label-primary, #121E52)">Booked it</text>
4
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <circle cx="11" cy="7" r="3" stroke="var(--fills-main-fill-primary, #14215A)" strokeWidth="1.5"/>
3
+ <path d="M5 18C5 14.134 8.13401 11 12 11C15.866 11 19 14.134 19 18" stroke="var(--fills-main-fill-primary, #14215A)" strokeWidth="1.5" strokeLinecap="round"/>
4
+ </svg>
@@ -0,0 +1,2 @@
1
+ export { FigmasTopHat } from './FigmasTopHat'
2
+ export type { FigmasTopHatProps } from './FigmasTopHat'