@designcrowd/fe-shared-lib 1.6.0 → 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.
- package/.github/workflows/claude.yml +72 -0
- package/.storybook/main.ts +2 -5
- package/CLAUDE.md +78 -55
- package/dist/css/tailwind-brandCrowd.css +25 -4
- package/dist/css/tailwind-brandPage.css +16 -3
- package/dist/css/tailwind-crazyDomains.css +25 -4
- package/dist/css/tailwind-designCom.css +25 -4
- package/dist/css/tailwind-designCrowd.css +25 -4
- package/index.js +1 -0
- package/package.json +36 -32
- package/src/atoms/components/AiPoweredLoader/AiPoweredLoader.stories.js +364 -0
- package/src/atoms/components/AiPoweredLoader/AiPoweredLoader.vue +296 -0
- package/src/atoms/components/Button/variants/ButtonGray.vue +3 -3
- package/src/atoms/components/Carousel/Carousel.vue +7 -2
- package/src/atoms/components/Icon/Icon.stories.js +5 -7
- package/src/atoms/components/Icon/Icon.vue +25 -15
- package/src/atoms/components/Icon/icons/crown-alt.vue +5 -0
- package/src/atoms/components/Icon/icons/crown.vue +6 -0
- package/src/atoms/components/Icon/icons/home-outline.vue +6 -0
- package/src/atoms/components/Icon/icons/page-blank.vue +6 -0
- package/src/atoms/components/Icon/icons/question-alt.vue +20 -0
- package/src/atoms/components/Price/Price.stories.js +42 -21
- package/src/experiences/components/AuthFlow/SignIn.vue +10 -3
- package/src/experiences/components/AuthFlow/SignUp.vue +1 -1
- package/src/experiences/components/SideNavigationPanel/MenuCta.vue +62 -0
- package/src/experiences/components/SideNavigationPanel/MenuItem.vue +40 -0
- package/src/experiences/components/SideNavigationPanel/SideNavigationPanel.stories.js +219 -0
- package/src/experiences/components/SideNavigationPanel/SideNavigationPanel.vue +48 -0
- package/src/experiences/components/SideNavigationPanel/types.ts +7 -0
- package/src/experiences/components/UploadYourLogoApplication/UploadYourLogoApplication.vue +5 -3
- package/src/experiences/components/UploadYourLogoOnBoarding/LogoUploader.vue +8 -1
- package/src/experiences/components/UploadYourLogoOnBoarding/LogoUploadingLoader.vue +17 -0
- package/src/experiences/components/UploadYourLogoOnBoarding/UploadYourLogoOnBoarding.vue +10 -1
- package/src/experiences/components/WebsitesContextualUpgradeModal/WebsiteContextualUpgradeModal.vue +2 -2
- package/tailwind.config.js +1 -1
- package/vite.config.ts +4 -0
- package/.claude/settings.local.json +0 -56
- package/.storybook-static/assets/Auth-DT64t5h-.css +0 -1
- package/.storybook-static/assets/Auth.stories-C6eXcTSu.js +0 -490
- package/.storybook-static/assets/AuthCrazyDomains.stories-DGvEoWCa.js +0 -73
- package/.storybook-static/assets/Button-5UzSGUF6.css +0 -1
- package/.storybook-static/assets/Button-DKdQT6Fq.js +0 -1
- package/.storybook-static/assets/ButtonGroup-DDPXuhxR.css +0 -1
- package/.storybook-static/assets/ButtonGroup.stories-DlrYMRSk.js +0 -504
- package/.storybook-static/assets/ButtonPrimary-Bu6bXb_c.css +0 -1
- package/.storybook-static/assets/ButtonPrimary-BvWW6Duz.js +0 -1
- package/.storybook-static/assets/Buttons.stories-CKmd6hkZ.js +0 -761
- package/.storybook-static/assets/ButtonsCrazyDomains.stories-DdEuOUrn.js +0 -199
- package/.storybook-static/assets/Checkbox.mixin-DkHpdvGa.js +0 -1
- package/.storybook-static/assets/Checkbox.stories-DPBUC2Mx.js +0 -246
- package/.storybook-static/assets/Checktile.stories-ByaFwplD.js +0 -88
- package/.storybook-static/assets/CollapsiblePanel.stories-Y6q3gP9j.js +0 -56
- package/.storybook-static/assets/ColorPicker.stories-DdxPUB_R.js +0 -73
- package/.storybook-static/assets/CopyToClipboardText.stories-J9qndWxd.js +0 -32
- package/.storybook-static/assets/Dropdown.stories-1zKPATii.js +0 -159
- package/.storybook-static/assets/DropdownItem-BV-BdThU.css +0 -1
- package/.storybook-static/assets/DropdownItem-DA6TdpDb.js +0 -1
- package/.storybook-static/assets/FormControl.mixin-DcEBwrV3.js +0 -1
- package/.storybook-static/assets/HashRouteModal.stories-BGxvqE22.js +0 -60
- package/.storybook-static/assets/HelloBar-CYEZR2kQ.js +0 -1
- package/.storybook-static/assets/HelloBar.stories-597Kxj0W.js +0 -342
- package/.storybook-static/assets/Icon-C17LFvsP.js +0 -145
- package/.storybook-static/assets/Icon.stories-B9iAmcTU.js +0 -151
- package/.storybook-static/assets/Icon.stories-CR5vT9H7.js +0 -791
- package/.storybook-static/assets/Loader-BWGoT_xC.js +0 -1
- package/.storybook-static/assets/LogoBusinessBrandColours-CExzox1Z.js +0 -1
- package/.storybook-static/assets/LogoBusinessBrandColours-CeAaMKke.css +0 -1
- package/.storybook-static/assets/LogoBusinessBrandColours.stories-kuxAH8B8.js +0 -36
- package/.storybook-static/assets/Masonry-C2MNiGg0.css +0 -1
- package/.storybook-static/assets/Masonry.stories-CTXJLQ_i.js +0 -71
- package/.storybook-static/assets/Modal-CGwEIF5R.css +0 -1
- package/.storybook-static/assets/Modal-CydTNprT.js +0 -1
- package/.storybook-static/assets/Modal.stories-DZiG5NGM.js +0 -345
- package/.storybook-static/assets/Notice.stories-ChOj8CWm.js +0 -222
- package/.storybook-static/assets/NumberStepper-Blffv09R.css +0 -1
- package/.storybook-static/assets/NumberStepper.stories-CVbKJ_oJ.js +0 -64
- package/.storybook-static/assets/PaymentConfigList-BpUMV6cp.css +0 -1
- package/.storybook-static/assets/PaymentConfigList.stories-DUD7OZBS.js +0 -130
- package/.storybook-static/assets/Picture-B8m1I9xN.js +0 -1
- package/.storybook-static/assets/Picture.stories-MMzybhJ6.js +0 -119
- package/.storybook-static/assets/Pill-DLXZ_TL8.js +0 -1
- package/.storybook-static/assets/Pill.stories-DCP7szJm.js +0 -18
- package/.storybook-static/assets/PillBar-os4mJV3M.css +0 -1
- package/.storybook-static/assets/PillBar.stories-Bry-zQ6f.js +0 -41
- package/.storybook-static/assets/Price-C4GZbDSa.js +0 -1
- package/.storybook-static/assets/Price.stories-CMHly9V0.js +0 -337
- package/.storybook-static/assets/PromoCard.stories-xsbFtADE.js +0 -299
- package/.storybook-static/assets/PublishBrandPageModal-Q9-mNG1q.css +0 -1
- package/.storybook-static/assets/PublishBrandPageModal.stories-C9XzW_1m.js +0 -324
- package/.storybook-static/assets/SearchBar.stories-DaIneOSz.js +0 -12
- package/.storybook-static/assets/Select-DnioWQmi.css +0 -1
- package/.storybook-static/assets/Select.stories-BmGYB4pw.js +0 -108
- package/.storybook-static/assets/SellDomainNameList.fixtures-LC6fjr_b.js +0 -1
- package/.storybook-static/assets/SellDomainNameListModal-DH6khE10.css +0 -1
- package/.storybook-static/assets/SellDomainNameListModal-ymtVclFP.js +0 -1
- package/.storybook-static/assets/SellDomainNameListModal.stories-DvGvylgx.js +0 -71
- package/.storybook-static/assets/SellDomainNameListSearchResult-Cpxq0jDA.css +0 -1
- package/.storybook-static/assets/SellDomainNameListSearchResult-D-1CrQyf.js +0 -1
- package/.storybook-static/assets/SellDomainNameSearchWithResults-bX--zu97.js +0 -1
- package/.storybook-static/assets/SellDomainNameSearchWithResults.stories-DRUJjSdH.js +0 -37
- package/.storybook-static/assets/SellDomainNameWidget.stories-CC3LX10s.js +0 -36
- package/.storybook-static/assets/SignIn-CPjf8_2O.css +0 -1
- package/.storybook-static/assets/SignIn-DI0DSDFe.js +0 -1
- package/.storybook-static/assets/Slider-Cog2FFdj.css +0 -1
- package/.storybook-static/assets/Slider.stories-B2KGwnJy.js +0 -141
- package/.storybook-static/assets/SparkleIcon.stories-Dk904hVE.js +0 -547
- package/.storybook-static/assets/StarRating-BtKh7pzm.css +0 -1
- package/.storybook-static/assets/StarRating.stories-d2mgOuo2.js +0 -45
- package/.storybook-static/assets/TabMenu.stories-Cg2yenqj.js +0 -47
- package/.storybook-static/assets/TextCopyField-B66NKTk_.js +0 -1
- package/.storybook-static/assets/TextCopyField.stories-B4_ZlfLU.js +0 -47
- package/.storybook-static/assets/TextInput-CMoUjT_5.js +0 -1
- package/.storybook-static/assets/TextInput.stories-oyyxxf3j.js +0 -233
- package/.storybook-static/assets/Textarea.stories-BvhZR6K2.js +0 -207
- package/.storybook-static/assets/Toggle.stories-yT5-rL2k.js +0 -161
- package/.storybook-static/assets/Tooltip-DyXIgFQH.css +0 -1
- package/.storybook-static/assets/Tooltip-ZukyujG5.js +0 -1
- package/.storybook-static/assets/Tooltip.stories-sJFylRS_.js +0 -953
- package/.storybook-static/assets/UploadYourLogoApplication-Dmw8QcH3.css +0 -1
- package/.storybook-static/assets/UploadYourLogoApplication.stories-C9AvzHO_.js +0 -186
- package/.storybook-static/assets/UploadYourLogoDropzone-B1ffcicv.js +0 -24
- package/.storybook-static/assets/UploadYourLogoDropzone-DQqACf-e.css +0 -1
- package/.storybook-static/assets/UploadYourLogoDropzone.stories-D1Dt2ord.js +0 -55
- package/.storybook-static/assets/UploadedLogoSearchResultCard.stories-D8oF1Yrx.js +0 -79
- package/.storybook-static/assets/WebsiteContextualUpgradeModal-8u1zOZrW.css +0 -1
- package/.storybook-static/assets/WebsiteContextualUpgradeModal.stories-mtcvWOAg.js +0 -211
- package/.storybook-static/assets/_commonjsHelpers-CE1G-McA.js +0 -1
- package/.storybook-static/assets/_plugin-vue_export-helper-DlAUqK2U.js +0 -1
- package/.storybook-static/assets/api-lSJGRrF2.js +0 -1
- package/.storybook-static/assets/axe-DrS73Vi2.js +0 -20
- package/.storybook-static/assets/brand-crowd-api.client-D45NKshX.js +0 -1
- package/.storybook-static/assets/bundled-translations-BoWhEDU_.js +0 -1
- package/.storybook-static/assets/bundled-translations.de-DE-C4lqla4O.js +0 -1
- package/.storybook-static/assets/bundled-translations.es-ES-BxMIllUH.js +0 -1
- package/.storybook-static/assets/bundled-translations.fr-CA-MxZpyz0w.js +0 -1
- package/.storybook-static/assets/bundled-translations.fr-FR-N7UPCZVr.js +0 -1
- package/.storybook-static/assets/bundled-translations.pt-BR-C8tscYuG.js +0 -1
- package/.storybook-static/assets/bundled-translations.pt-PT-Dszj5Xfa.js +0 -1
- package/.storybook-static/assets/carousel-BelyIYOK.css +0 -1
- package/.storybook-static/assets/carousel.stories-CJw3-Iy6.js +0 -668
- package/.storybook-static/assets/event-constants-CMO9VQVu.js +0 -1
- package/.storybook-static/assets/iframe-B3A6OXQU.js +0 -1104
- package/.storybook-static/assets/index-B-eiLVzF.js +0 -7
- package/.storybook-static/assets/index-QquxUozE.js +0 -6
- package/.storybook-static/assets/matchers-5TDFFDYO-HJu_DfWo.js +0 -14
- package/.storybook-static/assets/mediaQueryMixin-CISNqd93.js +0 -1
- package/.storybook-static/assets/preload-helper-PPVm8Dsz.js +0 -1
- package/.storybook-static/assets/tracking-ATsLLehC.js +0 -1
- package/.storybook-static/css/tailwind-brandCrowd.css +0 -2508
- package/.storybook-static/css/tailwind-brandPage.css +0 -2188
- package/.storybook-static/css/tailwind-crazyDomains.css +0 -2508
- package/.storybook-static/css/tailwind-designCom.css +0 -2508
- package/.storybook-static/css/tailwind-designCrowd.css +0 -2508
- package/.storybook-static/favicon-wrapper.svg +0 -46
- package/.storybook-static/favicon.svg +0 -1
- package/.storybook-static/iframe.html +0 -713
- package/.storybook-static/index.html +0 -148
- package/.storybook-static/index.json +0 -1
- package/.storybook-static/nunito-sans-bold-italic.woff2 +0 -0
- package/.storybook-static/nunito-sans-bold.woff2 +0 -0
- package/.storybook-static/nunito-sans-italic.woff2 +0 -0
- package/.storybook-static/nunito-sans-regular.woff2 +0 -0
- package/.storybook-static/project.json +0 -1
- package/.storybook-static/sb-addons/a11y-1/manager-bundle.js +0 -57
- package/.storybook-static/sb-addons/links-2/manager-bundle.js +0 -3
- package/.storybook-static/sb-addons/storybook-core-server-presets-0/common-manager-bundle.js +0 -628
- package/.storybook-static/sb-addons/themes-3/manager-bundle.js +0 -3
- package/.storybook-static/sb-common-assets/favicon-wrapper.svg +0 -46
- package/.storybook-static/sb-common-assets/favicon.svg +0 -1
- package/.storybook-static/sb-common-assets/nunito-sans-bold-italic.woff2 +0 -0
- package/.storybook-static/sb-common-assets/nunito-sans-bold.woff2 +0 -0
- package/.storybook-static/sb-common-assets/nunito-sans-italic.woff2 +0 -0
- package/.storybook-static/sb-common-assets/nunito-sans-regular.woff2 +0 -0
- package/.storybook-static/sb-manager/globals-runtime.js +0 -77935
- package/.storybook-static/sb-manager/globals.js +0 -24
- package/.storybook-static/sb-manager/manager-stores.js +0 -23
- package/.storybook-static/sb-manager/runtime.js +0 -20404
- package/.storybook-static/vite-inject-mocker-entry.js +0 -2
- package/docs/plans/2026-01-30-upgrade-vite7-storybook10-design.md +0 -177
- package/docs/plans/2026-01-30-upgrade-vite7-storybook10.md +0 -388
- package/public/css/tailwind-brandCrowd.css +0 -2508
- package/public/css/tailwind-brandPage.css +0 -2188
- package/public/css/tailwind-crazyDomains.css +0 -2508
- package/public/css/tailwind-designCom.css +0 -2508
- package/public/css/tailwind-designCrowd.css +0 -2508
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@designcrowd/fe-shared-lib",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.1",
|
|
4
4
|
"scripts": {
|
|
5
5
|
"start": "run-p storybook watch:translation",
|
|
6
6
|
"build": "npm run build:css --production",
|
|
7
|
-
"storybook": "export NODE_ENV=development && npm run storybook:css && npm run storybook:themes && storybook dev -p 6006",
|
|
7
|
+
"storybook": "export NODE_ENV=development && npm run storybook:css && npm run storybook:themes && storybook dev -p 6006 public",
|
|
8
8
|
"build:css": "node ./tailwind.build.js",
|
|
9
9
|
"build:storybook": "mkdir -p public && mkdir -p public/css && npm run storybook:css && storybook build -c .storybook -o .storybook-static && cp -R ./public/css .storybook-static/",
|
|
10
10
|
"bundle-translation": "node ./src/bundleTranslation.js",
|
|
@@ -20,62 +20,63 @@
|
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
22
|
"@nuxtjs/i18n": "9.5.4",
|
|
23
|
-
"autoprefixer": "10.4.
|
|
24
|
-
"axios": "1.
|
|
23
|
+
"autoprefixer": "10.4.17",
|
|
24
|
+
"axios": "1.6.7",
|
|
25
25
|
"click-outside-vue3": "4.0.1",
|
|
26
|
-
"core-js": "3.
|
|
26
|
+
"core-js": "3.35.1",
|
|
27
27
|
"cropperjs": "1.6.1",
|
|
28
28
|
"dropzone-vue3": "1.0.2",
|
|
29
|
-
"fs-extra": "11.
|
|
30
|
-
"i18next": "25.
|
|
29
|
+
"fs-extra": "11.2.0",
|
|
30
|
+
"i18next": "25.2.1",
|
|
31
31
|
"lodash.throttle": "4.1.1",
|
|
32
|
-
"postcss-loader": "8.
|
|
32
|
+
"postcss-loader": "8.1.0",
|
|
33
33
|
"swiper": "11.0.6",
|
|
34
34
|
"tailwindcss": "3.4.1",
|
|
35
|
-
"vite": "
|
|
36
|
-
"vite-plugin-
|
|
37
|
-
"vue": "
|
|
38
|
-
"vue
|
|
35
|
+
"vite": "6.3.5",
|
|
36
|
+
"vite-plugin-eslint": "1.8.1",
|
|
37
|
+
"vite-plugin-vue-devtools": "7.7.0",
|
|
38
|
+
"vue": "3.5.15",
|
|
39
|
+
"vue-color": "3.0.2",
|
|
39
40
|
"vue-cropperjs": "5.0.0",
|
|
40
41
|
"vue-observe-visibility": "1.0.0",
|
|
41
42
|
"vue-router": "4.5.0",
|
|
42
43
|
"yargs": "17.7.2"
|
|
43
44
|
},
|
|
44
45
|
"devDependencies": {
|
|
45
|
-
"@storybook/addon-a11y": "
|
|
46
|
-
"@storybook/addon-links": "
|
|
47
|
-
"@storybook/addon-themes": "
|
|
48
|
-
"@storybook/vue3": "
|
|
49
|
-
"@storybook/vue3-vite": "
|
|
50
|
-
"@vitejs/plugin-vue": "
|
|
51
|
-
"@vue/cli-plugin-eslint": "5.0.
|
|
52
|
-
"@vue/cli-service": "5.0.
|
|
46
|
+
"@storybook/addon-a11y": "9.0.4",
|
|
47
|
+
"@storybook/addon-links": "9.0.4",
|
|
48
|
+
"@storybook/addon-themes": "9.0.4",
|
|
49
|
+
"@storybook/vue3": "9.0.4",
|
|
50
|
+
"@storybook/vue3-vite": "9.0.4",
|
|
51
|
+
"@vitejs/plugin-vue": "5.2.4",
|
|
52
|
+
"@vue/cli-plugin-eslint": "5.0.8",
|
|
53
|
+
"@vue/cli-service": "5.0.8",
|
|
53
54
|
"@vue/eslint-config-airbnb": "8.0.0",
|
|
54
55
|
"@vue/eslint-config-prettier": "9.0.0",
|
|
55
56
|
"@vue/eslint-config-typescript": "12.0.0",
|
|
56
|
-
"@vue/test-utils": "2.4.
|
|
57
|
+
"@vue/test-utils": "2.4.4",
|
|
57
58
|
"axios-mock-adapter": "1.22.0",
|
|
58
59
|
"css-loader": "6.10.0",
|
|
59
60
|
"cssnano": "6.0.3",
|
|
60
61
|
"eslint": "8.56.0",
|
|
61
|
-
"eslint-plugin-prettier": "5.
|
|
62
|
-
"eslint-plugin-storybook": "
|
|
62
|
+
"eslint-plugin-prettier": "5.1.3",
|
|
63
|
+
"eslint-plugin-storybook": "0.8.0",
|
|
63
64
|
"eslint-plugin-vue": "9.21.1",
|
|
64
|
-
"husky": "9.
|
|
65
|
+
"husky": "9.0.10",
|
|
65
66
|
"lint-staged": "15.2.1",
|
|
66
|
-
"nodemon": "3.
|
|
67
|
+
"nodemon": "3.0.3",
|
|
67
68
|
"npm-run-all": "4.1.5",
|
|
68
|
-
"postcss": "8.
|
|
69
|
-
"postcss-cli": "11.0.
|
|
70
|
-
"postcss-import": "16.
|
|
69
|
+
"postcss": "8.4.33",
|
|
70
|
+
"postcss-cli": "11.0.0",
|
|
71
|
+
"postcss-import": "16.0.0",
|
|
71
72
|
"postcss-nested": "6.0.1",
|
|
72
|
-
"prettier": "3.
|
|
73
|
-
"storybook": "
|
|
73
|
+
"prettier": "3.2.4",
|
|
74
|
+
"storybook": "9.0.4",
|
|
74
75
|
"stylelint": "16.2.1",
|
|
75
76
|
"stylelint-config-standard": "36.0.0",
|
|
76
77
|
"tailwindcss": "3.4.1",
|
|
77
|
-
"ts-loader": "9.5.
|
|
78
|
-
"typescript": "5.
|
|
78
|
+
"ts-loader": "9.5.1",
|
|
79
|
+
"typescript": "5.3.3",
|
|
79
80
|
"vue-style-loader": "4.1.3",
|
|
80
81
|
"yargs": "17.7.2"
|
|
81
82
|
},
|
|
@@ -107,5 +108,8 @@
|
|
|
107
108
|
"./src/*.js": {
|
|
108
109
|
"import": "./src/*.js"
|
|
109
110
|
}
|
|
111
|
+
},
|
|
112
|
+
"overrides": {
|
|
113
|
+
"storybook": "$storybook"
|
|
110
114
|
}
|
|
111
115
|
}
|
|
@@ -0,0 +1,364 @@
|
|
|
1
|
+
import AiPoweredLoader from './AiPoweredLoader.vue';
|
|
2
|
+
|
|
3
|
+
export default {
|
|
4
|
+
title: 'Components/AiPoweredLoader',
|
|
5
|
+
component: AiPoweredLoader,
|
|
6
|
+
argTypes: {
|
|
7
|
+
size: {
|
|
8
|
+
control: { type: 'number', min: 16, max: 200, step: 8 },
|
|
9
|
+
description: 'Size of the loader in pixels (width and height)',
|
|
10
|
+
defaultValue: 96,
|
|
11
|
+
},
|
|
12
|
+
interval: {
|
|
13
|
+
control: { type: 'range', min: 50, max: 500, step: 50 },
|
|
14
|
+
description: 'Animation frame interval in milliseconds',
|
|
15
|
+
defaultValue: 150,
|
|
16
|
+
},
|
|
17
|
+
alt: {
|
|
18
|
+
control: 'text',
|
|
19
|
+
description: 'Alternative text for accessibility',
|
|
20
|
+
defaultValue: 'loading',
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
// Default story
|
|
26
|
+
export const Default = (args) => ({
|
|
27
|
+
components: { AiPoweredLoader },
|
|
28
|
+
setup() {
|
|
29
|
+
return { args };
|
|
30
|
+
},
|
|
31
|
+
template: '<AiPoweredLoader v-bind="args" />',
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
Default.args = {
|
|
35
|
+
size: 96,
|
|
36
|
+
interval: 150,
|
|
37
|
+
alt: 'loading',
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
// Size variations story
|
|
41
|
+
export const SizeVariations = () => ({
|
|
42
|
+
components: { AiPoweredLoader },
|
|
43
|
+
template: `
|
|
44
|
+
<div class="tw-flex tw-gap-8 tw-items-center tw-p-6">
|
|
45
|
+
<div class="tw-text-center">
|
|
46
|
+
<AiPoweredLoader :size="48" alt="Small loader" />
|
|
47
|
+
<p class="tw-text-xs tw-mt-2 tw-text-gray-600">Small (48px)</p>
|
|
48
|
+
</div>
|
|
49
|
+
<div class="tw-text-center">
|
|
50
|
+
<AiPoweredLoader :size="64" alt="Medium-small loader" />
|
|
51
|
+
<p class="tw-text-xs tw-mt-2 tw-text-gray-600">Medium-Small (64px)</p>
|
|
52
|
+
</div>
|
|
53
|
+
<div class="tw-text-center">
|
|
54
|
+
<AiPoweredLoader :size="96" alt="Default loader" />
|
|
55
|
+
<p class="tw-text-xs tw-mt-2 tw-text-gray-600">Default (96px)</p>
|
|
56
|
+
</div>
|
|
57
|
+
<div class="tw-text-center">
|
|
58
|
+
<AiPoweredLoader :size="128" alt="Large loader" />
|
|
59
|
+
<p class="tw-text-xs tw-mt-2 tw-text-gray-600">Large (128px)</p>
|
|
60
|
+
</div>
|
|
61
|
+
<div class="tw-text-center">
|
|
62
|
+
<AiPoweredLoader :size="160" alt="Extra large loader" />
|
|
63
|
+
<p class="tw-text-xs tw-mt-2 tw-text-gray-600">Extra Large (160px)</p>
|
|
64
|
+
</div>
|
|
65
|
+
</div>
|
|
66
|
+
`,
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
SizeVariations.story = {
|
|
70
|
+
name: 'Size Variations',
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
// Speed variations story
|
|
74
|
+
export const SpeedVariations = () => ({
|
|
75
|
+
components: { AiPoweredLoader },
|
|
76
|
+
template: `
|
|
77
|
+
<div class="tw-p-6">
|
|
78
|
+
<h3 class="tw-text-lg tw-font-bold tw-mb-4">Animation Speed Variations</h3>
|
|
79
|
+
<div class="tw-flex tw-gap-8 tw-items-center">
|
|
80
|
+
<div class="tw-text-center">
|
|
81
|
+
<AiPoweredLoader :interval="75" alt="Fast animation" />
|
|
82
|
+
<p class="tw-text-xs tw-mt-2 tw-text-gray-600">Fast (75ms)</p>
|
|
83
|
+
</div>
|
|
84
|
+
<div class="tw-text-center">
|
|
85
|
+
<AiPoweredLoader :interval="150" alt="Normal animation" />
|
|
86
|
+
<p class="tw-text-xs tw-mt-2 tw-text-gray-600">Normal (150ms)</p>
|
|
87
|
+
</div>
|
|
88
|
+
<div class="tw-text-center">
|
|
89
|
+
<AiPoweredLoader :interval="300" alt="Slow animation" />
|
|
90
|
+
<p class="tw-text-xs tw-mt-2 tw-text-gray-600">Slow (300ms)</p>
|
|
91
|
+
</div>
|
|
92
|
+
</div>
|
|
93
|
+
</div>
|
|
94
|
+
`,
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
SpeedVariations.story = {
|
|
98
|
+
name: 'Animation Speed',
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
// Common use cases story
|
|
102
|
+
export const CommonUseCases = () => ({
|
|
103
|
+
components: { AiPoweredLoader },
|
|
104
|
+
template: `
|
|
105
|
+
<div class="tw-p-6 tw-space-y-8">
|
|
106
|
+
<!-- Inline loader -->
|
|
107
|
+
<div class="tw-border tw-rounded-lg tw-p-4">
|
|
108
|
+
<h4 class="tw-text-md tw-font-semibold tw-mb-3">Inline Button Loader</h4>
|
|
109
|
+
<div class="tw-flex tw-items-center tw-gap-3">
|
|
110
|
+
<button class="tw-px-4 tw-py-2 tw-bg-primary-500 tw-text-white tw-rounded tw-flex tw-items-center tw-gap-2">
|
|
111
|
+
<AiPoweredLoader :size="20" :interval="100" alt="Processing" />
|
|
112
|
+
Processing...
|
|
113
|
+
</button>
|
|
114
|
+
</div>
|
|
115
|
+
</div>
|
|
116
|
+
|
|
117
|
+
<!-- Card loader -->
|
|
118
|
+
<div class="tw-border tw-rounded-lg tw-p-4">
|
|
119
|
+
<h4 class="tw-text-md tw-font-semibold tw-mb-3">Card Loading State</h4>
|
|
120
|
+
<div class="tw-bg-gray-50 tw-rounded tw-p-6 tw-flex tw-flex-col tw-items-center tw-justify-center tw-min-h-[200px]">
|
|
121
|
+
<AiPoweredLoader :size="80" alt="Loading content" />
|
|
122
|
+
<p class="tw-mt-4 tw-text-gray-600">Loading your content...</p>
|
|
123
|
+
</div>
|
|
124
|
+
</div>
|
|
125
|
+
|
|
126
|
+
<!-- Page loader -->
|
|
127
|
+
<div class="tw-border tw-rounded-lg tw-p-4">
|
|
128
|
+
<h4 class="tw-text-md tw-font-semibold tw-mb-3">Full Page Loader</h4>
|
|
129
|
+
<div class="tw-bg-white tw-rounded tw-p-12 tw-flex tw-flex-col tw-items-center tw-justify-center tw-min-h-[300px] tw-border-2 tw-border-dashed tw-border-gray-300">
|
|
130
|
+
<AiPoweredLoader :size="120" alt="Loading page" />
|
|
131
|
+
<p class="tw-mt-6 tw-text-xl tw-text-gray-700">AI is working its magic...</p>
|
|
132
|
+
<p class="tw-text-sm tw-text-gray-500 tw-mt-2">This may take a few moments</p>
|
|
133
|
+
</div>
|
|
134
|
+
</div>
|
|
135
|
+
</div>
|
|
136
|
+
`,
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
CommonUseCases.story = {
|
|
140
|
+
name: 'Common Use Cases',
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
// Interactive size control story
|
|
144
|
+
export const InteractiveSize = () => ({
|
|
145
|
+
components: { AiPoweredLoader },
|
|
146
|
+
data() {
|
|
147
|
+
return {
|
|
148
|
+
currentSize: 96,
|
|
149
|
+
currentInterval: 150,
|
|
150
|
+
};
|
|
151
|
+
},
|
|
152
|
+
template: `
|
|
153
|
+
<div class="tw-p-6">
|
|
154
|
+
<h3 class="tw-text-lg tw-font-bold tw-mb-4">Interactive Size Control</h3>
|
|
155
|
+
|
|
156
|
+
<!-- Controls -->
|
|
157
|
+
<div class="tw-mb-6 tw-space-y-4">
|
|
158
|
+
<div class="tw-flex tw-items-center tw-gap-4">
|
|
159
|
+
<label class="tw-text-sm tw-font-medium tw-w-20">Size:</label>
|
|
160
|
+
<input
|
|
161
|
+
type="range"
|
|
162
|
+
min="32"
|
|
163
|
+
max="200"
|
|
164
|
+
step="8"
|
|
165
|
+
v-model="currentSize"
|
|
166
|
+
class="tw-flex-1 tw-max-w-xs"
|
|
167
|
+
/>
|
|
168
|
+
<span class="tw-text-sm tw-text-gray-600 tw-w-16">{{ currentSize }}px</span>
|
|
169
|
+
</div>
|
|
170
|
+
|
|
171
|
+
<div class="tw-flex tw-items-center tw-gap-4">
|
|
172
|
+
<label class="tw-text-sm tw-font-medium tw-w-20">Speed:</label>
|
|
173
|
+
<input
|
|
174
|
+
type="range"
|
|
175
|
+
min="50"
|
|
176
|
+
max="500"
|
|
177
|
+
step="25"
|
|
178
|
+
v-model="currentInterval"
|
|
179
|
+
class="tw-flex-1 tw-max-w-xs"
|
|
180
|
+
/>
|
|
181
|
+
<span class="tw-text-sm tw-text-gray-600 tw-w-16">{{ currentInterval }}ms</span>
|
|
182
|
+
</div>
|
|
183
|
+
</div>
|
|
184
|
+
|
|
185
|
+
<!-- Preview -->
|
|
186
|
+
<div class="tw-flex tw-items-center tw-justify-center tw-p-8 tw-bg-gray-50 tw-rounded-lg">
|
|
187
|
+
<AiPoweredLoader
|
|
188
|
+
:size="currentSize"
|
|
189
|
+
:interval="currentInterval"
|
|
190
|
+
alt="Interactive loader preview"
|
|
191
|
+
/>
|
|
192
|
+
</div>
|
|
193
|
+
|
|
194
|
+
<p class="tw-text-sm tw-text-gray-600 tw-mt-4">
|
|
195
|
+
Use the sliders above to adjust the loader size and animation speed in real-time.
|
|
196
|
+
</p>
|
|
197
|
+
</div>
|
|
198
|
+
`,
|
|
199
|
+
});
|
|
200
|
+
|
|
201
|
+
InteractiveSize.story = {
|
|
202
|
+
name: 'Interactive Controls',
|
|
203
|
+
};
|
|
204
|
+
|
|
205
|
+
// Comparison with traditional loader story
|
|
206
|
+
export const LoaderComparison = () => ({
|
|
207
|
+
components: { AiPoweredLoader },
|
|
208
|
+
template: `
|
|
209
|
+
<div class="tw-p-6">
|
|
210
|
+
<h3 class="tw-text-lg tw-font-bold tw-mb-6">AI-Powered vs Traditional Loaders</h3>
|
|
211
|
+
|
|
212
|
+
<div class="tw-grid tw-grid-cols-1 md:tw-grid-cols-2 tw-gap-8">
|
|
213
|
+
<!-- AI Powered Loader -->
|
|
214
|
+
<div class="tw-border tw-rounded-lg tw-p-6 tw-text-center">
|
|
215
|
+
<h4 class="tw-text-md tw-font-semibold tw-mb-4 tw-text-purple-600">AI-Powered Loader</h4>
|
|
216
|
+
<div class="tw-flex tw-justify-center tw-mb-4">
|
|
217
|
+
<AiPoweredLoader :size="96" alt="AI-powered loader" />
|
|
218
|
+
</div>
|
|
219
|
+
<ul class="tw-text-sm tw-text-gray-600 tw-space-y-1 tw-text-left">
|
|
220
|
+
<li>• Modern sparkle animation</li>
|
|
221
|
+
<li>• Customizable size</li>
|
|
222
|
+
<li>• Smooth gradient transitions</li>
|
|
223
|
+
<li>• Configurable speed</li>
|
|
224
|
+
<li>• Accessibility support</li>
|
|
225
|
+
</ul>
|
|
226
|
+
</div>
|
|
227
|
+
|
|
228
|
+
<!-- Traditional Loader -->
|
|
229
|
+
<div class="tw-border tw-rounded-lg tw-p-6 tw-text-center">
|
|
230
|
+
<h4 class="tw-text-md tw-font-semibold tw-mb-4 tw-text-gray-600">Traditional GIF Loader</h4>
|
|
231
|
+
<div class="tw-flex tw-justify-center tw-mb-4">
|
|
232
|
+
<img
|
|
233
|
+
src="https://dcstatic.com/images/brandcrowd/on-boarding/loading/preloader-1-d1cc0b885f.gif"
|
|
234
|
+
alt="Traditional loading GIF"
|
|
235
|
+
class="tw-block"
|
|
236
|
+
style="width: 96px; height: auto;"
|
|
237
|
+
/>
|
|
238
|
+
</div>
|
|
239
|
+
<ul class="tw-text-sm tw-text-gray-600 tw-space-y-1 tw-text-left">
|
|
240
|
+
<li>• Fixed GIF animation</li>
|
|
241
|
+
<li>• Static sizing</li>
|
|
242
|
+
<li>• Limited customization</li>
|
|
243
|
+
<li>• Larger file size</li>
|
|
244
|
+
<li>• Less modern appearance</li>
|
|
245
|
+
</ul>
|
|
246
|
+
</div>
|
|
247
|
+
</div>
|
|
248
|
+
|
|
249
|
+
<div class="tw-mt-6 tw-p-4 tw-bg-purple-50 tw-rounded-lg">
|
|
250
|
+
<p class="tw-text-sm tw-text-purple-800">
|
|
251
|
+
<strong>✨ Pro Tip:</strong> The AI-Powered Loader provides better performance, smaller bundle size,
|
|
252
|
+
and complete customization while maintaining a modern, engaging user experience.
|
|
253
|
+
</p>
|
|
254
|
+
</div>
|
|
255
|
+
</div>
|
|
256
|
+
`,
|
|
257
|
+
});
|
|
258
|
+
|
|
259
|
+
LoaderComparison.story = {
|
|
260
|
+
name: 'Loader Comparison',
|
|
261
|
+
};
|
|
262
|
+
|
|
263
|
+
// Showcase story
|
|
264
|
+
export const Showcase = () => ({
|
|
265
|
+
components: { AiPoweredLoader },
|
|
266
|
+
template: `
|
|
267
|
+
<div class="tw-p-6">
|
|
268
|
+
<h3 class="tw-text-lg tw-font-bold tw-mb-4">AI-Powered Loader Showcase</h3>
|
|
269
|
+
|
|
270
|
+
<div class="tw-space-y-8">
|
|
271
|
+
<!-- Size Showcase -->
|
|
272
|
+
<div class="tw-border tw-rounded-lg tw-p-6">
|
|
273
|
+
<h4 class="tw-text-md tw-font-semibold tw-mb-4">Size Range</h4>
|
|
274
|
+
<div class="tw-flex tw-gap-6 tw-items-end tw-justify-center">
|
|
275
|
+
<div class="tw-text-center">
|
|
276
|
+
<AiPoweredLoader :size="32" alt="Tiny loader" />
|
|
277
|
+
<p class="tw-text-xs tw-mt-2 tw-text-gray-600">32px</p>
|
|
278
|
+
</div>
|
|
279
|
+
<div class="tw-text-center">
|
|
280
|
+
<AiPoweredLoader :size="48" alt="Small loader" />
|
|
281
|
+
<p class="tw-text-xs tw-mt-2 tw-text-gray-600">48px</p>
|
|
282
|
+
</div>
|
|
283
|
+
<div class="tw-text-center">
|
|
284
|
+
<AiPoweredLoader :size="64" alt="Medium loader" />
|
|
285
|
+
<p class="tw-text-xs tw-mt-2 tw-text-gray-600">64px</p>
|
|
286
|
+
</div>
|
|
287
|
+
<div class="tw-text-center">
|
|
288
|
+
<AiPoweredLoader :size="96" alt="Default loader" />
|
|
289
|
+
<p class="tw-text-xs tw-mt-2 tw-text-gray-600">96px (default)</p>
|
|
290
|
+
</div>
|
|
291
|
+
<div class="tw-text-center">
|
|
292
|
+
<AiPoweredLoader :size="128" alt="Large loader" />
|
|
293
|
+
<p class="tw-text-xs tw-mt-2 tw-text-gray-600">128px</p>
|
|
294
|
+
</div>
|
|
295
|
+
<div class="tw-text-center">
|
|
296
|
+
<AiPoweredLoader :size="180" alt="Extra large loader" />
|
|
297
|
+
<p class="tw-text-xs tw-mt-2 tw-text-gray-600">180px</p>
|
|
298
|
+
</div>
|
|
299
|
+
</div>
|
|
300
|
+
</div>
|
|
301
|
+
|
|
302
|
+
<!-- Speed Showcase -->
|
|
303
|
+
<div class="tw-border tw-rounded-lg tw-p-6">
|
|
304
|
+
<h4 class="tw-text-md tw-font-semibold tw-mb-4">Animation Speeds</h4>
|
|
305
|
+
<div class="tw-flex tw-gap-8 tw-items-center tw-justify-center">
|
|
306
|
+
<div class="tw-text-center">
|
|
307
|
+
<AiPoweredLoader :size="80" :interval="50" alt="Very fast loader" />
|
|
308
|
+
<p class="tw-text-xs tw-mt-2 tw-text-gray-600">Very Fast (50ms)</p>
|
|
309
|
+
</div>
|
|
310
|
+
<div class="tw-text-center">
|
|
311
|
+
<AiPoweredLoader :size="80" :interval="100" alt="Fast loader" />
|
|
312
|
+
<p class="tw-text-xs tw-mt-2 tw-text-gray-600">Fast (100ms)</p>
|
|
313
|
+
</div>
|
|
314
|
+
<div class="tw-text-center">
|
|
315
|
+
<AiPoweredLoader :size="80" :interval="150" alt="Normal loader" />
|
|
316
|
+
<p class="tw-text-xs tw-mt-2 tw-text-gray-600">Normal (150ms)</p>
|
|
317
|
+
</div>
|
|
318
|
+
<div class="tw-text-center">
|
|
319
|
+
<AiPoweredLoader :size="80" :interval="250" alt="Slow loader" />
|
|
320
|
+
<p class="tw-text-xs tw-mt-2 tw-text-gray-600">Slow (250ms)</p>
|
|
321
|
+
</div>
|
|
322
|
+
</div>
|
|
323
|
+
</div>
|
|
324
|
+
|
|
325
|
+
<!-- Context Examples -->
|
|
326
|
+
<div class="tw-border tw-rounded-lg tw-p-6">
|
|
327
|
+
<h4 class="tw-text-md tw-font-semibold tw-mb-4">Real-World Examples</h4>
|
|
328
|
+
<div class="tw-grid tw-grid-cols-1 md:tw-grid-cols-3 tw-gap-6">
|
|
329
|
+
<!-- Button context -->
|
|
330
|
+
<div class="tw-bg-gray-50 tw-p-4 tw-rounded tw-text-center">
|
|
331
|
+
<p class="tw-text-sm tw-font-medium tw-mb-3">Button Context</p>
|
|
332
|
+
<button class="tw-px-4 tw-py-2 tw-bg-primary-500 tw-text-white tw-rounded tw-flex tw-items-center tw-gap-2 tw-mx-auto">
|
|
333
|
+
<AiPoweredLoader :size="18" :interval="120" alt="Button loading" />
|
|
334
|
+
Loading...
|
|
335
|
+
</button>
|
|
336
|
+
</div>
|
|
337
|
+
|
|
338
|
+
<!-- Card context -->
|
|
339
|
+
<div class="tw-bg-gray-50 tw-p-4 tw-rounded tw-text-center">
|
|
340
|
+
<p class="tw-text-sm tw-font-medium tw-mb-3">Card Loading</p>
|
|
341
|
+
<div class="tw-bg-white tw-p-4 tw-rounded tw-shadow-sm">
|
|
342
|
+
<AiPoweredLoader :size="60" alt="Card loading" />
|
|
343
|
+
<p class="tw-text-sm tw-text-gray-600 tw-mt-2">Loading data...</p>
|
|
344
|
+
</div>
|
|
345
|
+
</div>
|
|
346
|
+
|
|
347
|
+
<!-- Full screen context -->
|
|
348
|
+
<div class="tw-bg-gray-50 tw-p-4 tw-rounded tw-text-center">
|
|
349
|
+
<p class="tw-text-sm tw-font-medium tw-mb-3">Page Loading</p>
|
|
350
|
+
<div class="tw-bg-white tw-p-6 tw-rounded tw-shadow-sm tw-min-h-[120px] tw-flex tw-flex-col tw-justify-center">
|
|
351
|
+
<AiPoweredLoader :size="80" alt="Page loading" />
|
|
352
|
+
<p class="tw-text-sm tw-text-gray-600 tw-mt-3">Please wait...</p>
|
|
353
|
+
</div>
|
|
354
|
+
</div>
|
|
355
|
+
</div>
|
|
356
|
+
</div>
|
|
357
|
+
</div>
|
|
358
|
+
</div>
|
|
359
|
+
`,
|
|
360
|
+
});
|
|
361
|
+
|
|
362
|
+
Showcase.story = {
|
|
363
|
+
name: 'Complete Showcase',
|
|
364
|
+
};
|