@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,186 @@
1
+ @import '../../../styles/overrides/functions';
2
+
3
+ .alert {
4
+ background: var(--surfaces-status-background-success, #eef9ea);
5
+ border: 2px solid var(--borders-status-border-success, #c9ecbd);
6
+ box-sizing: border-box;
7
+ display: flex;
8
+ align-items: center;
9
+ justify-content: space-between;
10
+ padding: var(--padding-reg, 16px);
11
+ border-radius: var(--radius-reg, 8px);
12
+ width: 100%;
13
+
14
+ // Variant-specific styles
15
+ &--success {
16
+ background: var(--surfaces-status-background-success, #eef9ea);
17
+ border-color: var(--borders-status-border-success, #c9ecbd);
18
+
19
+ .alert__icon {
20
+ background-image: url("./assets/success-icon.svg");
21
+ }
22
+
23
+ .alert__dismiss svg path {
24
+ stroke: var(--fills-status-fill-success, #2d6b18);
25
+ }
26
+ }
27
+
28
+ &--error {
29
+ background: var(--surfaces-status-background-error, #fceceb);
30
+ border-color: var(--borders-status-border-error, #f5c4c2);
31
+
32
+ .alert__icon {
33
+ background-image: url("./assets/error-icon.svg");
34
+ }
35
+
36
+ .alert__dismiss svg path {
37
+ stroke: var(--fills-status-fill-error, #cc3c35);
38
+ }
39
+ }
40
+
41
+ &--alert {
42
+ background: var(--surfaces-status-background-alert, #fcf6e7);
43
+ border-color: var(--borders-status-border-alert, #f6e3b4);
44
+
45
+ .alert__icon {
46
+ background-image: url("./assets/alert-icon.svg");
47
+ }
48
+
49
+ .alert__dismiss svg path {
50
+ stroke: var(--fills-status-fill-alert, #fd7e14);
51
+ }
52
+ }
53
+
54
+ &--info {
55
+ background: var(--surfaces-status-background-info, #e7f4fc);
56
+ border-color: var(--borders-status-border-info, #b4dbf6);
57
+
58
+ .alert__icon {
59
+ background-image: url("./assets/info-icon.svg");
60
+ }
61
+
62
+ .alert__dismiss svg path {
63
+ stroke: var(--fills-status-fill-info, #0e8ce2);
64
+ }
65
+ }
66
+
67
+ &__content {
68
+ display: flex;
69
+ flex: 1 0 0;
70
+ gap: 16px;
71
+ align-items: center;
72
+ min-height: 0;
73
+ min-width: 0;
74
+ }
75
+
76
+ &__icon {
77
+ overflow: hidden;
78
+ flex-shrink: 0;
79
+ width: 32px;
80
+ height: 32px;
81
+ background-size: contain;
82
+ background-position: center;
83
+ background-repeat: no-repeat;
84
+ position: relative;
85
+ }
86
+
87
+ &__details {
88
+ display: flex;
89
+ flex: 1 0 0;
90
+ flex-direction: column;
91
+ gap: 4px;
92
+ align-items: flex-start;
93
+ justify-content: center;
94
+ min-height: 0;
95
+ min-width: 0;
96
+ }
97
+
98
+ &__information {
99
+ display: flex;
100
+ flex-direction: column;
101
+ gap: 4px;
102
+ align-items: flex-start;
103
+ position: relative;
104
+ text-align: left;
105
+ font-size: 15px;
106
+ line-height: normal;
107
+ color: var(--labels-main-label-primary, #121e52);
108
+ width: 100%;
109
+ white-space: pre-wrap;
110
+ }
111
+
112
+ &__title {
113
+ font-family: 'Geist', sans-serif;
114
+ font-weight: 600;
115
+ font-size: 15px;
116
+ line-height: 18px;
117
+ color: var(--labels-main-label-primary, #121e52);
118
+ margin: 0;
119
+ }
120
+
121
+ &__message {
122
+ font-family: 'Geist', sans-serif;
123
+ font-weight: 400;
124
+ font-size: 15px;
125
+ line-height: 20px;
126
+ color: var(--labels-main-label-primary, #121e52);
127
+ max-width: 720px;
128
+ margin: 0;
129
+ }
130
+
131
+ &__link {
132
+ display: flex;
133
+ gap: 8px;
134
+ align-items: center;
135
+ cursor: pointer;
136
+
137
+ &:hover {
138
+ opacity: 0.8;
139
+ }
140
+ }
141
+
142
+ &__link-text {
143
+ font-family: 'Geist', sans-serif;
144
+ font-weight: 500;
145
+ font-size: 15px;
146
+ line-height: 20px;
147
+ color: var(--labels-main-label-primary, #121e52);
148
+ margin: 0;
149
+ }
150
+
151
+ &__link-icon {
152
+ overflow: hidden;
153
+ flex-shrink: 0;
154
+ width: 24px;
155
+ height: 24px;
156
+ position: relative;
157
+
158
+ svg {
159
+ width: 100%;
160
+ height: 100%;
161
+ display: block;
162
+ }
163
+ }
164
+
165
+ &__dismiss {
166
+ overflow: hidden;
167
+ flex-shrink: 0;
168
+ width: 32px;
169
+ height: 32px;
170
+ cursor: pointer;
171
+ display: flex;
172
+ align-items: center;
173
+ justify-content: center;
174
+ transition: opacity 0.2s ease;
175
+
176
+ &:hover {
177
+ opacity: 0.7;
178
+ }
179
+
180
+ svg {
181
+ width: 100%;
182
+ height: 100%;
183
+ display: block;
184
+ }
185
+ }
186
+ }
@@ -0,0 +1,176 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import React from 'react';
3
+ import { Alert } from './Alert';
4
+
5
+ export default {
6
+ title: 'v2/Components/Alert',
7
+ component: Alert,
8
+ argTypes: {
9
+ variant: {
10
+ control: { type: 'radio' },
11
+ options: ['success', 'error', 'alert', 'info'],
12
+ description: 'The type/status of the alert',
13
+ },
14
+ title: {
15
+ control: 'text',
16
+ description: 'Alert title',
17
+ },
18
+ message: {
19
+ control: 'text',
20
+ description: 'Alert message',
21
+ },
22
+ linkText: {
23
+ control: 'text',
24
+ description: 'Optional link text',
25
+ },
26
+ onLinkClick: { action: 'link clicked' },
27
+ onDismiss: { action: 'dismissed' },
28
+ className: {
29
+ control: 'text',
30
+ description: 'Additional CSS classes',
31
+ },
32
+ },
33
+ parameters: {
34
+ layout: 'padded',
35
+ },
36
+ } as Meta<typeof Alert>;
37
+
38
+ type Story = StoryObj<typeof Alert>;
39
+
40
+ export const Success: Story = {
41
+ args: {
42
+ variant: 'success',
43
+ title: 'Success!',
44
+ message: 'Your password has been reset.',
45
+ linkText: 'Details',
46
+ onLinkClick: () => console.log('Details clicked'),
47
+ },
48
+ };
49
+
50
+ export const Error: Story = {
51
+ args: {
52
+ variant: 'error',
53
+ title: 'Error!',
54
+ message: 'Your password reset has failed.',
55
+ linkText: 'Retry',
56
+ onLinkClick: () => console.log('Retry clicked'),
57
+ },
58
+ };
59
+
60
+ export const WarningAlert: Story = {
61
+ args: {
62
+ variant: 'alert',
63
+ title: 'Action required',
64
+ message: 'Your profile is incomplete',
65
+ linkText: 'Update profile',
66
+ onLinkClick: () => console.log('Update profile clicked'),
67
+ },
68
+ };
69
+
70
+ export const Info: Story = {
71
+ args: {
72
+ variant: 'info',
73
+ title: 'Did you know?',
74
+ message: 'You can send email & SMS messages from the marketing dashboard.',
75
+ linkText: 'Explore feature',
76
+ onLinkClick: () => console.log('Explore feature clicked'),
77
+ },
78
+ };
79
+
80
+ export const WithoutLink: Story = {
81
+ args: {
82
+ variant: 'success',
83
+ title: 'Success!',
84
+ message: 'Your changes have been saved.',
85
+ },
86
+ };
87
+
88
+ export const WithoutDismiss: Story = {
89
+ args: {
90
+ variant: 'info',
91
+ title: 'Info',
92
+ message: 'This alert cannot be dismissed.',
93
+ linkText: 'Learn more',
94
+ onDismiss: undefined,
95
+ },
96
+ };
97
+
98
+ export const AllVariants: Story = {
99
+ render: () => (
100
+ <div style={{ display: 'flex', flexDirection: 'column', gap: '16px', padding: '20px' }}>
101
+ <Alert
102
+ variant="success"
103
+ title="Success!"
104
+ message="Your password has been reset."
105
+ linkText="Details"
106
+ />
107
+ <Alert
108
+ variant="error"
109
+ title="Error!"
110
+ message="Your password reset has failed."
111
+ linkText="Retry"
112
+ />
113
+ <Alert
114
+ variant="alert"
115
+ title="Action required"
116
+ message="Your profile is incomplete"
117
+ linkText="Update profile"
118
+ />
119
+ <Alert
120
+ variant="info"
121
+ title="Did you know?"
122
+ message="You can send email & SMS messages from the marketing dashboard."
123
+ linkText="Explore feature"
124
+ />
125
+ </div>
126
+ ),
127
+ };
128
+
129
+ export const Interactive: Story = {
130
+ render: (args) => {
131
+ const [dismissed, setDismissed] = React.useState(false);
132
+
133
+ if (dismissed) {
134
+ return (
135
+ <div style={{ padding: '20px', textAlign: 'center', color: '#626a90' }}>
136
+ Alert dismissed! Click the button below to show it again.
137
+ <br />
138
+ <button
139
+ onClick={() => setDismissed(false)}
140
+ style={{
141
+ marginTop: '16px',
142
+ padding: '8px 16px',
143
+ background: '#14215a',
144
+ color: 'white',
145
+ border: 'none',
146
+ borderRadius: '6px',
147
+ cursor: 'pointer',
148
+ }}
149
+ >
150
+ Reset Alert
151
+ </button>
152
+ </div>
153
+ );
154
+ }
155
+
156
+ return (
157
+ <Alert
158
+ {...args}
159
+ onDismiss={() => {
160
+ args.onDismiss?.();
161
+ setDismissed(true);
162
+ }}
163
+ onLinkClick={() => {
164
+ args.onLinkClick?.();
165
+ alert('Link clicked!');
166
+ }}
167
+ />
168
+ );
169
+ },
170
+ args: {
171
+ variant: 'info',
172
+ title: 'Interactive Alert',
173
+ message: 'This alert can be dismissed or have its link clicked.',
174
+ linkText: 'Click me!',
175
+ },
176
+ };
@@ -0,0 +1,62 @@
1
+ import React from 'react';
2
+ import './Alert.scss';
3
+
4
+ export type AlertVariant = 'success' | 'error' | 'alert' | 'info';
5
+
6
+ export interface AlertProps {
7
+ variant: AlertVariant;
8
+ title: string;
9
+ message: string;
10
+ linkText?: string;
11
+ onLinkClick?: () => void;
12
+ onDismiss?: () => void;
13
+ className?: string;
14
+ }
15
+
16
+ export const Alert: React.FC<AlertProps> = ({
17
+ variant,
18
+ title,
19
+ message,
20
+ linkText,
21
+ onLinkClick,
22
+ onDismiss,
23
+ className,
24
+ }) => {
25
+ const handleDismiss = () => {
26
+ onDismiss?.();
27
+ };
28
+
29
+ return (
30
+ <div className={`alert alert--${variant} ${className || ''}`}>
31
+ <div className="alert__content">
32
+ <div className="alert__icon">
33
+ {/* Icon SVG will be handled by background images in SCSS */}
34
+ </div>
35
+ <div className="alert__details">
36
+ <div className="alert__information">
37
+ <p className="alert__title">{title}</p>
38
+ <p className="alert__message">{message}</p>
39
+ </div>
40
+ {linkText && (
41
+ <div className="alert__link" onClick={onLinkClick}>
42
+ <p className="alert__link-text">{linkText}</p>
43
+ <div className="alert__link-icon">
44
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
45
+ <path d="M9 6L15 12L9 18" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"/>
46
+ </svg>
47
+ </div>
48
+ </div>
49
+ )}
50
+ </div>
51
+ </div>
52
+ {onDismiss && (
53
+ <div className="alert__dismiss" onClick={handleDismiss}>
54
+ {/* Close icon - X mark */}
55
+ <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
56
+ <path d="M9 9L23 23M23 9L9 23" stroke="currentColor" strokeWidth="2" strokeLinecap="round"/>
57
+ </svg>
58
+ </div>
59
+ )}
60
+ </div>
61
+ );
62
+ };
@@ -0,0 +1,3 @@
1
+ <svg preserveAspectRatio="none" width="100%" height="100%" overflow="visible" style="display: block;" viewBox="0 0 19 16" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path id="Icon" d="M8.34975 0.469886C8.7415 -0.156552 9.65442 -0.156705 10.046 0.469886L18.2414 13.5832C18.6576 14.2491 18.1789 15.1132 17.3937 15.1134H1.0021C0.216688 15.1134 -0.262743 14.2492 0.153465 13.5832L8.34975 0.469886ZM9.19741 11.1134C8.64521 11.1135 8.19741 11.5612 8.19741 12.1134C8.19748 12.6656 8.64525 13.1133 9.19741 13.1134C9.74965 13.1134 10.1973 12.6657 10.1974 12.1134C10.1974 11.5612 9.74969 11.1134 9.19741 11.1134ZM8.19741 10.1134H10.1974V5.11344H8.19741V10.1134Z" fill="var(--fill-0, #FD7E14)"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg preserveAspectRatio="none" width="100%" height="100%" overflow="visible" style="display: block;" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path id="Icon" d="M9 0C13.9706 0 18 4.02944 18 9C18 13.9706 13.9706 18 9 18C4.02944 18 0 13.9706 0 9C0 4.02944 4.02944 0 9 0ZM9 7.58594L6.17188 4.75781L4.75781 6.17188L7.58594 9L4.75781 11.8281L6.17188 13.2422L9 10.4141L11.8281 13.2422L13.2422 11.8281L10.4141 9L13.2422 6.17188L11.8281 4.75781L9 7.58594Z" fill="var(--fill-0, #CC3C35)"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg preserveAspectRatio="none" width="100%" height="100%" overflow="visible" style="display: block;" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path id="Subtract" d="M9 0C13.9706 0 18 4.02944 18 9C18 13.9706 13.9706 18 9 18C4.02944 18 0 13.9706 0 9C0 4.02944 4.02944 0 9 0ZM9 7C8.44772 7 8 7.44772 8 8V13C8 13.5523 8.44772 14 9 14C9.55228 14 10 13.5523 10 13V8C10 7.44772 9.55228 7 9 7ZM9 4C8.44772 4 8 4.44772 8 5C8 5.55228 8.44772 6 9 6C9.55228 6 10 5.55228 10 5C10 4.44772 9.55228 4 9 4Z" fill="var(--fill-0, #0E8CE2)"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg preserveAspectRatio="none" width="100%" height="100%" overflow="visible" style="display: block;" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path id="Icon" d="M9 0C13.9706 0 18 4.02944 18 9C18 13.9706 13.9706 18 9 18C4.02944 18 0 13.9706 0 9C0 4.02944 4.02944 0 9 0ZM7.44629 10.6055L5.72168 8.80762L4.27832 10.1924L7.35254 13.3945L14.6729 6.74023L13.3271 5.25977L7.44629 10.6055Z" fill="var(--fill-0, #2D6B18)"/>
3
+ </svg>
@@ -0,0 +1,2 @@
1
+ export { Alert } from './Alert';
2
+ export type { AlertProps, AlertVariant } from './Alert';
@@ -0,0 +1,19 @@
1
+ @import '../../styles/components/Button.scss';
2
+
3
+ .new-button {
4
+ &--sm {
5
+ padding: var(--spacing-xs, 2px) var(--spacing-md, 8px);
6
+ font-size: var(--text-sm-size, 13px);
7
+ }
8
+
9
+ &--md {
10
+ padding: var(--spacing-sm, 8px) var(--spacing-reg, 16px);
11
+ font-size: var(--text-reg-size, 15px);
12
+ }
13
+
14
+ &--lg {
15
+ padding: var(--spacing-reg, 16px) var(--spacing-lg, 24px);
16
+ font-size: var(--text-large-size, 18px);
17
+ }
18
+ }
19
+
@@ -0,0 +1,93 @@
1
+ import React from 'react'
2
+ import { Meta, StoryObj } from '@storybook/react'
3
+ import { Button } from './Button'
4
+
5
+ export default {
6
+ title: 'v2/Components/Button',
7
+ component: Button,
8
+ } as Meta<typeof Button>
9
+
10
+ type Story = StoryObj<typeof Button>
11
+
12
+ export const Primary: Story = {
13
+ args: {
14
+ children: 'Primary Button',
15
+ variant: 'primary',
16
+ },
17
+ }
18
+
19
+ export const PrimarySoft: Story = {
20
+ args: {
21
+ children: 'Primary Soft',
22
+ variant: 'primary-soft',
23
+ },
24
+ }
25
+
26
+ export const PrimaryOutline: Story = {
27
+ args: {
28
+ children: 'Primary Outline',
29
+ variant: 'primary-outline',
30
+ },
31
+ }
32
+
33
+ export const Secondary: Story = {
34
+ args: {
35
+ children: 'Secondary',
36
+ variant: 'secondary',
37
+ },
38
+ }
39
+
40
+ export const DestructiveSoft: Story = {
41
+ args: {
42
+ children: 'Destructive Soft',
43
+ variant: 'destructive-soft',
44
+ },
45
+ }
46
+
47
+ export const DestructiveStrong: Story = {
48
+ args: {
49
+ children: 'Destructive Strong',
50
+ variant: 'destructive-strong',
51
+ },
52
+ }
53
+
54
+ export const Info: Story = {
55
+ args: {
56
+ children: 'Info',
57
+ variant: 'info',
58
+ },
59
+ }
60
+
61
+ export const Disabled: Story = {
62
+ args: {
63
+ children: 'Disabled',
64
+ variant: 'primary',
65
+ disabled: true,
66
+ },
67
+ }
68
+
69
+ export const Sizes: Story = {
70
+ render: () => (
71
+ <div style={{ display: 'flex', gap: '16px', alignItems: 'center' }}>
72
+ <Button variant="primary" size="sm">Small</Button>
73
+ <Button variant="primary" size="md">Medium</Button>
74
+ <Button variant="primary" size="lg">Large</Button>
75
+ </div>
76
+ ),
77
+ }
78
+
79
+ export const AllVariants: Story = {
80
+ render: () => (
81
+ <div style={{ display: 'flex', flexWrap: 'wrap', gap: '16px' }}>
82
+ <Button variant="primary">Primary</Button>
83
+ <Button variant="primary-soft">Primary Soft</Button>
84
+ <Button variant="primary-outline">Primary Outline</Button>
85
+ <Button variant="secondary">Secondary</Button>
86
+ <Button variant="destructive-soft">Destructive Soft</Button>
87
+ <Button variant="destructive-strong">Destructive Strong</Button>
88
+ <Button variant="info">Info</Button>
89
+ <Button variant="primary" disabled>Disabled</Button>
90
+ </div>
91
+ ),
92
+ }
93
+
@@ -0,0 +1,37 @@
1
+ import React, { HTMLAttributes } from 'react'
2
+ import './Button.scss'
3
+
4
+ export interface ButtonProps extends HTMLAttributes<HTMLButtonElement> {
5
+ variant?: 'primary' | 'primary-soft' | 'primary-outline' | 'secondary' | 'destructive-soft' | 'destructive-strong' | 'info' | 'disabled'
6
+ size?: 'sm' | 'md' | 'lg'
7
+ disabled?: boolean
8
+ }
9
+
10
+ export function Button({
11
+ variant = 'primary',
12
+ size = 'md',
13
+ disabled = false,
14
+ className = '',
15
+ children,
16
+ ...props
17
+ }: ButtonProps) {
18
+ const classes = [
19
+ 'new-button',
20
+ `new-button--${variant}`,
21
+ disabled ? 'new-button--disabled' : '',
22
+ className
23
+ ].filter(Boolean).join(' ')
24
+
25
+ return (
26
+ <button
27
+ className={classes}
28
+ disabled={disabled}
29
+ {...props}
30
+ >
31
+ {children}
32
+ </button>
33
+ )
34
+ }
35
+
36
+ export default Button
37
+
@@ -0,0 +1,3 @@
1
+ export { Button } from './Button'
2
+ export type { ButtonProps } from './Button'
3
+
@@ -0,0 +1,64 @@
1
+ @import '../../styles/tokens/colors';
2
+
3
+ .color-swatch {
4
+ display: flex;
5
+ gap: 24px;
6
+ align-items: center;
7
+ width: 100%;
8
+
9
+ &__preview {
10
+ width: 142px;
11
+ height: 48px;
12
+ border-radius: 16px;
13
+ border: 1px solid var(--color-border-primary);
14
+ flex-shrink: 0;
15
+ }
16
+
17
+ &__details {
18
+ flex: 1;
19
+ display: flex;
20
+ flex-direction: column;
21
+ gap: 8px;
22
+ }
23
+
24
+ &__name {
25
+ font-family: 'Geist', sans-serif;
26
+ font-size: 15px;
27
+ font-weight: 600;
28
+ line-height: 18px;
29
+ color: var(--color-label-primary);
30
+ }
31
+
32
+ &__hex,
33
+ &__rgb {
34
+ font-family: 'Geist Mono', monospace;
35
+ font-size: 14px;
36
+ font-weight: 400;
37
+ line-height: 24px;
38
+ color: var(--color-label-primary);
39
+ background-color: var(--color-surface-hover);
40
+ padding: 4px 8px;
41
+ border-radius: 4px;
42
+ display: inline-block;
43
+ width: fit-content;
44
+ }
45
+ }
46
+
47
+ .colors-showcase {
48
+ margin-bottom: 48px;
49
+
50
+ &__title {
51
+ font-family: 'Geist', sans-serif;
52
+ font-size: 20px;
53
+ font-weight: 600;
54
+ line-height: 24px;
55
+ color: var(--color-label-primary);
56
+ margin-bottom: 16px;
57
+ }
58
+
59
+ &__grid {
60
+ display: flex;
61
+ flex-direction: column;
62
+ gap: 16px;
63
+ }
64
+ }