@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,813 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLM-optimized type definitions for @bloomneo/uikit - COMPLETE & CONSISTENT
|
|
3
|
+
* @module @bloomneo/uikit
|
|
4
|
+
* @file src/types/index.ts
|
|
5
|
+
*/
|
|
6
|
+
import type { ComponentType, ReactNode, HTMLAttributes } from 'react';
|
|
7
|
+
import type { FieldValues, FieldPath } from 'react-hook-form';
|
|
8
|
+
import type { ZodSchema } from 'zod';
|
|
9
|
+
/**
|
|
10
|
+
* @llm-rule Component Categories for Clear Selection:
|
|
11
|
+
*
|
|
12
|
+
* COMPOUND-ONLY LAYOUTS (require child components):
|
|
13
|
+
* - AdminLayout: Dashboard/admin interfaces → AdminLayout.Header + AdminLayout.Sidebar + AdminLayout.Content
|
|
14
|
+
* - PageLayout: Public websites → PageLayout.Header + PageLayout.Content + PageLayout.Footer
|
|
15
|
+
*
|
|
16
|
+
* SINGLE-USE LAYOUTS (accept direct content as children):
|
|
17
|
+
* - AuthLayout: Login/signup pages → Pass form content directly
|
|
18
|
+
* - BlankLayout: Error/simple pages → Pass page content directly
|
|
19
|
+
* - PopupLayout: Extensions/modals → Pass popup content directly
|
|
20
|
+
*
|
|
21
|
+
* SECTION COMPONENTS (page building blocks):
|
|
22
|
+
* - Header: Navigation headers with responsive behavior
|
|
23
|
+
* - Footer: Page footers with navigation and branding
|
|
24
|
+
* - Container: Content areas with optional sidebars
|
|
25
|
+
*
|
|
26
|
+
* UI COMPONENTS (interactive elements):
|
|
27
|
+
* - All shadcn/ui components with semantic color system
|
|
28
|
+
* - Enhanced DataTable: Professional data tables with sorting/filtering
|
|
29
|
+
* - Motion: Animation components with presets and gestures
|
|
30
|
+
* - EnhancedForm: React Hook Form + Zod validation system
|
|
31
|
+
*/
|
|
32
|
+
/**
|
|
33
|
+
* @llm-decision-tree Component Selection Rules
|
|
34
|
+
*
|
|
35
|
+
* What are you building?
|
|
36
|
+
* ├── Admin dashboard/CRM/analytics → AdminLayout scheme="sidebar|compact"
|
|
37
|
+
* ├── Company website/blog/docs → PageLayout scheme="default|sidebar"
|
|
38
|
+
* ├── Login/signup/onboarding → AuthLayout scheme="simple|card|split|hero"
|
|
39
|
+
* ├── Error page/maintenance/about → BlankLayout scheme="simple|card"
|
|
40
|
+
* └── Chrome extension/popup/overlay → PopupLayout scheme="modal|drawer|floating"
|
|
41
|
+
*/
|
|
42
|
+
/**
|
|
43
|
+
* Standardized size variants - CONSISTENT across ALL components
|
|
44
|
+
* @llm-rule Use same sizes everywhere for predictability
|
|
45
|
+
*/
|
|
46
|
+
export type Size = 'sm' | 'md' | 'lg' | 'xl' | 'full';
|
|
47
|
+
/**
|
|
48
|
+
* System color scheme preference
|
|
49
|
+
* @llm-rule mode: System-level light/dark preference
|
|
50
|
+
*/
|
|
51
|
+
export type Mode = 'light' | 'dark';
|
|
52
|
+
/**
|
|
53
|
+
* Pre-bundled theme options
|
|
54
|
+
* @llm-rule theme: Pre-bundled CSS themes included in package
|
|
55
|
+
*/
|
|
56
|
+
export type Theme = 'base' | 'elegant' | 'metro' | 'studio' | 'vivid';
|
|
57
|
+
/**
|
|
58
|
+
* Semantic tone system for component emphasis
|
|
59
|
+
* @llm-rule tone: Component-level visual emphasis
|
|
60
|
+
* clean → Pure, minimal, white/light backgrounds (most websites)
|
|
61
|
+
* subtle → Muted, supporting, gray areas (admin panels)
|
|
62
|
+
* brand → Primary colored, branded elements (headers, CTAs)
|
|
63
|
+
* contrast → High emphasis, dark/bold areas (footers, emphasis)
|
|
64
|
+
*/
|
|
65
|
+
export type Tone = 'clean' | 'subtle' | 'brand' | 'contrast';
|
|
66
|
+
/**
|
|
67
|
+
* @llm-defaults Context-aware tone defaults:
|
|
68
|
+
* AdminLayout: "subtle" (professional gray)
|
|
69
|
+
* PageLayout: "clean" (pure white)
|
|
70
|
+
* AuthLayout: "clean" (focused minimal)
|
|
71
|
+
* PopupLayout: "clean" (clean extension)
|
|
72
|
+
* BlankLayout: "clean" (simple pages)
|
|
73
|
+
* Header: "clean" (clean headers)
|
|
74
|
+
* Footer: "contrast" (bold footers)
|
|
75
|
+
*/
|
|
76
|
+
/**
|
|
77
|
+
* Layout scheme types - BEHAVIORAL descriptions for clear LLM understanding
|
|
78
|
+
* @llm-rule All layouts use scheme for structural consistency
|
|
79
|
+
*/
|
|
80
|
+
/**
|
|
81
|
+
* AdminLayout schemes - Dashboard/admin interface variations
|
|
82
|
+
* sidebar: Persistent left sidebar with full navigation (classic admin dashboard)
|
|
83
|
+
* compact: Icon-only sidebar that expands on hover/click (space-saving modern)
|
|
84
|
+
*/
|
|
85
|
+
export type AdminLayoutScheme = 'sidebar' | 'compact';
|
|
86
|
+
/**
|
|
87
|
+
* PageLayout schemes - Public website variations
|
|
88
|
+
* default: Simple header + content + footer (standard website)
|
|
89
|
+
* sidebar: Header + content with sidebar + footer (documentation site)
|
|
90
|
+
*/
|
|
91
|
+
export type PageLayoutScheme = 'default' | 'sidebar';
|
|
92
|
+
/**
|
|
93
|
+
* AuthLayout schemes - Authentication page variations
|
|
94
|
+
* simple: Centered form without card styling (minimal login)
|
|
95
|
+
* card: Elevated card container with shadow (standard login)
|
|
96
|
+
* split: Left image/content + right form (modern split-screen)
|
|
97
|
+
* hero: Form overlay on background image (dramatic marketing)
|
|
98
|
+
*/
|
|
99
|
+
export type AuthLayoutScheme = 'simple' | 'card' | 'split' | 'hero';
|
|
100
|
+
/**
|
|
101
|
+
* BlankLayout schemes - Simple page variations
|
|
102
|
+
* simple: Plain centered content (error pages)
|
|
103
|
+
* card: Content in elevated card (maintenance pages)
|
|
104
|
+
*/
|
|
105
|
+
export type BlankLayoutScheme = 'simple' | 'card';
|
|
106
|
+
/**
|
|
107
|
+
* PopupLayout schemes - Extension/modal variations
|
|
108
|
+
* modal: Standard popup window (Chrome extensions)
|
|
109
|
+
* drawer: Slide-out panel (mobile-first)
|
|
110
|
+
* floating: Detached overlay (tooltips, menus)
|
|
111
|
+
*/
|
|
112
|
+
export type PopupLayoutScheme = 'modal' | 'drawer' | 'floating';
|
|
113
|
+
/**
|
|
114
|
+
* MobileLayout schemes - Mobile navigation patterns
|
|
115
|
+
* tabbed: Bottom tab navigation (iOS/Android standard)
|
|
116
|
+
* stack: Stack navigation with back button (detail pages)
|
|
117
|
+
* drawer: Side drawer navigation (hamburger menu)
|
|
118
|
+
*/
|
|
119
|
+
export type MobileLayoutScheme = 'tabbed' | 'stack' | 'drawer';
|
|
120
|
+
/**
|
|
121
|
+
* Standardized navigation interface - SINGLE structure for ALL components
|
|
122
|
+
* @llm-rules Navigation Usage:
|
|
123
|
+
* - key: REQUIRED unique identifier
|
|
124
|
+
* - label: REQUIRED display text
|
|
125
|
+
* - href: USE for page navigation (routing)
|
|
126
|
+
* - onClick: USE for app functions (modals, actions)
|
|
127
|
+
* - items: USE for submenus (max 2 levels deep)
|
|
128
|
+
* - badge: USE for notifications/counts
|
|
129
|
+
* - isActive: USE for current page highlighting
|
|
130
|
+
* - icon: USE lucide-react icons
|
|
131
|
+
*/
|
|
132
|
+
export interface NavigationItem {
|
|
133
|
+
/** REQUIRED: Unique identifier */
|
|
134
|
+
key: string;
|
|
135
|
+
/** REQUIRED: Display text */
|
|
136
|
+
label: string;
|
|
137
|
+
/** OPTIONAL: Page navigation - USE for routing */
|
|
138
|
+
href?: string;
|
|
139
|
+
/** OPTIONAL: App function - USE for actions/modals */
|
|
140
|
+
onClick?: () => void;
|
|
141
|
+
/** OPTIONAL: Icon component from lucide-react */
|
|
142
|
+
icon?: ComponentType<{
|
|
143
|
+
className?: string;
|
|
144
|
+
}>;
|
|
145
|
+
/** OPTIONAL: Nested items - USE for dropdowns (max 2 levels) */
|
|
146
|
+
items?: NavigationItem[];
|
|
147
|
+
/** OPTIONAL: Badge text for notifications */
|
|
148
|
+
badge?: string;
|
|
149
|
+
/** OPTIONAL: Current page indicator */
|
|
150
|
+
isActive?: boolean;
|
|
151
|
+
/** OPTIONAL: Additional CSS classes */
|
|
152
|
+
className?: string;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* @llm-rule Navigation Props Hierarchy - CLEAR priority order
|
|
156
|
+
*
|
|
157
|
+
* Priority Order:
|
|
158
|
+
* 1. navigation?: NavigationItem[] - PRIMARY navigation items
|
|
159
|
+
* 2. sidebarContent?: React.ReactNode - OVERRIDES navigation with custom JSX
|
|
160
|
+
* 3. If both provided: sidebarContent takes precedence
|
|
161
|
+
*
|
|
162
|
+
* Usage Examples:
|
|
163
|
+
* ✅ <Sidebar navigation={navItems} /> // Use navigation array
|
|
164
|
+
* ✅ <Sidebar sidebarContent={<CustomSidebar />} /> // Use custom content
|
|
165
|
+
* ❌ <Sidebar navigation={navItems} sidebarContent={jsx} /> // Confusing - avoid both
|
|
166
|
+
*/
|
|
167
|
+
/**
|
|
168
|
+
* Base props that ALL components should extend
|
|
169
|
+
* @llm-props Base pattern for all components
|
|
170
|
+
*/
|
|
171
|
+
export interface BaseComponentProps {
|
|
172
|
+
/** OPTIONAL: Additional CSS classes */
|
|
173
|
+
className?: string;
|
|
174
|
+
/** OPTIONAL: Inline styles */
|
|
175
|
+
style?: React.CSSProperties;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Props for components that support navigation
|
|
179
|
+
* @llm-props Navigation components
|
|
180
|
+
*/
|
|
181
|
+
export interface NavigationProps {
|
|
182
|
+
/** RECOMMENDED: Navigation items using standard structure */
|
|
183
|
+
navigation?: NavigationItem[];
|
|
184
|
+
/** OPTIONAL: Current path for active state detection */
|
|
185
|
+
currentPath?: string;
|
|
186
|
+
/** OPTIONAL: Navigation handler function */
|
|
187
|
+
onNavigate?: (href: string, item: NavigationItem) => void;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Props for components that support tone theming
|
|
191
|
+
* @llm-props Tone system
|
|
192
|
+
*/
|
|
193
|
+
export interface ToneProps {
|
|
194
|
+
/** RECOMMENDED: Visual emphasis - clean/subtle/brand/contrast */
|
|
195
|
+
tone?: Tone;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Props for components that support sizing
|
|
199
|
+
* @llm-props Size system
|
|
200
|
+
*/
|
|
201
|
+
export interface SizeProps {
|
|
202
|
+
/** OPTIONAL: Component size - sm/md/lg/xl/full */
|
|
203
|
+
size?: Size;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Standard layout scheme props - ALL layouts with schemes extend this
|
|
207
|
+
* @llm-props Layout scheme base
|
|
208
|
+
*/
|
|
209
|
+
interface LayoutSchemeProps<TScheme> extends BaseComponentProps {
|
|
210
|
+
/** RECOMMENDED: Layout structural arrangement */
|
|
211
|
+
scheme?: TScheme;
|
|
212
|
+
/** RECOMMENDED: Visual styling tone */
|
|
213
|
+
tone?: Tone;
|
|
214
|
+
/** OPTIONAL: Layout size */
|
|
215
|
+
size?: Size;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* @llm-usage AdminLayout - COMPOUND-ONLY
|
|
219
|
+
* <AdminLayout scheme="sidebar" tone="subtle" size="lg">
|
|
220
|
+
* <AdminLayout.Header title="Dashboard" actions={<UserMenu />} />
|
|
221
|
+
* <AdminLayout.Sidebar navigation={adminNav} logo={<Logo />} />
|
|
222
|
+
* <AdminLayout.Content>
|
|
223
|
+
* <DashboardContent />
|
|
224
|
+
* </AdminLayout.Content>
|
|
225
|
+
* </AdminLayout>
|
|
226
|
+
*
|
|
227
|
+
* @llm-defaults scheme="sidebar", tone="subtle", size="lg"
|
|
228
|
+
*/
|
|
229
|
+
export interface AdminLayoutProps extends LayoutSchemeProps<AdminLayoutScheme> {
|
|
230
|
+
/** REQUIRED: Compound components only (Header, Sidebar, Content) */
|
|
231
|
+
children: ReactNode;
|
|
232
|
+
/** OPTIONAL: Default sidebar expanded state (default: true) */
|
|
233
|
+
defaultSidebarOpen?: boolean;
|
|
234
|
+
/** OPTIONAL: Sidebar positioning behavior (default: "relative") */
|
|
235
|
+
position?: 'relative' | 'sticky' | 'fixed';
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* AdminLayout.Header props
|
|
239
|
+
*/
|
|
240
|
+
export interface AdminHeaderProps extends BaseComponentProps, ToneProps, SizeProps {
|
|
241
|
+
/** OPTIONAL: Header positioning (default: "sticky") */
|
|
242
|
+
position?: 'sticky' | 'fixed' | 'relative';
|
|
243
|
+
/** OPTIONAL: Page title */
|
|
244
|
+
title?: string;
|
|
245
|
+
/** OPTIONAL: Breadcrumb items */
|
|
246
|
+
breadcrumbs?: {
|
|
247
|
+
label: string;
|
|
248
|
+
href?: string;
|
|
249
|
+
}[];
|
|
250
|
+
/** OPTIONAL: Header actions (buttons, user menu, etc.) */
|
|
251
|
+
actions?: ReactNode;
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* AdminLayout.Sidebar props
|
|
255
|
+
*/
|
|
256
|
+
export interface AdminSidebarProps extends BaseComponentProps, ToneProps, NavigationProps {
|
|
257
|
+
/** OPTIONAL: Logo component */
|
|
258
|
+
logo?: ReactNode;
|
|
259
|
+
/** OPTIONAL: Sidebar footer content */
|
|
260
|
+
footer?: ReactNode;
|
|
261
|
+
/** OPTIONAL: Sidebar positioning */
|
|
262
|
+
position?: 'relative' | 'sticky' | 'fixed';
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* AdminLayout.Content props
|
|
266
|
+
*/
|
|
267
|
+
export interface AdminContentProps extends BaseComponentProps, ToneProps, SizeProps {
|
|
268
|
+
/** REQUIRED: Admin content */
|
|
269
|
+
children: ReactNode;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* @llm-usage PageLayout - COMPOUND-ONLY
|
|
273
|
+
* <PageLayout scheme="default" tone="clean" size="xl">
|
|
274
|
+
* <PageLayout.Header navigation={mainNav} logo={<Logo />} />
|
|
275
|
+
* <PageLayout.Content>
|
|
276
|
+
* <WebsiteContent />
|
|
277
|
+
* </PageLayout.Content>
|
|
278
|
+
* <PageLayout.Footer copyright="© 2024 Company" />
|
|
279
|
+
* </PageLayout>
|
|
280
|
+
*
|
|
281
|
+
* @llm-defaults scheme="default", tone="clean", size="xl"
|
|
282
|
+
*/
|
|
283
|
+
export interface PageLayoutProps extends LayoutSchemeProps<PageLayoutScheme> {
|
|
284
|
+
/** REQUIRED: Compound components only (Header, Content, Footer) */
|
|
285
|
+
children: ReactNode;
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* PageLayout.Header props
|
|
289
|
+
*/
|
|
290
|
+
export interface PageHeaderProps extends BaseComponentProps, ToneProps, SizeProps, NavigationProps {
|
|
291
|
+
/** OPTIONAL: Header positioning (default: "sticky") */
|
|
292
|
+
position?: 'sticky' | 'fixed' | 'relative';
|
|
293
|
+
/** OPTIONAL: Logo component */
|
|
294
|
+
logo?: ReactNode;
|
|
295
|
+
/** OPTIONAL: Page title (used if no logo) */
|
|
296
|
+
title?: string;
|
|
297
|
+
/** OPTIONAL: Header actions (buttons, theme toggle, etc.) */
|
|
298
|
+
actions?: ReactNode;
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* PageLayout.Content props
|
|
302
|
+
*/
|
|
303
|
+
export interface PageContentProps extends BaseComponentProps, ToneProps, SizeProps, NavigationProps {
|
|
304
|
+
/** OPTIONAL: Sidebar position (default: "none") - overrides scheme */
|
|
305
|
+
sidebar?: 'none' | 'left' | 'right';
|
|
306
|
+
/** OPTIONAL: Custom sidebar content (overrides navigation) */
|
|
307
|
+
sidebarContent?: ReactNode;
|
|
308
|
+
/** OPTIONAL: Whether sidebar should be sticky */
|
|
309
|
+
sidebarPosition?: 'sticky' | 'fixed' | 'relative';
|
|
310
|
+
/** OPTIONAL: Breadcrumb items */
|
|
311
|
+
breadcrumbs?: {
|
|
312
|
+
label: string;
|
|
313
|
+
href?: string;
|
|
314
|
+
}[];
|
|
315
|
+
/** OPTIONAL: Page title (shown above breadcrumbs) */
|
|
316
|
+
title?: string;
|
|
317
|
+
/** REQUIRED: Page content */
|
|
318
|
+
children: ReactNode;
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* PageLayout.Footer props
|
|
322
|
+
*/
|
|
323
|
+
export interface PageFooterProps extends BaseComponentProps, ToneProps, SizeProps, NavigationProps {
|
|
324
|
+
/** OPTIONAL: Footer positioning (default: "relative") */
|
|
325
|
+
position?: 'sticky' | 'fixed' | 'relative';
|
|
326
|
+
/** OPTIONAL: Copyright text */
|
|
327
|
+
copyright?: ReactNode;
|
|
328
|
+
/** OPTIONAL: Custom footer content */
|
|
329
|
+
children?: ReactNode;
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* @llm-usage AuthLayout - SINGLE component with props
|
|
333
|
+
* <AuthLayout scheme="card" tone="clean" size="md" title="Sign In" logo={<Logo />}>
|
|
334
|
+
* <LoginForm />
|
|
335
|
+
* </AuthLayout>
|
|
336
|
+
*
|
|
337
|
+
* @llm-defaults scheme="card", tone="clean", size="md"
|
|
338
|
+
*/
|
|
339
|
+
export interface AuthLayoutProps extends LayoutSchemeProps<AuthLayoutScheme> {
|
|
340
|
+
/** REQUIRED: Form content */
|
|
341
|
+
children: ReactNode;
|
|
342
|
+
/** OPTIONAL: Page title */
|
|
343
|
+
title?: string;
|
|
344
|
+
/** OPTIONAL: Page subtitle */
|
|
345
|
+
subtitle?: string;
|
|
346
|
+
/** OPTIONAL: Logo component */
|
|
347
|
+
logo?: ReactNode;
|
|
348
|
+
/** OPTIONAL: Footer content */
|
|
349
|
+
footer?: ReactNode;
|
|
350
|
+
/** OPTIONAL: Container props for customization */
|
|
351
|
+
containerProps?: HTMLAttributes<HTMLDivElement>;
|
|
352
|
+
/** OPTIONAL: Left side content for split scheme */
|
|
353
|
+
splitContent?: ReactNode;
|
|
354
|
+
/** OPTIONAL: Custom background classes for split scheme left side (colors, gradients, images, patterns) */
|
|
355
|
+
splitBackground?: string;
|
|
356
|
+
/** OPTIONAL: Background image URL for hero scheme */
|
|
357
|
+
imageUrl?: string;
|
|
358
|
+
/** OPTIONAL: Image alt text */
|
|
359
|
+
imageAlt?: string;
|
|
360
|
+
/** OPTIONAL: Image overlay */
|
|
361
|
+
imageOverlay?: 'light' | 'dark' | 'none';
|
|
362
|
+
/** OPTIONAL: Additional card content for card scheme */
|
|
363
|
+
cardContent?: ReactNode;
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* @llm-usage BlankLayout - SINGLE component
|
|
367
|
+
* <BlankLayout scheme="simple" tone="clean" size="lg">
|
|
368
|
+
* <h1 className="text-4xl font-bold mb-4">404 Not Found</h1>
|
|
369
|
+
* <p className="text-muted-foreground mb-6">Page not found.</p>
|
|
370
|
+
* <Button>Go Home</Button>
|
|
371
|
+
* </BlankLayout>
|
|
372
|
+
*
|
|
373
|
+
* @llm-defaults scheme="simple", tone="clean", size="lg"
|
|
374
|
+
*/
|
|
375
|
+
export interface BlankLayoutProps extends LayoutSchemeProps<BlankLayoutScheme> {
|
|
376
|
+
/** REQUIRED: Page content */
|
|
377
|
+
children: ReactNode;
|
|
378
|
+
}
|
|
379
|
+
/**
|
|
380
|
+
* @llm-usage PopupLayout - SINGLE component
|
|
381
|
+
* <PopupLayout scheme="modal" tone="clean" size="md" title="Extension" showClose onClose={close}>
|
|
382
|
+
* <ExtensionContent />
|
|
383
|
+
* </PopupLayout>
|
|
384
|
+
*
|
|
385
|
+
* @llm-defaults scheme="modal", tone="clean", size="md"
|
|
386
|
+
*/
|
|
387
|
+
export interface PopupLayoutProps extends LayoutSchemeProps<PopupLayoutScheme> {
|
|
388
|
+
/** REQUIRED: Popup content */
|
|
389
|
+
children: ReactNode;
|
|
390
|
+
/** OPTIONAL: Popup title */
|
|
391
|
+
title?: string;
|
|
392
|
+
/** OPTIONAL: Popup subtitle */
|
|
393
|
+
subtitle?: string;
|
|
394
|
+
/** OPTIONAL: Logo/icon component */
|
|
395
|
+
logo?: ReactNode;
|
|
396
|
+
/** OPTIONAL: Status badge */
|
|
397
|
+
badge?: ReactNode;
|
|
398
|
+
/** OPTIONAL: Header action buttons */
|
|
399
|
+
headerActions?: ReactNode;
|
|
400
|
+
/** OPTIONAL: Show back button */
|
|
401
|
+
showBack?: boolean;
|
|
402
|
+
/** OPTIONAL: Show close button */
|
|
403
|
+
showClose?: boolean;
|
|
404
|
+
/** OPTIONAL: Show header divider */
|
|
405
|
+
showDivider?: boolean;
|
|
406
|
+
/** OPTIONAL: Back button handler */
|
|
407
|
+
onBack?: () => void;
|
|
408
|
+
/** OPTIONAL: Close button handler */
|
|
409
|
+
onClose?: () => void;
|
|
410
|
+
/** OPTIONAL: Footer content */
|
|
411
|
+
footer?: ReactNode;
|
|
412
|
+
/** OPTIONAL: Enable content scrolling */
|
|
413
|
+
scrollable?: boolean;
|
|
414
|
+
/** OPTIONAL: Popup positioning */
|
|
415
|
+
position?: 'sticky' | 'fixed' | 'relative';
|
|
416
|
+
}
|
|
417
|
+
/**
|
|
418
|
+
* Section component props - Header, Footer, Container
|
|
419
|
+
*/
|
|
420
|
+
/**
|
|
421
|
+
* Header component props (Section component - no scheme)
|
|
422
|
+
* @llm-props Header
|
|
423
|
+
* REQUIRED: children
|
|
424
|
+
* RECOMMENDED: tone="clean"
|
|
425
|
+
* OPTIONAL: size, navigation, position
|
|
426
|
+
*/
|
|
427
|
+
export interface HeaderProps extends BaseComponentProps, ToneProps, SizeProps, NavigationProps {
|
|
428
|
+
/** REQUIRED: Header content */
|
|
429
|
+
children: ReactNode;
|
|
430
|
+
/** OPTIONAL: Header positioning (default: "sticky") */
|
|
431
|
+
position?: 'sticky' | 'fixed' | 'relative';
|
|
432
|
+
}
|
|
433
|
+
/**
|
|
434
|
+
* Footer component props (Section component - no scheme)
|
|
435
|
+
* @llm-props Footer
|
|
436
|
+
* REQUIRED: children
|
|
437
|
+
* RECOMMENDED: tone="contrast"
|
|
438
|
+
* OPTIONAL: size, navigation, position
|
|
439
|
+
*/
|
|
440
|
+
export interface FooterProps extends BaseComponentProps, ToneProps, SizeProps, NavigationProps {
|
|
441
|
+
/** REQUIRED: Footer content */
|
|
442
|
+
children: ReactNode;
|
|
443
|
+
/** OPTIONAL: Footer positioning (default: "relative") */
|
|
444
|
+
position?: 'sticky' | 'fixed' | 'relative';
|
|
445
|
+
}
|
|
446
|
+
/**
|
|
447
|
+
* Container component props (Section component - no scheme)
|
|
448
|
+
* @llm-props Container
|
|
449
|
+
* REQUIRED: children
|
|
450
|
+
* RECOMMENDED: tone="clean"
|
|
451
|
+
* OPTIONAL: size, sidebar, navigation
|
|
452
|
+
*/
|
|
453
|
+
export interface ContainerProps extends BaseComponentProps, ToneProps, SizeProps, NavigationProps {
|
|
454
|
+
/** REQUIRED: Container content */
|
|
455
|
+
children: ReactNode;
|
|
456
|
+
/** OPTIONAL: Container positioning */
|
|
457
|
+
position?: 'sticky' | 'fixed' | 'relative';
|
|
458
|
+
/** OPTIONAL: Sidebar position */
|
|
459
|
+
sidebar?: 'none' | 'left' | 'right';
|
|
460
|
+
/** OPTIONAL: Custom sidebar content (overrides navigation) */
|
|
461
|
+
sidebarContent?: ReactNode;
|
|
462
|
+
/** OPTIONAL: Whether sidebar should be sticky */
|
|
463
|
+
sidebarPosition?: 'sticky' | 'fixed' | 'relative';
|
|
464
|
+
}
|
|
465
|
+
/**
|
|
466
|
+
* Enhanced DataTable Types
|
|
467
|
+
* @llm-usage Professional data tables with sorting, filtering, pagination
|
|
468
|
+
*/
|
|
469
|
+
/**
|
|
470
|
+
* Cell value extracted from a row by `accessor` / `accessorKey`. Defaults to
|
|
471
|
+
* `unknown` so consumers must narrow the type before using it — this is the
|
|
472
|
+
* point of the generic.
|
|
473
|
+
*/
|
|
474
|
+
export type DataTableCellValue = unknown;
|
|
475
|
+
/**
|
|
476
|
+
* Filter primitive value used by `FilterConfig`. Kept narrow enough to round-
|
|
477
|
+
* trip through URL params and `Intl` formatters without losing information.
|
|
478
|
+
*/
|
|
479
|
+
export type DataTableFilterValue = string | number | boolean | Date | null;
|
|
480
|
+
/**
|
|
481
|
+
* DataTable column definition
|
|
482
|
+
*/
|
|
483
|
+
export interface DataTableColumn<TRow = unknown, TValue = DataTableCellValue> {
|
|
484
|
+
/** REQUIRED: Unique column identifier */
|
|
485
|
+
id: string;
|
|
486
|
+
/** REQUIRED: Column header text */
|
|
487
|
+
header: string;
|
|
488
|
+
/** OPTIONAL: Data accessor key (a property of the row) */
|
|
489
|
+
accessorKey?: keyof TRow & (string | number);
|
|
490
|
+
/** OPTIONAL: Data accessor function (computed value) */
|
|
491
|
+
accessor?: (row: TRow) => TValue;
|
|
492
|
+
/** OPTIONAL: Cell renderer function */
|
|
493
|
+
cell?: (value: TValue, row: TRow, index: number) => React.ReactNode;
|
|
494
|
+
/** OPTIONAL: Column width */
|
|
495
|
+
width?: string | number;
|
|
496
|
+
minWidth?: number;
|
|
497
|
+
maxWidth?: number;
|
|
498
|
+
/** OPTIONAL: Enable sorting */
|
|
499
|
+
sortable?: boolean;
|
|
500
|
+
/** OPTIONAL: Enable filtering */
|
|
501
|
+
filterable?: boolean;
|
|
502
|
+
filterType?: 'text' | 'select' | 'date' | 'number' | 'boolean';
|
|
503
|
+
filterOptions?: Array<{
|
|
504
|
+
label: string;
|
|
505
|
+
value: DataTableFilterValue;
|
|
506
|
+
}>;
|
|
507
|
+
/** OPTIONAL: Enable column resizing */
|
|
508
|
+
resizable?: boolean;
|
|
509
|
+
/** OPTIONAL: Hide column by default */
|
|
510
|
+
hidden?: boolean;
|
|
511
|
+
/** OPTIONAL: Pin column to left or right */
|
|
512
|
+
pinned?: 'left' | 'right';
|
|
513
|
+
/** OPTIONAL: Data type for sorting */
|
|
514
|
+
dataType?: 'string' | 'number' | 'date' | 'boolean';
|
|
515
|
+
/** OPTIONAL: Custom sort function */
|
|
516
|
+
sortFn?: (a: TValue, b: TValue) => number;
|
|
517
|
+
/** OPTIONAL: Column group */
|
|
518
|
+
group?: string;
|
|
519
|
+
/** OPTIONAL: Additional CSS classes */
|
|
520
|
+
className?: string;
|
|
521
|
+
}
|
|
522
|
+
/**
|
|
523
|
+
* Sort configuration
|
|
524
|
+
*/
|
|
525
|
+
export interface SortConfig {
|
|
526
|
+
key: string;
|
|
527
|
+
direction: 'asc' | 'desc';
|
|
528
|
+
}
|
|
529
|
+
/**
|
|
530
|
+
* Filter configuration
|
|
531
|
+
*/
|
|
532
|
+
export type FilterOperator = 'equals' | 'contains' | 'startsWith' | 'endsWith' | 'gt' | 'lt' | 'gte' | 'lte';
|
|
533
|
+
export interface FilterConfig {
|
|
534
|
+
[key: string]: {
|
|
535
|
+
type: 'text' | 'select' | 'date' | 'number' | 'boolean';
|
|
536
|
+
value: DataTableFilterValue;
|
|
537
|
+
operator?: FilterOperator;
|
|
538
|
+
};
|
|
539
|
+
}
|
|
540
|
+
/**
|
|
541
|
+
* Row action definition
|
|
542
|
+
*/
|
|
543
|
+
export interface RowAction<TRow = unknown> {
|
|
544
|
+
/** REQUIRED: Action identifier */
|
|
545
|
+
id: string;
|
|
546
|
+
/** REQUIRED: Action label */
|
|
547
|
+
label: string;
|
|
548
|
+
/** OPTIONAL: Action icon */
|
|
549
|
+
icon?: React.ComponentType<{
|
|
550
|
+
className?: string;
|
|
551
|
+
}>;
|
|
552
|
+
/** REQUIRED: Action handler */
|
|
553
|
+
onClick: (row: TRow, index: number) => void;
|
|
554
|
+
/** OPTIONAL: Conditional visibility */
|
|
555
|
+
visible?: (row: TRow, index: number) => boolean;
|
|
556
|
+
/** OPTIONAL: Action variant */
|
|
557
|
+
variant?: 'default' | 'destructive' | 'secondary';
|
|
558
|
+
/** OPTIONAL: Confirmation required */
|
|
559
|
+
confirmation?: {
|
|
560
|
+
title: string;
|
|
561
|
+
description: string;
|
|
562
|
+
};
|
|
563
|
+
}
|
|
564
|
+
/**
|
|
565
|
+
* Motion Animation Types
|
|
566
|
+
* @llm-usage CSS-based animations with presets and gestures
|
|
567
|
+
*/
|
|
568
|
+
/**
|
|
569
|
+
* Animation transition configuration
|
|
570
|
+
*/
|
|
571
|
+
export interface AnimationTransition {
|
|
572
|
+
type?: 'spring' | 'tween';
|
|
573
|
+
duration?: number;
|
|
574
|
+
delay?: number;
|
|
575
|
+
ease?: string | number[];
|
|
576
|
+
damping?: number;
|
|
577
|
+
stiffness?: number;
|
|
578
|
+
mass?: number;
|
|
579
|
+
repeat?: number;
|
|
580
|
+
repeatType?: 'loop' | 'reverse' | 'mirror';
|
|
581
|
+
}
|
|
582
|
+
/**
|
|
583
|
+
* Animation state configuration
|
|
584
|
+
*/
|
|
585
|
+
export interface AnimationState {
|
|
586
|
+
opacity?: number;
|
|
587
|
+
x?: number | string | number[];
|
|
588
|
+
y?: number | string | number[];
|
|
589
|
+
scale?: number | number[];
|
|
590
|
+
rotate?: number | number[];
|
|
591
|
+
transformOrigin?: string;
|
|
592
|
+
transition?: AnimationTransition;
|
|
593
|
+
}
|
|
594
|
+
/**
|
|
595
|
+
* Available animation presets
|
|
596
|
+
*/
|
|
597
|
+
export type AnimationPreset = 'fadeIn' | 'fadeInUp' | 'fadeInDown' | 'fadeInLeft' | 'fadeInRight' | 'fadeOut' | 'scaleIn' | 'scaleInCenter' | 'slideInUp' | 'slideInDown' | 'slideInLeft' | 'slideInRight' | 'bounce' | 'elastic' | 'rubberBand' | 'pulse' | 'wobble' | 'shake';
|
|
598
|
+
/**
|
|
599
|
+
* Motion component props
|
|
600
|
+
*/
|
|
601
|
+
export interface MotionProps extends Omit<React.HTMLAttributes<HTMLElement>, 'onAnimationStart'> {
|
|
602
|
+
/** OPTIONAL: HTML element to render */
|
|
603
|
+
as?: keyof React.JSX.IntrinsicElements;
|
|
604
|
+
/** OPTIONAL: Animation preset */
|
|
605
|
+
preset?: AnimationPreset;
|
|
606
|
+
/** OPTIONAL: Custom initial state */
|
|
607
|
+
initial?: AnimationState;
|
|
608
|
+
/** OPTIONAL: Custom animate state */
|
|
609
|
+
animate?: AnimationState;
|
|
610
|
+
/** OPTIONAL: Custom exit state */
|
|
611
|
+
exit?: AnimationState;
|
|
612
|
+
/** OPTIONAL: Animation duration */
|
|
613
|
+
duration?: 'fast' | 'normal' | 'slow' | 'slower' | 'slowest' | number;
|
|
614
|
+
/** OPTIONAL: Animation delay */
|
|
615
|
+
delay?: number;
|
|
616
|
+
/** OPTIONAL: Animation easing */
|
|
617
|
+
easing?: 'easeInOut' | 'easeOut' | 'easeIn' | 'easeOutBack' | 'easeInBack' | 'easeOutBounce' | 'linear';
|
|
618
|
+
/** OPTIONAL: Trigger animation when in view */
|
|
619
|
+
triggerInView?: boolean;
|
|
620
|
+
/** OPTIONAL: Animation repeat count */
|
|
621
|
+
repeat?: number | 'infinite';
|
|
622
|
+
/** OPTIONAL: Repeat type */
|
|
623
|
+
repeatType?: 'loop' | 'reverse' | 'mirror';
|
|
624
|
+
/** OPTIONAL: Spring physics */
|
|
625
|
+
spring?: {
|
|
626
|
+
damping?: number;
|
|
627
|
+
stiffness?: number;
|
|
628
|
+
mass?: number;
|
|
629
|
+
};
|
|
630
|
+
/** OPTIONAL: Gesture animations */
|
|
631
|
+
whileHover?: AnimationState;
|
|
632
|
+
whileTap?: AnimationState;
|
|
633
|
+
whileFocus?: AnimationState;
|
|
634
|
+
/** OPTIONAL: Animation callbacks */
|
|
635
|
+
onAnimationStart?: () => void;
|
|
636
|
+
onAnimationComplete?: () => void;
|
|
637
|
+
/** REQUIRED: Children */
|
|
638
|
+
children: React.ReactNode;
|
|
639
|
+
}
|
|
640
|
+
/**
|
|
641
|
+
* Enhanced Form Types
|
|
642
|
+
* @llm-usage React Hook Form + Zod validation system
|
|
643
|
+
*/
|
|
644
|
+
/**
|
|
645
|
+
* Enhanced Form props with Zod validation
|
|
646
|
+
*/
|
|
647
|
+
export interface EnhancedFormProps<T extends FieldValues = FieldValues> {
|
|
648
|
+
/** REQUIRED: Zod schema for validation */
|
|
649
|
+
schema: ZodSchema<T>;
|
|
650
|
+
/** OPTIONAL: Default values */
|
|
651
|
+
defaultValues?: Partial<T>;
|
|
652
|
+
/** REQUIRED: Form submission handler */
|
|
653
|
+
onSubmit: (data: T) => void | Promise<void>;
|
|
654
|
+
/** OPTIONAL: Error handler — receives react-hook-form's FieldErrors */
|
|
655
|
+
onError?: (errors: import('react-hook-form').FieldErrors<T>) => void;
|
|
656
|
+
/** OPTIONAL: Loading state */
|
|
657
|
+
loading?: boolean;
|
|
658
|
+
/** OPTIONAL: Form mode */
|
|
659
|
+
mode?: 'onChange' | 'onBlur' | 'onSubmit' | 'onTouched' | 'all';
|
|
660
|
+
/** OPTIONAL: Revalidate mode */
|
|
661
|
+
reValidateMode?: 'onChange' | 'onBlur' | 'onSubmit';
|
|
662
|
+
/** OPTIONAL: Auto-save functionality */
|
|
663
|
+
autoSave?: {
|
|
664
|
+
enabled: boolean;
|
|
665
|
+
debounceMs?: number;
|
|
666
|
+
onSave?: (data: Partial<T>) => void;
|
|
667
|
+
};
|
|
668
|
+
/** OPTIONAL: Form layout */
|
|
669
|
+
layout?: 'vertical' | 'horizontal' | 'inline';
|
|
670
|
+
/** OPTIONAL: Form size */
|
|
671
|
+
size?: 'sm' | 'md' | 'lg';
|
|
672
|
+
/** OPTIONAL: Additional CSS classes */
|
|
673
|
+
className?: string;
|
|
674
|
+
/** REQUIRED: Form content */
|
|
675
|
+
children: React.ReactNode;
|
|
676
|
+
}
|
|
677
|
+
/**
|
|
678
|
+
* Form field props
|
|
679
|
+
*/
|
|
680
|
+
export interface FormFieldProps<T extends FieldValues = FieldValues> {
|
|
681
|
+
/** REQUIRED: Field name */
|
|
682
|
+
name: FieldPath<T>;
|
|
683
|
+
/** OPTIONAL: Field label */
|
|
684
|
+
label?: string;
|
|
685
|
+
/** OPTIONAL: Field description */
|
|
686
|
+
description?: string;
|
|
687
|
+
/** OPTIONAL: Field is required */
|
|
688
|
+
required?: boolean;
|
|
689
|
+
/** OPTIONAL: Field variant */
|
|
690
|
+
variant?: 'default' | 'inline' | 'stacked';
|
|
691
|
+
/** OPTIONAL: Additional CSS classes */
|
|
692
|
+
className?: string;
|
|
693
|
+
/** REQUIRED: Field content */
|
|
694
|
+
children: React.ReactNode;
|
|
695
|
+
}
|
|
696
|
+
/**
|
|
697
|
+
* Input field props
|
|
698
|
+
*/
|
|
699
|
+
export interface InputFieldProps<T extends FieldValues = FieldValues> {
|
|
700
|
+
/** REQUIRED: Field name */
|
|
701
|
+
name: FieldPath<T>;
|
|
702
|
+
/** OPTIONAL: Input type */
|
|
703
|
+
type?: 'text' | 'email' | 'password' | 'number' | 'tel' | 'url' | 'search';
|
|
704
|
+
/** OPTIONAL: Placeholder text */
|
|
705
|
+
placeholder?: string;
|
|
706
|
+
/** OPTIONAL: Input is disabled */
|
|
707
|
+
disabled?: boolean;
|
|
708
|
+
/** OPTIONAL: Input is readonly */
|
|
709
|
+
readOnly?: boolean;
|
|
710
|
+
/** OPTIONAL: Show password toggle (for password type) */
|
|
711
|
+
showPasswordToggle?: boolean;
|
|
712
|
+
/** OPTIONAL: Input prefix icon */
|
|
713
|
+
prefixIcon?: React.ComponentType<{
|
|
714
|
+
className?: string;
|
|
715
|
+
}>;
|
|
716
|
+
/** OPTIONAL: Input suffix icon */
|
|
717
|
+
suffixIcon?: React.ComponentType<{
|
|
718
|
+
className?: string;
|
|
719
|
+
}>;
|
|
720
|
+
/** OPTIONAL: Additional props */
|
|
721
|
+
inputProps?: React.InputHTMLAttributes<HTMLInputElement>;
|
|
722
|
+
}
|
|
723
|
+
/**
|
|
724
|
+
* Select field props
|
|
725
|
+
*/
|
|
726
|
+
export interface SelectFieldProps<T extends FieldValues = FieldValues> {
|
|
727
|
+
/** REQUIRED: Field name */
|
|
728
|
+
name: FieldPath<T>;
|
|
729
|
+
/** OPTIONAL: Placeholder text */
|
|
730
|
+
placeholder?: string;
|
|
731
|
+
/** REQUIRED: Select options */
|
|
732
|
+
options: Array<{
|
|
733
|
+
label: string;
|
|
734
|
+
value: string | number;
|
|
735
|
+
disabled?: boolean;
|
|
736
|
+
}>;
|
|
737
|
+
/** OPTIONAL: Select is disabled */
|
|
738
|
+
disabled?: boolean;
|
|
739
|
+
/** OPTIONAL: Allow clearing selection */
|
|
740
|
+
clearable?: boolean;
|
|
741
|
+
}
|
|
742
|
+
/**
|
|
743
|
+
* @llm-pattern COMPOUND-ONLY Layout Usage
|
|
744
|
+
*
|
|
745
|
+
* AdminLayout (dashboard/admin):
|
|
746
|
+
* <AdminLayout scheme="sidebar" tone="subtle">
|
|
747
|
+
* <AdminLayout.Header title="Dashboard" />
|
|
748
|
+
* <AdminLayout.Sidebar navigation={nav} />
|
|
749
|
+
* <AdminLayout.Content>...</AdminLayout.Content>
|
|
750
|
+
* </AdminLayout>
|
|
751
|
+
*
|
|
752
|
+
* PageLayout (websites):
|
|
753
|
+
* <PageLayout scheme="default" tone="clean">
|
|
754
|
+
* <PageLayout.Header navigation={nav} />
|
|
755
|
+
* <PageLayout.Content>...</PageLayout.Content>
|
|
756
|
+
* <PageLayout.Footer />
|
|
757
|
+
* </PageLayout>
|
|
758
|
+
*
|
|
759
|
+
* AuthLayout (login/signup):
|
|
760
|
+
* <AuthLayout scheme="card" tone="clean" title="Sign In">
|
|
761
|
+
* <LoginForm />
|
|
762
|
+
* </AuthLayout>
|
|
763
|
+
*
|
|
764
|
+
* BlankLayout (error/simple pages):
|
|
765
|
+
* <BlankLayout scheme="simple" tone="clean">
|
|
766
|
+
* <ErrorContent />
|
|
767
|
+
* </BlankLayout>
|
|
768
|
+
*
|
|
769
|
+
* PopupLayout (extensions/modals):
|
|
770
|
+
* <PopupLayout scheme="modal" tone="clean" title="Extension">
|
|
771
|
+
* <ExtensionContent />
|
|
772
|
+
* </PopupLayout>
|
|
773
|
+
*/
|
|
774
|
+
/**
|
|
775
|
+
* @llm-decision-tree Layout Selection Guide
|
|
776
|
+
*
|
|
777
|
+
* What are you building?
|
|
778
|
+
* ├── Admin dashboard/CRM/analytics → AdminLayout scheme="sidebar|compact"
|
|
779
|
+
* ├── Company website/blog/docs → PageLayout scheme="default|sidebar"
|
|
780
|
+
* ├── Login/signup/onboarding → AuthLayout scheme="simple|card|split|hero"
|
|
781
|
+
* ├── Error page/maintenance/about → BlankLayout scheme="simple|card"
|
|
782
|
+
* └── Chrome extension/popup/overlay → PopupLayout scheme="modal|drawer|floating"
|
|
783
|
+
*
|
|
784
|
+
* All layouts follow consistent patterns:
|
|
785
|
+
* 1. scheme prop for structural variation
|
|
786
|
+
* 2. tone prop for visual emphasis
|
|
787
|
+
* 3. size prop for responsive sizing
|
|
788
|
+
* 4. Compound components for flexibility (AdminLayout, PageLayout)
|
|
789
|
+
* 5. Single components for simplicity (AuthLayout, BlankLayout, PopupLayout)
|
|
790
|
+
*/
|
|
791
|
+
/**
|
|
792
|
+
* Platform detection types
|
|
793
|
+
*/
|
|
794
|
+
export type Platform = 'web' | 'native' | 'tauri' | 'unknown';
|
|
795
|
+
/**
|
|
796
|
+
* Legacy theme config interface for backward compatibility
|
|
797
|
+
*/
|
|
798
|
+
export interface ThemeConfig {
|
|
799
|
+
id: Theme;
|
|
800
|
+
name: string;
|
|
801
|
+
description?: string;
|
|
802
|
+
cssVars: {
|
|
803
|
+
light: Record<string, string>;
|
|
804
|
+
dark: Record<string, string>;
|
|
805
|
+
};
|
|
806
|
+
}
|
|
807
|
+
/**
|
|
808
|
+
* Re-export commonly used types for convenience
|
|
809
|
+
*/
|
|
810
|
+
export type { ComponentType, ReactNode, ReactElement, HTMLAttributes, ForwardRefExoticComponent, RefAttributes, } from 'react';
|
|
811
|
+
export type { FieldValues, FieldPath, UseFormReturn, SubmitHandler, SubmitErrorHandler, } from 'react-hook-form';
|
|
812
|
+
export type { ZodSchema } from 'zod';
|
|
813
|
+
//# sourceMappingURL=index.d.ts.map
|