@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 @@
|
|
|
1
|
+
{"version":3,"file":"useDataTable-CPiBpEg-.js","sources":["../src/hooks/useApi.ts","../src/hooks/useStorage.ts","../src/hooks/useMediaQuery.ts","../src/hooks/useBreakpoint.ts","../src/hooks/useDataTable.ts"],"sourcesContent":["/**\n * useApi Hook - Generic API client for fullstack applications\n * @description Provides a simple interface for making HTTP requests with error handling\n * @package @bloomneo/uikit\n */\n\nimport { useState, useCallback } from 'react';\n\nexport interface ApiResponse<T = any> {\n data: T | null;\n loading: boolean;\n error: string | null;\n}\n\nexport interface ApiOptions {\n baseURL?: string;\n timeout?: number;\n headers?: Record<string, string>;\n}\n\nexport interface UseApiReturn<T = any> extends ApiResponse<T> {\n call: (method: string, endpoint: string, data?: any) => Promise<T>;\n get: (endpoint: string) => Promise<T>;\n post: (endpoint: string, data?: any) => Promise<T>;\n put: (endpoint: string, data?: any) => Promise<T>;\n delete: (endpoint: string) => Promise<T>;\n reset: () => void;\n}\n\n/**\n * Custom hook for making API requests\n */\nexport function useApi<T = any>(options: ApiOptions = {}): UseApiReturn<T> {\n const [data, setData] = useState<T | null>(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n // Auto-detect base URL (dev vs prod)\n const baseURL = options.baseURL ||\n (import.meta.env?.VITE_API_URL ||\n (typeof window !== 'undefined' && window.location.hostname === 'localhost'\n ? 'http://localhost:3000'\n : ''));\n\n const defaultHeaders = {\n 'Content-Type': 'application/json',\n ...options.headers,\n };\n\n const call = useCallback(async (\n method: string,\n endpoint: string,\n data?: any\n ): Promise<T> => {\n setLoading(true);\n setError(null);\n\n try {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), options.timeout || 10000);\n\n const config: RequestInit = {\n method: method.toUpperCase(),\n headers: defaultHeaders,\n signal: controller.signal,\n };\n\n if (data && ['POST', 'PUT', 'PATCH'].includes(method.toUpperCase())) {\n config.body = JSON.stringify(data);\n }\n\n const url = `${baseURL}${endpoint}`;\n const response = await fetch(url, config);\n\n clearTimeout(timeoutId);\n\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}: ${response.statusText}`);\n }\n\n const result = await response.json();\n setData(result);\n return result;\n\n } catch (err: any) {\n let errorMessage = 'Network error occurred';\n\n if (err.name === 'AbortError') {\n errorMessage = 'Request timeout';\n } else if (err.message?.includes('fetch')) {\n errorMessage = 'Backend not available - check if your API server is running';\n } else {\n errorMessage = err.message || 'Unknown error occurred';\n }\n\n setError(errorMessage);\n throw new Error(errorMessage);\n } finally {\n setLoading(false);\n }\n }, [baseURL, options.timeout]);\n\n // Convenience methods\n const get = useCallback((endpoint: string) => call('GET', endpoint), [call]);\n const post = useCallback((endpoint: string, data?: any) => call('POST', endpoint, data), [call]);\n const put = useCallback((endpoint: string, data?: any) => call('PUT', endpoint, data), [call]);\n const deleteMethod = useCallback((endpoint: string) => call('DELETE', endpoint), [call]);\n\n const reset = useCallback(() => {\n setData(null);\n setError(null);\n setLoading(false);\n }, []);\n\n return {\n data,\n loading,\n error,\n call,\n get,\n post,\n put,\n delete: deleteMethod,\n reset,\n };\n}\n\n/**\n * Hook for checking backend connectivity\n */\nexport function useBackendStatus() {\n const { data, loading, error, get } = useApi<{ status: string; timestamp: string }>();\n\n const checkStatus = useCallback(async () => {\n try {\n await get('/health');\n return true;\n } catch {\n return false;\n }\n }, [get]);\n\n return {\n isConnected: data?.status === 'ok',\n loading,\n error,\n checkStatus,\n lastCheck: data?.timestamp,\n };\n}","/**\n * useLocalStorage Hook - Persistent state with localStorage\n * @module @bloomneo/uikit\n * @file src/hooks/useStorage.ts\n */\n\nimport { useState, useEffect, useCallback } from 'react';\n\n/**\n * @llm-rule Storage hook for persisting state to localStorage\n * Handles SSR, JSON parsing errors, and storage unavailability\n */\n\nexport type UseLocalStorageReturn<T> = [\n value: T,\n setValue: (value: T | ((prev: T) => T)) => void,\n removeValue: () => void\n];\n\n/**\n * Hook to persist state in localStorage with automatic JSON serialization\n *\n * @param key - localStorage key\n * @param initialValue - Default value if no stored value exists\n * @returns [value, setValue, removeValue] tuple\n *\n * @example\n * ```tsx\n * const [user, setUser, removeUser] = useLocalStorage('user', null);\n * const [settings, setSettings] = useLocalStorage('settings', { theme: 'light' });\n *\n * // Update value\n * setUser({ name: 'John', email: 'john@example.com' });\n *\n * // Remove value (resets to initialValue)\n * removeUser();\n * ```\n */\nexport function useLocalStorage<T>(\n key: string,\n initialValue: T\n): UseLocalStorageReturn<T> {\n // Get from local storage then parse stored json or return initialValue\n const [storedValue, setStoredValue] = useState<T>(() => {\n if (typeof window === 'undefined') {\n // SSR: return initial value\n return initialValue;\n }\n\n try {\n const item = window.localStorage.getItem(key);\n return item ? JSON.parse(item) : initialValue;\n } catch (error) {\n console.warn(`Error reading localStorage key \"${key}\":`, error);\n return initialValue;\n }\n });\n\n // Return a wrapped version of useState's setter function that persists the new value to localStorage\n const setValue = useCallback(\n (value: T | ((prev: T) => T)) => {\n try {\n // Allow value to be a function so we have the same API as useState\n const valueToStore = value instanceof Function ? value(storedValue) : value;\n\n // Save state\n setStoredValue(valueToStore);\n\n // Save to local storage\n if (typeof window !== 'undefined') {\n window.localStorage.setItem(key, JSON.stringify(valueToStore));\n }\n } catch (error) {\n console.error(`Error setting localStorage key \"${key}\":`, error);\n }\n },\n [key, storedValue]\n );\n\n // Remove value from localStorage and reset to initial value\n const removeValue = useCallback(() => {\n try {\n setStoredValue(initialValue);\n if (typeof window !== 'undefined') {\n window.localStorage.removeItem(key);\n }\n } catch (error) {\n console.error(`Error removing localStorage key \"${key}\":`, error);\n }\n }, [key, initialValue]);\n\n // Listen for storage changes from other tabs\n useEffect(() => {\n if (typeof window === 'undefined') return;\n\n const handleStorageChange = (e: StorageEvent) => {\n if (e.key === key && e.newValue !== null) {\n try {\n setStoredValue(JSON.parse(e.newValue));\n } catch (error) {\n console.warn(`Error parsing storage event for key \"${key}\":`, error);\n }\n } else if (e.key === key && e.newValue === null) {\n // Key was removed\n setStoredValue(initialValue);\n }\n };\n\n window.addEventListener('storage', handleStorageChange);\n return () => window.removeEventListener('storage', handleStorageChange);\n }, [key, initialValue]);\n\n return [storedValue, setValue, removeValue];\n}","/**\n * `useMediaQuery` — subscribe a component to a CSS media query.\n *\n * SSR-safe (returns `false` on the server, hydrates correctly on the client).\n * Cleans up its listener on unmount. No external dependencies.\n *\n * @example\n * const isWide = useMediaQuery('(min-width: 1024px)');\n * const reduced = useMediaQuery('(prefers-reduced-motion: reduce)');\n */\n\nimport { useEffect, useState } from 'react';\n\nexport function useMediaQuery(query: string): boolean {\n const [matches, setMatches] = useState<boolean>(() => {\n if (typeof window === 'undefined') return false;\n return window.matchMedia(query).matches;\n });\n\n useEffect(() => {\n if (typeof window === 'undefined') return;\n const mql = window.matchMedia(query);\n\n // Sync once in case the initial render value is stale (StrictMode, hydration).\n setMatches(mql.matches);\n\n const handler = (e: MediaQueryListEvent) => setMatches(e.matches);\n\n // `addEventListener` is the modern API; the older `addListener` is kept for\n // Safari < 14 compatibility, which UIKit still supports.\n if (mql.addEventListener) {\n mql.addEventListener('change', handler);\n return () => mql.removeEventListener('change', handler);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (mql as any).addListener(handler);\n return () => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (mql as any).removeListener(handler);\n };\n }, [query]);\n\n return matches;\n}\n","/**\n * `useBreakpoint` — read responsive breakpoints from React.\n *\n * Mirrors Tailwind v4's default breakpoint scale (sm/md/lg/xl/2xl) so that\n * `useBreakpoint('md')` and the `md:` Tailwind utility class always agree\n * about what \"medium\" means. If you customize Tailwind's screens, also pass\n * the override map via `BREAKPOINTS` (see below).\n *\n * @example\n * const isAtLeastMd = useBreakpoint('md'); // true when ≥ 768px\n * const isMobile = useBreakpoint('md', 'down'); // true when < 768px\n * const isExactly = useBreakpoint('lg', 'only'); // true on lg, not xl+\n */\n\nimport { useMediaQuery } from './useMediaQuery';\n\nexport const BREAKPOINTS = {\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n '2xl': 1536,\n} as const;\n\nexport type Breakpoint = keyof typeof BREAKPOINTS;\nexport type BreakpointDirection = 'up' | 'down' | 'only';\n\n/**\n * Resolve a breakpoint to a media query string. Exposed so consumers can\n * compose it with `useMediaQuery` directly when they need exotic queries.\n */\nexport function breakpointQuery(\n breakpoint: Breakpoint,\n direction: BreakpointDirection = 'up'\n): string {\n const min = BREAKPOINTS[breakpoint];\n const order: Breakpoint[] = ['sm', 'md', 'lg', 'xl', '2xl'];\n const next = order[order.indexOf(breakpoint) + 1];\n\n if (direction === 'up') return '(min-width: ' + min + 'px)';\n if (direction === 'down') return '(max-width: ' + (min - 1) + 'px)';\n // 'only': inclusive lower, exclusive upper.\n if (!next) return '(min-width: ' + min + 'px)';\n return '(min-width: ' + min + 'px) and (max-width: ' + (BREAKPOINTS[next] - 1) + 'px)';\n}\n\nexport function useBreakpoint(\n breakpoint: Breakpoint,\n direction: BreakpointDirection = 'up'\n): boolean {\n return useMediaQuery(breakpointQuery(breakpoint, direction));\n}\n\n/**\n * Returns the largest matching breakpoint, or `null` for screens narrower\n * than `sm`. Handy for switching layouts based on the active breakpoint\n * without composing five separate `useBreakpoint` calls.\n */\nexport function useActiveBreakpoint(): Breakpoint | null {\n const sm = useBreakpoint('sm');\n const md = useBreakpoint('md');\n const lg = useBreakpoint('lg');\n const xl = useBreakpoint('xl');\n const xxl = useBreakpoint('2xl');\n\n if (xxl) return '2xl';\n if (xl) return 'xl';\n if (lg) return 'lg';\n if (md) return 'md';\n if (sm) return 'sm';\n return null;\n}\n","/**\n * `useDataTable` — headless table state for @bloomneo/uikit.\n *\n * Provides the search / sort / filter / pagination state machine that the\n * built-in `<DataTable>` component uses internally, in case you want to ship\n * a custom-rendered table (treegrid, virtualized, gantt) but still benefit\n * from the standard state shape.\n *\n * @example\n * const table = useDataTable({\n * data: users,\n * columns: [{ id: 'name', accessorKey: 'name' }],\n * pageSize: 25,\n * });\n *\n * <Input value={table.search} onChange={(e) => table.setSearch(e.target.value)} />\n * {table.rows.map((row) => <CustomRow key={row.id} row={row} />)}\n */\n\nimport { useCallback, useMemo, useState } from 'react';\nimport { requireArrayProp } from '@/lib/errors';\nimport type {\n DataTableColumn,\n DataTableFilterValue,\n FilterConfig,\n SortConfig,\n} from '@/components/ui/data-table';\n\nexport interface UseDataTableOptions<T> {\n data: T[];\n columns: DataTableColumn<T>[];\n /** Initial page (0-indexed). Default: 0. */\n initialPage?: number;\n /** Page size. Default: 10. */\n pageSize?: number;\n /** Initial search string. Default: \"\". */\n initialSearch?: string;\n /** Initial sort config. */\n initialSort?: SortConfig[];\n /** Row id extractor. Default: index.toString(). */\n getRowId?: (row: T, index: number) => string;\n}\n\nexport interface UseDataTableReturn<T> {\n /** The visible rows for the current page after search/filter/sort. */\n rows: T[];\n /** All rows after search/filter/sort but before pagination. */\n filteredRows: T[];\n /** Stable string id for each visible row. */\n getRowId: (row: T, index: number) => string;\n\n // search\n search: string;\n setSearch: (value: string) => void;\n\n // sort\n sort: SortConfig[];\n setSort: (value: SortConfig[]) => void;\n toggleSort: (columnId: string) => void;\n\n // filter\n filters: FilterConfig;\n setFilter: (columnId: string, value: DataTableFilterValue | null) => void;\n clearFilters: () => void;\n\n // pagination\n page: number;\n pageSize: number;\n pageCount: number;\n setPage: (page: number) => void;\n nextPage: () => void;\n prevPage: () => void;\n canNextPage: boolean;\n canPrevPage: boolean;\n}\n\nexport function useDataTable<T>(options: UseDataTableOptions<T>): UseDataTableReturn<T> {\n const {\n columns,\n initialPage = 0,\n pageSize = 10,\n initialSearch = '',\n initialSort = [],\n getRowId = (_row, index) => String(index),\n } = options;\n const data = requireArrayProp<T>('useDataTable', 'data', options.data,\n 'Pass an array (use [] while loading instead of undefined).');\n\n const [search, setSearch] = useState(initialSearch);\n const [sort, setSort] = useState<SortConfig[]>(initialSort);\n const [filters, setFilters] = useState<FilterConfig>({});\n const [page, setPage] = useState(initialPage);\n\n const readCell = useCallback(\n (row: T, column: DataTableColumn<T>): unknown => {\n if (column.accessor) return column.accessor(row);\n if (column.accessorKey) return (row as Record<string, unknown>)[column.accessorKey as string];\n return undefined;\n },\n []\n );\n\n const filteredRows = useMemo(() => {\n let result = data;\n\n if (search) {\n const needle = search.toLowerCase();\n result = result.filter((row) =>\n columns.some((column) => {\n const value = readCell(row, column);\n return String(value ?? '').toLowerCase().includes(needle);\n })\n );\n }\n\n Object.entries(filters).forEach(([columnId, filter]) => {\n const column = columns.find((c) => c.id === columnId);\n if (!column) return;\n result = result.filter((row) => {\n const value = readCell(row, column);\n const fv = filter.value;\n switch (filter.operator) {\n case 'equals':\n return value === fv;\n case 'startsWith':\n return String(value ?? '').toLowerCase().startsWith(String(fv ?? '').toLowerCase());\n case 'endsWith':\n return String(value ?? '').toLowerCase().endsWith(String(fv ?? '').toLowerCase());\n case 'gt':\n return Number(value) > Number(fv);\n case 'lt':\n return Number(value) < Number(fv);\n case 'gte':\n return Number(value) >= Number(fv);\n case 'lte':\n return Number(value) <= Number(fv);\n case 'contains':\n default:\n return String(value ?? '').toLowerCase().includes(String(fv ?? '').toLowerCase());\n }\n });\n });\n\n if (sort.length > 0) {\n const sorted = [...result];\n sorted.sort((a, b) => {\n for (const s of sort) {\n const column = columns.find((c) => c.id === s.key);\n if (!column) continue;\n const av = readCell(a, column);\n const bv = readCell(b, column);\n let cmp = 0;\n if (column.sortFn) cmp = column.sortFn(av, bv);\n else if (column.dataType === 'number') cmp = Number(av) - Number(bv);\n else if (column.dataType === 'date') cmp = new Date(av as string).getTime() - new Date(bv as string).getTime();\n else cmp = String(av ?? '').localeCompare(String(bv ?? ''));\n if (cmp !== 0) return s.direction === 'asc' ? cmp : -cmp;\n }\n return 0;\n });\n result = sorted;\n }\n\n return result;\n }, [data, search, sort, filters, columns, readCell]);\n\n const pageCount = Math.max(1, Math.ceil(filteredRows.length / pageSize));\n const safePage = Math.min(page, pageCount - 1);\n const rows = useMemo(\n () => filteredRows.slice(safePage * pageSize, (safePage + 1) * pageSize),\n [filteredRows, safePage, pageSize]\n );\n\n const toggleSort = useCallback(\n (columnId: string) =>\n setSort((prev) => {\n const existing = prev.find((s) => s.key === columnId);\n if (!existing) return [...prev, { key: columnId, direction: 'asc' }];\n if (existing.direction === 'asc')\n return prev.map((s) => (s.key === columnId ? { ...s, direction: 'desc' } : s));\n return prev.filter((s) => s.key !== columnId);\n }),\n []\n );\n\n const setFilter = useCallback(\n (columnId: string, value: DataTableFilterValue | null) =>\n setFilters((prev) => {\n if (value === null || value === '' || value === undefined) {\n const next = { ...prev };\n delete next[columnId];\n return next;\n }\n const column = columns.find((c) => c.id === columnId);\n return {\n ...prev,\n [columnId]: { type: column?.filterType ?? 'text', value, operator: 'contains' },\n };\n }),\n [columns]\n );\n\n return {\n rows,\n filteredRows,\n getRowId,\n search,\n setSearch,\n sort,\n setSort,\n toggleSort,\n filters,\n setFilter,\n clearFilters: () => setFilters({}),\n page: safePage,\n pageSize,\n pageCount,\n setPage,\n nextPage: () => setPage((p) => Math.min(p + 1, pageCount - 1)),\n prevPage: () => setPage((p) => Math.max(p - 1, 0)),\n canNextPage: safePage < pageCount - 1,\n canPrevPage: safePage > 0,\n };\n}\n"],"names":["useApi","options","data","setData","useState","loading","setLoading","error","setError","baseURL","__vite_import_meta_env__","defaultHeaders","call","useCallback","method","endpoint","controller","timeoutId","config","url","response","result","err","errorMessage","get","post","put","deleteMethod","reset","useBackendStatus","checkStatus","useLocalStorage","key","initialValue","storedValue","setStoredValue","item","setValue","value","valueToStore","removeValue","useEffect","handleStorageChange","e","useMediaQuery","query","matches","setMatches","mql","handler","BREAKPOINTS","breakpointQuery","breakpoint","direction","min","order","next","useBreakpoint","useActiveBreakpoint","sm","md","lg","xl","useDataTable","columns","initialPage","pageSize","initialSearch","initialSort","getRowId","_row","index","requireArrayProp","search","setSearch","sort","setSort","filters","setFilters","page","setPage","readCell","row","column","filteredRows","useMemo","needle","columnId","filter","c","fv","sorted","a","b","s","av","bv","cmp","pageCount","safePage","rows","toggleSort","prev","existing","setFilter","p"],"mappings":"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"}
|