@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 @@
1
+ {"version":3,"file":"tabs.js","sources":["../node_modules/@radix-ui/react-tabs/dist/index.mjs","../src/components/ui/tabs.tsx"],"sourcesContent":["\"use client\";\n\n// src/tabs.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TABS_NAME = \"Tabs\";\nvar [createTabsContext, createTabsScope] = createContextScope(TABS_NAME, [\n createRovingFocusGroupScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar [TabsProvider, useTabsContext] = createTabsContext(TABS_NAME);\nvar Tabs = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeTabs,\n value: valueProp,\n onValueChange,\n defaultValue,\n orientation = \"horizontal\",\n dir,\n activationMode = \"automatic\",\n ...tabsProps\n } = props;\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n onChange: onValueChange,\n defaultProp: defaultValue ?? \"\",\n caller: TABS_NAME\n });\n return /* @__PURE__ */ jsx(\n TabsProvider,\n {\n scope: __scopeTabs,\n baseId: useId(),\n value,\n onValueChange: setValue,\n orientation,\n dir: direction,\n activationMode,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n dir: direction,\n \"data-orientation\": orientation,\n ...tabsProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabs.displayName = TABS_NAME;\nvar TAB_LIST_NAME = \"TabsList\";\nvar TabsList = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, loop = true, ...listProps } = props;\n const context = useTabsContext(TAB_LIST_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n orientation: context.orientation,\n dir: context.dir,\n loop,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"tablist\",\n \"aria-orientation\": context.orientation,\n ...listProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabsList.displayName = TAB_LIST_NAME;\nvar TRIGGER_NAME = \"TabsTrigger\";\nvar TabsTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, disabled = false, ...triggerProps } = props;\n const context = useTabsContext(TRIGGER_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Item,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n focusable: !disabled,\n active: isSelected,\n children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"tab\",\n \"aria-selected\": isSelected,\n \"aria-controls\": contentId,\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n id: triggerId,\n ...triggerProps,\n ref: forwardedRef,\n onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n context.onValueChange(value);\n } else {\n event.preventDefault();\n }\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if ([\" \", \"Enter\"].includes(event.key)) context.onValueChange(value);\n }),\n onFocus: composeEventHandlers(props.onFocus, () => {\n const isAutomaticActivation = context.activationMode !== \"manual\";\n if (!isSelected && !disabled && isAutomaticActivation) {\n context.onValueChange(value);\n }\n })\n }\n )\n }\n );\n }\n);\nTabsTrigger.displayName = TRIGGER_NAME;\nvar CONTENT_NAME = \"TabsContent\";\nvar TabsContent = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, forceMount, children, ...contentProps } = props;\n const context = useTabsContext(CONTENT_NAME, __scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n const isMountAnimationPreventedRef = React.useRef(isSelected);\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false);\n return () => cancelAnimationFrame(rAF);\n }, []);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || isSelected, children: ({ present }) => /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-orientation\": context.orientation,\n role: \"tabpanel\",\n \"aria-labelledby\": triggerId,\n hidden: !present,\n id: contentId,\n tabIndex: 0,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...props.style,\n animationDuration: isMountAnimationPreventedRef.current ? \"0s\" : void 0\n },\n children: present && children\n }\n ) });\n }\n);\nTabsContent.displayName = CONTENT_NAME;\nfunction makeTriggerId(baseId, value) {\n return `${baseId}-trigger-${value}`;\n}\nfunction makeContentId(baseId, value) {\n return `${baseId}-content-${value}`;\n}\nvar Root2 = Tabs;\nvar List = TabsList;\nvar Trigger = TabsTrigger;\nvar Content = TabsContent;\nexport {\n Content,\n List,\n Root2 as Root,\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n Trigger,\n createTabsScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Tabs({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n className={cn(\"flex flex-col gap-2\", className)}\n {...props}\n />\n )\n}\n\nfunction TabsList({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.List>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n className={cn(\n \"bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TabsTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n className={cn(\n \"data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TabsContent({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot=\"tabs-content\"\n className={cn(\"flex-1 outline-none\", className)}\n {...props}\n />\n )\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent }\n"],"names":["TABS_NAME","createTabsContext","createTabsScope","createContextScope","createRovingFocusGroupScope","useRovingFocusGroupScope","TabsProvider","useTabsContext","Tabs","React","props","forwardedRef","__scopeTabs","valueProp","onValueChange","defaultValue","orientation","dir","activationMode","tabsProps","direction","useDirection","value","setValue","useControllableState","jsx","useId","Primitive","TAB_LIST_NAME","TabsList","loop","listProps","context","rovingFocusGroupScope","RovingFocusGroup.Root","TRIGGER_NAME","TabsTrigger","disabled","triggerProps","triggerId","makeTriggerId","contentId","makeContentId","isSelected","RovingFocusGroup.Item","composeEventHandlers","event","isAutomaticActivation","CONTENT_NAME","TabsContent","forceMount","children","contentProps","isMountAnimationPreventedRef","rAF","Presence","present","baseId","Root2","List","Trigger","Content","className","TabsPrimitive.Root","cn","TabsPrimitive.List","TabsPrimitive.Trigger","TabsPrimitive.Content"],"mappings":"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","x_google_ignoreList":[0]}
@@ -0,0 +1,19 @@
1
+ import { jsx as i } from "react/jsx-runtime";
2
+ import { c as t } from "./utils-CwJPJKOE.js";
3
+ function n({ className: r, ...e }) {
4
+ return /* @__PURE__ */ i(
5
+ "textarea",
6
+ {
7
+ "data-slot": "textarea",
8
+ className: t(
9
+ "border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
10
+ r
11
+ ),
12
+ ...e
13
+ }
14
+ );
15
+ }
16
+ export {
17
+ n as Textarea
18
+ };
19
+ //# sourceMappingURL=textarea.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textarea.js","sources":["../src/components/ui/textarea.tsx"],"sourcesContent":["import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n \"border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Textarea }\n"],"names":["Textarea","className","props","jsx","cn"],"mappings":";;AAIA,SAASA,EAAS,EAAE,WAAAC,GAAW,GAAGC,KAA2C;AAC3E,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACAH;AAAA,MAAA;AAAA,MAED,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;"}
@@ -0,0 +1,154 @@
1
+ import { jsx as L } from "react/jsx-runtime";
2
+ import { createContext as $, useState as S, useEffect as h, useContext as E } from "react";
3
+ const x = {
4
+ AdminLayout: "subtle",
5
+ // Professional admin interfaces
6
+ PageLayout: "clean",
7
+ // Clean public websites
8
+ AuthLayout: "clean",
9
+ // Focused authentication
10
+ PopupLayout: "clean",
11
+ // Clean extensions
12
+ BlankLayout: "clean",
13
+ // Simple pages
14
+ Header: "clean",
15
+ // Clean headers
16
+ Footer: "contrast",
17
+ // Bold footers
18
+ AdminSidebar: "subtle",
19
+ // Subtle sidebars
20
+ AdminHeader: "clean",
21
+ // Clean admin headers
22
+ PopupHeader: "brand"
23
+ // Branded popup headers
24
+ }, A = {
25
+ clean: "bg-background text-foreground border-border",
26
+ subtle: "bg-muted/30 text-foreground border-border/50",
27
+ brand: "bg-primary text-primary-foreground border-primary/20",
28
+ contrast: "bg-foreground text-background border-foreground/20"
29
+ // Automatically flips with mode
30
+ }, P = [
31
+ "base",
32
+ // Sky blue theme - clean & professional (DEFAULT)
33
+ "elegant",
34
+ // Minimal blue - clean & professional
35
+ "metro",
36
+ // Dark teal - admin dashboards
37
+ "studio",
38
+ // Designer grays - creative tools
39
+ "vivid"
40
+ // Premium cursive - luxury/creative portfolios
41
+ ], g = $(void 0);
42
+ function T(t, n, a, m = !1, s = "uikit-theme") {
43
+ if (typeof window > "u")
44
+ return { theme: t, mode: n };
45
+ if (m)
46
+ return console.log(`🎨 Config priority: ${t} (${n} mode)`), { theme: t, mode: n };
47
+ if (s === null) {
48
+ if (a) {
49
+ const o = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
50
+ return console.log(`🎨 System preference (no storage): ${t} (${o} mode)`), { theme: t, mode: o };
51
+ }
52
+ return console.log(`🎨 Props only (no storage): ${t} (${n} mode)`), { theme: t, mode: n };
53
+ }
54
+ try {
55
+ const r = localStorage.getItem(s);
56
+ if (r) {
57
+ const o = JSON.parse(r);
58
+ if (o.theme && typeof o.theme == "string" && ["light", "dark"].includes(o.mode))
59
+ return console.log(`🎨 Restored from storage: ${o.theme} (${o.mode} mode)`), o;
60
+ }
61
+ if (a) {
62
+ const i = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
63
+ return console.log(`🎨 System preference: ${t} (${i} mode)`), { theme: t, mode: i };
64
+ }
65
+ return console.log(`🎨 Props fallback: ${t} (${n} mode)`), { theme: t, mode: n };
66
+ } catch (r) {
67
+ return console.warn("Failed to load theme preferences, using defaults:", r), { theme: t, mode: n };
68
+ }
69
+ }
70
+ function u(t, n) {
71
+ if (typeof window > "u") return;
72
+ const a = document.documentElement;
73
+ a.classList.remove("light", "dark"), Array.from(a.classList).filter(
74
+ (s) => s.startsWith("theme-")
75
+ ).forEach((s) => {
76
+ a.classList.remove(s);
77
+ }), a.classList.add(n), a.classList.add(`theme-${t}`);
78
+ }
79
+ function F({
80
+ children: t,
81
+ theme: n = "base",
82
+ mode: a = "light",
83
+ detectSystem: m = !0,
84
+ forceConfig: s = !1,
85
+ // 🔧 NEW: Force config over storage
86
+ storageKey: r = "uikit-theme"
87
+ // 🔧 NEW: Configurable storage key
88
+ }) {
89
+ const [o, i] = S(() => {
90
+ const e = T(n, a, m, s, r);
91
+ return u(e.theme, e.mode), e;
92
+ });
93
+ h(() => {
94
+ if (typeof window > "u") return;
95
+ const { theme: e, mode: c } = o;
96
+ if (u(e, c), r && !s)
97
+ try {
98
+ localStorage.setItem(r, JSON.stringify({ theme: e, mode: c }));
99
+ } catch (d) {
100
+ console.warn("Failed to save theme preferences:", d);
101
+ }
102
+ console.log(`🎨 Applied theme: ${e} (${c} mode)`);
103
+ }, [o, r, s]), h(() => {
104
+ if (!m || typeof window > "u") return;
105
+ const e = window.matchMedia("(prefers-color-scheme: dark)"), c = (d) => {
106
+ if (!s)
107
+ try {
108
+ (r ? localStorage.getItem(r) : null) || i((y) => ({
109
+ ...y,
110
+ mode: d.matches ? "dark" : "light"
111
+ }));
112
+ } catch (l) {
113
+ console.warn("Failed to handle system preference change:", l);
114
+ }
115
+ };
116
+ return e.addEventListener("change", c), () => e.removeEventListener("change", c);
117
+ }, [m, s, r]);
118
+ const p = (e) => {
119
+ i((c) => ({ ...c, theme: e }));
120
+ }, f = (e) => {
121
+ if (e !== "light" && e !== "dark") {
122
+ console.warn(`Invalid mode: ${e}. Expected 'light' or 'dark'.`);
123
+ return;
124
+ }
125
+ i((c) => ({ ...c, mode: e }));
126
+ }, b = () => {
127
+ i((e) => ({
128
+ ...e,
129
+ mode: e.mode === "light" ? "dark" : "light"
130
+ }));
131
+ }, k = (e) => A[e], v = (e) => x[e] || "clean", w = {
132
+ theme: o.theme,
133
+ mode: o.mode,
134
+ availableThemes: P,
135
+ setTheme: p,
136
+ setMode: f,
137
+ toggleMode: b,
138
+ getToneClasses: k,
139
+ getDefaultTone: v
140
+ };
141
+ return /* @__PURE__ */ L(g.Provider, { value: w, children: t });
142
+ }
143
+ function H() {
144
+ const t = E(g);
145
+ if (!t)
146
+ throw new Error("useTheme must be used within a ThemeProvider");
147
+ return t;
148
+ }
149
+ export {
150
+ P as AVAILABLE_THEMES,
151
+ F as ThemeProvider,
152
+ H as useTheme
153
+ };
154
+ //# sourceMappingURL=theme-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-provider.js","sources":["../src/themes/theme-provider.tsx"],"sourcesContent":["/**\n * Ultra-simple theme provider with pre-bundled themes - CONFIG PRIORITY VERSION\n * @module @bloomneo/uikit\n * @file src/themes/theme-provider.tsx\n */\n\nimport React, { createContext, useContext, useEffect, useState, ReactNode } from 'react';\n\n/**\n * @llm-rule Pre-bundled themes - CSS included in package\n * Simple selection from 8 built-in themes\n */\nexport type Theme = string;\n\n/**\n * @llm-rule System color scheme preference\n * light: Light system theme\n * dark: Dark system theme\n */\nexport type Mode = 'light' | 'dark';\n\n/**\n * @llm-rule Component visual emphasis system\n * clean → Pure, minimal, white/light backgrounds\n * subtle → Muted, supporting, gray areas\n * brand → Primary colored, branded elements\n * contrast → High emphasis, dark/bold areas\n */\nexport type Tone = 'clean' | 'subtle' | 'brand' | 'contrast';\n\n/**\n * @llm-props ThemeProvider context - Zero complexity\n * REQUIRED: children\n * RECOMMENDED: theme, mode\n * OPTIONAL: detectSystem\n */\nexport interface ThemeContextValue {\n /** Current theme from pre-bundled options */\n theme: Theme;\n /** System color mode */\n mode: Mode;\n /** Available themes */\n availableThemes: Theme[];\n \n /** Set theme from pre-bundled options */\n setTheme: (theme: Theme) => void;\n /** Set system color mode */\n setMode: (mode: Mode) => void;\n /** Toggle between light and dark modes */\n toggleMode: () => void;\n \n /** Get CSS classes for tone */\n getToneClasses: (tone: Tone) => string;\n /** Get default tone for component */\n getDefaultTone: (component: string) => Tone;\n}\n\n/**\n * @llm-props ThemeProvider props - ENHANCED WITH CONFIG PRIORITY\n * REQUIRED: children\n * RECOMMENDED: theme=\"base\", mode=\"light\"\n * OPTIONAL: detectSystem, forceConfig, storageKey\n * @llm-defaults theme=\"base\", mode=\"light\", detectSystem=true, forceConfig=false\n */\nexport interface ThemeProviderProps {\n /** REQUIRED: Child components */\n children: ReactNode;\n /** RECOMMENDED: Theme from pre-bundled options (default: \"base\") */\n theme?: Theme;\n /** RECOMMENDED: System color mode (default: \"light\") */\n mode?: Mode;\n /** OPTIONAL: Auto-detect system preference (default: true) */\n detectSystem?: boolean;\n /** NEW: Force configuration over storage (default: false) */\n forceConfig?: boolean;\n /** NEW: Storage key to use (default: \"uikit-theme\", set to null to disable storage) */\n storageKey?: string | null;\n}\n\n/**\n * @llm-defaults Tone defaults by component type\n * Smart contextual defaults for LLM predictability\n */\nconst TONE_DEFAULTS: Record<string, Tone> = {\n AdminLayout: 'subtle', // Professional admin interfaces\n PageLayout: 'clean', // Clean public websites\n AuthLayout: 'clean', // Focused authentication\n PopupLayout: 'clean', // Clean extensions\n BlankLayout: 'clean', // Simple pages\n Header: 'clean', // Clean headers\n Footer: 'contrast', // Bold footers\n AdminSidebar: 'subtle', // Subtle sidebars\n AdminHeader: 'clean', // Clean admin headers\n PopupHeader: 'brand', // Branded popup headers\n};\n\n/**\n * @llm-rule Tone CSS class mapping\n * CSS variables automatically handle light/dark mode switching\n */\nconst TONE_CLASSES: Record<Tone, string> = {\n clean: 'bg-background text-foreground border-border',\n subtle: 'bg-muted/30 text-foreground border-border/50',\n brand: 'bg-primary text-primary-foreground border-primary/20',\n contrast: 'bg-foreground text-background border-foreground/20' // Automatically flips with mode\n};\n\n/**\n * @llm-rule Available pre-bundled themes\n * All themes ship as CSS with the package\n */\nexport const AVAILABLE_THEMES: Theme[] = [\n 'base', // Sky blue theme - clean & professional (DEFAULT)\n 'elegant', // Minimal blue - clean & professional\n 'metro', // Dark teal - admin dashboards\n 'studio', // Designer grays - creative tools\n 'vivid' // Premium cursive - luxury/creative portfolios\n];\n\n// Theme context\nconst ThemeContext = createContext<ThemeContextValue | undefined>(undefined);\n\n/**\n * ✅ ENHANCED: Get initial theme state with configuration priority\n */\nfunction getInitialThemeState(\n defaultTheme: Theme, \n defaultMode: Mode, \n detectSystem: boolean,\n forceConfig: boolean = false,\n storageKey: string | null = 'uikit-theme'\n): { theme: Theme; mode: Mode } {\n // Server-side rendering - use props\n if (typeof window === 'undefined') {\n return { theme: defaultTheme, mode: defaultMode };\n }\n\n // 🔧 NEW: If forceConfig is true, ignore storage and use props\n if (forceConfig) {\n console.log(`🎨 Config priority: ${defaultTheme} (${defaultMode} mode)`);\n return { theme: defaultTheme, mode: defaultMode };\n }\n\n // 🔧 NEW: If storageKey is null, skip storage entirely\n if (storageKey === null) {\n if (detectSystem) {\n const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;\n const systemMode = prefersDark ? 'dark' : 'light';\n console.log(`🎨 System preference (no storage): ${defaultTheme} (${systemMode} mode)`);\n return { theme: defaultTheme, mode: systemMode };\n }\n console.log(`🎨 Props only (no storage): ${defaultTheme} (${defaultMode} mode)`);\n return { theme: defaultTheme, mode: defaultMode };\n }\n\n try {\n // Try to load saved preferences from storage\n const saved = localStorage.getItem(storageKey);\n if (saved) {\n const parsed = JSON.parse(saved);\n \n // Validate saved theme format (allow any theme name, just check mode)\n if (parsed.theme && typeof parsed.theme === 'string' &&\n ['light', 'dark'].includes(parsed.mode)) {\n console.log(`🎨 Restored from storage: ${parsed.theme} (${parsed.mode} mode)`);\n return parsed;\n }\n }\n \n // No saved preference - check system preference if enabled\n if (detectSystem) {\n const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;\n const systemMode = prefersDark ? 'dark' : 'light';\n console.log(`🎨 System preference: ${defaultTheme} (${systemMode} mode)`);\n return { theme: defaultTheme, mode: systemMode };\n }\n \n // Use props as fallback\n console.log(`🎨 Props fallback: ${defaultTheme} (${defaultMode} mode)`);\n return { theme: defaultTheme, mode: defaultMode };\n \n } catch (e) {\n console.warn('Failed to load theme preferences, using defaults:', e);\n return { theme: defaultTheme, mode: defaultMode };\n }\n}\n\n/**\n * ✅ FIX: Apply theme immediately on document (before React renders)\n */\nfunction applyThemeImmediately(theme: Theme, mode: Mode) {\n if (typeof window === 'undefined') return;\n \n const root = document.documentElement;\n \n // Remove existing theme and mode classes\n root.classList.remove('light', 'dark');\n\n // Remove all theme-* classes (including custom themes)\n const classesToRemove = Array.from(root.classList).filter(className =>\n className.startsWith('theme-')\n );\n classesToRemove.forEach(className => {\n root.classList.remove(className);\n });\n \n // Add new classes immediately\n root.classList.add(mode);\n root.classList.add(`theme-${theme}`);\n}\n\n/**\n * 🔧 ENHANCED: Ultra-simple theme provider with configuration priority\n * @llm-pattern Basic usage (default behavior - storage first)\n * <ThemeProvider theme=\"elegant\" mode=\"dark\">\n * <App />\n * </ThemeProvider>\n * \n * @llm-pattern Force configuration (ignore storage completely)\n * <ThemeProvider theme=\"elegant\" mode=\"dark\" forceConfig={true}>\n * <App />\n * </ThemeProvider>\n * \n * @llm-pattern Disable storage entirely\n * <ThemeProvider theme=\"elegant\" mode=\"dark\" storageKey={null}>\n * <App />\n * </ThemeProvider>\n * \n * @llm-pattern Custom storage key\n * <ThemeProvider theme=\"elegant\" mode=\"dark\" storageKey=\"my-app-theme\">\n * <App />\n * </ThemeProvider>\n */\nexport function ThemeProvider({\n children,\n theme = 'base',\n mode = 'light',\n detectSystem = true,\n forceConfig = false, // 🔧 NEW: Force config over storage\n storageKey = 'uikit-theme' // 🔧 NEW: Configurable storage key\n}: ThemeProviderProps): React.JSX.Element {\n \n // ✅ ENHANCED: Initialize with configuration priority logic\n const [themeState, setThemeState] = useState(() => {\n const initialState = getInitialThemeState(theme, mode, detectSystem, forceConfig, storageKey);\n \n // ✅ CRITICAL: Apply theme immediately before React renders\n applyThemeImmediately(initialState.theme, initialState.mode);\n \n return initialState;\n });\n\n // ✅ ENHANCED: Apply theme classes when state changes\n useEffect(() => {\n if (typeof window === 'undefined') return;\n \n const { theme: currentTheme, mode: currentMode } = themeState;\n \n // Apply theme classes\n applyThemeImmediately(currentTheme, currentMode);\n \n // 🔧 NEW: Save preferences only if storage is enabled and not forcing config\n if (storageKey && !forceConfig) {\n try {\n localStorage.setItem(storageKey, JSON.stringify({ theme: currentTheme, mode: currentMode }));\n } catch (e) {\n console.warn('Failed to save theme preferences:', e);\n }\n }\n \n console.log(`🎨 Applied theme: ${currentTheme} (${currentMode} mode)`);\n }, [themeState, storageKey, forceConfig]);\n \n // ✅ ENHANCED: Listen for system preference changes (respects forceConfig)\n useEffect(() => {\n if (!detectSystem || typeof window === 'undefined') return;\n \n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n \n const handleChange = (e: MediaQueryListEvent) => {\n // 🔧 NEW: Don't auto-switch if forcing config or manual preference was saved\n if (forceConfig) return;\n \n try {\n const saved = storageKey ? localStorage.getItem(storageKey) : null;\n if (!saved) {\n setThemeState(prev => ({\n ...prev,\n mode: e.matches ? 'dark' : 'light'\n }));\n }\n } catch (e) {\n console.warn('Failed to handle system preference change:', e);\n }\n };\n \n mediaQuery.addEventListener('change', handleChange);\n return () => mediaQuery.removeEventListener('change', handleChange);\n }, [detectSystem, forceConfig, storageKey]);\n\n /**\n * @llm-rule Set theme from pre-bundled options or custom themes\n * Accepts built-in themes and custom themes (no validation needed for custom themes)\n */\n const setTheme = (newTheme: Theme) => {\n // Allow all themes - both built-in and custom\n setThemeState(prev => ({ ...prev, theme: newTheme }));\n };\n\n /**\n * @llm-rule Set system color mode\n * Only accepts 'light' or 'dark'\n */\n const setMode = (newMode: Mode) => {\n if (newMode !== 'light' && newMode !== 'dark') {\n console.warn(`Invalid mode: ${newMode}. Expected 'light' or 'dark'.`);\n return;\n }\n \n setThemeState(prev => ({ ...prev, mode: newMode }));\n };\n\n /**\n * @llm-rule Toggle between light and dark modes\n */\n const toggleMode = () => {\n setThemeState(prev => ({\n ...prev,\n mode: prev.mode === 'light' ? 'dark' : 'light'\n }));\n };\n\n /**\n * @llm-rule Get CSS classes for tone styling\n * CSS variables automatically handle light/dark mode\n */\n const getToneClasses = (tone: Tone): string => {\n return TONE_CLASSES[tone];\n };\n\n /**\n * @llm-rule Get default tone for component type\n * Returns smart contextual defaults for LLM predictability\n */\n const getDefaultTone = (component: string): Tone => {\n return TONE_DEFAULTS[component] || 'clean';\n };\n \n // Create context value\n const contextValue: ThemeContextValue = {\n theme: themeState.theme,\n mode: themeState.mode,\n availableThemes: AVAILABLE_THEMES,\n setTheme,\n setMode,\n toggleMode,\n getToneClasses,\n getDefaultTone\n };\n \n return (\n <ThemeContext.Provider value={contextValue}>\n {children}\n </ThemeContext.Provider>\n );\n}\n\n/**\n * Hook to access theme context\n * @llm-pattern Basic theme usage\n * const { theme, mode, setTheme, setMode, toggleMode } = useTheme();\n * \n * @llm-pattern Component styling\n * const { getToneClasses, getDefaultTone } = useTheme();\n * const tone = getDefaultTone('AdminLayout');\n * const classes = getToneClasses(tone); // Works automatically in both modes\n */\nexport function useTheme(): ThemeContextValue {\n const context = useContext(ThemeContext);\n if (!context) {\n throw new Error('useTheme must be used within a ThemeProvider');\n }\n return context;\n}\n\n/**\n * @llm-pattern Theme switcher component example\n * const ThemeSwitcher = () => {\n * const { theme, availableThemes, setTheme } = useTheme();\n * return (\n * <select value={theme} onChange={e => setTheme(e.target.value as Theme)}>\n * {availableThemes.map(t => <option key={t} value={t}>{t}</option>)}\n * </select>\n * );\n * };\n */"],"names":["TONE_DEFAULTS","TONE_CLASSES","AVAILABLE_THEMES","ThemeContext","createContext","getInitialThemeState","defaultTheme","defaultMode","detectSystem","forceConfig","storageKey","systemMode","saved","parsed","e","applyThemeImmediately","theme","mode","root","className","ThemeProvider","children","themeState","setThemeState","useState","initialState","useEffect","currentTheme","currentMode","mediaQuery","handleChange","prev","setTheme","newTheme","setMode","newMode","toggleMode","getToneClasses","tone","getDefaultTone","component","contextValue","useTheme","context","useContext"],"mappings":"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"}