@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,359 @@
|
|
|
1
|
+
# UIKit Theme Guide
|
|
2
|
+
|
|
3
|
+
**Transform your UIKit applications with beautiful, brand-consistent themes that work seamlessly across all components and layouts.**
|
|
4
|
+
|
|
5
|
+
## 🎨 Understanding UIKit Theming
|
|
6
|
+
|
|
7
|
+
UIKit is built on **ShadCN components** and **Tailwind CSS v4**, enhanced with a powerful semantic color system that automatically adapts to your brand. Instead of hardcoded colors like `bg-white` or `text-black`, UIKit uses semantic classes like `bg-background`, `text-foreground`, and `border-border` that intelligently change based on your selected theme.
|
|
8
|
+
|
|
9
|
+
**How it works:**
|
|
10
|
+
- **Semantic colors** automatically map to your theme's values
|
|
11
|
+
- **29 color variables** control the entire design system (backgrounds, text, borders, charts, sidebar)
|
|
12
|
+
- **Light/dark modes** are handled automatically with proper contrast ratios
|
|
13
|
+
- **All components** inherit your theme without any code changes
|
|
14
|
+
|
|
15
|
+
**The result:** Change one theme file, transform your entire application instantly.
|
|
16
|
+
|
|
17
|
+
## 🎯 How Semantic Colors Work
|
|
18
|
+
|
|
19
|
+
### Primary Color Impact
|
|
20
|
+
When you set `primary: '#3B82F6'` (blue) in your theme, it automatically affects these classes across your entire application:
|
|
21
|
+
|
|
22
|
+
```jsx
|
|
23
|
+
// Button components
|
|
24
|
+
<Button className="bg-primary text-primary-foreground"> // Blue button with white text
|
|
25
|
+
<Button variant="outline" className="border-primary text-primary"> // Blue outline with blue text
|
|
26
|
+
|
|
27
|
+
// Form elements
|
|
28
|
+
<Input className="focus:ring-primary" /> // Blue focus ring
|
|
29
|
+
<Checkbox className="data-[state=checked]:bg-primary" /> // Blue when checked
|
|
30
|
+
|
|
31
|
+
// Links and accents
|
|
32
|
+
<a className="text-primary hover:text-primary/80">Link</a> // Blue link
|
|
33
|
+
<Badge className="bg-primary text-primary-foreground">New</Badge> // Blue badge
|
|
34
|
+
|
|
35
|
+
// Charts and data visualization
|
|
36
|
+
<BarChart colors={['var(--primary)']} /> // Blue charts
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Core Color Relationships
|
|
40
|
+
|
|
41
|
+
**Background Colors Hierarchy:**
|
|
42
|
+
```jsx
|
|
43
|
+
// Page structure
|
|
44
|
+
<div className="bg-background"> // Main page (white/dark)
|
|
45
|
+
<Card className="bg-card"> // Elevated content (white/slightly lighter)
|
|
46
|
+
<div className="bg-muted"> // Subtle sections (light gray/darker)
|
|
47
|
+
<div className="bg-accent"> // Interactive areas (very light/subtle)
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**Text Color Hierarchy:**
|
|
51
|
+
```jsx
|
|
52
|
+
<h1 className="text-foreground"> // Primary headings (dark/light)
|
|
53
|
+
<p className="text-muted-foreground"> // Secondary text (gray)
|
|
54
|
+
<span className="text-primary"> // Brand/link text (your brand color)
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
**Border System:**
|
|
58
|
+
```jsx
|
|
59
|
+
<div className="border-border"> // Standard borders (light gray)
|
|
60
|
+
<input className="border-input"> // Form borders (same as border)
|
|
61
|
+
<div className="ring-ring"> // Focus rings (usually primary color)
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## 🎨 Color Selection Guide
|
|
65
|
+
|
|
66
|
+
### ✅ **Good Color Choices**
|
|
67
|
+
|
|
68
|
+
**Primary Color (Your Brand):**
|
|
69
|
+
- Use your actual brand color
|
|
70
|
+
- Ensure good contrast with white text
|
|
71
|
+
- Test in both light and dark modes
|
|
72
|
+
```javascript
|
|
73
|
+
// Good examples
|
|
74
|
+
primary: '#1E40AF', // Professional blue
|
|
75
|
+
primary: '#059669', // Trust green
|
|
76
|
+
primary: '#7C3AED', // Creative purple
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
**Background Colors:**
|
|
80
|
+
- Light mode: Pure white or very light grays
|
|
81
|
+
- Dark mode: True darks, avoid pure black
|
|
82
|
+
```javascript
|
|
83
|
+
// Light mode
|
|
84
|
+
background: '#FFFFFF', // Pure white
|
|
85
|
+
card: '#FFFFFF', // Same as background for clean look
|
|
86
|
+
muted: '#F8FAFC', // Very light gray for subtle sections
|
|
87
|
+
|
|
88
|
+
// Dark mode
|
|
89
|
+
background: '#0F172A', // Dark blue-gray (not pure black)
|
|
90
|
+
card: '#1E293B', // Slightly lighter than background
|
|
91
|
+
muted: '#334155', // Lighter gray for contrast
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### ❌ **Avoid These Mistakes**
|
|
95
|
+
|
|
96
|
+
**Don't use low-contrast colors:**
|
|
97
|
+
```javascript
|
|
98
|
+
// ❌ Bad - poor readability
|
|
99
|
+
primary: '#FFEB3B', // Yellow on white background
|
|
100
|
+
foreground: '#9CA3AF', // Light gray text on white
|
|
101
|
+
|
|
102
|
+
// ✅ Good - high contrast
|
|
103
|
+
primary: '#1D4ED8', // Dark blue
|
|
104
|
+
foreground: '#1F2937', // Dark gray/black
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
**Don't ignore dark mode:**
|
|
108
|
+
```javascript
|
|
109
|
+
// ❌ Bad - same colors for both modes
|
|
110
|
+
light: { primary: '#1E40AF' },
|
|
111
|
+
dark: { primary: '#1E40AF' }, // Too dark for dark backgrounds
|
|
112
|
+
|
|
113
|
+
// ✅ Good - adjusted for dark mode
|
|
114
|
+
light: { primary: '#1E40AF' },
|
|
115
|
+
dark: { primary: '#60A5FA' }, // Lighter version for dark mode
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
**Don't use pure black/white in dark mode:**
|
|
119
|
+
```javascript
|
|
120
|
+
// ❌ Bad - harsh contrast
|
|
121
|
+
dark: {
|
|
122
|
+
background: '#000000', // Pure black is too harsh
|
|
123
|
+
foreground: '#FFFFFF' // Pure white is too bright
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
// ✅ Good - softer contrast
|
|
127
|
+
dark: {
|
|
128
|
+
background: '#0F172A', // Dark blue-gray
|
|
129
|
+
foreground: '#F8FAFC' // Off-white
|
|
130
|
+
}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## 🚀 Why Custom Themes?
|
|
134
|
+
|
|
135
|
+
Go beyond UIKit's 5 built-in themes and create professional design systems that:
|
|
136
|
+
|
|
137
|
+
- **Match your brand identity** - Use your exact brand colors and design tokens
|
|
138
|
+
- **Work everywhere** - Automatic application across all 40+ components and 5 layouts
|
|
139
|
+
- **Support both modes** - One theme definition, light/dark modes handled automatically
|
|
140
|
+
- **Maintain accessibility** - Built-in contrast and readability optimization
|
|
141
|
+
- **Scale seamlessly** - From simple apps to enterprise applications
|
|
142
|
+
|
|
143
|
+
**Best part?** You can create and deploy a complete custom theme in under 5 minutes.
|
|
144
|
+
|
|
145
|
+
## 🚀 Quick Start (Recommended)
|
|
146
|
+
|
|
147
|
+
### Step 1: Generate Your Theme
|
|
148
|
+
```bash
|
|
149
|
+
# Create a new custom theme automatically
|
|
150
|
+
npx uikit generate theme brand
|
|
151
|
+
|
|
152
|
+
# This automatically:
|
|
153
|
+
# ✅ Creates theme file with all required colors
|
|
154
|
+
# ✅ Updates your main.tsx with the new theme
|
|
155
|
+
# ✅ Adds proper imports and configuration
|
|
156
|
+
# ✅ Works with SPA, Multi, and FBCA projects
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### Step 2: Customize Your Colors
|
|
160
|
+
Edit the generated theme file to match your brand:
|
|
161
|
+
|
|
162
|
+
```javascript
|
|
163
|
+
// src/themes/presets/theme-brand.js (or src/web/themes/presets/ for FBCA)
|
|
164
|
+
const themeBrand = {
|
|
165
|
+
id: 'brand',
|
|
166
|
+
name: 'Brand Theme',
|
|
167
|
+
|
|
168
|
+
light: {
|
|
169
|
+
// Main brand color - change this to your brand color
|
|
170
|
+
primary: '#3B82F6', // Your brand blue
|
|
171
|
+
primaryForeground: '#FFFFFF',
|
|
172
|
+
|
|
173
|
+
// Backgrounds
|
|
174
|
+
background: '#FFFFFF', // Page background
|
|
175
|
+
card: '#FFFFFF', // Card backgrounds
|
|
176
|
+
|
|
177
|
+
// Text colors
|
|
178
|
+
foreground: '#1F2937', // Main text
|
|
179
|
+
mutedForeground: '#6B7280', // Secondary text
|
|
180
|
+
|
|
181
|
+
// Other colors (can keep as-is initially)
|
|
182
|
+
secondary: '#F3F4F6',
|
|
183
|
+
secondaryForeground: '#374151',
|
|
184
|
+
accent: '#F3F4F6',
|
|
185
|
+
accentForeground: '#374151',
|
|
186
|
+
destructive: '#EF4444',
|
|
187
|
+
destructiveForeground: '#FFFFFF',
|
|
188
|
+
border: '#E5E7EB',
|
|
189
|
+
input: '#E5E7EB',
|
|
190
|
+
ring: '#3B82F6',
|
|
191
|
+
|
|
192
|
+
// ... more colors (see complete reference below)
|
|
193
|
+
},
|
|
194
|
+
|
|
195
|
+
dark: {
|
|
196
|
+
// Dark mode versions of above colors
|
|
197
|
+
primary: '#60A5FA', // Lighter version for dark mode
|
|
198
|
+
primaryForeground: '#1E293B',
|
|
199
|
+
background: '#0F172A',
|
|
200
|
+
foreground: '#F8FAFC',
|
|
201
|
+
// ... complete dark palette
|
|
202
|
+
}
|
|
203
|
+
};
|
|
204
|
+
|
|
205
|
+
export default themeBrand;
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### Step 3: Bundle and Use
|
|
209
|
+
```bash
|
|
210
|
+
# Generate CSS from your theme
|
|
211
|
+
npx uikit bundle
|
|
212
|
+
|
|
213
|
+
# Your theme is now ready to use!
|
|
214
|
+
# It's already configured in your main.tsx
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
## 🔧 Development Workflow
|
|
220
|
+
|
|
221
|
+
### Watch Mode for Live Updates
|
|
222
|
+
```bash
|
|
223
|
+
# Start theme development with live reload
|
|
224
|
+
npx uikit bundle --watch
|
|
225
|
+
|
|
226
|
+
# In another terminal, start your app
|
|
227
|
+
npm run dev
|
|
228
|
+
|
|
229
|
+
# Now edit your theme file and see changes instantly!
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
### Testing Your Theme
|
|
233
|
+
1. **Switch between light/dark modes** - Ensure both look good
|
|
234
|
+
2. **Test different layouts** - AdminLayout, PageLayout, AuthLayout
|
|
235
|
+
3. **Check form components** - Buttons, inputs, alerts
|
|
236
|
+
4. **Verify accessibility** - Good contrast ratios
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
## 📋 Complete Color Reference
|
|
241
|
+
|
|
242
|
+
### Core Colors (Required)
|
|
243
|
+
```javascript
|
|
244
|
+
light: {
|
|
245
|
+
// Backgrounds
|
|
246
|
+
background: '#FFFFFF', // Main page background
|
|
247
|
+
foreground: '#1F2937', // Primary text
|
|
248
|
+
card: '#FFFFFF', // Card backgrounds
|
|
249
|
+
cardForeground: '#1F2937', // Text on cards
|
|
250
|
+
popover: '#FFFFFF', // Dropdown backgrounds
|
|
251
|
+
popoverForeground: '#1F2937', // Text in dropdowns
|
|
252
|
+
|
|
253
|
+
// Brand & Actions
|
|
254
|
+
primary: '#3B82F6', // Your brand color
|
|
255
|
+
primaryForeground: '#FFFFFF', // Text on brand elements
|
|
256
|
+
secondary: '#F3F4F6', // Secondary buttons
|
|
257
|
+
secondaryForeground: '#374151', // Text on secondary elements
|
|
258
|
+
destructive: '#EF4444', // Error/danger actions
|
|
259
|
+
destructiveForeground: '#FFFFFF', // Text on error elements
|
|
260
|
+
|
|
261
|
+
// Supporting Colors
|
|
262
|
+
muted: '#F9FAFB', // Subtle backgrounds
|
|
263
|
+
mutedForeground: '#6B7280', // Secondary text
|
|
264
|
+
accent: '#F3F4F6', // Accent elements
|
|
265
|
+
accentForeground: '#374151', // Text on accents
|
|
266
|
+
|
|
267
|
+
// Borders & Focus
|
|
268
|
+
border: '#E5E7EB', // Standard borders
|
|
269
|
+
input: '#E5E7EB', // Input borders
|
|
270
|
+
ring: '#3B82F6', // Focus rings
|
|
271
|
+
|
|
272
|
+
// Chart Colors (for data visualization)
|
|
273
|
+
chart1: '#3B82F6', // Primary data
|
|
274
|
+
chart2: '#10B981', // Secondary data
|
|
275
|
+
chart3: '#F59E0B', // Tertiary data
|
|
276
|
+
chart4: '#EF4444', // Warning data
|
|
277
|
+
chart5: '#8B5CF6', // Additional data
|
|
278
|
+
|
|
279
|
+
// Sidebar Colors (for AdminLayout)
|
|
280
|
+
sidebar: '#F8FAFC',
|
|
281
|
+
sidebarForeground: '#334155',
|
|
282
|
+
sidebarPrimary: '#3B82F6',
|
|
283
|
+
sidebarPrimaryForeground: '#FFFFFF',
|
|
284
|
+
sidebarAccent: '#F1F5F9',
|
|
285
|
+
sidebarAccentForeground: '#334155',
|
|
286
|
+
sidebarBorder: '#E2E8F0',
|
|
287
|
+
sidebarRing: '#3B82F6',
|
|
288
|
+
}
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
### Dark Mode Colors
|
|
292
|
+
```javascript
|
|
293
|
+
dark: {
|
|
294
|
+
// Invert backgrounds, adjust brand colors for dark mode
|
|
295
|
+
background: '#0F172A',
|
|
296
|
+
foreground: '#F8FAFC',
|
|
297
|
+
primary: '#60A5FA', // Lighter version of brand color
|
|
298
|
+
// ... all other colors adjusted for dark mode
|
|
299
|
+
}
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
---
|
|
303
|
+
|
|
304
|
+
## 💡 Quick Tips
|
|
305
|
+
|
|
306
|
+
### Color Selection
|
|
307
|
+
- **Start simple**: Focus on primary, background, and foreground colors first
|
|
308
|
+
- **Brand first**: Use your existing brand colors as the foundation
|
|
309
|
+
- **Test contrast**: Ensure text is readable (use tools like [contrast-ratio.com](https://contrast-ratio.com))
|
|
310
|
+
- **Dark mode**: Make colors lighter/softer for dark backgrounds
|
|
311
|
+
|
|
312
|
+
### Common Patterns
|
|
313
|
+
```javascript
|
|
314
|
+
// Corporate/Professional
|
|
315
|
+
primary: '#1E40AF', // Professional blue
|
|
316
|
+
secondary: '#F1F5F9', // Light gray
|
|
317
|
+
|
|
318
|
+
// Creative/Modern
|
|
319
|
+
primary: '#8B5CF6', // Purple
|
|
320
|
+
accent: '#F59E0B', // Orange
|
|
321
|
+
|
|
322
|
+
// E-commerce
|
|
323
|
+
primary: '#059669', // Trust green
|
|
324
|
+
destructive: '#DC2626', // Clear red
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
### Project Structure
|
|
328
|
+
- **SPA/Multi projects**: `src/themes/presets/theme-{name}.js`
|
|
329
|
+
- **FBCA projects**: `src/web/themes/presets/theme-{name}.js`
|
|
330
|
+
- **CSS output**: Auto-generated in `globals.css`
|
|
331
|
+
|
|
332
|
+
---
|
|
333
|
+
|
|
334
|
+
## 🛠️ CLI Commands
|
|
335
|
+
|
|
336
|
+
```bash
|
|
337
|
+
# Theme Management
|
|
338
|
+
npx uikit generate theme <name> # Create new theme
|
|
339
|
+
npx uikit bundle # Generate CSS
|
|
340
|
+
npx uikit bundle --watch # Development mode
|
|
341
|
+
|
|
342
|
+
# Example Workflow
|
|
343
|
+
npx uikit generate theme brand # 1. Generate
|
|
344
|
+
npx uikit bundle --watch # 2. Start development
|
|
345
|
+
# Edit theme file # 3. Customize colors
|
|
346
|
+
# See changes live in browser # 4. Iterate
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
---
|
|
350
|
+
|
|
351
|
+
## 🎯 Next Steps
|
|
352
|
+
|
|
353
|
+
1. **Generate your theme**: `npx uikit generate theme brand`
|
|
354
|
+
2. **Customize primary color**: Edit the `primary` value to match your brand
|
|
355
|
+
3. **Test in both modes**: Switch between light and dark mode
|
|
356
|
+
4. **Refine gradually**: Adjust other colors as needed
|
|
357
|
+
5. **Share and iterate**: Get feedback and refine your theme
|
|
358
|
+
|
|
359
|
+
**Happy theming!** ✨
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
|
+
<title>{{PROJECT_NAME}} - UIKit Showcase</title>
|
|
8
|
+
|
|
9
|
+
<!-- SEO Optimizations -->
|
|
10
|
+
<meta name="description" content="Professional React UI components with beautiful themes and OKLCH color science. Built with @bloomneo/uikit.">
|
|
11
|
+
<meta name="keywords" content="react, ui components, themes, design system, tailwind css, typescript">
|
|
12
|
+
<meta name="author" content="@bloomneo/uikit">
|
|
13
|
+
|
|
14
|
+
<!-- Open Graph -->
|
|
15
|
+
<meta property="og:type" content="website">
|
|
16
|
+
<meta property="og:title" content="{{PROJECT_NAME}} - UIKit Showcase">
|
|
17
|
+
<meta property="og:description" content="Professional React UI components with beautiful themes">
|
|
18
|
+
<meta property="og:site_name" content="@bloomneo/uikit">
|
|
19
|
+
|
|
20
|
+
<!-- Twitter Cards -->
|
|
21
|
+
<meta name="twitter:card" content="summary_large_image">
|
|
22
|
+
<meta name="twitter:title" content="{{PROJECT_NAME}} - UIKit Showcase">
|
|
23
|
+
<meta name="twitter:description" content="Professional React UI components with beautiful themes">
|
|
24
|
+
|
|
25
|
+
<!-- Performance -->
|
|
26
|
+
<meta name="robots" content="index,follow">
|
|
27
|
+
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
28
|
+
<link rel="dns-prefetch" href="https://fonts.gstatic.com">
|
|
29
|
+
|
|
30
|
+
<!-- Theme color -->
|
|
31
|
+
<meta name="theme-color" content="#6366F1">
|
|
32
|
+
</head>
|
|
33
|
+
<body>
|
|
34
|
+
<div id="root"></div>
|
|
35
|
+
<script type="module" src="/src/main.tsx"></script>
|
|
36
|
+
</body>
|
|
37
|
+
</html>
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "{{PROJECT_NAME}}",
|
|
3
|
+
"private": true,
|
|
4
|
+
"version": "0.0.0",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"dev": "vite",
|
|
8
|
+
"build": "tsc && vite build",
|
|
9
|
+
"preview": "vite preview",
|
|
10
|
+
"bundle": "npx uikit bundle",
|
|
11
|
+
"serve": "npx uikit serve",
|
|
12
|
+
"deploy": "npx uikit deploy",
|
|
13
|
+
"deploy:gh": "npm run build && gh-pages -d dist",
|
|
14
|
+
"prerender": "npx uikit prerender",
|
|
15
|
+
"optimize": "npx uikit optimize"
|
|
16
|
+
},
|
|
17
|
+
"dependencies": {
|
|
18
|
+
"@tailwindcss/vite": "^4.1.13",
|
|
19
|
+
"@bloomneo/uikit": "latest",
|
|
20
|
+
"react": "^19.1.0",
|
|
21
|
+
"react-dom": "^19.1.0",
|
|
22
|
+
"lucide-react": "latest"
|
|
23
|
+
},
|
|
24
|
+
"devDependencies": {
|
|
25
|
+
"@types/node": "^24.0.0",
|
|
26
|
+
"@types/react": "^19.1.0",
|
|
27
|
+
"@types/react-dom": "^19.1.0",
|
|
28
|
+
"@vitejs/plugin-react": "^4.2.1",
|
|
29
|
+
"typescript": "^5.8.0",
|
|
30
|
+
"vite": "^7.0.0",
|
|
31
|
+
"tailwindcss": "^4.1.8",
|
|
32
|
+
"gh-pages": "^6.3.0"
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<rect width="32" height="32" rx="8" fill="url(#bluePurpleGradient)"/>
|
|
3
|
+
<text x="16" y="20" font-family="Inter, system-ui, sans-serif" font-size="12" font-weight="900" text-anchor="middle" fill="white" letter-spacing="1px">ui</text>
|
|
4
|
+
<defs>
|
|
5
|
+
<linearGradient id="bluePurpleGradient" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
6
|
+
<stop offset="0%" style="stop-color:#3B82F6;stop-opacity:1" />
|
|
7
|
+
<stop offset="100%" style="stop-color:#8B5CF6;stop-opacity:1" />
|
|
8
|
+
</linearGradient>
|
|
9
|
+
</defs>
|
|
10
|
+
</svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="800.418" height="440.048" viewBox="0 0 800.418 440.048" xmlns:xlink="http://www.w3.org/1999/xlink" role="img" artist="Katerina Limpitsouni" source="https://undraw.co/"><g transform="translate(-560 -320)"><path d="M1028.793,687.166H230.949a1.287,1.287,0,1,1,0-2.573h797.844a1.287,1.287,0,1,1,0,2.573Z" transform="translate(330.338 68.211)" fill="#f2f2f2"/><path d="M369.349,520.9a131.885,131.885,0,0,1,10.915-41.624q2.464-5.5,5.423-10.764a.8.8,0,0,0-1.387-.811,133.708,133.708,0,0,0-14.878,41.046q-1.117,6.034-1.679,12.153C367.647,521.93,369.254,521.923,369.349,520.9Z" transform="translate(280.127 224.126)" fill="#3f3d56"/><path d="M370.269,519.746a85.561,85.561,0,0,1,7.081-27q1.6-3.57,3.518-6.983a.521.521,0,0,0-.9-.526,86.742,86.742,0,0,0-9.652,26.628q-.725,3.915-1.089,7.884C369.165,520.414,370.208,520.41,370.269,519.746Z" transform="translate(286.141 225.551)" fill="#3f3d56"/><circle cx="6.6" cy="6.6" r="6.6" transform="translate(662.934 699.781)" fill="#38bdf8"/><path d="M369.988,519.095a85.56,85.56,0,0,1-11.025-25.647q-.936-3.8-1.521-7.67a.521.521,0,0,0-1.033.139,86.742,86.742,0,0,0,8.768,26.933q1.836,3.532,3.99,6.887c.362.564,1.181-.08.822-.641Z" transform="translate(279.213 225.579)" fill="#3f3d56"/><circle cx="6.6" cy="6.6" r="6.6" transform="translate(629.013 699.318)" fill="#38bdf8"/><path d="M350.224,523.31V510.342a4.869,4.869,0,0,1,4.863-4.863h30.258a4.868,4.868,0,0,1,4.863,4.863V523.31a4.868,4.868,0,0,1-4.863,4.863H355.087a4.868,4.868,0,0,1-4.863-4.863Z" transform="translate(278.714 227.203)" fill="#ccc"/><g transform="translate(999.362 494.882)"><rect width="93.308" height="7.595" rx="3.5" transform="translate(0 59.673)" fill="#ccc"/><path d="M662.347,530.776H565.785a7.06,7.06,0,0,1-7.052-7.052V470.56a7.06,7.06,0,0,1,7.052-7.052h96.563a7.06,7.06,0,0,1,7.052,7.052v53.164a7.06,7.06,0,0,1-7.052,7.052Z" transform="translate(-515.333 -463.508)" fill="#ccc"/><ellipse cx="6.51" cy="6.51" rx="6.51" ry="6.51" transform="translate(92.223 27.124)" fill="#fff"/></g><path d="M803.228,524.508H326.518a7.785,7.785,0,0,0,0,15.571h13.774V709.563a7.785,7.785,0,1,0,15.571,0V555.039l87.282,158.2a7.785,7.785,0,0,0,13.485-7.785L365.39,540.079H782.267v.1L691.083,705.452a7.785,7.785,0,1,0,13.484,7.785l77.7-140.831V709.563a7.786,7.786,0,1,0,15.571,0V544.184l2.265-4.105h3.125a7.785,7.785,0,1,0,0-15.571Z" transform="translate(376.675 36.445)" fill="#d6d6e3"/><g transform="translate(741.666 359.926)"><path d="M514.616,98.226S484.5,89.742,475.59,130.889s-3.25,35.962-3.25,35.962L539.575,159S559.791,110.739,514.616,98.226Z" transform="translate(-366.786 -97.502)" fill="#090814"/><path d="M458.156,258.012s45.438,2.1,37.569,19.939q-.834,1.891-1.554,3.543a319,319,0,0,1-19.38,37.513l-27.927,46.271L436.7,359.632l28.6-74.338-25.7-2.1Z" transform="translate(-272.161 -81.597)" fill="#ed9da0"/><path d="M508.491,169.563s-4.2,22.032-7.869,25.179,27.8,7.869,27.8,7.869S523.7,187.4,529.473,179.53,508.491,169.563,508.491,169.563Z" transform="translate(-376.368 -123.112)" fill="#ed9da0"/><path d="M600.543,274.981l-14.688,32S574.839,318,562.773,362.061s-14.688,42.491-14.688,42.491l11.926,3.972,48.925-88.953,24.13-30.425-7.339-16.259Z" transform="translate(-534.351 -79.677)" fill="#ed9da0"/><path d="M491.029,243.541l-21.107,39.284s-38.687,77.252-33.741,76.94c5.56-.351,18.468,6.191,23.26,12.481,2.315,3.036,29.673-54.423,41.551-71L526.7,281.31s72.981,12.284,73.071,8.289c.044-1.957-17.292,33.735-12.325,31.655,5.659-2.371,16.427,10.681,22.3,8.294,2.422-.985,15.2-32.736,22.131-49.735a9.2,9.2,0,0,0-4.257-11.642c-5.205-2.71-77.527-19.221-77.527-19.221l1.265-6.46L546.11,232Z" transform="translate(-407.002 -84.956)" fill="#090814"/><ellipse cx="20.458" cy="20.458" rx="20.458" ry="20.458" transform="matrix(-0.16, -0.987, 0.987, -0.16, 130.584, 62.974)" fill="#ed9da0"/><path d="M479.84,256.65c-1.129,3.387,6.186,5.336,16.385,3.431,8.823-1.647,18.48-3.6,26.1-5.188,8.157-1.7,13.985-2.97,13.985-2.97s2.1,13.115,8.92,11.541c5.871-1.355,23.432-62.681,28.18-79.63a5.9,5.9,0,0,0-2.607-6.626l-24.114-14.725s-16.618-5.708-22.677-5.871-16.551-1.737-16.551-1.737-12.065,1.049-14.164,9.967-10.854,61.792-11.016,74.489C482.1,253.263,483.227,246.488,479.84,256.65Z" transform="translate(-397.723 -94.914)" fill="#38bdf8"/><path d="M0,0S8.484,22.482,29.269,31.814l3.394-19.941Z" transform="translate(130.95 12.636) rotate(-19)" fill="#090814"/><ellipse cx="2.885" cy="5.508" rx="2.885" ry="5.508" transform="translate(124.683 26.13)" fill="#ed9da0"/><path d="M484.385,300.763a10.315,10.315,0,0,1,2.258-15.655l18.244-92.165,20.952,8.017-24.523,88.071a10.371,10.371,0,0,1-16.937,11.73Z" transform="translate(-352.227 -89.999)" fill="#ed9da0"/><path d="M482.313,211.125l23.006,4.052a4.629,4.629,0,0,0,5.425-4.428l.635-23.281a12.846,12.846,0,0,0-25.315-4.382l-7.339,22.023a4.629,4.629,0,0,0,3.588,6.016Z" transform="translate(-334.271 -92.648)" fill="#38bdf8"/><path d="M535.482,299.43a10.316,10.316,0,0,1-2.882-15.552l-12.272-93.152,22.416.874,5.014,91.288a10.371,10.371,0,0,1-12.277,16.543Z" transform="translate(-420.963 -90.285)" fill="#ed9da0"/><path d="M528.641,209.938l23.091-3.539a4.629,4.629,0,0,0,3.719-5.935l-6.864-22.255a12.845,12.845,0,0,0-25.383,3.967l.113,23.213a4.629,4.629,0,0,0,5.326,4.548Z" transform="translate(-428.668 -93.304)" fill="#38bdf8"/><path d="M8.073,41.055s-10.3,1.527-7.631-7.631L5.784,15.112S-1.083-3.583,9.6.614s17.55,30.141,17.55,30.141,4.579,19.84,0,19.84-19.076,3.049-17.55,0S8.073,41.055,8.073,41.055Z" transform="translate(194.514 317.089) rotate(158)" fill="#090814"/><path d="M612.673,411.731s12-3.085,14.741,1.714,2.057,20.568,2.057,20.91-4.115,3.776-5.491,3.776-9.936,15.426-21.6,9.936S612.673,411.731,612.673,411.731Z" transform="translate(-598.97 -89.053)" fill="#090814"/></g><g transform="translate(1177.085 320)"><path d="M402.219,445.911s-13.584,28.3-4.528,29.433,11.32-25.471,11.32-25.471Z" transform="translate(-394.578 -232.742)" fill="#ed9da0"/><path d="M351.5,206.8h0a16.719,16.719,0,0,0-12.3,13.841l-8.075,57.477L319.8,323.961s-5.661,5.093-3.393,7.925-2.83,14.716-2.83,14.716l14.154,4.528s1.7-11.886,4.528-12.453c2.487-.5,30.329-74.873,37.04-92.891.925-2.484,1.449-3.9,1.449-3.9S369.614,203.966,351.5,206.8Z" transform="translate(-310.466 -128.905)" fill="#d6d6e3"/><path d="M185.733,724.945,174.691,745.9l18.4,5.364,3.919-18.95Z" transform="translate(-126.585 -330.651)" fill="#ed9da0"/><path d="M317.415,792.282l-19.45,9.951s-30.439,7.257-10.62,13.289,28.74,1.744,28.74,1.744,25.926,1.348,25.508-5.885-5.405-17.4-5.405-17.4S318.836,798.508,317.415,792.282Z" transform="translate(-268.517 -379.447)" fill="#090814"/><path d="M294.64,435.214l-8.49,102.731s-.283,61.413-9.339,73.3-9.339,17.83-9.339,17.83l-18.679-9.619s9.619-16.031,7.641-18.488a13.686,13.686,0,0,1-2.547-5.285l5.094-63.394-9.619-110.373Z" transform="translate(-195.304 -222.328)" fill="#090814"/><path d="M267.578,787.911" transform="translate(-181.26 -381.165)" fill="none" stroke="#3f3d56" stroke-miterlimit="10" stroke-width="1"/><path d="M113.155,723.209l7.924,20.943,22.64-8.49-14.154-14.716Z" transform="translate(-37.026 -328.916)" fill="#ed9da0"/><path d="M249.106,443.741l-4.528,94.524s22.074,62.827,41.319,73.016c0,0,0,12.453,4.528,14.716a11.369,11.369,0,0,1,5.66,6.793l24.9-6.226-11.32-18.113-24.9-60.563s-3.962-1.7-5.094-7.358-3.4-5.66,2.268-6.792,5.66-6.792,5.66-6.792l18.679-86.034Z" transform="translate(-221.654 -230.572)" fill="#090814"/><path d="M312.737,146.411s1.7,28.867,3.962,31.7-23.773,2.268-23.773,2.268,1.7-24.339,0-26.6S312.737,146.411,312.737,146.411Z" transform="translate(-244.815 -102.764)" fill="#ed9da0"/><circle cx="22.64" cy="22.64" r="22.64" transform="translate(25.187 19.592)" fill="#ed9da0"/><path d="M282.113,186.634s-21.505-2.268-29.433,4.528a58.239,58.239,0,0,1-8.106,5.8,16.626,16.626,0,0,0-8.067,13.763L232.3,339.458s63.96-5.66,75.846,0c0,0,.566-13.018,1.7-14.716.825-1.238,2.252-50.6,2.965-77.271a58.716,58.716,0,0,0-14.858-40.977c-3.431-3.8-7.263-6.98-11.311-8.537C286.638,197.954,287.77,187.2,282.113,186.634Z" transform="translate(-206.547 -120.063)" fill="#d6d6e3"/><path d="M348.322,268.411,314.078,361.05S347.19,298.41,348.322,268.411Z" transform="translate(-288.324 -155.71)" opacity="0.1"/><path d="M42.759,41.183c-1.915-.114-3.784.533-5.686.782A14.391,14.391,0,0,1,21.691,31.235a8.232,8.232,0,0,0-.787-2.563c-1.047-1.709-3.431-2.033-5.4-1.642s-3.832,1.313-5.831,1.418a8.928,8.928,0,0,1-7.705-4.361A14.788,14.788,0,0,1,.082,15.154L1.564,16.71a7.526,7.526,0,0,0,.671-4.091,4.747,4.747,0,0,1,4.5,1.15c1.307.139.321-2.424,1.291-3.309a2.245,2.245,0,0,1,1.58-.3c2.779.027,5.028-2.1,7.218-3.811A30.673,30.673,0,0,1,29.774.446,17.04,17.04,0,0,1,39.226.9,20.191,20.191,0,0,1,45.61,5.432c4.66,4.481,8.787,9.746,10.725,15.913a26.788,26.788,0,0,1,.128,15.534c-.782,2.637-3.135,11.666-6.582,11.876C45.549,49.026,48.149,41.507,42.759,41.183Z" transform="translate(35.824 0) rotate(20.972)" fill="#090814"/><path d="M239.765,780.645s-7.484-4.637-8.419-2.782-4.677,9.738-4.677,9.738l-4.209,11.593s-25.728,16.231-3.742,17.159,27.6-11.593,27.6-11.593S271.1,794.094,267.36,787.6s-16.838-13.226-16.838-13.226S243.974,785.746,239.765,780.645Z" transform="translate(-153.81 -376.354)" fill="#090814"/></g><path d="M554.668,602.33a6.519,6.519,0,0,0-9.219,9.219l9.219,9.219,9.219-9.219a6.519,6.519,0,0,0-9.219-9.219Z" transform="matrix(0.839, 0.545, -0.545, 0.839, 537.609, -129.14)" fill="#38bdf8"/></g></svg>
|