@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/page.js
ADDED
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import { jsx as e, jsxs as x, Fragment as I } from "react/jsx-runtime";
|
|
2
|
+
import * as R from "react";
|
|
3
|
+
import { createContext as V, forwardRef as y, useContext as D } from "react";
|
|
4
|
+
import { c as E } from "./index-Bke1qZdk.js";
|
|
5
|
+
import { c as b } from "./utils-CwJPJKOE.js";
|
|
6
|
+
import { Header as O, HeaderLogo as q, HeaderNav as A } from "./header.js";
|
|
7
|
+
import { Footer as G } from "./footer.js";
|
|
8
|
+
import { Container as J } from "./container.js";
|
|
9
|
+
import { Breadcrumb as K, BreadcrumbList as M, BreadcrumbItem as Q, BreadcrumbLink as U, BreadcrumbPage as W, BreadcrumbSeparator as X } from "./breadcrumb.js";
|
|
10
|
+
const N = V({
|
|
11
|
+
scheme: "default",
|
|
12
|
+
tone: "brand",
|
|
13
|
+
size: "xl"
|
|
14
|
+
}), Y = E(
|
|
15
|
+
"min-h-screen flex flex-col",
|
|
16
|
+
{
|
|
17
|
+
variants: {
|
|
18
|
+
tone: {
|
|
19
|
+
clean: "bg-background text-foreground",
|
|
20
|
+
subtle: "bg-background text-foreground",
|
|
21
|
+
brand: "bg-background text-foreground",
|
|
22
|
+
contrast: "bg-zinc-900 text-zinc-100"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
defaultVariants: {
|
|
26
|
+
tone: "clean"
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
), z = y(({
|
|
30
|
+
scheme: o = "default",
|
|
31
|
+
tone: n = "clean",
|
|
32
|
+
size: i = "xl",
|
|
33
|
+
className: s,
|
|
34
|
+
children: p
|
|
35
|
+
}, m) => /* @__PURE__ */ e(N.Provider, { value: { scheme: o, tone: n, size: i }, children: /* @__PURE__ */ e(
|
|
36
|
+
"div",
|
|
37
|
+
{
|
|
38
|
+
ref: m,
|
|
39
|
+
className: b(Y({ tone: n }), s),
|
|
40
|
+
children: p
|
|
41
|
+
}
|
|
42
|
+
) }));
|
|
43
|
+
z.displayName = "PageLayout";
|
|
44
|
+
const L = y(({
|
|
45
|
+
tone: o,
|
|
46
|
+
size: n,
|
|
47
|
+
position: i = "sticky",
|
|
48
|
+
navigation: s = [],
|
|
49
|
+
currentPath: p = "",
|
|
50
|
+
onNavigate: m,
|
|
51
|
+
logo: t,
|
|
52
|
+
title: f,
|
|
53
|
+
actions: l,
|
|
54
|
+
className: c
|
|
55
|
+
}, d) => {
|
|
56
|
+
const { tone: u, size: g } = C();
|
|
57
|
+
return /* @__PURE__ */ x(
|
|
58
|
+
O,
|
|
59
|
+
{
|
|
60
|
+
ref: d,
|
|
61
|
+
tone: o || u,
|
|
62
|
+
size: n || g,
|
|
63
|
+
position: i,
|
|
64
|
+
className: c,
|
|
65
|
+
children: [
|
|
66
|
+
/* @__PURE__ */ e(q, { children: t || f && /* @__PURE__ */ e("span", { className: "text-xl font-bold", children: f }) }),
|
|
67
|
+
s.length > 0 && /* @__PURE__ */ e(
|
|
68
|
+
A,
|
|
69
|
+
{
|
|
70
|
+
navigation: s,
|
|
71
|
+
currentPath: p,
|
|
72
|
+
onNavigate: m
|
|
73
|
+
}
|
|
74
|
+
),
|
|
75
|
+
l && /* @__PURE__ */ e("div", { className: "ml-auto flex items-center gap-2", children: l })
|
|
76
|
+
]
|
|
77
|
+
}
|
|
78
|
+
);
|
|
79
|
+
});
|
|
80
|
+
L.displayName = "PageHeader";
|
|
81
|
+
const F = y(({
|
|
82
|
+
tone: o,
|
|
83
|
+
size: n,
|
|
84
|
+
sidebar: i = "none",
|
|
85
|
+
navigation: s = [],
|
|
86
|
+
sidebarContent: p,
|
|
87
|
+
currentPath: m = "",
|
|
88
|
+
onNavigate: t,
|
|
89
|
+
sidebarPosition: f = "relative",
|
|
90
|
+
breadcrumbs: l = [],
|
|
91
|
+
onBreadcrumbNavigate: c,
|
|
92
|
+
title: d,
|
|
93
|
+
className: u,
|
|
94
|
+
children: g
|
|
95
|
+
}, a) => {
|
|
96
|
+
const { scheme: T, tone: S, size: h } = C(), k = i !== "none" ? i : T === "sidebar" ? "left" : "none", j = (r) => {
|
|
97
|
+
c ? c(r) : t && t(r, {
|
|
98
|
+
key: r,
|
|
99
|
+
label: r,
|
|
100
|
+
href: r
|
|
101
|
+
});
|
|
102
|
+
}, w = () => l.length === 0 ? null : /* @__PURE__ */ e("div", { className: "mb-6", children: /* @__PURE__ */ e(K, { children: /* @__PURE__ */ e(M, { children: l.map((r, P) => /* @__PURE__ */ x(R.Fragment, { children: [
|
|
103
|
+
/* @__PURE__ */ e(Q, { children: r.href ? /* @__PURE__ */ e(
|
|
104
|
+
U,
|
|
105
|
+
{
|
|
106
|
+
asChild: !!(c || t),
|
|
107
|
+
...c || t ? {
|
|
108
|
+
onClick: (B) => {
|
|
109
|
+
B.preventDefault(), j(r.href);
|
|
110
|
+
}
|
|
111
|
+
} : { href: r.href },
|
|
112
|
+
children: c || t ? /* @__PURE__ */ e("button", { type: "button", children: r.label }) : r.label
|
|
113
|
+
}
|
|
114
|
+
) : /* @__PURE__ */ e(W, { children: r.label }) }),
|
|
115
|
+
P < l.length - 1 && /* @__PURE__ */ e(X, {})
|
|
116
|
+
] }, P)) }) }) }), v = () => d ? /* @__PURE__ */ e("h1", { className: "text-2xl sm:text-3xl font-bold text-foreground mb-4", children: d }) : null;
|
|
117
|
+
return k === "none" ? /* @__PURE__ */ e(
|
|
118
|
+
"main",
|
|
119
|
+
{
|
|
120
|
+
ref: a,
|
|
121
|
+
className: b("flex-1", u),
|
|
122
|
+
children: /* @__PURE__ */ x("div", { className: b(
|
|
123
|
+
"mx-auto",
|
|
124
|
+
(n || h) === "sm" && "max-w-2xl px-4 py-6",
|
|
125
|
+
(n || h) === "md" && "max-w-4xl px-4 sm:px-6 py-8",
|
|
126
|
+
(n || h) === "lg" && "max-w-6xl px-4 sm:px-6 lg:px-8 py-8",
|
|
127
|
+
(n || h) === "xl" && "max-w-7xl px-4 sm:px-6 lg:px-8 py-8",
|
|
128
|
+
(n || h) === "full" && "max-w-full px-4 sm:px-6 lg:px-8 py-8"
|
|
129
|
+
), children: [
|
|
130
|
+
(d || l.length > 0) && /* @__PURE__ */ x("div", { className: "mb-8", children: [
|
|
131
|
+
w(),
|
|
132
|
+
v()
|
|
133
|
+
] }),
|
|
134
|
+
g
|
|
135
|
+
] })
|
|
136
|
+
}
|
|
137
|
+
) : /* @__PURE__ */ e("div", { ref: a, className: b("flex-1", u), children: /* @__PURE__ */ x(
|
|
138
|
+
J,
|
|
139
|
+
{
|
|
140
|
+
sidebar: k,
|
|
141
|
+
navigation: s,
|
|
142
|
+
sidebarContent: p,
|
|
143
|
+
currentPath: m,
|
|
144
|
+
onNavigate: t,
|
|
145
|
+
sidebarPosition: f,
|
|
146
|
+
tone: o || S,
|
|
147
|
+
size: n || h,
|
|
148
|
+
children: [
|
|
149
|
+
(d || l.length > 0) && /* @__PURE__ */ x("div", { className: "mb-8", children: [
|
|
150
|
+
w(),
|
|
151
|
+
v()
|
|
152
|
+
] }),
|
|
153
|
+
g
|
|
154
|
+
]
|
|
155
|
+
}
|
|
156
|
+
) });
|
|
157
|
+
});
|
|
158
|
+
F.displayName = "PageContent";
|
|
159
|
+
const H = y(({
|
|
160
|
+
tone: o,
|
|
161
|
+
size: n,
|
|
162
|
+
position: i = "relative",
|
|
163
|
+
navigation: s = [],
|
|
164
|
+
currentPath: p = "",
|
|
165
|
+
onNavigate: m,
|
|
166
|
+
copyright: t,
|
|
167
|
+
className: f,
|
|
168
|
+
children: l
|
|
169
|
+
}, c) => {
|
|
170
|
+
const { tone: d, size: u } = C();
|
|
171
|
+
return /* @__PURE__ */ e(
|
|
172
|
+
G,
|
|
173
|
+
{
|
|
174
|
+
ref: c,
|
|
175
|
+
tone: o || (d === "brand" ? "subtle" : d),
|
|
176
|
+
size: n || u,
|
|
177
|
+
position: i,
|
|
178
|
+
className: f,
|
|
179
|
+
children: l || /* @__PURE__ */ x(I, { children: [
|
|
180
|
+
s.length > 0 && /* @__PURE__ */ e("div", { className: "flex flex-wrap justify-center gap-6 py-4", children: s.map((a) => /* @__PURE__ */ e(
|
|
181
|
+
"button",
|
|
182
|
+
{
|
|
183
|
+
onClick: () => {
|
|
184
|
+
a.href && m ? m(a.href, a) : a.onClick && a.onClick();
|
|
185
|
+
},
|
|
186
|
+
className: "text-sm text-muted-foreground hover:text-foreground transition-colors",
|
|
187
|
+
children: a.label
|
|
188
|
+
},
|
|
189
|
+
a.key
|
|
190
|
+
)) }),
|
|
191
|
+
t && /* @__PURE__ */ e("div", { className: "text-center py-4 border-t border-border", children: /* @__PURE__ */ e("p", { className: "text-sm text-muted-foreground", children: t }) })
|
|
192
|
+
] })
|
|
193
|
+
}
|
|
194
|
+
);
|
|
195
|
+
});
|
|
196
|
+
H.displayName = "PageFooter";
|
|
197
|
+
const C = () => {
|
|
198
|
+
const o = D(N);
|
|
199
|
+
if (!o)
|
|
200
|
+
throw new Error("usePage must be used within a PageLayout component");
|
|
201
|
+
return o;
|
|
202
|
+
}, le = Object.assign(z, {
|
|
203
|
+
Header: L,
|
|
204
|
+
Content: F,
|
|
205
|
+
Footer: H
|
|
206
|
+
});
|
|
207
|
+
export {
|
|
208
|
+
F as PageContent,
|
|
209
|
+
H as PageFooter,
|
|
210
|
+
L as PageHeader,
|
|
211
|
+
le as PageLayout,
|
|
212
|
+
C as usePage
|
|
213
|
+
};
|
|
214
|
+
//# sourceMappingURL=page.js.map
|
package/dist/page.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page.js","sources":["../src/components/layouts/page.tsx"],"sourcesContent":["/**\n * Page Layout - COMPOUND-ONLY with scheme for consistency\n * @module @bloomneo/uikit\n * @file src/components/layouts/page.tsx\n */\n\nimport * as React from 'react';\nimport { forwardRef, createContext, useContext } from 'react';\nimport { cva } from 'class-variance-authority';\nimport { cn } from '@/lib/utils';\nimport { Header, HeaderLogo, HeaderNav } from '@/components/sections/header';\nimport { Footer } from '@/components/sections/footer';\nimport { Container } from '@/components/sections/container';\nimport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n} from '@/components/ui/breadcrumb';\nimport type { NavigationItem, Size, Tone } from '@/types';\n\n/**\n * PageLayout schemes - consistent with other layouts\n * default: Simple header + content + footer\n * sidebar: Header + content with sidebar + footer\n */\nexport type PageLayoutScheme = 'default' | 'sidebar';\n\n/**\n * Page context for sharing configuration across compound components\n */\nconst PageContext = createContext<{\n scheme: PageLayoutScheme;\n tone: Tone;\n size: Size;\n}>({\n scheme: 'default',\n tone: 'brand',\n size: 'xl',\n});\n\n/**\n * Page layout container variants\n */\nconst pageVariants = cva(\n 'min-h-screen flex flex-col',\n {\n variants: {\n tone: {\n clean: 'bg-background text-foreground',\n subtle: 'bg-background text-foreground',\n brand: 'bg-background text-foreground',\n contrast: 'bg-zinc-900 text-zinc-100'\n }\n },\n defaultVariants: {\n tone: 'clean'\n }\n }\n);\n\n/**\n * PageLayout Root - Just a container with context\n */\nexport interface PageLayoutProps {\n /** RECOMMENDED: Layout scheme for consistency (default: \"default\") */\n scheme?: PageLayoutScheme;\n /** RECOMMENDED: Visual styling tone (default: \"clean\") */\n tone?: Tone;\n /** OPTIONAL: Page size for child components (default: \"xl\") */\n size?: Size;\n /** OPTIONAL: Additional CSS classes */\n className?: string;\n /** REQUIRED: Page structure (Header, Content, Footer) */\n children: React.ReactNode;\n}\n\n/**\n * PageLayout Root Component - COMPOUND-ONLY with scheme\n */\nconst PageLayoutRoot = forwardRef<HTMLDivElement, PageLayoutProps>(({\n scheme = 'default',\n tone = 'clean',\n size = 'xl',\n className,\n children,\n}, ref) => {\n return (\n <PageContext.Provider value={{ scheme, tone, size }}>\n <div\n ref={ref}\n className={cn(pageVariants({ tone }), className)}\n >\n {children}\n </div>\n </PageContext.Provider>\n );\n});\n\nPageLayoutRoot.displayName = 'PageLayout';\n\n/**\n * PageLayout.Header - Header with page context\n */\nexport interface PageHeaderProps {\n /** OPTIONAL: Header tone (inherits from PageLayout if not set) */\n tone?: Tone;\n /** OPTIONAL: Header size (inherits from PageLayout if not set) */\n size?: Size;\n /** OPTIONAL: Header positioning (default: \"sticky\") */\n position?: 'sticky' | 'fixed' | 'relative';\n /** OPTIONAL: Navigation items */\n navigation?: NavigationItem[];\n /** OPTIONAL: Current path for active states */\n currentPath?: string;\n /** OPTIONAL: Navigation handler */\n onNavigate?: (href: string, item: NavigationItem) => void;\n /** OPTIONAL: Logo component */\n logo?: React.ReactNode;\n /** OPTIONAL: Page title (used if no logo) */\n title?: string;\n /** OPTIONAL: Header actions (buttons, theme toggle, etc.) */\n actions?: React.ReactNode;\n /** OPTIONAL: Additional CSS classes */\n className?: string;\n}\n\nconst PageHeader = forwardRef<HTMLElement, PageHeaderProps>(({\n tone,\n size,\n position = 'sticky',\n navigation = [],\n currentPath = '',\n onNavigate,\n logo,\n title,\n actions,\n className,\n}, ref) => {\n const { tone: pageTone, size: pageSize } = usePage();\n \n return (\n <Header\n ref={ref}\n tone={tone || pageTone}\n size={size || pageSize}\n position={position}\n className={className}\n >\n {/* Logo */}\n <HeaderLogo>\n {logo || (title && (\n <span className=\"text-xl font-bold\">{title}</span>\n ))}\n </HeaderLogo>\n\n {/* Navigation */}\n {navigation.length > 0 && (\n <HeaderNav\n navigation={navigation}\n currentPath={currentPath}\n onNavigate={onNavigate}\n />\n )}\n\n {/* Actions */}\n {actions && (\n <div className=\"ml-auto flex items-center gap-2\">\n {actions}\n </div>\n )}\n </Header>\n );\n});\n\nPageHeader.displayName = 'PageHeader';\n\n/**\n * PageLayout.Content - Content area with optional sidebar\n */\nexport interface PageContentProps {\n /** OPTIONAL: Content tone (inherits from PageLayout if not set) */\n tone?: Tone;\n /** OPTIONAL: Content size (inherits from PageLayout if not set) */\n size?: Size;\n /** OPTIONAL: Sidebar position (default: \"none\") */\n sidebar?: 'none' | 'left' | 'right';\n /** OPTIONAL: Sidebar navigation items */\n navigation?: NavigationItem[];\n /** OPTIONAL: Custom sidebar content (overrides navigation) */\n sidebarContent?: React.ReactNode;\n /** OPTIONAL: Current path for active states */\n currentPath?: string;\n /** OPTIONAL: Navigation handler */\n onNavigate?: (href: string, item: NavigationItem) => void;\n /** OPTIONAL: Whether sidebar should be sticky */\n sidebarPosition?: 'sticky' | 'fixed' | 'relative';\n /** OPTIONAL: Breadcrumb items */\n breadcrumbs?: { label: string; href?: string }[];\n /** OPTIONAL: Breadcrumb navigation handler */\n onBreadcrumbNavigate?: (href: string) => void;\n /** OPTIONAL: Page title (shown above breadcrumbs) */\n title?: string;\n /** OPTIONAL: Additional CSS classes */\n className?: string;\n /** REQUIRED: Page content */\n children: React.ReactNode;\n}\n\nconst PageContent = forwardRef<HTMLDivElement, PageContentProps>(({\n tone,\n size,\n sidebar = 'none',\n navigation = [],\n sidebarContent,\n currentPath = '',\n onNavigate,\n sidebarPosition = 'relative',\n breadcrumbs = [],\n onBreadcrumbNavigate,\n title,\n className,\n children,\n}, ref) => {\n const { scheme, tone: pageTone, size: pageSize } = usePage();\n \n // Auto-detect sidebar from scheme if not explicitly set\n const finalSidebar = sidebar !== 'none' ? sidebar : (scheme === 'sidebar' ? 'left' : 'none');\n \n // Handle breadcrumb navigation\n const handleBreadcrumbClick = (href: string) => {\n if (onBreadcrumbNavigate) {\n onBreadcrumbNavigate(href);\n } else if (onNavigate) {\n // Create a navigation item for the breadcrumb\n const navItem: NavigationItem = {\n key: href,\n label: href,\n href: href\n };\n onNavigate(href, navItem);\n }\n };\n\n // Render breadcrumbs component using UI breadcrumb components\n const renderBreadcrumbs = () => {\n if (breadcrumbs.length === 0) return null;\n\n return (\n <div className=\"mb-6\">\n <Breadcrumb>\n <BreadcrumbList>\n {breadcrumbs.map((crumb, index) => (\n <React.Fragment key={index}>\n <BreadcrumbItem>\n {crumb.href ? (\n <BreadcrumbLink\n asChild={!!(onBreadcrumbNavigate || onNavigate)}\n {...((onBreadcrumbNavigate || onNavigate) \n ? {\n onClick: (e: React.MouseEvent) => {\n e.preventDefault();\n handleBreadcrumbClick(crumb.href!);\n }\n }\n : { href: crumb.href }\n )}\n >\n {(onBreadcrumbNavigate || onNavigate) ? (\n <button type=\"button\">\n {crumb.label}\n </button>\n ) : (\n crumb.label\n )}\n </BreadcrumbLink>\n ) : (\n <BreadcrumbPage>{crumb.label}</BreadcrumbPage>\n )}\n </BreadcrumbItem>\n {index < breadcrumbs.length - 1 && <BreadcrumbSeparator />}\n </React.Fragment>\n ))}\n </BreadcrumbList>\n </Breadcrumb>\n </div>\n );\n };\n\n // Render page title\n const renderTitle = () => {\n if (!title) return null;\n \n return (\n <h1 className=\"text-2xl sm:text-3xl font-bold text-foreground mb-4\">\n {title}\n </h1>\n );\n };\n\n if (finalSidebar === 'none') {\n // Simple content without sidebar\n return (\n <main \n ref={ref}\n className={cn('flex-1', className)}\n >\n <div className={cn(\n 'mx-auto',\n (size || pageSize) === 'sm' && 'max-w-2xl px-4 py-6',\n (size || pageSize) === 'md' && 'max-w-4xl px-4 sm:px-6 py-8',\n (size || pageSize) === 'lg' && 'max-w-6xl px-4 sm:px-6 lg:px-8 py-8',\n (size || pageSize) === 'xl' && 'max-w-7xl px-4 sm:px-6 lg:px-8 py-8',\n (size || pageSize) === 'full' && 'max-w-full px-4 sm:px-6 lg:px-8 py-8'\n )}>\n {/* Page header section with title and breadcrumbs */}\n {(title || breadcrumbs.length > 0) && (\n <div className=\"mb-8\">\n {renderBreadcrumbs()}\n {renderTitle()}\n </div>\n )}\n \n {/* Main content */}\n {children}\n </div>\n </main>\n );\n }\n\n // Content with sidebar - use Container\n return (\n <div ref={ref} className={cn('flex-1', className)}>\n <Container\n sidebar={finalSidebar}\n navigation={navigation}\n sidebarContent={sidebarContent}\n currentPath={currentPath}\n onNavigate={onNavigate}\n sidebarPosition={sidebarPosition}\n tone={tone || pageTone}\n size={size || pageSize}\n >\n {/* Page header section with title and breadcrumbs */}\n {(title || breadcrumbs.length > 0) && (\n <div className=\"mb-8\">\n {renderBreadcrumbs()}\n {renderTitle()}\n </div>\n )}\n \n {/* Main content */}\n {children}\n </Container>\n </div>\n );\n});\n\nPageContent.displayName = 'PageContent';\n\n/**\n * PageLayout.Footer - Footer with page context\n */\nexport interface PageFooterProps {\n /** OPTIONAL: Footer tone (default: \"contrast\") */\n tone?: Tone;\n /** OPTIONAL: Footer size (inherits from PageLayout if not set) */\n size?: Size;\n /** OPTIONAL: Footer positioning (default: \"relative\") */\n position?: 'sticky' | 'fixed' | 'relative';\n /** OPTIONAL: Footer navigation items */\n navigation?: NavigationItem[];\n /** OPTIONAL: Current path for active states */\n currentPath?: string;\n /** OPTIONAL: Navigation handler */\n onNavigate?: (href: string, item: NavigationItem) => void;\n /** OPTIONAL: Copyright text */\n copyright?: React.ReactNode;\n /** OPTIONAL: Additional CSS classes */\n className?: string;\n /** OPTIONAL: Custom footer content */\n children?: React.ReactNode;\n}\n\nconst PageFooter = forwardRef<HTMLElement, PageFooterProps>(({\n tone,\n size,\n position = 'relative',\n navigation = [],\n currentPath = '',\n onNavigate,\n copyright,\n className,\n children,\n}, ref) => {\n const { tone: pageTone, size: pageSize } = usePage();\n \n // Default footer tone is contrast for better visual separation\n const footerTone = tone || (pageTone === 'brand' ? 'subtle' : pageTone);\n \n return (\n <Footer\n ref={ref}\n tone={footerTone}\n size={size || pageSize}\n position={position}\n className={className}\n >\n {children || (\n <>\n {/* Footer Navigation */}\n {navigation.length > 0 && (\n <div className=\"flex flex-wrap justify-center gap-6 py-4\">\n {navigation.map((item) => (\n <button\n key={item.key}\n onClick={() => {\n if (item.href && onNavigate) {\n onNavigate(item.href, item);\n } else if (item.onClick) {\n item.onClick();\n }\n }}\n className=\"text-sm text-muted-foreground hover:text-foreground transition-colors\"\n >\n {item.label}\n </button>\n ))}\n </div>\n )}\n\n {/* Copyright */}\n {copyright && (\n <div className=\"text-center py-4 border-t border-border\">\n <p className=\"text-sm text-muted-foreground\">\n {copyright}\n </p>\n </div>\n )}\n </>\n )}\n </Footer>\n );\n});\n\nPageFooter.displayName = 'PageFooter';\n\n/**\n * Hook to access page configuration\n */\nconst usePage = () => {\n const context = useContext(PageContext);\n if (!context) {\n throw new Error('usePage must be used within a PageLayout component');\n }\n return context;\n};\n\n/**\n * PageLayout - COMPOUND-ONLY Component\n */\nconst PageLayout = Object.assign(PageLayoutRoot, {\n Header: PageHeader,\n Content: PageContent,\n Footer: PageFooter,\n});\n\n/**\n * Export COMPOUND-ONLY PageLayout\n */\nexport { \n PageLayout,\n PageHeader,\n PageContent,\n PageFooter,\n usePage\n};\n\n/**\n * @llm-rule PageLayout Usage - COMPOUND-ONLY with scheme\n * \n * Basic website:\n * <PageLayout scheme=\"default\" tone=\"clean\" size=\"xl\">\n * <PageLayout.Header navigation={nav} logo={<Logo />} />\n * <PageLayout.Content>\n * <YourContent />\n * </PageLayout.Content>\n * <PageLayout.Footer copyright=\"© 2024\" />\n * </PageLayout>\n * \n * Website with sidebar:\n * <PageLayout scheme=\"sidebar\">\n * <PageLayout.Header navigation={nav} title=\"My Site\" />\n * <PageLayout.Content navigation={docsNav}>\n * <YourContent />\n * </PageLayout.Content>\n * <PageLayout.Footer navigation={footerNav} />\n * </PageLayout>\n * \n * Custom layout (override scheme):\n * <PageLayout scheme=\"default\" tone=\"brand\">\n * <PageLayout.Header tone=\"brand\" navigation={nav} actions={<ThemeToggle />} />\n * <PageLayout.Content sidebar=\"right\" sidebarContent={<CustomSidebar />}>\n * <YourContent />\n * </PageLayout.Content>\n * <PageLayout.Footer tone=\"contrast\" navigation={legalNav} />\n * </PageLayout>\n * \n * With breadcrumbs and title:\n * <PageLayout scheme=\"default\" tone=\"clean\">\n * <PageLayout.Header navigation={nav} logo={<Logo />} />\n * <PageLayout.Content\n * title=\"User Profile\"\n * breadcrumbs={[\n * { label: 'Home', href: '/' },\n * { label: 'Users', href: '/users' },\n * { label: 'John Doe' }\n * ]}\n * onBreadcrumbNavigate={(href) => navigate(href)}\n * >\n * <UserProfileContent />\n * </PageLayout.Content>\n * <PageLayout.Footer copyright=\"© 2024\" />\n * </PageLayout>\n */"],"names":["PageContext","createContext","pageVariants","cva","PageLayoutRoot","forwardRef","scheme","tone","size","className","children","ref","jsx","cn","PageHeader","position","navigation","currentPath","onNavigate","logo","title","actions","pageTone","pageSize","usePage","jsxs","Header","HeaderLogo","HeaderNav","PageContent","sidebar","sidebarContent","sidebarPosition","breadcrumbs","onBreadcrumbNavigate","finalSidebar","handleBreadcrumbClick","href","renderBreadcrumbs","Breadcrumb","BreadcrumbList","crumb","index","React","BreadcrumbItem","BreadcrumbLink","e","BreadcrumbPage","BreadcrumbSeparator","renderTitle","Container","PageFooter","copyright","Footer","Fragment","item","context","useContext","PageLayout"],"mappings":"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"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { jsx as i, jsxs as e } from "react/jsx-runtime";
|
|
2
|
+
import { c as t } from "./utils-CwJPJKOE.js";
|
|
3
|
+
import { buttonVariants as l } from "./button.js";
|
|
4
|
+
import { E as c } from "./ellipsis-BhAoKPVk.js";
|
|
5
|
+
import { C as p } from "./chevron-right-pz9eCjj-.js";
|
|
6
|
+
import { C as m } from "./chevron-left-C1pkx4AF.js";
|
|
7
|
+
function N({ className: a, ...n }) {
|
|
8
|
+
return /* @__PURE__ */ i(
|
|
9
|
+
"nav",
|
|
10
|
+
{
|
|
11
|
+
role: "navigation",
|
|
12
|
+
"aria-label": "pagination",
|
|
13
|
+
"data-slot": "pagination",
|
|
14
|
+
className: t("mx-auto flex w-full justify-center", a),
|
|
15
|
+
...n
|
|
16
|
+
}
|
|
17
|
+
);
|
|
18
|
+
}
|
|
19
|
+
function P({
|
|
20
|
+
className: a,
|
|
21
|
+
...n
|
|
22
|
+
}) {
|
|
23
|
+
return /* @__PURE__ */ i(
|
|
24
|
+
"ul",
|
|
25
|
+
{
|
|
26
|
+
"data-slot": "pagination-content",
|
|
27
|
+
className: t("flex flex-row items-center gap-1", a),
|
|
28
|
+
...n
|
|
29
|
+
}
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
function v({ ...a }) {
|
|
33
|
+
return /* @__PURE__ */ i("li", { "data-slot": "pagination-item", ...a });
|
|
34
|
+
}
|
|
35
|
+
function o({
|
|
36
|
+
className: a,
|
|
37
|
+
isActive: n,
|
|
38
|
+
size: s = "icon",
|
|
39
|
+
...r
|
|
40
|
+
}) {
|
|
41
|
+
return /* @__PURE__ */ i(
|
|
42
|
+
"a",
|
|
43
|
+
{
|
|
44
|
+
"aria-current": n ? "page" : void 0,
|
|
45
|
+
"data-slot": "pagination-link",
|
|
46
|
+
"data-active": n,
|
|
47
|
+
className: t(
|
|
48
|
+
l({
|
|
49
|
+
variant: n ? "outline" : "ghost",
|
|
50
|
+
size: s
|
|
51
|
+
}),
|
|
52
|
+
a
|
|
53
|
+
),
|
|
54
|
+
...r
|
|
55
|
+
}
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
function b({
|
|
59
|
+
className: a,
|
|
60
|
+
...n
|
|
61
|
+
}) {
|
|
62
|
+
return /* @__PURE__ */ e(
|
|
63
|
+
o,
|
|
64
|
+
{
|
|
65
|
+
"aria-label": "Go to previous page",
|
|
66
|
+
size: "default",
|
|
67
|
+
className: t("gap-1 px-2.5 sm:pl-2.5", a),
|
|
68
|
+
...n,
|
|
69
|
+
children: [
|
|
70
|
+
/* @__PURE__ */ i(m, {}),
|
|
71
|
+
/* @__PURE__ */ i("span", { className: "hidden sm:block", children: "Previous" })
|
|
72
|
+
]
|
|
73
|
+
}
|
|
74
|
+
);
|
|
75
|
+
}
|
|
76
|
+
function C({
|
|
77
|
+
className: a,
|
|
78
|
+
...n
|
|
79
|
+
}) {
|
|
80
|
+
return /* @__PURE__ */ e(
|
|
81
|
+
o,
|
|
82
|
+
{
|
|
83
|
+
"aria-label": "Go to next page",
|
|
84
|
+
size: "default",
|
|
85
|
+
className: t("gap-1 px-2.5 sm:pr-2.5", a),
|
|
86
|
+
...n,
|
|
87
|
+
children: [
|
|
88
|
+
/* @__PURE__ */ i("span", { className: "hidden sm:block", children: "Next" }),
|
|
89
|
+
/* @__PURE__ */ i(p, {})
|
|
90
|
+
]
|
|
91
|
+
}
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
function j({
|
|
95
|
+
className: a,
|
|
96
|
+
...n
|
|
97
|
+
}) {
|
|
98
|
+
return /* @__PURE__ */ e(
|
|
99
|
+
"span",
|
|
100
|
+
{
|
|
101
|
+
"aria-hidden": !0,
|
|
102
|
+
"data-slot": "pagination-ellipsis",
|
|
103
|
+
className: t("flex size-9 items-center justify-center", a),
|
|
104
|
+
...n,
|
|
105
|
+
children: [
|
|
106
|
+
/* @__PURE__ */ i(c, { className: "size-4" }),
|
|
107
|
+
/* @__PURE__ */ i("span", { className: "sr-only", children: "More pages" })
|
|
108
|
+
]
|
|
109
|
+
}
|
|
110
|
+
);
|
|
111
|
+
}
|
|
112
|
+
export {
|
|
113
|
+
N as Pagination,
|
|
114
|
+
P as PaginationContent,
|
|
115
|
+
j as PaginationEllipsis,
|
|
116
|
+
v as PaginationItem,
|
|
117
|
+
o as PaginationLink,
|
|
118
|
+
C as PaginationNext,
|
|
119
|
+
b as PaginationPrevious
|
|
120
|
+
};
|
|
121
|
+
//# sourceMappingURL=pagination.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pagination.js","sources":["../src/components/ui/pagination.tsx"],"sourcesContent":["import * as React from \"react\"\nimport {\n ChevronLeftIcon,\n ChevronRightIcon,\n MoreHorizontalIcon,\n} from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button, buttonVariants } from \"@/components/ui/button\"\n\nfunction Pagination({ className, ...props }: React.ComponentProps<\"nav\">) {\n return (\n <nav\n role=\"navigation\"\n aria-label=\"pagination\"\n data-slot=\"pagination\"\n className={cn(\"mx-auto flex w-full justify-center\", className)}\n {...props}\n />\n )\n}\n\nfunction PaginationContent({\n className,\n ...props\n}: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"pagination-content\"\n className={cn(\"flex flex-row items-center gap-1\", className)}\n {...props}\n />\n )\n}\n\nfunction PaginationItem({ ...props }: React.ComponentProps<\"li\">) {\n return <li data-slot=\"pagination-item\" {...props} />\n}\n\ntype PaginationLinkProps = {\n isActive?: boolean\n} & Pick<React.ComponentProps<typeof Button>, \"size\"> &\n React.ComponentProps<\"a\">\n\nfunction PaginationLink({\n className,\n isActive,\n size = \"icon\",\n ...props\n}: PaginationLinkProps) {\n return (\n <a\n aria-current={isActive ? \"page\" : undefined}\n data-slot=\"pagination-link\"\n data-active={isActive}\n className={cn(\n buttonVariants({\n variant: isActive ? \"outline\" : \"ghost\",\n size,\n }),\n className\n )}\n {...props}\n />\n )\n}\n\nfunction PaginationPrevious({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) {\n return (\n <PaginationLink\n aria-label=\"Go to previous page\"\n size=\"default\"\n className={cn(\"gap-1 px-2.5 sm:pl-2.5\", className)}\n {...props}\n >\n <ChevronLeftIcon />\n <span className=\"hidden sm:block\">Previous</span>\n </PaginationLink>\n )\n}\n\nfunction PaginationNext({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) {\n return (\n <PaginationLink\n aria-label=\"Go to next page\"\n size=\"default\"\n className={cn(\"gap-1 px-2.5 sm:pr-2.5\", className)}\n {...props}\n >\n <span className=\"hidden sm:block\">Next</span>\n <ChevronRightIcon />\n </PaginationLink>\n )\n}\n\nfunction PaginationEllipsis({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n aria-hidden\n data-slot=\"pagination-ellipsis\"\n className={cn(\"flex size-9 items-center justify-center\", className)}\n {...props}\n >\n <MoreHorizontalIcon className=\"size-4\" />\n <span className=\"sr-only\">More pages</span>\n </span>\n )\n}\n\nexport {\n Pagination,\n PaginationContent,\n PaginationLink,\n PaginationItem,\n PaginationPrevious,\n PaginationNext,\n PaginationEllipsis,\n}\n"],"names":["Pagination","className","props","jsx","cn","PaginationContent","PaginationItem","PaginationLink","isActive","size","buttonVariants","PaginationPrevious","jsxs","ChevronLeftIcon","PaginationNext","ChevronRightIcon","PaginationEllipsis","MoreHorizontalIcon"],"mappings":";;;;;;AAUA,SAASA,EAAW,EAAE,WAAAC,GAAW,GAAGC,KAAsC;AACxE,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAW;AAAA,MACX,aAAU;AAAA,MACV,WAAWC,EAAG,sCAAsCH,CAAS;AAAA,MAC5D,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASG,EAAkB;AAAA,EACzB,WAAAJ;AAAA,EACA,GAAGC;AACL,GAA+B;AAC7B,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC,EAAG,oCAAoCH,CAAS;AAAA,MAC1D,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASI,EAAe,EAAE,GAAGJ,KAAqC;AAChE,SAAO,gBAAAC,EAAC,MAAA,EAAG,aAAU,mBAAmB,GAAGD,GAAO;AACpD;AAOA,SAASK,EAAe;AAAA,EACtB,WAAAN;AAAA,EACA,UAAAO;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,GAAGP;AACL,GAAwB;AACtB,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,gBAAcK,IAAW,SAAS;AAAA,MAClC,aAAU;AAAA,MACV,eAAaA;AAAA,MACb,WAAWJ;AAAA,QACTM,EAAe;AAAA,UACb,SAASF,IAAW,YAAY;AAAA,UAChC,MAAAC;AAAA,QAAA,CACD;AAAA,QACDR;AAAA,MAAA;AAAA,MAED,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASS,EAAmB;AAAA,EAC1B,WAAAV;AAAA,EACA,GAAGC;AACL,GAAgD;AAC9C,SACE,gBAAAU;AAAA,IAACL;AAAA,IAAA;AAAA,MACC,cAAW;AAAA,MACX,MAAK;AAAA,MACL,WAAWH,EAAG,0BAA0BH,CAAS;AAAA,MAChD,GAAGC;AAAA,MAEJ,UAAA;AAAA,QAAA,gBAAAC,EAACU,GAAA,EAAgB;AAAA,QACjB,gBAAAV,EAAC,QAAA,EAAK,WAAU,mBAAkB,UAAA,WAAA,CAAQ;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGhD;AAEA,SAASW,EAAe;AAAA,EACtB,WAAAb;AAAA,EACA,GAAGC;AACL,GAAgD;AAC9C,SACE,gBAAAU;AAAA,IAACL;AAAA,IAAA;AAAA,MACC,cAAW;AAAA,MACX,MAAK;AAAA,MACL,WAAWH,EAAG,0BAA0BH,CAAS;AAAA,MAChD,GAAGC;AAAA,MAEJ,UAAA;AAAA,QAAA,gBAAAC,EAAC,QAAA,EAAK,WAAU,mBAAkB,UAAA,QAAI;AAAA,0BACrCY,GAAA,CAAA,CAAiB;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGxB;AAEA,SAASC,EAAmB;AAAA,EAC1B,WAAAf;AAAA,EACA,GAAGC;AACL,GAAiC;AAC/B,SACE,gBAAAU;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,eAAW;AAAA,MACX,aAAU;AAAA,MACV,WAAWR,EAAG,2CAA2CH,CAAS;AAAA,MACjE,GAAGC;AAAA,MAEJ,UAAA;AAAA,QAAA,gBAAAC,EAACc,GAAA,EAAmB,WAAU,SAAA,CAAS;AAAA,QACvC,gBAAAd,EAAC,QAAA,EAAK,WAAU,WAAU,UAAA,aAAA,CAAU;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAG1C;"}
|
package/dist/platform.js
ADDED
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
const o = {
|
|
2
|
+
WEB: "web",
|
|
3
|
+
NATIVE: "native",
|
|
4
|
+
TAURI: "tauri",
|
|
5
|
+
UNKNOWN: "unknown"
|
|
6
|
+
};
|
|
7
|
+
function c() {
|
|
8
|
+
return typeof window < "u" && typeof document < "u" ? window.__TAURI__ !== void 0 || window.__TAURI_IPC__ !== void 0 || window.__TAURI_INVOKE__ !== void 0 ? o.TAURI : o.WEB : typeof navigator < "u" && navigator.product === "ReactNative" ? o.NATIVE : (typeof process < "u" && process.versions && process.versions.node, o.UNKNOWN);
|
|
9
|
+
}
|
|
10
|
+
function i() {
|
|
11
|
+
return typeof window < "u" && typeof document < "u";
|
|
12
|
+
}
|
|
13
|
+
function u() {
|
|
14
|
+
return typeof navigator < "u" && navigator.product === "ReactNative";
|
|
15
|
+
}
|
|
16
|
+
function f() {
|
|
17
|
+
return typeof window < "u" && (window.__TAURI__ !== void 0 || window.__TAURI_IPC__ !== void 0 || window.__TAURI_INVOKE__ !== void 0);
|
|
18
|
+
}
|
|
19
|
+
function l() {
|
|
20
|
+
return typeof process < "u" && process.versions && process.versions.node !== void 0;
|
|
21
|
+
}
|
|
22
|
+
function w() {
|
|
23
|
+
return typeof window > "u";
|
|
24
|
+
}
|
|
25
|
+
function g() {
|
|
26
|
+
if (!i())
|
|
27
|
+
return {
|
|
28
|
+
name: "Unknown",
|
|
29
|
+
version: "Unknown",
|
|
30
|
+
platform: o.UNKNOWN
|
|
31
|
+
};
|
|
32
|
+
const e = navigator.userAgent;
|
|
33
|
+
let r = "Unknown", t = "Unknown";
|
|
34
|
+
if (e.includes("Chrome") && !e.includes("Edg")) {
|
|
35
|
+
r = "Chrome";
|
|
36
|
+
const n = e.match(/Chrome\/(\d+)/);
|
|
37
|
+
t = n ? n[1] : "Unknown";
|
|
38
|
+
} else if (e.includes("Firefox")) {
|
|
39
|
+
r = "Firefox";
|
|
40
|
+
const n = e.match(/Firefox\/(\d+)/);
|
|
41
|
+
t = n ? n[1] : "Unknown";
|
|
42
|
+
} else if (e.includes("Safari") && !e.includes("Chrome")) {
|
|
43
|
+
r = "Safari";
|
|
44
|
+
const n = e.match(/Version\/(\d+)/);
|
|
45
|
+
t = n ? n[1] : "Unknown";
|
|
46
|
+
} else if (e.includes("Edg")) {
|
|
47
|
+
r = "Edge";
|
|
48
|
+
const n = e.match(/Edg\/(\d+)/);
|
|
49
|
+
t = n ? n[1] : "Unknown";
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
name: r,
|
|
53
|
+
version: t,
|
|
54
|
+
platform: c()
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
function v() {
|
|
58
|
+
return i() ? {
|
|
59
|
+
hasClipboard: "clipboard" in navigator,
|
|
60
|
+
hasNotifications: "Notification" in window,
|
|
61
|
+
hasGeolocation: "geolocation" in navigator,
|
|
62
|
+
hasCamera: "mediaDevices" in navigator && "getUserMedia" in navigator.mediaDevices,
|
|
63
|
+
hasFileSystem: "showOpenFilePicker" in window,
|
|
64
|
+
hasLocalStorage: (() => {
|
|
65
|
+
try {
|
|
66
|
+
const e = "__storage_test__";
|
|
67
|
+
return localStorage.setItem(e, e), localStorage.removeItem(e), !0;
|
|
68
|
+
} catch {
|
|
69
|
+
return !1;
|
|
70
|
+
}
|
|
71
|
+
})(),
|
|
72
|
+
hasWebGL: (() => {
|
|
73
|
+
try {
|
|
74
|
+
const e = document.createElement("canvas");
|
|
75
|
+
return !!(e.getContext("webgl") || e.getContext("experimental-webgl"));
|
|
76
|
+
} catch {
|
|
77
|
+
return !1;
|
|
78
|
+
}
|
|
79
|
+
})()
|
|
80
|
+
} : {
|
|
81
|
+
hasClipboard: !1,
|
|
82
|
+
hasNotifications: !1,
|
|
83
|
+
hasGeolocation: !1,
|
|
84
|
+
hasCamera: !1,
|
|
85
|
+
hasFileSystem: !1,
|
|
86
|
+
hasLocalStorage: !1,
|
|
87
|
+
hasWebGL: !1
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
function m() {
|
|
91
|
+
if (!i()) return "Unknown";
|
|
92
|
+
const e = navigator.userAgent;
|
|
93
|
+
return e.includes("Win") ? "Windows" : e.includes("Mac") ? "macOS" : e.includes("Linux") ? "Linux" : e.includes("Android") ? "Android" : e.includes("iPhone") || e.includes("iPad") ? "iOS" : "Unknown";
|
|
94
|
+
}
|
|
95
|
+
function a() {
|
|
96
|
+
return i() ? /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(
|
|
97
|
+
navigator.userAgent
|
|
98
|
+
) : !1;
|
|
99
|
+
}
|
|
100
|
+
function s() {
|
|
101
|
+
return i() ? /iPad|Android(?!.*Mobile)/i.test(navigator.userAgent) : !1;
|
|
102
|
+
}
|
|
103
|
+
function d() {
|
|
104
|
+
return !a() && !s();
|
|
105
|
+
}
|
|
106
|
+
function p() {
|
|
107
|
+
return i() ? a() ? "mobile" : s() ? "tablet" : d() ? "desktop" : "unknown" : "unknown";
|
|
108
|
+
}
|
|
109
|
+
function _(e) {
|
|
110
|
+
if (!i()) return !1;
|
|
111
|
+
const t = {
|
|
112
|
+
webgl: () => {
|
|
113
|
+
try {
|
|
114
|
+
const n = document.createElement("canvas");
|
|
115
|
+
return !!(n.getContext("webgl") || n.getContext("experimental-webgl"));
|
|
116
|
+
} catch {
|
|
117
|
+
return !1;
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
webgl2: () => {
|
|
121
|
+
try {
|
|
122
|
+
return !!document.createElement("canvas").getContext("webgl2");
|
|
123
|
+
} catch {
|
|
124
|
+
return !1;
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
webrtc: () => "RTCPeerConnection" in window,
|
|
128
|
+
websockets: () => "WebSocket" in window,
|
|
129
|
+
serviceworker: () => "serviceWorker" in navigator,
|
|
130
|
+
indexeddb: () => "indexedDB" in window,
|
|
131
|
+
localstorage: () => {
|
|
132
|
+
try {
|
|
133
|
+
const n = "__test__";
|
|
134
|
+
return localStorage.setItem(n, n), localStorage.removeItem(n), !0;
|
|
135
|
+
} catch {
|
|
136
|
+
return !1;
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
clipboard: () => "clipboard" in navigator,
|
|
140
|
+
notifications: () => "Notification" in window,
|
|
141
|
+
geolocation: () => "geolocation" in navigator,
|
|
142
|
+
camera: () => "mediaDevices" in navigator && "getUserMedia" in navigator.mediaDevices,
|
|
143
|
+
filesystem: () => "showOpenFilePicker" in window
|
|
144
|
+
}[e.toLowerCase()];
|
|
145
|
+
return t ? t() : !1;
|
|
146
|
+
}
|
|
147
|
+
const h = {
|
|
148
|
+
// Core detection
|
|
149
|
+
detect: c,
|
|
150
|
+
is: {
|
|
151
|
+
browser: i,
|
|
152
|
+
native: u,
|
|
153
|
+
tauri: f,
|
|
154
|
+
node: l,
|
|
155
|
+
ssr: w
|
|
156
|
+
},
|
|
157
|
+
// Device detection
|
|
158
|
+
device: {
|
|
159
|
+
isMobile: a,
|
|
160
|
+
isTablet: s,
|
|
161
|
+
isDesktop: d,
|
|
162
|
+
getType: p
|
|
163
|
+
},
|
|
164
|
+
// Browser info
|
|
165
|
+
browser: {
|
|
166
|
+
getInfo: g,
|
|
167
|
+
getOS: m
|
|
168
|
+
},
|
|
169
|
+
// Capabilities
|
|
170
|
+
capabilities: v,
|
|
171
|
+
supports: _,
|
|
172
|
+
// Constants
|
|
173
|
+
PLATFORMS: o
|
|
174
|
+
};
|
|
175
|
+
export {
|
|
176
|
+
o as PLATFORMS,
|
|
177
|
+
h as default,
|
|
178
|
+
c as detectPlatform,
|
|
179
|
+
g as getBrowserInfo,
|
|
180
|
+
p as getDeviceType,
|
|
181
|
+
m as getOperatingSystem,
|
|
182
|
+
v as getPlatformCapabilities,
|
|
183
|
+
i as isBrowser,
|
|
184
|
+
d as isDesktop,
|
|
185
|
+
a as isMobile,
|
|
186
|
+
u as isNative,
|
|
187
|
+
l as isNode,
|
|
188
|
+
w as isSSR,
|
|
189
|
+
s as isTablet,
|
|
190
|
+
f as isTauri,
|
|
191
|
+
h as platform,
|
|
192
|
+
_ as supportsFeature
|
|
193
|
+
};
|
|
194
|
+
//# sourceMappingURL=platform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform.js","sources":["../src/lib/platform.ts"],"sourcesContent":["/**\n * @fileoverview Platform detection utilities for @bloomneo/uikit\n * @description Detects runtime platform for adaptive component rendering with TypeScript support\n * @package @bloomneo/uikit\n * @file /src/lib/platform.ts\n */\n\n/**\n * Extend Window interface to include Tauri globals\n */\ndeclare global {\n interface Window {\n __TAURI__?: any;\n __TAURI_IPC__?: any;\n __TAURI_INVOKE__?: any;\n }\n}\n\n/**\n * Available platforms enum for type safety\n */\nexport const PLATFORMS = {\n WEB: 'web',\n NATIVE: 'native',\n TAURI: 'tauri',\n UNKNOWN: 'unknown',\n} as const;\n\n/**\n * Platform type derived from PLATFORMS values\n */\nexport type Platform = typeof PLATFORMS[keyof typeof PLATFORMS];\n\n/**\n * Browser information interface\n */\nexport interface BrowserInfo {\n name: string;\n version: string;\n platform: Platform;\n}\n\n/**\n * Platform capabilities interface\n */\nexport interface PlatformCapabilities {\n hasClipboard: boolean;\n hasNotifications: boolean;\n hasGeolocation: boolean;\n hasCamera: boolean;\n hasFileSystem: boolean;\n hasLocalStorage: boolean;\n hasWebGL: boolean;\n}\n\n/**\n * Detects the current platform with type safety\n * @returns {Platform} Platform identifier from PLATFORMS\n */\nexport function detectPlatform(): Platform {\n // Check if we're in a browser environment\n if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n // Check for Tauri\n if (\n window.__TAURI__ !== undefined || \n window.__TAURI_IPC__ !== undefined ||\n window.__TAURI_INVOKE__ !== undefined\n ) {\n return PLATFORMS.TAURI;\n }\n return PLATFORMS.WEB;\n }\n\n // Check for React Native\n if (\n typeof navigator !== 'undefined' && \n navigator.product === 'ReactNative'\n ) {\n return PLATFORMS.NATIVE;\n }\n\n // Check for Node.js environment\n if (\n typeof process !== 'undefined' && \n process.versions && \n process.versions.node\n ) {\n return PLATFORMS.UNKNOWN;\n }\n\n return PLATFORMS.UNKNOWN;\n}\n\n/**\n * Determines if code is running in browser environment\n * @returns {boolean} True if running in browser\n */\nexport function isBrowser(): boolean {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n\n/**\n * Determines if code is running in React Native environment\n * @returns {boolean} True if running in React Native\n */\nexport function isNative(): boolean {\n return (\n typeof navigator !== 'undefined' && \n navigator.product === 'ReactNative'\n );\n}\n\n/**\n * Determines if code is running in Tauri environment\n * @returns {boolean} True if running in Tauri\n */\nexport function isTauri(): boolean {\n return (\n typeof window !== 'undefined' &&\n (\n window.__TAURI__ !== undefined || \n window.__TAURI_IPC__ !== undefined ||\n window.__TAURI_INVOKE__ !== undefined\n )\n );\n}\n\n/**\n * Determines if code is running in Node.js environment\n * @returns {boolean} True if running in Node.js\n */\nexport function isNode(): boolean {\n return (\n typeof process !== 'undefined' && \n process.versions && \n process.versions.node !== undefined\n );\n}\n\n/**\n * Determines if code is running server-side (SSR)\n * @returns {boolean} True if running server-side\n */\nexport function isSSR(): boolean {\n return typeof window === 'undefined';\n}\n\n/**\n * Gets basic browser information\n * @returns {BrowserInfo} Browser information object\n */\nexport function getBrowserInfo(): BrowserInfo {\n if (!isBrowser()) {\n return {\n name: 'Unknown',\n version: 'Unknown',\n platform: PLATFORMS.UNKNOWN,\n };\n }\n\n const userAgent = navigator.userAgent;\n let name = 'Unknown';\n let version = 'Unknown';\n\n // Detect browser name and version\n if (userAgent.includes('Chrome') && !userAgent.includes('Edg')) {\n name = 'Chrome';\n const match = userAgent.match(/Chrome\\/(\\d+)/);\n version = match ? match[1] : 'Unknown';\n } else if (userAgent.includes('Firefox')) {\n name = 'Firefox';\n const match = userAgent.match(/Firefox\\/(\\d+)/);\n version = match ? match[1] : 'Unknown';\n } else if (userAgent.includes('Safari') && !userAgent.includes('Chrome')) {\n name = 'Safari';\n const match = userAgent.match(/Version\\/(\\d+)/);\n version = match ? match[1] : 'Unknown';\n } else if (userAgent.includes('Edg')) {\n name = 'Edge';\n const match = userAgent.match(/Edg\\/(\\d+)/);\n version = match ? match[1] : 'Unknown';\n }\n\n return {\n name,\n version,\n platform: detectPlatform(),\n };\n}\n\n/**\n * Detects platform capabilities\n * @returns {PlatformCapabilities} Object describing platform capabilities\n */\nexport function getPlatformCapabilities(): PlatformCapabilities {\n if (!isBrowser()) {\n return {\n hasClipboard: false,\n hasNotifications: false,\n hasGeolocation: false,\n hasCamera: false,\n hasFileSystem: false,\n hasLocalStorage: false,\n hasWebGL: false,\n };\n }\n\n return {\n hasClipboard: 'clipboard' in navigator,\n hasNotifications: 'Notification' in window,\n hasGeolocation: 'geolocation' in navigator,\n hasCamera: 'mediaDevices' in navigator && 'getUserMedia' in navigator.mediaDevices,\n hasFileSystem: 'showOpenFilePicker' in window,\n hasLocalStorage: (() => {\n try {\n const test = '__storage_test__';\n localStorage.setItem(test, test);\n localStorage.removeItem(test);\n return true;\n } catch {\n return false;\n }\n })(),\n hasWebGL: (() => {\n try {\n const canvas = document.createElement('canvas');\n return !!(\n canvas.getContext('webgl') || \n canvas.getContext('experimental-webgl')\n );\n } catch {\n return false;\n }\n })(),\n };\n}\n\n/**\n * Gets the operating system from user agent\n * @returns {string} Operating system name\n */\nexport function getOperatingSystem(): string {\n if (!isBrowser()) return 'Unknown';\n\n const userAgent = navigator.userAgent;\n \n if (userAgent.includes('Win')) return 'Windows';\n if (userAgent.includes('Mac')) return 'macOS';\n if (userAgent.includes('Linux')) return 'Linux';\n if (userAgent.includes('Android')) return 'Android';\n if (userAgent.includes('iPhone') || userAgent.includes('iPad')) return 'iOS';\n \n return 'Unknown';\n}\n\n/**\n * Checks if the current device is mobile\n * @returns {boolean} True if running on mobile device\n */\nexport function isMobile(): boolean {\n if (!isBrowser()) return false;\n\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n navigator.userAgent\n );\n}\n\n/**\n * Checks if the current device is tablet\n * @returns {boolean} True if running on tablet device\n */\nexport function isTablet(): boolean {\n if (!isBrowser()) return false;\n\n return /iPad|Android(?!.*Mobile)/i.test(navigator.userAgent);\n}\n\n/**\n * Checks if the current device is desktop\n * @returns {boolean} True if running on desktop device\n */\nexport function isDesktop(): boolean {\n return !isMobile() && !isTablet();\n}\n\n/**\n * Gets device type\n * @returns {'mobile' | 'tablet' | 'desktop' | 'unknown'} Device type\n */\nexport function getDeviceType(): 'mobile' | 'tablet' | 'desktop' | 'unknown' {\n if (!isBrowser()) return 'unknown';\n \n if (isMobile()) return 'mobile';\n if (isTablet()) return 'tablet';\n if (isDesktop()) return 'desktop';\n \n return 'unknown';\n}\n\n/**\n * Checks if the current browser supports a specific feature\n * @param {string} feature - Feature name to check\n * @returns {boolean} True if feature is supported\n */\nexport function supportsFeature(feature: string): boolean {\n if (!isBrowser()) return false;\n\n const features: Record<string, () => boolean> = {\n webgl: () => {\n try {\n const canvas = document.createElement('canvas');\n return !!(canvas.getContext('webgl') || canvas.getContext('experimental-webgl'));\n } catch {\n return false;\n }\n },\n webgl2: () => {\n try {\n const canvas = document.createElement('canvas');\n return !!canvas.getContext('webgl2');\n } catch {\n return false;\n }\n },\n webrtc: () => 'RTCPeerConnection' in window,\n websockets: () => 'WebSocket' in window,\n serviceworker: () => 'serviceWorker' in navigator,\n indexeddb: () => 'indexedDB' in window,\n localstorage: () => {\n try {\n const test = '__test__';\n localStorage.setItem(test, test);\n localStorage.removeItem(test);\n return true;\n } catch {\n return false;\n }\n },\n clipboard: () => 'clipboard' in navigator,\n notifications: () => 'Notification' in window,\n geolocation: () => 'geolocation' in navigator,\n camera: () => 'mediaDevices' in navigator && 'getUserMedia' in navigator.mediaDevices,\n filesystem: () => 'showOpenFilePicker' in window,\n };\n\n const checker = features[feature.toLowerCase()];\n return checker ? checker() : false;\n}\n\n/**\n * Platform-specific utility object\n */\nexport const platform = {\n // Core detection\n detect: detectPlatform,\n is: {\n browser: isBrowser,\n native: isNative,\n tauri: isTauri,\n node: isNode,\n ssr: isSSR,\n },\n \n // Device detection\n device: {\n isMobile,\n isTablet,\n isDesktop,\n getType: getDeviceType,\n },\n \n // Browser info\n browser: {\n getInfo: getBrowserInfo,\n getOS: getOperatingSystem,\n },\n \n // Capabilities\n capabilities: getPlatformCapabilities,\n supports: supportsFeature,\n \n // Constants\n PLATFORMS,\n} as const;\n\n/**\n * Default export for convenience\n */\nexport default platform;"],"names":["PLATFORMS","detectPlatform","isBrowser","isNative","isTauri","isNode","isSSR","getBrowserInfo","userAgent","name","version","match","getPlatformCapabilities","test","canvas","getOperatingSystem","isMobile","isTablet","isDesktop","getDeviceType","supportsFeature","feature","checker","platform"],"mappings":"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"}
|