@misael703/ui 1.0.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 (456) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +462 -0
  3. package/dist/brand.d.mts +46 -0
  4. package/dist/brand.d.ts +46 -0
  5. package/dist/brand.js +24 -0
  6. package/dist/brand.js.map +1 -0
  7. package/dist/brand.mjs +3 -0
  8. package/dist/brand.mjs.map +1 -0
  9. package/dist/chunk-26KJA67X.js +166 -0
  10. package/dist/chunk-26KJA67X.js.map +1 -0
  11. package/dist/chunk-2JTBLDMK.js +274 -0
  12. package/dist/chunk-2JTBLDMK.js.map +1 -0
  13. package/dist/chunk-2RVSLQEA.mjs +171 -0
  14. package/dist/chunk-2RVSLQEA.mjs.map +1 -0
  15. package/dist/chunk-2UV37SEN.mjs +78 -0
  16. package/dist/chunk-2UV37SEN.mjs.map +1 -0
  17. package/dist/chunk-33PU6AH7.mjs +123 -0
  18. package/dist/chunk-33PU6AH7.mjs.map +1 -0
  19. package/dist/chunk-3PXYCXDW.js +32 -0
  20. package/dist/chunk-3PXYCXDW.js.map +1 -0
  21. package/dist/chunk-3TNBETXR.js +116 -0
  22. package/dist/chunk-3TNBETXR.js.map +1 -0
  23. package/dist/chunk-3UHX7ITQ.mjs +76 -0
  24. package/dist/chunk-3UHX7ITQ.mjs.map +1 -0
  25. package/dist/chunk-4REALDR3.js +4 -0
  26. package/dist/chunk-4REALDR3.js.map +1 -0
  27. package/dist/chunk-55TOQMS2.js +142 -0
  28. package/dist/chunk-55TOQMS2.js.map +1 -0
  29. package/dist/chunk-5GEWIK4T.mjs +27 -0
  30. package/dist/chunk-5GEWIK4T.mjs.map +1 -0
  31. package/dist/chunk-5VMZMDJF.js +145 -0
  32. package/dist/chunk-5VMZMDJF.js.map +1 -0
  33. package/dist/chunk-6II4NJQM.js +127 -0
  34. package/dist/chunk-6II4NJQM.js.map +1 -0
  35. package/dist/chunk-6LOJIU3C.js +84 -0
  36. package/dist/chunk-6LOJIU3C.js.map +1 -0
  37. package/dist/chunk-6MEOR4YO.mjs +45 -0
  38. package/dist/chunk-6MEOR4YO.mjs.map +1 -0
  39. package/dist/chunk-6PEC4RRO.mjs +94 -0
  40. package/dist/chunk-6PEC4RRO.mjs.map +1 -0
  41. package/dist/chunk-7AKN7FDA.mjs +103 -0
  42. package/dist/chunk-7AKN7FDA.mjs.map +1 -0
  43. package/dist/chunk-AAQ7KUZH.mjs +352 -0
  44. package/dist/chunk-AAQ7KUZH.mjs.map +1 -0
  45. package/dist/chunk-ADIKHOEG.js +212 -0
  46. package/dist/chunk-ADIKHOEG.js.map +1 -0
  47. package/dist/chunk-ADQM725E.js +141 -0
  48. package/dist/chunk-ADQM725E.js.map +1 -0
  49. package/dist/chunk-AWYCGJJX.js +102 -0
  50. package/dist/chunk-AWYCGJJX.js.map +1 -0
  51. package/dist/chunk-AZBX7UFI.js +100 -0
  52. package/dist/chunk-AZBX7UFI.js.map +1 -0
  53. package/dist/chunk-BCIZLGM3.mjs +78 -0
  54. package/dist/chunk-BCIZLGM3.mjs.map +1 -0
  55. package/dist/chunk-BMZQ6L2C.js +294 -0
  56. package/dist/chunk-BMZQ6L2C.js.map +1 -0
  57. package/dist/chunk-CHVTPN3K.mjs +3 -0
  58. package/dist/chunk-CHVTPN3K.mjs.map +1 -0
  59. package/dist/chunk-CIBJKJV3.mjs +314 -0
  60. package/dist/chunk-CIBJKJV3.mjs.map +1 -0
  61. package/dist/chunk-CPMQ2DFS.js +197 -0
  62. package/dist/chunk-CPMQ2DFS.js.map +1 -0
  63. package/dist/chunk-CVXS7IHA.js +376 -0
  64. package/dist/chunk-CVXS7IHA.js.map +1 -0
  65. package/dist/chunk-DHCJMYFD.mjs +76 -0
  66. package/dist/chunk-DHCJMYFD.mjs.map +1 -0
  67. package/dist/chunk-DW3XAXHR.mjs +146 -0
  68. package/dist/chunk-DW3XAXHR.mjs.map +1 -0
  69. package/dist/chunk-E2XOUDAH.js +215 -0
  70. package/dist/chunk-E2XOUDAH.js.map +1 -0
  71. package/dist/chunk-EJJDJJEM.js +505 -0
  72. package/dist/chunk-EJJDJJEM.js.map +1 -0
  73. package/dist/chunk-FXM7OKDQ.js +146 -0
  74. package/dist/chunk-FXM7OKDQ.js.map +1 -0
  75. package/dist/chunk-GCW5JYWQ.js +69 -0
  76. package/dist/chunk-GCW5JYWQ.js.map +1 -0
  77. package/dist/chunk-GDFYAUHT.mjs +192 -0
  78. package/dist/chunk-GDFYAUHT.mjs.map +1 -0
  79. package/dist/chunk-GT2KVC2P.mjs +267 -0
  80. package/dist/chunk-GT2KVC2P.mjs.map +1 -0
  81. package/dist/chunk-GVYZAOWU.mjs +142 -0
  82. package/dist/chunk-GVYZAOWU.mjs.map +1 -0
  83. package/dist/chunk-HI3JT6SI.mjs +174 -0
  84. package/dist/chunk-HI3JT6SI.mjs.map +1 -0
  85. package/dist/chunk-HPFJ2A24.js +125 -0
  86. package/dist/chunk-HPFJ2A24.js.map +1 -0
  87. package/dist/chunk-HVUNNL3A.mjs +244 -0
  88. package/dist/chunk-HVUNNL3A.mjs.map +1 -0
  89. package/dist/chunk-HYUINOPJ.js +173 -0
  90. package/dist/chunk-HYUINOPJ.js.map +1 -0
  91. package/dist/chunk-IEPCH3JB.mjs +8 -0
  92. package/dist/chunk-IEPCH3JB.mjs.map +1 -0
  93. package/dist/chunk-IIYQO6BL.js +98 -0
  94. package/dist/chunk-IIYQO6BL.js.map +1 -0
  95. package/dist/chunk-IMFQ55KO.js +131 -0
  96. package/dist/chunk-IMFQ55KO.js.map +1 -0
  97. package/dist/chunk-IVL7P3MF.mjs +105 -0
  98. package/dist/chunk-IVL7P3MF.mjs.map +1 -0
  99. package/dist/chunk-JDOXRLZW.js +138 -0
  100. package/dist/chunk-JDOXRLZW.js.map +1 -0
  101. package/dist/chunk-JMFDIN5R.mjs +64 -0
  102. package/dist/chunk-JMFDIN5R.mjs.map +1 -0
  103. package/dist/chunk-KKOJI25C.mjs +11 -0
  104. package/dist/chunk-KKOJI25C.mjs.map +1 -0
  105. package/dist/chunk-L353APIO.js +131 -0
  106. package/dist/chunk-L353APIO.js.map +1 -0
  107. package/dist/chunk-LIGJBHXU.js +13 -0
  108. package/dist/chunk-LIGJBHXU.js.map +1 -0
  109. package/dist/chunk-LUXTZOTJ.js +204 -0
  110. package/dist/chunk-LUXTZOTJ.js.map +1 -0
  111. package/dist/chunk-ML5IYW5D.mjs +82 -0
  112. package/dist/chunk-ML5IYW5D.mjs.map +1 -0
  113. package/dist/chunk-NLCKWF3Y.mjs +88 -0
  114. package/dist/chunk-NLCKWF3Y.mjs.map +1 -0
  115. package/dist/chunk-NU4GAGUV.js +86 -0
  116. package/dist/chunk-NU4GAGUV.js.map +1 -0
  117. package/dist/chunk-NUURPO3J.mjs +120 -0
  118. package/dist/chunk-NUURPO3J.mjs.map +1 -0
  119. package/dist/chunk-O6FCBNWN.mjs +191 -0
  120. package/dist/chunk-O6FCBNWN.mjs.map +1 -0
  121. package/dist/chunk-OCE4ODTM.mjs +116 -0
  122. package/dist/chunk-OCE4ODTM.mjs.map +1 -0
  123. package/dist/chunk-ORUQ5GCU.mjs +120 -0
  124. package/dist/chunk-ORUQ5GCU.mjs.map +1 -0
  125. package/dist/chunk-PASF6T4H.js +10 -0
  126. package/dist/chunk-PASF6T4H.js.map +1 -0
  127. package/dist/chunk-PCRNKITV.mjs +106 -0
  128. package/dist/chunk-PCRNKITV.mjs.map +1 -0
  129. package/dist/chunk-PSJVU4E4.js +72 -0
  130. package/dist/chunk-PSJVU4E4.js.map +1 -0
  131. package/dist/chunk-PXCH5Z76.mjs +82 -0
  132. package/dist/chunk-PXCH5Z76.mjs.map +1 -0
  133. package/dist/chunk-QHRP73CS.js +106 -0
  134. package/dist/chunk-QHRP73CS.js.map +1 -0
  135. package/dist/chunk-QI6TVWWF.js +121 -0
  136. package/dist/chunk-QI6TVWWF.js.map +1 -0
  137. package/dist/chunk-QSCJ2CER.mjs +480 -0
  138. package/dist/chunk-QSCJ2CER.mjs.map +1 -0
  139. package/dist/chunk-R76YER7O.js +458 -0
  140. package/dist/chunk-R76YER7O.js.map +1 -0
  141. package/dist/chunk-RBJRQ44B.mjs +108 -0
  142. package/dist/chunk-RBJRQ44B.mjs.map +1 -0
  143. package/dist/chunk-RQOTH7I7.js +401 -0
  144. package/dist/chunk-RQOTH7I7.js.map +1 -0
  145. package/dist/chunk-SYX4GZ7E.mjs +134 -0
  146. package/dist/chunk-SYX4GZ7E.mjs.map +1 -0
  147. package/dist/chunk-T4R2LSRL.js +148 -0
  148. package/dist/chunk-T4R2LSRL.js.map +1 -0
  149. package/dist/chunk-TB6EHWRF.mjs +92 -0
  150. package/dist/chunk-TB6EHWRF.mjs.map +1 -0
  151. package/dist/chunk-TEQ67JKX.js +181 -0
  152. package/dist/chunk-TEQ67JKX.js.map +1 -0
  153. package/dist/chunk-TXKFCVCN.mjs +426 -0
  154. package/dist/chunk-TXKFCVCN.mjs.map +1 -0
  155. package/dist/chunk-TZG34EYW.js +74 -0
  156. package/dist/chunk-TZG34EYW.js.map +1 -0
  157. package/dist/chunk-UB2XEZ7C.mjs +72 -0
  158. package/dist/chunk-UB2XEZ7C.mjs.map +1 -0
  159. package/dist/chunk-UIKCTWKG.js +116 -0
  160. package/dist/chunk-UIKCTWKG.js.map +1 -0
  161. package/dist/chunk-UNOPDYA7.js +107 -0
  162. package/dist/chunk-UNOPDYA7.js.map +1 -0
  163. package/dist/chunk-V26K66NP.mjs +49 -0
  164. package/dist/chunk-V26K66NP.mjs.map +1 -0
  165. package/dist/chunk-W6YOBPL5.js +110 -0
  166. package/dist/chunk-W6YOBPL5.js.map +1 -0
  167. package/dist/chunk-X2DBGT7M.mjs +117 -0
  168. package/dist/chunk-X2DBGT7M.mjs.map +1 -0
  169. package/dist/chunk-YBOTLQ3G.mjs +99 -0
  170. package/dist/chunk-YBOTLQ3G.mjs.map +1 -0
  171. package/dist/chunk-Z3FAKG3E.mjs +125 -0
  172. package/dist/chunk-Z3FAKG3E.mjs.map +1 -0
  173. package/dist/chunk-Z4GRQHIG.mjs +177 -0
  174. package/dist/chunk-Z4GRQHIG.mjs.map +1 -0
  175. package/dist/chunk-ZRBVYPKN.js +169 -0
  176. package/dist/chunk-ZRBVYPKN.js.map +1 -0
  177. package/dist/chunk-ZRFSTYRL.mjs +157 -0
  178. package/dist/chunk-ZRFSTYRL.mjs.map +1 -0
  179. package/dist/chunk-ZXSSOEIM.js +197 -0
  180. package/dist/chunk-ZXSSOEIM.js.map +1 -0
  181. package/dist/components/AdvancedPickers.d.mts +77 -0
  182. package/dist/components/AdvancedPickers.d.ts +77 -0
  183. package/dist/components/AdvancedPickers.js +30 -0
  184. package/dist/components/AdvancedPickers.js.map +1 -0
  185. package/dist/components/AdvancedPickers.mjs +9 -0
  186. package/dist/components/AdvancedPickers.mjs.map +1 -0
  187. package/dist/components/AppShell.d.mts +55 -0
  188. package/dist/components/AppShell.d.ts +55 -0
  189. package/dist/components/AppShell.js +19 -0
  190. package/dist/components/AppShell.js.map +1 -0
  191. package/dist/components/AppShell.mjs +6 -0
  192. package/dist/components/AppShell.mjs.map +1 -0
  193. package/dist/components/Button.d.mts +16 -0
  194. package/dist/components/Button.d.ts +16 -0
  195. package/dist/components/Button.js +17 -0
  196. package/dist/components/Button.js.map +1 -0
  197. package/dist/components/Button.mjs +4 -0
  198. package/dist/components/Button.mjs.map +1 -0
  199. package/dist/components/Carousel.d.mts +17 -0
  200. package/dist/components/Carousel.d.ts +17 -0
  201. package/dist/components/Carousel.js +14 -0
  202. package/dist/components/Carousel.js.map +1 -0
  203. package/dist/components/Carousel.mjs +5 -0
  204. package/dist/components/Carousel.mjs.map +1 -0
  205. package/dist/components/Charts.d.mts +96 -0
  206. package/dist/components/Charts.d.ts +96 -0
  207. package/dist/components/Charts.js +29 -0
  208. package/dist/components/Charts.js.map +1 -0
  209. package/dist/components/Charts.mjs +4 -0
  210. package/dist/components/Charts.mjs.map +1 -0
  211. package/dist/components/Code.d.mts +18 -0
  212. package/dist/components/Code.d.ts +18 -0
  213. package/dist/components/Code.js +18 -0
  214. package/dist/components/Code.js.map +1 -0
  215. package/dist/components/Code.mjs +5 -0
  216. package/dist/components/Code.mjs.map +1 -0
  217. package/dist/components/Collapsible.d.mts +12 -0
  218. package/dist/components/Collapsible.d.ts +12 -0
  219. package/dist/components/Collapsible.js +21 -0
  220. package/dist/components/Collapsible.js.map +1 -0
  221. package/dist/components/Collapsible.mjs +4 -0
  222. package/dist/components/Collapsible.mjs.map +1 -0
  223. package/dist/components/Comments.d.mts +41 -0
  224. package/dist/components/Comments.d.ts +41 -0
  225. package/dist/components/Comments.js +25 -0
  226. package/dist/components/Comments.js.map +1 -0
  227. package/dist/components/Comments.mjs +8 -0
  228. package/dist/components/Comments.mjs.map +1 -0
  229. package/dist/components/Commerce.d.mts +159 -0
  230. package/dist/components/Commerce.d.ts +159 -0
  231. package/dist/components/Commerce.js +58 -0
  232. package/dist/components/Commerce.js.map +1 -0
  233. package/dist/components/Commerce.mjs +9 -0
  234. package/dist/components/Commerce.mjs.map +1 -0
  235. package/dist/components/ContextMenu.d.mts +22 -0
  236. package/dist/components/ContextMenu.d.ts +22 -0
  237. package/dist/components/ContextMenu.js +13 -0
  238. package/dist/components/ContextMenu.js.map +1 -0
  239. package/dist/components/ContextMenu.mjs +4 -0
  240. package/dist/components/ContextMenu.mjs.map +1 -0
  241. package/dist/components/DataTable.d.mts +121 -0
  242. package/dist/components/DataTable.d.ts +121 -0
  243. package/dist/components/DataTable.js +38 -0
  244. package/dist/components/DataTable.js.map +1 -0
  245. package/dist/components/DataTable.mjs +9 -0
  246. package/dist/components/DataTable.mjs.map +1 -0
  247. package/dist/components/Display.d.mts +56 -0
  248. package/dist/components/Display.d.ts +56 -0
  249. package/dist/components/Display.js +55 -0
  250. package/dist/components/Display.js.map +1 -0
  251. package/dist/components/Display.mjs +6 -0
  252. package/dist/components/Display.mjs.map +1 -0
  253. package/dist/components/Display2.d.mts +54 -0
  254. package/dist/components/Display2.d.ts +54 -0
  255. package/dist/components/Display2.js +26 -0
  256. package/dist/components/Display2.js.map +1 -0
  257. package/dist/components/Display2.mjs +5 -0
  258. package/dist/components/Display2.mjs.map +1 -0
  259. package/dist/components/Display3.d.mts +58 -0
  260. package/dist/components/Display3.d.ts +58 -0
  261. package/dist/components/Display3.js +36 -0
  262. package/dist/components/Display3.js.map +1 -0
  263. package/dist/components/Display3.mjs +7 -0
  264. package/dist/components/Display3.mjs.map +1 -0
  265. package/dist/components/Editing.d.mts +52 -0
  266. package/dist/components/Editing.d.ts +52 -0
  267. package/dist/components/Editing.js +33 -0
  268. package/dist/components/Editing.js.map +1 -0
  269. package/dist/components/Editing.mjs +8 -0
  270. package/dist/components/Editing.mjs.map +1 -0
  271. package/dist/components/Filters.d.mts +37 -0
  272. package/dist/components/Filters.d.ts +37 -0
  273. package/dist/components/Filters.js +28 -0
  274. package/dist/components/Filters.js.map +1 -0
  275. package/dist/components/Filters.mjs +7 -0
  276. package/dist/components/Filters.mjs.map +1 -0
  277. package/dist/components/Form.d.mts +55 -0
  278. package/dist/components/Form.d.ts +55 -0
  279. package/dist/components/Form.js +50 -0
  280. package/dist/components/Form.js.map +1 -0
  281. package/dist/components/Form.mjs +5 -0
  282. package/dist/components/Form.mjs.map +1 -0
  283. package/dist/components/Gallery.d.mts +28 -0
  284. package/dist/components/Gallery.d.ts +28 -0
  285. package/dist/components/Gallery.js +20 -0
  286. package/dist/components/Gallery.js.map +1 -0
  287. package/dist/components/Gallery.mjs +7 -0
  288. package/dist/components/Gallery.mjs.map +1 -0
  289. package/dist/components/HoverCard.d.mts +17 -0
  290. package/dist/components/HoverCard.d.ts +17 -0
  291. package/dist/components/HoverCard.js +13 -0
  292. package/dist/components/HoverCard.js.map +1 -0
  293. package/dist/components/HoverCard.mjs +4 -0
  294. package/dist/components/HoverCard.mjs.map +1 -0
  295. package/dist/components/Icons.d.mts +84 -0
  296. package/dist/components/Icons.d.ts +84 -0
  297. package/dist/components/Icons.js +272 -0
  298. package/dist/components/Icons.js.map +1 -0
  299. package/dist/components/Icons.mjs +3 -0
  300. package/dist/components/Icons.mjs.map +1 -0
  301. package/dist/components/InputOTP.d.mts +17 -0
  302. package/dist/components/InputOTP.d.ts +17 -0
  303. package/dist/components/InputOTP.js +13 -0
  304. package/dist/components/InputOTP.js.map +1 -0
  305. package/dist/components/InputOTP.mjs +4 -0
  306. package/dist/components/InputOTP.mjs.map +1 -0
  307. package/dist/components/Inputs.d.mts +45 -0
  308. package/dist/components/Inputs.d.ts +45 -0
  309. package/dist/components/Inputs.js +28 -0
  310. package/dist/components/Inputs.js.map +1 -0
  311. package/dist/components/Inputs.mjs +7 -0
  312. package/dist/components/Inputs.mjs.map +1 -0
  313. package/dist/components/InputsExtra.d.mts +98 -0
  314. package/dist/components/InputsExtra.d.ts +98 -0
  315. package/dist/components/InputsExtra.js +49 -0
  316. package/dist/components/InputsExtra.js.map +1 -0
  317. package/dist/components/InputsExtra.mjs +8 -0
  318. package/dist/components/InputsExtra.mjs.map +1 -0
  319. package/dist/components/Layout.d.mts +83 -0
  320. package/dist/components/Layout.d.ts +83 -0
  321. package/dist/components/Layout.js +78 -0
  322. package/dist/components/Layout.js.map +1 -0
  323. package/dist/components/Layout.mjs +5 -0
  324. package/dist/components/Layout.mjs.map +1 -0
  325. package/dist/components/Logo.d.mts +38 -0
  326. package/dist/components/Logo.d.ts +38 -0
  327. package/dist/components/Logo.js +14 -0
  328. package/dist/components/Logo.js.map +1 -0
  329. package/dist/components/Logo.mjs +5 -0
  330. package/dist/components/Logo.mjs.map +1 -0
  331. package/dist/components/Marketing.d.mts +46 -0
  332. package/dist/components/Marketing.d.ts +46 -0
  333. package/dist/components/Marketing.js +22 -0
  334. package/dist/components/Marketing.js.map +1 -0
  335. package/dist/components/Marketing.mjs +5 -0
  336. package/dist/components/Marketing.mjs.map +1 -0
  337. package/dist/components/Menubar.d.mts +24 -0
  338. package/dist/components/Menubar.d.ts +24 -0
  339. package/dist/components/Menubar.js +13 -0
  340. package/dist/components/Menubar.js.map +1 -0
  341. package/dist/components/Menubar.mjs +4 -0
  342. package/dist/components/Menubar.mjs.map +1 -0
  343. package/dist/components/NavigationMenu.d.mts +28 -0
  344. package/dist/components/NavigationMenu.d.ts +28 -0
  345. package/dist/components/NavigationMenu.js +14 -0
  346. package/dist/components/NavigationMenu.js.map +1 -0
  347. package/dist/components/NavigationMenu.mjs +5 -0
  348. package/dist/components/NavigationMenu.mjs.map +1 -0
  349. package/dist/components/Notifications.d.mts +25 -0
  350. package/dist/components/Notifications.d.ts +25 -0
  351. package/dist/components/Notifications.js +16 -0
  352. package/dist/components/Notifications.js.map +1 -0
  353. package/dist/components/Notifications.mjs +7 -0
  354. package/dist/components/Notifications.mjs.map +1 -0
  355. package/dist/components/Overlay.d.mts +20 -0
  356. package/dist/components/Overlay.d.ts +20 -0
  357. package/dist/components/Overlay.js +19 -0
  358. package/dist/components/Overlay.js.map +1 -0
  359. package/dist/components/Overlay.mjs +6 -0
  360. package/dist/components/Overlay.mjs.map +1 -0
  361. package/dist/components/Permissions.d.mts +23 -0
  362. package/dist/components/Permissions.d.ts +23 -0
  363. package/dist/components/Permissions.js +17 -0
  364. package/dist/components/Permissions.js.map +1 -0
  365. package/dist/components/Permissions.mjs +8 -0
  366. package/dist/components/Permissions.mjs.map +1 -0
  367. package/dist/components/Pickers.d.mts +54 -0
  368. package/dist/components/Pickers.d.ts +54 -0
  369. package/dist/components/Pickers.js +25 -0
  370. package/dist/components/Pickers.js.map +1 -0
  371. package/dist/components/Pickers.mjs +8 -0
  372. package/dist/components/Pickers.mjs.map +1 -0
  373. package/dist/components/Popover.d.mts +23 -0
  374. package/dist/components/Popover.d.ts +23 -0
  375. package/dist/components/Popover.js +13 -0
  376. package/dist/components/Popover.js.map +1 -0
  377. package/dist/components/Popover.mjs +4 -0
  378. package/dist/components/Popover.mjs.map +1 -0
  379. package/dist/components/Primitives.d.mts +18 -0
  380. package/dist/components/Primitives.d.ts +18 -0
  381. package/dist/components/Primitives.js +21 -0
  382. package/dist/components/Primitives.js.map +1 -0
  383. package/dist/components/Primitives.mjs +4 -0
  384. package/dist/components/Primitives.mjs.map +1 -0
  385. package/dist/components/Resizable.d.mts +27 -0
  386. package/dist/components/Resizable.d.ts +27 -0
  387. package/dist/components/Resizable.js +21 -0
  388. package/dist/components/Resizable.js.map +1 -0
  389. package/dist/components/Resizable.mjs +4 -0
  390. package/dist/components/Resizable.mjs.map +1 -0
  391. package/dist/components/Toast.d.mts +21 -0
  392. package/dist/components/Toast.d.ts +21 -0
  393. package/dist/components/Toast.js +19 -0
  394. package/dist/components/Toast.js.map +1 -0
  395. package/dist/components/Toast.mjs +6 -0
  396. package/dist/components/Toast.mjs.map +1 -0
  397. package/dist/components/Toggle.d.mts +42 -0
  398. package/dist/components/Toggle.d.ts +42 -0
  399. package/dist/components/Toggle.js +21 -0
  400. package/dist/components/Toggle.js.map +1 -0
  401. package/dist/components/Toggle.mjs +4 -0
  402. package/dist/components/Toggle.mjs.map +1 -0
  403. package/dist/fonts/DMSans-VariableFont_wght.woff2 +0 -0
  404. package/dist/fonts/OFL.txt +98 -0
  405. package/dist/fonts/Outfit-VariableFont_wght.woff2 +0 -0
  406. package/dist/fonts.css +1 -0
  407. package/dist/index.d.mts +43 -0
  408. package/dist/index.d.ts +43 -0
  409. package/dist/index.js +926 -0
  410. package/dist/index.js.map +1 -0
  411. package/dist/index.mjs +45 -0
  412. package/dist/index.mjs.map +1 -0
  413. package/dist/locale/index.d.mts +174 -0
  414. package/dist/locale/index.d.ts +174 -0
  415. package/dist/locale/index.js +26 -0
  416. package/dist/locale/index.js.map +1 -0
  417. package/dist/locale/index.mjs +5 -0
  418. package/dist/locale/index.mjs.map +1 -0
  419. package/dist/presets/elalba/defaults.d.mts +24 -0
  420. package/dist/presets/elalba/defaults.d.ts +24 -0
  421. package/dist/presets/elalba/defaults.js +13 -0
  422. package/dist/presets/elalba/defaults.js.map +1 -0
  423. package/dist/presets/elalba/defaults.mjs +11 -0
  424. package/dist/presets/elalba/defaults.mjs.map +1 -0
  425. package/dist/presets/elalba/logos/logo-horizontal-dark.png +0 -0
  426. package/dist/presets/elalba/logos/logo-horizontal-dark.svg +58 -0
  427. package/dist/presets/elalba/logos/logo-horizontal-light.png +0 -0
  428. package/dist/presets/elalba/logos/logo-horizontal-light.svg +68 -0
  429. package/dist/presets/elalba/logos/logo-vertical-dark.png +0 -0
  430. package/dist/presets/elalba/logos/logo-vertical-dark.svg +58 -0
  431. package/dist/presets/elalba/logos/logo-vertical-light.png +0 -0
  432. package/dist/presets/elalba/logos/logo-vertical-light.svg +68 -0
  433. package/dist/presets/elalba/logos/mark-dark.png +0 -0
  434. package/dist/presets/elalba/logos/mark-dark.svg +27 -0
  435. package/dist/presets/elalba/logos/mark-light.png +0 -0
  436. package/dist/presets/elalba/logos/mark-light.svg +27 -0
  437. package/dist/presets/elalba/logos/wordmark-dark.png +0 -0
  438. package/dist/presets/elalba/logos/wordmark-dark.svg +36 -0
  439. package/dist/presets/elalba/logos/wordmark-light.png +0 -0
  440. package/dist/presets/elalba/logos/wordmark-light.svg +36 -0
  441. package/dist/presets/elalba/styles.css +1 -0
  442. package/dist/styles.css +1 -0
  443. package/dist/tokens.css +1 -0
  444. package/dist/utils/cx.d.mts +3 -0
  445. package/dist/utils/cx.d.ts +3 -0
  446. package/dist/utils/cx.js +12 -0
  447. package/dist/utils/cx.js.map +1 -0
  448. package/dist/utils/cx.mjs +3 -0
  449. package/dist/utils/cx.mjs.map +1 -0
  450. package/dist/utils/dateFormat.d.mts +35 -0
  451. package/dist/utils/dateFormat.d.ts +35 -0
  452. package/dist/utils/dateFormat.js +29 -0
  453. package/dist/utils/dateFormat.js.map +1 -0
  454. package/dist/utils/dateFormat.mjs +4 -0
  455. package/dist/utils/dateFormat.mjs.map +1 -0
  456. package/package.json +94 -0
@@ -0,0 +1,204 @@
1
+ 'use strict';
2
+
3
+ var chunk5VMZMDJF_js = require('./chunk-5VMZMDJF.js');
4
+ var chunkTEQ67JKX_js = require('./chunk-TEQ67JKX.js');
5
+ var chunkRQOTH7I7_js = require('./chunk-RQOTH7I7.js');
6
+ var chunkPASF6T4H_js = require('./chunk-PASF6T4H.js');
7
+ var React = require('react');
8
+ var jsxRuntime = require('react/jsx-runtime');
9
+
10
+ function _interopNamespace(e) {
11
+ if (e && e.__esModule) return e;
12
+ var n = Object.create(null);
13
+ if (e) {
14
+ Object.keys(e).forEach(function (k) {
15
+ if (k !== 'default') {
16
+ var d = Object.getOwnPropertyDescriptor(e, k);
17
+ Object.defineProperty(n, k, d.get ? d : {
18
+ enumerable: true,
19
+ get: function () { return e[k]; }
20
+ });
21
+ }
22
+ });
23
+ }
24
+ n.default = e;
25
+ return Object.freeze(n);
26
+ }
27
+
28
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
29
+
30
+ function UserCell({ name, meta, avatarSrc, avatarAlt, size = 32, className, ...rest }) {
31
+ const initialsName = typeof name === "string" ? name : void 0;
32
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkPASF6T4H_js.cx("user-cell", className), ...rest, children: [
33
+ /* @__PURE__ */ jsxRuntime.jsx(chunk5VMZMDJF_js.Avatar, { src: avatarSrc, alt: avatarAlt, name: initialsName, size }),
34
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "user-cell__body", children: [
35
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "user-cell__name", children: name }),
36
+ meta && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "user-cell__meta", children: meta })
37
+ ] })
38
+ ] });
39
+ }
40
+ function StatusIndicator({ tone = "success", pulse, label, className, ...rest }) {
41
+ return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: chunkPASF6T4H_js.cx("status-indicator", className), role: "status", ...rest, children: [
42
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkPASF6T4H_js.cx("status-indicator__dot", `status-indicator__dot--${tone}`, pulse && "is-pulsing"), "aria-hidden": "true" }),
43
+ label && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "status-indicator__label", children: label })
44
+ ] });
45
+ }
46
+ var Timeline = React__namespace.forwardRef(
47
+ function Timeline2({ className, ...rest }, ref) {
48
+ return /* @__PURE__ */ jsxRuntime.jsx("ol", { ref, className: chunkPASF6T4H_js.cx("timeline", className), ...rest });
49
+ }
50
+ );
51
+ function TimelineItem({ icon, tone = "neutral", title, meta, children, className, ...rest }) {
52
+ return /* @__PURE__ */ jsxRuntime.jsxs("li", { className: chunkPASF6T4H_js.cx("timeline__item", className), ...rest, children: [
53
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkPASF6T4H_js.cx("timeline__marker", `timeline__marker--${tone}`), "aria-hidden": "true", children: icon }),
54
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "timeline__body", children: [
55
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "timeline__title", children: title }),
56
+ meta && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "timeline__meta", children: meta }),
57
+ children && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "timeline__content", children })
58
+ ] })
59
+ ] });
60
+ }
61
+ function Tree({ nodes, defaultExpanded = [], selectedId, onSelect, className, ...rest }) {
62
+ const [expanded, setExpanded] = React__namespace.useState(new Set(defaultExpanded));
63
+ const toggle = (id) => {
64
+ setExpanded((curr) => {
65
+ const next = new Set(curr);
66
+ if (next.has(id)) next.delete(id);
67
+ else next.add(id);
68
+ return next;
69
+ });
70
+ };
71
+ return /* @__PURE__ */ jsxRuntime.jsx("ul", { role: "tree", className: chunkPASF6T4H_js.cx("tree", className), ...rest, children: nodes.map((n) => /* @__PURE__ */ jsxRuntime.jsx(TreeNode, { node: n, depth: 0, expanded, toggle, selectedId, onSelect }, n.id)) });
72
+ }
73
+ function TreeNode({ node, depth, expanded, toggle, selectedId, onSelect }) {
74
+ const hasChildren = !!(node.children && node.children.length);
75
+ const isOpen = expanded.has(node.id);
76
+ const isSelected = selectedId === node.id;
77
+ const t = chunkTEQ67JKX_js.useLocale();
78
+ return /* @__PURE__ */ jsxRuntime.jsxs("li", { role: "treeitem", "aria-expanded": hasChildren ? isOpen : void 0, "aria-selected": isSelected, className: "tree__node", children: [
79
+ /* @__PURE__ */ jsxRuntime.jsxs(
80
+ "div",
81
+ {
82
+ className: chunkPASF6T4H_js.cx("tree__row", isSelected && "is-selected"),
83
+ style: { paddingLeft: `calc(var(--space-2) + var(--space-4) * ${depth})` },
84
+ onClick: () => onSelect?.(node.id),
85
+ children: [
86
+ hasChildren ? /* @__PURE__ */ jsxRuntime.jsx(
87
+ "button",
88
+ {
89
+ type: "button",
90
+ className: "tree__chev",
91
+ "aria-label": isOpen ? t["calendar.collapse"] : t["calendar.expand"],
92
+ onClick: (e) => {
93
+ e.stopPropagation();
94
+ toggle(node.id);
95
+ },
96
+ children: isOpen ? /* @__PURE__ */ jsxRuntime.jsx(chunkRQOTH7I7_js.ChevronDown, { size: 14 }) : /* @__PURE__ */ jsxRuntime.jsx(chunkRQOTH7I7_js.ChevronRight, { size: 14 })
97
+ }
98
+ ) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "tree__chev tree__chev--placeholder", "aria-hidden": "true" }),
99
+ node.icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "tree__icon", "aria-hidden": "true", children: node.icon }),
100
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "tree__label", children: node.label }),
101
+ node.meta && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "tree__meta", children: node.meta })
102
+ ]
103
+ }
104
+ ),
105
+ hasChildren && isOpen && /* @__PURE__ */ jsxRuntime.jsx("ul", { role: "group", className: "tree__children", children: node.children.map((c) => /* @__PURE__ */ jsxRuntime.jsx(TreeNode, { node: c, depth: depth + 1, expanded, toggle, selectedId, onSelect }, c.id)) })
106
+ ] });
107
+ }
108
+ function startOfMonth(d) {
109
+ return new Date(d.getFullYear(), d.getMonth(), 1);
110
+ }
111
+ function addMonths(d, n) {
112
+ return new Date(d.getFullYear(), d.getMonth() + n, 1);
113
+ }
114
+ function isSameDay(a, b) {
115
+ return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();
116
+ }
117
+ function Calendar({ month: monthProp, events = [], onMonthChange, onDayClick, className, ...rest }) {
118
+ const [internalMonth, setInternalMonth] = React__namespace.useState(() => startOfMonth(monthProp ?? /* @__PURE__ */ new Date()));
119
+ const month = monthProp ? startOfMonth(monthProp) : internalMonth;
120
+ const t = chunkTEQ67JKX_js.useLocale();
121
+ const weekdays = t["calendar.weekdays"];
122
+ const months = t["calendar.months"];
123
+ const setMonth = (m) => {
124
+ if (!monthProp) setInternalMonth(m);
125
+ onMonthChange?.(m);
126
+ };
127
+ const today = /* @__PURE__ */ new Date();
128
+ const firstDay = startOfMonth(month);
129
+ const firstWeekday = (firstDay.getDay() + 6) % 7;
130
+ const gridStart = new Date(firstDay);
131
+ gridStart.setDate(firstDay.getDate() - firstWeekday);
132
+ const days = Array.from({ length: 42 }, (_, i) => {
133
+ const d = new Date(gridStart);
134
+ d.setDate(gridStart.getDate() + i);
135
+ return d;
136
+ });
137
+ const eventsByDay = React__namespace.useMemo(() => {
138
+ const m = /* @__PURE__ */ new Map();
139
+ for (const ev of events) {
140
+ const key = `${ev.date.getFullYear()}-${ev.date.getMonth()}-${ev.date.getDate()}`;
141
+ const list = m.get(key) ?? [];
142
+ list.push(ev);
143
+ m.set(key, list);
144
+ }
145
+ return m;
146
+ }, [events]);
147
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkPASF6T4H_js.cx("calendar", className), ...rest, children: [
148
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "calendar__head", children: [
149
+ /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: "calendar__nav", "aria-label": t["calendar.prevMonth"], onClick: () => setMonth(addMonths(month, -1)), children: /* @__PURE__ */ jsxRuntime.jsx(chunkRQOTH7I7_js.ChevronRight, { size: 16, style: { transform: "rotate(180deg)" } }) }),
150
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "calendar__title", children: [
151
+ months[month.getMonth()],
152
+ " ",
153
+ month.getFullYear()
154
+ ] }),
155
+ /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: "calendar__nav", "aria-label": t["calendar.nextMonth"], onClick: () => setMonth(addMonths(month, 1)), children: /* @__PURE__ */ jsxRuntime.jsx(chunkRQOTH7I7_js.ChevronRight, { size: 16 }) })
156
+ ] }),
157
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "calendar__grid calendar__weekdays", children: weekdays.map((w) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: "calendar__weekday", children: w }, w)) }),
158
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "calendar__grid", children: days.map((d, i) => {
159
+ const inMonth = d.getMonth() === month.getMonth();
160
+ const isToday = isSameDay(d, today);
161
+ const key = `${d.getFullYear()}-${d.getMonth()}-${d.getDate()}`;
162
+ const dayEvents = eventsByDay.get(key) ?? [];
163
+ return /* @__PURE__ */ jsxRuntime.jsxs(
164
+ "button",
165
+ {
166
+ type: "button",
167
+ className: chunkPASF6T4H_js.cx("calendar__day", !inMonth && "is-out", isToday && "is-today"),
168
+ onClick: () => onDayClick?.(d),
169
+ children: [
170
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "calendar__daynum", children: d.getDate() }),
171
+ dayEvents.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "calendar__events", children: [
172
+ dayEvents.slice(0, 2).map((ev, idx) => /* @__PURE__ */ jsxRuntime.jsx(
173
+ "span",
174
+ {
175
+ className: chunkPASF6T4H_js.cx("calendar__event", `calendar__event--${ev.tone ?? "neutral"}`),
176
+ onClick: (e) => {
177
+ e.stopPropagation();
178
+ ev.onClick?.();
179
+ },
180
+ children: ev.label
181
+ },
182
+ idx
183
+ )),
184
+ dayEvents.length > 2 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "calendar__more", children: [
185
+ "+",
186
+ dayEvents.length - 2
187
+ ] })
188
+ ] })
189
+ ]
190
+ },
191
+ i
192
+ );
193
+ }) })
194
+ ] });
195
+ }
196
+
197
+ exports.Calendar = Calendar;
198
+ exports.StatusIndicator = StatusIndicator;
199
+ exports.Timeline = Timeline;
200
+ exports.TimelineItem = TimelineItem;
201
+ exports.Tree = Tree;
202
+ exports.UserCell = UserCell;
203
+ //# sourceMappingURL=chunk-LUXTZOTJ.js.map
204
+ //# sourceMappingURL=chunk-LUXTZOTJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Display3.tsx"],"names":["jsxs","cx","jsx","Avatar","React","Timeline","useLocale","ChevronDown","ChevronRight"],"mappings":"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","file":"chunk-LUXTZOTJ.js","sourcesContent":["'use client';\nimport * as React from 'react';\nimport { cx } from '../utils/cx';\nimport { Avatar } from './Display2';\nimport { ChevronRight, ChevronDown } from './Icons';\nimport { useLocale } from '../locale/LocaleProvider';\n\n// ---------- UserCell ----------------------------------------------------\nexport interface UserCellProps extends React.HTMLAttributes<HTMLDivElement> {\n name: React.ReactNode;\n meta?: React.ReactNode; // role / email / etc.\n avatarSrc?: string;\n avatarAlt?: string;\n size?: 24 | 32 | 40 | 48;\n}\n\nexport function UserCell({ name, meta, avatarSrc, avatarAlt, size = 32, className, ...rest }: UserCellProps) {\n const initialsName = typeof name === 'string' ? name : undefined;\n return (\n <div className={cx('user-cell', className)} {...rest}>\n <Avatar src={avatarSrc} alt={avatarAlt} name={initialsName} size={size} />\n <div className=\"user-cell__body\">\n <div className=\"user-cell__name\">{name}</div>\n {meta && <div className=\"user-cell__meta\">{meta}</div>}\n </div>\n </div>\n );\n}\n\n// ---------- StatusIndicator (pulsing dot) ------------------------------\nexport type StatusTone = 'success' | 'warning' | 'danger' | 'info' | 'neutral';\n\nexport interface StatusIndicatorProps extends React.HTMLAttributes<HTMLSpanElement> {\n tone?: StatusTone;\n pulse?: boolean;\n label?: React.ReactNode;\n}\n\nexport function StatusIndicator({ tone = 'success', pulse, label, className, ...rest }: StatusIndicatorProps) {\n return (\n <span className={cx('status-indicator', className)} role=\"status\" {...rest}>\n <span className={cx('status-indicator__dot', `status-indicator__dot--${tone}`, pulse && 'is-pulsing')} aria-hidden=\"true\" />\n {label && <span className=\"status-indicator__label\">{label}</span>}\n </span>\n );\n}\n\n// ---------- Timeline ----------------------------------------------------\nexport interface TimelineProps extends React.HTMLAttributes<HTMLOListElement> {}\n\nexport const Timeline = React.forwardRef<HTMLOListElement, TimelineProps>(\n function Timeline({ className, ...rest }, ref) {\n return <ol ref={ref} className={cx('timeline', className)} {...rest} />;\n }\n);\n\nexport interface TimelineItemProps extends Omit<React.LiHTMLAttributes<HTMLLIElement>, 'title'> {\n icon?: React.ReactNode;\n tone?: StatusTone;\n title: React.ReactNode;\n meta?: React.ReactNode;\n}\n\nexport function TimelineItem({ icon, tone = 'neutral', title, meta, children, className, ...rest }: TimelineItemProps) {\n return (\n <li className={cx('timeline__item', className)} {...rest}>\n <span className={cx('timeline__marker', `timeline__marker--${tone}`)} aria-hidden=\"true\">\n {icon}\n </span>\n <div className=\"timeline__body\">\n <div className=\"timeline__title\">{title}</div>\n {meta && <div className=\"timeline__meta\">{meta}</div>}\n {children && <div className=\"timeline__content\">{children}</div>}\n </div>\n </li>\n );\n}\n\n// ---------- Tree --------------------------------------------------------\nexport interface TreeNodeData {\n id: string;\n label: React.ReactNode;\n icon?: React.ReactNode;\n children?: TreeNodeData[];\n meta?: React.ReactNode;\n}\n\nexport interface TreeProps extends Omit<React.HTMLAttributes<HTMLUListElement>, 'onSelect'> {\n nodes: TreeNodeData[];\n defaultExpanded?: string[];\n selectedId?: string;\n onSelect?: (id: string) => void;\n}\n\nexport function Tree({ nodes, defaultExpanded = [], selectedId, onSelect, className, ...rest }: TreeProps) {\n const [expanded, setExpanded] = React.useState<Set<string>>(new Set(defaultExpanded));\n const toggle = (id: string) => {\n setExpanded((curr) => {\n const next = new Set(curr);\n if (next.has(id)) next.delete(id); else next.add(id);\n return next;\n });\n };\n return (\n <ul role=\"tree\" className={cx('tree', className)} {...rest}>\n {nodes.map((n) => (\n <TreeNode key={n.id} node={n} depth={0} expanded={expanded} toggle={toggle} selectedId={selectedId} onSelect={onSelect} />\n ))}\n </ul>\n );\n}\n\ninterface TreeNodeProps {\n node: TreeNodeData;\n depth: number;\n expanded: Set<string>;\n toggle: (id: string) => void;\n selectedId?: string;\n onSelect?: (id: string) => void;\n}\n\nfunction TreeNode({ node, depth, expanded, toggle, selectedId, onSelect }: TreeNodeProps) {\n const hasChildren = !!(node.children && node.children.length);\n const isOpen = expanded.has(node.id);\n const isSelected = selectedId === node.id;\n const t = useLocale();\n return (\n <li role=\"treeitem\" aria-expanded={hasChildren ? isOpen : undefined} aria-selected={isSelected} className=\"tree__node\">\n <div\n className={cx('tree__row', isSelected && 'is-selected')}\n style={{ paddingLeft: `calc(var(--space-2) + var(--space-4) * ${depth})` }}\n onClick={() => onSelect?.(node.id)}\n >\n {hasChildren ? (\n <button\n type=\"button\"\n className=\"tree__chev\"\n aria-label={isOpen ? t['calendar.collapse'] : t['calendar.expand']}\n onClick={(e) => { e.stopPropagation(); toggle(node.id); }}\n >\n {isOpen ? <ChevronDown size={14} /> : <ChevronRight size={14} />}\n </button>\n ) : (\n <span className=\"tree__chev tree__chev--placeholder\" aria-hidden=\"true\" />\n )}\n {node.icon && <span className=\"tree__icon\" aria-hidden=\"true\">{node.icon}</span>}\n <span className=\"tree__label\">{node.label}</span>\n {node.meta && <span className=\"tree__meta\">{node.meta}</span>}\n </div>\n {hasChildren && isOpen && (\n <ul role=\"group\" className=\"tree__children\">\n {node.children!.map((c) => (\n <TreeNode key={c.id} node={c} depth={depth + 1} expanded={expanded} toggle={toggle} selectedId={selectedId} onSelect={onSelect} />\n ))}\n </ul>\n )}\n </li>\n );\n}\n\n// ---------- Calendar (vista mes completa, no picker) -------------------\nexport interface CalendarEvent {\n date: Date;\n label: React.ReactNode;\n tone?: StatusTone;\n onClick?: () => void;\n}\n\nexport interface CalendarProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Mes a mostrar. Default: mes actual. */\n month?: Date;\n events?: CalendarEvent[];\n onMonthChange?: (m: Date) => void;\n onDayClick?: (d: Date) => void;\n}\n\nfunction startOfMonth(d: Date) { return new Date(d.getFullYear(), d.getMonth(), 1); }\nfunction addMonths(d: Date, n: number) { return new Date(d.getFullYear(), d.getMonth() + n, 1); }\nfunction isSameDay(a: Date, b: Date) {\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();\n}\n\nexport function Calendar({ month: monthProp, events = [], onMonthChange, onDayClick, className, ...rest }: CalendarProps) {\n const [internalMonth, setInternalMonth] = React.useState(() => startOfMonth(monthProp ?? new Date()));\n const month = monthProp ? startOfMonth(monthProp) : internalMonth;\n const t = useLocale();\n const weekdays = t['calendar.weekdays'];\n const months = t['calendar.months'];\n const setMonth = (m: Date) => {\n if (!monthProp) setInternalMonth(m);\n onMonthChange?.(m);\n };\n\n const today = new Date();\n\n // primer día visible: lunes anterior al primer día del mes\n const firstDay = startOfMonth(month);\n const firstWeekday = (firstDay.getDay() + 6) % 7; // domingo=0 → 6, lunes=1 → 0\n const gridStart = new Date(firstDay);\n gridStart.setDate(firstDay.getDate() - firstWeekday);\n\n const days: Date[] = Array.from({ length: 42 }, (_, i) => {\n const d = new Date(gridStart);\n d.setDate(gridStart.getDate() + i);\n return d;\n });\n\n const eventsByDay = React.useMemo(() => {\n const m = new Map<string, CalendarEvent[]>();\n for (const ev of events) {\n const key = `${ev.date.getFullYear()}-${ev.date.getMonth()}-${ev.date.getDate()}`;\n const list = m.get(key) ?? [];\n list.push(ev);\n m.set(key, list);\n }\n return m;\n }, [events]);\n\n return (\n <div className={cx('calendar', className)} {...rest}>\n <div className=\"calendar__head\">\n <button type=\"button\" className=\"calendar__nav\" aria-label={t['calendar.prevMonth']} onClick={() => setMonth(addMonths(month, -1))}>\n <ChevronRight size={16} style={{ transform: 'rotate(180deg)' }} />\n </button>\n <div className=\"calendar__title\">{months[month.getMonth()]} {month.getFullYear()}</div>\n <button type=\"button\" className=\"calendar__nav\" aria-label={t['calendar.nextMonth']} onClick={() => setMonth(addMonths(month, 1))}>\n <ChevronRight size={16} />\n </button>\n </div>\n <div className=\"calendar__grid calendar__weekdays\">\n {weekdays.map((w) => <div key={w} className=\"calendar__weekday\">{w}</div>)}\n </div>\n <div className=\"calendar__grid\">\n {days.map((d, i) => {\n const inMonth = d.getMonth() === month.getMonth();\n const isToday = isSameDay(d, today);\n const key = `${d.getFullYear()}-${d.getMonth()}-${d.getDate()}`;\n const dayEvents = eventsByDay.get(key) ?? [];\n return (\n <button\n key={i}\n type=\"button\"\n className={cx('calendar__day', !inMonth && 'is-out', isToday && 'is-today')}\n onClick={() => onDayClick?.(d)}\n >\n <span className=\"calendar__daynum\">{d.getDate()}</span>\n {dayEvents.length > 0 && (\n <div className=\"calendar__events\">\n {dayEvents.slice(0, 2).map((ev, idx) => (\n <span\n key={idx}\n className={cx('calendar__event', `calendar__event--${ev.tone ?? 'neutral'}`)}\n onClick={(e) => { e.stopPropagation(); ev.onClick?.(); }}\n >\n {ev.label}\n </span>\n ))}\n {dayEvents.length > 2 && <span className=\"calendar__more\">+{dayEvents.length - 2}</span>}\n </div>\n )}\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n"]}
@@ -0,0 +1,82 @@
1
+ import { cx } from './chunk-IEPCH3JB.mjs';
2
+ import * as React from 'react';
3
+ import { jsx } from 'react/jsx-runtime';
4
+
5
+ var ResizableContext = React.createContext(null);
6
+ function ResizableGroup({ direction = "horizontal", className, children, ariaLabel }) {
7
+ const containerRef = React.useRef(null);
8
+ const [sizes, setSizes] = React.useState({});
9
+ const minsRef = React.useRef({});
10
+ const orderRef = React.useRef([]);
11
+ const registerPanel = React.useCallback((id, defaultSize, minSize) => {
12
+ minsRef.current[id] = minSize;
13
+ setSizes((s) => s[id] !== void 0 ? s : { ...s, [id]: defaultSize });
14
+ if (!orderRef.current.includes(id)) orderRef.current = [...orderRef.current, id];
15
+ }, []);
16
+ const startDrag = (panelId, e) => {
17
+ e.preventDefault();
18
+ const idx = orderRef.current.indexOf(panelId);
19
+ const nextId = orderRef.current[idx + 1];
20
+ if (!nextId || !containerRef.current) return;
21
+ const rect = containerRef.current.getBoundingClientRect();
22
+ const total = direction === "horizontal" ? rect.width : rect.height;
23
+ const startSize = sizes[panelId] ?? 0;
24
+ const startNextSize = sizes[nextId] ?? 0;
25
+ const startCoord = direction === "horizontal" ? e.clientX : e.clientY;
26
+ const onMove = (ev) => {
27
+ const coord = direction === "horizontal" ? ev.clientX : ev.clientY;
28
+ const deltaPx = coord - startCoord;
29
+ const deltaPct = deltaPx / total * 100;
30
+ const minA = minsRef.current[panelId] ?? 5;
31
+ const minB = minsRef.current[nextId] ?? 5;
32
+ const newA = Math.max(minA, Math.min(startSize + startNextSize - minB, startSize + deltaPct));
33
+ const newB = startSize + startNextSize - newA;
34
+ setSizes((s) => ({ ...s, [panelId]: newA, [nextId]: newB }));
35
+ };
36
+ const onUp = () => {
37
+ window.removeEventListener("pointermove", onMove);
38
+ window.removeEventListener("pointerup", onUp);
39
+ };
40
+ window.addEventListener("pointermove", onMove);
41
+ window.addEventListener("pointerup", onUp);
42
+ };
43
+ return /* @__PURE__ */ jsx(ResizableContext.Provider, { value: { direction, registerPanel, sizes, startDrag }, children: /* @__PURE__ */ jsx(
44
+ "div",
45
+ {
46
+ ref: containerRef,
47
+ role: "group",
48
+ "aria-label": ariaLabel,
49
+ className: cx("resizable", `resizable--${direction}`, className),
50
+ children
51
+ }
52
+ ) });
53
+ }
54
+ function ResizablePanel({ id, defaultSize = 50, minSize = 10, className, children }) {
55
+ const ctx = React.useContext(ResizableContext);
56
+ if (!ctx) throw new Error("ResizablePanel must be inside ResizableGroup");
57
+ React.useEffect(() => {
58
+ ctx.registerPanel(id, defaultSize, minSize);
59
+ }, [id, defaultSize, minSize, ctx]);
60
+ const size = ctx.sizes[id] ?? defaultSize;
61
+ const sizeStyle = ctx.direction === "horizontal" ? { width: `${size}%` } : { height: `${size}%` };
62
+ return /* @__PURE__ */ jsx("div", { className: cx("resizable__panel", className), style: sizeStyle, children });
63
+ }
64
+ function ResizableHandle({ panelId, className, ariaLabel = "Redimensionar" }) {
65
+ const ctx = React.useContext(ResizableContext);
66
+ if (!ctx) throw new Error("ResizableHandle must be inside ResizableGroup");
67
+ return /* @__PURE__ */ jsx(
68
+ "div",
69
+ {
70
+ role: "separator",
71
+ tabIndex: 0,
72
+ "aria-orientation": ctx.direction === "horizontal" ? "vertical" : "horizontal",
73
+ "aria-label": ariaLabel,
74
+ className: cx("resizable__handle", `resizable__handle--${ctx.direction}`, className),
75
+ onPointerDown: (e) => ctx.startDrag(panelId, e)
76
+ }
77
+ );
78
+ }
79
+
80
+ export { ResizableGroup, ResizableHandle, ResizablePanel };
81
+ //# sourceMappingURL=chunk-ML5IYW5D.mjs.map
82
+ //# sourceMappingURL=chunk-ML5IYW5D.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Resizable.tsx"],"names":[],"mappings":"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","file":"chunk-ML5IYW5D.mjs","sourcesContent":["'use client';\nimport * as React from 'react';\nimport { cx } from '../utils/cx';\n\nexport type ResizableDirection = 'horizontal' | 'vertical';\n\ninterface ResizableContextValue {\n direction: ResizableDirection;\n registerPanel: (id: string, defaultSize: number, minSize: number) => void;\n sizes: Record<string, number>;\n startDrag: (panelId: string, e: React.PointerEvent) => void;\n}\nconst ResizableContext = React.createContext<ResizableContextValue | null>(null);\n\nexport interface ResizableGroupProps {\n direction?: ResizableDirection;\n className?: string;\n children: React.ReactNode;\n ariaLabel?: string;\n}\n\nexport function ResizableGroup({ direction = 'horizontal', className, children, ariaLabel }: ResizableGroupProps) {\n const containerRef = React.useRef<HTMLDivElement>(null);\n const [sizes, setSizes] = React.useState<Record<string, number>>({});\n const minsRef = React.useRef<Record<string, number>>({});\n const orderRef = React.useRef<string[]>([]);\n\n const registerPanel = React.useCallback((id: string, defaultSize: number, minSize: number) => {\n minsRef.current[id] = minSize;\n setSizes((s) => (s[id] !== undefined ? s : { ...s, [id]: defaultSize }));\n if (!orderRef.current.includes(id)) orderRef.current = [...orderRef.current, id];\n }, []);\n\n const startDrag = (panelId: string, e: React.PointerEvent) => {\n e.preventDefault();\n const idx = orderRef.current.indexOf(panelId);\n const nextId = orderRef.current[idx + 1];\n if (!nextId || !containerRef.current) return;\n\n const rect = containerRef.current.getBoundingClientRect();\n const total = direction === 'horizontal' ? rect.width : rect.height;\n const startSize = sizes[panelId] ?? 0;\n const startNextSize = sizes[nextId] ?? 0;\n const startCoord = direction === 'horizontal' ? e.clientX : e.clientY;\n\n const onMove = (ev: PointerEvent) => {\n const coord = direction === 'horizontal' ? ev.clientX : ev.clientY;\n const deltaPx = coord - startCoord;\n const deltaPct = (deltaPx / total) * 100;\n const minA = minsRef.current[panelId] ?? 5;\n const minB = minsRef.current[nextId] ?? 5;\n const newA = Math.max(minA, Math.min(startSize + startNextSize - minB, startSize + deltaPct));\n const newB = startSize + startNextSize - newA;\n setSizes((s) => ({ ...s, [panelId]: newA, [nextId]: newB }));\n };\n const onUp = () => {\n window.removeEventListener('pointermove', onMove);\n window.removeEventListener('pointerup', onUp);\n };\n window.addEventListener('pointermove', onMove);\n window.addEventListener('pointerup', onUp);\n };\n\n return (\n <ResizableContext.Provider value={{ direction, registerPanel, sizes, startDrag }}>\n <div\n ref={containerRef}\n role=\"group\"\n aria-label={ariaLabel}\n className={cx('resizable', `resizable--${direction}`, className)}\n >\n {children}\n </div>\n </ResizableContext.Provider>\n );\n}\n\nexport interface ResizablePanelProps {\n id: string;\n defaultSize?: number;\n minSize?: number;\n className?: string;\n children: React.ReactNode;\n}\n\nexport function ResizablePanel({ id, defaultSize = 50, minSize = 10, className, children }: ResizablePanelProps) {\n const ctx = React.useContext(ResizableContext);\n if (!ctx) throw new Error('ResizablePanel must be inside ResizableGroup');\n\n React.useEffect(() => {\n ctx.registerPanel(id, defaultSize, minSize);\n }, [id, defaultSize, minSize, ctx]);\n\n const size = ctx.sizes[id] ?? defaultSize;\n const sizeStyle =\n ctx.direction === 'horizontal' ? { width: `${size}%` } : { height: `${size}%` };\n\n return (\n <div className={cx('resizable__panel', className)} style={sizeStyle}>\n {children}\n </div>\n );\n}\n\nexport interface ResizableHandleProps {\n panelId: string;\n className?: string;\n ariaLabel?: string;\n}\n\nexport function ResizableHandle({ panelId, className, ariaLabel = 'Redimensionar' }: ResizableHandleProps) {\n const ctx = React.useContext(ResizableContext);\n if (!ctx) throw new Error('ResizableHandle must be inside ResizableGroup');\n return (\n <div\n role=\"separator\"\n tabIndex={0}\n aria-orientation={ctx.direction === 'horizontal' ? 'vertical' : 'horizontal'}\n aria-label={ariaLabel}\n className={cx('resizable__handle', `resizable__handle--${ctx.direction}`, className)}\n onPointerDown={(e) => ctx.startDrag(panelId, e)}\n />\n );\n}\n"]}
@@ -0,0 +1,88 @@
1
+ import { cx } from './chunk-IEPCH3JB.mjs';
2
+ import * as React from 'react';
3
+ import { createPortal } from 'react-dom';
4
+ import { jsx, jsxs } from 'react/jsx-runtime';
5
+
6
+ function HoverCard({
7
+ trigger,
8
+ children,
9
+ placement = "bottom",
10
+ openDelay = 250,
11
+ closeDelay = 150,
12
+ offset = 8,
13
+ className,
14
+ contentClassName
15
+ }) {
16
+ const [open, setOpen] = React.useState(false);
17
+ const [coords, setCoords] = React.useState(null);
18
+ const triggerRef = React.useRef(null);
19
+ const contentRef = React.useRef(null);
20
+ const openTimer = React.useRef(null);
21
+ const closeTimer = React.useRef(null);
22
+ const clear = () => {
23
+ if (openTimer.current) clearTimeout(openTimer.current);
24
+ if (closeTimer.current) clearTimeout(closeTimer.current);
25
+ };
26
+ const onEnter = () => {
27
+ clear();
28
+ openTimer.current = setTimeout(() => setOpen(true), openDelay);
29
+ };
30
+ const onLeave = () => {
31
+ clear();
32
+ closeTimer.current = setTimeout(() => setOpen(false), closeDelay);
33
+ };
34
+ React.useEffect(() => () => clear(), []);
35
+ React.useEffect(() => {
36
+ if (!open || !triggerRef.current || !contentRef.current) return;
37
+ const t = triggerRef.current.getBoundingClientRect();
38
+ const c = contentRef.current.getBoundingClientRect();
39
+ let top = 0;
40
+ let left = 0;
41
+ if (placement === "bottom") {
42
+ top = t.bottom + offset;
43
+ left = t.left + (t.width - c.width) / 2;
44
+ } else if (placement === "top") {
45
+ top = t.top - c.height - offset;
46
+ left = t.left + (t.width - c.width) / 2;
47
+ } else if (placement === "right") {
48
+ left = t.right + offset;
49
+ top = t.top + (t.height - c.height) / 2;
50
+ } else {
51
+ left = t.left - c.width - offset;
52
+ top = t.top + (t.height - c.height) / 2;
53
+ }
54
+ left = Math.max(8, Math.min(left, window.innerWidth - c.width - 8));
55
+ top = Math.max(8, Math.min(top, window.innerHeight - c.height - 8));
56
+ setCoords({ top: top + window.scrollY, left: left + window.scrollX });
57
+ }, [open, placement, offset]);
58
+ const panel = open && /* @__PURE__ */ jsx(
59
+ "div",
60
+ {
61
+ ref: contentRef,
62
+ role: "tooltip",
63
+ className: cx("hover-card__content", contentClassName),
64
+ style: coords ? { position: "absolute", top: coords.top, left: coords.left } : { position: "absolute", visibility: "hidden" },
65
+ onMouseEnter: onEnter,
66
+ onMouseLeave: onLeave,
67
+ children
68
+ }
69
+ );
70
+ return /* @__PURE__ */ jsxs(
71
+ "span",
72
+ {
73
+ className: cx("hover-card", className),
74
+ onMouseEnter: onEnter,
75
+ onMouseLeave: onLeave,
76
+ onFocus: onEnter,
77
+ onBlur: onLeave,
78
+ children: [
79
+ /* @__PURE__ */ jsx("span", { ref: triggerRef, className: "hover-card__trigger", children: trigger }),
80
+ panel && typeof document !== "undefined" && createPortal(panel, document.body)
81
+ ]
82
+ }
83
+ );
84
+ }
85
+
86
+ export { HoverCard };
87
+ //# sourceMappingURL=chunk-NLCKWF3Y.mjs.map
88
+ //# sourceMappingURL=chunk-NLCKWF3Y.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/HoverCard.tsx"],"names":[],"mappings":";;;;;AAkBO,SAAS,SAAA,CAAU;AAAA,EACxB,OAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA,GAAY,QAAA;AAAA,EACZ,SAAA,GAAY,GAAA;AAAA,EACZ,UAAA,GAAa,GAAA;AAAA,EACb,MAAA,GAAS,CAAA;AAAA,EACT,SAAA;AAAA,EACA;AACF,CAAA,EAAmB;AACjB,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAU,eAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAU,eAA+C,IAAI,CAAA;AACrF,EAAA,MAAM,UAAA,GAAmB,aAAwB,IAAI,CAAA;AACrD,EAAA,MAAM,UAAA,GAAmB,aAAuB,IAAI,CAAA;AACpD,EAAA,MAAM,SAAA,GAAkB,aAA6C,IAAI,CAAA;AACzE,EAAA,MAAM,UAAA,GAAmB,aAA6C,IAAI,CAAA;AAE1E,EAAA,MAAM,QAAQ,MAAM;AAClB,IAAA,IAAI,SAAA,CAAU,OAAA,EAAS,YAAA,CAAa,SAAA,CAAU,OAAO,CAAA;AACrD,IAAA,IAAI,UAAA,CAAW,OAAA,EAAS,YAAA,CAAa,UAAA,CAAW,OAAO,CAAA;AAAA,EACzD,CAAA;AAEA,EAAA,MAAM,UAAU,MAAM;AACpB,IAAA,KAAA,EAAM;AACN,IAAA,SAAA,CAAU,UAAU,UAAA,CAAW,MAAM,OAAA,CAAQ,IAAI,GAAG,SAAS,CAAA;AAAA,EAC/D,CAAA;AACA,EAAA,MAAM,UAAU,MAAM;AACpB,IAAA,KAAA,EAAM;AACN,IAAA,UAAA,CAAW,UAAU,UAAA,CAAW,MAAM,OAAA,CAAQ,KAAK,GAAG,UAAU,CAAA;AAAA,EAClE,CAAA;AAEA,EAAM,gBAAU,MAAM,MAAM,KAAA,EAAM,EAAG,EAAE,CAAA;AAEvC,EAAM,gBAAU,MAAM;AACpB,IAAA,IAAI,CAAC,IAAA,IAAQ,CAAC,WAAW,OAAA,IAAW,CAAC,WAAW,OAAA,EAAS;AACzD,IAAA,MAAM,CAAA,GAAI,UAAA,CAAW,OAAA,CAAQ,qBAAA,EAAsB;AACnD,IAAA,MAAM,CAAA,GAAI,UAAA,CAAW,OAAA,CAAQ,qBAAA,EAAsB;AACnD,IAAA,IAAI,GAAA,GAAM,CAAA;AACV,IAAA,IAAI,IAAA,GAAO,CAAA;AACX,IAAA,IAAI,cAAc,QAAA,EAAU;AAAE,MAAA,GAAA,GAAM,EAAE,MAAA,GAAS,MAAA;AAAQ,MAAA,IAAA,GAAO,CAAA,CAAE,IAAA,GAAA,CAAQ,CAAA,CAAE,KAAA,GAAQ,EAAE,KAAA,IAAS,CAAA;AAAA,IAAG,CAAA,MAAA,IACvF,cAAc,KAAA,EAAO;AAAE,MAAA,GAAA,GAAM,CAAA,CAAE,GAAA,GAAM,CAAA,CAAE,MAAA,GAAS,MAAA;AAAQ,MAAA,IAAA,GAAO,CAAA,CAAE,IAAA,GAAA,CAAQ,CAAA,CAAE,KAAA,GAAQ,EAAE,KAAA,IAAS,CAAA;AAAA,IAAG,CAAA,MAAA,IACjG,cAAc,OAAA,EAAS;AAAE,MAAA,IAAA,GAAO,EAAE,KAAA,GAAQ,MAAA;AAAQ,MAAA,GAAA,GAAM,CAAA,CAAE,GAAA,GAAA,CAAO,CAAA,CAAE,MAAA,GAAS,EAAE,MAAA,IAAU,CAAA;AAAA,IAAG,CAAA,MAC/F;AAAE,MAAA,IAAA,GAAO,CAAA,CAAE,IAAA,GAAO,CAAA,CAAE,KAAA,GAAQ,MAAA;AAAQ,MAAA,GAAA,GAAM,CAAA,CAAE,GAAA,GAAA,CAAO,CAAA,CAAE,MAAA,GAAS,EAAE,MAAA,IAAU,CAAA;AAAA,IAAG;AAClF,IAAA,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,IAAA,EAAM,MAAA,CAAO,UAAA,GAAa,CAAA,CAAE,KAAA,GAAQ,CAAC,CAAC,CAAA;AAClE,IAAA,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,MAAA,CAAO,WAAA,GAAc,CAAA,CAAE,MAAA,GAAS,CAAC,CAAC,CAAA;AAClE,IAAA,SAAA,CAAU,EAAE,KAAK,GAAA,GAAM,MAAA,CAAO,SAAS,IAAA,EAAM,IAAA,GAAO,MAAA,CAAO,OAAA,EAAS,CAAA;AAAA,EACtE,CAAA,EAAG,CAAC,IAAA,EAAM,SAAA,EAAW,MAAM,CAAC,CAAA;AAE5B,EAAA,MAAM,QAAQ,IAAA,oBACZ,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,UAAA;AAAA,MACL,IAAA,EAAK,SAAA;AAAA,MACL,SAAA,EAAW,EAAA,CAAG,qBAAA,EAAuB,gBAAgB,CAAA;AAAA,MACrD,OAAO,MAAA,GAAS,EAAE,QAAA,EAAU,UAAA,EAAY,KAAK,MAAA,CAAO,GAAA,EAAK,IAAA,EAAM,MAAA,CAAO,MAAK,GAAI,EAAE,QAAA,EAAU,UAAA,EAAY,YAAY,QAAA,EAAS;AAAA,MAC5H,YAAA,EAAc,OAAA;AAAA,MACd,YAAA,EAAc,OAAA;AAAA,MAEb;AAAA;AAAA,GACH;AAGF,EAAA,uBACE,IAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,YAAA,EAAc,SAAS,CAAA;AAAA,MACrC,YAAA,EAAc,OAAA;AAAA,MACd,YAAA,EAAc,OAAA;AAAA,MACd,OAAA,EAAS,OAAA;AAAA,MACT,MAAA,EAAQ,OAAA;AAAA,MAER,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,GAAA,EAAK,UAAA,EAAY,SAAA,EAAU,uBAAuB,QAAA,EAAA,OAAA,EAAQ,CAAA;AAAA,QAC/D,SAAS,OAAO,QAAA,KAAa,eAAe,YAAA,CAAa,KAAA,EAAO,SAAS,IAAI;AAAA;AAAA;AAAA,GAChF;AAEJ","file":"chunk-NLCKWF3Y.mjs","sourcesContent":["'use client';\nimport * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport { cx } from '../utils/cx';\n\nexport type HoverCardPlacement = 'top' | 'bottom' | 'left' | 'right';\n\nexport interface HoverCardProps {\n trigger: React.ReactNode;\n children: React.ReactNode;\n placement?: HoverCardPlacement;\n openDelay?: number;\n closeDelay?: number;\n offset?: number;\n className?: string;\n contentClassName?: string;\n}\n\nexport function HoverCard({\n trigger,\n children,\n placement = 'bottom',\n openDelay = 250,\n closeDelay = 150,\n offset = 8,\n className,\n contentClassName,\n}: HoverCardProps) {\n const [open, setOpen] = React.useState(false);\n const [coords, setCoords] = React.useState<{ top: number; left: number } | null>(null);\n const triggerRef = React.useRef<HTMLSpanElement>(null);\n const contentRef = React.useRef<HTMLDivElement>(null);\n const openTimer = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n const closeTimer = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const clear = () => {\n if (openTimer.current) clearTimeout(openTimer.current);\n if (closeTimer.current) clearTimeout(closeTimer.current);\n };\n\n const onEnter = () => {\n clear();\n openTimer.current = setTimeout(() => setOpen(true), openDelay);\n };\n const onLeave = () => {\n clear();\n closeTimer.current = setTimeout(() => setOpen(false), closeDelay);\n };\n\n React.useEffect(() => () => clear(), []);\n\n React.useEffect(() => {\n if (!open || !triggerRef.current || !contentRef.current) return;\n const t = triggerRef.current.getBoundingClientRect();\n const c = contentRef.current.getBoundingClientRect();\n let top = 0;\n let left = 0;\n if (placement === 'bottom') { top = t.bottom + offset; left = t.left + (t.width - c.width) / 2; }\n else if (placement === 'top') { top = t.top - c.height - offset; left = t.left + (t.width - c.width) / 2; }\n else if (placement === 'right') { left = t.right + offset; top = t.top + (t.height - c.height) / 2; }\n else { left = t.left - c.width - offset; top = t.top + (t.height - c.height) / 2; }\n left = Math.max(8, Math.min(left, window.innerWidth - c.width - 8));\n top = Math.max(8, Math.min(top, window.innerHeight - c.height - 8));\n setCoords({ top: top + window.scrollY, left: left + window.scrollX });\n }, [open, placement, offset]);\n\n const panel = open && (\n <div\n ref={contentRef}\n role=\"tooltip\"\n className={cx('hover-card__content', contentClassName)}\n style={coords ? { position: 'absolute', top: coords.top, left: coords.left } : { position: 'absolute', visibility: 'hidden' }}\n onMouseEnter={onEnter}\n onMouseLeave={onLeave}\n >\n {children}\n </div>\n );\n\n return (\n <span\n className={cx('hover-card', className)}\n onMouseEnter={onEnter}\n onMouseLeave={onLeave}\n onFocus={onEnter}\n onBlur={onLeave}\n >\n <span ref={triggerRef} className=\"hover-card__trigger\">{trigger}</span>\n {panel && typeof document !== 'undefined' && createPortal(panel, document.body)}\n </span>\n );\n}\n"]}
@@ -0,0 +1,86 @@
1
+ 'use strict';
2
+
3
+ var chunk3PXYCXDW_js = require('./chunk-3PXYCXDW.js');
4
+ var chunkPASF6T4H_js = require('./chunk-PASF6T4H.js');
5
+ var React = require('react');
6
+ var jsxRuntime = require('react/jsx-runtime');
7
+
8
+ function _interopNamespace(e) {
9
+ if (e && e.__esModule) return e;
10
+ var n = Object.create(null);
11
+ if (e) {
12
+ Object.keys(e).forEach(function (k) {
13
+ if (k !== 'default') {
14
+ var d = Object.getOwnPropertyDescriptor(e, k);
15
+ Object.defineProperty(n, k, d.get ? d : {
16
+ enumerable: true,
17
+ get: function () { return e[k]; }
18
+ });
19
+ }
20
+ });
21
+ }
22
+ n.default = e;
23
+ return Object.freeze(n);
24
+ }
25
+
26
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
27
+
28
+ var PREFERRED_FORMAT = {
29
+ horizontal: "svg",
30
+ vertical: "svg",
31
+ mark: "svg",
32
+ wordmark: "svg"
33
+ };
34
+ var DEFAULT_HEIGHT = {
35
+ horizontal: 32,
36
+ vertical: 64,
37
+ mark: 32,
38
+ wordmark: 28
39
+ };
40
+ function buildPath(variant, bg, format, basePath) {
41
+ const prefix = variant === "horizontal" || variant === "vertical" ? "logo-" : "";
42
+ return `${basePath}/${prefix}${variant}-${bg}.${format}`;
43
+ }
44
+ var Logo = React__namespace.forwardRef(function Logo2({
45
+ variant = "mark",
46
+ bg = "light",
47
+ format,
48
+ responsive,
49
+ basePath,
50
+ height,
51
+ alt,
52
+ brandName,
53
+ className,
54
+ ...rest
55
+ }, ref) {
56
+ const brand = chunk3PXYCXDW_js.getBrand();
57
+ const resolvedBasePath = basePath ?? brand.logoBasePath;
58
+ const resolvedBrandName = brandName ?? brand.name;
59
+ const fmt = format ?? PREFERRED_FORMAT[variant];
60
+ const h = height ?? DEFAULT_HEIGHT[variant];
61
+ const a = alt ?? resolvedBrandName;
62
+ const desktopSrc = buildPath(variant, bg, fmt, resolvedBasePath);
63
+ if (responsive && variant !== "mark") {
64
+ const mobileFmt = format ?? PREFERRED_FORMAT.mark;
65
+ const mobileSrc = buildPath("mark", bg, mobileFmt, resolvedBasePath);
66
+ return /* @__PURE__ */ jsxRuntime.jsxs("picture", { className: chunkPASF6T4H_js.cx("logo", className), children: [
67
+ /* @__PURE__ */ jsxRuntime.jsx("source", { media: "(min-width: 768px)", srcSet: desktopSrc }),
68
+ /* @__PURE__ */ jsxRuntime.jsx("img", { ref, src: mobileSrc, alt: a, height: h, ...rest })
69
+ ] });
70
+ }
71
+ return /* @__PURE__ */ jsxRuntime.jsx(
72
+ "img",
73
+ {
74
+ ref,
75
+ src: desktopSrc,
76
+ alt: a,
77
+ height: h,
78
+ className: chunkPASF6T4H_js.cx("logo", className),
79
+ ...rest
80
+ }
81
+ );
82
+ });
83
+
84
+ exports.Logo = Logo;
85
+ //# sourceMappingURL=chunk-NU4GAGUV.js.map
86
+ //# sourceMappingURL=chunk-NU4GAGUV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Logo.tsx"],"names":["React","Logo","getBrand","cx","jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,IAAM,gBAAA,GAAoD;AAAA,EACxD,UAAA,EAAY,KAAA;AAAA,EACZ,QAAA,EAAU,KAAA;AAAA,EACV,IAAA,EAAM,KAAA;AAAA,EACN,QAAA,EAAU;AACZ,CAAA;AAGA,IAAM,cAAA,GAA8C;AAAA,EAClD,UAAA,EAAY,EAAA;AAAA,EACZ,QAAA,EAAU,EAAA;AAAA,EACV,IAAA,EAAM,EAAA;AAAA,EACN,QAAA,EAAU;AACZ,CAAA;AAEA,SAAS,SAAA,CACP,OAAA,EACA,EAAA,EACA,MAAA,EACA,QAAA,EACA;AACA,EAAA,MAAM,MAAA,GAAS,OAAA,KAAY,YAAA,IAAgB,OAAA,KAAY,aAAa,OAAA,GAAU,EAAA;AAC9E,EAAA,OAAO,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,MAAM,GAAG,OAAO,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA;AACxD;AAiCO,IAAM,IAAA,GAAaA,gBAAA,CAAA,UAAA,CAAwC,SAASC,KAAAA,CACzE;AAAA,EACE,OAAA,GAAU,MAAA;AAAA,EACV,EAAA,GAAK,OAAA;AAAA,EACL,MAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,GAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,QAAQC,yBAAA,EAAS;AACvB,EAAA,MAAM,gBAAA,GAAmB,YAAY,KAAA,CAAM,YAAA;AAC3C,EAAA,MAAM,iBAAA,GAAoB,aAAa,KAAA,CAAM,IAAA;AAC7C,EAAA,MAAM,GAAA,GAAM,MAAA,IAAU,gBAAA,CAAiB,OAAO,CAAA;AAC9C,EAAA,MAAM,CAAA,GAAI,MAAA,IAAU,cAAA,CAAe,OAAO,CAAA;AAC1C,EAAA,MAAM,IAAI,GAAA,IAAO,iBAAA;AACjB,EAAA,MAAM,UAAA,GAAa,SAAA,CAAU,OAAA,EAAS,EAAA,EAAI,KAAK,gBAAgB,CAAA;AAE/D,EAAA,IAAI,UAAA,IAAc,YAAY,MAAA,EAAQ;AACpC,IAAA,MAAM,SAAA,GAAY,UAAU,gBAAA,CAAiB,IAAA;AAC7C,IAAA,MAAM,SAAA,GAAY,SAAA,CAAU,MAAA,EAAQ,EAAA,EAAI,WAAW,gBAAgB,CAAA;AACnE,IAAA,uCACG,SAAA,EAAA,EAAQ,SAAA,EAAWC,mBAAA,CAAG,MAAA,EAAQ,SAAS,CAAA,EACtC,QAAA,EAAA;AAAA,sBAAAC,cAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,oBAAA,EAAqB,MAAA,EAAQ,UAAA,EAAY,CAAA;AAAA,sBACvDA,cAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,GAAA,EAAK,SAAA,EAAW,KAAK,CAAA,EAAG,MAAA,EAAQ,CAAA,EAAI,GAAG,IAAA,EAAM;AAAA,KAAA,EAC9D,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEA,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,GAAA,EAAK,UAAA;AAAA,MACL,GAAA,EAAK,CAAA;AAAA,MACL,MAAA,EAAQ,CAAA;AAAA,MACR,SAAA,EAAWD,mBAAA,CAAG,MAAA,EAAQ,SAAS,CAAA;AAAA,MAC9B,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC","file":"chunk-NU4GAGUV.js","sourcesContent":["import * as React from 'react';\nimport { cx } from '../utils/cx';\nimport { getBrand } from '../brand';\n\nexport type LogoVariant = 'horizontal' | 'vertical' | 'mark' | 'wordmark';\nexport type LogoBg = 'light' | 'dark';\nexport type LogoFormat = 'svg' | 'png';\n\n/** Formato preferido por variante. SVG en todas las variantes (mejor escalado y peso). */\nconst PREFERRED_FORMAT: Record<LogoVariant, LogoFormat> = {\n horizontal: 'svg',\n vertical: 'svg',\n mark: 'svg',\n wordmark: 'svg',\n};\n\n/** Altura razonable por defecto según la forma de la variante. */\nconst DEFAULT_HEIGHT: Record<LogoVariant, number> = {\n horizontal: 32,\n vertical: 64,\n mark: 32,\n wordmark: 28,\n};\n\nfunction buildPath(\n variant: LogoVariant,\n bg: LogoBg,\n format: LogoFormat,\n basePath: string\n) {\n const prefix = variant === 'horizontal' || variant === 'vertical' ? 'logo-' : '';\n return `${basePath}/${prefix}${variant}-${bg}.${format}`;\n}\n\nexport interface LogoProps extends Omit<React.ImgHTMLAttributes<HTMLImageElement>, 'src'> {\n /** Forma del logo. Default: `mark` (isotipo). */\n variant?: LogoVariant;\n /** Color del fondo donde se va a pintar. Define si usar la versión normal o invertida. Default: `light`. */\n bg?: LogoBg;\n /** Forza el formato (svg|png). Por defecto se usa el preferido por variante. */\n format?: LogoFormat;\n /**\n * Si `true`, usa `mark` en mobile (<768px) y `variant` en desktop.\n * Útil para AppShell / topbars / headers que se vuelven angostos.\n */\n responsive?: boolean;\n /** Base URL donde están los assets. Default desde `getBrand().logoBasePath`. */\n basePath?: string;\n /** Altura en px. Default depende de la variante (mark: 32, horizontal: 32, vertical: 64, wordmark: 28). */\n height?: number;\n /** Texto alternativo (a11y). Default: el `brandName`. */\n alt?: string;\n /** Nombre de la marca; fallback de `alt`. Default desde `getBrand().name`. */\n brandName?: string;\n}\n\n/**\n * Componente Logo unificado para todas las variantes (horizontal, vertical, mark, wordmark)\n * con soporte responsive (`mark` en mobile, variante elegida en desktop).\n *\n * @example\n * <Logo variant=\"horizontal\" bg=\"light\" />\n * <Logo responsive variant=\"horizontal\" bg=\"light\" /> // mark en mobile, horizontal en desktop\n * <Logo variant=\"mark\" bg=\"dark\" height={48} />\n */\nexport const Logo = React.forwardRef<HTMLImageElement, LogoProps>(function Logo(\n {\n variant = 'mark',\n bg = 'light',\n format,\n responsive,\n basePath,\n height,\n alt,\n brandName,\n className,\n ...rest\n },\n ref\n) {\n const brand = getBrand();\n const resolvedBasePath = basePath ?? brand.logoBasePath;\n const resolvedBrandName = brandName ?? brand.name;\n const fmt = format ?? PREFERRED_FORMAT[variant];\n const h = height ?? DEFAULT_HEIGHT[variant];\n const a = alt ?? resolvedBrandName;\n const desktopSrc = buildPath(variant, bg, fmt, resolvedBasePath);\n\n if (responsive && variant !== 'mark') {\n const mobileFmt = format ?? PREFERRED_FORMAT.mark;\n const mobileSrc = buildPath('mark', bg, mobileFmt, resolvedBasePath);\n return (\n <picture className={cx('logo', className)}>\n <source media=\"(min-width: 768px)\" srcSet={desktopSrc} />\n <img ref={ref} src={mobileSrc} alt={a} height={h} {...rest} />\n </picture>\n );\n }\n\n return (\n <img\n ref={ref}\n src={desktopSrc}\n alt={a}\n height={h}\n className={cx('logo', className)}\n {...rest}\n />\n );\n});\n"]}