@bloomneo/uikit 1.5.0
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/CHANGELOG.md +222 -0
- package/LICENSE +21 -0
- package/README.md +513 -0
- package/bin/commands/build.js +232 -0
- package/bin/commands/bundle.js +587 -0
- package/bin/commands/create.js +768 -0
- package/bin/commands/deploy.js +533 -0
- package/bin/commands/generate.js +673 -0
- package/bin/commands/optimize.js +198 -0
- package/bin/commands/prerender.js +306 -0
- package/bin/commands/serve.js +216 -0
- package/bin/templates/fbca/README.md.template +130 -0
- package/bin/templates/fbca/docs/QUICKSTART_FBCA.md +368 -0
- package/bin/templates/fbca/docs/UIKIT_CLI_GUIDE.md +574 -0
- package/bin/templates/fbca/docs/UIKIT_COMPOSITE_UI_SYSTEM.md +649 -0
- package/bin/templates/fbca/docs/UIKIT_LLM_GUIDE.md +2055 -0
- package/bin/templates/fbca/docs/UIKIT_THEME_GUIDE.md +359 -0
- package/bin/templates/fbca/package.json.template +41 -0
- package/bin/templates/fbca/public/favicon.svg +10 -0
- package/bin/templates/fbca/public/hero_fbca.svg +1 -0
- package/bin/templates/fbca/src/utils/asset.ts +6 -0
- package/bin/templates/fbca/src/web/App.tsx.template +20 -0
- package/bin/templates/fbca/src/web/features/auth/pages/index.tsx.template +157 -0
- package/bin/templates/fbca/src/web/features/docs/pages/[...slug].tsx.template +83 -0
- package/bin/templates/fbca/src/web/features/gallery/hooks/useGallery.ts.template +74 -0
- package/bin/templates/fbca/src/web/features/gallery/pages/index.tsx.template +136 -0
- package/bin/templates/fbca/src/web/features/main/components/CTASection.tsx.template +43 -0
- package/bin/templates/fbca/src/web/features/main/pages/About.tsx.template +374 -0
- package/bin/templates/fbca/src/web/features/main/pages/index.tsx.template +214 -0
- package/bin/templates/fbca/src/web/index.html.template +15 -0
- package/bin/templates/fbca/src/web/lib/page-router.tsx.template +134 -0
- package/bin/templates/fbca/src/web/main.tsx.template +14 -0
- package/bin/templates/fbca/src/web/shared/components/Footer.tsx.template +57 -0
- package/bin/templates/fbca/src/web/shared/components/Header.tsx.template +91 -0
- package/bin/templates/fbca/src/web/shared/components/SEO.tsx.template +24 -0
- package/bin/templates/fbca/src/web/shared/components/index.ts.template +3 -0
- package/bin/templates/fbca/src/web/shared/hooks/useSEO.ts.template +85 -0
- package/bin/templates/fbca/src/web/shared/utils/asset.ts +6 -0
- package/bin/templates/fbca/src/web/styles/index.css.template +8 -0
- package/bin/templates/fbca/src/web/utils/asset.ts +6 -0
- package/bin/templates/fbca/tsconfig.json.template +32 -0
- package/bin/templates/fbca/tsconfig.node.json.template +10 -0
- package/bin/templates/fbca/vite.config.ts.template +38 -0
- package/bin/templates/generate/component/component.tsx.template +79 -0
- package/bin/templates/generate/component/index.ts.template +2 -0
- package/bin/templates/generate/component/types.ts.template +58 -0
- package/bin/templates/generate/feature/index.ts.template +14 -0
- package/bin/templates/generate/feature/list-page.tsx.template +34 -0
- package/bin/templates/generate/feature/main-component.tsx.template +37 -0
- package/bin/templates/generate/feature/main-page.tsx.template +30 -0
- package/bin/templates/generate/feature/types.ts.template +34 -0
- package/bin/templates/generate/hook/hook.ts.template +35 -0
- package/bin/templates/generate/index.css.template +10 -0
- package/bin/templates/generate/main.tsx.template +10 -0
- package/bin/templates/generate/page/index.ts.template +2 -0
- package/bin/templates/generate/page/page.tsx.template +86 -0
- package/bin/templates/generate/theme/README.md +31 -0
- package/bin/templates/generate/theme/theme.js.template +155 -0
- package/bin/templates/multi/README.md.template +120 -0
- package/bin/templates/multi/docs/QUICKSTART_MULTI.md +334 -0
- package/bin/templates/multi/docs/UIKIT_CLI_GUIDE.md +574 -0
- package/bin/templates/multi/docs/UIKIT_COMPOSITE_UI_SYSTEM.md +649 -0
- package/bin/templates/multi/docs/UIKIT_LLM_GUIDE.md +2055 -0
- package/bin/templates/multi/docs/UIKIT_THEME_GUIDE.md +359 -0
- package/bin/templates/multi/index.html.template +58 -0
- package/bin/templates/multi/package.json.template +35 -0
- package/bin/templates/multi/public/favicon.svg +10 -0
- package/bin/templates/multi/public/hero_multi.svg +1 -0
- package/bin/templates/multi/src/App.tsx.template +92 -0
- package/bin/templates/multi/src/components/Footer.tsx.template +58 -0
- package/bin/templates/multi/src/components/Header.tsx.template +103 -0
- package/bin/templates/multi/src/components/SEO.tsx.template +19 -0
- package/bin/templates/multi/src/components/index.ts.template +3 -0
- package/bin/templates/multi/src/hooks/useSEO.ts.template +38 -0
- package/bin/templates/multi/src/index.css.template +7 -0
- package/bin/templates/multi/src/main.tsx.template +14 -0
- package/bin/templates/multi/src/pages/About.tsx.template +276 -0
- package/bin/templates/multi/src/pages/Components.tsx.template +288 -0
- package/bin/templates/multi/src/pages/Contact.tsx.template +348 -0
- package/bin/templates/multi/src/pages/Dashboard.tsx.template +306 -0
- package/bin/templates/multi/src/pages/ErrorPage.tsx.template +37 -0
- package/bin/templates/multi/src/pages/Home.tsx.template +201 -0
- package/bin/templates/multi/src/pages/Login.tsx.template +148 -0
- package/bin/templates/multi/src/pages/Themes.tsx.template +207 -0
- package/bin/templates/multi/src/router.tsx.template +34 -0
- package/bin/templates/multi/src/utils/asset.ts +6 -0
- package/bin/templates/multi/tsconfig.json.template +30 -0
- package/bin/templates/multi/tsconfig.node.json +22 -0
- package/bin/templates/multi/vite.config.ts.template +36 -0
- package/bin/templates/single/README.md.template +131 -0
- package/bin/templates/single/docs/QUICKSTART_SINGLE.md +259 -0
- package/bin/templates/single/docs/UIKIT_CLI_GUIDE.md +574 -0
- package/bin/templates/single/docs/UIKIT_COMPOSITE_UI_SYSTEM.md +649 -0
- package/bin/templates/single/docs/UIKIT_LLM_GUIDE.md +2055 -0
- package/bin/templates/single/docs/UIKIT_THEME_GUIDE.md +359 -0
- package/bin/templates/single/index.html.template +37 -0
- package/bin/templates/single/package.json.template +34 -0
- package/bin/templates/single/public/favicon.svg +10 -0
- package/bin/templates/single/public/hero.svg +1 -0
- package/bin/templates/single/src/App.tsx.template +233 -0
- package/bin/templates/single/src/index.css.template +7 -0
- package/bin/templates/single/src/main.tsx.template +14 -0
- package/bin/templates/single/src/styles/fonts.css +99 -0
- package/bin/templates/single/src/utils/asset.ts +6 -0
- package/bin/templates/single/tsconfig.json +31 -0
- package/bin/templates/single/tsconfig.node.json +22 -0
- package/bin/templates/single/vite.config.ts.template +36 -0
- package/bin/templates/spa/README.md.template +105 -0
- package/bin/templates/spa/components/SEO.tsx.template +19 -0
- package/bin/templates/spa/docs/QUICKSTART_SPA.md +300 -0
- package/bin/templates/spa/docs/UIKIT_CLI_GUIDE.md +574 -0
- package/bin/templates/spa/docs/UIKIT_COMPOSITE_UI_SYSTEM.md +649 -0
- package/bin/templates/spa/docs/UIKIT_LLM_GUIDE.md +2055 -0
- package/bin/templates/spa/docs/UIKIT_THEME_GUIDE.md +359 -0
- package/bin/templates/spa/hooks/useSEO.ts.template +38 -0
- package/bin/templates/spa/index.html.template +58 -0
- package/bin/templates/spa/package.json.template +35 -0
- package/bin/templates/spa/public/favicon.svg +15 -0
- package/bin/templates/spa/public/hero_spa.svg +1 -0
- package/bin/templates/spa/src/App.tsx.template +659 -0
- package/bin/templates/spa/src/index.css.template +7 -0
- package/bin/templates/spa/src/main.tsx.template +14 -0
- package/bin/templates/spa/src/utils/asset.ts +6 -0
- package/bin/templates/spa/tsconfig.json.template +30 -0
- package/bin/templates/spa/tsconfig.node.json +22 -0
- package/bin/templates/spa/vite.config.ts.template +36 -0
- package/bin/uikit.js +133 -0
- package/cookbook/README.md +20 -0
- package/cookbook/crud-page.tsx +99 -0
- package/cookbook/dashboard.tsx +89 -0
- package/cookbook/delete-flow.tsx +59 -0
- package/cookbook/login.tsx +85 -0
- package/cookbook/settings.tsx +113 -0
- package/dist/Combination-C0DFrmJW.js +674 -0
- package/dist/Combination-C0DFrmJW.js.map +1 -0
- package/dist/accordion.js +284 -0
- package/dist/accordion.js.map +1 -0
- package/dist/admin.js +429 -0
- package/dist/admin.js.map +1 -0
- package/dist/alert.js +67 -0
- package/dist/alert.js.map +1 -0
- package/dist/auth.js +178 -0
- package/dist/auth.js.map +1 -0
- package/dist/avatar.js +249 -0
- package/dist/avatar.js.map +1 -0
- package/dist/badge.js +40 -0
- package/dist/badge.js.map +1 -0
- package/dist/blank.js +80 -0
- package/dist/blank.js.map +1 -0
- package/dist/breadcrumb.js +104 -0
- package/dist/breadcrumb.js.map +1 -0
- package/dist/button.js +50 -0
- package/dist/button.js.map +1 -0
- package/dist/calendar.js +2785 -0
- package/dist/calendar.js.map +1 -0
- package/dist/card.js +91 -0
- package/dist/card.js.map +1 -0
- package/dist/check-DXouwtzp.js +12 -0
- package/dist/check-DXouwtzp.js.map +1 -0
- package/dist/checkbox.js +268 -0
- package/dist/checkbox.js.map +1 -0
- package/dist/chevron-down-BORJtX8F.js +14 -0
- package/dist/chevron-down-BORJtX8F.js.map +1 -0
- package/dist/chevron-left-C1pkx4AF.js +14 -0
- package/dist/chevron-left-C1pkx4AF.js.map +1 -0
- package/dist/chevron-right-pz9eCjj-.js +14 -0
- package/dist/chevron-right-pz9eCjj-.js.map +1 -0
- package/dist/circle-DHOdTDQh.js +14 -0
- package/dist/circle-DHOdTDQh.js.map +1 -0
- package/dist/collapsible.js +35 -0
- package/dist/collapsible.js.map +1 -0
- package/dist/command.js +481 -0
- package/dist/command.js.map +1 -0
- package/dist/confirm-dialog.js +129 -0
- package/dist/confirm-dialog.js.map +1 -0
- package/dist/container.js +334 -0
- package/dist/container.js.map +1 -0
- package/dist/createLucideIcon-B45kRl5r.js +80 -0
- package/dist/createLucideIcon-B45kRl5r.js.map +1 -0
- package/dist/data-table.js +574 -0
- package/dist/data-table.js.map +1 -0
- package/dist/detail-page.js +454 -0
- package/dist/detail-page.js.map +1 -0
- package/dist/dialog.js +137 -0
- package/dist/dialog.js.map +1 -0
- package/dist/dropdown-menu.js +424 -0
- package/dist/dropdown-menu.js.map +1 -0
- package/dist/ellipsis-BhAoKPVk.js +16 -0
- package/dist/ellipsis-BhAoKPVk.js.map +1 -0
- package/dist/empty-state.js +54 -0
- package/dist/empty-state.js.map +1 -0
- package/dist/errors.js +36 -0
- package/dist/errors.js.map +1 -0
- package/dist/eye-DDKoW0KS.js +46 -0
- package/dist/eye-DDKoW0KS.js.map +1 -0
- package/dist/fonts/caveat-cyrillic-400-normal.woff +0 -0
- package/dist/fonts/caveat-cyrillic-400-normal.woff2 +0 -0
- package/dist/fonts/caveat-cyrillic-700-normal.woff +0 -0
- package/dist/fonts/caveat-cyrillic-700-normal.woff2 +0 -0
- package/dist/fonts/caveat-cyrillic-ext-400-normal.woff +0 -0
- package/dist/fonts/caveat-cyrillic-ext-400-normal.woff2 +0 -0
- package/dist/fonts/caveat-cyrillic-ext-700-normal.woff +0 -0
- package/dist/fonts/caveat-cyrillic-ext-700-normal.woff2 +0 -0
- package/dist/fonts/caveat-latin-400-normal.woff +0 -0
- package/dist/fonts/caveat-latin-400-normal.woff2 +0 -0
- package/dist/fonts/caveat-latin-700-normal.woff +0 -0
- package/dist/fonts/caveat-latin-700-normal.woff2 +0 -0
- package/dist/fonts/caveat-latin-ext-400-normal.woff +0 -0
- package/dist/fonts/caveat-latin-ext-400-normal.woff2 +0 -0
- package/dist/fonts/caveat-latin-ext-700-normal.woff +0 -0
- package/dist/fonts/caveat-latin-ext-700-normal.woff2 +0 -0
- package/dist/fonts/crimson-text-latin-400-normal.woff +0 -0
- package/dist/fonts/crimson-text-latin-400-normal.woff2 +0 -0
- package/dist/fonts/crimson-text-latin-600-normal.woff +0 -0
- package/dist/fonts/crimson-text-latin-600-normal.woff2 +0 -0
- package/dist/fonts/crimson-text-latin-700-normal.woff +0 -0
- package/dist/fonts/crimson-text-latin-700-normal.woff2 +0 -0
- package/dist/fonts/crimson-text-latin-ext-400-normal.woff +0 -0
- package/dist/fonts/crimson-text-latin-ext-400-normal.woff2 +0 -0
- package/dist/fonts/crimson-text-latin-ext-600-normal.woff +0 -0
- package/dist/fonts/crimson-text-latin-ext-600-normal.woff2 +0 -0
- package/dist/fonts/crimson-text-latin-ext-700-normal.woff +0 -0
- package/dist/fonts/crimson-text-latin-ext-700-normal.woff2 +0 -0
- package/dist/fonts/crimson-text-vietnamese-400-normal.woff +0 -0
- package/dist/fonts/crimson-text-vietnamese-400-normal.woff2 +0 -0
- package/dist/fonts/crimson-text-vietnamese-600-normal.woff +0 -0
- package/dist/fonts/crimson-text-vietnamese-600-normal.woff2 +0 -0
- package/dist/fonts/crimson-text-vietnamese-700-normal.woff +0 -0
- package/dist/fonts/crimson-text-vietnamese-700-normal.woff2 +0 -0
- package/dist/fonts/dm-serif-display-latin-400-normal.woff +0 -0
- package/dist/fonts/dm-serif-display-latin-400-normal.woff2 +0 -0
- package/dist/fonts/dm-serif-display-latin-ext-400-normal.woff +0 -0
- package/dist/fonts/dm-serif-display-latin-ext-400-normal.woff2 +0 -0
- package/dist/fonts/libre-baskerville-latin-400-normal.woff +0 -0
- package/dist/fonts/libre-baskerville-latin-400-normal.woff2 +0 -0
- package/dist/fonts/libre-baskerville-latin-700-normal.woff +0 -0
- package/dist/fonts/libre-baskerville-latin-700-normal.woff2 +0 -0
- package/dist/fonts/libre-baskerville-latin-ext-400-normal.woff +0 -0
- package/dist/fonts/libre-baskerville-latin-ext-400-normal.woff2 +0 -0
- package/dist/fonts/libre-baskerville-latin-ext-700-normal.woff +0 -0
- package/dist/fonts/libre-baskerville-latin-ext-700-normal.woff2 +0 -0
- package/dist/fonts/montserrat-cyrillic-400-normal.woff +0 -0
- package/dist/fonts/montserrat-cyrillic-400-normal.woff2 +0 -0
- package/dist/fonts/montserrat-cyrillic-500-normal.woff +0 -0
- package/dist/fonts/montserrat-cyrillic-500-normal.woff2 +0 -0
- package/dist/fonts/montserrat-cyrillic-600-normal.woff +0 -0
- package/dist/fonts/montserrat-cyrillic-600-normal.woff2 +0 -0
- package/dist/fonts/montserrat-cyrillic-ext-400-normal.woff +0 -0
- package/dist/fonts/montserrat-cyrillic-ext-400-normal.woff2 +0 -0
- package/dist/fonts/montserrat-cyrillic-ext-500-normal.woff +0 -0
- package/dist/fonts/montserrat-cyrillic-ext-500-normal.woff2 +0 -0
- package/dist/fonts/montserrat-cyrillic-ext-600-normal.woff +0 -0
- package/dist/fonts/montserrat-cyrillic-ext-600-normal.woff2 +0 -0
- package/dist/fonts/montserrat-latin-400-normal.woff +0 -0
- package/dist/fonts/montserrat-latin-400-normal.woff2 +0 -0
- package/dist/fonts/montserrat-latin-500-normal.woff +0 -0
- package/dist/fonts/montserrat-latin-500-normal.woff2 +0 -0
- package/dist/fonts/montserrat-latin-600-normal.woff +0 -0
- package/dist/fonts/montserrat-latin-600-normal.woff2 +0 -0
- package/dist/fonts/montserrat-latin-ext-400-normal.woff +0 -0
- package/dist/fonts/montserrat-latin-ext-400-normal.woff2 +0 -0
- package/dist/fonts/montserrat-latin-ext-500-normal.woff +0 -0
- package/dist/fonts/montserrat-latin-ext-500-normal.woff2 +0 -0
- package/dist/fonts/montserrat-latin-ext-600-normal.woff +0 -0
- package/dist/fonts/montserrat-latin-ext-600-normal.woff2 +0 -0
- package/dist/fonts/montserrat-vietnamese-400-normal.woff +0 -0
- package/dist/fonts/montserrat-vietnamese-400-normal.woff2 +0 -0
- package/dist/fonts/montserrat-vietnamese-500-normal.woff +0 -0
- package/dist/fonts/montserrat-vietnamese-500-normal.woff2 +0 -0
- package/dist/fonts/montserrat-vietnamese-600-normal.woff +0 -0
- package/dist/fonts/montserrat-vietnamese-600-normal.woff2 +0 -0
- package/dist/fonts/playfair-display-cyrillic-400-normal.woff +0 -0
- package/dist/fonts/playfair-display-cyrillic-400-normal.woff2 +0 -0
- package/dist/fonts/playfair-display-cyrillic-500-normal.woff +0 -0
- package/dist/fonts/playfair-display-cyrillic-500-normal.woff2 +0 -0
- package/dist/fonts/playfair-display-latin-400-normal.woff +0 -0
- package/dist/fonts/playfair-display-latin-400-normal.woff2 +0 -0
- package/dist/fonts/playfair-display-latin-500-normal.woff +0 -0
- package/dist/fonts/playfair-display-latin-500-normal.woff2 +0 -0
- package/dist/fonts/playfair-display-latin-ext-400-normal.woff +0 -0
- package/dist/fonts/playfair-display-latin-ext-400-normal.woff2 +0 -0
- package/dist/fonts/playfair-display-latin-ext-500-normal.woff +0 -0
- package/dist/fonts/playfair-display-latin-ext-500-normal.woff2 +0 -0
- package/dist/fonts/playfair-display-vietnamese-400-normal.woff +0 -0
- package/dist/fonts/playfair-display-vietnamese-400-normal.woff2 +0 -0
- package/dist/fonts/playfair-display-vietnamese-500-normal.woff +0 -0
- package/dist/fonts/playfair-display-vietnamese-500-normal.woff2 +0 -0
- package/dist/fonts/poppins-devanagari-400-normal.woff +0 -0
- package/dist/fonts/poppins-devanagari-400-normal.woff2 +0 -0
- package/dist/fonts/poppins-devanagari-500-normal.woff +0 -0
- package/dist/fonts/poppins-devanagari-500-normal.woff2 +0 -0
- package/dist/fonts/poppins-devanagari-600-normal.woff +0 -0
- package/dist/fonts/poppins-devanagari-600-normal.woff2 +0 -0
- package/dist/fonts/poppins-latin-400-normal.woff +0 -0
- package/dist/fonts/poppins-latin-400-normal.woff2 +0 -0
- package/dist/fonts/poppins-latin-500-normal.woff +0 -0
- package/dist/fonts/poppins-latin-500-normal.woff2 +0 -0
- package/dist/fonts/poppins-latin-600-normal.woff +0 -0
- package/dist/fonts/poppins-latin-600-normal.woff2 +0 -0
- package/dist/fonts/poppins-latin-ext-400-normal.woff +0 -0
- package/dist/fonts/poppins-latin-ext-400-normal.woff2 +0 -0
- package/dist/fonts/poppins-latin-ext-500-normal.woff +0 -0
- package/dist/fonts/poppins-latin-ext-500-normal.woff2 +0 -0
- package/dist/fonts/poppins-latin-ext-600-normal.woff +0 -0
- package/dist/fonts/poppins-latin-ext-600-normal.woff2 +0 -0
- package/dist/fonts/rubik-arabic-400-normal.woff +0 -0
- package/dist/fonts/rubik-arabic-400-normal.woff2 +0 -0
- package/dist/fonts/rubik-arabic-500-normal.woff +0 -0
- package/dist/fonts/rubik-arabic-500-normal.woff2 +0 -0
- package/dist/fonts/rubik-cyrillic-400-normal.woff +0 -0
- package/dist/fonts/rubik-cyrillic-400-normal.woff2 +0 -0
- package/dist/fonts/rubik-cyrillic-500-normal.woff +0 -0
- package/dist/fonts/rubik-cyrillic-500-normal.woff2 +0 -0
- package/dist/fonts/rubik-cyrillic-ext-400-normal.woff +0 -0
- package/dist/fonts/rubik-cyrillic-ext-400-normal.woff2 +0 -0
- package/dist/fonts/rubik-cyrillic-ext-500-normal.woff +0 -0
- package/dist/fonts/rubik-cyrillic-ext-500-normal.woff2 +0 -0
- package/dist/fonts/rubik-hebrew-400-normal.woff +0 -0
- package/dist/fonts/rubik-hebrew-400-normal.woff2 +0 -0
- package/dist/fonts/rubik-hebrew-500-normal.woff +0 -0
- package/dist/fonts/rubik-hebrew-500-normal.woff2 +0 -0
- package/dist/fonts/rubik-latin-400-normal.woff +0 -0
- package/dist/fonts/rubik-latin-400-normal.woff2 +0 -0
- package/dist/fonts/rubik-latin-500-normal.woff +0 -0
- package/dist/fonts/rubik-latin-500-normal.woff2 +0 -0
- package/dist/fonts/rubik-latin-ext-400-normal.woff +0 -0
- package/dist/fonts/rubik-latin-ext-400-normal.woff2 +0 -0
- package/dist/fonts/rubik-latin-ext-500-normal.woff +0 -0
- package/dist/fonts/rubik-latin-ext-500-normal.woff2 +0 -0
- package/dist/fonts/source-serif-pro-cyrillic-400-normal.woff +0 -0
- package/dist/fonts/source-serif-pro-cyrillic-400-normal.woff2 +0 -0
- package/dist/fonts/source-serif-pro-cyrillic-ext-400-normal.woff +0 -0
- package/dist/fonts/source-serif-pro-cyrillic-ext-400-normal.woff2 +0 -0
- package/dist/fonts/source-serif-pro-greek-400-normal.woff +0 -0
- package/dist/fonts/source-serif-pro-greek-400-normal.woff2 +0 -0
- package/dist/fonts/source-serif-pro-latin-400-normal.woff +0 -0
- package/dist/fonts/source-serif-pro-latin-400-normal.woff2 +0 -0
- package/dist/fonts/source-serif-pro-latin-ext-400-normal.woff +0 -0
- package/dist/fonts/source-serif-pro-latin-ext-400-normal.woff2 +0 -0
- package/dist/fonts/source-serif-pro-vietnamese-400-normal.woff +0 -0
- package/dist/fonts/source-serif-pro-vietnamese-400-normal.woff2 +0 -0
- package/dist/fonts/space-grotesk-latin-400-normal.woff +0 -0
- package/dist/fonts/space-grotesk-latin-400-normal.woff2 +0 -0
- package/dist/fonts/space-grotesk-latin-600-normal.woff +0 -0
- package/dist/fonts/space-grotesk-latin-600-normal.woff2 +0 -0
- package/dist/fonts/space-grotesk-latin-700-normal.woff +0 -0
- package/dist/fonts/space-grotesk-latin-700-normal.woff2 +0 -0
- package/dist/fonts/space-grotesk-latin-ext-400-normal.woff +0 -0
- package/dist/fonts/space-grotesk-latin-ext-400-normal.woff2 +0 -0
- package/dist/fonts/space-grotesk-latin-ext-600-normal.woff +0 -0
- package/dist/fonts/space-grotesk-latin-ext-600-normal.woff2 +0 -0
- package/dist/fonts/space-grotesk-latin-ext-700-normal.woff +0 -0
- package/dist/fonts/space-grotesk-latin-ext-700-normal.woff2 +0 -0
- package/dist/fonts/space-grotesk-vietnamese-400-normal.woff +0 -0
- package/dist/fonts/space-grotesk-vietnamese-400-normal.woff2 +0 -0
- package/dist/fonts/space-grotesk-vietnamese-600-normal.woff +0 -0
- package/dist/fonts/space-grotesk-vietnamese-600-normal.woff2 +0 -0
- package/dist/fonts/space-grotesk-vietnamese-700-normal.woff +0 -0
- package/dist/fonts/space-grotesk-vietnamese-700-normal.woff2 +0 -0
- package/dist/fonts/work-sans-latin-400-normal.woff +0 -0
- package/dist/fonts/work-sans-latin-400-normal.woff2 +0 -0
- package/dist/fonts/work-sans-latin-500-normal.woff +0 -0
- package/dist/fonts/work-sans-latin-500-normal.woff2 +0 -0
- package/dist/fonts/work-sans-latin-ext-400-normal.woff +0 -0
- package/dist/fonts/work-sans-latin-ext-400-normal.woff2 +0 -0
- package/dist/fonts/work-sans-latin-ext-500-normal.woff +0 -0
- package/dist/fonts/work-sans-latin-ext-500-normal.woff2 +0 -0
- package/dist/fonts/work-sans-vietnamese-400-normal.woff +0 -0
- package/dist/fonts/work-sans-vietnamese-400-normal.woff2 +0 -0
- package/dist/fonts/work-sans-vietnamese-500-normal.woff +0 -0
- package/dist/fonts/work-sans-vietnamese-500-normal.woff2 +0 -0
- package/dist/footer.js +308 -0
- package/dist/footer.js.map +1 -0
- package/dist/form-field.js +69 -0
- package/dist/form-field.js.map +1 -0
- package/dist/form.js +732 -0
- package/dist/form.js.map +1 -0
- package/dist/format.js +112 -0
- package/dist/format.js.map +1 -0
- package/dist/fouc.js +28 -0
- package/dist/fouc.js.map +1 -0
- package/dist/header.js +289 -0
- package/dist/header.js.map +1 -0
- package/dist/hooks.js +13 -0
- package/dist/hooks.js.map +1 -0
- package/dist/hover-card.js +210 -0
- package/dist/hover-card.js.map +1 -0
- package/dist/index-0ioNhtNM.js +11 -0
- package/dist/index-0ioNhtNM.js.map +1 -0
- package/dist/index-1QHKgw6D.js +55 -0
- package/dist/index-1QHKgw6D.js.map +1 -0
- package/dist/index-B6sSWi7l.js +747 -0
- package/dist/index-B6sSWi7l.js.map +1 -0
- package/dist/index-BCjJQGh8.js +71 -0
- package/dist/index-BCjJQGh8.js.map +1 -0
- package/dist/index-BGQepRFJ.js +28 -0
- package/dist/index-BGQepRFJ.js.map +1 -0
- package/dist/index-BVRIAMfe.js +37 -0
- package/dist/index-BVRIAMfe.js.map +1 -0
- package/dist/index-BY7PeRJA.js +145 -0
- package/dist/index-BY7PeRJA.js.map +1 -0
- package/dist/index-BZPx6jYI.js +9 -0
- package/dist/index-BZPx6jYI.js.map +1 -0
- package/dist/index-Ba4eHUBD.js +243 -0
- package/dist/index-Ba4eHUBD.js.map +1 -0
- package/dist/index-Bke1qZdk.js +35 -0
- package/dist/index-Bke1qZdk.js.map +1 -0
- package/dist/index-C0UREtMP.js +60 -0
- package/dist/index-C0UREtMP.js.map +1 -0
- package/dist/index-CCKe-Mpx.js +7 -0
- package/dist/index-CCKe-Mpx.js.map +1 -0
- package/dist/index-DFZozV_h.js +69 -0
- package/dist/index-DFZozV_h.js.map +1 -0
- package/dist/index-DFi6WydO.js +180 -0
- package/dist/index-DFi6WydO.js.map +1 -0
- package/dist/index-DQH6odE9.js +83 -0
- package/dist/index-DQH6odE9.js.map +1 -0
- package/dist/index-EO5flKM3.js +119 -0
- package/dist/index-EO5flKM3.js.map +1 -0
- package/dist/index-Lf7yDOXW.js +615 -0
- package/dist/index-Lf7yDOXW.js.map +1 -0
- package/dist/index-dhIqEbxW.js +1541 -0
- package/dist/index-dhIqEbxW.js.map +1 -0
- package/dist/index-pWhlqjff.js +32 -0
- package/dist/index-pWhlqjff.js.map +1 -0
- package/dist/index-rKs9bXHr.js +7 -0
- package/dist/index-rKs9bXHr.js.map +1 -0
- package/dist/index-xqkGMOJ8.js +14 -0
- package/dist/index-xqkGMOJ8.js.map +1 -0
- package/dist/index.js +247 -0
- package/dist/index.js.map +1 -0
- package/dist/input.js +22 -0
- package/dist/input.js.map +1 -0
- package/dist/label.js +36 -0
- package/dist/label.js.map +1 -0
- package/dist/layout-wrapper.js +208 -0
- package/dist/layout-wrapper.js.map +1 -0
- package/dist/llms.txt +1140 -0
- package/dist/menu-DBhEanGo.js +16 -0
- package/dist/menu-DBhEanGo.js.map +1 -0
- package/dist/menubar.js +565 -0
- package/dist/menubar.js.map +1 -0
- package/dist/mobile.js +183 -0
- package/dist/mobile.js.map +1 -0
- package/dist/motion.js +119 -0
- package/dist/motion.js.map +1 -0
- package/dist/page-header.js +47 -0
- package/dist/page-header.js.map +1 -0
- package/dist/page.js +214 -0
- package/dist/page.js.map +1 -0
- package/dist/pagination.js +121 -0
- package/dist/pagination.js.map +1 -0
- package/dist/platform.js +194 -0
- package/dist/platform.js.map +1 -0
- package/dist/popover.js +263 -0
- package/dist/popover.js.map +1 -0
- package/dist/popup.js +335 -0
- package/dist/popup.js.map +1 -0
- package/dist/progress.js +108 -0
- package/dist/progress.js.map +1 -0
- package/dist/radio-group.js +272 -0
- package/dist/radio-group.js.map +1 -0
- package/dist/safe-area.js +42 -0
- package/dist/safe-area.js.map +1 -0
- package/dist/search-CpUwRnG-.js +15 -0
- package/dist/search-CpUwRnG-.js.map +1 -0
- package/dist/select.js +985 -0
- package/dist/select.js.map +1 -0
- package/dist/separator.js +45 -0
- package/dist/separator.js.map +1 -0
- package/dist/sheet.js +127 -0
- package/dist/sheet.js.map +1 -0
- package/dist/skeleton.js +16 -0
- package/dist/skeleton.js.map +1 -0
- package/dist/slider.js +485 -0
- package/dist/slider.js.map +1 -0
- package/dist/sonner.js +52 -0
- package/dist/sonner.js.map +1 -0
- package/dist/styles/fonts.css +253 -0
- package/dist/styles.css +2 -0
- package/dist/switch.js +155 -0
- package/dist/switch.js.map +1 -0
- package/dist/tab-bar.js +110 -0
- package/dist/tab-bar.js.map +1 -0
- package/dist/table.js +115 -0
- package/dist/table.js.map +1 -0
- package/dist/tabs.js +218 -0
- package/dist/tabs.js.map +1 -0
- package/dist/textarea.js +19 -0
- package/dist/textarea.js.map +1 -0
- package/dist/theme-provider.js +154 -0
- package/dist/theme-provider.js.map +1 -0
- package/dist/themes.js +873 -0
- package/dist/themes.js.map +1 -0
- package/dist/toast.js +63 -0
- package/dist/toast.js.map +1 -0
- package/dist/toggle.js +70 -0
- package/dist/toggle.js.map +1 -0
- package/dist/tooltip.js +375 -0
- package/dist/tooltip.js.map +1 -0
- package/dist/types/App.d.ts +3 -0
- package/dist/types/App.d.ts.map +1 -0
- package/dist/types/components/layouts/admin.d.ts +117 -0
- package/dist/types/components/layouts/admin.d.ts.map +1 -0
- package/dist/types/components/layouts/auth.d.ts +17 -0
- package/dist/types/components/layouts/auth.d.ts.map +1 -0
- package/dist/types/components/layouts/blank.d.ts +63 -0
- package/dist/types/components/layouts/blank.d.ts.map +1 -0
- package/dist/types/components/layouts/layout-wrapper.d.ts +130 -0
- package/dist/types/components/layouts/layout-wrapper.d.ts.map +1 -0
- package/dist/types/components/layouts/mobile.d.ts +91 -0
- package/dist/types/components/layouts/mobile.d.ts.map +1 -0
- package/dist/types/components/layouts/page.d.ts +181 -0
- package/dist/types/components/layouts/page.d.ts.map +1 -0
- package/dist/types/components/layouts/popup.d.ts +100 -0
- package/dist/types/components/layouts/popup.d.ts.map +1 -0
- package/dist/types/components/sections/container.d.ts +79 -0
- package/dist/types/components/sections/container.d.ts.map +1 -0
- package/dist/types/components/sections/footer.d.ts +128 -0
- package/dist/types/components/sections/footer.d.ts.map +1 -0
- package/dist/types/components/sections/header.d.ts +72 -0
- package/dist/types/components/sections/header.d.ts.map +1 -0
- package/dist/types/components/sections/safe-area.d.ts +46 -0
- package/dist/types/components/sections/safe-area.d.ts.map +1 -0
- package/dist/types/components/sections/tab-bar.d.ts +61 -0
- package/dist/types/components/sections/tab-bar.d.ts.map +1 -0
- package/dist/types/components/ui/accordion.d.ts +8 -0
- package/dist/types/components/ui/accordion.d.ts.map +1 -0
- package/dist/types/components/ui/alert.d.ts +10 -0
- package/dist/types/components/ui/alert.d.ts.map +1 -0
- package/dist/types/components/ui/avatar.d.ts +7 -0
- package/dist/types/components/ui/avatar.d.ts.map +1 -0
- package/dist/types/components/ui/badge.d.ts +10 -0
- package/dist/types/components/ui/badge.d.ts.map +1 -0
- package/dist/types/components/ui/breadcrumb.d.ts +12 -0
- package/dist/types/components/ui/breadcrumb.d.ts.map +1 -0
- package/dist/types/components/ui/button.d.ts +11 -0
- package/dist/types/components/ui/button.d.ts.map +1 -0
- package/dist/types/components/ui/calendar.d.ts +9 -0
- package/dist/types/components/ui/calendar.d.ts.map +1 -0
- package/dist/types/components/ui/card.d.ts +10 -0
- package/dist/types/components/ui/card.d.ts.map +1 -0
- package/dist/types/components/ui/checkbox.d.ts +5 -0
- package/dist/types/components/ui/checkbox.d.ts.map +1 -0
- package/dist/types/components/ui/collapsible.d.ts +6 -0
- package/dist/types/components/ui/collapsible.d.ts.map +1 -0
- package/dist/types/components/ui/command.d.ts +19 -0
- package/dist/types/components/ui/command.d.ts.map +1 -0
- package/dist/types/components/ui/confirm-dialog.d.ts +72 -0
- package/dist/types/components/ui/confirm-dialog.d.ts.map +1 -0
- package/dist/types/components/ui/data-table.d.ts +211 -0
- package/dist/types/components/ui/data-table.d.ts.map +1 -0
- package/dist/types/components/ui/detail-page.d.ts +119 -0
- package/dist/types/components/ui/detail-page.d.ts.map +1 -0
- package/dist/types/components/ui/dialog.d.ts +16 -0
- package/dist/types/components/ui/dialog.d.ts.map +1 -0
- package/dist/types/components/ui/dropdown-menu.d.ts +26 -0
- package/dist/types/components/ui/dropdown-menu.d.ts.map +1 -0
- package/dist/types/components/ui/empty-state.d.ts +30 -0
- package/dist/types/components/ui/empty-state.d.ts.map +1 -0
- package/dist/types/components/ui/form-field.d.ts +57 -0
- package/dist/types/components/ui/form-field.d.ts.map +1 -0
- package/dist/types/components/ui/form.d.ts +185 -0
- package/dist/types/components/ui/form.d.ts.map +1 -0
- package/dist/types/components/ui/hover-card.d.ts +7 -0
- package/dist/types/components/ui/hover-card.d.ts.map +1 -0
- package/dist/types/components/ui/input.d.ts +4 -0
- package/dist/types/components/ui/input.d.ts.map +1 -0
- package/dist/types/components/ui/label.d.ts +5 -0
- package/dist/types/components/ui/label.d.ts.map +1 -0
- package/dist/types/components/ui/menubar.d.ts +27 -0
- package/dist/types/components/ui/menubar.d.ts.map +1 -0
- package/dist/types/components/ui/motion.d.ts +130 -0
- package/dist/types/components/ui/motion.d.ts.map +1 -0
- package/dist/types/components/ui/page-header.d.ts +45 -0
- package/dist/types/components/ui/page-header.d.ts.map +1 -0
- package/dist/types/components/ui/pagination.d.ts +14 -0
- package/dist/types/components/ui/pagination.d.ts.map +1 -0
- package/dist/types/components/ui/popover.d.ts +8 -0
- package/dist/types/components/ui/popover.d.ts.map +1 -0
- package/dist/types/components/ui/progress.d.ts +5 -0
- package/dist/types/components/ui/progress.d.ts.map +1 -0
- package/dist/types/components/ui/radio-group.d.ts +6 -0
- package/dist/types/components/ui/radio-group.d.ts.map +1 -0
- package/dist/types/components/ui/select.d.ts +16 -0
- package/dist/types/components/ui/select.d.ts.map +1 -0
- package/dist/types/components/ui/separator.d.ts +5 -0
- package/dist/types/components/ui/separator.d.ts.map +1 -0
- package/dist/types/components/ui/sheet.d.ts +14 -0
- package/dist/types/components/ui/sheet.d.ts.map +1 -0
- package/dist/types/components/ui/skeleton.d.ts +3 -0
- package/dist/types/components/ui/skeleton.d.ts.map +1 -0
- package/dist/types/components/ui/slider.d.ts +5 -0
- package/dist/types/components/ui/slider.d.ts.map +1 -0
- package/dist/types/components/ui/sonner.d.ts +4 -0
- package/dist/types/components/ui/sonner.d.ts.map +1 -0
- package/dist/types/components/ui/switch.d.ts +5 -0
- package/dist/types/components/ui/switch.d.ts.map +1 -0
- package/dist/types/components/ui/table.d.ts +11 -0
- package/dist/types/components/ui/table.d.ts.map +1 -0
- package/dist/types/components/ui/tabs.d.ts +8 -0
- package/dist/types/components/ui/tabs.d.ts.map +1 -0
- package/dist/types/components/ui/textarea.d.ts +4 -0
- package/dist/types/components/ui/textarea.d.ts.map +1 -0
- package/dist/types/components/ui/toast.d.ts +70 -0
- package/dist/types/components/ui/toast.d.ts.map +1 -0
- package/dist/types/components/ui/toggle.d.ts +10 -0
- package/dist/types/components/ui/toggle.d.ts.map +1 -0
- package/dist/types/components/ui/tooltip.d.ts +8 -0
- package/dist/types/components/ui/tooltip.d.ts.map +1 -0
- package/dist/types/hooks/index.d.ts +14 -0
- package/dist/types/hooks/index.d.ts.map +1 -0
- package/dist/types/hooks/useApi.d.ts +38 -0
- package/dist/types/hooks/useApi.d.ts.map +1 -0
- package/dist/types/hooks/useBreakpoint.d.ts +35 -0
- package/dist/types/hooks/useBreakpoint.d.ts.map +1 -0
- package/dist/types/hooks/useDataTable.d.ts +59 -0
- package/dist/types/hooks/useDataTable.d.ts.map +1 -0
- package/dist/types/hooks/useMediaQuery.d.ts +12 -0
- package/dist/types/hooks/useMediaQuery.d.ts.map +1 -0
- package/dist/types/hooks/useStorage.d.ts +35 -0
- package/dist/types/hooks/useStorage.d.ts.map +1 -0
- package/dist/types/index.d.ts +75 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/lib/errors.d.ts +37 -0
- package/dist/types/lib/errors.d.ts.map +1 -0
- package/dist/types/lib/format.d.ts +80 -0
- package/dist/types/lib/format.d.ts.map +1 -0
- package/dist/types/lib/fouc.d.ts +64 -0
- package/dist/types/lib/fouc.d.ts.map +1 -0
- package/dist/types/lib/platform.d.ts +156 -0
- package/dist/types/lib/platform.d.ts.map +1 -0
- package/dist/types/lib/utils.d.ts +14 -0
- package/dist/types/lib/utils.d.ts.map +1 -0
- package/dist/types/main.d.ts +2 -0
- package/dist/types/main.d.ts.map +1 -0
- package/dist/types/themes/index.d.ts +499 -0
- package/dist/types/themes/index.d.ts.map +1 -0
- package/dist/types/themes/presets/base.d.ts +108 -0
- package/dist/types/themes/presets/base.d.ts.map +1 -0
- package/dist/types/themes/presets/elegant.d.ts +108 -0
- package/dist/types/themes/presets/elegant.d.ts.map +1 -0
- package/dist/types/themes/presets/metro.d.ts +114 -0
- package/dist/types/themes/presets/metro.d.ts.map +1 -0
- package/dist/types/themes/presets/studio.d.ts +115 -0
- package/dist/types/themes/presets/studio.d.ts.map +1 -0
- package/dist/types/themes/presets/vivid.d.ts +115 -0
- package/dist/types/themes/presets/vivid.d.ts.map +1 -0
- package/dist/types/themes/theme-provider.d.ts +122 -0
- package/dist/types/themes/theme-provider.d.ts.map +1 -0
- package/dist/types/types/index.d.ts +813 -0
- package/dist/types/types/index.d.ts.map +1 -0
- package/dist/uikit.css +1 -0
- package/dist/useDataTable-CPiBpEg-.js +254 -0
- package/dist/useDataTable-CPiBpEg-.js.map +1 -0
- package/dist/utils-CwJPJKOE.js +2278 -0
- package/dist/utils-CwJPJKOE.js.map +1 -0
- package/dist/utils.js +5 -0
- package/dist/utils.js.map +1 -0
- package/dist/wrapper.js +13 -0
- package/dist/wrapper.js.map +1 -0
- package/dist/x-BxwubQiM.js +15 -0
- package/dist/x-BxwubQiM.js.map +1 -0
- package/examples/README.md +18 -0
- package/examples/button.tsx +16 -0
- package/examples/confirm-dialog.tsx +44 -0
- package/examples/data-table.tsx +35 -0
- package/examples/dialog.tsx +34 -0
- package/examples/empty-state.tsx +13 -0
- package/examples/form-field.tsx +22 -0
- package/examples/format.tsx +19 -0
- package/examples/page-header.tsx +17 -0
- package/examples/skeleton.tsx +12 -0
- package/examples/theme-provider.tsx +33 -0
- package/examples/toast.tsx +32 -0
- package/examples/use-breakpoint.tsx +17 -0
- package/llms.txt +1140 -0
- package/package.json +430 -0
|
@@ -0,0 +1,533 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview UIKit Deploy Command - Static site generation
|
|
3
|
+
* @description Generate optimized static site for deployment (GitHub Pages ready)
|
|
4
|
+
* @package @bloomneo/uikit
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { spawn } from 'child_process';
|
|
8
|
+
import fs from 'fs/promises';
|
|
9
|
+
import path from 'path';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Generate static site for deployment
|
|
13
|
+
*/
|
|
14
|
+
export async function deployProject(options) {
|
|
15
|
+
console.log('š Generating static site...\n');
|
|
16
|
+
|
|
17
|
+
try {
|
|
18
|
+
// Validate project
|
|
19
|
+
await validateProject();
|
|
20
|
+
|
|
21
|
+
// Build first with deployment optimizations
|
|
22
|
+
console.log('šØ Pre-rendering with themes...');
|
|
23
|
+
await bundleThemesForDeploy();
|
|
24
|
+
|
|
25
|
+
console.log('ā” Building optimized static site...');
|
|
26
|
+
await buildForDeploy(options);
|
|
27
|
+
|
|
28
|
+
// Post-process for static deployment
|
|
29
|
+
console.log('š Optimizing for static hosting...');
|
|
30
|
+
await optimizeForStatic(options);
|
|
31
|
+
|
|
32
|
+
const distPath = path.resolve('dist');
|
|
33
|
+
const buildSize = await getBuildSize(distPath);
|
|
34
|
+
|
|
35
|
+
console.log('ā
Static site ready!');
|
|
36
|
+
console.log(`š Output: ${distPath} (${buildSize})`);
|
|
37
|
+
|
|
38
|
+
if (options.github) {
|
|
39
|
+
console.log('\nš Deploying to GitHub Pages...');
|
|
40
|
+
await deployToGitHubPages(distPath, options);
|
|
41
|
+
} else {
|
|
42
|
+
console.log('\nš Deploy to any static host:');
|
|
43
|
+
console.log(' ⢠Netlify: Drag dist/ folder to netlify.com/drop');
|
|
44
|
+
console.log(' ⢠Vercel: npx vercel --prod');
|
|
45
|
+
console.log(' ⢠Surge: npx surge dist/');
|
|
46
|
+
console.log(' ⢠GitHub Pages: Upload dist/ contents');
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
} catch (error) {
|
|
50
|
+
console.error('ā Deploy generation failed:', error.message);
|
|
51
|
+
process.exit(1);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Validate project structure
|
|
57
|
+
*/
|
|
58
|
+
async function validateProject() {
|
|
59
|
+
try {
|
|
60
|
+
await fs.access('package.json');
|
|
61
|
+
await fs.access('index.html');
|
|
62
|
+
} catch (error) {
|
|
63
|
+
throw new Error('Invalid project structure. Ensure package.json and index.html exist.');
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Bundle themes for deployment
|
|
69
|
+
*/
|
|
70
|
+
async function bundleThemesForDeploy() {
|
|
71
|
+
const themeDirs = [
|
|
72
|
+
'src/themes/presets',
|
|
73
|
+
'src/web/assets/themes/presets',
|
|
74
|
+
'themes/presets'
|
|
75
|
+
];
|
|
76
|
+
|
|
77
|
+
let hasThemes = false;
|
|
78
|
+
for (const dir of themeDirs) {
|
|
79
|
+
try {
|
|
80
|
+
const stat = await fs.stat(dir);
|
|
81
|
+
if (stat.isDirectory()) {
|
|
82
|
+
const files = await fs.readdir(dir);
|
|
83
|
+
if (files.some(f => f.endsWith('.js') || f.endsWith('.ts'))) {
|
|
84
|
+
hasThemes = true;
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
} catch {
|
|
89
|
+
// Directory doesn't exist
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
if (hasThemes) {
|
|
94
|
+
try {
|
|
95
|
+
const { bundleThemes } = await import('./bundle.js');
|
|
96
|
+
await bundleThemes({
|
|
97
|
+
output: 'src/styles/globals.css',
|
|
98
|
+
verbose: false
|
|
99
|
+
});
|
|
100
|
+
console.log('ā
Themes bundled for deployment');
|
|
101
|
+
} catch (error) {
|
|
102
|
+
console.log('ā ļø Theme bundling failed:', error.message);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Get repository name from Git remote URL
|
|
109
|
+
*/
|
|
110
|
+
async function getRepoName() {
|
|
111
|
+
try {
|
|
112
|
+
const result = await new Promise((resolve, reject) => {
|
|
113
|
+
const gitRemote = spawn('git', ['remote', 'get-url', 'origin'], {
|
|
114
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
115
|
+
cwd: process.cwd()
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
let stdout = '';
|
|
119
|
+
let stderr = '';
|
|
120
|
+
|
|
121
|
+
gitRemote.stdout?.on('data', (data) => {
|
|
122
|
+
stdout += data.toString();
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
gitRemote.stderr?.on('data', (data) => {
|
|
126
|
+
stderr += data.toString();
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
gitRemote.on('close', (code) => {
|
|
130
|
+
if (code === 0 && stdout.trim()) {
|
|
131
|
+
resolve(stdout.trim());
|
|
132
|
+
} else {
|
|
133
|
+
reject(new Error(stderr || 'No remote origin'));
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
gitRemote.on('error', (error) => {
|
|
138
|
+
reject(error);
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
// Extract repo name from URL (e.g., https://github.com/username/vcwebsite.git ā vcwebsite)
|
|
143
|
+
const match = result.match(/github\.com[/:]([^/]+)\/([^/.]+)(\.git)?$/);
|
|
144
|
+
if (match) {
|
|
145
|
+
return match[2]; // e.g., 'vcwebsite'
|
|
146
|
+
}
|
|
147
|
+
return null;
|
|
148
|
+
} catch {
|
|
149
|
+
return null;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Build with deployment optimizations
|
|
155
|
+
*/
|
|
156
|
+
async function buildForDeploy(options) {
|
|
157
|
+
const viteArgs = ['vite', 'build'];
|
|
158
|
+
|
|
159
|
+
// Set base path for deployment
|
|
160
|
+
if (options.base && options.base !== '/') {
|
|
161
|
+
viteArgs.push('--base', options.base);
|
|
162
|
+
} else if (options.github) {
|
|
163
|
+
// Read base from vite.config.ts, default to '/', or use repo name
|
|
164
|
+
let viteBase = '/';
|
|
165
|
+
try {
|
|
166
|
+
const viteConfigPath = path.resolve('vite.config.ts');
|
|
167
|
+
const viteConfigContent = await fs.readFile(viteConfigPath, 'utf8');
|
|
168
|
+
const baseMatch = viteConfigContent.match(/base:\s*['"]([^'"]+)['"]/);
|
|
169
|
+
if (baseMatch && baseMatch[1]) {
|
|
170
|
+
viteBase = baseMatch[1];
|
|
171
|
+
} else {
|
|
172
|
+
// Fallback to repository name
|
|
173
|
+
const repoName = await getRepoName();
|
|
174
|
+
if (repoName) {
|
|
175
|
+
viteBase = `/${repoName}/`;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
} catch {
|
|
179
|
+
// vite.config.ts not found or invalid, try repo name
|
|
180
|
+
const repoName = await getRepoName();
|
|
181
|
+
if (repoName) {
|
|
182
|
+
viteBase = `/${repoName}/`;
|
|
183
|
+
}
|
|
184
|
+
console.log(`ā ļø Could not read base from vite.config.ts, using "${viteBase}"`);
|
|
185
|
+
}
|
|
186
|
+
viteArgs.push('--base', viteBase);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
return new Promise((resolve, reject) => {
|
|
190
|
+
const build = spawn('npx', viteArgs, {
|
|
191
|
+
stdio: 'inherit',
|
|
192
|
+
cwd: process.cwd()
|
|
193
|
+
});
|
|
194
|
+
|
|
195
|
+
build.on('close', (code) => {
|
|
196
|
+
if (code === 0) {
|
|
197
|
+
resolve();
|
|
198
|
+
} else {
|
|
199
|
+
reject(new Error(`Build failed with code ${code}`));
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
|
|
203
|
+
build.on('error', (error) => {
|
|
204
|
+
reject(new Error(`Build failed: ${error.message}`));
|
|
205
|
+
});
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Optimize build for static hosting
|
|
211
|
+
*/
|
|
212
|
+
async function optimizeForStatic(options) {
|
|
213
|
+
const distPath = 'dist';
|
|
214
|
+
|
|
215
|
+
try {
|
|
216
|
+
// Ensure dist directory exists
|
|
217
|
+
await fs.access(distPath);
|
|
218
|
+
|
|
219
|
+
// Create .nojekyll for GitHub Pages (prevents Jekyll processing)
|
|
220
|
+
if (options.github) {
|
|
221
|
+
await fs.writeFile(path.join(distPath, '.nojekyll'), '');
|
|
222
|
+
console.log('ā
Created .nojekyll for GitHub Pages');
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
// Create 404.html for SPA routing support
|
|
226
|
+
const indexHtml = await fs.readFile(path.join(distPath, 'index.html'), 'utf8');
|
|
227
|
+
await fs.writeFile(path.join(distPath, '404.html'), indexHtml);
|
|
228
|
+
console.log('ā
Created 404.html for SPA routing');
|
|
229
|
+
|
|
230
|
+
// Add meta tags for better static hosting support
|
|
231
|
+
await addMetaTags(distPath);
|
|
232
|
+
|
|
233
|
+
} catch (error) {
|
|
234
|
+
console.log('ā ļø Static optimization partially failed:', error.message);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
/**
|
|
239
|
+
* Add helpful meta tags to index.html
|
|
240
|
+
*/
|
|
241
|
+
async function addMetaTags(distPath) {
|
|
242
|
+
try {
|
|
243
|
+
const indexPath = path.join(distPath, 'index.html');
|
|
244
|
+
let html = await fs.readFile(indexPath, 'utf8');
|
|
245
|
+
|
|
246
|
+
// Add cache-busting and performance meta tags if not present
|
|
247
|
+
const metaTags = [
|
|
248
|
+
'<meta name="robots" content="index,follow">',
|
|
249
|
+
'<meta name="generator" content="UIKit Static Site Generator">',
|
|
250
|
+
'<meta http-equiv="X-UA-Compatible" content="IE=edge">'
|
|
251
|
+
];
|
|
252
|
+
|
|
253
|
+
for (const tag of metaTags) {
|
|
254
|
+
if (!html.includes(tag.split('"')[1])) {
|
|
255
|
+
html = html.replace('<head>', `<head>\n ${tag}`);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
await fs.writeFile(indexPath, html);
|
|
260
|
+
console.log('ā
Enhanced meta tags for deployment');
|
|
261
|
+
|
|
262
|
+
} catch (error) {
|
|
263
|
+
// Non-critical error
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
/**
|
|
268
|
+
* Calculate build size
|
|
269
|
+
*/
|
|
270
|
+
async function getBuildSize(distPath) {
|
|
271
|
+
try {
|
|
272
|
+
const stats = await fs.stat(distPath);
|
|
273
|
+
if (stats.isDirectory()) {
|
|
274
|
+
let totalSize = 0;
|
|
275
|
+
const files = await fs.readdir(distPath);
|
|
276
|
+
|
|
277
|
+
for (const file of files) {
|
|
278
|
+
const filePath = path.join(distPath, file);
|
|
279
|
+
try {
|
|
280
|
+
const stat = await fs.stat(filePath);
|
|
281
|
+
if (stat.isFile()) {
|
|
282
|
+
totalSize += stat.size;
|
|
283
|
+
}
|
|
284
|
+
} catch {
|
|
285
|
+
// Skip files that can't be accessed
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
return formatBytes(totalSize);
|
|
290
|
+
}
|
|
291
|
+
} catch (error) {
|
|
292
|
+
return 'Unknown';
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
return 'Unknown';
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
/**
|
|
299
|
+
* Format bytes to human readable string
|
|
300
|
+
*/
|
|
301
|
+
function formatBytes(bytes) {
|
|
302
|
+
if (bytes === 0) return '0 Bytes';
|
|
303
|
+
|
|
304
|
+
const k = 1024;
|
|
305
|
+
const sizes = ['Bytes', 'KB', 'MB', 'GB'];
|
|
306
|
+
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
307
|
+
|
|
308
|
+
return parseFloat((bytes / Math.pow(k, i)).toFixed(1)) + ' ' + sizes[i];
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
/**
|
|
312
|
+
* Deploy to GitHub Pages using gh-pages package
|
|
313
|
+
*/
|
|
314
|
+
async function deployToGitHubPages(distPath, options) {
|
|
315
|
+
try {
|
|
316
|
+
// Validate git repository setup
|
|
317
|
+
await validateGitRepository();
|
|
318
|
+
|
|
319
|
+
console.log('š¤ Publishing to gh-pages branch...');
|
|
320
|
+
|
|
321
|
+
// Use gh-pages to deploy
|
|
322
|
+
let ghPages;
|
|
323
|
+
try {
|
|
324
|
+
ghPages = await import('gh-pages');
|
|
325
|
+
} catch (error) {
|
|
326
|
+
throw new Error(`gh-pages module not available. This can happen when:
|
|
327
|
+
|
|
328
|
+
š Solutions:
|
|
329
|
+
1. Use local UIKit: npx uikit deploy --github (recommended)
|
|
330
|
+
2. Install locally: npm install gh-pages
|
|
331
|
+
3. Install globally: npm install -g gh-pages
|
|
332
|
+
|
|
333
|
+
š” Note: Running 'npx uikit' ensures gh-pages is available from UIKit dependencies.`);
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
const deployOptions = {
|
|
337
|
+
dotfiles: true, // Include .nojekyll
|
|
338
|
+
message: `Deploy UIKit site - ${new Date().toISOString()}`,
|
|
339
|
+
user: {
|
|
340
|
+
name: 'UIKit Deploy',
|
|
341
|
+
email: 'deploy@bloomneo.com'
|
|
342
|
+
}
|
|
343
|
+
};
|
|
344
|
+
|
|
345
|
+
// Handle CNAME for custom domain (apex domain, e.g., example.com)
|
|
346
|
+
let cnameContent = null;
|
|
347
|
+
// 1. Check command-line --domain option
|
|
348
|
+
if (options.domain) {
|
|
349
|
+
cnameContent = options.domain.replace(/^https?:\/\//, '').replace(/\/$/, '');
|
|
350
|
+
await fs.writeFile(path.join(distPath, 'CNAME'), cnameContent);
|
|
351
|
+
console.log(`ā
Created CNAME from --domain: ${cnameContent}`);
|
|
352
|
+
}
|
|
353
|
+
// 2. Check project root CNAME
|
|
354
|
+
else {
|
|
355
|
+
try {
|
|
356
|
+
const projectCnamePath = path.join(process.cwd(), 'CNAME');
|
|
357
|
+
cnameContent = await fs.readFile(projectCnamePath, 'utf8');
|
|
358
|
+
await fs.writeFile(path.join(distPath, 'CNAME'), cnameContent.trim());
|
|
359
|
+
console.log('ā
Copied project root CNAME to dist');
|
|
360
|
+
} catch {
|
|
361
|
+
// 3. Fallback to package.json homepage
|
|
362
|
+
try {
|
|
363
|
+
const packageJson = JSON.parse(await fs.readFile('package.json', 'utf8'));
|
|
364
|
+
if (packageJson.homepage) {
|
|
365
|
+
const url = new URL(packageJson.homepage);
|
|
366
|
+
cnameContent = url.hostname;
|
|
367
|
+
await fs.writeFile(path.join(distPath, 'CNAME'), cnameContent);
|
|
368
|
+
console.log(`ā
Created CNAME from package.json homepage: ${cnameContent}`);
|
|
369
|
+
} else {
|
|
370
|
+
console.log('ā ļø No CNAME file, --domain, or valid homepage in package.json; custom domain may not work');
|
|
371
|
+
}
|
|
372
|
+
} catch {
|
|
373
|
+
console.log('ā ļø No CNAME file, --domain, or valid homepage in package.json; custom domain may not work');
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
await new Promise((resolve, reject) => {
|
|
379
|
+
ghPages.publish(distPath, deployOptions, (err) => {
|
|
380
|
+
if (err) {
|
|
381
|
+
reject(err);
|
|
382
|
+
} else {
|
|
383
|
+
resolve();
|
|
384
|
+
}
|
|
385
|
+
});
|
|
386
|
+
});
|
|
387
|
+
|
|
388
|
+
console.log('ā
Successfully deployed to GitHub Pages!');
|
|
389
|
+
console.log('\nš GitHub Pages Setup:');
|
|
390
|
+
console.log(' 1. Go to your repository settings');
|
|
391
|
+
console.log(' 2. Navigate to Pages section');
|
|
392
|
+
console.log(' 3. Set source to "Deploy from a branch"');
|
|
393
|
+
console.log(' 4. Select "gh-pages" branch and "/ (root)" folder');
|
|
394
|
+
console.log(' 5. Ensure custom domain is set to:', cnameContent || 'Not set (uses default GitHub Pages URL)');
|
|
395
|
+
console.log(' 6. Verify DNS A records for apex domain: 185.199.108.153, 185.199.109.153, 185.199.110.153, 185.199.111.153');
|
|
396
|
+
|
|
397
|
+
// Display the site URL
|
|
398
|
+
try {
|
|
399
|
+
const packageJson = JSON.parse(await fs.readFile('package.json', 'utf8'));
|
|
400
|
+
let siteUrl = cnameContent ? `https://${cnameContent}/` : null;
|
|
401
|
+
if (!siteUrl && packageJson.repository?.url) {
|
|
402
|
+
const repoName = await getRepoName();
|
|
403
|
+
if (repoName) {
|
|
404
|
+
const match = packageJson.repository.url.match(/github\.com[/:](.*?)\.git/);
|
|
405
|
+
if (match) {
|
|
406
|
+
const [, repoPath] = match;
|
|
407
|
+
siteUrl = `https://${repoPath.split('/')[0]}.github.io/${repoName}/`;
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
if (siteUrl) {
|
|
412
|
+
console.log(`\nš Site URL: ${siteUrl}`);
|
|
413
|
+
}
|
|
414
|
+
} catch {
|
|
415
|
+
console.log('ā ļø Could not determine site URL');
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
} catch (error) {
|
|
419
|
+
console.error('ā GitHub Pages deployment failed:', error.message);
|
|
420
|
+
console.log('\nš Manual deployment options:');
|
|
421
|
+
console.log(' 1. Run: npx gh-pages -d dist --dotfiles');
|
|
422
|
+
console.log(' 2. Or upload dist/ contents manually to gh-pages branch');
|
|
423
|
+
throw error;
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
/**
|
|
428
|
+
* Validate git repository setup for GitHub Pages deployment
|
|
429
|
+
*/
|
|
430
|
+
async function validateGitRepository() {
|
|
431
|
+
try {
|
|
432
|
+
// Check if git is initialized
|
|
433
|
+
await fs.access('.git');
|
|
434
|
+
} catch (error) {
|
|
435
|
+
throw new Error(`Git repository not initialized. Run these commands first:
|
|
436
|
+
|
|
437
|
+
š Setup Steps:
|
|
438
|
+
1. git init
|
|
439
|
+
2. git add .
|
|
440
|
+
3. git commit -m "Initial commit"
|
|
441
|
+
4. Create repository on GitHub
|
|
442
|
+
5. git remote add origin https://github.com/username/repository.git
|
|
443
|
+
6. git push -u origin main
|
|
444
|
+
7. npx uikit deploy --github
|
|
445
|
+
|
|
446
|
+
š Need help? Visit: https://docs.github.com/en/get-started/quickstart/create-a-repo`);
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
// Check if remote origin exists
|
|
450
|
+
try {
|
|
451
|
+
const result = await new Promise((resolve, reject) => {
|
|
452
|
+
const gitRemote = spawn('git', ['remote', 'get-url', 'origin'], {
|
|
453
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
454
|
+
cwd: process.cwd()
|
|
455
|
+
});
|
|
456
|
+
|
|
457
|
+
let stdout = '';
|
|
458
|
+
let stderr = '';
|
|
459
|
+
|
|
460
|
+
gitRemote.stdout?.on('data', (data) => {
|
|
461
|
+
stdout += data.toString();
|
|
462
|
+
});
|
|
463
|
+
|
|
464
|
+
gitRemote.stderr?.on('data', (data) => {
|
|
465
|
+
stderr += data.toString();
|
|
466
|
+
});
|
|
467
|
+
|
|
468
|
+
gitRemote.on('close', (code) => {
|
|
469
|
+
if (code === 0 && stdout.trim()) {
|
|
470
|
+
resolve(stdout.trim());
|
|
471
|
+
} else {
|
|
472
|
+
reject(new Error(stderr || 'No remote origin'));
|
|
473
|
+
}
|
|
474
|
+
});
|
|
475
|
+
|
|
476
|
+
gitRemote.on('error', (error) => {
|
|
477
|
+
reject(error);
|
|
478
|
+
});
|
|
479
|
+
});
|
|
480
|
+
|
|
481
|
+
// Validate it's a GitHub URL
|
|
482
|
+
if (!result.includes('github.com')) {
|
|
483
|
+
console.log('ā ļø Warning: Remote origin is not a GitHub repository');
|
|
484
|
+
console.log(` Current origin: ${result}`);
|
|
485
|
+
console.log(' GitHub Pages deployment requires a GitHub repository');
|
|
486
|
+
} else {
|
|
487
|
+
console.log(`ā
Git repository validated: ${result}`);
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
} catch (error) {
|
|
491
|
+
throw new Error(`Git remote origin not configured. Run these commands:
|
|
492
|
+
|
|
493
|
+
š Setup Steps:
|
|
494
|
+
1. Create repository on GitHub
|
|
495
|
+
2. git remote add origin https://github.com/username/repository.git
|
|
496
|
+
3. git push -u origin main
|
|
497
|
+
4. npx uikit deploy --github
|
|
498
|
+
|
|
499
|
+
š Current remotes: Run 'git remote -v' to see configured remotes`);
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
// Check if there are committed changes
|
|
503
|
+
try {
|
|
504
|
+
await new Promise((resolve, reject) => {
|
|
505
|
+
const gitLog = spawn('git', ['log', '--oneline', '-1'], {
|
|
506
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
507
|
+
cwd: process.cwd()
|
|
508
|
+
});
|
|
509
|
+
|
|
510
|
+
gitLog.on('close', (code) => {
|
|
511
|
+
if (code === 0) {
|
|
512
|
+
resolve();
|
|
513
|
+
} else {
|
|
514
|
+
reject(new Error('No commits found'));
|
|
515
|
+
}
|
|
516
|
+
});
|
|
517
|
+
|
|
518
|
+
gitLog.on('error', (error) => {
|
|
519
|
+
reject(error);
|
|
520
|
+
});
|
|
521
|
+
});
|
|
522
|
+
} catch (error) {
|
|
523
|
+
throw new Error(`No commits found in repository. Run these commands:
|
|
524
|
+
|
|
525
|
+
š Setup Steps:
|
|
526
|
+
1. git add .
|
|
527
|
+
2. git commit -m "Initial commit"
|
|
528
|
+
3. git push -u origin main
|
|
529
|
+
4. npx uikit deploy --github
|
|
530
|
+
|
|
531
|
+
š” Tip: Ensure your project files are committed before deploying`);
|
|
532
|
+
}
|
|
533
|
+
}
|