@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.
Files changed (678) hide show
  1. package/CHANGELOG.md +222 -0
  2. package/LICENSE +21 -0
  3. package/README.md +513 -0
  4. package/bin/commands/build.js +232 -0
  5. package/bin/commands/bundle.js +587 -0
  6. package/bin/commands/create.js +768 -0
  7. package/bin/commands/deploy.js +533 -0
  8. package/bin/commands/generate.js +673 -0
  9. package/bin/commands/optimize.js +198 -0
  10. package/bin/commands/prerender.js +306 -0
  11. package/bin/commands/serve.js +216 -0
  12. package/bin/templates/fbca/README.md.template +130 -0
  13. package/bin/templates/fbca/docs/QUICKSTART_FBCA.md +368 -0
  14. package/bin/templates/fbca/docs/UIKIT_CLI_GUIDE.md +574 -0
  15. package/bin/templates/fbca/docs/UIKIT_COMPOSITE_UI_SYSTEM.md +649 -0
  16. package/bin/templates/fbca/docs/UIKIT_LLM_GUIDE.md +2055 -0
  17. package/bin/templates/fbca/docs/UIKIT_THEME_GUIDE.md +359 -0
  18. package/bin/templates/fbca/package.json.template +41 -0
  19. package/bin/templates/fbca/public/favicon.svg +10 -0
  20. package/bin/templates/fbca/public/hero_fbca.svg +1 -0
  21. package/bin/templates/fbca/src/utils/asset.ts +6 -0
  22. package/bin/templates/fbca/src/web/App.tsx.template +20 -0
  23. package/bin/templates/fbca/src/web/features/auth/pages/index.tsx.template +157 -0
  24. package/bin/templates/fbca/src/web/features/docs/pages/[...slug].tsx.template +83 -0
  25. package/bin/templates/fbca/src/web/features/gallery/hooks/useGallery.ts.template +74 -0
  26. package/bin/templates/fbca/src/web/features/gallery/pages/index.tsx.template +136 -0
  27. package/bin/templates/fbca/src/web/features/main/components/CTASection.tsx.template +43 -0
  28. package/bin/templates/fbca/src/web/features/main/pages/About.tsx.template +374 -0
  29. package/bin/templates/fbca/src/web/features/main/pages/index.tsx.template +214 -0
  30. package/bin/templates/fbca/src/web/index.html.template +15 -0
  31. package/bin/templates/fbca/src/web/lib/page-router.tsx.template +134 -0
  32. package/bin/templates/fbca/src/web/main.tsx.template +14 -0
  33. package/bin/templates/fbca/src/web/shared/components/Footer.tsx.template +57 -0
  34. package/bin/templates/fbca/src/web/shared/components/Header.tsx.template +91 -0
  35. package/bin/templates/fbca/src/web/shared/components/SEO.tsx.template +24 -0
  36. package/bin/templates/fbca/src/web/shared/components/index.ts.template +3 -0
  37. package/bin/templates/fbca/src/web/shared/hooks/useSEO.ts.template +85 -0
  38. package/bin/templates/fbca/src/web/shared/utils/asset.ts +6 -0
  39. package/bin/templates/fbca/src/web/styles/index.css.template +8 -0
  40. package/bin/templates/fbca/src/web/utils/asset.ts +6 -0
  41. package/bin/templates/fbca/tsconfig.json.template +32 -0
  42. package/bin/templates/fbca/tsconfig.node.json.template +10 -0
  43. package/bin/templates/fbca/vite.config.ts.template +38 -0
  44. package/bin/templates/generate/component/component.tsx.template +79 -0
  45. package/bin/templates/generate/component/index.ts.template +2 -0
  46. package/bin/templates/generate/component/types.ts.template +58 -0
  47. package/bin/templates/generate/feature/index.ts.template +14 -0
  48. package/bin/templates/generate/feature/list-page.tsx.template +34 -0
  49. package/bin/templates/generate/feature/main-component.tsx.template +37 -0
  50. package/bin/templates/generate/feature/main-page.tsx.template +30 -0
  51. package/bin/templates/generate/feature/types.ts.template +34 -0
  52. package/bin/templates/generate/hook/hook.ts.template +35 -0
  53. package/bin/templates/generate/index.css.template +10 -0
  54. package/bin/templates/generate/main.tsx.template +10 -0
  55. package/bin/templates/generate/page/index.ts.template +2 -0
  56. package/bin/templates/generate/page/page.tsx.template +86 -0
  57. package/bin/templates/generate/theme/README.md +31 -0
  58. package/bin/templates/generate/theme/theme.js.template +155 -0
  59. package/bin/templates/multi/README.md.template +120 -0
  60. package/bin/templates/multi/docs/QUICKSTART_MULTI.md +334 -0
  61. package/bin/templates/multi/docs/UIKIT_CLI_GUIDE.md +574 -0
  62. package/bin/templates/multi/docs/UIKIT_COMPOSITE_UI_SYSTEM.md +649 -0
  63. package/bin/templates/multi/docs/UIKIT_LLM_GUIDE.md +2055 -0
  64. package/bin/templates/multi/docs/UIKIT_THEME_GUIDE.md +359 -0
  65. package/bin/templates/multi/index.html.template +58 -0
  66. package/bin/templates/multi/package.json.template +35 -0
  67. package/bin/templates/multi/public/favicon.svg +10 -0
  68. package/bin/templates/multi/public/hero_multi.svg +1 -0
  69. package/bin/templates/multi/src/App.tsx.template +92 -0
  70. package/bin/templates/multi/src/components/Footer.tsx.template +58 -0
  71. package/bin/templates/multi/src/components/Header.tsx.template +103 -0
  72. package/bin/templates/multi/src/components/SEO.tsx.template +19 -0
  73. package/bin/templates/multi/src/components/index.ts.template +3 -0
  74. package/bin/templates/multi/src/hooks/useSEO.ts.template +38 -0
  75. package/bin/templates/multi/src/index.css.template +7 -0
  76. package/bin/templates/multi/src/main.tsx.template +14 -0
  77. package/bin/templates/multi/src/pages/About.tsx.template +276 -0
  78. package/bin/templates/multi/src/pages/Components.tsx.template +288 -0
  79. package/bin/templates/multi/src/pages/Contact.tsx.template +348 -0
  80. package/bin/templates/multi/src/pages/Dashboard.tsx.template +306 -0
  81. package/bin/templates/multi/src/pages/ErrorPage.tsx.template +37 -0
  82. package/bin/templates/multi/src/pages/Home.tsx.template +201 -0
  83. package/bin/templates/multi/src/pages/Login.tsx.template +148 -0
  84. package/bin/templates/multi/src/pages/Themes.tsx.template +207 -0
  85. package/bin/templates/multi/src/router.tsx.template +34 -0
  86. package/bin/templates/multi/src/utils/asset.ts +6 -0
  87. package/bin/templates/multi/tsconfig.json.template +30 -0
  88. package/bin/templates/multi/tsconfig.node.json +22 -0
  89. package/bin/templates/multi/vite.config.ts.template +36 -0
  90. package/bin/templates/single/README.md.template +131 -0
  91. package/bin/templates/single/docs/QUICKSTART_SINGLE.md +259 -0
  92. package/bin/templates/single/docs/UIKIT_CLI_GUIDE.md +574 -0
  93. package/bin/templates/single/docs/UIKIT_COMPOSITE_UI_SYSTEM.md +649 -0
  94. package/bin/templates/single/docs/UIKIT_LLM_GUIDE.md +2055 -0
  95. package/bin/templates/single/docs/UIKIT_THEME_GUIDE.md +359 -0
  96. package/bin/templates/single/index.html.template +37 -0
  97. package/bin/templates/single/package.json.template +34 -0
  98. package/bin/templates/single/public/favicon.svg +10 -0
  99. package/bin/templates/single/public/hero.svg +1 -0
  100. package/bin/templates/single/src/App.tsx.template +233 -0
  101. package/bin/templates/single/src/index.css.template +7 -0
  102. package/bin/templates/single/src/main.tsx.template +14 -0
  103. package/bin/templates/single/src/styles/fonts.css +99 -0
  104. package/bin/templates/single/src/utils/asset.ts +6 -0
  105. package/bin/templates/single/tsconfig.json +31 -0
  106. package/bin/templates/single/tsconfig.node.json +22 -0
  107. package/bin/templates/single/vite.config.ts.template +36 -0
  108. package/bin/templates/spa/README.md.template +105 -0
  109. package/bin/templates/spa/components/SEO.tsx.template +19 -0
  110. package/bin/templates/spa/docs/QUICKSTART_SPA.md +300 -0
  111. package/bin/templates/spa/docs/UIKIT_CLI_GUIDE.md +574 -0
  112. package/bin/templates/spa/docs/UIKIT_COMPOSITE_UI_SYSTEM.md +649 -0
  113. package/bin/templates/spa/docs/UIKIT_LLM_GUIDE.md +2055 -0
  114. package/bin/templates/spa/docs/UIKIT_THEME_GUIDE.md +359 -0
  115. package/bin/templates/spa/hooks/useSEO.ts.template +38 -0
  116. package/bin/templates/spa/index.html.template +58 -0
  117. package/bin/templates/spa/package.json.template +35 -0
  118. package/bin/templates/spa/public/favicon.svg +15 -0
  119. package/bin/templates/spa/public/hero_spa.svg +1 -0
  120. package/bin/templates/spa/src/App.tsx.template +659 -0
  121. package/bin/templates/spa/src/index.css.template +7 -0
  122. package/bin/templates/spa/src/main.tsx.template +14 -0
  123. package/bin/templates/spa/src/utils/asset.ts +6 -0
  124. package/bin/templates/spa/tsconfig.json.template +30 -0
  125. package/bin/templates/spa/tsconfig.node.json +22 -0
  126. package/bin/templates/spa/vite.config.ts.template +36 -0
  127. package/bin/uikit.js +133 -0
  128. package/cookbook/README.md +20 -0
  129. package/cookbook/crud-page.tsx +99 -0
  130. package/cookbook/dashboard.tsx +89 -0
  131. package/cookbook/delete-flow.tsx +59 -0
  132. package/cookbook/login.tsx +85 -0
  133. package/cookbook/settings.tsx +113 -0
  134. package/dist/Combination-C0DFrmJW.js +674 -0
  135. package/dist/Combination-C0DFrmJW.js.map +1 -0
  136. package/dist/accordion.js +284 -0
  137. package/dist/accordion.js.map +1 -0
  138. package/dist/admin.js +429 -0
  139. package/dist/admin.js.map +1 -0
  140. package/dist/alert.js +67 -0
  141. package/dist/alert.js.map +1 -0
  142. package/dist/auth.js +178 -0
  143. package/dist/auth.js.map +1 -0
  144. package/dist/avatar.js +249 -0
  145. package/dist/avatar.js.map +1 -0
  146. package/dist/badge.js +40 -0
  147. package/dist/badge.js.map +1 -0
  148. package/dist/blank.js +80 -0
  149. package/dist/blank.js.map +1 -0
  150. package/dist/breadcrumb.js +104 -0
  151. package/dist/breadcrumb.js.map +1 -0
  152. package/dist/button.js +50 -0
  153. package/dist/button.js.map +1 -0
  154. package/dist/calendar.js +2785 -0
  155. package/dist/calendar.js.map +1 -0
  156. package/dist/card.js +91 -0
  157. package/dist/card.js.map +1 -0
  158. package/dist/check-DXouwtzp.js +12 -0
  159. package/dist/check-DXouwtzp.js.map +1 -0
  160. package/dist/checkbox.js +268 -0
  161. package/dist/checkbox.js.map +1 -0
  162. package/dist/chevron-down-BORJtX8F.js +14 -0
  163. package/dist/chevron-down-BORJtX8F.js.map +1 -0
  164. package/dist/chevron-left-C1pkx4AF.js +14 -0
  165. package/dist/chevron-left-C1pkx4AF.js.map +1 -0
  166. package/dist/chevron-right-pz9eCjj-.js +14 -0
  167. package/dist/chevron-right-pz9eCjj-.js.map +1 -0
  168. package/dist/circle-DHOdTDQh.js +14 -0
  169. package/dist/circle-DHOdTDQh.js.map +1 -0
  170. package/dist/collapsible.js +35 -0
  171. package/dist/collapsible.js.map +1 -0
  172. package/dist/command.js +481 -0
  173. package/dist/command.js.map +1 -0
  174. package/dist/confirm-dialog.js +129 -0
  175. package/dist/confirm-dialog.js.map +1 -0
  176. package/dist/container.js +334 -0
  177. package/dist/container.js.map +1 -0
  178. package/dist/createLucideIcon-B45kRl5r.js +80 -0
  179. package/dist/createLucideIcon-B45kRl5r.js.map +1 -0
  180. package/dist/data-table.js +574 -0
  181. package/dist/data-table.js.map +1 -0
  182. package/dist/detail-page.js +454 -0
  183. package/dist/detail-page.js.map +1 -0
  184. package/dist/dialog.js +137 -0
  185. package/dist/dialog.js.map +1 -0
  186. package/dist/dropdown-menu.js +424 -0
  187. package/dist/dropdown-menu.js.map +1 -0
  188. package/dist/ellipsis-BhAoKPVk.js +16 -0
  189. package/dist/ellipsis-BhAoKPVk.js.map +1 -0
  190. package/dist/empty-state.js +54 -0
  191. package/dist/empty-state.js.map +1 -0
  192. package/dist/errors.js +36 -0
  193. package/dist/errors.js.map +1 -0
  194. package/dist/eye-DDKoW0KS.js +46 -0
  195. package/dist/eye-DDKoW0KS.js.map +1 -0
  196. package/dist/fonts/caveat-cyrillic-400-normal.woff +0 -0
  197. package/dist/fonts/caveat-cyrillic-400-normal.woff2 +0 -0
  198. package/dist/fonts/caveat-cyrillic-700-normal.woff +0 -0
  199. package/dist/fonts/caveat-cyrillic-700-normal.woff2 +0 -0
  200. package/dist/fonts/caveat-cyrillic-ext-400-normal.woff +0 -0
  201. package/dist/fonts/caveat-cyrillic-ext-400-normal.woff2 +0 -0
  202. package/dist/fonts/caveat-cyrillic-ext-700-normal.woff +0 -0
  203. package/dist/fonts/caveat-cyrillic-ext-700-normal.woff2 +0 -0
  204. package/dist/fonts/caveat-latin-400-normal.woff +0 -0
  205. package/dist/fonts/caveat-latin-400-normal.woff2 +0 -0
  206. package/dist/fonts/caveat-latin-700-normal.woff +0 -0
  207. package/dist/fonts/caveat-latin-700-normal.woff2 +0 -0
  208. package/dist/fonts/caveat-latin-ext-400-normal.woff +0 -0
  209. package/dist/fonts/caveat-latin-ext-400-normal.woff2 +0 -0
  210. package/dist/fonts/caveat-latin-ext-700-normal.woff +0 -0
  211. package/dist/fonts/caveat-latin-ext-700-normal.woff2 +0 -0
  212. package/dist/fonts/crimson-text-latin-400-normal.woff +0 -0
  213. package/dist/fonts/crimson-text-latin-400-normal.woff2 +0 -0
  214. package/dist/fonts/crimson-text-latin-600-normal.woff +0 -0
  215. package/dist/fonts/crimson-text-latin-600-normal.woff2 +0 -0
  216. package/dist/fonts/crimson-text-latin-700-normal.woff +0 -0
  217. package/dist/fonts/crimson-text-latin-700-normal.woff2 +0 -0
  218. package/dist/fonts/crimson-text-latin-ext-400-normal.woff +0 -0
  219. package/dist/fonts/crimson-text-latin-ext-400-normal.woff2 +0 -0
  220. package/dist/fonts/crimson-text-latin-ext-600-normal.woff +0 -0
  221. package/dist/fonts/crimson-text-latin-ext-600-normal.woff2 +0 -0
  222. package/dist/fonts/crimson-text-latin-ext-700-normal.woff +0 -0
  223. package/dist/fonts/crimson-text-latin-ext-700-normal.woff2 +0 -0
  224. package/dist/fonts/crimson-text-vietnamese-400-normal.woff +0 -0
  225. package/dist/fonts/crimson-text-vietnamese-400-normal.woff2 +0 -0
  226. package/dist/fonts/crimson-text-vietnamese-600-normal.woff +0 -0
  227. package/dist/fonts/crimson-text-vietnamese-600-normal.woff2 +0 -0
  228. package/dist/fonts/crimson-text-vietnamese-700-normal.woff +0 -0
  229. package/dist/fonts/crimson-text-vietnamese-700-normal.woff2 +0 -0
  230. package/dist/fonts/dm-serif-display-latin-400-normal.woff +0 -0
  231. package/dist/fonts/dm-serif-display-latin-400-normal.woff2 +0 -0
  232. package/dist/fonts/dm-serif-display-latin-ext-400-normal.woff +0 -0
  233. package/dist/fonts/dm-serif-display-latin-ext-400-normal.woff2 +0 -0
  234. package/dist/fonts/libre-baskerville-latin-400-normal.woff +0 -0
  235. package/dist/fonts/libre-baskerville-latin-400-normal.woff2 +0 -0
  236. package/dist/fonts/libre-baskerville-latin-700-normal.woff +0 -0
  237. package/dist/fonts/libre-baskerville-latin-700-normal.woff2 +0 -0
  238. package/dist/fonts/libre-baskerville-latin-ext-400-normal.woff +0 -0
  239. package/dist/fonts/libre-baskerville-latin-ext-400-normal.woff2 +0 -0
  240. package/dist/fonts/libre-baskerville-latin-ext-700-normal.woff +0 -0
  241. package/dist/fonts/libre-baskerville-latin-ext-700-normal.woff2 +0 -0
  242. package/dist/fonts/montserrat-cyrillic-400-normal.woff +0 -0
  243. package/dist/fonts/montserrat-cyrillic-400-normal.woff2 +0 -0
  244. package/dist/fonts/montserrat-cyrillic-500-normal.woff +0 -0
  245. package/dist/fonts/montserrat-cyrillic-500-normal.woff2 +0 -0
  246. package/dist/fonts/montserrat-cyrillic-600-normal.woff +0 -0
  247. package/dist/fonts/montserrat-cyrillic-600-normal.woff2 +0 -0
  248. package/dist/fonts/montserrat-cyrillic-ext-400-normal.woff +0 -0
  249. package/dist/fonts/montserrat-cyrillic-ext-400-normal.woff2 +0 -0
  250. package/dist/fonts/montserrat-cyrillic-ext-500-normal.woff +0 -0
  251. package/dist/fonts/montserrat-cyrillic-ext-500-normal.woff2 +0 -0
  252. package/dist/fonts/montserrat-cyrillic-ext-600-normal.woff +0 -0
  253. package/dist/fonts/montserrat-cyrillic-ext-600-normal.woff2 +0 -0
  254. package/dist/fonts/montserrat-latin-400-normal.woff +0 -0
  255. package/dist/fonts/montserrat-latin-400-normal.woff2 +0 -0
  256. package/dist/fonts/montserrat-latin-500-normal.woff +0 -0
  257. package/dist/fonts/montserrat-latin-500-normal.woff2 +0 -0
  258. package/dist/fonts/montserrat-latin-600-normal.woff +0 -0
  259. package/dist/fonts/montserrat-latin-600-normal.woff2 +0 -0
  260. package/dist/fonts/montserrat-latin-ext-400-normal.woff +0 -0
  261. package/dist/fonts/montserrat-latin-ext-400-normal.woff2 +0 -0
  262. package/dist/fonts/montserrat-latin-ext-500-normal.woff +0 -0
  263. package/dist/fonts/montserrat-latin-ext-500-normal.woff2 +0 -0
  264. package/dist/fonts/montserrat-latin-ext-600-normal.woff +0 -0
  265. package/dist/fonts/montserrat-latin-ext-600-normal.woff2 +0 -0
  266. package/dist/fonts/montserrat-vietnamese-400-normal.woff +0 -0
  267. package/dist/fonts/montserrat-vietnamese-400-normal.woff2 +0 -0
  268. package/dist/fonts/montserrat-vietnamese-500-normal.woff +0 -0
  269. package/dist/fonts/montserrat-vietnamese-500-normal.woff2 +0 -0
  270. package/dist/fonts/montserrat-vietnamese-600-normal.woff +0 -0
  271. package/dist/fonts/montserrat-vietnamese-600-normal.woff2 +0 -0
  272. package/dist/fonts/playfair-display-cyrillic-400-normal.woff +0 -0
  273. package/dist/fonts/playfair-display-cyrillic-400-normal.woff2 +0 -0
  274. package/dist/fonts/playfair-display-cyrillic-500-normal.woff +0 -0
  275. package/dist/fonts/playfair-display-cyrillic-500-normal.woff2 +0 -0
  276. package/dist/fonts/playfair-display-latin-400-normal.woff +0 -0
  277. package/dist/fonts/playfair-display-latin-400-normal.woff2 +0 -0
  278. package/dist/fonts/playfair-display-latin-500-normal.woff +0 -0
  279. package/dist/fonts/playfair-display-latin-500-normal.woff2 +0 -0
  280. package/dist/fonts/playfair-display-latin-ext-400-normal.woff +0 -0
  281. package/dist/fonts/playfair-display-latin-ext-400-normal.woff2 +0 -0
  282. package/dist/fonts/playfair-display-latin-ext-500-normal.woff +0 -0
  283. package/dist/fonts/playfair-display-latin-ext-500-normal.woff2 +0 -0
  284. package/dist/fonts/playfair-display-vietnamese-400-normal.woff +0 -0
  285. package/dist/fonts/playfair-display-vietnamese-400-normal.woff2 +0 -0
  286. package/dist/fonts/playfair-display-vietnamese-500-normal.woff +0 -0
  287. package/dist/fonts/playfair-display-vietnamese-500-normal.woff2 +0 -0
  288. package/dist/fonts/poppins-devanagari-400-normal.woff +0 -0
  289. package/dist/fonts/poppins-devanagari-400-normal.woff2 +0 -0
  290. package/dist/fonts/poppins-devanagari-500-normal.woff +0 -0
  291. package/dist/fonts/poppins-devanagari-500-normal.woff2 +0 -0
  292. package/dist/fonts/poppins-devanagari-600-normal.woff +0 -0
  293. package/dist/fonts/poppins-devanagari-600-normal.woff2 +0 -0
  294. package/dist/fonts/poppins-latin-400-normal.woff +0 -0
  295. package/dist/fonts/poppins-latin-400-normal.woff2 +0 -0
  296. package/dist/fonts/poppins-latin-500-normal.woff +0 -0
  297. package/dist/fonts/poppins-latin-500-normal.woff2 +0 -0
  298. package/dist/fonts/poppins-latin-600-normal.woff +0 -0
  299. package/dist/fonts/poppins-latin-600-normal.woff2 +0 -0
  300. package/dist/fonts/poppins-latin-ext-400-normal.woff +0 -0
  301. package/dist/fonts/poppins-latin-ext-400-normal.woff2 +0 -0
  302. package/dist/fonts/poppins-latin-ext-500-normal.woff +0 -0
  303. package/dist/fonts/poppins-latin-ext-500-normal.woff2 +0 -0
  304. package/dist/fonts/poppins-latin-ext-600-normal.woff +0 -0
  305. package/dist/fonts/poppins-latin-ext-600-normal.woff2 +0 -0
  306. package/dist/fonts/rubik-arabic-400-normal.woff +0 -0
  307. package/dist/fonts/rubik-arabic-400-normal.woff2 +0 -0
  308. package/dist/fonts/rubik-arabic-500-normal.woff +0 -0
  309. package/dist/fonts/rubik-arabic-500-normal.woff2 +0 -0
  310. package/dist/fonts/rubik-cyrillic-400-normal.woff +0 -0
  311. package/dist/fonts/rubik-cyrillic-400-normal.woff2 +0 -0
  312. package/dist/fonts/rubik-cyrillic-500-normal.woff +0 -0
  313. package/dist/fonts/rubik-cyrillic-500-normal.woff2 +0 -0
  314. package/dist/fonts/rubik-cyrillic-ext-400-normal.woff +0 -0
  315. package/dist/fonts/rubik-cyrillic-ext-400-normal.woff2 +0 -0
  316. package/dist/fonts/rubik-cyrillic-ext-500-normal.woff +0 -0
  317. package/dist/fonts/rubik-cyrillic-ext-500-normal.woff2 +0 -0
  318. package/dist/fonts/rubik-hebrew-400-normal.woff +0 -0
  319. package/dist/fonts/rubik-hebrew-400-normal.woff2 +0 -0
  320. package/dist/fonts/rubik-hebrew-500-normal.woff +0 -0
  321. package/dist/fonts/rubik-hebrew-500-normal.woff2 +0 -0
  322. package/dist/fonts/rubik-latin-400-normal.woff +0 -0
  323. package/dist/fonts/rubik-latin-400-normal.woff2 +0 -0
  324. package/dist/fonts/rubik-latin-500-normal.woff +0 -0
  325. package/dist/fonts/rubik-latin-500-normal.woff2 +0 -0
  326. package/dist/fonts/rubik-latin-ext-400-normal.woff +0 -0
  327. package/dist/fonts/rubik-latin-ext-400-normal.woff2 +0 -0
  328. package/dist/fonts/rubik-latin-ext-500-normal.woff +0 -0
  329. package/dist/fonts/rubik-latin-ext-500-normal.woff2 +0 -0
  330. package/dist/fonts/source-serif-pro-cyrillic-400-normal.woff +0 -0
  331. package/dist/fonts/source-serif-pro-cyrillic-400-normal.woff2 +0 -0
  332. package/dist/fonts/source-serif-pro-cyrillic-ext-400-normal.woff +0 -0
  333. package/dist/fonts/source-serif-pro-cyrillic-ext-400-normal.woff2 +0 -0
  334. package/dist/fonts/source-serif-pro-greek-400-normal.woff +0 -0
  335. package/dist/fonts/source-serif-pro-greek-400-normal.woff2 +0 -0
  336. package/dist/fonts/source-serif-pro-latin-400-normal.woff +0 -0
  337. package/dist/fonts/source-serif-pro-latin-400-normal.woff2 +0 -0
  338. package/dist/fonts/source-serif-pro-latin-ext-400-normal.woff +0 -0
  339. package/dist/fonts/source-serif-pro-latin-ext-400-normal.woff2 +0 -0
  340. package/dist/fonts/source-serif-pro-vietnamese-400-normal.woff +0 -0
  341. package/dist/fonts/source-serif-pro-vietnamese-400-normal.woff2 +0 -0
  342. package/dist/fonts/space-grotesk-latin-400-normal.woff +0 -0
  343. package/dist/fonts/space-grotesk-latin-400-normal.woff2 +0 -0
  344. package/dist/fonts/space-grotesk-latin-600-normal.woff +0 -0
  345. package/dist/fonts/space-grotesk-latin-600-normal.woff2 +0 -0
  346. package/dist/fonts/space-grotesk-latin-700-normal.woff +0 -0
  347. package/dist/fonts/space-grotesk-latin-700-normal.woff2 +0 -0
  348. package/dist/fonts/space-grotesk-latin-ext-400-normal.woff +0 -0
  349. package/dist/fonts/space-grotesk-latin-ext-400-normal.woff2 +0 -0
  350. package/dist/fonts/space-grotesk-latin-ext-600-normal.woff +0 -0
  351. package/dist/fonts/space-grotesk-latin-ext-600-normal.woff2 +0 -0
  352. package/dist/fonts/space-grotesk-latin-ext-700-normal.woff +0 -0
  353. package/dist/fonts/space-grotesk-latin-ext-700-normal.woff2 +0 -0
  354. package/dist/fonts/space-grotesk-vietnamese-400-normal.woff +0 -0
  355. package/dist/fonts/space-grotesk-vietnamese-400-normal.woff2 +0 -0
  356. package/dist/fonts/space-grotesk-vietnamese-600-normal.woff +0 -0
  357. package/dist/fonts/space-grotesk-vietnamese-600-normal.woff2 +0 -0
  358. package/dist/fonts/space-grotesk-vietnamese-700-normal.woff +0 -0
  359. package/dist/fonts/space-grotesk-vietnamese-700-normal.woff2 +0 -0
  360. package/dist/fonts/work-sans-latin-400-normal.woff +0 -0
  361. package/dist/fonts/work-sans-latin-400-normal.woff2 +0 -0
  362. package/dist/fonts/work-sans-latin-500-normal.woff +0 -0
  363. package/dist/fonts/work-sans-latin-500-normal.woff2 +0 -0
  364. package/dist/fonts/work-sans-latin-ext-400-normal.woff +0 -0
  365. package/dist/fonts/work-sans-latin-ext-400-normal.woff2 +0 -0
  366. package/dist/fonts/work-sans-latin-ext-500-normal.woff +0 -0
  367. package/dist/fonts/work-sans-latin-ext-500-normal.woff2 +0 -0
  368. package/dist/fonts/work-sans-vietnamese-400-normal.woff +0 -0
  369. package/dist/fonts/work-sans-vietnamese-400-normal.woff2 +0 -0
  370. package/dist/fonts/work-sans-vietnamese-500-normal.woff +0 -0
  371. package/dist/fonts/work-sans-vietnamese-500-normal.woff2 +0 -0
  372. package/dist/footer.js +308 -0
  373. package/dist/footer.js.map +1 -0
  374. package/dist/form-field.js +69 -0
  375. package/dist/form-field.js.map +1 -0
  376. package/dist/form.js +732 -0
  377. package/dist/form.js.map +1 -0
  378. package/dist/format.js +112 -0
  379. package/dist/format.js.map +1 -0
  380. package/dist/fouc.js +28 -0
  381. package/dist/fouc.js.map +1 -0
  382. package/dist/header.js +289 -0
  383. package/dist/header.js.map +1 -0
  384. package/dist/hooks.js +13 -0
  385. package/dist/hooks.js.map +1 -0
  386. package/dist/hover-card.js +210 -0
  387. package/dist/hover-card.js.map +1 -0
  388. package/dist/index-0ioNhtNM.js +11 -0
  389. package/dist/index-0ioNhtNM.js.map +1 -0
  390. package/dist/index-1QHKgw6D.js +55 -0
  391. package/dist/index-1QHKgw6D.js.map +1 -0
  392. package/dist/index-B6sSWi7l.js +747 -0
  393. package/dist/index-B6sSWi7l.js.map +1 -0
  394. package/dist/index-BCjJQGh8.js +71 -0
  395. package/dist/index-BCjJQGh8.js.map +1 -0
  396. package/dist/index-BGQepRFJ.js +28 -0
  397. package/dist/index-BGQepRFJ.js.map +1 -0
  398. package/dist/index-BVRIAMfe.js +37 -0
  399. package/dist/index-BVRIAMfe.js.map +1 -0
  400. package/dist/index-BY7PeRJA.js +145 -0
  401. package/dist/index-BY7PeRJA.js.map +1 -0
  402. package/dist/index-BZPx6jYI.js +9 -0
  403. package/dist/index-BZPx6jYI.js.map +1 -0
  404. package/dist/index-Ba4eHUBD.js +243 -0
  405. package/dist/index-Ba4eHUBD.js.map +1 -0
  406. package/dist/index-Bke1qZdk.js +35 -0
  407. package/dist/index-Bke1qZdk.js.map +1 -0
  408. package/dist/index-C0UREtMP.js +60 -0
  409. package/dist/index-C0UREtMP.js.map +1 -0
  410. package/dist/index-CCKe-Mpx.js +7 -0
  411. package/dist/index-CCKe-Mpx.js.map +1 -0
  412. package/dist/index-DFZozV_h.js +69 -0
  413. package/dist/index-DFZozV_h.js.map +1 -0
  414. package/dist/index-DFi6WydO.js +180 -0
  415. package/dist/index-DFi6WydO.js.map +1 -0
  416. package/dist/index-DQH6odE9.js +83 -0
  417. package/dist/index-DQH6odE9.js.map +1 -0
  418. package/dist/index-EO5flKM3.js +119 -0
  419. package/dist/index-EO5flKM3.js.map +1 -0
  420. package/dist/index-Lf7yDOXW.js +615 -0
  421. package/dist/index-Lf7yDOXW.js.map +1 -0
  422. package/dist/index-dhIqEbxW.js +1541 -0
  423. package/dist/index-dhIqEbxW.js.map +1 -0
  424. package/dist/index-pWhlqjff.js +32 -0
  425. package/dist/index-pWhlqjff.js.map +1 -0
  426. package/dist/index-rKs9bXHr.js +7 -0
  427. package/dist/index-rKs9bXHr.js.map +1 -0
  428. package/dist/index-xqkGMOJ8.js +14 -0
  429. package/dist/index-xqkGMOJ8.js.map +1 -0
  430. package/dist/index.js +247 -0
  431. package/dist/index.js.map +1 -0
  432. package/dist/input.js +22 -0
  433. package/dist/input.js.map +1 -0
  434. package/dist/label.js +36 -0
  435. package/dist/label.js.map +1 -0
  436. package/dist/layout-wrapper.js +208 -0
  437. package/dist/layout-wrapper.js.map +1 -0
  438. package/dist/llms.txt +1140 -0
  439. package/dist/menu-DBhEanGo.js +16 -0
  440. package/dist/menu-DBhEanGo.js.map +1 -0
  441. package/dist/menubar.js +565 -0
  442. package/dist/menubar.js.map +1 -0
  443. package/dist/mobile.js +183 -0
  444. package/dist/mobile.js.map +1 -0
  445. package/dist/motion.js +119 -0
  446. package/dist/motion.js.map +1 -0
  447. package/dist/page-header.js +47 -0
  448. package/dist/page-header.js.map +1 -0
  449. package/dist/page.js +214 -0
  450. package/dist/page.js.map +1 -0
  451. package/dist/pagination.js +121 -0
  452. package/dist/pagination.js.map +1 -0
  453. package/dist/platform.js +194 -0
  454. package/dist/platform.js.map +1 -0
  455. package/dist/popover.js +263 -0
  456. package/dist/popover.js.map +1 -0
  457. package/dist/popup.js +335 -0
  458. package/dist/popup.js.map +1 -0
  459. package/dist/progress.js +108 -0
  460. package/dist/progress.js.map +1 -0
  461. package/dist/radio-group.js +272 -0
  462. package/dist/radio-group.js.map +1 -0
  463. package/dist/safe-area.js +42 -0
  464. package/dist/safe-area.js.map +1 -0
  465. package/dist/search-CpUwRnG-.js +15 -0
  466. package/dist/search-CpUwRnG-.js.map +1 -0
  467. package/dist/select.js +985 -0
  468. package/dist/select.js.map +1 -0
  469. package/dist/separator.js +45 -0
  470. package/dist/separator.js.map +1 -0
  471. package/dist/sheet.js +127 -0
  472. package/dist/sheet.js.map +1 -0
  473. package/dist/skeleton.js +16 -0
  474. package/dist/skeleton.js.map +1 -0
  475. package/dist/slider.js +485 -0
  476. package/dist/slider.js.map +1 -0
  477. package/dist/sonner.js +52 -0
  478. package/dist/sonner.js.map +1 -0
  479. package/dist/styles/fonts.css +253 -0
  480. package/dist/styles.css +2 -0
  481. package/dist/switch.js +155 -0
  482. package/dist/switch.js.map +1 -0
  483. package/dist/tab-bar.js +110 -0
  484. package/dist/tab-bar.js.map +1 -0
  485. package/dist/table.js +115 -0
  486. package/dist/table.js.map +1 -0
  487. package/dist/tabs.js +218 -0
  488. package/dist/tabs.js.map +1 -0
  489. package/dist/textarea.js +19 -0
  490. package/dist/textarea.js.map +1 -0
  491. package/dist/theme-provider.js +154 -0
  492. package/dist/theme-provider.js.map +1 -0
  493. package/dist/themes.js +873 -0
  494. package/dist/themes.js.map +1 -0
  495. package/dist/toast.js +63 -0
  496. package/dist/toast.js.map +1 -0
  497. package/dist/toggle.js +70 -0
  498. package/dist/toggle.js.map +1 -0
  499. package/dist/tooltip.js +375 -0
  500. package/dist/tooltip.js.map +1 -0
  501. package/dist/types/App.d.ts +3 -0
  502. package/dist/types/App.d.ts.map +1 -0
  503. package/dist/types/components/layouts/admin.d.ts +117 -0
  504. package/dist/types/components/layouts/admin.d.ts.map +1 -0
  505. package/dist/types/components/layouts/auth.d.ts +17 -0
  506. package/dist/types/components/layouts/auth.d.ts.map +1 -0
  507. package/dist/types/components/layouts/blank.d.ts +63 -0
  508. package/dist/types/components/layouts/blank.d.ts.map +1 -0
  509. package/dist/types/components/layouts/layout-wrapper.d.ts +130 -0
  510. package/dist/types/components/layouts/layout-wrapper.d.ts.map +1 -0
  511. package/dist/types/components/layouts/mobile.d.ts +91 -0
  512. package/dist/types/components/layouts/mobile.d.ts.map +1 -0
  513. package/dist/types/components/layouts/page.d.ts +181 -0
  514. package/dist/types/components/layouts/page.d.ts.map +1 -0
  515. package/dist/types/components/layouts/popup.d.ts +100 -0
  516. package/dist/types/components/layouts/popup.d.ts.map +1 -0
  517. package/dist/types/components/sections/container.d.ts +79 -0
  518. package/dist/types/components/sections/container.d.ts.map +1 -0
  519. package/dist/types/components/sections/footer.d.ts +128 -0
  520. package/dist/types/components/sections/footer.d.ts.map +1 -0
  521. package/dist/types/components/sections/header.d.ts +72 -0
  522. package/dist/types/components/sections/header.d.ts.map +1 -0
  523. package/dist/types/components/sections/safe-area.d.ts +46 -0
  524. package/dist/types/components/sections/safe-area.d.ts.map +1 -0
  525. package/dist/types/components/sections/tab-bar.d.ts +61 -0
  526. package/dist/types/components/sections/tab-bar.d.ts.map +1 -0
  527. package/dist/types/components/ui/accordion.d.ts +8 -0
  528. package/dist/types/components/ui/accordion.d.ts.map +1 -0
  529. package/dist/types/components/ui/alert.d.ts +10 -0
  530. package/dist/types/components/ui/alert.d.ts.map +1 -0
  531. package/dist/types/components/ui/avatar.d.ts +7 -0
  532. package/dist/types/components/ui/avatar.d.ts.map +1 -0
  533. package/dist/types/components/ui/badge.d.ts +10 -0
  534. package/dist/types/components/ui/badge.d.ts.map +1 -0
  535. package/dist/types/components/ui/breadcrumb.d.ts +12 -0
  536. package/dist/types/components/ui/breadcrumb.d.ts.map +1 -0
  537. package/dist/types/components/ui/button.d.ts +11 -0
  538. package/dist/types/components/ui/button.d.ts.map +1 -0
  539. package/dist/types/components/ui/calendar.d.ts +9 -0
  540. package/dist/types/components/ui/calendar.d.ts.map +1 -0
  541. package/dist/types/components/ui/card.d.ts +10 -0
  542. package/dist/types/components/ui/card.d.ts.map +1 -0
  543. package/dist/types/components/ui/checkbox.d.ts +5 -0
  544. package/dist/types/components/ui/checkbox.d.ts.map +1 -0
  545. package/dist/types/components/ui/collapsible.d.ts +6 -0
  546. package/dist/types/components/ui/collapsible.d.ts.map +1 -0
  547. package/dist/types/components/ui/command.d.ts +19 -0
  548. package/dist/types/components/ui/command.d.ts.map +1 -0
  549. package/dist/types/components/ui/confirm-dialog.d.ts +72 -0
  550. package/dist/types/components/ui/confirm-dialog.d.ts.map +1 -0
  551. package/dist/types/components/ui/data-table.d.ts +211 -0
  552. package/dist/types/components/ui/data-table.d.ts.map +1 -0
  553. package/dist/types/components/ui/detail-page.d.ts +119 -0
  554. package/dist/types/components/ui/detail-page.d.ts.map +1 -0
  555. package/dist/types/components/ui/dialog.d.ts +16 -0
  556. package/dist/types/components/ui/dialog.d.ts.map +1 -0
  557. package/dist/types/components/ui/dropdown-menu.d.ts +26 -0
  558. package/dist/types/components/ui/dropdown-menu.d.ts.map +1 -0
  559. package/dist/types/components/ui/empty-state.d.ts +30 -0
  560. package/dist/types/components/ui/empty-state.d.ts.map +1 -0
  561. package/dist/types/components/ui/form-field.d.ts +57 -0
  562. package/dist/types/components/ui/form-field.d.ts.map +1 -0
  563. package/dist/types/components/ui/form.d.ts +185 -0
  564. package/dist/types/components/ui/form.d.ts.map +1 -0
  565. package/dist/types/components/ui/hover-card.d.ts +7 -0
  566. package/dist/types/components/ui/hover-card.d.ts.map +1 -0
  567. package/dist/types/components/ui/input.d.ts +4 -0
  568. package/dist/types/components/ui/input.d.ts.map +1 -0
  569. package/dist/types/components/ui/label.d.ts +5 -0
  570. package/dist/types/components/ui/label.d.ts.map +1 -0
  571. package/dist/types/components/ui/menubar.d.ts +27 -0
  572. package/dist/types/components/ui/menubar.d.ts.map +1 -0
  573. package/dist/types/components/ui/motion.d.ts +130 -0
  574. package/dist/types/components/ui/motion.d.ts.map +1 -0
  575. package/dist/types/components/ui/page-header.d.ts +45 -0
  576. package/dist/types/components/ui/page-header.d.ts.map +1 -0
  577. package/dist/types/components/ui/pagination.d.ts +14 -0
  578. package/dist/types/components/ui/pagination.d.ts.map +1 -0
  579. package/dist/types/components/ui/popover.d.ts +8 -0
  580. package/dist/types/components/ui/popover.d.ts.map +1 -0
  581. package/dist/types/components/ui/progress.d.ts +5 -0
  582. package/dist/types/components/ui/progress.d.ts.map +1 -0
  583. package/dist/types/components/ui/radio-group.d.ts +6 -0
  584. package/dist/types/components/ui/radio-group.d.ts.map +1 -0
  585. package/dist/types/components/ui/select.d.ts +16 -0
  586. package/dist/types/components/ui/select.d.ts.map +1 -0
  587. package/dist/types/components/ui/separator.d.ts +5 -0
  588. package/dist/types/components/ui/separator.d.ts.map +1 -0
  589. package/dist/types/components/ui/sheet.d.ts +14 -0
  590. package/dist/types/components/ui/sheet.d.ts.map +1 -0
  591. package/dist/types/components/ui/skeleton.d.ts +3 -0
  592. package/dist/types/components/ui/skeleton.d.ts.map +1 -0
  593. package/dist/types/components/ui/slider.d.ts +5 -0
  594. package/dist/types/components/ui/slider.d.ts.map +1 -0
  595. package/dist/types/components/ui/sonner.d.ts +4 -0
  596. package/dist/types/components/ui/sonner.d.ts.map +1 -0
  597. package/dist/types/components/ui/switch.d.ts +5 -0
  598. package/dist/types/components/ui/switch.d.ts.map +1 -0
  599. package/dist/types/components/ui/table.d.ts +11 -0
  600. package/dist/types/components/ui/table.d.ts.map +1 -0
  601. package/dist/types/components/ui/tabs.d.ts +8 -0
  602. package/dist/types/components/ui/tabs.d.ts.map +1 -0
  603. package/dist/types/components/ui/textarea.d.ts +4 -0
  604. package/dist/types/components/ui/textarea.d.ts.map +1 -0
  605. package/dist/types/components/ui/toast.d.ts +70 -0
  606. package/dist/types/components/ui/toast.d.ts.map +1 -0
  607. package/dist/types/components/ui/toggle.d.ts +10 -0
  608. package/dist/types/components/ui/toggle.d.ts.map +1 -0
  609. package/dist/types/components/ui/tooltip.d.ts +8 -0
  610. package/dist/types/components/ui/tooltip.d.ts.map +1 -0
  611. package/dist/types/hooks/index.d.ts +14 -0
  612. package/dist/types/hooks/index.d.ts.map +1 -0
  613. package/dist/types/hooks/useApi.d.ts +38 -0
  614. package/dist/types/hooks/useApi.d.ts.map +1 -0
  615. package/dist/types/hooks/useBreakpoint.d.ts +35 -0
  616. package/dist/types/hooks/useBreakpoint.d.ts.map +1 -0
  617. package/dist/types/hooks/useDataTable.d.ts +59 -0
  618. package/dist/types/hooks/useDataTable.d.ts.map +1 -0
  619. package/dist/types/hooks/useMediaQuery.d.ts +12 -0
  620. package/dist/types/hooks/useMediaQuery.d.ts.map +1 -0
  621. package/dist/types/hooks/useStorage.d.ts +35 -0
  622. package/dist/types/hooks/useStorage.d.ts.map +1 -0
  623. package/dist/types/index.d.ts +75 -0
  624. package/dist/types/index.d.ts.map +1 -0
  625. package/dist/types/lib/errors.d.ts +37 -0
  626. package/dist/types/lib/errors.d.ts.map +1 -0
  627. package/dist/types/lib/format.d.ts +80 -0
  628. package/dist/types/lib/format.d.ts.map +1 -0
  629. package/dist/types/lib/fouc.d.ts +64 -0
  630. package/dist/types/lib/fouc.d.ts.map +1 -0
  631. package/dist/types/lib/platform.d.ts +156 -0
  632. package/dist/types/lib/platform.d.ts.map +1 -0
  633. package/dist/types/lib/utils.d.ts +14 -0
  634. package/dist/types/lib/utils.d.ts.map +1 -0
  635. package/dist/types/main.d.ts +2 -0
  636. package/dist/types/main.d.ts.map +1 -0
  637. package/dist/types/themes/index.d.ts +499 -0
  638. package/dist/types/themes/index.d.ts.map +1 -0
  639. package/dist/types/themes/presets/base.d.ts +108 -0
  640. package/dist/types/themes/presets/base.d.ts.map +1 -0
  641. package/dist/types/themes/presets/elegant.d.ts +108 -0
  642. package/dist/types/themes/presets/elegant.d.ts.map +1 -0
  643. package/dist/types/themes/presets/metro.d.ts +114 -0
  644. package/dist/types/themes/presets/metro.d.ts.map +1 -0
  645. package/dist/types/themes/presets/studio.d.ts +115 -0
  646. package/dist/types/themes/presets/studio.d.ts.map +1 -0
  647. package/dist/types/themes/presets/vivid.d.ts +115 -0
  648. package/dist/types/themes/presets/vivid.d.ts.map +1 -0
  649. package/dist/types/themes/theme-provider.d.ts +122 -0
  650. package/dist/types/themes/theme-provider.d.ts.map +1 -0
  651. package/dist/types/types/index.d.ts +813 -0
  652. package/dist/types/types/index.d.ts.map +1 -0
  653. package/dist/uikit.css +1 -0
  654. package/dist/useDataTable-CPiBpEg-.js +254 -0
  655. package/dist/useDataTable-CPiBpEg-.js.map +1 -0
  656. package/dist/utils-CwJPJKOE.js +2278 -0
  657. package/dist/utils-CwJPJKOE.js.map +1 -0
  658. package/dist/utils.js +5 -0
  659. package/dist/utils.js.map +1 -0
  660. package/dist/wrapper.js +13 -0
  661. package/dist/wrapper.js.map +1 -0
  662. package/dist/x-BxwubQiM.js +15 -0
  663. package/dist/x-BxwubQiM.js.map +1 -0
  664. package/examples/README.md +18 -0
  665. package/examples/button.tsx +16 -0
  666. package/examples/confirm-dialog.tsx +44 -0
  667. package/examples/data-table.tsx +35 -0
  668. package/examples/dialog.tsx +34 -0
  669. package/examples/empty-state.tsx +13 -0
  670. package/examples/form-field.tsx +22 -0
  671. package/examples/format.tsx +19 -0
  672. package/examples/page-header.tsx +17 -0
  673. package/examples/skeleton.tsx +12 -0
  674. package/examples/theme-provider.tsx +33 -0
  675. package/examples/toast.tsx +32 -0
  676. package/examples/use-breakpoint.tsx +17 -0
  677. package/llms.txt +1140 -0
  678. 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>