@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
package/dist/tabs.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabs.js","sources":["../node_modules/@radix-ui/react-tabs/dist/index.mjs","../src/components/ui/tabs.tsx"],"sourcesContent":["\"use client\";\n\n// src/tabs.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TABS_NAME = \"Tabs\";\nvar [createTabsContext, createTabsScope] = createContextScope(TABS_NAME, [\n createRovingFocusGroupScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar [TabsProvider, useTabsContext] = createTabsContext(TABS_NAME);\nvar Tabs = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeTabs,\n value: valueProp,\n onValueChange,\n defaultValue,\n orientation = \"horizontal\",\n dir,\n activationMode = \"automatic\",\n ...tabsProps\n } = props;\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n onChange: onValueChange,\n defaultProp: defaultValue ?? \"\",\n caller: TABS_NAME\n });\n return /* @__PURE__ */ jsx(\n TabsProvider,\n {\n scope: __scopeTabs,\n baseId: useId(),\n value,\n onValueChange: setValue,\n orientation,\n dir: direction,\n activationMode,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n dir: direction,\n \"data-orientation\": orientation,\n ...tabsProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabs.displayName = TABS_NAME;\nvar TAB_LIST_NAME = \"TabsList\";\nvar TabsList = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, loop = true, ...listProps } = props;\n const context = useTabsContext(TAB_LIST_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n orientation: context.orientation,\n dir: context.dir,\n loop,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"tablist\",\n \"aria-orientation\": context.orientation,\n ...listProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabsList.displayName = TAB_LIST_NAME;\nvar TRIGGER_NAME = \"TabsTrigger\";\nvar TabsTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, disabled = false, ...triggerProps } = props;\n const context = useTabsContext(TRIGGER_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Item,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n focusable: !disabled,\n active: isSelected,\n children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"tab\",\n \"aria-selected\": isSelected,\n \"aria-controls\": contentId,\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n id: triggerId,\n ...triggerProps,\n ref: forwardedRef,\n onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n context.onValueChange(value);\n } else {\n event.preventDefault();\n }\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if ([\" \", \"Enter\"].includes(event.key)) context.onValueChange(value);\n }),\n onFocus: composeEventHandlers(props.onFocus, () => {\n const isAutomaticActivation = context.activationMode !== \"manual\";\n if (!isSelected && !disabled && isAutomaticActivation) {\n context.onValueChange(value);\n }\n })\n }\n )\n }\n );\n }\n);\nTabsTrigger.displayName = TRIGGER_NAME;\nvar CONTENT_NAME = \"TabsContent\";\nvar TabsContent = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, forceMount, children, ...contentProps } = props;\n const context = useTabsContext(CONTENT_NAME, __scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n const isMountAnimationPreventedRef = React.useRef(isSelected);\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false);\n return () => cancelAnimationFrame(rAF);\n }, []);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || isSelected, children: ({ present }) => /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-orientation\": context.orientation,\n role: \"tabpanel\",\n \"aria-labelledby\": triggerId,\n hidden: !present,\n id: contentId,\n tabIndex: 0,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...props.style,\n animationDuration: isMountAnimationPreventedRef.current ? \"0s\" : void 0\n },\n children: present && children\n }\n ) });\n }\n);\nTabsContent.displayName = CONTENT_NAME;\nfunction makeTriggerId(baseId, value) {\n return `${baseId}-trigger-${value}`;\n}\nfunction makeContentId(baseId, value) {\n return `${baseId}-content-${value}`;\n}\nvar Root2 = Tabs;\nvar List = TabsList;\nvar Trigger = TabsTrigger;\nvar Content = TabsContent;\nexport {\n Content,\n List,\n Root2 as Root,\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n Trigger,\n createTabsScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Tabs({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n className={cn(\"flex flex-col gap-2\", className)}\n {...props}\n />\n )\n}\n\nfunction TabsList({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.List>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n className={cn(\n \"bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TabsTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n className={cn(\n \"data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TabsContent({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot=\"tabs-content\"\n className={cn(\"flex-1 outline-none\", className)}\n {...props}\n />\n )\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent }\n"],"names":["TABS_NAME","createTabsContext","createTabsScope","createContextScope","createRovingFocusGroupScope","useRovingFocusGroupScope","TabsProvider","useTabsContext","Tabs","React","props","forwardedRef","__scopeTabs","valueProp","onValueChange","defaultValue","orientation","dir","activationMode","tabsProps","direction","useDirection","value","setValue","useControllableState","jsx","useId","Primitive","TAB_LIST_NAME","TabsList","loop","listProps","context","rovingFocusGroupScope","RovingFocusGroup.Root","TRIGGER_NAME","TabsTrigger","disabled","triggerProps","triggerId","makeTriggerId","contentId","makeContentId","isSelected","RovingFocusGroup.Item","composeEventHandlers","event","isAutomaticActivation","CONTENT_NAME","TabsContent","forceMount","children","contentProps","isMountAnimationPreventedRef","rAF","Presence","present","baseId","Root2","List","Trigger","Content","className","TabsPrimitive.Root","cn","TabsPrimitive.List","TabsPrimitive.Trigger","TabsPrimitive.Content"],"mappings":"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","x_google_ignoreList":[0]}
|
package/dist/textarea.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsx as i } from "react/jsx-runtime";
|
|
2
|
+
import { c as t } from "./utils-CwJPJKOE.js";
|
|
3
|
+
function n({ className: r, ...e }) {
|
|
4
|
+
return /* @__PURE__ */ i(
|
|
5
|
+
"textarea",
|
|
6
|
+
{
|
|
7
|
+
"data-slot": "textarea",
|
|
8
|
+
className: t(
|
|
9
|
+
"border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
|
|
10
|
+
r
|
|
11
|
+
),
|
|
12
|
+
...e
|
|
13
|
+
}
|
|
14
|
+
);
|
|
15
|
+
}
|
|
16
|
+
export {
|
|
17
|
+
n as Textarea
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=textarea.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textarea.js","sources":["../src/components/ui/textarea.tsx"],"sourcesContent":["import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n \"border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Textarea }\n"],"names":["Textarea","className","props","jsx","cn"],"mappings":";;AAIA,SAASA,EAAS,EAAE,WAAAC,GAAW,GAAGC,KAA2C;AAC3E,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACAH;AAAA,MAAA;AAAA,MAED,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { jsx as L } from "react/jsx-runtime";
|
|
2
|
+
import { createContext as $, useState as S, useEffect as h, useContext as E } from "react";
|
|
3
|
+
const x = {
|
|
4
|
+
AdminLayout: "subtle",
|
|
5
|
+
// Professional admin interfaces
|
|
6
|
+
PageLayout: "clean",
|
|
7
|
+
// Clean public websites
|
|
8
|
+
AuthLayout: "clean",
|
|
9
|
+
// Focused authentication
|
|
10
|
+
PopupLayout: "clean",
|
|
11
|
+
// Clean extensions
|
|
12
|
+
BlankLayout: "clean",
|
|
13
|
+
// Simple pages
|
|
14
|
+
Header: "clean",
|
|
15
|
+
// Clean headers
|
|
16
|
+
Footer: "contrast",
|
|
17
|
+
// Bold footers
|
|
18
|
+
AdminSidebar: "subtle",
|
|
19
|
+
// Subtle sidebars
|
|
20
|
+
AdminHeader: "clean",
|
|
21
|
+
// Clean admin headers
|
|
22
|
+
PopupHeader: "brand"
|
|
23
|
+
// Branded popup headers
|
|
24
|
+
}, A = {
|
|
25
|
+
clean: "bg-background text-foreground border-border",
|
|
26
|
+
subtle: "bg-muted/30 text-foreground border-border/50",
|
|
27
|
+
brand: "bg-primary text-primary-foreground border-primary/20",
|
|
28
|
+
contrast: "bg-foreground text-background border-foreground/20"
|
|
29
|
+
// Automatically flips with mode
|
|
30
|
+
}, P = [
|
|
31
|
+
"base",
|
|
32
|
+
// Sky blue theme - clean & professional (DEFAULT)
|
|
33
|
+
"elegant",
|
|
34
|
+
// Minimal blue - clean & professional
|
|
35
|
+
"metro",
|
|
36
|
+
// Dark teal - admin dashboards
|
|
37
|
+
"studio",
|
|
38
|
+
// Designer grays - creative tools
|
|
39
|
+
"vivid"
|
|
40
|
+
// Premium cursive - luxury/creative portfolios
|
|
41
|
+
], g = $(void 0);
|
|
42
|
+
function T(t, n, a, m = !1, s = "uikit-theme") {
|
|
43
|
+
if (typeof window > "u")
|
|
44
|
+
return { theme: t, mode: n };
|
|
45
|
+
if (m)
|
|
46
|
+
return console.log(`🎨 Config priority: ${t} (${n} mode)`), { theme: t, mode: n };
|
|
47
|
+
if (s === null) {
|
|
48
|
+
if (a) {
|
|
49
|
+
const o = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
|
|
50
|
+
return console.log(`🎨 System preference (no storage): ${t} (${o} mode)`), { theme: t, mode: o };
|
|
51
|
+
}
|
|
52
|
+
return console.log(`🎨 Props only (no storage): ${t} (${n} mode)`), { theme: t, mode: n };
|
|
53
|
+
}
|
|
54
|
+
try {
|
|
55
|
+
const r = localStorage.getItem(s);
|
|
56
|
+
if (r) {
|
|
57
|
+
const o = JSON.parse(r);
|
|
58
|
+
if (o.theme && typeof o.theme == "string" && ["light", "dark"].includes(o.mode))
|
|
59
|
+
return console.log(`🎨 Restored from storage: ${o.theme} (${o.mode} mode)`), o;
|
|
60
|
+
}
|
|
61
|
+
if (a) {
|
|
62
|
+
const i = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
|
|
63
|
+
return console.log(`🎨 System preference: ${t} (${i} mode)`), { theme: t, mode: i };
|
|
64
|
+
}
|
|
65
|
+
return console.log(`🎨 Props fallback: ${t} (${n} mode)`), { theme: t, mode: n };
|
|
66
|
+
} catch (r) {
|
|
67
|
+
return console.warn("Failed to load theme preferences, using defaults:", r), { theme: t, mode: n };
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
function u(t, n) {
|
|
71
|
+
if (typeof window > "u") return;
|
|
72
|
+
const a = document.documentElement;
|
|
73
|
+
a.classList.remove("light", "dark"), Array.from(a.classList).filter(
|
|
74
|
+
(s) => s.startsWith("theme-")
|
|
75
|
+
).forEach((s) => {
|
|
76
|
+
a.classList.remove(s);
|
|
77
|
+
}), a.classList.add(n), a.classList.add(`theme-${t}`);
|
|
78
|
+
}
|
|
79
|
+
function F({
|
|
80
|
+
children: t,
|
|
81
|
+
theme: n = "base",
|
|
82
|
+
mode: a = "light",
|
|
83
|
+
detectSystem: m = !0,
|
|
84
|
+
forceConfig: s = !1,
|
|
85
|
+
// 🔧 NEW: Force config over storage
|
|
86
|
+
storageKey: r = "uikit-theme"
|
|
87
|
+
// 🔧 NEW: Configurable storage key
|
|
88
|
+
}) {
|
|
89
|
+
const [o, i] = S(() => {
|
|
90
|
+
const e = T(n, a, m, s, r);
|
|
91
|
+
return u(e.theme, e.mode), e;
|
|
92
|
+
});
|
|
93
|
+
h(() => {
|
|
94
|
+
if (typeof window > "u") return;
|
|
95
|
+
const { theme: e, mode: c } = o;
|
|
96
|
+
if (u(e, c), r && !s)
|
|
97
|
+
try {
|
|
98
|
+
localStorage.setItem(r, JSON.stringify({ theme: e, mode: c }));
|
|
99
|
+
} catch (d) {
|
|
100
|
+
console.warn("Failed to save theme preferences:", d);
|
|
101
|
+
}
|
|
102
|
+
console.log(`🎨 Applied theme: ${e} (${c} mode)`);
|
|
103
|
+
}, [o, r, s]), h(() => {
|
|
104
|
+
if (!m || typeof window > "u") return;
|
|
105
|
+
const e = window.matchMedia("(prefers-color-scheme: dark)"), c = (d) => {
|
|
106
|
+
if (!s)
|
|
107
|
+
try {
|
|
108
|
+
(r ? localStorage.getItem(r) : null) || i((y) => ({
|
|
109
|
+
...y,
|
|
110
|
+
mode: d.matches ? "dark" : "light"
|
|
111
|
+
}));
|
|
112
|
+
} catch (l) {
|
|
113
|
+
console.warn("Failed to handle system preference change:", l);
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
return e.addEventListener("change", c), () => e.removeEventListener("change", c);
|
|
117
|
+
}, [m, s, r]);
|
|
118
|
+
const p = (e) => {
|
|
119
|
+
i((c) => ({ ...c, theme: e }));
|
|
120
|
+
}, f = (e) => {
|
|
121
|
+
if (e !== "light" && e !== "dark") {
|
|
122
|
+
console.warn(`Invalid mode: ${e}. Expected 'light' or 'dark'.`);
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
i((c) => ({ ...c, mode: e }));
|
|
126
|
+
}, b = () => {
|
|
127
|
+
i((e) => ({
|
|
128
|
+
...e,
|
|
129
|
+
mode: e.mode === "light" ? "dark" : "light"
|
|
130
|
+
}));
|
|
131
|
+
}, k = (e) => A[e], v = (e) => x[e] || "clean", w = {
|
|
132
|
+
theme: o.theme,
|
|
133
|
+
mode: o.mode,
|
|
134
|
+
availableThemes: P,
|
|
135
|
+
setTheme: p,
|
|
136
|
+
setMode: f,
|
|
137
|
+
toggleMode: b,
|
|
138
|
+
getToneClasses: k,
|
|
139
|
+
getDefaultTone: v
|
|
140
|
+
};
|
|
141
|
+
return /* @__PURE__ */ L(g.Provider, { value: w, children: t });
|
|
142
|
+
}
|
|
143
|
+
function H() {
|
|
144
|
+
const t = E(g);
|
|
145
|
+
if (!t)
|
|
146
|
+
throw new Error("useTheme must be used within a ThemeProvider");
|
|
147
|
+
return t;
|
|
148
|
+
}
|
|
149
|
+
export {
|
|
150
|
+
P as AVAILABLE_THEMES,
|
|
151
|
+
F as ThemeProvider,
|
|
152
|
+
H as useTheme
|
|
153
|
+
};
|
|
154
|
+
//# sourceMappingURL=theme-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-provider.js","sources":["../src/themes/theme-provider.tsx"],"sourcesContent":["/**\n * Ultra-simple theme provider with pre-bundled themes - CONFIG PRIORITY VERSION\n * @module @bloomneo/uikit\n * @file src/themes/theme-provider.tsx\n */\n\nimport React, { createContext, useContext, useEffect, useState, ReactNode } from 'react';\n\n/**\n * @llm-rule Pre-bundled themes - CSS included in package\n * Simple selection from 8 built-in themes\n */\nexport type Theme = string;\n\n/**\n * @llm-rule System color scheme preference\n * light: Light system theme\n * dark: Dark system theme\n */\nexport type Mode = 'light' | 'dark';\n\n/**\n * @llm-rule Component visual emphasis system\n * clean → Pure, minimal, white/light backgrounds\n * subtle → Muted, supporting, gray areas\n * brand → Primary colored, branded elements\n * contrast → High emphasis, dark/bold areas\n */\nexport type Tone = 'clean' | 'subtle' | 'brand' | 'contrast';\n\n/**\n * @llm-props ThemeProvider context - Zero complexity\n * REQUIRED: children\n * RECOMMENDED: theme, mode\n * OPTIONAL: detectSystem\n */\nexport interface ThemeContextValue {\n /** Current theme from pre-bundled options */\n theme: Theme;\n /** System color mode */\n mode: Mode;\n /** Available themes */\n availableThemes: Theme[];\n \n /** Set theme from pre-bundled options */\n setTheme: (theme: Theme) => void;\n /** Set system color mode */\n setMode: (mode: Mode) => void;\n /** Toggle between light and dark modes */\n toggleMode: () => void;\n \n /** Get CSS classes for tone */\n getToneClasses: (tone: Tone) => string;\n /** Get default tone for component */\n getDefaultTone: (component: string) => Tone;\n}\n\n/**\n * @llm-props ThemeProvider props - ENHANCED WITH CONFIG PRIORITY\n * REQUIRED: children\n * RECOMMENDED: theme=\"base\", mode=\"light\"\n * OPTIONAL: detectSystem, forceConfig, storageKey\n * @llm-defaults theme=\"base\", mode=\"light\", detectSystem=true, forceConfig=false\n */\nexport interface ThemeProviderProps {\n /** REQUIRED: Child components */\n children: ReactNode;\n /** RECOMMENDED: Theme from pre-bundled options (default: \"base\") */\n theme?: Theme;\n /** RECOMMENDED: System color mode (default: \"light\") */\n mode?: Mode;\n /** OPTIONAL: Auto-detect system preference (default: true) */\n detectSystem?: boolean;\n /** NEW: Force configuration over storage (default: false) */\n forceConfig?: boolean;\n /** NEW: Storage key to use (default: \"uikit-theme\", set to null to disable storage) */\n storageKey?: string | null;\n}\n\n/**\n * @llm-defaults Tone defaults by component type\n * Smart contextual defaults for LLM predictability\n */\nconst TONE_DEFAULTS: Record<string, Tone> = {\n AdminLayout: 'subtle', // Professional admin interfaces\n PageLayout: 'clean', // Clean public websites\n AuthLayout: 'clean', // Focused authentication\n PopupLayout: 'clean', // Clean extensions\n BlankLayout: 'clean', // Simple pages\n Header: 'clean', // Clean headers\n Footer: 'contrast', // Bold footers\n AdminSidebar: 'subtle', // Subtle sidebars\n AdminHeader: 'clean', // Clean admin headers\n PopupHeader: 'brand', // Branded popup headers\n};\n\n/**\n * @llm-rule Tone CSS class mapping\n * CSS variables automatically handle light/dark mode switching\n */\nconst TONE_CLASSES: Record<Tone, string> = {\n clean: 'bg-background text-foreground border-border',\n subtle: 'bg-muted/30 text-foreground border-border/50',\n brand: 'bg-primary text-primary-foreground border-primary/20',\n contrast: 'bg-foreground text-background border-foreground/20' // Automatically flips with mode\n};\n\n/**\n * @llm-rule Available pre-bundled themes\n * All themes ship as CSS with the package\n */\nexport const AVAILABLE_THEMES: Theme[] = [\n 'base', // Sky blue theme - clean & professional (DEFAULT)\n 'elegant', // Minimal blue - clean & professional\n 'metro', // Dark teal - admin dashboards\n 'studio', // Designer grays - creative tools\n 'vivid' // Premium cursive - luxury/creative portfolios\n];\n\n// Theme context\nconst ThemeContext = createContext<ThemeContextValue | undefined>(undefined);\n\n/**\n * ✅ ENHANCED: Get initial theme state with configuration priority\n */\nfunction getInitialThemeState(\n defaultTheme: Theme, \n defaultMode: Mode, \n detectSystem: boolean,\n forceConfig: boolean = false,\n storageKey: string | null = 'uikit-theme'\n): { theme: Theme; mode: Mode } {\n // Server-side rendering - use props\n if (typeof window === 'undefined') {\n return { theme: defaultTheme, mode: defaultMode };\n }\n\n // 🔧 NEW: If forceConfig is true, ignore storage and use props\n if (forceConfig) {\n console.log(`🎨 Config priority: ${defaultTheme} (${defaultMode} mode)`);\n return { theme: defaultTheme, mode: defaultMode };\n }\n\n // 🔧 NEW: If storageKey is null, skip storage entirely\n if (storageKey === null) {\n if (detectSystem) {\n const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;\n const systemMode = prefersDark ? 'dark' : 'light';\n console.log(`🎨 System preference (no storage): ${defaultTheme} (${systemMode} mode)`);\n return { theme: defaultTheme, mode: systemMode };\n }\n console.log(`🎨 Props only (no storage): ${defaultTheme} (${defaultMode} mode)`);\n return { theme: defaultTheme, mode: defaultMode };\n }\n\n try {\n // Try to load saved preferences from storage\n const saved = localStorage.getItem(storageKey);\n if (saved) {\n const parsed = JSON.parse(saved);\n \n // Validate saved theme format (allow any theme name, just check mode)\n if (parsed.theme && typeof parsed.theme === 'string' &&\n ['light', 'dark'].includes(parsed.mode)) {\n console.log(`🎨 Restored from storage: ${parsed.theme} (${parsed.mode} mode)`);\n return parsed;\n }\n }\n \n // No saved preference - check system preference if enabled\n if (detectSystem) {\n const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;\n const systemMode = prefersDark ? 'dark' : 'light';\n console.log(`🎨 System preference: ${defaultTheme} (${systemMode} mode)`);\n return { theme: defaultTheme, mode: systemMode };\n }\n \n // Use props as fallback\n console.log(`🎨 Props fallback: ${defaultTheme} (${defaultMode} mode)`);\n return { theme: defaultTheme, mode: defaultMode };\n \n } catch (e) {\n console.warn('Failed to load theme preferences, using defaults:', e);\n return { theme: defaultTheme, mode: defaultMode };\n }\n}\n\n/**\n * ✅ FIX: Apply theme immediately on document (before React renders)\n */\nfunction applyThemeImmediately(theme: Theme, mode: Mode) {\n if (typeof window === 'undefined') return;\n \n const root = document.documentElement;\n \n // Remove existing theme and mode classes\n root.classList.remove('light', 'dark');\n\n // Remove all theme-* classes (including custom themes)\n const classesToRemove = Array.from(root.classList).filter(className =>\n className.startsWith('theme-')\n );\n classesToRemove.forEach(className => {\n root.classList.remove(className);\n });\n \n // Add new classes immediately\n root.classList.add(mode);\n root.classList.add(`theme-${theme}`);\n}\n\n/**\n * 🔧 ENHANCED: Ultra-simple theme provider with configuration priority\n * @llm-pattern Basic usage (default behavior - storage first)\n * <ThemeProvider theme=\"elegant\" mode=\"dark\">\n * <App />\n * </ThemeProvider>\n * \n * @llm-pattern Force configuration (ignore storage completely)\n * <ThemeProvider theme=\"elegant\" mode=\"dark\" forceConfig={true}>\n * <App />\n * </ThemeProvider>\n * \n * @llm-pattern Disable storage entirely\n * <ThemeProvider theme=\"elegant\" mode=\"dark\" storageKey={null}>\n * <App />\n * </ThemeProvider>\n * \n * @llm-pattern Custom storage key\n * <ThemeProvider theme=\"elegant\" mode=\"dark\" storageKey=\"my-app-theme\">\n * <App />\n * </ThemeProvider>\n */\nexport function ThemeProvider({\n children,\n theme = 'base',\n mode = 'light',\n detectSystem = true,\n forceConfig = false, // 🔧 NEW: Force config over storage\n storageKey = 'uikit-theme' // 🔧 NEW: Configurable storage key\n}: ThemeProviderProps): React.JSX.Element {\n \n // ✅ ENHANCED: Initialize with configuration priority logic\n const [themeState, setThemeState] = useState(() => {\n const initialState = getInitialThemeState(theme, mode, detectSystem, forceConfig, storageKey);\n \n // ✅ CRITICAL: Apply theme immediately before React renders\n applyThemeImmediately(initialState.theme, initialState.mode);\n \n return initialState;\n });\n\n // ✅ ENHANCED: Apply theme classes when state changes\n useEffect(() => {\n if (typeof window === 'undefined') return;\n \n const { theme: currentTheme, mode: currentMode } = themeState;\n \n // Apply theme classes\n applyThemeImmediately(currentTheme, currentMode);\n \n // 🔧 NEW: Save preferences only if storage is enabled and not forcing config\n if (storageKey && !forceConfig) {\n try {\n localStorage.setItem(storageKey, JSON.stringify({ theme: currentTheme, mode: currentMode }));\n } catch (e) {\n console.warn('Failed to save theme preferences:', e);\n }\n }\n \n console.log(`🎨 Applied theme: ${currentTheme} (${currentMode} mode)`);\n }, [themeState, storageKey, forceConfig]);\n \n // ✅ ENHANCED: Listen for system preference changes (respects forceConfig)\n useEffect(() => {\n if (!detectSystem || typeof window === 'undefined') return;\n \n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n \n const handleChange = (e: MediaQueryListEvent) => {\n // 🔧 NEW: Don't auto-switch if forcing config or manual preference was saved\n if (forceConfig) return;\n \n try {\n const saved = storageKey ? localStorage.getItem(storageKey) : null;\n if (!saved) {\n setThemeState(prev => ({\n ...prev,\n mode: e.matches ? 'dark' : 'light'\n }));\n }\n } catch (e) {\n console.warn('Failed to handle system preference change:', e);\n }\n };\n \n mediaQuery.addEventListener('change', handleChange);\n return () => mediaQuery.removeEventListener('change', handleChange);\n }, [detectSystem, forceConfig, storageKey]);\n\n /**\n * @llm-rule Set theme from pre-bundled options or custom themes\n * Accepts built-in themes and custom themes (no validation needed for custom themes)\n */\n const setTheme = (newTheme: Theme) => {\n // Allow all themes - both built-in and custom\n setThemeState(prev => ({ ...prev, theme: newTheme }));\n };\n\n /**\n * @llm-rule Set system color mode\n * Only accepts 'light' or 'dark'\n */\n const setMode = (newMode: Mode) => {\n if (newMode !== 'light' && newMode !== 'dark') {\n console.warn(`Invalid mode: ${newMode}. Expected 'light' or 'dark'.`);\n return;\n }\n \n setThemeState(prev => ({ ...prev, mode: newMode }));\n };\n\n /**\n * @llm-rule Toggle between light and dark modes\n */\n const toggleMode = () => {\n setThemeState(prev => ({\n ...prev,\n mode: prev.mode === 'light' ? 'dark' : 'light'\n }));\n };\n\n /**\n * @llm-rule Get CSS classes for tone styling\n * CSS variables automatically handle light/dark mode\n */\n const getToneClasses = (tone: Tone): string => {\n return TONE_CLASSES[tone];\n };\n\n /**\n * @llm-rule Get default tone for component type\n * Returns smart contextual defaults for LLM predictability\n */\n const getDefaultTone = (component: string): Tone => {\n return TONE_DEFAULTS[component] || 'clean';\n };\n \n // Create context value\n const contextValue: ThemeContextValue = {\n theme: themeState.theme,\n mode: themeState.mode,\n availableThemes: AVAILABLE_THEMES,\n setTheme,\n setMode,\n toggleMode,\n getToneClasses,\n getDefaultTone\n };\n \n return (\n <ThemeContext.Provider value={contextValue}>\n {children}\n </ThemeContext.Provider>\n );\n}\n\n/**\n * Hook to access theme context\n * @llm-pattern Basic theme usage\n * const { theme, mode, setTheme, setMode, toggleMode } = useTheme();\n * \n * @llm-pattern Component styling\n * const { getToneClasses, getDefaultTone } = useTheme();\n * const tone = getDefaultTone('AdminLayout');\n * const classes = getToneClasses(tone); // Works automatically in both modes\n */\nexport function useTheme(): ThemeContextValue {\n const context = useContext(ThemeContext);\n if (!context) {\n throw new Error('useTheme must be used within a ThemeProvider');\n }\n return context;\n}\n\n/**\n * @llm-pattern Theme switcher component example\n * const ThemeSwitcher = () => {\n * const { theme, availableThemes, setTheme } = useTheme();\n * return (\n * <select value={theme} onChange={e => setTheme(e.target.value as Theme)}>\n * {availableThemes.map(t => <option key={t} value={t}>{t}</option>)}\n * </select>\n * );\n * };\n */"],"names":["TONE_DEFAULTS","TONE_CLASSES","AVAILABLE_THEMES","ThemeContext","createContext","getInitialThemeState","defaultTheme","defaultMode","detectSystem","forceConfig","storageKey","systemMode","saved","parsed","e","applyThemeImmediately","theme","mode","root","className","ThemeProvider","children","themeState","setThemeState","useState","initialState","useEffect","currentTheme","currentMode","mediaQuery","handleChange","prev","setTheme","newTheme","setMode","newMode","toggleMode","getToneClasses","tone","getDefaultTone","component","contextValue","useTheme","context","useContext"],"mappings":"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"}
|