@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,649 @@
|
|
|
1
|
+
# UIKit Composite UI System
|
|
2
|
+
|
|
3
|
+
**Industry-standard design system built on ShadCN foundations, enhanced with rapid prototyping capabilities for enterprise-scale applications.**
|
|
4
|
+
|
|
5
|
+
## 🏗️ Built on Industry Standards
|
|
6
|
+
|
|
7
|
+
UIKit is strategically built on **ShadCN components** and **Tailwind CSS v4** - the proven foundation used by thousands of production applications. This isn't reinventing the wheel; it's enhancing what already works.
|
|
8
|
+
|
|
9
|
+
**Why this foundation matters:**
|
|
10
|
+
- **Industry adoption** - ShadCN is the de-facto standard for React component libraries
|
|
11
|
+
- **Battle-tested patterns** - Proven in production across enterprises and startups
|
|
12
|
+
- **Radix UI primitives** - Accessibility and keyboard navigation built-in
|
|
13
|
+
- **Tailwind CSS integration** - The most adopted utility-first CSS framework
|
|
14
|
+
- **Community ecosystem** - Extensive documentation, tutorials, and community support
|
|
15
|
+
|
|
16
|
+
**UIKit's enhancement approach:**
|
|
17
|
+
- **Maintains 100% ShadCN compatibility** - Use any ShadCN pattern or tutorial
|
|
18
|
+
- **Adds semantic color system** - Automatic theme adaptation without code changes
|
|
19
|
+
- **Provides production layouts** - Skip weeks of layout development
|
|
20
|
+
- **Enables rapid prototyping** - From idea to interface in minutes
|
|
21
|
+
|
|
22
|
+
## 🎯 Why Consistent Design Matters
|
|
23
|
+
|
|
24
|
+
The composite system ensures **design consistency** across your entire application:
|
|
25
|
+
|
|
26
|
+
**🧩 Components (37 Standard)** → **📐 Section Components (3 Bridging)** → **🏗️ Layouts (5 Production-Ready)**
|
|
27
|
+
|
|
28
|
+
**Consistency benefits:**
|
|
29
|
+
- **Predictable behavior** - Users know how to interact with your interface
|
|
30
|
+
- **Faster development** - Developers use familiar patterns everywhere
|
|
31
|
+
- **Easier maintenance** - Changes propagate systematically across the system
|
|
32
|
+
- **Professional appearance** - Cohesive design that builds user trust
|
|
33
|
+
- **Team productivity** - No more "how should this look?" debates
|
|
34
|
+
|
|
35
|
+
**Rapid prototyping advantage:**
|
|
36
|
+
- **Start with components** - Build individual features quickly
|
|
37
|
+
- **Compose with sections** - Combine into reusable interface blocks
|
|
38
|
+
- **Scale to layouts** - Deploy complete application structures
|
|
39
|
+
- **Iterate fast** - Modify any tier without breaking others
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## 🧩 Tier 1: Components (37 Total)
|
|
44
|
+
|
|
45
|
+
### Component Categories
|
|
46
|
+
|
|
47
|
+
| Category | Count | Components | Usage |
|
|
48
|
+
| ------------------- | ----- | ------------------------------------------------------------------------- | ------------------------ |
|
|
49
|
+
| **Form & Input** | 9 | Button, Input, Textarea, Label, Checkbox, RadioGroup, Switch, Slider, Select | User interactions |
|
|
50
|
+
| **Display & Layout** | 10 | Card, Badge, Avatar, Separator, Progress, Skeleton, Alert, Breadcrumb, Tabs, Accordion | Information presentation |
|
|
51
|
+
| **Navigation & Menu** | 6 | DropdownMenu, Menubar, Pagination, Command, Collapsible, Toggle | User navigation |
|
|
52
|
+
| **Overlay & Modal** | 5 | Dialog, Sheet, Popover, HoverCard, Tooltip | Layered interactions |
|
|
53
|
+
| **Data & Table** | 4 | Table, DataTable, Calendar, Toaster | Data management |
|
|
54
|
+
| **Motion & Animation** | 3 | Motion, LoadingSpinner, Reveal, Hover | Visual effects |
|
|
55
|
+
|
|
56
|
+
### Component Usage Patterns
|
|
57
|
+
|
|
58
|
+
All UIKit components follow consistent prop patterns for predictable behavior:
|
|
59
|
+
|
|
60
|
+
#### Button Component Example
|
|
61
|
+
```jsx
|
|
62
|
+
import { Button } from '@bloomneo/uikit/button';
|
|
63
|
+
|
|
64
|
+
// Variant system - different visual styles
|
|
65
|
+
<Button variant="default">Primary Action</Button>
|
|
66
|
+
<Button variant="secondary">Secondary Action</Button>
|
|
67
|
+
<Button variant="outline">Outline Style</Button>
|
|
68
|
+
<Button variant="ghost">Subtle Action</Button>
|
|
69
|
+
<Button variant="destructive">Delete Action</Button>
|
|
70
|
+
|
|
71
|
+
// Size system - consistent sizing across components
|
|
72
|
+
<Button size="sm">Small</Button>
|
|
73
|
+
<Button size="md">Medium (default)</Button>
|
|
74
|
+
<Button size="lg">Large</Button>
|
|
75
|
+
|
|
76
|
+
// Common props available on most components
|
|
77
|
+
<Button
|
|
78
|
+
variant="default"
|
|
79
|
+
size="md"
|
|
80
|
+
disabled={isLoading}
|
|
81
|
+
className="w-full" // Extend with Tailwind classes
|
|
82
|
+
onClick={handleClick}
|
|
83
|
+
>
|
|
84
|
+
Save Changes
|
|
85
|
+
</Button>
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
#### Pattern Consistency
|
|
89
|
+
```jsx
|
|
90
|
+
// Same patterns work across all components
|
|
91
|
+
<Input variant="default" size="md" placeholder="Enter text" />
|
|
92
|
+
<Card variant="default" size="md">
|
|
93
|
+
<CardContent>Consistent sizing and styling</CardContent>
|
|
94
|
+
</Card>
|
|
95
|
+
<Badge variant="default" size="sm">Status</Badge>
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Import Patterns
|
|
99
|
+
```jsx
|
|
100
|
+
// ✅ Individual imports (recommended for tree-shaking)
|
|
101
|
+
import { Button } from '@bloomneo/uikit/button';
|
|
102
|
+
import { Card, CardContent, CardHeader } from '@bloomneo/uikit/card';
|
|
103
|
+
import { ValidatedInput } from '@bloomneo/uikit/form';
|
|
104
|
+
|
|
105
|
+
// ❌ Avoid barrel imports
|
|
106
|
+
import { Button, Card } from '@bloomneo/uikit'; // Larger bundle size
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### Complete Component Reference
|
|
110
|
+
|
|
111
|
+
| Component | Prop | Possible Values |
|
|
112
|
+
|-----------|------|-----------------|
|
|
113
|
+
| **Form & Input (9)** | | |
|
|
114
|
+
| **Button** | `variant` | `default\|secondary\|outline\|ghost\|destructive` |
|
|
115
|
+
| | `size` | `sm\|md\|lg` |
|
|
116
|
+
| | `disabled` | `boolean` |
|
|
117
|
+
| **Input** | `type` | `text\|email\|password\|number\|search` |
|
|
118
|
+
| | `variant` | `default` |
|
|
119
|
+
| | `size` | `sm\|md\|lg` |
|
|
120
|
+
| **Textarea** | `rows` | `number` |
|
|
121
|
+
| | `variant` | `default` |
|
|
122
|
+
| | `resize` | `none\|vertical\|horizontal\|both` |
|
|
123
|
+
| **Label** | `htmlFor` | `string` |
|
|
124
|
+
| **Checkbox** | `checked` | `boolean` |
|
|
125
|
+
| | `variant` | `default` |
|
|
126
|
+
| **RadioGroup** | `value` | `string` |
|
|
127
|
+
| | `orientation` | `horizontal\|vertical` |
|
|
128
|
+
| **Switch** | `checked` | `boolean` |
|
|
129
|
+
| | `size` | `sm\|md\|lg` |
|
|
130
|
+
| **Slider** | `value` | `number[]` |
|
|
131
|
+
| | `min` | `number` |
|
|
132
|
+
| | `max` | `number` |
|
|
133
|
+
| | `step` | `number` |
|
|
134
|
+
| **Select** | `value` | `string` |
|
|
135
|
+
| | `size` | `sm\|md\|lg` |
|
|
136
|
+
| **Display & Layout (10)** | | |
|
|
137
|
+
| **Card** | `variant` | `default` |
|
|
138
|
+
| | `size` | `sm\|md\|lg\|xl` |
|
|
139
|
+
| **Badge** | `variant` | `default\|secondary\|destructive\|outline` |
|
|
140
|
+
| | `size` | `sm\|md\|lg` |
|
|
141
|
+
| **Avatar** | `size` | `sm\|md\|lg\|xl` |
|
|
142
|
+
| | `src` | `string` |
|
|
143
|
+
| | `fallback` | `string` |
|
|
144
|
+
| **Separator** | `orientation` | `horizontal\|vertical` |
|
|
145
|
+
| | `variant` | `default` |
|
|
146
|
+
| **Progress** | `value` | `number` |
|
|
147
|
+
| | `max` | `number` |
|
|
148
|
+
| | `size` | `sm\|md\|lg` |
|
|
149
|
+
| **Skeleton** | `variant` | `default\|circular\|text` |
|
|
150
|
+
| | `animation` | `pulse\|wave\|none` |
|
|
151
|
+
| **Alert** | `variant` | `default\|destructive\|warning\|success` |
|
|
152
|
+
| | `size` | `sm\|md\|lg` |
|
|
153
|
+
| **Breadcrumb** | `separator` | `string\|component` |
|
|
154
|
+
| | `maxItems` | `number` |
|
|
155
|
+
| **Tabs** | `value` | `string` |
|
|
156
|
+
| | `orientation` | `horizontal\|vertical` |
|
|
157
|
+
| **Accordion** | `type` | `single\|multiple` |
|
|
158
|
+
| | `collapsible` | `boolean` |
|
|
159
|
+
| **Navigation & Menu (6)** | | |
|
|
160
|
+
| **DropdownMenu** | `open` | `boolean` |
|
|
161
|
+
| | `modal` | `boolean` |
|
|
162
|
+
| **Menubar** | `value` | `string` |
|
|
163
|
+
| | `orientation` | `horizontal\|vertical` |
|
|
164
|
+
| **Pagination** | `page` | `number` |
|
|
165
|
+
| | `totalPages` | `number` |
|
|
166
|
+
| | `showEdges` | `boolean` |
|
|
167
|
+
| **Command** | `value` | `string` |
|
|
168
|
+
| | `filter` | `function` |
|
|
169
|
+
| **Collapsible** | `open` | `boolean` |
|
|
170
|
+
| | `disabled` | `boolean` |
|
|
171
|
+
| **Toggle** | `pressed` | `boolean` |
|
|
172
|
+
| | `variant` | `default\|outline` |
|
|
173
|
+
| | `size` | `sm\|md\|lg` |
|
|
174
|
+
| **Overlay & Modal (5)** | | |
|
|
175
|
+
| **Dialog** | `open` | `boolean` |
|
|
176
|
+
| | `modal` | `boolean` |
|
|
177
|
+
| **Sheet** | `open` | `boolean` |
|
|
178
|
+
| | `side` | `top\|bottom\|left\|right` |
|
|
179
|
+
| **Popover** | `open` | `boolean` |
|
|
180
|
+
| | `side` | `top\|bottom\|left\|right` |
|
|
181
|
+
| | `align` | `start\|center\|end` |
|
|
182
|
+
| **HoverCard** | `openDelay` | `number` |
|
|
183
|
+
| | `closeDelay` | `number` |
|
|
184
|
+
| **Tooltip** | `side` | `top\|bottom\|left\|right` |
|
|
185
|
+
| | `align` | `start\|center\|end` |
|
|
186
|
+
| | `delayDuration` | `number` |
|
|
187
|
+
| **Data & Table (4)** | | |
|
|
188
|
+
| **Table** | `variant` | `default` |
|
|
189
|
+
| | `size` | `sm\|md\|lg` |
|
|
190
|
+
| **DataTable** | `data` | `array` |
|
|
191
|
+
| | `columns` | `array` |
|
|
192
|
+
| | `searchable` | `boolean` |
|
|
193
|
+
| | `filterable` | `boolean` |
|
|
194
|
+
| | `sortable` | `boolean` |
|
|
195
|
+
| | `pagination` | `boolean` |
|
|
196
|
+
| **Calendar** | `mode` | `single\|multiple\|range` |
|
|
197
|
+
| | `selected` | `Date\|Date[]` |
|
|
198
|
+
| | `numberOfMonths` | `number` |
|
|
199
|
+
| **Toaster** | `position` | `top-left\|top-right\|bottom-left\|bottom-right` |
|
|
200
|
+
| | `richColors` | `boolean` |
|
|
201
|
+
| **Motion & Animation (3)** | | |
|
|
202
|
+
| **Motion** | `preset` | `fadeIn\|slideInUp\|scaleIn\|slideInLeft\|slideInRight` |
|
|
203
|
+
| | `duration` | `fast\|normal\|slow` |
|
|
204
|
+
| | `delay` | `number` |
|
|
205
|
+
| **LoadingSpinner** | `size` | `sm\|md\|lg\|xl` |
|
|
206
|
+
| | `variant` | `default\|dots\|pulse\|ring` |
|
|
207
|
+
| **Reveal** | `preset` | `fadeIn\|slideInUp\|slideInLeft\|slideInRight` |
|
|
208
|
+
| | `threshold` | `number` |
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## 📐 Tier 2: Section Components (3 Standalone)
|
|
213
|
+
|
|
214
|
+
Section components are **standalone layout building blocks** that bridge individual components and complete page layouts. They provide reusable interface sections that can be used independently or combined to create custom layouts.
|
|
215
|
+
|
|
216
|
+
**Why use section components:**
|
|
217
|
+
- **Independent sections** - Use without full page layouts
|
|
218
|
+
- **Flexible composition** - Mix and match with any layout
|
|
219
|
+
- **Consistent styling** - Follow the same prop patterns as all UIKit components
|
|
220
|
+
- **Rapid prototyping** - Quickly build custom interface sections
|
|
221
|
+
|
|
222
|
+
| Component | Prop | Possible Values |
|
|
223
|
+
|-----------|------|-----------------|
|
|
224
|
+
| **Header** | `tone` | `clean\|subtle\|brand\|contrast` |
|
|
225
|
+
| | `size` | `sm\|md\|lg\|xl\|full` |
|
|
226
|
+
| | `position` | `sticky\|fixed\|relative` |
|
|
227
|
+
| | `navigation` | `NavigationItem[]` |
|
|
228
|
+
| | `logo` | `ReactNode` |
|
|
229
|
+
| | `actions` | `ReactNode` |
|
|
230
|
+
| **Footer** | `tone` | `clean\|subtle\|brand\|contrast` |
|
|
231
|
+
| | `size` | `sm\|md\|lg\|xl\|full` |
|
|
232
|
+
| | `position` | `sticky\|fixed\|relative` |
|
|
233
|
+
| | `navigation` | `NavigationItem[]` |
|
|
234
|
+
| | `copyright` | `string` |
|
|
235
|
+
| **Container** | `tone` | `clean\|subtle\|brand\|contrast` |
|
|
236
|
+
| | `size` | `sm\|md\|lg\|xl\|full` |
|
|
237
|
+
| | `sidebar` | `left\|right\|none` |
|
|
238
|
+
| | `navigation` | `NavigationItem[]` |
|
|
239
|
+
| | `onNavigate` | `function` |
|
|
240
|
+
|
|
241
|
+
### Section Component Examples
|
|
242
|
+
|
|
243
|
+
#### Standalone Header
|
|
244
|
+
```jsx
|
|
245
|
+
import { Header, HeaderLogo, HeaderNav } from '@bloomneo/uikit/header';
|
|
246
|
+
|
|
247
|
+
<Header tone="clean" size="xl" position="sticky">
|
|
248
|
+
<HeaderLogo>
|
|
249
|
+
<img src="/logo.png" alt="Logo" className="h-8 w-auto" />
|
|
250
|
+
</HeaderLogo>
|
|
251
|
+
<HeaderNav
|
|
252
|
+
navigation={navigation}
|
|
253
|
+
currentPath="/current"
|
|
254
|
+
onNavigate={handleNavigation}
|
|
255
|
+
/>
|
|
256
|
+
</Header>
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
#### Standalone Footer
|
|
260
|
+
```jsx
|
|
261
|
+
import { Footer } from '@bloomneo/uikit/footer';
|
|
262
|
+
|
|
263
|
+
<Footer tone="contrast" size="xl" position="relative">
|
|
264
|
+
<div className="text-center py-4">
|
|
265
|
+
<p className="text-muted-foreground">© 2025 Company</p>
|
|
266
|
+
</div>
|
|
267
|
+
</Footer>
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
#### Container with Sidebar
|
|
271
|
+
```jsx
|
|
272
|
+
import { Container } from '@bloomneo/uikit/container';
|
|
273
|
+
|
|
274
|
+
<Container
|
|
275
|
+
tone="clean"
|
|
276
|
+
size="xl"
|
|
277
|
+
sidebar="left"
|
|
278
|
+
navigation={sidebarNav}
|
|
279
|
+
onNavigate={handleNavigation}
|
|
280
|
+
>
|
|
281
|
+
<MainContent />
|
|
282
|
+
</Container>
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
## 🏗️ Tier 3: Layouts (5 Production-Ready)
|
|
288
|
+
|
|
289
|
+
Layouts are **complete page structures** that provide instant application scaffolding. They include built-in responsive design, routing support, and production-ready patterns used by thousands of applications.
|
|
290
|
+
|
|
291
|
+
**Why use layouts:**
|
|
292
|
+
- **Instant scaffolding** - Complete page structure in one component
|
|
293
|
+
- **Production-ready** - Battle-tested patterns from real applications
|
|
294
|
+
- **Responsive design** - Mobile-first approach with breakpoint handling
|
|
295
|
+
- **Routing integration** - Built-in navigation state management
|
|
296
|
+
- **Consistent behavior** - Standardized patterns across your application
|
|
297
|
+
|
|
298
|
+
### Layout Decision Tree
|
|
299
|
+
|
|
300
|
+
```
|
|
301
|
+
What are you building?
|
|
302
|
+
├── Admin Dashboard/SaaS App → AdminLayout (compound pattern)
|
|
303
|
+
├── Marketing Website → PageLayout (compound pattern)
|
|
304
|
+
├── Authentication Pages → AuthLayout (single pattern)
|
|
305
|
+
├── Error/Simple Pages → BlankLayout (single pattern)
|
|
306
|
+
└── Browser Extensions → PopupLayout (single pattern)
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
### Layout Reference
|
|
310
|
+
|
|
311
|
+
| Layout | Child Component | Prop | Possible Values |
|
|
312
|
+
|--------|----------------|------|-----------------|
|
|
313
|
+
| **AdminLayout** | | `scheme` | `sidebar\|compact` |
|
|
314
|
+
| | | `tone` | `clean\|subtle\|brand\|contrast` |
|
|
315
|
+
| | | `size` | `sm\|md\|lg\|xl\|full` |
|
|
316
|
+
| | | `defaultSidebarOpen` | `boolean` |
|
|
317
|
+
| | **AdminLayout.Header** | `title` | `string` |
|
|
318
|
+
| | | `position` | `sticky\|fixed\|relative` |
|
|
319
|
+
| | | `breadcrumbs` | `array` |
|
|
320
|
+
| | | `actions` | `ReactNode` |
|
|
321
|
+
| | **AdminLayout.Sidebar** | `navigation` | `NavigationItem[]` |
|
|
322
|
+
| | | `currentPath` | `string` |
|
|
323
|
+
| | | `onNavigate` | `function` |
|
|
324
|
+
| | | `logo` | `ReactNode` |
|
|
325
|
+
| | | `footer` | `ReactNode` |
|
|
326
|
+
| | **AdminLayout.Content** | `className` | `string` |
|
|
327
|
+
| **PageLayout** | | `scheme` | `base\|sidebar` |
|
|
328
|
+
| | | `tone` | `clean\|subtle\|brand\|contrast` |
|
|
329
|
+
| | | `size` | `sm\|md\|lg\|xl\|full` |
|
|
330
|
+
| | **PageLayout.Header** | `navigation` | `NavigationItem[]` |
|
|
331
|
+
| | | `currentPath` | `string` |
|
|
332
|
+
| | | `onNavigate` | `function` |
|
|
333
|
+
| | | `logo` | `ReactNode` |
|
|
334
|
+
| | | `title` | `string` |
|
|
335
|
+
| | | `actions` | `ReactNode` |
|
|
336
|
+
| | **PageLayout.Content** | `title` | `string` |
|
|
337
|
+
| | | `breadcrumbs` | `array` |
|
|
338
|
+
| | | `sidebar` | `none\|left\|right` |
|
|
339
|
+
| | | `sidebarContent` | `ReactNode` |
|
|
340
|
+
| | **PageLayout.Footer** | `navigation` | `NavigationItem[]` |
|
|
341
|
+
| | | `copyright` | `string` |
|
|
342
|
+
| **AuthLayout** | | `scheme` | `simple\|card\|split\|hero` |
|
|
343
|
+
| | | `tone` | `clean\|subtle\|brand\|contrast` |
|
|
344
|
+
| | | `size` | `sm\|md\|lg\|xl\|full` |
|
|
345
|
+
| | | `title` | `string` |
|
|
346
|
+
| | | `subtitle` | `string` |
|
|
347
|
+
| | | `logo` | `ReactNode` |
|
|
348
|
+
| | | `imageUrl` | `string` |
|
|
349
|
+
| **BlankLayout** | | `scheme` | `simple\|card` |
|
|
350
|
+
| | | `tone` | `clean\|subtle\|brand\|contrast` |
|
|
351
|
+
| | | `size` | `sm\|md\|lg\|xl\|full` |
|
|
352
|
+
| **PopupLayout** | | `scheme` | `modal\|drawer\|floating` |
|
|
353
|
+
| | | `tone` | `clean\|subtle\|brand\|contrast` |
|
|
354
|
+
| | | `size` | `sm\|md\|lg\|xl\|full` |
|
|
355
|
+
| | | `title` | `string` |
|
|
356
|
+
| | | `showClose` | `boolean` |
|
|
357
|
+
| | | `onClose` | `function` |
|
|
358
|
+
|
|
359
|
+
### Layout Examples
|
|
360
|
+
|
|
361
|
+
#### AdminLayout (Compound Pattern)
|
|
362
|
+
```jsx
|
|
363
|
+
import { AdminLayout } from '@bloomneo/uikit/admin';
|
|
364
|
+
|
|
365
|
+
// Compound pattern: Use child components
|
|
366
|
+
<AdminLayout scheme="sidebar" tone="subtle" size="lg">
|
|
367
|
+
<AdminLayout.Header
|
|
368
|
+
title="Dashboard"
|
|
369
|
+
position="sticky"
|
|
370
|
+
breadcrumbs={breadcrumbs}
|
|
371
|
+
actions={<Button>Export</Button>}
|
|
372
|
+
/>
|
|
373
|
+
<AdminLayout.Sidebar
|
|
374
|
+
navigation={navigation}
|
|
375
|
+
currentPath="/admin"
|
|
376
|
+
onNavigate={handleNavigation}
|
|
377
|
+
logo={<Logo />}
|
|
378
|
+
/>
|
|
379
|
+
<AdminLayout.Content>
|
|
380
|
+
<DataTable data={users} columns={columns} />
|
|
381
|
+
</AdminLayout.Content>
|
|
382
|
+
</AdminLayout>
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
#### PageLayout (Compound Pattern)
|
|
386
|
+
```jsx
|
|
387
|
+
import { PageLayout } from '@bloomneo/uikit/page';
|
|
388
|
+
|
|
389
|
+
// Compound pattern: Use child components
|
|
390
|
+
<PageLayout scheme="base" tone="clean" size="xl">
|
|
391
|
+
<PageLayout.Header
|
|
392
|
+
logo="MyApp"
|
|
393
|
+
navigation={navigation}
|
|
394
|
+
currentPath="/"
|
|
395
|
+
onNavigate={handleNavigation}
|
|
396
|
+
/>
|
|
397
|
+
<PageLayout.Content>
|
|
398
|
+
<h1 className="text-foreground">Welcome</h1>
|
|
399
|
+
<p className="text-muted-foreground">Build amazing apps</p>
|
|
400
|
+
</PageLayout.Content>
|
|
401
|
+
<PageLayout.Footer copyright="© 2025 MyApp" />
|
|
402
|
+
</PageLayout>
|
|
403
|
+
```
|
|
404
|
+
|
|
405
|
+
#### AuthLayout (Single Pattern)
|
|
406
|
+
```jsx
|
|
407
|
+
import { AuthLayout } from '@bloomneo/uikit/auth';
|
|
408
|
+
|
|
409
|
+
// Single pattern: Direct children
|
|
410
|
+
<AuthLayout scheme="card" tone="clean" size="md">
|
|
411
|
+
<ValidatedInput
|
|
412
|
+
type="email"
|
|
413
|
+
required
|
|
414
|
+
label="Email"
|
|
415
|
+
placeholder="Enter your email"
|
|
416
|
+
/>
|
|
417
|
+
<ValidatedInput
|
|
418
|
+
type="password"
|
|
419
|
+
required
|
|
420
|
+
label="Password"
|
|
421
|
+
showPasswordToggle
|
|
422
|
+
/>
|
|
423
|
+
<Button variant="default" size="md" className="w-full">
|
|
424
|
+
Sign In
|
|
425
|
+
</Button>
|
|
426
|
+
</AuthLayout>
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
---
|
|
430
|
+
|
|
431
|
+
## 🎨 Common Prop Patterns
|
|
432
|
+
|
|
433
|
+
UIKit follows consistent naming conventions across similar component types:
|
|
434
|
+
|
|
435
|
+
### Layout Props (AdminLayout, PageLayout, etc.)
|
|
436
|
+
```jsx
|
|
437
|
+
<Layout
|
|
438
|
+
scheme="sidebar" // Layout structure
|
|
439
|
+
tone="subtle" // Visual emphasis
|
|
440
|
+
size="lg" // Layout dimensions
|
|
441
|
+
/>
|
|
442
|
+
```
|
|
443
|
+
|
|
444
|
+
### Component Props (Button, Input, Card, etc.)
|
|
445
|
+
```jsx
|
|
446
|
+
<Component
|
|
447
|
+
variant="default" // Visual style (where applicable)
|
|
448
|
+
size="md" // Component sizing (where applicable)
|
|
449
|
+
/>
|
|
450
|
+
```
|
|
451
|
+
|
|
452
|
+
### Size System
|
|
453
|
+
| Size | Layout Width | Sidebar Width | Usage |
|
|
454
|
+
| ------ | ------------ | ------------- | ----------------- |
|
|
455
|
+
| `sm` | 672px | 192px | Compact interfaces |
|
|
456
|
+
| `md` | 896px | 224px | Standard content |
|
|
457
|
+
| `lg` | 1152px | 256px | Wide content |
|
|
458
|
+
| `xl` | 1280px | 288px | Full-width layouts |
|
|
459
|
+
| `full` | 100% | 320px | Edge-to-edge |
|
|
460
|
+
|
|
461
|
+
### Tone System
|
|
462
|
+
| Tone | Background | Usage |
|
|
463
|
+
| ---------- | --------------- | ------------------------ |
|
|
464
|
+
| `clean` | Pure white/light | Minimal, marketing pages |
|
|
465
|
+
| `subtle` | Light gray | Professional, admin panels |
|
|
466
|
+
| `brand` | Primary color | Headers, CTAs, emphasis |
|
|
467
|
+
| `contrast` | Dark/bold | Footers, high contrast |
|
|
468
|
+
|
|
469
|
+
---
|
|
470
|
+
|
|
471
|
+
## 🧭 Navigation System
|
|
472
|
+
|
|
473
|
+
### Navigation Structure
|
|
474
|
+
```typescript
|
|
475
|
+
interface NavigationItem {
|
|
476
|
+
key: string; // REQUIRED: Unique identifier
|
|
477
|
+
label: string; // REQUIRED: Display text
|
|
478
|
+
href?: string; // For page navigation
|
|
479
|
+
onClick?: () => void; // For actions/functions
|
|
480
|
+
icon?: ComponentType; // Lucide React icon
|
|
481
|
+
badge?: string; // Notification badge
|
|
482
|
+
isActive?: boolean; // Current page indicator
|
|
483
|
+
items?: NavigationItem[]; // Submenu (max 2 levels)
|
|
484
|
+
}
|
|
485
|
+
```
|
|
486
|
+
|
|
487
|
+
### Navigation Examples
|
|
488
|
+
```jsx
|
|
489
|
+
const navigation = [
|
|
490
|
+
{
|
|
491
|
+
key: 'dashboard',
|
|
492
|
+
label: 'Dashboard',
|
|
493
|
+
href: '/admin',
|
|
494
|
+
icon: LayoutDashboard,
|
|
495
|
+
isActive: true,
|
|
496
|
+
},
|
|
497
|
+
{
|
|
498
|
+
key: 'users',
|
|
499
|
+
label: 'Users',
|
|
500
|
+
icon: Users,
|
|
501
|
+
badge: '12',
|
|
502
|
+
items: [
|
|
503
|
+
{ key: 'list', label: 'All Users', href: '/admin/users' },
|
|
504
|
+
{ key: 'new', label: 'Add User', href: '/admin/users/new' },
|
|
505
|
+
],
|
|
506
|
+
},
|
|
507
|
+
{
|
|
508
|
+
key: 'logout',
|
|
509
|
+
label: 'Logout',
|
|
510
|
+
icon: LogOut,
|
|
511
|
+
onClick: () => handleLogout(),
|
|
512
|
+
},
|
|
513
|
+
];
|
|
514
|
+
```
|
|
515
|
+
|
|
516
|
+
### Navigation Handlers
|
|
517
|
+
```jsx
|
|
518
|
+
const handleNavigation = (href, item) => {
|
|
519
|
+
if (item.onClick) {
|
|
520
|
+
item.onClick(); // Execute custom function
|
|
521
|
+
} else if (href) {
|
|
522
|
+
navigate(href); // React Router
|
|
523
|
+
// router.push(href); // Next.js
|
|
524
|
+
// window.location.href = href; // Simple navigation
|
|
525
|
+
}
|
|
526
|
+
};
|
|
527
|
+
```
|
|
528
|
+
|
|
529
|
+
---
|
|
530
|
+
|
|
531
|
+
## 🚀 Quick Start Patterns
|
|
532
|
+
|
|
533
|
+
### 1. Simple Page with Components
|
|
534
|
+
```jsx
|
|
535
|
+
import { Card, CardContent, CardHeader, CardTitle } from '@bloomneo/uikit/card';
|
|
536
|
+
import { Button } from '@bloomneo/uikit/button';
|
|
537
|
+
|
|
538
|
+
function SimplePage() {
|
|
539
|
+
return (
|
|
540
|
+
<div className="p-6 bg-background">
|
|
541
|
+
<Card className="max-w-md">
|
|
542
|
+
<CardHeader>
|
|
543
|
+
<CardTitle>Welcome</CardTitle>
|
|
544
|
+
</CardHeader>
|
|
545
|
+
<CardContent>
|
|
546
|
+
<p className="text-muted-foreground">Get started with UIKit</p>
|
|
547
|
+
<Button className="mt-4">Continue</Button>
|
|
548
|
+
</CardContent>
|
|
549
|
+
</Card>
|
|
550
|
+
</div>
|
|
551
|
+
);
|
|
552
|
+
}
|
|
553
|
+
```
|
|
554
|
+
|
|
555
|
+
### 2. Complete Admin Interface
|
|
556
|
+
```jsx
|
|
557
|
+
import { AdminLayout } from '@bloomneo/uikit/admin';
|
|
558
|
+
import { DataTable } from '@bloomneo/uikit/data-table';
|
|
559
|
+
|
|
560
|
+
function AdminDashboard() {
|
|
561
|
+
return (
|
|
562
|
+
<AdminLayout scheme="sidebar" tone="subtle" size="lg">
|
|
563
|
+
<AdminLayout.Header title="Users" />
|
|
564
|
+
<AdminLayout.Sidebar navigation={nav} />
|
|
565
|
+
<AdminLayout.Content>
|
|
566
|
+
<DataTable
|
|
567
|
+
data={users}
|
|
568
|
+
columns={columns}
|
|
569
|
+
searchable
|
|
570
|
+
pagination
|
|
571
|
+
/>
|
|
572
|
+
</AdminLayout.Content>
|
|
573
|
+
</AdminLayout>
|
|
574
|
+
);
|
|
575
|
+
}
|
|
576
|
+
```
|
|
577
|
+
|
|
578
|
+
### 3. Marketing Site
|
|
579
|
+
```jsx
|
|
580
|
+
import { PageLayout } from '@bloomneo/uikit/page';
|
|
581
|
+
|
|
582
|
+
function MarketingSite() {
|
|
583
|
+
return (
|
|
584
|
+
<PageLayout scheme="base" tone="clean" size="xl">
|
|
585
|
+
<PageLayout.Header logo="MyApp" navigation={nav} />
|
|
586
|
+
<PageLayout.Content>
|
|
587
|
+
<div className="text-center py-20">
|
|
588
|
+
<h1 className="text-4xl font-bold text-foreground">
|
|
589
|
+
Build Better Apps
|
|
590
|
+
</h1>
|
|
591
|
+
<p className="text-muted-foreground mt-4">
|
|
592
|
+
With UIKit's composite system
|
|
593
|
+
</p>
|
|
594
|
+
</div>
|
|
595
|
+
</PageLayout.Content>
|
|
596
|
+
<PageLayout.Footer />
|
|
597
|
+
</PageLayout>
|
|
598
|
+
);
|
|
599
|
+
}
|
|
600
|
+
```
|
|
601
|
+
|
|
602
|
+
---
|
|
603
|
+
|
|
604
|
+
## 💡 Best Practices
|
|
605
|
+
|
|
606
|
+
### ✅ Do This
|
|
607
|
+
- **Use semantic colors** for theme compatibility
|
|
608
|
+
- **Individual imports** for better tree-shaking
|
|
609
|
+
- **Compound patterns** for AdminLayout and PageLayout
|
|
610
|
+
- **Single patterns** for AuthLayout, BlankLayout, PopupLayout
|
|
611
|
+
- **Consistent props** (scheme, tone, size) across components
|
|
612
|
+
|
|
613
|
+
### ❌ Avoid This
|
|
614
|
+
- **Hardcoded colors** that break in themes
|
|
615
|
+
- **Barrel imports** that increase bundle size
|
|
616
|
+
- **Wrong layout patterns** (single vs compound)
|
|
617
|
+
- **Inconsistent navigation** structure
|
|
618
|
+
- **Missing semantic classes**
|
|
619
|
+
|
|
620
|
+
### Component Selection Guide
|
|
621
|
+
```jsx
|
|
622
|
+
// Forms with validation → Use Enhanced Components
|
|
623
|
+
<ValidatedInput type="email" required />
|
|
624
|
+
|
|
625
|
+
// Simple forms → Use Basic Components
|
|
626
|
+
<Input placeholder="Search..." />
|
|
627
|
+
|
|
628
|
+
// Complex data → Use DataTable
|
|
629
|
+
<DataTable data={users} searchable filterable />
|
|
630
|
+
|
|
631
|
+
// Simple data → Use Table
|
|
632
|
+
<Table>
|
|
633
|
+
<TableBody>
|
|
634
|
+
<TableRow>...</TableRow>
|
|
635
|
+
</TableBody>
|
|
636
|
+
</Table>
|
|
637
|
+
```
|
|
638
|
+
|
|
639
|
+
---
|
|
640
|
+
|
|
641
|
+
## 📚 Related Guides
|
|
642
|
+
|
|
643
|
+
- **[UIKit Theme Guide](./UIKIT_THEME_GUIDE.md)** - Custom theming and colors
|
|
644
|
+
- **[UIKit LLM Guide](./UIKIT_LLM_GUIDE.md)** - Complete implementation reference
|
|
645
|
+
- **[GitHub Repository](https://github.com/bloomneo/uikit)** - Source code and examples
|
|
646
|
+
|
|
647
|
+
---
|
|
648
|
+
|
|
649
|
+
**Build beautiful, consistent interfaces with UIKit's Composite UI System** ✨
|