@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,177 @@
|
|
|
1
|
+
import { Avatar } from './chunk-NUURPO3J.mjs';
|
|
2
|
+
import { useLocale } from './chunk-ZRFSTYRL.mjs';
|
|
3
|
+
import { ChevronDown, ChevronRight } from './chunk-CIBJKJV3.mjs';
|
|
4
|
+
import { cx } from './chunk-IEPCH3JB.mjs';
|
|
5
|
+
import * as React from 'react';
|
|
6
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
7
|
+
|
|
8
|
+
function UserCell({ name, meta, avatarSrc, avatarAlt, size = 32, className, ...rest }) {
|
|
9
|
+
const initialsName = typeof name === "string" ? name : void 0;
|
|
10
|
+
return /* @__PURE__ */ jsxs("div", { className: cx("user-cell", className), ...rest, children: [
|
|
11
|
+
/* @__PURE__ */ jsx(Avatar, { src: avatarSrc, alt: avatarAlt, name: initialsName, size }),
|
|
12
|
+
/* @__PURE__ */ jsxs("div", { className: "user-cell__body", children: [
|
|
13
|
+
/* @__PURE__ */ jsx("div", { className: "user-cell__name", children: name }),
|
|
14
|
+
meta && /* @__PURE__ */ jsx("div", { className: "user-cell__meta", children: meta })
|
|
15
|
+
] })
|
|
16
|
+
] });
|
|
17
|
+
}
|
|
18
|
+
function StatusIndicator({ tone = "success", pulse, label, className, ...rest }) {
|
|
19
|
+
return /* @__PURE__ */ jsxs("span", { className: cx("status-indicator", className), role: "status", ...rest, children: [
|
|
20
|
+
/* @__PURE__ */ jsx("span", { className: cx("status-indicator__dot", `status-indicator__dot--${tone}`, pulse && "is-pulsing"), "aria-hidden": "true" }),
|
|
21
|
+
label && /* @__PURE__ */ jsx("span", { className: "status-indicator__label", children: label })
|
|
22
|
+
] });
|
|
23
|
+
}
|
|
24
|
+
var Timeline = React.forwardRef(
|
|
25
|
+
function Timeline2({ className, ...rest }, ref) {
|
|
26
|
+
return /* @__PURE__ */ jsx("ol", { ref, className: cx("timeline", className), ...rest });
|
|
27
|
+
}
|
|
28
|
+
);
|
|
29
|
+
function TimelineItem({ icon, tone = "neutral", title, meta, children, className, ...rest }) {
|
|
30
|
+
return /* @__PURE__ */ jsxs("li", { className: cx("timeline__item", className), ...rest, children: [
|
|
31
|
+
/* @__PURE__ */ jsx("span", { className: cx("timeline__marker", `timeline__marker--${tone}`), "aria-hidden": "true", children: icon }),
|
|
32
|
+
/* @__PURE__ */ jsxs("div", { className: "timeline__body", children: [
|
|
33
|
+
/* @__PURE__ */ jsx("div", { className: "timeline__title", children: title }),
|
|
34
|
+
meta && /* @__PURE__ */ jsx("div", { className: "timeline__meta", children: meta }),
|
|
35
|
+
children && /* @__PURE__ */ jsx("div", { className: "timeline__content", children })
|
|
36
|
+
] })
|
|
37
|
+
] });
|
|
38
|
+
}
|
|
39
|
+
function Tree({ nodes, defaultExpanded = [], selectedId, onSelect, className, ...rest }) {
|
|
40
|
+
const [expanded, setExpanded] = React.useState(new Set(defaultExpanded));
|
|
41
|
+
const toggle = (id) => {
|
|
42
|
+
setExpanded((curr) => {
|
|
43
|
+
const next = new Set(curr);
|
|
44
|
+
if (next.has(id)) next.delete(id);
|
|
45
|
+
else next.add(id);
|
|
46
|
+
return next;
|
|
47
|
+
});
|
|
48
|
+
};
|
|
49
|
+
return /* @__PURE__ */ jsx("ul", { role: "tree", className: cx("tree", className), ...rest, children: nodes.map((n) => /* @__PURE__ */ jsx(TreeNode, { node: n, depth: 0, expanded, toggle, selectedId, onSelect }, n.id)) });
|
|
50
|
+
}
|
|
51
|
+
function TreeNode({ node, depth, expanded, toggle, selectedId, onSelect }) {
|
|
52
|
+
const hasChildren = !!(node.children && node.children.length);
|
|
53
|
+
const isOpen = expanded.has(node.id);
|
|
54
|
+
const isSelected = selectedId === node.id;
|
|
55
|
+
const t = useLocale();
|
|
56
|
+
return /* @__PURE__ */ jsxs("li", { role: "treeitem", "aria-expanded": hasChildren ? isOpen : void 0, "aria-selected": isSelected, className: "tree__node", children: [
|
|
57
|
+
/* @__PURE__ */ jsxs(
|
|
58
|
+
"div",
|
|
59
|
+
{
|
|
60
|
+
className: cx("tree__row", isSelected && "is-selected"),
|
|
61
|
+
style: { paddingLeft: `calc(var(--space-2) + var(--space-4) * ${depth})` },
|
|
62
|
+
onClick: () => onSelect?.(node.id),
|
|
63
|
+
children: [
|
|
64
|
+
hasChildren ? /* @__PURE__ */ jsx(
|
|
65
|
+
"button",
|
|
66
|
+
{
|
|
67
|
+
type: "button",
|
|
68
|
+
className: "tree__chev",
|
|
69
|
+
"aria-label": isOpen ? t["calendar.collapse"] : t["calendar.expand"],
|
|
70
|
+
onClick: (e) => {
|
|
71
|
+
e.stopPropagation();
|
|
72
|
+
toggle(node.id);
|
|
73
|
+
},
|
|
74
|
+
children: isOpen ? /* @__PURE__ */ jsx(ChevronDown, { size: 14 }) : /* @__PURE__ */ jsx(ChevronRight, { size: 14 })
|
|
75
|
+
}
|
|
76
|
+
) : /* @__PURE__ */ jsx("span", { className: "tree__chev tree__chev--placeholder", "aria-hidden": "true" }),
|
|
77
|
+
node.icon && /* @__PURE__ */ jsx("span", { className: "tree__icon", "aria-hidden": "true", children: node.icon }),
|
|
78
|
+
/* @__PURE__ */ jsx("span", { className: "tree__label", children: node.label }),
|
|
79
|
+
node.meta && /* @__PURE__ */ jsx("span", { className: "tree__meta", children: node.meta })
|
|
80
|
+
]
|
|
81
|
+
}
|
|
82
|
+
),
|
|
83
|
+
hasChildren && isOpen && /* @__PURE__ */ jsx("ul", { role: "group", className: "tree__children", children: node.children.map((c) => /* @__PURE__ */ jsx(TreeNode, { node: c, depth: depth + 1, expanded, toggle, selectedId, onSelect }, c.id)) })
|
|
84
|
+
] });
|
|
85
|
+
}
|
|
86
|
+
function startOfMonth(d) {
|
|
87
|
+
return new Date(d.getFullYear(), d.getMonth(), 1);
|
|
88
|
+
}
|
|
89
|
+
function addMonths(d, n) {
|
|
90
|
+
return new Date(d.getFullYear(), d.getMonth() + n, 1);
|
|
91
|
+
}
|
|
92
|
+
function isSameDay(a, b) {
|
|
93
|
+
return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();
|
|
94
|
+
}
|
|
95
|
+
function Calendar({ month: monthProp, events = [], onMonthChange, onDayClick, className, ...rest }) {
|
|
96
|
+
const [internalMonth, setInternalMonth] = React.useState(() => startOfMonth(monthProp ?? /* @__PURE__ */ new Date()));
|
|
97
|
+
const month = monthProp ? startOfMonth(monthProp) : internalMonth;
|
|
98
|
+
const t = useLocale();
|
|
99
|
+
const weekdays = t["calendar.weekdays"];
|
|
100
|
+
const months = t["calendar.months"];
|
|
101
|
+
const setMonth = (m) => {
|
|
102
|
+
if (!monthProp) setInternalMonth(m);
|
|
103
|
+
onMonthChange?.(m);
|
|
104
|
+
};
|
|
105
|
+
const today = /* @__PURE__ */ new Date();
|
|
106
|
+
const firstDay = startOfMonth(month);
|
|
107
|
+
const firstWeekday = (firstDay.getDay() + 6) % 7;
|
|
108
|
+
const gridStart = new Date(firstDay);
|
|
109
|
+
gridStart.setDate(firstDay.getDate() - firstWeekday);
|
|
110
|
+
const days = Array.from({ length: 42 }, (_, i) => {
|
|
111
|
+
const d = new Date(gridStart);
|
|
112
|
+
d.setDate(gridStart.getDate() + i);
|
|
113
|
+
return d;
|
|
114
|
+
});
|
|
115
|
+
const eventsByDay = React.useMemo(() => {
|
|
116
|
+
const m = /* @__PURE__ */ new Map();
|
|
117
|
+
for (const ev of events) {
|
|
118
|
+
const key = `${ev.date.getFullYear()}-${ev.date.getMonth()}-${ev.date.getDate()}`;
|
|
119
|
+
const list = m.get(key) ?? [];
|
|
120
|
+
list.push(ev);
|
|
121
|
+
m.set(key, list);
|
|
122
|
+
}
|
|
123
|
+
return m;
|
|
124
|
+
}, [events]);
|
|
125
|
+
return /* @__PURE__ */ jsxs("div", { className: cx("calendar", className), ...rest, children: [
|
|
126
|
+
/* @__PURE__ */ jsxs("div", { className: "calendar__head", children: [
|
|
127
|
+
/* @__PURE__ */ jsx("button", { type: "button", className: "calendar__nav", "aria-label": t["calendar.prevMonth"], onClick: () => setMonth(addMonths(month, -1)), children: /* @__PURE__ */ jsx(ChevronRight, { size: 16, style: { transform: "rotate(180deg)" } }) }),
|
|
128
|
+
/* @__PURE__ */ jsxs("div", { className: "calendar__title", children: [
|
|
129
|
+
months[month.getMonth()],
|
|
130
|
+
" ",
|
|
131
|
+
month.getFullYear()
|
|
132
|
+
] }),
|
|
133
|
+
/* @__PURE__ */ jsx("button", { type: "button", className: "calendar__nav", "aria-label": t["calendar.nextMonth"], onClick: () => setMonth(addMonths(month, 1)), children: /* @__PURE__ */ jsx(ChevronRight, { size: 16 }) })
|
|
134
|
+
] }),
|
|
135
|
+
/* @__PURE__ */ jsx("div", { className: "calendar__grid calendar__weekdays", children: weekdays.map((w) => /* @__PURE__ */ jsx("div", { className: "calendar__weekday", children: w }, w)) }),
|
|
136
|
+
/* @__PURE__ */ jsx("div", { className: "calendar__grid", children: days.map((d, i) => {
|
|
137
|
+
const inMonth = d.getMonth() === month.getMonth();
|
|
138
|
+
const isToday = isSameDay(d, today);
|
|
139
|
+
const key = `${d.getFullYear()}-${d.getMonth()}-${d.getDate()}`;
|
|
140
|
+
const dayEvents = eventsByDay.get(key) ?? [];
|
|
141
|
+
return /* @__PURE__ */ jsxs(
|
|
142
|
+
"button",
|
|
143
|
+
{
|
|
144
|
+
type: "button",
|
|
145
|
+
className: cx("calendar__day", !inMonth && "is-out", isToday && "is-today"),
|
|
146
|
+
onClick: () => onDayClick?.(d),
|
|
147
|
+
children: [
|
|
148
|
+
/* @__PURE__ */ jsx("span", { className: "calendar__daynum", children: d.getDate() }),
|
|
149
|
+
dayEvents.length > 0 && /* @__PURE__ */ jsxs("div", { className: "calendar__events", children: [
|
|
150
|
+
dayEvents.slice(0, 2).map((ev, idx) => /* @__PURE__ */ jsx(
|
|
151
|
+
"span",
|
|
152
|
+
{
|
|
153
|
+
className: cx("calendar__event", `calendar__event--${ev.tone ?? "neutral"}`),
|
|
154
|
+
onClick: (e) => {
|
|
155
|
+
e.stopPropagation();
|
|
156
|
+
ev.onClick?.();
|
|
157
|
+
},
|
|
158
|
+
children: ev.label
|
|
159
|
+
},
|
|
160
|
+
idx
|
|
161
|
+
)),
|
|
162
|
+
dayEvents.length > 2 && /* @__PURE__ */ jsxs("span", { className: "calendar__more", children: [
|
|
163
|
+
"+",
|
|
164
|
+
dayEvents.length - 2
|
|
165
|
+
] })
|
|
166
|
+
] })
|
|
167
|
+
]
|
|
168
|
+
},
|
|
169
|
+
i
|
|
170
|
+
);
|
|
171
|
+
}) })
|
|
172
|
+
] });
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
export { Calendar, StatusIndicator, Timeline, TimelineItem, Tree, UserCell };
|
|
176
|
+
//# sourceMappingURL=chunk-Z4GRQHIG.mjs.map
|
|
177
|
+
//# sourceMappingURL=chunk-Z4GRQHIG.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Display3.tsx"],"names":["Timeline"],"mappings":";;;;;;;AAgBO,SAAS,QAAA,CAAS,EAAE,IAAA,EAAM,IAAA,EAAM,SAAA,EAAW,SAAA,EAAW,IAAA,GAAO,EAAA,EAAI,SAAA,EAAW,GAAG,IAAA,EAAK,EAAkB;AAC3G,EAAA,MAAM,YAAA,GAAe,OAAO,IAAA,KAAS,QAAA,GAAW,IAAA,GAAO,MAAA;AACvD,EAAA,uBACE,IAAA,CAAC,SAAI,SAAA,EAAW,EAAA,CAAG,aAAa,SAAS,CAAA,EAAI,GAAG,IAAA,EAC9C,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,UAAO,GAAA,EAAK,SAAA,EAAW,KAAK,SAAA,EAAW,IAAA,EAAM,cAAc,IAAA,EAAY,CAAA;AAAA,oBACxE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iBAAA,EACb,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iBAAA,EAAmB,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,MACtC,IAAA,oBAAQ,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mBAAmB,QAAA,EAAA,IAAA,EAAK;AAAA,KAAA,EAClD;AAAA,GAAA,EACF,CAAA;AAEJ;AAWO,SAAS,eAAA,CAAgB,EAAE,IAAA,GAAO,SAAA,EAAW,OAAO,KAAA,EAAO,SAAA,EAAW,GAAG,IAAA,EAAK,EAAyB;AAC5G,EAAA,uBACE,IAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,EAAA,CAAG,kBAAA,EAAoB,SAAS,CAAA,EAAG,IAAA,EAAK,QAAA,EAAU,GAAG,IAAA,EACpE,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,EAAA,CAAG,uBAAA,EAAyB,CAAA,uBAAA,EAA0B,IAAI,CAAA,CAAA,EAAI,KAAA,IAAS,YAAY,CAAA,EAAG,aAAA,EAAY,MAAA,EAAO,CAAA;AAAA,IACzH,KAAA,oBAAS,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,2BAA2B,QAAA,EAAA,KAAA,EAAM;AAAA,GAAA,EAC7D,CAAA;AAEJ;AAKO,IAAM,QAAA,GAAiB,KAAA,CAAA,UAAA;AAAA,EAC5B,SAASA,SAAAA,CAAS,EAAE,WAAW,GAAG,IAAA,IAAQ,GAAA,EAAK;AAC7C,IAAA,uBAAO,GAAA,CAAC,QAAG,GAAA,EAAU,SAAA,EAAW,GAAG,UAAA,EAAY,SAAS,CAAA,EAAI,GAAG,IAAA,EAAM,CAAA;AAAA,EACvE;AACF;AASO,SAAS,YAAA,CAAa,EAAE,IAAA,EAAM,IAAA,GAAO,SAAA,EAAW,KAAA,EAAO,IAAA,EAAM,QAAA,EAAU,SAAA,EAAW,GAAG,IAAA,EAAK,EAAsB;AACrH,EAAA,uBACE,IAAA,CAAC,QAAG,SAAA,EAAW,EAAA,CAAG,kBAAkB,SAAS,CAAA,EAAI,GAAG,IAAA,EAClD,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,EAAA,CAAG,kBAAA,EAAoB,CAAA,kBAAA,EAAqB,IAAI,CAAA,CAAE,CAAA,EAAG,aAAA,EAAY,MAAA,EAC/E,QAAA,EAAA,IAAA,EACH,CAAA;AAAA,oBACA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACb,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iBAAA,EAAmB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,MACvC,IAAA,oBAAQ,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kBAAkB,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,MAC9C,QAAA,oBAAY,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qBAAqB,QAAA,EAAS;AAAA,KAAA,EAC5D;AAAA,GAAA,EACF,CAAA;AAEJ;AAkBO,SAAS,IAAA,CAAK,EAAE,KAAA,EAAO,eAAA,GAAkB,EAAC,EAAG,UAAA,EAAY,QAAA,EAAU,SAAA,EAAW,GAAG,IAAA,EAAK,EAAc;AACzG,EAAA,MAAM,CAAC,UAAU,WAAW,CAAA,GAAU,eAAsB,IAAI,GAAA,CAAI,eAAe,CAAC,CAAA;AACpF,EAAA,MAAM,MAAA,GAAS,CAAC,EAAA,KAAe;AAC7B,IAAA,WAAA,CAAY,CAAC,IAAA,KAAS;AACpB,MAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,IAAI,CAAA;AACzB,MAAA,IAAI,KAAK,GAAA,CAAI,EAAE,CAAA,EAAG,IAAA,CAAK,OAAO,EAAE,CAAA;AAAA,WAAQ,IAAA,CAAK,IAAI,EAAE,CAAA;AACnD,MAAA,OAAO,IAAA;AAAA,IACT,CAAC,CAAA;AAAA,EACH,CAAA;AACA,EAAA,uBACE,GAAA,CAAC,IAAA,EAAA,EAAG,IAAA,EAAK,MAAA,EAAO,SAAA,EAAW,EAAA,CAAG,MAAA,EAAQ,SAAS,CAAA,EAAI,GAAG,IAAA,EACnD,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,qBACV,GAAA,CAAC,QAAA,EAAA,EAAoB,IAAA,EAAM,CAAA,EAAG,KAAA,EAAO,CAAA,EAAG,QAAA,EAAoB,MAAA,EAAgB,UAAA,EAAwB,QAAA,EAAA,EAArF,CAAA,CAAE,EAAuG,CACzH,CAAA,EACH,CAAA;AAEJ;AAWA,SAAS,QAAA,CAAS,EAAE,IAAA,EAAM,KAAA,EAAO,UAAU,MAAA,EAAQ,UAAA,EAAY,UAAS,EAAkB;AACxF,EAAA,MAAM,cAAc,CAAC,EAAE,IAAA,CAAK,QAAA,IAAY,KAAK,QAAA,CAAS,MAAA,CAAA;AACtD,EAAA,MAAM,MAAA,GAAS,QAAA,CAAS,GAAA,CAAI,IAAA,CAAK,EAAE,CAAA;AACnC,EAAA,MAAM,UAAA,GAAa,eAAe,IAAA,CAAK,EAAA;AACvC,EAAA,MAAM,IAAI,SAAA,EAAU;AACpB,EAAA,uBACE,IAAA,CAAC,IAAA,EAAA,EAAG,IAAA,EAAK,UAAA,EAAW,eAAA,EAAe,WAAA,GAAc,MAAA,GAAS,MAAA,EAAW,eAAA,EAAe,UAAA,EAAY,SAAA,EAAU,YAAA,EACxG,QAAA,EAAA;AAAA,oBAAA,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA,CAAG,WAAA,EAAa,UAAA,IAAc,aAAa,CAAA;AAAA,QACtD,KAAA,EAAO,EAAE,WAAA,EAAa,CAAA,uCAAA,EAA0C,KAAK,CAAA,CAAA,CAAA,EAAI;AAAA,QACzE,OAAA,EAAS,MAAM,QAAA,GAAW,IAAA,CAAK,EAAE,CAAA;AAAA,QAEhC,QAAA,EAAA;AAAA,UAAA,WAAA,mBACC,GAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,SAAA,EAAU,YAAA;AAAA,cACV,cAAY,MAAA,GAAS,CAAA,CAAE,mBAAmB,CAAA,GAAI,EAAE,iBAAiB,CAAA;AAAA,cACjE,OAAA,EAAS,CAAC,CAAA,KAAM;AAAE,gBAAA,CAAA,CAAE,eAAA,EAAgB;AAAG,gBAAA,MAAA,CAAO,KAAK,EAAE,CAAA;AAAA,cAAG,CAAA;AAAA,cAEvD,QAAA,EAAA,MAAA,uBAAU,WAAA,EAAA,EAAY,IAAA,EAAM,IAAI,CAAA,mBAAK,GAAA,CAAC,YAAA,EAAA,EAAa,IAAA,EAAM,EAAA,EAAI;AAAA;AAAA,8BAGhE,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oCAAA,EAAqC,eAAY,MAAA,EAAO,CAAA;AAAA,UAEzE,IAAA,CAAK,wBAAQ,GAAA,CAAC,MAAA,EAAA,EAAK,WAAU,YAAA,EAAa,aAAA,EAAY,MAAA,EAAQ,QAAA,EAAA,IAAA,CAAK,IAAA,EAAK,CAAA;AAAA,0BACzE,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,aAAA,EAAe,eAAK,KAAA,EAAM,CAAA;AAAA,UACzC,KAAK,IAAA,oBAAQ,GAAA,CAAC,UAAK,SAAA,EAAU,YAAA,EAAc,eAAK,IAAA,EAAK;AAAA;AAAA;AAAA,KACxD;AAAA,IACC,WAAA,IAAe,MAAA,oBACd,GAAA,CAAC,IAAA,EAAA,EAAG,IAAA,EAAK,OAAA,EAAQ,SAAA,EAAU,gBAAA,EACxB,QAAA,EAAA,IAAA,CAAK,QAAA,CAAU,GAAA,CAAI,CAAC,CAAA,qBACnB,GAAA,CAAC,QAAA,EAAA,EAAoB,IAAA,EAAM,CAAA,EAAG,KAAA,EAAO,KAAA,GAAQ,CAAA,EAAG,QAAA,EAAoB,MAAA,EAAgB,UAAA,EAAwB,QAAA,EAAA,EAA7F,CAAA,CAAE,EAA+G,CACjI,CAAA,EACH;AAAA,GAAA,EAEJ,CAAA;AAEJ;AAkBA,SAAS,aAAa,CAAA,EAAS;AAAE,EAAA,OAAO,IAAI,KAAK,CAAA,CAAE,WAAA,IAAe,CAAA,CAAE,QAAA,IAAY,CAAC,CAAA;AAAG;AACpF,SAAS,SAAA,CAAU,GAAS,CAAA,EAAW;AAAE,EAAA,OAAO,IAAI,KAAK,CAAA,CAAE,WAAA,IAAe,CAAA,CAAE,QAAA,EAAS,GAAI,CAAA,EAAG,CAAC,CAAA;AAAG;AAChG,SAAS,SAAA,CAAU,GAAS,CAAA,EAAS;AACnC,EAAA,OAAO,EAAE,WAAA,EAAY,KAAM,CAAA,CAAE,WAAA,MAAiB,CAAA,CAAE,QAAA,EAAS,KAAM,CAAA,CAAE,UAAS,IAAK,CAAA,CAAE,OAAA,EAAQ,KAAM,EAAE,OAAA,EAAQ;AAC3G;AAEO,SAAS,QAAA,CAAS,EAAE,KAAA,EAAO,SAAA,EAAW,MAAA,GAAS,EAAC,EAAG,aAAA,EAAe,UAAA,EAAY,SAAA,EAAW,GAAG,IAAA,EAAK,EAAkB;AACxH,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAU,KAAA,CAAA,QAAA,CAAS,MAAM,YAAA,CAAa,SAAA,oBAAa,IAAI,IAAA,EAAM,CAAC,CAAA;AACpG,EAAA,MAAM,KAAA,GAAQ,SAAA,GAAY,YAAA,CAAa,SAAS,CAAA,GAAI,aAAA;AACpD,EAAA,MAAM,IAAI,SAAA,EAAU;AACpB,EAAA,MAAM,QAAA,GAAW,EAAE,mBAAmB,CAAA;AACtC,EAAA,MAAM,MAAA,GAAS,EAAE,iBAAiB,CAAA;AAClC,EAAA,MAAM,QAAA,GAAW,CAAC,CAAA,KAAY;AAC5B,IAAA,IAAI,CAAC,SAAA,EAAW,gBAAA,CAAiB,CAAC,CAAA;AAClC,IAAA,aAAA,GAAgB,CAAC,CAAA;AAAA,EACnB,CAAA;AAEA,EAAA,MAAM,KAAA,uBAAY,IAAA,EAAK;AAGvB,EAAA,MAAM,QAAA,GAAW,aAAa,KAAK,CAAA;AACnC,EAAA,MAAM,YAAA,GAAA,CAAgB,QAAA,CAAS,MAAA,EAAO,GAAI,CAAA,IAAK,CAAA;AAC/C,EAAA,MAAM,SAAA,GAAY,IAAI,IAAA,CAAK,QAAQ,CAAA;AACnC,EAAA,SAAA,CAAU,OAAA,CAAQ,QAAA,CAAS,OAAA,EAAQ,GAAI,YAAY,CAAA;AAEnD,EAAA,MAAM,IAAA,GAAe,MAAM,IAAA,CAAK,EAAE,QAAQ,EAAA,EAAG,EAAG,CAAC,CAAA,EAAG,CAAA,KAAM;AACxD,IAAA,MAAM,CAAA,GAAI,IAAI,IAAA,CAAK,SAAS,CAAA;AAC5B,IAAA,CAAA,CAAE,OAAA,CAAQ,SAAA,CAAU,OAAA,EAAQ,GAAI,CAAC,CAAA;AACjC,IAAA,OAAO,CAAA;AAAA,EACT,CAAC,CAAA;AAED,EAAA,MAAM,WAAA,GAAoB,cAAQ,MAAM;AACtC,IAAA,MAAM,CAAA,uBAAQ,GAAA,EAA6B;AAC3C,IAAA,KAAA,MAAW,MAAM,MAAA,EAAQ;AACvB,MAAA,MAAM,GAAA,GAAM,CAAA,EAAG,EAAA,CAAG,IAAA,CAAK,aAAa,CAAA,CAAA,EAAI,EAAA,CAAG,IAAA,CAAK,UAAU,CAAA,CAAA,EAAI,EAAA,CAAG,IAAA,CAAK,SAAS,CAAA,CAAA;AAC/E,MAAA,MAAM,IAAA,GAAO,CAAA,CAAE,GAAA,CAAI,GAAG,KAAK,EAAC;AAC5B,MAAA,IAAA,CAAK,KAAK,EAAE,CAAA;AACZ,MAAA,CAAA,CAAE,GAAA,CAAI,KAAK,IAAI,CAAA;AAAA,IACjB;AACA,IAAA,OAAO,CAAA;AAAA,EACT,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,uBACE,IAAA,CAAC,SAAI,SAAA,EAAW,EAAA,CAAG,YAAY,SAAS,CAAA,EAAI,GAAG,IAAA,EAC7C,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,gBAAA,EACb,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,QAAA,EAAA,EAAO,IAAA,EAAK,QAAA,EAAS,SAAA,EAAU,eAAA,EAAgB,YAAA,EAAY,CAAA,CAAE,oBAAoB,CAAA,EAAG,OAAA,EAAS,MAAM,QAAA,CAAS,SAAA,CAAU,OAAO,EAAE,CAAC,CAAA,EAC/H,QAAA,kBAAA,GAAA,CAAC,YAAA,EAAA,EAAa,IAAA,EAAM,EAAA,EAAI,KAAA,EAAO,EAAE,SAAA,EAAW,gBAAA,EAAiB,EAAG,CAAA,EAClE,CAAA;AAAA,sBACA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iBAAA,EAAmB,QAAA,EAAA;AAAA,QAAA,MAAA,CAAO,KAAA,CAAM,UAAU,CAAA;AAAA,QAAE,GAAA;AAAA,QAAE,MAAM,WAAA;AAAY,OAAA,EAAE,CAAA;AAAA,sBACjF,GAAA,CAAC,YAAO,IAAA,EAAK,QAAA,EAAS,WAAU,eAAA,EAAgB,YAAA,EAAY,CAAA,CAAE,oBAAoB,CAAA,EAAG,OAAA,EAAS,MAAM,QAAA,CAAS,SAAA,CAAU,OAAO,CAAC,CAAC,GAC9H,QAAA,kBAAA,GAAA,CAAC,YAAA,EAAA,EAAa,IAAA,EAAM,EAAA,EAAI,CAAA,EAC1B;AAAA,KAAA,EACF,CAAA;AAAA,oBACA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mCAAA,EACZ,mBAAS,GAAA,CAAI,CAAC,CAAA,qBAAM,GAAA,CAAC,SAAY,SAAA,EAAU,mBAAA,EAAqB,QAAA,EAAA,CAAA,EAAA,EAAlC,CAAoC,CAAM,CAAA,EAC3E,CAAA;AAAA,oBACA,GAAA,CAAC,SAAI,SAAA,EAAU,gBAAA,EACZ,eAAK,GAAA,CAAI,CAAC,GAAG,CAAA,KAAM;AAClB,MAAA,MAAM,OAAA,GAAU,CAAA,CAAE,QAAA,EAAS,KAAM,MAAM,QAAA,EAAS;AAChD,MAAA,MAAM,OAAA,GAAU,SAAA,CAAU,CAAA,EAAG,KAAK,CAAA;AAClC,MAAA,MAAM,GAAA,GAAM,CAAA,EAAG,CAAA,CAAE,WAAA,EAAa,CAAA,CAAA,EAAI,CAAA,CAAE,QAAA,EAAU,CAAA,CAAA,EAAI,CAAA,CAAE,OAAA,EAAS,CAAA,CAAA;AAC7D,MAAA,MAAM,SAAA,GAAY,WAAA,CAAY,GAAA,CAAI,GAAG,KAAK,EAAC;AAC3C,MAAA,uBACE,IAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UAEC,IAAA,EAAK,QAAA;AAAA,UACL,WAAW,EAAA,CAAG,eAAA,EAAiB,CAAC,OAAA,IAAW,QAAA,EAAU,WAAW,UAAU,CAAA;AAAA,UAC1E,OAAA,EAAS,MAAM,UAAA,GAAa,CAAC,CAAA;AAAA,UAE7B,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,kBAAA,EAAoB,QAAA,EAAA,CAAA,CAAE,SAAQ,EAAE,CAAA;AAAA,YAC/C,UAAU,MAAA,GAAS,CAAA,oBAClB,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,kBAAA,EACZ,QAAA,EAAA;AAAA,cAAA,SAAA,CAAU,MAAM,CAAA,EAAG,CAAC,EAAE,GAAA,CAAI,CAAC,IAAI,GAAA,qBAC9B,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBAEC,WAAW,EAAA,CAAG,iBAAA,EAAmB,oBAAoB,EAAA,CAAG,IAAA,IAAQ,SAAS,CAAA,CAAE,CAAA;AAAA,kBAC3E,OAAA,EAAS,CAAC,CAAA,KAAM;AAAE,oBAAA,CAAA,CAAE,eAAA,EAAgB;AAAG,oBAAA,EAAA,CAAG,OAAA,IAAU;AAAA,kBAAG,CAAA;AAAA,kBAEtD,QAAA,EAAA,EAAA,CAAG;AAAA,iBAAA;AAAA,gBAJC;AAAA,eAMR,CAAA;AAAA,cACA,UAAU,MAAA,GAAS,CAAA,oBAAK,IAAA,CAAC,MAAA,EAAA,EAAK,WAAU,gBAAA,EAAiB,QAAA,EAAA;AAAA,gBAAA,GAAA;AAAA,gBAAE,UAAU,MAAA,GAAS;AAAA,eAAA,EAAE;AAAA,aAAA,EACnF;AAAA;AAAA,SAAA;AAAA,QAlBG;AAAA,OAoBP;AAAA,IAEJ,CAAC,CAAA,EACH;AAAA,GAAA,EACF,CAAA;AAEJ","file":"chunk-Z4GRQHIG.mjs","sourcesContent":["'use client';\nimport * as React from 'react';\nimport { cx } from '../utils/cx';\nimport { Avatar } from './Display2';\nimport { ChevronRight, ChevronDown } from './Icons';\nimport { useLocale } from '../locale/LocaleProvider';\n\n// ---------- UserCell ----------------------------------------------------\nexport interface UserCellProps extends React.HTMLAttributes<HTMLDivElement> {\n name: React.ReactNode;\n meta?: React.ReactNode; // role / email / etc.\n avatarSrc?: string;\n avatarAlt?: string;\n size?: 24 | 32 | 40 | 48;\n}\n\nexport function UserCell({ name, meta, avatarSrc, avatarAlt, size = 32, className, ...rest }: UserCellProps) {\n const initialsName = typeof name === 'string' ? name : undefined;\n return (\n <div className={cx('user-cell', className)} {...rest}>\n <Avatar src={avatarSrc} alt={avatarAlt} name={initialsName} size={size} />\n <div className=\"user-cell__body\">\n <div className=\"user-cell__name\">{name}</div>\n {meta && <div className=\"user-cell__meta\">{meta}</div>}\n </div>\n </div>\n );\n}\n\n// ---------- StatusIndicator (pulsing dot) ------------------------------\nexport type StatusTone = 'success' | 'warning' | 'danger' | 'info' | 'neutral';\n\nexport interface StatusIndicatorProps extends React.HTMLAttributes<HTMLSpanElement> {\n tone?: StatusTone;\n pulse?: boolean;\n label?: React.ReactNode;\n}\n\nexport function StatusIndicator({ tone = 'success', pulse, label, className, ...rest }: StatusIndicatorProps) {\n return (\n <span className={cx('status-indicator', className)} role=\"status\" {...rest}>\n <span className={cx('status-indicator__dot', `status-indicator__dot--${tone}`, pulse && 'is-pulsing')} aria-hidden=\"true\" />\n {label && <span className=\"status-indicator__label\">{label}</span>}\n </span>\n );\n}\n\n// ---------- Timeline ----------------------------------------------------\nexport interface TimelineProps extends React.HTMLAttributes<HTMLOListElement> {}\n\nexport const Timeline = React.forwardRef<HTMLOListElement, TimelineProps>(\n function Timeline({ className, ...rest }, ref) {\n return <ol ref={ref} className={cx('timeline', className)} {...rest} />;\n }\n);\n\nexport interface TimelineItemProps extends Omit<React.LiHTMLAttributes<HTMLLIElement>, 'title'> {\n icon?: React.ReactNode;\n tone?: StatusTone;\n title: React.ReactNode;\n meta?: React.ReactNode;\n}\n\nexport function TimelineItem({ icon, tone = 'neutral', title, meta, children, className, ...rest }: TimelineItemProps) {\n return (\n <li className={cx('timeline__item', className)} {...rest}>\n <span className={cx('timeline__marker', `timeline__marker--${tone}`)} aria-hidden=\"true\">\n {icon}\n </span>\n <div className=\"timeline__body\">\n <div className=\"timeline__title\">{title}</div>\n {meta && <div className=\"timeline__meta\">{meta}</div>}\n {children && <div className=\"timeline__content\">{children}</div>}\n </div>\n </li>\n );\n}\n\n// ---------- Tree --------------------------------------------------------\nexport interface TreeNodeData {\n id: string;\n label: React.ReactNode;\n icon?: React.ReactNode;\n children?: TreeNodeData[];\n meta?: React.ReactNode;\n}\n\nexport interface TreeProps extends Omit<React.HTMLAttributes<HTMLUListElement>, 'onSelect'> {\n nodes: TreeNodeData[];\n defaultExpanded?: string[];\n selectedId?: string;\n onSelect?: (id: string) => void;\n}\n\nexport function Tree({ nodes, defaultExpanded = [], selectedId, onSelect, className, ...rest }: TreeProps) {\n const [expanded, setExpanded] = React.useState<Set<string>>(new Set(defaultExpanded));\n const toggle = (id: string) => {\n setExpanded((curr) => {\n const next = new Set(curr);\n if (next.has(id)) next.delete(id); else next.add(id);\n return next;\n });\n };\n return (\n <ul role=\"tree\" className={cx('tree', className)} {...rest}>\n {nodes.map((n) => (\n <TreeNode key={n.id} node={n} depth={0} expanded={expanded} toggle={toggle} selectedId={selectedId} onSelect={onSelect} />\n ))}\n </ul>\n );\n}\n\ninterface TreeNodeProps {\n node: TreeNodeData;\n depth: number;\n expanded: Set<string>;\n toggle: (id: string) => void;\n selectedId?: string;\n onSelect?: (id: string) => void;\n}\n\nfunction TreeNode({ node, depth, expanded, toggle, selectedId, onSelect }: TreeNodeProps) {\n const hasChildren = !!(node.children && node.children.length);\n const isOpen = expanded.has(node.id);\n const isSelected = selectedId === node.id;\n const t = useLocale();\n return (\n <li role=\"treeitem\" aria-expanded={hasChildren ? isOpen : undefined} aria-selected={isSelected} className=\"tree__node\">\n <div\n className={cx('tree__row', isSelected && 'is-selected')}\n style={{ paddingLeft: `calc(var(--space-2) + var(--space-4) * ${depth})` }}\n onClick={() => onSelect?.(node.id)}\n >\n {hasChildren ? (\n <button\n type=\"button\"\n className=\"tree__chev\"\n aria-label={isOpen ? t['calendar.collapse'] : t['calendar.expand']}\n onClick={(e) => { e.stopPropagation(); toggle(node.id); }}\n >\n {isOpen ? <ChevronDown size={14} /> : <ChevronRight size={14} />}\n </button>\n ) : (\n <span className=\"tree__chev tree__chev--placeholder\" aria-hidden=\"true\" />\n )}\n {node.icon && <span className=\"tree__icon\" aria-hidden=\"true\">{node.icon}</span>}\n <span className=\"tree__label\">{node.label}</span>\n {node.meta && <span className=\"tree__meta\">{node.meta}</span>}\n </div>\n {hasChildren && isOpen && (\n <ul role=\"group\" className=\"tree__children\">\n {node.children!.map((c) => (\n <TreeNode key={c.id} node={c} depth={depth + 1} expanded={expanded} toggle={toggle} selectedId={selectedId} onSelect={onSelect} />\n ))}\n </ul>\n )}\n </li>\n );\n}\n\n// ---------- Calendar (vista mes completa, no picker) -------------------\nexport interface CalendarEvent {\n date: Date;\n label: React.ReactNode;\n tone?: StatusTone;\n onClick?: () => void;\n}\n\nexport interface CalendarProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Mes a mostrar. Default: mes actual. */\n month?: Date;\n events?: CalendarEvent[];\n onMonthChange?: (m: Date) => void;\n onDayClick?: (d: Date) => void;\n}\n\nfunction startOfMonth(d: Date) { return new Date(d.getFullYear(), d.getMonth(), 1); }\nfunction addMonths(d: Date, n: number) { return new Date(d.getFullYear(), d.getMonth() + n, 1); }\nfunction isSameDay(a: Date, b: Date) {\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();\n}\n\nexport function Calendar({ month: monthProp, events = [], onMonthChange, onDayClick, className, ...rest }: CalendarProps) {\n const [internalMonth, setInternalMonth] = React.useState(() => startOfMonth(monthProp ?? new Date()));\n const month = monthProp ? startOfMonth(monthProp) : internalMonth;\n const t = useLocale();\n const weekdays = t['calendar.weekdays'];\n const months = t['calendar.months'];\n const setMonth = (m: Date) => {\n if (!monthProp) setInternalMonth(m);\n onMonthChange?.(m);\n };\n\n const today = new Date();\n\n // primer día visible: lunes anterior al primer día del mes\n const firstDay = startOfMonth(month);\n const firstWeekday = (firstDay.getDay() + 6) % 7; // domingo=0 → 6, lunes=1 → 0\n const gridStart = new Date(firstDay);\n gridStart.setDate(firstDay.getDate() - firstWeekday);\n\n const days: Date[] = Array.from({ length: 42 }, (_, i) => {\n const d = new Date(gridStart);\n d.setDate(gridStart.getDate() + i);\n return d;\n });\n\n const eventsByDay = React.useMemo(() => {\n const m = new Map<string, CalendarEvent[]>();\n for (const ev of events) {\n const key = `${ev.date.getFullYear()}-${ev.date.getMonth()}-${ev.date.getDate()}`;\n const list = m.get(key) ?? [];\n list.push(ev);\n m.set(key, list);\n }\n return m;\n }, [events]);\n\n return (\n <div className={cx('calendar', className)} {...rest}>\n <div className=\"calendar__head\">\n <button type=\"button\" className=\"calendar__nav\" aria-label={t['calendar.prevMonth']} onClick={() => setMonth(addMonths(month, -1))}>\n <ChevronRight size={16} style={{ transform: 'rotate(180deg)' }} />\n </button>\n <div className=\"calendar__title\">{months[month.getMonth()]} {month.getFullYear()}</div>\n <button type=\"button\" className=\"calendar__nav\" aria-label={t['calendar.nextMonth']} onClick={() => setMonth(addMonths(month, 1))}>\n <ChevronRight size={16} />\n </button>\n </div>\n <div className=\"calendar__grid calendar__weekdays\">\n {weekdays.map((w) => <div key={w} className=\"calendar__weekday\">{w}</div>)}\n </div>\n <div className=\"calendar__grid\">\n {days.map((d, i) => {\n const inMonth = d.getMonth() === month.getMonth();\n const isToday = isSameDay(d, today);\n const key = `${d.getFullYear()}-${d.getMonth()}-${d.getDate()}`;\n const dayEvents = eventsByDay.get(key) ?? [];\n return (\n <button\n key={i}\n type=\"button\"\n className={cx('calendar__day', !inMonth && 'is-out', isToday && 'is-today')}\n onClick={() => onDayClick?.(d)}\n >\n <span className=\"calendar__daynum\">{d.getDate()}</span>\n {dayEvents.length > 0 && (\n <div className=\"calendar__events\">\n {dayEvents.slice(0, 2).map((ev, idx) => (\n <span\n key={idx}\n className={cx('calendar__event', `calendar__event--${ev.tone ?? 'neutral'}`)}\n onClick={(e) => { e.stopPropagation(); ev.onClick?.(); }}\n >\n {ev.label}\n </span>\n ))}\n {dayEvents.length > 2 && <span className=\"calendar__more\">+{dayEvents.length - 2}</span>}\n </div>\n )}\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkLIGJBHXU_js = require('./chunk-LIGJBHXU.js');
|
|
4
|
+
var chunkTEQ67JKX_js = require('./chunk-TEQ67JKX.js');
|
|
5
|
+
var chunkRQOTH7I7_js = require('./chunk-RQOTH7I7.js');
|
|
6
|
+
var chunkPASF6T4H_js = require('./chunk-PASF6T4H.js');
|
|
7
|
+
var React = require('react');
|
|
8
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
9
|
+
|
|
10
|
+
function _interopNamespace(e) {
|
|
11
|
+
if (e && e.__esModule) return e;
|
|
12
|
+
var n = Object.create(null);
|
|
13
|
+
if (e) {
|
|
14
|
+
Object.keys(e).forEach(function (k) {
|
|
15
|
+
if (k !== 'default') {
|
|
16
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
17
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
18
|
+
enumerable: true,
|
|
19
|
+
get: function () { return e[k]; }
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
n.default = e;
|
|
25
|
+
return Object.freeze(n);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
29
|
+
|
|
30
|
+
function ImageGallery({
|
|
31
|
+
images,
|
|
32
|
+
defaultIndex = 0,
|
|
33
|
+
enableLightbox = true,
|
|
34
|
+
thumbnailPosition = "bottom",
|
|
35
|
+
className,
|
|
36
|
+
...rest
|
|
37
|
+
}) {
|
|
38
|
+
const [index, setIndex] = React__namespace.useState(defaultIndex);
|
|
39
|
+
const [lightboxOpen, setLightboxOpen] = React__namespace.useState(false);
|
|
40
|
+
const t = chunkTEQ67JKX_js.useLocale();
|
|
41
|
+
if (images.length === 0) return null;
|
|
42
|
+
const safeIndex = Math.max(0, Math.min(index, images.length - 1));
|
|
43
|
+
const current = images[safeIndex];
|
|
44
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
45
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkPASF6T4H_js.cx("gallery", `gallery--thumbs-${thumbnailPosition}`, className), ...rest, children: [
|
|
46
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "gallery__main", children: [
|
|
47
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
48
|
+
"img",
|
|
49
|
+
{
|
|
50
|
+
src: current.src,
|
|
51
|
+
alt: current.alt ?? "",
|
|
52
|
+
className: "gallery__image",
|
|
53
|
+
onClick: () => enableLightbox && setLightboxOpen(true),
|
|
54
|
+
style: { cursor: enableLightbox ? "zoom-in" : "default" }
|
|
55
|
+
}
|
|
56
|
+
),
|
|
57
|
+
images.length > 1 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
58
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
59
|
+
"button",
|
|
60
|
+
{
|
|
61
|
+
type: "button",
|
|
62
|
+
className: "gallery__nav gallery__nav--prev",
|
|
63
|
+
"aria-label": t["gallery.prev"],
|
|
64
|
+
onClick: () => setIndex((i) => (i - 1 + images.length) % images.length),
|
|
65
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(chunkRQOTH7I7_js.ChevronLeft, { size: 20 })
|
|
66
|
+
}
|
|
67
|
+
),
|
|
68
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
69
|
+
"button",
|
|
70
|
+
{
|
|
71
|
+
type: "button",
|
|
72
|
+
className: "gallery__nav gallery__nav--next",
|
|
73
|
+
"aria-label": t["gallery.next"],
|
|
74
|
+
onClick: () => setIndex((i) => (i + 1) % images.length),
|
|
75
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(chunkRQOTH7I7_js.ChevronRight, { size: 20 })
|
|
76
|
+
}
|
|
77
|
+
)
|
|
78
|
+
] })
|
|
79
|
+
] }),
|
|
80
|
+
images.length > 1 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "gallery__thumbs", role: "tablist", "aria-label": t["gallery.thumbnails"], children: images.map((img, i) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
81
|
+
"button",
|
|
82
|
+
{
|
|
83
|
+
type: "button",
|
|
84
|
+
role: "tab",
|
|
85
|
+
"aria-selected": i === safeIndex,
|
|
86
|
+
"aria-label": chunkLIGJBHXU_js.format(t["gallery.imageNumber"], { n: i + 1 }),
|
|
87
|
+
className: chunkPASF6T4H_js.cx("gallery__thumb", i === safeIndex && "is-active"),
|
|
88
|
+
onClick: () => setIndex(i),
|
|
89
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: img.thumbnail ?? img.src, alt: img.alt ?? "" })
|
|
90
|
+
},
|
|
91
|
+
i
|
|
92
|
+
)) })
|
|
93
|
+
] }),
|
|
94
|
+
enableLightbox && /* @__PURE__ */ jsxRuntime.jsx(
|
|
95
|
+
Lightbox,
|
|
96
|
+
{
|
|
97
|
+
open: lightboxOpen,
|
|
98
|
+
onClose: () => setLightboxOpen(false),
|
|
99
|
+
images,
|
|
100
|
+
index: safeIndex,
|
|
101
|
+
onChange: setIndex
|
|
102
|
+
}
|
|
103
|
+
)
|
|
104
|
+
] });
|
|
105
|
+
}
|
|
106
|
+
function Lightbox({ open, onClose, images, index, onChange }) {
|
|
107
|
+
const t = chunkTEQ67JKX_js.useLocale();
|
|
108
|
+
React__namespace.useEffect(() => {
|
|
109
|
+
if (!open) return;
|
|
110
|
+
const onKey = (e) => {
|
|
111
|
+
if (e.key === "Escape") onClose();
|
|
112
|
+
else if (e.key === "ArrowLeft" && onChange) onChange((index - 1 + images.length) % images.length);
|
|
113
|
+
else if (e.key === "ArrowRight" && onChange) onChange((index + 1) % images.length);
|
|
114
|
+
};
|
|
115
|
+
document.addEventListener("keydown", onKey);
|
|
116
|
+
return () => document.removeEventListener("keydown", onKey);
|
|
117
|
+
}, [open, index, images.length, onChange, onClose]);
|
|
118
|
+
if (!open || images.length === 0) return null;
|
|
119
|
+
const current = images[Math.max(0, Math.min(index, images.length - 1))];
|
|
120
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "lightbox", role: "dialog", "aria-modal": "true", "aria-label": t["gallery.viewer"], onClick: onClose, children: [
|
|
121
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
122
|
+
"button",
|
|
123
|
+
{
|
|
124
|
+
type: "button",
|
|
125
|
+
className: "lightbox__close",
|
|
126
|
+
"aria-label": t["gallery.close"],
|
|
127
|
+
onClick: onClose,
|
|
128
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(chunkRQOTH7I7_js.X, { size: 20 })
|
|
129
|
+
}
|
|
130
|
+
),
|
|
131
|
+
images.length > 1 && onChange && /* @__PURE__ */ jsxRuntime.jsx(
|
|
132
|
+
"button",
|
|
133
|
+
{
|
|
134
|
+
type: "button",
|
|
135
|
+
className: "lightbox__nav lightbox__nav--prev",
|
|
136
|
+
"aria-label": t["gallery.prev"],
|
|
137
|
+
onClick: (e) => {
|
|
138
|
+
e.stopPropagation();
|
|
139
|
+
onChange((index - 1 + images.length) % images.length);
|
|
140
|
+
},
|
|
141
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(chunkRQOTH7I7_js.ChevronLeft, { size: 24 })
|
|
142
|
+
}
|
|
143
|
+
),
|
|
144
|
+
/* @__PURE__ */ jsxRuntime.jsx("img", { src: current.src, alt: current.alt ?? "", className: "lightbox__image", onClick: (e) => e.stopPropagation() }),
|
|
145
|
+
images.length > 1 && onChange && /* @__PURE__ */ jsxRuntime.jsx(
|
|
146
|
+
"button",
|
|
147
|
+
{
|
|
148
|
+
type: "button",
|
|
149
|
+
className: "lightbox__nav lightbox__nav--next",
|
|
150
|
+
"aria-label": t["gallery.next"],
|
|
151
|
+
onClick: (e) => {
|
|
152
|
+
e.stopPropagation();
|
|
153
|
+
onChange((index + 1) % images.length);
|
|
154
|
+
},
|
|
155
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(chunkRQOTH7I7_js.ChevronRight, { size: 24 })
|
|
156
|
+
}
|
|
157
|
+
),
|
|
158
|
+
images.length > 1 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "lightbox__counter", children: [
|
|
159
|
+
index + 1,
|
|
160
|
+
" / ",
|
|
161
|
+
images.length
|
|
162
|
+
] })
|
|
163
|
+
] });
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
exports.ImageGallery = ImageGallery;
|
|
167
|
+
exports.Lightbox = Lightbox;
|
|
168
|
+
//# sourceMappingURL=chunk-ZRBVYPKN.js.map
|
|
169
|
+
//# sourceMappingURL=chunk-ZRBVYPKN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Gallery.tsx"],"names":["React","useLocale","jsxs","Fragment","cx","jsx","ChevronLeft","ChevronRight","format","X"],"mappings":"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","file":"chunk-ZRBVYPKN.js","sourcesContent":["'use client';\nimport * as React from 'react';\nimport { cx } from '../utils/cx';\nimport { ChevronLeft, ChevronRight, X } from './Icons';\nimport { useLocale } from '../locale/LocaleProvider';\nimport { format } from '../locale/messages';\n\n// ---------- ImageGallery ------------------------------------------------\nexport interface GalleryImage {\n src: string;\n alt?: string;\n thumbnail?: string; // si no se pasa, se usa src\n}\n\nexport interface ImageGalleryProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n images: GalleryImage[];\n /** Index inicial. */\n defaultIndex?: number;\n /** Click en imagen principal abre lightbox. Default: true. */\n enableLightbox?: boolean;\n /** Layout de thumbnails. */\n thumbnailPosition?: 'bottom' | 'left';\n}\n\nexport function ImageGallery({\n images, defaultIndex = 0, enableLightbox = true,\n thumbnailPosition = 'bottom', className, ...rest\n}: ImageGalleryProps) {\n const [index, setIndex] = React.useState(defaultIndex);\n const [lightboxOpen, setLightboxOpen] = React.useState(false);\n const t = useLocale();\n\n if (images.length === 0) return null;\n const safeIndex = Math.max(0, Math.min(index, images.length - 1));\n const current = images[safeIndex];\n\n return (\n <>\n <div className={cx('gallery', `gallery--thumbs-${thumbnailPosition}`, className)} {...rest}>\n <div className=\"gallery__main\">\n <img\n src={current.src}\n alt={current.alt ?? ''}\n className=\"gallery__image\"\n onClick={() => enableLightbox && setLightboxOpen(true)}\n style={{ cursor: enableLightbox ? 'zoom-in' : 'default' }}\n />\n {images.length > 1 && (\n <>\n <button\n type=\"button\"\n className=\"gallery__nav gallery__nav--prev\"\n aria-label={t['gallery.prev']}\n onClick={() => setIndex((i) => (i - 1 + images.length) % images.length)}\n >\n <ChevronLeft size={20} />\n </button>\n <button\n type=\"button\"\n className=\"gallery__nav gallery__nav--next\"\n aria-label={t['gallery.next']}\n onClick={() => setIndex((i) => (i + 1) % images.length)}\n >\n <ChevronRight size={20} />\n </button>\n </>\n )}\n </div>\n {images.length > 1 && (\n <div className=\"gallery__thumbs\" role=\"tablist\" aria-label={t['gallery.thumbnails']}>\n {images.map((img, i) => (\n <button\n key={i}\n type=\"button\"\n role=\"tab\"\n aria-selected={i === safeIndex}\n aria-label={format(t['gallery.imageNumber'], { n: i + 1 })}\n className={cx('gallery__thumb', i === safeIndex && 'is-active')}\n onClick={() => setIndex(i)}\n >\n <img src={img.thumbnail ?? img.src} alt={img.alt ?? ''} />\n </button>\n ))}\n </div>\n )}\n </div>\n\n {enableLightbox && (\n <Lightbox\n open={lightboxOpen}\n onClose={() => setLightboxOpen(false)}\n images={images}\n index={safeIndex}\n onChange={setIndex}\n />\n )}\n </>\n );\n}\n\n// ---------- Lightbox ---------------------------------------------------\nexport interface LightboxProps {\n open: boolean;\n onClose: () => void;\n images: GalleryImage[];\n index: number;\n onChange?: (i: number) => void;\n}\n\nexport function Lightbox({ open, onClose, images, index, onChange }: LightboxProps) {\n const t = useLocale();\n React.useEffect(() => {\n if (!open) return;\n const onKey = (e: KeyboardEvent) => {\n if (e.key === 'Escape') onClose();\n else if (e.key === 'ArrowLeft' && onChange) onChange((index - 1 + images.length) % images.length);\n else if (e.key === 'ArrowRight' && onChange) onChange((index + 1) % images.length);\n };\n document.addEventListener('keydown', onKey);\n return () => document.removeEventListener('keydown', onKey);\n }, [open, index, images.length, onChange, onClose]);\n\n if (!open || images.length === 0) return null;\n const current = images[Math.max(0, Math.min(index, images.length - 1))];\n\n return (\n <div className=\"lightbox\" role=\"dialog\" aria-modal=\"true\" aria-label={t['gallery.viewer']} onClick={onClose}>\n <button\n type=\"button\"\n className=\"lightbox__close\"\n aria-label={t['gallery.close']}\n onClick={onClose}\n >\n <X size={20} />\n </button>\n {images.length > 1 && onChange && (\n <button\n type=\"button\"\n className=\"lightbox__nav lightbox__nav--prev\"\n aria-label={t['gallery.prev']}\n onClick={(e) => { e.stopPropagation(); onChange((index - 1 + images.length) % images.length); }}\n >\n <ChevronLeft size={24} />\n </button>\n )}\n <img src={current.src} alt={current.alt ?? ''} className=\"lightbox__image\" onClick={(e) => e.stopPropagation()} />\n {images.length > 1 && onChange && (\n <button\n type=\"button\"\n className=\"lightbox__nav lightbox__nav--next\"\n aria-label={t['gallery.next']}\n onClick={(e) => { e.stopPropagation(); onChange((index + 1) % images.length); }}\n >\n <ChevronRight size={24} />\n </button>\n )}\n {images.length > 1 && (\n <div className=\"lightbox__counter\">{index + 1} / {images.length}</div>\n )}\n </div>\n );\n}\n"]}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
|
|
4
|
+
// src/locale/es.ts
|
|
5
|
+
var esMessages = {
|
|
6
|
+
// Generic actions
|
|
7
|
+
"common.close": "Cerrar",
|
|
8
|
+
"common.cancel": "Cancelar",
|
|
9
|
+
"common.confirm": "Confirmar",
|
|
10
|
+
"common.apply": "Aplicar",
|
|
11
|
+
"common.clear": "Limpiar",
|
|
12
|
+
"common.edit": "Editar",
|
|
13
|
+
"common.empty": "Vac\xEDo",
|
|
14
|
+
"common.loading": "Cargando",
|
|
15
|
+
"common.search": "Buscar\u2026",
|
|
16
|
+
"common.noResults": "Sin resultados",
|
|
17
|
+
// Overlay
|
|
18
|
+
"modal.close": "Cerrar",
|
|
19
|
+
"drawer.close": "Cerrar",
|
|
20
|
+
"toast.close": "Cerrar",
|
|
21
|
+
// DataTable
|
|
22
|
+
"table.empty": "Sin datos",
|
|
23
|
+
"table.selectAll": "Seleccionar todo",
|
|
24
|
+
"table.selectRow": "Seleccionar {label}",
|
|
25
|
+
// AppShell
|
|
26
|
+
"appshell.mainNav": "Navegaci\xF3n principal",
|
|
27
|
+
"appshell.expandMenu": "Expandir men\xFA",
|
|
28
|
+
"appshell.collapseMenu": "Colapsar men\xFA",
|
|
29
|
+
"appshell.expand": "Expandir",
|
|
30
|
+
"appshell.collapse": "Colapsar",
|
|
31
|
+
"appshell.openMenu": "Abrir men\xFA",
|
|
32
|
+
"appshell.breadcrumb": "Breadcrumb",
|
|
33
|
+
// Notifications
|
|
34
|
+
"notifications.button": "Notificaciones",
|
|
35
|
+
"notifications.unreadSuffix": " ({n} sin leer)",
|
|
36
|
+
"notifications.empty": "No tienes notificaciones",
|
|
37
|
+
"notifications.panel": "Notificaciones",
|
|
38
|
+
"notifications.title": "Notificaciones",
|
|
39
|
+
"notifications.markAllRead": "Marcar todas como le\xEDdas",
|
|
40
|
+
"notifications.clear": "Limpiar",
|
|
41
|
+
// Filters
|
|
42
|
+
"filters.panel": "Filtros",
|
|
43
|
+
"filters.clear": "Limpiar",
|
|
44
|
+
"filters.bulkActions": "Acciones en lote",
|
|
45
|
+
"filters.deselectAll": "Deseleccionar todo",
|
|
46
|
+
"filters.sortBy": "Ordenar por",
|
|
47
|
+
"filters.selectedOne": "{n} seleccionado",
|
|
48
|
+
"filters.selectedMany": "{n} seleccionados",
|
|
49
|
+
// Editing
|
|
50
|
+
"transfer.available": "Disponibles",
|
|
51
|
+
"transfer.assigned": "Asignados",
|
|
52
|
+
"transfer.assignSelected": "Asignar seleccionados",
|
|
53
|
+
"transfer.removeSelected": "Quitar seleccionados",
|
|
54
|
+
"transfer.empty": "Vac\xEDo",
|
|
55
|
+
"descList.edit": "Editar",
|
|
56
|
+
"diff.label": "Cambios",
|
|
57
|
+
"diff.field": "Campo",
|
|
58
|
+
"diff.before": "Antes",
|
|
59
|
+
"diff.after": "Despu\xE9s",
|
|
60
|
+
// Permissions
|
|
61
|
+
"permissions.markAll": "Marcar todos",
|
|
62
|
+
"permissions.unmarkAll": "Quitar todos",
|
|
63
|
+
"permissions.action": "Acci\xF3n",
|
|
64
|
+
"permissions.cellLabel": "{action} para {role}",
|
|
65
|
+
// Comments
|
|
66
|
+
"comments.placeholder": "Escribe un comentario\u2026",
|
|
67
|
+
"comments.send": "Enviar",
|
|
68
|
+
"comments.internalTag": "Nota interna",
|
|
69
|
+
"comments.internalOnly": "Solo nota interna",
|
|
70
|
+
"attachments.empty": "Sin archivos adjuntos",
|
|
71
|
+
"attachments.remove": "Eliminar {name}",
|
|
72
|
+
"attachments.download": "Descargar {name}",
|
|
73
|
+
// Gallery
|
|
74
|
+
"gallery.thumbnails": "Miniaturas",
|
|
75
|
+
"gallery.viewer": "Visor de imagen",
|
|
76
|
+
"gallery.prev": "Imagen anterior",
|
|
77
|
+
"gallery.next": "Imagen siguiente",
|
|
78
|
+
"gallery.close": "Cerrar",
|
|
79
|
+
"gallery.imageNumber": "Imagen {n}",
|
|
80
|
+
// Display
|
|
81
|
+
"alert.close": "Cerrar alerta",
|
|
82
|
+
"spinner.loading": "Cargando",
|
|
83
|
+
"chip.remove": "Quitar",
|
|
84
|
+
// Display3 — Calendar
|
|
85
|
+
"calendar.prevMonth": "Mes anterior",
|
|
86
|
+
"calendar.nextMonth": "Mes siguiente",
|
|
87
|
+
"calendar.expand": "Expandir",
|
|
88
|
+
"calendar.collapse": "Colapsar",
|
|
89
|
+
"calendar.weekdays": ["Lun", "Mar", "Mi\xE9", "Jue", "Vie", "S\xE1b", "Dom"],
|
|
90
|
+
"calendar.months": [
|
|
91
|
+
"Enero",
|
|
92
|
+
"Febrero",
|
|
93
|
+
"Marzo",
|
|
94
|
+
"Abril",
|
|
95
|
+
"Mayo",
|
|
96
|
+
"Junio",
|
|
97
|
+
"Julio",
|
|
98
|
+
"Agosto",
|
|
99
|
+
"Septiembre",
|
|
100
|
+
"Octubre",
|
|
101
|
+
"Noviembre",
|
|
102
|
+
"Diciembre"
|
|
103
|
+
],
|
|
104
|
+
// Pickers
|
|
105
|
+
"picker.openCalendar": "Abrir calendario",
|
|
106
|
+
"picker.clearSelection": "Limpiar selecci\xF3n",
|
|
107
|
+
"picker.selectRange": "Seleccionar rango",
|
|
108
|
+
"picker.searchCommands": "Buscar comandos\u2026",
|
|
109
|
+
"picker.commandPalette": "Paleta de comandos",
|
|
110
|
+
"picker.weekdaysShort": ["L", "M", "M", "J", "V", "S", "D"],
|
|
111
|
+
"combobox.remove": "Quitar {label}",
|
|
112
|
+
"fileUpload.title": "Arrastra archivos o haz clic",
|
|
113
|
+
// Inputs
|
|
114
|
+
"pagination.label": "Paginaci\xF3n",
|
|
115
|
+
"pagination.prev": "P\xE1gina anterior",
|
|
116
|
+
"pagination.next": "P\xE1gina siguiente",
|
|
117
|
+
"pagination.range": "{from}\u2013{to} de {total}",
|
|
118
|
+
"pagination.rowsPerPage": "Filas por p\xE1gina",
|
|
119
|
+
"numberInput.decrement": "Disminuir",
|
|
120
|
+
"numberInput.increment": "Aumentar",
|
|
121
|
+
// Commerce
|
|
122
|
+
"commerce.quantity": "Cantidad",
|
|
123
|
+
"commerce.decreaseQty": "Disminuir cantidad",
|
|
124
|
+
"commerce.increaseQty": "Aumentar cantidad",
|
|
125
|
+
"commerce.removeFromCart": "Quitar del carro",
|
|
126
|
+
"commerce.removeItem": "Quitar {name}",
|
|
127
|
+
"commerce.addFavorite": "Agregar a favoritos",
|
|
128
|
+
"commerce.removeFavorite": "Quitar de favoritos",
|
|
129
|
+
"commerce.applyCoupon": "Aplicar",
|
|
130
|
+
"commerce.cartTitle": "Tu carro",
|
|
131
|
+
"commerce.cartEmpty": "Tu carro est\xE1 vac\xEDo",
|
|
132
|
+
"commerce.subtotal": "Subtotal",
|
|
133
|
+
"commerce.checkout": "Ir a pagar",
|
|
134
|
+
"commerce.promoPlaceholder": "C\xF3digo promocional",
|
|
135
|
+
"commerce.promoInvalid": "C\xF3digo inv\xE1lido",
|
|
136
|
+
"commerce.shippingAchieved": "\xA1Tienes env\xEDo gratis!",
|
|
137
|
+
"commerce.shippingPrefix": "Te falta ",
|
|
138
|
+
"commerce.shippingSuffix": " para env\xEDo gratis",
|
|
139
|
+
// Tags input
|
|
140
|
+
"tagsInput.remove": "Quitar {tag}",
|
|
141
|
+
"tagsInput.placeholder": "Escribe y Enter\u2026"
|
|
142
|
+
};
|
|
143
|
+
var LocaleContext = React.createContext(null);
|
|
144
|
+
function LocaleProvider({ messages, children }) {
|
|
145
|
+
const merged = React.useMemo(
|
|
146
|
+
() => messages ? { ...esMessages, ...messages } : esMessages,
|
|
147
|
+
[messages]
|
|
148
|
+
);
|
|
149
|
+
return /* @__PURE__ */ jsx(LocaleContext.Provider, { value: merged, children });
|
|
150
|
+
}
|
|
151
|
+
function useLocale() {
|
|
152
|
+
return React.useContext(LocaleContext) ?? esMessages;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
export { LocaleProvider, esMessages, useLocale };
|
|
156
|
+
//# sourceMappingURL=chunk-ZRFSTYRL.mjs.map
|
|
157
|
+
//# sourceMappingURL=chunk-ZRFSTYRL.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/locale/es.ts","../src/locale/LocaleProvider.tsx"],"names":[],"mappings":"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","file":"chunk-ZRFSTYRL.mjs","sourcesContent":["import type { UiKitMessages } from './messages';\n\nexport const esMessages: UiKitMessages = {\n // Generic actions\n 'common.close': 'Cerrar',\n 'common.cancel': 'Cancelar',\n 'common.confirm': 'Confirmar',\n 'common.apply': 'Aplicar',\n 'common.clear': 'Limpiar',\n 'common.edit': 'Editar',\n 'common.empty': 'Vacío',\n 'common.loading': 'Cargando',\n 'common.search': 'Buscar…',\n 'common.noResults': 'Sin resultados',\n\n // Overlay\n 'modal.close': 'Cerrar',\n 'drawer.close': 'Cerrar',\n 'toast.close': 'Cerrar',\n\n // DataTable\n 'table.empty': 'Sin datos',\n 'table.selectAll': 'Seleccionar todo',\n 'table.selectRow': 'Seleccionar {label}',\n\n // AppShell\n 'appshell.mainNav': 'Navegación principal',\n 'appshell.expandMenu': 'Expandir menú',\n 'appshell.collapseMenu': 'Colapsar menú',\n 'appshell.expand': 'Expandir',\n 'appshell.collapse': 'Colapsar',\n 'appshell.openMenu': 'Abrir menú',\n 'appshell.breadcrumb': 'Breadcrumb',\n\n // Notifications\n 'notifications.button': 'Notificaciones',\n 'notifications.unreadSuffix': ' ({n} sin leer)',\n 'notifications.empty': 'No tienes notificaciones',\n 'notifications.panel': 'Notificaciones',\n 'notifications.title': 'Notificaciones',\n 'notifications.markAllRead': 'Marcar todas como leídas',\n 'notifications.clear': 'Limpiar',\n\n // Filters\n 'filters.panel': 'Filtros',\n 'filters.clear': 'Limpiar',\n 'filters.bulkActions': 'Acciones en lote',\n 'filters.deselectAll': 'Deseleccionar todo',\n 'filters.sortBy': 'Ordenar por',\n 'filters.selectedOne': '{n} seleccionado',\n 'filters.selectedMany': '{n} seleccionados',\n\n // Editing\n 'transfer.available': 'Disponibles',\n 'transfer.assigned': 'Asignados',\n 'transfer.assignSelected': 'Asignar seleccionados',\n 'transfer.removeSelected': 'Quitar seleccionados',\n 'transfer.empty': 'Vacío',\n 'descList.edit': 'Editar',\n 'diff.label': 'Cambios',\n 'diff.field': 'Campo',\n 'diff.before': 'Antes',\n 'diff.after': 'Después',\n\n // Permissions\n 'permissions.markAll': 'Marcar todos',\n 'permissions.unmarkAll': 'Quitar todos',\n 'permissions.action': 'Acción',\n 'permissions.cellLabel': '{action} para {role}',\n\n // Comments\n 'comments.placeholder': 'Escribe un comentario…',\n 'comments.send': 'Enviar',\n 'comments.internalTag': 'Nota interna',\n 'comments.internalOnly': 'Solo nota interna',\n 'attachments.empty': 'Sin archivos adjuntos',\n 'attachments.remove': 'Eliminar {name}',\n 'attachments.download': 'Descargar {name}',\n\n // Gallery\n 'gallery.thumbnails': 'Miniaturas',\n 'gallery.viewer': 'Visor de imagen',\n 'gallery.prev': 'Imagen anterior',\n 'gallery.next': 'Imagen siguiente',\n 'gallery.close': 'Cerrar',\n 'gallery.imageNumber': 'Imagen {n}',\n\n // Display\n 'alert.close': 'Cerrar alerta',\n 'spinner.loading': 'Cargando',\n 'chip.remove': 'Quitar',\n\n // Display3 — Calendar\n 'calendar.prevMonth': 'Mes anterior',\n 'calendar.nextMonth': 'Mes siguiente',\n 'calendar.expand': 'Expandir',\n 'calendar.collapse': 'Colapsar',\n 'calendar.weekdays': ['Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sáb', 'Dom'],\n 'calendar.months': [\n 'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio',\n 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre',\n ],\n\n // Pickers\n 'picker.openCalendar': 'Abrir calendario',\n 'picker.clearSelection': 'Limpiar selección',\n 'picker.selectRange': 'Seleccionar rango',\n 'picker.searchCommands': 'Buscar comandos…',\n 'picker.commandPalette': 'Paleta de comandos',\n 'picker.weekdaysShort': ['L', 'M', 'M', 'J', 'V', 'S', 'D'],\n 'combobox.remove': 'Quitar {label}',\n 'fileUpload.title': 'Arrastra archivos o haz clic',\n\n // Inputs\n 'pagination.label': 'Paginación',\n 'pagination.prev': 'Página anterior',\n 'pagination.next': 'Página siguiente',\n 'pagination.range': '{from}–{to} de {total}',\n 'pagination.rowsPerPage': 'Filas por página',\n 'numberInput.decrement': 'Disminuir',\n 'numberInput.increment': 'Aumentar',\n\n // Commerce\n 'commerce.quantity': 'Cantidad',\n 'commerce.decreaseQty': 'Disminuir cantidad',\n 'commerce.increaseQty': 'Aumentar cantidad',\n 'commerce.removeFromCart': 'Quitar del carro',\n 'commerce.removeItem': 'Quitar {name}',\n 'commerce.addFavorite': 'Agregar a favoritos',\n 'commerce.removeFavorite': 'Quitar de favoritos',\n 'commerce.applyCoupon': 'Aplicar',\n 'commerce.cartTitle': 'Tu carro',\n 'commerce.cartEmpty': 'Tu carro está vacío',\n 'commerce.subtotal': 'Subtotal',\n 'commerce.checkout': 'Ir a pagar',\n 'commerce.promoPlaceholder': 'Código promocional',\n 'commerce.promoInvalid': 'Código inválido',\n 'commerce.shippingAchieved': '¡Tienes envío gratis!',\n 'commerce.shippingPrefix': 'Te falta ',\n 'commerce.shippingSuffix': ' para envío gratis',\n\n // Tags input\n 'tagsInput.remove': 'Quitar {tag}',\n 'tagsInput.placeholder': 'Escribe y Enter…',\n};\n","'use client';\nimport * as React from 'react';\nimport type { UiKitMessages } from './messages';\nimport { esMessages } from './es';\n\nconst LocaleContext = React.createContext<UiKitMessages | null>(null);\n\nexport interface LocaleProviderProps {\n /**\n * Partial dict of overrides. Missing keys fall back to `esMessages`,\n * so consumers can translate just a few strings without re-declaring all.\n */\n messages?: Partial<UiKitMessages>;\n children: React.ReactNode;\n}\n\nexport function LocaleProvider({ messages, children }: LocaleProviderProps) {\n const merged = React.useMemo<UiKitMessages>(\n () => (messages ? { ...esMessages, ...messages } : esMessages),\n [messages]\n );\n return <LocaleContext.Provider value={merged}>{children}</LocaleContext.Provider>;\n}\n\n/**\n * Returns the active messages dict. Falls back to `esMessages` when no\n * `<LocaleProvider>` is present in the tree, so components remain usable\n * standalone.\n */\nexport function useLocale(): UiKitMessages {\n return React.useContext(LocaleContext) ?? esMessages;\n}\n"]}
|