@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.
- package/LICENSE +21 -0
- package/README.md +462 -0
- package/dist/brand.d.mts +46 -0
- package/dist/brand.d.ts +46 -0
- package/dist/brand.js +24 -0
- package/dist/brand.js.map +1 -0
- package/dist/brand.mjs +3 -0
- package/dist/brand.mjs.map +1 -0
- package/dist/chunk-26KJA67X.js +166 -0
- package/dist/chunk-26KJA67X.js.map +1 -0
- package/dist/chunk-2JTBLDMK.js +274 -0
- package/dist/chunk-2JTBLDMK.js.map +1 -0
- package/dist/chunk-2RVSLQEA.mjs +171 -0
- package/dist/chunk-2RVSLQEA.mjs.map +1 -0
- package/dist/chunk-2UV37SEN.mjs +78 -0
- package/dist/chunk-2UV37SEN.mjs.map +1 -0
- package/dist/chunk-33PU6AH7.mjs +123 -0
- package/dist/chunk-33PU6AH7.mjs.map +1 -0
- package/dist/chunk-3PXYCXDW.js +32 -0
- package/dist/chunk-3PXYCXDW.js.map +1 -0
- package/dist/chunk-3TNBETXR.js +116 -0
- package/dist/chunk-3TNBETXR.js.map +1 -0
- package/dist/chunk-3UHX7ITQ.mjs +76 -0
- package/dist/chunk-3UHX7ITQ.mjs.map +1 -0
- package/dist/chunk-4REALDR3.js +4 -0
- package/dist/chunk-4REALDR3.js.map +1 -0
- package/dist/chunk-55TOQMS2.js +142 -0
- package/dist/chunk-55TOQMS2.js.map +1 -0
- package/dist/chunk-5GEWIK4T.mjs +27 -0
- package/dist/chunk-5GEWIK4T.mjs.map +1 -0
- package/dist/chunk-5VMZMDJF.js +145 -0
- package/dist/chunk-5VMZMDJF.js.map +1 -0
- package/dist/chunk-6II4NJQM.js +127 -0
- package/dist/chunk-6II4NJQM.js.map +1 -0
- package/dist/chunk-6LOJIU3C.js +84 -0
- package/dist/chunk-6LOJIU3C.js.map +1 -0
- package/dist/chunk-6MEOR4YO.mjs +45 -0
- package/dist/chunk-6MEOR4YO.mjs.map +1 -0
- package/dist/chunk-6PEC4RRO.mjs +94 -0
- package/dist/chunk-6PEC4RRO.mjs.map +1 -0
- package/dist/chunk-7AKN7FDA.mjs +103 -0
- package/dist/chunk-7AKN7FDA.mjs.map +1 -0
- package/dist/chunk-AAQ7KUZH.mjs +352 -0
- package/dist/chunk-AAQ7KUZH.mjs.map +1 -0
- package/dist/chunk-ADIKHOEG.js +212 -0
- package/dist/chunk-ADIKHOEG.js.map +1 -0
- package/dist/chunk-ADQM725E.js +141 -0
- package/dist/chunk-ADQM725E.js.map +1 -0
- package/dist/chunk-AWYCGJJX.js +102 -0
- package/dist/chunk-AWYCGJJX.js.map +1 -0
- package/dist/chunk-AZBX7UFI.js +100 -0
- package/dist/chunk-AZBX7UFI.js.map +1 -0
- package/dist/chunk-BCIZLGM3.mjs +78 -0
- package/dist/chunk-BCIZLGM3.mjs.map +1 -0
- package/dist/chunk-BMZQ6L2C.js +294 -0
- package/dist/chunk-BMZQ6L2C.js.map +1 -0
- package/dist/chunk-CHVTPN3K.mjs +3 -0
- package/dist/chunk-CHVTPN3K.mjs.map +1 -0
- package/dist/chunk-CIBJKJV3.mjs +314 -0
- package/dist/chunk-CIBJKJV3.mjs.map +1 -0
- package/dist/chunk-CPMQ2DFS.js +197 -0
- package/dist/chunk-CPMQ2DFS.js.map +1 -0
- package/dist/chunk-CVXS7IHA.js +376 -0
- package/dist/chunk-CVXS7IHA.js.map +1 -0
- package/dist/chunk-DHCJMYFD.mjs +76 -0
- package/dist/chunk-DHCJMYFD.mjs.map +1 -0
- package/dist/chunk-DW3XAXHR.mjs +146 -0
- package/dist/chunk-DW3XAXHR.mjs.map +1 -0
- package/dist/chunk-E2XOUDAH.js +215 -0
- package/dist/chunk-E2XOUDAH.js.map +1 -0
- package/dist/chunk-EJJDJJEM.js +505 -0
- package/dist/chunk-EJJDJJEM.js.map +1 -0
- package/dist/chunk-FXM7OKDQ.js +146 -0
- package/dist/chunk-FXM7OKDQ.js.map +1 -0
- package/dist/chunk-GCW5JYWQ.js +69 -0
- package/dist/chunk-GCW5JYWQ.js.map +1 -0
- package/dist/chunk-GDFYAUHT.mjs +192 -0
- package/dist/chunk-GDFYAUHT.mjs.map +1 -0
- package/dist/chunk-GT2KVC2P.mjs +267 -0
- package/dist/chunk-GT2KVC2P.mjs.map +1 -0
- package/dist/chunk-GVYZAOWU.mjs +142 -0
- package/dist/chunk-GVYZAOWU.mjs.map +1 -0
- package/dist/chunk-HI3JT6SI.mjs +174 -0
- package/dist/chunk-HI3JT6SI.mjs.map +1 -0
- package/dist/chunk-HPFJ2A24.js +125 -0
- package/dist/chunk-HPFJ2A24.js.map +1 -0
- package/dist/chunk-HVUNNL3A.mjs +244 -0
- package/dist/chunk-HVUNNL3A.mjs.map +1 -0
- package/dist/chunk-HYUINOPJ.js +173 -0
- package/dist/chunk-HYUINOPJ.js.map +1 -0
- package/dist/chunk-IEPCH3JB.mjs +8 -0
- package/dist/chunk-IEPCH3JB.mjs.map +1 -0
- package/dist/chunk-IIYQO6BL.js +98 -0
- package/dist/chunk-IIYQO6BL.js.map +1 -0
- package/dist/chunk-IMFQ55KO.js +131 -0
- package/dist/chunk-IMFQ55KO.js.map +1 -0
- package/dist/chunk-IVL7P3MF.mjs +105 -0
- package/dist/chunk-IVL7P3MF.mjs.map +1 -0
- package/dist/chunk-JDOXRLZW.js +138 -0
- package/dist/chunk-JDOXRLZW.js.map +1 -0
- package/dist/chunk-JMFDIN5R.mjs +64 -0
- package/dist/chunk-JMFDIN5R.mjs.map +1 -0
- package/dist/chunk-KKOJI25C.mjs +11 -0
- package/dist/chunk-KKOJI25C.mjs.map +1 -0
- package/dist/chunk-L353APIO.js +131 -0
- package/dist/chunk-L353APIO.js.map +1 -0
- package/dist/chunk-LIGJBHXU.js +13 -0
- package/dist/chunk-LIGJBHXU.js.map +1 -0
- package/dist/chunk-LUXTZOTJ.js +204 -0
- package/dist/chunk-LUXTZOTJ.js.map +1 -0
- package/dist/chunk-ML5IYW5D.mjs +82 -0
- package/dist/chunk-ML5IYW5D.mjs.map +1 -0
- package/dist/chunk-NLCKWF3Y.mjs +88 -0
- package/dist/chunk-NLCKWF3Y.mjs.map +1 -0
- package/dist/chunk-NU4GAGUV.js +86 -0
- package/dist/chunk-NU4GAGUV.js.map +1 -0
- package/dist/chunk-NUURPO3J.mjs +120 -0
- package/dist/chunk-NUURPO3J.mjs.map +1 -0
- package/dist/chunk-O6FCBNWN.mjs +191 -0
- package/dist/chunk-O6FCBNWN.mjs.map +1 -0
- package/dist/chunk-OCE4ODTM.mjs +116 -0
- package/dist/chunk-OCE4ODTM.mjs.map +1 -0
- package/dist/chunk-ORUQ5GCU.mjs +120 -0
- package/dist/chunk-ORUQ5GCU.mjs.map +1 -0
- package/dist/chunk-PASF6T4H.js +10 -0
- package/dist/chunk-PASF6T4H.js.map +1 -0
- package/dist/chunk-PCRNKITV.mjs +106 -0
- package/dist/chunk-PCRNKITV.mjs.map +1 -0
- package/dist/chunk-PSJVU4E4.js +72 -0
- package/dist/chunk-PSJVU4E4.js.map +1 -0
- package/dist/chunk-PXCH5Z76.mjs +82 -0
- package/dist/chunk-PXCH5Z76.mjs.map +1 -0
- package/dist/chunk-QHRP73CS.js +106 -0
- package/dist/chunk-QHRP73CS.js.map +1 -0
- package/dist/chunk-QI6TVWWF.js +121 -0
- package/dist/chunk-QI6TVWWF.js.map +1 -0
- package/dist/chunk-QSCJ2CER.mjs +480 -0
- package/dist/chunk-QSCJ2CER.mjs.map +1 -0
- package/dist/chunk-R76YER7O.js +458 -0
- package/dist/chunk-R76YER7O.js.map +1 -0
- package/dist/chunk-RBJRQ44B.mjs +108 -0
- package/dist/chunk-RBJRQ44B.mjs.map +1 -0
- package/dist/chunk-RQOTH7I7.js +401 -0
- package/dist/chunk-RQOTH7I7.js.map +1 -0
- package/dist/chunk-SYX4GZ7E.mjs +134 -0
- package/dist/chunk-SYX4GZ7E.mjs.map +1 -0
- package/dist/chunk-T4R2LSRL.js +148 -0
- package/dist/chunk-T4R2LSRL.js.map +1 -0
- package/dist/chunk-TB6EHWRF.mjs +92 -0
- package/dist/chunk-TB6EHWRF.mjs.map +1 -0
- package/dist/chunk-TEQ67JKX.js +181 -0
- package/dist/chunk-TEQ67JKX.js.map +1 -0
- package/dist/chunk-TXKFCVCN.mjs +426 -0
- package/dist/chunk-TXKFCVCN.mjs.map +1 -0
- package/dist/chunk-TZG34EYW.js +74 -0
- package/dist/chunk-TZG34EYW.js.map +1 -0
- package/dist/chunk-UB2XEZ7C.mjs +72 -0
- package/dist/chunk-UB2XEZ7C.mjs.map +1 -0
- package/dist/chunk-UIKCTWKG.js +116 -0
- package/dist/chunk-UIKCTWKG.js.map +1 -0
- package/dist/chunk-UNOPDYA7.js +107 -0
- package/dist/chunk-UNOPDYA7.js.map +1 -0
- package/dist/chunk-V26K66NP.mjs +49 -0
- package/dist/chunk-V26K66NP.mjs.map +1 -0
- package/dist/chunk-W6YOBPL5.js +110 -0
- package/dist/chunk-W6YOBPL5.js.map +1 -0
- package/dist/chunk-X2DBGT7M.mjs +117 -0
- package/dist/chunk-X2DBGT7M.mjs.map +1 -0
- package/dist/chunk-YBOTLQ3G.mjs +99 -0
- package/dist/chunk-YBOTLQ3G.mjs.map +1 -0
- package/dist/chunk-Z3FAKG3E.mjs +125 -0
- package/dist/chunk-Z3FAKG3E.mjs.map +1 -0
- package/dist/chunk-Z4GRQHIG.mjs +177 -0
- package/dist/chunk-Z4GRQHIG.mjs.map +1 -0
- package/dist/chunk-ZRBVYPKN.js +169 -0
- package/dist/chunk-ZRBVYPKN.js.map +1 -0
- package/dist/chunk-ZRFSTYRL.mjs +157 -0
- package/dist/chunk-ZRFSTYRL.mjs.map +1 -0
- package/dist/chunk-ZXSSOEIM.js +197 -0
- package/dist/chunk-ZXSSOEIM.js.map +1 -0
- package/dist/components/AdvancedPickers.d.mts +77 -0
- package/dist/components/AdvancedPickers.d.ts +77 -0
- package/dist/components/AdvancedPickers.js +30 -0
- package/dist/components/AdvancedPickers.js.map +1 -0
- package/dist/components/AdvancedPickers.mjs +9 -0
- package/dist/components/AdvancedPickers.mjs.map +1 -0
- package/dist/components/AppShell.d.mts +55 -0
- package/dist/components/AppShell.d.ts +55 -0
- package/dist/components/AppShell.js +19 -0
- package/dist/components/AppShell.js.map +1 -0
- package/dist/components/AppShell.mjs +6 -0
- package/dist/components/AppShell.mjs.map +1 -0
- package/dist/components/Button.d.mts +16 -0
- package/dist/components/Button.d.ts +16 -0
- package/dist/components/Button.js +17 -0
- package/dist/components/Button.js.map +1 -0
- package/dist/components/Button.mjs +4 -0
- package/dist/components/Button.mjs.map +1 -0
- package/dist/components/Carousel.d.mts +17 -0
- package/dist/components/Carousel.d.ts +17 -0
- package/dist/components/Carousel.js +14 -0
- package/dist/components/Carousel.js.map +1 -0
- package/dist/components/Carousel.mjs +5 -0
- package/dist/components/Carousel.mjs.map +1 -0
- package/dist/components/Charts.d.mts +96 -0
- package/dist/components/Charts.d.ts +96 -0
- package/dist/components/Charts.js +29 -0
- package/dist/components/Charts.js.map +1 -0
- package/dist/components/Charts.mjs +4 -0
- package/dist/components/Charts.mjs.map +1 -0
- package/dist/components/Code.d.mts +18 -0
- package/dist/components/Code.d.ts +18 -0
- package/dist/components/Code.js +18 -0
- package/dist/components/Code.js.map +1 -0
- package/dist/components/Code.mjs +5 -0
- package/dist/components/Code.mjs.map +1 -0
- package/dist/components/Collapsible.d.mts +12 -0
- package/dist/components/Collapsible.d.ts +12 -0
- package/dist/components/Collapsible.js +21 -0
- package/dist/components/Collapsible.js.map +1 -0
- package/dist/components/Collapsible.mjs +4 -0
- package/dist/components/Collapsible.mjs.map +1 -0
- package/dist/components/Comments.d.mts +41 -0
- package/dist/components/Comments.d.ts +41 -0
- package/dist/components/Comments.js +25 -0
- package/dist/components/Comments.js.map +1 -0
- package/dist/components/Comments.mjs +8 -0
- package/dist/components/Comments.mjs.map +1 -0
- package/dist/components/Commerce.d.mts +159 -0
- package/dist/components/Commerce.d.ts +159 -0
- package/dist/components/Commerce.js +58 -0
- package/dist/components/Commerce.js.map +1 -0
- package/dist/components/Commerce.mjs +9 -0
- package/dist/components/Commerce.mjs.map +1 -0
- package/dist/components/ContextMenu.d.mts +22 -0
- package/dist/components/ContextMenu.d.ts +22 -0
- package/dist/components/ContextMenu.js +13 -0
- package/dist/components/ContextMenu.js.map +1 -0
- package/dist/components/ContextMenu.mjs +4 -0
- package/dist/components/ContextMenu.mjs.map +1 -0
- package/dist/components/DataTable.d.mts +121 -0
- package/dist/components/DataTable.d.ts +121 -0
- package/dist/components/DataTable.js +38 -0
- package/dist/components/DataTable.js.map +1 -0
- package/dist/components/DataTable.mjs +9 -0
- package/dist/components/DataTable.mjs.map +1 -0
- package/dist/components/Display.d.mts +56 -0
- package/dist/components/Display.d.ts +56 -0
- package/dist/components/Display.js +55 -0
- package/dist/components/Display.js.map +1 -0
- package/dist/components/Display.mjs +6 -0
- package/dist/components/Display.mjs.map +1 -0
- package/dist/components/Display2.d.mts +54 -0
- package/dist/components/Display2.d.ts +54 -0
- package/dist/components/Display2.js +26 -0
- package/dist/components/Display2.js.map +1 -0
- package/dist/components/Display2.mjs +5 -0
- package/dist/components/Display2.mjs.map +1 -0
- package/dist/components/Display3.d.mts +58 -0
- package/dist/components/Display3.d.ts +58 -0
- package/dist/components/Display3.js +36 -0
- package/dist/components/Display3.js.map +1 -0
- package/dist/components/Display3.mjs +7 -0
- package/dist/components/Display3.mjs.map +1 -0
- package/dist/components/Editing.d.mts +52 -0
- package/dist/components/Editing.d.ts +52 -0
- package/dist/components/Editing.js +33 -0
- package/dist/components/Editing.js.map +1 -0
- package/dist/components/Editing.mjs +8 -0
- package/dist/components/Editing.mjs.map +1 -0
- package/dist/components/Filters.d.mts +37 -0
- package/dist/components/Filters.d.ts +37 -0
- package/dist/components/Filters.js +28 -0
- package/dist/components/Filters.js.map +1 -0
- package/dist/components/Filters.mjs +7 -0
- package/dist/components/Filters.mjs.map +1 -0
- package/dist/components/Form.d.mts +55 -0
- package/dist/components/Form.d.ts +55 -0
- package/dist/components/Form.js +50 -0
- package/dist/components/Form.js.map +1 -0
- package/dist/components/Form.mjs +5 -0
- package/dist/components/Form.mjs.map +1 -0
- package/dist/components/Gallery.d.mts +28 -0
- package/dist/components/Gallery.d.ts +28 -0
- package/dist/components/Gallery.js +20 -0
- package/dist/components/Gallery.js.map +1 -0
- package/dist/components/Gallery.mjs +7 -0
- package/dist/components/Gallery.mjs.map +1 -0
- package/dist/components/HoverCard.d.mts +17 -0
- package/dist/components/HoverCard.d.ts +17 -0
- package/dist/components/HoverCard.js +13 -0
- package/dist/components/HoverCard.js.map +1 -0
- package/dist/components/HoverCard.mjs +4 -0
- package/dist/components/HoverCard.mjs.map +1 -0
- package/dist/components/Icons.d.mts +84 -0
- package/dist/components/Icons.d.ts +84 -0
- package/dist/components/Icons.js +272 -0
- package/dist/components/Icons.js.map +1 -0
- package/dist/components/Icons.mjs +3 -0
- package/dist/components/Icons.mjs.map +1 -0
- package/dist/components/InputOTP.d.mts +17 -0
- package/dist/components/InputOTP.d.ts +17 -0
- package/dist/components/InputOTP.js +13 -0
- package/dist/components/InputOTP.js.map +1 -0
- package/dist/components/InputOTP.mjs +4 -0
- package/dist/components/InputOTP.mjs.map +1 -0
- package/dist/components/Inputs.d.mts +45 -0
- package/dist/components/Inputs.d.ts +45 -0
- package/dist/components/Inputs.js +28 -0
- package/dist/components/Inputs.js.map +1 -0
- package/dist/components/Inputs.mjs +7 -0
- package/dist/components/Inputs.mjs.map +1 -0
- package/dist/components/InputsExtra.d.mts +98 -0
- package/dist/components/InputsExtra.d.ts +98 -0
- package/dist/components/InputsExtra.js +49 -0
- package/dist/components/InputsExtra.js.map +1 -0
- package/dist/components/InputsExtra.mjs +8 -0
- package/dist/components/InputsExtra.mjs.map +1 -0
- package/dist/components/Layout.d.mts +83 -0
- package/dist/components/Layout.d.ts +83 -0
- package/dist/components/Layout.js +78 -0
- package/dist/components/Layout.js.map +1 -0
- package/dist/components/Layout.mjs +5 -0
- package/dist/components/Layout.mjs.map +1 -0
- package/dist/components/Logo.d.mts +38 -0
- package/dist/components/Logo.d.ts +38 -0
- package/dist/components/Logo.js +14 -0
- package/dist/components/Logo.js.map +1 -0
- package/dist/components/Logo.mjs +5 -0
- package/dist/components/Logo.mjs.map +1 -0
- package/dist/components/Marketing.d.mts +46 -0
- package/dist/components/Marketing.d.ts +46 -0
- package/dist/components/Marketing.js +22 -0
- package/dist/components/Marketing.js.map +1 -0
- package/dist/components/Marketing.mjs +5 -0
- package/dist/components/Marketing.mjs.map +1 -0
- package/dist/components/Menubar.d.mts +24 -0
- package/dist/components/Menubar.d.ts +24 -0
- package/dist/components/Menubar.js +13 -0
- package/dist/components/Menubar.js.map +1 -0
- package/dist/components/Menubar.mjs +4 -0
- package/dist/components/Menubar.mjs.map +1 -0
- package/dist/components/NavigationMenu.d.mts +28 -0
- package/dist/components/NavigationMenu.d.ts +28 -0
- package/dist/components/NavigationMenu.js +14 -0
- package/dist/components/NavigationMenu.js.map +1 -0
- package/dist/components/NavigationMenu.mjs +5 -0
- package/dist/components/NavigationMenu.mjs.map +1 -0
- package/dist/components/Notifications.d.mts +25 -0
- package/dist/components/Notifications.d.ts +25 -0
- package/dist/components/Notifications.js +16 -0
- package/dist/components/Notifications.js.map +1 -0
- package/dist/components/Notifications.mjs +7 -0
- package/dist/components/Notifications.mjs.map +1 -0
- package/dist/components/Overlay.d.mts +20 -0
- package/dist/components/Overlay.d.ts +20 -0
- package/dist/components/Overlay.js +19 -0
- package/dist/components/Overlay.js.map +1 -0
- package/dist/components/Overlay.mjs +6 -0
- package/dist/components/Overlay.mjs.map +1 -0
- package/dist/components/Permissions.d.mts +23 -0
- package/dist/components/Permissions.d.ts +23 -0
- package/dist/components/Permissions.js +17 -0
- package/dist/components/Permissions.js.map +1 -0
- package/dist/components/Permissions.mjs +8 -0
- package/dist/components/Permissions.mjs.map +1 -0
- package/dist/components/Pickers.d.mts +54 -0
- package/dist/components/Pickers.d.ts +54 -0
- package/dist/components/Pickers.js +25 -0
- package/dist/components/Pickers.js.map +1 -0
- package/dist/components/Pickers.mjs +8 -0
- package/dist/components/Pickers.mjs.map +1 -0
- package/dist/components/Popover.d.mts +23 -0
- package/dist/components/Popover.d.ts +23 -0
- package/dist/components/Popover.js +13 -0
- package/dist/components/Popover.js.map +1 -0
- package/dist/components/Popover.mjs +4 -0
- package/dist/components/Popover.mjs.map +1 -0
- package/dist/components/Primitives.d.mts +18 -0
- package/dist/components/Primitives.d.ts +18 -0
- package/dist/components/Primitives.js +21 -0
- package/dist/components/Primitives.js.map +1 -0
- package/dist/components/Primitives.mjs +4 -0
- package/dist/components/Primitives.mjs.map +1 -0
- package/dist/components/Resizable.d.mts +27 -0
- package/dist/components/Resizable.d.ts +27 -0
- package/dist/components/Resizable.js +21 -0
- package/dist/components/Resizable.js.map +1 -0
- package/dist/components/Resizable.mjs +4 -0
- package/dist/components/Resizable.mjs.map +1 -0
- package/dist/components/Toast.d.mts +21 -0
- package/dist/components/Toast.d.ts +21 -0
- package/dist/components/Toast.js +19 -0
- package/dist/components/Toast.js.map +1 -0
- package/dist/components/Toast.mjs +6 -0
- package/dist/components/Toast.mjs.map +1 -0
- package/dist/components/Toggle.d.mts +42 -0
- package/dist/components/Toggle.d.ts +42 -0
- package/dist/components/Toggle.js +21 -0
- package/dist/components/Toggle.js.map +1 -0
- package/dist/components/Toggle.mjs +4 -0
- package/dist/components/Toggle.mjs.map +1 -0
- package/dist/fonts/DMSans-VariableFont_wght.woff2 +0 -0
- package/dist/fonts/OFL.txt +98 -0
- package/dist/fonts/Outfit-VariableFont_wght.woff2 +0 -0
- package/dist/fonts.css +1 -0
- package/dist/index.d.mts +43 -0
- package/dist/index.d.ts +43 -0
- package/dist/index.js +926 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +45 -0
- package/dist/index.mjs.map +1 -0
- package/dist/locale/index.d.mts +174 -0
- package/dist/locale/index.d.ts +174 -0
- package/dist/locale/index.js +26 -0
- package/dist/locale/index.js.map +1 -0
- package/dist/locale/index.mjs +5 -0
- package/dist/locale/index.mjs.map +1 -0
- package/dist/presets/elalba/defaults.d.mts +24 -0
- package/dist/presets/elalba/defaults.d.ts +24 -0
- package/dist/presets/elalba/defaults.js +13 -0
- package/dist/presets/elalba/defaults.js.map +1 -0
- package/dist/presets/elalba/defaults.mjs +11 -0
- package/dist/presets/elalba/defaults.mjs.map +1 -0
- package/dist/presets/elalba/logos/logo-horizontal-dark.png +0 -0
- package/dist/presets/elalba/logos/logo-horizontal-dark.svg +58 -0
- package/dist/presets/elalba/logos/logo-horizontal-light.png +0 -0
- package/dist/presets/elalba/logos/logo-horizontal-light.svg +68 -0
- package/dist/presets/elalba/logos/logo-vertical-dark.png +0 -0
- package/dist/presets/elalba/logos/logo-vertical-dark.svg +58 -0
- package/dist/presets/elalba/logos/logo-vertical-light.png +0 -0
- package/dist/presets/elalba/logos/logo-vertical-light.svg +68 -0
- package/dist/presets/elalba/logos/mark-dark.png +0 -0
- package/dist/presets/elalba/logos/mark-dark.svg +27 -0
- package/dist/presets/elalba/logos/mark-light.png +0 -0
- package/dist/presets/elalba/logos/mark-light.svg +27 -0
- package/dist/presets/elalba/logos/wordmark-dark.png +0 -0
- package/dist/presets/elalba/logos/wordmark-dark.svg +36 -0
- package/dist/presets/elalba/logos/wordmark-light.png +0 -0
- package/dist/presets/elalba/logos/wordmark-light.svg +36 -0
- package/dist/presets/elalba/styles.css +1 -0
- package/dist/styles.css +1 -0
- package/dist/tokens.css +1 -0
- package/dist/utils/cx.d.mts +3 -0
- package/dist/utils/cx.d.ts +3 -0
- package/dist/utils/cx.js +12 -0
- package/dist/utils/cx.js.map +1 -0
- package/dist/utils/cx.mjs +3 -0
- package/dist/utils/cx.mjs.map +1 -0
- package/dist/utils/dateFormat.d.mts +35 -0
- package/dist/utils/dateFormat.d.ts +35 -0
- package/dist/utils/dateFormat.js +29 -0
- package/dist/utils/dateFormat.js.map +1 -0
- package/dist/utils/dateFormat.mjs +4 -0
- package/dist/utils/dateFormat.mjs.map +1 -0
- package/package.json +94 -0
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkRQOTH7I7_js = require('./chunk-RQOTH7I7.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
|
+
function Hero({
|
|
29
|
+
eyebrow,
|
|
30
|
+
title,
|
|
31
|
+
subtitle,
|
|
32
|
+
actions,
|
|
33
|
+
image,
|
|
34
|
+
align = "center",
|
|
35
|
+
tone = "brand",
|
|
36
|
+
size = "md",
|
|
37
|
+
className,
|
|
38
|
+
style,
|
|
39
|
+
children,
|
|
40
|
+
...rest
|
|
41
|
+
}) {
|
|
42
|
+
const computedTone = image ? "image" : tone;
|
|
43
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
44
|
+
"section",
|
|
45
|
+
{
|
|
46
|
+
className: chunkPASF6T4H_js.cx("hero", `hero--${computedTone}`, `hero--align-${align}`, `hero--${size}`, className),
|
|
47
|
+
style: image ? { backgroundImage: `url(${image})`, ...style } : style,
|
|
48
|
+
...rest,
|
|
49
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "hero__inner", children: [
|
|
50
|
+
eyebrow && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "hero__eyebrow", children: eyebrow }),
|
|
51
|
+
/* @__PURE__ */ jsxRuntime.jsx("h1", { className: "hero__title", children: title }),
|
|
52
|
+
subtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "hero__subtitle", children: subtitle }),
|
|
53
|
+
actions && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "hero__actions", children: actions }),
|
|
54
|
+
children
|
|
55
|
+
] })
|
|
56
|
+
}
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
function Testimonial({
|
|
60
|
+
quote,
|
|
61
|
+
author,
|
|
62
|
+
role,
|
|
63
|
+
company,
|
|
64
|
+
avatarSrc,
|
|
65
|
+
rating,
|
|
66
|
+
className,
|
|
67
|
+
...rest
|
|
68
|
+
}) {
|
|
69
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("figure", { className: chunkPASF6T4H_js.cx("testimonial", className), ...rest, children: [
|
|
70
|
+
rating != null && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "testimonial__rating", "aria-label": `${rating} de 5 estrellas`, children: Array.from({ length: 5 }, (_, i) => /* @__PURE__ */ jsxRuntime.jsx(chunkRQOTH7I7_js.Star, { size: 14, className: i < rating ? "is-filled" : "" }, i)) }),
|
|
71
|
+
/* @__PURE__ */ jsxRuntime.jsxs("blockquote", { className: "testimonial__quote", children: [
|
|
72
|
+
'"',
|
|
73
|
+
quote,
|
|
74
|
+
'"'
|
|
75
|
+
] }),
|
|
76
|
+
/* @__PURE__ */ jsxRuntime.jsxs("figcaption", { className: "testimonial__caption", children: [
|
|
77
|
+
avatarSrc && /* @__PURE__ */ jsxRuntime.jsx("img", { src: avatarSrc, alt: "", className: "testimonial__avatar" }),
|
|
78
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
79
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "testimonial__author", children: author }),
|
|
80
|
+
(role || company) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "testimonial__meta", children: [
|
|
81
|
+
role,
|
|
82
|
+
role && company ? " \xB7 " : "",
|
|
83
|
+
company
|
|
84
|
+
] })
|
|
85
|
+
] })
|
|
86
|
+
] })
|
|
87
|
+
] });
|
|
88
|
+
}
|
|
89
|
+
function CategoryNav({ categories, className, ...rest }) {
|
|
90
|
+
const [openId, setOpenId] = React__namespace.useState(null);
|
|
91
|
+
const ref = React__namespace.useRef(null);
|
|
92
|
+
React__namespace.useEffect(() => {
|
|
93
|
+
if (!openId) return;
|
|
94
|
+
const onClick = (e) => {
|
|
95
|
+
if (ref.current && !ref.current.contains(e.target)) setOpenId(null);
|
|
96
|
+
};
|
|
97
|
+
const onKey = (e) => {
|
|
98
|
+
if (e.key === "Escape") setOpenId(null);
|
|
99
|
+
};
|
|
100
|
+
document.addEventListener("mousedown", onClick);
|
|
101
|
+
document.addEventListener("keydown", onKey);
|
|
102
|
+
return () => {
|
|
103
|
+
document.removeEventListener("mousedown", onClick);
|
|
104
|
+
document.removeEventListener("keydown", onKey);
|
|
105
|
+
};
|
|
106
|
+
}, [openId]);
|
|
107
|
+
return /* @__PURE__ */ jsxRuntime.jsx("nav", { ref, className: chunkPASF6T4H_js.cx("category-nav", className), "aria-label": "Categor\xEDas", ...rest, children: /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "category-nav__list", children: categories.map((c) => {
|
|
108
|
+
const hasMega = !!(c.groups && c.groups.length);
|
|
109
|
+
const isOpen = openId === c.id;
|
|
110
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "category-nav__item", children: [
|
|
111
|
+
hasMega ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
112
|
+
"button",
|
|
113
|
+
{
|
|
114
|
+
type: "button",
|
|
115
|
+
className: chunkPASF6T4H_js.cx("category-nav__link", isOpen && "is-open"),
|
|
116
|
+
"aria-expanded": isOpen,
|
|
117
|
+
"aria-haspopup": "true",
|
|
118
|
+
onClick: () => setOpenId(isOpen ? null : c.id),
|
|
119
|
+
children: [
|
|
120
|
+
c.label,
|
|
121
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkRQOTH7I7_js.ChevronDown, { size: 12 })
|
|
122
|
+
]
|
|
123
|
+
}
|
|
124
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("a", { href: c.href ?? "#", className: "category-nav__link", children: c.label }),
|
|
125
|
+
hasMega && isOpen && // Click-to-open instead of hover so the mega menu works
|
|
126
|
+
// identically on touch devices (no hover events) and is
|
|
127
|
+
// accessible to keyboard/screen-reader users. Closes on
|
|
128
|
+
// outside click via the document mousedown listener above.
|
|
129
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "category-nav__mega", children: c.groups.map((g, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "category-nav__group", children: [
|
|
130
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "category-nav__group-title", children: g.title }),
|
|
131
|
+
/* @__PURE__ */ jsxRuntime.jsx("ul", { className: "category-nav__group-items", children: g.items.map((it, j) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx("a", { href: it.href ?? "#", children: it.label }) }, j)) })
|
|
132
|
+
] }, i)) })
|
|
133
|
+
] }, c.id);
|
|
134
|
+
}) }) });
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
exports.CategoryNav = CategoryNav;
|
|
138
|
+
exports.Hero = Hero;
|
|
139
|
+
exports.Testimonial = Testimonial;
|
|
140
|
+
//# sourceMappingURL=chunk-ADQM725E.js.map
|
|
141
|
+
//# sourceMappingURL=chunk-ADQM725E.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Marketing.tsx"],"names":["jsx","cx","jsxs","Star","React","ChevronDown"],"mappings":"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","file":"chunk-ADQM725E.js","sourcesContent":["'use client';\nimport * as React from 'react';\nimport { cx } from '../utils/cx';\nimport { ChevronDown, Star } from './Icons';\n\n// ---------- Hero / Banner ----------------------------------------------\nexport interface HeroProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n eyebrow?: React.ReactNode;\n title: React.ReactNode;\n subtitle?: React.ReactNode;\n actions?: React.ReactNode;\n /** Imagen de fondo. */\n image?: string;\n /** Posiciona el contenido. Default: center. */\n align?: 'start' | 'center' | 'end';\n /** Variantes visuales. */\n tone?: 'brand' | 'inverse' | 'subtle' | 'image';\n /** Altura. */\n size?: 'sm' | 'md' | 'lg';\n}\n\nexport function Hero({\n eyebrow, title, subtitle, actions, image,\n align = 'center', tone = 'brand', size = 'md',\n className, style, children, ...rest\n}: HeroProps) {\n const computedTone = image ? 'image' : tone;\n return (\n <section\n className={cx('hero', `hero--${computedTone}`, `hero--align-${align}`, `hero--${size}`, className)}\n style={image ? { backgroundImage: `url(${image})`, ...style } : style}\n {...rest}\n >\n <div className=\"hero__inner\">\n {eyebrow && <div className=\"hero__eyebrow\">{eyebrow}</div>}\n <h1 className=\"hero__title\">{title}</h1>\n {subtitle && <p className=\"hero__subtitle\">{subtitle}</p>}\n {actions && <div className=\"hero__actions\">{actions}</div>}\n {children}\n </div>\n </section>\n );\n}\n\n// ---------- Testimonial -------------------------------------------------\nexport interface TestimonialProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'role'> {\n quote: React.ReactNode;\n author: React.ReactNode;\n role?: React.ReactNode;\n company?: React.ReactNode;\n avatarSrc?: string;\n rating?: number; // 0..5\n}\n\nexport function Testimonial({\n quote, author, role, company, avatarSrc, rating,\n className, ...rest\n}: TestimonialProps) {\n return (\n <figure className={cx('testimonial', className)} {...rest}>\n {rating != null && (\n <div className=\"testimonial__rating\" aria-label={`${rating} de 5 estrellas`}>\n {Array.from({ length: 5 }, (_, i) => (\n <Star key={i} size={14} className={i < rating ? 'is-filled' : ''} />\n ))}\n </div>\n )}\n <blockquote className=\"testimonial__quote\">\"{quote}\"</blockquote>\n <figcaption className=\"testimonial__caption\">\n {avatarSrc && <img src={avatarSrc} alt=\"\" className=\"testimonial__avatar\" />}\n <div>\n <div className=\"testimonial__author\">{author}</div>\n {(role || company) && (\n <div className=\"testimonial__meta\">\n {role}{role && company ? ' · ' : ''}{company}\n </div>\n )}\n </div>\n </figcaption>\n </figure>\n );\n}\n\n// ---------- CategoryNav (mega menu) ------------------------------------\nexport interface CategoryItem {\n id: string;\n label: React.ReactNode;\n href?: string;\n /** Subcategorías agrupadas (mega menu). */\n groups?: Array<{ title: React.ReactNode; items: Array<{ label: React.ReactNode; href?: string }> }>;\n /** Si tiene groups, se muestra el mega menu en hover. */\n}\n\nexport interface CategoryNavProps extends React.HTMLAttributes<HTMLElement> {\n categories: CategoryItem[];\n}\n\nexport function CategoryNav({ categories, className, ...rest }: CategoryNavProps) {\n const [openId, setOpenId] = React.useState<string | null>(null);\n const ref = React.useRef<HTMLElement>(null);\n\n React.useEffect(() => {\n if (!openId) return;\n const onClick = (e: MouseEvent) => {\n if (ref.current && !ref.current.contains(e.target as Node)) setOpenId(null);\n };\n const onKey = (e: KeyboardEvent) => { if (e.key === 'Escape') setOpenId(null); };\n document.addEventListener('mousedown', onClick);\n document.addEventListener('keydown', onKey);\n return () => {\n document.removeEventListener('mousedown', onClick);\n document.removeEventListener('keydown', onKey);\n };\n }, [openId]);\n\n return (\n <nav ref={ref} className={cx('category-nav', className)} aria-label=\"Categorías\" {...rest}>\n <ul className=\"category-nav__list\">\n {categories.map((c) => {\n const hasMega = !!(c.groups && c.groups.length);\n const isOpen = openId === c.id;\n return (\n <li key={c.id} className=\"category-nav__item\">\n {hasMega ? (\n <button\n type=\"button\"\n className={cx('category-nav__link', isOpen && 'is-open')}\n aria-expanded={isOpen}\n aria-haspopup=\"true\"\n onClick={() => setOpenId(isOpen ? null : c.id)}\n >\n {c.label}\n <ChevronDown size={12} />\n </button>\n ) : (\n <a href={c.href ?? '#'} className=\"category-nav__link\">{c.label}</a>\n )}\n {hasMega && isOpen && (\n // Click-to-open instead of hover so the mega menu works\n // identically on touch devices (no hover events) and is\n // accessible to keyboard/screen-reader users. Closes on\n // outside click via the document mousedown listener above.\n <div className=\"category-nav__mega\">\n {c.groups!.map((g, i) => (\n <div key={i} className=\"category-nav__group\">\n <div className=\"category-nav__group-title\">{g.title}</div>\n <ul className=\"category-nav__group-items\">\n {g.items.map((it, j) => (\n <li key={j}><a href={it.href ?? '#'}>{it.label}</a></li>\n ))}\n </ul>\n </div>\n ))}\n </div>\n )}\n </li>\n );\n })}\n </ul>\n </nav>\n );\n}\n"]}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkPASF6T4H_js = require('./chunk-PASF6T4H.js');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
6
|
+
|
|
7
|
+
function _interopNamespace(e) {
|
|
8
|
+
if (e && e.__esModule) return e;
|
|
9
|
+
var n = Object.create(null);
|
|
10
|
+
if (e) {
|
|
11
|
+
Object.keys(e).forEach(function (k) {
|
|
12
|
+
if (k !== 'default') {
|
|
13
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
14
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
get: function () { return e[k]; }
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
n.default = e;
|
|
22
|
+
return Object.freeze(n);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
26
|
+
|
|
27
|
+
var CollapsibleContext = React__namespace.createContext(null);
|
|
28
|
+
var Collapsible = React__namespace.forwardRef(function Collapsible2({ open: openProp, defaultOpen = false, onOpenChange, className, children, ...rest }, ref) {
|
|
29
|
+
const [internal, setInternal] = React__namespace.useState(defaultOpen);
|
|
30
|
+
const isControlled = openProp !== void 0;
|
|
31
|
+
const open = isControlled ? openProp : internal;
|
|
32
|
+
const reactId = React__namespace.useId();
|
|
33
|
+
const ids = React__namespace.useMemo(
|
|
34
|
+
() => ({ contentId: `collapsible-content-${reactId}`, triggerId: `collapsible-trigger-${reactId}` }),
|
|
35
|
+
[reactId]
|
|
36
|
+
);
|
|
37
|
+
const toggle = () => {
|
|
38
|
+
const next = !open;
|
|
39
|
+
if (!isControlled) setInternal(next);
|
|
40
|
+
onOpenChange?.(next);
|
|
41
|
+
};
|
|
42
|
+
return /* @__PURE__ */ jsxRuntime.jsx(CollapsibleContext.Provider, { value: { open, toggle, ...ids }, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
43
|
+
"div",
|
|
44
|
+
{
|
|
45
|
+
ref,
|
|
46
|
+
className: chunkPASF6T4H_js.cx("collapsible", open && "is-open", className),
|
|
47
|
+
"data-state": open ? "open" : "closed",
|
|
48
|
+
...rest,
|
|
49
|
+
children
|
|
50
|
+
}
|
|
51
|
+
) });
|
|
52
|
+
});
|
|
53
|
+
var CollapsibleTrigger = React__namespace.forwardRef(
|
|
54
|
+
function CollapsibleTrigger2({ className, children, onClick, ...rest }, ref) {
|
|
55
|
+
const ctx = React__namespace.useContext(CollapsibleContext);
|
|
56
|
+
if (!ctx) throw new Error("<CollapsibleTrigger> must be used inside <Collapsible>");
|
|
57
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
58
|
+
"button",
|
|
59
|
+
{
|
|
60
|
+
ref,
|
|
61
|
+
type: "button",
|
|
62
|
+
id: ctx.triggerId,
|
|
63
|
+
"aria-expanded": ctx.open,
|
|
64
|
+
"aria-controls": ctx.contentId,
|
|
65
|
+
"data-state": ctx.open ? "open" : "closed",
|
|
66
|
+
className: chunkPASF6T4H_js.cx("collapsible__trigger", className),
|
|
67
|
+
onClick: (e) => {
|
|
68
|
+
ctx.toggle();
|
|
69
|
+
onClick?.(e);
|
|
70
|
+
},
|
|
71
|
+
...rest,
|
|
72
|
+
children
|
|
73
|
+
}
|
|
74
|
+
);
|
|
75
|
+
}
|
|
76
|
+
);
|
|
77
|
+
var CollapsibleContent = React__namespace.forwardRef(
|
|
78
|
+
function CollapsibleContent2({ className, children, ...rest }, ref) {
|
|
79
|
+
const ctx = React__namespace.useContext(CollapsibleContext);
|
|
80
|
+
if (!ctx) throw new Error("<CollapsibleContent> must be used inside <Collapsible>");
|
|
81
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
82
|
+
"div",
|
|
83
|
+
{
|
|
84
|
+
ref,
|
|
85
|
+
id: ctx.contentId,
|
|
86
|
+
role: "region",
|
|
87
|
+
"aria-labelledby": ctx.triggerId,
|
|
88
|
+
"data-state": ctx.open ? "open" : "closed",
|
|
89
|
+
hidden: !ctx.open || void 0,
|
|
90
|
+
className: chunkPASF6T4H_js.cx("collapsible__content", className),
|
|
91
|
+
...rest,
|
|
92
|
+
children
|
|
93
|
+
}
|
|
94
|
+
);
|
|
95
|
+
}
|
|
96
|
+
);
|
|
97
|
+
|
|
98
|
+
exports.Collapsible = Collapsible;
|
|
99
|
+
exports.CollapsibleContent = CollapsibleContent;
|
|
100
|
+
exports.CollapsibleTrigger = CollapsibleTrigger;
|
|
101
|
+
//# sourceMappingURL=chunk-AWYCGJJX.js.map
|
|
102
|
+
//# sourceMappingURL=chunk-AWYCGJJX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Collapsible.tsx"],"names":["React","Collapsible","jsx","cx","CollapsibleTrigger","CollapsibleContent"],"mappings":"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","file":"chunk-AWYCGJJX.js","sourcesContent":["'use client';\nimport * as React from 'react';\nimport { cx } from '../utils/cx';\n\ninterface CollapsibleContextValue {\n open: boolean;\n toggle: () => void;\n contentId: string;\n triggerId: string;\n}\n\nconst CollapsibleContext = React.createContext<CollapsibleContextValue | null>(null);\n\nexport interface CollapsibleProps extends React.HTMLAttributes<HTMLDivElement> {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nexport const Collapsible = React.forwardRef<HTMLDivElement, CollapsibleProps>(function Collapsible(\n { open: openProp, defaultOpen = false, onOpenChange, className, children, ...rest },\n ref\n) {\n const [internal, setInternal] = React.useState(defaultOpen);\n const isControlled = openProp !== undefined;\n const open = isControlled ? openProp : internal;\n const reactId = React.useId();\n const ids = React.useMemo(\n () => ({ contentId: `collapsible-content-${reactId}`, triggerId: `collapsible-trigger-${reactId}` }),\n [reactId]\n );\n\n const toggle = () => {\n const next = !open;\n if (!isControlled) setInternal(next);\n onOpenChange?.(next);\n };\n\n return (\n <CollapsibleContext.Provider value={{ open, toggle, ...ids }}>\n <div\n ref={ref}\n className={cx('collapsible', open && 'is-open', className)}\n data-state={open ? 'open' : 'closed'}\n {...rest}\n >\n {children}\n </div>\n </CollapsibleContext.Provider>\n );\n});\n\nexport const CollapsibleTrigger = React.forwardRef<HTMLButtonElement, React.ButtonHTMLAttributes<HTMLButtonElement>>(\n function CollapsibleTrigger({ className, children, onClick, ...rest }, ref) {\n const ctx = React.useContext(CollapsibleContext);\n if (!ctx) throw new Error('<CollapsibleTrigger> must be used inside <Collapsible>');\n return (\n <button\n ref={ref}\n type=\"button\"\n id={ctx.triggerId}\n aria-expanded={ctx.open}\n aria-controls={ctx.contentId}\n data-state={ctx.open ? 'open' : 'closed'}\n className={cx('collapsible__trigger', className)}\n onClick={(e) => {\n ctx.toggle();\n onClick?.(e);\n }}\n {...rest}\n >\n {children}\n </button>\n );\n }\n);\n\nexport const CollapsibleContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n function CollapsibleContent({ className, children, ...rest }, ref) {\n const ctx = React.useContext(CollapsibleContext);\n if (!ctx) throw new Error('<CollapsibleContent> must be used inside <Collapsible>');\n return (\n <div\n ref={ref}\n id={ctx.contentId}\n role=\"region\"\n aria-labelledby={ctx.triggerId}\n data-state={ctx.open ? 'open' : 'closed'}\n hidden={!ctx.open || undefined}\n className={cx('collapsible__content', className)}\n {...rest}\n >\n {children}\n </div>\n );\n }\n);\n"]}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkPASF6T4H_js = require('./chunk-PASF6T4H.js');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
6
|
+
|
|
7
|
+
function _interopNamespace(e) {
|
|
8
|
+
if (e && e.__esModule) return e;
|
|
9
|
+
var n = Object.create(null);
|
|
10
|
+
if (e) {
|
|
11
|
+
Object.keys(e).forEach(function (k) {
|
|
12
|
+
if (k !== 'default') {
|
|
13
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
14
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
get: function () { return e[k]; }
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
n.default = e;
|
|
22
|
+
return Object.freeze(n);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
26
|
+
|
|
27
|
+
var Toggle = React__namespace.forwardRef(function Toggle2({ pressed, defaultPressed, onPressedChange, size = "md", variant = "default", className, children, onClick, ...rest }, ref) {
|
|
28
|
+
const [internal, setInternal] = React__namespace.useState(defaultPressed ?? false);
|
|
29
|
+
const isControlled = pressed !== void 0;
|
|
30
|
+
const value = isControlled ? pressed : internal;
|
|
31
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
32
|
+
"button",
|
|
33
|
+
{
|
|
34
|
+
ref,
|
|
35
|
+
type: "button",
|
|
36
|
+
"aria-pressed": value,
|
|
37
|
+
"data-state": value ? "on" : "off",
|
|
38
|
+
className: chunkPASF6T4H_js.cx("toggle", `toggle--${size}`, `toggle--${variant}`, value && "is-pressed", className),
|
|
39
|
+
onClick: (e) => {
|
|
40
|
+
const next = !value;
|
|
41
|
+
if (!isControlled) setInternal(next);
|
|
42
|
+
onPressedChange?.(next);
|
|
43
|
+
onClick?.(e);
|
|
44
|
+
},
|
|
45
|
+
...rest,
|
|
46
|
+
children
|
|
47
|
+
}
|
|
48
|
+
);
|
|
49
|
+
});
|
|
50
|
+
var ToggleGroupContext = React__namespace.createContext(null);
|
|
51
|
+
function ToggleGroup(props) {
|
|
52
|
+
const { type, size = "md", variant = "default", disabled = false, className, ariaLabel, children } = props;
|
|
53
|
+
const initial = type === "single" ? props.defaultValue ?? "" : props.defaultValue ?? [];
|
|
54
|
+
const [internal, setInternal] = React__namespace.useState(initial);
|
|
55
|
+
const isControlled = props.value !== void 0 && props.value !== null;
|
|
56
|
+
const current = isControlled ? type === "single" ? props.value ?? "" : props.value ?? [] : internal;
|
|
57
|
+
const setValue = (next) => {
|
|
58
|
+
if (!isControlled) setInternal(next);
|
|
59
|
+
if (type === "single") {
|
|
60
|
+
const v = next || null;
|
|
61
|
+
props.onChange?.(v);
|
|
62
|
+
} else {
|
|
63
|
+
props.onChange?.(next);
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
return /* @__PURE__ */ jsxRuntime.jsx(ToggleGroupContext.Provider, { value: { type, value: current, setValue, size, variant, disabled }, children: /* @__PURE__ */ jsxRuntime.jsx("div", { role: "group", "aria-label": ariaLabel, className: chunkPASF6T4H_js.cx("toggle-group", className), children }) });
|
|
67
|
+
}
|
|
68
|
+
var ToggleGroupItem = React__namespace.forwardRef(function ToggleGroupItem2({ value, className, children, disabled: itemDisabled, ...rest }, ref) {
|
|
69
|
+
const ctx = React__namespace.useContext(ToggleGroupContext);
|
|
70
|
+
if (!ctx) throw new Error("ToggleGroupItem must be used inside ToggleGroup");
|
|
71
|
+
const isPressed = ctx.type === "single" ? ctx.value === value : Array.isArray(ctx.value) && ctx.value.includes(value);
|
|
72
|
+
const onClick = () => {
|
|
73
|
+
if (ctx.type === "single") {
|
|
74
|
+
ctx.setValue(isPressed ? "" : value);
|
|
75
|
+
} else {
|
|
76
|
+
const arr = ctx.value ?? [];
|
|
77
|
+
ctx.setValue(isPressed ? arr.filter((v) => v !== value) : [...arr, value]);
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
81
|
+
"button",
|
|
82
|
+
{
|
|
83
|
+
ref,
|
|
84
|
+
type: "button",
|
|
85
|
+
"aria-pressed": isPressed,
|
|
86
|
+
"data-state": isPressed ? "on" : "off",
|
|
87
|
+
disabled: ctx.disabled || itemDisabled,
|
|
88
|
+
className: chunkPASF6T4H_js.cx("toggle", `toggle--${ctx.size}`, `toggle--${ctx.variant}`, "toggle-group__item", isPressed && "is-pressed", className),
|
|
89
|
+
onClick,
|
|
90
|
+
...rest,
|
|
91
|
+
children
|
|
92
|
+
}
|
|
93
|
+
);
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
exports.Toggle = Toggle;
|
|
97
|
+
exports.ToggleGroup = ToggleGroup;
|
|
98
|
+
exports.ToggleGroupItem = ToggleGroupItem;
|
|
99
|
+
//# sourceMappingURL=chunk-AZBX7UFI.js.map
|
|
100
|
+
//# sourceMappingURL=chunk-AZBX7UFI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Toggle.tsx"],"names":["React","Toggle","jsx","cx","ToggleGroupItem"],"mappings":"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","file":"chunk-AZBX7UFI.js","sourcesContent":["'use client';\nimport * as React from 'react';\nimport { cx } from '../utils/cx';\n\nexport type ToggleSize = 'sm' | 'md' | 'lg';\nexport type ToggleVariant = 'default' | 'outline';\n\nexport interface ToggleProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'onChange'> {\n pressed?: boolean;\n defaultPressed?: boolean;\n onPressedChange?: (pressed: boolean) => void;\n size?: ToggleSize;\n variant?: ToggleVariant;\n}\n\nexport const Toggle = React.forwardRef<HTMLButtonElement, ToggleProps>(function Toggle(\n { pressed, defaultPressed, onPressedChange, size = 'md', variant = 'default', className, children, onClick, ...rest },\n ref\n) {\n const [internal, setInternal] = React.useState(defaultPressed ?? false);\n const isControlled = pressed !== undefined;\n const value = isControlled ? pressed : internal;\n\n return (\n <button\n ref={ref}\n type=\"button\"\n aria-pressed={value}\n data-state={value ? 'on' : 'off'}\n className={cx('toggle', `toggle--${size}`, `toggle--${variant}`, value && 'is-pressed', className)}\n onClick={(e) => {\n const next = !value;\n if (!isControlled) setInternal(next);\n onPressedChange?.(next);\n onClick?.(e);\n }}\n {...rest}\n >\n {children}\n </button>\n );\n});\n\ninterface ToggleGroupContextValue {\n type: 'single' | 'multiple';\n value: string | string[];\n setValue: (next: string | string[]) => void;\n size: ToggleSize;\n variant: ToggleVariant;\n disabled: boolean;\n}\nconst ToggleGroupContext = React.createContext<ToggleGroupContextValue | null>(null);\n\ninterface ToggleGroupBaseProps {\n size?: ToggleSize;\n variant?: ToggleVariant;\n disabled?: boolean;\n className?: string;\n ariaLabel?: string;\n children: React.ReactNode;\n}\n\nexport interface ToggleGroupSingleProps extends ToggleGroupBaseProps {\n type: 'single';\n value?: string | null;\n defaultValue?: string;\n onChange?: (value: string | null) => void;\n rovingFocus?: boolean;\n}\n\nexport interface ToggleGroupMultipleProps extends ToggleGroupBaseProps {\n type: 'multiple';\n value?: string[];\n defaultValue?: string[];\n onChange?: (value: string[]) => void;\n}\n\nexport type ToggleGroupProps = ToggleGroupSingleProps | ToggleGroupMultipleProps;\n\nexport function ToggleGroup(props: ToggleGroupProps) {\n const { type, size = 'md', variant = 'default', disabled = false, className, ariaLabel, children } = props;\n\n const initial: string | string[] =\n type === 'single' ? (props.defaultValue ?? '') : (props.defaultValue ?? []);\n const [internal, setInternal] = React.useState<string | string[]>(initial);\n\n const isControlled = props.value !== undefined && props.value !== null;\n const current: string | string[] = isControlled\n ? type === 'single'\n ? (props.value ?? '')\n : (props.value ?? [])\n : internal;\n\n const setValue = (next: string | string[]) => {\n if (!isControlled) setInternal(next);\n if (type === 'single') {\n const v = (next as string) || null;\n (props as ToggleGroupSingleProps).onChange?.(v);\n } else {\n (props as ToggleGroupMultipleProps).onChange?.(next as string[]);\n }\n };\n\n return (\n <ToggleGroupContext.Provider value={{ type, value: current, setValue, size, variant, disabled }}>\n <div role=\"group\" aria-label={ariaLabel} className={cx('toggle-group', className)}>\n {children}\n </div>\n </ToggleGroupContext.Provider>\n );\n}\n\nexport interface ToggleGroupItemProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'value'> {\n value: string;\n}\n\nexport const ToggleGroupItem = React.forwardRef<HTMLButtonElement, ToggleGroupItemProps>(function ToggleGroupItem(\n { value, className, children, disabled: itemDisabled, ...rest },\n ref\n) {\n const ctx = React.useContext(ToggleGroupContext);\n if (!ctx) throw new Error('ToggleGroupItem must be used inside ToggleGroup');\n const isPressed =\n ctx.type === 'single'\n ? ctx.value === value\n : Array.isArray(ctx.value) && ctx.value.includes(value);\n\n const onClick = () => {\n if (ctx.type === 'single') {\n ctx.setValue(isPressed ? '' : value);\n } else {\n const arr = (ctx.value as string[]) ?? [];\n ctx.setValue(isPressed ? arr.filter((v) => v !== value) : [...arr, value]);\n }\n };\n\n return (\n <button\n ref={ref}\n type=\"button\"\n aria-pressed={isPressed}\n data-state={isPressed ? 'on' : 'off'}\n disabled={ctx.disabled || itemDisabled}\n className={cx('toggle', `toggle--${ctx.size}`, `toggle--${ctx.variant}`, 'toggle-group__item', isPressed && 'is-pressed', className)}\n onClick={onClick}\n {...rest}\n >\n {children}\n </button>\n );\n});\n"]}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { getBrand } from './chunk-5GEWIK4T.mjs';
|
|
2
|
+
|
|
3
|
+
// src/utils/dateFormat.ts
|
|
4
|
+
function detectFormatFromLocale(locale) {
|
|
5
|
+
try {
|
|
6
|
+
const parts = new Intl.DateTimeFormat(locale).formatToParts(new Date(2024, 0, 2));
|
|
7
|
+
const order = [];
|
|
8
|
+
for (const p of parts) {
|
|
9
|
+
if (p.type === "year") order.push("y");
|
|
10
|
+
else if (p.type === "month") order.push("m");
|
|
11
|
+
else if (p.type === "day") order.push("d");
|
|
12
|
+
}
|
|
13
|
+
const key = order.join("");
|
|
14
|
+
if (key === "ymd") return "iso";
|
|
15
|
+
if (key === "mdy") return "mdy";
|
|
16
|
+
return "dmy";
|
|
17
|
+
} catch {
|
|
18
|
+
return "dmy";
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function resolveDateFormat(format) {
|
|
22
|
+
if (format === "auto") return detectFormatFromLocale(getBrand().locale);
|
|
23
|
+
return format;
|
|
24
|
+
}
|
|
25
|
+
var PLACEHOLDERS = {
|
|
26
|
+
iso: "aaaa-mm-dd",
|
|
27
|
+
dmy: "dd-mm-aaaa",
|
|
28
|
+
mdy: "mm-dd-aaaa"
|
|
29
|
+
};
|
|
30
|
+
function dateFormatPlaceholder(format) {
|
|
31
|
+
return PLACEHOLDERS[format];
|
|
32
|
+
}
|
|
33
|
+
function formatDate(d, format) {
|
|
34
|
+
const yyyy = d.getFullYear();
|
|
35
|
+
const mm = String(d.getMonth() + 1).padStart(2, "0");
|
|
36
|
+
const dd = String(d.getDate()).padStart(2, "0");
|
|
37
|
+
if (format === "iso") return `${yyyy}-${mm}-${dd}`;
|
|
38
|
+
if (format === "dmy") return `${dd}-${mm}-${yyyy}`;
|
|
39
|
+
return `${mm}-${dd}-${yyyy}`;
|
|
40
|
+
}
|
|
41
|
+
function parseDate(s, format) {
|
|
42
|
+
const trimmed = s.trim();
|
|
43
|
+
if (!trimmed) return null;
|
|
44
|
+
const iso = trimmed.match(/^(\d{4})-(\d{2})-(\d{2})$/);
|
|
45
|
+
if (iso) {
|
|
46
|
+
return safeDate(Number(iso[1]), Number(iso[2]), Number(iso[3]));
|
|
47
|
+
}
|
|
48
|
+
const m = trimmed.match(/^(\d{1,4})[\-\/.](\d{1,2})[\-\/.](\d{1,4})$/);
|
|
49
|
+
if (!m) return null;
|
|
50
|
+
let y, mo, d;
|
|
51
|
+
if (format === "iso") {
|
|
52
|
+
y = Number(m[1]);
|
|
53
|
+
mo = Number(m[2]);
|
|
54
|
+
d = Number(m[3]);
|
|
55
|
+
} else if (format === "dmy") {
|
|
56
|
+
d = Number(m[1]);
|
|
57
|
+
mo = Number(m[2]);
|
|
58
|
+
y = Number(m[3]);
|
|
59
|
+
} else {
|
|
60
|
+
mo = Number(m[1]);
|
|
61
|
+
d = Number(m[2]);
|
|
62
|
+
y = Number(m[3]);
|
|
63
|
+
}
|
|
64
|
+
if (y < 100) y += 2e3;
|
|
65
|
+
return safeDate(y, mo, d);
|
|
66
|
+
}
|
|
67
|
+
function safeDate(y, mo, d) {
|
|
68
|
+
if (mo < 1 || mo > 12 || d < 1 || d > 31) return null;
|
|
69
|
+
const dt = new Date(y, mo - 1, d);
|
|
70
|
+
if (isNaN(dt.getTime()) || dt.getFullYear() !== y || dt.getMonth() !== mo - 1 || dt.getDate() !== d) {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
return dt;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export { dateFormatPlaceholder, detectFormatFromLocale, formatDate, parseDate, resolveDateFormat };
|
|
77
|
+
//# sourceMappingURL=chunk-BCIZLGM3.mjs.map
|
|
78
|
+
//# sourceMappingURL=chunk-BCIZLGM3.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/dateFormat.ts"],"names":[],"mappings":"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","file":"chunk-BCIZLGM3.mjs","sourcesContent":["import { getBrand } from '../brand';\n\n/**\n * Date display formats supported by the kit's date pickers.\n *\n * - `iso` → `2026-05-02` (ISO 8601, year-month-day)\n * - `dmy` → `02-05-2026` (day-month-year, common in es-CL, es-ES, en-GB, pt-BR)\n * - `mdy` → `05-02-2026` (month-day-year, en-US)\n * - `auto` → derived from `configureBrand().locale` via Intl.DateTimeFormat\n */\nexport type DateFormat = 'iso' | 'dmy' | 'mdy' | 'auto';\n\n/** A concrete (non-`auto`) format. */\nexport type ResolvedDateFormat = Exclude<DateFormat, 'auto'>;\n\n/**\n * Inspects the locale's date-part order using `Intl.DateTimeFormat.formatToParts`.\n * No hardcoded country lists — uses the runtime's CLDR data.\n */\nexport function detectFormatFromLocale(locale: string): ResolvedDateFormat {\n try {\n const parts = new Intl.DateTimeFormat(locale).formatToParts(new Date(2024, 0, 2));\n const order: string[] = [];\n for (const p of parts) {\n if (p.type === 'year') order.push('y');\n else if (p.type === 'month') order.push('m');\n else if (p.type === 'day') order.push('d');\n }\n const key = order.join('');\n if (key === 'ymd') return 'iso';\n if (key === 'mdy') return 'mdy';\n return 'dmy';\n } catch {\n return 'dmy';\n }\n}\n\n/** Resolves `'auto'` against the current `configureBrand().locale`. */\nexport function resolveDateFormat(format: DateFormat): ResolvedDateFormat {\n if (format === 'auto') return detectFormatFromLocale(getBrand().locale);\n return format;\n}\n\nconst PLACEHOLDERS: Record<ResolvedDateFormat, string> = {\n iso: 'aaaa-mm-dd',\n dmy: 'dd-mm-aaaa',\n mdy: 'mm-dd-aaaa',\n};\n\n/** Localized placeholder for the given resolved format. */\nexport function dateFormatPlaceholder(format: ResolvedDateFormat): string {\n return PLACEHOLDERS[format];\n}\n\n/** Format a Date as a string in the given resolved format. Always uses `-` as separator. */\nexport function formatDate(d: Date, format: ResolvedDateFormat): string {\n const yyyy = d.getFullYear();\n const mm = String(d.getMonth() + 1).padStart(2, '0');\n const dd = String(d.getDate()).padStart(2, '0');\n if (format === 'iso') return `${yyyy}-${mm}-${dd}`;\n if (format === 'dmy') return `${dd}-${mm}-${yyyy}`;\n return `${mm}-${dd}-${yyyy}`;\n}\n\n/**\n * Parse a user-typed date string. Tolerant of `-`, `/`, `.` separators.\n *\n * Always accepts ISO `aaaa-mm-dd` regardless of `format` (it's the canonical\n * wire format, used by APIs and `<input type=\"date\">`). Otherwise, interprets\n * the parts according to the provided format.\n *\n * Returns `null` for invalid dates (out of range, non-existent days like Feb 30,\n * unparseable strings).\n */\nexport function parseDate(s: string, format: ResolvedDateFormat): Date | null {\n const trimmed = s.trim();\n if (!trimmed) return null;\n\n // Always accept ISO as a fallback (wire format).\n const iso = trimmed.match(/^(\\d{4})-(\\d{2})-(\\d{2})$/);\n if (iso) {\n return safeDate(Number(iso[1]), Number(iso[2]), Number(iso[3]));\n }\n\n const m = trimmed.match(/^(\\d{1,4})[\\-\\/.](\\d{1,2})[\\-\\/.](\\d{1,4})$/);\n if (!m) return null;\n\n let y: number, mo: number, d: number;\n if (format === 'iso') {\n y = Number(m[1]); mo = Number(m[2]); d = Number(m[3]);\n } else if (format === 'dmy') {\n d = Number(m[1]); mo = Number(m[2]); y = Number(m[3]);\n } else {\n mo = Number(m[1]); d = Number(m[2]); y = Number(m[3]);\n }\n\n // 2-digit years: assume 2000s.\n if (y < 100) y += 2000;\n\n return safeDate(y, mo, d);\n}\n\nfunction safeDate(y: number, mo: number, d: number): Date | null {\n if (mo < 1 || mo > 12 || d < 1 || d > 31) return null;\n const dt = new Date(y, mo - 1, d);\n if (\n isNaN(dt.getTime()) ||\n dt.getFullYear() !== y ||\n dt.getMonth() !== mo - 1 ||\n dt.getDate() !== d\n ) {\n return null;\n }\n return dt;\n}\n"]}
|