@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,34 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { PageLayout } from '@bloomneo/uikit/page';
|
|
3
|
+
import { Card, CardContent, CardHeader, CardTitle } from '@bloomneo/uikit/card';
|
|
4
|
+
import { Button } from '@bloomneo/uikit/button';
|
|
5
|
+
|
|
6
|
+
export const {{FeatureName}}ListPage: React.FC = () => {
|
|
7
|
+
return (
|
|
8
|
+
<PageLayout>
|
|
9
|
+
<PageLayout.Content>
|
|
10
|
+
<div className="space-y-6">
|
|
11
|
+
<div className="flex justify-between items-center">
|
|
12
|
+
<h1 className="voila-heading text-3xl">{{FeatureName}} List</h1>
|
|
13
|
+
<Button>Add New {{FeatureName}}</Button>
|
|
14
|
+
</div>
|
|
15
|
+
|
|
16
|
+
<div className="grid gap-4">
|
|
17
|
+
{Array.from({ length: 3 }, (_, i) => (
|
|
18
|
+
<Card key={i}>
|
|
19
|
+
<CardHeader>
|
|
20
|
+
<CardTitle>{{FeatureName}} Item {i + 1}</CardTitle>
|
|
21
|
+
</CardHeader>
|
|
22
|
+
<CardContent>
|
|
23
|
+
<p className="text-muted-foreground">
|
|
24
|
+
Sample {{featureName}} item content goes here.
|
|
25
|
+
</p>
|
|
26
|
+
</CardContent>
|
|
27
|
+
</Card>
|
|
28
|
+
))}
|
|
29
|
+
</div>
|
|
30
|
+
</div>
|
|
31
|
+
</PageLayout.Content>
|
|
32
|
+
</PageLayout>
|
|
33
|
+
);
|
|
34
|
+
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Card, CardContent, CardHeader, CardTitle } from '@bloomneo/uikit/card';
|
|
3
|
+
import { Button } from '@bloomneo/uikit/button';
|
|
4
|
+
import { Badge } from '@bloomneo/uikit/badge';
|
|
5
|
+
|
|
6
|
+
interface {{FeatureName}}CardProps {
|
|
7
|
+
title?: string;
|
|
8
|
+
description?: string;
|
|
9
|
+
onAction?: () => void;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export const {{FeatureName}}Card: React.FC<{{FeatureName}}CardProps> = ({
|
|
13
|
+
title = '{{FeatureName}} Card',
|
|
14
|
+
description = 'A generated {{featureName}} component',
|
|
15
|
+
onAction
|
|
16
|
+
}) => {
|
|
17
|
+
return (
|
|
18
|
+
<Card>
|
|
19
|
+
<CardHeader>
|
|
20
|
+
<div className="flex items-center justify-between">
|
|
21
|
+
<CardTitle>{title}</CardTitle>
|
|
22
|
+
<Badge variant="outline">{{theme}} theme</Badge>
|
|
23
|
+
</div>
|
|
24
|
+
{description && <p className="text-muted-foreground">{description}</p>}
|
|
25
|
+
</CardHeader>
|
|
26
|
+
<CardContent className="space-y-4">
|
|
27
|
+
<p className="text-sm text-muted-foreground">
|
|
28
|
+
This is a reusable {{featureName}} card component. Customize it according to your needs.
|
|
29
|
+
</p>
|
|
30
|
+
<div className="flex gap-2">
|
|
31
|
+
<Button onClick={onAction}>Primary Action</Button>
|
|
32
|
+
<Button variant="outline">Secondary</Button>
|
|
33
|
+
</div>
|
|
34
|
+
</CardContent>
|
|
35
|
+
</Card>
|
|
36
|
+
);
|
|
37
|
+
};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { PageLayout } from '@bloomneo/uikit/page';
|
|
3
|
+
import { {{FeatureName}}Card } from '../components/{{FeatureName}}Card';
|
|
4
|
+
|
|
5
|
+
export const {{FeatureName}}Page: React.FC = () => {
|
|
6
|
+
return (
|
|
7
|
+
<PageLayout>
|
|
8
|
+
<PageLayout.Content>
|
|
9
|
+
<div className="space-y-8">
|
|
10
|
+
<div className="text-center space-y-4">
|
|
11
|
+
<h1 className="voila-heading text-4xl md:text-5xl text-gradient-primary">
|
|
12
|
+
{{FeatureName}}
|
|
13
|
+
</h1>
|
|
14
|
+
<p className="voila-subheading text-muted-foreground max-w-2xl mx-auto text-xl">
|
|
15
|
+
Main {{featureName}} page with full feature implementation
|
|
16
|
+
</p>
|
|
17
|
+
</div>
|
|
18
|
+
|
|
19
|
+
<div className="max-w-4xl mx-auto">
|
|
20
|
+
<{{FeatureName}}Card
|
|
21
|
+
title="{{FeatureName}} Feature"
|
|
22
|
+
description="Complete feature implementation with components and pages"
|
|
23
|
+
onAction={() => console.log('{{FeatureName}} action triggered')}
|
|
24
|
+
/>
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
27
|
+
</PageLayout.Content>
|
|
28
|
+
</PageLayout>
|
|
29
|
+
);
|
|
30
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export interface {{FeatureName}}Data {
|
|
2
|
+
id: string;
|
|
3
|
+
name: string;
|
|
4
|
+
description?: string;
|
|
5
|
+
status: 'active' | 'inactive' | 'pending';
|
|
6
|
+
createdAt: Date;
|
|
7
|
+
updatedAt: Date;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export interface {{FeatureName}}ListItem {
|
|
11
|
+
id: string;
|
|
12
|
+
title: string;
|
|
13
|
+
subtitle?: string;
|
|
14
|
+
badge?: string;
|
|
15
|
+
href?: string;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export interface {{FeatureName}}State {
|
|
19
|
+
items: {{FeatureName}}Data[];
|
|
20
|
+
selectedItem: {{FeatureName}}Data | null;
|
|
21
|
+
loading: boolean;
|
|
22
|
+
error: string | null;
|
|
23
|
+
filters: {
|
|
24
|
+
status?: {{FeatureName}}Data['status'];
|
|
25
|
+
search?: string;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export interface {{FeatureName}}Actions {
|
|
30
|
+
create: (data: Omit<{{FeatureName}}Data, 'id' | 'createdAt' | 'updatedAt'>) => void;
|
|
31
|
+
update: (id: string, data: Partial<{{FeatureName}}Data>) => void;
|
|
32
|
+
delete: (id: string) => void;
|
|
33
|
+
setFilter: (filters: Partial<{{FeatureName}}State['filters']>) => void;
|
|
34
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { useState, useEffect } from 'react';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* {{hookName}} - Custom hook
|
|
5
|
+
* Generated with UIKit {{theme}} theme
|
|
6
|
+
*/
|
|
7
|
+
export const {{hookName}} = () => {
|
|
8
|
+
const [data, setData] = useState<any>(null);
|
|
9
|
+
const [loading, setLoading] = useState<boolean>(false);
|
|
10
|
+
const [error, setError] = useState<string | null>(null);
|
|
11
|
+
|
|
12
|
+
useEffect(() => {
|
|
13
|
+
// Add your hook logic here
|
|
14
|
+
console.log('{{hookName}} initialized');
|
|
15
|
+
}, []);
|
|
16
|
+
|
|
17
|
+
const handleAction = () => {
|
|
18
|
+
setLoading(true);
|
|
19
|
+
setError(null);
|
|
20
|
+
|
|
21
|
+
// Add your action logic here
|
|
22
|
+
|
|
23
|
+
setTimeout(() => {
|
|
24
|
+
setLoading(false);
|
|
25
|
+
setData('Sample data from {{hookName}}');
|
|
26
|
+
}, 1000);
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
return {
|
|
30
|
+
data,
|
|
31
|
+
loading,
|
|
32
|
+
error,
|
|
33
|
+
handleAction,
|
|
34
|
+
};
|
|
35
|
+
};
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { PageLayout } from '@bloomneo/uikit/page';
|
|
3
|
+
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@bloomneo/uikit/card';
|
|
4
|
+
import { Button } from '@bloomneo/uikit/button';
|
|
5
|
+
import { Badge } from '@bloomneo/uikit/badge';
|
|
6
|
+
|
|
7
|
+
export const {{FeatureName}}Page: React.FC = () => {
|
|
8
|
+
return (
|
|
9
|
+
<PageLayout>
|
|
10
|
+
<PageLayout.Content>
|
|
11
|
+
<div className="space-y-8">
|
|
12
|
+
{/* Page Header */}
|
|
13
|
+
<div className="text-center space-y-4">
|
|
14
|
+
<h1 className="voila-heading text-4xl md:text-5xl text-gradient-primary">
|
|
15
|
+
{{FeatureName}}
|
|
16
|
+
</h1>
|
|
17
|
+
<p className="voila-subheading text-muted-foreground max-w-2xl mx-auto text-xl">
|
|
18
|
+
Welcome to your new {{featureName}} page powered by UIKit
|
|
19
|
+
</p>
|
|
20
|
+
<Badge variant="outline" className="text-sm">
|
|
21
|
+
Generated with UIKit CLI
|
|
22
|
+
</Badge>
|
|
23
|
+
</div>
|
|
24
|
+
|
|
25
|
+
{/* Main Content */}
|
|
26
|
+
<div className="max-w-4xl mx-auto">
|
|
27
|
+
<Card>
|
|
28
|
+
<CardHeader>
|
|
29
|
+
<CardTitle className="flex items-center gap-2">
|
|
30
|
+
🎨 {{FeatureName}} Content
|
|
31
|
+
</CardTitle>
|
|
32
|
+
<CardDescription>
|
|
33
|
+
This is your generated {{featureName}} page. Customize it with UIKit components and your own content.
|
|
34
|
+
</CardDescription>
|
|
35
|
+
</CardHeader>
|
|
36
|
+
<CardContent className="space-y-4">
|
|
37
|
+
<p className="text-muted-foreground">
|
|
38
|
+
Start building your {{featureName}} feature here. You have access to all UIKit components
|
|
39
|
+
with the {{theme}} theme applied.
|
|
40
|
+
</p>
|
|
41
|
+
|
|
42
|
+
<div className="flex gap-2 flex-wrap">
|
|
43
|
+
<Button variant="default">
|
|
44
|
+
Primary Action
|
|
45
|
+
</Button>
|
|
46
|
+
<Button variant="outline">
|
|
47
|
+
Secondary Action
|
|
48
|
+
</Button>
|
|
49
|
+
<Button variant="ghost">
|
|
50
|
+
Tertiary Action
|
|
51
|
+
</Button>
|
|
52
|
+
</div>
|
|
53
|
+
|
|
54
|
+
<div className="grid gap-4 md:grid-cols-2">
|
|
55
|
+
<Card>
|
|
56
|
+
<CardHeader>
|
|
57
|
+
<CardTitle className="text-lg">Feature 1</CardTitle>
|
|
58
|
+
</CardHeader>
|
|
59
|
+
<CardContent>
|
|
60
|
+
<p className="text-sm text-muted-foreground">
|
|
61
|
+
Add your first {{featureName}} feature here.
|
|
62
|
+
</p>
|
|
63
|
+
</CardContent>
|
|
64
|
+
</Card>
|
|
65
|
+
|
|
66
|
+
<Card>
|
|
67
|
+
<CardHeader>
|
|
68
|
+
<CardTitle className="text-lg">Feature 2</CardTitle>
|
|
69
|
+
</CardHeader>
|
|
70
|
+
<CardContent>
|
|
71
|
+
<p className="text-sm text-muted-foreground">
|
|
72
|
+
Add your second {{featureName}} feature here.
|
|
73
|
+
</p>
|
|
74
|
+
</CardContent>
|
|
75
|
+
</Card>
|
|
76
|
+
</div>
|
|
77
|
+
</CardContent>
|
|
78
|
+
</Card>
|
|
79
|
+
</div>
|
|
80
|
+
</div>
|
|
81
|
+
</PageLayout.Content>
|
|
82
|
+
</PageLayout>
|
|
83
|
+
);
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
export default {{FeatureName}}Page;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# UIKit Custom Theme Generator
|
|
2
|
+
|
|
3
|
+
This template generates custom theme files for UIKit projects.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npx uikit generate theme brand # Creates theme-brand.js
|
|
9
|
+
npx uikit generate theme my-company # Creates theme-my-company.js
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## Generated Files
|
|
13
|
+
|
|
14
|
+
- `src/themes/presets/theme-{name}.js` - Complete theme with light/dark modes
|
|
15
|
+
- All 29 semantic colors included
|
|
16
|
+
- Ready for customization
|
|
17
|
+
- Works with existing bundle system
|
|
18
|
+
|
|
19
|
+
## Next Steps After Generation
|
|
20
|
+
|
|
21
|
+
1. **Customize Colors** - Edit the generated theme file with your brand colors
|
|
22
|
+
2. **Bundle CSS** - Run `npx uikit bundle` to generate CSS
|
|
23
|
+
3. **Use in App** - Apply theme: `<ThemeProvider theme="your-theme-name">`
|
|
24
|
+
|
|
25
|
+
## Template Features
|
|
26
|
+
|
|
27
|
+
✅ **Complete Color System** - All 29 UIKit semantic colors
|
|
28
|
+
✅ **Light & Dark Modes** - Automatically adapted colors
|
|
29
|
+
✅ **Design Tokens** - Optional custom fonts and styles
|
|
30
|
+
✅ **OKLCH Ready** - Comments for upgrading to OKLCH colors
|
|
31
|
+
✅ **Bundle Compatible** - Works with existing `npx uikit bundle`
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* {{ThemeName}} Theme - Custom brand theme for your project
|
|
3
|
+
* @description Generated theme based on your brand colors
|
|
4
|
+
* @package {{projectName}}
|
|
5
|
+
* @file src/themes/presets/theme-{{themeName}}.js
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* {{ThemeName}} theme preset - Customize these colors to match your brand
|
|
10
|
+
*
|
|
11
|
+
* 🎨 Color Customization Tips:
|
|
12
|
+
* - primary: Your main brand color (buttons, links, focus states)
|
|
13
|
+
* - secondary: Supporting color for less prominent elements
|
|
14
|
+
* - accent: Highlight color for special elements
|
|
15
|
+
* - destructive: Error/danger color (usually red variants)
|
|
16
|
+
*
|
|
17
|
+
* 💡 OKLCH Colors (recommended for better consistency):
|
|
18
|
+
* - Replace hex values with oklch() for better color science
|
|
19
|
+
* - Format: oklch(lightness chroma hue)
|
|
20
|
+
* - Example: oklch(0.60 0.15 250) for a nice blue
|
|
21
|
+
* - Tool: https://oklch.com/
|
|
22
|
+
*/
|
|
23
|
+
const {{themeName}}Theme = {
|
|
24
|
+
id: '{{themeName}}',
|
|
25
|
+
name: '{{ThemeName}}',
|
|
26
|
+
description: 'Custom {{themeName}} theme with brand colors and modern design',
|
|
27
|
+
|
|
28
|
+
// Light mode colors - customize these to match your brand
|
|
29
|
+
light: {
|
|
30
|
+
// Base colors
|
|
31
|
+
background: '#FFFFFF', // Main page background
|
|
32
|
+
foreground: '#0F172A', // Primary text color
|
|
33
|
+
card: '#FFFFFF', // Card/panel backgrounds
|
|
34
|
+
cardForeground: '#0F172A', // Text on cards
|
|
35
|
+
popover: '#FFFFFF', // Dropdown/modal backgrounds
|
|
36
|
+
popoverForeground: '#0F172A', // Text in popovers
|
|
37
|
+
|
|
38
|
+
// Brand colors - UPDATE THESE WITH YOUR BRAND COLORS
|
|
39
|
+
primary: '#3B82F6', // 🎨 YOUR MAIN BRAND COLOR
|
|
40
|
+
primaryForeground: '#FFFFFF', // Text on primary elements
|
|
41
|
+
secondary: '#F1F5F9', // Secondary buttons/elements
|
|
42
|
+
secondaryForeground: '#0F172A', // Text on secondary elements
|
|
43
|
+
|
|
44
|
+
// Supporting colors
|
|
45
|
+
muted: '#F8FAFC', // Subtle background areas
|
|
46
|
+
mutedForeground: '#64748B', // Secondary/subtle text
|
|
47
|
+
accent: '#F1F5F9', // Accent elements
|
|
48
|
+
accentForeground: '#0F172A', // Text on accent elements
|
|
49
|
+
|
|
50
|
+
// State colors
|
|
51
|
+
destructive: '#EF4444', // Error/danger elements
|
|
52
|
+
destructiveForeground: '#FFFFFF', // Text on destructive elements
|
|
53
|
+
|
|
54
|
+
// Border colors
|
|
55
|
+
border: '#E2E8F0', // Standard borders
|
|
56
|
+
input: '#E2E8F0', // Input field borders
|
|
57
|
+
ring: '#3B82F6', // Focus ring color (usually matches primary)
|
|
58
|
+
|
|
59
|
+
// Chart colors for data visualization
|
|
60
|
+
chart1: '#3B82F6', // Primary data series
|
|
61
|
+
chart2: '#10B981', // Secondary data series (green)
|
|
62
|
+
chart3: '#F59E0B', // Tertiary data series (orange)
|
|
63
|
+
chart4: '#EF4444', // Warning data series (red)
|
|
64
|
+
chart5: '#8B5CF6', // Additional data series (purple)
|
|
65
|
+
|
|
66
|
+
// Sidebar colors for AdminLayout
|
|
67
|
+
sidebar: '#F8FAFC', // Sidebar background
|
|
68
|
+
sidebarForeground: '#334155', // Sidebar text
|
|
69
|
+
sidebarPrimary: '#3B82F6', // Active nav items
|
|
70
|
+
sidebarPrimaryForeground: '#FFFFFF', // Text on active items
|
|
71
|
+
sidebarAccent: '#F1F5F9', // Hover states
|
|
72
|
+
sidebarAccentForeground: '#334155', // Text on hover
|
|
73
|
+
sidebarBorder: '#E2E8F0', // Sidebar borders
|
|
74
|
+
sidebarRing: '#3B82F6', // Focus indicators
|
|
75
|
+
},
|
|
76
|
+
|
|
77
|
+
// Dark mode colors - automatically adapted from light mode
|
|
78
|
+
dark: {
|
|
79
|
+
background: '#0F172A', // Dark page background
|
|
80
|
+
foreground: '#F8FAFC', // Light text on dark
|
|
81
|
+
card: '#1E293B', // Dark card backgrounds
|
|
82
|
+
cardForeground: '#F8FAFC', // Light text on dark cards
|
|
83
|
+
popover: '#1E293B', // Dark dropdown backgrounds
|
|
84
|
+
popoverForeground: '#F8FAFC', // Light text in dark popovers
|
|
85
|
+
|
|
86
|
+
// Brand colors - lighter versions for dark mode
|
|
87
|
+
primary: '#60A5FA', // Lighter version of brand color
|
|
88
|
+
primaryForeground: '#1E293B', // Dark text on light brand color
|
|
89
|
+
secondary: '#1E293B', // Dark secondary elements
|
|
90
|
+
secondaryForeground: '#F8FAFC', // Light text on dark secondary
|
|
91
|
+
|
|
92
|
+
// Supporting colors
|
|
93
|
+
muted: '#1E293B', // Dark muted backgrounds
|
|
94
|
+
mutedForeground: '#94A3B8', // Muted text in dark mode
|
|
95
|
+
accent: '#1E293B', // Dark accent elements
|
|
96
|
+
accentForeground: '#F8FAFC', // Light text on dark accent
|
|
97
|
+
|
|
98
|
+
// State colors
|
|
99
|
+
destructive: '#F87171', // Lighter red for dark mode
|
|
100
|
+
destructiveForeground: '#1F2937', // Dark text on light red
|
|
101
|
+
|
|
102
|
+
// Border colors
|
|
103
|
+
border: '#334155', // Dark borders
|
|
104
|
+
input: '#334155', // Dark input borders
|
|
105
|
+
ring: '#60A5FA', // Light focus ring
|
|
106
|
+
|
|
107
|
+
// Chart colors - adjusted for dark mode
|
|
108
|
+
chart1: '#60A5FA', // Light blue
|
|
109
|
+
chart2: '#34D399', // Light green
|
|
110
|
+
chart3: '#FBBF24', // Light orange
|
|
111
|
+
chart4: '#F87171', // Light red
|
|
112
|
+
chart5: '#A78BFA', // Light purple
|
|
113
|
+
|
|
114
|
+
// Sidebar colors for dark mode
|
|
115
|
+
sidebar: '#0F172A', // Dark sidebar
|
|
116
|
+
sidebarForeground: '#CBD5E1', // Light sidebar text
|
|
117
|
+
sidebarPrimary: '#60A5FA', // Light active nav
|
|
118
|
+
sidebarPrimaryForeground: '#1E293B', // Dark text on light active
|
|
119
|
+
sidebarAccent: '#1E293B', // Dark hover states
|
|
120
|
+
sidebarAccentForeground: '#CBD5E1', // Light text on dark hover
|
|
121
|
+
sidebarBorder: '#334155', // Dark sidebar borders
|
|
122
|
+
sidebarRing: '#60A5FA', // Light focus indicators
|
|
123
|
+
},
|
|
124
|
+
|
|
125
|
+
// Optional: Custom design tokens
|
|
126
|
+
design: {
|
|
127
|
+
fontPrimary: 'Inter, system-ui, sans-serif',
|
|
128
|
+
fontDisplay: 'Inter, system-ui, sans-serif',
|
|
129
|
+
fontMono: 'JetBrains Mono, Monaco, monospace',
|
|
130
|
+
},
|
|
131
|
+
|
|
132
|
+
// Optional: Custom CSS styles for this theme
|
|
133
|
+
customStyles: `
|
|
134
|
+
/* Essential heading styles for {{themeName}} theme */
|
|
135
|
+
.theme-{{themeName}} .voila-heading {
|
|
136
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
137
|
+
font-weight: 800;
|
|
138
|
+
letter-spacing: -0.04em;
|
|
139
|
+
line-height: 1.1;
|
|
140
|
+
font-size: clamp(2.5rem, 6vw, 4rem);
|
|
141
|
+
color: var(--color-foreground);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
.theme-{{themeName}} .voila-subheading {
|
|
145
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
146
|
+
font-weight: 600;
|
|
147
|
+
letter-spacing: -0.02em;
|
|
148
|
+
line-height: 1.3;
|
|
149
|
+
font-size: clamp(1.25rem, 3vw, 2rem);
|
|
150
|
+
color: var(--color-muted-foreground);
|
|
151
|
+
}
|
|
152
|
+
`
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
export default {{themeName}}Theme;
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
# {{PROJECT_NAME}}
|
|
2
|
+
|
|
3
|
+
**A modern React Multi-Page Application built with @bloomneo/uikit**
|
|
4
|
+
|
|
5
|
+
## 🚀 Quick Start
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# Install dependencies
|
|
9
|
+
npm install
|
|
10
|
+
|
|
11
|
+
# Start development server
|
|
12
|
+
npm run dev
|
|
13
|
+
|
|
14
|
+
# Build for production
|
|
15
|
+
npm run build
|
|
16
|
+
|
|
17
|
+
# Preview production build
|
|
18
|
+
npm run preview
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## 🎨 UIKit Multi-Page Features
|
|
22
|
+
|
|
23
|
+
This Multi-Page Application is built with [@bloomneo/uikit](https://github.com/bloomneo/uikit) featuring:
|
|
24
|
+
|
|
25
|
+
- **37 UI Components** - Forms, tables, navigation, overlays, and more
|
|
26
|
+
- **5 Professional Themes** - Base, Elegant, Metro, Studio, Vivid
|
|
27
|
+
- **5 Layout Systems** - Admin, Auth, Page, Popup, Blank layouts
|
|
28
|
+
- **React Router Integration** - Client-side routing with ScrollToTop
|
|
29
|
+
- **Theme System** - Light/dark mode with semantic OKLCH colors
|
|
30
|
+
- **TypeScript Support** - Full type safety out of the box
|
|
31
|
+
- **SEO Optimization** - Built-in SEO components and hooks
|
|
32
|
+
|
|
33
|
+
## 🏗️ Project Structure
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
{{PROJECT_NAME}}/
|
|
37
|
+
├── src/
|
|
38
|
+
│ ├── App.tsx # Main application with routing
|
|
39
|
+
│ ├── main.tsx # Application entry point
|
|
40
|
+
│ ├── index.css # Tailwind CSS v4+ and UIKit styles
|
|
41
|
+
│ ├── router.tsx # Route definitions
|
|
42
|
+
│ ├── pages/ # Page components
|
|
43
|
+
│ │ ├── Home.tsx # Home page
|
|
44
|
+
│ │ ├── About.tsx # About page
|
|
45
|
+
│ │ ├── Components.tsx # Components showcase
|
|
46
|
+
│ │ ├── Themes.tsx # Theme showcase
|
|
47
|
+
│ │ ├── Contact.tsx # Contact page
|
|
48
|
+
│ │ ├── Dashboard.tsx # Dashboard page
|
|
49
|
+
│ │ ├── Login.tsx # Login page
|
|
50
|
+
│ │ └── ErrorPage.tsx # 404 error page
|
|
51
|
+
│ ├── components/ # Reusable components
|
|
52
|
+
│ │ ├── Header.tsx # Navigation header
|
|
53
|
+
│ │ ├── Footer.tsx # Footer component
|
|
54
|
+
│ │ ├── SEO.tsx # SEO component
|
|
55
|
+
│ │ └── index.ts # Component exports
|
|
56
|
+
│ ├── hooks/ # Custom hooks
|
|
57
|
+
│ │ └── useSEO.ts # SEO hook
|
|
58
|
+
│ └── utils/
|
|
59
|
+
│ └── asset.ts # Asset utility for deployment paths
|
|
60
|
+
├── public/ # Static assets
|
|
61
|
+
├── docs/ # Documentation guides
|
|
62
|
+
├── package.json # Dependencies and scripts
|
|
63
|
+
└── README.md # This file
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## 🎯 Development Commands
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
npm run dev # Start development server (localhost:5173)
|
|
70
|
+
npm run build # Build for production
|
|
71
|
+
npm run preview # Preview production build
|
|
72
|
+
npm run deploy:gh # Deploy to GitHub Pages
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## 🎨 Theme Customization
|
|
76
|
+
|
|
77
|
+
Change your theme by updating the ThemeProvider in `src/main.tsx`:
|
|
78
|
+
|
|
79
|
+
```jsx
|
|
80
|
+
<ThemeProvider theme="elegant" mode="light">
|
|
81
|
+
<App />
|
|
82
|
+
</ThemeProvider>
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Available themes: `base` | `elegant` | `metro` | `studio` | `vivid`
|
|
86
|
+
Available modes: `light` | `dark`
|
|
87
|
+
|
|
88
|
+
## 📦 Built With
|
|
89
|
+
|
|
90
|
+
- **[React 19](https://react.dev)** - UI library
|
|
91
|
+
- **[TypeScript](https://typescriptlang.org)** - Type safety
|
|
92
|
+
- **[Vite](https://vitejs.dev)** - Build tool and dev server
|
|
93
|
+
- **[Tailwind CSS v4+](https://tailwindcss.com)** - Utility-first CSS framework
|
|
94
|
+
- **[@bloomneo/uikit](https://github.com/bloomneo/uikit)** - UI components and layouts
|
|
95
|
+
- **[React Router](https://reactrouter.com)** - Client-side routing
|
|
96
|
+
- **[Lucide React](https://lucide.dev)** - Icon library
|
|
97
|
+
|
|
98
|
+
## 🌐 Asset Management
|
|
99
|
+
|
|
100
|
+
Use the included asset utility for deployment-friendly paths:
|
|
101
|
+
|
|
102
|
+
```jsx
|
|
103
|
+
import { asset } from './utils/asset';
|
|
104
|
+
|
|
105
|
+
// Works in both development and production deployments
|
|
106
|
+
<img src={asset('/images/hero.jpg')} alt="Hero" />
|
|
107
|
+
<link rel="icon" href={asset('/favicon.ico')} />
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## 📚 Resources
|
|
111
|
+
|
|
112
|
+
- **[UIKit Documentation](https://docs.anthropic.com/en/docs/claude-code/claude_code_docs_map.md)** - Complete component reference
|
|
113
|
+
- **[UIKit LLM Guide](./docs/UIKIT_LLM_GUIDE.md)** - Comprehensive usage guide
|
|
114
|
+
- **[React Documentation](https://react.dev)** - React framework guide
|
|
115
|
+
- **[React Router Documentation](https://reactrouter.com)** - Routing guide
|
|
116
|
+
- **[Vite Documentation](https://vitejs.dev)** - Build tool documentation
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
**Built with ❤️ using [@bloomneo/uikit](https://github.com/bloomneo/uikit)** ✨
|