@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":"popup.js","sources":["../src/components/layouts/popup.tsx"],"sourcesContent":["/**\n * Popup Layout with standardized scheme + tone system\n * @module @bloomneo/uikit\n * @file src/components/layouts/popup.tsx\n */\n\nimport * as React from 'react';\nimport { forwardRef } from 'react';\nimport { cva } from 'class-variance-authority';\nimport { cn } from '@/lib/utils';\nimport { Button } from '@/components/ui/button';\nimport { Badge } from '@/components/ui/badge';\nimport { Separator } from '@/components/ui/separator';\nimport { X, ChevronLeft, MoreVertical, Settings } from 'lucide-react';\nimport type { Size, PopupLayoutScheme, Tone } from '@/types';\n\n/**\n * Popup layout scheme variants - structural arrangements\n */\nconst popupVariants = cva(\n 'flex flex-col border rounded-lg overflow-hidden',\n {\n variants: {\n scheme: {\n modal: 'shadow-lg',\n drawer: 'shadow-md h-full rounded-none',\n floating: 'shadow-xl',\n },\n tone: {\n clean: 'bg-background border-border',\n subtle: 'bg-muted/30 border-border/50',\n brand: 'bg-primary/5 border-primary/20',\n contrast: 'bg-zinc-900 border-zinc-700 text-zinc-100'\n },\n size: {\n sm: 'w-72 max-h-80', // 288px × 320px - Ultra compact\n md: 'w-80 max-h-96', // 320px × 384px - Standard popup\n lg: 'w-96 max-h-[32rem]', // 384px × 512px - Large popup\n xl: 'w-[28rem] max-h-[36rem]', // 448px × 576px - Extra large\n full: 'min-w-72 max-w-lg max-h-[80vh]' // Responsive\n },\n position: {\n sticky: 'sticky top-0 z-50',\n fixed: 'fixed top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 z-50',\n relative: 'relative'\n }\n },\n defaultVariants: {\n scheme: 'modal',\n tone: 'clean',\n size: 'md',\n position: 'relative'\n }\n }\n);\n\n/**\n * Header variants based on popup tone\n */\nconst headerVariants = cva(\n 'flex items-center gap-3',\n {\n variants: {\n tone: {\n clean: '',\n subtle: '',\n brand: '',\n contrast: ''\n },\n size: {\n sm: 'p-2',\n md: 'p-3',\n lg: 'p-4',\n xl: 'p-4',\n full: 'p-4'\n }\n },\n defaultVariants: {\n tone: 'clean',\n size: 'md'\n }\n }\n);\n\n/**\n * Content variants based on popup tone and size\n */\nconst contentVariants = cva(\n 'flex-1',\n {\n variants: {\n tone: {\n clean: '',\n subtle: '',\n brand: '',\n contrast: ''\n },\n size: {\n sm: 'p-2',\n md: 'p-3',\n lg: 'p-4',\n xl: 'p-4',\n full: 'p-4'\n },\n scrollable: {\n true: 'overflow-y-auto overflow-x-hidden',\n false: ''\n }\n },\n defaultVariants: {\n tone: 'clean',\n size: 'md',\n scrollable: true\n }\n }\n);\n\n/**\n * Footer variants\n */\nconst footerVariants = cva(\n 'border-t',\n {\n variants: {\n tone: {\n clean: 'border-border',\n subtle: 'border-border/50',\n brand: 'border-primary/20',\n contrast: 'border-zinc-700'\n },\n size: {\n sm: 'p-2',\n md: 'p-3',\n lg: 'p-4',\n xl: 'p-4',\n full: 'p-4'\n }\n },\n defaultVariants: {\n tone: 'clean',\n size: 'md'\n }\n }\n);\n\n/**\n * Button variants for popup actions\n */\nconst buttonVariants = cva(\n 'h-8 w-8 p-0 shrink-0',\n {\n variants: {\n tone: {\n clean: 'text-muted-foreground hover:text-foreground hover:bg-muted',\n subtle: 'text-muted-foreground hover:text-foreground hover:bg-background/50',\n brand: 'text-primary/80 hover:text-primary hover:bg-primary/10',\n contrast: 'text-zinc-400 hover:text-zinc-100 hover:bg-zinc-800'\n }\n },\n defaultVariants: {\n tone: 'clean'\n }\n }\n);\n\n/**\n * Title variants based on size\n */\nconst titleVariants = cva(\n 'font-semibold truncate',\n {\n variants: {\n size: {\n sm: 'text-xs',\n md: 'text-sm',\n lg: 'text-base',\n xl: 'text-base',\n full: 'text-base'\n },\n tone: {\n clean: 'text-foreground',\n subtle: 'text-foreground',\n brand: 'text-foreground',\n contrast: 'text-zinc-100'\n }\n },\n defaultVariants: {\n size: 'md',\n tone: 'clean'\n }\n }\n);\n\n/**\n * Subtitle variants\n */\nconst subtitleVariants = cva(\n 'truncate mt-0.5',\n {\n variants: {\n size: {\n sm: 'text-xs',\n md: 'text-xs',\n lg: 'text-sm',\n xl: 'text-sm',\n full: 'text-sm'\n },\n tone: {\n clean: 'text-muted-foreground',\n subtle: 'text-muted-foreground',\n brand: 'text-muted-foreground',\n contrast: 'text-zinc-400'\n }\n },\n defaultVariants: {\n size: 'md',\n tone: 'clean'\n }\n }\n);\n\n/**\n * Popup Layout props with standardized system\n */\nexport interface PopupLayoutProps {\n /** Layout structure/arrangement */\n scheme?: PopupLayoutScheme;\n /** Visual styling tone */\n tone?: Tone;\n /** Popup size */\n size?: Size;\n /** Popup positioning */\n position?: 'sticky' | 'fixed' | 'relative';\n /** Header title text */\n title?: string;\n /** Header subtitle text */\n subtitle?: string;\n /** Logo/icon component */\n logo?: React.ReactNode;\n /** Status badge */\n badge?: React.ReactNode;\n /** Header action buttons */\n headerActions?: React.ReactNode;\n /** Show back button */\n showBack?: boolean;\n /** Show close button */\n showClose?: boolean;\n /** Show header divider */\n showDivider?: boolean;\n /** Back button handler */\n onBack?: () => void;\n /** Close button handler */\n onClose?: () => void;\n /** Footer content */\n footer?: React.ReactNode;\n /** Enable content scrolling */\n scrollable?: boolean;\n /** Additional CSS classes */\n className?: string;\n /** Inline styles */\n style?: React.CSSProperties;\n /** Main content */\n children: React.ReactNode;\n}\n\n/**\n * PopupLayout - Compact layout with standardized scheme + tone system\n */\nconst PopupLayoutComponent = forwardRef<HTMLDivElement, PopupLayoutProps>(({\n scheme = 'modal',\n tone = 'clean',\n size = 'md',\n position = 'relative',\n title,\n subtitle,\n logo,\n badge,\n headerActions,\n showBack = false,\n showClose = false,\n showDivider = true,\n onBack,\n onClose,\n footer,\n scrollable = true,\n className,\n style,\n children,\n}, ref) => {\n\n const hasHeader = title || subtitle || logo || badge || headerActions || showBack || showClose;\n\n return (\n <div\n ref={ref}\n className={cn(popupVariants({ scheme, tone, size, position }), className)}\n style={style}\n >\n {/* Header */}\n {hasHeader && (\n <>\n <div className={cn(headerVariants({ tone, size }))}>\n {/* Back Button */}\n {showBack && (\n <Button\n variant=\"ghost\"\n className={cn(buttonVariants({ tone }))}\n onClick={onBack}\n aria-label=\"Go back\"\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </Button>\n )}\n\n {/* Logo */}\n {logo && (\n <div className=\"shrink-0\">\n {logo}\n </div>\n )}\n\n {/* Title Section */}\n <div className=\"flex-1 min-w-0\">\n {title && (\n <div className=\"flex items-center gap-2\">\n <h1 className={cn(titleVariants({ size, tone }))}>\n {title}\n </h1>\n {badge && badge}\n </div>\n )}\n {subtitle && (\n <p className={cn(subtitleVariants({ size, tone }))}>\n {subtitle}\n </p>\n )}\n </div>\n\n {/* Header Actions */}\n {headerActions && (\n <div className=\"shrink-0 flex items-center gap-1\">\n {headerActions}\n </div>\n )}\n\n {/* Close Button */}\n {showClose && (\n <Button\n variant=\"ghost\"\n className={cn(buttonVariants({ tone }))}\n onClick={onClose}\n aria-label=\"Close\"\n >\n <X className=\"h-4 w-4\" />\n </Button>\n )}\n </div>\n\n {showDivider && <Separator className={cn(\n tone === 'subtle' && 'bg-border/50',\n tone === 'brand' && 'bg-primary/20',\n tone === 'contrast' && 'bg-zinc-700'\n )} />}\n </>\n )}\n\n {/* Content */}\n <div\n className={cn(\n contentVariants({ tone, size, scrollable }),\n !hasHeader && headerVariants({ tone, size })\n )}\n >\n {children}\n </div>\n\n {/* Footer */}\n {footer && (\n <>\n <Separator className={cn(\n tone === 'subtle' && 'bg-border/50',\n tone === 'brand' && 'bg-primary/20',\n tone === 'contrast' && 'bg-zinc-700'\n )} />\n <div className={cn(footerVariants({ tone, size }))}>\n {footer}\n </div>\n </>\n )}\n </div>\n );\n});\n\nPopupLayoutComponent.displayName = 'PopupLayout';\n\n/**\n * PopupHeader - Standalone header component\n */\nexport interface PopupHeaderProps {\n tone?: Tone;\n size?: Size;\n title?: string;\n subtitle?: string;\n logo?: React.ReactNode;\n badge?: React.ReactNode;\n actions?: React.ReactNode;\n showBack?: boolean;\n showClose?: boolean;\n onBack?: () => void;\n onClose?: () => void;\n className?: string;\n}\n\nconst PopupHeader = forwardRef<HTMLDivElement, PopupHeaderProps>(({\n tone = 'clean',\n size = 'md',\n title,\n subtitle,\n logo,\n badge,\n actions,\n showBack = false,\n showClose = false,\n onBack,\n onClose,\n className,\n}, ref) => {\n return (\n <div ref={ref} className={cn(headerVariants({ tone, size }), className)}>\n {showBack && (\n <Button variant=\"ghost\" className={cn(buttonVariants({ tone }))} onClick={onBack}>\n <ChevronLeft className=\"h-4 w-4\" />\n </Button>\n )}\n\n {logo && <div className=\"shrink-0\">{logo}</div>}\n\n <div className=\"flex-1 min-w-0\">\n {title && (\n <div className=\"flex items-center gap-2\">\n <h1 className={cn(titleVariants({ size, tone }))}>{title}</h1>\n {badge && badge}\n </div>\n )}\n {subtitle && (\n <p className={cn(subtitleVariants({ size, tone }))}>{subtitle}</p>\n )}\n </div>\n\n {actions && <div className=\"shrink-0\">{actions}</div>}\n\n {showClose && (\n <Button variant=\"ghost\" className={cn(buttonVariants({ tone }))} onClick={onClose}>\n <X className=\"h-4 w-4\" />\n </Button>\n )}\n </div>\n );\n});\n\nPopupHeader.displayName = 'PopupHeader';\n\n/**\n * PopupContent - Scrollable content container\n */\nexport interface PopupContentProps {\n tone?: Tone;\n size?: Size;\n scrollable?: boolean;\n className?: string;\n children: React.ReactNode;\n}\n\nconst PopupContent = forwardRef<HTMLDivElement, PopupContentProps>(({\n tone = 'clean',\n size = 'md',\n scrollable = true,\n className,\n children,\n}, ref) => {\n return (\n <div\n ref={ref}\n className={cn(contentVariants({ tone, size, scrollable }), className)}\n >\n {children}\n </div>\n );\n});\n\nPopupContent.displayName = 'PopupContent';\n\n/**\n * PopupFooter - Footer actions container\n */\nexport interface PopupFooterProps {\n tone?: Tone;\n size?: Size;\n actions?: React.ReactNode;\n className?: string;\n children?: React.ReactNode;\n}\n\nconst PopupFooter = forwardRef<HTMLDivElement, PopupFooterProps>(({\n tone = 'clean',\n size = 'md',\n actions,\n className,\n children,\n}, ref) => {\n return (\n <div ref={ref} className={cn(footerVariants({ tone, size }), className)}>\n {actions || children}\n </div>\n );\n});\n\nPopupFooter.displayName = 'PopupFooter';\n\n/**\n * PopupLayout with compound components\n */\nconst PopupLayout = Object.assign(PopupLayoutComponent, {\n Header: PopupHeader,\n Content: PopupContent,\n Footer: PopupFooter,\n});\n\nexport { \n PopupLayout,\n PopupHeader,\n PopupContent,\n PopupFooter\n};"],"names":["popupVariants","cva","headerVariants","contentVariants","footerVariants","buttonVariants","titleVariants","subtitleVariants","PopupLayoutComponent","forwardRef","scheme","tone","size","position","title","subtitle","logo","badge","headerActions","showBack","showClose","showDivider","onBack","onClose","footer","scrollable","className","style","children","ref","hasHeader","jsxs","cn","Fragment","jsx","Button","ChevronLeft","X","Separator","PopupHeader","actions","PopupContent","PopupFooter","PopupLayout"],"mappings":"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"}
@@ -0,0 +1,108 @@
1
+ import { jsx as i } from "react/jsx-runtime";
2
+ import * as m from "react";
3
+ import { c as $ } from "./index-DFZozV_h.js";
4
+ import { P as v } from "./index-BVRIAMfe.js";
5
+ import { c as I } from "./utils-CwJPJKOE.js";
6
+ var u = "Progress", d = 100, [y, O] = $(u), [R, _] = y(u), f = m.forwardRef(
7
+ (r, e) => {
8
+ const {
9
+ __scopeProgress: n,
10
+ value: o = null,
11
+ max: a,
12
+ getValueLabel: N = w,
13
+ ...b
14
+ } = r;
15
+ (a || a === 0) && !p(a) && console.error(E(`${a}`, "Progress"));
16
+ const t = p(a) ? a : d;
17
+ o !== null && !c(o, t) && console.error(M(`${o}`, "Progress"));
18
+ const s = c(o, t) ? o : null, h = l(s) ? N(s, t) : void 0;
19
+ return /* @__PURE__ */ i(R, { scope: n, value: s, max: t, children: /* @__PURE__ */ i(
20
+ v.div,
21
+ {
22
+ "aria-valuemax": t,
23
+ "aria-valuemin": 0,
24
+ "aria-valuenow": l(s) ? s : void 0,
25
+ "aria-valuetext": h,
26
+ role: "progressbar",
27
+ "data-state": x(s, t),
28
+ "data-value": s ?? void 0,
29
+ "data-max": t,
30
+ ...b,
31
+ ref: e
32
+ }
33
+ ) });
34
+ }
35
+ );
36
+ f.displayName = u;
37
+ var g = "ProgressIndicator", P = m.forwardRef(
38
+ (r, e) => {
39
+ const { __scopeProgress: n, ...o } = r, a = _(g, n);
40
+ return /* @__PURE__ */ i(
41
+ v.div,
42
+ {
43
+ "data-state": x(a.value, a.max),
44
+ "data-value": a.value ?? void 0,
45
+ "data-max": a.max,
46
+ ...o,
47
+ ref: e
48
+ }
49
+ );
50
+ }
51
+ );
52
+ P.displayName = g;
53
+ function w(r, e) {
54
+ return `${Math.round(r / e * 100)}%`;
55
+ }
56
+ function x(r, e) {
57
+ return r == null ? "indeterminate" : r === e ? "complete" : "loading";
58
+ }
59
+ function l(r) {
60
+ return typeof r == "number";
61
+ }
62
+ function p(r) {
63
+ return l(r) && !isNaN(r) && r > 0;
64
+ }
65
+ function c(r, e) {
66
+ return l(r) && !isNaN(r) && r <= e && r >= 0;
67
+ }
68
+ function E(r, e) {
69
+ return `Invalid prop \`max\` of value \`${r}\` supplied to \`${e}\`. Only numbers greater than 0 are valid max values. Defaulting to \`${d}\`.`;
70
+ }
71
+ function M(r, e) {
72
+ return `Invalid prop \`value\` of value \`${r}\` supplied to \`${e}\`. The \`value\` prop must be:
73
+ - a positive number
74
+ - less than the value passed to \`max\` (or ${d} if no \`max\` prop is set)
75
+ - \`null\` or \`undefined\` if the progress is indeterminate.
76
+
77
+ Defaulting to \`null\`.`;
78
+ }
79
+ var V = f, A = P;
80
+ function T({
81
+ className: r,
82
+ value: e,
83
+ ...n
84
+ }) {
85
+ return /* @__PURE__ */ i(
86
+ V,
87
+ {
88
+ "data-slot": "progress",
89
+ className: I(
90
+ "bg-primary/20 relative h-2 w-full overflow-hidden rounded-full",
91
+ r
92
+ ),
93
+ ...n,
94
+ children: /* @__PURE__ */ i(
95
+ A,
96
+ {
97
+ "data-slot": "progress-indicator",
98
+ className: "bg-primary h-full w-full flex-1 transition-all",
99
+ style: { transform: `translateX(-${100 - (e || 0)}%)` }
100
+ }
101
+ )
102
+ }
103
+ );
104
+ }
105
+ export {
106
+ T as Progress
107
+ };
108
+ //# sourceMappingURL=progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.js","sources":["../node_modules/@radix-ui/react-progress/dist/index.mjs","../src/components/ui/progress.tsx"],"sourcesContent":["\"use client\";\n\n// src/progress.tsx\nimport * as React from \"react\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar PROGRESS_NAME = \"Progress\";\nvar DEFAULT_MAX = 100;\nvar [createProgressContext, createProgressScope] = createContextScope(PROGRESS_NAME);\nvar [ProgressProvider, useProgressContext] = createProgressContext(PROGRESS_NAME);\nvar Progress = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeProgress,\n value: valueProp = null,\n max: maxProp,\n getValueLabel = defaultGetValueLabel,\n ...progressProps\n } = props;\n if ((maxProp || maxProp === 0) && !isValidMaxNumber(maxProp)) {\n console.error(getInvalidMaxError(`${maxProp}`, \"Progress\"));\n }\n const max = isValidMaxNumber(maxProp) ? maxProp : DEFAULT_MAX;\n if (valueProp !== null && !isValidValueNumber(valueProp, max)) {\n console.error(getInvalidValueError(`${valueProp}`, \"Progress\"));\n }\n const value = isValidValueNumber(valueProp, max) ? valueProp : null;\n const valueLabel = isNumber(value) ? getValueLabel(value, max) : void 0;\n return /* @__PURE__ */ jsx(ProgressProvider, { scope: __scopeProgress, value, max, children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"aria-valuemax\": max,\n \"aria-valuemin\": 0,\n \"aria-valuenow\": isNumber(value) ? value : void 0,\n \"aria-valuetext\": valueLabel,\n role: \"progressbar\",\n \"data-state\": getProgressState(value, max),\n \"data-value\": value ?? void 0,\n \"data-max\": max,\n ...progressProps,\n ref: forwardedRef\n }\n ) });\n }\n);\nProgress.displayName = PROGRESS_NAME;\nvar INDICATOR_NAME = \"ProgressIndicator\";\nvar ProgressIndicator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeProgress, ...indicatorProps } = props;\n const context = useProgressContext(INDICATOR_NAME, __scopeProgress);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": getProgressState(context.value, context.max),\n \"data-value\": context.value ?? void 0,\n \"data-max\": context.max,\n ...indicatorProps,\n ref: forwardedRef\n }\n );\n }\n);\nProgressIndicator.displayName = INDICATOR_NAME;\nfunction defaultGetValueLabel(value, max) {\n return `${Math.round(value / max * 100)}%`;\n}\nfunction getProgressState(value, maxValue) {\n return value == null ? \"indeterminate\" : value === maxValue ? \"complete\" : \"loading\";\n}\nfunction isNumber(value) {\n return typeof value === \"number\";\n}\nfunction isValidMaxNumber(max) {\n return isNumber(max) && !isNaN(max) && max > 0;\n}\nfunction isValidValueNumber(value, max) {\n return isNumber(value) && !isNaN(value) && value <= max && value >= 0;\n}\nfunction getInvalidMaxError(propValue, componentName) {\n return `Invalid prop \\`max\\` of value \\`${propValue}\\` supplied to \\`${componentName}\\`. Only numbers greater than 0 are valid max values. Defaulting to \\`${DEFAULT_MAX}\\`.`;\n}\nfunction getInvalidValueError(propValue, componentName) {\n return `Invalid prop \\`value\\` of value \\`${propValue}\\` supplied to \\`${componentName}\\`. The \\`value\\` prop must be:\n - a positive number\n - less than the value passed to \\`max\\` (or ${DEFAULT_MAX} if no \\`max\\` prop is set)\n - \\`null\\` or \\`undefined\\` if the progress is indeterminate.\n\nDefaulting to \\`null\\`.`;\n}\nvar Root = Progress;\nvar Indicator = ProgressIndicator;\nexport {\n Indicator,\n Progress,\n ProgressIndicator,\n Root,\n createProgressScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Progress({\n className,\n value,\n ...props\n}: React.ComponentProps<typeof ProgressPrimitive.Root>) {\n return (\n <ProgressPrimitive.Root\n data-slot=\"progress\"\n className={cn(\n \"bg-primary/20 relative h-2 w-full overflow-hidden rounded-full\",\n className\n )}\n {...props}\n >\n <ProgressPrimitive.Indicator\n data-slot=\"progress-indicator\"\n className=\"bg-primary h-full w-full flex-1 transition-all\"\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n )\n}\n\nexport { Progress }\n"],"names":["PROGRESS_NAME","DEFAULT_MAX","createProgressContext","createProgressScope","createContextScope","ProgressProvider","useProgressContext","Progress","React","props","forwardedRef","__scopeProgress","valueProp","maxProp","getValueLabel","defaultGetValueLabel","progressProps","isValidMaxNumber","getInvalidMaxError","max","isValidValueNumber","getInvalidValueError","value","valueLabel","isNumber","jsx","Primitive","getProgressState","INDICATOR_NAME","ProgressIndicator","indicatorProps","context","maxValue","propValue","componentName","Root","Indicator","className","ProgressPrimitive.Root","cn","ProgressPrimitive.Indicator"],"mappings":"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","x_google_ignoreList":[0]}
@@ -0,0 +1,272 @@
1
+ import { jsx as i, jsxs as B } from "react/jsx-runtime";
2
+ import * as s from "react";
3
+ import { u as K, c as C } from "./index-C0UREtMP.js";
4
+ import { u as w } from "./index-DQH6odE9.js";
5
+ import { c as k } from "./index-DFZozV_h.js";
6
+ import { P as g } from "./index-BVRIAMfe.js";
7
+ import { c as P, R as T, I as U } from "./index-DFi6WydO.js";
8
+ import { u as V } from "./index-1QHKgw6D.js";
9
+ import { u as j } from "./index-BGQepRFJ.js";
10
+ import { u as z } from "./index-BZPx6jYI.js";
11
+ import { P as H } from "./index-BCjJQGh8.js";
12
+ import { c as E } from "./utils-CwJPJKOE.js";
13
+ import { C as $ } from "./circle-DHOdTDQh.js";
14
+ var I = "Radio", [W, _] = k(I), [X, Y] = W(I), G = s.forwardRef(
15
+ (r, t) => {
16
+ const {
17
+ __scopeRadio: o,
18
+ name: d,
19
+ checked: e = !1,
20
+ required: a,
21
+ disabled: n,
22
+ value: p = "on",
23
+ onCheck: f,
24
+ form: m,
25
+ ...v
26
+ } = r, [l, R] = s.useState(null), c = w(t, (h) => R(h)), u = s.useRef(!1), b = l ? m || !!l.closest("form") : !0;
27
+ return /* @__PURE__ */ B(X, { scope: o, checked: e, disabled: n, children: [
28
+ /* @__PURE__ */ i(
29
+ g.button,
30
+ {
31
+ type: "button",
32
+ role: "radio",
33
+ "aria-checked": e,
34
+ "data-state": A(e),
35
+ "data-disabled": n ? "" : void 0,
36
+ disabled: n,
37
+ value: p,
38
+ ...v,
39
+ ref: c,
40
+ onClick: C(r.onClick, (h) => {
41
+ e || f?.(), b && (u.current = h.isPropagationStopped(), u.current || h.stopPropagation());
42
+ })
43
+ }
44
+ ),
45
+ b && /* @__PURE__ */ i(
46
+ x,
47
+ {
48
+ control: l,
49
+ bubbles: !u.current,
50
+ name: d,
51
+ value: p,
52
+ checked: e,
53
+ required: a,
54
+ disabled: n,
55
+ form: m,
56
+ style: { transform: "translateX(-100%)" }
57
+ }
58
+ )
59
+ ] });
60
+ }
61
+ );
62
+ G.displayName = I;
63
+ var N = "RadioIndicator", S = s.forwardRef(
64
+ (r, t) => {
65
+ const { __scopeRadio: o, forceMount: d, ...e } = r, a = Y(N, o);
66
+ return /* @__PURE__ */ i(H, { present: d || a.checked, children: /* @__PURE__ */ i(
67
+ g.span,
68
+ {
69
+ "data-state": A(a.checked),
70
+ "data-disabled": a.disabled ? "" : void 0,
71
+ ...e,
72
+ ref: t
73
+ }
74
+ ) });
75
+ }
76
+ );
77
+ S.displayName = N;
78
+ var J = "RadioBubbleInput", x = s.forwardRef(
79
+ ({
80
+ __scopeRadio: r,
81
+ control: t,
82
+ checked: o,
83
+ bubbles: d = !0,
84
+ ...e
85
+ }, a) => {
86
+ const n = s.useRef(null), p = w(n, a), f = z(o), m = j(t);
87
+ return s.useEffect(() => {
88
+ const v = n.current;
89
+ if (!v) return;
90
+ const l = window.HTMLInputElement.prototype, c = Object.getOwnPropertyDescriptor(
91
+ l,
92
+ "checked"
93
+ ).set;
94
+ if (f !== o && c) {
95
+ const u = new Event("click", { bubbles: d });
96
+ c.call(v, o), v.dispatchEvent(u);
97
+ }
98
+ }, [f, o, d]), /* @__PURE__ */ i(
99
+ g.input,
100
+ {
101
+ type: "radio",
102
+ "aria-hidden": !0,
103
+ defaultChecked: o,
104
+ ...e,
105
+ tabIndex: -1,
106
+ ref: p,
107
+ style: {
108
+ ...e.style,
109
+ ...m,
110
+ position: "absolute",
111
+ pointerEvents: "none",
112
+ opacity: 0,
113
+ margin: 0
114
+ }
115
+ }
116
+ );
117
+ }
118
+ );
119
+ x.displayName = J;
120
+ function A(r) {
121
+ return r ? "checked" : "unchecked";
122
+ }
123
+ var Q = ["ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight"], y = "RadioGroup", [Z, he] = k(y, [
124
+ P,
125
+ _
126
+ ]), D = P(), M = _(), [ee, oe] = Z(y), O = s.forwardRef(
127
+ (r, t) => {
128
+ const {
129
+ __scopeRadioGroup: o,
130
+ name: d,
131
+ defaultValue: e,
132
+ value: a,
133
+ required: n = !1,
134
+ disabled: p = !1,
135
+ orientation: f,
136
+ dir: m,
137
+ loop: v = !0,
138
+ onValueChange: l,
139
+ ...R
140
+ } = r, c = D(o), u = V(m), [b, h] = K({
141
+ prop: a,
142
+ defaultProp: e ?? null,
143
+ onChange: l,
144
+ caller: y
145
+ });
146
+ return /* @__PURE__ */ i(
147
+ ee,
148
+ {
149
+ scope: o,
150
+ name: d,
151
+ required: n,
152
+ disabled: p,
153
+ value: b,
154
+ onValueChange: h,
155
+ children: /* @__PURE__ */ i(
156
+ T,
157
+ {
158
+ asChild: !0,
159
+ ...c,
160
+ orientation: f,
161
+ dir: u,
162
+ loop: v,
163
+ children: /* @__PURE__ */ i(
164
+ g.div,
165
+ {
166
+ role: "radiogroup",
167
+ "aria-required": n,
168
+ "aria-orientation": f,
169
+ "data-disabled": p ? "" : void 0,
170
+ dir: u,
171
+ ...R,
172
+ ref: t
173
+ }
174
+ )
175
+ }
176
+ )
177
+ }
178
+ );
179
+ }
180
+ );
181
+ O.displayName = y;
182
+ var F = "RadioGroupItem", L = s.forwardRef(
183
+ (r, t) => {
184
+ const { __scopeRadioGroup: o, disabled: d, ...e } = r, a = oe(F, o), n = a.disabled || d, p = D(o), f = M(o), m = s.useRef(null), v = w(t, m), l = a.value === e.value, R = s.useRef(!1);
185
+ return s.useEffect(() => {
186
+ const c = (b) => {
187
+ Q.includes(b.key) && (R.current = !0);
188
+ }, u = () => R.current = !1;
189
+ return document.addEventListener("keydown", c), document.addEventListener("keyup", u), () => {
190
+ document.removeEventListener("keydown", c), document.removeEventListener("keyup", u);
191
+ };
192
+ }, []), /* @__PURE__ */ i(
193
+ U,
194
+ {
195
+ asChild: !0,
196
+ ...p,
197
+ focusable: !n,
198
+ active: l,
199
+ children: /* @__PURE__ */ i(
200
+ G,
201
+ {
202
+ disabled: n,
203
+ required: a.required,
204
+ checked: l,
205
+ ...f,
206
+ ...e,
207
+ name: a.name,
208
+ ref: v,
209
+ onCheck: () => a.onValueChange(e.value),
210
+ onKeyDown: C((c) => {
211
+ c.key === "Enter" && c.preventDefault();
212
+ }),
213
+ onFocus: C(e.onFocus, () => {
214
+ R.current && m.current?.click();
215
+ })
216
+ }
217
+ )
218
+ }
219
+ );
220
+ }
221
+ );
222
+ L.displayName = F;
223
+ var re = "RadioGroupIndicator", q = s.forwardRef(
224
+ (r, t) => {
225
+ const { __scopeRadioGroup: o, ...d } = r, e = M(o);
226
+ return /* @__PURE__ */ i(S, { ...e, ...d, ref: t });
227
+ }
228
+ );
229
+ q.displayName = re;
230
+ var te = O, ae = L, ie = q;
231
+ function ge({
232
+ className: r,
233
+ ...t
234
+ }) {
235
+ return /* @__PURE__ */ i(
236
+ te,
237
+ {
238
+ "data-slot": "radio-group",
239
+ className: E("grid gap-3", r),
240
+ ...t
241
+ }
242
+ );
243
+ }
244
+ function ye({
245
+ className: r,
246
+ ...t
247
+ }) {
248
+ return /* @__PURE__ */ i(
249
+ ae,
250
+ {
251
+ "data-slot": "radio-group-item",
252
+ className: E(
253
+ "border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",
254
+ r
255
+ ),
256
+ ...t,
257
+ children: /* @__PURE__ */ i(
258
+ ie,
259
+ {
260
+ "data-slot": "radio-group-indicator",
261
+ className: "relative flex items-center justify-center",
262
+ children: /* @__PURE__ */ i($, { className: "fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2" })
263
+ }
264
+ )
265
+ }
266
+ );
267
+ }
268
+ export {
269
+ ge as RadioGroup,
270
+ ye as RadioGroupItem
271
+ };
272
+ //# sourceMappingURL=radio-group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio-group.js","sources":["../node_modules/@radix-ui/react-radio-group/dist/index.mjs","../src/components/ui/radio-group.tsx"],"sourcesContent":["\"use client\";\n\n// src/radio-group.tsx\nimport * as React2 from \"react\";\nimport { composeEventHandlers as composeEventHandlers2 } from \"@radix-ui/primitive\";\nimport { useComposedRefs as useComposedRefs2 } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope as createContextScope2 } from \"@radix-ui/react-context\";\nimport { Primitive as Primitive2 } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\n\n// src/radio.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar RADIO_NAME = \"Radio\";\nvar [createRadioContext, createRadioScope] = createContextScope(RADIO_NAME);\nvar [RadioProvider, useRadioContext] = createRadioContext(RADIO_NAME);\nvar Radio = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeRadio,\n name,\n checked = false,\n required,\n disabled,\n value = \"on\",\n onCheck,\n form,\n ...radioProps\n } = props;\n const [button, setButton] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node));\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n const isFormControl = button ? form || !!button.closest(\"form\") : true;\n return /* @__PURE__ */ jsxs(RadioProvider, { scope: __scopeRadio, checked, disabled, children: [\n /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"radio\",\n \"aria-checked\": checked,\n \"data-state\": getState(checked),\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n value,\n ...radioProps,\n ref: composedRefs,\n onClick: composeEventHandlers(props.onClick, (event) => {\n if (!checked) onCheck?.();\n if (isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })\n }\n ),\n isFormControl && /* @__PURE__ */ jsx(\n RadioBubbleInput,\n {\n control: button,\n bubbles: !hasConsumerStoppedPropagationRef.current,\n name,\n value,\n checked,\n required,\n disabled,\n form,\n style: { transform: \"translateX(-100%)\" }\n }\n )\n ] });\n }\n);\nRadio.displayName = RADIO_NAME;\nvar INDICATOR_NAME = \"RadioIndicator\";\nvar RadioIndicator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeRadio, forceMount, ...indicatorProps } = props;\n const context = useRadioContext(INDICATOR_NAME, __scopeRadio);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.checked, children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-state\": getState(context.checked),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...indicatorProps,\n ref: forwardedRef\n }\n ) });\n }\n);\nRadioIndicator.displayName = INDICATOR_NAME;\nvar BUBBLE_INPUT_NAME = \"RadioBubbleInput\";\nvar RadioBubbleInput = React.forwardRef(\n ({\n __scopeRadio,\n control,\n checked,\n bubbles = true,\n ...props\n }, forwardedRef) => {\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(ref, forwardedRef);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n React.useEffect(() => {\n const input = ref.current;\n if (!input) return;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n inputProto,\n \"checked\"\n );\n const setChecked = descriptor.set;\n if (prevChecked !== checked && setChecked) {\n const event = new Event(\"click\", { bubbles });\n setChecked.call(input, checked);\n input.dispatchEvent(event);\n }\n }, [prevChecked, checked, bubbles]);\n return /* @__PURE__ */ jsx(\n Primitive.input,\n {\n type: \"radio\",\n \"aria-hidden\": true,\n defaultChecked: checked,\n ...props,\n tabIndex: -1,\n ref: composedRefs,\n style: {\n ...props.style,\n ...controlSize,\n position: \"absolute\",\n pointerEvents: \"none\",\n opacity: 0,\n margin: 0\n }\n }\n );\n }\n);\nRadioBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction getState(checked) {\n return checked ? \"checked\" : \"unchecked\";\n}\n\n// src/radio-group.tsx\nimport { jsx as jsx2 } from \"react/jsx-runtime\";\nvar ARROW_KEYS = [\"ArrowUp\", \"ArrowDown\", \"ArrowLeft\", \"ArrowRight\"];\nvar RADIO_GROUP_NAME = \"RadioGroup\";\nvar [createRadioGroupContext, createRadioGroupScope] = createContextScope2(RADIO_GROUP_NAME, [\n createRovingFocusGroupScope,\n createRadioScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar useRadioScope = createRadioScope();\nvar [RadioGroupProvider, useRadioGroupContext] = createRadioGroupContext(RADIO_GROUP_NAME);\nvar RadioGroup = React2.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeRadioGroup,\n name,\n defaultValue,\n value: valueProp,\n required = false,\n disabled = false,\n orientation,\n dir,\n loop = true,\n onValueChange,\n ...groupProps\n } = props;\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeRadioGroup);\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue ?? null,\n onChange: onValueChange,\n caller: RADIO_GROUP_NAME\n });\n return /* @__PURE__ */ jsx2(\n RadioGroupProvider,\n {\n scope: __scopeRadioGroup,\n name,\n required,\n disabled,\n value,\n onValueChange: setValue,\n children: /* @__PURE__ */ jsx2(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n orientation,\n dir: direction,\n loop,\n children: /* @__PURE__ */ jsx2(\n Primitive2.div,\n {\n role: \"radiogroup\",\n \"aria-required\": required,\n \"aria-orientation\": orientation,\n \"data-disabled\": disabled ? \"\" : void 0,\n dir: direction,\n ...groupProps,\n ref: forwardedRef\n }\n )\n }\n )\n }\n );\n }\n);\nRadioGroup.displayName = RADIO_GROUP_NAME;\nvar ITEM_NAME = \"RadioGroupItem\";\nvar RadioGroupItem = React2.forwardRef(\n (props, forwardedRef) => {\n const { __scopeRadioGroup, disabled, ...itemProps } = props;\n const context = useRadioGroupContext(ITEM_NAME, __scopeRadioGroup);\n const isDisabled = context.disabled || disabled;\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeRadioGroup);\n const radioScope = useRadioScope(__scopeRadioGroup);\n const ref = React2.useRef(null);\n const composedRefs = useComposedRefs2(forwardedRef, ref);\n const checked = context.value === itemProps.value;\n const isArrowKeyPressedRef = React2.useRef(false);\n React2.useEffect(() => {\n const handleKeyDown = (event) => {\n if (ARROW_KEYS.includes(event.key)) {\n isArrowKeyPressedRef.current = true;\n }\n };\n const handleKeyUp = () => isArrowKeyPressedRef.current = false;\n document.addEventListener(\"keydown\", handleKeyDown);\n document.addEventListener(\"keyup\", handleKeyUp);\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown);\n document.removeEventListener(\"keyup\", handleKeyUp);\n };\n }, []);\n return /* @__PURE__ */ jsx2(\n RovingFocusGroup.Item,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n focusable: !isDisabled,\n active: checked,\n children: /* @__PURE__ */ jsx2(\n Radio,\n {\n disabled: isDisabled,\n required: context.required,\n checked,\n ...radioScope,\n ...itemProps,\n name: context.name,\n ref: composedRefs,\n onCheck: () => context.onValueChange(itemProps.value),\n onKeyDown: composeEventHandlers2((event) => {\n if (event.key === \"Enter\") event.preventDefault();\n }),\n onFocus: composeEventHandlers2(itemProps.onFocus, () => {\n if (isArrowKeyPressedRef.current) ref.current?.click();\n })\n }\n )\n }\n );\n }\n);\nRadioGroupItem.displayName = ITEM_NAME;\nvar INDICATOR_NAME2 = \"RadioGroupIndicator\";\nvar RadioGroupIndicator = React2.forwardRef(\n (props, forwardedRef) => {\n const { __scopeRadioGroup, ...indicatorProps } = props;\n const radioScope = useRadioScope(__scopeRadioGroup);\n return /* @__PURE__ */ jsx2(RadioIndicator, { ...radioScope, ...indicatorProps, ref: forwardedRef });\n }\n);\nRadioGroupIndicator.displayName = INDICATOR_NAME2;\nvar Root2 = RadioGroup;\nvar Item2 = RadioGroupItem;\nvar Indicator = RadioGroupIndicator;\nexport {\n Indicator,\n Item2 as Item,\n RadioGroup,\n RadioGroupIndicator,\n RadioGroupItem,\n Root2 as Root,\n createRadioGroupScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from \"react\"\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\"\nimport { CircleIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction RadioGroup({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\n return (\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n className={cn(\"grid gap-3\", className)}\n {...props}\n />\n )\n}\n\nfunction RadioGroupItem({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n className={cn(\n \"border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"relative flex items-center justify-center\"\n >\n <CircleIcon className=\"fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n}\n\nexport { RadioGroup, RadioGroupItem }\n"],"names":["RADIO_NAME","createRadioContext","createRadioScope","createContextScope","RadioProvider","useRadioContext","Radio","React","props","forwardedRef","__scopeRadio","name","checked","required","disabled","value","onCheck","form","radioProps","button","setButton","composedRefs","useComposedRefs","node","hasConsumerStoppedPropagationRef","isFormControl","jsxs","jsx","Primitive","getState","composeEventHandlers","event","RadioBubbleInput","INDICATOR_NAME","RadioIndicator","forceMount","indicatorProps","context","Presence","BUBBLE_INPUT_NAME","control","bubbles","ref","prevChecked","usePrevious","controlSize","useSize","input","inputProto","setChecked","ARROW_KEYS","RADIO_GROUP_NAME","createRadioGroupContext","createRadioGroupScope","createContextScope2","createRovingFocusGroupScope","useRovingFocusGroupScope","useRadioScope","RadioGroupProvider","useRadioGroupContext","RadioGroup","React2","__scopeRadioGroup","defaultValue","valueProp","orientation","dir","loop","onValueChange","groupProps","rovingFocusGroupScope","direction","useDirection","setValue","useControllableState","jsx2","RovingFocusGroup.Root","Primitive2","ITEM_NAME","RadioGroupItem","itemProps","isDisabled","radioScope","useComposedRefs2","isArrowKeyPressedRef","handleKeyDown","handleKeyUp","RovingFocusGroup.Item","composeEventHandlers2","INDICATOR_NAME2","RadioGroupIndicator","Root2","Item2","Indicator","className","RadioGroupPrimitive.Root","cn","RadioGroupPrimitive.Item","RadioGroupPrimitive.Indicator","CircleIcon"],"mappings":"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","x_google_ignoreList":[0]}
@@ -0,0 +1,42 @@
1
+ import { jsx as f } from "react/jsx-runtime";
2
+ import { forwardRef as l } from "react";
3
+ import { c } from "./index-Bke1qZdk.js";
4
+ import { c as m } from "./utils-CwJPJKOE.js";
5
+ const p = c(
6
+ "w-full",
7
+ {
8
+ variants: {
9
+ tone: {
10
+ clean: "",
11
+ subtle: "bg-muted/5",
12
+ brand: "bg-primary/5",
13
+ contrast: "bg-zinc-900"
14
+ }
15
+ },
16
+ defaultVariants: {
17
+ tone: "clean"
18
+ }
19
+ }
20
+ ), d = l(({
21
+ edges: a = ["top", "bottom", "left", "right"],
22
+ tone: r = "clean",
23
+ useMargin: n = !1,
24
+ className: o,
25
+ children: i
26
+ }, s) => {
27
+ const t = {}, e = n ? "margin" : "padding";
28
+ return a.includes("top") && (t[`${e}Top`] = "env(safe-area-inset-top)"), a.includes("bottom") && (t[`${e}Bottom`] = "env(safe-area-inset-bottom)"), a.includes("left") && (t[`${e}Left`] = "env(safe-area-inset-left)"), a.includes("right") && (t[`${e}Right`] = "env(safe-area-inset-right)"), /* @__PURE__ */ f(
29
+ "div",
30
+ {
31
+ ref: s,
32
+ className: m(p({ tone: r }), o),
33
+ style: t,
34
+ children: i
35
+ }
36
+ );
37
+ });
38
+ d.displayName = "SafeArea";
39
+ export {
40
+ d as SafeArea
41
+ };
42
+ //# sourceMappingURL=safe-area.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safe-area.js","sources":["../src/components/sections/safe-area.tsx"],"sourcesContent":["/**\n * SafeArea Section - Safe area wrapper for mobile notch/home indicator\n * @module @bloomneo/uikit\n * @file src/components/sections/safe-area.tsx\n */\n\nimport * as React from 'react';\nimport { forwardRef } from 'react';\nimport { cva } from 'class-variance-authority';\nimport { cn } from '@/lib/utils';\nimport type { Tone } from '@/types';\n\n/**\n * SafeArea edges to apply insets\n */\nexport type SafeAreaEdge = 'top' | 'bottom' | 'left' | 'right';\n\n/**\n * SafeArea variants\n */\nconst safeAreaVariants = cva(\n 'w-full',\n {\n variants: {\n tone: {\n clean: '',\n subtle: 'bg-muted/5',\n brand: 'bg-primary/5',\n contrast: 'bg-zinc-900'\n }\n },\n defaultVariants: {\n tone: 'clean'\n }\n }\n);\n\n/**\n * SafeArea Component Props\n */\nexport interface SafeAreaProps {\n /** OPTIONAL: Edges to apply safe area insets (default: all edges) */\n edges?: SafeAreaEdge[];\n /** OPTIONAL: Visual styling tone (default: \"clean\") */\n tone?: Tone;\n /** OPTIONAL: Use margin instead of padding (default: false) */\n useMargin?: boolean;\n /** OPTIONAL: Additional CSS classes */\n className?: string;\n /** REQUIRED: Content to wrap */\n children: React.ReactNode;\n}\n\n/**\n * SafeArea - Wraps content with safe area insets for mobile devices\n * Handles iOS notch, Android punch-hole, and home indicators\n *\n * @llm-usage\n * <SafeArea edges={['top', 'bottom']}>\n * <AppContent />\n * </SafeArea>\n *\n * @example Full safe area (all edges)\n * <SafeArea>{children}</SafeArea>\n *\n * @example Only top and bottom (common for main content)\n * <SafeArea edges={['top', 'bottom']}>{children}</SafeArea>\n *\n * @example With background tone\n * <SafeArea tone=\"subtle\" edges={['top']}>{children}</SafeArea>\n */\nexport const SafeArea = forwardRef<HTMLDivElement, SafeAreaProps>(({\n edges = ['top', 'bottom', 'left', 'right'],\n tone = 'clean',\n useMargin = false,\n className,\n children,\n}, ref) => {\n // Build inline styles for safe area insets\n const safeAreaStyles: React.CSSProperties = {};\n const property = useMargin ? 'margin' : 'padding';\n\n if (edges.includes('top')) {\n safeAreaStyles[`${property}Top` as keyof React.CSSProperties] = 'env(safe-area-inset-top)' as any;\n }\n if (edges.includes('bottom')) {\n safeAreaStyles[`${property}Bottom` as keyof React.CSSProperties] = 'env(safe-area-inset-bottom)' as any;\n }\n if (edges.includes('left')) {\n safeAreaStyles[`${property}Left` as keyof React.CSSProperties] = 'env(safe-area-inset-left)' as any;\n }\n if (edges.includes('right')) {\n safeAreaStyles[`${property}Right` as keyof React.CSSProperties] = 'env(safe-area-inset-right)' as any;\n }\n\n return (\n <div\n ref={ref}\n className={cn(safeAreaVariants({ tone }), className)}\n style={safeAreaStyles}\n >\n {children}\n </div>\n );\n});\n\nSafeArea.displayName = 'SafeArea';\n"],"names":["safeAreaVariants","cva","SafeArea","forwardRef","edges","tone","useMargin","className","children","ref","safeAreaStyles","property","jsx","cn"],"mappings":";;;;AAoBA,MAAMA,IAAmBC;AAAA,EACvB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,UAAU;AAAA,MAAA;AAAA,IACZ;AAAA,IAEF,iBAAiB;AAAA,MACf,MAAM;AAAA,IAAA;AAAA,EACR;AAEJ,GAoCaC,IAAWC,EAA0C,CAAC;AAAA,EACjE,OAAAC,IAAQ,CAAC,OAAO,UAAU,QAAQ,OAAO;AAAA,EACzC,MAAAC,IAAO;AAAA,EACP,WAAAC,IAAY;AAAA,EACZ,WAAAC;AAAA,EACA,UAAAC;AACF,GAAGC,MAAQ;AAET,QAAMC,IAAsC,CAAA,GACtCC,IAAWL,IAAY,WAAW;AAExC,SAAIF,EAAM,SAAS,KAAK,MACtBM,EAAe,GAAGC,CAAQ,KAAkC,IAAI,6BAE9DP,EAAM,SAAS,QAAQ,MACzBM,EAAe,GAAGC,CAAQ,QAAqC,IAAI,gCAEjEP,EAAM,SAAS,MAAM,MACvBM,EAAe,GAAGC,CAAQ,MAAmC,IAAI,8BAE/DP,EAAM,SAAS,OAAO,MACxBM,EAAe,GAAGC,CAAQ,OAAoC,IAAI,+BAIlE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAH;AAAA,MACA,WAAWI,EAAGb,EAAiB,EAAE,MAAAK,EAAA,CAAM,GAAGE,CAAS;AAAA,MACnD,OAAOG;AAAA,MAEN,UAAAF;AAAA,IAAA;AAAA,EAAA;AAGP,CAAC;AAEDN,EAAS,cAAc;"}
@@ -0,0 +1,15 @@
1
+ import { c } from "./createLucideIcon-B45kRl5r.js";
2
+ /**
3
+ * @license lucide-react v0.468.0 - ISC
4
+ *
5
+ * This source code is licensed under the ISC license.
6
+ * See the LICENSE file in the root directory of this source tree.
7
+ */
8
+ const r = c("Search", [
9
+ ["circle", { cx: "11", cy: "11", r: "8", key: "4ej97u" }],
10
+ ["path", { d: "m21 21-4.3-4.3", key: "1qie3q" }]
11
+ ]);
12
+ export {
13
+ r as S
14
+ };
15
+ //# sourceMappingURL=search-CpUwRnG-.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-CpUwRnG-.js","sources":["../node_modules/lucide-react/dist/esm/icons/search.js"],"sourcesContent":["/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Search = createLucideIcon(\"Search\", [\n [\"circle\", { cx: \"11\", cy: \"11\", r: \"8\", key: \"4ej97u\" }],\n [\"path\", { d: \"m21 21-4.3-4.3\", key: \"1qie3q\" }]\n]);\n\nexport { Search as default };\n//# sourceMappingURL=search.js.map\n"],"names":["Search","createLucideIcon"],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASK,MAACA,IAASC,EAAiB,UAAU;AAAA,EACxC,CAAC,UAAU,EAAE,IAAI,MAAM,IAAI,MAAM,GAAG,KAAK,KAAK,UAAU;AAAA,EACxD,CAAC,QAAQ,EAAE,GAAG,kBAAkB,KAAK,SAAQ,CAAE;AACjD,CAAC;","x_google_ignoreList":[0]}