@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,129 @@
|
|
|
1
|
+
import { jsxs as o, jsx as r } from "react/jsx-runtime";
|
|
2
|
+
import * as l from "react";
|
|
3
|
+
import { Dialog as h, DialogContent as C, DialogHeader as p, DialogTitle as g, DialogDescription as y, DialogFooter as x } from "./dialog.js";
|
|
4
|
+
import { Button as m } from "./button.js";
|
|
5
|
+
import { Input as b } from "./input.js";
|
|
6
|
+
import { Label as D } from "./label.js";
|
|
7
|
+
const k = l.createContext(null);
|
|
8
|
+
function L({ children: t }) {
|
|
9
|
+
const [e, c] = l.useState(null), n = l.useRef(null), [f, u] = l.useState(""), v = l.useCallback((i) => (u(""), c(i), new Promise((d) => {
|
|
10
|
+
n.current = d;
|
|
11
|
+
})), []), a = (i) => {
|
|
12
|
+
n.current?.(i), n.current = null, c(null), u("");
|
|
13
|
+
}, s = e?.verifyText ? f !== e.verifyText : !1;
|
|
14
|
+
return /* @__PURE__ */ o(k.Provider, { value: { open: v }, children: [
|
|
15
|
+
t,
|
|
16
|
+
/* @__PURE__ */ r(h, { open: e !== null, onOpenChange: (i) => !i && a(!1), children: /* @__PURE__ */ o(C, { children: [
|
|
17
|
+
/* @__PURE__ */ o(p, { children: [
|
|
18
|
+
/* @__PURE__ */ r(g, { children: e?.title }),
|
|
19
|
+
e?.description && /* @__PURE__ */ r(y, { children: e.description })
|
|
20
|
+
] }),
|
|
21
|
+
e?.verifyText && /* @__PURE__ */ o("div", { className: "flex flex-col gap-2 py-2", children: [
|
|
22
|
+
/* @__PURE__ */ o(D, { htmlFor: "confirm-verify", children: [
|
|
23
|
+
"Type",
|
|
24
|
+
" ",
|
|
25
|
+
/* @__PURE__ */ r("span", { className: "font-mono font-semibold text-foreground", children: e.verifyText }),
|
|
26
|
+
" ",
|
|
27
|
+
"to confirm"
|
|
28
|
+
] }),
|
|
29
|
+
/* @__PURE__ */ r(
|
|
30
|
+
b,
|
|
31
|
+
{
|
|
32
|
+
id: "confirm-verify",
|
|
33
|
+
value: f,
|
|
34
|
+
onChange: (i) => u(i.target.value),
|
|
35
|
+
autoComplete: "off",
|
|
36
|
+
autoFocus: !0
|
|
37
|
+
}
|
|
38
|
+
)
|
|
39
|
+
] }),
|
|
40
|
+
/* @__PURE__ */ o(x, { children: [
|
|
41
|
+
/* @__PURE__ */ r(m, { variant: "outline", onClick: () => a(!1), children: e?.cancelLabel ?? "Cancel" }),
|
|
42
|
+
/* @__PURE__ */ r(
|
|
43
|
+
m,
|
|
44
|
+
{
|
|
45
|
+
variant: e?.tone === "destructive" ? "destructive" : "default",
|
|
46
|
+
disabled: s,
|
|
47
|
+
onClick: () => a(!0),
|
|
48
|
+
children: e?.confirmLabel ?? (e?.tone === "destructive" ? "Delete" : "Confirm")
|
|
49
|
+
}
|
|
50
|
+
)
|
|
51
|
+
] })
|
|
52
|
+
] }) })
|
|
53
|
+
] });
|
|
54
|
+
}
|
|
55
|
+
function M() {
|
|
56
|
+
const t = l.useContext(k);
|
|
57
|
+
if (!t)
|
|
58
|
+
throw new Error(
|
|
59
|
+
"[@bloomneo/uikit] useConfirm() called outside <ConfirmProvider>. Wrap your app root in <ConfirmProvider>."
|
|
60
|
+
);
|
|
61
|
+
const e = l.useCallback(
|
|
62
|
+
(n) => t.open({ ...n, tone: n.tone ?? "default" }),
|
|
63
|
+
[t]
|
|
64
|
+
), c = l.useCallback(
|
|
65
|
+
(n) => t.open({ ...n, tone: "destructive" }),
|
|
66
|
+
[t]
|
|
67
|
+
);
|
|
68
|
+
return Object.assign(e, { destructive: c });
|
|
69
|
+
}
|
|
70
|
+
function R({
|
|
71
|
+
open: t,
|
|
72
|
+
onOpenChange: e,
|
|
73
|
+
onConfirm: c,
|
|
74
|
+
title: n,
|
|
75
|
+
description: f,
|
|
76
|
+
confirmLabel: u,
|
|
77
|
+
cancelLabel: v,
|
|
78
|
+
tone: a = "default",
|
|
79
|
+
verifyText: s
|
|
80
|
+
}) {
|
|
81
|
+
const [i, d] = l.useState("");
|
|
82
|
+
return l.useEffect(() => {
|
|
83
|
+
t || d("");
|
|
84
|
+
}, [t]), /* @__PURE__ */ r(h, { open: t, onOpenChange: e, children: /* @__PURE__ */ o(C, { children: [
|
|
85
|
+
/* @__PURE__ */ o(p, { children: [
|
|
86
|
+
/* @__PURE__ */ r(g, { children: n }),
|
|
87
|
+
f && /* @__PURE__ */ r(y, { children: f })
|
|
88
|
+
] }),
|
|
89
|
+
s && /* @__PURE__ */ o("div", { className: "flex flex-col gap-2 py-2", children: [
|
|
90
|
+
/* @__PURE__ */ o(D, { htmlFor: "confirm-verify-controlled", children: [
|
|
91
|
+
"Type",
|
|
92
|
+
" ",
|
|
93
|
+
/* @__PURE__ */ r("span", { className: "font-mono font-semibold text-foreground", children: s }),
|
|
94
|
+
" ",
|
|
95
|
+
"to confirm"
|
|
96
|
+
] }),
|
|
97
|
+
/* @__PURE__ */ r(
|
|
98
|
+
b,
|
|
99
|
+
{
|
|
100
|
+
id: "confirm-verify-controlled",
|
|
101
|
+
value: i,
|
|
102
|
+
onChange: (P) => d(P.target.value),
|
|
103
|
+
autoComplete: "off",
|
|
104
|
+
autoFocus: !0
|
|
105
|
+
}
|
|
106
|
+
)
|
|
107
|
+
] }),
|
|
108
|
+
/* @__PURE__ */ o(x, { children: [
|
|
109
|
+
/* @__PURE__ */ r(m, { variant: "outline", onClick: () => e(!1), children: v ?? "Cancel" }),
|
|
110
|
+
/* @__PURE__ */ r(
|
|
111
|
+
m,
|
|
112
|
+
{
|
|
113
|
+
variant: a === "destructive" ? "destructive" : "default",
|
|
114
|
+
disabled: s ? i !== s : !1,
|
|
115
|
+
onClick: () => {
|
|
116
|
+
c(), e(!1);
|
|
117
|
+
},
|
|
118
|
+
children: u ?? (a === "destructive" ? "Delete" : "Confirm")
|
|
119
|
+
}
|
|
120
|
+
)
|
|
121
|
+
] })
|
|
122
|
+
] }) });
|
|
123
|
+
}
|
|
124
|
+
export {
|
|
125
|
+
R as ConfirmDialog,
|
|
126
|
+
L as ConfirmProvider,
|
|
127
|
+
M as useConfirm
|
|
128
|
+
};
|
|
129
|
+
//# sourceMappingURL=confirm-dialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"confirm-dialog.js","sources":["../src/components/ui/confirm-dialog.tsx"],"sourcesContent":["/**\n * <ConfirmDialog> + useConfirm() — promise-based confirmation prompts.\n *\n * Replaces the open/close-state choreography that every page reinvents:\n *\n * const confirm = useConfirm();\n *\n * async function onDelete() {\n * const ok = await confirm({\n * title: 'Delete this design?',\n * description: 'This cannot be undone.',\n * confirmLabel: 'Delete',\n * tone: 'destructive',\n * });\n * if (!ok) return;\n * await api.deleteDesign(id);\n * }\n *\n * Or for the high-stakes case:\n *\n * await confirm.destructive({\n * title: 'Delete user',\n * verifyText: user.name, // user must type the name to confirm\n * description: 'This will permanently delete the account.',\n * });\n *\n * Mount <ConfirmProvider /> once at the root of your app, then call\n * useConfirm() from anywhere inside it.\n */\n\nimport * as React from 'react';\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from '@/components/ui/dialog';\nimport { Button } from '@/components/ui/button';\nimport { Input } from '@/components/ui/input';\nimport { Label } from '@/components/ui/label';\n\nexport interface ConfirmOptions {\n title: string;\n description?: React.ReactNode;\n confirmLabel?: string;\n cancelLabel?: string;\n tone?: 'default' | 'destructive';\n}\n\nexport interface DestructiveConfirmOptions extends Omit<ConfirmOptions, 'tone'> {\n /**\n * If set, the user must type this exact string into the input before the\n * confirm button enables. Used for high-stakes deletions.\n */\n verifyText?: string;\n}\n\ntype Resolver = (value: boolean) => void;\ntype PendingOptions = (ConfirmOptions | DestructiveConfirmOptions) & {\n tone: 'default' | 'destructive';\n verifyText?: string;\n};\n\ninterface ConfirmContextValue {\n open: (options: PendingOptions) => Promise<boolean>;\n}\n\nconst ConfirmContext = React.createContext<ConfirmContextValue | null>(null);\n\n/**\n * Mount once at the root. All useConfirm() calls inside go through this.\n */\nexport function ConfirmProvider({ children }: { children: React.ReactNode }): React.JSX.Element {\n const [pending, setPending] = React.useState<PendingOptions | null>(null);\n const resolverRef = React.useRef<Resolver | null>(null);\n const [verifyValue, setVerifyValue] = React.useState('');\n\n const open = React.useCallback((options: PendingOptions) => {\n setVerifyValue('');\n setPending(options);\n return new Promise<boolean>((resolve) => {\n resolverRef.current = resolve;\n });\n }, []);\n\n const close = (result: boolean) => {\n resolverRef.current?.(result);\n resolverRef.current = null;\n setPending(null);\n setVerifyValue('');\n };\n\n const verifyMismatch = pending?.verifyText\n ? verifyValue !== pending.verifyText\n : false;\n\n return (\n <ConfirmContext.Provider value={{ open }}>\n {children}\n <Dialog open={pending !== null} onOpenChange={(o) => !o && close(false)}>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>{pending?.title}</DialogTitle>\n {pending?.description && (\n <DialogDescription>{pending.description}</DialogDescription>\n )}\n </DialogHeader>\n\n {pending?.verifyText && (\n <div className=\"flex flex-col gap-2 py-2\">\n <Label htmlFor=\"confirm-verify\">\n Type{' '}\n <span className=\"font-mono font-semibold text-foreground\">\n {pending.verifyText}\n </span>{' '}\n to confirm\n </Label>\n <Input\n id=\"confirm-verify\"\n value={verifyValue}\n onChange={(e) => setVerifyValue(e.target.value)}\n autoComplete=\"off\"\n autoFocus\n />\n </div>\n )}\n\n <DialogFooter>\n <Button variant=\"outline\" onClick={() => close(false)}>\n {pending?.cancelLabel ?? 'Cancel'}\n </Button>\n <Button\n variant={pending?.tone === 'destructive' ? 'destructive' : 'default'}\n disabled={verifyMismatch}\n onClick={() => close(true)}\n >\n {pending?.confirmLabel ?? (pending?.tone === 'destructive' ? 'Delete' : 'Confirm')}\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n </ConfirmContext.Provider>\n );\n}\n\nexport interface UseConfirmReturn {\n (options: ConfirmOptions): Promise<boolean>;\n destructive: (options: DestructiveConfirmOptions) => Promise<boolean>;\n}\n\n/**\n * Returns a callable. Use the call form for normal confirmations and the\n * `.destructive` method for high-stakes ones.\n */\nexport function useConfirm(): UseConfirmReturn {\n const ctx = React.useContext(ConfirmContext);\n if (!ctx) {\n throw new Error(\n '[@bloomneo/uikit] useConfirm() called outside <ConfirmProvider>. Wrap your app root in <ConfirmProvider>.'\n );\n }\n\n const fn = React.useCallback(\n (options: ConfirmOptions) =>\n ctx.open({ ...options, tone: options.tone ?? 'default' }),\n [ctx]\n );\n\n const destructive = React.useCallback(\n (options: DestructiveConfirmOptions) =>\n ctx.open({ ...options, tone: 'destructive' }),\n [ctx]\n );\n\n return Object.assign(fn, { destructive }) as UseConfirmReturn;\n}\n\n/**\n * Optional: a controlled <ConfirmDialog /> for users who don't want the\n * provider/promise pattern. Useful inside a single page that already has\n * dialog state management.\n */\nexport interface ConfirmDialogProps extends ConfirmOptions {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n onConfirm: () => void;\n verifyText?: string;\n}\n\nexport function ConfirmDialog({\n open,\n onOpenChange,\n onConfirm,\n title,\n description,\n confirmLabel,\n cancelLabel,\n tone = 'default',\n verifyText,\n}: ConfirmDialogProps): React.JSX.Element {\n const [verifyValue, setVerifyValue] = React.useState('');\n React.useEffect(() => {\n if (!open) setVerifyValue('');\n }, [open]);\n\n const verifyMismatch = verifyText ? verifyValue !== verifyText : false;\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>{title}</DialogTitle>\n {description && <DialogDescription>{description}</DialogDescription>}\n </DialogHeader>\n {verifyText && (\n <div className=\"flex flex-col gap-2 py-2\">\n <Label htmlFor=\"confirm-verify-controlled\">\n Type{' '}\n <span className=\"font-mono font-semibold text-foreground\">{verifyText}</span>{' '}\n to confirm\n </Label>\n <Input\n id=\"confirm-verify-controlled\"\n value={verifyValue}\n onChange={(e) => setVerifyValue(e.target.value)}\n autoComplete=\"off\"\n autoFocus\n />\n </div>\n )}\n <DialogFooter>\n <Button variant=\"outline\" onClick={() => onOpenChange(false)}>\n {cancelLabel ?? 'Cancel'}\n </Button>\n <Button\n variant={tone === 'destructive' ? 'destructive' : 'default'}\n disabled={verifyMismatch}\n onClick={() => {\n onConfirm();\n onOpenChange(false);\n }}\n >\n {confirmLabel ?? (tone === 'destructive' ? 'Delete' : 'Confirm')}\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}\n"],"names":["ConfirmContext","React","ConfirmProvider","children","pending","setPending","resolverRef","verifyValue","setVerifyValue","open","options","resolve","close","result","verifyMismatch","jsx","Dialog","o","DialogContent","jsxs","DialogHeader","DialogTitle","DialogDescription","Label","Input","e","DialogFooter","Button","useConfirm","ctx","fn","destructive","ConfirmDialog","onOpenChange","onConfirm","title","description","confirmLabel","cancelLabel","tone","verifyText"],"mappings":"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"}
|
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
import { jsx as r, jsxs as b } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as S, useState as M, useEffect as z } from "react";
|
|
3
|
+
import { c as A } from "./index-Bke1qZdk.js";
|
|
4
|
+
import { c as k } from "./utils-CwJPJKOE.js";
|
|
5
|
+
import { Button as R } from "./button.js";
|
|
6
|
+
import { Badge as I } from "./badge.js";
|
|
7
|
+
import { Select as G, SelectTrigger as $, SelectValue as O, SelectContent as T, SelectItem as q } from "./select.js";
|
|
8
|
+
import { C as D } from "./chevron-right-pz9eCjj-.js";
|
|
9
|
+
const F = A(
|
|
10
|
+
"w-full mx-auto bg-background text-foreground",
|
|
11
|
+
{
|
|
12
|
+
variants: {
|
|
13
|
+
layout: {
|
|
14
|
+
none: "block",
|
|
15
|
+
"sidebar-left": "block md:flex",
|
|
16
|
+
// ✅ FIXED: Always flex for side-by-side
|
|
17
|
+
"sidebar-right": "block md:flex"
|
|
18
|
+
// ✅ FIXED: Always flex for side-by-side
|
|
19
|
+
},
|
|
20
|
+
size: {
|
|
21
|
+
sm: "max-w-2xl",
|
|
22
|
+
md: "max-w-4xl",
|
|
23
|
+
lg: "max-w-6xl",
|
|
24
|
+
xl: "max-w-7xl",
|
|
25
|
+
full: "max-w-full"
|
|
26
|
+
},
|
|
27
|
+
position: {
|
|
28
|
+
sticky: "relative",
|
|
29
|
+
fixed: "relative",
|
|
30
|
+
relative: "relative"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
defaultVariants: {
|
|
34
|
+
layout: "none",
|
|
35
|
+
size: "xl",
|
|
36
|
+
position: "relative"
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
), H = A(
|
|
40
|
+
"flex-shrink-0 rounded-lg m-4 max-md:hidden",
|
|
41
|
+
// ✅ OPTIMIZED: Added m-4 for consistent outer margin
|
|
42
|
+
{
|
|
43
|
+
variants: {
|
|
44
|
+
position: {
|
|
45
|
+
left: "order-first",
|
|
46
|
+
right: "order-last"
|
|
47
|
+
},
|
|
48
|
+
size: {
|
|
49
|
+
sm: "w-48",
|
|
50
|
+
// ✅ FIXED: Removed responsive prefixes for consistent width
|
|
51
|
+
md: "w-56",
|
|
52
|
+
lg: "w-64",
|
|
53
|
+
xl: "w-64",
|
|
54
|
+
full: "w-64"
|
|
55
|
+
},
|
|
56
|
+
sidebarPosition: {
|
|
57
|
+
sticky: "sticky top-4 self-start max-h-[calc(100vh-2rem)] overflow-y-auto",
|
|
58
|
+
// ✅ FIXED: Added self-start
|
|
59
|
+
fixed: "sticky top-4 self-start max-h-[calc(100vh-2rem)] overflow-y-auto",
|
|
60
|
+
// ✅ FIXED: Added self-start
|
|
61
|
+
relative: "self-start"
|
|
62
|
+
// ✅ FIXED: Added self-start
|
|
63
|
+
},
|
|
64
|
+
tone: {
|
|
65
|
+
clean: "bg-muted/10 border border-border/60 dark:bg-muted/20 dark:border-border/50",
|
|
66
|
+
subtle: "bg-muted/50 border border-border/20 dark:bg-muted/60 dark:border-border/30",
|
|
67
|
+
brand: "bg-primary/10 border border-primary/15 dark:bg-primary/15 dark:border-primary/20",
|
|
68
|
+
contrast: "bg-muted/70 border border-border/50 dark:bg-muted/80 dark:border-border/60"
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
defaultVariants: {
|
|
72
|
+
position: "left",
|
|
73
|
+
size: "md",
|
|
74
|
+
sidebarPosition: "relative",
|
|
75
|
+
tone: "clean"
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
), J = A(
|
|
79
|
+
"flex-1 min-w-0 p-4",
|
|
80
|
+
// ✅ OPTIMIZED: Constant p-4 padding, removed min-w-0 conflict
|
|
81
|
+
{
|
|
82
|
+
variants: {
|
|
83
|
+
size: {
|
|
84
|
+
sm: "",
|
|
85
|
+
// ✅ OPTIMIZED: Removed size-based padding, using constant p-4
|
|
86
|
+
md: "",
|
|
87
|
+
lg: "",
|
|
88
|
+
xl: "",
|
|
89
|
+
full: ""
|
|
90
|
+
},
|
|
91
|
+
hasGap: {
|
|
92
|
+
true: "",
|
|
93
|
+
// ✅ OPTIMIZED: Removed ml-6, using sidebar m-4 instead
|
|
94
|
+
false: ""
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
defaultVariants: {
|
|
98
|
+
size: "md",
|
|
99
|
+
hasGap: !1
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
), L = (a = "md") => {
|
|
103
|
+
const c = {
|
|
104
|
+
sm: {
|
|
105
|
+
button: "text-xs py-1.5 px-2 min-h-[28px]",
|
|
106
|
+
icon: "h-3 w-3 mr-2 flex-shrink-0",
|
|
107
|
+
spacing: "space-y-0.5",
|
|
108
|
+
showBadges: !1
|
|
109
|
+
},
|
|
110
|
+
md: {
|
|
111
|
+
button: "text-sm py-2 px-3 min-h-[32px]",
|
|
112
|
+
icon: "h-4 w-4 mr-2 flex-shrink-0",
|
|
113
|
+
spacing: "space-y-1",
|
|
114
|
+
showBadges: !0
|
|
115
|
+
},
|
|
116
|
+
lg: {
|
|
117
|
+
button: "text-sm py-2.5 px-4 min-h-[36px]",
|
|
118
|
+
icon: "h-4 w-4 mr-3 flex-shrink-0",
|
|
119
|
+
spacing: "space-y-1.5",
|
|
120
|
+
showBadges: !0
|
|
121
|
+
},
|
|
122
|
+
xl: {
|
|
123
|
+
button: "text-sm py-2.5 px-4 min-h-[36px]",
|
|
124
|
+
icon: "h-4 w-4 mr-3 flex-shrink-0",
|
|
125
|
+
spacing: "space-y-1.5",
|
|
126
|
+
showBadges: !0
|
|
127
|
+
},
|
|
128
|
+
full: {
|
|
129
|
+
button: "text-sm py-2.5 px-4 min-h-[36px]",
|
|
130
|
+
icon: "h-4 w-4 mr-3 flex-shrink-0",
|
|
131
|
+
spacing: "space-y-1.5",
|
|
132
|
+
showBadges: !0
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
return c[a] || c.md;
|
|
136
|
+
};
|
|
137
|
+
function Q({
|
|
138
|
+
navigation: a,
|
|
139
|
+
size: c = "md",
|
|
140
|
+
tone: s,
|
|
141
|
+
currentPath: x = "",
|
|
142
|
+
onNavigate: n
|
|
143
|
+
}) {
|
|
144
|
+
const [h, p] = M(/* @__PURE__ */ new Set()), m = L(c);
|
|
145
|
+
z(() => {
|
|
146
|
+
const e = /* @__PURE__ */ new Set(), o = (w) => {
|
|
147
|
+
w.forEach((d) => {
|
|
148
|
+
d.items && d.items.length > 0 && (e.add(d.key), o(d.items));
|
|
149
|
+
});
|
|
150
|
+
};
|
|
151
|
+
o(a), p(e);
|
|
152
|
+
}, [a]);
|
|
153
|
+
const u = (e) => {
|
|
154
|
+
const o = new Set(h);
|
|
155
|
+
o.has(e) ? o.delete(e) : o.add(e), p(o);
|
|
156
|
+
}, y = (e) => {
|
|
157
|
+
e.items && e.items.length > 0 ? u(e.key) : e.href && n ? n(e.href, e) : e.onClick && e.onClick();
|
|
158
|
+
}, f = (e, o = 0) => {
|
|
159
|
+
const w = e.items && e.items.length > 0, d = h.has(e.key), l = e.href ? x === e.href : e.isActive;
|
|
160
|
+
return /* @__PURE__ */ b("div", { className: "w-full", children: [
|
|
161
|
+
/* @__PURE__ */ b(
|
|
162
|
+
R,
|
|
163
|
+
{
|
|
164
|
+
variant: "ghost",
|
|
165
|
+
className: k(
|
|
166
|
+
"w-full justify-start transition-all items-center cursor-pointer",
|
|
167
|
+
m.button,
|
|
168
|
+
o > 0 && "ml-4 w-[calc(100%-1rem)]",
|
|
169
|
+
// Tone-aware styling
|
|
170
|
+
s === "clean" && (l ? "bg-muted text-foreground shadow-sm" : "text-muted-foreground hover:text-foreground hover:bg-muted/50"),
|
|
171
|
+
s === "subtle" && (l ? "bg-background text-foreground shadow-sm" : "text-muted-foreground hover:text-foreground hover:bg-background/60"),
|
|
172
|
+
s === "brand" && (l ? "bg-primary/10 text-foreground shadow-sm" : "text-muted-foreground hover:text-foreground hover:bg-primary/5"),
|
|
173
|
+
s === "contrast" && (l ? "bg-muted text-foreground shadow-sm" : "text-muted-foreground hover:text-foreground hover:bg-muted/60"),
|
|
174
|
+
e.className
|
|
175
|
+
),
|
|
176
|
+
onClick: () => y(e),
|
|
177
|
+
children: [
|
|
178
|
+
e.icon && /* @__PURE__ */ r(e.icon, { className: m.icon }),
|
|
179
|
+
/* @__PURE__ */ r("span", { className: "flex-1 text-left truncate", children: e.label }),
|
|
180
|
+
e.badge && m.showBadges && /* @__PURE__ */ r(I, { variant: "secondary", className: "text-xs ml-auto", children: e.badge }),
|
|
181
|
+
w && /* @__PURE__ */ r(
|
|
182
|
+
D,
|
|
183
|
+
{
|
|
184
|
+
className: k(
|
|
185
|
+
"h-4 w-4 ml-2 transition-transform duration-200 text-muted-foreground",
|
|
186
|
+
d && "rotate-90"
|
|
187
|
+
)
|
|
188
|
+
}
|
|
189
|
+
)
|
|
190
|
+
]
|
|
191
|
+
}
|
|
192
|
+
),
|
|
193
|
+
w && d && e.items && /* @__PURE__ */ r("div", { className: "mt-1 space-y-1", children: e.items.map(
|
|
194
|
+
(v) => f(v, o + 1)
|
|
195
|
+
) })
|
|
196
|
+
] }, e.key);
|
|
197
|
+
};
|
|
198
|
+
return /* @__PURE__ */ r("nav", { className: k("w-full p-3", m.spacing), children: a.map((e) => f(e)) });
|
|
199
|
+
}
|
|
200
|
+
const C = S(({
|
|
201
|
+
content: a,
|
|
202
|
+
position: c = "left",
|
|
203
|
+
size: s = "md",
|
|
204
|
+
sidebarPosition: x = "relative",
|
|
205
|
+
tone: n = "clean",
|
|
206
|
+
currentPath: h = "",
|
|
207
|
+
onNavigate: p,
|
|
208
|
+
className: m,
|
|
209
|
+
style: u
|
|
210
|
+
}, y) => {
|
|
211
|
+
if (!a) return null;
|
|
212
|
+
const f = () => Array.isArray(a) ? /* @__PURE__ */ r(
|
|
213
|
+
Q,
|
|
214
|
+
{
|
|
215
|
+
navigation: a,
|
|
216
|
+
size: s,
|
|
217
|
+
tone: n,
|
|
218
|
+
currentPath: h,
|
|
219
|
+
onNavigate: p
|
|
220
|
+
}
|
|
221
|
+
) : /* @__PURE__ */ r("div", { className: "p-3", children: a });
|
|
222
|
+
return /* @__PURE__ */ r(
|
|
223
|
+
"aside",
|
|
224
|
+
{
|
|
225
|
+
ref: y,
|
|
226
|
+
className: k(
|
|
227
|
+
H({ position: c, size: s, sidebarPosition: x, tone: n }),
|
|
228
|
+
m
|
|
229
|
+
),
|
|
230
|
+
style: u,
|
|
231
|
+
children: f()
|
|
232
|
+
}
|
|
233
|
+
);
|
|
234
|
+
});
|
|
235
|
+
C.displayName = "ContainerSidebar";
|
|
236
|
+
const B = S(({
|
|
237
|
+
size: a = "md",
|
|
238
|
+
children: c,
|
|
239
|
+
className: s,
|
|
240
|
+
style: x
|
|
241
|
+
}, n) => /* @__PURE__ */ r(
|
|
242
|
+
"main",
|
|
243
|
+
{
|
|
244
|
+
ref: n,
|
|
245
|
+
className: k(J({ size: a }), s),
|
|
246
|
+
style: x,
|
|
247
|
+
children: c
|
|
248
|
+
}
|
|
249
|
+
));
|
|
250
|
+
B.displayName = "ContainerMain";
|
|
251
|
+
const V = S(({
|
|
252
|
+
className: a,
|
|
253
|
+
style: c,
|
|
254
|
+
tone: s = "clean",
|
|
255
|
+
position: x = "relative",
|
|
256
|
+
sidebar: n = "none",
|
|
257
|
+
navigation: h = [],
|
|
258
|
+
sidebarContent: p,
|
|
259
|
+
currentPath: m = "",
|
|
260
|
+
onNavigate: u,
|
|
261
|
+
sidebarPosition: y = "relative",
|
|
262
|
+
size: f = "xl",
|
|
263
|
+
children: e
|
|
264
|
+
}, o) => {
|
|
265
|
+
const w = n === "left" ? "sidebar-left" : n === "right" ? "sidebar-right" : "none", d = n !== "none" && (h.length > 0 || p), l = h.length > 0 ? h : p, v = (g, N = "") => {
|
|
266
|
+
const t = [];
|
|
267
|
+
return g.forEach((i) => {
|
|
268
|
+
const E = N ? `${N} > ${i.label}` : i.label;
|
|
269
|
+
(i.href || i.onClick) && t.push({ key: i.key, label: E, item: i }), i.items && i.items.length > 0 && t.push(...v(i.items, E));
|
|
270
|
+
}), t;
|
|
271
|
+
}, j = (g) => {
|
|
272
|
+
if (!Array.isArray(l)) return;
|
|
273
|
+
const t = v(l).find((i) => i.key === g);
|
|
274
|
+
t && u && (t.item.href ? u(t.item.href, t.item) : t.item.onClick && t.item.onClick());
|
|
275
|
+
};
|
|
276
|
+
return /* @__PURE__ */ b(
|
|
277
|
+
"div",
|
|
278
|
+
{
|
|
279
|
+
ref: o,
|
|
280
|
+
className: k(F({ layout: w, size: f, position: x }), a),
|
|
281
|
+
style: c,
|
|
282
|
+
children: [
|
|
283
|
+
d && n === "left" && /* @__PURE__ */ r(
|
|
284
|
+
C,
|
|
285
|
+
{
|
|
286
|
+
content: l,
|
|
287
|
+
position: "left",
|
|
288
|
+
size: f,
|
|
289
|
+
sidebarPosition: y,
|
|
290
|
+
tone: s,
|
|
291
|
+
currentPath: m,
|
|
292
|
+
onNavigate: u
|
|
293
|
+
}
|
|
294
|
+
),
|
|
295
|
+
/* @__PURE__ */ b(B, { size: f, children: [
|
|
296
|
+
d && Array.isArray(l) && /* @__PURE__ */ r("div", { className: "md:hidden mb-4", children: /* @__PURE__ */ b(G, { value: v(l).find((g) => g.item.href === m)?.key, onValueChange: j, children: [
|
|
297
|
+
/* @__PURE__ */ r($, { className: "w-full", children: /* @__PURE__ */ r(O, { placeholder: "Navigate to..." }) }),
|
|
298
|
+
/* @__PURE__ */ r(T, { children: v(l).map(({ key: g, label: N, item: t }) => /* @__PURE__ */ r(q, { value: g, children: /* @__PURE__ */ b("div", { className: "flex items-center justify-between w-full", children: [
|
|
299
|
+
/* @__PURE__ */ b("div", { className: "flex items-center gap-2", children: [
|
|
300
|
+
t.icon && /* @__PURE__ */ r(t.icon, { className: "h-4 w-4" }),
|
|
301
|
+
/* @__PURE__ */ r("span", { children: N })
|
|
302
|
+
] }),
|
|
303
|
+
t.badge && /* @__PURE__ */ r(I, { variant: "secondary", className: "text-xs", children: t.badge })
|
|
304
|
+
] }) }, g)) })
|
|
305
|
+
] }) }),
|
|
306
|
+
e
|
|
307
|
+
] }),
|
|
308
|
+
d && n === "right" && /* @__PURE__ */ r(
|
|
309
|
+
C,
|
|
310
|
+
{
|
|
311
|
+
content: l,
|
|
312
|
+
position: "right",
|
|
313
|
+
size: f,
|
|
314
|
+
sidebarPosition: y,
|
|
315
|
+
tone: s,
|
|
316
|
+
currentPath: m,
|
|
317
|
+
onNavigate: u
|
|
318
|
+
}
|
|
319
|
+
)
|
|
320
|
+
]
|
|
321
|
+
}
|
|
322
|
+
);
|
|
323
|
+
});
|
|
324
|
+
V.displayName = "Container";
|
|
325
|
+
const ee = Object.assign(V, {
|
|
326
|
+
Sidebar: C,
|
|
327
|
+
Main: B
|
|
328
|
+
});
|
|
329
|
+
export {
|
|
330
|
+
ee as Container,
|
|
331
|
+
B as ContainerMain,
|
|
332
|
+
C as ContainerSidebar
|
|
333
|
+
};
|
|
334
|
+
//# sourceMappingURL=container.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"container.js","sources":["../src/components/sections/container.tsx"],"sourcesContent":["/**\n * Container component with FIXED sidebar layout - properly side-by-side\n * @module @bloomneo/uikit\n * @file src/components/sections/container.tsx\n */\n\nimport * as React from 'react';\nimport { forwardRef, useState, useEffect } from 'react';\nimport { cva } from 'class-variance-authority';\nimport { cn } from '@/lib/utils';\nimport { Button } from '@/components/ui/button';\nimport { Badge } from '@/components/ui/badge';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select';\nimport { ChevronRight } from 'lucide-react';\nimport type { NavigationItem, Size } from '@/types';\n\n/**\n * Container variants - FIXED layout for proper side-by-side positioning\n */\nconst containerVariants = cva(\n 'w-full mx-auto bg-background text-foreground',\n {\n variants: {\n layout: {\n none: 'block',\n 'sidebar-left': 'block md:flex', // ✅ FIXED: Always flex for side-by-side\n 'sidebar-right': 'block md:flex', // ✅ FIXED: Always flex for side-by-side\n },\n size: {\n sm: 'max-w-2xl',\n md: 'max-w-4xl', \n lg: 'max-w-6xl',\n xl: 'max-w-7xl',\n full: 'max-w-full',\n },\n position: {\n sticky: 'relative',\n fixed: 'relative',\n relative: 'relative'\n }\n },\n defaultVariants: {\n layout: 'none',\n size: 'xl',\n position: 'relative'\n },\n }\n);\n\n/**\n * Sidebar variants - OPTIMIZED spacing and alignment\n */\nconst sidebarVariants = cva(\n 'flex-shrink-0 rounded-lg m-4 max-md:hidden', // ✅ OPTIMIZED: Added m-4 for consistent outer margin\n {\n variants: {\n position: {\n left: 'order-first',\n right: 'order-last',\n },\n size: {\n sm: 'w-48', // ✅ FIXED: Removed responsive prefixes for consistent width\n md: 'w-56',\n lg: 'w-64', \n xl: 'w-64',\n full: 'w-64',\n },\n sidebarPosition: {\n sticky: 'sticky top-4 self-start max-h-[calc(100vh-2rem)] overflow-y-auto', // ✅ FIXED: Added self-start\n fixed: 'sticky top-4 self-start max-h-[calc(100vh-2rem)] overflow-y-auto', // ✅ FIXED: Added self-start \n relative: 'self-start', // ✅ FIXED: Added self-start\n },\n tone: {\n clean: 'bg-muted/10 border border-border/60 dark:bg-muted/20 dark:border-border/50',\n subtle: 'bg-muted/50 border border-border/20 dark:bg-muted/60 dark:border-border/30',\n brand: 'bg-primary/10 border border-primary/15 dark:bg-primary/15 dark:border-primary/20',\n contrast: 'bg-muted/70 border border-border/50 dark:bg-muted/80 dark:border-border/60'\n }\n },\n defaultVariants: {\n position: 'left',\n size: 'md',\n sidebarPosition: 'relative',\n tone: 'clean'\n },\n }\n);\n\n/**\n * Main content variants - OPTIMIZED for consistent padding and reduced gap\n */\nconst mainVariants = cva(\n 'flex-1 min-w-0 p-4', // ✅ OPTIMIZED: Constant p-4 padding, removed min-w-0 conflict\n {\n variants: {\n size: {\n sm: '', // ✅ OPTIMIZED: Removed size-based padding, using constant p-4\n md: '',\n lg: '',\n xl: '',\n full: '',\n },\n hasGap: {\n true: '', // ✅ OPTIMIZED: Removed ml-6, using sidebar m-4 instead\n false: ''\n }\n },\n defaultVariants: {\n size: 'md',\n hasGap: false\n },\n }\n);\n\n/**\n * Size configuration for navigation\n */\nconst getSizeConfig = (size: Size = 'md') => {\n const configs = {\n sm: {\n button: 'text-xs py-1.5 px-2 min-h-[28px]',\n icon: 'h-3 w-3 mr-2 flex-shrink-0',\n spacing: 'space-y-0.5',\n showBadges: false,\n },\n md: {\n button: 'text-sm py-2 px-3 min-h-[32px]',\n icon: 'h-4 w-4 mr-2 flex-shrink-0',\n spacing: 'space-y-1',\n showBadges: true,\n },\n lg: {\n button: 'text-sm py-2.5 px-4 min-h-[36px]',\n icon: 'h-4 w-4 mr-3 flex-shrink-0',\n spacing: 'space-y-1.5',\n showBadges: true,\n },\n xl: {\n button: 'text-sm py-2.5 px-4 min-h-[36px]',\n icon: 'h-4 w-4 mr-3 flex-shrink-0',\n spacing: 'space-y-1.5',\n showBadges: true,\n },\n full: {\n button: 'text-sm py-2.5 px-4 min-h-[36px]',\n icon: 'h-4 w-4 mr-3 flex-shrink-0',\n spacing: 'space-y-1.5',\n showBadges: true,\n },\n };\n \n return configs[size] || configs.md;\n};\n\n/**\n * Navigation renderer props\n */\ninterface NavigationRendererProps {\n navigation: NavigationItem[];\n size: Size;\n tone: 'clean' | 'subtle' | 'brand' | 'contrast';\n currentPath?: string;\n onNavigate?: (href: string, item: NavigationItem) => void;\n}\n\n/**\n * Navigation renderer component\n */\nfunction NavigationRenderer({ \n navigation, \n size = 'md',\n tone,\n currentPath = '',\n onNavigate \n}: NavigationRendererProps) {\n const [expandedItems, setExpandedItems] = useState(new Set<string>());\n const config = getSizeConfig(size);\n\n // Initialize with all expandable items open\n useEffect(() => {\n const expanded = new Set<string>();\n \n const addExpandableItems = (navItems: NavigationItem[]) => {\n navItems.forEach((item) => {\n if (item.items && item.items.length > 0) {\n expanded.add(item.key);\n addExpandableItems(item.items);\n }\n });\n };\n \n addExpandableItems(navigation);\n setExpandedItems(expanded);\n }, [navigation]);\n\n const toggleExpanded = (itemKey: string) => {\n const newExpanded = new Set(expandedItems);\n if (newExpanded.has(itemKey)) {\n newExpanded.delete(itemKey);\n } else {\n newExpanded.add(itemKey);\n }\n setExpandedItems(newExpanded);\n };\n\n const handleItemClick = (item: NavigationItem) => {\n if (item.items && item.items.length > 0) {\n toggleExpanded(item.key);\n } else if (item.href && onNavigate) {\n onNavigate(item.href, item);\n } else if (item.onClick) {\n item.onClick();\n }\n };\n\n const renderNavItem = (item: NavigationItem, depth = 0): React.ReactNode => {\n const hasSubItems = item.items && item.items.length > 0;\n const isExpanded = expandedItems.has(item.key);\n const isActive = item.href ? currentPath === item.href : item.isActive;\n\n return (\n <div key={item.key} className=\"w-full\">\n <Button\n variant=\"ghost\"\n className={cn(\n 'w-full justify-start transition-all items-center cursor-pointer',\n config.button,\n depth > 0 && 'ml-4 w-[calc(100%-1rem)]',\n // Tone-aware styling\n tone === 'clean' && (isActive \n ? 'bg-muted text-foreground shadow-sm' \n : 'text-muted-foreground hover:text-foreground hover:bg-muted/50'),\n tone === 'subtle' && (isActive \n ? 'bg-background text-foreground shadow-sm' \n : 'text-muted-foreground hover:text-foreground hover:bg-background/60'),\n tone === 'brand' && (isActive \n ? 'bg-primary/10 text-foreground shadow-sm' \n : 'text-muted-foreground hover:text-foreground hover:bg-primary/5'),\n tone === 'contrast' && (isActive \n ? 'bg-muted text-foreground shadow-sm' \n : 'text-muted-foreground hover:text-foreground hover:bg-muted/60'),\n item.className\n )}\n onClick={() => handleItemClick(item)}\n >\n {item.icon && <item.icon className={config.icon} />}\n <span className=\"flex-1 text-left truncate\">{item.label}</span>\n \n {item.badge && config.showBadges && (\n <Badge variant=\"secondary\" className=\"text-xs ml-auto\">\n {item.badge}\n </Badge>\n )}\n \n {hasSubItems && (\n <ChevronRight \n className={cn(\n 'h-4 w-4 ml-2 transition-transform duration-200 text-muted-foreground',\n isExpanded && 'rotate-90'\n )} \n />\n )}\n </Button>\n \n {hasSubItems && isExpanded && item.items && (\n <div className=\"mt-1 space-y-1\">\n {item.items.map((subItem) =>\n renderNavItem(subItem, depth + 1)\n )}\n </div>\n )}\n </div>\n );\n };\n\n return (\n <nav className={cn('w-full p-3', config.spacing)}>\n {navigation.map((item) => renderNavItem(item))}\n </nav>\n );\n}\n\n/**\n * Container Sidebar props\n */\ninterface ContainerSidebarProps {\n content?: React.ReactNode | NavigationItem[];\n position?: 'left' | 'right';\n size?: Size;\n sidebarPosition?: 'sticky' | 'fixed' | 'relative';\n tone?: 'clean' | 'subtle' | 'brand' | 'contrast';\n currentPath?: string;\n onNavigate?: (href: string, item: NavigationItem) => void;\n className?: string;\n style?: React.CSSProperties;\n}\n\n/**\n * Container Sidebar component\n */\nconst ContainerSidebar = forwardRef<HTMLDivElement, ContainerSidebarProps>(({ \n content,\n position = 'left',\n size = 'md',\n sidebarPosition = 'relative',\n tone = 'clean',\n currentPath = '',\n onNavigate,\n className,\n style,\n}, ref) => {\n \n if (!content) return null;\n\n // Render content based on type\n const renderContent = () => {\n if (Array.isArray(content)) {\n return (\n <NavigationRenderer \n navigation={content} \n size={size}\n tone={tone}\n currentPath={currentPath}\n onNavigate={onNavigate}\n />\n );\n }\n return <div className=\"p-3\">{content}</div>;\n };\n\n return (\n <aside \n ref={ref}\n className={cn(\n sidebarVariants({ position, size, sidebarPosition, tone }),\n className\n )}\n style={style}\n >\n {renderContent()}\n </aside>\n );\n});\n\nContainerSidebar.displayName = 'ContainerSidebar';\n\n/**\n * Container Main props\n */\ninterface ContainerMainProps {\n size?: Size;\n children?: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n}\n\n/**\n * Container Main content area\n */\nconst ContainerMain = forwardRef<HTMLDivElement, ContainerMainProps>(({ \n size = 'md',\n children,\n className,\n style,\n}, ref) => (\n <main \n ref={ref}\n className={cn(mainVariants({ size }), className)}\n style={style}\n >\n {children}\n </main>\n));\n\nContainerMain.displayName = 'ContainerMain';\n\n/**\n * Container component props with standardized system\n */\nexport interface ContainerProps {\n /** Visual styling tone (applies to sidebar only) */\n tone?: 'clean' | 'subtle' | 'brand' | 'contrast';\n /** Container positioning */\n position?: 'sticky' | 'fixed' | 'relative';\n /** Sidebar position */\n sidebar?: 'none' | 'left' | 'right';\n /** Navigation items (takes priority over sidebarContent) */\n navigation?: NavigationItem[];\n /** Custom sidebar content (for JSX content) */\n sidebarContent?: React.ReactNode;\n /** Current path for active states */\n currentPath?: string;\n /** Navigation handler */\n onNavigate?: (href: string, item: NavigationItem) => void;\n /** Whether sidebar should be sticky */\n sidebarPosition?: 'sticky' | 'fixed' | 'relative';\n /** Container size */\n size?: Size;\n /** Container content */\n children: React.ReactNode;\n /** Additional CSS classes */\n className?: string;\n /** Inline styles */\n style?: React.CSSProperties;\n}\n\n/**\n * Main Container component with FIXED layout\n */\nconst ContainerComponent = forwardRef<HTMLDivElement, ContainerProps>(({ \n className,\n style,\n tone = 'clean',\n position = 'relative',\n sidebar = 'none',\n navigation = [],\n sidebarContent,\n currentPath = '',\n onNavigate,\n sidebarPosition = 'relative',\n size = 'xl',\n children,\n}, ref) => {\n \n // Determine layout\n const layout = sidebar === 'left' ? 'sidebar-left' : \n sidebar === 'right' ? 'sidebar-right' : 'none';\n \n const hasSidebar = sidebar !== 'none' && (navigation.length > 0 || sidebarContent);\n\n // Determine sidebar content: navigation takes priority\n const finalSidebarContent = navigation.length > 0 ? navigation : sidebarContent;\n\n // ✅ ADD: Flatten navigation for mobile dropdown\n const flattenNavigation = (navItems: NavigationItem[], prefix = ''): Array<{key: string, label: string, item: NavigationItem}> => {\n const flattened: Array<{key: string, label: string, item: NavigationItem}> = [];\n \n navItems.forEach((item) => {\n const label = prefix ? `${prefix} > ${item.label}` : item.label;\n \n if (item.href || item.onClick) {\n flattened.push({ key: item.key, label, item });\n }\n \n if (item.items && item.items.length > 0) {\n flattened.push(...flattenNavigation(item.items, label));\n }\n });\n \n return flattened;\n };\n\n // ✅ ADD: Mobile dropdown handler\n const handleMobileNavigation = (key: string) => {\n if (!Array.isArray(finalSidebarContent)) return;\n \n const flattenedNav = flattenNavigation(finalSidebarContent);\n const selectedItem = flattenedNav.find(item => item.key === key);\n \n if (selectedItem && onNavigate) {\n if (selectedItem.item.href) {\n onNavigate(selectedItem.item.href, selectedItem.item);\n } else if (selectedItem.item.onClick) {\n selectedItem.item.onClick();\n }\n }\n };\n\n return (\n <div \n ref={ref}\n className={cn(containerVariants({ layout, size, position }), className)}\n style={style}\n >\n {/* Left Sidebar */}\n {hasSidebar && sidebar === 'left' && (\n <ContainerSidebar \n content={finalSidebarContent}\n position=\"left\"\n size={size}\n sidebarPosition={sidebarPosition}\n tone={tone}\n currentPath={currentPath}\n onNavigate={onNavigate}\n />\n )}\n \n {/* Main Content with Mobile Dropdown */}\n <ContainerMain size={size}>\n {/* ✅ ADD: Mobile Navigation Dropdown */}\n {hasSidebar && Array.isArray(finalSidebarContent) && (\n <div className=\"md:hidden mb-4\">\n <Select value={flattenNavigation(finalSidebarContent).find(item => item.item.href === currentPath)?.key} onValueChange={handleMobileNavigation}>\n <SelectTrigger className=\"w-full\">\n <SelectValue placeholder=\"Navigate to...\" />\n </SelectTrigger>\n <SelectContent>\n {flattenNavigation(finalSidebarContent).map(({ key, label, item }) => (\n <SelectItem key={key} value={key}>\n <div className=\"flex items-center justify-between w-full\">\n <div className=\"flex items-center gap-2\">\n {item.icon && <item.icon className=\"h-4 w-4\" />}\n <span>{label}</span>\n </div>\n {item.badge && (\n <Badge variant=\"secondary\" className=\"text-xs\">\n {item.badge}\n </Badge>\n )}\n </div>\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n )}\n \n {children}\n </ContainerMain>\n \n {/* Right Sidebar */}\n {hasSidebar && sidebar === 'right' && (\n <ContainerSidebar \n content={finalSidebarContent}\n position=\"right\"\n size={size}\n sidebarPosition={sidebarPosition}\n tone={tone}\n currentPath={currentPath}\n onNavigate={onNavigate}\n />\n )}\n </div>\n );\n});\n\nContainerComponent.displayName = 'Container';\n\n/**\n * Container with compound components\n */\nconst Container = Object.assign(ContainerComponent, {\n Sidebar: ContainerSidebar,\n Main: ContainerMain,\n});\n\n/**\n * Export Container with compound components and individual components\n */\nexport { Container, ContainerSidebar, ContainerMain };"],"names":["containerVariants","cva","sidebarVariants","mainVariants","getSizeConfig","size","configs","NavigationRenderer","navigation","tone","currentPath","onNavigate","expandedItems","setExpandedItems","useState","config","useEffect","expanded","addExpandableItems","navItems","item","toggleExpanded","itemKey","newExpanded","handleItemClick","renderNavItem","depth","hasSubItems","isExpanded","isActive","jsxs","Button","cn","jsx","Badge","ChevronRight","subItem","ContainerSidebar","forwardRef","content","position","sidebarPosition","className","style","ref","renderContent","ContainerMain","children","ContainerComponent","sidebar","sidebarContent","layout","hasSidebar","finalSidebarContent","flattenNavigation","prefix","flattened","label","handleMobileNavigation","key","selectedItem","Select","SelectTrigger","SelectValue","SelectContent","SelectItem","Container"],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { forwardRef as i, createElement as a } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* @license lucide-react v0.468.0 - ISC
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the ISC license.
|
|
6
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
const p = (r) => r.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), c = (...r) => r.filter((e, t, o) => !!e && e.trim() !== "" && o.indexOf(e) === t).join(" ").trim();
|
|
9
|
+
/**
|
|
10
|
+
* @license lucide-react v0.468.0 - ISC
|
|
11
|
+
*
|
|
12
|
+
* This source code is licensed under the ISC license.
|
|
13
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
14
|
+
*/
|
|
15
|
+
var f = {
|
|
16
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
17
|
+
width: 24,
|
|
18
|
+
height: 24,
|
|
19
|
+
viewBox: "0 0 24 24",
|
|
20
|
+
fill: "none",
|
|
21
|
+
stroke: "currentColor",
|
|
22
|
+
strokeWidth: 2,
|
|
23
|
+
strokeLinecap: "round",
|
|
24
|
+
strokeLinejoin: "round"
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* @license lucide-react v0.468.0 - ISC
|
|
28
|
+
*
|
|
29
|
+
* This source code is licensed under the ISC license.
|
|
30
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
31
|
+
*/
|
|
32
|
+
const g = i(
|
|
33
|
+
({
|
|
34
|
+
color: r = "currentColor",
|
|
35
|
+
size: e = 24,
|
|
36
|
+
strokeWidth: t = 2,
|
|
37
|
+
absoluteStrokeWidth: o,
|
|
38
|
+
className: s = "",
|
|
39
|
+
children: n,
|
|
40
|
+
iconNode: u,
|
|
41
|
+
...l
|
|
42
|
+
}, m) => a(
|
|
43
|
+
"svg",
|
|
44
|
+
{
|
|
45
|
+
ref: m,
|
|
46
|
+
...f,
|
|
47
|
+
width: e,
|
|
48
|
+
height: e,
|
|
49
|
+
stroke: r,
|
|
50
|
+
strokeWidth: o ? Number(t) * 24 / Number(e) : t,
|
|
51
|
+
className: c("lucide", s),
|
|
52
|
+
...l
|
|
53
|
+
},
|
|
54
|
+
[
|
|
55
|
+
...u.map(([d, w]) => a(d, w)),
|
|
56
|
+
...Array.isArray(n) ? n : [n]
|
|
57
|
+
]
|
|
58
|
+
)
|
|
59
|
+
);
|
|
60
|
+
/**
|
|
61
|
+
* @license lucide-react v0.468.0 - ISC
|
|
62
|
+
*
|
|
63
|
+
* This source code is licensed under the ISC license.
|
|
64
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
65
|
+
*/
|
|
66
|
+
const C = (r, e) => {
|
|
67
|
+
const t = i(
|
|
68
|
+
({ className: o, ...s }, n) => a(g, {
|
|
69
|
+
ref: n,
|
|
70
|
+
iconNode: e,
|
|
71
|
+
className: c(`lucide-${p(r)}`, o),
|
|
72
|
+
...s
|
|
73
|
+
})
|
|
74
|
+
);
|
|
75
|
+
return t.displayName = `${r}`, t;
|
|
76
|
+
};
|
|
77
|
+
export {
|
|
78
|
+
C as c
|
|
79
|
+
};
|
|
80
|
+
//# sourceMappingURL=createLucideIcon-B45kRl5r.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createLucideIcon-B45kRl5r.js","sources":["../node_modules/lucide-react/dist/esm/shared/src/utils.js","../node_modules/lucide-react/dist/esm/defaultAttributes.js","../node_modules/lucide-react/dist/esm/Icon.js","../node_modules/lucide-react/dist/esm/createLucideIcon.js"],"sourcesContent":["/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\nconst mergeClasses = (...classes) => classes.filter((className, index, array) => {\n return Boolean(className) && className.trim() !== \"\" && array.indexOf(className) === index;\n}).join(\" \").trim();\n\nexport { mergeClasses, toKebabCase };\n//# sourceMappingURL=utils.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nvar defaultAttributes = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n};\n\nexport { defaultAttributes as default };\n//# sourceMappingURL=defaultAttributes.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport defaultAttributes from './defaultAttributes.js';\nimport { mergeClasses } from './shared/src/utils.js';\n\nconst Icon = forwardRef(\n ({\n color = \"currentColor\",\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = \"\",\n children,\n iconNode,\n ...rest\n }, ref) => {\n return createElement(\n \"svg\",\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,\n className: mergeClasses(\"lucide\", className),\n ...rest\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...Array.isArray(children) ? children : [children]\n ]\n );\n }\n);\n\nexport { Icon as default };\n//# sourceMappingURL=Icon.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport { mergeClasses, toKebabCase } from './shared/src/utils.js';\nimport Icon from './Icon.js';\n\nconst createLucideIcon = (iconName, iconNode) => {\n const Component = forwardRef(\n ({ className, ...props }, ref) => createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(`lucide-${toKebabCase(iconName)}`, className),\n ...props\n })\n );\n Component.displayName = `${iconName}`;\n return Component;\n};\n\nexport { createLucideIcon as default };\n//# sourceMappingURL=createLucideIcon.js.map\n"],"names":["toKebabCase","string","mergeClasses","classes","className","index","array","defaultAttributes","Icon","forwardRef","color","size","strokeWidth","absoluteStrokeWidth","children","iconNode","rest","ref","createElement","tag","attrs","createLucideIcon","iconName","Component","props"],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,MAAMA,IAAc,CAACC,MAAWA,EAAO,QAAQ,sBAAsB,OAAO,EAAE,YAAW,GACnFC,IAAe,IAAIC,MAAYA,EAAQ,OAAO,CAACC,GAAWC,GAAOC,MAC9D,EAAQF,KAAcA,EAAU,KAAI,MAAO,MAAME,EAAM,QAAQF,CAAS,MAAMC,CACtF,EAAE,KAAK,GAAG,EAAE,KAAI;ACVjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,IAAIE,IAAoB;AAAA,EACtB,OAAO;AAAA,EACP,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,eAAe;AAAA,EACf,gBAAgB;AAClB;ACjBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWA,MAAMC,IAAOC;AAAA,EACX,CAAC;AAAA,IACC,OAAAC,IAAQ;AAAA,IACR,MAAAC,IAAO;AAAA,IACP,aAAAC,IAAc;AAAA,IACd,qBAAAC;AAAA,IACA,WAAAT,IAAY;AAAA,IACZ,UAAAU;AAAA,IACA,UAAAC;AAAA,IACA,GAAGC;AAAA,EACP,GAAKC,MACMC;AAAA,IACL;AAAA,IACA;AAAA,MACE,KAAAD;AAAA,MACA,GAAGV;AAAA,MACH,OAAOI;AAAA,MACP,QAAQA;AAAA,MACR,QAAQD;AAAA,MACR,aAAaG,IAAsB,OAAOD,CAAW,IAAI,KAAK,OAAOD,CAAI,IAAIC;AAAA,MAC7E,WAAWV,EAAa,UAAUE,CAAS;AAAA,MAC3C,GAAGY;AAAA,IACX;AAAA,IACM;AAAA,MACE,GAAGD,EAAS,IAAI,CAAC,CAACI,GAAKC,CAAK,MAAMF,EAAcC,GAAKC,CAAK,CAAC;AAAA,MAC3D,GAAG,MAAM,QAAQN,CAAQ,IAAIA,IAAW,CAACA,CAAQ;AAAA,IACzD;AAAA,EACA;AAEA;ACxCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWK,MAACO,IAAmB,CAACC,GAAUP,MAAa;AAC/C,QAAMQ,IAAYd;AAAA,IAChB,CAAC,EAAE,WAAAL,GAAW,GAAGoB,EAAK,GAAIP,MAAQC,EAAcV,GAAM;AAAA,MACpD,KAAAS;AAAA,MACA,UAAAF;AAAA,MACA,WAAWb,EAAa,UAAUF,EAAYsB,CAAQ,CAAC,IAAIlB,CAAS;AAAA,MACpE,GAAGoB;AAAA,IACT,CAAK;AAAA,EACL;AACE,SAAAD,EAAU,cAAc,GAAGD,CAAQ,IAC5BC;AACT;","x_google_ignoreList":[0,1,2,3]}
|