@feugene/granularity 0.26.0 → 0.27.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/dist/chunks/classTokens-8v2XC74x.js +16 -0
- package/dist/chunks/classTokens-8v2XC74x.js.map +1 -0
- package/dist/chunks/{config-Bpt9Xbxm.js → config-2ZHRsdOc.js} +2 -2
- package/dist/chunks/config-2ZHRsdOc.js.map +1 -0
- package/dist/chunks/{config-D6W1rnlp.js → config-B0uvcTPH.js} +1 -1
- package/dist/chunks/{config-D6W1rnlp.js.map → config-B0uvcTPH.js.map} +1 -1
- package/dist/chunks/{config-Bsh948nP.js → config-B3J0alyY.js} +1 -1
- package/dist/chunks/{config-Bsh948nP.js.map → config-B3J0alyY.js.map} +1 -1
- package/dist/chunks/{config-ScuvHw6k.js → config-B5SBUa6u.js} +1 -1
- package/dist/chunks/{config-ScuvHw6k.js.map → config-B5SBUa6u.js.map} +1 -1
- package/dist/chunks/{config-BeZRuonp.js → config-BDSaD-5p.js} +1 -1
- package/dist/chunks/{config-BeZRuonp.js.map → config-BDSaD-5p.js.map} +1 -1
- package/dist/chunks/{config-Dgj1Q6JY.js → config-BEO7brpO.js} +3 -3
- package/dist/chunks/config-BEO7brpO.js.map +1 -0
- package/dist/chunks/{config-B84z1aos.js → config-BHcS5Cwm.js} +1 -1
- package/dist/chunks/{config-B84z1aos.js.map → config-BHcS5Cwm.js.map} +1 -1
- package/dist/chunks/{config-DA6SnEoy.js → config-BRESvs9g.js} +2 -2
- package/dist/chunks/{config-DA6SnEoy.js.map → config-BRESvs9g.js.map} +1 -1
- package/dist/chunks/{config-CN2ULSQL.js → config-BTmfQFwi.js} +5 -5
- package/dist/chunks/config-BTmfQFwi.js.map +1 -0
- package/dist/chunks/{config-DtgYuGUn2.js → config-BTwYMQaz2.js} +5 -3
- package/dist/chunks/config-BTwYMQaz2.js.map +1 -0
- package/dist/chunks/{config-QJ54_fcM.js → config-BaWANzzB.js} +1 -1
- package/dist/chunks/{config-QJ54_fcM.js.map → config-BaWANzzB.js.map} +1 -1
- package/dist/chunks/{config-COvrUfhR.js → config-BcXX7S7B.js} +5 -5
- package/dist/chunks/config-BcXX7S7B.js.map +1 -0
- package/dist/chunks/{config-COpuWGr_.js → config-Bd7QfiGj.js} +1 -1
- package/dist/chunks/{config-COpuWGr_.js.map → config-Bd7QfiGj.js.map} +1 -1
- package/dist/chunks/{config-BDfTXHo1.js → config-BhfNgyWL.js} +2 -2
- package/dist/chunks/{config-BDfTXHo1.js.map → config-BhfNgyWL.js.map} +1 -1
- package/dist/chunks/{config-CjnbevbD.js → config-Bjn30smH.js} +1 -1
- package/dist/chunks/{config-CjnbevbD.js.map → config-Bjn30smH.js.map} +1 -1
- package/dist/chunks/{config-CN970ZcJ.js → config-BlJa1Mj9.js} +13 -13
- package/dist/chunks/config-BlJa1Mj9.js.map +1 -0
- package/dist/chunks/{config-DU2DNSRx.js → config-BoUI0t-t.js} +1 -1
- package/dist/chunks/{config-DU2DNSRx.js.map → config-BoUI0t-t.js.map} +1 -1
- package/dist/chunks/{config-BN4sXYXn.js → config-BqT6PMzO.js} +7 -14
- package/dist/chunks/config-BqT6PMzO.js.map +1 -0
- package/dist/chunks/config-BuGlNPE9.js.map +1 -0
- package/dist/chunks/{config-MRvhUl-O.js → config-CJzmDHfI.js} +1 -1
- package/dist/chunks/{config-MRvhUl-O.js.map → config-CJzmDHfI.js.map} +1 -1
- package/dist/chunks/{config-DGWFal5h.js → config-CLjjjPZj.js} +7 -7
- package/dist/chunks/config-CLjjjPZj.js.map +1 -0
- package/dist/chunks/{config-Cl4ST6Qd.js → config-CQLNjc9X2.js} +2 -2
- package/dist/chunks/config-CQLNjc9X2.js.map +1 -0
- package/dist/chunks/{config-vSji8w90.js → config-CWtfxkM9.js} +9 -9
- package/dist/chunks/config-CWtfxkM9.js.map +1 -0
- package/dist/chunks/{config-DKISz9gR.js → config-CWthWcWY.js} +2 -2
- package/dist/chunks/{config-DKISz9gR.js.map → config-CWthWcWY.js.map} +1 -1
- package/dist/chunks/{config-Iu684VNI.js → config-CZPDPJlg.js} +1 -1
- package/dist/chunks/{config-Iu684VNI.js.map → config-CZPDPJlg.js.map} +1 -1
- package/dist/chunks/{config-DAX8Deh1.js → config-CbEbLyDE.js} +3 -3
- package/dist/chunks/config-CbEbLyDE.js.map +1 -0
- package/dist/chunks/{config-D94Z9po5.js → config-ChPg-BQv.js} +2 -2
- package/dist/chunks/config-ChPg-BQv.js.map +1 -0
- package/dist/chunks/{config-DSJY6aEl.js → config-CjKpUcmy.js} +17 -17
- package/dist/chunks/config-CjKpUcmy.js.map +1 -0
- package/dist/chunks/{config-BIa3ilQm.js → config-CjWOTgLL.js} +4 -4
- package/dist/chunks/{config-BIa3ilQm.js.map → config-CjWOTgLL.js.map} +1 -1
- package/dist/chunks/{config-rkcKArZQ.js → config-CnYdE3HZ2.js} +5 -5
- package/dist/chunks/config-CnYdE3HZ2.js.map +1 -0
- package/dist/chunks/{config-BE6n20np.js → config-CvbVM4ep.js} +1 -1
- package/dist/chunks/{config-BE6n20np.js.map → config-CvbVM4ep.js.map} +1 -1
- package/dist/chunks/{config-9PYRZlKE.js → config-D0NzGYaE.js} +6 -6
- package/dist/chunks/config-D0NzGYaE.js.map +1 -0
- package/dist/chunks/{config-CKULiuvc.js → config-D0W8mGFD.js} +4 -4
- package/dist/chunks/{config-CKULiuvc.js.map → config-D0W8mGFD.js.map} +1 -1
- package/dist/chunks/{config-CY0_6cMi.js → config-D82r782v.js} +1 -1
- package/dist/chunks/{config-CY0_6cMi.js.map → config-D82r782v.js.map} +1 -1
- package/dist/chunks/config-DBmdgoVf2.js.map +1 -0
- package/dist/chunks/{config-WTNhdh6T.js → config-DCq4JySZ.js} +2 -2
- package/dist/chunks/{config-WTNhdh6T.js.map → config-DCq4JySZ.js.map} +1 -1
- package/dist/chunks/{config-C8tVRv8i.js → config-DGC00bTp.js} +13 -13
- package/dist/chunks/config-DGC00bTp.js.map +1 -0
- package/dist/chunks/{config-BsPDQ0dS.js → config-DIDz_E5m.js} +9 -9
- package/dist/chunks/config-DIDz_E5m.js.map +1 -0
- package/dist/chunks/{config-Dguto_6o.js → config-DM0lsduD.js} +6 -6
- package/dist/chunks/config-DM0lsduD.js.map +1 -0
- package/dist/chunks/{config-BfsBepkH.js → config-DNDgp9bB.js} +5 -5
- package/dist/chunks/config-DNDgp9bB.js.map +1 -0
- package/dist/chunks/{config-DpeQchsV.js → config-DO8mjeIo.js} +2 -2
- package/dist/chunks/{config-DpeQchsV.js.map → config-DO8mjeIo.js.map} +1 -1
- package/dist/chunks/{config-Baj7Wvx-.js → config-DRbojEzO.js} +4 -4
- package/dist/chunks/config-DRbojEzO.js.map +1 -0
- package/dist/chunks/{config-CQzGyi1C.js → config-DWL81-aM.js} +1 -1
- package/dist/chunks/{config-CQzGyi1C.js.map → config-DWL81-aM.js.map} +1 -1
- package/dist/chunks/{config-esdviAPL.js → config-DZCUPHPU.js} +1 -1
- package/dist/chunks/{config-esdviAPL.js.map → config-DZCUPHPU.js.map} +1 -1
- package/dist/chunks/{config-DKdlqXiY.js → config-DcfWZOi5.js} +5 -5
- package/dist/chunks/config-DcfWZOi5.js.map +1 -0
- package/dist/chunks/{config-BC8d_smz.js → config-DeyT9dJl.js} +3 -3
- package/dist/chunks/{config-BC8d_smz.js.map → config-DeyT9dJl.js.map} +1 -1
- package/dist/chunks/{config-Cwd3yjRw.js → config-DnF472Ox.js} +6 -4
- package/dist/chunks/config-DnF472Ox.js.map +1 -0
- package/dist/chunks/{config-B_qi4Fma.js → config-DolULhjJ.js} +5 -5
- package/dist/chunks/config-DolULhjJ.js.map +1 -0
- package/dist/chunks/{config-CIcynHGr.js → config-DpAYidyY2.js} +1 -1
- package/dist/chunks/config-DpAYidyY2.js.map +1 -0
- package/dist/chunks/{config-DYgfMrIF.js → config-Dpk-eVkS.js} +1 -1
- package/dist/chunks/{config-DYgfMrIF.js.map → config-Dpk-eVkS.js.map} +1 -1
- package/dist/chunks/config-Dv_r92GL.js +35 -0
- package/dist/chunks/config-Dv_r92GL.js.map +1 -0
- package/dist/chunks/{config-B4w5gBD0.js → config-DwABJHEo.js} +2 -2
- package/dist/chunks/config-DwABJHEo.js.map +1 -0
- package/dist/chunks/{config-zjeAJ4ho2.js → config-MmPym-Z72.js} +5 -5
- package/dist/chunks/config-MmPym-Z72.js.map +1 -0
- package/dist/chunks/{config-DCFvmHEv.js → config-T3-DMXYm.js} +9 -7
- package/dist/chunks/config-T3-DMXYm.js.map +1 -0
- package/dist/chunks/{config-BoNR7_PD.js → config-Yy67uWHY.js} +1 -1
- package/dist/chunks/{config-BoNR7_PD.js.map → config-Yy67uWHY.js.map} +1 -1
- package/dist/chunks/{config-BFJIxE8b.js → config-Z5LeUXys.js} +1 -1
- package/dist/chunks/{config-BFJIxE8b.js.map → config-Z5LeUXys.js.map} +1 -1
- package/dist/chunks/{config-DWN4x6_e.js → config-_QF0O1vq.js} +9 -9
- package/dist/chunks/config-_QF0O1vq.js.map +1 -0
- package/dist/chunks/{config-Cp0DE0GH.js → config-_jO3q1Le.js} +1 -1
- package/dist/chunks/{config-Cp0DE0GH.js.map → config-_jO3q1Le.js.map} +1 -1
- package/dist/chunks/{config-DGCMHPCR.js → config-g8-JGZ_Y.js} +1 -1
- package/dist/chunks/{config-DGCMHPCR.js.map → config-g8-JGZ_Y.js.map} +1 -1
- package/dist/chunks/{config-BTCOJO5z2.js → config-jyr6AIZt2.js} +3 -3
- package/dist/chunks/{config-BTCOJO5z2.js.map → config-jyr6AIZt2.js.map} +1 -1
- package/dist/chunks/{config-BtXRpAtq.js → config-mlheIMtV.js} +3 -6
- package/dist/chunks/config-mlheIMtV.js.map +1 -0
- package/dist/chunks/{config-BEVBsvni2.js → config-rLkc9Zn2.js} +1 -1
- package/dist/chunks/config-rLkc9Zn2.js.map +1 -0
- package/dist/chunks/{config-T3qdQBgU.js → config-tiUtEn4Q.js} +1 -1
- package/dist/chunks/{config-T3qdQBgU.js.map → config-tiUtEn4Q.js.map} +1 -1
- package/dist/chunks/{config-BViooYNv.js → config-uzUuosv7.js} +7 -2
- package/dist/chunks/config-uzUuosv7.js.map +1 -0
- package/dist/chunks/{config-BbY2SKGE.js → config-vYMJ3Cr1.js} +11 -9
- package/dist/chunks/config-vYMJ3Cr1.js.map +1 -0
- package/dist/chunks/context-BfIQv7m1.js.map +1 -0
- package/dist/chunks/{generated-CJe6hdiE.js → generated-DJ2dJ__C.js} +48 -0
- package/dist/chunks/generated-DJ2dJ__C.js.map +1 -0
- package/dist/chunks/{grBadgeStyles-C1S56Alo.js → grBadgeStyles-D8Mz73B5.js} +4 -4
- package/dist/chunks/grBadgeStyles-D8Mz73B5.js.map +1 -0
- package/dist/chunks/{config-D7zgE_Gr.js → grChipStyles-3JZApw03.js} +21 -43
- package/dist/chunks/grChipStyles-3JZApw03.js.map +1 -0
- package/dist/chunks/{grDropdownMenuStyles-D1LOkdVj.js → grDropdownMenuStyles-DG3aYHkT.js} +3 -3
- package/dist/chunks/grDropdownMenuStyles-DG3aYHkT.js.map +1 -0
- package/dist/chunks/{grIconStyles-BwJrml2L.js → grIconStyles-B6BRqUld.js} +1 -1
- package/dist/chunks/{grIconStyles-BwJrml2L.js.map → grIconStyles-B6BRqUld.js.map} +1 -1
- package/dist/chunks/{grInputStyles-CJeMhUe5.js → grInputStyles-CAk3xKIb.js} +4 -4
- package/dist/chunks/grInputStyles-CAk3xKIb.js.map +1 -0
- package/dist/chunks/{grKbdStyles-CeZhGQHr.js → grKbdStyles-DENu8pUK.js} +5 -0
- package/dist/chunks/grKbdStyles-DENu8pUK.js.map +1 -0
- package/dist/chunks/{grLinkStyles-BoL8QYcV.js → grLinkStyles-FME_qMpi.js} +4 -4
- package/dist/chunks/grLinkStyles-FME_qMpi.js.map +1 -0
- package/dist/chunks/{grLoadingStyles-DEmji2wv.js → grLoadingStyles-CnQaf5ry.js} +1 -1
- package/dist/chunks/{grLoadingStyles-DEmji2wv.js.map → grLoadingStyles-CnQaf5ry.js.map} +1 -1
- package/dist/chunks/{grPopoverStyles-Cke_BZsM.js → grPopoverStyles-Djh5RNhn.js} +4 -4
- package/dist/chunks/grPopoverStyles-Djh5RNhn.js.map +1 -0
- package/dist/chunks/{grRadioStyles-BTjGNhtU.js → grRadioStyles-D4gnU65n.js} +4 -4
- package/dist/chunks/grRadioStyles-D4gnU65n.js.map +1 -0
- package/dist/chunks/{grSelectStyles-eTz4uPMP.js → grSelectStyles-Cdtd10eY.js} +9 -9
- package/dist/chunks/grSelectStyles-Cdtd10eY.js.map +1 -0
- package/dist/chunks/{grTableStyles-C-iaqQUN.js → grTableStyles-uuMPSOBR.js} +2 -2
- package/dist/chunks/{grTableStyles-C-iaqQUN.js.map → grTableStyles-uuMPSOBR.js.map} +1 -1
- package/dist/chunks/{grTextareaStyles-iOcHuVMM.js → grTextareaStyles-Bp35BGna.js} +4 -4
- package/dist/chunks/grTextareaStyles-Bp35BGna.js.map +1 -0
- package/dist/chunks/{granular-provider-BaHkLjFX.js → granular-provider-DvvRayEh.js} +67 -67
- package/dist/chunks/{granular-provider-BaHkLjFX.js.map → granular-provider-DvvRayEh.js.map} +1 -1
- package/dist/chunks/numericStep-Bq2lj4ew.js +23 -0
- package/dist/chunks/numericStep-Bq2lj4ew.js.map +1 -0
- package/dist/chunks/overlayTransition-0Fj5tQbq.js +36 -0
- package/dist/chunks/overlayTransition-0Fj5tQbq.js.map +1 -0
- package/dist/chunks/{safelist-CudBLyAD.js → safelist-BOq5Li7p.js} +1 -1
- package/dist/chunks/{safelist-CudBLyAD.js.map → safelist-BOq5Li7p.js.map} +1 -1
- package/dist/chunks/{safelist-DOfCQR5O.js → safelist-CtiHPgrj.js} +2 -2
- package/dist/chunks/{safelist-DOfCQR5O.js.map → safelist-CtiHPgrj.js.map} +1 -1
- package/dist/chunks/{safelist-CkF4v7DC.js → safelist-Y3zrlhOa.js} +1 -1
- package/dist/chunks/{safelist-CkF4v7DC.js.map → safelist-Y3zrlhOa.js.map} +1 -1
- package/dist/chunks/{useMenuItemsFocus-OyOnIAlr.js → useMenuItemsFocus-B6TldmGf.js} +1 -43
- package/dist/chunks/useMenuItemsFocus-B6TldmGf.js.map +1 -0
- package/dist/chunks/useTypeahead-mxPtPBf2.js +44 -0
- package/dist/chunks/useTypeahead-mxPtPBf2.js.map +1 -0
- package/dist/components/GrAlert/chunks/{GrAlert-B21QGele.js → GrAlert-FAVf-ksH.js} +1 -1
- package/dist/components/GrAlert/chunks/{GrAlert-B21QGele.js.map → GrAlert-FAVf-ksH.js.map} +1 -1
- package/dist/components/GrAlert/index.js +1 -1
- package/dist/components/GrAutocomplete/chunks/{GrAutocomplete-D9c9BNFg.js → GrAutocomplete-BwhUTqmG.js} +88 -81
- package/dist/components/GrAutocomplete/chunks/GrAutocomplete-BwhUTqmG.js.map +1 -0
- package/dist/components/GrAutocomplete/index.js +2 -2
- package/dist/components/GrAutocomplete/styles.css +1 -1
- package/dist/components/GrAvatar/chunks/{GrAvatar-BbdKRX8i.js → GrAvatar-CNmLmgcr.js} +1 -1
- package/dist/components/GrAvatar/chunks/{GrAvatar-BbdKRX8i.js.map → GrAvatar-CNmLmgcr.js.map} +1 -1
- package/dist/components/GrAvatar/index.js +2 -2
- package/dist/components/GrBadge/chunks/{GrBadge-_9rCHuE1.js → GrBadge-BM3f9PME.js} +2 -2
- package/dist/components/GrBadge/chunks/GrBadge-BM3f9PME.js.map +1 -0
- package/dist/components/GrBadge/index.js +3 -3
- package/dist/components/GrBadge/styles.css +1 -1
- package/dist/components/GrBadgeWrap/chunks/{GrBadgeWrap-DDoFQscR.js → GrBadgeWrap-B-A3PRkE.js} +1 -1
- package/dist/components/GrBadgeWrap/chunks/GrBadgeWrap-B-A3PRkE.js.map +1 -0
- package/dist/components/GrBadgeWrap/index.js +2 -2
- package/dist/components/GrBottomNav/chunks/{GrBottomNav-JUu4ylYv.js → GrBottomNav-wtFatLjB.js} +1 -1
- package/dist/components/GrBottomNav/chunks/{GrBottomNav-JUu4ylYv.js.map → GrBottomNav-wtFatLjB.js.map} +1 -1
- package/dist/components/GrBottomNav/index.js +2 -2
- package/dist/components/GrBreadcrumbs/chunks/{GrBreadcrumbs-CQ44iU2o.js → GrBreadcrumbs-jtSnMEtg.js} +2 -2
- package/dist/components/GrBreadcrumbs/chunks/{GrBreadcrumbs-CQ44iU2o.js.map → GrBreadcrumbs-jtSnMEtg.js.map} +1 -1
- package/dist/components/GrBreadcrumbs/index.js +2 -2
- package/dist/components/GrButton/chunks/{GrButton-DCz-Wn-V.js → GrButton-Bw2AH4uX.js} +1 -1
- package/dist/components/GrButton/chunks/GrButton-Bw2AH4uX.js.map +1 -0
- package/dist/components/GrButton/index.js +3 -3
- package/dist/components/GrButtonGroup/chunks/{GrButtonGroup-BQo5VQ_c.js → GrButtonGroup-CKyiAV8K.js} +1 -1
- package/dist/components/GrButtonGroup/chunks/GrButtonGroup-CKyiAV8K.js.map +1 -0
- package/dist/components/GrButtonGroup/index.js +3 -3
- package/dist/components/GrCard/chunks/{GrCard-aQIjk6I9.js → GrCard-DR3ehBt8.js} +1 -1
- package/dist/components/GrCard/chunks/GrCard-DR3ehBt8.js.map +1 -0
- package/dist/components/GrCard/index.js +2 -2
- package/dist/components/GrCheckbox/index.js +1 -1
- package/dist/components/GrCheckboxGroup/index.js +1 -1
- package/dist/components/GrChip/chunks/{GrChip-BnL2FedO.js → GrChip-Df4orxRH.js} +15 -4
- package/dist/components/GrChip/chunks/GrChip-Df4orxRH.js.map +1 -0
- package/dist/components/GrChip/index.js +2 -2
- package/dist/components/GrChipGroup/chunks/{GrChipGroup-DefmSdY9.js → GrChipGroup-C78Vcwos.js} +2 -2
- package/dist/components/GrChipGroup/chunks/{GrChipGroup-DefmSdY9.js.map → GrChipGroup-C78Vcwos.js.map} +1 -1
- package/dist/components/GrChipGroup/index.js +2 -2
- package/dist/components/GrCodeBlock/chunks/{GrCodeBlock-CyptiEo4.js → GrCodeBlock-Dkvkr91t.js} +2 -2
- package/dist/components/GrCodeBlock/chunks/{GrCodeBlock-CyptiEo4.js.map → GrCodeBlock-Dkvkr91t.js.map} +1 -1
- package/dist/components/GrCodeBlock/index.js +2 -2
- package/dist/components/GrCollapse/chunks/{GrCollapse-DUROgAgc.js → GrCollapse-CytiA2Sx.js} +3 -3
- package/dist/components/GrCollapse/chunks/{GrCollapse-DUROgAgc.js.map → GrCollapse-CytiA2Sx.js.map} +1 -1
- package/dist/components/GrCollapse/index.js +2 -2
- package/dist/components/GrColorPicker/chunks/{GrColorPicker-CDaJRVIM.js → GrColorPicker-0n_KGeUy.js} +4 -4
- package/dist/components/GrColorPicker/chunks/{GrColorPicker-CDaJRVIM.js.map → GrColorPicker-0n_KGeUy.js.map} +1 -1
- package/dist/components/GrColorPicker/index.js +2 -2
- package/dist/components/GrCommandPalette/chunks/{GrCommandPalette-BPsVN_XU.js → GrCommandPalette-C5abL2Y7.js} +3 -3
- package/dist/components/GrCommandPalette/chunks/GrCommandPalette-C5abL2Y7.js.map +1 -0
- package/dist/components/GrCommandPalette/index.js +2 -2
- package/dist/components/GrCommandPalette/styles.css +1 -1
- package/dist/components/GrConfigProvider/chunks/GrConfigProvider-BF7R3hgg.js.map +1 -1
- package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-CwXNLyzk.js → GrConfirmDialog-B9mIU78E.js} +4 -4
- package/dist/components/GrConfirmDialog/chunks/GrConfirmDialog-B9mIU78E.js.map +1 -0
- package/dist/components/GrConfirmDialog/index.js +1 -1
- package/dist/components/GrContextMenu/chunks/{GrContextMenu-BbAJholy.js → GrContextMenu-DDAUvrDK.js} +3 -3
- package/dist/components/GrContextMenu/chunks/GrContextMenu-DDAUvrDK.js.map +1 -0
- package/dist/components/GrContextMenu/index.js +1 -1
- package/dist/components/GrDataTable/chunks/{GrDataTable-NRbrXpdx.js → GrDataTable-DU00V44y.js} +14 -4
- package/dist/components/GrDataTable/chunks/GrDataTable-DU00V44y.js.map +1 -0
- package/dist/components/GrDataTable/index.js +2 -2
- package/dist/components/GrDelta/chunks/{GrDelta-NE5HhXoo.js → GrDelta-04j9WmEY.js} +0 -0
- package/dist/components/GrDelta/chunks/{GrDelta-NE5HhXoo.js.map → GrDelta-04j9WmEY.js.map} +1 -1
- package/dist/components/GrDelta/index.js +2 -2
- package/dist/components/GrDescriptionList/chunks/{GrDescriptionList-1mICfrqX.js → GrDescriptionList-BMeCgFV3.js} +1 -1
- package/dist/components/GrDescriptionList/chunks/GrDescriptionList-BMeCgFV3.js.map +1 -0
- package/dist/components/GrDescriptionList/index.js +2 -2
- package/dist/components/GrDialog/chunks/{GrDialog-5Y5K87ss.js → GrDialog-bOUDYfmh.js} +2 -2
- package/dist/components/GrDialog/chunks/GrDialog-bOUDYfmh.js.map +1 -0
- package/dist/components/GrDialog/index.js +2 -2
- package/dist/components/GrDialogService/chunks/{GrDialogService-CHVR4sOk.js → GrDialogService-B--br5so.js} +4 -4
- package/dist/components/GrDialogService/chunks/{GrDialogService-CHVR4sOk.js.map → GrDialogService-B--br5so.js.map} +1 -1
- package/dist/components/GrDialogService/index.js +1 -1
- package/dist/components/GrDivider/chunks/{GrDivider-CAhm9jbE.js → GrDivider-BXavGcMX.js} +1 -1
- package/dist/components/GrDivider/chunks/GrDivider-BXavGcMX.js.map +1 -0
- package/dist/components/GrDivider/index.js +2 -2
- package/dist/components/GrDrawer/chunks/{GrDrawer-CXy3-SVd.js → GrDrawer-BCreL-eq.js} +3 -3
- package/dist/components/GrDrawer/chunks/{GrDrawer-CXy3-SVd.js.map → GrDrawer-BCreL-eq.js.map} +1 -1
- package/dist/components/GrDrawer/index.js +2 -2
- package/dist/components/GrDropdown/chunks/{GrDropdown-BfTmdPyh.js → GrDropdown-13Wt9eB_.js} +16 -8
- package/dist/components/GrDropdown/chunks/GrDropdown-13Wt9eB_.js.map +1 -0
- package/dist/components/GrDropdown/index.js +2 -2
- package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu-l5HEqzjr.js → GrDropdownMenu-5zoOL8Oj.js} +3 -3
- package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-5zoOL8Oj.js.map +1 -0
- package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenuList-BGA_xNVo.js → GrDropdownMenuList-CT_1TQJo.js} +1 -1
- package/dist/components/GrDropdownMenu/chunks/GrDropdownMenuList-CT_1TQJo.js.map +1 -0
- package/dist/components/GrDropdownMenu/index.js +3 -3
- package/dist/components/GrEmptyState/chunks/{GrEmptyState-CS9do8eM.js → GrEmptyState-D4T5pzXA.js} +2 -2
- package/dist/components/GrEmptyState/chunks/{GrEmptyState-CS9do8eM.js.map → GrEmptyState-D4T5pzXA.js.map} +1 -1
- package/dist/components/GrEmptyState/index.js +2 -2
- package/dist/components/GrFilePreview/chunks/{GrFilePreview-D0Bt-0nn.js → GrFilePreview-C9Z7hMK8.js} +1 -1
- package/dist/components/GrFilePreview/chunks/{GrFilePreview-D0Bt-0nn.js.map → GrFilePreview-C9Z7hMK8.js.map} +1 -1
- package/dist/components/GrFilePreview/index.js +2 -2
- package/dist/components/GrFileUpload/chunks/{GrFileUpload-wNXzHb5N.js → GrFileUpload-FjbaYGjL.js} +2 -2
- package/dist/components/GrFileUpload/chunks/{GrFileUpload-wNXzHb5N.js.map → GrFileUpload-FjbaYGjL.js.map} +1 -1
- package/dist/components/GrFileUpload/index.js +2 -2
- package/dist/components/GrForm/chunks/{GrForm-CAlJg-wb.js → GrForm-CrnfCsgj.js} +8 -2
- package/dist/components/GrForm/chunks/GrForm-CrnfCsgj.js.map +1 -0
- package/dist/components/GrForm/index.js +1 -1
- package/dist/components/GrFormField/chunks/GrFormField-DSylU7IU.js.map +1 -1
- package/dist/components/GrFormField/index.js +1 -1
- package/dist/components/GrFormFile/chunks/{GrFormFile-DhVkB2gm.js → GrFormFile-ChdKlN83.js} +3 -3
- package/dist/components/GrFormFile/chunks/{GrFormFile-DhVkB2gm.js.map → GrFormFile-ChdKlN83.js.map} +1 -1
- package/dist/components/GrFormFile/index.js +2 -2
- package/dist/components/GrFormSection/chunks/{GrFormSection-CdGWvzXO.js → GrFormSection-ejieOg9H.js} +1 -1
- package/dist/components/GrFormSection/chunks/{GrFormSection-CdGWvzXO.js.map → GrFormSection-ejieOg9H.js.map} +1 -1
- package/dist/components/GrFormSection/index.js +2 -2
- package/dist/components/GrIcon/chunks/{GrIcon-bQwtZtYT.js → GrIcon-Bn1XEriL.js} +1 -1
- package/dist/components/GrIcon/chunks/GrIcon-Bn1XEriL.js.map +1 -0
- package/dist/components/GrIcon/index.js +2 -2
- package/dist/components/GrImageViewer/chunks/{GrImageViewer-ng7el4wn.js → GrImageViewer-COUcpOgR.js} +2 -2
- package/dist/components/GrImageViewer/chunks/GrImageViewer-COUcpOgR.js.map +1 -0
- package/dist/components/GrImageViewer/index.js +2 -2
- package/dist/components/GrInput/chunks/{GrInput-Bb_pxqpT.js → GrInput-c53iltz0.js} +1 -1
- package/dist/components/GrInput/chunks/{GrInput-Bb_pxqpT.js.map → GrInput-c53iltz0.js.map} +1 -1
- package/dist/components/GrInput/index.js +2 -2
- package/dist/components/GrInputTag/chunks/{GrInputTag-UI8kIB_F.js → GrInputTag-LP3smqOv.js} +46 -49
- package/dist/components/GrInputTag/chunks/GrInputTag-LP3smqOv.js.map +1 -0
- package/dist/components/GrInputTag/index.js +2 -2
- package/dist/components/GrJsonViewer/chunks/{GrJsonViewer-jk3ylOTc.js → GrJsonViewer-ClTvjlFx.js} +4 -4
- package/dist/components/GrJsonViewer/chunks/{GrJsonViewer-jk3ylOTc.js.map → GrJsonViewer-ClTvjlFx.js.map} +1 -1
- package/dist/components/GrJsonViewer/index.js +2 -2
- package/dist/components/GrKbd/chunks/{GrKbd-BXbhsH0M.js → GrKbd-D2ga1H9i.js} +1 -1
- package/dist/components/GrKbd/chunks/{GrKbd-BXbhsH0M.js.map → GrKbd-D2ga1H9i.js.map} +1 -1
- package/dist/components/GrKbd/index.js +2 -2
- package/dist/components/GrLink/chunks/{GrLink-BQb7U4so.js → GrLink-DAGCFYO7.js} +2 -2
- package/dist/components/GrLink/chunks/GrLink-DAGCFYO7.js.map +1 -0
- package/dist/components/GrLink/index.js +2 -2
- package/dist/components/GrList/chunks/{GrList-B5bclmHV.js → GrList-DrXrKU37.js} +3 -3
- package/dist/components/GrList/chunks/GrList-DrXrKU37.js.map +1 -0
- package/dist/components/GrList/index.js +2 -2
- package/dist/components/GrList/styles.css +1 -1
- package/dist/components/GrLoading/chunks/{GrLoading-DeBFTvFX.js → GrLoading-DDD8WAIH.js} +2 -2
- package/dist/components/GrLoading/chunks/{GrLoading-DeBFTvFX.js.map → GrLoading-DDD8WAIH.js.map} +1 -1
- package/dist/components/GrLoading/index.js +2 -2
- package/dist/components/GrModal/index.js +1 -1
- package/dist/components/GrNavbar/chunks/{GrNavbar-DPj30sHX.js → GrNavbar-DhswlYyh.js} +3 -3
- package/dist/components/GrNavbar/chunks/{GrNavbar-DPj30sHX.js.map → GrNavbar-DhswlYyh.js.map} +1 -1
- package/dist/components/GrNavbar/index.js +2 -2
- package/dist/components/GrNumberInput/chunks/{GrNumberInput-V2mZvDDC.js → GrNumberInput-Daud9Jdm.js} +3 -14
- package/dist/components/GrNumberInput/chunks/GrNumberInput-Daud9Jdm.js.map +1 -0
- package/dist/components/GrNumberInput/index.js +2 -2
- package/dist/components/GrPagination/chunks/{GrPagination-DG7kp6VL.js → GrPagination-CaNTZc-v.js} +3 -3
- package/dist/components/GrPagination/chunks/{GrPagination-DG7kp6VL.js.map → GrPagination-CaNTZc-v.js.map} +1 -1
- package/dist/components/GrPagination/index.js +2 -2
- package/dist/components/GrPopover/chunks/{GrPopover-DDChM1jD.js → GrPopover-CofG-Tfe.js} +16 -8
- package/dist/components/GrPopover/chunks/GrPopover-CofG-Tfe.js.map +1 -0
- package/dist/components/GrPopover/index.js +2 -2
- package/dist/components/GrProgressBar/index.js +1 -1
- package/dist/components/GrProgressCircle/chunks/{GrProgressCircle-BeUx1g1f.js → GrProgressCircle-D3yWXYDa.js} +1 -1
- package/dist/components/GrProgressCircle/chunks/{GrProgressCircle-BeUx1g1f.js.map → GrProgressCircle-D3yWXYDa.js.map} +1 -1
- package/dist/components/GrProgressCircle/index.js +2 -2
- package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-BGuMUzlv.js → GrPromptDialog-DMhALhSS.js} +6 -6
- package/dist/components/GrPromptDialog/chunks/GrPromptDialog-DMhALhSS.js.map +1 -0
- package/dist/components/GrPromptDialog/index.js +1 -1
- package/dist/components/GrRadio/chunks/{GrRadio-BdhknbO8.js → GrRadio-C_rESc5g.js} +1 -1
- package/dist/components/GrRadio/chunks/GrRadio-C_rESc5g.js.map +1 -0
- package/dist/components/GrRadio/index.js +2 -2
- package/dist/components/GrRadioGroup/chunks/{GrRadioGroup-7w4bXIg_.js → GrRadioGroup-CdQO4G-U.js} +2 -2
- package/dist/components/GrRadioGroup/chunks/{GrRadioGroup-7w4bXIg_.js.map → GrRadioGroup-CdQO4G-U.js.map} +1 -1
- package/dist/components/GrRadioGroup/index.js +1 -1
- package/dist/components/GrRating/chunks/{GrRating-BSEtaibx.js → GrRating-IEiTOdnF.js} +1 -1
- package/dist/components/GrRating/chunks/{GrRating-BSEtaibx.js.map → GrRating-IEiTOdnF.js.map} +1 -1
- package/dist/components/GrRating/index.js +2 -2
- package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-DA4q90Zt.js → GrResponseErrorBanner-C_skObtv.js} +1 -1
- package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-DA4q90Zt.js.map → GrResponseErrorBanner-C_skObtv.js.map} +1 -1
- package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-BhP-xw2P.js → GrResponseErrorBanner-DudGc9LO.js} +4 -4
- package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-BhP-xw2P.js.map → GrResponseErrorBanner-DudGc9LO.js.map} +1 -1
- package/dist/components/GrResponseErrorBanner/index.js +2 -2
- package/dist/components/GrSegmented/chunks/{GrSegmented-DKpo3cnC.js → GrSegmented-CB-VR-yL.js} +1 -1
- package/dist/components/GrSegmented/chunks/{GrSegmented-DKpo3cnC.js.map → GrSegmented-CB-VR-yL.js.map} +1 -1
- package/dist/components/GrSegmented/index.js +2 -2
- package/dist/components/GrSelect/chunks/{GrSelect-BA1wfX3c.js → GrSelect-BE1VNTiY.js} +96 -89
- package/dist/components/GrSelect/chunks/GrSelect-BE1VNTiY.js.map +1 -0
- package/dist/components/GrSelect/index.js +2 -2
- package/dist/components/GrSelect/styles.css +1 -1
- package/dist/components/GrSidebar/chunks/{GrSidebar-DY-LgIbS.js → GrSidebar-DxPhIiWs.js} +3 -3
- package/dist/components/GrSidebar/chunks/{GrSidebar-DY-LgIbS.js.map → GrSidebar-DxPhIiWs.js.map} +1 -1
- package/dist/components/GrSidebar/index.js +2 -2
- package/dist/components/GrSlider/chunks/{GrSlider-s99yAyz6.js → GrSlider-DJfeEl4h.js} +5 -4
- package/dist/components/GrSlider/chunks/GrSlider-DJfeEl4h.js.map +1 -0
- package/dist/components/GrSlider/index.js +2 -2
- package/dist/components/GrSortableList/chunks/{GrSortableList-BMXyxmRc.js → GrSortableList-DGs3Pi2J.js} +2 -2
- package/dist/components/GrSortableList/chunks/{GrSortableList-BMXyxmRc.js.map → GrSortableList-DGs3Pi2J.js.map} +1 -1
- package/dist/components/GrSortableList/index.js +2 -2
- package/dist/components/GrSplitter/chunks/{GrSplitter-B9_JrT7q.js → GrSplitter-MltjaADn.js} +1 -1
- package/dist/components/GrSplitter/chunks/{GrSplitter-B9_JrT7q.js.map → GrSplitter-MltjaADn.js.map} +1 -1
- package/dist/components/GrSplitter/index.js +2 -2
- package/dist/components/GrStatistic/chunks/{GrStatistic-BJQv5aOS.js → GrStatistic-qHVasK37.js} +2 -2
- package/dist/components/GrStatistic/chunks/GrStatistic-qHVasK37.js.map +1 -0
- package/dist/components/GrStatistic/index.js +2 -2
- package/dist/components/GrSteps/chunks/{GrSteps-Cce4rfr3.js → GrSteps-C2jxpZoN.js} +1 -1
- package/dist/components/GrSteps/chunks/{GrSteps-Cce4rfr3.js.map → GrSteps-C2jxpZoN.js.map} +1 -1
- package/dist/components/GrSteps/index.js +2 -2
- package/dist/components/GrSwitch/chunks/{GrSwitch-CHiIj9GT.js → GrSwitch-KRlRMwgp.js} +1 -1
- package/dist/components/GrSwitch/chunks/{GrSwitch-CHiIj9GT.js.map → GrSwitch-KRlRMwgp.js.map} +1 -1
- package/dist/components/GrSwitch/index.js +2 -2
- package/dist/components/GrTabPanels/chunks/GrTabPanels-BZQS8-JM.js.map +1 -1
- package/dist/components/GrTable/chunks/{GrTable-f3qCWa99.js → GrTable-Zcdz2St_.js} +1 -1
- package/dist/components/GrTable/chunks/GrTable-Zcdz2St_.js.map +1 -0
- package/dist/components/GrTable/index.js +2 -2
- package/dist/components/GrTabs/chunks/{GrTabs-CBHZkOFY.js → GrTabs-ugDnkk-2.js} +2 -2
- package/dist/components/GrTabs/chunks/{GrTabs-CBHZkOFY.js.map → GrTabs-ugDnkk-2.js.map} +1 -1
- package/dist/components/GrTabs/index.js +2 -2
- package/dist/components/GrTextarea/chunks/{GrTextarea-CNnkcIG1.js → GrTextarea-KREK75Bu.js} +1 -1
- package/dist/components/GrTextarea/chunks/{GrTextarea-CNnkcIG1.js.map → GrTextarea-KREK75Bu.js.map} +1 -1
- package/dist/components/GrTextarea/index.js +2 -2
- package/dist/components/GrTimeline/chunks/{GrTimeline-DIDdkTn7.js → GrTimeline-BiHpArsg.js} +1 -1
- package/dist/components/GrTimeline/chunks/{GrTimeline-DIDdkTn7.js.map → GrTimeline-BiHpArsg.js.map} +1 -1
- package/dist/components/GrTimeline/index.js +2 -2
- package/dist/components/GrToaster/chunks/{GrToaster-CC49q3a4.js → GrToaster-CUi3ldJ0.js} +6 -6
- package/dist/components/GrToaster/chunks/GrToaster-CUi3ldJ0.js.map +1 -0
- package/dist/components/GrToaster/index.js +2 -2
- package/dist/components/GrToaster/styles.css +1 -1
- package/dist/components/GrTooltip/chunks/{GrTooltip-B6AwE_UX.js → GrTooltip-BKFjqu0E.js} +4 -4
- package/dist/components/GrTooltip/chunks/GrTooltip-BKFjqu0E.js.map +1 -0
- package/dist/components/GrTooltip/index.js +2 -2
- package/dist/components/GrTree/chunks/{GrTree-J5q8aCya.js → GrTree-D5ozu6U4.js} +15 -25
- package/dist/components/GrTree/chunks/GrTree-D5ozu6U4.js.map +1 -0
- package/dist/components/GrTree/index.js +1 -1
- package/dist/components/GrTree/styles.css +1 -1
- package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-DEfxWAc3.js → GrTreeSelect-Db_uKdNa.js} +18 -10
- package/dist/components/GrTreeSelect/chunks/GrTreeSelect-Db_uKdNa.js.map +1 -0
- package/dist/components/GrTreeSelect/index.js +2 -2
- package/dist/components/GrValue/chunks/{GrValue-CZsuZ4x-.js → GrValue-ezkQM05Q.js} +1 -1
- package/dist/components/GrValue/chunks/{GrValue-CZsuZ4x-.js.map → GrValue-ezkQM05Q.js.map} +1 -1
- package/dist/components/GrValue/index.js +2 -2
- package/dist/directives/loading.js +1 -1
- package/dist/granular-provider-node.js +1 -1
- package/dist/granular-provider.js +1 -1
- package/dist/index.js +143 -143
- package/dist/styles/tokens.css +11 -0
- package/dist/theme.js +1 -1
- package/dist/tokens.js +1 -1
- package/dist/types/components/GrAutocomplete/GrAutocomplete.vue.d.ts +4 -3
- package/dist/types/components/GrAutocomplete/grAutocompleteStyles.d.ts +2 -2
- package/dist/types/components/GrBadge/GrBadge.vue.d.ts +3 -3
- package/dist/types/components/GrBadgeWrap/GrBadgeWrap.vue.d.ts +3 -3
- package/dist/types/components/GrBadgeWrap/grBadgeWrapStyles.d.ts +1 -1
- package/dist/types/components/GrBottomNav/grBottomNavStyles.d.ts +1 -1
- package/dist/types/components/GrButton/GrButton.vue.d.ts +7 -7
- package/dist/types/components/GrButtonGroup/GrButtonGroup.vue.d.ts +3 -3
- package/dist/types/components/GrCard/GrCard.vue.d.ts +7 -9
- package/dist/types/components/GrCheckbox/GrCheckbox.vue.d.ts +1 -1
- package/dist/types/components/GrCheckboxGroup/GrCheckboxGroup.vue.d.ts +1 -1
- package/dist/types/components/GrChip/GrChip.vue.d.ts +19 -1
- package/dist/types/components/GrChip/grChipStyles.d.ts +10 -6
- package/dist/types/components/GrChipGroup/GrChipGroup.vue.d.ts +2 -2
- package/dist/types/components/GrCollapse/GrCollapseItem.vue.d.ts +9 -11
- package/dist/types/components/GrColorPicker/GrColorPicker.vue.d.ts +1 -1
- package/dist/types/components/GrCommandPalette/GrCommandPalette.vue.d.ts +13 -13
- package/dist/types/components/GrCommandPalette/grCommandPaletteStyles.d.ts +5 -5
- package/dist/types/components/GrConfigProvider/GrConfigProvider.vue.d.ts +3 -3
- package/dist/types/components/GrConfirmDialog/GrConfirmDialog.vue.d.ts +9 -9
- package/dist/types/components/GrContextMenu/GrContextMenu.vue.d.ts +9 -9
- package/dist/types/components/GrDataTable/GrDataTable.vue.d.ts +9 -17
- package/dist/types/components/GrDescriptionList/GrDescriptionList.vue.d.ts +16 -13
- package/dist/types/components/GrDialog/GrDialogFooter.vue.d.ts +3 -3
- package/dist/types/components/GrDivider/GrDivider.vue.d.ts +3 -3
- package/dist/types/components/GrDrawer/grDrawerStyles.d.ts +1 -1
- package/dist/types/components/GrDropdown/GrDropdown.vue.d.ts +16 -20
- package/dist/types/components/GrDropdownMenu/GrDropdownMenu.vue.d.ts +16 -19
- package/dist/types/components/GrDropdownMenu/GrDropdownMenuColumn.vue.d.ts +3 -3
- package/dist/types/components/GrDropdownMenu/GrDropdownMenuColumns.vue.d.ts +3 -3
- package/dist/types/components/GrDropdownMenu/GrDropdownMenuGroup.vue.d.ts +3 -3
- package/dist/types/components/GrDropdownMenu/GrDropdownMenuHeader.vue.d.ts +3 -3
- package/dist/types/components/GrDropdownMenu/GrDropdownMenuItem.vue.d.ts +7 -7
- package/dist/types/components/GrDropdownMenu/GrDropdownMenuList.vue.d.ts +3 -3
- package/dist/types/components/GrDropdownMenu/grDropdownMenuStyles.d.ts +3 -3
- package/dist/types/components/GrForm/GrForm.vue.d.ts +5 -1
- package/dist/types/components/GrFormField/GrFormField.vue.d.ts +11 -11
- package/dist/types/components/GrFormFile/GrFormFile.vue.d.ts +1 -1
- package/dist/types/components/GrFormSection/grFormSectionStyles.d.ts +2 -2
- package/dist/types/components/GrIcon/GrIcon.vue.d.ts +3 -3
- package/dist/types/components/GrImageViewer/GrImageViewer.vue.d.ts +6 -25
- package/dist/types/components/GrInput/GrInput.vue.d.ts +1 -1
- package/dist/types/components/GrInput/grInputStyles.d.ts +4 -4
- package/dist/types/components/GrInputTag/GrInputTag.vue.d.ts +2 -2
- package/dist/types/components/GrInputTag/grInputTagStyles.d.ts +0 -6
- package/dist/types/components/GrKbd/GrKbd.vue.d.ts +3 -3
- package/dist/types/components/GrKbd/grKbdStyles.d.ts +5 -0
- package/dist/types/components/GrLink/GrLink.vue.d.ts +3 -3
- package/dist/types/components/GrList/GrList.vue.d.ts +12 -6
- package/dist/types/components/GrList/GrListItem.vue.d.ts +9 -9
- package/dist/types/components/GrList/grListStyles.d.ts +3 -3
- package/dist/types/components/GrNavbar/grNavbarStyles.d.ts +1 -1
- package/dist/types/components/GrNumberInput/GrNumberInput.vue.d.ts +1 -1
- package/dist/types/components/GrNumberInput/numberInputMath.d.ts +1 -6
- package/dist/types/components/GrPopover/GrPopover.vue.d.ts +16 -17
- package/dist/types/components/GrPromptDialog/GrPromptDialog.vue.d.ts +9 -9
- package/dist/types/components/GrRadio/GrRadio.vue.d.ts +6 -8
- package/dist/types/components/GrRadioGroup/GrRadioGroup.vue.d.ts +1 -1
- package/dist/types/components/GrRating/GrRating.vue.d.ts +1 -1
- package/dist/types/components/GrSegmented/GrSegmented.vue.d.ts +1 -1
- package/dist/types/components/GrSelect/grSelectStyles.d.ts +1 -1
- package/dist/types/components/GrSidebar/GrSidebar.vue.d.ts +7 -7
- package/dist/types/components/GrSidebar/grSidebarStyles.d.ts +4 -4
- package/dist/types/components/GrSlider/GrSlider.vue.d.ts +1 -1
- package/dist/types/components/GrSortableList/grSortableListStyles.d.ts +2 -2
- package/dist/types/components/GrSplitter/GrSplitter.vue.d.ts +1 -1
- package/dist/types/components/GrStatistic/GrStatistic.vue.d.ts +13 -13
- package/dist/types/components/GrSteps/grStepsStyles.d.ts +2 -2
- package/dist/types/components/GrSwitch/GrSwitch.vue.d.ts +1 -1
- package/dist/types/components/GrTabPanels/GrTabPanel.vue.d.ts +3 -3
- package/dist/types/components/GrTabPanels/GrTabPanels.vue.d.ts +3 -3
- package/dist/types/components/GrTable/GrTable.vue.d.ts +13 -13
- package/dist/types/components/GrTextarea/GrTextarea.vue.d.ts +1 -1
- package/dist/types/components/GrTreeSelect/grTreeSelectStyles.d.ts +1 -1
- package/dist/types/components/shared/classTokens.d.ts +8 -0
- package/dist/types/components/shared/numericStep.d.ts +14 -0
- package/dist/types/components/shared/overlayTransition.d.ts +33 -0
- package/dist/web-types.json +292 -218
- package/package.json +2 -2
- package/tokens/foundation.json +41 -1
- package/dist/chunks/classTokens-BzazaERD.js +0 -6
- package/dist/chunks/classTokens-BzazaERD.js.map +0 -1
- package/dist/chunks/config-9PYRZlKE.js.map +0 -1
- package/dist/chunks/config-B4w5gBD0.js.map +0 -1
- package/dist/chunks/config-BEVBsvni2.js.map +0 -1
- package/dist/chunks/config-BN4sXYXn.js.map +0 -1
- package/dist/chunks/config-BViooYNv.js.map +0 -1
- package/dist/chunks/config-B_qi4Fma.js.map +0 -1
- package/dist/chunks/config-Baj7Wvx-.js.map +0 -1
- package/dist/chunks/config-BbY2SKGE.js.map +0 -1
- package/dist/chunks/config-BfsBepkH.js.map +0 -1
- package/dist/chunks/config-Bpt9Xbxm.js.map +0 -1
- package/dist/chunks/config-BsPDQ0dS.js.map +0 -1
- package/dist/chunks/config-BtXRpAtq.js.map +0 -1
- package/dist/chunks/config-BuGlNPE92.js.map +0 -1
- package/dist/chunks/config-C8tVRv8i.js.map +0 -1
- package/dist/chunks/config-CIcynHGr.js.map +0 -1
- package/dist/chunks/config-CN2ULSQL.js.map +0 -1
- package/dist/chunks/config-CN970ZcJ.js.map +0 -1
- package/dist/chunks/config-COvrUfhR.js.map +0 -1
- package/dist/chunks/config-Cl4ST6Qd.js.map +0 -1
- package/dist/chunks/config-Cwd3yjRw.js.map +0 -1
- package/dist/chunks/config-D7zgE_Gr.js.map +0 -1
- package/dist/chunks/config-D94Z9po5.js.map +0 -1
- package/dist/chunks/config-DAX8Deh1.js.map +0 -1
- package/dist/chunks/config-DBmdgoVf.js.map +0 -1
- package/dist/chunks/config-DCFvmHEv.js.map +0 -1
- package/dist/chunks/config-DGWFal5h.js.map +0 -1
- package/dist/chunks/config-DKdlqXiY.js.map +0 -1
- package/dist/chunks/config-DSJY6aEl.js.map +0 -1
- package/dist/chunks/config-DWN4x6_e.js.map +0 -1
- package/dist/chunks/config-Dgj1Q6JY.js.map +0 -1
- package/dist/chunks/config-Dguto_6o.js.map +0 -1
- package/dist/chunks/config-DtgYuGUn2.js.map +0 -1
- package/dist/chunks/config-rkcKArZQ.js.map +0 -1
- package/dist/chunks/config-vSji8w90.js.map +0 -1
- package/dist/chunks/config-zjeAJ4ho2.js.map +0 -1
- package/dist/chunks/context-BfIQv7m12.js.map +0 -1
- package/dist/chunks/generated-CJe6hdiE.js.map +0 -1
- package/dist/chunks/grBadgeStyles-C1S56Alo.js.map +0 -1
- package/dist/chunks/grDropdownMenuStyles-D1LOkdVj.js.map +0 -1
- package/dist/chunks/grInputStyles-CJeMhUe5.js.map +0 -1
- package/dist/chunks/grKbdStyles-CeZhGQHr.js.map +0 -1
- package/dist/chunks/grLinkStyles-BoL8QYcV.js.map +0 -1
- package/dist/chunks/grPopoverStyles-Cke_BZsM.js.map +0 -1
- package/dist/chunks/grRadioStyles-BTjGNhtU.js.map +0 -1
- package/dist/chunks/grSelectStyles-eTz4uPMP.js.map +0 -1
- package/dist/chunks/grTextareaStyles-iOcHuVMM.js.map +0 -1
- package/dist/chunks/useMenuItemsFocus-OyOnIAlr.js.map +0 -1
- package/dist/components/GrAutocomplete/chunks/GrAutocomplete-D9c9BNFg.js.map +0 -1
- package/dist/components/GrBadge/chunks/GrBadge-_9rCHuE1.js.map +0 -1
- package/dist/components/GrBadgeWrap/chunks/GrBadgeWrap-DDoFQscR.js.map +0 -1
- package/dist/components/GrButton/chunks/GrButton-DCz-Wn-V.js.map +0 -1
- package/dist/components/GrButtonGroup/chunks/GrButtonGroup-BQo5VQ_c.js.map +0 -1
- package/dist/components/GrCard/chunks/GrCard-aQIjk6I9.js.map +0 -1
- package/dist/components/GrChip/chunks/GrChip-BnL2FedO.js.map +0 -1
- package/dist/components/GrCommandPalette/chunks/GrCommandPalette-BPsVN_XU.js.map +0 -1
- package/dist/components/GrConfirmDialog/chunks/GrConfirmDialog-CwXNLyzk.js.map +0 -1
- package/dist/components/GrContextMenu/chunks/GrContextMenu-BbAJholy.js.map +0 -1
- package/dist/components/GrDataTable/chunks/GrDataTable-NRbrXpdx.js.map +0 -1
- package/dist/components/GrDescriptionList/chunks/GrDescriptionList-1mICfrqX.js.map +0 -1
- package/dist/components/GrDialog/chunks/GrDialog-5Y5K87ss.js.map +0 -1
- package/dist/components/GrDivider/chunks/GrDivider-CAhm9jbE.js.map +0 -1
- package/dist/components/GrDropdown/chunks/GrDropdown-BfTmdPyh.js.map +0 -1
- package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-l5HEqzjr.js.map +0 -1
- package/dist/components/GrDropdownMenu/chunks/GrDropdownMenuList-BGA_xNVo.js.map +0 -1
- package/dist/components/GrForm/chunks/GrForm-CAlJg-wb.js.map +0 -1
- package/dist/components/GrIcon/chunks/GrIcon-bQwtZtYT.js.map +0 -1
- package/dist/components/GrImageViewer/chunks/GrImageViewer-ng7el4wn.js.map +0 -1
- package/dist/components/GrInputTag/chunks/GrInputTag-UI8kIB_F.js.map +0 -1
- package/dist/components/GrLink/chunks/GrLink-BQb7U4so.js.map +0 -1
- package/dist/components/GrList/chunks/GrList-B5bclmHV.js.map +0 -1
- package/dist/components/GrNumberInput/chunks/GrNumberInput-V2mZvDDC.js.map +0 -1
- package/dist/components/GrPopover/chunks/GrPopover-DDChM1jD.js.map +0 -1
- package/dist/components/GrPromptDialog/chunks/GrPromptDialog-BGuMUzlv.js.map +0 -1
- package/dist/components/GrRadio/chunks/GrRadio-BdhknbO8.js.map +0 -1
- package/dist/components/GrSelect/chunks/GrSelect-BA1wfX3c.js.map +0 -1
- package/dist/components/GrSlider/chunks/GrSlider-s99yAyz6.js.map +0 -1
- package/dist/components/GrStatistic/chunks/GrStatistic-BJQv5aOS.js.map +0 -1
- package/dist/components/GrTable/chunks/GrTable-f3qCWa99.js.map +0 -1
- package/dist/components/GrToaster/chunks/GrToaster-CC49q3a4.js.map +0 -1
- package/dist/components/GrTooltip/chunks/GrTooltip-B6AwE_UX.js.map +0 -1
- package/dist/components/GrTree/chunks/GrTree-J5q8aCya.js.map +0 -1
- package/dist/components/GrTreeSelect/chunks/GrTreeSelect-DEfxWAc3.js.map +0 -1
- /package/dist/chunks/{config-BuGlNPE92.js → config-BuGlNPE9.js} +0 -0
- /package/dist/chunks/{config-DBmdgoVf.js → config-DBmdgoVf2.js} +0 -0
- /package/dist/chunks/{context-BfIQv7m12.js → context-BfIQv7m1.js} +0 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { getCurrentInstance, onBeforeUnmount } from "vue";
|
|
2
|
+
/**
|
|
3
|
+
* Поиск по первым буквам в списке — паттерн `typeahead` из WAI-ARIA APG.
|
|
4
|
+
*
|
|
5
|
+
* Буфер намеренно не реактивный: на рендер он не влияет, а читается синхронно
|
|
6
|
+
* внутри обработчика `keydown`.
|
|
7
|
+
*/
|
|
8
|
+
function useTypeahead(options) {
|
|
9
|
+
const resetMs = options.resetMs ?? 600;
|
|
10
|
+
let buffer = "";
|
|
11
|
+
let timer;
|
|
12
|
+
function reset() {
|
|
13
|
+
clearTimeout(timer);
|
|
14
|
+
timer = void 0;
|
|
15
|
+
buffer = "";
|
|
16
|
+
}
|
|
17
|
+
function type(char) {
|
|
18
|
+
clearTimeout(timer);
|
|
19
|
+
timer = setTimeout(reset, resetMs);
|
|
20
|
+
const normalized = char.toLowerCase();
|
|
21
|
+
buffer = buffer.length === 1 && buffer === normalized ? normalized : buffer + normalized;
|
|
22
|
+
const items = options.items();
|
|
23
|
+
if (items.length === 0) return false;
|
|
24
|
+
const from = options.currentIndex(items);
|
|
25
|
+
for (let step = 1; step <= items.length; step += 1) {
|
|
26
|
+
const index = (from + step + items.length) % items.length;
|
|
27
|
+
const item = items[index];
|
|
28
|
+
if (item === void 0) continue;
|
|
29
|
+
if (options.textOf(item, index).trim().toLowerCase().startsWith(buffer)) {
|
|
30
|
+
options.onMatch(item, index);
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
if (getCurrentInstance()) onBeforeUnmount(reset);
|
|
37
|
+
return {
|
|
38
|
+
type,
|
|
39
|
+
isEmpty: () => buffer === "",
|
|
40
|
+
reset
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
//#endregion
|
|
44
|
+
export { useTypeahead as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTypeahead-mxPtPBf2.js","names":[],"sources":["../../src/composables/internal/useTypeahead.ts"],"sourcesContent":["import { getCurrentInstance, onBeforeUnmount } from 'vue'\n\n/**\n * Буфер живёт ровно столько: дальше набранное перестаёт быть одним словом.\n * Значение из WAI-ARIA APG, оно же стояло во всех трёх прежних копиях.\n */\nexport const TYPEAHEAD_RESET_MS = 600\n\nexport interface UseTypeaheadOptions<TItem> {\n /** Кандидаты в порядке отображения. Опрашивается на каждый символ. */\n items: () => readonly TItem[]\n /** Текст кандидата. Нормализацию (`trim` + нижний регистр) делает композабл. */\n textOf: (item: TItem, index: number) => string\n /** Откуда шагать. Получает уже разрешённый набор, чтобы не опрашивать его дважды. */\n currentIndex: (items: readonly TItem[]) => number\n /** Совпадение найдено. Фокус, `activeIndex` — решает потребитель. */\n onMatch: (item: TItem, index: number) => void\n resetMs?: number\n}\n\nexport interface UseTypeaheadReturn {\n /** Обработать печатный символ. `true` — совпадение найдено. */\n type: (char: string) => boolean\n /** Пуст ли буфер: правило «`Space` при пустом буфере активирует пункт». */\n isEmpty: () => boolean\n reset: () => void\n}\n\n/**\n * Поиск по первым буквам в списке — паттерн `typeahead` из WAI-ARIA APG.\n *\n * Буфер намеренно не реактивный: на рендер он не влияет, а читается синхронно\n * внутри обработчика `keydown`.\n */\nexport function useTypeahead<TItem>(options: UseTypeaheadOptions<TItem>): UseTypeaheadReturn {\n const resetMs = options.resetMs ?? TYPEAHEAD_RESET_MS\n\n let buffer = ''\n let timer: ReturnType<typeof setTimeout> | undefined\n\n function reset(): void {\n clearTimeout(timer)\n timer = undefined\n buffer = ''\n }\n\n function type(char: string): boolean {\n clearTimeout(timer)\n timer = setTimeout(reset, resetMs)\n\n // Повтор одной буквы — это «следующий на ту же букву», а не поиск «аа».\n // Сравнение по нормализованному символу: иначе `Shift+A` и `a` считались бы\n // разными буквами, и повтор с зажатым шифтом уходил бы в поиск «Aa».\n const normalized = char.toLowerCase()\n const repeat = buffer.length === 1 && buffer === normalized\n buffer = repeat ? normalized : buffer + normalized\n\n const items = options.items()\n if (items.length === 0)\n return false\n\n const from = options.currentIndex(items)\n\n for (let step = 1; step <= items.length; step += 1) {\n const index = (from + step + items.length) % items.length\n const item = items[index]\n if (item === undefined)\n continue\n\n if (options.textOf(item, index).trim().toLowerCase().startsWith(buffer)) {\n options.onMatch(item, index)\n return true\n }\n }\n\n return false\n }\n\n // Композабл вызывается и вне компонента (тесты, чистые модули навигации),\n // поэтому уборку вешаем только когда есть на что.\n if (getCurrentInstance())\n onBeforeUnmount(reset)\n\n return {\n type,\n isEmpty: () => buffer === '',\n reset,\n }\n}\n"],"mappings":";;;;;;;AAkCA,SAAgB,aAAoB,SAAyD;CAC3F,MAAM,UAAU,QAAQ,WAAA;CAExB,IAAI,SAAS;CACb,IAAI;CAEJ,SAAS,QAAc;EACrB,aAAa,KAAK;EAClB,QAAQ,KAAA;EACR,SAAS;CACX;CAEA,SAAS,KAAK,MAAuB;EACnC,aAAa,KAAK;EAClB,QAAQ,WAAW,OAAO,OAAO;EAKjC,MAAM,aAAa,KAAK,YAAY;EAEpC,SADe,OAAO,WAAW,KAAK,WAAW,aAC/B,aAAa,SAAS;EAExC,MAAM,QAAQ,QAAQ,MAAM;EAC5B,IAAI,MAAM,WAAW,GACnB,OAAO;EAET,MAAM,OAAO,QAAQ,aAAa,KAAK;EAEvC,KAAK,IAAI,OAAO,GAAG,QAAQ,MAAM,QAAQ,QAAQ,GAAG;GAClD,MAAM,SAAS,OAAO,OAAO,MAAM,UAAU,MAAM;GACnD,MAAM,OAAO,MAAM;GACnB,IAAI,SAAS,KAAA,GACX;GAEF,IAAI,QAAQ,OAAO,MAAM,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,WAAW,MAAM,GAAG;IACvE,QAAQ,QAAQ,MAAM,KAAK;IAC3B,OAAO;GACT;EACF;EAEA,OAAO;CACT;CAIA,IAAI,mBAAmB,GACrB,gBAAgB,KAAK;CAEvB,OAAO;EACL;EACA,eAAe,WAAW;EAC1B;CACF;AACF"}
|
|
@@ -145,7 +145,7 @@ var _hoisted_3 = {
|
|
|
145
145
|
var _hoisted_4 = { class: "min-w-0 flex-1" };
|
|
146
146
|
var _hoisted_5 = {
|
|
147
147
|
key: 0,
|
|
148
|
-
class: "text-[length:var(--gr-text-sm)] font-600 text-[var(--gr-alert-title-color)]"
|
|
148
|
+
class: "text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)] font-600 text-[var(--gr-alert-title-color)]"
|
|
149
149
|
};
|
|
150
150
|
var _hoisted_6 = {
|
|
151
151
|
key: 1,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GrAlert-B21QGele.js","names":["$slots"],"sources":["../../../../src/components/GrAlert/grAlertStyles.ts","../../../../src/components/GrAlert/GrAlert.vue","../../../../src/components/GrAlert/GrAlert.vue"],"sourcesContent":["import type { GrTone } from '../shared/tones'\n\n/**\n * Цветовая модель `GrAlert`.\n *\n * Модуль намеренно чистый: он оперирует **строками CSS-значений**, а не\n * utility-классами UnoCSS. Классы, живущие только строковыми литералами в\n * `.ts`, не сканируются `granularContent` и требуют ручного safelist — здесь\n * этой проблемы нет по построению, а логику цветов можно тестировать без\n * монтирования компонента.\n */\n\n/**\n * `soft` — залитая тоном подложка, тональный текст. Основной вариант.\n * `outline` — фон страницы, тон несут рамка и иконка; текст нейтральный.\n */\nexport const GR_ALERT_VARIANTS = ['soft', 'outline'] as const\n\nexport type GrAlertVariant = typeof GR_ALERT_VARIANTS[number]\n\n/** Ключ иконки тона. Сама иконка резолвится в SFC — модуль остаётся чистым. */\nexport type GrAlertIconKey = 'info' | 'success' | 'warning' | 'danger'\n\ntype GrAlertToneTokens = {\n /** Подложка варианта `soft`. */\n surface: string\n /** Насыщенный цвет тона: база для рамки. */\n accent: string\n /**\n * Тональный цвет текста — рассчитан на подложку `surface`.\n *\n * Именно он, а не `accent`, красит иконку и текст: на светлой теме\n * `--gr-success` (#10b981) на `--gr-success-light` (#d1fae5) даёт 2.24:1 —\n * ниже порога 3:1 даже для нетекстовой графики. `--gr-success-text`\n * (#065f46) на той же подложке даёт 6.78:1.\n */\n text: string\n icon: GrAlertIconKey\n}\n\n/**\n * Тон → тройка токенов.\n *\n * `primary` и `neutral` не имеют пары `-light`/`-text` и отображаются на\n * ближайшие семантические роли: акцентную поверхность и нейтральную muted.\n */\nconst TONE_TOKENS: Record<GrTone, GrAlertToneTokens> = {\n primary: { surface: 'var(--gr-accent)', accent: 'var(--gr-primary)', text: 'var(--gr-accent-fg)', icon: 'info' },\n neutral: { surface: 'var(--gr-muted)', accent: 'var(--gr-muted-fg)', text: 'var(--gr-fg)', icon: 'info' },\n success: { surface: 'var(--gr-success-light)', accent: 'var(--gr-success)', text: 'var(--gr-success-text)', icon: 'success' },\n warning: { surface: 'var(--gr-warning-light)', accent: 'var(--gr-warning)', text: 'var(--gr-warning-text)', icon: 'warning' },\n danger: { surface: 'var(--gr-danger-light)', accent: 'var(--gr-danger)', text: 'var(--gr-danger-text)', icon: 'danger' },\n info: { surface: 'var(--gr-info-light)', accent: 'var(--gr-info)', text: 'var(--gr-info-text)', icon: 'info' },\n slate: { surface: 'var(--gr-slate-light)', accent: 'var(--gr-slate)', text: 'var(--gr-slate-text)', icon: 'info' },\n azure: { surface: 'var(--gr-azure-light)', accent: 'var(--gr-azure)', text: 'var(--gr-azure-text)', icon: 'info' },\n}\n\n/** Разрешённые цвета одного алерта — ровно то, что уходит в CSS-переменные. */\nexport type GrAlertColors = {\n bg: string\n border: string\n icon: string\n title: string\n text: string\n close: string\n closeHover: string\n closeHoverBg: string\n}\n\n/** Пользовательские переопределения цвета (пропы-эскейпы). */\nexport type GrAlertColorOverrides = {\n backgroundColor?: string\n textColor?: string\n borderColor?: string\n}\n\nexport function grAlertIconKey(tone: GrTone): GrAlertIconKey {\n return TONE_TOKENS[tone].icon\n}\n\n/**\n * Рамка выводится из тона формулой, а не задаётся отдельным токеном на каждый\n * тон: доля тона в смеси с `--gr-brd` — единственное, что отличает рамки между\n * собой. 22% (как было) давало 1.27–1.51:1 к собственной подложке — край\n * практически не читался; 35/45% поднимают его до 1.42–2.07:1.\n */\nfunction border(accent: string, ratio: number): string {\n return `color-mix(in srgb, ${accent} ${ratio}%, var(--gr-brd))`\n}\n\nexport function resolveGrAlertColors(tone: GrTone, variant: GrAlertVariant): GrAlertColors {\n const t = TONE_TOKENS[tone]\n\n if (variant === 'outline') {\n return {\n bg: 'var(--gr-bg)',\n border: border(t.accent, 45),\n icon: t.text,\n title: 'var(--gr-fg)',\n text: 'var(--gr-muted-fg)',\n close: 'var(--gr-muted-fg)',\n closeHover: 'var(--gr-fg)',\n closeHoverBg: 'var(--gr-muted)',\n }\n }\n\n return {\n bg: t.surface,\n border: border(t.accent, 35),\n // Иерархия «заголовок / текст» держится на размере и насыщении шрифта, а не\n // на цвете: приглушать тональный текст подмешиванием подложки нельзя —\n // на тёмной теме warning и danger проваливают 4.5:1 уже при 15% подмеса.\n icon: t.text,\n title: t.text,\n text: t.text,\n close: t.text,\n closeHover: t.text,\n closeHoverBg: `color-mix(in srgb, ${t.accent} 16%, transparent)`,\n }\n}\n\n/**\n * Пропы-эскейпы поверх тона. `textColor` красит весь текстовый слой целиком\n * (иконка, заголовок, текст, кнопка закрытия) — иначе пользовательский цвет\n * соседствовал бы с тональным и давал грязь.\n */\nexport function applyGrAlertOverrides(colors: GrAlertColors, overrides: GrAlertColorOverrides): GrAlertColors {\n const custom = (value?: string) => value?.trim() || undefined\n const text = custom(overrides.textColor)\n\n return {\n ...colors,\n bg: custom(overrides.backgroundColor) ?? colors.bg,\n border: custom(overrides.borderColor) ?? colors.border,\n icon: text ?? colors.icon,\n title: text ?? colors.title,\n text: text ?? colors.text,\n close: text ?? colors.close,\n closeHover: text ?? colors.closeHover,\n closeHoverBg: text ? `color-mix(in srgb, ${text} 12%, transparent)` : colors.closeHoverBg,\n }\n}\n\n/**\n * Публичный контракт кастомизации: переменные `--gr-alert-*` можно\n * переопределить снаружи так же, как их задаёт компонент.\n */\nexport function grAlertCssVars(colors: GrAlertColors): Record<string, string> {\n return {\n '--gr-alert-bg': colors.bg,\n '--gr-alert-brd': colors.border,\n '--gr-alert-icon-color': colors.icon,\n '--gr-alert-title-color': colors.title,\n '--gr-alert-text-color': colors.text,\n '--gr-alert-close-color': colors.close,\n '--gr-alert-close-hover-color': colors.closeHover,\n '--gr-alert-close-hover-bg': colors.closeHoverBg,\n }\n}\n","<script setup lang=\"ts\">\n/**\n * GrAlert — блочное сообщение с тоном, иконкой и опциональным закрытием.\n *\n * Цветовая модель вынесена в `grAlertStyles.ts` и выражена **только токенами**\n * `--gr-*`: компонент одинаково корректен в light и dark без единого hex-литерала.\n *\n * Точки кастомизации — переменные `--gr-alert-*` (см. `grAlertCssVars`); пропы\n * `backgroundColor`/`textColor`/`borderColor` — тот же контракт, но точечно.\n */\nimport { computed } from 'vue'\n\nimport IconWarning from '~icons/lucide/alert-triangle'\nimport IconCheck from '~icons/lucide/check-circle'\nimport IconInfo from '~icons/lucide/info'\nimport IconClose from '~icons/lucide/x'\nimport IconError from '~icons/lucide/x-circle'\n\nimport type { Component } from 'vue'\nimport type { GrTone } from '../shared/tones'\nimport type { GrAlertIconKey, GrAlertVariant } from './grAlertStyles'\n\nimport { useGrComponentProp } from '../GrConfigProvider/context'\nimport { useGranularityTranslations } from '../../internal/granularityI18n'\nimport {\n applyGrAlertOverrides,\n grAlertCssVars,\n grAlertIconKey,\n resolveGrAlertColors,\n} from './grAlertStyles'\n\nimport './defaults'\n\nexport type GrAlertTone = GrTone\nexport type { GrAlertVariant } from './grAlertStyles'\n\n/**\n * Режим объявления сообщения скринридеру.\n * `auto` — по тону: `warning`/`danger` перебивают речь (`role=\"alert\"`),\n * остальные ждут паузы (`role=\"status\"`).\n */\nexport type GrAlertLive = 'auto' | 'assertive' | 'polite' | 'off'\n\nexport interface GrAlertProps {\n tone?: GrAlertTone\n variant?: GrAlertVariant\n title?: string\n closable?: boolean\n live?: GrAlertLive\n /**\n * Показывать ли иконку тона. Своя иконка — слотом `#icon`; проп нужен для\n * случая «иконка мешает»: узкая колонка, плотный список, сообщение в форме.\n */\n icon?: boolean\n /**\n * Видимость сообщения — **только контролируемая**: без пропа алерт виден\n * всегда, и закрытие остаётся заботой потребителя (`@close`). С\n * `v-model:visible` компонент прячет себя сам.\n *\n * Собственного состояния у пропа нет намеренно. Оно превратило бы кнопку\n * закрытия в необратимое действие у всех, кто уже живёт на `@close` и,\n * например, спрашивает по нему подтверждение.\n */\n visible?: boolean\n backgroundColor?: string\n textColor?: string\n borderColor?: string\n}\n\nexport interface GrAlertEmits {\n (e: 'close'): void\n /** Пользователь закрыл сообщение (`v-model:visible`). */\n (e: 'update:visible', value: boolean): void\n}\n\nconst emit = defineEmits<GrAlertEmits>()\n\ndefineSlots<{\n /** Текст сообщения. */\n default?: () => any\n /** Иконка вместо глифа по тону. Декоративна: остаётся `aria-hidden`. */\n icon?: () => any\n /** Действия по сообщению: «Повторить», «Подробнее». Ложатся под текст. */\n actions?: () => any\n}>()\n\n// Дефолты tone/variant/closable/live намеренно `undefined`: «настоящий» дефолт\n// переехал в `useGrComponentProp`, иначе `GrConfigProvider` не смог бы отличить\n// заданный пользователем проп от подставленного Vue.\nconst props = withDefaults(defineProps<GrAlertProps>(), {\n tone: undefined,\n variant: undefined,\n title: undefined,\n closable: undefined,\n live: undefined,\n icon: undefined,\n visible: undefined,\n backgroundColor: undefined,\n textColor: undefined,\n borderColor: undefined,\n})\n\nconst { t } = useGranularityTranslations()\n\nconst tone = useGrComponentProp('GrAlert', 'tone', () => props.tone, 'info')\nconst variantInput = useGrComponentProp('GrAlert', 'variant', () => props.variant, 'soft')\nconst closable = useGrComponentProp('GrAlert', 'closable', () => props.closable, false)\nconst live = useGrComponentProp('GrAlert', 'live', () => props.live, 'auto')\n\nconst variant = variantInput\n\nconst ICONS: Record<GrAlertIconKey, Component> = {\n info: IconInfo,\n success: IconCheck,\n warning: IconWarning,\n danger: IconError,\n}\n\nconst toneIcon = computed<Component>(() => ICONS[grAlertIconKey(tone.value)])\n\nconst showIcon = computed(() => props.icon !== false)\nconst isVisible = computed(() => props.visible !== false)\n\nfunction close(): void {\n emit('update:visible', false)\n emit('close')\n}\n\nconst colors = computed(() => applyGrAlertOverrides(\n resolveGrAlertColors(tone.value, variant.value),\n props,\n))\n\nconst rootStyle = computed(() => ({\n ...grAlertCssVars(colors.value),\n background: 'var(--gr-alert-bg)',\n borderColor: 'var(--gr-alert-brd)',\n}))\n\n/**\n * `role=\"alert\"` — assertive-регион: он прерывает чтение. Вешать его на любое\n * информационное сообщение значит превращать спокойную подсказку в тревогу,\n * поэтому по умолчанию его получают только `warning` и `danger`.\n */\nconst role = computed(() => {\n const mode = live.value === 'auto'\n ? (tone.value === 'danger' || tone.value === 'warning' ? 'assertive' : 'polite')\n : live.value\n\n if (mode === 'off') return undefined\n return mode === 'assertive' ? 'alert' : 'status'\n})\n</script>\n\n<template>\n <div\n v-if=\"isVisible\"\n :role=\"role\"\n data-gr-alert\n class=\"rounded-[var(--gr-radius-lg)] border px-4 py-3\"\n :style=\"rootStyle\"\n >\n <div class=\"flex items-start gap-3\">\n <span\n v-if=\"showIcon\"\n data-gr-alert-icon\n class=\"mt-0.5 h-5 w-5 shrink-0 text-[var(--gr-alert-icon-color)]\"\n aria-hidden=\"true\"\n >\n <slot name=\"icon\">\n <component :is=\"toneIcon\" class=\"h-5 w-5\" />\n </slot>\n </span>\n\n <div class=\"min-w-0 flex-1\">\n <div\n v-if=\"props.title\"\n class=\"text-[length:var(--gr-text-sm)] font-600 text-[var(--gr-alert-title-color)]\"\n >\n {{ props.title }}\n </div>\n <div\n class=\"text-[length:var(--gr-text-sm)] leading-relaxed text-[var(--gr-alert-text-color)]\"\n :class=\"props.title ? 'mt-1' : ''\"\n >\n <slot />\n </div>\n\n <!-- Действия идут под текстом, а не рядом с ним: на узкой колонке\n кнопки в одной строке с сообщением отжимают его до одного слова. -->\n <div\n v-if=\"$slots.actions\"\n data-gr-alert-actions\n class=\"mt-2 flex flex-wrap gap-2\"\n >\n <slot name=\"actions\" />\n </div>\n </div>\n\n <button\n v-if=\"closable\"\n type=\"button\"\n class=\"-mr-1.5 -mt-1.5 shrink-0 rounded-[var(--gr-radius-md)] p-1.5 text-[var(--gr-alert-close-color)] transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)] hover:bg-[var(--gr-alert-close-hover-bg)] hover:text-[var(--gr-alert-close-hover-color)]\"\n :aria-label=\"t('gr.common.close', 'Close')\"\n @click=\"close\"\n >\n <IconClose class=\"h-4 w-4\" aria-hidden=\"true\" />\n </button>\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\n/**\n * GrAlert — блочное сообщение с тоном, иконкой и опциональным закрытием.\n *\n * Цветовая модель вынесена в `grAlertStyles.ts` и выражена **только токенами**\n * `--gr-*`: компонент одинаково корректен в light и dark без единого hex-литерала.\n *\n * Точки кастомизации — переменные `--gr-alert-*` (см. `grAlertCssVars`); пропы\n * `backgroundColor`/`textColor`/`borderColor` — тот же контракт, но точечно.\n */\nimport { computed } from 'vue'\n\nimport IconWarning from '~icons/lucide/alert-triangle'\nimport IconCheck from '~icons/lucide/check-circle'\nimport IconInfo from '~icons/lucide/info'\nimport IconClose from '~icons/lucide/x'\nimport IconError from '~icons/lucide/x-circle'\n\nimport type { Component } from 'vue'\nimport type { GrTone } from '../shared/tones'\nimport type { GrAlertIconKey, GrAlertVariant } from './grAlertStyles'\n\nimport { useGrComponentProp } from '../GrConfigProvider/context'\nimport { useGranularityTranslations } from '../../internal/granularityI18n'\nimport {\n applyGrAlertOverrides,\n grAlertCssVars,\n grAlertIconKey,\n resolveGrAlertColors,\n} from './grAlertStyles'\n\nimport './defaults'\n\nexport type GrAlertTone = GrTone\nexport type { GrAlertVariant } from './grAlertStyles'\n\n/**\n * Режим объявления сообщения скринридеру.\n * `auto` — по тону: `warning`/`danger` перебивают речь (`role=\"alert\"`),\n * остальные ждут паузы (`role=\"status\"`).\n */\nexport type GrAlertLive = 'auto' | 'assertive' | 'polite' | 'off'\n\nexport interface GrAlertProps {\n tone?: GrAlertTone\n variant?: GrAlertVariant\n title?: string\n closable?: boolean\n live?: GrAlertLive\n /**\n * Показывать ли иконку тона. Своя иконка — слотом `#icon`; проп нужен для\n * случая «иконка мешает»: узкая колонка, плотный список, сообщение в форме.\n */\n icon?: boolean\n /**\n * Видимость сообщения — **только контролируемая**: без пропа алерт виден\n * всегда, и закрытие остаётся заботой потребителя (`@close`). С\n * `v-model:visible` компонент прячет себя сам.\n *\n * Собственного состояния у пропа нет намеренно. Оно превратило бы кнопку\n * закрытия в необратимое действие у всех, кто уже живёт на `@close` и,\n * например, спрашивает по нему подтверждение.\n */\n visible?: boolean\n backgroundColor?: string\n textColor?: string\n borderColor?: string\n}\n\nexport interface GrAlertEmits {\n (e: 'close'): void\n /** Пользователь закрыл сообщение (`v-model:visible`). */\n (e: 'update:visible', value: boolean): void\n}\n\nconst emit = defineEmits<GrAlertEmits>()\n\ndefineSlots<{\n /** Текст сообщения. */\n default?: () => any\n /** Иконка вместо глифа по тону. Декоративна: остаётся `aria-hidden`. */\n icon?: () => any\n /** Действия по сообщению: «Повторить», «Подробнее». Ложатся под текст. */\n actions?: () => any\n}>()\n\n// Дефолты tone/variant/closable/live намеренно `undefined`: «настоящий» дефолт\n// переехал в `useGrComponentProp`, иначе `GrConfigProvider` не смог бы отличить\n// заданный пользователем проп от подставленного Vue.\nconst props = withDefaults(defineProps<GrAlertProps>(), {\n tone: undefined,\n variant: undefined,\n title: undefined,\n closable: undefined,\n live: undefined,\n icon: undefined,\n visible: undefined,\n backgroundColor: undefined,\n textColor: undefined,\n borderColor: undefined,\n})\n\nconst { t } = useGranularityTranslations()\n\nconst tone = useGrComponentProp('GrAlert', 'tone', () => props.tone, 'info')\nconst variantInput = useGrComponentProp('GrAlert', 'variant', () => props.variant, 'soft')\nconst closable = useGrComponentProp('GrAlert', 'closable', () => props.closable, false)\nconst live = useGrComponentProp('GrAlert', 'live', () => props.live, 'auto')\n\nconst variant = variantInput\n\nconst ICONS: Record<GrAlertIconKey, Component> = {\n info: IconInfo,\n success: IconCheck,\n warning: IconWarning,\n danger: IconError,\n}\n\nconst toneIcon = computed<Component>(() => ICONS[grAlertIconKey(tone.value)])\n\nconst showIcon = computed(() => props.icon !== false)\nconst isVisible = computed(() => props.visible !== false)\n\nfunction close(): void {\n emit('update:visible', false)\n emit('close')\n}\n\nconst colors = computed(() => applyGrAlertOverrides(\n resolveGrAlertColors(tone.value, variant.value),\n props,\n))\n\nconst rootStyle = computed(() => ({\n ...grAlertCssVars(colors.value),\n background: 'var(--gr-alert-bg)',\n borderColor: 'var(--gr-alert-brd)',\n}))\n\n/**\n * `role=\"alert\"` — assertive-регион: он прерывает чтение. Вешать его на любое\n * информационное сообщение значит превращать спокойную подсказку в тревогу,\n * поэтому по умолчанию его получают только `warning` и `danger`.\n */\nconst role = computed(() => {\n const mode = live.value === 'auto'\n ? (tone.value === 'danger' || tone.value === 'warning' ? 'assertive' : 'polite')\n : live.value\n\n if (mode === 'off') return undefined\n return mode === 'assertive' ? 'alert' : 'status'\n})\n</script>\n\n<template>\n <div\n v-if=\"isVisible\"\n :role=\"role\"\n data-gr-alert\n class=\"rounded-[var(--gr-radius-lg)] border px-4 py-3\"\n :style=\"rootStyle\"\n >\n <div class=\"flex items-start gap-3\">\n <span\n v-if=\"showIcon\"\n data-gr-alert-icon\n class=\"mt-0.5 h-5 w-5 shrink-0 text-[var(--gr-alert-icon-color)]\"\n aria-hidden=\"true\"\n >\n <slot name=\"icon\">\n <component :is=\"toneIcon\" class=\"h-5 w-5\" />\n </slot>\n </span>\n\n <div class=\"min-w-0 flex-1\">\n <div\n v-if=\"props.title\"\n class=\"text-[length:var(--gr-text-sm)] font-600 text-[var(--gr-alert-title-color)]\"\n >\n {{ props.title }}\n </div>\n <div\n class=\"text-[length:var(--gr-text-sm)] leading-relaxed text-[var(--gr-alert-text-color)]\"\n :class=\"props.title ? 'mt-1' : ''\"\n >\n <slot />\n </div>\n\n <!-- Действия идут под текстом, а не рядом с ним: на узкой колонке\n кнопки в одной строке с сообщением отжимают его до одного слова. -->\n <div\n v-if=\"$slots.actions\"\n data-gr-alert-actions\n class=\"mt-2 flex flex-wrap gap-2\"\n >\n <slot name=\"actions\" />\n </div>\n </div>\n\n <button\n v-if=\"closable\"\n type=\"button\"\n class=\"-mr-1.5 -mt-1.5 shrink-0 rounded-[var(--gr-radius-md)] p-1.5 text-[var(--gr-alert-close-color)] transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)] hover:bg-[var(--gr-alert-close-hover-bg)] hover:text-[var(--gr-alert-close-hover-color)]\"\n :aria-label=\"t('gr.common.close', 'Close')\"\n @click=\"close\"\n >\n <IconClose class=\"h-4 w-4\" aria-hidden=\"true\" />\n </button>\n </div>\n </div>\n</template>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"GrAlert-FAVf-ksH.js","names":["$slots"],"sources":["../../../../src/components/GrAlert/grAlertStyles.ts","../../../../src/components/GrAlert/GrAlert.vue","../../../../src/components/GrAlert/GrAlert.vue"],"sourcesContent":["import type { GrTone } from '../shared/tones'\n\n/**\n * Цветовая модель `GrAlert`.\n *\n * Модуль намеренно чистый: он оперирует **строками CSS-значений**, а не\n * utility-классами UnoCSS. Классы, живущие только строковыми литералами в\n * `.ts`, не сканируются `granularContent` и требуют ручного safelist — здесь\n * этой проблемы нет по построению, а логику цветов можно тестировать без\n * монтирования компонента.\n */\n\n/**\n * `soft` — залитая тоном подложка, тональный текст. Основной вариант.\n * `outline` — фон страницы, тон несут рамка и иконка; текст нейтральный.\n */\nexport const GR_ALERT_VARIANTS = ['soft', 'outline'] as const\n\nexport type GrAlertVariant = typeof GR_ALERT_VARIANTS[number]\n\n/** Ключ иконки тона. Сама иконка резолвится в SFC — модуль остаётся чистым. */\nexport type GrAlertIconKey = 'info' | 'success' | 'warning' | 'danger'\n\ntype GrAlertToneTokens = {\n /** Подложка варианта `soft`. */\n surface: string\n /** Насыщенный цвет тона: база для рамки. */\n accent: string\n /**\n * Тональный цвет текста — рассчитан на подложку `surface`.\n *\n * Именно он, а не `accent`, красит иконку и текст: на светлой теме\n * `--gr-success` (#10b981) на `--gr-success-light` (#d1fae5) даёт 2.24:1 —\n * ниже порога 3:1 даже для нетекстовой графики. `--gr-success-text`\n * (#065f46) на той же подложке даёт 6.78:1.\n */\n text: string\n icon: GrAlertIconKey\n}\n\n/**\n * Тон → тройка токенов.\n *\n * `primary` и `neutral` не имеют пары `-light`/`-text` и отображаются на\n * ближайшие семантические роли: акцентную поверхность и нейтральную muted.\n */\nconst TONE_TOKENS: Record<GrTone, GrAlertToneTokens> = {\n primary: { surface: 'var(--gr-accent)', accent: 'var(--gr-primary)', text: 'var(--gr-accent-fg)', icon: 'info' },\n neutral: { surface: 'var(--gr-muted)', accent: 'var(--gr-muted-fg)', text: 'var(--gr-fg)', icon: 'info' },\n success: { surface: 'var(--gr-success-light)', accent: 'var(--gr-success)', text: 'var(--gr-success-text)', icon: 'success' },\n warning: { surface: 'var(--gr-warning-light)', accent: 'var(--gr-warning)', text: 'var(--gr-warning-text)', icon: 'warning' },\n danger: { surface: 'var(--gr-danger-light)', accent: 'var(--gr-danger)', text: 'var(--gr-danger-text)', icon: 'danger' },\n info: { surface: 'var(--gr-info-light)', accent: 'var(--gr-info)', text: 'var(--gr-info-text)', icon: 'info' },\n slate: { surface: 'var(--gr-slate-light)', accent: 'var(--gr-slate)', text: 'var(--gr-slate-text)', icon: 'info' },\n azure: { surface: 'var(--gr-azure-light)', accent: 'var(--gr-azure)', text: 'var(--gr-azure-text)', icon: 'info' },\n}\n\n/** Разрешённые цвета одного алерта — ровно то, что уходит в CSS-переменные. */\nexport type GrAlertColors = {\n bg: string\n border: string\n icon: string\n title: string\n text: string\n close: string\n closeHover: string\n closeHoverBg: string\n}\n\n/** Пользовательские переопределения цвета (пропы-эскейпы). */\nexport type GrAlertColorOverrides = {\n backgroundColor?: string\n textColor?: string\n borderColor?: string\n}\n\nexport function grAlertIconKey(tone: GrTone): GrAlertIconKey {\n return TONE_TOKENS[tone].icon\n}\n\n/**\n * Рамка выводится из тона формулой, а не задаётся отдельным токеном на каждый\n * тон: доля тона в смеси с `--gr-brd` — единственное, что отличает рамки между\n * собой. 22% (как было) давало 1.27–1.51:1 к собственной подложке — край\n * практически не читался; 35/45% поднимают его до 1.42–2.07:1.\n */\nfunction border(accent: string, ratio: number): string {\n return `color-mix(in srgb, ${accent} ${ratio}%, var(--gr-brd))`\n}\n\nexport function resolveGrAlertColors(tone: GrTone, variant: GrAlertVariant): GrAlertColors {\n const t = TONE_TOKENS[tone]\n\n if (variant === 'outline') {\n return {\n bg: 'var(--gr-bg)',\n border: border(t.accent, 45),\n icon: t.text,\n title: 'var(--gr-fg)',\n text: 'var(--gr-muted-fg)',\n close: 'var(--gr-muted-fg)',\n closeHover: 'var(--gr-fg)',\n closeHoverBg: 'var(--gr-muted)',\n }\n }\n\n return {\n bg: t.surface,\n border: border(t.accent, 35),\n // Иерархия «заголовок / текст» держится на размере и насыщении шрифта, а не\n // на цвете: приглушать тональный текст подмешиванием подложки нельзя —\n // на тёмной теме warning и danger проваливают 4.5:1 уже при 15% подмеса.\n icon: t.text,\n title: t.text,\n text: t.text,\n close: t.text,\n closeHover: t.text,\n closeHoverBg: `color-mix(in srgb, ${t.accent} 16%, transparent)`,\n }\n}\n\n/**\n * Пропы-эскейпы поверх тона. `textColor` красит весь текстовый слой целиком\n * (иконка, заголовок, текст, кнопка закрытия) — иначе пользовательский цвет\n * соседствовал бы с тональным и давал грязь.\n */\nexport function applyGrAlertOverrides(colors: GrAlertColors, overrides: GrAlertColorOverrides): GrAlertColors {\n const custom = (value?: string) => value?.trim() || undefined\n const text = custom(overrides.textColor)\n\n return {\n ...colors,\n bg: custom(overrides.backgroundColor) ?? colors.bg,\n border: custom(overrides.borderColor) ?? colors.border,\n icon: text ?? colors.icon,\n title: text ?? colors.title,\n text: text ?? colors.text,\n close: text ?? colors.close,\n closeHover: text ?? colors.closeHover,\n closeHoverBg: text ? `color-mix(in srgb, ${text} 12%, transparent)` : colors.closeHoverBg,\n }\n}\n\n/**\n * Публичный контракт кастомизации: переменные `--gr-alert-*` можно\n * переопределить снаружи так же, как их задаёт компонент.\n */\nexport function grAlertCssVars(colors: GrAlertColors): Record<string, string> {\n return {\n '--gr-alert-bg': colors.bg,\n '--gr-alert-brd': colors.border,\n '--gr-alert-icon-color': colors.icon,\n '--gr-alert-title-color': colors.title,\n '--gr-alert-text-color': colors.text,\n '--gr-alert-close-color': colors.close,\n '--gr-alert-close-hover-color': colors.closeHover,\n '--gr-alert-close-hover-bg': colors.closeHoverBg,\n }\n}\n","<script setup lang=\"ts\">\n/**\n * GrAlert — блочное сообщение с тоном, иконкой и опциональным закрытием.\n *\n * Цветовая модель вынесена в `grAlertStyles.ts` и выражена **только токенами**\n * `--gr-*`: компонент одинаково корректен в light и dark без единого hex-литерала.\n *\n * Точки кастомизации — переменные `--gr-alert-*` (см. `grAlertCssVars`); пропы\n * `backgroundColor`/`textColor`/`borderColor` — тот же контракт, но точечно.\n */\nimport { computed } from 'vue'\n\nimport IconWarning from '~icons/lucide/alert-triangle'\nimport IconCheck from '~icons/lucide/check-circle'\nimport IconInfo from '~icons/lucide/info'\nimport IconClose from '~icons/lucide/x'\nimport IconError from '~icons/lucide/x-circle'\n\nimport type { Component } from 'vue'\nimport type { GrTone } from '../shared/tones'\nimport type { GrAlertIconKey, GrAlertVariant } from './grAlertStyles'\n\nimport { useGrComponentProp } from '../GrConfigProvider/context'\nimport { useGranularityTranslations } from '../../internal/granularityI18n'\nimport {\n applyGrAlertOverrides,\n grAlertCssVars,\n grAlertIconKey,\n resolveGrAlertColors,\n} from './grAlertStyles'\n\nimport './defaults'\n\nexport type GrAlertTone = GrTone\nexport type { GrAlertVariant } from './grAlertStyles'\n\n/**\n * Режим объявления сообщения скринридеру.\n * `auto` — по тону: `warning`/`danger` перебивают речь (`role=\"alert\"`),\n * остальные ждут паузы (`role=\"status\"`).\n */\nexport type GrAlertLive = 'auto' | 'assertive' | 'polite' | 'off'\n\nexport interface GrAlertProps {\n tone?: GrAlertTone\n variant?: GrAlertVariant\n title?: string\n closable?: boolean\n live?: GrAlertLive\n /**\n * Показывать ли иконку тона. Своя иконка — слотом `#icon`; проп нужен для\n * случая «иконка мешает»: узкая колонка, плотный список, сообщение в форме.\n */\n icon?: boolean\n /**\n * Видимость сообщения — **только контролируемая**: без пропа алерт виден\n * всегда, и закрытие остаётся заботой потребителя (`@close`). С\n * `v-model:visible` компонент прячет себя сам.\n *\n * Собственного состояния у пропа нет намеренно. Оно превратило бы кнопку\n * закрытия в необратимое действие у всех, кто уже живёт на `@close` и,\n * например, спрашивает по нему подтверждение.\n */\n visible?: boolean\n backgroundColor?: string\n textColor?: string\n borderColor?: string\n}\n\nexport interface GrAlertEmits {\n (e: 'close'): void\n /** Пользователь закрыл сообщение (`v-model:visible`). */\n (e: 'update:visible', value: boolean): void\n}\n\nconst emit = defineEmits<GrAlertEmits>()\n\ndefineSlots<{\n /** Текст сообщения. */\n default?: () => any\n /** Иконка вместо глифа по тону. Декоративна: остаётся `aria-hidden`. */\n icon?: () => any\n /** Действия по сообщению: «Повторить», «Подробнее». Ложатся под текст. */\n actions?: () => any\n}>()\n\n// Дефолты tone/variant/closable/live намеренно `undefined`: «настоящий» дефолт\n// переехал в `useGrComponentProp`, иначе `GrConfigProvider` не смог бы отличить\n// заданный пользователем проп от подставленного Vue.\nconst props = withDefaults(defineProps<GrAlertProps>(), {\n tone: undefined,\n variant: undefined,\n title: undefined,\n closable: undefined,\n live: undefined,\n icon: undefined,\n visible: undefined,\n backgroundColor: undefined,\n textColor: undefined,\n borderColor: undefined,\n})\n\nconst { t } = useGranularityTranslations()\n\nconst tone = useGrComponentProp('GrAlert', 'tone', () => props.tone, 'info')\nconst variantInput = useGrComponentProp('GrAlert', 'variant', () => props.variant, 'soft')\nconst closable = useGrComponentProp('GrAlert', 'closable', () => props.closable, false)\nconst live = useGrComponentProp('GrAlert', 'live', () => props.live, 'auto')\n\nconst variant = variantInput\n\nconst ICONS: Record<GrAlertIconKey, Component> = {\n info: IconInfo,\n success: IconCheck,\n warning: IconWarning,\n danger: IconError,\n}\n\nconst toneIcon = computed<Component>(() => ICONS[grAlertIconKey(tone.value)])\n\nconst showIcon = computed(() => props.icon !== false)\nconst isVisible = computed(() => props.visible !== false)\n\nfunction close(): void {\n emit('update:visible', false)\n emit('close')\n}\n\nconst colors = computed(() => applyGrAlertOverrides(\n resolveGrAlertColors(tone.value, variant.value),\n props,\n))\n\nconst rootStyle = computed(() => ({\n ...grAlertCssVars(colors.value),\n background: 'var(--gr-alert-bg)',\n borderColor: 'var(--gr-alert-brd)',\n}))\n\n/**\n * `role=\"alert\"` — assertive-регион: он прерывает чтение. Вешать его на любое\n * информационное сообщение значит превращать спокойную подсказку в тревогу,\n * поэтому по умолчанию его получают только `warning` и `danger`.\n */\nconst role = computed(() => {\n const mode = live.value === 'auto'\n ? (tone.value === 'danger' || tone.value === 'warning' ? 'assertive' : 'polite')\n : live.value\n\n if (mode === 'off') return undefined\n return mode === 'assertive' ? 'alert' : 'status'\n})\n</script>\n\n<template>\n <div\n v-if=\"isVisible\"\n :role=\"role\"\n data-gr-alert\n class=\"rounded-[var(--gr-radius-lg)] border px-4 py-3\"\n :style=\"rootStyle\"\n >\n <div class=\"flex items-start gap-3\">\n <span\n v-if=\"showIcon\"\n data-gr-alert-icon\n class=\"mt-0.5 h-5 w-5 shrink-0 text-[var(--gr-alert-icon-color)]\"\n aria-hidden=\"true\"\n >\n <slot name=\"icon\">\n <component :is=\"toneIcon\" class=\"h-5 w-5\" />\n </slot>\n </span>\n\n <div class=\"min-w-0 flex-1\">\n <div\n v-if=\"props.title\"\n class=\"text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)] font-600 text-[var(--gr-alert-title-color)]\"\n >\n {{ props.title }}\n </div>\n <div\n class=\"text-[length:var(--gr-text-sm)] leading-relaxed text-[var(--gr-alert-text-color)]\"\n :class=\"props.title ? 'mt-1' : ''\"\n >\n <slot />\n </div>\n\n <!-- Действия идут под текстом, а не рядом с ним: на узкой колонке\n кнопки в одной строке с сообщением отжимают его до одного слова. -->\n <div\n v-if=\"$slots.actions\"\n data-gr-alert-actions\n class=\"mt-2 flex flex-wrap gap-2\"\n >\n <slot name=\"actions\" />\n </div>\n </div>\n\n <button\n v-if=\"closable\"\n type=\"button\"\n class=\"-mr-1.5 -mt-1.5 shrink-0 rounded-[var(--gr-radius-md)] p-1.5 text-[var(--gr-alert-close-color)] transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)] hover:bg-[var(--gr-alert-close-hover-bg)] hover:text-[var(--gr-alert-close-hover-color)]\"\n :aria-label=\"t('gr.common.close', 'Close')\"\n @click=\"close\"\n >\n <IconClose class=\"h-4 w-4\" aria-hidden=\"true\" />\n </button>\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\n/**\n * GrAlert — блочное сообщение с тоном, иконкой и опциональным закрытием.\n *\n * Цветовая модель вынесена в `grAlertStyles.ts` и выражена **только токенами**\n * `--gr-*`: компонент одинаково корректен в light и dark без единого hex-литерала.\n *\n * Точки кастомизации — переменные `--gr-alert-*` (см. `grAlertCssVars`); пропы\n * `backgroundColor`/`textColor`/`borderColor` — тот же контракт, но точечно.\n */\nimport { computed } from 'vue'\n\nimport IconWarning from '~icons/lucide/alert-triangle'\nimport IconCheck from '~icons/lucide/check-circle'\nimport IconInfo from '~icons/lucide/info'\nimport IconClose from '~icons/lucide/x'\nimport IconError from '~icons/lucide/x-circle'\n\nimport type { Component } from 'vue'\nimport type { GrTone } from '../shared/tones'\nimport type { GrAlertIconKey, GrAlertVariant } from './grAlertStyles'\n\nimport { useGrComponentProp } from '../GrConfigProvider/context'\nimport { useGranularityTranslations } from '../../internal/granularityI18n'\nimport {\n applyGrAlertOverrides,\n grAlertCssVars,\n grAlertIconKey,\n resolveGrAlertColors,\n} from './grAlertStyles'\n\nimport './defaults'\n\nexport type GrAlertTone = GrTone\nexport type { GrAlertVariant } from './grAlertStyles'\n\n/**\n * Режим объявления сообщения скринридеру.\n * `auto` — по тону: `warning`/`danger` перебивают речь (`role=\"alert\"`),\n * остальные ждут паузы (`role=\"status\"`).\n */\nexport type GrAlertLive = 'auto' | 'assertive' | 'polite' | 'off'\n\nexport interface GrAlertProps {\n tone?: GrAlertTone\n variant?: GrAlertVariant\n title?: string\n closable?: boolean\n live?: GrAlertLive\n /**\n * Показывать ли иконку тона. Своя иконка — слотом `#icon`; проп нужен для\n * случая «иконка мешает»: узкая колонка, плотный список, сообщение в форме.\n */\n icon?: boolean\n /**\n * Видимость сообщения — **только контролируемая**: без пропа алерт виден\n * всегда, и закрытие остаётся заботой потребителя (`@close`). С\n * `v-model:visible` компонент прячет себя сам.\n *\n * Собственного состояния у пропа нет намеренно. Оно превратило бы кнопку\n * закрытия в необратимое действие у всех, кто уже живёт на `@close` и,\n * например, спрашивает по нему подтверждение.\n */\n visible?: boolean\n backgroundColor?: string\n textColor?: string\n borderColor?: string\n}\n\nexport interface GrAlertEmits {\n (e: 'close'): void\n /** Пользователь закрыл сообщение (`v-model:visible`). */\n (e: 'update:visible', value: boolean): void\n}\n\nconst emit = defineEmits<GrAlertEmits>()\n\ndefineSlots<{\n /** Текст сообщения. */\n default?: () => any\n /** Иконка вместо глифа по тону. Декоративна: остаётся `aria-hidden`. */\n icon?: () => any\n /** Действия по сообщению: «Повторить», «Подробнее». Ложатся под текст. */\n actions?: () => any\n}>()\n\n// Дефолты tone/variant/closable/live намеренно `undefined`: «настоящий» дефолт\n// переехал в `useGrComponentProp`, иначе `GrConfigProvider` не смог бы отличить\n// заданный пользователем проп от подставленного Vue.\nconst props = withDefaults(defineProps<GrAlertProps>(), {\n tone: undefined,\n variant: undefined,\n title: undefined,\n closable: undefined,\n live: undefined,\n icon: undefined,\n visible: undefined,\n backgroundColor: undefined,\n textColor: undefined,\n borderColor: undefined,\n})\n\nconst { t } = useGranularityTranslations()\n\nconst tone = useGrComponentProp('GrAlert', 'tone', () => props.tone, 'info')\nconst variantInput = useGrComponentProp('GrAlert', 'variant', () => props.variant, 'soft')\nconst closable = useGrComponentProp('GrAlert', 'closable', () => props.closable, false)\nconst live = useGrComponentProp('GrAlert', 'live', () => props.live, 'auto')\n\nconst variant = variantInput\n\nconst ICONS: Record<GrAlertIconKey, Component> = {\n info: IconInfo,\n success: IconCheck,\n warning: IconWarning,\n danger: IconError,\n}\n\nconst toneIcon = computed<Component>(() => ICONS[grAlertIconKey(tone.value)])\n\nconst showIcon = computed(() => props.icon !== false)\nconst isVisible = computed(() => props.visible !== false)\n\nfunction close(): void {\n emit('update:visible', false)\n emit('close')\n}\n\nconst colors = computed(() => applyGrAlertOverrides(\n resolveGrAlertColors(tone.value, variant.value),\n props,\n))\n\nconst rootStyle = computed(() => ({\n ...grAlertCssVars(colors.value),\n background: 'var(--gr-alert-bg)',\n borderColor: 'var(--gr-alert-brd)',\n}))\n\n/**\n * `role=\"alert\"` — assertive-регион: он прерывает чтение. Вешать его на любое\n * информационное сообщение значит превращать спокойную подсказку в тревогу,\n * поэтому по умолчанию его получают только `warning` и `danger`.\n */\nconst role = computed(() => {\n const mode = live.value === 'auto'\n ? (tone.value === 'danger' || tone.value === 'warning' ? 'assertive' : 'polite')\n : live.value\n\n if (mode === 'off') return undefined\n return mode === 'assertive' ? 'alert' : 'status'\n})\n</script>\n\n<template>\n <div\n v-if=\"isVisible\"\n :role=\"role\"\n data-gr-alert\n class=\"rounded-[var(--gr-radius-lg)] border px-4 py-3\"\n :style=\"rootStyle\"\n >\n <div class=\"flex items-start gap-3\">\n <span\n v-if=\"showIcon\"\n data-gr-alert-icon\n class=\"mt-0.5 h-5 w-5 shrink-0 text-[var(--gr-alert-icon-color)]\"\n aria-hidden=\"true\"\n >\n <slot name=\"icon\">\n <component :is=\"toneIcon\" class=\"h-5 w-5\" />\n </slot>\n </span>\n\n <div class=\"min-w-0 flex-1\">\n <div\n v-if=\"props.title\"\n class=\"text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)] font-600 text-[var(--gr-alert-title-color)]\"\n >\n {{ props.title }}\n </div>\n <div\n class=\"text-[length:var(--gr-text-sm)] leading-relaxed text-[var(--gr-alert-text-color)]\"\n :class=\"props.title ? 'mt-1' : ''\"\n >\n <slot />\n </div>\n\n <!-- Действия идут под текстом, а не рядом с ним: на узкой колонке\n кнопки в одной строке с сообщением отжимают его до одного слова. -->\n <div\n v-if=\"$slots.actions\"\n data-gr-alert-actions\n class=\"mt-2 flex flex-wrap gap-2\"\n >\n <slot name=\"actions\" />\n </div>\n </div>\n\n <button\n v-if=\"closable\"\n type=\"button\"\n class=\"-mr-1.5 -mt-1.5 shrink-0 rounded-[var(--gr-radius-md)] p-1.5 text-[var(--gr-alert-close-color)] transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)] hover:bg-[var(--gr-alert-close-hover-bg)] hover:text-[var(--gr-alert-close-hover-color)]\"\n :aria-label=\"t('gr.common.close', 'Close')\"\n @click=\"close\"\n >\n <IconClose class=\"h-4 w-4\" aria-hidden=\"true\" />\n </button>\n </div>\n </div>\n</template>\n"],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { t as GrAlert_default } from "./chunks/GrAlert-
|
|
1
|
+
import { t as GrAlert_default } from "./chunks/GrAlert-FAVf-ksH.js";
|
|
2
2
|
import { t as grAlertConfig } from "../../chunks/config-BNu8lFQB.js";
|
|
3
3
|
export { GrAlert_default as GrAlert, GrAlert_default as default, grAlertConfig };
|
|
@@ -13,23 +13,20 @@ import { useGrFormControl } from "../../../composables/useGrFormControl.js";
|
|
|
13
13
|
import { t as useFocusWithin } from "../../../chunks/useFocusWithin-BwHE0rzm.js";
|
|
14
14
|
import { t as useControlledOpen } from "../../../chunks/useControlledOpen-DV3SqLTP.js";
|
|
15
15
|
import { useComboboxNavigation } from "../../../composables/useComboboxNavigation.js";
|
|
16
|
+
import { useRovingFocus } from "../../../composables/useRovingFocus.js";
|
|
16
17
|
import { a as resolveSelectedOptions, t as filterOptions } from "../../../chunks/optionFilter-DYw9XPPx.js";
|
|
17
18
|
import { t as useControlAddons } from "../../../chunks/useControlAddons-asUr10Pf.js";
|
|
18
|
-
import {
|
|
19
|
-
import { t as
|
|
20
|
-
import {
|
|
19
|
+
import { d as chipSizeForBadgeScale } from "../../../chunks/grChipStyles-3JZApw03.js";
|
|
20
|
+
import { t as GrChip_default } from "../../GrChip/chunks/GrChip-Df4orxRH.js";
|
|
21
|
+
import { t as panelPopTransition } from "../../../chunks/overlayTransition-0Fj5tQbq.js";
|
|
22
|
+
import { a as autocompleteShellClass, i as autocompletePanelClasses, o as autocompleteStateClass, r as autocompleteOptionClass } from "../../../chunks/config-vYMJ3Cr1.js";
|
|
21
23
|
import { t as check_default } from "../../../chunks/check-BZI24Qs4.js";
|
|
22
24
|
import { t as chevron_down_default } from "../../../chunks/chevron-down-CQS2OG_s.js";
|
|
25
|
+
import { t as _plugin_vue_export_helper_default } from "../../../chunks/_plugin-vue_export-helper-BOaGB7Aw.js";
|
|
23
26
|
import { Fragment, Teleport, Transition, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, mergeProps, nextTick, normalizeClass, normalizeStyle, onBeforeUnmount, openBlock, ref, renderList, renderSlot, shallowRef, toDisplayString, unref, useId, vShow, watch, withCtx, withDirectives, withModifiers } from "vue";
|
|
24
27
|
import '../styles.css';//#region src/components/GrAutocomplete/GrAutocomplete.vue?vue&type=script&setup=true&lang.ts
|
|
25
|
-
var _hoisted_1 = { class: "
|
|
26
|
-
var _hoisted_2 =
|
|
27
|
-
var _hoisted_3 = [
|
|
28
|
-
"aria-label",
|
|
29
|
-
"onClick",
|
|
30
|
-
"onKeydown"
|
|
31
|
-
];
|
|
32
|
-
var _hoisted_4 = [
|
|
28
|
+
var _hoisted_1 = { class: "truncate" };
|
|
29
|
+
var _hoisted_2 = [
|
|
33
30
|
"id",
|
|
34
31
|
"value",
|
|
35
32
|
"disabled",
|
|
@@ -45,25 +42,25 @@ var _hoisted_4 = [
|
|
|
45
42
|
"aria-activedescendant",
|
|
46
43
|
"aria-expanded"
|
|
47
44
|
];
|
|
48
|
-
var
|
|
45
|
+
var _hoisted_3 = {
|
|
49
46
|
key: 3,
|
|
50
47
|
"data-gr-autocomplete-spinner": "",
|
|
51
48
|
class: "shrink-0 flex items-center text-[var(--gr-muted-fg)]"
|
|
52
49
|
};
|
|
53
|
-
var
|
|
54
|
-
var
|
|
50
|
+
var _hoisted_4 = ["aria-label"];
|
|
51
|
+
var _hoisted_5 = {
|
|
55
52
|
key: 5,
|
|
56
53
|
"data-testid": "gr-autocomplete-chevron",
|
|
57
54
|
class: "shrink-0 flex items-center text-[var(--gr-muted-fg)] pointer-events-none"
|
|
58
55
|
};
|
|
59
|
-
var
|
|
60
|
-
var
|
|
56
|
+
var _hoisted_6 = ["name", "value"];
|
|
57
|
+
var _hoisted_7 = [
|
|
61
58
|
"id",
|
|
62
59
|
"data-gr-virtual",
|
|
63
60
|
"aria-multiselectable"
|
|
64
61
|
];
|
|
65
|
-
var
|
|
66
|
-
var
|
|
62
|
+
var _hoisted_8 = ["id"];
|
|
63
|
+
var _hoisted_9 = [
|
|
67
64
|
"id",
|
|
68
65
|
"disabled",
|
|
69
66
|
"aria-selected",
|
|
@@ -71,22 +68,22 @@ var _hoisted_11 = [
|
|
|
71
68
|
"onClick",
|
|
72
69
|
"onMousemove"
|
|
73
70
|
];
|
|
74
|
-
var
|
|
75
|
-
var
|
|
71
|
+
var _hoisted_10 = { class: "flex items-center gap-2 min-w-0" };
|
|
72
|
+
var _hoisted_11 = {
|
|
76
73
|
class: "inline-block h-4 w-4 shrink-0",
|
|
77
74
|
"aria-hidden": "true"
|
|
78
75
|
};
|
|
79
|
-
var
|
|
80
|
-
var
|
|
76
|
+
var _hoisted_12 = { class: "truncate" };
|
|
77
|
+
var _hoisted_13 = {
|
|
81
78
|
key: 0,
|
|
82
79
|
"data-gr-autocomplete-loading": "",
|
|
83
80
|
class: "flex items-center gap-2"
|
|
84
81
|
};
|
|
85
|
-
var
|
|
82
|
+
var _hoisted_14 = {
|
|
86
83
|
key: 1,
|
|
87
84
|
"data-gr-autocomplete-hint": ""
|
|
88
85
|
};
|
|
89
|
-
var
|
|
86
|
+
var _hoisted_15 = {
|
|
90
87
|
key: 2,
|
|
91
88
|
"data-gr-autocomplete-empty": ""
|
|
92
89
|
};
|
|
@@ -547,36 +544,40 @@ var GrAutocomplete_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/*
|
|
|
547
544
|
nextTick(focusInput);
|
|
548
545
|
}
|
|
549
546
|
const showClear = computed(() => resolvedClearable.value && !locked.value && (hasSelection.value || query.value.length > 0));
|
|
550
|
-
|
|
551
|
-
|
|
547
|
+
const chipRefs = ref([]);
|
|
548
|
+
function setChipRef(index) {
|
|
549
|
+
return (el) => {
|
|
550
|
+
chipRefs.value[index] = el;
|
|
551
|
+
};
|
|
552
552
|
}
|
|
553
|
+
/**
|
|
554
|
+
* Проп `tagSize` объявлен по шкале бейджа и остаётся публичным контрактом:
|
|
555
|
+
* дефолт `sm` обязан означать для потребителя тот же кегль, что и раньше.
|
|
556
|
+
*/
|
|
557
|
+
const chipSize = computed(() => chipSizeForBadgeScale(props.tagSize));
|
|
558
|
+
const chipIndexes = computed(() => selectedOptions.value.map((_, index) => index));
|
|
559
|
+
const chipRoving = useRovingFocus({
|
|
560
|
+
items: () => chipIndexes.value,
|
|
561
|
+
elementFor: (index) => chipRefs.value[index]?.removeEl,
|
|
562
|
+
orientation: () => "horizontal",
|
|
563
|
+
wrap: () => false,
|
|
564
|
+
onOverflow: (edge) => {
|
|
565
|
+
if (edge === "end") focusInput();
|
|
566
|
+
return true;
|
|
567
|
+
},
|
|
568
|
+
beforeFocus: () => nextTick()
|
|
569
|
+
});
|
|
553
570
|
function focusChip(index) {
|
|
554
|
-
const
|
|
555
|
-
if (
|
|
571
|
+
const last = selectedOptions.value.length - 1;
|
|
572
|
+
if (last < 0) {
|
|
556
573
|
focusInput();
|
|
557
574
|
return;
|
|
558
575
|
}
|
|
559
|
-
|
|
576
|
+
chipRoving.focusKey(Math.min(Math.max(index, 0), last));
|
|
560
577
|
}
|
|
561
578
|
function onChipKeydown(event, index, value) {
|
|
579
|
+
if (chipRoving.handleNavigationKeys(event)) return;
|
|
562
580
|
switch (event.key) {
|
|
563
|
-
case "ArrowLeft":
|
|
564
|
-
event.preventDefault();
|
|
565
|
-
focusChip(index - 1);
|
|
566
|
-
break;
|
|
567
|
-
case "ArrowRight":
|
|
568
|
-
event.preventDefault();
|
|
569
|
-
if (index >= chipRemoveButtons().length - 1) focusInput();
|
|
570
|
-
else focusChip(index + 1);
|
|
571
|
-
break;
|
|
572
|
-
case "Home":
|
|
573
|
-
event.preventDefault();
|
|
574
|
-
focusChip(0);
|
|
575
|
-
break;
|
|
576
|
-
case "End":
|
|
577
|
-
event.preventDefault();
|
|
578
|
-
focusChip(chipRemoveButtons().length - 1);
|
|
579
|
-
break;
|
|
580
581
|
case "Delete":
|
|
581
582
|
case "Backspace":
|
|
582
583
|
event.preventDefault();
|
|
@@ -668,33 +669,32 @@ var GrAutocomplete_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/*
|
|
|
668
669
|
style: normalizeStyle(unref(prefixStyle))
|
|
669
670
|
}, [renderSlot(_ctx.$slots, "prefix", {}, void 0, true)], 4)) : createCommentVNode("", true),
|
|
670
671
|
__props.multiple ? (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(selectedOptions.value, (option, chipIndex) => {
|
|
671
|
-
return openBlock(), createBlock(
|
|
672
|
+
return openBlock(), createBlock(GrChip_default, {
|
|
672
673
|
key: option.value,
|
|
674
|
+
ref_for: true,
|
|
675
|
+
ref: setChipRef(chipIndex),
|
|
673
676
|
"data-gr-autocomplete-chip": "",
|
|
674
677
|
tone: __props.tagTone,
|
|
675
678
|
dark: __props.tagDark,
|
|
676
|
-
size:
|
|
677
|
-
radius: __props.tagRadius
|
|
679
|
+
size: chipSize.value,
|
|
680
|
+
radius: __props.tagRadius,
|
|
681
|
+
closable: !locked.value,
|
|
682
|
+
"remove-label": unref(t)("gr.autocomplete.removeValue", "Remove {label}", { label: option.label }),
|
|
683
|
+
"remove-tabindex": -1,
|
|
684
|
+
onRemove: ($event) => removeValue(option.value),
|
|
685
|
+
onKeydown: ($event) => onChipKeydown($event, chipIndex, option.value)
|
|
678
686
|
}, {
|
|
679
|
-
default: withCtx(() => [createElementVNode("span", _hoisted_1,
|
|
680
|
-
key: 0,
|
|
681
|
-
type: "button",
|
|
682
|
-
"data-gr-autocomplete-chip-remove": "",
|
|
683
|
-
class: "inline-flex h-3.5 w-3.5 shrink-0 items-center justify-center rounded-[var(--gr-radius-full)] text-current focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]",
|
|
684
|
-
"aria-label": unref(t)("gr.autocomplete.removeValue", "Remove {label}", { label: option.label }),
|
|
685
|
-
tabindex: "-1",
|
|
686
|
-
onClick: ($event) => removeValue(option.value),
|
|
687
|
-
onKeydown: ($event) => onChipKeydown($event, chipIndex, option.value)
|
|
688
|
-
}, [createVNode(unref(x_default), {
|
|
689
|
-
class: "block h-3 w-3",
|
|
690
|
-
"aria-hidden": "true"
|
|
691
|
-
})], 40, _hoisted_3)) : createCommentVNode("", true)])]),
|
|
687
|
+
default: withCtx(() => [createElementVNode("span", _hoisted_1, toDisplayString(option.label), 1)]),
|
|
692
688
|
_: 2
|
|
693
689
|
}, 1032, [
|
|
694
690
|
"tone",
|
|
695
691
|
"dark",
|
|
696
692
|
"size",
|
|
697
|
-
"radius"
|
|
693
|
+
"radius",
|
|
694
|
+
"closable",
|
|
695
|
+
"remove-label",
|
|
696
|
+
"onRemove",
|
|
697
|
+
"onKeydown"
|
|
698
698
|
]);
|
|
699
699
|
}), 128)) : createCommentVNode("", true),
|
|
700
700
|
createElementVNode("input", {
|
|
@@ -725,7 +725,7 @@ var GrAutocomplete_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/*
|
|
|
725
725
|
onInput,
|
|
726
726
|
onFocus,
|
|
727
727
|
onKeydown
|
|
728
|
-
}, null, 40,
|
|
728
|
+
}, null, 40, _hoisted_2),
|
|
729
729
|
unref(hasSuffix) ? (openBlock(), createElementBlock("span", {
|
|
730
730
|
key: 2,
|
|
731
731
|
ref_key: "suffixEl",
|
|
@@ -734,7 +734,7 @@ var GrAutocomplete_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/*
|
|
|
734
734
|
class: "inline-flex shrink-0 items-center justify-center text-[var(--gr-muted-fg)]",
|
|
735
735
|
style: normalizeStyle(unref(suffixStyle))
|
|
736
736
|
}, [renderSlot(_ctx.$slots, "suffix", {}, void 0, true)], 4)) : createCommentVNode("", true),
|
|
737
|
-
isLoading.value ? (openBlock(), createElementBlock("span",
|
|
737
|
+
isLoading.value ? (openBlock(), createElementBlock("span", _hoisted_3, [createVNode(unref(loader_circle_default), {
|
|
738
738
|
class: "block h-4 w-4 animate-spin",
|
|
739
739
|
"aria-hidden": "true"
|
|
740
740
|
})])) : showClear.value ? (openBlock(), createElementBlock("button", {
|
|
@@ -748,7 +748,7 @@ var GrAutocomplete_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/*
|
|
|
748
748
|
}, [createVNode(unref(x_default), {
|
|
749
749
|
class: "block h-4 w-4",
|
|
750
750
|
"aria-hidden": "true"
|
|
751
|
-
})], 8,
|
|
751
|
+
})], 8, _hoisted_4)) : (openBlock(), createElementBlock("span", _hoisted_5, [createVNode(unref(chevron_down_default), {
|
|
752
752
|
class: "block h-4 w-4",
|
|
753
753
|
"aria-hidden": "true"
|
|
754
754
|
})]))
|
|
@@ -759,18 +759,18 @@ var GrAutocomplete_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/*
|
|
|
759
759
|
type: "hidden",
|
|
760
760
|
name: __props.name,
|
|
761
761
|
value: String(value)
|
|
762
|
-
}, null, 8,
|
|
762
|
+
}, null, 8, _hoisted_6);
|
|
763
763
|
}), 128)) : createCommentVNode("", true),
|
|
764
764
|
(openBlock(), createBlock(Teleport, {
|
|
765
765
|
to: unref(portalTarget),
|
|
766
766
|
disabled: !unref(teleportEnabled)
|
|
767
767
|
}, [createVNode(Transition, {
|
|
768
|
-
"enter-active-class":
|
|
769
|
-
"enter-from-class":
|
|
770
|
-
"enter-to-class":
|
|
771
|
-
"leave-active-class":
|
|
772
|
-
"leave-from-class":
|
|
773
|
-
"leave-to-class":
|
|
768
|
+
"enter-active-class": unref(panelPopTransition).enter,
|
|
769
|
+
"enter-from-class": unref(panelPopTransition).enterFrom,
|
|
770
|
+
"enter-to-class": unref(panelPopTransition).enterTo,
|
|
771
|
+
"leave-active-class": unref(panelPopTransition).leave,
|
|
772
|
+
"leave-from-class": unref(panelPopTransition).leaveFrom,
|
|
773
|
+
"leave-to-class": unref(panelPopTransition).leaveTo
|
|
774
774
|
}, {
|
|
775
775
|
default: withCtx(() => [withDirectives(createElementVNode("div", mergeProps({
|
|
776
776
|
ref_key: "panelEl",
|
|
@@ -808,7 +808,7 @@ var GrAutocomplete_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/*
|
|
|
808
808
|
onMousedown: _cache[0] || (_cache[0] = withModifiers(() => {}, ["prevent"])),
|
|
809
809
|
onClick: commitCustom,
|
|
810
810
|
onMousemove: _cache[1] || (_cache[1] = ($event) => activeIndex.value = 0)
|
|
811
|
-
}), toDisplayString(unref(t)("gr.autocomplete.addOption", "Add \"{value}\"", { value: query.value.trim() })), 17,
|
|
811
|
+
}), toDisplayString(unref(t)("gr.autocomplete.addOption", "Add \"{value}\"", { value: query.value.trim() })), 17, _hoisted_8)) : createCommentVNode("", true), (openBlock(true), createElementBlock(Fragment, null, renderList(renderedOptions.value, ({ option, index: optionIndex }) => {
|
|
812
812
|
return openBlock(), createElementBlock("button", mergeProps({
|
|
813
813
|
id: optionDomId(optionIndex),
|
|
814
814
|
key: option.value,
|
|
@@ -832,22 +832,29 @@ var GrAutocomplete_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/*
|
|
|
832
832
|
}), [renderSlot(_ctx.$slots, "option", {
|
|
833
833
|
option,
|
|
834
834
|
selected: isSelected(option.value)
|
|
835
|
-
}, () => [createElementVNode("span",
|
|
835
|
+
}, () => [createElementVNode("span", _hoisted_10, [createElementVNode("span", _hoisted_11, [isSelected(option.value) ? (openBlock(), createBlock(unref(check_default), {
|
|
836
836
|
key: 0,
|
|
837
837
|
class: "block h-4 w-4 text-[var(--gr-primary)]"
|
|
838
|
-
})) : createCommentVNode("", true)]), createElementVNode("span",
|
|
839
|
-
}), 128))], 14,
|
|
838
|
+
})) : createCommentVNode("", true)]), createElementVNode("span", _hoisted_12, toDisplayString(option.label), 1)])], true)], 16, _hoisted_9);
|
|
839
|
+
}), 128))], 14, _hoisted_7)) : createCommentVNode("", true), isLoading.value || belowMinQuery.value || showEmpty.value ? (openBlock(), createElementBlock("div", {
|
|
840
840
|
key: 1,
|
|
841
841
|
"data-gr-autocomplete-status": "",
|
|
842
842
|
role: "status",
|
|
843
843
|
"aria-live": "polite",
|
|
844
844
|
class: normalizeClass(unref(autocompleteStateClass))
|
|
845
|
-
}, [isLoading.value ? (openBlock(), createElementBlock("span",
|
|
845
|
+
}, [isLoading.value ? (openBlock(), createElementBlock("span", _hoisted_13, [renderSlot(_ctx.$slots, "loading", {}, () => [createVNode(unref(loader_circle_default), {
|
|
846
846
|
class: "block h-4 w-4 animate-spin",
|
|
847
847
|
"aria-hidden": "true"
|
|
848
|
-
}), createElementVNode("span", null, toDisplayString(resolvedLoadingText.value), 1)], true)])) : belowMinQuery.value ? (openBlock(), createElementBlock("span",
|
|
848
|
+
}), createElementVNode("span", null, toDisplayString(resolvedLoadingText.value), 1)], true)])) : belowMinQuery.value ? (openBlock(), createElementBlock("span", _hoisted_14, toDisplayString(resolvedTypeMoreText.value), 1)) : (openBlock(), createElementBlock("span", _hoisted_15, [renderSlot(_ctx.$slots, "empty", {}, () => [createTextVNode(toDisplayString(resolvedNoResultsText.value), 1)], true)]))], 2)) : createCommentVNode("", true)], 2)], 16), [[vShow, unref(open)]])]),
|
|
849
849
|
_: 3
|
|
850
|
-
}
|
|
850
|
+
}, 8, [
|
|
851
|
+
"enter-active-class",
|
|
852
|
+
"enter-from-class",
|
|
853
|
+
"enter-to-class",
|
|
854
|
+
"leave-active-class",
|
|
855
|
+
"leave-from-class",
|
|
856
|
+
"leave-to-class"
|
|
857
|
+
])], 8, ["to", "disabled"]))
|
|
851
858
|
], 32)), [[unref(vClickOutside), {
|
|
852
859
|
handler: closeDropdown,
|
|
853
860
|
enabled: unref(open),
|
|
@@ -855,6 +862,6 @@ var GrAutocomplete_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/*
|
|
|
855
862
|
}]]);
|
|
856
863
|
};
|
|
857
864
|
}
|
|
858
|
-
}), [["__scopeId", "data-v-
|
|
865
|
+
}), [["__scopeId", "data-v-c2307e4c"]]);
|
|
859
866
|
//#endregion
|
|
860
867
|
export { GrAutocomplete_default as t };
|