@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
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Misael Ocas
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,462 @@
1
+ # @misael703/ui
2
+
3
+ UI Kit React + TypeScript multi-marca, optimizado para Next.js (App Router).
4
+
5
+ Incluye tokens (colores, tipografía, espacio, radii, sombras, motion) y componentes accesibles para producto, admin, POS, dashboards y e-commerce. Diseñado para reusarse en múltiples marcas: la identidad visual (colores, fuentes, logos, defaults de marca) se configura en runtime, sin tocar el código del kit.
6
+
7
+ > **Brand-neutral por diseño**: el primer consumer de este kit es **El Alba / Patio Constructor**, pero el paquete sirve a cualquier marca vía `configureBrand()`. Si necesitas un paquete completamente independiente con otra cara, ver la sección [Forking / Rebrand](#forking--rebrand).
8
+
9
+ ---
10
+
11
+ ## Instalación
12
+
13
+ El paquete está publicado en **npm público** ([registry.npmjs.org](https://www.npmjs.com/package/@misael703/ui)) bajo licencia MIT. No requiere autenticación.
14
+
15
+ ```bash
16
+ npm install @misael703/ui
17
+ # pares
18
+ npm install react react-dom
19
+ ```
20
+
21
+ ### Actualizar a una nueva versión
22
+
23
+ ```bash
24
+ npm outdated @misael703/ui # ver si hay versión nueva
25
+ npm update @misael703/ui # sube hasta donde el rango permite
26
+ npm install @misael703/ui@latest # fuerza la última (ignora rango)
27
+ npm install @misael703/ui@0.2.1 # fija una versión específica
28
+ ```
29
+
30
+ > Desde `1.0.0` el paquete sigue [SemVer](https://semver.org/) estable: los `breaking changes` solo ocurren en bumps `major`. Lee las [release notes](https://github.com/Misael703/ui/releases) o el [CHANGELOG](./CHANGELOG.md) antes de subir de major.
31
+
32
+ ### Migrando desde `@misael703/elalba-ui`
33
+
34
+ `@misael703/ui` es el sucesor renombrado y genérico. El kit ya **no** trae los colores de El Alba por defecto — ahora es un preset opt-in:
35
+
36
+ ```ts
37
+ import '@misael703/ui/styles.css';
38
+ import '@misael703/ui/presets/elalba'; // paleta El Alba
39
+ import { elalbaDefaults } from '@misael703/ui/presets/elalba-defaults';
40
+ configureBrand(elalbaDefaults); // CLP / es-CL / "El Alba"
41
+ // Logos: @misael703/ui/presets/elalba-logos/<variant>-<bg>.svg
42
+ ```
43
+
44
+ Con el preset el render es idéntico a `elalba-ui@0.7.1` salvo el mapping de botones (`.btn--primary` ahora usa el color primario, no el secundario). Guía completa en el [CHANGELOG → 1.0.0](./CHANGELOG.md).
45
+
46
+ ## Uso en Next.js (App Router)
47
+
48
+ **1) Importa los estilos en `app/layout.tsx` (una sola vez):**
49
+
50
+ ```tsx
51
+ import '@misael703/ui/styles.css';
52
+ import { ToastProvider } from '@misael703/ui';
53
+
54
+ export default function RootLayout({ children }: { children: React.ReactNode }) {
55
+ return (
56
+ <html lang="es">
57
+ <body>
58
+ <ToastProvider>{children}</ToastProvider>
59
+ </body>
60
+ </html>
61
+ );
62
+ }
63
+ ```
64
+
65
+ **2) Usa los componentes:**
66
+
67
+ ```tsx
68
+ import {
69
+ Button, Card, CardBody, CardHeader,
70
+ Input, FormField, Badge, Alert,
71
+ Modal, Drawer, Tabs, TabList, Tab, TabPanel,
72
+ Stepper, useToast,
73
+ } from '@misael703/ui';
74
+
75
+ export function NewOrder() {
76
+ const { push } = useToast();
77
+ return (
78
+ <Card>
79
+ <CardHeader>Nuevo pedido <Badge variant="success">Activo</Badge></CardHeader>
80
+ <CardBody>
81
+ {/* FormField genera automáticamente el id del input y enlaza
82
+ label/aria-describedby con hint y error. */}
83
+ <FormField label="SKU" required hint="Ej. ELT-12-AC">
84
+ <Input placeholder="SKU del producto" />
85
+ </FormField>
86
+ <Button onClick={() => push({ title: 'Guardado', variant: 'success' })}>
87
+ Guardar
88
+ </Button>
89
+ </CardBody>
90
+ </Card>
91
+ );
92
+ }
93
+ ```
94
+
95
+ ---
96
+
97
+ ## Interop con Tailwind (u otro reset global)
98
+
99
+ El kit envuelve sus estilos en `@layer elalba` para que tus reglas no-layered (tu propio CSS o el de tu framework) ganen siempre por encima — así podés override-ear cualquier componente sin pelear con especificidad.
100
+
101
+ El reverso: **si tu reset global no está en un layer, gana sobre el kit**. El caso más común es Tailwind v3+ con `preflight` habilitado, que aplica:
102
+
103
+ ```css
104
+ *, ::before, ::after {
105
+ border-width: 0;
106
+ border-style: solid;
107
+ border-color: ...;
108
+ }
109
+ ```
110
+
111
+ …fuera de cualquier `@layer`. Como resultado, una regla del kit del tipo `border-left-width: 4px` (que vive dentro de `@layer elalba`) **pierde** contra el preflight, y el borde de acento se "apaga".
112
+
113
+ Tres formas de evitarlo, ordenadas de menos a más invasiva:
114
+
115
+ 1. **Envolver tus estilos en un layer también** — agregá `@import "tailwindcss"` (Tailwind v4) o `@layer base, components, utilities;` (Tailwind v3) explícitamente, y asegurate de que tus utilidades vivan dentro de layers. Cuando ambos están layered, el orden de capas controla quién gana.
116
+ 2. **Desactivar el preflight** — en `tailwind.config.js`: `corePlugins: { preflight: false }`. Te pierde el reset pero el kit queda intacto.
117
+ 3. **Override puntual desde tu app** — si solo te molesta un componente, podés re-establecer la propiedad afuera de cualquier layer:
118
+ ```css
119
+ .card[class*="card--accent-"] { border-style: solid; }
120
+ ```
121
+
122
+ A partir de v0.4.5 el kit mitiga este problema en `Card` usando `box-shadow inset` para la accent rail en vez de `border-left`. Otros componentes con bordes finos (`Input`, `Select`, `Table`) siguen dependiendo de `border-*` y son afectados por el preflight — si te pasa, andá por la opción (1) o (2).
123
+
124
+ ---
125
+
126
+ ## Componentes
127
+
128
+ | Categoría | Componentes |
129
+ |---|---|
130
+ | **Acción** | `Button`, `Menu` (dropdown accesible), `Toggle`, `ToggleGroup` |
131
+ | **Forms** | `Input`, `Textarea`, `Select`, `Checkbox` (con `indeterminate` y `invalid`), `Radio`, `Switch` (con `role="switch"`), `Label`, `FormField` (auto-id + aria-describedby), `NumberInput`, `Slider`, `MoneyInput` (CLP), `PhoneInput`, `TimePicker`, `TagInput`, `RadioGroup`, `CheckboxGroup`, `InputOTP` |
132
+ | **Pickers** | `Combobox`, `MultiCombobox`, `DatePicker`, `DateRangePicker` (con presets), `FileUpload` |
133
+ | **Command** | `CommandPalette` + `useCommandPalette({ hotkey: 'mod+k' })` |
134
+ | **Display** | `Card`, `Badge`, `Alert`, `Skeleton`, `Spinner`, `Kpi`, `EmptyState`, `Avatar`, `AvatarGroup`, `Stat`, `Progress`, `ProgressCircle` |
135
+ | **Overlay** | `Modal`, `Drawer` (focus-trap + ESC + backdrop + body scroll lock + portal a `document.body`), `Popover`, `HoverCard`, `ContextMenu` |
136
+ | **Layout** | `Tabs`, `Table`, `Tooltip`, `Stepper`, `Accordion`, `Breadcrumbs`, `Pagination`, `AppShell` (con tema `default`/`brand`), `PageHeader`, `Menubar`, `NavigationMenu`, `Resizable`, `Carousel` |
137
+ | **Data** | `DataTable` (sort + selección + skeleton + empty + error + `stickyHeader` + `mobileLayout="cards"` + `ariaLabel` + `rowLabel`), `TablePagination` |
138
+ | **Primitives** | `AspectRatio`, `Collapsible`, `ScrollArea`, `Separator`, `Slot` |
139
+ | **Charts** | `LineChart`, `AreaChart`, `BarChart`, `DonutChart`, `Sparkline` (wrappers de Recharts; pasar `recharts={Recharts}`) |
140
+ | **Feedback** | `ToastProvider` + `useToast()` (con pausa al hover/focus) |
141
+ | **Hooks** | `useCommandPalette()` |
142
+
143
+ Todos los componentes son **type-safe**, exponen `forwardRef` cuando aplica y aceptan `className` para extender estilos.
144
+
145
+ ### AppShell + Next.js Link
146
+
147
+ ```tsx
148
+ import Link from 'next/link';
149
+ import { AppShell } from '@misael703/ui';
150
+
151
+ <AppShell
152
+ brand={<img src="/logo.svg" alt="El Alba" height={28} />}
153
+ sections={[{
154
+ label: 'Operación',
155
+ items: [
156
+ { id: 'home', label: 'Inicio', href: '/', active: true },
157
+ { id: 'pedidos', label: 'Pedidos', href: '/pedidos', badge: 12 },
158
+ ],
159
+ }]}
160
+ linkAs={(item, content, className) => (
161
+ <Link href={item.href!} className={className} aria-current={item.active ? 'page' : undefined}>
162
+ {content}
163
+ </Link>
164
+ )}
165
+ topbar={<input className="input" placeholder="Buscar…" />}
166
+ >
167
+ {/* page content */}
168
+ </AppShell>
169
+ ```
170
+
171
+ ### DataTable con miles de filas (virtualization)
172
+
173
+ El kit no incluye virtualización built-in — para datasets grandes (>200 filas), envuelve el `<DataTable>` con `react-window` o `@tanstack/react-virtual`. Patrón base:
174
+
175
+ ```tsx
176
+ 'use client';
177
+ import { useVirtualizer } from '@tanstack/react-virtual';
178
+ import { useRef } from 'react';
179
+ import { DataTable } from '@misael703/ui';
180
+
181
+ function VirtualTable({ rows, columns, rowKey }) {
182
+ const parentRef = useRef<HTMLDivElement>(null);
183
+
184
+ const virtualizer = useVirtualizer({
185
+ count: rows.length,
186
+ getScrollElement: () => parentRef.current,
187
+ estimateSize: () => 48,
188
+ overscan: 10,
189
+ });
190
+
191
+ const visibleRows = virtualizer.getVirtualItems().map((vi) => rows[vi.index]);
192
+
193
+ return (
194
+ <div ref={parentRef} style={{ height: 600, overflow: 'auto' }}>
195
+ <div style={{ height: virtualizer.getTotalSize(), position: 'relative' }}>
196
+ <DataTable
197
+ columns={columns}
198
+ rows={visibleRows}
199
+ rowKey={rowKey}
200
+ stickyHeader
201
+ />
202
+ </div>
203
+ </div>
204
+ );
205
+ }
206
+ ```
207
+
208
+ Notas:
209
+ - El kit pasa `stickyHeader` para que el thead se mantenga visible durante el scroll.
210
+ - El `<div>` exterior con `height` fija es el contenedor de scroll que el virtualizer mide.
211
+ - Si necesitás keyboard navigation entre filas virtuales, agregalo en el wrapper — es responsabilidad del consumer porque depende del UX deseado (Enter para abrir vs. expandir, etc.).
212
+
213
+ Para casos donde el sort/filter pasa por el server, mantené `<DataTable rows={pageData}>` con paginación normal y `<TablePagination>`. Virtualization rinde solo cuando todo el dataset cabe en memoria.
214
+
215
+ ### Charts (Recharts opcional)
216
+
217
+ `@misael703/ui` no incluye Recharts: lo recibe por prop. Instala `recharts` en tu app y pásalo:
218
+
219
+ ```tsx
220
+ 'use client';
221
+ import * as Recharts from 'recharts';
222
+ import { LineChart } from '@misael703/ui';
223
+
224
+ <LineChart
225
+ recharts={Recharts}
226
+ data={data}
227
+ categoryKey="mes"
228
+ series={[{ key: 'ventas', label: 'Ventas' }]}
229
+ />
230
+ ```
231
+
232
+ ### Iconos
233
+
234
+ `@misael703/ui` exporta un set de íconos SVG (24×24, `currentColor`, stroke 1.75) listos para usar:
235
+
236
+ ```tsx
237
+ import { Search, ShoppingCart, ChevronRight } from '@misael703/ui';
238
+
239
+ <Button iconLeft={<ShoppingCart />}>Ver carro</Button>
240
+ <ChevronRight size={16} />
241
+ ```
242
+
243
+ Heredan `color` del padre y aceptan `size`, `strokeWidth`, `className` y `title` (a11y).
244
+
245
+ ### Fuentes (opcional)
246
+
247
+ Si no usás `next/font`, podés cargar Outfit (display) + DM Sans (body) empaquetadas con el kit. Ambas son variable fonts, total ~80 KB:
248
+
249
+ ```ts
250
+ // app/layout.tsx
251
+ import "@misael703/ui/fonts.css";
252
+ import "@misael703/ui/styles.css";
253
+ ```
254
+
255
+ ---
256
+
257
+ ## Tokens (CSS variables)
258
+
259
+ Los tokens viven en `:root`. La paleta de marca y los tokens semánticos están disponibles para overrides en tu app.
260
+
261
+ ```css
262
+ /* Brand */
263
+ --color-brand-orange: #ff671d;
264
+ --color-brand-blue: #002f87;
265
+
266
+ /* Semánticos */
267
+ --bg-canvas, --bg-surface, --bg-subtle, --bg-inverse
268
+ --fg-default, --fg-muted, --fg-subtle
269
+ --border-default, --border-strong, --border-focus
270
+ --color-success, --color-warning, --color-danger, --color-info
271
+
272
+ /* Type */
273
+ --font-display, --font-body, --font-mono
274
+ --text-xs … --text-display
275
+
276
+ /* Espacio */
277
+ --space-1 … --space-16 (4px–64px)
278
+
279
+ /* Radii / sombras / motion */
280
+ --radius-sm … --radius-2xl
281
+ --shadow-sm … --shadow-xl
282
+ --duration-fast / --duration-base / --duration-slow
283
+ --ease-standard / --ease-emphasized
284
+ ```
285
+
286
+ Úsalos directamente en tu CSS:
287
+
288
+ ```css
289
+ .my-card { background: var(--bg-surface); color: var(--fg-default); }
290
+ ```
291
+
292
+ ¿Solo querés los tokens (sin los componentes)? Importá únicamente `tokens.css`:
293
+
294
+ ```ts
295
+ import '@misael703/ui/tokens.css';
296
+ ```
297
+
298
+ ### Superficies invertidas (zonas con bg oscuro)
299
+
300
+ El kit resetea `color` en `<p>`, `<h1>`–`<h6>`, anchors y `.caption` para mantener consistencia tipográfica. Cuando metés esos elementos dentro de un footer / hero / sidebar oscuro, el color heredado del kit gana sobre el `color` del padre (especificidad). Para invertir el subtree completo en una línea, usá `.surface-inverse`:
301
+
302
+ ```html
303
+ <footer class="surface-inverse surface-inverse--brand">
304
+ <h3 class="h3">Footer en navy</h3>
305
+ <p>Texto blanco automáticamente — herencia vía CSS vars.</p>
306
+ <p class="caption">Captions caen a blanco translúcido.</p>
307
+ <p><a href="#">Anchors</a> usan el naranja de marca en hover.</p>
308
+ </footer>
309
+ ```
310
+
311
+ Variantes:
312
+ - `.surface-inverse` solo (sin bg) — para cuando vos pintás el fondo.
313
+ - `.surface-inverse--brand` — bg `var(--color-brand-blue)`.
314
+ - `.surface-inverse--dark` — bg `var(--color-blue-900)`.
315
+ - `[data-tone="inverse"]` — atributo equivalente, sin agregar clases.
316
+
317
+ El mecanismo es re-scope de tokens (`--fg-default`, `--fg-muted`, `--fg-subtle`, `--border-default`, `--fg-link*`) en el subtree. Cualquier componente del kit que resuelva esos vars adentro hereda los valores claros sin tocar el componente. **Cuidado**: componentes con bg propio (Card, Modal, Button, Input) **no** se invierten — la utilidad apunta al texto y bordes del contenedor, no a re-skinear cada componente anidado.
318
+
319
+ ---
320
+
321
+ ## Build local
322
+
323
+ ```bash
324
+ npm install
325
+ npm run build # emite dist/ con .mjs, .cjs, .d.ts y styles.css
326
+ npm test # Vitest + Testing Library
327
+ npm run storybook # http://localhost:6006
328
+ npm run build-storybook # genera storybook-static/ para deploy
329
+ ```
330
+
331
+ Para consumir sin publicar (desarrollo iterativo entre repos): `npm install file:../ui_kit`.
332
+
333
+ ## Storybook
334
+
335
+ Cada componente tiene un `*.stories.tsx` con variantes interactivas y autodocs.
336
+
337
+ ## Tests
338
+
339
+ `npm test` corre Vitest + Testing Library en jsdom. Cobertura actual: **249 tests** sobre todos los componentes públicos, incluyendo regresiones de a11y (FormField wiring, indeterminate, hover-pause, focus rings). Agregar tests es trivial — copia uno existente como referencia.
340
+
341
+ ---
342
+
343
+ ## Releases & CI
344
+
345
+ Las publicaciones a npm están automatizadas con un workflow de GitHub Actions (`.github/workflows/publish.yml`) que se dispara al crear un release.
346
+
347
+ **Autenticación**: el workflow usa **npm Trusted Publishing** (OIDC) — no hay `NPM_TOKEN` ni secrets estáticos. npm confía directamente en GitHub Actions vía OpenID Connect, y cada publish se firma con `--provenance` para que el tarball quede criptográficamente atado al commit + workflow que lo produjo.
348
+
349
+ Configurado en: [npmjs.com/package/@misael703/ui/access](https://www.npmjs.com/package/@misael703/ui/access) → Trusted Publisher → `Misael703/ui` workflow `publish.yml`.
350
+
351
+ ### Sacar una nueva versión
352
+
353
+ ```bash
354
+ npm version patch # o minor / major — bumpea package.json y crea tag
355
+ git push && git push --tags
356
+ gh release create vX.Y.Z --title "vX.Y.Z" --notes "..."
357
+ ```
358
+
359
+ El workflow corre tests, build, y publica automáticamente. Sin OTP, sin tokens en tu máquina.
360
+
361
+ ### Publicar manualmente (caso excepcional)
362
+
363
+ Si necesitas publicar desde local (ej. CI caído):
364
+
365
+ ```bash
366
+ npm publish --otp=<código de 2FA>
367
+ ```
368
+
369
+ Requiere `~/.npmrc` con tu token de npm y haber corrido `npm login` antes.
370
+
371
+ ---
372
+
373
+ ## Forking / Rebrand
374
+
375
+ El kit está diseñado para reusarse en múltiples marcas. Hay 4 ejes que puedes ajustar de manera independiente.
376
+
377
+ ### 1. Colores (sin tocar el kit)
378
+
379
+ Override los tokens desde tu app — el kit usa `@layer` así que tus reglas ganan automáticamente sin pelear con especificidad:
380
+
381
+ ```css
382
+ /* tu globals.css */
383
+ :root {
384
+ --color-brand-blue: #6366f1;
385
+ --color-brand-orange: #f59e0b;
386
+ /* opcional: cambiar escalas completas si quieres */
387
+ }
388
+ ```
389
+
390
+ ### 2. Defaults de marca (currency, locale, name, logoBasePath)
391
+
392
+ El kit guarda solo lo que necesita para renderizar — **identidad visual** (`name`, `logoBasePath`) y **formateo UI** (`currency`, `locale` BCP 47 para `Intl.NumberFormat` / `DateTimeFormat`). No asume país.
393
+
394
+ Llama a `configureBrand()` una sola vez al arranque:
395
+
396
+ ```tsx
397
+ // app/layout.tsx (Next.js)
398
+ import { configureBrand } from '@misael703/ui';
399
+
400
+ configureBrand({
401
+ name: 'Mi Marca',
402
+ currency: 'USD',
403
+ locale: 'en-US',
404
+ logoBasePath: '/static/brand',
405
+ });
406
+ ```
407
+
408
+ Después de configurar, `<Logo>`, `<PriceDisplay>`, `<MoneyInput>`, `<CartDrawer>` y `<FreeShippingProgress>` usan los nuevos defaults automáticamente. Las props siguen funcionando como override puntual.
409
+
410
+ **Datos de país** (regiones, prefijo telefónico, validaciones de RUT/SSN/etc.) los pasa el consumer como props o los modela en su `<AddressForm fields={...}>`. Ver "Idioma" (sección 5) y la story `Commerce → AddressFormDemo` para un ejemplo Chile-flavored.
411
+
412
+ ### 3. Fuentes
413
+
414
+ Reemplaza los archivos en `src/fonts/` y actualiza:
415
+ - Las declaraciones `@font-face` en `src/styles/fonts.css` (única ubicación; `styles.css` y `tokens.css` no las declaran)
416
+ - Los tokens `--font-display` y `--font-body` en `src/styles/_root.css` (single source of truth; `tokens.css` y `styles.css` lo importan)
417
+
418
+ Todo el kit usa `var(--font-display)` y `var(--font-body)`, no hace referencia directa a "Outfit" ni "DM Sans" en componentes.
419
+
420
+ ### 4. Logos
421
+
422
+ Reemplaza los archivos en `public/assets/logos/` manteniendo el naming (`logo-horizontal-light.svg`, `mark-dark.svg`, etc.). Si usas otro path, configúralo:
423
+
424
+ ```tsx
425
+ configureBrand({ logoBasePath: '/static/mi-marca' });
426
+ ```
427
+
428
+ ### 5. Idioma (i18n)
429
+
430
+ Por defecto los strings del kit están en español ("Cerrar", "Sin datos", "Página anterior", etc.). Para una app en otro idioma, envuelve el árbol en un `LocaleProvider` con las claves que quieras traducir:
431
+
432
+ ```tsx
433
+ import { LocaleProvider } from '@misael703/ui';
434
+
435
+ <LocaleProvider
436
+ messages={{
437
+ 'modal.close': 'Close',
438
+ 'table.empty': 'No data',
439
+ 'pagination.range': '{from}–{to} of {total}',
440
+ 'calendar.weekdays': ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
441
+ }}
442
+ >
443
+ <App />
444
+ </LocaleProvider>
445
+ ```
446
+
447
+ **Cómo funciona**:
448
+ - El dict `UiKitMessages` está completamente tipado (TypeScript te autocompleta cada clave).
449
+ - Las claves no provistas hacen fallback al default español (`esMessages`) — no hace falta declarar todo.
450
+ - Templates con placeholders (`"Eliminar {name}"`, `"{n} sin leer"`, etc.) se resuelven con el helper `format(tpl, vars)` que también está exportado.
451
+
452
+ Sin `LocaleProvider` el kit funciona en español como siempre — el provider es opcional.
453
+
454
+ ### Resumen del esfuerzo
455
+
456
+ | Cambio | Esfuerzo |
457
+ |---|---|
458
+ | Colores | 5 min (override CSS) |
459
+ | Defaults marca (name, currency, locale) | 5 min (`configureBrand()`) |
460
+ | Fuente | 10 min (reemplazar archivos + tokens) |
461
+ | Logos | 5 min (reemplazar archivos) |
462
+ | Idioma | 15 min (envolver en `LocaleProvider` con un dict) |
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Defaults centralizados de marca y locale para formateo UI.
3
+ *
4
+ * El kit no asume país. Solo guarda lo que necesita para renderizar:
5
+ * la identidad visual (nombre, logos) y la configuración de formateo
6
+ * (moneda, locale BCP 47 para Intl.NumberFormat / DateTimeFormat).
7
+ *
8
+ * Datos de país (regiones, prefijo telefónico, validaciones de RUT, etc.)
9
+ * los pasa el consumer como props. Ver `<AddressForm fields={...}>` y
10
+ * `<PhoneInput prefix="+56">`.
11
+ *
12
+ * Uso:
13
+ *
14
+ * ```tsx
15
+ * import { configureBrand } from '@misael703/elalba-ui';
16
+ *
17
+ * configureBrand({
18
+ * name: 'Mi Marca',
19
+ * currency: 'USD',
20
+ * locale: 'en-US',
21
+ * logoBasePath: '/static/brand',
22
+ * });
23
+ * ```
24
+ */
25
+ interface BrandDefaults {
26
+ /** Nombre legible de la marca. Usado como `alt` por defecto en `<Logo>`. */
27
+ name: string;
28
+ /** Path base donde están los assets de logos. Default: `/assets/logos`. */
29
+ logoBasePath: string;
30
+ /** Código ISO 4217 (CLP, USD, EUR, ...) para inputs monetarios. */
31
+ currency: string;
32
+ /** Locale BCP 47 para Intl.NumberFormat / DateTimeFormat. */
33
+ locale: string;
34
+ }
35
+ declare const BRAND_DEFAULTS: BrandDefaults;
36
+ /**
37
+ * Sobreescribe los defaults globales del kit. Llamar una sola vez al arranque
38
+ * de la app. Las props siguen funcionando como override puntual.
39
+ */
40
+ declare function configureBrand(overrides: Partial<BrandDefaults>): void;
41
+ /** Lee los defaults actuales. Los componentes lo usan internamente. */
42
+ declare function getBrand(): BrandDefaults;
43
+ /** Resetea a los defaults originales. Útil en tests. */
44
+ declare function resetBrand(): void;
45
+
46
+ export { BRAND_DEFAULTS, type BrandDefaults, configureBrand, getBrand, resetBrand };
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Defaults centralizados de marca y locale para formateo UI.
3
+ *
4
+ * El kit no asume país. Solo guarda lo que necesita para renderizar:
5
+ * la identidad visual (nombre, logos) y la configuración de formateo
6
+ * (moneda, locale BCP 47 para Intl.NumberFormat / DateTimeFormat).
7
+ *
8
+ * Datos de país (regiones, prefijo telefónico, validaciones de RUT, etc.)
9
+ * los pasa el consumer como props. Ver `<AddressForm fields={...}>` y
10
+ * `<PhoneInput prefix="+56">`.
11
+ *
12
+ * Uso:
13
+ *
14
+ * ```tsx
15
+ * import { configureBrand } from '@misael703/elalba-ui';
16
+ *
17
+ * configureBrand({
18
+ * name: 'Mi Marca',
19
+ * currency: 'USD',
20
+ * locale: 'en-US',
21
+ * logoBasePath: '/static/brand',
22
+ * });
23
+ * ```
24
+ */
25
+ interface BrandDefaults {
26
+ /** Nombre legible de la marca. Usado como `alt` por defecto en `<Logo>`. */
27
+ name: string;
28
+ /** Path base donde están los assets de logos. Default: `/assets/logos`. */
29
+ logoBasePath: string;
30
+ /** Código ISO 4217 (CLP, USD, EUR, ...) para inputs monetarios. */
31
+ currency: string;
32
+ /** Locale BCP 47 para Intl.NumberFormat / DateTimeFormat. */
33
+ locale: string;
34
+ }
35
+ declare const BRAND_DEFAULTS: BrandDefaults;
36
+ /**
37
+ * Sobreescribe los defaults globales del kit. Llamar una sola vez al arranque
38
+ * de la app. Las props siguen funcionando como override puntual.
39
+ */
40
+ declare function configureBrand(overrides: Partial<BrandDefaults>): void;
41
+ /** Lee los defaults actuales. Los componentes lo usan internamente. */
42
+ declare function getBrand(): BrandDefaults;
43
+ /** Resetea a los defaults originales. Útil en tests. */
44
+ declare function resetBrand(): void;
45
+
46
+ export { BRAND_DEFAULTS, type BrandDefaults, configureBrand, getBrand, resetBrand };
package/dist/brand.js ADDED
@@ -0,0 +1,24 @@
1
+ 'use strict';
2
+
3
+ var chunk3PXYCXDW_js = require('./chunk-3PXYCXDW.js');
4
+
5
+
6
+
7
+ Object.defineProperty(exports, "BRAND_DEFAULTS", {
8
+ enumerable: true,
9
+ get: function () { return chunk3PXYCXDW_js.BRAND_DEFAULTS; }
10
+ });
11
+ Object.defineProperty(exports, "configureBrand", {
12
+ enumerable: true,
13
+ get: function () { return chunk3PXYCXDW_js.configureBrand; }
14
+ });
15
+ Object.defineProperty(exports, "getBrand", {
16
+ enumerable: true,
17
+ get: function () { return chunk3PXYCXDW_js.getBrand; }
18
+ });
19
+ Object.defineProperty(exports, "resetBrand", {
20
+ enumerable: true,
21
+ get: function () { return chunk3PXYCXDW_js.resetBrand; }
22
+ });
23
+ //# sourceMappingURL=brand.js.map
24
+ //# sourceMappingURL=brand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"brand.js"}
package/dist/brand.mjs ADDED
@@ -0,0 +1,3 @@
1
+ export { BRAND_DEFAULTS, configureBrand, getBrand, resetBrand } from './chunk-5GEWIK4T.mjs';
2
+ //# sourceMappingURL=brand.mjs.map
3
+ //# sourceMappingURL=brand.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"brand.mjs"}