@myelmut/design-system 0.1.46 → 0.1.48

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 (318) hide show
  1. package/dist/index.cjs +1 -1
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.es.js +720 -697
  4. package/dist/index.es.js.map +1 -1
  5. package/dist/types/index.d.ts +6 -1
  6. package/package.json +3 -2
  7. package/src/assets/fonts/PPMori-Regular.woff2 +0 -0
  8. package/src/assets/fonts/PPMori-RegularItalic.woff2 +0 -0
  9. package/src/assets/fonts/PPMori-SemiBold.woff2 +0 -0
  10. package/src/assets/fonts/PPPangaia-Medium.woff2 +0 -0
  11. package/src/assets/fonts/PPPangaia-MediumItalic.woff2 +0 -0
  12. package/src/assets/fonts/PPPangaia-Ultralight.woff2 +0 -0
  13. package/src/assets/illustrations/balls-light.webp +0 -0
  14. package/src/assets/illustrations/balls.webp +0 -0
  15. package/src/assets/illustrations/basket-light.webp +0 -0
  16. package/src/assets/illustrations/basket.webp +0 -0
  17. package/src/assets/illustrations/bowl-2-light.webp +0 -0
  18. package/src/assets/illustrations/bowl-2.webp +0 -0
  19. package/src/assets/illustrations/bowl-light.webp +0 -0
  20. package/src/assets/illustrations/bowl.webp +0 -0
  21. package/src/assets/illustrations/box-2-light.webp +0 -0
  22. package/src/assets/illustrations/box-2.webp +0 -0
  23. package/src/assets/illustrations/box-light.webp +0 -0
  24. package/src/assets/illustrations/box.webp +0 -0
  25. package/src/assets/illustrations/calendar-light.webp +0 -0
  26. package/src/assets/illustrations/calendar.webp +0 -0
  27. package/src/assets/illustrations/can-light.webp +0 -0
  28. package/src/assets/illustrations/can.webp +0 -0
  29. package/src/assets/illustrations/carrot-light.webp +0 -0
  30. package/src/assets/illustrations/carrot.webp +0 -0
  31. package/src/assets/illustrations/cat-light.webp +0 -0
  32. package/src/assets/illustrations/cat.webp +0 -0
  33. package/src/assets/illustrations/check-rounded.webp +0 -0
  34. package/src/assets/illustrations/chicken-light.webp +0 -0
  35. package/src/assets/illustrations/chicken.webp +0 -0
  36. package/src/assets/illustrations/cross-rounded.webp +0 -0
  37. package/src/assets/illustrations/crown-light.webp +0 -0
  38. package/src/assets/illustrations/crown.webp +0 -0
  39. package/src/assets/illustrations/dog-light.webp +0 -0
  40. package/src/assets/illustrations/dog.webp +0 -0
  41. package/src/assets/illustrations/face-light.webp +0 -0
  42. package/src/assets/illustrations/face.webp +0 -0
  43. package/src/assets/illustrations/food-bag-light.webp +0 -0
  44. package/src/assets/illustrations/food-bag.webp +0 -0
  45. package/src/assets/illustrations/france-light.webp +0 -0
  46. package/src/assets/illustrations/france.webp +0 -0
  47. package/src/assets/illustrations/fridge-light.webp +0 -0
  48. package/src/assets/illustrations/fridge.webp +0 -0
  49. package/src/assets/illustrations/glasses-light.webp +0 -0
  50. package/src/assets/illustrations/glasses.webp +0 -0
  51. package/src/assets/illustrations/half-label-light.webp +0 -0
  52. package/src/assets/illustrations/half-label.webp +0 -0
  53. package/src/assets/illustrations/kitten-light.webp +0 -0
  54. package/src/assets/illustrations/kitten.webp +0 -0
  55. package/src/assets/illustrations/label-light.webp +0 -0
  56. package/src/assets/illustrations/label.webp +0 -0
  57. package/src/assets/illustrations/leaf-light.webp +0 -0
  58. package/src/assets/illustrations/leaf.webp +0 -0
  59. package/src/assets/illustrations/liquid-light.webp +0 -0
  60. package/src/assets/illustrations/liquid.webp +0 -0
  61. package/src/assets/illustrations/magnifying-glass-light.webp +0 -0
  62. package/src/assets/illustrations/magnifying-glass.webp +0 -0
  63. package/src/assets/illustrations/meat-light.webp +0 -0
  64. package/src/assets/illustrations/meat.webp +0 -0
  65. package/src/assets/illustrations/molecule-light.webp +0 -0
  66. package/src/assets/illustrations/molecule.webp +0 -0
  67. package/src/assets/illustrations/paws-light.webp +0 -0
  68. package/src/assets/illustrations/paws.webp +0 -0
  69. package/src/assets/illustrations/plate-light.webp +0 -0
  70. package/src/assets/illustrations/plate.webp +0 -0
  71. package/src/assets/illustrations/pot-big-2-light.webp +0 -0
  72. package/src/assets/illustrations/pot-big-2.webp +0 -0
  73. package/src/assets/illustrations/pot-big-light.webp +0 -0
  74. package/src/assets/illustrations/pot-big.webp +0 -0
  75. package/src/assets/illustrations/pot-light.webp +0 -0
  76. package/src/assets/illustrations/pot.webp +0 -0
  77. package/src/assets/illustrations/puppy-light.webp +0 -0
  78. package/src/assets/illustrations/puppy.webp +0 -0
  79. package/src/assets/illustrations/quantity-light.webp +0 -0
  80. package/src/assets/illustrations/quantity.webp +0 -0
  81. package/src/assets/illustrations/sausage-light.webp +0 -0
  82. package/src/assets/illustrations/sausage.webp +0 -0
  83. package/src/assets/illustrations/sausages-light.webp +0 -0
  84. package/src/assets/illustrations/sausages.webp +0 -0
  85. package/src/assets/illustrations/skeleton-light.webp +0 -0
  86. package/src/assets/illustrations/skeleton.webp +0 -0
  87. package/src/assets/illustrations/sofa-light.webp +0 -0
  88. package/src/assets/illustrations/sofa.webp +0 -0
  89. package/src/assets/illustrations/sport-light.webp +0 -0
  90. package/src/assets/illustrations/sport.webp +0 -0
  91. package/src/assets/illustrations/steak-light.webp +0 -0
  92. package/src/assets/illustrations/steak.webp +0 -0
  93. package/src/assets/illustrations/truck-light.webp +0 -0
  94. package/src/assets/illustrations/truck.webp +0 -0
  95. package/src/assets/illustrations/warning-light.webp +0 -0
  96. package/src/assets/illustrations/warning.webp +0 -0
  97. package/src/assets/images/cat.webp +0 -0
  98. package/src/assets/images/dog.webp +0 -0
  99. package/src/assets/images/frequency/food-in-fridge.webp +0 -0
  100. package/src/assets/images/ingredients/beef.webp +0 -0
  101. package/src/assets/images/ingredients/beer-yeast.webp +0 -0
  102. package/src/assets/images/ingredients/calcium.webp +0 -0
  103. package/src/assets/images/ingredients/carrot.webp +0 -0
  104. package/src/assets/images/ingredients/chicken.webp +0 -0
  105. package/src/assets/images/ingredients/courgette.webp +0 -0
  106. package/src/assets/images/ingredients/dry-apple.webp +0 -0
  107. package/src/assets/images/ingredients/dry-carrot.webp +0 -0
  108. package/src/assets/images/ingredients/duck.webp +0 -0
  109. package/src/assets/images/ingredients/fish.webp +0 -0
  110. package/src/assets/images/ingredients/liquid.webp +0 -0
  111. package/src/assets/images/ingredients/oil.webp +0 -0
  112. package/src/assets/images/ingredients/pork.webp +0 -0
  113. package/src/assets/images/ingredients/potato.webp +0 -0
  114. package/src/assets/images/ingredients/quinoa.webp +0 -0
  115. package/src/assets/images/ingredients/rice.webp +0 -0
  116. package/src/assets/images/ingredients/seaweed.webp +0 -0
  117. package/src/assets/images/ingredients/turkey.webp +0 -0
  118. package/src/assets/images/ingredients/vitamins.webp +0 -0
  119. package/src/assets/images/tips/claudine-head.webp +0 -0
  120. package/src/assets/images/tips/claudine-tips-head-mobile.webp +0 -0
  121. package/src/assets/images/tips/claudine-tips-head-mobile@2x.webp +0 -0
  122. package/src/assets/images/tips/claudine-tips-head.webp +0 -0
  123. package/src/assets/images/tips/claudine-tips-head@2x.webp +0 -0
  124. package/src/assets/images/tips/claudine-tips-mobile.webp +0 -0
  125. package/src/assets/images/tips/claudine-tips-mobile@2x.webp +0 -0
  126. package/src/assets/images/tips/claudine-tips.webp +0 -0
  127. package/src/assets/images/tips/claudine-tips@2x.webp +0 -0
  128. package/src/assets/images/tips/payment-mobile.webp +0 -0
  129. package/src/assets/images/tips/payment-mobile@2x.webp +0 -0
  130. package/src/assets/images/tips/payment.webp +0 -0
  131. package/src/assets/images/tips/payment@2x.webp +0 -0
  132. package/src/assets/images/trash/dog-product-mobile.webp +0 -0
  133. package/src/assets/images/trash/dog-product.webp +0 -0
  134. package/src/assets/images/trash/full-cat.png +0 -0
  135. package/src/assets/images/trash/testimonial-1-mobile.webp +0 -0
  136. package/src/assets/images/trash/testimonial-1-mobile@2x.webp +0 -0
  137. package/src/assets/images/trash/testimonial-1.webp +0 -0
  138. package/src/assets/images/trash/testimonial-1@2x.webp +0 -0
  139. package/src/components/Accordions/FAQ/FaqItem.stories.tsx +61 -0
  140. package/src/components/Accordions/FAQ/FaqItem.tsx +55 -0
  141. package/src/components/Accordions/Ingredient/Ingredient.stories.tsx +38 -0
  142. package/src/components/Accordions/Ingredient/Ingredient.tsx +93 -0
  143. package/src/components/Accordions/index.tsx +4 -0
  144. package/src/components/Base/Banner/Banner.stories.tsx +33 -0
  145. package/src/components/Base/Banner/Banner.tsx +23 -0
  146. package/src/components/Base/Emblem/Emblem.stories.tsx +40 -0
  147. package/src/components/Base/Emblem/Emblem.tsx +22 -0
  148. package/src/components/Base/Logo/Logo.stories.tsx +46 -0
  149. package/src/components/Base/Logo/Logo.tsx +34 -0
  150. package/src/components/Base/ResponsiveImage/ResponsiveImage.stories.tsx +78 -0
  151. package/src/components/Base/ResponsiveImage/ResponsiveImage.tsx +56 -0
  152. package/src/components/Base/Text/Text.stories.tsx +115 -0
  153. package/src/components/Base/Text/Text.tsx +60 -0
  154. package/src/components/Base/Title/Title.stories.tsx +145 -0
  155. package/src/components/Base/Title/Title.tsx +77 -0
  156. package/src/components/Base/VideoPlayer/VideoPlayer.stories.tsx +60 -0
  157. package/src/components/Base/VideoPlayer/VideoPlayer.tsx +78 -0
  158. package/src/components/Base/index.tsx +9 -0
  159. package/src/components/Buttons/Button/Button.stories.tsx +158 -0
  160. package/src/components/Buttons/Button/Button.tsx +68 -0
  161. package/src/components/Buttons/CardButton/CardButton.stories.tsx +47 -0
  162. package/src/components/Buttons/CardButton/CardButton.tsx +25 -0
  163. package/src/components/Buttons/ClearButton/ClearButton.stories.tsx +26 -0
  164. package/src/components/Buttons/ClearButton/ClearButton.tsx +18 -0
  165. package/src/components/Buttons/FAQButton/FAQButton.stories.tsx +33 -0
  166. package/src/components/Buttons/FAQButton/FAQButton.tsx +27 -0
  167. package/src/components/Buttons/IllustratedCardButton/IllustratedCardButton.stories.tsx +71 -0
  168. package/src/components/Buttons/IllustratedCardButton/IllustratedCardButton.tsx +45 -0
  169. package/src/components/Buttons/SimpleIllustratedCardButton/SimpleIllustratedCardButton.stories.tsx +74 -0
  170. package/src/components/Buttons/SimpleIllustratedCardButton/SimpleIllustratedCardButton.tsx +43 -0
  171. package/src/components/Buttons/SocialButton/SocialButton.stories.tsx +56 -0
  172. package/src/components/Buttons/SocialButton/SocialButton.tsx +28 -0
  173. package/src/components/Buttons/Toggle/Toggle.tsx +64 -0
  174. package/src/components/Buttons/Toggle/Toogle.stories.tsx +66 -0
  175. package/src/components/Buttons/index.ts +10 -0
  176. package/src/components/Cards/CTACard/CTACard.stories.tsx +83 -0
  177. package/src/components/Cards/CTACard/CTACard.tsx +47 -0
  178. package/src/components/Cards/FeatureCard/FeatureCard.stories.tsx +96 -0
  179. package/src/components/Cards/FeatureCard/FeatureCard.tsx +50 -0
  180. package/src/components/Cards/FeatureIllustration/FeatureIllustration.stories.tsx +96 -0
  181. package/src/components/Cards/FeatureIllustration/FeatureIllustration.tsx +56 -0
  182. package/src/components/Cards/FeatureIllustration/index.ts +2 -0
  183. package/src/components/Cards/FoodCard/FoodCard.stories.tsx +43 -0
  184. package/src/components/Cards/FoodCard/FoodCard.tsx +37 -0
  185. package/src/components/Cards/FrequencySelectorCard/FrequencySelectorCard.stories.tsx +140 -0
  186. package/src/components/Cards/FrequencySelectorCard/FrequencySelectorCard.tsx +90 -0
  187. package/src/components/Cards/FrequencySelectorCard/index.ts +2 -0
  188. package/src/components/Cards/IllustratedCard/IllustratedCard.stories.tsx +54 -0
  189. package/src/components/Cards/IllustratedCard/IllustratedCard.tsx +44 -0
  190. package/src/components/Cards/PaymentCard/PaymentCard.stories.tsx +35 -0
  191. package/src/components/Cards/PaymentCard/PaymentCard.tsx +31 -0
  192. package/src/components/Cards/PlanCard/PlanCard.stories.tsx +140 -0
  193. package/src/components/Cards/PlanCard/PlanCard.tsx +119 -0
  194. package/src/components/Cards/Polaroid/Polaroid.stories.tsx +118 -0
  195. package/src/components/Cards/Polaroid/Polaroid.tsx +66 -0
  196. package/src/components/Cards/RecetteCard/RecetteCard.stories.tsx +86 -0
  197. package/src/components/Cards/RecetteCard/RecetteCard.tsx +47 -0
  198. package/src/components/Cards/StatCard/StatCard.stories.tsx +69 -0
  199. package/src/components/Cards/StatCard/StatCard.tsx +45 -0
  200. package/src/components/Cards/Testimonial/Testimonial.stories.tsx +65 -0
  201. package/src/components/Cards/Testimonial/Testimonial.tsx +62 -0
  202. package/src/components/Cards/TestimonialSlider/TestimonialSlider.stories.ts +53 -0
  203. package/src/components/Cards/TestimonialSlider/TestimonialSlider.tsx +50 -0
  204. package/src/components/Cards/Tips/Tips.stories.tsx +32 -0
  205. package/src/components/Cards/Tips/Tips.tsx +40 -0
  206. package/src/components/Cards/TransitionCard/TransitionCard.stories.tsx +50 -0
  207. package/src/components/Cards/TransitionCard/TransitionCard.tsx +66 -0
  208. package/src/components/Cards/UpCard/UpCard.stories.tsx +94 -0
  209. package/src/components/Cards/UpCard/UpCard.tsx +50 -0
  210. package/src/components/Cards/WizardTips/WizardTips.stories.tsx +48 -0
  211. package/src/components/Cards/WizardTips/WizardTips.tsx +33 -0
  212. package/src/components/Cards/index.ts +19 -0
  213. package/src/components/Inputs/ButtonSelect/ButtonSelect.stories.tsx +51 -0
  214. package/src/components/Inputs/ButtonSelect/ButtonSelect.tsx +34 -0
  215. package/src/components/Inputs/Checkbox/Checkbox.stories.tsx +47 -0
  216. package/src/components/Inputs/Checkbox/Checkbox.tsx +35 -0
  217. package/src/components/Inputs/Dropdown/Dropdown.stories.tsx +61 -0
  218. package/src/components/Inputs/Dropdown/Dropdown.tsx +108 -0
  219. package/src/components/Inputs/DropdownMenu/DropdownMenu.stories.tsx +75 -0
  220. package/src/components/Inputs/DropdownMenu/DropdownMenu.tsx +109 -0
  221. package/src/components/Inputs/ErrorMessage/ErrorMessage.stories.tsx +33 -0
  222. package/src/components/Inputs/ErrorMessage/ErrorMessage.tsx +18 -0
  223. package/src/components/Inputs/Filters/Filters.stories.tsx +54 -0
  224. package/src/components/Inputs/Filters/Filters.tsx +75 -0
  225. package/src/components/Inputs/Label/Label.stories.tsx +34 -0
  226. package/src/components/Inputs/Label/Label.tsx +16 -0
  227. package/src/components/Inputs/Newsletter/Newsletter.stories.tsx +67 -0
  228. package/src/components/Inputs/Newsletter/Newsletter.tsx +70 -0
  229. package/src/components/Inputs/QuantityInput/QuantityInput.stories.tsx +54 -0
  230. package/src/components/Inputs/QuantityInput/QuantityInput.tsx +46 -0
  231. package/src/components/Inputs/Tag/Tag.stories.tsx +33 -0
  232. package/src/components/Inputs/Tag/Tag.tsx +19 -0
  233. package/src/components/Inputs/TagSelect/TagSelect.stories.tsx +50 -0
  234. package/src/components/Inputs/TagSelect/TagSelect.tsx +48 -0
  235. package/src/components/Inputs/TextInput/TextInput.stories.tsx +40 -0
  236. package/src/components/Inputs/TextInput/TextInput.tsx +38 -0
  237. package/src/components/Inputs/WizardDropdown/WizardDropdown.stories.tsx +59 -0
  238. package/src/components/Inputs/WizardDropdown/WizardDropdown.tsx +93 -0
  239. package/src/components/Inputs/WizardTextInput/WizardTextInput.stories.tsx +40 -0
  240. package/src/components/Inputs/WizardTextInput/WizardTextInput.tsx +31 -0
  241. package/src/components/Inputs/index.ts +16 -0
  242. package/src/components/Navigation/Footer/Footer.stories.tsx +28 -0
  243. package/src/components/Navigation/Footer/Footer.tsx +130 -0
  244. package/src/components/Navigation/FooterTips/FooterTips.stories.tsx +22 -0
  245. package/src/components/Navigation/FooterTips/FooterTips.tsx +24 -0
  246. package/src/components/Navigation/MobileMenu/MobileMenu.stories.tsx +56 -0
  247. package/src/components/Navigation/MobileMenu/MobileMenu.tsx +45 -0
  248. package/src/components/Navigation/Navbar/Navbar.stories.tsx +128 -0
  249. package/src/components/Navigation/Navbar/Navbar.tsx +66 -0
  250. package/src/components/Navigation/NavbarDesktop/NavbarDesktop.stories.tsx +57 -0
  251. package/src/components/Navigation/NavbarDesktop/NavbarDesktop.tsx +48 -0
  252. package/src/components/Navigation/NavbarMobile/NavbarMobile.stories.tsx +59 -0
  253. package/src/components/Navigation/NavbarMobile/NavbarMobile.tsx +75 -0
  254. package/src/components/Navigation/Stepper/Stepper.stories.tsx +41 -0
  255. package/src/components/Navigation/Stepper/Stepper.tsx +19 -0
  256. package/src/components/Navigation/Tabs/Tabs.stories.tsx +120 -0
  257. package/src/components/Navigation/Tabs/Tabs.tsx +92 -0
  258. package/src/components/Navigation/WizardNavbar/WizardNavbar.stories.tsx +59 -0
  259. package/src/components/Navigation/WizardNavbar/WizardNavbar.tsx +83 -0
  260. package/src/components/Navigation/index.ts +11 -0
  261. package/src/components/SVG/Facebook.svg +3 -0
  262. package/src/components/SVG/Instagram.svg +5 -0
  263. package/src/components/SVG/Linkedin.svg +5 -0
  264. package/src/components/SVG/Tiktok.svg +7 -0
  265. package/src/components/SVG/arrow-plain.svg +3 -0
  266. package/src/components/SVG/arrow.svg +3 -0
  267. package/src/components/SVG/calendar.svg +4 -0
  268. package/src/components/SVG/check-circle.svg +5 -0
  269. package/src/components/SVG/check-rounded.svg +4 -0
  270. package/src/components/SVG/check.svg +3 -0
  271. package/src/components/SVG/cross-rounded.svg +3 -0
  272. package/src/components/SVG/cross.svg +4 -0
  273. package/src/components/SVG/dollar-rounded.svg +6 -0
  274. package/src/components/SVG/double-arrow.svg +3 -0
  275. package/src/components/SVG/filters.svg +8 -0
  276. package/src/components/SVG/hat-cook.svg +4 -0
  277. package/src/components/SVG/home-hero-shape-mobile.svg +3 -0
  278. package/src/components/SVG/home-hero-shape-small.svg +3 -0
  279. package/src/components/SVG/home-hero-shape.svg +3 -0
  280. package/src/components/SVG/index.ts +75 -0
  281. package/src/components/SVG/info.svg +3 -0
  282. package/src/components/SVG/magic-wand.svg +9 -0
  283. package/src/components/SVG/menu.svg +5 -0
  284. package/src/components/SVG/minus.svg +3 -0
  285. package/src/components/SVG/mute.svg +4 -0
  286. package/src/components/SVG/pause.svg +3 -0
  287. package/src/components/SVG/play.svg +3 -0
  288. package/src/components/SVG/plus.svg +4 -0
  289. package/src/components/SVG/polaroid-thread.svg +17 -0
  290. package/src/components/SVG/profil.svg +4 -0
  291. package/src/components/SVG/quote.svg +3 -0
  292. package/src/components/SVG/recipe-bg-shape.svg +3 -0
  293. package/src/components/SVG/star.svg +3 -0
  294. package/src/components/SVG/subtract.svg +3 -0
  295. package/src/components/SVG/trustpilot.svg +14 -0
  296. package/src/components/SVG/unmute.svg +5 -0
  297. package/src/components/index.ts +20 -0
  298. package/src/components/styles/Color/Color.stories.tsx +89 -0
  299. package/src/components/styles/Color/Color.tsx +47 -0
  300. package/src/components/styles/Icon/Icon.stories.tsx +103 -0
  301. package/src/components/styles/Icon/Icon.tsx +6 -0
  302. package/src/components/styles/Illustration/Illustration.stories.tsx +253 -0
  303. package/src/components/styles/Illustration/Illustration.tsx +45 -0
  304. package/src/components/styles/Typography/Typography.stories.tsx +37 -0
  305. package/src/components/styles/Typography/Typography.tsx +19 -0
  306. package/src/helpers/accordions.ts +39 -0
  307. package/src/helpers/clickoutside.ts +31 -0
  308. package/src/helpers/debounce.ts +10 -0
  309. package/src/helpers/index.ts +9 -0
  310. package/src/helpers/intersectionObserver.ts +101 -0
  311. package/src/helpers/keyboardControl.ts +58 -0
  312. package/src/helpers/responsive.ts +29 -0
  313. package/src/helpers/scroll.ts +16 -0
  314. package/src/index.ts +8 -0
  315. package/src/lib/i18n.ts +20 -0
  316. package/src/lib/locales/fr/design.json +42 -0
  317. package/src/styles/globals.css +205 -0
  318. package/src/types/svg.d.ts +8 -0
@@ -0,0 +1,26 @@
1
+ import { Meta, StoryObj } from '@storybook/react-vite';
2
+
3
+ import { ClearButton } from './ClearButton';
4
+
5
+ const meta = {
6
+ title: 'Components/Buttons/ClearButton',
7
+ component: ClearButton,
8
+ tags: ['autodocs'],
9
+ parameters: {
10
+ layout: 'centered',
11
+ },
12
+ argTypes: {
13
+ onClick: { action: 'onClick' },
14
+ className: { control: 'text', description: 'Additional class names' },
15
+ },
16
+ } satisfies Meta<typeof ClearButton>;
17
+
18
+ export default meta;
19
+
20
+ type Story = StoryObj<typeof meta>;
21
+
22
+ export const Default: Story = {
23
+ args: {
24
+ onClick: () => {},
25
+ },
26
+ };
@@ -0,0 +1,18 @@
1
+ import { memo } from 'react';
2
+
3
+ import clsx from 'clsx';
4
+
5
+ import { CrossRoundedIcon } from '../../../components';
6
+
7
+ export interface ClearButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
8
+ className?: string;
9
+ onClick: (e: React.MouseEvent<HTMLButtonElement>) => void;
10
+ }
11
+
12
+ const ClearButtonComponent = ({ className, onClick, ...props }: ClearButtonProps) => (
13
+ <button tabIndex={0} {...props} onClick={onClick} className={clsx('text-claret-violet-dark outline-beige-light hover:text-claret-violet-light disabled:pointer-none: h-5 w-5 cursor-pointer rounded-full transition-colors duration-300', className)}>
14
+ <CrossRoundedIcon className="h-full w-full" />
15
+ </button>
16
+ );
17
+
18
+ export const ClearButton = memo(ClearButtonComponent);
@@ -0,0 +1,33 @@
1
+ import { Meta, StoryObj } from '@storybook/react-vite';
2
+
3
+ import { FAQButton } from './FAQButton';
4
+
5
+ const meta = {
6
+ title: 'Components/Buttons/FAQButton',
7
+ component: FAQButton,
8
+ tags: ['autodocs'],
9
+ parameters: {
10
+ layout: 'centered',
11
+ },
12
+ argTypes: {
13
+ variant: { control: 'select', options: ['plus', 'minus'] },
14
+ disabled: { control: 'boolean', description: 'Whether the button is disabled' },
15
+ className: { control: 'text', description: 'Additional CSS classes' },
16
+ },
17
+ globals: {
18
+ backgrounds: {
19
+ value: 'light',
20
+ },
21
+ },
22
+ } satisfies Meta<typeof FAQButton>;
23
+
24
+ export default meta;
25
+
26
+ type Story = StoryObj<typeof meta>;
27
+
28
+ export const Default: Story = {
29
+ args: {
30
+ variant: 'plus',
31
+ disabled: false,
32
+ },
33
+ };
@@ -0,0 +1,27 @@
1
+ import clsx from 'clsx';
2
+
3
+ import { MinusIcon, PlusIcon } from '../../../components';
4
+
5
+ export interface FAQButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
6
+ variant: 'plus' | 'minus';
7
+ disabled?: boolean;
8
+ className?: string;
9
+ }
10
+
11
+ export const FAQButton = ({ variant, disabled = false, className, ...props }: FAQButtonProps) => {
12
+ return (
13
+ <button
14
+ tabIndex={0}
15
+ type="button"
16
+ disabled={disabled}
17
+ className={clsx(
18
+ 'border-claret-violet-dark text-claret-violet-dark text-md hover:text-beige-light hover:bg-claret-violet-dark focus-visible:bg-claret-violet-dark focus-visible:text-beige-light flex h-6.5 w-6.5 cursor-pointer items-center justify-center rounded-full border bg-transparent transition-all duration-300 focus:outline-none disabled:pointer-events-none disabled:opacity-50',
19
+ className,
20
+ )}
21
+ {...props}
22
+ >
23
+ {variant === 'plus' && <PlusIcon className="w-4" />}
24
+ {variant === 'minus' && <MinusIcon className="w-4" />}
25
+ </button>
26
+ );
27
+ };
@@ -0,0 +1,71 @@
1
+ import { Meta, StoryObj } from '@storybook/react-vite';
2
+
3
+ import { IllustratedCardButton } from './IllustratedCardButton';
4
+
5
+ const meta = {
6
+ title: 'Components/Buttons/IllustratedCardButton',
7
+ component: IllustratedCardButton,
8
+ tags: ['autodocs'],
9
+ parameters: {
10
+ layout: 'centered',
11
+ },
12
+ argTypes: {
13
+ layout: {
14
+ control: 'select',
15
+ options: ['vertical', 'horizontal'],
16
+ description: 'Layout orientation on mobile.',
17
+ },
18
+ disabled: {
19
+ control: 'boolean',
20
+ },
21
+ onClick: {
22
+ action: 'clicked',
23
+ },
24
+ illustration: {
25
+ control: 'text',
26
+ description: 'Illustration URL',
27
+ },
28
+ description: {
29
+ control: 'text',
30
+ description: 'Description',
31
+ },
32
+ label: {
33
+ control: 'text',
34
+ description: 'Label',
35
+ },
36
+ className: {
37
+ control: 'text',
38
+ description: 'Additional class name',
39
+ },
40
+ },
41
+ globals: {
42
+ backgrounds: {
43
+ value: 'light',
44
+ },
45
+ },
46
+ } satisfies Meta<typeof IllustratedCardButton>;
47
+
48
+ export default meta;
49
+
50
+ type Story = StoryObj<typeof meta>;
51
+
52
+ export const Vertical: Story = {
53
+ args: {
54
+ layout: 'vertical',
55
+ label: 'A la cool !',
56
+ description: 'Sort moins de 1h30. On ne va pas se mentir, il est plus canapé que treck en fôret.',
57
+ illustration: '/illustrations/sofa.webp',
58
+ },
59
+ };
60
+
61
+ export const Horizontal: Story = {
62
+ args: {
63
+ layout: 'horizontal',
64
+ label: 'A la cool !',
65
+ description: 'Sort moins de 1h30. On ne va pas se mentir, il est plus canapé que treck en fôret.',
66
+ illustration: '/illustrations/sofa.webp',
67
+ },
68
+ globals: {
69
+ viewport: { value: 'mobile', isRotated: false },
70
+ },
71
+ };
@@ -0,0 +1,45 @@
1
+ import clsx from 'clsx';
2
+
3
+ export type IllustratedCardButtonProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {
4
+ label: string;
5
+ illustration: string;
6
+ description: string;
7
+ layout?: 'vertical' | 'horizontal';
8
+ className?: string;
9
+ };
10
+
11
+ const layoutStyles = {
12
+ vertical: 'max-md:w-38 px-2.5 py-4 max-md:flex-col items-center',
13
+ horizontal: 'p-3 gap-4',
14
+ };
15
+
16
+ const textLayoutStyles = {
17
+ vertical: '',
18
+ horizontal: 'max-md:gap-2 max-md:text-start',
19
+ };
20
+
21
+ const illustrationLayoutStyles = {
22
+ vertical: 'mb-2 w-18',
23
+ horizontal: 'w-15',
24
+ };
25
+
26
+ export const IllustratedCardButton = ({ label, layout = 'vertical', description, illustration, disabled, className = '', ...props }: IllustratedCardButtonProps) => {
27
+ // prettier-ignore
28
+ const buttonClasses = clsx(
29
+ "relative md:px-5 md:py-6 flex md:flex-col items-center overflow-hidden rounded-input bg-beige-dark text-claret-violet-dark transition-all duration-300 focus:outline-none cursor-pointer disabled:cursor-not-allowed disabled:pointer-events-none disabled:opacity-50",
30
+ "after:absolute after:content-[''] after:border after:rounded-input after:border-beige-ultra-dark after:inset-0 after:z-0 hover:after:border-claret-violet-dark after:transition-colors after:duration-300 focus-visible:after:border-claret-violet-dark",
31
+ "md:rounded-card md:after:rounded-card gap-3 md:p-6 justify-center md:aspect-5/6 md:w-70.5",
32
+ layoutStyles[layout],
33
+ className,
34
+ );
35
+
36
+ return (
37
+ <button className={buttonClasses} disabled={disabled} {...props} tabIndex={disabled ? -1 : 0}>
38
+ <img src={illustration} alt={label} className={clsx('md:mb-6 md:w-25', illustrationLayoutStyles[layout])} loading="lazy" decoding="async" />
39
+ <span className={clsx('flex flex-col gap-2.5', textLayoutStyles[layout])}>
40
+ <span className="text-sm-mobile w-full font-semibold md:text-xl">{label}</span>
41
+ <span className="text-sm-mobile md:text-md w-full">{description}</span>
42
+ </span>
43
+ </button>
44
+ );
45
+ };
@@ -0,0 +1,74 @@
1
+ import { Meta, StoryObj } from '@storybook/react-vite';
2
+
3
+ import { SimpleIllustratedCardButton } from './SimpleIllustratedCardButton';
4
+
5
+ const meta = {
6
+ title: 'Components/Buttons/SimpleIllustratedCardButton',
7
+ component: SimpleIllustratedCardButton,
8
+ tags: ['autodocs'],
9
+ parameters: {
10
+ layout: 'centered',
11
+ },
12
+ argTypes: {
13
+ layout: {
14
+ control: 'select',
15
+ options: ['vertical', 'horizontal'],
16
+ description: 'Layout orientation on mobile.',
17
+ },
18
+ disabled: {
19
+ control: 'boolean',
20
+ },
21
+ onClick: {
22
+ action: 'clicked',
23
+ },
24
+ illustration: {
25
+ control: 'text',
26
+ description: 'Illustration URL',
27
+ },
28
+ label: {
29
+ control: 'text',
30
+ description: 'Label',
31
+ },
32
+ className: {
33
+ control: 'text',
34
+ description: 'Additional class name',
35
+ },
36
+ illustrationClassName: {
37
+ control: 'text',
38
+ description: 'Additional class name for illustration',
39
+ },
40
+ isActive: {
41
+ control: 'boolean',
42
+ description: 'Whether the button is active',
43
+ },
44
+ },
45
+ globals: {
46
+ backgrounds: {
47
+ value: 'light',
48
+ },
49
+ },
50
+ } satisfies Meta<typeof SimpleIllustratedCardButton>;
51
+
52
+ export default meta;
53
+
54
+ type Story = StoryObj<typeof meta>;
55
+
56
+ export const Vertical: Story = {
57
+ args: {
58
+ layout: 'vertical',
59
+ label: 'Chien',
60
+ illustration: '/illustrations/dog.webp',
61
+ },
62
+ };
63
+
64
+ export const Horizontal: Story = {
65
+ args: {
66
+ layout: 'horizontal',
67
+ label: 'Chien',
68
+ illustration: '/illustrations/puppy.webp',
69
+ className: 'max-md:w-80',
70
+ },
71
+ globals: {
72
+ viewport: { value: 'mobile', isRotated: false },
73
+ },
74
+ };
@@ -0,0 +1,43 @@
1
+ import clsx from 'clsx';
2
+
3
+ export type SimpleIllustratedCardButtonProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {
4
+ label: string;
5
+ illustration: string;
6
+ layout?: 'vertical' | 'horizontal';
7
+ className?: string;
8
+ illustrationClassName?: string;
9
+ isActive?: boolean;
10
+ };
11
+
12
+ const layoutStyles = {
13
+ vertical: 'px-2.5 py-4 max-md:flex-col w-32 aspect-4/5',
14
+ horizontal: 'max-md:pt-1 max-md:ps-1 max-md:h-14 max-md:flex-row-reverse max-md:justify-end max-md:gap-9.5',
15
+ };
16
+
17
+ const illustrationLayoutStyles = {
18
+ vertical: 'absolute right-0 bottom-0 left-0 z-1 max-h-34 w-full',
19
+ horizontal: 'max-md:h-full max-md:w-19 md:w-full',
20
+ };
21
+
22
+ export const SimpleIllustratedCardButton = ({ label, layout = 'vertical', illustration, disabled, className = '', illustrationClassName = '', isActive = false, ...props }: SimpleIllustratedCardButtonProps) => {
23
+ // prettier-ignore
24
+ const buttonClasses = clsx(
25
+ "relative md:px-5 md:py-6 flex md:flex-col items-center overflow-hidden rounded-input bg-beige-dark text-claret-violet-dark transition-all duration-300 focus:outline-none cursor-pointer disabled:cursor-not-allowed disabled:pointer-events-none disabled:opacity-50",
26
+ "after:absolute after:content-[''] after:border after:rounded-input after:border-beige-ultra-dark after:inset-0 after:z-0 hover:after:border-claret-violet-dark after:transition-colors after:duration-300 focus-visible:after:border-claret-violet-dark",
27
+ "md:rounded-illustrated-card-button md:after:rounded-illustrated-card-button md:w-51.25 md:aspect-4/5",
28
+ layoutStyles[layout],
29
+ isActive && 'after:border-claret-violet-dark',
30
+ className,
31
+ );
32
+
33
+ return (
34
+ <button className={buttonClasses} disabled={disabled} {...props} tabIndex={disabled ? -1 : 0}>
35
+ <span className="flex flex-col gap-2.5">
36
+ <span className="text-sm-mobile w-full font-semibold md:text-xl">{label}</span>
37
+ </span>
38
+ <div className={clsx('md:absolute md:right-0 md:bottom-0 md:left-0 md:z-1 md:h-34 md:w-full', illustrationLayoutStyles[layout])}>
39
+ <img src={illustration} alt={label} className={clsx('w-full origin-top object-contain md:absolute md:top-0 md:right-0 md:left-0 md:z-1 md:scale-120', illustrationLayoutStyles[layout], illustrationClassName)} loading="lazy" decoding="async" />
40
+ </div>
41
+ </button>
42
+ );
43
+ };
@@ -0,0 +1,56 @@
1
+ import { Meta, StoryObj } from '@storybook/react-vite';
2
+
3
+ import { SocialButton } from './SocialButton';
4
+
5
+ const meta = {
6
+ title: 'Components/Buttons/SocialButton',
7
+ component: SocialButton,
8
+ parameters: {
9
+ layout: 'centered',
10
+ },
11
+ tags: ['autodocs'],
12
+ argTypes: {
13
+ variant: {
14
+ control: 'select',
15
+ options: ['Facebook', 'Instagram', 'LinkedIn', 'Tiktok'],
16
+ description: 'The variant of the social button',
17
+ },
18
+ className: {
19
+ control: 'text',
20
+ description: 'Additional CSS classes',
21
+ },
22
+ },
23
+ globals: {
24
+ backgrounds: {
25
+ value: 'light',
26
+ },
27
+ },
28
+ } satisfies Meta<typeof SocialButton>;
29
+
30
+ export default meta;
31
+
32
+ type Story = StoryObj<typeof meta>;
33
+
34
+ export const facebook: Story = {
35
+ args: {
36
+ variant: 'Facebook',
37
+ },
38
+ };
39
+
40
+ export const instagram: Story = {
41
+ args: {
42
+ variant: 'Instagram',
43
+ },
44
+ };
45
+
46
+ export const linkedin: Story = {
47
+ args: {
48
+ variant: 'LinkedIn',
49
+ },
50
+ };
51
+
52
+ export const tiktok: Story = {
53
+ args: {
54
+ variant: 'Tiktok',
55
+ },
56
+ };
@@ -0,0 +1,28 @@
1
+ import clsx from 'clsx';
2
+
3
+ import { FacebookIcon, InstagramIcon, LinkedinIcon, TiktokIcon } from '../../../components';
4
+
5
+ export type SocialButtonProps = {
6
+ variant: 'Facebook' | 'Instagram' | 'LinkedIn' | 'Tiktok';
7
+ labelVisible?: boolean;
8
+ className?: string;
9
+ };
10
+
11
+ const variantUrls = {
12
+ Facebook: 'https://www.facebook.com/myelmut/',
13
+ Instagram: 'https://instagram.com/myelmut',
14
+ LinkedIn: 'https://www.linkedin.com/company/elmut/',
15
+ Tiktok: 'https://www.tiktok.com/@myelmut',
16
+ };
17
+
18
+ export const SocialButton = ({ variant, labelVisible = false, className }: SocialButtonProps) => (
19
+ <a tabIndex={0} href={variantUrls[variant]} target="_blank" rel="noopener noreferrer" className={clsx('group flex items-center gap-2', className)}>
20
+ <span className="bg-claret-violet-dark text-beige-light group-hover:bg-claret-violet-light flex h-6 w-6 cursor-pointer items-center justify-center rounded-md transition-colors duration-300">
21
+ {variant === 'Facebook' && <FacebookIcon className="h-3" />}
22
+ {variant === 'Instagram' && <InstagramIcon className="h-3" />}
23
+ {variant === 'LinkedIn' && <LinkedinIcon className="h-3" />}
24
+ {variant === 'Tiktok' && <TiktokIcon className="h-3" />}
25
+ </span>
26
+ {labelVisible && <span className="text-claret-violet-dark text-button-mobile md:text-button font-semibold max-md:hidden">{variant}</span>}
27
+ </a>
28
+ );
@@ -0,0 +1,64 @@
1
+ import clsx from 'clsx';
2
+
3
+ import { Text } from '../../../components';
4
+
5
+ interface ToggleData {
6
+ label: string;
7
+ labelMobile?: string;
8
+ value: string;
9
+ image?: string;
10
+ }
11
+
12
+ interface ToggleProps {
13
+ data: ToggleData[];
14
+ onChange: (value: string) => void;
15
+ value: string;
16
+ disabled?: boolean;
17
+ className?: string;
18
+ 'aria-label'?: string;
19
+ }
20
+
21
+ export const Toggle = ({ data = [], onChange, value = '', disabled = false, className = '', 'aria-label': ariaLabel = 'Toggle selection' }: ToggleProps) => {
22
+ // Validation
23
+ if (data.length !== 2) {
24
+ console.warn('Toggle component expects exactly 2 items in data array');
25
+ return null;
26
+ }
27
+
28
+ const handleClick = (selectedValue: string) => {
29
+ if (disabled || selectedValue === value) return;
30
+ onChange(selectedValue);
31
+ };
32
+
33
+ const containerClasses = clsx('bg-beige-dark relative z-0 flex h-11.25 items-center rounded-full md:h-20', disabled && 'pointer-events-none cursor-not-allowed opacity-30', className);
34
+ const activeIndicatorClasses = clsx('bg-claret-violet-dark absolute top-0 -z-1 h-11.25 w-1/2 rounded-full transition-transform duration-600 ease-in-out will-change-transform md:h-20', value === data[0]?.value ? 'translate-x-0' : 'translate-x-full');
35
+ const labelClasses = 'min-w-fit font-semibold';
36
+
37
+ return (
38
+ <div className={containerClasses} aria-label={ariaLabel}>
39
+ <div className={activeIndicatorClasses} aria-hidden="true" />
40
+ {data.map((item, index) => (
41
+ <button
42
+ tabIndex={0}
43
+ key={item.value}
44
+ type="button"
45
+ disabled={disabled}
46
+ className={clsx(
47
+ 'focus-visible:outline-claret-violet-dark relative z-1 flex h-full flex-1 cursor-pointer items-center gap-3 rounded-full p-1 transition-colors duration-600 ease-in-out focus-visible:outline-2 md:gap-6 md:py-1.5',
48
+ index === 0 ? 'pe-6 md:pe-11' : 'flex-row-reverse ps-6 md:ps-11',
49
+ value === item.value && 'text-beige-dark',
50
+ )}
51
+ onClick={() => handleClick(item.value)}
52
+ >
53
+ <span className="bg-lavender-blue-dark block h-9 w-9 shrink-0 overflow-hidden rounded-full md:h-17 md:w-17">{item.image && <img src={item.image} alt={item.label} className="h-full w-full object-cover" loading="lazy" decoding="async" />}</span>
54
+ <Text size="button" variant="span" className={clsx(labelClasses, item.labelMobile && 'hidden md:block')}>
55
+ {item.label}
56
+ </Text>
57
+ <Text size="button" variant="span" className={clsx(labelClasses, item.labelMobile && 'block md:hidden')}>
58
+ {item.labelMobile}
59
+ </Text>
60
+ </button>
61
+ ))}
62
+ </div>
63
+ );
64
+ };
@@ -0,0 +1,66 @@
1
+ import React, { useState } from 'react';
2
+
3
+ import type { Meta, StoryObj } from '@storybook/react-vite';
4
+
5
+ import { Toggle } from './Toggle';
6
+
7
+ const meta = {
8
+ title: 'Components/Buttons/Toggle',
9
+ component: Toggle,
10
+ parameters: {
11
+ layout: 'centered',
12
+ },
13
+ tags: ['autodocs'],
14
+ argTypes: {
15
+ data: {
16
+ control: 'object',
17
+ description: 'Array of toggle options (exactly 2 items required)',
18
+ },
19
+ onChange: {
20
+ action: 'onChange',
21
+ description: 'Callback function called when toggle value changes',
22
+ },
23
+ value: {
24
+ control: 'text',
25
+ description: 'Currently selected value',
26
+ },
27
+ disabled: {
28
+ control: 'boolean',
29
+ description: 'Whether the toggle is disabled',
30
+ },
31
+ className: {
32
+ control: 'text',
33
+ description: 'Additional CSS classes',
34
+ },
35
+ 'aria-label': {
36
+ control: 'text',
37
+ description: 'Accessibility label for screen readers',
38
+ },
39
+ },
40
+ globals: {
41
+ backgrounds: {
42
+ value: 'light',
43
+ },
44
+ },
45
+ } satisfies Meta<typeof Toggle>;
46
+
47
+ export default meta;
48
+ type Story = StoryObj<typeof meta>;
49
+
50
+ export const Default: Story = {
51
+ args: {
52
+ data: [
53
+ { label: 'Pour mon chien', labelMobile: 'Chien', value: 'dog', image: '/images/dog.webp' },
54
+ { label: 'Pour mon chat', labelMobile: 'Chat', value: 'cat', image: '/images/cat.webp' },
55
+ ],
56
+ onChange: () => {},
57
+ value: 'dog',
58
+ className: '',
59
+ 'aria-label': 'Pet selection toggle',
60
+ },
61
+ render: (arg) => {
62
+ const [value, setValue] = useState('dog');
63
+
64
+ return <Toggle data={arg.data} value={value} onChange={setValue} aria-label={arg['aria-label']} disabled={arg.disabled} />;
65
+ },
66
+ };
@@ -0,0 +1,10 @@
1
+ import { Button } from './Button/Button';
2
+ import { CardButton } from './CardButton/CardButton';
3
+ import { ClearButton } from './ClearButton/ClearButton';
4
+ import { FAQButton } from './FAQButton/FAQButton';
5
+ import { IllustratedCardButton } from './IllustratedCardButton/IllustratedCardButton';
6
+ import { SimpleIllustratedCardButton } from './SimpleIllustratedCardButton/SimpleIllustratedCardButton';
7
+ import { SocialButton } from './SocialButton/SocialButton';
8
+ import { Toggle } from './Toggle/Toggle';
9
+
10
+ export { Button, FAQButton, ClearButton, CardButton, IllustratedCardButton, SimpleIllustratedCardButton, SocialButton, Toggle };
@@ -0,0 +1,83 @@
1
+ import { Meta, StoryObj } from '@storybook/react-vite';
2
+
3
+ import { CTACard } from './CTACard';
4
+
5
+ const meta = {
6
+ title: 'Components/Cards/CTACard',
7
+ component: CTACard,
8
+ parameters: {
9
+ layout: 'centered',
10
+ },
11
+ tags: ['autodocs'],
12
+ argTypes: {
13
+ title: {
14
+ control: 'text',
15
+ description: 'The title of the card',
16
+ },
17
+ description: {
18
+ control: 'text',
19
+ description: 'The description of the card',
20
+ },
21
+ ctaText: {
22
+ control: 'text',
23
+ description: 'The text of the CTA button',
24
+ },
25
+ variant: {
26
+ control: 'select',
27
+ options: ['light', 'dark'],
28
+ },
29
+ onClick: {
30
+ action: 'clicked',
31
+ },
32
+ secondaryCtaText: {
33
+ control: 'text',
34
+ description: 'The text of the secondary CTA button',
35
+ },
36
+ secondaryCtaOnClick: {
37
+ action: 'clicked',
38
+ },
39
+ illustration: {
40
+ control: 'text',
41
+ },
42
+ className: {
43
+ control: 'text',
44
+ description: 'Additional class names to add to the component',
45
+ },
46
+ },
47
+ globals: {
48
+ backgrounds: {
49
+ value: 'dark',
50
+ },
51
+ },
52
+ } satisfies Meta<typeof CTACard>;
53
+
54
+ export default meta;
55
+ type Story = StoryObj<typeof meta>;
56
+
57
+ export const Light: Story = {
58
+ args: {
59
+ title: 'Commandez<br/> la <i>box</i> d’essai',
60
+ description: 'Et ajoutez ces friandises juste après la création de votre box personnalisée',
61
+ ctaText: 'Créer mon plan personnalisé',
62
+ onClick: () => {},
63
+ illustration: '/assets/illustrations/box-2.webp',
64
+ variant: 'light',
65
+ secondaryCtaText: 'Vous êtes déja client ?',
66
+ secondaryCtaOnClick: () => {},
67
+ className: 'lg:w-137',
68
+ },
69
+ };
70
+
71
+ export const Dark: Story = {
72
+ args: {
73
+ title: 'Vous êtes<br/>déjà <highlight>client</highlight> ?',
74
+ description: 'Rendez-vous dans votre espace personnel pour ajouter ces friandises à vos prochaines commandes.',
75
+ ctaText: 'Voir mon profil',
76
+ onClick: () => {},
77
+ illustration: '/assets/illustrations/box-light.webp',
78
+ variant: 'dark',
79
+ className: 'lg:w-137',
80
+ secondaryCtaText: 'Vous êtes déja client ?',
81
+ secondaryCtaOnClick: () => {},
82
+ },
83
+ };