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

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