@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,374 @@
|
|
|
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 { Badge } from '@bloomneo/uikit/badge';
|
|
5
|
+
import {
|
|
6
|
+
Layers,
|
|
7
|
+
Zap,
|
|
8
|
+
Route,
|
|
9
|
+
FolderOpen,
|
|
10
|
+
Code2,
|
|
11
|
+
Globe,
|
|
12
|
+
Lightbulb,
|
|
13
|
+
ArrowRight
|
|
14
|
+
} from 'lucide-react';
|
|
15
|
+
import { Header, Footer, SEO } from '../../../shared/components';
|
|
16
|
+
|
|
17
|
+
export const AboutPage: React.FC = () => {
|
|
18
|
+
return (
|
|
19
|
+
<PageLayout>
|
|
20
|
+
<SEO
|
|
21
|
+
title="About FBCA - Feature-Based Component Architecture | UIKit Demo"
|
|
22
|
+
description="Learn about Feature-Based Component Architecture (FBCA) with convention-based routing, auto-discovery, and modern React patterns. Complete guide to FBCA implementation."
|
|
23
|
+
keywords="fbca, feature-based architecture, react architecture, component organization, routing conventions, auto-discovery, react patterns"
|
|
24
|
+
ogTitle="About FBCA - Feature-Based Component Architecture"
|
|
25
|
+
ogDescription="Complete guide to Feature-Based Component Architecture with auto-discovery routing and modern React patterns"
|
|
26
|
+
/>
|
|
27
|
+
<Header />
|
|
28
|
+
|
|
29
|
+
<PageLayout.Content>
|
|
30
|
+
<div className="space-y-8">
|
|
31
|
+
<div className="text-center space-y-4">
|
|
32
|
+
<h1 className="voila-heading text-4xl md:text-5xl text-gradient-primary">
|
|
33
|
+
About FBCA Architecture
|
|
34
|
+
</h1>
|
|
35
|
+
<p className="voila-subheading text-muted-foreground max-w-3xl mx-auto text-xl">
|
|
36
|
+
Feature-Based Component Architecture with Page Router - A modern approach to building scalable React applications
|
|
37
|
+
</p>
|
|
38
|
+
</div>
|
|
39
|
+
|
|
40
|
+
{/* What is FBCA */}
|
|
41
|
+
<Card>
|
|
42
|
+
<CardHeader>
|
|
43
|
+
<CardTitle className="flex items-center gap-2">
|
|
44
|
+
<Lightbulb className="h-5 w-5" />
|
|
45
|
+
What is FBCA?
|
|
46
|
+
</CardTitle>
|
|
47
|
+
<CardDescription>
|
|
48
|
+
Feature-Based Component Architecture organizes your application by features, not technical layers
|
|
49
|
+
</CardDescription>
|
|
50
|
+
</CardHeader>
|
|
51
|
+
<CardContent className="space-y-6">
|
|
52
|
+
<div className="grid grid-cols-1 md:grid-cols-2 gap-8">
|
|
53
|
+
<div className="space-y-4">
|
|
54
|
+
<h4 className="font-semibold text-lg">Traditional Structure</h4>
|
|
55
|
+
<div className="bg-muted/50 p-4 rounded-lg font-mono text-sm">
|
|
56
|
+
<div className="text-red-600">❌ src/</div>
|
|
57
|
+
<div className="ml-2">├── components/</div>
|
|
58
|
+
<div className="ml-2">├── pages/</div>
|
|
59
|
+
<div className="ml-2">├── hooks/</div>
|
|
60
|
+
<div className="ml-2">├── utils/</div>
|
|
61
|
+
<div className="ml-2">└── services/</div>
|
|
62
|
+
</div>
|
|
63
|
+
<p className="text-sm text-muted-foreground">
|
|
64
|
+
Files scattered across technical layers, hard to find related code
|
|
65
|
+
</p>
|
|
66
|
+
</div>
|
|
67
|
+
|
|
68
|
+
<div className="space-y-4">
|
|
69
|
+
<h4 className="font-semibold text-lg">FBCA Structure</h4>
|
|
70
|
+
<div className="bg-muted/50 p-4 rounded-lg font-mono text-sm">
|
|
71
|
+
<div className="text-green-600">✅ src/</div>
|
|
72
|
+
<div className="ml-2">├── features/</div>
|
|
73
|
+
<div className="ml-4">│ ├── auth/pages/</div>
|
|
74
|
+
<div className="ml-4">│ ├── gallery/pages/</div>
|
|
75
|
+
<div className="ml-4">│ └── main/pages/</div>
|
|
76
|
+
<div className="ml-2">├── shared/components/</div>
|
|
77
|
+
<div className="ml-2">└── lib/page-router.tsx</div>
|
|
78
|
+
</div>
|
|
79
|
+
<p className="text-sm text-muted-foreground">
|
|
80
|
+
Everything related to a feature lives together, easy to find and maintain
|
|
81
|
+
</p>
|
|
82
|
+
</div>
|
|
83
|
+
</div>
|
|
84
|
+
</CardContent>
|
|
85
|
+
</Card>
|
|
86
|
+
|
|
87
|
+
{/* FBCA Routing System */}
|
|
88
|
+
<Card>
|
|
89
|
+
<CardHeader>
|
|
90
|
+
<CardTitle className="flex items-center gap-2">
|
|
91
|
+
<Route className="h-5 w-5" />
|
|
92
|
+
FBCA Routing System
|
|
93
|
+
</CardTitle>
|
|
94
|
+
<CardDescription>
|
|
95
|
+
Convention-based routing with support for nested routes and dynamic parameters
|
|
96
|
+
</CardDescription>
|
|
97
|
+
</CardHeader>
|
|
98
|
+
<CardContent>
|
|
99
|
+
<div className="space-y-6">
|
|
100
|
+
{/* Basic Routing Rules */}
|
|
101
|
+
<div className="space-y-4">
|
|
102
|
+
<h4 className="font-semibold flex items-center gap-2">
|
|
103
|
+
<FolderOpen className="h-4 w-4" />
|
|
104
|
+
Basic File-Based Routing
|
|
105
|
+
</h4>
|
|
106
|
+
<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
|
|
107
|
+
<div className="space-y-3">
|
|
108
|
+
<Badge variant="outline" className="mb-2">Main Feature Priority</Badge>
|
|
109
|
+
<div className="bg-muted/50 p-3 rounded text-sm font-mono space-y-1">
|
|
110
|
+
<div>features/main/pages/index.tsx</div>
|
|
111
|
+
<div className="text-primary">→ /</div>
|
|
112
|
+
</div>
|
|
113
|
+
<div className="bg-muted/50 p-3 rounded text-sm font-mono space-y-1">
|
|
114
|
+
<div>features/main/pages/About.tsx</div>
|
|
115
|
+
<div className="text-primary">→ /about</div>
|
|
116
|
+
</div>
|
|
117
|
+
</div>
|
|
118
|
+
<div className="space-y-3">
|
|
119
|
+
<Badge variant="outline" className="mb-2">Feature Routes</Badge>
|
|
120
|
+
<div className="bg-muted/50 p-3 rounded text-sm font-mono space-y-1">
|
|
121
|
+
<div>features/auth/pages/index.tsx</div>
|
|
122
|
+
<div className="text-primary">→ /auth</div>
|
|
123
|
+
</div>
|
|
124
|
+
<div className="bg-muted/50 p-3 rounded text-sm font-mono space-y-1">
|
|
125
|
+
<div>features/gallery/pages/index.tsx</div>
|
|
126
|
+
<div className="text-primary">→ /gallery</div>
|
|
127
|
+
</div>
|
|
128
|
+
</div>
|
|
129
|
+
</div>
|
|
130
|
+
</div>
|
|
131
|
+
|
|
132
|
+
{/* Advanced Routing */}
|
|
133
|
+
<div className="space-y-4">
|
|
134
|
+
<h4 className="font-semibold flex items-center gap-2">
|
|
135
|
+
<Layers className="h-4 w-4" />
|
|
136
|
+
Advanced Routing Patterns
|
|
137
|
+
</h4>
|
|
138
|
+
|
|
139
|
+
<div className="grid grid-cols-1 lg:grid-cols-2 gap-6">
|
|
140
|
+
{/* Nested Routes */}
|
|
141
|
+
<div className="space-y-3">
|
|
142
|
+
<Badge variant="secondary" className="mb-2">Nested Routes</Badge>
|
|
143
|
+
<div className="bg-gradient-to-br from-blue-50 to-blue-100 dark:from-blue-950 dark:to-blue-900 border border-blue-200 dark:border-blue-800 p-4 rounded-lg">
|
|
144
|
+
<div className="font-mono text-sm space-y-2">
|
|
145
|
+
<div className="font-semibold text-blue-800 dark:text-blue-200">File Structure:</div>
|
|
146
|
+
<div className="ml-2">features/gallery/pages/new/</div>
|
|
147
|
+
<div className="ml-4 text-blue-600 dark:text-blue-300">└── cat.tsx</div>
|
|
148
|
+
<div className="mt-3 pt-2 border-t border-blue-200 dark:border-blue-700">
|
|
149
|
+
<span className="text-blue-800 dark:text-blue-200 font-semibold">Route:</span>
|
|
150
|
+
<div className="text-blue-600 dark:text-blue-300 font-bold">/gallery/new/cat</div>
|
|
151
|
+
</div>
|
|
152
|
+
</div>
|
|
153
|
+
</div>
|
|
154
|
+
<p className="text-xs text-muted-foreground">
|
|
155
|
+
Create nested directories for deeply nested routes
|
|
156
|
+
</p>
|
|
157
|
+
</div>
|
|
158
|
+
|
|
159
|
+
{/* Dynamic Routes */}
|
|
160
|
+
<div className="space-y-3">
|
|
161
|
+
<Badge variant="secondary" className="mb-2">Dynamic Parameters</Badge>
|
|
162
|
+
<div className="bg-gradient-to-br from-green-50 to-green-100 dark:from-green-950 dark:to-green-900 border border-green-200 dark:border-green-800 p-4 rounded-lg">
|
|
163
|
+
<div className="font-mono text-sm space-y-2">
|
|
164
|
+
<div className="font-semibold text-green-800 dark:text-green-200">File Structure:</div>
|
|
165
|
+
<div className="ml-2">features/gallery/pages/</div>
|
|
166
|
+
<div className="ml-4 text-green-600 dark:text-green-300">└── [animal].tsx</div>
|
|
167
|
+
<div className="mt-3 pt-2 border-t border-green-200 dark:border-green-700">
|
|
168
|
+
<span className="text-green-800 dark:text-green-200 font-semibold">Route:</span>
|
|
169
|
+
<div className="text-green-600 dark:text-green-300 font-bold">/gallery/:animal</div>
|
|
170
|
+
</div>
|
|
171
|
+
</div>
|
|
172
|
+
</div>
|
|
173
|
+
<p className="text-xs text-muted-foreground">
|
|
174
|
+
Square brackets create URL parameters
|
|
175
|
+
</p>
|
|
176
|
+
</div>
|
|
177
|
+
</div>
|
|
178
|
+
</div>
|
|
179
|
+
</div>
|
|
180
|
+
</CardContent>
|
|
181
|
+
</Card>
|
|
182
|
+
|
|
183
|
+
{/* Page Router Magic */}
|
|
184
|
+
<Card>
|
|
185
|
+
<CardHeader>
|
|
186
|
+
<CardTitle className="flex items-center gap-2">
|
|
187
|
+
<Zap className="h-5 w-5" />
|
|
188
|
+
Page Router Magic
|
|
189
|
+
</CardTitle>
|
|
190
|
+
<CardDescription>
|
|
191
|
+
Zero-configuration routing that automatically discovers your pages
|
|
192
|
+
</CardDescription>
|
|
193
|
+
</CardHeader>
|
|
194
|
+
<CardContent>
|
|
195
|
+
<div className="space-y-6">
|
|
196
|
+
<div className="bg-gradient-to-r from-primary/10 to-accent/10 p-6 rounded-lg border border-primary/20">
|
|
197
|
+
<div className="flex items-start gap-4">
|
|
198
|
+
<div className="w-12 h-12 bg-primary/20 rounded-lg flex items-center justify-center">
|
|
199
|
+
<Globe className="h-6 w-6 text-primary" />
|
|
200
|
+
</div>
|
|
201
|
+
<div className="space-y-2">
|
|
202
|
+
<h4 className="font-semibold text-lg">Auto-Discovery</h4>
|
|
203
|
+
<p className="text-muted-foreground">
|
|
204
|
+
The PageRouter scans <code className="bg-muted px-1 rounded">features/*/pages/*.tsx</code> using Vite glob imports and automatically generates routes. No manual configuration needed!
|
|
205
|
+
</p>
|
|
206
|
+
</div>
|
|
207
|
+
</div>
|
|
208
|
+
</div>
|
|
209
|
+
|
|
210
|
+
<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
|
|
211
|
+
<div className="space-y-3">
|
|
212
|
+
<h4 className="font-semibold">How It Works</h4>
|
|
213
|
+
<ol className="text-sm space-y-2 text-muted-foreground list-decimal list-inside">
|
|
214
|
+
<li>PageRouter scans all feature folders at build time</li>
|
|
215
|
+
<li>Generates route map based on file paths</li>
|
|
216
|
+
<li>Main feature gets priority routes (/, /about)</li>
|
|
217
|
+
<li>Other features get namespaced routes (/auth, /gallery)</li>
|
|
218
|
+
<li>Components are lazy-loaded automatically</li>
|
|
219
|
+
</ol>
|
|
220
|
+
</div>
|
|
221
|
+
|
|
222
|
+
<div className="space-y-3">
|
|
223
|
+
<h4 className="font-semibold">Benefits</h4>
|
|
224
|
+
<ul className="text-sm space-y-2 text-muted-foreground">
|
|
225
|
+
<li className="flex items-center gap-2">
|
|
226
|
+
<ArrowRight className="h-3 w-3 text-primary" />
|
|
227
|
+
No route configuration needed
|
|
228
|
+
</li>
|
|
229
|
+
<li className="flex items-center gap-2">
|
|
230
|
+
<ArrowRight className="h-3 w-3 text-primary" />
|
|
231
|
+
Add feature folder → route appears automatically
|
|
232
|
+
</li>
|
|
233
|
+
<li className="flex items-center gap-2">
|
|
234
|
+
<ArrowRight className="h-3 w-3 text-primary" />
|
|
235
|
+
No route conflicts or overlaps
|
|
236
|
+
</li>
|
|
237
|
+
<li className="flex items-center gap-2">
|
|
238
|
+
<ArrowRight className="h-3 w-3 text-primary" />
|
|
239
|
+
Clear ownership per feature
|
|
240
|
+
</li>
|
|
241
|
+
<li className="flex items-center gap-2">
|
|
242
|
+
<ArrowRight className="h-3 w-3 text-primary" />
|
|
243
|
+
Automatic code splitting
|
|
244
|
+
</li>
|
|
245
|
+
</ul>
|
|
246
|
+
</div>
|
|
247
|
+
</div>
|
|
248
|
+
</div>
|
|
249
|
+
</CardContent>
|
|
250
|
+
</Card>
|
|
251
|
+
|
|
252
|
+
{/* Key Technologies */}
|
|
253
|
+
<Card>
|
|
254
|
+
<CardHeader>
|
|
255
|
+
<CardTitle className="flex items-center gap-2">
|
|
256
|
+
<Code2 className="h-5 w-5" />
|
|
257
|
+
Technology Stack
|
|
258
|
+
</CardTitle>
|
|
259
|
+
<CardDescription>
|
|
260
|
+
Modern tools that power this FBCA implementation
|
|
261
|
+
</CardDescription>
|
|
262
|
+
</CardHeader>
|
|
263
|
+
<CardContent>
|
|
264
|
+
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
|
|
265
|
+
<div className="space-y-3">
|
|
266
|
+
<div className="flex items-center justify-between">
|
|
267
|
+
<span className="font-medium">React 19</span>
|
|
268
|
+
<Badge variant="secondary">Frontend</Badge>
|
|
269
|
+
</div>
|
|
270
|
+
<p className="text-sm text-muted-foreground">
|
|
271
|
+
Latest React with Suspense for code splitting
|
|
272
|
+
</p>
|
|
273
|
+
</div>
|
|
274
|
+
|
|
275
|
+
<div className="space-y-3">
|
|
276
|
+
<div className="flex items-center justify-between">
|
|
277
|
+
<span className="font-medium">Vite Glob Imports</span>
|
|
278
|
+
<Badge variant="secondary">Build</Badge>
|
|
279
|
+
</div>
|
|
280
|
+
<p className="text-sm text-muted-foreground">
|
|
281
|
+
Dynamic page discovery at build time
|
|
282
|
+
</p>
|
|
283
|
+
</div>
|
|
284
|
+
|
|
285
|
+
<div className="space-y-3">
|
|
286
|
+
<div className="flex items-center justify-between">
|
|
287
|
+
<span className="font-medium">UIKit Components</span>
|
|
288
|
+
<Badge variant="secondary">UI</Badge>
|
|
289
|
+
</div>
|
|
290
|
+
<p className="text-sm text-muted-foreground">
|
|
291
|
+
Professional components with theme support
|
|
292
|
+
</p>
|
|
293
|
+
</div>
|
|
294
|
+
|
|
295
|
+
<div className="space-y-3">
|
|
296
|
+
<div className="flex items-center justify-between">
|
|
297
|
+
<span className="font-medium">TypeScript</span>
|
|
298
|
+
<Badge variant="secondary">Language</Badge>
|
|
299
|
+
</div>
|
|
300
|
+
<p className="text-sm text-muted-foreground">
|
|
301
|
+
Full type safety across the application
|
|
302
|
+
</p>
|
|
303
|
+
</div>
|
|
304
|
+
|
|
305
|
+
<div className="space-y-3">
|
|
306
|
+
<div className="flex items-center justify-between">
|
|
307
|
+
<span className="font-medium">Tailwind CSS</span>
|
|
308
|
+
<Badge variant="secondary">Styling</Badge>
|
|
309
|
+
</div>
|
|
310
|
+
<p className="text-sm text-muted-foreground">
|
|
311
|
+
Utility-first CSS with UIKit integration
|
|
312
|
+
</p>
|
|
313
|
+
</div>
|
|
314
|
+
|
|
315
|
+
<div className="space-y-3">
|
|
316
|
+
<div className="flex items-center justify-between">
|
|
317
|
+
<span className="font-medium">React Router</span>
|
|
318
|
+
<Badge variant="secondary">Routing</Badge>
|
|
319
|
+
</div>
|
|
320
|
+
<p className="text-sm text-muted-foreground">
|
|
321
|
+
Client-side routing with lazy loading
|
|
322
|
+
</p>
|
|
323
|
+
</div>
|
|
324
|
+
</div>
|
|
325
|
+
</CardContent>
|
|
326
|
+
</Card>
|
|
327
|
+
|
|
328
|
+
{/* Getting Started */}
|
|
329
|
+
<Card className="bg-gradient-to-r from-primary/5 via-accent/5 to-primary/5 border-primary/20">
|
|
330
|
+
<CardHeader>
|
|
331
|
+
<CardTitle>Try FBCA Yourself</CardTitle>
|
|
332
|
+
<CardDescription>
|
|
333
|
+
Experience the power of Feature-Based Component Architecture
|
|
334
|
+
</CardDescription>
|
|
335
|
+
</CardHeader>
|
|
336
|
+
<CardContent className="space-y-6">
|
|
337
|
+
<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
|
|
338
|
+
<div className="space-y-4">
|
|
339
|
+
<h4 className="font-semibold">Create a New Feature</h4>
|
|
340
|
+
<div className="bg-muted/50 p-4 rounded-lg font-mono text-sm space-y-1">
|
|
341
|
+
<div>mkdir src/features/blog</div>
|
|
342
|
+
<div>mkdir src/features/blog/pages</div>
|
|
343
|
+
<div>touch src/features/blog/pages/index.tsx</div>
|
|
344
|
+
<div className="text-green-600"># Route automatically available at /blog</div>
|
|
345
|
+
</div>
|
|
346
|
+
</div>
|
|
347
|
+
|
|
348
|
+
<div className="space-y-4">
|
|
349
|
+
<h4 className="font-semibold">Add Feature Components</h4>
|
|
350
|
+
<div className="bg-muted/50 p-4 rounded-lg font-mono text-sm space-y-1">
|
|
351
|
+
<div>mkdir src/features/blog/components</div>
|
|
352
|
+
<div>mkdir src/features/blog/hooks</div>
|
|
353
|
+
<div>touch src/features/blog/hooks/usePosts.ts</div>
|
|
354
|
+
<div className="text-green-600"># Self-contained feature</div>
|
|
355
|
+
</div>
|
|
356
|
+
</div>
|
|
357
|
+
</div>
|
|
358
|
+
|
|
359
|
+
<div className="text-center pt-4">
|
|
360
|
+
<Badge variant="outline" className="text-sm">
|
|
361
|
+
No configuration needed • Routes auto-discovered • Zero conflicts
|
|
362
|
+
</Badge>
|
|
363
|
+
</div>
|
|
364
|
+
</CardContent>
|
|
365
|
+
</Card>
|
|
366
|
+
</div>
|
|
367
|
+
</PageLayout.Content>
|
|
368
|
+
|
|
369
|
+
<Footer />
|
|
370
|
+
</PageLayout>
|
|
371
|
+
);
|
|
372
|
+
};
|
|
373
|
+
|
|
374
|
+
export default AboutPage;
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Link } from 'react-router-dom';
|
|
3
|
+
import { Button } from '@bloomneo/uikit/button';
|
|
4
|
+
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@bloomneo/uikit/card';
|
|
5
|
+
import { PageLayout } from '@bloomneo/uikit/page';
|
|
6
|
+
import { useTheme } from '@bloomneo/uikit/theme-provider';
|
|
7
|
+
import { ArrowRight, Zap, Images, BookOpen, LogIn, Code2 } from 'lucide-react';
|
|
8
|
+
import { CTASection } from '../components/CTASection';
|
|
9
|
+
import { Header, Footer, SEO } from '../../../shared/components';
|
|
10
|
+
import { asset } from '../../../shared/utils/asset';
|
|
11
|
+
|
|
12
|
+
export const HomePage: React.FC = () => {
|
|
13
|
+
const { theme } = useTheme();
|
|
14
|
+
|
|
15
|
+
const themeDescriptions = {
|
|
16
|
+
base: 'Clean default configuration showcasing the base system',
|
|
17
|
+
elegant: 'Fresh sky blue theme with clean design',
|
|
18
|
+
metro: 'Dark teal theme with bright yellow accents',
|
|
19
|
+
studio: 'Sophisticated neutral theme with golden accents',
|
|
20
|
+
vivid: 'Premium cursive theme with sophisticated typography'
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
return (
|
|
25
|
+
<PageLayout>
|
|
26
|
+
<SEO
|
|
27
|
+
title="UIKit FBCA Demo - Feature-Based Component Architecture"
|
|
28
|
+
description="Experience Feature-Based Component Architecture with auto-discovery routing, UIKit components, and modern React patterns. Zero configuration, convention-based routing."
|
|
29
|
+
keywords="react, fbca, feature-based architecture, uikit, components, typescript, auto-discovery, routing"
|
|
30
|
+
ogTitle="UIKit FBCA Demo - Modern React Architecture"
|
|
31
|
+
ogDescription="Discover Feature-Based Component Architecture with UIKit components and zero-config routing"
|
|
32
|
+
/>
|
|
33
|
+
<Header />
|
|
34
|
+
|
|
35
|
+
<PageLayout.Content>
|
|
36
|
+
<div className="space-y-12">
|
|
37
|
+
{/* Hero Section */}
|
|
38
|
+
<section className="text-center py-16 bg-gradient-to-b from-background to-muted/20 rounded-lg">
|
|
39
|
+
<div className="space-y-6">
|
|
40
|
+
<div className="mb-6">
|
|
41
|
+
<img
|
|
42
|
+
src={asset('/hero_fbca.svg')}
|
|
43
|
+
alt="UIKit FBCA Hero Illustration"
|
|
44
|
+
className="mx-auto max-w-md w-full h-auto"
|
|
45
|
+
/>
|
|
46
|
+
</div>
|
|
47
|
+
<h1 className="voila-heading text-4xl md:text-6xl mb-6 text-gradient-primary">
|
|
48
|
+
UIKit FBCA Demo
|
|
49
|
+
</h1>
|
|
50
|
+
<p className="voila-subheading text-xl md:text-2xl text-muted-foreground max-w-3xl mx-auto leading-relaxed">
|
|
51
|
+
Experience Feature-Based Component Architecture with auto-discovery routing and modern React patterns
|
|
52
|
+
</p>
|
|
53
|
+
<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">
|
|
54
|
+
<div className="w-2 h-2 bg-primary rounded-full animate-pulse"></div>
|
|
55
|
+
{themeDescriptions[theme as keyof typeof themeDescriptions]}
|
|
56
|
+
</div>
|
|
57
|
+
<div className="flex flex-col sm:flex-row gap-4 justify-center mt-8">
|
|
58
|
+
<Button size="lg" asChild>
|
|
59
|
+
<Link to="/gallery">
|
|
60
|
+
<Images className="mr-2 h-4 w-4" />
|
|
61
|
+
View Gallery
|
|
62
|
+
</Link>
|
|
63
|
+
</Button>
|
|
64
|
+
<Button variant="secondary" size="lg" asChild>
|
|
65
|
+
<Link to="/about">
|
|
66
|
+
<BookOpen className="mr-2 h-4 w-4" />
|
|
67
|
+
Learn FBCA
|
|
68
|
+
</Link>
|
|
69
|
+
</Button>
|
|
70
|
+
</div>
|
|
71
|
+
</div>
|
|
72
|
+
</section>
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
{/* Features Grid */}
|
|
76
|
+
<section className="space-y-6">
|
|
77
|
+
<div className="text-center">
|
|
78
|
+
<h2 className="text-3xl font-bold mb-4">Feature-Based Architecture</h2>
|
|
79
|
+
<p className="text-muted-foreground max-w-2xl mx-auto">
|
|
80
|
+
Explore features organized by domain with auto-discovery routing and zero configuration
|
|
81
|
+
</p>
|
|
82
|
+
</div>
|
|
83
|
+
|
|
84
|
+
<div className="grid grid-cols-1 md:grid-cols-3 gap-6">
|
|
85
|
+
<Card className="border-2 hover:border-primary/50 transition-all duration-200 hover:shadow-lg">
|
|
86
|
+
<CardHeader>
|
|
87
|
+
<div className="w-12 h-12 bg-primary/10 rounded-lg flex items-center justify-center mb-4">
|
|
88
|
+
<Images className="h-6 w-6 text-primary" />
|
|
89
|
+
</div>
|
|
90
|
+
<CardTitle>Gallery Feature</CardTitle>
|
|
91
|
+
<CardDescription>Image gallery with responsive design and custom hooks</CardDescription>
|
|
92
|
+
</CardHeader>
|
|
93
|
+
<CardContent className="space-y-4">
|
|
94
|
+
<ul className="text-sm space-y-2 text-muted-foreground">
|
|
95
|
+
<li>• Custom React Hooks</li>
|
|
96
|
+
<li>• Responsive Image Grid</li>
|
|
97
|
+
<li>• Feature-Based Organization</li>
|
|
98
|
+
<li>• Modern UI Components</li>
|
|
99
|
+
</ul>
|
|
100
|
+
<Button asChild className="w-full">
|
|
101
|
+
<Link to="/gallery">
|
|
102
|
+
View Gallery
|
|
103
|
+
<ArrowRight className="ml-2 h-4 w-4" />
|
|
104
|
+
</Link>
|
|
105
|
+
</Button>
|
|
106
|
+
</CardContent>
|
|
107
|
+
</Card>
|
|
108
|
+
|
|
109
|
+
<Card className="border-2 hover:border-primary/50 transition-all duration-200 hover:shadow-lg">
|
|
110
|
+
<CardHeader>
|
|
111
|
+
<div className="w-12 h-12 bg-secondary/10 rounded-lg flex items-center justify-center mb-4">
|
|
112
|
+
<LogIn className="h-6 w-6 text-secondary" />
|
|
113
|
+
</div>
|
|
114
|
+
<CardTitle>Auth Feature</CardTitle>
|
|
115
|
+
<CardDescription>Authentication flow with login forms and user management</CardDescription>
|
|
116
|
+
</CardHeader>
|
|
117
|
+
<CardContent className="space-y-4">
|
|
118
|
+
<ul className="text-sm space-y-2 text-muted-foreground">
|
|
119
|
+
<li>• Login & Registration Forms</li>
|
|
120
|
+
<li>• Form Validation</li>
|
|
121
|
+
<li>• User State Management</li>
|
|
122
|
+
<li>• Route Protection</li>
|
|
123
|
+
</ul>
|
|
124
|
+
<Button asChild className="w-full">
|
|
125
|
+
<Link to="/auth">
|
|
126
|
+
Try Auth
|
|
127
|
+
<ArrowRight className="ml-2 h-4 w-4" />
|
|
128
|
+
</Link>
|
|
129
|
+
</Button>
|
|
130
|
+
</CardContent>
|
|
131
|
+
</Card>
|
|
132
|
+
|
|
133
|
+
<Card className="border-2 hover:border-primary/50 transition-all duration-200 hover:shadow-lg">
|
|
134
|
+
<CardHeader>
|
|
135
|
+
<div className="w-12 h-12 bg-accent/10 rounded-lg flex items-center justify-center mb-4">
|
|
136
|
+
<BookOpen className="h-6 w-6 text-accent" />
|
|
137
|
+
</div>
|
|
138
|
+
<CardTitle>FBCA Architecture</CardTitle>
|
|
139
|
+
<CardDescription>Learn about Feature-Based Component Architecture and conventions</CardDescription>
|
|
140
|
+
</CardHeader>
|
|
141
|
+
<CardContent className="space-y-4">
|
|
142
|
+
<ul className="text-sm space-y-2 text-muted-foreground">
|
|
143
|
+
<li>• Convention-Based Routing</li>
|
|
144
|
+
<li>• Auto-Discovery Pattern</li>
|
|
145
|
+
<li>• Feature Organization</li>
|
|
146
|
+
<li>• Zero Configuration</li>
|
|
147
|
+
</ul>
|
|
148
|
+
<Button asChild className="w-full">
|
|
149
|
+
<Link to="/about">
|
|
150
|
+
Learn FBCA
|
|
151
|
+
<ArrowRight className="ml-2 h-4 w-4" />
|
|
152
|
+
</Link>
|
|
153
|
+
</Button>
|
|
154
|
+
</CardContent>
|
|
155
|
+
</Card>
|
|
156
|
+
</div>
|
|
157
|
+
</section>
|
|
158
|
+
|
|
159
|
+
{/* FBCA Benefits */}
|
|
160
|
+
<section className="bg-gradient-to-r from-primary/5 via-accent/5 to-primary/5 border border-primary/20 rounded-lg p-8">
|
|
161
|
+
<div className="text-center space-y-6">
|
|
162
|
+
<div className="flex items-center justify-center gap-3 mb-4">
|
|
163
|
+
<div className="w-12 h-12 bg-primary/20 rounded-lg flex items-center justify-center">
|
|
164
|
+
<Zap className="h-6 w-6 text-primary" />
|
|
165
|
+
</div>
|
|
166
|
+
<h2 className="text-2xl font-bold">FBCA Architecture Benefits</h2>
|
|
167
|
+
</div>
|
|
168
|
+
<p className="text-muted-foreground max-w-2xl mx-auto">
|
|
169
|
+
This demo showcases Feature-Based Component Architecture with zero-configuration routing
|
|
170
|
+
</p>
|
|
171
|
+
<div className="grid grid-cols-1 md:grid-cols-3 gap-4 text-sm">
|
|
172
|
+
<div className="bg-background/80 border rounded-lg p-4 space-y-2">
|
|
173
|
+
<div className="w-8 h-8 bg-primary/20 rounded flex items-center justify-center mb-3">
|
|
174
|
+
<Code2 className="h-4 w-4 text-primary" />
|
|
175
|
+
</div>
|
|
176
|
+
<div className="font-semibold">Feature Organization</div>
|
|
177
|
+
<div className="text-muted-foreground">features/*/pages/*.tsx</div>
|
|
178
|
+
</div>
|
|
179
|
+
<div className="bg-background/80 border rounded-lg p-4 space-y-2">
|
|
180
|
+
<div className="w-8 h-8 bg-secondary/20 rounded flex items-center justify-center mb-3">
|
|
181
|
+
<Zap className="h-4 w-4 text-secondary" />
|
|
182
|
+
</div>
|
|
183
|
+
<div className="font-semibold">Auto-Discovery</div>
|
|
184
|
+
<div className="text-muted-foreground">Zero configuration routing</div>
|
|
185
|
+
</div>
|
|
186
|
+
<div className="bg-background/80 border rounded-lg p-4 space-y-2">
|
|
187
|
+
<div className="w-8 h-8 bg-accent/20 rounded flex items-center justify-center mb-3">
|
|
188
|
+
<ArrowRight className="h-4 w-4 text-accent" />
|
|
189
|
+
</div>
|
|
190
|
+
<div className="font-semibold">Convention-Based</div>
|
|
191
|
+
<div className="text-muted-foreground">File path = route path</div>
|
|
192
|
+
</div>
|
|
193
|
+
</div>
|
|
194
|
+
</div>
|
|
195
|
+
</section>
|
|
196
|
+
|
|
197
|
+
{/* CTA Section */}
|
|
198
|
+
<CTASection
|
|
199
|
+
title="Ready to Try FBCA?"
|
|
200
|
+
description="Experience Feature-Based Component Architecture with auto-discovery routing and zero configuration."
|
|
201
|
+
primaryAction="Learn Architecture"
|
|
202
|
+
secondaryAction="View Gallery"
|
|
203
|
+
onPrimaryClick={() => window.location.href = '/about'}
|
|
204
|
+
onSecondaryClick={() => window.location.href = '/gallery'}
|
|
205
|
+
/>
|
|
206
|
+
</div>
|
|
207
|
+
</PageLayout.Content>
|
|
208
|
+
|
|
209
|
+
<Footer />
|
|
210
|
+
</PageLayout>
|
|
211
|
+
);
|
|
212
|
+
};
|
|
213
|
+
|
|
214
|
+
export default HomePage;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
|
+
<title>{{PROJECT_NAME}} - UIKit FBCA</title>
|
|
8
|
+
<meta name="description" content="Feature-Based Component Architecture demo with UIKit components" />
|
|
9
|
+
<meta name="theme-color" content="#8B5CF6">
|
|
10
|
+
</head>
|
|
11
|
+
<body>
|
|
12
|
+
<div id="root"></div>
|
|
13
|
+
<script type="module" src="/main.tsx"></script>
|
|
14
|
+
</body>
|
|
15
|
+
</html>
|