@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":"themes.js","sources":["../src/themes/presets/base.js","../src/themes/presets/elegant.js","../src/themes/presets/metro.js","../src/themes/presets/studio.js","../src/themes/presets/vivid.js","../src/themes/index.ts"],"sourcesContent":["/**\n * Base theme preset - Clean default configuration\n * @description Basic black & white theme showcasing the default base configuration\n * @package @bloomneo/uikit\n * @file /src/themes/presets/base.js\n */\n\n// Base theme - self-contained\n\n/**\n * Base theme preset - Shows the default configuration with minimal overrides\n * Perfect for demonstrating the base system and as a starting point for new themes\n */\nconst baseTheme = {\n id: 'base',\n name: 'Base',\n description: 'Clean sky blue theme with modern styling and professional appearance',\n\n // Base theme with system fonts only\n customStyles: `\n /* Base theme - Only 4 unified classes */\n .theme-base {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;\n font-weight: 400;\n line-height: 1.6;\n font-feature-settings: 'kern' 1, 'liga' 1, 'calt' 1;\n }\n \n .theme-base .voila-heading {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n font-weight: 800;\n letter-spacing: -0.04em;\n line-height: 1.1;\n font-size: clamp(2.5rem, 6vw, 4rem);\n color: var(--color-foreground);\n }\n \n .theme-base .voila-subheading {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n font-weight: 600;\n letter-spacing: -0.02em;\n line-height: 1.3;\n font-size: clamp(1.25rem, 3vw, 2rem);\n color: var(--color-muted-foreground);\n }\n \n .theme-base .voila-brand-logo {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n font-weight: 700;\n letter-spacing: -0.03em;\n font-size: 1.25rem;\n }\n \n /* Body text enhancements */\n .theme-base strong, .theme-base b {\n font-weight: 600;\n }\n \n /* Cursor styles for interactive elements */\n .theme-base button,\n .theme-base .btn,\n .theme-base [data-slot=\"button\"],\n .theme-base input[type=\"button\"],\n .theme-base input[type=\"submit\"],\n .theme-base input[type=\"reset\"],\n .theme-base a,\n .theme-base [role=\"button\"],\n .theme-base [tabindex=\"0\"]:not(input):not(textarea):not(select) {\n cursor: pointer;\n }\n \n /* Disabled buttons get not-allowed cursor */\n .theme-base button:disabled,\n .theme-base .btn:disabled,\n .theme-base [data-slot=\"button\"]:disabled,\n .theme-base input:disabled {\n cursor: not-allowed;\n }\n\n /* Clean focus ring */\n .theme-base *:focus-visible {\n outline: 2px solid var(--color-foreground);\n outline-offset: 2px;\n box-shadow: 0 0 0 4px rgb(from var(--color-foreground) r g b / 0.1);\n }\n `,\n\n // Sky blue themed colors\n light: {\n // Base clean colors with sky blue tint\n background: '#FFFFFF',\n foreground: '#1E293B',\n card: '#F8FAFC',\n cardForeground: '#1E293B',\n popover: '#FFFFFF',\n popoverForeground: '#1E293B',\n\n // Sky blue interactive colors\n primary: '#0EA5E9',\n primaryForeground: '#FFFFFF',\n secondary: '#F5E6D3',\n secondaryForeground: '#92400E',\n muted: '#F0F9FF',\n mutedForeground: '#64748B',\n accent: '#E0F2FE',\n accentForeground: '#0C4A6E',\n\n // State colors\n destructive: '#DC2626',\n destructiveForeground: '#FFFFFF',\n\n // Border colors with sky blue tint\n border: '#E2E8F0',\n input: '#CBD5E1',\n ring: '#0EA5E9',\n\n // Chart colors - sky blue progression\n chart1: '#0EA5E9',\n chart2: '#38BDF8',\n chart3: '#7DD3FC',\n chart4: '#BAE6FD',\n chart5: '#E0F2FE',\n\n // Sidebar colors\n sidebar: '#F8FAFC',\n sidebarForeground: '#1E293B',\n sidebarPrimary: '#0EA5E9',\n sidebarPrimaryForeground: '#FFFFFF',\n sidebarAccent: '#F5E6D3',\n sidebarAccentForeground: '#92400E',\n sidebarBorder: '#E2E8F0',\n sidebarRing: '#0EA5E9',\n },\n\n dark: {\n // Dark colors with sky blue accents\n background: '#0F172A',\n foreground: '#F1F5F9',\n card: '#1E293B',\n cardForeground: '#F1F5F9',\n popover: '#1E293B',\n popoverForeground: '#F1F5F9',\n\n // Sky blue interactive colors for dark mode\n primary: '#38BDF8',\n primaryForeground: '#0F172A',\n secondary: '#44403C',\n secondaryForeground: '#FEF7ED',\n muted: '#1E293B',\n mutedForeground: '#94A3B8',\n accent: '#334155',\n accentForeground: '#F1F5F9',\n\n // State colors\n destructive: '#EF4444',\n destructiveForeground: '#FFFFFF',\n\n // Border colors with sky blue tint\n border: '#334155',\n input: '#475569',\n ring: '#38BDF8',\n\n // Chart colors - sky blue progression for dark mode\n chart1: '#38BDF8',\n chart2: '#0EA5E9',\n chart3: '#0284C7',\n chart4: '#0369A1',\n chart5: '#075985',\n\n // Sidebar colors\n sidebar: '#1E293B',\n sidebarForeground: '#F1F5F9',\n sidebarPrimary: '#38BDF8',\n sidebarPrimaryForeground: '#0F172A',\n sidebarAccent: '#44403C',\n sidebarAccentForeground: '#FEF7ED',\n sidebarBorder: '#475569',\n sidebarRing: '#38BDF8',\n },\n};\n\nexport default baseTheme;","/**\n * Elegant theme preset - Clean professional blue design\n * @description Fresh, minimal sky blue theme perfect for business and professional applications\n * @package @bloomneo/uikit\n * @file /src/themes/presets/elegant.js\n */\n\n/**\n * Elegant theme preset - Clean professional blue design\n * Perfect for business applications with fresh, minimal aesthetic\n */\nconst elegantTheme = {\n id: 'elegant',\n name: 'Elegant',\n description: 'Fresh, minimal sky blue theme perfect for business and professional applications',\n\n // Elegant theme with Playfair Display headings and Montserrat body\n customStyles: `\n /* Elegant theme - Only 4 unified classes */\n .theme-elegant {\n font-family: 'Montserrat', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;\n font-weight: 400;\n line-height: 1.6;\n font-feature-settings: 'kern' 1, 'liga' 1, 'calt' 1;\n }\n \n .theme-elegant .voila-heading {\n font-family: 'DM Serif Display', serif;\n font-weight: 400;\n letter-spacing: -0.02em;\n line-height: 1.1;\n font-size: clamp(2.5rem, 6vw, 4rem);\n color: var(--color-foreground);\n }\n \n .theme-elegant .voila-subheading {\n font-family: 'Rubik', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\n font-weight: 500;\n letter-spacing: -0.01em;\n line-height: 1.3;\n font-size: clamp(1.25rem, 3vw, 2rem);\n color: var(--color-muted-foreground);\n }\n \n .theme-elegant .voila-brand-logo {\n font-family: 'DM Serif Display', serif;\n font-weight: 400;\n letter-spacing: -0.01em;\n font-size: 1.25rem;\n }\n \n /* Body text enhancements */\n .theme-elegant strong, .theme-elegant b {\n font-weight: 600;\n }\n \n /* Cursor styles for interactive elements */\n .theme-elegant button,\n .theme-elegant .btn,\n .theme-elegant [data-slot=\"button\"],\n .theme-elegant input[type=\"button\"],\n .theme-elegant input[type=\"submit\"],\n .theme-elegant input[type=\"reset\"],\n .theme-elegant a,\n .theme-elegant [role=\"button\"],\n .theme-elegant [tabindex=\"0\"]:not(input):not(textarea):not(select) {\n cursor: pointer;\n }\n \n /* Disabled buttons get not-allowed cursor */\n .theme-elegant button:disabled,\n .theme-elegant .btn:disabled,\n .theme-elegant [data-slot=\"button\"]:disabled,\n .theme-elegant input:disabled {\n cursor: not-allowed;\n }\n \n /* Elegant focus ring with blue accent */\n .theme-elegant *:focus-visible {\n outline: 2px solid #003285;\n outline-offset: 2px;\n box-shadow: 0 0 0 4px rgb(0, 50, 133, 0.1);\n }\n `,\n\n light: {\n // Clean blue color palette\n background: '#FFFFFF',\n foreground: '#1F2937',\n card: '#F8FAFC',\n cardForeground: '#1F2937',\n popover: '#FFFFFF',\n popoverForeground: '#1F2937',\n\n // Blue accent system with yellow secondary - 50% lighter for visibility\n primary: '#2C5688',\n primaryForeground: '#FFFFFF',\n secondary: '#FAA533',\n secondaryForeground: '#FFFFFF',\n muted: '#F8FAFC',\n mutedForeground: '#6B7280',\n accent: '#E0F2FE',\n accentForeground: '#1F2937',\n\n // State colors\n destructive: '#DC2626',\n destructiveForeground: '#FFFFFF',\n\n // Border colors\n border: '#E2E8F0',\n input: '#CBD5E1',\n ring: '#003285',\n\n // Chart colors - blue progression\n chart1: '#003285',\n chart2: '#1E40AF',\n chart3: '#3B82F6',\n chart4: '#60A5FA',\n chart5: '#93C5FD',\n\n // Sidebar colors\n sidebar: '#F8FAFC',\n sidebarForeground: '#1F2937',\n sidebarPrimary: '#003285',\n sidebarPrimaryForeground: '#FFFFFF',\n sidebarAccent: '#E0F2FE',\n sidebarAccentForeground: '#6B7280',\n sidebarBorder: '#E2E8F0',\n sidebarRing: '#003285',\n },\n\n dark: {\n // Dark blue palette\n background: '#0F172A',\n foreground: '#F8FAFC',\n card: '#1E293B',\n cardForeground: '#F8FAFC',\n popover: '#1E293B',\n popoverForeground: '#F8FAFC',\n\n // Dark blue accents with yellow secondary - 50% lighter for visibility\n primary: '#3A6498',\n primaryForeground: '#0F172A',\n secondary: '#FAA533',\n secondaryForeground: '#000000',\n muted: '#1E293B',\n mutedForeground: '#94A3B8',\n accent: '#1E40AF',\n accentForeground: '#F8FAFC',\n\n // State colors\n destructive: '#EF4444',\n destructiveForeground: '#FFFFFF',\n\n // Border colors\n border: '#334155',\n input: '#475569',\n ring: '#2563EB',\n\n // Chart colors - bright blues for dark mode\n chart1: '#2563EB',\n chart2: '#3B82F6',\n chart3: '#60A5FA',\n chart4: '#93C5FD',\n chart5: '#DBEAFE',\n\n // Sidebar colors\n sidebar: '#1E293B',\n sidebarForeground: '#F8FAFC',\n sidebarPrimary: '#2563EB',\n sidebarPrimaryForeground: '#F8FAFC',\n sidebarAccent: '#1E40AF',\n sidebarAccentForeground: '#94A3B8',\n sidebarBorder: '#475569',\n sidebarRing: '#2563EB',\n },\n};\n\nexport default elegantTheme;","/**\n * Metro theme preset - Clean, systematic design (OPTIMIZED)\n * @description Modern, systematic theme for dashboards, admin panels, and professional applications\n * @package @bloomneo/uikit\n * @file /src/themes/presets/metro-optimized.js\n */\n\n// Metro theme - self-contained\n\n/**\n * Metro theme preset - Only overrides what's different from default\n * Uses the new modular system for dramatically reduced file size\n */\nconst metroTheme = {\n id: 'metro',\n name: 'Metro',\n description: 'Clean, systematic design inspired by modern transit systems for professional applications',\n\n // Only override design tokens that differ from default\n design: {\n // Metro-specific fonts\n fontDisplay: \"'Crimson Text', serif\",\n \n // Metro-specific gradients\n gradientPrimary: '#0f3a36', // Flat primary color\n gradientSubtle: 'linear-gradient(135deg, oklch(0.96 0.005 240) 0%, oklch(0.88 0.008 240) 100%)',\n gradientHover: 'linear-gradient(135deg, oklch(0.55 0.12 220) 0%, #0f3a36 100%)',\n gradientText: 'linear-gradient(135deg, #0f3a36 0%, oklch(0.55 0.12 200) 50%, oklch(0.96 0.005 240) 100%)',\n gradientBackground: 'linear-gradient(135deg, oklch(0.09 0.01 240) 0%, oklch(0.15 0.015 220) 100%)',\n gradientBackgroundLight: 'linear-gradient(135deg, oklch(0.96 0.005 240) 0%, oklch(0.99 0.002 240) 70%, oklch(0.88 0.008 240) 100%)',\n },\n\n // Only metro-specific styles\n customStyles: `\n /* Metro theme - Only 4 unified classes */\n .theme-metro {\n font-family: 'Libre Baskerville', serif;\n font-weight: 400;\n line-height: 1.6;\n }\n \n .theme-metro .voila-heading {\n font-family: 'Crimson Text', serif;\n font-weight: 700;\n letter-spacing: -0.04em;\n line-height: 1.1;\n font-size: clamp(2.5rem, 6vw, 4rem);\n }\n \n .theme-metro .voila-subheading {\n font-family: 'Work Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\n font-weight: 500;\n letter-spacing: -0.01em;\n line-height: 1.3;\n font-size: clamp(1.25rem, 3vw, 2rem);\n }\n \n .theme-metro .voila-brand-logo {\n font-family: 'Crimson Text', serif;\n font-weight: 700;\n letter-spacing: -0.03em;\n font-size: 1.25rem;\n }\n \n /* Body text enhancements */\n .theme-metro strong, .theme-metro b {\n font-weight: 600;\n }\n \n /* Cursor styles for interactive elements */\n .theme-metro button,\n .theme-metro .btn,\n .theme-metro [data-slot=\"button\"],\n .theme-metro input[type=\"button\"],\n .theme-metro input[type=\"submit\"],\n .theme-metro input[type=\"reset\"],\n .theme-metro a,\n .theme-metro [role=\"button\"],\n .theme-metro [tabindex=\"0\"]:not(input):not(textarea):not(select) {\n cursor: pointer;\n }\n \n /* Disabled buttons get not-allowed cursor */\n .theme-metro button:disabled,\n .theme-metro .btn:disabled,\n .theme-metro [data-slot=\"button\"]:disabled,\n .theme-metro input:disabled {\n cursor: not-allowed;\n }\n \n /* Metro focus style override */\n .theme-metro *:focus-visible {\n outline: 2px solid #0f3a36;\n outline-offset: 2px;\n box-shadow: 0 0 0 4px rgb(15, 58, 54, 0.2);\n }\n `,\n\n light: {\n // Only override colors that are different from default\n background: 'oklch(0.99 0.002 240)',\n backgroundGradient: 'linear-gradient(135deg, oklch(0.96 0.005 240) 0%, oklch(0.99 0.002 240) 70%, oklch(0.88 0.008 240) 100%)',\n foreground: 'oklch(0.09 0.01 240)',\n card: 'oklch(0.98 0.003 240)',\n cardForeground: 'oklch(0.09 0.01 240)',\n popover: 'oklch(0.98 0.003 240)',\n popoverForeground: 'oklch(0.09 0.01 240)',\n\n // Metro color palette - 50% lighter for visibility\n primary: '#1B4942',\n primaryForeground: 'oklch(0.98 0.003 240)',\n secondary: '#FAA533',\n secondaryForeground: '#000000',\n muted: 'oklch(0.96 0.005 240)',\n mutedForeground: 'oklch(0.35 0.01 240)',\n accent: 'oklch(0.55 0.12 200)',\n accentForeground: 'oklch(0.98 0.003 240)',\n\n // Border colors\n border: 'oklch(0.88 0.008 240)',\n input: 'oklch(0.88 0.008 240)',\n ring: '#0f3a36',\n\n // Chart colors - transit-inspired\n chart1: '#0f3a36',\n chart2: 'oklch(0.55 0.12 200)',\n chart3: 'oklch(0.5 0.1 160)',\n chart4: 'oklch(0.6 0.15 60)',\n chart5: 'oklch(0.45 0.25 25)',\n\n // Sidebar colors\n sidebar: 'oklch(0.98 0.003 240)',\n sidebarForeground: 'oklch(0.09 0.01 240)',\n sidebarPrimary: '#0f3a36',\n sidebarPrimaryForeground: 'oklch(0.98 0.003 240)',\n sidebarAccent: 'oklch(0.55 0.12 200)',\n sidebarAccentForeground: 'oklch(0.35 0.01 240)',\n sidebarBorder: 'oklch(0.88 0.008 240)',\n sidebarRing: '#0f3a36',\n },\n\n dark: {\n // Dark mode metro colors\n background: 'oklch(0.05 0.005 220)',\n backgroundGradient: 'linear-gradient(135deg, oklch(0.05 0.005 220) 0%, oklch(0.15 0.015 220) 100%)',\n foreground: 'oklch(0.95 0.01 220)',\n card: 'oklch(0.20 0.015 220)',\n cardForeground: 'oklch(0.95 0.01 220)',\n popover: 'oklch(0.20 0.015 220)',\n popoverForeground: 'oklch(0.95 0.01 220)',\n\n primary: '#2F625C',\n primaryForeground: 'oklch(0.05 0.005 220)',\n secondary: '#FAA533',\n secondaryForeground: '#000000',\n muted: 'oklch(0.08 0.01 240)',\n mutedForeground: 'oklch(0.75 0.01 240)',\n accent: 'oklch(0.75 0.18 200)',\n accentForeground: 'oklch(0.04 0.01 240)',\n\n // Border colors\n border: 'oklch(0.18 0.015 240)',\n input: 'oklch(0.18 0.015 240)',\n ring: '#0f3a36',\n\n // Chart colors - brightened for dark mode\n chart1: '#0f3a36',\n chart2: 'oklch(0.75 0.18 200)',\n chart3: 'oklch(0.7 0.15 160)',\n chart4: 'oklch(0.75 0.2 60)',\n chart5: 'oklch(0.65 0.25 25)',\n\n // Sidebar colors\n sidebar: 'oklch(0.20 0.015 220)',\n sidebarForeground: 'oklch(0.95 0.01 220)',\n sidebarPrimary: '#0f3a36',\n sidebarPrimaryForeground: 'oklch(0.98 0.005 220)',\n sidebarAccent: 'oklch(0.75 0.18 200)',\n sidebarAccentForeground: 'oklch(0.75 0.01 240)',\n sidebarBorder: 'oklch(0.18 0.015 240)',\n sidebarRing: '#0f3a36',\n },\n};\n\nexport default metroTheme;","/**\n * Studio theme preset - Sophisticated designer grays (OPTIMIZED)\n * @description Professional creative theme for design tools and portfolios\n * @package @bloomneo/uikit\n * @file /src/themes/presets/studio-optimized.js\n */\n\n// Studio theme - self-contained\n\n/**\n * Studio theme preset - Only overrides what's different from default\n * Uses the new modular system for dramatically reduced file size\n */\nconst studioTheme = {\n id: 'studio',\n name: 'Studio',\n description: 'Sophisticated designer grays with strategic color accents for creative professionals',\n\n // Only override design tokens that differ from default\n design: {\n // Studio-specific fonts\n fontPrimary: \"'Montserrat', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif\",\n fontDisplay: \"'Merriweather', serif\",\n \n // Studio-specific gradients\n gradientPrimary: 'rgb(37, 41, 49)', // Flat primary color\n gradientSubtle: 'linear-gradient(135deg, oklch(0.97 0.002 270) 0%, oklch(0.90 0.003 270) 100%)',\n gradientHover: 'linear-gradient(135deg, oklch(0.60 0.08 260) 0%, rgb(37, 41, 49) 100%)',\n gradientText: 'linear-gradient(135deg, rgb(37, 41, 49) 0%, oklch(0.65 0.15 45) 50%, oklch(0.97 0.002 270) 100%)',\n gradientBackground: 'linear-gradient(135deg, oklch(0.08 0.005 270) 0%, oklch(0.15 0.01 270) 100%)',\n gradientBackgroundLight: 'linear-gradient(135deg, oklch(0.97 0.002 270) 0%, oklch(0.99 0.001 270) 70%, oklch(0.90 0.003 270) 100%)',\n },\n\n // Only studio-specific styles\n customStyles: `\n /* Studio theme - Only 4 unified classes */\n .theme-studio {\n font-family: 'Source Serif Pro', serif;\n font-weight: 400;\n line-height: 1.6;\n }\n \n .theme-studio .voila-heading {\n font-family: 'Space Grotesk', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\n font-weight: 700;\n letter-spacing: -0.02em;\n line-height: 1.1;\n font-size: clamp(2.5rem, 6vw, 4rem);\n }\n \n .theme-studio .voila-subheading {\n font-family: 'Poppins', sans-serif;\n font-weight: 600;\n letter-spacing: -0.02em;\n line-height: 1.3;\n font-size: clamp(1.25rem, 3vw, 2rem);\n }\n \n .theme-studio .voila-brand-logo {\n font-family: 'Space Grotesk', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\n font-weight: 600;\n letter-spacing: -0.01em;\n font-size: 1.25rem;\n }\n \n /* Studio-specific button hover */\n .theme-studio .btn-primary:hover,\n .theme-studio button[data-variant=\"primary\"]:hover,\n .theme-studio [data-slot=\"button\"][data-variant=\"primary\"]:hover {\n background: var(--voila-gradient-hover);\n }\n \n \n /* Body text enhancements */\n .theme-studio strong, .theme-studio b {\n font-weight: 600;\n }\n \n /* Cursor styles for interactive elements */\n .theme-studio button,\n .theme-studio .btn,\n .theme-studio [data-slot=\"button\"],\n .theme-studio input[type=\"button\"],\n .theme-studio input[type=\"submit\"],\n .theme-studio input[type=\"reset\"],\n .theme-studio a,\n .theme-studio [role=\"button\"],\n .theme-studio [tabindex=\"0\"]:not(input):not(textarea):not(select) {\n cursor: pointer;\n }\n \n /* Disabled buttons get not-allowed cursor */\n .theme-studio button:disabled,\n .theme-studio .btn:disabled,\n .theme-studio [data-slot=\"button\"]:disabled,\n .theme-studio input:disabled {\n cursor: not-allowed;\n }\n \n /* Studio focus style override */\n .theme-studio *:focus-visible {\n outline: 2px solid rgb(37, 41, 49);\n outline-offset: 2px;\n box-shadow: 0 0 0 4px rgb(37, 41, 49, 0.2);\n }\n `,\n\n light: {\n // Only override colors that are different from default\n background: 'oklch(0.99 0.001 270)',\n backgroundGradient: 'linear-gradient(135deg, oklch(0.97 0.002 270) 0%, oklch(0.99 0.001 270) 70%, oklch(0.90 0.003 270) 100%)',\n foreground: 'oklch(0.08 0.005 270)',\n card: 'oklch(0.98 0.002 270)',\n cardForeground: 'oklch(0.08 0.005 270)',\n popover: 'oklch(0.98 0.002 270)',\n popoverForeground: 'oklch(0.08 0.005 270)',\n\n // Studio color palette - 50% lighter for visibility\n primary: 'rgb(56, 61, 73)',\n primaryForeground: 'oklch(0.98 0.002 270)',\n secondary: 'oklch(0.85 0.003 270)',\n secondaryForeground: 'oklch(0.15 0.008 270)',\n muted: 'oklch(0.97 0.002 270)',\n mutedForeground: 'oklch(0.38 0.005 270)',\n accent: 'oklch(0.65 0.15 45)',\n accentForeground: 'oklch(0.98 0.002 270)',\n\n // Border colors\n border: 'oklch(0.9 0.003 270)',\n input: 'oklch(0.9 0.003 270)',\n ring: 'rgb(37, 41, 49)',\n\n // Chart colors - creative palette\n chart1: 'rgb(37, 41, 49)',\n chart2: 'oklch(0.65 0.15 45)',\n chart3: 'oklch(0.45 0.12 200)',\n chart4: 'oklch(0.5 0.1 320)',\n chart5: 'oklch(0.4 0.08 120)',\n\n // Sidebar colors\n sidebar: 'oklch(0.98 0.002 270)',\n sidebarForeground: 'oklch(0.08 0.005 270)',\n sidebarPrimary: 'rgb(37, 41, 49)',\n sidebarPrimaryForeground: 'oklch(0.98 0.002 270)',\n sidebarAccent: 'oklch(0.65 0.15 45)',\n sidebarAccentForeground: 'oklch(0.38 0.005 270)',\n sidebarBorder: 'oklch(0.9 0.003 270)',\n sidebarRing: 'rgb(37, 41, 49)',\n },\n\n dark: {\n // Dark mode studio colors\n background: 'oklch(0.05 0.003 270)',\n backgroundGradient: 'linear-gradient(135deg, oklch(0.05 0.003 270) 0%, oklch(0.15 0.01 270) 100%)',\n foreground: 'oklch(0.95 0.005 270)',\n card: 'oklch(0.20 0.01 270)',\n cardForeground: 'oklch(0.95 0.005 270)',\n popover: 'oklch(0.20 0.01 270)',\n popoverForeground: 'oklch(0.95 0.005 270)',\n\n primary: 'rgb(78, 84, 96)',\n primaryForeground: 'oklch(0.08 0.005 270)',\n secondary: 'oklch(0.10 0.008 270)',\n secondaryForeground: 'oklch(0.94 0.005 270)',\n muted: 'oklch(0.08 0.006 270)',\n mutedForeground: 'oklch(0.74 0.005 270)',\n accent: 'oklch(0.85 0.18 45)',\n accentForeground: 'oklch(0.04 0.005 270)',\n\n // Border colors\n border: 'oklch(0.18 0.008 270)',\n input: 'oklch(0.18 0.008 270)',\n ring: 'rgb(37, 41, 49)',\n\n // Chart colors - brightened for dark mode\n chart1: 'rgb(37, 41, 49)',\n chart2: 'oklch(0.85 0.18 45)',\n chart3: 'oklch(0.7 0.15 200)',\n chart4: 'oklch(0.72 0.12 320)',\n chart5: 'oklch(0.68 0.1 120)',\n\n // Sidebar colors\n sidebar: 'oklch(0.20 0.01 270)',\n sidebarForeground: 'oklch(0.95 0.005 270)',\n sidebarPrimary: 'rgb(37, 41, 49)',\n sidebarPrimaryForeground: 'oklch(0.98 0.003 270)',\n sidebarAccent: 'oklch(0.85 0.18 45)',\n sidebarAccentForeground: 'oklch(0.74 0.005 270)',\n sidebarBorder: 'oklch(0.18 0.008 270)',\n sidebarRing: 'rgb(37, 41, 49)',\n },\n};\n\nexport default studioTheme;","/**\n * Vivid theme preset - Premium cursive design (OPTIMIZED)\n * @description Sophisticated theme featuring cursive hero fonts perfect for luxury brands and creative portfolios\n * @package @bloomneo/uikit\n * @file /src/themes/presets/vivid-optimized.js\n */\n\n// Vivid theme - self-contained\n\n/**\n * Vivid theme preset - Only overrides what's different from default\n * Uses the new modular system for dramatically reduced file size\n */\nconst vividTheme = {\n id: 'vivid',\n name: 'Vivid',\n description: 'Premium cursive theme with sophisticated typography for luxury brands and creative portfolios',\n\n // Only override design tokens that differ from default\n design: {\n // Vivid-specific fonts\n fontPrimary: \"'Libre Baskerville', 'Merriweather', 'Times New Roman', serif\",\n fontDisplay: \"'Playfair Display', 'Crimson Text', 'Times New Roman', serif\",\n fontScript: \"'Caveat', 'Amatic SC', cursive\",\n \n // More elegant spacing and radius for luxury feel\n radiusEnhance: '1.2rem',\n spacingEnhance: '1.2',\n \n // Enhanced shadows for premium feel\n shadowEnhance: '0 4px 20px rgb(0 0 0 / 0.08), 0 1px 3px rgb(0 0 0 / 0.05)',\n shadowLg: '0 8px 30px rgb(0 0 0 / 0.12), 0 2px 6px rgb(0 0 0 / 0.08)',\n shadowXl: '0 12px 40px rgb(0 0 0 / 0.15), 0 4px 12px rgb(0 0 0 / 0.1)',\n \n },\n\n // Only vivid-specific styles\n customStyles: `\n /* Vivid theme - Only 4 unified classes */\n .theme-vivid {\n font-family: 'Libre Baskerville', serif;\n font-weight: 400;\n line-height: 1.7;\n font-feature-settings: 'kern' 1, 'liga' 1, 'calt' 1, 'onum' 1;\n }\n \n .theme-vivid .voila-heading {\n font-family: 'Caveat', cursive;\n font-weight: 700;\n letter-spacing: -0.02em;\n line-height: 1.1;\n font-size: clamp(2.5rem, 6vw, 4rem);\n }\n \n .theme-vivid .voila-subheading {\n font-family: 'Playfair Display', serif;\n font-weight: 500;\n font-style: italic;\n letter-spacing: -0.01em;\n line-height: 1.3;\n font-size: clamp(1.25rem, 3vw, 2rem);\n }\n \n .theme-vivid .voila-brand-logo {\n font-family: 'Caveat', cursive;\n font-weight: 700;\n letter-spacing: -0.01em;\n font-size: 1.5rem;\n }\n \n /* Clean gradient for bg-primary in Vivid theme only */\n .theme-vivid .bg-primary {\n background: linear-gradient(135deg, oklch(0.25 0.12 280) 0%, rgb(111, 103, 244) 100%) !important;\n }\n \n .theme-vivid.dark .bg-primary {\n background: linear-gradient(135deg, oklch(0.45 0.18 280) 0%, rgb(151, 143, 255) 100%) !important;\n }\n \n /* Premium typography */\n .theme-vivid p, .theme-vivid div, .theme-vivid span {\n font-feature-settings: 'kern' 1, 'liga' 1, 'calt' 1, 'onum' 1;\n line-height: 1.7;\n }\n \n /* Elegant button effects */\n .theme-vivid .btn-primary,\n .theme-vivid button[data-variant=\"primary\"],\n .theme-vivid [data-slot=\"button\"][data-variant=\"primary\"] {\n background: linear-gradient(135deg, oklch(0.25 0.12 280) 0%, rgb(111, 103, 244) 100%);\n letter-spacing: 0.025em;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n border-radius: 1.2rem;\n }\n \n .theme-vivid button,\n .theme-vivid [data-slot=\"button\"] {\n border-radius: 1.2rem;\n }\n \n .theme-vivid .btn-primary:hover,\n .theme-vivid button[data-variant=\"primary\"]:hover,\n .theme-vivid [data-slot=\"button\"][data-variant=\"primary\"]:hover {\n background: linear-gradient(135deg, oklch(0.22 0.14 315) 0%, oklch(0.25 0.12 280) 100%);\n transform: translateY(-2px);\n box-shadow: 0 8px 25px rgb(0 0 0 / 0.15), 0 3px 10px rgb(0 0 0 / 0.1);\n }\n \n /* Premium cards */\n .theme-vivid [data-slot=\"card\"] {\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n border: 1px solid oklch(from var(--color-border) l c h / 0.3);\n }\n \n .theme-vivid [data-slot=\"card\"]:hover {\n transform: translateY(-4px);\n box-shadow: 0 12px 40px rgb(0 0 0 / 0.12), 0 4px 12px rgb(0 0 0 / 0.08);\n }\n \n /* Darker shadows for dark mode cards */\n .theme-vivid.dark [data-slot=\"card\"] {\n box-shadow: 0 4px 20px rgb(0 0 0 / 0.25), 0 1px 3px rgb(0 0 0 / 0.15);\n border: 1px solid oklch(from var(--color-border) l c h / 0.4);\n }\n \n .theme-vivid.dark [data-slot=\"card\"]:hover {\n box-shadow: 0 12px 40px rgb(0 0 0 / 0.35), 0 4px 12px rgb(0 0 0 / 0.20);\n }\n \n /* Cursor styles for interactive elements */\n .theme-vivid button,\n .theme-vivid .btn,\n .theme-vivid [data-slot=\"button\"],\n .theme-vivid input[type=\"button\"],\n .theme-vivid input[type=\"submit\"],\n .theme-vivid input[type=\"reset\"],\n .theme-vivid a,\n .theme-vivid [role=\"button\"],\n .theme-vivid [tabindex=\"0\"]:not(input):not(textarea):not(select) {\n cursor: pointer;\n }\n \n /* Disabled buttons get not-allowed cursor */\n .theme-vivid button:disabled,\n .theme-vivid .btn:disabled,\n .theme-vivid [data-slot=\"button\"]:disabled,\n .theme-vivid input:disabled {\n cursor: not-allowed;\n }\n \n /* Refined focus styles */\n .theme-vivid *:focus-visible {\n outline-offset: 3px;\n box-shadow: 0 0 0 6px oklch(0.45 0.08 290 / 0.15);\n }\n `,\n\n light: {\n // Only override colors that are different from default\n background: 'oklch(1.00 0.000 0)',\n backgroundGradient: 'linear-gradient(135deg, oklch(0.45 0.08 290 / 0.02) 0%, oklch(1.00 0.000 0) 70%, oklch(0.98 0.005 60 / 0.01) 100%)',\n foreground: 'oklch(0.18 0.02 290)',\n card: 'oklch(0.99 0.002 290)',\n cardForeground: 'oklch(0.18 0.02 290)',\n popover: 'oklch(0.99 0.002 290)',\n popoverForeground: 'oklch(0.18 0.02 290)',\n\n // Vivid color palette - blue-dominant elegant with custom rgb gradient\n primary: 'oklch(0.50 0.18 280)',\n primaryForeground: 'oklch(0.98 0.005 60)',\n secondary: 'oklch(0.58 0.20 15)',\n secondaryForeground: 'oklch(0.98 0.005 60)',\n muted: 'oklch(0.97 0.02 70)',\n mutedForeground: 'oklch(0.42 0.05 290)',\n accent: 'oklch(0.75 0.12 40)',\n accentForeground: 'oklch(0.08 0.02 290)',\n\n // Border colors\n border: 'oklch(0.90 0.02 290)',\n input: 'oklch(0.90 0.02 290)',\n ring: 'oklch(0.45 0.08 290)',\n\n // Chart colors - vibrant elegant spectrum \n chart1: 'oklch(0.25 0.12 280)',\n chart2: 'oklch(0.58 0.20 15)',\n chart3: 'oklch(0.75 0.12 40)',\n chart4: 'oklch(0.22 0.14 315)',\n chart5: 'oklch(0.45 0.08 290)',\n\n // Sidebar colors\n sidebar: 'oklch(0.98 0.005 60)',\n sidebarForeground: 'oklch(0.18 0.02 290)',\n sidebarPrimary: 'oklch(0.45 0.08 290)',\n sidebarPrimaryForeground: 'oklch(0.98 0.005 60)',\n sidebarAccent: 'oklch(0.95 0.015 290)',\n sidebarAccentForeground: 'oklch(0.42 0.05 290)',\n sidebarBorder: 'oklch(0.90 0.02 290)',\n sidebarRing: 'oklch(0.45 0.08 290)',\n },\n\n dark: {\n // Dark mode vivid colors\n background: 'oklch(0.08 0.02 290)',\n backgroundGradient: 'linear-gradient(135deg, oklch(0.08 0.02 290) 0%, oklch(0.06 0.015 320) 100%)',\n foreground: 'oklch(0.92 0.01 60)',\n card: 'oklch(0.20 0.04 290)',\n cardForeground: 'oklch(0.92 0.01 60)',\n popover: 'oklch(0.16 0.03 290)',\n popoverForeground: 'oklch(0.92 0.01 60)',\n\n // Brightened colors for dark mode with custom rgb gradient\n primary: 'oklch(0.68 0.25 280)',\n primaryForeground: 'oklch(0.08 0.02 290)',\n secondary: 'oklch(0.70 0.25 15)',\n secondaryForeground: 'oklch(0.08 0.02 290)',\n muted: 'oklch(0.10 0.02 290)',\n mutedForeground: 'oklch(0.70 0.05 290)',\n accent: 'oklch(0.80 0.15 40)',\n accentForeground: 'oklch(0.08 0.02 290)',\n\n // Border colors\n border: 'oklch(0.28 0.05 290)',\n input: 'oklch(0.25 0.04 290)',\n ring: 'oklch(0.62 0.12 290)',\n\n // Chart colors - brightened for dark mode\n chart1: 'oklch(0.45 0.18 280)',\n chart2: 'oklch(0.70 0.25 15)',\n chart3: 'oklch(0.80 0.15 40)',\n chart4: 'oklch(0.42 0.20 315)',\n chart5: 'oklch(0.65 0.12 290)',\n\n // Sidebar colors\n sidebar: 'oklch(0.10 0.02 290)',\n sidebarForeground: 'oklch(0.92 0.01 60)',\n sidebarPrimary: 'oklch(0.62 0.12 290)',\n sidebarPrimaryForeground: 'oklch(0.08 0.02 290)',\n sidebarAccent: 'oklch(0.18 0.03 290)',\n sidebarAccentForeground: 'oklch(0.70 0.05 290)',\n sidebarBorder: 'oklch(0.28 0.05 290)',\n sidebarRing: 'oklch(0.62 0.12 290)',\n },\n};\n\nexport default vividTheme;","/**\n * Optimized theme system exports for @bloomneo/uikit\n * @module @bloomneo/uikit\n * @file src/themes/index.ts\n */\n\n// Theme provider exports\nexport {\n ThemeProvider,\n useTheme,\n type Theme,\n type Mode,\n type Tone,\n type ThemeContextValue,\n type ThemeProviderProps,\n} from './theme-provider';\n\n// Import optimized theme presets from JavaScript files\nimport baseTheme from './presets/base.js';\nimport elegantTheme from './presets/elegant.js';\nimport metroTheme from './presets/metro.js';\nimport studioTheme from './presets/studio.js';\nimport vividTheme from './presets/vivid.js';\n\n// Re-export with both default and named patterns\nexport { default as baseTheme } from './presets/base.js';\nexport { default as elegantTheme } from './presets/elegant.js';\nexport { default as metroTheme } from './presets/metro.js';\nexport { default as studioTheme } from './presets/studio.js';\nexport { default as vividTheme } from './presets/vivid.js';\n\n// Named aliases for convenience\nexport { baseTheme as base };\nexport { elegantTheme as elegant };\nexport { metroTheme as metro };\nexport { studioTheme as studio };\nexport { vividTheme as vivid };\n\n// Type definitions for themes (inferred from JavaScript objects)\nexport interface ThemeColors {\n // Base colors\n background: string;\n foreground: string;\n card: string;\n cardForeground: string;\n popover: string;\n popoverForeground: string;\n \n // Interactive colors\n primary: string;\n primaryForeground: string;\n secondary: string;\n secondaryForeground: string;\n muted: string;\n mutedForeground: string;\n accent: string;\n accentForeground: string;\n \n // State colors\n destructive: string;\n destructiveForeground: string;\n \n // Border colors\n border: string;\n input: string;\n ring: string;\n \n // Chart colors\n chart1: string;\n chart2: string;\n chart3: string;\n chart4: string;\n chart5: string;\n \n // Sidebar colors\n sidebar: string;\n sidebarForeground: string;\n sidebarPrimary: string;\n sidebarPrimaryForeground: string;\n sidebarAccent: string;\n sidebarAccentForeground: string;\n sidebarBorder: string;\n sidebarRing: string;\n}\n\nexport interface ThemePreset {\n /** Theme identifier (must match filename) */\n id: string;\n /** Human-readable theme name */\n name: string;\n /** Theme description */\n description: string;\n /** Light mode colors */\n light: ThemeColors;\n /** Dark mode colors */\n dark: ThemeColors;\n}\n\n/**\n * @llm-rule Available theme presets\n * All themes that can be used with setTheme()\n */\nexport const AVAILABLE_THEMES = [\n 'base',\n 'elegant',\n 'metro',\n 'studio',\n 'vivid'\n] as const;\n\n/**\n * @llm-rule All optimized theme presets for build tools\n * Used by build scripts to generate CSS\n * Now with dramatically reduced file sizes!\n */\nexport const ALL_THEME_PRESETS = {\n base: baseTheme,\n elegant: elegantTheme,\n metro: metroTheme,\n studio: studioTheme,\n vivid: vividTheme,\n};\n\n/**\n * @llm-pattern Basic theme usage (same as before)\n * import { ThemeProvider, useTheme } from '@bloomneo/uikit/themes';\n * \n * <ThemeProvider theme=\"elegant\" mode=\"dark\">\n * <App />\n * </ThemeProvider>\n * \n * const { setTheme, setMode, getToneClasses } = useTheme();\n */\n\n/**\n * @llm-pattern Build tool usage (same API, smaller files!)\n * import { ALL_THEME_PRESETS } from '@bloomneo/uikit/themes';\n * \n * // Generate CSS for all themes\n * Object.values(ALL_THEME_PRESETS).forEach(theme => {\n * generateCSS(theme);\n * });\n */\n\n/**\n * @llm-pattern Individual theme access (same as before)\n * import { vivid, studioTheme } from '@bloomneo/uikit/themes';\n * \n * console.log(vivid.name); // \"Vivid\"\n * console.log(studioTheme.light.primary); // Theme color\n */"],"names":["baseTheme","elegantTheme","metroTheme","studioTheme","vividTheme","AVAILABLE_THEMES","ALL_THEME_PRESETS"],"mappings":"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"}
package/dist/toast.js ADDED
@@ -0,0 +1,63 @@
1
+ import { jsx as m } from "react/jsx-runtime";
2
+ import { T as i, t as s } from "./index-B6sSWi7l.js";
3
+ import { useTheme as c } from "./theme-provider.js";
4
+ function T({
5
+ position: r = "bottom-right",
6
+ theme: o,
7
+ ...n
8
+ }) {
9
+ let a = "system";
10
+ try {
11
+ a = c().mode;
12
+ } catch {
13
+ }
14
+ return /* @__PURE__ */ m(
15
+ i,
16
+ {
17
+ position: r,
18
+ theme: o ?? a,
19
+ className: "toaster group",
20
+ style: {
21
+ "--normal-bg": "var(--popover)",
22
+ "--normal-text": "var(--popover-foreground)",
23
+ "--normal-border": "var(--border)"
24
+ },
25
+ ...n
26
+ }
27
+ );
28
+ }
29
+ function e(r, o, n = {}) {
30
+ return (r === "success" ? s.success : r === "error" ? s.error : r === "info" ? s.info : r === "warning" ? s.warning : s)(o, n);
31
+ }
32
+ function u(r, o) {
33
+ s.promise(r, o);
34
+ }
35
+ const t = ((r, o) => {
36
+ e("message", r, o);
37
+ });
38
+ t.success = (r, o) => {
39
+ e("success", r, o);
40
+ };
41
+ t.error = (r, o) => {
42
+ e("error", r, o);
43
+ };
44
+ t.info = (r, o) => {
45
+ e("info", r, o);
46
+ };
47
+ t.warning = (r, o) => {
48
+ e("warning", r, o);
49
+ };
50
+ t.promise = u;
51
+ t.dismiss = (r) => {
52
+ s.dismiss(r);
53
+ };
54
+ const f = t;
55
+ function v() {
56
+ return f;
57
+ }
58
+ export {
59
+ T as ToastProvider,
60
+ f as toast,
61
+ v as useToast
62
+ };
63
+ //# sourceMappingURL=toast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toast.js","sources":["../src/components/ui/toast.tsx"],"sourcesContent":["/**\n * Toast system for @bloomneo/uikit.\n *\n * Thin wrapper over `sonner` (already installed) that exposes a stable,\n * discoverable API:\n *\n * • <ToastProvider /> — drop once at the app root (re-exports Toaster)\n * • toast.success(message) — green check\n * • toast.error(message) — red x\n * • toast.info(message) — neutral\n * • toast.warning(message) — yellow\n * • toast.promise(promise, { loading, success, error })\n * • toast(message, options) — generic\n * • useToast() — returns the same object as a hook\n *\n * Why a wrapper at all? Two reasons:\n *\n * 1. Discovery — `useToast` is the convention agents and humans expect.\n * Sonner's \"import { toast } from 'sonner'\" is invisible to anything\n * reading UIKit's surface area.\n * 2. Theme parity — sonner reads next-themes; we re-bind it to UIKit's\n * theme provider so dark mode is always correct.\n */\n\nimport * as React from 'react';\nimport { Toaster as SonnerToaster, toast as sonnerToast, type ToasterProps } from 'sonner';\nimport { useTheme } from '@/themes/theme-provider';\n\nexport type ToastPosition = ToasterProps['position'];\n\nexport interface ToastProviderProps extends Omit<ToasterProps, 'theme'> {\n /** Override the auto-detected theme. Default: follows <ThemeProvider mode>. */\n theme?: ToasterProps['theme'];\n}\n\n/**\n * Drop one of these at the root of your app (inside <ThemeProvider>):\n *\n * <ThemeProvider><ToastProvider /><App /></ThemeProvider>\n */\nexport function ToastProvider({\n position = 'bottom-right',\n theme,\n ...rest\n}: ToastProviderProps): React.JSX.Element {\n // Read mode from UIKit's theme provider when one is mounted; fall back to\n // 'system' so this still works in storybooks / isolated tests.\n let mode: ToasterProps['theme'] = 'system';\n try {\n mode = useTheme().mode;\n } catch {\n /* not inside a ThemeProvider — that's fine */\n }\n return (\n <SonnerToaster\n position={position}\n theme={theme ?? mode}\n className=\"toaster group\"\n style={\n {\n '--normal-bg': 'var(--popover)',\n '--normal-text': 'var(--popover-foreground)',\n '--normal-border': 'var(--border)',\n } as React.CSSProperties\n }\n {...rest}\n />\n );\n}\n\n/* ------------------------------------------------------------------------- */\n/* toast() — flat callable API */\n/* ------------------------------------------------------------------------- */\n\nexport interface ToastAction {\n label: string;\n onClick: () => void;\n}\n\nexport interface ToastOptions {\n description?: React.ReactNode;\n duration?: number;\n action?: ToastAction;\n cancel?: ToastAction;\n /** ARIA live region. Default: 'polite' for info/success, 'assertive' for error. */\n ariaLive?: 'polite' | 'assertive';\n}\n\nfunction callToast(\n kind: 'success' | 'error' | 'info' | 'warning' | 'message',\n message: React.ReactNode,\n options: ToastOptions = {}\n) {\n const fn =\n kind === 'success'\n ? sonnerToast.success\n : kind === 'error'\n ? sonnerToast.error\n : kind === 'info'\n ? sonnerToast.info\n : kind === 'warning'\n ? sonnerToast.warning\n : sonnerToast;\n return fn(message, options);\n}\n\nexport interface ToastPromiseMessages<T> {\n loading: React.ReactNode;\n success: React.ReactNode | ((data: T) => React.ReactNode);\n error: React.ReactNode | ((error: unknown) => React.ReactNode);\n}\n\nfunction promiseToast<T>(promise: Promise<T>, messages: ToastPromiseMessages<T>): void {\n // Sonner's `toast.promise` return type references an internal type that\n // cannot be re-exported. We don't expose the return value — UIKit consumers\n // never need it — so we wrap it in a void-returning function.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (sonnerToast.promise as any)(promise, messages);\n}\n\ninterface ToastApi {\n (message: React.ReactNode, options?: ToastOptions): void;\n success: (message: React.ReactNode, options?: ToastOptions) => void;\n error: (message: React.ReactNode, options?: ToastOptions) => void;\n info: (message: React.ReactNode, options?: ToastOptions) => void;\n warning: (message: React.ReactNode, options?: ToastOptions) => void;\n promise: <T>(promise: Promise<T>, messages: ToastPromiseMessages<T>) => void;\n dismiss: (id?: string | number) => void;\n}\n\nconst toastImpl = ((message: React.ReactNode, options?: ToastOptions) => {\n callToast('message', message, options);\n}) as ToastApi;\n\ntoastImpl.success = (message, options) => { callToast('success', message, options); };\ntoastImpl.error = (message, options) => { callToast('error', message, options); };\ntoastImpl.info = (message, options) => { callToast('info', message, options); };\ntoastImpl.warning = (message, options) => { callToast('warning', message, options); };\ntoastImpl.promise = promiseToast;\ntoastImpl.dismiss = (id?: string | number) => { sonnerToast.dismiss(id); };\n\nexport const toast: ToastApi = toastImpl;\n\n/**\n * Hook form: returns the same `toast` object. Exists for discoverability —\n * `useToast()` is what agents look for first.\n */\nexport function useToast(): ToastApi {\n return toast;\n}\n"],"names":["ToastProvider","position","theme","rest","mode","useTheme","jsx","SonnerToaster","callToast","kind","message","options","sonnerToast","promiseToast","promise","messages","toastImpl","id","toast","useToast"],"mappings":";;;AAwCO,SAASA,EAAc;AAAA,EAC5B,UAAAC,IAAW;AAAA,EACX,OAAAC;AAAA,EACA,GAAGC;AACL,GAA0C;AAGxC,MAAIC,IAA8B;AAClC,MAAI;AACF,IAAAA,IAAOC,IAAW;AAAA,EACpB,QAAQ;AAAA,EAER;AACA,SACE,gBAAAC;AAAA,IAACC;AAAAA,IAAA;AAAA,MACC,UAAAN;AAAA,MACA,OAAOC,KAASE;AAAA,MAChB,WAAU;AAAA,MACV,OACE;AAAA,QACE,eAAe;AAAA,QACf,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,MAAA;AAAA,MAGtB,GAAGD;AAAA,IAAA;AAAA,EAAA;AAGV;AAoBA,SAASK,EACPC,GACAC,GACAC,IAAwB,CAAA,GACxB;AAWA,UATEF,MAAS,YACLG,EAAY,UACZH,MAAS,UACPG,EAAY,QACZH,MAAS,SACPG,EAAY,OACZH,MAAS,YACPG,EAAY,UACZA,GACFF,GAASC,CAAO;AAC5B;AAQA,SAASE,EAAgBC,GAAqBC,GAAyC;AAKpFH,EAAAA,EAAY,QAAgBE,GAASC,CAAQ;AAChD;AAYA,MAAMC,KAAa,CAACN,GAA0BC,MAA2B;AACvE,EAAAH,EAAU,WAAWE,GAASC,CAAO;AACvC;AAEAK,EAAU,UAAU,CAACN,GAASC,MAAY;AAAE,EAAAH,EAAU,WAAWE,GAASC,CAAO;AAAG;AACpFK,EAAU,QAAQ,CAACN,GAASC,MAAY;AAAE,EAAAH,EAAU,SAASE,GAASC,CAAO;AAAG;AAChFK,EAAU,OAAO,CAACN,GAASC,MAAY;AAAE,EAAAH,EAAU,QAAQE,GAASC,CAAO;AAAG;AAC9EK,EAAU,UAAU,CAACN,GAASC,MAAY;AAAE,EAAAH,EAAU,WAAWE,GAASC,CAAO;AAAG;AACpFK,EAAU,UAAUH;AACpBG,EAAU,UAAU,CAACC,MAAyB;AAAEL,EAAAA,EAAY,QAAQK,CAAE;AAAG;AAElE,MAAMC,IAAkBF;AAMxB,SAASG,IAAqB;AACnC,SAAOD;AACT;"}
package/dist/toggle.js ADDED
@@ -0,0 +1,70 @@
1
+ import { jsx as n } from "react/jsx-runtime";
2
+ import * as u from "react";
3
+ import { u as g, c as f } from "./index-C0UREtMP.js";
4
+ import { P as v } from "./index-BVRIAMfe.js";
5
+ import { c as m } from "./index-Bke1qZdk.js";
6
+ import { c as p } from "./utils-CwJPJKOE.js";
7
+ var s = "Toggle", i = u.forwardRef((e, t) => {
8
+ const { pressed: a, defaultPressed: r, onPressedChange: d, ...l } = e, [o, c] = g({
9
+ prop: a,
10
+ onChange: d,
11
+ defaultProp: r ?? !1,
12
+ caller: s
13
+ });
14
+ return /* @__PURE__ */ n(
15
+ v.button,
16
+ {
17
+ type: "button",
18
+ "aria-pressed": o,
19
+ "data-state": o ? "on" : "off",
20
+ "data-disabled": e.disabled ? "" : void 0,
21
+ ...l,
22
+ ref: t,
23
+ onClick: f(e.onClick, () => {
24
+ e.disabled || c(!o);
25
+ })
26
+ }
27
+ );
28
+ });
29
+ i.displayName = s;
30
+ var b = i;
31
+ const h = m(
32
+ "inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap",
33
+ {
34
+ variants: {
35
+ variant: {
36
+ default: "bg-transparent",
37
+ outline: "border border-input bg-transparent shadow-xs hover:bg-accent hover:text-accent-foreground"
38
+ },
39
+ size: {
40
+ default: "h-9 px-2 min-w-9",
41
+ sm: "h-8 px-1.5 min-w-8",
42
+ lg: "h-10 px-2.5 min-w-10"
43
+ }
44
+ },
45
+ defaultVariants: {
46
+ variant: "default",
47
+ size: "default"
48
+ }
49
+ }
50
+ );
51
+ function y({
52
+ className: e,
53
+ variant: t,
54
+ size: a,
55
+ ...r
56
+ }) {
57
+ return /* @__PURE__ */ n(
58
+ b,
59
+ {
60
+ "data-slot": "toggle",
61
+ className: p(h({ variant: t, size: a, className: e })),
62
+ ...r
63
+ }
64
+ );
65
+ }
66
+ export {
67
+ y as Toggle,
68
+ h as toggleVariants
69
+ };
70
+ //# sourceMappingURL=toggle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggle.js","sources":["../node_modules/@radix-ui/react-toggle/dist/index.mjs","../src/components/ui/toggle.tsx"],"sourcesContent":["\"use client\";\n\n// src/toggle.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Toggle\";\nvar Toggle = React.forwardRef((props, forwardedRef) => {\n const { pressed: pressedProp, defaultPressed, onPressedChange, ...buttonProps } = props;\n const [pressed, setPressed] = useControllableState({\n prop: pressedProp,\n onChange: onPressedChange,\n defaultProp: defaultPressed ?? false,\n caller: NAME\n });\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n \"aria-pressed\": pressed,\n \"data-state\": pressed ? \"on\" : \"off\",\n \"data-disabled\": props.disabled ? \"\" : void 0,\n ...buttonProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(props.onClick, () => {\n if (!props.disabled) {\n setPressed(!pressed);\n }\n })\n }\n );\n});\nToggle.displayName = NAME;\nvar Root = Toggle;\nexport {\n Root,\n Toggle\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as TogglePrimitive from \"@radix-ui/react-toggle\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst toggleVariants = cva(\n \"inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline:\n \"border border-input bg-transparent shadow-xs hover:bg-accent hover:text-accent-foreground\",\n },\n size: {\n default: \"h-9 px-2 min-w-9\",\n sm: \"h-8 px-1.5 min-w-8\",\n lg: \"h-10 px-2.5 min-w-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Toggle({\n className,\n variant,\n size,\n ...props\n}: React.ComponentProps<typeof TogglePrimitive.Root> &\n VariantProps<typeof toggleVariants>) {\n return (\n <TogglePrimitive.Root\n data-slot=\"toggle\"\n className={cn(toggleVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Toggle, toggleVariants }\n"],"names":["NAME","Toggle","React","props","forwardedRef","pressedProp","defaultPressed","onPressedChange","buttonProps","pressed","setPressed","useControllableState","jsx","Primitive","composeEventHandlers","Root","toggleVariants","cva","className","variant","size","TogglePrimitive.Root","cn"],"mappings":";;;;;;AAQA,IAAIA,IAAO,UACPC,IAASC,EAAM,WAAW,CAACC,GAAOC,MAAiB;AACrD,QAAM,EAAE,SAASC,GAAa,gBAAAC,GAAgB,iBAAAC,GAAiB,GAAGC,EAAW,IAAKL,GAC5E,CAACM,GAASC,CAAU,IAAIC,EAAqB;AAAA,IACjD,MAAMN;AAAA,IACN,UAAUE;AAAA,IACV,aAAaD,KAAkB;AAAA,IAC/B,QAAQN;AAAA,EACZ,CAAG;AACD,SAAuB,gBAAAY;AAAA,IACrBC,EAAU;AAAA,IACV;AAAA,MACE,MAAM;AAAA,MACN,gBAAgBJ;AAAA,MAChB,cAAcA,IAAU,OAAO;AAAA,MAC/B,iBAAiBN,EAAM,WAAW,KAAK;AAAA,MACvC,GAAGK;AAAA,MACH,KAAKJ;AAAA,MACL,SAASU,EAAqBX,EAAM,SAAS,MAAM;AACjD,QAAKA,EAAM,YACTO,EAAW,CAACD,CAAO;AAAA,MAEvB,CAAC;AAAA,IACP;AAAA,EACA;AACA,CAAC;AACDR,EAAO,cAAcD;AACrB,IAAIe,IAAOd;AC3BX,MAAMe,IAAiBC;AAAA,EACrB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,SACE;AAAA,MAAA;AAAA,MAEJ,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,IAAI;AAAA,QACJ,IAAI;AAAA,MAAA;AAAA,IACN;AAAA,IAEF,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,IAAA;AAAA,EACR;AAEJ;AAEA,SAAShB,EAAO;AAAA,EACd,WAAAiB;AAAA,EACA,SAAAC;AAAA,EACA,MAAAC;AAAA,EACA,GAAGjB;AACL,GACuC;AACrC,SACE,gBAAAS;AAAA,IAACS;AAAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC,EAAGN,EAAe,EAAE,SAAAG,GAAS,MAAAC,GAAM,WAAAF,EAAA,CAAW,CAAC;AAAA,MACzD,GAAGf;AAAA,IAAA;AAAA,EAAA;AAGV;","x_google_ignoreList":[0]}
@@ -0,0 +1,375 @@
1
+ import { jsx as u, jsxs as H } from "react/jsx-runtime";
2
+ import * as a from "react";
3
+ import { u as K, c as C } from "./index-C0UREtMP.js";
4
+ import { u as S, b as W } from "./index-DQH6odE9.js";
5
+ import { c as J } from "./index-DFZozV_h.js";
6
+ import { P as Q, D as Z } from "./index-BY7PeRJA.js";
7
+ import { u as ee } from "./index-xqkGMOJ8.js";
8
+ import { c as G, R as te, A as oe, a as re, C as ne } from "./index-dhIqEbxW.js";
9
+ import { P as j } from "./index-BCjJQGh8.js";
10
+ import { P as ae } from "./index-BVRIAMfe.js";
11
+ import { R as se } from "./index-pWhlqjff.js";
12
+ import { c as ie } from "./utils-CwJPJKOE.js";
13
+ var [O, ze] = J("Tooltip", [
14
+ G
15
+ ]), D = G(), F = "TooltipProvider", le = 700, A = "tooltip.open", [ce, k] = O(F), z = (e) => {
16
+ const {
17
+ __scopeTooltip: o,
18
+ delayDuration: t = le,
19
+ skipDelayDuration: r = 300,
20
+ disableHoverableContent: n = !1,
21
+ children: l
22
+ } = e, i = a.useRef(!0), v = a.useRef(!1), s = a.useRef(0);
23
+ return a.useEffect(() => {
24
+ const d = s.current;
25
+ return () => window.clearTimeout(d);
26
+ }, []), /* @__PURE__ */ u(
27
+ ce,
28
+ {
29
+ scope: o,
30
+ isOpenDelayedRef: i,
31
+ delayDuration: t,
32
+ onOpen: a.useCallback(() => {
33
+ window.clearTimeout(s.current), i.current = !1;
34
+ }, []),
35
+ onClose: a.useCallback(() => {
36
+ window.clearTimeout(s.current), s.current = window.setTimeout(
37
+ () => i.current = !0,
38
+ r
39
+ );
40
+ }, [r]),
41
+ isPointerInTransitRef: v,
42
+ onPointerInTransitChange: a.useCallback((d) => {
43
+ v.current = d;
44
+ }, []),
45
+ disableHoverableContent: n,
46
+ children: l
47
+ }
48
+ );
49
+ };
50
+ z.displayName = F;
51
+ var R = "Tooltip", [ue, _] = O(R), $ = (e) => {
52
+ const {
53
+ __scopeTooltip: o,
54
+ children: t,
55
+ open: r,
56
+ defaultOpen: n,
57
+ onOpenChange: l,
58
+ disableHoverableContent: i,
59
+ delayDuration: v
60
+ } = e, s = k(R, e.__scopeTooltip), d = D(o), [c, f] = a.useState(null), m = ee(), p = a.useRef(0), h = i ?? s.disableHoverableContent, g = v ?? s.delayDuration, T = a.useRef(!1), [x, y] = K({
61
+ prop: r,
62
+ defaultProp: n ?? !1,
63
+ onChange: (N) => {
64
+ N ? (s.onOpen(), document.dispatchEvent(new CustomEvent(A))) : s.onClose(), l?.(N);
65
+ },
66
+ caller: R
67
+ }), w = a.useMemo(() => x ? T.current ? "delayed-open" : "instant-open" : "closed", [x]), P = a.useCallback(() => {
68
+ window.clearTimeout(p.current), p.current = 0, T.current = !1, y(!0);
69
+ }, [y]), E = a.useCallback(() => {
70
+ window.clearTimeout(p.current), p.current = 0, y(!1);
71
+ }, [y]), I = a.useCallback(() => {
72
+ window.clearTimeout(p.current), p.current = window.setTimeout(() => {
73
+ T.current = !0, y(!0), p.current = 0;
74
+ }, g);
75
+ }, [g, y]);
76
+ return a.useEffect(() => () => {
77
+ p.current && (window.clearTimeout(p.current), p.current = 0);
78
+ }, []), /* @__PURE__ */ u(te, { ...d, children: /* @__PURE__ */ u(
79
+ ue,
80
+ {
81
+ scope: o,
82
+ contentId: m,
83
+ open: x,
84
+ stateAttribute: w,
85
+ trigger: c,
86
+ onTriggerChange: f,
87
+ onTriggerEnter: a.useCallback(() => {
88
+ s.isOpenDelayedRef.current ? I() : P();
89
+ }, [s.isOpenDelayedRef, I, P]),
90
+ onTriggerLeave: a.useCallback(() => {
91
+ h ? E() : (window.clearTimeout(p.current), p.current = 0);
92
+ }, [E, h]),
93
+ onOpen: P,
94
+ onClose: E,
95
+ disableHoverableContent: h,
96
+ children: t
97
+ }
98
+ ) });
99
+ };
100
+ $.displayName = R;
101
+ var L = "TooltipTrigger", B = a.forwardRef(
102
+ (e, o) => {
103
+ const { __scopeTooltip: t, ...r } = e, n = _(L, t), l = k(L, t), i = D(t), v = a.useRef(null), s = S(o, v, n.onTriggerChange), d = a.useRef(!1), c = a.useRef(!1), f = a.useCallback(() => d.current = !1, []);
104
+ return a.useEffect(() => () => document.removeEventListener("pointerup", f), [f]), /* @__PURE__ */ u(oe, { asChild: !0, ...i, children: /* @__PURE__ */ u(
105
+ ae.button,
106
+ {
107
+ "aria-describedby": n.open ? n.contentId : void 0,
108
+ "data-state": n.stateAttribute,
109
+ ...r,
110
+ ref: s,
111
+ onPointerMove: C(e.onPointerMove, (m) => {
112
+ m.pointerType !== "touch" && !c.current && !l.isPointerInTransitRef.current && (n.onTriggerEnter(), c.current = !0);
113
+ }),
114
+ onPointerLeave: C(e.onPointerLeave, () => {
115
+ n.onTriggerLeave(), c.current = !1;
116
+ }),
117
+ onPointerDown: C(e.onPointerDown, () => {
118
+ n.open && n.onClose(), d.current = !0, document.addEventListener("pointerup", f, { once: !0 });
119
+ }),
120
+ onFocus: C(e.onFocus, () => {
121
+ d.current || n.onOpen();
122
+ }),
123
+ onBlur: C(e.onBlur, n.onClose),
124
+ onClick: C(e.onClick, n.onClose)
125
+ }
126
+ ) });
127
+ }
128
+ );
129
+ B.displayName = L;
130
+ var M = "TooltipPortal", [pe, de] = O(M, {
131
+ forceMount: void 0
132
+ }), U = (e) => {
133
+ const { __scopeTooltip: o, forceMount: t, children: r, container: n } = e, l = _(M, o);
134
+ return /* @__PURE__ */ u(pe, { scope: o, forceMount: t, children: /* @__PURE__ */ u(j, { present: t || l.open, children: /* @__PURE__ */ u(Q, { asChild: !0, container: n, children: r }) }) });
135
+ };
136
+ U.displayName = M;
137
+ var b = "TooltipContent", V = a.forwardRef(
138
+ (e, o) => {
139
+ const t = de(b, e.__scopeTooltip), { forceMount: r = t.forceMount, side: n = "top", ...l } = e, i = _(b, e.__scopeTooltip);
140
+ return /* @__PURE__ */ u(j, { present: r || i.open, children: i.disableHoverableContent ? /* @__PURE__ */ u(Y, { side: n, ...l, ref: o }) : /* @__PURE__ */ u(fe, { side: n, ...l, ref: o }) });
141
+ }
142
+ ), fe = a.forwardRef((e, o) => {
143
+ const t = _(b, e.__scopeTooltip), r = k(b, e.__scopeTooltip), n = a.useRef(null), l = S(o, n), [i, v] = a.useState(null), { trigger: s, onClose: d } = t, c = n.current, { onPointerInTransitChange: f } = r, m = a.useCallback(() => {
144
+ v(null), f(!1);
145
+ }, [f]), p = a.useCallback(
146
+ (h, g) => {
147
+ const T = h.currentTarget, x = { x: h.clientX, y: h.clientY }, y = Te(x, T.getBoundingClientRect()), w = ge(x, y), P = ye(g.getBoundingClientRect()), E = Ce([...w, ...P]);
148
+ v(E), f(!0);
149
+ },
150
+ [f]
151
+ );
152
+ return a.useEffect(() => () => m(), [m]), a.useEffect(() => {
153
+ if (s && c) {
154
+ const h = (T) => p(T, c), g = (T) => p(T, s);
155
+ return s.addEventListener("pointerleave", h), c.addEventListener("pointerleave", g), () => {
156
+ s.removeEventListener("pointerleave", h), c.removeEventListener("pointerleave", g);
157
+ };
158
+ }
159
+ }, [s, c, p, m]), a.useEffect(() => {
160
+ if (i) {
161
+ const h = (g) => {
162
+ const T = g.target, x = { x: g.clientX, y: g.clientY }, y = s?.contains(T) || c?.contains(T), w = !xe(x, i);
163
+ y ? m() : w && (m(), d());
164
+ };
165
+ return document.addEventListener("pointermove", h), () => document.removeEventListener("pointermove", h);
166
+ }
167
+ }, [s, c, i, d, m]), /* @__PURE__ */ u(Y, { ...e, ref: l });
168
+ }), [ve, me] = O(R, { isInside: !1 }), he = W("TooltipContent"), Y = a.forwardRef(
169
+ (e, o) => {
170
+ const {
171
+ __scopeTooltip: t,
172
+ children: r,
173
+ "aria-label": n,
174
+ onEscapeKeyDown: l,
175
+ onPointerDownOutside: i,
176
+ ...v
177
+ } = e, s = _(b, t), d = D(t), { onClose: c } = s;
178
+ return a.useEffect(() => (document.addEventListener(A, c), () => document.removeEventListener(A, c)), [c]), a.useEffect(() => {
179
+ if (s.trigger) {
180
+ const f = (m) => {
181
+ m.target?.contains(s.trigger) && c();
182
+ };
183
+ return window.addEventListener("scroll", f, { capture: !0 }), () => window.removeEventListener("scroll", f, { capture: !0 });
184
+ }
185
+ }, [s.trigger, c]), /* @__PURE__ */ u(
186
+ Z,
187
+ {
188
+ asChild: !0,
189
+ disableOutsidePointerEvents: !1,
190
+ onEscapeKeyDown: l,
191
+ onPointerDownOutside: i,
192
+ onFocusOutside: (f) => f.preventDefault(),
193
+ onDismiss: c,
194
+ children: /* @__PURE__ */ H(
195
+ ne,
196
+ {
197
+ "data-state": s.stateAttribute,
198
+ ...d,
199
+ ...v,
200
+ ref: o,
201
+ style: {
202
+ ...v.style,
203
+ "--radix-tooltip-content-transform-origin": "var(--radix-popper-transform-origin)",
204
+ "--radix-tooltip-content-available-width": "var(--radix-popper-available-width)",
205
+ "--radix-tooltip-content-available-height": "var(--radix-popper-available-height)",
206
+ "--radix-tooltip-trigger-width": "var(--radix-popper-anchor-width)",
207
+ "--radix-tooltip-trigger-height": "var(--radix-popper-anchor-height)"
208
+ },
209
+ children: [
210
+ /* @__PURE__ */ u(he, { children: r }),
211
+ /* @__PURE__ */ u(ve, { scope: t, isInside: !0, children: /* @__PURE__ */ u(se, { id: s.contentId, role: "tooltip", children: n || r }) })
212
+ ]
213
+ }
214
+ )
215
+ }
216
+ );
217
+ }
218
+ );
219
+ V.displayName = b;
220
+ var q = "TooltipArrow", X = a.forwardRef(
221
+ (e, o) => {
222
+ const { __scopeTooltip: t, ...r } = e, n = D(t);
223
+ return me(
224
+ q,
225
+ t
226
+ ).isInside ? null : /* @__PURE__ */ u(re, { ...n, ...r, ref: o });
227
+ }
228
+ );
229
+ X.displayName = q;
230
+ function Te(e, o) {
231
+ const t = Math.abs(o.top - e.y), r = Math.abs(o.bottom - e.y), n = Math.abs(o.right - e.x), l = Math.abs(o.left - e.x);
232
+ switch (Math.min(t, r, n, l)) {
233
+ case l:
234
+ return "left";
235
+ case n:
236
+ return "right";
237
+ case t:
238
+ return "top";
239
+ case r:
240
+ return "bottom";
241
+ default:
242
+ throw new Error("unreachable");
243
+ }
244
+ }
245
+ function ge(e, o, t = 5) {
246
+ const r = [];
247
+ switch (o) {
248
+ case "top":
249
+ r.push(
250
+ { x: e.x - t, y: e.y + t },
251
+ { x: e.x + t, y: e.y + t }
252
+ );
253
+ break;
254
+ case "bottom":
255
+ r.push(
256
+ { x: e.x - t, y: e.y - t },
257
+ { x: e.x + t, y: e.y - t }
258
+ );
259
+ break;
260
+ case "left":
261
+ r.push(
262
+ { x: e.x + t, y: e.y - t },
263
+ { x: e.x + t, y: e.y + t }
264
+ );
265
+ break;
266
+ case "right":
267
+ r.push(
268
+ { x: e.x - t, y: e.y - t },
269
+ { x: e.x - t, y: e.y + t }
270
+ );
271
+ break;
272
+ }
273
+ return r;
274
+ }
275
+ function ye(e) {
276
+ const { top: o, right: t, bottom: r, left: n } = e;
277
+ return [
278
+ { x: n, y: o },
279
+ { x: t, y: o },
280
+ { x: t, y: r },
281
+ { x: n, y: r }
282
+ ];
283
+ }
284
+ function xe(e, o) {
285
+ const { x: t, y: r } = e;
286
+ let n = !1;
287
+ for (let l = 0, i = o.length - 1; l < o.length; i = l++) {
288
+ const v = o[l], s = o[i], d = v.x, c = v.y, f = s.x, m = s.y;
289
+ c > r != m > r && t < (f - d) * (r - c) / (m - c) + d && (n = !n);
290
+ }
291
+ return n;
292
+ }
293
+ function Ce(e) {
294
+ const o = e.slice();
295
+ return o.sort((t, r) => t.x < r.x ? -1 : t.x > r.x ? 1 : t.y < r.y ? -1 : t.y > r.y ? 1 : 0), be(o);
296
+ }
297
+ function be(e) {
298
+ if (e.length <= 1) return e.slice();
299
+ const o = [];
300
+ for (let r = 0; r < e.length; r++) {
301
+ const n = e[r];
302
+ for (; o.length >= 2; ) {
303
+ const l = o[o.length - 1], i = o[o.length - 2];
304
+ if ((l.x - i.x) * (n.y - i.y) >= (l.y - i.y) * (n.x - i.x)) o.pop();
305
+ else break;
306
+ }
307
+ o.push(n);
308
+ }
309
+ o.pop();
310
+ const t = [];
311
+ for (let r = e.length - 1; r >= 0; r--) {
312
+ const n = e[r];
313
+ for (; t.length >= 2; ) {
314
+ const l = t[t.length - 1], i = t[t.length - 2];
315
+ if ((l.x - i.x) * (n.y - i.y) >= (l.y - i.y) * (n.x - i.x)) t.pop();
316
+ else break;
317
+ }
318
+ t.push(n);
319
+ }
320
+ return t.pop(), o.length === 1 && t.length === 1 && o[0].x === t[0].x && o[0].y === t[0].y ? o : o.concat(t);
321
+ }
322
+ var we = z, Pe = $, Ee = B, Re = U, _e = V, Oe = X;
323
+ function De({
324
+ delayDuration: e = 0,
325
+ ...o
326
+ }) {
327
+ return /* @__PURE__ */ u(
328
+ we,
329
+ {
330
+ "data-slot": "tooltip-provider",
331
+ delayDuration: e,
332
+ ...o
333
+ }
334
+ );
335
+ }
336
+ function $e({
337
+ ...e
338
+ }) {
339
+ return /* @__PURE__ */ u(De, { children: /* @__PURE__ */ u(Pe, { "data-slot": "tooltip", ...e }) });
340
+ }
341
+ function Be({
342
+ ...e
343
+ }) {
344
+ return /* @__PURE__ */ u(Ee, { "data-slot": "tooltip-trigger", ...e });
345
+ }
346
+ function Ue({
347
+ className: e,
348
+ sideOffset: o = 0,
349
+ children: t,
350
+ ...r
351
+ }) {
352
+ return /* @__PURE__ */ u(Re, { children: /* @__PURE__ */ H(
353
+ _e,
354
+ {
355
+ "data-slot": "tooltip-content",
356
+ sideOffset: o,
357
+ className: ie(
358
+ "bg-primary text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance",
359
+ e
360
+ ),
361
+ ...r,
362
+ children: [
363
+ t,
364
+ /* @__PURE__ */ u(Oe, { className: "bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" })
365
+ ]
366
+ }
367
+ ) });
368
+ }
369
+ export {
370
+ $e as Tooltip,
371
+ Ue as TooltipContent,
372
+ De as TooltipProvider,
373
+ Be as TooltipTrigger
374
+ };
375
+ //# sourceMappingURL=tooltip.js.map