@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,288 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Button } from '@bloomneo/uikit/button';
|
|
3
|
+
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@bloomneo/uikit/card';
|
|
4
|
+
import { Badge } from '@bloomneo/uikit/badge';
|
|
5
|
+
import { Tabs, TabsContent, TabsList, TabsTrigger } from '@bloomneo/uikit/tabs';
|
|
6
|
+
import { SEO } from '../components';
|
|
7
|
+
|
|
8
|
+
export const ComponentsPage: React.FC = () => {
|
|
9
|
+
return (
|
|
10
|
+
<>
|
|
11
|
+
<SEO
|
|
12
|
+
title="Components - UIKit Multi-Page Demo"
|
|
13
|
+
description="Comprehensive showcase of UIKit's production-ready React components with examples and variations"
|
|
14
|
+
/>
|
|
15
|
+
<div className="space-y-8">
|
|
16
|
+
<div className="text-center space-y-4">
|
|
17
|
+
<h1 className="voila-heading text-4xl">Component Library</h1>
|
|
18
|
+
<p className="voila-subheading text-muted-foreground max-w-3xl mx-auto">
|
|
19
|
+
Comprehensive showcase of UIKit's production-ready React components with examples and variations
|
|
20
|
+
</p>
|
|
21
|
+
</div>
|
|
22
|
+
|
|
23
|
+
<Tabs defaultValue="buttons" className="space-y-6">
|
|
24
|
+
<TabsList className="grid w-full grid-cols-4">
|
|
25
|
+
<TabsTrigger value="buttons">Buttons</TabsTrigger>
|
|
26
|
+
<TabsTrigger value="cards">Cards</TabsTrigger>
|
|
27
|
+
<TabsTrigger value="forms">Forms</TabsTrigger>
|
|
28
|
+
<TabsTrigger value="display">Display</TabsTrigger>
|
|
29
|
+
</TabsList>
|
|
30
|
+
|
|
31
|
+
<TabsContent value="buttons" className="space-y-6">
|
|
32
|
+
<Card>
|
|
33
|
+
<CardHeader>
|
|
34
|
+
<CardTitle className="flex items-center gap-2">
|
|
35
|
+
<div className="w-8 h-8 bg-primary/10 rounded flex items-center justify-center">
|
|
36
|
+
🔘
|
|
37
|
+
</div>
|
|
38
|
+
Button Variants
|
|
39
|
+
</CardTitle>
|
|
40
|
+
<CardDescription>Interactive elements with multiple variants, sizes, and states</CardDescription>
|
|
41
|
+
</CardHeader>
|
|
42
|
+
<CardContent className="space-y-6">
|
|
43
|
+
<div className="space-y-4">
|
|
44
|
+
<h4 className="text-sm font-medium text-muted-foreground">Primary Actions</h4>
|
|
45
|
+
<div className="flex flex-wrap gap-3">
|
|
46
|
+
<Button size="lg">Primary</Button>
|
|
47
|
+
<Button variant="secondary" size="lg">Secondary</Button>
|
|
48
|
+
<Button variant="outline" size="lg">Outline</Button>
|
|
49
|
+
<Button variant="ghost" size="lg">Ghost</Button>
|
|
50
|
+
<Button variant="destructive" size="lg">Destructive</Button>
|
|
51
|
+
</div>
|
|
52
|
+
</div>
|
|
53
|
+
|
|
54
|
+
<div className="space-y-4">
|
|
55
|
+
<h4 className="text-sm font-medium text-muted-foreground">Size Variations</h4>
|
|
56
|
+
<div className="flex flex-wrap items-center gap-3">
|
|
57
|
+
<Button size="sm">Small</Button>
|
|
58
|
+
<Button>Default</Button>
|
|
59
|
+
<Button size="lg">Large</Button>
|
|
60
|
+
</div>
|
|
61
|
+
</div>
|
|
62
|
+
|
|
63
|
+
<div className="space-y-4">
|
|
64
|
+
<h4 className="text-sm font-medium text-muted-foreground">States & Loading</h4>
|
|
65
|
+
<div className="flex flex-wrap gap-3">
|
|
66
|
+
<Button>Normal</Button>
|
|
67
|
+
<Button disabled>Disabled</Button>
|
|
68
|
+
<Button className="opacity-50 cursor-not-allowed">Loading...</Button>
|
|
69
|
+
</div>
|
|
70
|
+
</div>
|
|
71
|
+
</CardContent>
|
|
72
|
+
</Card>
|
|
73
|
+
|
|
74
|
+
<Card>
|
|
75
|
+
<CardHeader>
|
|
76
|
+
<CardTitle>Badges & Labels</CardTitle>
|
|
77
|
+
<CardDescription>Small status indicators and labels</CardDescription>
|
|
78
|
+
</CardHeader>
|
|
79
|
+
<CardContent className="space-y-4">
|
|
80
|
+
<div className="flex flex-wrap gap-3">
|
|
81
|
+
<Badge>Default</Badge>
|
|
82
|
+
<Badge variant="secondary">Secondary</Badge>
|
|
83
|
+
<Badge variant="destructive">Error</Badge>
|
|
84
|
+
<Badge variant="outline">Outline</Badge>
|
|
85
|
+
</div>
|
|
86
|
+
</CardContent>
|
|
87
|
+
</Card>
|
|
88
|
+
</TabsContent>
|
|
89
|
+
|
|
90
|
+
<TabsContent value="cards" className="space-y-6">
|
|
91
|
+
<Card>
|
|
92
|
+
<CardHeader>
|
|
93
|
+
<CardTitle className="flex items-center gap-2">
|
|
94
|
+
<div className="w-8 h-8 bg-secondary/10 rounded flex items-center justify-center">
|
|
95
|
+
📋
|
|
96
|
+
</div>
|
|
97
|
+
Card Layouts
|
|
98
|
+
</CardTitle>
|
|
99
|
+
<CardDescription>Flexible containers for displaying content and actions</CardDescription>
|
|
100
|
+
</CardHeader>
|
|
101
|
+
<CardContent>
|
|
102
|
+
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
|
|
103
|
+
<Card className="border-2">
|
|
104
|
+
<CardHeader>
|
|
105
|
+
<CardTitle className="text-lg">Simple Card</CardTitle>
|
|
106
|
+
<CardDescription>Basic card with header and content</CardDescription>
|
|
107
|
+
</CardHeader>
|
|
108
|
+
<CardContent>
|
|
109
|
+
<p className="text-sm text-muted-foreground">
|
|
110
|
+
Cards provide a flexible container for content with consistent spacing and styling.
|
|
111
|
+
</p>
|
|
112
|
+
</CardContent>
|
|
113
|
+
</Card>
|
|
114
|
+
|
|
115
|
+
<Card className="border-2 bg-primary/5">
|
|
116
|
+
<CardHeader>
|
|
117
|
+
<CardTitle className="text-lg">Action Card</CardTitle>
|
|
118
|
+
<CardDescription>Card with interactive elements</CardDescription>
|
|
119
|
+
</CardHeader>
|
|
120
|
+
<CardContent className="space-y-3">
|
|
121
|
+
<p className="text-sm text-muted-foreground">
|
|
122
|
+
Enhanced with buttons and other interactive components.
|
|
123
|
+
</p>
|
|
124
|
+
<Button size="sm" className="w-full">Take Action</Button>
|
|
125
|
+
</CardContent>
|
|
126
|
+
</Card>
|
|
127
|
+
|
|
128
|
+
<Card className="border-2 border-dashed">
|
|
129
|
+
<CardHeader>
|
|
130
|
+
<CardTitle className="text-lg">Custom Styled</CardTitle>
|
|
131
|
+
<CardDescription>Customizable appearance</CardDescription>
|
|
132
|
+
</CardHeader>
|
|
133
|
+
<CardContent>
|
|
134
|
+
<p className="text-sm text-muted-foreground">
|
|
135
|
+
Easy to customize with different borders, backgrounds, and layouts.
|
|
136
|
+
</p>
|
|
137
|
+
</CardContent>
|
|
138
|
+
</Card>
|
|
139
|
+
</div>
|
|
140
|
+
</CardContent>
|
|
141
|
+
</Card>
|
|
142
|
+
</TabsContent>
|
|
143
|
+
|
|
144
|
+
<TabsContent value="forms" className="space-y-6">
|
|
145
|
+
<Card>
|
|
146
|
+
<CardHeader>
|
|
147
|
+
<CardTitle className="flex items-center gap-2">
|
|
148
|
+
<div className="w-8 h-8 bg-accent/10 rounded flex items-center justify-center">
|
|
149
|
+
📝
|
|
150
|
+
</div>
|
|
151
|
+
Form Controls
|
|
152
|
+
</CardTitle>
|
|
153
|
+
<CardDescription>Input fields and form controls with consistent styling</CardDescription>
|
|
154
|
+
</CardHeader>
|
|
155
|
+
<CardContent className="space-y-6">
|
|
156
|
+
<div className="space-y-4">
|
|
157
|
+
<h4 className="text-sm font-medium text-muted-foreground">Text Inputs</h4>
|
|
158
|
+
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
|
|
159
|
+
<div className="space-y-2">
|
|
160
|
+
<label className="text-sm font-medium">Standard Input</label>
|
|
161
|
+
<input
|
|
162
|
+
type="text"
|
|
163
|
+
placeholder="Enter your text"
|
|
164
|
+
className="w-full p-3 bg-background border border-input rounded-lg focus:outline-none focus:ring-2 focus:ring-ring"
|
|
165
|
+
/>
|
|
166
|
+
</div>
|
|
167
|
+
<div className="space-y-2">
|
|
168
|
+
<label className="text-sm font-medium">Email Input</label>
|
|
169
|
+
<input
|
|
170
|
+
type="email"
|
|
171
|
+
placeholder="your@email.com"
|
|
172
|
+
className="w-full p-3 bg-background border border-input rounded-lg focus:outline-none focus:ring-2 focus:ring-ring"
|
|
173
|
+
/>
|
|
174
|
+
</div>
|
|
175
|
+
</div>
|
|
176
|
+
</div>
|
|
177
|
+
|
|
178
|
+
<div className="space-y-4">
|
|
179
|
+
<h4 className="text-sm font-medium text-muted-foreground">Selection Controls</h4>
|
|
180
|
+
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
|
|
181
|
+
<div className="space-y-2">
|
|
182
|
+
<label className="text-sm font-medium">Dropdown Select</label>
|
|
183
|
+
<select className="w-full p-3 bg-background border border-input rounded-lg focus:outline-none focus:ring-2 focus:ring-ring">
|
|
184
|
+
<option>Choose an option</option>
|
|
185
|
+
<option>Option 1</option>
|
|
186
|
+
<option>Option 2</option>
|
|
187
|
+
<option>Option 3</option>
|
|
188
|
+
</select>
|
|
189
|
+
</div>
|
|
190
|
+
<div className="space-y-2">
|
|
191
|
+
<label className="text-sm font-medium">Multi-select</label>
|
|
192
|
+
<select multiple size={3} className="w-full p-3 bg-background border border-input rounded-lg focus:outline-none focus:ring-2 focus:ring-ring">
|
|
193
|
+
<option>Option A</option>
|
|
194
|
+
<option>Option B</option>
|
|
195
|
+
<option>Option C</option>
|
|
196
|
+
</select>
|
|
197
|
+
</div>
|
|
198
|
+
</div>
|
|
199
|
+
</div>
|
|
200
|
+
|
|
201
|
+
<div className="space-y-4">
|
|
202
|
+
<h4 className="text-sm font-medium text-muted-foreground">Text Areas</h4>
|
|
203
|
+
<div className="space-y-2">
|
|
204
|
+
<label className="text-sm font-medium">Message</label>
|
|
205
|
+
<textarea
|
|
206
|
+
placeholder="Enter your message here..."
|
|
207
|
+
rows={4}
|
|
208
|
+
className="w-full p-3 bg-background border border-input rounded-lg focus:outline-none focus:ring-2 focus:ring-ring resize-none"
|
|
209
|
+
/>
|
|
210
|
+
</div>
|
|
211
|
+
</div>
|
|
212
|
+
</CardContent>
|
|
213
|
+
</Card>
|
|
214
|
+
</TabsContent>
|
|
215
|
+
|
|
216
|
+
<TabsContent value="display" className="space-y-6">
|
|
217
|
+
<Card>
|
|
218
|
+
<CardHeader>
|
|
219
|
+
<CardTitle className="flex items-center gap-2">
|
|
220
|
+
<div className="w-8 h-8 bg-chart1/10 rounded flex items-center justify-center">
|
|
221
|
+
📊
|
|
222
|
+
</div>
|
|
223
|
+
Data Display
|
|
224
|
+
</CardTitle>
|
|
225
|
+
<CardDescription>Components for presenting structured information</CardDescription>
|
|
226
|
+
</CardHeader>
|
|
227
|
+
<CardContent className="space-y-6">
|
|
228
|
+
<div className="space-y-4">
|
|
229
|
+
<h4 className="text-sm font-medium text-muted-foreground">Chart Colors</h4>
|
|
230
|
+
<div className="grid grid-cols-5 gap-3">
|
|
231
|
+
{[1, 2, 3, 4, 5].map(i => (
|
|
232
|
+
<div key={i} className="text-center">
|
|
233
|
+
<div className={`w-full h-16 rounded-lg mb-2 bg-chart${i} shadow-sm`} />
|
|
234
|
+
<div className="text-xs text-muted-foreground font-medium">Chart {i}</div>
|
|
235
|
+
</div>
|
|
236
|
+
))}
|
|
237
|
+
</div>
|
|
238
|
+
</div>
|
|
239
|
+
|
|
240
|
+
<div className="space-y-4">
|
|
241
|
+
<h4 className="text-sm font-medium text-muted-foreground">Status Indicators</h4>
|
|
242
|
+
<div className="flex flex-wrap gap-3">
|
|
243
|
+
<div className="inline-flex items-center gap-2 bg-green-100 text-green-800 px-3 py-1 rounded-full text-sm">
|
|
244
|
+
<div className="w-2 h-2 bg-green-600 rounded-full"></div>
|
|
245
|
+
Active
|
|
246
|
+
</div>
|
|
247
|
+
<div className="inline-flex items-center gap-2 bg-yellow-100 text-yellow-800 px-3 py-1 rounded-full text-sm">
|
|
248
|
+
<div className="w-2 h-2 bg-yellow-600 rounded-full"></div>
|
|
249
|
+
Pending
|
|
250
|
+
</div>
|
|
251
|
+
<div className="inline-flex items-center gap-2 bg-red-100 text-red-800 px-3 py-1 rounded-full text-sm">
|
|
252
|
+
<div className="w-2 h-2 bg-red-600 rounded-full"></div>
|
|
253
|
+
Inactive
|
|
254
|
+
</div>
|
|
255
|
+
<div className="inline-flex items-center gap-2 bg-blue-100 text-blue-800 px-3 py-1 rounded-full text-sm">
|
|
256
|
+
<div className="w-2 h-2 bg-blue-600 rounded-full"></div>
|
|
257
|
+
Processing
|
|
258
|
+
</div>
|
|
259
|
+
</div>
|
|
260
|
+
</div>
|
|
261
|
+
</CardContent>
|
|
262
|
+
</Card>
|
|
263
|
+
|
|
264
|
+
<Card>
|
|
265
|
+
<CardHeader>
|
|
266
|
+
<CardTitle>Typography Scale</CardTitle>
|
|
267
|
+
<CardDescription>Text hierarchy and styling examples</CardDescription>
|
|
268
|
+
</CardHeader>
|
|
269
|
+
<CardContent className="space-y-4">
|
|
270
|
+
<div className="space-y-3">
|
|
271
|
+
<h1 className="text-3xl font-bold">Heading 1 - Main Title</h1>
|
|
272
|
+
<h2 className="text-2xl font-bold">Heading 2 - Section Title</h2>
|
|
273
|
+
<h3 className="text-xl font-bold">Heading 3 - Subsection</h3>
|
|
274
|
+
<h4 className="text-lg font-semibold">Heading 4 - Component Title</h4>
|
|
275
|
+
<p className="text-base">Body text - Lorem ipsum dolor sit amet consectetur adipiscing elit.</p>
|
|
276
|
+
<p className="text-sm text-muted-foreground">Small text for captions, metadata, and secondary information.</p>
|
|
277
|
+
<code className="text-sm bg-muted px-2 py-1 rounded font-mono">Code snippet example</code>
|
|
278
|
+
</div>
|
|
279
|
+
</CardContent>
|
|
280
|
+
</Card>
|
|
281
|
+
</TabsContent>
|
|
282
|
+
</Tabs>
|
|
283
|
+
</div>
|
|
284
|
+
</>
|
|
285
|
+
);
|
|
286
|
+
};
|
|
287
|
+
|
|
288
|
+
export default ComponentsPage;
|
|
@@ -0,0 +1,348 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { Button } from '@bloomneo/uikit/button';
|
|
3
|
+
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@bloomneo/uikit/card';
|
|
4
|
+
import { Badge } from '@bloomneo/uikit/badge';
|
|
5
|
+
import {
|
|
6
|
+
Mail,
|
|
7
|
+
MessageSquare,
|
|
8
|
+
Send,
|
|
9
|
+
CheckCircle,
|
|
10
|
+
AlertCircle,
|
|
11
|
+
User,
|
|
12
|
+
Building,
|
|
13
|
+
Phone
|
|
14
|
+
} from 'lucide-react';
|
|
15
|
+
|
|
16
|
+
export const ContactPage: React.FC = () => {
|
|
17
|
+
const [formData, setFormData] = useState({
|
|
18
|
+
name: '',
|
|
19
|
+
email: '',
|
|
20
|
+
company: '',
|
|
21
|
+
phone: '',
|
|
22
|
+
subject: '',
|
|
23
|
+
message: '',
|
|
24
|
+
inquiryType: 'general'
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
const [isSubmitting, setIsSubmitting] = useState(false);
|
|
28
|
+
const [isSubmitted, setIsSubmitted] = useState(false);
|
|
29
|
+
|
|
30
|
+
const handleInputChange = (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement>) => {
|
|
31
|
+
const { name, value } = e.target;
|
|
32
|
+
setFormData(prev => ({
|
|
33
|
+
...prev,
|
|
34
|
+
[name]: value
|
|
35
|
+
}));
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
const handleSubmit = async (e: React.FormEvent) => {
|
|
39
|
+
e.preventDefault();
|
|
40
|
+
setIsSubmitting(true);
|
|
41
|
+
|
|
42
|
+
// Simulate form submission
|
|
43
|
+
await new Promise(resolve => setTimeout(resolve, 2000));
|
|
44
|
+
|
|
45
|
+
setIsSubmitting(false);
|
|
46
|
+
setIsSubmitted(true);
|
|
47
|
+
|
|
48
|
+
// Reset form after 3 seconds
|
|
49
|
+
setTimeout(() => {
|
|
50
|
+
setIsSubmitted(false);
|
|
51
|
+
setFormData({
|
|
52
|
+
name: '',
|
|
53
|
+
email: '',
|
|
54
|
+
company: '',
|
|
55
|
+
phone: '',
|
|
56
|
+
subject: '',
|
|
57
|
+
message: '',
|
|
58
|
+
inquiryType: 'general'
|
|
59
|
+
});
|
|
60
|
+
}, 3000);
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
const inquiryTypes = [
|
|
64
|
+
{ value: 'general', label: 'General Inquiry', icon: MessageSquare },
|
|
65
|
+
{ value: 'support', label: 'Technical Support', icon: AlertCircle },
|
|
66
|
+
{ value: 'business', label: 'Business Partnership', icon: Building },
|
|
67
|
+
{ value: 'feedback', label: 'Feedback & Suggestions', icon: CheckCircle }
|
|
68
|
+
];
|
|
69
|
+
|
|
70
|
+
if (isSubmitted) {
|
|
71
|
+
return (
|
|
72
|
+
<div className="max-w-2xl mx-auto text-center space-y-6 py-16">
|
|
73
|
+
<div className="w-20 h-20 bg-green-100 rounded-full flex items-center justify-center mx-auto">
|
|
74
|
+
<CheckCircle className="h-10 w-10 text-green-600" />
|
|
75
|
+
</div>
|
|
76
|
+
<h1 className="text-3xl font-bold text-green-700">Message Sent!</h1>
|
|
77
|
+
<p className="text-muted-foreground max-w-md mx-auto">
|
|
78
|
+
Thank you for reaching out. We've received your message and will get back to you within 24 hours.
|
|
79
|
+
</p>
|
|
80
|
+
<div className="bg-green-50 border border-green-200 rounded-lg p-4 max-w-md mx-auto">
|
|
81
|
+
<p className="text-sm text-green-700">
|
|
82
|
+
<strong>What's next?</strong><br />
|
|
83
|
+
Our team will review your message and respond via email.
|
|
84
|
+
For urgent matters, please call our support line.
|
|
85
|
+
</p>
|
|
86
|
+
</div>
|
|
87
|
+
</div>
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
return (
|
|
92
|
+
<div className="space-y-8">
|
|
93
|
+
<div className="text-center space-y-4">
|
|
94
|
+
<h1 className="voila-heading text-4xl">Get in Touch</h1>
|
|
95
|
+
<p className="voila-subheading text-muted-foreground max-w-3xl mx-auto">
|
|
96
|
+
Have questions about UIKit? Need support? Want to provide feedback? We'd love to hear from you.
|
|
97
|
+
</p>
|
|
98
|
+
</div>
|
|
99
|
+
|
|
100
|
+
<div className="grid grid-cols-1 lg:grid-cols-3 gap-8">
|
|
101
|
+
{/* Contact Form */}
|
|
102
|
+
<div className="lg:col-span-2">
|
|
103
|
+
<Card>
|
|
104
|
+
<CardHeader>
|
|
105
|
+
<CardTitle className="flex items-center gap-2">
|
|
106
|
+
<Send className="h-5 w-5" />
|
|
107
|
+
Send us a Message
|
|
108
|
+
</CardTitle>
|
|
109
|
+
<CardDescription>
|
|
110
|
+
Fill out the form below and we'll get back to you as soon as possible
|
|
111
|
+
</CardDescription>
|
|
112
|
+
</CardHeader>
|
|
113
|
+
<CardContent>
|
|
114
|
+
<form onSubmit={handleSubmit} className="space-y-6">
|
|
115
|
+
{/* Inquiry Type */}
|
|
116
|
+
<div className="space-y-3">
|
|
117
|
+
<label className="text-sm font-medium">What can we help you with?</label>
|
|
118
|
+
<div className="grid grid-cols-2 gap-3">
|
|
119
|
+
{inquiryTypes.map(type => {
|
|
120
|
+
const Icon = type.icon;
|
|
121
|
+
return (
|
|
122
|
+
<label key={type.value} className="cursor-pointer">
|
|
123
|
+
<input
|
|
124
|
+
type="radio"
|
|
125
|
+
name="inquiryType"
|
|
126
|
+
value={type.value}
|
|
127
|
+
checked={formData.inquiryType === type.value}
|
|
128
|
+
onChange={handleInputChange}
|
|
129
|
+
className="sr-only"
|
|
130
|
+
/>
|
|
131
|
+
<div className={`p-3 border-2 rounded-lg text-center transition-all ${
|
|
132
|
+
formData.inquiryType === type.value
|
|
133
|
+
? 'border-primary bg-primary/5 text-primary'
|
|
134
|
+
: 'border-input hover:border-primary/30'
|
|
135
|
+
}`}>
|
|
136
|
+
<Icon className="h-5 w-5 mx-auto mb-2" />
|
|
137
|
+
<div className="text-sm font-medium">{type.label}</div>
|
|
138
|
+
</div>
|
|
139
|
+
</label>
|
|
140
|
+
);
|
|
141
|
+
})}
|
|
142
|
+
</div>
|
|
143
|
+
</div>
|
|
144
|
+
|
|
145
|
+
{/* Personal Information */}
|
|
146
|
+
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
|
|
147
|
+
<div className="space-y-2">
|
|
148
|
+
<label className="text-sm font-medium flex items-center gap-2">
|
|
149
|
+
<User className="h-4 w-4" />
|
|
150
|
+
Full Name *
|
|
151
|
+
</label>
|
|
152
|
+
<input
|
|
153
|
+
type="text"
|
|
154
|
+
name="name"
|
|
155
|
+
value={formData.name}
|
|
156
|
+
onChange={handleInputChange}
|
|
157
|
+
required
|
|
158
|
+
className="w-full p-3 bg-background border border-input rounded-lg focus:outline-none focus:ring-2 focus:ring-ring"
|
|
159
|
+
placeholder="Enter your full name"
|
|
160
|
+
/>
|
|
161
|
+
</div>
|
|
162
|
+
|
|
163
|
+
<div className="space-y-2">
|
|
164
|
+
<label className="text-sm font-medium flex items-center gap-2">
|
|
165
|
+
<Mail className="h-4 w-4" />
|
|
166
|
+
Email Address *
|
|
167
|
+
</label>
|
|
168
|
+
<input
|
|
169
|
+
type="email"
|
|
170
|
+
name="email"
|
|
171
|
+
value={formData.email}
|
|
172
|
+
onChange={handleInputChange}
|
|
173
|
+
required
|
|
174
|
+
className="w-full p-3 bg-background border border-input rounded-lg focus:outline-none focus:ring-2 focus:ring-ring"
|
|
175
|
+
placeholder="your@email.com"
|
|
176
|
+
/>
|
|
177
|
+
</div>
|
|
178
|
+
|
|
179
|
+
<div className="space-y-2">
|
|
180
|
+
<label className="text-sm font-medium flex items-center gap-2">
|
|
181
|
+
<Building className="h-4 w-4" />
|
|
182
|
+
Company
|
|
183
|
+
</label>
|
|
184
|
+
<input
|
|
185
|
+
type="text"
|
|
186
|
+
name="company"
|
|
187
|
+
value={formData.company}
|
|
188
|
+
onChange={handleInputChange}
|
|
189
|
+
className="w-full p-3 bg-background border border-input rounded-lg focus:outline-none focus:ring-2 focus:ring-ring"
|
|
190
|
+
placeholder="Your company name"
|
|
191
|
+
/>
|
|
192
|
+
</div>
|
|
193
|
+
|
|
194
|
+
<div className="space-y-2">
|
|
195
|
+
<label className="text-sm font-medium flex items-center gap-2">
|
|
196
|
+
<Phone className="h-4 w-4" />
|
|
197
|
+
Phone Number
|
|
198
|
+
</label>
|
|
199
|
+
<input
|
|
200
|
+
type="tel"
|
|
201
|
+
name="phone"
|
|
202
|
+
value={formData.phone}
|
|
203
|
+
onChange={handleInputChange}
|
|
204
|
+
className="w-full p-3 bg-background border border-input rounded-lg focus:outline-none focus:ring-2 focus:ring-ring"
|
|
205
|
+
placeholder="(555) 123-4567"
|
|
206
|
+
/>
|
|
207
|
+
</div>
|
|
208
|
+
</div>
|
|
209
|
+
|
|
210
|
+
{/* Subject */}
|
|
211
|
+
<div className="space-y-2">
|
|
212
|
+
<label className="text-sm font-medium">Subject *</label>
|
|
213
|
+
<input
|
|
214
|
+
type="text"
|
|
215
|
+
name="subject"
|
|
216
|
+
value={formData.subject}
|
|
217
|
+
onChange={handleInputChange}
|
|
218
|
+
required
|
|
219
|
+
className="w-full p-3 bg-background border border-input rounded-lg focus:outline-none focus:ring-2 focus:ring-ring"
|
|
220
|
+
placeholder="Brief description of your inquiry"
|
|
221
|
+
/>
|
|
222
|
+
</div>
|
|
223
|
+
|
|
224
|
+
{/* Message */}
|
|
225
|
+
<div className="space-y-2">
|
|
226
|
+
<label className="text-sm font-medium">Message *</label>
|
|
227
|
+
<textarea
|
|
228
|
+
name="message"
|
|
229
|
+
value={formData.message}
|
|
230
|
+
onChange={handleInputChange}
|
|
231
|
+
required
|
|
232
|
+
rows={5}
|
|
233
|
+
className="w-full p-3 bg-background border border-input rounded-lg focus:outline-none focus:ring-2 focus:ring-ring resize-none"
|
|
234
|
+
placeholder="Please provide detailed information about your inquiry..."
|
|
235
|
+
/>
|
|
236
|
+
</div>
|
|
237
|
+
|
|
238
|
+
{/* Submit Button */}
|
|
239
|
+
<Button
|
|
240
|
+
type="submit"
|
|
241
|
+
size="lg"
|
|
242
|
+
className="w-full"
|
|
243
|
+
disabled={isSubmitting}
|
|
244
|
+
>
|
|
245
|
+
{isSubmitting ? (
|
|
246
|
+
<>
|
|
247
|
+
<div className="w-4 h-4 border-2 border-white/30 border-t-white rounded-full animate-spin mr-2" />
|
|
248
|
+
Sending Message...
|
|
249
|
+
</>
|
|
250
|
+
) : (
|
|
251
|
+
<>
|
|
252
|
+
<Send className="h-4 w-4 mr-2" />
|
|
253
|
+
Send Message
|
|
254
|
+
</>
|
|
255
|
+
)}
|
|
256
|
+
</Button>
|
|
257
|
+
</form>
|
|
258
|
+
</CardContent>
|
|
259
|
+
</Card>
|
|
260
|
+
</div>
|
|
261
|
+
|
|
262
|
+
{/* Contact Information & FAQ */}
|
|
263
|
+
<div className="space-y-6">
|
|
264
|
+
{/* Contact Info */}
|
|
265
|
+
<Card>
|
|
266
|
+
<CardHeader>
|
|
267
|
+
<CardTitle className="flex items-center gap-2">
|
|
268
|
+
<MessageSquare className="h-5 w-5" />
|
|
269
|
+
Other Ways to Reach Us
|
|
270
|
+
</CardTitle>
|
|
271
|
+
</CardHeader>
|
|
272
|
+
<CardContent className="space-y-4">
|
|
273
|
+
<div className="space-y-3">
|
|
274
|
+
<div className="flex items-start gap-3">
|
|
275
|
+
<Mail className="h-5 w-5 text-muted-foreground mt-0.5" />
|
|
276
|
+
<div>
|
|
277
|
+
<div className="font-medium">Email Support</div>
|
|
278
|
+
<div className="text-sm text-muted-foreground">support@bloomneo.com</div>
|
|
279
|
+
<Badge variant="secondary" className="mt-1">24-48h response</Badge>
|
|
280
|
+
</div>
|
|
281
|
+
</div>
|
|
282
|
+
|
|
283
|
+
<div className="flex items-start gap-3">
|
|
284
|
+
<MessageSquare className="h-5 w-5 text-muted-foreground mt-0.5" />
|
|
285
|
+
<div>
|
|
286
|
+
<div className="font-medium">Live Chat</div>
|
|
287
|
+
<div className="text-sm text-muted-foreground">Available Mon-Fri 9AM-5PM PST</div>
|
|
288
|
+
<Badge variant="secondary" className="mt-1">Instant response</Badge>
|
|
289
|
+
</div>
|
|
290
|
+
</div>
|
|
291
|
+
|
|
292
|
+
<div className="flex items-start gap-3">
|
|
293
|
+
<Building className="h-5 w-5 text-muted-foreground mt-0.5" />
|
|
294
|
+
<div>
|
|
295
|
+
<div className="font-medium">Enterprise Sales</div>
|
|
296
|
+
<div className="text-sm text-muted-foreground">For custom solutions & partnerships</div>
|
|
297
|
+
<Badge variant="secondary" className="mt-1">Same day response</Badge>
|
|
298
|
+
</div>
|
|
299
|
+
</div>
|
|
300
|
+
</div>
|
|
301
|
+
</CardContent>
|
|
302
|
+
</Card>
|
|
303
|
+
|
|
304
|
+
{/* FAQ */}
|
|
305
|
+
<Card>
|
|
306
|
+
<CardHeader>
|
|
307
|
+
<CardTitle>Frequently Asked</CardTitle>
|
|
308
|
+
<CardDescription>Quick answers to common questions</CardDescription>
|
|
309
|
+
</CardHeader>
|
|
310
|
+
<CardContent className="space-y-4">
|
|
311
|
+
<div className="space-y-3">
|
|
312
|
+
<div>
|
|
313
|
+
<div className="font-medium text-sm">How do I get started with UIKit?</div>
|
|
314
|
+
<div className="text-sm text-muted-foreground mt-1">
|
|
315
|
+
Run <code className="bg-muted px-1 rounded">npx create-uikit my-app</code> to create a new project.
|
|
316
|
+
</div>
|
|
317
|
+
</div>
|
|
318
|
+
|
|
319
|
+
<div>
|
|
320
|
+
<div className="font-medium text-sm">Is UIKit free to use?</div>
|
|
321
|
+
<div className="text-sm text-muted-foreground mt-1">
|
|
322
|
+
Yes, UIKit is open source and free for both personal and commercial use.
|
|
323
|
+
</div>
|
|
324
|
+
</div>
|
|
325
|
+
|
|
326
|
+
<div>
|
|
327
|
+
<div className="font-medium text-sm">Can I customize the themes?</div>
|
|
328
|
+
<div className="text-sm text-muted-foreground mt-1">
|
|
329
|
+
Absolutely! Create custom themes using our theming system and OKLCH colors.
|
|
330
|
+
</div>
|
|
331
|
+
</div>
|
|
332
|
+
|
|
333
|
+
<div>
|
|
334
|
+
<div className="font-medium text-sm">Do you provide support?</div>
|
|
335
|
+
<div className="text-sm text-muted-foreground mt-1">
|
|
336
|
+
Yes, we offer community support via GitHub and premium support for enterprises.
|
|
337
|
+
</div>
|
|
338
|
+
</div>
|
|
339
|
+
</div>
|
|
340
|
+
</CardContent>
|
|
341
|
+
</Card>
|
|
342
|
+
</div>
|
|
343
|
+
</div>
|
|
344
|
+
</div>
|
|
345
|
+
);
|
|
346
|
+
};
|
|
347
|
+
|
|
348
|
+
export default ContactPage;
|