@designcrowd/fe-shared-lib 1.6.0-eng-4039 → 1.6.1

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 (710) hide show
  1. package/.eslintrc.js +36 -36
  2. package/.github/workflows/auto-merge.yml +52 -52
  3. package/.github/workflows/claude.yml +72 -72
  4. package/.prettierrc.js +7 -7
  5. package/.storybook/main.ts +36 -36
  6. package/.storybook/preview-head-master.html +4 -4
  7. package/.storybook/preview-head-publish-master.html +4 -4
  8. package/.storybook/preview-head-publish.html +4 -4
  9. package/.storybook/preview-head.html +4 -4
  10. package/.storybook/preview.js +53 -53
  11. package/CLAUDE.md +94 -94
  12. package/Dockerfile +43 -43
  13. package/README.md +103 -103
  14. package/buildspec.yml +47 -47
  15. package/{public → dist}/css/tailwind-brandCrowd.css +1126 -994
  16. package/{public → dist}/css/tailwind-brandPage.css +964 -860
  17. package/{public → dist}/css/tailwind-crazyDomains.css +1126 -994
  18. package/{public → dist}/css/tailwind-designCom.css +1126 -994
  19. package/{public → dist}/css/tailwind-designCrowd.css +1126 -994
  20. package/index.cjs +16 -16
  21. package/index.js +61 -60
  22. package/nodemon.translation.json +6 -6
  23. package/package.json +115 -115
  24. package/postcss.config.js +5 -5
  25. package/src/atoms/components/AiPoweredLoader/AiPoweredLoader.stories.js +364 -0
  26. package/src/atoms/components/AiPoweredLoader/AiPoweredLoader.vue +296 -0
  27. package/src/atoms/components/Button/Button.vue +341 -341
  28. package/src/atoms/components/Button/ButtonVariant.mixin.vue +126 -126
  29. package/src/atoms/components/Button/Buttons.stories.js +828 -828
  30. package/src/atoms/components/Button/ButtonsCrazyDomains.stories.js +117 -117
  31. package/src/atoms/components/Button/variants/ButtonAi.vue +63 -63
  32. package/src/atoms/components/Button/variants/ButtonDarkModePill.vue +52 -52
  33. package/src/atoms/components/Button/variants/ButtonFlat.vue +65 -65
  34. package/src/atoms/components/Button/variants/ButtonGray.vue +64 -64
  35. package/src/atoms/components/Button/variants/ButtonInfo.vue +51 -51
  36. package/src/atoms/components/Button/variants/ButtonInfoFilled.vue +63 -63
  37. package/src/atoms/components/Button/variants/ButtonNoBorder.vue +65 -65
  38. package/src/atoms/components/Button/variants/ButtonOutline.vue +62 -62
  39. package/src/atoms/components/Button/variants/ButtonOutlineNoHover.vue +62 -62
  40. package/src/atoms/components/Button/variants/ButtonOutlinePrimary.vue +53 -53
  41. package/src/atoms/components/Button/variants/ButtonOutlineSuccess.vue +54 -54
  42. package/src/atoms/components/Button/variants/ButtonPill.vue +52 -52
  43. package/src/atoms/components/Button/variants/ButtonPrimary.vue +69 -69
  44. package/src/atoms/components/Button/variants/ButtonPrimaryWithIcon.vue +68 -68
  45. package/src/atoms/components/Button/variants/ButtonSecondary.vue +51 -51
  46. package/src/atoms/components/Button/variants/ButtonSuccess.vue +55 -55
  47. package/src/atoms/components/Button/variants/ButtonWarning.vue +65 -65
  48. package/src/atoms/components/Button/variants/crazy-domains/ButtonCrazyDomainsOutline.vue +58 -58
  49. package/src/atoms/components/Button/variants/crazy-domains/ButtonCrazyDomainsPrimary.vue +38 -38
  50. package/src/atoms/components/ButtonGroup/ButtonGroup.stories.js +575 -575
  51. package/src/atoms/components/ButtonGroup/ButtonGroup.vue +200 -200
  52. package/src/atoms/components/Carousel/Carousel.fixtures.js +53 -53
  53. package/src/atoms/components/Carousel/Carousel.vue +357 -384
  54. package/src/atoms/components/Carousel/carousel.stories.js +530 -652
  55. package/src/atoms/components/Checkbox/Checkbox.mixin.js +57 -57
  56. package/src/atoms/components/Checkbox/Checkbox.stories.js +340 -340
  57. package/src/atoms/components/Checkbox/Checkbox.vue +84 -84
  58. package/src/atoms/components/Checktile/Checktile.stories.js +79 -79
  59. package/src/atoms/components/Checktile/Checktile.vue +73 -73
  60. package/src/atoms/components/CollapsiblePanel/CollapsiblePanel.mixin.js +38 -38
  61. package/src/atoms/components/CollapsiblePanel/CollapsiblePanel.stories.js +53 -53
  62. package/src/atoms/components/CollapsiblePanel/CollapsiblePanel.vue +33 -33
  63. package/src/atoms/components/ColorPicker/ColorPicker.stories.js +89 -89
  64. package/src/atoms/components/ColorPicker/ColorPicker.vue +95 -95
  65. package/src/atoms/components/CopyToClipboardText/CopyToClipboardText.stories.js +41 -41
  66. package/src/atoms/components/CopyToClipboardText/CopyToClipboardText.vue +71 -71
  67. package/src/atoms/components/Dropdown/Dropdown.stories.js +140 -140
  68. package/src/atoms/components/Dropdown/Dropdown.vue +123 -123
  69. package/src/atoms/components/Dropdown/DropdownItem.vue +33 -33
  70. package/src/atoms/components/FormControl/FormControl.mixin.js +136 -136
  71. package/src/atoms/components/HelloBar/HelloBar.stories.js +195 -195
  72. package/src/atoms/components/HelloBar/HelloBar.vue +156 -156
  73. package/src/atoms/components/Icon/Icon.stories.js +408 -408
  74. package/src/atoms/components/Icon/Icon.vue +924 -924
  75. package/src/atoms/components/Icon/icons/add-page.vue +6 -6
  76. package/src/atoms/components/Icon/icons/ai.vue +6 -6
  77. package/src/atoms/components/Icon/icons/annotate-heart.vue +7 -7
  78. package/src/atoms/components/Icon/icons/arrow-down.vue +6 -6
  79. package/src/atoms/components/Icon/icons/arrow-left.vue +7 -7
  80. package/src/atoms/components/Icon/icons/arrow-right.vue +7 -7
  81. package/src/atoms/components/Icon/icons/arrow-top-right.vue +6 -6
  82. package/src/atoms/components/Icon/icons/arrow-up-underline.vue +7 -7
  83. package/src/atoms/components/Icon/icons/arrow-up.vue +7 -7
  84. package/src/atoms/components/Icon/icons/attach.vue +6 -6
  85. package/src/atoms/components/Icon/icons/auth-facebook-white.vue +17 -17
  86. package/src/atoms/components/Icon/icons/auth-facebook.vue +24 -24
  87. package/src/atoms/components/Icon/icons/auth-google.vue +32 -32
  88. package/src/atoms/components/Icon/icons/award.vue +7 -7
  89. package/src/atoms/components/Icon/icons/background.vue +7 -7
  90. package/src/atoms/components/Icon/icons/badge.vue +7 -7
  91. package/src/atoms/components/Icon/icons/banner-centered.vue +6 -6
  92. package/src/atoms/components/Icon/icons/banner-left.vue +6 -6
  93. package/src/atoms/components/Icon/icons/banner.vue +7 -7
  94. package/src/atoms/components/Icon/icons/bc-mast.vue +7 -7
  95. package/src/atoms/components/Icon/icons/bezier-curve-outline.vue +7 -7
  96. package/src/atoms/components/Icon/icons/bezier-curve.vue +7 -7
  97. package/src/atoms/components/Icon/icons/briefcase.vue +7 -7
  98. package/src/atoms/components/Icon/icons/browser.vue +7 -7
  99. package/src/atoms/components/Icon/icons/brush.vue +6 -6
  100. package/src/atoms/components/Icon/icons/business-card-filled.vue +5 -5
  101. package/src/atoms/components/Icon/icons/business.vue +6 -6
  102. package/src/atoms/components/Icon/icons/calculator.vue +3 -3
  103. package/src/atoms/components/Icon/icons/calendar.vue +5 -5
  104. package/src/atoms/components/Icon/icons/callout-error.vue +6 -6
  105. package/src/atoms/components/Icon/icons/callout-info.vue +6 -6
  106. package/src/atoms/components/Icon/icons/callout-success.vue +8 -8
  107. package/src/atoms/components/Icon/icons/callout-warning.vue +6 -6
  108. package/src/atoms/components/Icon/icons/cap.vue +22 -22
  109. package/src/atoms/components/Icon/icons/card-vertical.vue +7 -7
  110. package/src/atoms/components/Icon/icons/card.vue +9 -9
  111. package/src/atoms/components/Icon/icons/cart-empty.vue +9 -9
  112. package/src/atoms/components/Icon/icons/check-thin.vue +7 -7
  113. package/src/atoms/components/Icon/icons/check.vue +3 -3
  114. package/src/atoms/components/Icon/icons/chevron-down.vue +7 -7
  115. package/src/atoms/components/Icon/icons/chevron-left.vue +7 -7
  116. package/src/atoms/components/Icon/icons/chevron-right-wide.vue +3 -3
  117. package/src/atoms/components/Icon/icons/chevron-right.vue +3 -3
  118. package/src/atoms/components/Icon/icons/chevron-up.vue +7 -7
  119. package/src/atoms/components/Icon/icons/clipboard-check.vue +6 -6
  120. package/src/atoms/components/Icon/icons/close.vue +6 -6
  121. package/src/atoms/components/Icon/icons/community.vue +5 -5
  122. package/src/atoms/components/Icon/icons/contact-message.vue +10 -10
  123. package/src/atoms/components/Icon/icons/content.vue +7 -7
  124. package/src/atoms/components/Icon/icons/copy.vue +10 -10
  125. package/src/atoms/components/Icon/icons/crazy-domains/filter.vue +6 -6
  126. package/src/atoms/components/Icon/icons/crazy-domains/globe.vue +6 -6
  127. package/src/atoms/components/Icon/icons/crazy-domains/home.vue +6 -6
  128. package/src/atoms/components/Icon/icons/crazy-domains/social-facebook.vue +6 -6
  129. package/src/atoms/components/Icon/icons/crazy-domains/social-google.vue +6 -6
  130. package/src/atoms/components/Icon/icons/crazy-domains/social-instagram.vue +6 -6
  131. package/src/atoms/components/Icon/icons/crazy-domains/social-twitter.vue +6 -6
  132. package/src/atoms/components/Icon/icons/crazy-domains/social-youtube.vue +6 -6
  133. package/src/atoms/components/Icon/icons/crop.vue +6 -6
  134. package/src/atoms/components/Icon/icons/crown-alt.vue +5 -5
  135. package/src/atoms/components/Icon/icons/crown.vue +6 -6
  136. package/src/atoms/components/Icon/icons/delete.vue +8 -8
  137. package/src/atoms/components/Icon/icons/designs.vue +6 -6
  138. package/src/atoms/components/Icon/icons/desktop.vue +7 -7
  139. package/src/atoms/components/Icon/icons/digital-business-card-filled.vue +8 -8
  140. package/src/atoms/components/Icon/icons/donate.vue +6 -6
  141. package/src/atoms/components/Icon/icons/download.vue +5 -5
  142. package/src/atoms/components/Icon/icons/duplicate.vue +6 -6
  143. package/src/atoms/components/Icon/icons/edit-line.vue +10 -10
  144. package/src/atoms/components/Icon/icons/edit.vue +6 -6
  145. package/src/atoms/components/Icon/icons/ellipsis.vue +6 -6
  146. package/src/atoms/components/Icon/icons/envelope-email.vue +9 -9
  147. package/src/atoms/components/Icon/icons/error.vue +8 -8
  148. package/src/atoms/components/Icon/icons/eye-crossed.vue +7 -7
  149. package/src/atoms/components/Icon/icons/eye-open.vue +11 -11
  150. package/src/atoms/components/Icon/icons/fees.vue +6 -6
  151. package/src/atoms/components/Icon/icons/file-empty.vue +7 -7
  152. package/src/atoms/components/Icon/icons/file.vue +7 -7
  153. package/src/atoms/components/Icon/icons/filter.vue +7 -7
  154. package/src/atoms/components/Icon/icons/filters.vue +6 -6
  155. package/src/atoms/components/Icon/icons/flag.vue +6 -6
  156. package/src/atoms/components/Icon/icons/flip-horizontal.vue +7 -7
  157. package/src/atoms/components/Icon/icons/flip-vertical.vue +7 -7
  158. package/src/atoms/components/Icon/icons/folder.vue +6 -6
  159. package/src/atoms/components/Icon/icons/font.vue +7 -7
  160. package/src/atoms/components/Icon/icons/footer-centered.vue +7 -7
  161. package/src/atoms/components/Icon/icons/footer-left.vue +7 -7
  162. package/src/atoms/components/Icon/icons/form-message.vue +6 -6
  163. package/src/atoms/components/Icon/icons/form.vue +5 -5
  164. package/src/atoms/components/Icon/icons/fullscreen-exit.vue +5 -5
  165. package/src/atoms/components/Icon/icons/fullscreen.vue +5 -5
  166. package/src/atoms/components/Icon/icons/globe.vue +6 -6
  167. package/src/atoms/components/Icon/icons/godaddy/logo.vue +5 -5
  168. package/src/atoms/components/Icon/icons/group.vue +6 -6
  169. package/src/atoms/components/Icon/icons/hamburger.vue +7 -7
  170. package/src/atoms/components/Icon/icons/headphones.vue +7 -7
  171. package/src/atoms/components/Icon/icons/home-outline.vue +6 -6
  172. package/src/atoms/components/Icon/icons/home.vue +7 -7
  173. package/src/atoms/components/Icon/icons/icon-style-circle-bg.vue +22 -22
  174. package/src/atoms/components/Icon/icons/icon-style-no-bg.vue +16 -16
  175. package/src/atoms/components/Icon/icons/icon-style-square-bg.vue +22 -22
  176. package/src/atoms/components/Icon/icons/image-gallery-carousel.vue +7 -7
  177. package/src/atoms/components/Icon/icons/image-gallery-grid.vue +7 -7
  178. package/src/atoms/components/Icon/icons/image-gallery-masonry.vue +6 -6
  179. package/src/atoms/components/Icon/icons/image.vue +7 -7
  180. package/src/atoms/components/Icon/icons/images-gallery.vue +5 -5
  181. package/src/atoms/components/Icon/icons/images.vue +7 -7
  182. package/src/atoms/components/Icon/icons/info.vue +9 -9
  183. package/src/atoms/components/Icon/icons/jobs.vue +8 -8
  184. package/src/atoms/components/Icon/icons/layer-bring-front.vue +6 -6
  185. package/src/atoms/components/Icon/icons/layer-send-back.vue +6 -6
  186. package/src/atoms/components/Icon/icons/layer.vue +6 -6
  187. package/src/atoms/components/Icon/icons/layout/display-style-about-1.vue +20 -20
  188. package/src/atoms/components/Icon/icons/layout/display-style-about-2.vue +20 -20
  189. package/src/atoms/components/Icon/icons/layout/display-style-about-3.vue +20 -20
  190. package/src/atoms/components/Icon/icons/layout/display-style-about-4.vue +32 -32
  191. package/src/atoms/components/Icon/icons/layout/display-style-about-5.vue +27 -27
  192. package/src/atoms/components/Icon/icons/layout/display-style-about-6.vue +27 -27
  193. package/src/atoms/components/Icon/icons/layout/display-style-banner-1.vue +20 -20
  194. package/src/atoms/components/Icon/icons/layout/display-style-banner-2.vue +20 -20
  195. package/src/atoms/components/Icon/icons/layout/display-style-banner-3.vue +20 -20
  196. package/src/atoms/components/Icon/icons/layout/display-style-banner-4.vue +20 -20
  197. package/src/atoms/components/Icon/icons/layout/display-style-banner-5.vue +20 -20
  198. package/src/atoms/components/Icon/icons/layout/display-style-banner-6.vue +27 -27
  199. package/src/atoms/components/Icon/icons/layout/display-style-banner-7.vue +27 -27
  200. package/src/atoms/components/Icon/icons/layout/display-style-banner-8.vue +20 -20
  201. package/src/atoms/components/Icon/icons/layout/display-style-banner-9.vue +20 -20
  202. package/src/atoms/components/Icon/icons/layout/display-style-contact-1.vue +24 -24
  203. package/src/atoms/components/Icon/icons/layout/display-style-contact-2.vue +24 -24
  204. package/src/atoms/components/Icon/icons/layout/display-style-contact-4.vue +24 -24
  205. package/src/atoms/components/Icon/icons/layout/display-style-contact-5.vue +39 -39
  206. package/src/atoms/components/Icon/icons/layout/display-style-contact-6.vue +39 -39
  207. package/src/atoms/components/Icon/icons/layout/footer/display-style-1.vue +7 -7
  208. package/src/atoms/components/Icon/icons/layout/footer/display-style-2.vue +16 -16
  209. package/src/atoms/components/Icon/icons/layout/header/desktop-hamburger-display-style-1.vue +17 -17
  210. package/src/atoms/components/Icon/icons/layout/header/desktop-hamburger-display-style-2.vue +17 -17
  211. package/src/atoms/components/Icon/icons/layout/header/desktop-tab-display-style-1.vue +17 -17
  212. package/src/atoms/components/Icon/icons/layout/header/desktop-tab-display-style-2.vue +17 -17
  213. package/src/atoms/components/Icon/icons/layout/header/desktop-tab-display-style-3.vue +13 -13
  214. package/src/atoms/components/Icon/icons/layout/header/desktop-tab-display-style-4.vue +13 -13
  215. package/src/atoms/components/Icon/icons/layout/header/desktop-tab-display-style-5.vue +17 -17
  216. package/src/atoms/components/Icon/icons/layout/header/desktop-tab-display-style-6.vue +17 -17
  217. package/src/atoms/components/Icon/icons/layout/header/hamburger-display-style-no-logo-1.vue +16 -16
  218. package/src/atoms/components/Icon/icons/layout/header/hamburger-display-style-no-logo-2.vue +16 -16
  219. package/src/atoms/components/Icon/icons/layout/header/hamburger-display-style-no-logo-3.vue +16 -16
  220. package/src/atoms/components/Icon/icons/layout/header/mobile-hamburger-display-style-1.vue +17 -17
  221. package/src/atoms/components/Icon/icons/layout/header/mobile-hamburger-display-style-2.vue +17 -17
  222. package/src/atoms/components/Icon/icons/layout/header/mobile-hamburger-display-style-3.vue +17 -17
  223. package/src/atoms/components/Icon/icons/layout/header/mobile-hamburger-display-style-4.vue +21 -21
  224. package/src/atoms/components/Icon/icons/layout/header/mobile-tab-display-style-1.vue +17 -17
  225. package/src/atoms/components/Icon/icons/layout/header/mobile-tab-display-style-2.vue +17 -17
  226. package/src/atoms/components/Icon/icons/layout/header/tab-display-style-no-logo-1.vue +16 -16
  227. package/src/atoms/components/Icon/icons/layout/header/tab-display-style-no-logo-2.vue +16 -16
  228. package/src/atoms/components/Icon/icons/layout/header/tab-display-style-no-logo-3.vue +16 -16
  229. package/src/atoms/components/Icon/icons/layout/layout-icon-bottom-normal-text-center-normal.vue +7 -7
  230. package/src/atoms/components/Icon/icons/layout/layout-icon-bottom-normal-text-center-small.vue +7 -7
  231. package/src/atoms/components/Icon/icons/layout/layout-icon-bottom-small-text-center-normal.vue +7 -7
  232. package/src/atoms/components/Icon/icons/layout/layout-icon-center-normal-curved-text-bottom.vue +11 -11
  233. package/src/atoms/components/Icon/icons/layout/layout-icon-center-normal-curved-text-circle.vue +10 -10
  234. package/src/atoms/components/Icon/icons/layout/layout-icon-center-normal-curved-text-top.vue +11 -11
  235. package/src/atoms/components/Icon/icons/layout/layout-icon-left-normal-text-center-normal.vue +7 -7
  236. package/src/atoms/components/Icon/icons/layout/layout-icon-left-normal-text-justify-normal.vue +7 -7
  237. package/src/atoms/components/Icon/icons/layout/layout-icon-left-normal-text-left-normal.vue +7 -7
  238. package/src/atoms/components/Icon/icons/layout/layout-icon-left-small-text-left-normal.vue +7 -7
  239. package/src/atoms/components/Icon/icons/layout/layout-icon-right-normal-text-center-normal.vue +7 -7
  240. package/src/atoms/components/Icon/icons/layout/layout-icon-right-normal-text-justify-normal.vue +7 -7
  241. package/src/atoms/components/Icon/icons/layout/layout-icon-right-normal-text-right-normal.vue +7 -7
  242. package/src/atoms/components/Icon/icons/layout/layout-icon-right-small-text-right-normal.vue +7 -7
  243. package/src/atoms/components/Icon/icons/layout/layout-icon-top-normal-text-center-normal.vue +7 -7
  244. package/src/atoms/components/Icon/icons/layout/layout-icon-top-normal-text-center-small.vue +7 -7
  245. package/src/atoms/components/Icon/icons/layout/layout-icon-top-normal-text-justify-normal.vue +7 -7
  246. package/src/atoms/components/Icon/icons/layout/layout-icon-top-small-text-center-normal.vue +7 -7
  247. package/src/atoms/components/Icon/icons/layout/nav/hamburger/display-style-1.vue +16 -16
  248. package/src/atoms/components/Icon/icons/layout/nav/hamburger/display-style-2.vue +10 -10
  249. package/src/atoms/components/Icon/icons/layout/nav/hamburger/display-style-3.vue +10 -10
  250. package/src/atoms/components/Icon/icons/layout/nav/hamburger/display-style-4.vue +23 -23
  251. package/src/atoms/components/Icon/icons/layout/nav/tab/display-style-1.vue +16 -16
  252. package/src/atoms/components/Icon/icons/layout/nav/tab/display-style-2.vue +7 -7
  253. package/src/atoms/components/Icon/icons/letterhead-filled.vue +5 -5
  254. package/src/atoms/components/Icon/icons/lightning.vue +7 -7
  255. package/src/atoms/components/Icon/icons/link-in-bio-filled.vue +8 -8
  256. package/src/atoms/components/Icon/icons/link.vue +6 -6
  257. package/src/atoms/components/Icon/icons/location.vue +6 -6
  258. package/src/atoms/components/Icon/icons/lock.vue +6 -6
  259. package/src/atoms/components/Icon/icons/logo.vue +7 -7
  260. package/src/atoms/components/Icon/icons/mac-command.vue +7 -7
  261. package/src/atoms/components/Icon/icons/maker/align-center.vue +7 -7
  262. package/src/atoms/components/Icon/icons/maker/align-justify.vue +7 -7
  263. package/src/atoms/components/Icon/icons/maker/align-left.vue +7 -7
  264. package/src/atoms/components/Icon/icons/maker/align-right.vue +7 -7
  265. package/src/atoms/components/Icon/icons/maker/animate.vue +7 -7
  266. package/src/atoms/components/Icon/icons/maker/bold.vue +7 -7
  267. package/src/atoms/components/Icon/icons/maker/custom-landscape.vue +5 -5
  268. package/src/atoms/components/Icon/icons/maker/email-symbol.vue +5 -5
  269. package/src/atoms/components/Icon/icons/maker/email.vue +5 -5
  270. package/src/atoms/components/Icon/icons/maker/eraser.vue +5 -5
  271. package/src/atoms/components/Icon/icons/maker/etsy.vue +5 -5
  272. package/src/atoms/components/Icon/icons/maker/facebook.vue +5 -5
  273. package/src/atoms/components/Icon/icons/maker/favicon.vue +7 -7
  274. package/src/atoms/components/Icon/icons/maker/flyer.vue +7 -7
  275. package/src/atoms/components/Icon/icons/maker/gift-certificate.vue +5 -5
  276. package/src/atoms/components/Icon/icons/maker/globe.vue +5 -5
  277. package/src/atoms/components/Icon/icons/maker/image.vue +7 -7
  278. package/src/atoms/components/Icon/icons/maker/instagram.vue +7 -7
  279. package/src/atoms/components/Icon/icons/maker/invitation.vue +5 -5
  280. package/src/atoms/components/Icon/icons/maker/invoice.vue +5 -5
  281. package/src/atoms/components/Icon/icons/maker/italic.vue +7 -7
  282. package/src/atoms/components/Icon/icons/maker/link.vue +7 -7
  283. package/src/atoms/components/Icon/icons/maker/linkedin.vue +7 -7
  284. package/src/atoms/components/Icon/icons/maker/menu.vue +5 -5
  285. package/src/atoms/components/Icon/icons/maker/pause.vue +5 -5
  286. package/src/atoms/components/Icon/icons/maker/phone.vue +5 -5
  287. package/src/atoms/components/Icon/icons/maker/pinterest.vue +5 -5
  288. package/src/atoms/components/Icon/icons/maker/play.vue +5 -5
  289. package/src/atoms/components/Icon/icons/maker/postcard.vue +5 -5
  290. package/src/atoms/components/Icon/icons/maker/poster.vue +7 -7
  291. package/src/atoms/components/Icon/icons/maker/profile.vue +5 -5
  292. package/src/atoms/components/Icon/icons/maker/qrcode.vue +5 -5
  293. package/src/atoms/components/Icon/icons/maker/snapchat.vue +5 -5
  294. package/src/atoms/components/Icon/icons/maker/soundcloud.vue +7 -7
  295. package/src/atoms/components/Icon/icons/maker/spacing.vue +18 -18
  296. package/src/atoms/components/Icon/icons/maker/strikethrough.vue +7 -7
  297. package/src/atoms/components/Icon/icons/maker/t-shirt.vue +32 -32
  298. package/src/atoms/components/Icon/icons/maker/text-background-color.vue +12 -12
  299. package/src/atoms/components/Icon/icons/maker/text-color.vue +14 -14
  300. package/src/atoms/components/Icon/icons/maker/text.vue +7 -7
  301. package/src/atoms/components/Icon/icons/maker/thankyou-card.vue +5 -5
  302. package/src/atoms/components/Icon/icons/maker/tiktok.vue +5 -5
  303. package/src/atoms/components/Icon/icons/maker/tumblr.vue +5 -5
  304. package/src/atoms/components/Icon/icons/maker/twitch.vue +7 -7
  305. package/src/atoms/components/Icon/icons/maker/twitter.vue +5 -5
  306. package/src/atoms/components/Icon/icons/maker/underline.vue +7 -7
  307. package/src/atoms/components/Icon/icons/maker/uppercase.vue +14 -14
  308. package/src/atoms/components/Icon/icons/maker/video.vue +5 -5
  309. package/src/atoms/components/Icon/icons/maker/whatsapp.vue +7 -7
  310. package/src/atoms/components/Icon/icons/maker/youtube.vue +5 -5
  311. package/src/atoms/components/Icon/icons/maker/zoom.vue +5 -5
  312. package/src/atoms/components/Icon/icons/map.vue +6 -6
  313. package/src/atoms/components/Icon/icons/media.vue +3 -3
  314. package/src/atoms/components/Icon/icons/message.vue +6 -6
  315. package/src/atoms/components/Icon/icons/minus-circle-light.vue +7 -7
  316. package/src/atoms/components/Icon/icons/minus.vue +3 -3
  317. package/src/atoms/components/Icon/icons/mobile.vue +5 -5
  318. package/src/atoms/components/Icon/icons/mug.vue +29 -29
  319. package/src/atoms/components/Icon/icons/opacity.vue +6 -6
  320. package/src/atoms/components/Icon/icons/other.vue +7 -7
  321. package/src/atoms/components/Icon/icons/page-blank.vue +6 -6
  322. package/src/atoms/components/Icon/icons/page-buttons.vue +8 -8
  323. package/src/atoms/components/Icon/icons/page-hamburger.vue +9 -9
  324. package/src/atoms/components/Icon/icons/page-tabs.vue +9 -9
  325. package/src/atoms/components/Icon/icons/pages.vue +6 -6
  326. package/src/atoms/components/Icon/icons/palette-outline.vue +7 -7
  327. package/src/atoms/components/Icon/icons/palette.vue +6 -6
  328. package/src/atoms/components/Icon/icons/pause.vue +5 -5
  329. package/src/atoms/components/Icon/icons/payment.vue +8 -8
  330. package/src/atoms/components/Icon/icons/payments-featured.vue +6 -6
  331. package/src/atoms/components/Icon/icons/payments-textonly.vue +8 -8
  332. package/src/atoms/components/Icon/icons/payments-thumbnail.vue +9 -9
  333. package/src/atoms/components/Icon/icons/pen-outline.vue +7 -7
  334. package/src/atoms/components/Icon/icons/pen-sparkle.vue +17 -17
  335. package/src/atoms/components/Icon/icons/pen-tool.vue +7 -7
  336. package/src/atoms/components/Icon/icons/pen.vue +7 -7
  337. package/src/atoms/components/Icon/icons/phone.vue +6 -6
  338. package/src/atoms/components/Icon/icons/plus-circle-light.vue +8 -8
  339. package/src/atoms/components/Icon/icons/plus-circle.vue +7 -7
  340. package/src/atoms/components/Icon/icons/plus.vue +3 -3
  341. package/src/atoms/components/Icon/icons/poll.vue +3 -3
  342. package/src/atoms/components/Icon/icons/portfolio.vue +10 -10
  343. package/src/atoms/components/Icon/icons/premium-content.vue +8 -8
  344. package/src/atoms/components/Icon/icons/preview.vue +6 -6
  345. package/src/atoms/components/Icon/icons/printing.vue +6 -6
  346. package/src/atoms/components/Icon/icons/processing.vue +5 -5
  347. package/src/atoms/components/Icon/icons/question-alt.vue +20 -20
  348. package/src/atoms/components/Icon/icons/question.vue +11 -11
  349. package/src/atoms/components/Icon/icons/ratio-1-1.vue +3 -3
  350. package/src/atoms/components/Icon/icons/ratio-16-9.vue +1 -1
  351. package/src/atoms/components/Icon/icons/ratio-2-3.vue +3 -3
  352. package/src/atoms/components/Icon/icons/ratio-3-2.vue +3 -3
  353. package/src/atoms/components/Icon/icons/ratio-3-4.vue +3 -3
  354. package/src/atoms/components/Icon/icons/ratio-4-3.vue +3 -3
  355. package/src/atoms/components/Icon/icons/ratio-9-16.vue +3 -3
  356. package/src/atoms/components/Icon/icons/ratio-circle.vue +8 -8
  357. package/src/atoms/components/Icon/icons/ratio-original.vue +11 -11
  358. package/src/atoms/components/Icon/icons/redo.vue +6 -6
  359. package/src/atoms/components/Icon/icons/reload.vue +6 -6
  360. package/src/atoms/components/Icon/icons/reorderable.vue +5 -5
  361. package/src/atoms/components/Icon/icons/request-payment.vue +6 -6
  362. package/src/atoms/components/Icon/icons/reset.vue +6 -6
  363. package/src/atoms/components/Icon/icons/resize.vue +6 -6
  364. package/src/atoms/components/Icon/icons/search.vue +11 -11
  365. package/src/atoms/components/Icon/icons/secure.vue +7 -7
  366. package/src/atoms/components/Icon/icons/send.vue +12 -12
  367. package/src/atoms/components/Icon/icons/services.vue +7 -7
  368. package/src/atoms/components/Icon/icons/settings.vue +7 -7
  369. package/src/atoms/components/Icon/icons/shape.vue +5 -5
  370. package/src/atoms/components/Icon/icons/share.vue +9 -9
  371. package/src/atoms/components/Icon/icons/shield-tick.vue +6 -6
  372. package/src/atoms/components/Icon/icons/shop.vue +5 -5
  373. package/src/atoms/components/Icon/icons/sms.vue +5 -5
  374. package/src/atoms/components/Icon/icons/social-facebook-color.vue +9 -9
  375. package/src/atoms/components/Icon/icons/social-facebook.vue +5 -5
  376. package/src/atoms/components/Icon/icons/social-google.vue +5 -5
  377. package/src/atoms/components/Icon/icons/social-instagram-color.vue +24 -24
  378. package/src/atoms/components/Icon/icons/social-linkedin-color.vue +9 -9
  379. package/src/atoms/components/Icon/icons/social-share.vue +7 -7
  380. package/src/atoms/components/Icon/icons/social-twitter-color.vue +9 -9
  381. package/src/atoms/components/Icon/icons/sparkle-square.vue +22 -22
  382. package/src/atoms/components/Icon/icons/star-filled.vue +6 -6
  383. package/src/atoms/components/Icon/icons/star-hollow.vue +6 -6
  384. package/src/atoms/components/Icon/icons/sticker.vue +28 -28
  385. package/src/atoms/components/Icon/icons/stop.vue +5 -5
  386. package/src/atoms/components/Icon/icons/styles.vue +5 -5
  387. package/src/atoms/components/Icon/icons/submit.vue +5 -5
  388. package/src/atoms/components/Icon/icons/templates.vue +7 -7
  389. package/src/atoms/components/Icon/icons/text-image-center.vue +6 -6
  390. package/src/atoms/components/Icon/icons/text-image-justified.vue +7 -7
  391. package/src/atoms/components/Icon/icons/text-image-left.vue +9 -9
  392. package/src/atoms/components/Icon/icons/text-image-only.vue +5 -5
  393. package/src/atoms/components/Icon/icons/text-image-right.vue +9 -9
  394. package/src/atoms/components/Icon/icons/text-image.vue +13 -13
  395. package/src/atoms/components/Icon/icons/time.vue +8 -8
  396. package/src/atoms/components/Icon/icons/tooltip-bottom.vue +5 -5
  397. package/src/atoms/components/Icon/icons/tooltip-left.vue +5 -5
  398. package/src/atoms/components/Icon/icons/tooltip-right.vue +5 -5
  399. package/src/atoms/components/Icon/icons/tooltip-top.vue +5 -5
  400. package/src/atoms/components/Icon/icons/undo.vue +6 -6
  401. package/src/atoms/components/Icon/icons/upgrade-alt.vue +7 -7
  402. package/src/atoms/components/Icon/icons/upgrade.vue +9 -9
  403. package/src/atoms/components/Icon/icons/upload-arrow.vue +5 -5
  404. package/src/atoms/components/Icon/icons/upload.vue +5 -5
  405. package/src/atoms/components/Icon/icons/user-accounts.vue +5 -5
  406. package/src/atoms/components/Icon/icons/user-headset.vue +50 -50
  407. package/src/atoms/components/Icon/icons/volume-muted.vue +5 -5
  408. package/src/atoms/components/Icon/icons/volume.vue +5 -5
  409. package/src/atoms/components/Icon/icons/watchlist-filled.vue +14 -14
  410. package/src/atoms/components/Icon/icons/watchlist-hollow-alt.vue +14 -14
  411. package/src/atoms/components/Icon/icons/watchlist-hollow.vue +6 -6
  412. package/src/atoms/components/Icon/icons/website-filled.vue +5 -5
  413. package/src/atoms/components/Icon/icons/website.vue +6 -6
  414. package/src/atoms/components/Icon/icons/websites/upgrade-to-add-page.vue +50 -50
  415. package/src/atoms/components/Icon/icons/websites/upgrade-to-contact-form.vue +82 -82
  416. package/src/atoms/components/Icon/icons/websites/upgrade-to-google-ad.vue +92 -92
  417. package/src/atoms/components/Icon/icons/websites/upgrade-to-maps.vue +40 -40
  418. package/src/atoms/components/Icon/icons/websites/upgrade-to-publish.vue +107 -107
  419. package/src/atoms/components/Icon/icons/websites/upgrade-to-remove-watermark.vue +74 -74
  420. package/src/atoms/components/Icon/icons/websites/upgrade-to-videos.vue +16 -16
  421. package/src/atoms/components/Icon/icons/wholesale.vue +6 -6
  422. package/src/atoms/components/Icon/icons/zoom-in.vue +5 -5
  423. package/src/atoms/components/Icon/icons/zoom-out.vue +5 -5
  424. package/src/atoms/components/Icon/icons/zoom.vue +11 -11
  425. package/src/atoms/components/Loader/Loader.vue +15 -15
  426. package/src/atoms/components/Masonry/Masonry.stories.js +48 -48
  427. package/src/atoms/components/Masonry/Masonry.vue +48 -48
  428. package/src/atoms/components/Masonry/fixtures.js +589 -589
  429. package/src/atoms/components/Modal/HashRouteModal.stories.js +68 -68
  430. package/src/atoms/components/Modal/HashRouteModal.vue +120 -120
  431. package/src/atoms/components/Modal/Modal.stories.js +293 -293
  432. package/src/atoms/components/Modal/Modal.vue +263 -263
  433. package/src/atoms/components/Notice/Notice.stories.js +174 -174
  434. package/src/atoms/components/Notice/Notice.vue +71 -71
  435. package/src/atoms/components/NumberStepper/NumberStepper.stories.js +55 -55
  436. package/src/atoms/components/NumberStepper/NumberStepper.vue +340 -340
  437. package/src/atoms/components/Picture/Picture.stories.js +90 -90
  438. package/src/atoms/components/Picture/Picture.vue +84 -84
  439. package/src/atoms/components/Picture/picture.fixtures.js +35 -35
  440. package/src/atoms/components/Pill/Pill.stories.js +20 -20
  441. package/src/atoms/components/Pill/Pill.vue +8 -8
  442. package/src/atoms/components/PillBar/PillBar.fixtures.js +941 -941
  443. package/src/atoms/components/PillBar/PillBar.stories.js +39 -39
  444. package/src/atoms/components/PillBar/PillBar.vue +62 -62
  445. package/src/atoms/components/Price/Price.fixtures.js +85 -85
  446. package/src/atoms/components/Price/Price.stories.js +313 -313
  447. package/src/atoms/components/Price/Price.vue +135 -135
  448. package/src/atoms/components/Price/i18n/price.de-DE.json +5 -5
  449. package/src/atoms/components/Price/i18n/price.es-ES.json +5 -5
  450. package/src/atoms/components/Price/i18n/price.fr-CA.json +5 -5
  451. package/src/atoms/components/Price/i18n/price.fr-FR.json +5 -5
  452. package/src/atoms/components/Price/i18n/price.json +5 -5
  453. package/src/atoms/components/Price/i18n/price.pt-BR.json +5 -5
  454. package/src/atoms/components/Price/i18n/price.pt-PT.json +5 -5
  455. package/src/atoms/components/PromoCard/PromoCard.stories.ts +263 -263
  456. package/src/atoms/components/PromoCard/PromoCard.vue +83 -83
  457. package/src/atoms/components/SearchBar/SearchBar.stories.js +21 -21
  458. package/src/atoms/components/SearchBar/SearchBar.vue +51 -51
  459. package/src/atoms/components/Select/Select.stories.js +142 -142
  460. package/src/atoms/components/Select/Select.vue +619 -619
  461. package/src/atoms/components/Select/pointerMixin.js +99 -99
  462. package/src/atoms/components/Select/selectMixin.js +356 -356
  463. package/src/atoms/components/SparkleIcon/SparkleIcon.stories.js +386 -386
  464. package/src/atoms/components/SparkleIcon/SparkleIcon.vue +136 -136
  465. package/src/atoms/components/SparkleIcon/assets/animations/sparkle/state-01.svg +5 -5
  466. package/src/atoms/components/SparkleIcon/assets/animations/sparkle/state-02.svg +5 -5
  467. package/src/atoms/components/SparkleIcon/assets/animations/sparkle/state-03.svg +5 -5
  468. package/src/atoms/components/SparkleIcon/assets/animations/sparkle/state-04.svg +5 -5
  469. package/src/atoms/components/SparkleIcon/assets/animations/sparkle/state-05.svg +5 -5
  470. package/src/atoms/components/SparkleIcon/assets/animations/sparkle/state-06.svg +5 -5
  471. package/src/atoms/components/SparkleIcon/assets/animations/sparkle/state-07.svg +5 -5
  472. package/src/atoms/components/SparkleIcon/assets/animations/sparkle/state-08.svg +5 -5
  473. package/src/atoms/components/SparkleIcon/assets/animations/spinner/state-01.svg +5 -5
  474. package/src/atoms/components/SparkleIcon/assets/animations/spinner/state-02.svg +14 -14
  475. package/src/atoms/components/SparkleIcon/assets/animations/spinner/state-03.svg +14 -14
  476. package/src/atoms/components/SparkleIcon/assets/animations/spinner/state-04.svg +14 -14
  477. package/src/atoms/components/SparkleIcon/assets/animations/spinner/state-05.svg +14 -14
  478. package/src/atoms/components/SparkleIcon/assets/animations/spinner/state-06.svg +14 -14
  479. package/src/atoms/components/SparkleIcon/assets/animations/spinner/state-07.svg +14 -14
  480. package/src/atoms/components/SparkleIcon/assets/animations/spinner/state-08.svg +14 -14
  481. package/src/atoms/components/SparkleIcon/assets/sparkle.svg +3 -3
  482. package/src/atoms/components/SparkleIcon/index.ts +3 -3
  483. package/src/atoms/components/SparkleIcon/sparkle-paths.ts +54 -54
  484. package/src/atoms/components/SparkleIcon/sparkle-with-spinner-paths.ts +61 -61
  485. package/src/atoms/components/StarRating/StarRating.stories.js +50 -50
  486. package/src/atoms/components/StarRating/StarRating.vue +84 -84
  487. package/src/atoms/components/TabMenu/TabMenu.stories.js +54 -54
  488. package/src/atoms/components/TabMenu/TabMenu.vue +44 -44
  489. package/src/atoms/components/TextCopyField/TextCopyField.stories.js +68 -68
  490. package/src/atoms/components/TextCopyField/TextCopyField.vue +75 -75
  491. package/src/atoms/components/TextInput/TextInput.stories.js +232 -232
  492. package/src/atoms/components/TextInput/TextInput.vue +161 -161
  493. package/src/atoms/components/Textarea/Textarea.stories.js +209 -209
  494. package/src/atoms/components/Textarea/Textarea.vue +112 -112
  495. package/src/atoms/components/Toggle/Toggle.stories.js +176 -176
  496. package/src/atoms/components/Toggle/Toggle.vue +69 -69
  497. package/src/atoms/components/Tooltip/Tooltip.stories.js +493 -493
  498. package/src/atoms/components/Tooltip/Tooltip.vue +196 -196
  499. package/src/atoms/components/design-com/Icon/Icon.stories.js +94 -94
  500. package/src/atoms/components/design-com/Icon/Icon.vue +181 -181
  501. package/src/atoms/components/design-com/Icon/icons/ai.vue +5 -5
  502. package/src/atoms/components/design-com/Icon/icons/award.vue +7 -7
  503. package/src/atoms/components/design-com/Icon/icons/badge.vue +7 -7
  504. package/src/atoms/components/design-com/Icon/icons/briefcase.vue +6 -6
  505. package/src/atoms/components/design-com/Icon/icons/browser.vue +7 -7
  506. package/src/atoms/components/design-com/Icon/icons/bulb.vue +7 -7
  507. package/src/atoms/components/design-com/Icon/icons/card-vertical.vue +8 -8
  508. package/src/atoms/components/design-com/Icon/icons/card.vue +6 -6
  509. package/src/atoms/components/design-com/Icon/icons/check-circle-light.vue +7 -7
  510. package/src/atoms/components/design-com/Icon/icons/chevron-down.vue +7 -7
  511. package/src/atoms/components/design-com/Icon/icons/chevron-left.vue +7 -7
  512. package/src/atoms/components/design-com/Icon/icons/chevron-right.vue +3 -3
  513. package/src/atoms/components/design-com/Icon/icons/chevron-up.vue +7 -7
  514. package/src/atoms/components/design-com/Icon/icons/diamond.vue +7 -7
  515. package/src/atoms/components/design-com/Icon/icons/download.vue +7 -7
  516. package/src/atoms/components/design-com/Icon/icons/file-empty.vue +7 -7
  517. package/src/atoms/components/design-com/Icon/icons/file.vue +7 -7
  518. package/src/atoms/components/design-com/Icon/icons/filter.vue +7 -7
  519. package/src/atoms/components/design-com/Icon/icons/folder.vue +5 -5
  520. package/src/atoms/components/design-com/Icon/icons/font.vue +7 -7
  521. package/src/atoms/components/design-com/Icon/icons/headphones.vue +7 -7
  522. package/src/atoms/components/design-com/Icon/icons/heart.vue +7 -7
  523. package/src/atoms/components/design-com/Icon/icons/image.vue +7 -7
  524. package/src/atoms/components/design-com/Icon/icons/lightning.vue +7 -7
  525. package/src/atoms/components/design-com/Icon/icons/logo.vue +7 -7
  526. package/src/atoms/components/design-com/Icon/icons/minus-circle-light.vue +7 -7
  527. package/src/atoms/components/design-com/Icon/icons/plus-circle-light.vue +8 -8
  528. package/src/atoms/components/design-com/Icon/icons/printing.vue +5 -5
  529. package/src/atoms/components/design-com/Icon/icons/question-circle-filled.vue +7 -7
  530. package/src/atoms/components/design-com/Icon/icons/search.vue +7 -7
  531. package/src/atoms/components/design-com/Icon/icons/shield-tick.vue +5 -5
  532. package/src/atoms/components/design-com/Icon/icons/star-filled.vue +6 -6
  533. package/src/atoms/components/design-com/Icon/icons/star-hollow.vue +6 -6
  534. package/src/atoms/components/design-com/Icon/icons/users.vue +7 -7
  535. package/src/atoms/constants/constants.ts +6 -6
  536. package/src/atoms/mixin/hash-router-mixin.js +68 -68
  537. package/src/atoms/thirdparty-components/VueMasonryWall/VueMasonryWall.vue +280 -280
  538. package/src/atoms/thirdparty-components/VueMasonryWall/maxBy.js +50 -50
  539. package/src/bundleTranslation.js +86 -86
  540. package/src/bundles/bundled-translations.de-DE.json +49 -7
  541. package/src/bundles/bundled-translations.es-ES.json +49 -7
  542. package/src/bundles/bundled-translations.fr-CA.json +49 -7
  543. package/src/bundles/bundled-translations.fr-FR.json +49 -7
  544. package/src/bundles/bundled-translations.json +49 -7
  545. package/src/bundles/bundled-translations.pt-BR.json +49 -7
  546. package/src/bundles/bundled-translations.pt-PT.json +49 -7
  547. package/src/css/tailwind.css +3 -3
  548. package/src/experiences/clients/brand-crowd-api.client.js +124 -124
  549. package/src/experiences/clients/brand-page-api.client.js +62 -62
  550. package/src/experiences/components/AuthFlow/Auth.fixtures.js +4 -4
  551. package/src/experiences/components/AuthFlow/Auth.stories.js +345 -345
  552. package/src/experiences/components/AuthFlow/AuthCrazyDomains.stories.js +60 -60
  553. package/src/experiences/components/AuthFlow/AuthLegal.vue +108 -108
  554. package/src/experiences/components/AuthFlow/AuthModal.vue +39 -39
  555. package/src/experiences/components/AuthFlow/ForgotPassword.vue +222 -222
  556. package/src/experiences/components/AuthFlow/ForgotPasswordModal.vue +68 -68
  557. package/src/experiences/components/AuthFlow/ResetPassword.vue +179 -179
  558. package/src/experiences/components/AuthFlow/ResetPasswordModal.vue +64 -64
  559. package/src/experiences/components/AuthFlow/ResetPasswordSuccessModal.vue +56 -56
  560. package/src/experiences/components/AuthFlow/SignIn.vue +472 -472
  561. package/src/experiences/components/AuthFlow/SignUp.vue +278 -278
  562. package/src/experiences/components/AuthFlow/SignUpModal.vue +90 -90
  563. package/src/experiences/components/AuthFlow/SocialSignIn.vue +177 -177
  564. package/src/experiences/components/AuthFlow/SocialSignInButton.vue +74 -74
  565. package/src/experiences/components/AuthFlow/SubmissionButton.vue +56 -56
  566. package/src/experiences/components/PaymentConfigList/PaymentConfig.mixin.js +118 -118
  567. package/src/experiences/components/PaymentConfigList/PaymentConfigDeleteConfigModal.vue +108 -108
  568. package/src/experiences/components/PaymentConfigList/PaymentConfigDropdown.vue +175 -175
  569. package/src/experiences/components/PaymentConfigList/PaymentConfigList.stories.js +234 -234
  570. package/src/experiences/components/PaymentConfigList/PaymentConfigList.vue +136 -136
  571. package/src/experiences/components/PaymentConfigList/i18n/shared-payment-config.de-DE.json +11 -11
  572. package/src/experiences/components/PaymentConfigList/i18n/shared-payment-config.es-ES.json +11 -11
  573. package/src/experiences/components/PaymentConfigList/i18n/shared-payment-config.fr-CA.json +11 -11
  574. package/src/experiences/components/PaymentConfigList/i18n/shared-payment-config.fr-FR.json +11 -11
  575. package/src/experiences/components/PaymentConfigList/i18n/shared-payment-config.json +11 -11
  576. package/src/experiences/components/PaymentConfigList/i18n/shared-payment-config.pt-BR.json +11 -11
  577. package/src/experiences/components/PaymentConfigList/i18n/shared-payment-config.pt-PT.json +11 -11
  578. package/src/experiences/components/PublishBrandPageModal/PublishBrandPageCard.vue +119 -119
  579. package/src/experiences/components/PublishBrandPageModal/PublishBrandPageModal.stories.js +262 -262
  580. package/src/experiences/components/PublishBrandPageModal/__fixtures__/data.js +25 -25
  581. package/src/experiences/components/PublishBrandPageModal/i18n/publish-brand-page-modal.de-DE.json +26 -26
  582. package/src/experiences/components/PublishBrandPageModal/i18n/publish-brand-page-modal.es-ES.json +26 -26
  583. package/src/experiences/components/PublishBrandPageModal/i18n/publish-brand-page-modal.fr-CA.json +26 -26
  584. package/src/experiences/components/PublishBrandPageModal/i18n/publish-brand-page-modal.fr-FR.json +26 -26
  585. package/src/experiences/components/PublishBrandPageModal/i18n/publish-brand-page-modal.json +26 -26
  586. package/src/experiences/components/PublishBrandPageModal/i18n/publish-brand-page-modal.pt-BR.json +26 -26
  587. package/src/experiences/components/PublishBrandPageModal/i18n/publish-brand-page-modal.pt-PT.json +26 -26
  588. package/src/experiences/components/SellDomainNameList/SellDomainNameList.fixtures.js +32 -32
  589. package/src/experiences/components/SellDomainNameList/SellDomainNameList.vue +157 -157
  590. package/src/experiences/components/SellDomainNameList/i18n/sell-domain-name-list.de-DE.json +7 -7
  591. package/src/experiences/components/SellDomainNameList/i18n/sell-domain-name-list.es-ES.json +7 -7
  592. package/src/experiences/components/SellDomainNameList/i18n/sell-domain-name-list.fr-CA.json +7 -7
  593. package/src/experiences/components/SellDomainNameList/i18n/sell-domain-name-list.fr-FR.json +7 -7
  594. package/src/experiences/components/SellDomainNameList/i18n/sell-domain-name-list.json +7 -7
  595. package/src/experiences/components/SellDomainNameList/i18n/sell-domain-name-list.pt-BR.json +7 -7
  596. package/src/experiences/components/SellDomainNameList/i18n/sell-domain-name-list.pt-PT.json +7 -7
  597. package/src/experiences/components/SellDomainNameListModal/SellDomainNameListModal.stories.js +74 -74
  598. package/src/experiences/components/SellDomainNameListModal/SellDomainNameListModal.vue +128 -128
  599. package/src/experiences/components/SellDomainNameListModal/i18n/sell-domain-name-list-modal.de-DE.json +5 -5
  600. package/src/experiences/components/SellDomainNameListModal/i18n/sell-domain-name-list-modal.es-ES.json +5 -5
  601. package/src/experiences/components/SellDomainNameListModal/i18n/sell-domain-name-list-modal.fr-CA.json +5 -5
  602. package/src/experiences/components/SellDomainNameListModal/i18n/sell-domain-name-list-modal.fr-FR.json +5 -5
  603. package/src/experiences/components/SellDomainNameListModal/i18n/sell-domain-name-list-modal.json +5 -5
  604. package/src/experiences/components/SellDomainNameListModal/i18n/sell-domain-name-list-modal.pt-BR.json +5 -5
  605. package/src/experiences/components/SellDomainNameListModal/i18n/sell-domain-name-list-modal.pt-PT.json +5 -5
  606. package/src/experiences/components/SellDomainNameModalApplication/SellDomainNameModalApplication.vue +222 -222
  607. package/src/experiences/components/SellDomainNameModalApplication/i18n/sell-domain-name-modal-application.de-DE.json +5 -5
  608. package/src/experiences/components/SellDomainNameModalApplication/i18n/sell-domain-name-modal-application.es-ES.json +5 -5
  609. package/src/experiences/components/SellDomainNameModalApplication/i18n/sell-domain-name-modal-application.fr-CA.json +5 -5
  610. package/src/experiences/components/SellDomainNameModalApplication/i18n/sell-domain-name-modal-application.fr-FR.json +5 -5
  611. package/src/experiences/components/SellDomainNameModalApplication/i18n/sell-domain-name-modal-application.json +5 -5
  612. package/src/experiences/components/SellDomainNameModalApplication/i18n/sell-domain-name-modal-application.pt-BR.json +5 -5
  613. package/src/experiences/components/SellDomainNameModalApplication/i18n/sell-domain-name-modal-application.pt-PT.json +5 -5
  614. package/src/experiences/components/SellDomainNameSearch/i18n/sell-domain-name-search.de-DE.json +7 -7
  615. package/src/experiences/components/SellDomainNameSearch/i18n/sell-domain-name-search.es-ES.json +7 -7
  616. package/src/experiences/components/SellDomainNameSearch/i18n/sell-domain-name-search.fr-CA.json +7 -7
  617. package/src/experiences/components/SellDomainNameSearch/i18n/sell-domain-name-search.fr-FR.json +7 -7
  618. package/src/experiences/components/SellDomainNameSearch/i18n/sell-domain-name-search.json +7 -7
  619. package/src/experiences/components/SellDomainNameSearch/i18n/sell-domain-name-search.pt-BR.json +7 -7
  620. package/src/experiences/components/SellDomainNameSearch/i18n/sell-domain-name-search.pt-PT.json +7 -7
  621. package/src/experiences/components/SellDomainNameSearchResult/SellDomainNameListSearchResult.vue +167 -167
  622. package/src/experiences/components/SellDomainNameSearchResult/i18n/sell-domain-name-list-search-result.de-DE.json +5 -5
  623. package/src/experiences/components/SellDomainNameSearchResult/i18n/sell-domain-name-list-search-result.es-ES.json +5 -5
  624. package/src/experiences/components/SellDomainNameSearchResult/i18n/sell-domain-name-list-search-result.fr-CA.json +5 -5
  625. package/src/experiences/components/SellDomainNameSearchResult/i18n/sell-domain-name-list-search-result.fr-FR.json +5 -5
  626. package/src/experiences/components/SellDomainNameSearchResult/i18n/sell-domain-name-list-search-result.json +5 -5
  627. package/src/experiences/components/SellDomainNameSearchResult/i18n/sell-domain-name-list-search-result.pt-BR.json +5 -5
  628. package/src/experiences/components/SellDomainNameSearchResult/i18n/sell-domain-name-list-search-result.pt-PT.json +5 -5
  629. package/src/experiences/components/SellDomainNameSearchWithResults/SellDomainNameSearchWithResults.stories.js +38 -38
  630. package/src/experiences/components/SellDomainNameSearchWithResults/SellDomainNameSearchWithResults.vue +223 -223
  631. package/src/experiences/components/SellDomainNameWidget/SellDomainNameWidget.stories.js +40 -40
  632. package/src/experiences/components/SellDomainNameWidget/SellDomainNameWidget.vue +155 -155
  633. package/src/experiences/components/SellDomainNameWidget/i18n/sell-domain-name-widget.de-DE.json +7 -7
  634. package/src/experiences/components/SellDomainNameWidget/i18n/sell-domain-name-widget.es-ES.json +7 -7
  635. package/src/experiences/components/SellDomainNameWidget/i18n/sell-domain-name-widget.fr-CA.json +7 -7
  636. package/src/experiences/components/SellDomainNameWidget/i18n/sell-domain-name-widget.fr-FR.json +7 -7
  637. package/src/experiences/components/SellDomainNameWidget/i18n/sell-domain-name-widget.json +7 -7
  638. package/src/experiences/components/SellDomainNameWidget/i18n/sell-domain-name-widget.pt-BR.json +7 -7
  639. package/src/experiences/components/SellDomainNameWidget/i18n/sell-domain-name-widget.pt-PT.json +7 -7
  640. package/src/experiences/components/SideNavigationPanel/MenuCta.vue +62 -62
  641. package/src/experiences/components/SideNavigationPanel/MenuItem.vue +40 -40
  642. package/src/experiences/components/SideNavigationPanel/SideNavigationPanel.stories.js +219 -219
  643. package/src/experiences/components/SideNavigationPanel/SideNavigationPanel.vue +48 -48
  644. package/src/experiences/components/SideNavigationPanel/types.ts +7 -7
  645. package/src/experiences/components/UploadYourLogoApplication/UploadYourLogoApplication.stories.js +205 -205
  646. package/src/experiences/components/UploadYourLogoApplication/UploadYourLogoApplication.vue +135 -133
  647. package/src/experiences/components/UploadYourLogoDropzone/UploadYourLogoDropzone.stories.js +59 -59
  648. package/src/experiences/components/UploadYourLogoDropzone/UploadYourLogoDropzone.vue +285 -285
  649. package/src/experiences/components/UploadYourLogoOnBoarding/LogoBusinessBrandColours.stories.js +37 -37
  650. package/src/experiences/components/UploadYourLogoOnBoarding/LogoBusinessBrandColours.vue +338 -338
  651. package/src/experiences/components/UploadYourLogoOnBoarding/LogoBusinessText.vue +146 -146
  652. package/src/experiences/components/UploadYourLogoOnBoarding/LogoCropper.vue +473 -473
  653. package/src/experiences/components/UploadYourLogoOnBoarding/LogoPreview.vue +103 -103
  654. package/src/experiences/components/UploadYourLogoOnBoarding/LogoUploadError.vue +75 -75
  655. package/src/experiences/components/UploadYourLogoOnBoarding/LogoUploadExitConfirmation.vue +55 -55
  656. package/src/experiences/components/UploadYourLogoOnBoarding/LogoUploadModal.vue +38 -38
  657. package/src/experiences/components/UploadYourLogoOnBoarding/LogoUploader.vue +109 -102
  658. package/src/experiences/components/UploadYourLogoOnBoarding/LogoUploadingLoader.vue +39 -22
  659. package/src/experiences/components/UploadYourLogoOnBoarding/UploadYourLogoOnBoarding.vue +311 -302
  660. package/src/experiences/components/UploadYourLogoOnBoarding/i18n/upload-your-logo.de-DE.json +34 -34
  661. package/src/experiences/components/UploadYourLogoOnBoarding/i18n/upload-your-logo.es-ES.json +34 -34
  662. package/src/experiences/components/UploadYourLogoOnBoarding/i18n/upload-your-logo.fr-CA.json +34 -34
  663. package/src/experiences/components/UploadYourLogoOnBoarding/i18n/upload-your-logo.fr-FR.json +34 -34
  664. package/src/experiences/components/UploadYourLogoOnBoarding/i18n/upload-your-logo.json +35 -35
  665. package/src/experiences/components/UploadYourLogoOnBoarding/i18n/upload-your-logo.pt-BR.json +34 -34
  666. package/src/experiences/components/UploadYourLogoOnBoarding/i18n/upload-your-logo.pt-PT.json +34 -34
  667. package/src/experiences/components/UploadedLogoSearchResultCard/UploadedLogoSearchResultCard.stories.js +82 -82
  668. package/src/experiences/components/UploadedLogoSearchResultCard/UploadedLogoSearchResultCard.vue +211 -211
  669. package/src/experiences/components/UploadedLogoSearchResultCard/i18n/upload-logo-search-result-card.de-DE.json +8 -8
  670. package/src/experiences/components/UploadedLogoSearchResultCard/i18n/upload-logo-search-result-card.es-ES.json +8 -8
  671. package/src/experiences/components/UploadedLogoSearchResultCard/i18n/upload-logo-search-result-card.fr-CA.json +8 -8
  672. package/src/experiences/components/UploadedLogoSearchResultCard/i18n/upload-logo-search-result-card.fr-FR.json +8 -8
  673. package/src/experiences/components/UploadedLogoSearchResultCard/i18n/upload-logo-search-result-card.json +8 -8
  674. package/src/experiences/components/UploadedLogoSearchResultCard/i18n/upload-logo-search-result-card.pt-BR.json +8 -8
  675. package/src/experiences/components/UploadedLogoSearchResultCard/i18n/upload-logo-search-result-card.pt-PT.json +8 -8
  676. package/src/experiences/components/WebsitesContextualUpgradeModal/WebsiteContextualUpgradeModal.stories.js +181 -181
  677. package/src/experiences/components/WebsitesContextualUpgradeModal/WebsiteContextualUpgradeModal.vue +203 -203
  678. package/src/experiences/components/WebsitesContextualUpgradeModal/i18n/website-contextual-upgrade-modal.de-DE.json +42 -42
  679. package/src/experiences/components/WebsitesContextualUpgradeModal/i18n/website-contextual-upgrade-modal.es-ES.json +42 -42
  680. package/src/experiences/components/WebsitesContextualUpgradeModal/i18n/website-contextual-upgrade-modal.fr-CA.json +42 -42
  681. package/src/experiences/components/WebsitesContextualUpgradeModal/i18n/website-contextual-upgrade-modal.fr-FR.json +42 -42
  682. package/src/experiences/components/WebsitesContextualUpgradeModal/i18n/website-contextual-upgrade-modal.json +42 -42
  683. package/src/experiences/components/WebsitesContextualUpgradeModal/i18n/website-contextual-upgrade-modal.pt-BR.json +42 -42
  684. package/src/experiences/components/WebsitesContextualUpgradeModal/i18n/website-contextual-upgrade-modal.pt-PT.json +42 -42
  685. package/src/experiences/constants/api.js +8 -8
  686. package/src/experiences/constants/error-constants.js +5 -5
  687. package/src/experiences/constants/event-constants.js +18 -18
  688. package/src/experiences/constants/partner-dictionary-constants.js +27 -27
  689. package/src/experiences/constants/rego-source-constants.js +3 -3
  690. package/src/experiences/constants/sell-domain-name-constants.js +4 -4
  691. package/src/experiences/helpers/email-validator.js +5 -5
  692. package/src/experiences/helpers/hex-diff.js +116 -116
  693. package/src/experiences/helpers/tracking.js +5 -5
  694. package/src/experiences/mixins/mediaQueryMixin.js +31 -31
  695. package/src/experiences/mixins/themeMixin.js +22 -22
  696. package/src/experiences/models/websiteContextualModel.ts +11 -11
  697. package/src/themes/base.js +20 -20
  698. package/src/themes/bc.js +95 -95
  699. package/src/themes/bp.js +21 -21
  700. package/src/themes/cd.js +94 -94
  701. package/src/themes/dc.js +84 -84
  702. package/src/themes/dcom.js +106 -106
  703. package/src/themes/themes.js +16 -16
  704. package/src/useSharedLibTranslate.js +131 -131
  705. package/src/viewports.js +51 -51
  706. package/stylelint.config.js +19 -19
  707. package/tailwind.build.js +83 -83
  708. package/tailwind.config.js +36 -36
  709. package/tailwind.themes.js +59 -59
  710. package/vite.config.ts +37 -37
@@ -1,652 +1,530 @@
1
- import Icon from '../Icon/Icon.vue';
2
- import { cards } from './Carousel.fixtures';
3
- import Carousel from './Carousel.vue';
4
-
5
- export default {
6
- title: 'Components/Carousel',
7
- component: Carousel,
8
- tags: ['autodocs'],
9
- argTypes: {
10
- cards: {
11
- control: 'object',
12
- description: 'Array of card data to display in the carousel',
13
- table: {
14
- type: { summary: 'Array<Object>' },
15
- defaultValue: { summary: '[]' },
16
- },
17
- },
18
- showControls: {
19
- control: 'boolean',
20
- description: 'Show/hide navigation arrows',
21
- table: {
22
- type: { summary: 'boolean' },
23
- defaultValue: { summary: 'true' },
24
- },
25
- },
26
- showBullets: {
27
- control: 'boolean',
28
- description: 'Show/hide pagination bullets',
29
- table: {
30
- type: { summary: 'boolean' },
31
- defaultValue: { summary: 'true' },
32
- },
33
- },
34
- hideBulletsOnMobile: {
35
- control: 'boolean',
36
- description: 'Hide pagination bullets on mobile devices',
37
- table: {
38
- type: { summary: 'boolean' },
39
- defaultValue: { summary: 'true' },
40
- },
41
- },
42
- navCarousel: {
43
- control: 'boolean',
44
- description: 'Use alternative navigation styling',
45
- table: {
46
- type: { summary: 'boolean' },
47
- defaultValue: { summary: 'false' },
48
- },
49
- },
50
- disableRightClick: {
51
- control: 'boolean',
52
- description: 'Disable right-click context menu',
53
- table: {
54
- type: { summary: 'boolean' },
55
- defaultValue: { summary: 'false' },
56
- },
57
- },
58
- options: {
59
- control: 'object',
60
- description: 'Swiper options object for customization',
61
- table: {
62
- type: { summary: 'Object' },
63
- defaultValue: { summary: '{}' },
64
- },
65
- },
66
- isMousewheelScrollEnabled: {
67
- control: 'boolean',
68
- description: 'Enable horizontal trackpad/mousewheel scrolling',
69
- table: {
70
- type: { summary: 'boolean' },
71
- defaultValue: { summary: 'false' },
72
- },
73
- },
74
- shouldShowScrollbar: {
75
- control: 'boolean',
76
- description: 'Show or hide the native scrollbar (shown by default)',
77
- table: {
78
- type: { summary: 'boolean' },
79
- defaultValue: { summary: 'true' },
80
- },
81
- },
82
- },
83
- parameters: {
84
- docs: {
85
- description: {
86
- component:
87
- 'A flexible carousel component built with Swiper.js. Supports multiple slides, custom navigation, pagination, and various display options.',
88
- },
89
- },
90
- },
91
- };
92
-
93
- // Default story with interactive controls
94
- export const Default = {
95
- args: {
96
- cards,
97
- showControls: true,
98
- showBullets: true,
99
- hideBulletsOnMobile: false,
100
- navCarousel: false,
101
- options: {
102
- loop: true,
103
- spaceBetween: 20,
104
- slidesPerView: 1,
105
- breakpoints: {
106
- 640: {
107
- slidesPerView: 2,
108
- slidesPerGroup: 2,
109
- },
110
- 1024: {
111
- slidesPerView: 3,
112
- slidesPerGroup: 3,
113
- },
114
- },
115
- },
116
- },
117
- render: (args) => ({
118
- components: { Carousel },
119
- setup() {
120
- return { args };
121
- },
122
- template: `
123
- <div class="tw-p-8">
124
- <Carousel
125
- :cards="args.cards"
126
- :show-controls="args.showControls"
127
- :show-bullets="args.showBullets"
128
- :hide-bullets-on-mobile="args.hideBulletsOnMobile"
129
- :nav-carousel="args.navCarousel"
130
- :options="args.options"
131
- >
132
- <template #slide="{ slide }">
133
- <div class="tw-flex tw-flex-col tw-items-center tw-cursor-pointer tw-p-4 tw-bg-gray-50 tw-rounded-lg tw-h-full">
134
- <img :src="slide.imageUrl" :alt="slide.name" class="tw-w-full tw-h-48 tw-object-contain tw-mb-4" />
135
- <span class="tw-text-lg tw-font-semibold tw-text-center">{{ slide.name }}</span>
136
- </div>
137
- </template>
138
- </Carousel>
139
- </div>
140
- `,
141
- }),
142
- };
143
-
144
- // Single slide view
145
- export const SingleSlide = {
146
- args: {
147
- cards,
148
- showControls: true,
149
- showBullets: true,
150
- options: {
151
- loop: false,
152
- slidesPerView: 1,
153
- slidesPerGroup: 1,
154
- },
155
- },
156
- render: (args) => ({
157
- components: { Carousel },
158
- setup() {
159
- return { args };
160
- },
161
- template: `
162
- <div class="tw-p-8 tw-max-w-md tw-mx-auto">
163
- <Carousel
164
- :cards="args.cards"
165
- :show-controls="args.showControls"
166
- :show-bullets="args.showBullets"
167
- :options="args.options"
168
- >
169
- <template #slide="{ slide }">
170
- <div class="tw-flex tw-flex-col tw-items-center tw-p-6 tw-bg-white tw-rounded-xl tw-shadow-lg">
171
- <img :src="slide.imageUrl" :alt="slide.name" class="tw-w-full tw-h-64 tw-object-contain tw-mb-4" />
172
- <h3 class="tw-text-xl tw-font-bold tw-text-center">{{ slide.name }}</h3>
173
- <p class="tw-text-gray-600 tw-text-center tw-mt-2">Click to learn more</p>
174
- </div>
175
- </template>
176
- </Carousel>
177
- </div>
178
- `,
179
- }),
180
- parameters: {
181
- docs: {
182
- description: {
183
- story: 'Display one slide at a time with navigation controls.',
184
- },
185
- },
186
- },
187
- };
188
-
189
- // Without navigation controls
190
- export const WithoutControls = {
191
- args: {
192
- cards,
193
- showControls: false,
194
- showBullets: true,
195
- options: {
196
- loop: true,
197
- autoplay: {
198
- delay: 3000,
199
- disableOnInteraction: false,
200
- },
201
- },
202
- },
203
- render: (args) => ({
204
- components: { Carousel },
205
- setup() {
206
- return { args };
207
- },
208
- template: `
209
- <div class="tw-p-8">
210
- <Carousel
211
- :cards="args.cards"
212
- :show-controls="args.showControls"
213
- :show-bullets="args.showBullets"
214
- :options="args.options"
215
- >
216
- <template #slide="{ slide }">
217
- <div class="tw-flex tw-flex-col tw-items-center tw-p-4">
218
- <img :src="slide.imageUrl" :alt="slide.name" class="tw-w-full tw-h-40 tw-object-contain tw-mb-2" />
219
- <span class="tw-text-center tw-font-medium">{{ slide.name }}</span>
220
- </div>
221
- </template>
222
- </Carousel>
223
- </div>
224
- `,
225
- }),
226
- parameters: {
227
- docs: {
228
- description: {
229
- story: 'Auto-playing carousel without navigation arrows. Uses only pagination bullets for navigation.',
230
- },
231
- },
232
- },
233
- };
234
-
235
- // Without bullets
236
- export const WithoutBullets = {
237
- args: {
238
- cards,
239
- showControls: true,
240
- showBullets: false,
241
- options: {
242
- loop: true,
243
- slidesPerView: 2,
244
- spaceBetween: 20,
245
- },
246
- },
247
- render: (args) => ({
248
- components: { Carousel },
249
- setup() {
250
- return { args };
251
- },
252
- template: `
253
- <div class="tw-p-8">
254
- <Carousel
255
- :cards="args.cards"
256
- :show-controls="args.showControls"
257
- :show-bullets="args.showBullets"
258
- :options="args.options"
259
- >
260
- <template #slide="{ slide }">
261
- <div class="tw-flex tw-flex-col tw-items-center tw-p-4 tw-bg-gray-100 tw-rounded">
262
- <img :src="slide.imageUrl" :alt="slide.name" class="tw-w-full tw-h-32 tw-object-contain tw-mb-2" />
263
- <span class="tw-text-center">{{ slide.name }}</span>
264
- </div>
265
- </template>
266
- </Carousel>
267
- </div>
268
- `,
269
- }),
270
- parameters: {
271
- docs: {
272
- description: {
273
- story: 'Carousel with arrow controls only, no pagination bullets.',
274
- },
275
- },
276
- },
277
- };
278
-
279
- // Custom arrow styling
280
- export const CustomArrows = {
281
- args: {
282
- cards,
283
- },
284
- render: (args) => ({
285
- components: { Carousel, Icon },
286
- setup() {
287
- return { args };
288
- },
289
- template: `
290
- <div class="tw-p-8">
291
- <Carousel :cards="args.cards" :options="{ loop: true }">
292
- <template #arrow-left>
293
- <div class="tw-bg-blue-500 tw-text-white tw-rounded-full tw-p-3 tw-cursor-pointer hover:tw-bg-blue-600 tw-transition tw-shadow-lg">
294
- <Icon classes="tw-transform tw-rotate-180" name="chevron-right" size="lg" color="white" />
295
- </div>
296
- </template>
297
- <template #slide="{ slide }">
298
- <div class="tw-flex tw-flex-col tw-items-center tw-p-4">
299
- <img :src="slide.imageUrl" :alt="slide.name" class="tw-w-full tw-h-40 tw-object-contain tw-mb-2" />
300
- <span class="tw-text-center tw-font-medium">{{ slide.name }}</span>
301
- </div>
302
- </template>
303
- <template #arrow-right>
304
- <div class="tw-bg-blue-500 tw-text-white tw-rounded-full tw-p-3 tw-cursor-pointer hover:tw-bg-blue-600 tw-transition tw-shadow-lg">
305
- <Icon name="chevron-right" size="lg" color="white" />
306
- </div>
307
- </template>
308
- </Carousel>
309
- </div>
310
- `,
311
- }),
312
- parameters: {
313
- docs: {
314
- description: {
315
- story: 'Carousel with custom-styled navigation arrows using the arrow slots.',
316
- },
317
- },
318
- },
319
- };
320
-
321
- // Free mode (continuous scroll)
322
- export const FreeMode = {
323
- args: {
324
- cards: [...cards, ...cards, ...cards],
325
- },
326
- render: (args) => ({
327
- components: { Carousel },
328
- setup() {
329
- return { args };
330
- },
331
- template: `
332
- <div class="tw-p-8">
333
- <Carousel
334
- :cards="args.cards"
335
- :options="{
336
- loop: false,
337
- spaceBetween: 20,
338
- freeMode: true,
339
- slidesPerView: 'auto',
340
- }"
341
- >
342
- <template #slide="{ slide }">
343
- <div class="tw-flex tw-flex-col tw-items-center tw-p-4 tw-bg-white tw-rounded-lg tw-shadow" style="width: 200px;">
344
- <img :src="slide.imageUrl" :alt="slide.name" class="tw-w-full tw-h-32 tw-object-contain tw-mb-2" />
345
- <span class="tw-text-center tw-text-sm tw-font-medium">{{ slide.name }}</span>
346
- </div>
347
- </template>
348
- </Carousel>
349
- </div>
350
- `,
351
- }),
352
- parameters: {
353
- docs: {
354
- description: {
355
- story: 'Free scrolling mode where users can drag freely without snapping to slides.',
356
- },
357
- },
358
- },
359
- };
360
-
361
- // Centered slides
362
- export const CenteredSlides = {
363
- args: {
364
- cards: [...cards, ...cards],
365
- },
366
- render: (args) => ({
367
- components: { Carousel },
368
- setup() {
369
- return { args };
370
- },
371
- template: `
372
- <div class="tw-p-8">
373
- <Carousel
374
- :cards="args.cards"
375
- :options="{
376
- loop: true,
377
- centeredSlides: true,
378
- slidesPerView: 1.5,
379
- spaceBetween: 30,
380
- }"
381
- >
382
- <template #slide="{ slide }">
383
- <div class="tw-flex tw-flex-col tw-items-center tw-p-6 tw-bg-gradient-to-br tw-from-purple-100 tw-to-blue-100 tw-rounded-xl">
384
- <img :src="slide.imageUrl" :alt="slide.name" class="tw-w-full tw-h-48 tw-object-contain tw-mb-4" />
385
- <span class="tw-text-center tw-text-lg tw-font-semibold">{{ slide.name }}</span>
386
- </div>
387
- </template>
388
- </Carousel>
389
- </div>
390
- `,
391
- }),
392
- parameters: {
393
- docs: {
394
- description: {
395
- story: 'Carousel with centered active slide and partial view of adjacent slides.',
396
- },
397
- },
398
- },
399
- };
400
-
401
- // Multiple carousels on same page
402
- export const MultipleCarousels = {
403
- render: () => ({
404
- components: { Carousel },
405
- setup() {
406
- return {
407
- cards,
408
- swiperOne: {
409
- options: {
410
- loop: true,
411
- navigation: {
412
- prevEl: '.carousel__button-prev--1',
413
- nextEl: '.carousel__button-next--1',
414
- },
415
- pagination: {
416
- el: '.pagination--1',
417
- },
418
- },
419
- navigationUniqueIndexer: '1',
420
- },
421
- swiperTwo: {
422
- options: {
423
- loop: true,
424
- navigation: {
425
- prevEl: '.carousel__button-prev--2',
426
- nextEl: '.carousel__button-next--2',
427
- },
428
- pagination: {
429
- el: '.pagination--2',
430
- },
431
- },
432
- navigationUniqueIndexer: '2',
433
- },
434
- };
435
- },
436
- template: `
437
- <div class="tw-p-8 tw-space-y-12">
438
- <div>
439
- <h3 class="tw-text-xl tw-font-bold tw-mb-4 tw-text-center">First Carousel</h3>
440
- <div class="tw-max-w-md tw-mx-auto">
441
- <Carousel
442
- :cards="cards"
443
- :show-bullets="true"
444
- :swiper-ref="swiperOne.navigationUniqueIndexer"
445
- :navigation-unique-indexer="swiperOne.navigationUniqueIndexer"
446
- :options="swiperOne.options"
447
- >
448
- <template #slide="{ slide }">
449
- <div class="tw-flex tw-flex-col tw-items-center tw-p-4 tw-bg-blue-50 tw-rounded-lg">
450
- <img :src="slide.imageUrl" :alt="slide.name" class="tw-w-full tw-h-40 tw-object-contain tw-mb-2" />
451
- <span class="tw-text-center tw-font-medium">{{ slide.name }}</span>
452
- </div>
453
- </template>
454
- </Carousel>
455
- </div>
456
- </div>
457
-
458
- <div>
459
- <h3 class="tw-text-xl tw-font-bold tw-mb-4 tw-text-center">Second Carousel</h3>
460
- <div class="tw-max-w-md tw-mx-auto">
461
- <Carousel
462
- :cards="cards"
463
- :show-bullets="true"
464
- :swiper-ref="swiperTwo.navigationUniqueIndexer"
465
- :navigation-unique-indexer="swiperTwo.navigationUniqueIndexer"
466
- :options="swiperTwo.options"
467
- >
468
- <template #slide="{ slide }">
469
- <div class="tw-flex tw-flex-col tw-items-center tw-p-4 tw-bg-green-50 tw-rounded-lg">
470
- <img :src="slide.imageUrl" :alt="slide.name" class="tw-w-full tw-h-40 tw-object-contain tw-mb-2" />
471
- <span class="tw-text-center tw-font-medium">{{ slide.name }}</span>
472
- </div>
473
- </template>
474
- </Carousel>
475
- </div>
476
- </div>
477
- </div>
478
- `,
479
- }),
480
- parameters: {
481
- docs: {
482
- description: {
483
- story:
484
- 'Example of multiple independent carousels on the same page. Each requires unique navigationUniqueIndexer.',
485
- },
486
- },
487
- },
488
- };
489
-
490
- // Mousewheel scrolling
491
- export const MousewheelScroll = {
492
- args: {
493
- cards: [...cards, ...cards],
494
- isMousewheelScrollEnabled: true,
495
- shouldShowScrollbar: false,
496
- showControls: true,
497
- showBullets: true,
498
- options: {
499
- loop: false,
500
- spaceBetween: 20,
501
- slidesPerView: 1,
502
- breakpoints: {
503
- 640: {
504
- slidesPerView: 2,
505
- slidesPerGroup: 2,
506
- },
507
- 1024: {
508
- slidesPerView: 3,
509
- slidesPerGroup: 3,
510
- },
511
- },
512
- },
513
- },
514
- render: (args) => ({
515
- components: { Carousel },
516
- setup() {
517
- return { args };
518
- },
519
- template: `
520
- <div class="tw-p-8">
521
- <p class="tw-text-sm tw-text-gray-600 tw-mb-4">Use trackpad horizontal swipe or mouse scroll wheel to navigate.</p>
522
- <Carousel
523
- :cards="args.cards"
524
- :is-mousewheel-scroll-enabled="args.isMousewheelScrollEnabled"
525
- :should-show-scrollbar="args.shouldShowScrollbar"
526
- :show-controls="args.showControls"
527
- :show-bullets="args.showBullets"
528
- :options="args.options"
529
- >
530
- <template #slide="{ slide }">
531
- <div class="tw-flex tw-flex-col tw-items-center tw-cursor-pointer tw-p-4 tw-bg-gray-50 tw-rounded-lg tw-h-full">
532
- <img :src="slide.imageUrl" :alt="slide.name" class="tw-w-full tw-h-48 tw-object-contain tw-mb-4" />
533
- <span class="tw-text-lg tw-font-semibold tw-text-center">{{ slide.name }}</span>
534
- </div>
535
- </template>
536
- </Carousel>
537
- </div>
538
- `,
539
- }),
540
- parameters: {
541
- docs: {
542
- description: {
543
- story:
544
- 'Carousel with native trackpad/mousewheel horizontal scrolling enabled. Arrow buttons stay synchronized with scroll position.',
545
- },
546
- },
547
- },
548
- };
549
-
550
- // Mousewheel with free mode
551
- export const MousewheelFreeMode = {
552
- args: {
553
- cards: [...cards, ...cards, ...cards],
554
- isMousewheelScrollEnabled: true,
555
- shouldShowScrollbar: false,
556
- },
557
- render: (args) => ({
558
- components: { Carousel },
559
- setup() {
560
- return { args };
561
- },
562
- template: `
563
- <div class="tw-p-8">
564
- <p class="tw-text-sm tw-text-gray-600 tw-mb-4">Free-scrolling with mousewheel support. Scrolls continuously without snapping.</p>
565
- <Carousel
566
- :cards="args.cards"
567
- :is-mousewheel-scroll-enabled="args.isMousewheelScrollEnabled"
568
- :should-show-scrollbar="args.shouldShowScrollbar"
569
- :options="{
570
- loop: false,
571
- spaceBetween: 20,
572
- freeMode: true,
573
- slidesPerView: 'auto',
574
- }"
575
- >
576
- <template #slide="{ slide }">
577
- <div class="tw-flex tw-flex-col tw-items-center tw-p-4 tw-bg-white tw-rounded-lg tw-shadow" style="width: 200px;">
578
- <img :src="slide.imageUrl" :alt="slide.name" class="tw-w-full tw-h-32 tw-object-contain tw-mb-2" />
579
- <span class="tw-text-center tw-text-sm tw-font-medium">{{ slide.name }}</span>
580
- </div>
581
- </template>
582
- </Carousel>
583
- </div>
584
- `,
585
- }),
586
- parameters: {
587
- docs: {
588
- description: {
589
- story:
590
- 'Mousewheel scrolling combined with free mode for continuous smooth scrolling without snapping to slides.',
591
- },
592
- },
593
- },
594
- };
595
-
596
- // Responsive breakpoints demo
597
- export const ResponsiveBreakpoints = {
598
- args: {
599
- cards: [...cards, ...cards],
600
- },
601
- render: (args) => ({
602
- components: { Carousel },
603
- setup() {
604
- return { args };
605
- },
606
- template: `
607
- <div class="tw-p-8">
608
- <div class="tw-mb-4 tw-p-4 tw-bg-blue-50 tw-rounded-lg">
609
- <p class="tw-text-sm tw-font-semibold tw-mb-2">Responsive behavior:</p>
610
- <ul class="tw-text-sm tw-space-y-1">
611
- <li>• Mobile (< 640px): 1 slide</li>
612
- <li>• Tablet (640px - 1023px): 2 slides</li>
613
- <li>• Desktop (≥ 1024px): 4 slides</li>
614
- </ul>
615
- </div>
616
- <Carousel
617
- :cards="args.cards"
618
- :options="{
619
- loop: true,
620
- spaceBetween: 20,
621
- slidesPerView: 1,
622
- slidesPerGroup: 1,
623
- breakpoints: {
624
- 640: {
625
- slidesPerView: 2,
626
- slidesPerGroup: 2,
627
- },
628
- 1024: {
629
- slidesPerView: 4,
630
- slidesPerGroup: 4,
631
- },
632
- },
633
- }"
634
- >
635
- <template #slide="{ slide }">
636
- <div class="tw-flex tw-flex-col tw-items-center tw-p-4 tw-bg-white tw-border tw-border-gray-200 tw-rounded-lg">
637
- <img :src="slide.imageUrl" :alt="slide.name" class="tw-w-full tw-h-32 tw-object-contain tw-mb-2" />
638
- <span class="tw-text-center tw-text-sm tw-font-medium">{{ slide.name }}</span>
639
- </div>
640
- </template>
641
- </Carousel>
642
- </div>
643
- `,
644
- }),
645
- parameters: {
646
- docs: {
647
- description: {
648
- story: 'Demonstrates responsive behavior with different numbers of slides at different screen sizes.',
649
- },
650
- },
651
- },
652
- };
1
+ import Icon from '../Icon/Icon.vue';
2
+ import { cards } from './Carousel.fixtures';
3
+ import Carousel from './Carousel.vue';
4
+
5
+ export default {
6
+ title: 'Components/Carousel',
7
+ component: Carousel,
8
+ tags: ['autodocs'],
9
+ argTypes: {
10
+ cards: {
11
+ control: 'object',
12
+ description: 'Array of card data to display in the carousel',
13
+ table: {
14
+ type: { summary: 'Array<Object>' },
15
+ defaultValue: { summary: '[]' },
16
+ },
17
+ },
18
+ showControls: {
19
+ control: 'boolean',
20
+ description: 'Show/hide navigation arrows',
21
+ table: {
22
+ type: { summary: 'boolean' },
23
+ defaultValue: { summary: 'true' },
24
+ },
25
+ },
26
+ showBullets: {
27
+ control: 'boolean',
28
+ description: 'Show/hide pagination bullets',
29
+ table: {
30
+ type: { summary: 'boolean' },
31
+ defaultValue: { summary: 'true' },
32
+ },
33
+ },
34
+ hideBulletsOnMobile: {
35
+ control: 'boolean',
36
+ description: 'Hide pagination bullets on mobile devices',
37
+ table: {
38
+ type: { summary: 'boolean' },
39
+ defaultValue: { summary: 'true' },
40
+ },
41
+ },
42
+ navCarousel: {
43
+ control: 'boolean',
44
+ description: 'Use alternative navigation styling',
45
+ table: {
46
+ type: { summary: 'boolean' },
47
+ defaultValue: { summary: 'false' },
48
+ },
49
+ },
50
+ disableRightClick: {
51
+ control: 'boolean',
52
+ description: 'Disable right-click context menu',
53
+ table: {
54
+ type: { summary: 'boolean' },
55
+ defaultValue: { summary: 'false' },
56
+ },
57
+ },
58
+ options: {
59
+ control: 'object',
60
+ description: 'Swiper options object for customization',
61
+ table: {
62
+ type: { summary: 'Object' },
63
+ defaultValue: { summary: '{}' },
64
+ },
65
+ },
66
+ },
67
+ parameters: {
68
+ docs: {
69
+ description: {
70
+ component:
71
+ 'A flexible carousel component built with Swiper.js. Supports multiple slides, custom navigation, pagination, and various display options.',
72
+ },
73
+ },
74
+ },
75
+ };
76
+
77
+ // Default story with interactive controls
78
+ export const Default = {
79
+ args: {
80
+ cards,
81
+ showControls: true,
82
+ showBullets: true,
83
+ hideBulletsOnMobile: false,
84
+ navCarousel: false,
85
+ options: {
86
+ loop: true,
87
+ spaceBetween: 20,
88
+ slidesPerView: 1,
89
+ breakpoints: {
90
+ 640: {
91
+ slidesPerView: 2,
92
+ slidesPerGroup: 2,
93
+ },
94
+ 1024: {
95
+ slidesPerView: 3,
96
+ slidesPerGroup: 3,
97
+ },
98
+ },
99
+ },
100
+ },
101
+ render: (args) => ({
102
+ components: { Carousel },
103
+ setup() {
104
+ return { args };
105
+ },
106
+ template: `
107
+ <div class="tw-p-8">
108
+ <Carousel
109
+ :cards="args.cards"
110
+ :show-controls="args.showControls"
111
+ :show-bullets="args.showBullets"
112
+ :hide-bullets-on-mobile="args.hideBulletsOnMobile"
113
+ :nav-carousel="args.navCarousel"
114
+ :options="args.options"
115
+ >
116
+ <template #slide="{ slide }">
117
+ <div class="tw-flex tw-flex-col tw-items-center tw-cursor-pointer tw-p-4 tw-bg-gray-50 tw-rounded-lg tw-h-full">
118
+ <img :src="slide.imageUrl" :alt="slide.name" class="tw-w-full tw-h-48 tw-object-contain tw-mb-4" />
119
+ <span class="tw-text-lg tw-font-semibold tw-text-center">{{ slide.name }}</span>
120
+ </div>
121
+ </template>
122
+ </Carousel>
123
+ </div>
124
+ `,
125
+ }),
126
+ };
127
+
128
+ // Single slide view
129
+ export const SingleSlide = {
130
+ args: {
131
+ cards,
132
+ showControls: true,
133
+ showBullets: true,
134
+ options: {
135
+ loop: false,
136
+ slidesPerView: 1,
137
+ slidesPerGroup: 1,
138
+ },
139
+ },
140
+ render: (args) => ({
141
+ components: { Carousel },
142
+ setup() {
143
+ return { args };
144
+ },
145
+ template: `
146
+ <div class="tw-p-8 tw-max-w-md tw-mx-auto">
147
+ <Carousel
148
+ :cards="args.cards"
149
+ :show-controls="args.showControls"
150
+ :show-bullets="args.showBullets"
151
+ :options="args.options"
152
+ >
153
+ <template #slide="{ slide }">
154
+ <div class="tw-flex tw-flex-col tw-items-center tw-p-6 tw-bg-white tw-rounded-xl tw-shadow-lg">
155
+ <img :src="slide.imageUrl" :alt="slide.name" class="tw-w-full tw-h-64 tw-object-contain tw-mb-4" />
156
+ <h3 class="tw-text-xl tw-font-bold tw-text-center">{{ slide.name }}</h3>
157
+ <p class="tw-text-gray-600 tw-text-center tw-mt-2">Click to learn more</p>
158
+ </div>
159
+ </template>
160
+ </Carousel>
161
+ </div>
162
+ `,
163
+ }),
164
+ parameters: {
165
+ docs: {
166
+ description: {
167
+ story: 'Display one slide at a time with navigation controls.',
168
+ },
169
+ },
170
+ },
171
+ };
172
+
173
+ // Without navigation controls
174
+ export const WithoutControls = {
175
+ args: {
176
+ cards,
177
+ showControls: false,
178
+ showBullets: true,
179
+ options: {
180
+ loop: true,
181
+ autoplay: {
182
+ delay: 3000,
183
+ disableOnInteraction: false,
184
+ },
185
+ },
186
+ },
187
+ render: (args) => ({
188
+ components: { Carousel },
189
+ setup() {
190
+ return { args };
191
+ },
192
+ template: `
193
+ <div class="tw-p-8">
194
+ <Carousel
195
+ :cards="args.cards"
196
+ :show-controls="args.showControls"
197
+ :show-bullets="args.showBullets"
198
+ :options="args.options"
199
+ >
200
+ <template #slide="{ slide }">
201
+ <div class="tw-flex tw-flex-col tw-items-center tw-p-4">
202
+ <img :src="slide.imageUrl" :alt="slide.name" class="tw-w-full tw-h-40 tw-object-contain tw-mb-2" />
203
+ <span class="tw-text-center tw-font-medium">{{ slide.name }}</span>
204
+ </div>
205
+ </template>
206
+ </Carousel>
207
+ </div>
208
+ `,
209
+ }),
210
+ parameters: {
211
+ docs: {
212
+ description: {
213
+ story: 'Auto-playing carousel without navigation arrows. Uses only pagination bullets for navigation.',
214
+ },
215
+ },
216
+ },
217
+ };
218
+
219
+ // Without bullets
220
+ export const WithoutBullets = {
221
+ args: {
222
+ cards,
223
+ showControls: true,
224
+ showBullets: false,
225
+ options: {
226
+ loop: true,
227
+ slidesPerView: 2,
228
+ spaceBetween: 20,
229
+ },
230
+ },
231
+ render: (args) => ({
232
+ components: { Carousel },
233
+ setup() {
234
+ return { args };
235
+ },
236
+ template: `
237
+ <div class="tw-p-8">
238
+ <Carousel
239
+ :cards="args.cards"
240
+ :show-controls="args.showControls"
241
+ :show-bullets="args.showBullets"
242
+ :options="args.options"
243
+ >
244
+ <template #slide="{ slide }">
245
+ <div class="tw-flex tw-flex-col tw-items-center tw-p-4 tw-bg-gray-100 tw-rounded">
246
+ <img :src="slide.imageUrl" :alt="slide.name" class="tw-w-full tw-h-32 tw-object-contain tw-mb-2" />
247
+ <span class="tw-text-center">{{ slide.name }}</span>
248
+ </div>
249
+ </template>
250
+ </Carousel>
251
+ </div>
252
+ `,
253
+ }),
254
+ parameters: {
255
+ docs: {
256
+ description: {
257
+ story: 'Carousel with arrow controls only, no pagination bullets.',
258
+ },
259
+ },
260
+ },
261
+ };
262
+
263
+ // Custom arrow styling
264
+ export const CustomArrows = {
265
+ args: {
266
+ cards,
267
+ },
268
+ render: (args) => ({
269
+ components: { Carousel, Icon },
270
+ setup() {
271
+ return { args };
272
+ },
273
+ template: `
274
+ <div class="tw-p-8">
275
+ <Carousel :cards="args.cards" :options="{ loop: true }">
276
+ <template #arrow-left>
277
+ <div class="tw-bg-blue-500 tw-text-white tw-rounded-full tw-p-3 tw-cursor-pointer hover:tw-bg-blue-600 tw-transition tw-shadow-lg">
278
+ <Icon classes="tw-transform tw-rotate-180" name="chevron-right" size="lg" color="white" />
279
+ </div>
280
+ </template>
281
+ <template #slide="{ slide }">
282
+ <div class="tw-flex tw-flex-col tw-items-center tw-p-4">
283
+ <img :src="slide.imageUrl" :alt="slide.name" class="tw-w-full tw-h-40 tw-object-contain tw-mb-2" />
284
+ <span class="tw-text-center tw-font-medium">{{ slide.name }}</span>
285
+ </div>
286
+ </template>
287
+ <template #arrow-right>
288
+ <div class="tw-bg-blue-500 tw-text-white tw-rounded-full tw-p-3 tw-cursor-pointer hover:tw-bg-blue-600 tw-transition tw-shadow-lg">
289
+ <Icon name="chevron-right" size="lg" color="white" />
290
+ </div>
291
+ </template>
292
+ </Carousel>
293
+ </div>
294
+ `,
295
+ }),
296
+ parameters: {
297
+ docs: {
298
+ description: {
299
+ story: 'Carousel with custom-styled navigation arrows using the arrow slots.',
300
+ },
301
+ },
302
+ },
303
+ };
304
+
305
+ // Free mode (continuous scroll)
306
+ export const FreeMode = {
307
+ args: {
308
+ cards: [...cards, ...cards, ...cards],
309
+ },
310
+ render: (args) => ({
311
+ components: { Carousel },
312
+ setup() {
313
+ return { args };
314
+ },
315
+ template: `
316
+ <div class="tw-p-8">
317
+ <Carousel
318
+ :cards="args.cards"
319
+ :options="{
320
+ loop: false,
321
+ spaceBetween: 20,
322
+ freeMode: true,
323
+ slidesPerView: 'auto',
324
+ }"
325
+ >
326
+ <template #slide="{ slide }">
327
+ <div class="tw-flex tw-flex-col tw-items-center tw-p-4 tw-bg-white tw-rounded-lg tw-shadow" style="width: 200px;">
328
+ <img :src="slide.imageUrl" :alt="slide.name" class="tw-w-full tw-h-32 tw-object-contain tw-mb-2" />
329
+ <span class="tw-text-center tw-text-sm tw-font-medium">{{ slide.name }}</span>
330
+ </div>
331
+ </template>
332
+ </Carousel>
333
+ </div>
334
+ `,
335
+ }),
336
+ parameters: {
337
+ docs: {
338
+ description: {
339
+ story: 'Free scrolling mode where users can drag freely without snapping to slides.',
340
+ },
341
+ },
342
+ },
343
+ };
344
+
345
+ // Centered slides
346
+ export const CenteredSlides = {
347
+ args: {
348
+ cards: [...cards, ...cards],
349
+ },
350
+ render: (args) => ({
351
+ components: { Carousel },
352
+ setup() {
353
+ return { args };
354
+ },
355
+ template: `
356
+ <div class="tw-p-8">
357
+ <Carousel
358
+ :cards="args.cards"
359
+ :options="{
360
+ loop: true,
361
+ centeredSlides: true,
362
+ slidesPerView: 1.5,
363
+ spaceBetween: 30,
364
+ }"
365
+ >
366
+ <template #slide="{ slide }">
367
+ <div class="tw-flex tw-flex-col tw-items-center tw-p-6 tw-bg-gradient-to-br tw-from-purple-100 tw-to-blue-100 tw-rounded-xl">
368
+ <img :src="slide.imageUrl" :alt="slide.name" class="tw-w-full tw-h-48 tw-object-contain tw-mb-4" />
369
+ <span class="tw-text-center tw-text-lg tw-font-semibold">{{ slide.name }}</span>
370
+ </div>
371
+ </template>
372
+ </Carousel>
373
+ </div>
374
+ `,
375
+ }),
376
+ parameters: {
377
+ docs: {
378
+ description: {
379
+ story: 'Carousel with centered active slide and partial view of adjacent slides.',
380
+ },
381
+ },
382
+ },
383
+ };
384
+
385
+ // Multiple carousels on same page
386
+ export const MultipleCarousels = {
387
+ render: () => ({
388
+ components: { Carousel },
389
+ setup() {
390
+ return {
391
+ cards,
392
+ swiperOne: {
393
+ options: {
394
+ loop: true,
395
+ navigation: {
396
+ prevEl: '.carousel__button-prev--1',
397
+ nextEl: '.carousel__button-next--1',
398
+ },
399
+ pagination: {
400
+ el: '.pagination--1',
401
+ },
402
+ },
403
+ navigationUniqueIndexer: '1',
404
+ },
405
+ swiperTwo: {
406
+ options: {
407
+ loop: true,
408
+ navigation: {
409
+ prevEl: '.carousel__button-prev--2',
410
+ nextEl: '.carousel__button-next--2',
411
+ },
412
+ pagination: {
413
+ el: '.pagination--2',
414
+ },
415
+ },
416
+ navigationUniqueIndexer: '2',
417
+ },
418
+ };
419
+ },
420
+ template: `
421
+ <div class="tw-p-8 tw-space-y-12">
422
+ <div>
423
+ <h3 class="tw-text-xl tw-font-bold tw-mb-4 tw-text-center">First Carousel</h3>
424
+ <div class="tw-max-w-md tw-mx-auto">
425
+ <Carousel
426
+ :cards="cards"
427
+ :show-bullets="true"
428
+ :swiper-ref="swiperOne.navigationUniqueIndexer"
429
+ :navigation-unique-indexer="swiperOne.navigationUniqueIndexer"
430
+ :options="swiperOne.options"
431
+ >
432
+ <template #slide="{ slide }">
433
+ <div class="tw-flex tw-flex-col tw-items-center tw-p-4 tw-bg-blue-50 tw-rounded-lg">
434
+ <img :src="slide.imageUrl" :alt="slide.name" class="tw-w-full tw-h-40 tw-object-contain tw-mb-2" />
435
+ <span class="tw-text-center tw-font-medium">{{ slide.name }}</span>
436
+ </div>
437
+ </template>
438
+ </Carousel>
439
+ </div>
440
+ </div>
441
+
442
+ <div>
443
+ <h3 class="tw-text-xl tw-font-bold tw-mb-4 tw-text-center">Second Carousel</h3>
444
+ <div class="tw-max-w-md tw-mx-auto">
445
+ <Carousel
446
+ :cards="cards"
447
+ :show-bullets="true"
448
+ :swiper-ref="swiperTwo.navigationUniqueIndexer"
449
+ :navigation-unique-indexer="swiperTwo.navigationUniqueIndexer"
450
+ :options="swiperTwo.options"
451
+ >
452
+ <template #slide="{ slide }">
453
+ <div class="tw-flex tw-flex-col tw-items-center tw-p-4 tw-bg-green-50 tw-rounded-lg">
454
+ <img :src="slide.imageUrl" :alt="slide.name" class="tw-w-full tw-h-40 tw-object-contain tw-mb-2" />
455
+ <span class="tw-text-center tw-font-medium">{{ slide.name }}</span>
456
+ </div>
457
+ </template>
458
+ </Carousel>
459
+ </div>
460
+ </div>
461
+ </div>
462
+ `,
463
+ }),
464
+ parameters: {
465
+ docs: {
466
+ description: {
467
+ story:
468
+ 'Example of multiple independent carousels on the same page. Each requires unique navigationUniqueIndexer.',
469
+ },
470
+ },
471
+ },
472
+ };
473
+
474
+ // Responsive breakpoints demo
475
+ export const ResponsiveBreakpoints = {
476
+ args: {
477
+ cards: [...cards, ...cards],
478
+ },
479
+ render: (args) => ({
480
+ components: { Carousel },
481
+ setup() {
482
+ return { args };
483
+ },
484
+ template: `
485
+ <div class="tw-p-8">
486
+ <div class="tw-mb-4 tw-p-4 tw-bg-blue-50 tw-rounded-lg">
487
+ <p class="tw-text-sm tw-font-semibold tw-mb-2">Responsive behavior:</p>
488
+ <ul class="tw-text-sm tw-space-y-1">
489
+ <li>• Mobile (< 640px): 1 slide</li>
490
+ <li>• Tablet (640px - 1023px): 2 slides</li>
491
+ <li>• Desktop (≥ 1024px): 4 slides</li>
492
+ </ul>
493
+ </div>
494
+ <Carousel
495
+ :cards="args.cards"
496
+ :options="{
497
+ loop: true,
498
+ spaceBetween: 20,
499
+ slidesPerView: 1,
500
+ slidesPerGroup: 1,
501
+ breakpoints: {
502
+ 640: {
503
+ slidesPerView: 2,
504
+ slidesPerGroup: 2,
505
+ },
506
+ 1024: {
507
+ slidesPerView: 4,
508
+ slidesPerGroup: 4,
509
+ },
510
+ },
511
+ }"
512
+ >
513
+ <template #slide="{ slide }">
514
+ <div class="tw-flex tw-flex-col tw-items-center tw-p-4 tw-bg-white tw-border tw-border-gray-200 tw-rounded-lg">
515
+ <img :src="slide.imageUrl" :alt="slide.name" class="tw-w-full tw-h-32 tw-object-contain tw-mb-2" />
516
+ <span class="tw-text-center tw-text-sm tw-font-medium">{{ slide.name }}</span>
517
+ </div>
518
+ </template>
519
+ </Carousel>
520
+ </div>
521
+ `,
522
+ }),
523
+ parameters: {
524
+ docs: {
525
+ description: {
526
+ story: 'Demonstrates responsive behavior with different numbers of slides at different screen sizes.',
527
+ },
528
+ },
529
+ },
530
+ };