@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,306 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Link, 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 { AdminLayout } from '@bloomneo/uikit/admin';
|
|
6
|
+
import {
|
|
7
|
+
BarChart3,
|
|
8
|
+
Users,
|
|
9
|
+
TrendingUp,
|
|
10
|
+
Activity,
|
|
11
|
+
DollarSign,
|
|
12
|
+
ArrowUpRight,
|
|
13
|
+
ArrowDownRight,
|
|
14
|
+
Eye,
|
|
15
|
+
Download,
|
|
16
|
+
Filter,
|
|
17
|
+
Home,
|
|
18
|
+
Layout,
|
|
19
|
+
Palette,
|
|
20
|
+
BookOpen,
|
|
21
|
+
Mail
|
|
22
|
+
} from 'lucide-react';
|
|
23
|
+
import type { NavigationItem } from '@bloomneo/uikit';
|
|
24
|
+
|
|
25
|
+
const DashboardPage: React.FC = () => {
|
|
26
|
+
const navigate = useNavigate();
|
|
27
|
+
|
|
28
|
+
// Navigation configuration matching Header structure
|
|
29
|
+
const adminNavigation: NavigationItem[] = [
|
|
30
|
+
{ key: 'home', label: 'Home', href: '/', icon: Home },
|
|
31
|
+
{ key: 'components', label: 'Components', href: '/components', icon: Layout },
|
|
32
|
+
{ key: 'themes', label: 'Themes', href: '/themes', icon: Palette },
|
|
33
|
+
{
|
|
34
|
+
key: 'pages',
|
|
35
|
+
label: 'Pages',
|
|
36
|
+
icon: BookOpen,
|
|
37
|
+
items: [
|
|
38
|
+
{ key: 'login', label: 'Login', href: '/login' },
|
|
39
|
+
{ key: 'dashboard', label: 'Dashboard', href: '/dashboard' },
|
|
40
|
+
{ key: 'error', label: 'Error Page', href: '/error' },
|
|
41
|
+
]
|
|
42
|
+
},
|
|
43
|
+
{ key: 'about', label: 'About', href: '/about', icon: BookOpen },
|
|
44
|
+
{ key: 'contact', label: 'Contact', href: '/contact', icon: Mail },
|
|
45
|
+
];
|
|
46
|
+
|
|
47
|
+
const handleNavigation = (href: string) => {
|
|
48
|
+
navigate(href);
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
const stats = [
|
|
52
|
+
{
|
|
53
|
+
title: 'Total Revenue',
|
|
54
|
+
value: '$45,231.89',
|
|
55
|
+
change: '+20.1%',
|
|
56
|
+
trend: 'up',
|
|
57
|
+
icon: DollarSign,
|
|
58
|
+
description: 'from last month'
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
title: 'Active Users',
|
|
62
|
+
value: '2,350',
|
|
63
|
+
change: '+180.1%',
|
|
64
|
+
trend: 'up',
|
|
65
|
+
icon: Users,
|
|
66
|
+
description: 'from last month'
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
title: 'Conversion Rate',
|
|
70
|
+
value: '12.5%',
|
|
71
|
+
change: '+19%',
|
|
72
|
+
trend: 'up',
|
|
73
|
+
icon: TrendingUp,
|
|
74
|
+
description: 'from last month'
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
title: 'Bounce Rate',
|
|
78
|
+
value: '24.8%',
|
|
79
|
+
change: '-4.3%',
|
|
80
|
+
trend: 'down',
|
|
81
|
+
icon: Activity,
|
|
82
|
+
description: 'from last month'
|
|
83
|
+
},
|
|
84
|
+
];
|
|
85
|
+
|
|
86
|
+
const recentActivity = [
|
|
87
|
+
{ id: 1, user: 'Alice Johnson', action: 'Created new project', time: '2 minutes ago', status: 'success' },
|
|
88
|
+
{ id: 2, user: 'Bob Smith', action: 'Updated user profile', time: '5 minutes ago', status: 'info' },
|
|
89
|
+
{ id: 3, user: 'Carol Davis', action: 'Deleted 3 items', time: '10 minutes ago', status: 'warning' },
|
|
90
|
+
{ id: 4, user: 'David Wilson', action: 'Failed login attempt', time: '15 minutes ago', status: 'error' },
|
|
91
|
+
];
|
|
92
|
+
|
|
93
|
+
const getStatusColor = (status: string) => {
|
|
94
|
+
switch (status) {
|
|
95
|
+
case 'success': return 'text-green-600 bg-green-100';
|
|
96
|
+
case 'info': return 'text-blue-600 bg-blue-100';
|
|
97
|
+
case 'warning': return 'text-yellow-600 bg-yellow-100';
|
|
98
|
+
case 'error': return 'text-red-600 bg-red-100';
|
|
99
|
+
default: return 'text-gray-600 bg-gray-100';
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
return (
|
|
104
|
+
<AdminLayout scheme="sidebar" tone="brand">
|
|
105
|
+
<AdminLayout.Sidebar
|
|
106
|
+
navigation={adminNavigation}
|
|
107
|
+
currentPath="/dashboard"
|
|
108
|
+
onNavigate={handleNavigation}
|
|
109
|
+
logo={<div className="font-bold">Admin Panel</div>}
|
|
110
|
+
/>
|
|
111
|
+
<AdminLayout.Header
|
|
112
|
+
title="Dashboard"
|
|
113
|
+
actions={
|
|
114
|
+
<div className="flex items-center gap-3">
|
|
115
|
+
<Button variant="outline" size="sm">
|
|
116
|
+
<Download className="h-4 w-4 mr-2" />
|
|
117
|
+
Export
|
|
118
|
+
</Button>
|
|
119
|
+
<Button variant="outline" size="sm">
|
|
120
|
+
<Filter className="h-4 w-4 mr-2" />
|
|
121
|
+
Filter
|
|
122
|
+
</Button>
|
|
123
|
+
<Button size="sm">
|
|
124
|
+
<Eye className="h-4 w-4 mr-2" />
|
|
125
|
+
View All
|
|
126
|
+
</Button>
|
|
127
|
+
</div>
|
|
128
|
+
}
|
|
129
|
+
/>
|
|
130
|
+
<AdminLayout.Content>
|
|
131
|
+
<div className="space-y-8 p-6">
|
|
132
|
+
{/* Content Header */}
|
|
133
|
+
<div className="space-y-2">
|
|
134
|
+
<p className="text-muted-foreground">
|
|
135
|
+
Welcome back! Here's what's happening with your projects.
|
|
136
|
+
</p>
|
|
137
|
+
</div>
|
|
138
|
+
|
|
139
|
+
{/* Stats Grid */}
|
|
140
|
+
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6">
|
|
141
|
+
{stats.map((stat, index) => {
|
|
142
|
+
const Icon = stat.icon;
|
|
143
|
+
return (
|
|
144
|
+
<Card key={index} className="relative overflow-hidden">
|
|
145
|
+
<CardHeader className="flex flex-row items-center justify-between space-y-0 pb-2">
|
|
146
|
+
<CardTitle className="text-sm font-medium">
|
|
147
|
+
{stat.title}
|
|
148
|
+
</CardTitle>
|
|
149
|
+
<Icon className="h-4 w-4 text-muted-foreground" />
|
|
150
|
+
</CardHeader>
|
|
151
|
+
<CardContent>
|
|
152
|
+
<div className="text-2xl font-bold">{stat.value}</div>
|
|
153
|
+
<div className="flex items-center space-x-1 text-xs text-muted-foreground">
|
|
154
|
+
{stat.trend === 'up' ? (
|
|
155
|
+
<ArrowUpRight className="h-3 w-3 text-green-500" />
|
|
156
|
+
) : (
|
|
157
|
+
<ArrowDownRight className="h-3 w-3 text-red-500" />
|
|
158
|
+
)}
|
|
159
|
+
<span className={stat.trend === 'up' ? 'text-green-500' : 'text-red-500'}>
|
|
160
|
+
{stat.change}
|
|
161
|
+
</span>
|
|
162
|
+
<span>{stat.description}</span>
|
|
163
|
+
</div>
|
|
164
|
+
</CardContent>
|
|
165
|
+
</Card>
|
|
166
|
+
);
|
|
167
|
+
})}
|
|
168
|
+
</div>
|
|
169
|
+
|
|
170
|
+
{/* Charts Section */}
|
|
171
|
+
<div className="grid grid-cols-1 lg:grid-cols-2 gap-6">
|
|
172
|
+
{/* Chart Placeholder */}
|
|
173
|
+
<Card>
|
|
174
|
+
<CardHeader>
|
|
175
|
+
<CardTitle>Revenue Overview</CardTitle>
|
|
176
|
+
<CardDescription>
|
|
177
|
+
Monthly revenue for the last 6 months
|
|
178
|
+
</CardDescription>
|
|
179
|
+
</CardHeader>
|
|
180
|
+
<CardContent>
|
|
181
|
+
<div className="h-[200px] bg-muted/30 rounded-lg flex items-center justify-center">
|
|
182
|
+
<div className="text-center space-y-2">
|
|
183
|
+
<BarChart3 className="h-12 w-12 text-muted-foreground mx-auto" />
|
|
184
|
+
<p className="text-sm text-muted-foreground">Chart Component Placeholder</p>
|
|
185
|
+
<p className="text-xs text-muted-foreground">
|
|
186
|
+
Integrate with chart libraries like Chart.js or Recharts
|
|
187
|
+
</p>
|
|
188
|
+
</div>
|
|
189
|
+
</div>
|
|
190
|
+
</CardContent>
|
|
191
|
+
</Card>
|
|
192
|
+
|
|
193
|
+
{/* User Growth */}
|
|
194
|
+
<Card>
|
|
195
|
+
<CardHeader>
|
|
196
|
+
<CardTitle>User Growth</CardTitle>
|
|
197
|
+
<CardDescription>
|
|
198
|
+
New user registrations over time
|
|
199
|
+
</CardDescription>
|
|
200
|
+
</CardHeader>
|
|
201
|
+
<CardContent>
|
|
202
|
+
<div className="h-[200px] bg-muted/30 rounded-lg flex items-center justify-center">
|
|
203
|
+
<div className="text-center space-y-2">
|
|
204
|
+
<TrendingUp className="h-12 w-12 text-muted-foreground mx-auto" />
|
|
205
|
+
<p className="text-sm text-muted-foreground">Growth Chart Placeholder</p>
|
|
206
|
+
<p className="text-xs text-muted-foreground">
|
|
207
|
+
Shows user acquisition trends
|
|
208
|
+
</p>
|
|
209
|
+
</div>
|
|
210
|
+
</div>
|
|
211
|
+
</CardContent>
|
|
212
|
+
</Card>
|
|
213
|
+
</div>
|
|
214
|
+
|
|
215
|
+
{/* Recent Activity & Quick Actions */}
|
|
216
|
+
<div className="grid grid-cols-1 lg:grid-cols-3 gap-6">
|
|
217
|
+
{/* Recent Activity */}
|
|
218
|
+
<Card className="lg:col-span-2">
|
|
219
|
+
<CardHeader>
|
|
220
|
+
<CardTitle>Recent Activity</CardTitle>
|
|
221
|
+
<CardDescription>
|
|
222
|
+
Latest user actions and system events
|
|
223
|
+
</CardDescription>
|
|
224
|
+
</CardHeader>
|
|
225
|
+
<CardContent>
|
|
226
|
+
<div className="space-y-4">
|
|
227
|
+
{recentActivity.map((activity) => (
|
|
228
|
+
<div key={activity.id} className="flex items-center justify-between p-3 rounded-lg bg-muted/20">
|
|
229
|
+
<div className="flex items-center space-x-3">
|
|
230
|
+
<div className={`w-2 h-2 rounded-full ${getStatusColor(activity.status)}`} />
|
|
231
|
+
<div>
|
|
232
|
+
<p className="text-sm font-medium">{activity.user}</p>
|
|
233
|
+
<p className="text-xs text-muted-foreground">{activity.action}</p>
|
|
234
|
+
</div>
|
|
235
|
+
</div>
|
|
236
|
+
<span className="text-xs text-muted-foreground">{activity.time}</span>
|
|
237
|
+
</div>
|
|
238
|
+
))}
|
|
239
|
+
</div>
|
|
240
|
+
<div className="mt-4 text-center">
|
|
241
|
+
<Button variant="outline" size="sm">
|
|
242
|
+
View All Activity
|
|
243
|
+
</Button>
|
|
244
|
+
</div>
|
|
245
|
+
</CardContent>
|
|
246
|
+
</Card>
|
|
247
|
+
|
|
248
|
+
{/* Quick Actions */}
|
|
249
|
+
<Card>
|
|
250
|
+
<CardHeader>
|
|
251
|
+
<CardTitle>Quick Actions</CardTitle>
|
|
252
|
+
<CardDescription>
|
|
253
|
+
Common dashboard tasks
|
|
254
|
+
</CardDescription>
|
|
255
|
+
</CardHeader>
|
|
256
|
+
<CardContent className="space-y-3">
|
|
257
|
+
<Button className="w-full justify-start" variant="outline">
|
|
258
|
+
<Users className="mr-2 h-4 w-4" />
|
|
259
|
+
Manage Users
|
|
260
|
+
</Button>
|
|
261
|
+
<Button className="w-full justify-start" variant="outline" asChild>
|
|
262
|
+
<Link to="/components">
|
|
263
|
+
<BarChart3 className="mr-2 h-4 w-4" />
|
|
264
|
+
View Reports
|
|
265
|
+
</Link>
|
|
266
|
+
</Button>
|
|
267
|
+
<Button className="w-full justify-start" variant="outline" asChild>
|
|
268
|
+
<Link to="/themes">
|
|
269
|
+
<Activity className="mr-2 h-4 w-4" />
|
|
270
|
+
System Status
|
|
271
|
+
</Link>
|
|
272
|
+
</Button>
|
|
273
|
+
<Button className="w-full justify-start" variant="outline" asChild>
|
|
274
|
+
<Link to="/contact">
|
|
275
|
+
<DollarSign className="mr-2 h-4 w-4" />
|
|
276
|
+
Billing & Plans
|
|
277
|
+
</Link>
|
|
278
|
+
</Button>
|
|
279
|
+
</CardContent>
|
|
280
|
+
</Card>
|
|
281
|
+
</div>
|
|
282
|
+
|
|
283
|
+
{/* Demo Note */}
|
|
284
|
+
<Card className="bg-muted/30">
|
|
285
|
+
<CardContent className="pt-6">
|
|
286
|
+
<div className="text-center space-y-2">
|
|
287
|
+
<h3 className="font-semibold">Dashboard Demo</h3>
|
|
288
|
+
<p className="text-sm text-muted-foreground">
|
|
289
|
+
This dashboard showcases UIKit components in a real-world layout with statistics, charts, and activity feeds.
|
|
290
|
+
</p>
|
|
291
|
+
<div className="flex flex-wrap justify-center gap-4 text-xs text-muted-foreground">
|
|
292
|
+
<span>• Responsive grid layout</span>
|
|
293
|
+
<span>• Interactive statistics</span>
|
|
294
|
+
<span>• Activity tracking</span>
|
|
295
|
+
<span>• Chart placeholders</span>
|
|
296
|
+
</div>
|
|
297
|
+
</div>
|
|
298
|
+
</CardContent>
|
|
299
|
+
</Card>
|
|
300
|
+
</div>
|
|
301
|
+
</AdminLayout.Content>
|
|
302
|
+
</AdminLayout>
|
|
303
|
+
);
|
|
304
|
+
};
|
|
305
|
+
|
|
306
|
+
export default DashboardPage;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Link, useNavigate } from 'react-router-dom';
|
|
3
|
+
import { Button } from '@bloomneo/uikit/button';
|
|
4
|
+
import { BlankLayout } from '@bloomneo/uikit/blank';
|
|
5
|
+
import { Home, ArrowLeft } from 'lucide-react';
|
|
6
|
+
|
|
7
|
+
const ErrorPage: React.FC = () => {
|
|
8
|
+
const navigate = useNavigate();
|
|
9
|
+
|
|
10
|
+
return (
|
|
11
|
+
<BlankLayout scheme="simple" tone="subtle">
|
|
12
|
+
<div className="min-h-screen flex items-center justify-center">
|
|
13
|
+
<div className="text-center space-y-6">
|
|
14
|
+
<div className="text-6xl font-bold text-muted-foreground">404</div>
|
|
15
|
+
<h1 className="text-2xl font-bold">Page Not Found</h1>
|
|
16
|
+
<p className="text-muted-foreground">
|
|
17
|
+
The page you're looking for doesn't exist.
|
|
18
|
+
</p>
|
|
19
|
+
<div className="flex gap-4 justify-center">
|
|
20
|
+
<Button onClick={() => navigate(-1)} variant="outline">
|
|
21
|
+
<ArrowLeft className="mr-2 h-4 w-4" />
|
|
22
|
+
Go Back
|
|
23
|
+
</Button>
|
|
24
|
+
<Button asChild>
|
|
25
|
+
<Link to="/">
|
|
26
|
+
<Home className="mr-2 h-4 w-4" />
|
|
27
|
+
Go Home
|
|
28
|
+
</Link>
|
|
29
|
+
</Button>
|
|
30
|
+
</div>
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|
|
33
|
+
</BlankLayout>
|
|
34
|
+
);
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export default ErrorPage;
|
|
@@ -0,0 +1,201 @@
|
|
|
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 { useTheme } from '@bloomneo/uikit/theme-provider';
|
|
6
|
+
import { ArrowRight, Palette, Layout, BookOpen, Mail } from 'lucide-react';
|
|
7
|
+
import { SEO } from '../components';
|
|
8
|
+
import { asset } from '../utils/asset';
|
|
9
|
+
|
|
10
|
+
export const HomePage: React.FC = () => {
|
|
11
|
+
const { theme } = useTheme();
|
|
12
|
+
|
|
13
|
+
const themeDescriptions = {
|
|
14
|
+
base: 'Clean default configuration showcasing the base system',
|
|
15
|
+
elegant: 'Fresh sky blue theme with clean design',
|
|
16
|
+
metro: 'Dark teal theme with bright yellow accents',
|
|
17
|
+
studio: 'Sophisticated neutral theme with golden accents',
|
|
18
|
+
vivid: 'Premium cursive theme with sophisticated typography'
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
return (
|
|
22
|
+
<>
|
|
23
|
+
<SEO
|
|
24
|
+
title="UIKit Multi-Page Demo - Home"
|
|
25
|
+
description="Professional React components with file-based routing, showcasing layouts, navigation, and code organization"
|
|
26
|
+
/>
|
|
27
|
+
<div className="space-y-12">
|
|
28
|
+
{/* Hero Section */}
|
|
29
|
+
<section className="text-center py-16 bg-gradient-to-b from-background to-muted/20 rounded-lg">
|
|
30
|
+
<div className="space-y-6">
|
|
31
|
+
<div className="mb-6">
|
|
32
|
+
<img
|
|
33
|
+
src={asset('/hero_multi.svg')}
|
|
34
|
+
alt="UIKit Multi-Page Hero Illustration"
|
|
35
|
+
className="mx-auto max-w-md w-full h-auto"
|
|
36
|
+
/>
|
|
37
|
+
</div>
|
|
38
|
+
<h1 className="voila-heading text-4xl md:text-6xl mb-6 text-accent">
|
|
39
|
+
UIKit Multi-Page App
|
|
40
|
+
</h1>
|
|
41
|
+
<p className="voila-subheading text-xl md:text-2xl text-muted-foreground max-w-3xl mx-auto leading-relaxed">
|
|
42
|
+
Professional React components with file-based routing, showcasing layouts, navigation, and code organization
|
|
43
|
+
</p>
|
|
44
|
+
<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">
|
|
45
|
+
<div className="w-2 h-2 bg-primary rounded-full animate-pulse"></div>
|
|
46
|
+
{themeDescriptions[theme as keyof typeof themeDescriptions]}
|
|
47
|
+
</div>
|
|
48
|
+
<div className="flex flex-col sm:flex-row gap-4 justify-center mt-8">
|
|
49
|
+
<Button size="lg" asChild>
|
|
50
|
+
<Link to="/components">
|
|
51
|
+
<Layout className="mr-2 h-4 w-4" />
|
|
52
|
+
Explore Components
|
|
53
|
+
</Link>
|
|
54
|
+
</Button>
|
|
55
|
+
<Button variant="secondary" size="lg" asChild>
|
|
56
|
+
<Link to="/themes">
|
|
57
|
+
<Palette className="mr-2 h-4 w-4" />
|
|
58
|
+
Browse Themes
|
|
59
|
+
</Link>
|
|
60
|
+
</Button>
|
|
61
|
+
</div>
|
|
62
|
+
</div>
|
|
63
|
+
</section>
|
|
64
|
+
|
|
65
|
+
{/* Features Grid */}
|
|
66
|
+
<section className="space-y-6">
|
|
67
|
+
<div className="text-center">
|
|
68
|
+
<h2 className="text-3xl font-bold mb-4">Multi-Page Architecture</h2>
|
|
69
|
+
<p className="text-muted-foreground max-w-2xl mx-auto">
|
|
70
|
+
Explore different pages showcasing various UIKit features and components
|
|
71
|
+
</p>
|
|
72
|
+
</div>
|
|
73
|
+
|
|
74
|
+
<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
|
|
75
|
+
<Card className="border-2 hover:border-primary/50 transition-all duration-200 hover:shadow-lg">
|
|
76
|
+
<CardHeader>
|
|
77
|
+
<div className="w-12 h-12 bg-primary/10 rounded-lg flex items-center justify-center mb-4">
|
|
78
|
+
<Layout className="h-6 w-6 text-primary" />
|
|
79
|
+
</div>
|
|
80
|
+
<CardTitle>Components Gallery</CardTitle>
|
|
81
|
+
<CardDescription>Comprehensive showcase of all UIKit components with examples and variations</CardDescription>
|
|
82
|
+
</CardHeader>
|
|
83
|
+
<CardContent className="space-y-4">
|
|
84
|
+
<ul className="text-sm space-y-2 text-muted-foreground">
|
|
85
|
+
<li>• Buttons & Interactive Elements</li>
|
|
86
|
+
<li>• Cards & Content Containers</li>
|
|
87
|
+
<li>• Form Controls & Inputs</li>
|
|
88
|
+
<li>• Data Display & Charts</li>
|
|
89
|
+
</ul>
|
|
90
|
+
<Button asChild className="w-full">
|
|
91
|
+
<Link to="/components">
|
|
92
|
+
View Components
|
|
93
|
+
<ArrowRight className="ml-2 h-4 w-4" />
|
|
94
|
+
</Link>
|
|
95
|
+
</Button>
|
|
96
|
+
</CardContent>
|
|
97
|
+
</Card>
|
|
98
|
+
|
|
99
|
+
<Card className="border-2 hover:border-primary/50 transition-all duration-200 hover:shadow-lg">
|
|
100
|
+
<CardHeader>
|
|
101
|
+
<div className="w-12 h-12 bg-secondary/10 rounded-lg flex items-center justify-center mb-4">
|
|
102
|
+
<Palette className="h-6 w-6 text-secondary" />
|
|
103
|
+
</div>
|
|
104
|
+
<CardTitle>Theme System</CardTitle>
|
|
105
|
+
<CardDescription>Interactive theme switching with live preview and color palette showcase</CardDescription>
|
|
106
|
+
</CardHeader>
|
|
107
|
+
<CardContent className="space-y-4">
|
|
108
|
+
<ul className="text-sm space-y-2 text-muted-foreground">
|
|
109
|
+
<li>• 5 Beautiful Theme Presets</li>
|
|
110
|
+
<li>• OKLCH Color Science</li>
|
|
111
|
+
<li>• Light & Dark Mode Support</li>
|
|
112
|
+
<li>• Real-time Theme Switching</li>
|
|
113
|
+
</ul>
|
|
114
|
+
<Button asChild className="w-full">
|
|
115
|
+
<Link to="/themes">
|
|
116
|
+
Browse Themes
|
|
117
|
+
<ArrowRight className="ml-2 h-4 w-4" />
|
|
118
|
+
</Link>
|
|
119
|
+
</Button>
|
|
120
|
+
</CardContent>
|
|
121
|
+
</Card>
|
|
122
|
+
|
|
123
|
+
<Card className="border-2 hover:border-primary/50 transition-all duration-200 hover:shadow-lg">
|
|
124
|
+
<CardHeader>
|
|
125
|
+
<div className="w-12 h-12 bg-accent/10 rounded-lg flex items-center justify-center mb-4">
|
|
126
|
+
<BookOpen className="h-6 w-6 text-accent" />
|
|
127
|
+
</div>
|
|
128
|
+
<CardTitle>About & Documentation</CardTitle>
|
|
129
|
+
<CardDescription>Learn about UIKit's architecture, design principles, and implementation details</CardDescription>
|
|
130
|
+
</CardHeader>
|
|
131
|
+
<CardContent className="space-y-4">
|
|
132
|
+
<ul className="text-sm space-y-2 text-muted-foreground">
|
|
133
|
+
<li>• File-based Routing Structure</li>
|
|
134
|
+
<li>• Layout & Navigation Patterns</li>
|
|
135
|
+
<li>• Component Organization</li>
|
|
136
|
+
<li>• Development Best Practices</li>
|
|
137
|
+
</ul>
|
|
138
|
+
<Button asChild className="w-full">
|
|
139
|
+
<Link to="/about">
|
|
140
|
+
Learn More
|
|
141
|
+
<ArrowRight className="ml-2 h-4 w-4" />
|
|
142
|
+
</Link>
|
|
143
|
+
</Button>
|
|
144
|
+
</CardContent>
|
|
145
|
+
</Card>
|
|
146
|
+
|
|
147
|
+
<Card className="border-2 hover:border-primary/50 transition-all duration-200 hover:shadow-lg">
|
|
148
|
+
<CardHeader>
|
|
149
|
+
<div className="w-12 h-12 bg-chart1/10 rounded-lg flex items-center justify-center mb-4">
|
|
150
|
+
<Mail className="h-6 w-6 text-chart1" />
|
|
151
|
+
</div>
|
|
152
|
+
<CardTitle>Contact & Feedback</CardTitle>
|
|
153
|
+
<CardDescription>Get in touch, provide feedback, or explore integration options</CardDescription>
|
|
154
|
+
</CardHeader>
|
|
155
|
+
<CardContent className="space-y-4">
|
|
156
|
+
<ul className="text-sm space-y-2 text-muted-foreground">
|
|
157
|
+
<li>• Form Validation Examples</li>
|
|
158
|
+
<li>• Input Field Variations</li>
|
|
159
|
+
<li>• Submission Handling</li>
|
|
160
|
+
<li>• User Experience Patterns</li>
|
|
161
|
+
</ul>
|
|
162
|
+
<Button asChild className="w-full">
|
|
163
|
+
<Link to="/contact">
|
|
164
|
+
Contact Us
|
|
165
|
+
<ArrowRight className="ml-2 h-4 w-4" />
|
|
166
|
+
</Link>
|
|
167
|
+
</Button>
|
|
168
|
+
</CardContent>
|
|
169
|
+
</Card>
|
|
170
|
+
</div>
|
|
171
|
+
</section>
|
|
172
|
+
|
|
173
|
+
{/* Quick Start */}
|
|
174
|
+
<section className="bg-muted/30 rounded-lg p-8">
|
|
175
|
+
<div className="text-center space-y-4">
|
|
176
|
+
<h2 className="text-2xl font-bold">Multi-Page Template Features</h2>
|
|
177
|
+
<p className="text-muted-foreground max-w-2xl mx-auto">
|
|
178
|
+
This template demonstrates advanced UIKit usage with proper code organization and routing
|
|
179
|
+
</p>
|
|
180
|
+
<div className="grid grid-cols-1 md:grid-cols-3 gap-4 text-sm">
|
|
181
|
+
<div className="bg-background/80 border rounded-lg p-4">
|
|
182
|
+
<div className="font-semibold mb-2">📁 File Organization</div>
|
|
183
|
+
<div className="text-muted-foreground">pages/, layouts/, components/</div>
|
|
184
|
+
</div>
|
|
185
|
+
<div className="bg-background/80 border rounded-lg p-4">
|
|
186
|
+
<div className="font-semibold mb-2">🔗 React Router</div>
|
|
187
|
+
<div className="text-muted-foreground">Code splitting & lazy loading</div>
|
|
188
|
+
</div>
|
|
189
|
+
<div className="bg-background/80 border rounded-lg p-4">
|
|
190
|
+
<div className="font-semibold mb-2">🎨 UIKit Layout</div>
|
|
191
|
+
<div className="text-muted-foreground">PageLayout with navigation</div>
|
|
192
|
+
</div>
|
|
193
|
+
</div>
|
|
194
|
+
</div>
|
|
195
|
+
</section>
|
|
196
|
+
</div>
|
|
197
|
+
</>
|
|
198
|
+
);
|
|
199
|
+
};
|
|
200
|
+
|
|
201
|
+
export default HomePage;
|