@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,659 @@
|
|
|
1
|
+
import React, { useEffect } from 'react';
|
|
2
|
+
import { BrowserRouter as Router, Routes, Route, Link, useLocation, useNavigate } from 'react-router-dom';
|
|
3
|
+
import { Button } from '@bloomneo/uikit/button';
|
|
4
|
+
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@bloomneo/uikit/card';
|
|
5
|
+
import { useTheme } from '@bloomneo/uikit/theme-provider';
|
|
6
|
+
import { PageLayout } from '@bloomneo/uikit/page';
|
|
7
|
+
import type { NavigationItem } from '@bloomneo/uikit';
|
|
8
|
+
import { Home, Layout, Palette, BookOpen } from 'lucide-react';
|
|
9
|
+
import { SEO } from './components/SEO';
|
|
10
|
+
import { asset } from './utils/asset';
|
|
11
|
+
|
|
12
|
+
// Page Components
|
|
13
|
+
const HomePage: React.FC = () => {
|
|
14
|
+
const { theme } = useTheme();
|
|
15
|
+
|
|
16
|
+
const themeDescriptions = {
|
|
17
|
+
base: 'Clean default configuration showcasing the base system',
|
|
18
|
+
elegant: 'Fresh sky blue theme with clean design',
|
|
19
|
+
metro: 'Dark teal theme with bright yellow accents',
|
|
20
|
+
studio: 'Sophisticated neutral theme with golden accents',
|
|
21
|
+
vivid: 'Premium cursive theme with sophisticated typography'
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
return (
|
|
25
|
+
<>
|
|
26
|
+
<SEO
|
|
27
|
+
title="UIKit SPA Demo - Beautiful UI Components"
|
|
28
|
+
description="Professional React components with stunning themes, powered by OKLCH color science and cross-platform design"
|
|
29
|
+
/>
|
|
30
|
+
<div className="space-y-12">
|
|
31
|
+
{/* Hero Section */}
|
|
32
|
+
<section className="text-center py-16 bg-gradient-to-b from-background to-muted/20 rounded-lg">
|
|
33
|
+
<div className="space-y-6">
|
|
34
|
+
<div className="mb-6">
|
|
35
|
+
<img
|
|
36
|
+
src={asset('/hero_spa.svg')}
|
|
37
|
+
alt="UIKit SPA Hero Illustration"
|
|
38
|
+
className="mx-auto max-w-md w-full h-auto"
|
|
39
|
+
/>
|
|
40
|
+
</div>
|
|
41
|
+
<h1 className="voila-heading text-4xl md:text-6xl mb-6 text-accent">
|
|
42
|
+
Beautiful UI Components
|
|
43
|
+
</h1>
|
|
44
|
+
<p className="voila-subheading text-xl md:text-2xl text-muted-foreground max-w-3xl mx-auto leading-relaxed">
|
|
45
|
+
Professional React components with stunning themes, powered by OKLCH color science and cross-platform design
|
|
46
|
+
</p>
|
|
47
|
+
<div className="inline-flex items-center gap-3 text-sm text-muted-foreground bg-muted/50 backdrop-blur px-6 py-3 rounded-full border">
|
|
48
|
+
<div className="w-2 h-2 bg-primary rounded-full animate-pulse"></div>
|
|
49
|
+
{themeDescriptions[theme as keyof typeof themeDescriptions]}
|
|
50
|
+
</div>
|
|
51
|
+
<div className="flex flex-col sm:flex-row gap-4 justify-center mt-8">
|
|
52
|
+
<Button size="lg" asChild>
|
|
53
|
+
<Link to="/components">Explore Components</Link>
|
|
54
|
+
</Button>
|
|
55
|
+
<Button variant="secondary" size="lg" asChild>
|
|
56
|
+
<Link to="/themes">Browse Themes</Link>
|
|
57
|
+
</Button>
|
|
58
|
+
</div>
|
|
59
|
+
</div>
|
|
60
|
+
</section>
|
|
61
|
+
|
|
62
|
+
{/* Features Grid */}
|
|
63
|
+
<section className="space-y-6">
|
|
64
|
+
<div className="text-center">
|
|
65
|
+
<h2 className="text-3xl font-bold mb-4">Why Choose UIKit?</h2>
|
|
66
|
+
<p className="text-muted-foreground max-w-2xl mx-auto">
|
|
67
|
+
Built for modern applications with performance, accessibility, and developer experience in mind
|
|
68
|
+
</p>
|
|
69
|
+
</div>
|
|
70
|
+
|
|
71
|
+
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
|
|
72
|
+
<Card className="border-2 hover:border-primary/50 transition-all duration-200 hover:shadow-lg">
|
|
73
|
+
<CardHeader>
|
|
74
|
+
<div className="w-12 h-12 bg-primary/10 rounded-lg flex items-center justify-center mb-4">
|
|
75
|
+
🎨
|
|
76
|
+
</div>
|
|
77
|
+
<CardTitle>5 Beautiful Themes</CardTitle>
|
|
78
|
+
<CardDescription>From elegant to vivid, find the perfect aesthetic for your application</CardDescription>
|
|
79
|
+
</CardHeader>
|
|
80
|
+
<CardContent className="space-y-4">
|
|
81
|
+
<ul className="text-sm space-y-2 text-muted-foreground">
|
|
82
|
+
<li>• Base - Clean default styling</li>
|
|
83
|
+
<li>• Elegant - Sky blue elegance</li>
|
|
84
|
+
<li>• Metro - Bold teal & yellow</li>
|
|
85
|
+
<li>• Studio - Sophisticated neutrals</li>
|
|
86
|
+
<li>• Vivid - Premium typography</li>
|
|
87
|
+
</ul>
|
|
88
|
+
<Button asChild className="w-full">
|
|
89
|
+
<Link to="/themes">Explore Themes</Link>
|
|
90
|
+
</Button>
|
|
91
|
+
</CardContent>
|
|
92
|
+
</Card>
|
|
93
|
+
|
|
94
|
+
<Card className="border-2 hover:border-primary/50 transition-all duration-200 hover:shadow-lg">
|
|
95
|
+
<CardHeader>
|
|
96
|
+
<div className="w-12 h-12 bg-secondary/10 rounded-lg flex items-center justify-center mb-4">
|
|
97
|
+
🧩
|
|
98
|
+
</div>
|
|
99
|
+
<CardTitle>Rich Component Library</CardTitle>
|
|
100
|
+
<CardDescription>30+ production-ready components with consistent design language</CardDescription>
|
|
101
|
+
</CardHeader>
|
|
102
|
+
<CardContent className="space-y-4">
|
|
103
|
+
<ul className="text-sm space-y-2 text-muted-foreground">
|
|
104
|
+
<li>• Buttons, Cards, Forms</li>
|
|
105
|
+
<li>• Navigation & Layout</li>
|
|
106
|
+
<li>• Data Tables & Charts</li>
|
|
107
|
+
<li>• Dialogs & Overlays</li>
|
|
108
|
+
<li>• Fully accessible</li>
|
|
109
|
+
</ul>
|
|
110
|
+
<Button asChild className="w-full">
|
|
111
|
+
<Link to="/components">View Components</Link>
|
|
112
|
+
</Button>
|
|
113
|
+
</CardContent>
|
|
114
|
+
</Card>
|
|
115
|
+
|
|
116
|
+
<Card className="border-2 hover:border-primary/50 transition-all duration-200 hover:shadow-lg">
|
|
117
|
+
<CardHeader>
|
|
118
|
+
<div className="w-12 h-12 bg-accent/10 rounded-lg flex items-center justify-center mb-4">
|
|
119
|
+
📚
|
|
120
|
+
</div>
|
|
121
|
+
<CardTitle>Developer Experience</CardTitle>
|
|
122
|
+
<CardDescription>TypeScript-first with excellent documentation and tooling</CardDescription>
|
|
123
|
+
</CardHeader>
|
|
124
|
+
<CardContent className="space-y-4">
|
|
125
|
+
<ul className="text-sm space-y-2 text-muted-foreground">
|
|
126
|
+
<li>• Full TypeScript support</li>
|
|
127
|
+
<li>• CLI for quick setup</li>
|
|
128
|
+
<li>• Storybook integration</li>
|
|
129
|
+
<li>• Tree-shakeable imports</li>
|
|
130
|
+
<li>• Comprehensive docs</li>
|
|
131
|
+
</ul>
|
|
132
|
+
<Button asChild className="w-full">
|
|
133
|
+
<Link to="/docs">Read Documentation</Link>
|
|
134
|
+
</Button>
|
|
135
|
+
</CardContent>
|
|
136
|
+
</Card>
|
|
137
|
+
</div>
|
|
138
|
+
</section>
|
|
139
|
+
|
|
140
|
+
{/* Color Palette Preview */}
|
|
141
|
+
<section className="space-y-6">
|
|
142
|
+
<div className="text-center">
|
|
143
|
+
<h2 className="text-2xl font-bold mb-2">Current Theme Colors</h2>
|
|
144
|
+
<p className="text-muted-foreground">OKLCH-based color system for perfect consistency</p>
|
|
145
|
+
</div>
|
|
146
|
+
|
|
147
|
+
<div className="grid grid-cols-2 md:grid-cols-4 gap-4">
|
|
148
|
+
<div className="bg-primary text-primary-foreground p-6 rounded-lg text-center shadow-lg">
|
|
149
|
+
<div className="text-lg font-bold">Primary</div>
|
|
150
|
+
<div className="text-sm opacity-90 mt-1">Brand color</div>
|
|
151
|
+
</div>
|
|
152
|
+
<div className="bg-secondary text-secondary-foreground p-6 rounded-lg text-center shadow-lg">
|
|
153
|
+
<div className="text-lg font-bold">Secondary</div>
|
|
154
|
+
<div className="text-sm opacity-90 mt-1">Supporting</div>
|
|
155
|
+
</div>
|
|
156
|
+
<div className="bg-accent text-accent-foreground p-6 rounded-lg text-center shadow-lg">
|
|
157
|
+
<div className="text-lg font-bold">Accent</div>
|
|
158
|
+
<div className="text-sm opacity-90 mt-1">Highlights</div>
|
|
159
|
+
</div>
|
|
160
|
+
<div className="bg-muted text-muted-foreground p-6 rounded-lg text-center shadow-lg border">
|
|
161
|
+
<div className="text-lg font-bold">Muted</div>
|
|
162
|
+
<div className="text-sm opacity-90 mt-1">Subtle</div>
|
|
163
|
+
</div>
|
|
164
|
+
</div>
|
|
165
|
+
</section>
|
|
166
|
+
|
|
167
|
+
{/* Quick Start */}
|
|
168
|
+
<section className="bg-muted/30 rounded-lg p-8">
|
|
169
|
+
<div className="text-center space-y-4">
|
|
170
|
+
<h2 className="text-2xl font-bold">Ready to Get Started?</h2>
|
|
171
|
+
<p className="text-muted-foreground max-w-2xl mx-auto">
|
|
172
|
+
Install UIKit in your project and start building beautiful interfaces in minutes
|
|
173
|
+
</p>
|
|
174
|
+
<div className="bg-background border rounded-lg p-4 max-w-md mx-auto">
|
|
175
|
+
<code className="text-sm">npm install @bloomneo/uikit</code>
|
|
176
|
+
</div>
|
|
177
|
+
<div className="flex gap-3 justify-center">
|
|
178
|
+
<Button asChild>
|
|
179
|
+
<Link to="/docs">Installation Guide</Link>
|
|
180
|
+
</Button>
|
|
181
|
+
<Button variant="ghost" asChild>
|
|
182
|
+
<Link to="/components">Browse Components</Link>
|
|
183
|
+
</Button>
|
|
184
|
+
</div>
|
|
185
|
+
</div>
|
|
186
|
+
</section>
|
|
187
|
+
</div>
|
|
188
|
+
</>
|
|
189
|
+
);
|
|
190
|
+
};
|
|
191
|
+
|
|
192
|
+
const ComponentsPage: React.FC = () => {
|
|
193
|
+
return (
|
|
194
|
+
<>
|
|
195
|
+
<SEO
|
|
196
|
+
title="Components - UIKit SPA Demo"
|
|
197
|
+
description="Explore our comprehensive collection of production-ready React components, designed for consistency and accessibility"
|
|
198
|
+
/>
|
|
199
|
+
<div className="space-y-8">
|
|
200
|
+
<div className="text-center space-y-4">
|
|
201
|
+
<h1 className="voila-heading text-4xl">Component Library</h1>
|
|
202
|
+
<p className="voila-subheading text-muted-foreground max-w-3xl mx-auto">
|
|
203
|
+
Explore our comprehensive collection of production-ready React components, designed for consistency and accessibility
|
|
204
|
+
</p>
|
|
205
|
+
</div>
|
|
206
|
+
|
|
207
|
+
{/* Buttons */}
|
|
208
|
+
<Card>
|
|
209
|
+
<CardHeader>
|
|
210
|
+
<CardTitle className="flex items-center gap-2">
|
|
211
|
+
<div className="w-8 h-8 bg-primary/10 rounded flex items-center justify-center">
|
|
212
|
+
🔘
|
|
213
|
+
</div>
|
|
214
|
+
Buttons
|
|
215
|
+
</CardTitle>
|
|
216
|
+
<CardDescription>Interactive elements with multiple variants, sizes, and states</CardDescription>
|
|
217
|
+
</CardHeader>
|
|
218
|
+
<CardContent className="space-y-6">
|
|
219
|
+
<div className="space-y-4">
|
|
220
|
+
<h4 className="text-sm font-medium text-muted-foreground">Variants</h4>
|
|
221
|
+
<div className="flex flex-wrap gap-3">
|
|
222
|
+
<Button size="lg">Primary</Button>
|
|
223
|
+
<Button variant="secondary" size="lg">Secondary</Button>
|
|
224
|
+
<Button variant="outline" size="lg">Outline</Button>
|
|
225
|
+
<Button variant="ghost" size="lg">Ghost</Button>
|
|
226
|
+
<Button variant="destructive" size="lg">Destructive</Button>
|
|
227
|
+
</div>
|
|
228
|
+
</div>
|
|
229
|
+
|
|
230
|
+
<div className="space-y-4">
|
|
231
|
+
<h4 className="text-sm font-medium text-muted-foreground">Sizes</h4>
|
|
232
|
+
<div className="flex flex-wrap items-center gap-3">
|
|
233
|
+
<Button size="sm">Small</Button>
|
|
234
|
+
<Button>Default</Button>
|
|
235
|
+
<Button size="lg">Large</Button>
|
|
236
|
+
</div>
|
|
237
|
+
</div>
|
|
238
|
+
|
|
239
|
+
<div className="space-y-4">
|
|
240
|
+
<h4 className="text-sm font-medium text-muted-foreground">States</h4>
|
|
241
|
+
<div className="flex flex-wrap gap-3">
|
|
242
|
+
<Button>Normal</Button>
|
|
243
|
+
<Button disabled>Disabled</Button>
|
|
244
|
+
<Button className="opacity-50 cursor-not-allowed">Loading...</Button>
|
|
245
|
+
</div>
|
|
246
|
+
</div>
|
|
247
|
+
</CardContent>
|
|
248
|
+
</Card>
|
|
249
|
+
|
|
250
|
+
{/* Cards */}
|
|
251
|
+
<Card>
|
|
252
|
+
<CardHeader>
|
|
253
|
+
<CardTitle className="flex items-center gap-2">
|
|
254
|
+
<div className="w-8 h-8 bg-secondary/10 rounded flex items-center justify-center">
|
|
255
|
+
📋
|
|
256
|
+
</div>
|
|
257
|
+
Cards
|
|
258
|
+
</CardTitle>
|
|
259
|
+
<CardDescription>Flexible containers for displaying content and actions</CardDescription>
|
|
260
|
+
</CardHeader>
|
|
261
|
+
<CardContent>
|
|
262
|
+
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
|
|
263
|
+
<Card className="border-2">
|
|
264
|
+
<CardHeader>
|
|
265
|
+
<CardTitle className="text-lg">Simple Card</CardTitle>
|
|
266
|
+
<CardDescription>Basic card with header and content</CardDescription>
|
|
267
|
+
</CardHeader>
|
|
268
|
+
<CardContent>
|
|
269
|
+
<p className="text-sm text-muted-foreground">
|
|
270
|
+
Cards provide a flexible container for content with consistent spacing and styling.
|
|
271
|
+
</p>
|
|
272
|
+
</CardContent>
|
|
273
|
+
</Card>
|
|
274
|
+
|
|
275
|
+
<Card className="border-2 bg-primary/5">
|
|
276
|
+
<CardHeader>
|
|
277
|
+
<CardTitle className="text-lg">Action Card</CardTitle>
|
|
278
|
+
<CardDescription>Card with interactive elements</CardDescription>
|
|
279
|
+
</CardHeader>
|
|
280
|
+
<CardContent className="space-y-3">
|
|
281
|
+
<p className="text-sm text-muted-foreground">
|
|
282
|
+
Enhanced with buttons and other interactive components.
|
|
283
|
+
</p>
|
|
284
|
+
<Button size="sm" className="w-full">Take Action</Button>
|
|
285
|
+
</CardContent>
|
|
286
|
+
</Card>
|
|
287
|
+
|
|
288
|
+
<Card className="border-2 border-dashed">
|
|
289
|
+
<CardHeader>
|
|
290
|
+
<CardTitle className="text-lg">Custom Styled</CardTitle>
|
|
291
|
+
<CardDescription>Customizable appearance</CardDescription>
|
|
292
|
+
</CardHeader>
|
|
293
|
+
<CardContent>
|
|
294
|
+
<p className="text-sm text-muted-foreground">
|
|
295
|
+
Easy to customize with different borders, backgrounds, and layouts.
|
|
296
|
+
</p>
|
|
297
|
+
</CardContent>
|
|
298
|
+
</Card>
|
|
299
|
+
</div>
|
|
300
|
+
</CardContent>
|
|
301
|
+
</Card>
|
|
302
|
+
|
|
303
|
+
{/* Form Elements */}
|
|
304
|
+
<Card>
|
|
305
|
+
<CardHeader>
|
|
306
|
+
<CardTitle className="flex items-center gap-2">
|
|
307
|
+
<div className="w-8 h-8 bg-accent/10 rounded flex items-center justify-center">
|
|
308
|
+
📝
|
|
309
|
+
</div>
|
|
310
|
+
Form Elements
|
|
311
|
+
</CardTitle>
|
|
312
|
+
<CardDescription>Input fields and form controls with consistent styling and validation</CardDescription>
|
|
313
|
+
</CardHeader>
|
|
314
|
+
<CardContent className="space-y-6">
|
|
315
|
+
<div className="space-y-4">
|
|
316
|
+
<h4 className="text-sm font-medium text-muted-foreground">Text Inputs</h4>
|
|
317
|
+
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
|
|
318
|
+
<div className="space-y-2">
|
|
319
|
+
<label className="text-sm font-medium">Standard Input</label>
|
|
320
|
+
<input
|
|
321
|
+
type="text"
|
|
322
|
+
placeholder="Enter your text"
|
|
323
|
+
className="w-full p-3 bg-background border border-input rounded-lg focus:outline-none focus:ring-2 focus:ring-ring"
|
|
324
|
+
/>
|
|
325
|
+
</div>
|
|
326
|
+
<div className="space-y-2">
|
|
327
|
+
<label className="text-sm font-medium">Email Input</label>
|
|
328
|
+
<input
|
|
329
|
+
type="email"
|
|
330
|
+
placeholder="your@email.com"
|
|
331
|
+
className="w-full p-3 bg-background border border-input rounded-lg focus:outline-none focus:ring-2 focus:ring-ring"
|
|
332
|
+
/>
|
|
333
|
+
</div>
|
|
334
|
+
</div>
|
|
335
|
+
</div>
|
|
336
|
+
|
|
337
|
+
<div className="space-y-4">
|
|
338
|
+
<h4 className="text-sm font-medium text-muted-foreground">Selection Controls</h4>
|
|
339
|
+
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
|
|
340
|
+
<div className="space-y-2">
|
|
341
|
+
<label className="text-sm font-medium">Dropdown Select</label>
|
|
342
|
+
<select className="w-full p-3 bg-background border border-input rounded-lg focus:outline-none focus:ring-2 focus:ring-ring">
|
|
343
|
+
<option>Choose an option</option>
|
|
344
|
+
<option>Option 1</option>
|
|
345
|
+
<option>Option 2</option>
|
|
346
|
+
<option>Option 3</option>
|
|
347
|
+
</select>
|
|
348
|
+
</div>
|
|
349
|
+
<div className="space-y-2">
|
|
350
|
+
<label className="text-sm font-medium">Multi-select</label>
|
|
351
|
+
<select multiple size={3} className="w-full p-3 bg-background border border-input rounded-lg focus:outline-none focus:ring-2 focus:ring-ring">
|
|
352
|
+
<option>Option A</option>
|
|
353
|
+
<option>Option B</option>
|
|
354
|
+
<option>Option C</option>
|
|
355
|
+
</select>
|
|
356
|
+
</div>
|
|
357
|
+
</div>
|
|
358
|
+
</div>
|
|
359
|
+
|
|
360
|
+
<div className="space-y-4">
|
|
361
|
+
<h4 className="text-sm font-medium text-muted-foreground">Text Areas</h4>
|
|
362
|
+
<div className="space-y-2">
|
|
363
|
+
<label className="text-sm font-medium">Message</label>
|
|
364
|
+
<textarea
|
|
365
|
+
placeholder="Enter your message here..."
|
|
366
|
+
rows={4}
|
|
367
|
+
className="w-full p-3 bg-background border border-input rounded-lg focus:outline-none focus:ring-2 focus:ring-ring resize-none"
|
|
368
|
+
/>
|
|
369
|
+
</div>
|
|
370
|
+
</div>
|
|
371
|
+
</CardContent>
|
|
372
|
+
</Card>
|
|
373
|
+
|
|
374
|
+
{/* Data Display */}
|
|
375
|
+
<Card>
|
|
376
|
+
<CardHeader>
|
|
377
|
+
<CardTitle className="flex items-center gap-2">
|
|
378
|
+
<div className="w-8 h-8 bg-chart1/10 rounded flex items-center justify-center">
|
|
379
|
+
📊
|
|
380
|
+
</div>
|
|
381
|
+
Data Display
|
|
382
|
+
</CardTitle>
|
|
383
|
+
<CardDescription>Components for presenting structured information and metrics</CardDescription>
|
|
384
|
+
</CardHeader>
|
|
385
|
+
<CardContent className="space-y-6">
|
|
386
|
+
<div className="space-y-4">
|
|
387
|
+
<h4 className="text-sm font-medium text-muted-foreground">Chart Colors</h4>
|
|
388
|
+
<div className="grid grid-cols-5 gap-3">
|
|
389
|
+
<div className="text-center">
|
|
390
|
+
<div className="w-full h-16 rounded-lg mb-2 bg-chart1 shadow-sm" />
|
|
391
|
+
<div className="text-xs text-muted-foreground font-medium">Chart 1</div>
|
|
392
|
+
</div>
|
|
393
|
+
<div className="text-center">
|
|
394
|
+
<div className="w-full h-16 rounded-lg mb-2 bg-chart2 shadow-sm" />
|
|
395
|
+
<div className="text-xs text-muted-foreground font-medium">Chart 2</div>
|
|
396
|
+
</div>
|
|
397
|
+
<div className="text-center">
|
|
398
|
+
<div className="w-full h-16 rounded-lg mb-2 bg-chart3 shadow-sm" />
|
|
399
|
+
<div className="text-xs text-muted-foreground font-medium">Chart 3</div>
|
|
400
|
+
</div>
|
|
401
|
+
<div className="text-center">
|
|
402
|
+
<div className="w-full h-16 rounded-lg mb-2 bg-chart4 shadow-sm" />
|
|
403
|
+
<div className="text-xs text-muted-foreground font-medium">Chart 4</div>
|
|
404
|
+
</div>
|
|
405
|
+
<div className="text-center">
|
|
406
|
+
<div className="w-full h-16 rounded-lg mb-2 bg-chart5 shadow-sm" />
|
|
407
|
+
<div className="text-xs text-muted-foreground font-medium">Chart 5</div>
|
|
408
|
+
</div>
|
|
409
|
+
</div>
|
|
410
|
+
</div>
|
|
411
|
+
|
|
412
|
+
<div className="space-y-4">
|
|
413
|
+
<h4 className="text-sm font-medium text-muted-foreground">Status Indicators</h4>
|
|
414
|
+
<div className="flex flex-wrap gap-3">
|
|
415
|
+
<div className="inline-flex items-center gap-2 bg-green-100 text-green-800 px-3 py-1 rounded-full text-sm">
|
|
416
|
+
<div className="w-2 h-2 bg-green-600 rounded-full"></div>
|
|
417
|
+
Active
|
|
418
|
+
</div>
|
|
419
|
+
<div className="inline-flex items-center gap-2 bg-yellow-100 text-yellow-800 px-3 py-1 rounded-full text-sm">
|
|
420
|
+
<div className="w-2 h-2 bg-yellow-600 rounded-full"></div>
|
|
421
|
+
Pending
|
|
422
|
+
</div>
|
|
423
|
+
<div className="inline-flex items-center gap-2 bg-red-100 text-red-800 px-3 py-1 rounded-full text-sm">
|
|
424
|
+
<div className="w-2 h-2 bg-red-600 rounded-full"></div>
|
|
425
|
+
Inactive
|
|
426
|
+
</div>
|
|
427
|
+
<div className="inline-flex items-center gap-2 bg-blue-100 text-blue-800 px-3 py-1 rounded-full text-sm">
|
|
428
|
+
<div className="w-2 h-2 bg-blue-600 rounded-full"></div>
|
|
429
|
+
Processing
|
|
430
|
+
</div>
|
|
431
|
+
</div>
|
|
432
|
+
</div>
|
|
433
|
+
</CardContent>
|
|
434
|
+
</Card>
|
|
435
|
+
</div>
|
|
436
|
+
</>
|
|
437
|
+
);
|
|
438
|
+
};
|
|
439
|
+
|
|
440
|
+
const ThemesPage: React.FC = () => {
|
|
441
|
+
const { theme, setTheme, availableThemes } = useTheme();
|
|
442
|
+
|
|
443
|
+
return (
|
|
444
|
+
<>
|
|
445
|
+
<SEO
|
|
446
|
+
title="Themes - UIKit SPA Demo"
|
|
447
|
+
description="Explore 5 professional themes built with OKLCH color science for perfect accessibility and stunning design"
|
|
448
|
+
/>
|
|
449
|
+
<div className="space-y-6">
|
|
450
|
+
<h1 className="voila-heading">Themes</h1>
|
|
451
|
+
|
|
452
|
+
<div className="grid grid-cols-2 md:grid-cols-4 gap-4 mb-6">
|
|
453
|
+
<div className="bg-primary text-primary-foreground p-4 rounded-lg text-center">
|
|
454
|
+
<div className="text-sm font-medium">Primary</div>
|
|
455
|
+
</div>
|
|
456
|
+
<div className="bg-secondary text-secondary-foreground p-4 rounded-lg text-center">
|
|
457
|
+
<div className="text-sm font-medium">Secondary</div>
|
|
458
|
+
</div>
|
|
459
|
+
<div className="bg-accent text-accent-foreground p-4 rounded-lg text-center">
|
|
460
|
+
<div className="text-sm font-medium">Accent</div>
|
|
461
|
+
</div>
|
|
462
|
+
<div className="bg-muted text-muted-foreground p-4 rounded-lg text-center">
|
|
463
|
+
<div className="text-sm font-medium">Muted</div>
|
|
464
|
+
</div>
|
|
465
|
+
</div>
|
|
466
|
+
|
|
467
|
+
<Card>
|
|
468
|
+
<CardHeader>
|
|
469
|
+
<CardTitle>Available Themes</CardTitle>
|
|
470
|
+
<CardDescription>Switch between different theme styles</CardDescription>
|
|
471
|
+
</CardHeader>
|
|
472
|
+
<CardContent>
|
|
473
|
+
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
|
|
474
|
+
{availableThemes.map(themeId => (
|
|
475
|
+
<Card key={themeId} className={theme === themeId ? 'ring-2 ring-primary' : ''}>
|
|
476
|
+
<CardHeader>
|
|
477
|
+
<CardTitle className="text-lg capitalize">{themeId}</CardTitle>
|
|
478
|
+
</CardHeader>
|
|
479
|
+
<CardContent>
|
|
480
|
+
<Button
|
|
481
|
+
onClick={() => setTheme(themeId as any)}
|
|
482
|
+
variant={theme === themeId ? 'default' : 'outline'}
|
|
483
|
+
className="w-full"
|
|
484
|
+
>
|
|
485
|
+
{theme === themeId ? 'Active' : 'Select'}
|
|
486
|
+
</Button>
|
|
487
|
+
</CardContent>
|
|
488
|
+
</Card>
|
|
489
|
+
))}
|
|
490
|
+
</div>
|
|
491
|
+
</CardContent>
|
|
492
|
+
</Card>
|
|
493
|
+
</div>
|
|
494
|
+
</>
|
|
495
|
+
);
|
|
496
|
+
};
|
|
497
|
+
|
|
498
|
+
const DocsPage: React.FC = () => {
|
|
499
|
+
return (
|
|
500
|
+
<>
|
|
501
|
+
<SEO
|
|
502
|
+
title="Documentation - UIKit SPA Demo"
|
|
503
|
+
description="Complete documentation for UIKit components, themes, and SPA routing patterns"
|
|
504
|
+
/>
|
|
505
|
+
<div className="space-y-6">
|
|
506
|
+
<h1 className="voila-heading">Documentation</h1>
|
|
507
|
+
|
|
508
|
+
<Card>
|
|
509
|
+
<CardHeader>
|
|
510
|
+
<CardTitle>Getting Started</CardTitle>
|
|
511
|
+
<CardDescription>How to use @bloomneo/uikit in your project</CardDescription>
|
|
512
|
+
</CardHeader>
|
|
513
|
+
<CardContent className="space-y-4">
|
|
514
|
+
<div>
|
|
515
|
+
<h3 className="font-semibold mb-2">Installation</h3>
|
|
516
|
+
<code className="bg-muted p-2 rounded block">npm install @bloomneo/uikit</code>
|
|
517
|
+
</div>
|
|
518
|
+
|
|
519
|
+
<div>
|
|
520
|
+
<h3 className="font-semibold mb-2">Import Components</h3>
|
|
521
|
+
<code className="bg-muted p-2 rounded block text-sm">
|
|
522
|
+
{`import { Button } from '@bloomneo/uikit/button';
|
|
523
|
+
import { Card } from '@bloomneo/uikit/card';`}
|
|
524
|
+
</code>
|
|
525
|
+
</div>
|
|
526
|
+
|
|
527
|
+
<div>
|
|
528
|
+
<h3 className="font-semibold mb-2">Import Styles</h3>
|
|
529
|
+
<code className="bg-muted p-2 rounded block">import '@bloomneo/uikit/styles';</code>
|
|
530
|
+
</div>
|
|
531
|
+
</CardContent>
|
|
532
|
+
</Card>
|
|
533
|
+
|
|
534
|
+
<Card>
|
|
535
|
+
<CardHeader>
|
|
536
|
+
<CardTitle>Theme Provider</CardTitle>
|
|
537
|
+
<CardDescription>Wrap your app with the theme provider</CardDescription>
|
|
538
|
+
</CardHeader>
|
|
539
|
+
<CardContent>
|
|
540
|
+
<code className="bg-muted p-4 rounded block text-sm">
|
|
541
|
+
{`import { ThemeProvider } from '@bloomneo/uikit/theme-provider';
|
|
542
|
+
|
|
543
|
+
function App() {
|
|
544
|
+
return (
|
|
545
|
+
<ThemeProvider theme="elegant" mode="light">
|
|
546
|
+
<YourApp />
|
|
547
|
+
</ThemeProvider>
|
|
548
|
+
);
|
|
549
|
+
}`}
|
|
550
|
+
</code>
|
|
551
|
+
</CardContent>
|
|
552
|
+
</Card>
|
|
553
|
+
</div>
|
|
554
|
+
</>
|
|
555
|
+
);
|
|
556
|
+
};
|
|
557
|
+
|
|
558
|
+
// Navigation configuration
|
|
559
|
+
const navigationItems: NavigationItem[] = [
|
|
560
|
+
{ key: 'home', label: 'Home', href: '/', icon: Home },
|
|
561
|
+
{ key: 'components', label: 'Components', href: '/components', icon: Layout },
|
|
562
|
+
{ key: 'themes', label: 'Themes', href: '/themes', icon: Palette },
|
|
563
|
+
{ key: 'docs', label: 'Docs', href: '/docs', icon: BookOpen },
|
|
564
|
+
];
|
|
565
|
+
|
|
566
|
+
// Theme actions component
|
|
567
|
+
const ThemeActions: React.FC = () => {
|
|
568
|
+
const { theme, mode, setTheme, availableThemes, toggleMode } = useTheme();
|
|
569
|
+
|
|
570
|
+
return (
|
|
571
|
+
<div className="flex items-center gap-3">
|
|
572
|
+
<select
|
|
573
|
+
value={theme}
|
|
574
|
+
onChange={(e) => setTheme(e.target.value as any)}
|
|
575
|
+
className="bg-background border border-input rounded px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-ring"
|
|
576
|
+
>
|
|
577
|
+
{availableThemes.map(themeId => (
|
|
578
|
+
<option key={themeId} value={themeId}>
|
|
579
|
+
{themeId.charAt(0).toUpperCase() + themeId.slice(1)}
|
|
580
|
+
</option>
|
|
581
|
+
))}
|
|
582
|
+
</select>
|
|
583
|
+
|
|
584
|
+
<Button onClick={toggleMode} variant="outline" size="sm">
|
|
585
|
+
{mode === 'dark' ? '☀️' : '🌙'}
|
|
586
|
+
</Button>
|
|
587
|
+
</div>
|
|
588
|
+
);
|
|
589
|
+
};
|
|
590
|
+
|
|
591
|
+
// Logo component
|
|
592
|
+
const Logo: React.FC = () => (
|
|
593
|
+
<div className="flex items-center gap-3">
|
|
594
|
+
<div className="w-8 h-8 bg-primary rounded flex items-center justify-center text-primary-foreground font-bold text-sm">
|
|
595
|
+
UI
|
|
596
|
+
</div>
|
|
597
|
+
<div>
|
|
598
|
+
<h3 className="voila-brand-logo text-xl font-bold">@bloomneo/uikit</h3>
|
|
599
|
+
<p className="text-xs text-muted-foreground">SPA Template</p>
|
|
600
|
+
</div>
|
|
601
|
+
</div>
|
|
602
|
+
);
|
|
603
|
+
|
|
604
|
+
// Component to handle scroll to top on route change
|
|
605
|
+
const ScrollToTop: React.FC = () => {
|
|
606
|
+
const { pathname } = useLocation();
|
|
607
|
+
|
|
608
|
+
useEffect(() => {
|
|
609
|
+
window.scrollTo(0, 0);
|
|
610
|
+
}, [pathname]);
|
|
611
|
+
|
|
612
|
+
return null;
|
|
613
|
+
};
|
|
614
|
+
|
|
615
|
+
const SPAContent: React.FC = () => {
|
|
616
|
+
const location = useLocation();
|
|
617
|
+
const navigate = useNavigate();
|
|
618
|
+
|
|
619
|
+
const handleNavigation = (href: string, item: NavigationItem) => {
|
|
620
|
+
navigate(href);
|
|
621
|
+
};
|
|
622
|
+
|
|
623
|
+
return (
|
|
624
|
+
<PageLayout scheme="default" tone="subtle" size="xl">
|
|
625
|
+
<ScrollToTop />
|
|
626
|
+
<PageLayout.Header
|
|
627
|
+
navigation={navigationItems}
|
|
628
|
+
currentPath={location.pathname}
|
|
629
|
+
onNavigate={handleNavigation}
|
|
630
|
+
logo={<Logo />}
|
|
631
|
+
actions={<ThemeActions />}
|
|
632
|
+
position="sticky"
|
|
633
|
+
/>
|
|
634
|
+
|
|
635
|
+
<PageLayout.Content>
|
|
636
|
+
<Routes>
|
|
637
|
+
<Route path="/" element={<HomePage />} />
|
|
638
|
+
<Route path="/components" element={<ComponentsPage />} />
|
|
639
|
+
<Route path="/themes" element={<ThemesPage />} />
|
|
640
|
+
<Route path="/docs" element={<DocsPage />} />
|
|
641
|
+
</Routes>
|
|
642
|
+
</PageLayout.Content>
|
|
643
|
+
|
|
644
|
+
<PageLayout.Footer
|
|
645
|
+
copyright="@bloomneo/uikit SPA Template • React Router Navigation"
|
|
646
|
+
/>
|
|
647
|
+
</PageLayout>
|
|
648
|
+
);
|
|
649
|
+
};
|
|
650
|
+
|
|
651
|
+
function App() {
|
|
652
|
+
return (
|
|
653
|
+
<Router basename="/">
|
|
654
|
+
<SPAContent />
|
|
655
|
+
</Router>
|
|
656
|
+
);
|
|
657
|
+
}
|
|
658
|
+
|
|
659
|
+
export default App;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import ReactDOM from 'react-dom/client';
|
|
3
|
+
import { ThemeProvider } from '@bloomneo/uikit/theme-provider';
|
|
4
|
+
import App from './App';
|
|
5
|
+
import './index.css';
|
|
6
|
+
import '@bloomneo/uikit/styles';
|
|
7
|
+
|
|
8
|
+
ReactDOM.createRoot(document.getElementById('root')!).render(
|
|
9
|
+
<React.StrictMode>
|
|
10
|
+
<ThemeProvider theme="base" mode="light" forceConfig={true}>
|
|
11
|
+
<App />
|
|
12
|
+
</ThemeProvider>
|
|
13
|
+
</React.StrictMode>
|
|
14
|
+
);
|