@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,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
+ }
@@ -0,0 +1,143 @@
1
+ import { Meta, StoryObj } from '@storybook/react'
2
+ import React from 'react'
3
+ import { ColorsShowcase } from './Colors'
4
+
5
+ export default {
6
+ title: 'v2/Design System/Colors',
7
+ component: ColorsShowcase,
8
+ parameters: {
9
+ layout: 'padded',
10
+ },
11
+ } as Meta
12
+
13
+ type Story = StoryObj<typeof ColorsShowcase>
14
+
15
+ const purples = {
16
+ title: 'Purples',
17
+ colors: [
18
+ { name: 'purple.50', hex: '#efe6fd', rgb: 'RGB: 239, 230, 253' },
19
+ { name: 'purple.100', hex: '#dccefb', rgb: 'RGB: 220, 206, 251' },
20
+ { name: 'purple.200', hex: '#c49af7', rgb: 'RGB: 196, 154, 247' },
21
+ { name: 'purple.300', hex: '#a866f3', rgb: 'RGB: 168, 102, 243' },
22
+ { name: 'purple.400', hex: '#8c33ef', rgb: 'RGB: 140, 51, 239' },
23
+ { name: 'purple.500', hex: '#7000eb', rgb: 'RGB: 112, 0, 235' },
24
+ { name: 'purple.600', hex: '#5a00bc', rgb: 'RGB: 90, 0, 188' },
25
+ { name: 'purple.700', hex: '#450091', rgb: 'RGB: 69, 0, 145' },
26
+ { name: 'purple.800', hex: '#2f0064', rgb: 'RGB: 47, 0, 100' },
27
+ { name: 'purple.900', hex: '#1a0036', rgb: 'RGB: 26, 0, 54' },
28
+ ],
29
+ }
30
+
31
+ const labels = {
32
+ title: 'Labels - Text Colors',
33
+ colors: [
34
+ { name: 'label.primary', hex: '#121e52', description: 'Main text color' },
35
+ { name: 'label.secondary', hex: '#626a90', description: 'Secondary text' },
36
+ { name: 'label.tertiary', hex: '#979db2', description: 'Tertiary text' },
37
+ { name: 'label.disabled', hex: '#c2c7d4', description: 'Disabled text' },
38
+ { name: 'label.inverse', hex: '#ffffff', description: 'Text on dark backgrounds' },
39
+ ],
40
+ }
41
+
42
+ const surfaces = {
43
+ title: 'Surfaces - Background Colors',
44
+ colors: [
45
+ { name: 'surface.primary', hex: '#ffffff', description: 'Main background' },
46
+ { name: 'surface.secondary', hex: '#f8f8fa', description: 'Secondary background' },
47
+ { name: 'surface.tertiary', hex: '#e8e9ef', description: 'Tertiary background' },
48
+ { name: 'surface.hover', hex: '#f0f0f2', description: 'Hover state' },
49
+ { name: 'surface.active', hex: '#e8e9ef', description: 'Active state' },
50
+ ],
51
+ }
52
+
53
+ const borders = {
54
+ title: 'Borders',
55
+ colors: [
56
+ { name: 'border.primary', hex: '#e8e9ef', description: 'Main border color' },
57
+ { name: 'border.secondary', hex: '#d4d6dd', description: 'Secondary border' },
58
+ { name: 'border.focus', hex: '#7000eb', description: 'Focus border' },
59
+ ],
60
+ }
61
+
62
+ const brand = {
63
+ title: 'Brand Colors',
64
+ colors: [
65
+ { name: 'primary', hex: '#7000eb', description: 'Main brand color' },
66
+ { name: 'primary.hover', hex: '#5a00bc', description: 'Hover state' },
67
+ { name: 'primary.active', hex: '#450091', description: 'Active state' },
68
+ { name: 'primary.focus', hex: '#8c33ef', description: 'Focus state' },
69
+ ],
70
+ }
71
+
72
+ const status = {
73
+ title: 'Status Colors (Legacy)',
74
+ colors: [
75
+ { name: 'success', hex: '#10b981', description: 'Success state' },
76
+ { name: 'success.light', hex: '#d1fae5', description: 'Success background' },
77
+ { name: 'error', hex: '#ef4444', description: 'Error state' },
78
+ { name: 'error.light', hex: '#fee2e2', description: 'Error background' },
79
+ { name: 'warning', hex: '#f59e0b', description: 'Warning state' },
80
+ { name: 'warning.light', hex: '#fef3c7', description: 'Warning background' },
81
+ { name: 'info', hex: '#3b82f6', description: 'Info state' },
82
+ { name: 'info.light', hex: '#dbeafe', description: 'Info background' },
83
+ ],
84
+ }
85
+
86
+ const statusTokens = {
87
+ title: 'Status Colors (Figma Alerts & Errors)',
88
+ colors: [
89
+ { name: 'success.fill', hex: '#2d6b18', description: 'Success fill/icon color' },
90
+ { name: 'success.background', hex: '#eef9ea', description: 'Success background' },
91
+ { name: 'success.border', hex: '#c9ecbd', description: 'Success border color' },
92
+ { name: 'error.fill', hex: '#cc3c35', description: 'Error fill/icon color' },
93
+ { name: 'error.background', hex: '#fceceb', description: 'Error background' },
94
+ { name: 'error.border', hex: '#f5c4c2', description: 'Error border color' },
95
+ { name: 'alert.fill', hex: '#fd7e14', description: 'Alert fill/icon color' },
96
+ { name: 'alert.background', hex: '#fcf6e7', description: 'Alert background' },
97
+ { name: 'alert.border', hex: '#f6e3b4', description: 'Alert border color' },
98
+ { name: 'info.fill', hex: '#0e8ce2', description: 'Info fill/icon color' },
99
+ { name: 'info.background', hex: '#e7f4fc', description: 'Info background' },
100
+ { name: 'info.border', hex: '#b4dbf6', description: 'Info border color' },
101
+ ],
102
+ }
103
+
104
+ export const PurpleScale: Story = {
105
+ render: () => <ColorsShowcase {...purples} />,
106
+ }
107
+
108
+ export const Labels: Story = {
109
+ render: () => <ColorsShowcase {...labels} />,
110
+ }
111
+
112
+ export const Surfaces: Story = {
113
+ render: () => <ColorsShowcase {...surfaces} />,
114
+ }
115
+
116
+ export const Borders: Story = {
117
+ render: () => <ColorsShowcase {...borders} />,
118
+ }
119
+
120
+ export const Brand: Story = {
121
+ render: () => <ColorsShowcase {...brand} />,
122
+ }
123
+
124
+ export const Status: Story = {
125
+ render: () => <ColorsShowcase {...status} />,
126
+ }
127
+
128
+ export const StatusTokens: Story = {
129
+ render: () => <ColorsShowcase {...statusTokens} />,
130
+ }
131
+
132
+ export const AllColors: Story = {
133
+ render: () => (
134
+ <div>
135
+ <ColorsShowcase {...purples} />
136
+ <ColorsShowcase {...labels} />
137
+ <ColorsShowcase {...surfaces} />
138
+ <ColorsShowcase {...borders} />
139
+ <ColorsShowcase {...brand} />
140
+ <ColorsShowcase {...status} />
141
+ </div>
142
+ ),
143
+ }
@@ -0,0 +1,51 @@
1
+ import React from 'react'
2
+ import './Colors.scss'
3
+
4
+ interface ColorSwatchProps {
5
+ name: string
6
+ hex: string
7
+ rgb?: string
8
+ className?: string
9
+ }
10
+
11
+ export const ColorSwatch: React.FC<ColorSwatchProps> = ({ name, hex, rgb, className }) => {
12
+ return (
13
+ <div className={`color-swatch ${className || ''}`}>
14
+ <div className="color-swatch__preview" style={{ backgroundColor: hex }} />
15
+ <div className="color-swatch__details">
16
+ <div className="color-swatch__name">{name}</div>
17
+ <div className="color-swatch__hex">{hex}</div>
18
+ {rgb && <div className="color-swatch__rgb">{rgb}</div>}
19
+ </div>
20
+ </div>
21
+ )
22
+ }
23
+
24
+ export interface ColorGroup {
25
+ title: string
26
+ colors: {
27
+ name: string
28
+ hex: string
29
+ rgb?: string
30
+ description?: string
31
+ }[]
32
+ }
33
+
34
+ export const ColorsShowcase: React.FC<ColorGroup> = ({ title, colors }) => {
35
+ return (
36
+ <div className="colors-showcase">
37
+ <h3 className="colors-showcase__title">{title}</h3>
38
+ <div className="colors-showcase__grid">
39
+ {colors.map((color) => (
40
+ <ColorSwatch
41
+ key={color.name}
42
+ name={color.name}
43
+ hex={color.hex}
44
+ rgb={color.rgb}
45
+ className={color.description ? 'color-swatch--with-description' : ''}
46
+ />
47
+ ))}
48
+ </div>
49
+ </div>
50
+ )
51
+ }