@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,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simple SEO Hook
|
|
3
|
+
* Manages page title and meta description using native document API
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { useEffect } from 'react';
|
|
7
|
+
|
|
8
|
+
interface SEOOptions {
|
|
9
|
+
title?: string;
|
|
10
|
+
description?: string;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export const useSEO = ({
|
|
14
|
+
title = 'UIKit SPA Demo',
|
|
15
|
+
description = 'Professional React components with stunning themes and SPA routing'
|
|
16
|
+
}: SEOOptions = {}) => {
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
// Set page title
|
|
19
|
+
document.title = title;
|
|
20
|
+
|
|
21
|
+
// Set meta description
|
|
22
|
+
let meta = document.querySelector('meta[name="description"]');
|
|
23
|
+
if (!meta) {
|
|
24
|
+
meta = document.createElement('meta');
|
|
25
|
+
meta.setAttribute('name', 'description');
|
|
26
|
+
document.head.appendChild(meta);
|
|
27
|
+
}
|
|
28
|
+
meta.setAttribute('content', description);
|
|
29
|
+
|
|
30
|
+
// Set viewport if not already present
|
|
31
|
+
if (!document.querySelector('meta[name="viewport"]')) {
|
|
32
|
+
const viewport = document.createElement('meta');
|
|
33
|
+
viewport.setAttribute('name', 'viewport');
|
|
34
|
+
viewport.setAttribute('content', 'width=device-width, initial-scale=1.0');
|
|
35
|
+
document.head.appendChild(viewport);
|
|
36
|
+
}
|
|
37
|
+
}, [title, description]);
|
|
38
|
+
};
|
|
@@ -0,0 +1,58 @@
|
|
|
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>UIKit SPA Template</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="UIKit Single-Page App">
|
|
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="UIKit Single-Page App">
|
|
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="#10B981">
|
|
32
|
+
</head>
|
|
33
|
+
<body>
|
|
34
|
+
<div id="root"></div>
|
|
35
|
+
<script type="module" src="/src/main.tsx"></script>
|
|
36
|
+
|
|
37
|
+
<!-- Structured Data -->
|
|
38
|
+
<script type="application/ld+json">
|
|
39
|
+
{
|
|
40
|
+
"@context": "https://schema.org",
|
|
41
|
+
"@type": "WebApplication",
|
|
42
|
+
"name": "UIKit Single-Page App",
|
|
43
|
+
"description": "Professional React UI components with beautiful themes",
|
|
44
|
+
"applicationCategory": "DesignApplication",
|
|
45
|
+
"operatingSystem": "Web",
|
|
46
|
+
"offers": {
|
|
47
|
+
"@type": "Offer",
|
|
48
|
+
"price": "0",
|
|
49
|
+
"priceCurrency": "USD"
|
|
50
|
+
},
|
|
51
|
+
"author": {
|
|
52
|
+
"@type": "Organization",
|
|
53
|
+
"name": "@bloomneo/uikit"
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
</script>
|
|
57
|
+
</body>
|
|
58
|
+
</html>
|
|
@@ -0,0 +1,35 @@
|
|
|
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
|
+
"react-router-dom": "^7.0.0",
|
|
23
|
+
"lucide-react": "latest"
|
|
24
|
+
},
|
|
25
|
+
"devDependencies": {
|
|
26
|
+
"@types/node": "^24.0.0",
|
|
27
|
+
"@types/react": "^19.1.0",
|
|
28
|
+
"@types/react-dom": "^19.1.0",
|
|
29
|
+
"@vitejs/plugin-react": "^4.2.1",
|
|
30
|
+
"typescript": "^5.8.0",
|
|
31
|
+
"vite": "^7.0.0",
|
|
32
|
+
"tailwindcss": "^4.1.8",
|
|
33
|
+
"gh-pages": "^6.3.0"
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
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(#rainbowGradient)"/>
|
|
3
|
+
<text x="16" y="20" font-family="Inter, system-ui, sans-serif" font-size="12" font-weight="900" text-anchor="middle" fill="black" letter-spacing="1px">UI</text>
|
|
4
|
+
<defs>
|
|
5
|
+
<linearGradient id="rainbowGradient" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
6
|
+
<stop offset="0%" style="stop-color:#FF6B9D;stop-opacity:1" />
|
|
7
|
+
<stop offset="16%" style="stop-color:#FF8A65;stop-opacity:1" />
|
|
8
|
+
<stop offset="32%" style="stop-color:#FFD54F;stop-opacity:1" />
|
|
9
|
+
<stop offset="48%" style="stop-color:#81C784;stop-opacity:1" />
|
|
10
|
+
<stop offset="64%" style="stop-color:#64B5F6;stop-opacity:1" />
|
|
11
|
+
<stop offset="80%" style="stop-color:#9575CD;stop-opacity:1" />
|
|
12
|
+
<stop offset="100%" style="stop-color:#F06292;stop-opacity:1" />
|
|
13
|
+
</linearGradient>
|
|
14
|
+
</defs>
|
|
15
|
+
</svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="740.67538" height="473.94856" viewBox="0 0 740.67538 473.94856" xmlns:xlink="http://www.w3.org/1999/xlink" role="img" artist="Katerina Limpitsouni" source="https://undraw.co/"><path d="M341.17319,342.44851a122.0417,122.0417,0,0,1,10.10051-38.51722q2.27961-5.09249,5.01812-9.96076a.7438.7438,0,0,0-1.28353-.75026,123.72825,123.72825,0,0,0-13.7678,37.98231q-1.03367,5.58356-1.55378,11.24593c-.08811.95214,1.39893.94613,1.48648,0Z" transform="translate(-229.66231 -213.02572)" fill="#e6e6e6"/><circle cx="130.22983" cy="73.9144" r="9.4144" fill="#e6e6e6"/><path d="M342.13622,342.69855a79.17409,79.17409,0,0,1,6.55267-24.98792q1.47889-3.30372,3.25549-6.462a.48254.48254,0,0,0-.83269-.48673,80.26843,80.26843,0,0,0-8.93181,24.64089q-.67059,3.6223-1.008,7.29576c-.05716.6177.90755.6138.96435,0Z" transform="translate(-229.66231 -213.02572)" fill="#e6e6e6"/><circle cx="124.61776" cy="93.66195" r="6.10756" fill="#e6e6e6"/><path d="M340.91907,342.122a79.17418,79.17418,0,0,1-10.20241-23.73277q-.86592-3.51453-1.40763-7.09749a.48254.48254,0,0,0-.95593.12838,80.26861,80.26861,0,0,0,8.11306,24.92246q1.6992,3.26858,3.69253,6.37255c.33485.5222,1.09311-.07423.76038-.59313Z" transform="translate(-229.66231 -213.02572)" fill="#e6e6e6"/><circle cx="98.68311" cy="93.23322" r="6.10756" fill="#e6e6e6"/><path d="M322.16929,347.52572v-12a4.50508,4.50508,0,0,1,4.5-4.5h28a4.50508,4.50508,0,0,1,4.5,4.5v12a4.50508,4.50508,0,0,1-4.5,4.5h-28A4.50508,4.50508,0,0,1,322.16929,347.52572Z" transform="translate(-229.66231 -213.02572)" fill="#f2f2f2" style="isolation:isolate"/><path d="M353.66929,271.02572h-12a4.50508,4.50508,0,0,1-4.5-4.5v-49a4.50508,4.50508,0,0,1,4.5-4.5h12a4.50508,4.50508,0,0,1,4.5,4.5v49A4.50508,4.50508,0,0,1,353.66929,271.02572Z" transform="translate(-229.66231 -213.02572)" fill="#f2f2f2" style="isolation:isolate"/><rect x="108.00698" y="9.5" width="20" height="4" fill="#ccc"/><rect x="108.00698" y="40.5" width="20" height="4" fill="#ccc"/><path d="M383.66929,271.02572h-12a4.50508,4.50508,0,0,1-4.5-4.5v-49a4.50508,4.50508,0,0,1,4.5-4.5h12a4.50508,4.50508,0,0,1,4.5,4.5v49A4.50508,4.50508,0,0,1,383.66929,271.02572Z" transform="translate(-229.66231 -213.02572)" fill="#f2f2f2" style="isolation:isolate"/><rect x="138.00698" y="9.5" width="20" height="4" fill="#ccc"/><rect x="138.00698" y="40.5" width="20" height="4" fill="#ccc"/><path d="M413.66929,271.02572h-12a4.50508,4.50508,0,0,1-4.5-4.5v-49a4.50508,4.50508,0,0,1,4.5-4.5h12a4.50508,4.50508,0,0,1,4.5,4.5v49A4.50508,4.50508,0,0,1,413.66929,271.02572Z" transform="translate(-229.66231 -213.02572)" fill="#f2f2f2" style="isolation:isolate"/><rect x="168.00698" y="9.5" width="20" height="4" fill="#ccc"/><rect x="168.00698" y="40.5" width="20" height="4" fill="#ccc"/><path d="M429.66929,352.02572h-12a4.50508,4.50508,0,0,1-4.5-4.5v-49a4.50508,4.50508,0,0,1,4.5-4.5h12a4.50508,4.50508,0,0,1,4.5,4.5v49A4.50508,4.50508,0,0,1,429.66929,352.02572Z" transform="translate(-229.66231 -213.02572)" fill="#f2f2f2" style="isolation:isolate"/><rect x="184.00698" y="90.5" width="20" height="4" fill="#ccc"/><rect x="184.00698" y="121.5" width="20" height="4" fill="#ccc"/><path d="M459.66929,352.02572h-12a4.50508,4.50508,0,0,1-4.5-4.5v-49a4.50508,4.50508,0,0,1,4.5-4.5h12a4.50508,4.50508,0,0,1,4.5,4.5v49A4.50508,4.50508,0,0,1,459.66929,352.02572Z" transform="translate(-229.66231 -213.02572)" fill="#f2f2f2" style="isolation:isolate"/><rect x="214.00698" y="90.5" width="20" height="4" fill="#ccc"/><rect x="214.00698" y="121.5" width="20" height="4" fill="#ccc"/><path d="M489.66929,352.02572h-12a4.50508,4.50508,0,0,1-4.5-4.5v-49a4.50508,4.50508,0,0,1,4.5-4.5h12a4.50508,4.50508,0,0,1,4.5,4.5v49A4.50508,4.50508,0,0,1,489.66929,352.02572Z" transform="translate(-229.66231 -213.02572)" fill="#f2f2f2" style="isolation:isolate"/><rect x="244.00698" y="90.5" width="20" height="4" fill="#ccc"/><rect x="244.00698" y="121.5" width="20" height="4" fill="#ccc"/><path d="M350.66929,433.02572h-12a4.50508,4.50508,0,0,1-4.5-4.5v-49a4.50508,4.50508,0,0,1,4.5-4.5h12a4.50508,4.50508,0,0,1,4.5,4.5v49A4.50508,4.50508,0,0,1,350.66929,433.02572Z" transform="translate(-229.66231 -213.02572)" fill="#f2f2f2" style="isolation:isolate"/><rect x="105.00698" y="171.5" width="20" height="4" fill="#ccc"/><rect x="105.00698" y="202.5" width="20" height="4" fill="#ccc"/><path d="M380.66929,433.02572h-12a4.50508,4.50508,0,0,1-4.5-4.5v-49a4.50508,4.50508,0,0,1,4.5-4.5h12a4.50508,4.50508,0,0,1,4.5,4.5v49A4.50508,4.50508,0,0,1,380.66929,433.02572Z" transform="translate(-229.66231 -213.02572)" fill="#f2f2f2" style="isolation:isolate"/><rect x="135.00698" y="171.5" width="20" height="4" fill="#ccc"/><rect x="135.00698" y="202.5" width="20" height="4" fill="#ccc"/><path d="M410.66929,433.02572h-12a4.50508,4.50508,0,0,1-4.5-4.5v-49a4.50508,4.50508,0,0,1,4.5-4.5h12a4.50508,4.50508,0,0,1,4.5,4.5v49A4.50508,4.50508,0,0,1,410.66929,433.02572Z" transform="translate(-229.66231 -213.02572)" fill="#f2f2f2" style="isolation:isolate"/><rect x="165.00698" y="171.5" width="20" height="4" fill="#ccc"/><rect x="165.00698" y="202.5" width="20" height="4" fill="#ccc"/><path d="M443.66929,271.02572h-12a4.50508,4.50508,0,0,1-4.5-4.5v-49a4.50508,4.50508,0,0,1,4.5-4.5h12a4.50508,4.50508,0,0,1,4.5,4.5v49A4.50508,4.50508,0,0,1,443.66929,271.02572Z" transform="translate(-229.66231 -213.02572)" fill="#f2f2f2" style="isolation:isolate"/><rect x="198.00698" y="9.5" width="20" height="4" fill="#ccc"/><rect x="198.00698" y="40.5" width="20" height="4" fill="#ccc"/><path d="M473.66929,271.02572h-12a4.50508,4.50508,0,0,1-4.5-4.5v-49a4.50508,4.50508,0,0,1,4.5-4.5h12a4.50508,4.50508,0,0,1,4.5,4.5v49A4.50508,4.50508,0,0,1,473.66929,271.02572Z" transform="translate(-229.66231 -213.02572)" fill="#f2f2f2" style="isolation:isolate"/><rect x="228.00698" y="9.5" width="20" height="4" fill="#ccc"/><rect x="228.00698" y="40.5" width="20" height="4" fill="#ccc"/><path d="M503.66929,271.02572h-12a4.50508,4.50508,0,0,1-4.5-4.5v-49a4.50508,4.50508,0,0,1,4.5-4.5h12a4.50508,4.50508,0,0,1,4.5,4.5v49A4.50508,4.50508,0,0,1,503.66929,271.02572Z" transform="translate(-229.66231 -213.02572)" fill="#f2f2f2" style="isolation:isolate"/><rect x="258.00698" y="9.5" width="20" height="4" fill="#ccc"/><rect x="258.00698" y="40.5" width="20" height="4" fill="#ccc"/><path d="M533.66929,271.02572h-12a4.50508,4.50508,0,0,1-4.5-4.5v-49a4.50508,4.50508,0,0,1,4.5-4.5h12a4.50508,4.50508,0,0,1,4.5,4.5v49A4.50508,4.50508,0,0,1,533.66929,271.02572Z" transform="translate(-229.66231 -213.02572)" fill="#f2f2f2" style="isolation:isolate"/><rect x="288.00698" y="9.5" width="20" height="4" fill="#ccc"/><rect x="288.00698" y="40.5" width="20" height="4" fill="#ccc"/><path d="M578.61024,272.52572h-285a1,1,0,0,1,0-2h285a1,1,0,0,1,0,2Z" transform="translate(-229.66231 -213.02572)" fill="#ccc"/><path d="M578.61024,353.52572h-285a1,1,0,0,1,0-2h285a1,1,0,0,1,0,2Z" transform="translate(-229.66231 -213.02572)" fill="#ccc"/><path d="M578.61024,434.52572h-285a1,1,0,0,1,0-2h285a1,1,0,0,1,0,2Z" transform="translate(-229.66231 -213.02572)" fill="#ccc"/><path d="M561.73228,591.508c0-7.732-29.10156-14-65-14s-65,6.268-65,14c0,4.95545,11.96436,9.30622,30,11.79432V680.008a6.5,6.5,0,0,0,13,0V604.684c6.87207.53241,14.27686.824,22,.824s15.12793-.29162,22-.824v75.324a6.5,6.5,0,0,0,13,0V603.30232C549.76793,600.81422,561.73228,596.46345,561.73228,591.508Z" transform="translate(-229.66231 -213.02572)" fill="#ccc"/><polygon points="319.563 460.906 331.823 460.906 337.655 413.618 319.561 413.618 319.563 460.906" fill="#a0616a"/><path d="M546.59844,670.42825h38.53073a0,0,0,0,1,0,0v14.88687a0,0,0,0,1,0,0H561.4853a14.88686,14.88686,0,0,1-14.88686-14.88686v0A0,0,0,0,1,546.59844,670.42825Z" transform="translate(902.09624 1142.69183) rotate(179.99738)" fill="#2f2e41"/><polygon points="338.701 454.064 350.398 450.393 341.806 403.528 324.542 408.945 338.701 454.064" fill="#a0616a"/><path d="M566.15243,658.42388h38.53073a0,0,0,0,1,0,0v14.88687a0,0,0,0,1,0,0H581.03928a14.88686,14.88686,0,0,1-14.88686-14.88686v0A0,0,0,0,1,566.15243,658.42388Z" transform="translate(1113.68794 912.87602) rotate(162.57738)" fill="#2f2e41"/><path d="M560.16112,645.32445l-22.42725-58.87109c-5.03149,1.18164-47.22656,10.51855-61.35889-4.52832-4.84326-5.15723-5.78784-12.62891-2.80761-22.208l8.24756-10.36426.25634.01367c3.11841.16406,76.43531,4.27344,81.46119,26.38867,4.23754,18.64454,11.97656,53.40528,14.24731,63.61524a4.51573,4.51573,0,0,1-2.814,5.18359l-9.01928,3.38184a4.46228,4.46228,0,0,1-1.572.28613A4.51293,4.51293,0,0,1,560.16112,645.32445Z" transform="translate(-229.66231 -213.02572)" fill="#2f2e41"/><path d="M547.16112,652.32445l-22.42725-58.87109c-5.03174,1.18164-47.22656,10.51757-61.35889-4.52832-4.84326-5.15723-5.78784-12.62891-2.80761-22.208l8.24756-10.36426.25634.01367c3.11841.16406,76.43531,4.27344,81.46119,26.38867,4.23754,18.64454,11.97656,53.40528,14.24731,63.61524a4.51573,4.51573,0,0,1-2.814,5.18359l-9.01928,3.38184a4.46228,4.46228,0,0,1-1.572.28613A4.51293,4.51293,0,0,1,547.16112,652.32445Z" transform="translate(-229.66231 -213.02572)" fill="#2f2e41"/><path d="M577.46925,511.20192a10.52657,10.52657,0,0,0-.88488,1.40152l-49.32026,5.19623-7.09959-9.734-16.09071,8.79449,13.94447,23.62125,60.48739-15.42252a10.49579,10.49579,0,1,0-1.03642-13.857Z" transform="translate(-229.66231 -213.02572)" fill="#a0616a"/><path d="M460.25023,569.82543a4.50694,4.50694,0,0,1-1.81861-4.34864c2.78248-18.34277-.41894-44.61914-3.59472-63.43261a24.79543,24.79543,0,0,1,27.55932-28.76172,79.86459,79.86459,0,0,1,9.91285,1.9541h0a24.59626,24.59626,0,0,1,18.582,24.46777c-.47486,18.1543,3.21142,40.80567,4.81836,49.70117a4.51862,4.51862,0,0,1-.83374,3.51075,4.39229,4.39229,0,0,1-3.09546,1.75c-17.80811,1.81738-37.01221,10.50195-46.87451,15.5166a4.50062,4.50062,0,0,1-2.04956.501A4.42884,4.42884,0,0,1,460.25023,569.82543Z" transform="translate(-229.66231 -213.02572)" fill="#38bdf8"/><path d="M508.321,522.5139a4.47083,4.47083,0,0,1-2.47363-2.39746l-9.9314-22.94238a11.49973,11.49973,0,1,1,21.10718-9.13574l9.93164,22.94238a4.5057,4.5057,0,0,1-2.342,5.917l-12.8479,5.56153a4.46857,4.46857,0,0,1-3.44385.05468Z" transform="translate(-229.66231 -213.02572)" fill="#38bdf8"/><path d="M530.46925,509.20192a10.52657,10.52657,0,0,0-.88488,1.40152l-49.32026,5.19623-7.09959-9.734-16.09071,8.79449,13.94447,23.62125,60.48739-15.42252a10.49579,10.49579,0,1,0-1.03642-13.857Z" transform="translate(-229.66231 -213.02572)" fill="#a0616a"/><path d="M461.321,523.5139a4.47083,4.47083,0,0,1-2.47363-2.39746l-9.9314-22.94238a11.49973,11.49973,0,1,1,21.10718-9.13574l9.93164,22.94238a4.5057,4.5057,0,0,1-2.342,5.917l-12.8479,5.56153a4.46857,4.46857,0,0,1-3.44385.05468Z" transform="translate(-229.66231 -213.02572)" fill="#38bdf8"/><circle cx="250.90622" cy="227.89093" r="24.56103" fill="#a0616a"/><path d="M463.008,457.77336a2.13481,2.13481,0,0,1,1.85636-2.81906,4.93049,4.93049,0,0,1,3.4761,1.715,13.83414,13.83414,0,0,0,3.07115,2.63711c1.18812.59889,2.79953.51354,3.47686-.62825.636-1.0722.20022-2.508-.18483-3.75346a36.90711,36.90711,0,0,1-1.62991-9.77c-.11092-3.70031.41115-7.562,2.45972-10.44806,2.64387-3.72476,7.37142-5.13883,11.84544-5.03631s8.87547,1.48363,13.30714,2.35666c1.52991.30139,3.32825.45549,4.35152-.73025,1.08805-1.26082.68844-3.3014.22563-5.00376-1.20094-4.41743-2.475-8.98461-5.26525-12.55225a18.89838,18.89838,0,0,0-12.06081-6.79013,28.93848,28.93848,0,0,0-13.46236,1.52838,36.09622,36.09622,0,0,0-17.68285,12.3186,29.23591,29.23591,0,0,0-5.57809,21.60019,26.66717,26.66717,0,0,0,9.88579,16.85462Z" transform="translate(-229.66231 -213.02572)" fill="#2f2e41"/><path d="M369.22831,516.90206a122.0417,122.0417,0,0,1,10.10051-38.51722q2.27961-5.09249,5.01812-9.96076a.7438.7438,0,0,0-1.28353-.75026,123.72825,123.72825,0,0,0-13.7678,37.98231q-1.03368,5.58355-1.55378,11.24593c-.08812.95214,1.39892.94613,1.48648,0Z" transform="translate(-229.66231 -213.02572)" fill="#3f3d56"/><circle cx="158.28495" cy="248.36795" r="9.4144" fill="#38bdf8"/><path d="M370.19134,517.1521a79.17409,79.17409,0,0,1,6.55267-24.98792q1.47889-3.30372,3.25549-6.462a.48254.48254,0,0,0-.83269-.48673,80.26817,80.26817,0,0,0-8.93181,24.64089q-.67059,3.62231-1.008,7.29576c-.05716.6177.90755.6138.96435,0Z" transform="translate(-229.66231 -213.02572)" fill="#3f3d56"/><circle cx="152.67288" cy="268.1155" r="6.10756" fill="#38bdf8"/><path d="M368.97418,516.57556a79.17415,79.17415,0,0,1-10.2024-23.73277q-.86592-3.51453-1.40763-7.09749a.48254.48254,0,0,0-.95593.12838,80.26861,80.26861,0,0,0,8.11306,24.92246q1.69919,3.26857,3.69253,6.37255c.33485.5222,1.09311-.07423.76037-.59313Z" transform="translate(-229.66231 -213.02572)" fill="#3f3d56"/><circle cx="126.73823" cy="267.68677" r="6.10756" fill="#38bdf8"/><path d="M350.22441,521.97927v-12a4.50508,4.50508,0,0,1,4.5-4.5h28a4.50508,4.50508,0,0,1,4.5,4.5v12a4.50508,4.50508,0,0,1-4.5,4.5h-28A4.50508,4.50508,0,0,1,350.22441,521.97927Z" transform="translate(-229.66231 -213.02572)" fill="#ccc"/><rect x="289.06998" y="305.48228" width="86" height="7" rx="3.5" fill="#ccc"/><path d="M654.23228,525.508h-89a6.50736,6.50736,0,0,1-6.5-6.5v-49a6.50737,6.50737,0,0,1,6.5-6.5h89a6.50737,6.50737,0,0,1,6.5,6.5v49A6.50736,6.50736,0,0,1,654.23228,525.508Z" transform="translate(-229.66231 -213.02572)" fill="#ccc"/><circle cx="380.06998" cy="281.48228" r="6" fill="#fff"/><path d="M880.73228,591.508c0-7.732-29.10156-14-65-14s-65,6.268-65,14c0,4.95545,11.96436,9.30622,30,11.79432V680.008a6.5,6.5,0,0,0,13,0V604.684c6.87207.53241,14.27686.824,22,.824s15.12793-.29162,22-.824v75.324a6.5,6.5,0,0,0,13,0V603.30232C868.76793,600.81422,880.73228,596.46345,880.73228,591.508Z" transform="translate(-229.66231 -213.02572)" fill="#ccc"/><circle cx="593.25735" cy="222.33974" r="28" fill="#2f2e41"/><polygon points="523.577 461.906 511.317 461.906 505.485 414.618 523.579 414.618 523.577 461.906" fill="#ffb8b8"/><path d="M502.56,458.40253h23.64387a0,0,0,0,1,0,0v14.88687a0,0,0,0,1,0,0H487.67309a0,0,0,0,1,0,0v0A14.88686,14.88686,0,0,1,502.56,458.40253Z" fill="#2f2e41"/><polygon points="504.439 455.064 492.742 451.393 501.334 404.528 518.598 409.945 504.439 455.064" fill="#ffb8b8"/><path d="M712.66827,659.42388h23.64387a0,0,0,0,1,0,0v14.88687a0,0,0,0,1,0,0H697.78141a0,0,0,0,1,0,0v0A14.88686,14.88686,0,0,1,712.66827,659.42388Z" transform="translate(2.90601 -397.12769) rotate(17.42262)" fill="#2f2e41"/><path d="M738.09007,649.22191a4.46224,4.46224,0,0,1-1.572-.28613l-9.01929-3.38184a4.51573,4.51573,0,0,1-2.814-5.18359c2.27075-10.21,10.00976-44.9707,14.24731-63.61524,5.02588-22.11523,78.34278-26.22461,81.46118-26.38867l.25635-.01367L828.8972,560.717c2.98022,9.5791,2.03564,17.05078-2.80762,22.208-14.13232,15.04687-56.32739,5.71-61.35888,4.52832l-22.42725,58.87109A4.51293,4.51293,0,0,1,738.09007,649.22191Z" transform="translate(-229.66231 -213.02572)" fill="#2f2e41"/><path d="M751.09007,656.22191a4.46224,4.46224,0,0,1-1.572-.28613l-9.01929-3.38184a4.51573,4.51573,0,0,1-2.814-5.18359c2.27075-10.21,10.00976-44.9707,14.24731-63.61524,5.02588-22.11523,78.34278-26.22461,81.46118-26.38867l.25635-.01367L841.8972,567.717c2.98022,9.5791,2.03564,17.05078-2.80762,22.208-14.13232,15.04589-56.32715,5.71-61.35888,4.52832l-22.42725,58.87109A4.51293,4.51293,0,0,1,751.09007,656.22191Z" transform="translate(-229.66231 -213.02572)" fill="#2f2e41"/><path d="M724.99531,512.20192a10.52563,10.52563,0,0,1,.88489,1.40152l49.32026,5.19623,7.09959-9.734,16.09071,8.79449-13.94447,23.62125L723.9589,526.05891a10.4958,10.4958,0,1,1,1.03641-13.857Z" transform="translate(-229.66231 -213.02572)" fill="#ffb8b8"/><path d="M839.60838,571.68383a4.50062,4.50062,0,0,1-2.04956-.501c-9.8623-5.01465-29.06641-13.69922-46.87451-15.5166a4.39229,4.39229,0,0,1-3.09546-1.75,4.51858,4.51858,0,0,1-.83374-3.51075c1.60693-8.8955,5.29321-31.54687,4.81836-49.70117a24.59626,24.59626,0,0,1,18.582-24.46777h0a79.86445,79.86445,0,0,1,9.91284-1.9541,24.79544,24.79544,0,0,1,27.55933,28.76172c-3.17578,18.81347-6.3772,45.08984-3.59473,63.43261a4.50694,4.50694,0,0,1-1.8186,4.34864A4.42884,4.42884,0,0,1,839.60838,571.68383Z" transform="translate(-229.66231 -213.02572)" fill="#38bdf8"/><path d="M792.48631,523.83226a4.49628,4.49628,0,0,1-1.78662-.373l-12.8479-5.56153a4.50569,4.50569,0,0,1-2.342-5.917l9.93164-22.94238a11.49973,11.49973,0,1,1,21.10718,9.13574l-9.9314,22.94238a4.51063,4.51063,0,0,1-4.13086,2.71582Z" transform="translate(-229.66231 -213.02572)" fill="#38bdf8"/><circle cx="592.23373" cy="228.89093" r="24.56103" fill="#ffb8b8"/><path d="M796.89293,429.84957A88.59059,88.59059,0,0,0,835.21911,442.478l-4.03992-4.84061a29.68817,29.68817,0,0,0,9.17074,1.82105c3.13021-.04875,6.40987-1.254,8.18642-3.83171a9.342,9.342,0,0,0,.62531-8.62974,17.694,17.694,0,0,0-5.56636-6.96014,33.13951,33.13951,0,0,0-30.84447-5.51248,19.80609,19.80609,0,0,0-9.21238,5.90943c-2.32838,2.87238-6.81094,5.43156-5.61879,8.93167Z" transform="translate(-229.66231 -213.02572)" fill="#2f2e41"/><path d="M826.02581,410.0287a75.48471,75.48471,0,0,0-27.463-17.7592c-6.63872-2.45941-13.86459-3.97895-20.80509-2.58225s-13.50411,6.19807-15.44041,13.00778c-1.58332,5.56836.05158,11.56379,2.50871,16.80555s5.73758,10.10247,7.72463,15.53985a35.46793,35.46793,0,0,1-35.689,47.56227c6.81938.91437,13.10515,4.119,19.77076,5.82483s14.53281,1.59011,19.48624-3.18519c5.24091-5.05244,5.34584-13.26718,5.09245-20.54249l-1.13-32.445c-.1921-5.51543-.35615-11.20763,1.63288-16.35551s6.71617-9.65569,12.23475-9.60885c4.18253.0355,7.88442,2.56926,11.23865,5.068s6.90446,5.16474,11.0706,5.53641,8.92293-2.71144,8.61118-6.88249" transform="translate(-229.66231 -213.02572)" fill="#2f2e41"/><polygon points="482.197 281.087 538.75 282.422 546.943 342.878 494.716 344.05 482.197 281.087" fill="#e6e6e6"/><path d="M771.99531,510.20192a10.52563,10.52563,0,0,1,.88489,1.40152l49.32026,5.19623,7.09959-9.734,16.09071,8.79449-13.94447,23.62125L770.9589,524.05891a10.4958,10.4958,0,1,1,1.03641-13.857Z" transform="translate(-229.66231 -213.02572)" fill="#ffb8b8"/><path d="M839.48631,524.83226a4.49628,4.49628,0,0,1-1.78662-.373l-12.8479-5.56153a4.50569,4.50569,0,0,1-2.342-5.917l9.93164-22.94238a11.49973,11.49973,0,1,1,21.10718,9.13574l-9.9314,22.94238a4.51063,4.51063,0,0,1-4.13086,2.71582Z" transform="translate(-229.66231 -213.02572)" fill="#38bdf8"/><path d="M723.23228,524.508h-398a6.5,6.5,0,1,0,0,13h11.5v141.5a6.5,6.5,0,0,0,13,0V549.99806l72.8711,132.07788a6.5,6.5,0,0,0,11.2583-6.5L357.6859,537.508H705.73228v.08417l-76.1289,137.98377a6.49977,6.49977,0,1,0,11.25781,6.5l64.87109-117.57813V679.008a6.5,6.5,0,0,0,13,0V540.93537l1.89112-3.42737h2.60888a6.5,6.5,0,0,0,0-13Z" transform="translate(-229.66231 -213.02572)" fill="#3f3d56"/><path d="M969.147,686.97428H230.853a1.19069,1.19069,0,0,1,0-2.38137H969.147a1.19068,1.19068,0,0,1,0,2.38137Z" transform="translate(-229.66231 -213.02572)" fill="#3f3d56"/></svg>
|