@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.
Files changed (578) hide show
  1. package/dist/chunks/classTokens-8v2XC74x.js +16 -0
  2. package/dist/chunks/classTokens-8v2XC74x.js.map +1 -0
  3. package/dist/chunks/{config-Bpt9Xbxm.js → config-2ZHRsdOc.js} +2 -2
  4. package/dist/chunks/config-2ZHRsdOc.js.map +1 -0
  5. package/dist/chunks/{config-D6W1rnlp.js → config-B0uvcTPH.js} +1 -1
  6. package/dist/chunks/{config-D6W1rnlp.js.map → config-B0uvcTPH.js.map} +1 -1
  7. package/dist/chunks/{config-Bsh948nP.js → config-B3J0alyY.js} +1 -1
  8. package/dist/chunks/{config-Bsh948nP.js.map → config-B3J0alyY.js.map} +1 -1
  9. package/dist/chunks/{config-ScuvHw6k.js → config-B5SBUa6u.js} +1 -1
  10. package/dist/chunks/{config-ScuvHw6k.js.map → config-B5SBUa6u.js.map} +1 -1
  11. package/dist/chunks/{config-BeZRuonp.js → config-BDSaD-5p.js} +1 -1
  12. package/dist/chunks/{config-BeZRuonp.js.map → config-BDSaD-5p.js.map} +1 -1
  13. package/dist/chunks/{config-Dgj1Q6JY.js → config-BEO7brpO.js} +3 -3
  14. package/dist/chunks/config-BEO7brpO.js.map +1 -0
  15. package/dist/chunks/{config-B84z1aos.js → config-BHcS5Cwm.js} +1 -1
  16. package/dist/chunks/{config-B84z1aos.js.map → config-BHcS5Cwm.js.map} +1 -1
  17. package/dist/chunks/{config-DA6SnEoy.js → config-BRESvs9g.js} +2 -2
  18. package/dist/chunks/{config-DA6SnEoy.js.map → config-BRESvs9g.js.map} +1 -1
  19. package/dist/chunks/{config-CN2ULSQL.js → config-BTmfQFwi.js} +5 -5
  20. package/dist/chunks/config-BTmfQFwi.js.map +1 -0
  21. package/dist/chunks/{config-DtgYuGUn2.js → config-BTwYMQaz2.js} +5 -3
  22. package/dist/chunks/config-BTwYMQaz2.js.map +1 -0
  23. package/dist/chunks/{config-QJ54_fcM.js → config-BaWANzzB.js} +1 -1
  24. package/dist/chunks/{config-QJ54_fcM.js.map → config-BaWANzzB.js.map} +1 -1
  25. package/dist/chunks/{config-COvrUfhR.js → config-BcXX7S7B.js} +5 -5
  26. package/dist/chunks/config-BcXX7S7B.js.map +1 -0
  27. package/dist/chunks/{config-COpuWGr_.js → config-Bd7QfiGj.js} +1 -1
  28. package/dist/chunks/{config-COpuWGr_.js.map → config-Bd7QfiGj.js.map} +1 -1
  29. package/dist/chunks/{config-BDfTXHo1.js → config-BhfNgyWL.js} +2 -2
  30. package/dist/chunks/{config-BDfTXHo1.js.map → config-BhfNgyWL.js.map} +1 -1
  31. package/dist/chunks/{config-CjnbevbD.js → config-Bjn30smH.js} +1 -1
  32. package/dist/chunks/{config-CjnbevbD.js.map → config-Bjn30smH.js.map} +1 -1
  33. package/dist/chunks/{config-CN970ZcJ.js → config-BlJa1Mj9.js} +13 -13
  34. package/dist/chunks/config-BlJa1Mj9.js.map +1 -0
  35. package/dist/chunks/{config-DU2DNSRx.js → config-BoUI0t-t.js} +1 -1
  36. package/dist/chunks/{config-DU2DNSRx.js.map → config-BoUI0t-t.js.map} +1 -1
  37. package/dist/chunks/{config-BN4sXYXn.js → config-BqT6PMzO.js} +7 -14
  38. package/dist/chunks/config-BqT6PMzO.js.map +1 -0
  39. package/dist/chunks/config-BuGlNPE9.js.map +1 -0
  40. package/dist/chunks/{config-MRvhUl-O.js → config-CJzmDHfI.js} +1 -1
  41. package/dist/chunks/{config-MRvhUl-O.js.map → config-CJzmDHfI.js.map} +1 -1
  42. package/dist/chunks/{config-DGWFal5h.js → config-CLjjjPZj.js} +7 -7
  43. package/dist/chunks/config-CLjjjPZj.js.map +1 -0
  44. package/dist/chunks/{config-Cl4ST6Qd.js → config-CQLNjc9X2.js} +2 -2
  45. package/dist/chunks/config-CQLNjc9X2.js.map +1 -0
  46. package/dist/chunks/{config-vSji8w90.js → config-CWtfxkM9.js} +9 -9
  47. package/dist/chunks/config-CWtfxkM9.js.map +1 -0
  48. package/dist/chunks/{config-DKISz9gR.js → config-CWthWcWY.js} +2 -2
  49. package/dist/chunks/{config-DKISz9gR.js.map → config-CWthWcWY.js.map} +1 -1
  50. package/dist/chunks/{config-Iu684VNI.js → config-CZPDPJlg.js} +1 -1
  51. package/dist/chunks/{config-Iu684VNI.js.map → config-CZPDPJlg.js.map} +1 -1
  52. package/dist/chunks/{config-DAX8Deh1.js → config-CbEbLyDE.js} +3 -3
  53. package/dist/chunks/config-CbEbLyDE.js.map +1 -0
  54. package/dist/chunks/{config-D94Z9po5.js → config-ChPg-BQv.js} +2 -2
  55. package/dist/chunks/config-ChPg-BQv.js.map +1 -0
  56. package/dist/chunks/{config-DSJY6aEl.js → config-CjKpUcmy.js} +17 -17
  57. package/dist/chunks/config-CjKpUcmy.js.map +1 -0
  58. package/dist/chunks/{config-BIa3ilQm.js → config-CjWOTgLL.js} +4 -4
  59. package/dist/chunks/{config-BIa3ilQm.js.map → config-CjWOTgLL.js.map} +1 -1
  60. package/dist/chunks/{config-rkcKArZQ.js → config-CnYdE3HZ2.js} +5 -5
  61. package/dist/chunks/config-CnYdE3HZ2.js.map +1 -0
  62. package/dist/chunks/{config-BE6n20np.js → config-CvbVM4ep.js} +1 -1
  63. package/dist/chunks/{config-BE6n20np.js.map → config-CvbVM4ep.js.map} +1 -1
  64. package/dist/chunks/{config-9PYRZlKE.js → config-D0NzGYaE.js} +6 -6
  65. package/dist/chunks/config-D0NzGYaE.js.map +1 -0
  66. package/dist/chunks/{config-CKULiuvc.js → config-D0W8mGFD.js} +4 -4
  67. package/dist/chunks/{config-CKULiuvc.js.map → config-D0W8mGFD.js.map} +1 -1
  68. package/dist/chunks/{config-CY0_6cMi.js → config-D82r782v.js} +1 -1
  69. package/dist/chunks/{config-CY0_6cMi.js.map → config-D82r782v.js.map} +1 -1
  70. package/dist/chunks/config-DBmdgoVf2.js.map +1 -0
  71. package/dist/chunks/{config-WTNhdh6T.js → config-DCq4JySZ.js} +2 -2
  72. package/dist/chunks/{config-WTNhdh6T.js.map → config-DCq4JySZ.js.map} +1 -1
  73. package/dist/chunks/{config-C8tVRv8i.js → config-DGC00bTp.js} +13 -13
  74. package/dist/chunks/config-DGC00bTp.js.map +1 -0
  75. package/dist/chunks/{config-BsPDQ0dS.js → config-DIDz_E5m.js} +9 -9
  76. package/dist/chunks/config-DIDz_E5m.js.map +1 -0
  77. package/dist/chunks/{config-Dguto_6o.js → config-DM0lsduD.js} +6 -6
  78. package/dist/chunks/config-DM0lsduD.js.map +1 -0
  79. package/dist/chunks/{config-BfsBepkH.js → config-DNDgp9bB.js} +5 -5
  80. package/dist/chunks/config-DNDgp9bB.js.map +1 -0
  81. package/dist/chunks/{config-DpeQchsV.js → config-DO8mjeIo.js} +2 -2
  82. package/dist/chunks/{config-DpeQchsV.js.map → config-DO8mjeIo.js.map} +1 -1
  83. package/dist/chunks/{config-Baj7Wvx-.js → config-DRbojEzO.js} +4 -4
  84. package/dist/chunks/config-DRbojEzO.js.map +1 -0
  85. package/dist/chunks/{config-CQzGyi1C.js → config-DWL81-aM.js} +1 -1
  86. package/dist/chunks/{config-CQzGyi1C.js.map → config-DWL81-aM.js.map} +1 -1
  87. package/dist/chunks/{config-esdviAPL.js → config-DZCUPHPU.js} +1 -1
  88. package/dist/chunks/{config-esdviAPL.js.map → config-DZCUPHPU.js.map} +1 -1
  89. package/dist/chunks/{config-DKdlqXiY.js → config-DcfWZOi5.js} +5 -5
  90. package/dist/chunks/config-DcfWZOi5.js.map +1 -0
  91. package/dist/chunks/{config-BC8d_smz.js → config-DeyT9dJl.js} +3 -3
  92. package/dist/chunks/{config-BC8d_smz.js.map → config-DeyT9dJl.js.map} +1 -1
  93. package/dist/chunks/{config-Cwd3yjRw.js → config-DnF472Ox.js} +6 -4
  94. package/dist/chunks/config-DnF472Ox.js.map +1 -0
  95. package/dist/chunks/{config-B_qi4Fma.js → config-DolULhjJ.js} +5 -5
  96. package/dist/chunks/config-DolULhjJ.js.map +1 -0
  97. package/dist/chunks/{config-CIcynHGr.js → config-DpAYidyY2.js} +1 -1
  98. package/dist/chunks/config-DpAYidyY2.js.map +1 -0
  99. package/dist/chunks/{config-DYgfMrIF.js → config-Dpk-eVkS.js} +1 -1
  100. package/dist/chunks/{config-DYgfMrIF.js.map → config-Dpk-eVkS.js.map} +1 -1
  101. package/dist/chunks/config-Dv_r92GL.js +35 -0
  102. package/dist/chunks/config-Dv_r92GL.js.map +1 -0
  103. package/dist/chunks/{config-B4w5gBD0.js → config-DwABJHEo.js} +2 -2
  104. package/dist/chunks/config-DwABJHEo.js.map +1 -0
  105. package/dist/chunks/{config-zjeAJ4ho2.js → config-MmPym-Z72.js} +5 -5
  106. package/dist/chunks/config-MmPym-Z72.js.map +1 -0
  107. package/dist/chunks/{config-DCFvmHEv.js → config-T3-DMXYm.js} +9 -7
  108. package/dist/chunks/config-T3-DMXYm.js.map +1 -0
  109. package/dist/chunks/{config-BoNR7_PD.js → config-Yy67uWHY.js} +1 -1
  110. package/dist/chunks/{config-BoNR7_PD.js.map → config-Yy67uWHY.js.map} +1 -1
  111. package/dist/chunks/{config-BFJIxE8b.js → config-Z5LeUXys.js} +1 -1
  112. package/dist/chunks/{config-BFJIxE8b.js.map → config-Z5LeUXys.js.map} +1 -1
  113. package/dist/chunks/{config-DWN4x6_e.js → config-_QF0O1vq.js} +9 -9
  114. package/dist/chunks/config-_QF0O1vq.js.map +1 -0
  115. package/dist/chunks/{config-Cp0DE0GH.js → config-_jO3q1Le.js} +1 -1
  116. package/dist/chunks/{config-Cp0DE0GH.js.map → config-_jO3q1Le.js.map} +1 -1
  117. package/dist/chunks/{config-DGCMHPCR.js → config-g8-JGZ_Y.js} +1 -1
  118. package/dist/chunks/{config-DGCMHPCR.js.map → config-g8-JGZ_Y.js.map} +1 -1
  119. package/dist/chunks/{config-BTCOJO5z2.js → config-jyr6AIZt2.js} +3 -3
  120. package/dist/chunks/{config-BTCOJO5z2.js.map → config-jyr6AIZt2.js.map} +1 -1
  121. package/dist/chunks/{config-BtXRpAtq.js → config-mlheIMtV.js} +3 -6
  122. package/dist/chunks/config-mlheIMtV.js.map +1 -0
  123. package/dist/chunks/{config-BEVBsvni2.js → config-rLkc9Zn2.js} +1 -1
  124. package/dist/chunks/config-rLkc9Zn2.js.map +1 -0
  125. package/dist/chunks/{config-T3qdQBgU.js → config-tiUtEn4Q.js} +1 -1
  126. package/dist/chunks/{config-T3qdQBgU.js.map → config-tiUtEn4Q.js.map} +1 -1
  127. package/dist/chunks/{config-BViooYNv.js → config-uzUuosv7.js} +7 -2
  128. package/dist/chunks/config-uzUuosv7.js.map +1 -0
  129. package/dist/chunks/{config-BbY2SKGE.js → config-vYMJ3Cr1.js} +11 -9
  130. package/dist/chunks/config-vYMJ3Cr1.js.map +1 -0
  131. package/dist/chunks/context-BfIQv7m1.js.map +1 -0
  132. package/dist/chunks/{generated-CJe6hdiE.js → generated-DJ2dJ__C.js} +48 -0
  133. package/dist/chunks/generated-DJ2dJ__C.js.map +1 -0
  134. package/dist/chunks/{grBadgeStyles-C1S56Alo.js → grBadgeStyles-D8Mz73B5.js} +4 -4
  135. package/dist/chunks/grBadgeStyles-D8Mz73B5.js.map +1 -0
  136. package/dist/chunks/{config-D7zgE_Gr.js → grChipStyles-3JZApw03.js} +21 -43
  137. package/dist/chunks/grChipStyles-3JZApw03.js.map +1 -0
  138. package/dist/chunks/{grDropdownMenuStyles-D1LOkdVj.js → grDropdownMenuStyles-DG3aYHkT.js} +3 -3
  139. package/dist/chunks/grDropdownMenuStyles-DG3aYHkT.js.map +1 -0
  140. package/dist/chunks/{grIconStyles-BwJrml2L.js → grIconStyles-B6BRqUld.js} +1 -1
  141. package/dist/chunks/{grIconStyles-BwJrml2L.js.map → grIconStyles-B6BRqUld.js.map} +1 -1
  142. package/dist/chunks/{grInputStyles-CJeMhUe5.js → grInputStyles-CAk3xKIb.js} +4 -4
  143. package/dist/chunks/grInputStyles-CAk3xKIb.js.map +1 -0
  144. package/dist/chunks/{grKbdStyles-CeZhGQHr.js → grKbdStyles-DENu8pUK.js} +5 -0
  145. package/dist/chunks/grKbdStyles-DENu8pUK.js.map +1 -0
  146. package/dist/chunks/{grLinkStyles-BoL8QYcV.js → grLinkStyles-FME_qMpi.js} +4 -4
  147. package/dist/chunks/grLinkStyles-FME_qMpi.js.map +1 -0
  148. package/dist/chunks/{grLoadingStyles-DEmji2wv.js → grLoadingStyles-CnQaf5ry.js} +1 -1
  149. package/dist/chunks/{grLoadingStyles-DEmji2wv.js.map → grLoadingStyles-CnQaf5ry.js.map} +1 -1
  150. package/dist/chunks/{grPopoverStyles-Cke_BZsM.js → grPopoverStyles-Djh5RNhn.js} +4 -4
  151. package/dist/chunks/grPopoverStyles-Djh5RNhn.js.map +1 -0
  152. package/dist/chunks/{grRadioStyles-BTjGNhtU.js → grRadioStyles-D4gnU65n.js} +4 -4
  153. package/dist/chunks/grRadioStyles-D4gnU65n.js.map +1 -0
  154. package/dist/chunks/{grSelectStyles-eTz4uPMP.js → grSelectStyles-Cdtd10eY.js} +9 -9
  155. package/dist/chunks/grSelectStyles-Cdtd10eY.js.map +1 -0
  156. package/dist/chunks/{grTableStyles-C-iaqQUN.js → grTableStyles-uuMPSOBR.js} +2 -2
  157. package/dist/chunks/{grTableStyles-C-iaqQUN.js.map → grTableStyles-uuMPSOBR.js.map} +1 -1
  158. package/dist/chunks/{grTextareaStyles-iOcHuVMM.js → grTextareaStyles-Bp35BGna.js} +4 -4
  159. package/dist/chunks/grTextareaStyles-Bp35BGna.js.map +1 -0
  160. package/dist/chunks/{granular-provider-BaHkLjFX.js → granular-provider-DvvRayEh.js} +67 -67
  161. package/dist/chunks/{granular-provider-BaHkLjFX.js.map → granular-provider-DvvRayEh.js.map} +1 -1
  162. package/dist/chunks/numericStep-Bq2lj4ew.js +23 -0
  163. package/dist/chunks/numericStep-Bq2lj4ew.js.map +1 -0
  164. package/dist/chunks/overlayTransition-0Fj5tQbq.js +36 -0
  165. package/dist/chunks/overlayTransition-0Fj5tQbq.js.map +1 -0
  166. package/dist/chunks/{safelist-CudBLyAD.js → safelist-BOq5Li7p.js} +1 -1
  167. package/dist/chunks/{safelist-CudBLyAD.js.map → safelist-BOq5Li7p.js.map} +1 -1
  168. package/dist/chunks/{safelist-DOfCQR5O.js → safelist-CtiHPgrj.js} +2 -2
  169. package/dist/chunks/{safelist-DOfCQR5O.js.map → safelist-CtiHPgrj.js.map} +1 -1
  170. package/dist/chunks/{safelist-CkF4v7DC.js → safelist-Y3zrlhOa.js} +1 -1
  171. package/dist/chunks/{safelist-CkF4v7DC.js.map → safelist-Y3zrlhOa.js.map} +1 -1
  172. package/dist/chunks/{useMenuItemsFocus-OyOnIAlr.js → useMenuItemsFocus-B6TldmGf.js} +1 -43
  173. package/dist/chunks/useMenuItemsFocus-B6TldmGf.js.map +1 -0
  174. package/dist/chunks/useTypeahead-mxPtPBf2.js +44 -0
  175. package/dist/chunks/useTypeahead-mxPtPBf2.js.map +1 -0
  176. package/dist/components/GrAlert/chunks/{GrAlert-B21QGele.js → GrAlert-FAVf-ksH.js} +1 -1
  177. package/dist/components/GrAlert/chunks/{GrAlert-B21QGele.js.map → GrAlert-FAVf-ksH.js.map} +1 -1
  178. package/dist/components/GrAlert/index.js +1 -1
  179. package/dist/components/GrAutocomplete/chunks/{GrAutocomplete-D9c9BNFg.js → GrAutocomplete-BwhUTqmG.js} +88 -81
  180. package/dist/components/GrAutocomplete/chunks/GrAutocomplete-BwhUTqmG.js.map +1 -0
  181. package/dist/components/GrAutocomplete/index.js +2 -2
  182. package/dist/components/GrAutocomplete/styles.css +1 -1
  183. package/dist/components/GrAvatar/chunks/{GrAvatar-BbdKRX8i.js → GrAvatar-CNmLmgcr.js} +1 -1
  184. package/dist/components/GrAvatar/chunks/{GrAvatar-BbdKRX8i.js.map → GrAvatar-CNmLmgcr.js.map} +1 -1
  185. package/dist/components/GrAvatar/index.js +2 -2
  186. package/dist/components/GrBadge/chunks/{GrBadge-_9rCHuE1.js → GrBadge-BM3f9PME.js} +2 -2
  187. package/dist/components/GrBadge/chunks/GrBadge-BM3f9PME.js.map +1 -0
  188. package/dist/components/GrBadge/index.js +3 -3
  189. package/dist/components/GrBadge/styles.css +1 -1
  190. package/dist/components/GrBadgeWrap/chunks/{GrBadgeWrap-DDoFQscR.js → GrBadgeWrap-B-A3PRkE.js} +1 -1
  191. package/dist/components/GrBadgeWrap/chunks/GrBadgeWrap-B-A3PRkE.js.map +1 -0
  192. package/dist/components/GrBadgeWrap/index.js +2 -2
  193. package/dist/components/GrBottomNav/chunks/{GrBottomNav-JUu4ylYv.js → GrBottomNav-wtFatLjB.js} +1 -1
  194. package/dist/components/GrBottomNav/chunks/{GrBottomNav-JUu4ylYv.js.map → GrBottomNav-wtFatLjB.js.map} +1 -1
  195. package/dist/components/GrBottomNav/index.js +2 -2
  196. package/dist/components/GrBreadcrumbs/chunks/{GrBreadcrumbs-CQ44iU2o.js → GrBreadcrumbs-jtSnMEtg.js} +2 -2
  197. package/dist/components/GrBreadcrumbs/chunks/{GrBreadcrumbs-CQ44iU2o.js.map → GrBreadcrumbs-jtSnMEtg.js.map} +1 -1
  198. package/dist/components/GrBreadcrumbs/index.js +2 -2
  199. package/dist/components/GrButton/chunks/{GrButton-DCz-Wn-V.js → GrButton-Bw2AH4uX.js} +1 -1
  200. package/dist/components/GrButton/chunks/GrButton-Bw2AH4uX.js.map +1 -0
  201. package/dist/components/GrButton/index.js +3 -3
  202. package/dist/components/GrButtonGroup/chunks/{GrButtonGroup-BQo5VQ_c.js → GrButtonGroup-CKyiAV8K.js} +1 -1
  203. package/dist/components/GrButtonGroup/chunks/GrButtonGroup-CKyiAV8K.js.map +1 -0
  204. package/dist/components/GrButtonGroup/index.js +3 -3
  205. package/dist/components/GrCard/chunks/{GrCard-aQIjk6I9.js → GrCard-DR3ehBt8.js} +1 -1
  206. package/dist/components/GrCard/chunks/GrCard-DR3ehBt8.js.map +1 -0
  207. package/dist/components/GrCard/index.js +2 -2
  208. package/dist/components/GrCheckbox/index.js +1 -1
  209. package/dist/components/GrCheckboxGroup/index.js +1 -1
  210. package/dist/components/GrChip/chunks/{GrChip-BnL2FedO.js → GrChip-Df4orxRH.js} +15 -4
  211. package/dist/components/GrChip/chunks/GrChip-Df4orxRH.js.map +1 -0
  212. package/dist/components/GrChip/index.js +2 -2
  213. package/dist/components/GrChipGroup/chunks/{GrChipGroup-DefmSdY9.js → GrChipGroup-C78Vcwos.js} +2 -2
  214. package/dist/components/GrChipGroup/chunks/{GrChipGroup-DefmSdY9.js.map → GrChipGroup-C78Vcwos.js.map} +1 -1
  215. package/dist/components/GrChipGroup/index.js +2 -2
  216. package/dist/components/GrCodeBlock/chunks/{GrCodeBlock-CyptiEo4.js → GrCodeBlock-Dkvkr91t.js} +2 -2
  217. package/dist/components/GrCodeBlock/chunks/{GrCodeBlock-CyptiEo4.js.map → GrCodeBlock-Dkvkr91t.js.map} +1 -1
  218. package/dist/components/GrCodeBlock/index.js +2 -2
  219. package/dist/components/GrCollapse/chunks/{GrCollapse-DUROgAgc.js → GrCollapse-CytiA2Sx.js} +3 -3
  220. package/dist/components/GrCollapse/chunks/{GrCollapse-DUROgAgc.js.map → GrCollapse-CytiA2Sx.js.map} +1 -1
  221. package/dist/components/GrCollapse/index.js +2 -2
  222. package/dist/components/GrColorPicker/chunks/{GrColorPicker-CDaJRVIM.js → GrColorPicker-0n_KGeUy.js} +4 -4
  223. package/dist/components/GrColorPicker/chunks/{GrColorPicker-CDaJRVIM.js.map → GrColorPicker-0n_KGeUy.js.map} +1 -1
  224. package/dist/components/GrColorPicker/index.js +2 -2
  225. package/dist/components/GrCommandPalette/chunks/{GrCommandPalette-BPsVN_XU.js → GrCommandPalette-C5abL2Y7.js} +3 -3
  226. package/dist/components/GrCommandPalette/chunks/GrCommandPalette-C5abL2Y7.js.map +1 -0
  227. package/dist/components/GrCommandPalette/index.js +2 -2
  228. package/dist/components/GrCommandPalette/styles.css +1 -1
  229. package/dist/components/GrConfigProvider/chunks/GrConfigProvider-BF7R3hgg.js.map +1 -1
  230. package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-CwXNLyzk.js → GrConfirmDialog-B9mIU78E.js} +4 -4
  231. package/dist/components/GrConfirmDialog/chunks/GrConfirmDialog-B9mIU78E.js.map +1 -0
  232. package/dist/components/GrConfirmDialog/index.js +1 -1
  233. package/dist/components/GrContextMenu/chunks/{GrContextMenu-BbAJholy.js → GrContextMenu-DDAUvrDK.js} +3 -3
  234. package/dist/components/GrContextMenu/chunks/GrContextMenu-DDAUvrDK.js.map +1 -0
  235. package/dist/components/GrContextMenu/index.js +1 -1
  236. package/dist/components/GrDataTable/chunks/{GrDataTable-NRbrXpdx.js → GrDataTable-DU00V44y.js} +14 -4
  237. package/dist/components/GrDataTable/chunks/GrDataTable-DU00V44y.js.map +1 -0
  238. package/dist/components/GrDataTable/index.js +2 -2
  239. package/dist/components/GrDelta/chunks/{GrDelta-NE5HhXoo.js → GrDelta-04j9WmEY.js} +0 -0
  240. package/dist/components/GrDelta/chunks/{GrDelta-NE5HhXoo.js.map → GrDelta-04j9WmEY.js.map} +1 -1
  241. package/dist/components/GrDelta/index.js +2 -2
  242. package/dist/components/GrDescriptionList/chunks/{GrDescriptionList-1mICfrqX.js → GrDescriptionList-BMeCgFV3.js} +1 -1
  243. package/dist/components/GrDescriptionList/chunks/GrDescriptionList-BMeCgFV3.js.map +1 -0
  244. package/dist/components/GrDescriptionList/index.js +2 -2
  245. package/dist/components/GrDialog/chunks/{GrDialog-5Y5K87ss.js → GrDialog-bOUDYfmh.js} +2 -2
  246. package/dist/components/GrDialog/chunks/GrDialog-bOUDYfmh.js.map +1 -0
  247. package/dist/components/GrDialog/index.js +2 -2
  248. package/dist/components/GrDialogService/chunks/{GrDialogService-CHVR4sOk.js → GrDialogService-B--br5so.js} +4 -4
  249. package/dist/components/GrDialogService/chunks/{GrDialogService-CHVR4sOk.js.map → GrDialogService-B--br5so.js.map} +1 -1
  250. package/dist/components/GrDialogService/index.js +1 -1
  251. package/dist/components/GrDivider/chunks/{GrDivider-CAhm9jbE.js → GrDivider-BXavGcMX.js} +1 -1
  252. package/dist/components/GrDivider/chunks/GrDivider-BXavGcMX.js.map +1 -0
  253. package/dist/components/GrDivider/index.js +2 -2
  254. package/dist/components/GrDrawer/chunks/{GrDrawer-CXy3-SVd.js → GrDrawer-BCreL-eq.js} +3 -3
  255. package/dist/components/GrDrawer/chunks/{GrDrawer-CXy3-SVd.js.map → GrDrawer-BCreL-eq.js.map} +1 -1
  256. package/dist/components/GrDrawer/index.js +2 -2
  257. package/dist/components/GrDropdown/chunks/{GrDropdown-BfTmdPyh.js → GrDropdown-13Wt9eB_.js} +16 -8
  258. package/dist/components/GrDropdown/chunks/GrDropdown-13Wt9eB_.js.map +1 -0
  259. package/dist/components/GrDropdown/index.js +2 -2
  260. package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu-l5HEqzjr.js → GrDropdownMenu-5zoOL8Oj.js} +3 -3
  261. package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-5zoOL8Oj.js.map +1 -0
  262. package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenuList-BGA_xNVo.js → GrDropdownMenuList-CT_1TQJo.js} +1 -1
  263. package/dist/components/GrDropdownMenu/chunks/GrDropdownMenuList-CT_1TQJo.js.map +1 -0
  264. package/dist/components/GrDropdownMenu/index.js +3 -3
  265. package/dist/components/GrEmptyState/chunks/{GrEmptyState-CS9do8eM.js → GrEmptyState-D4T5pzXA.js} +2 -2
  266. package/dist/components/GrEmptyState/chunks/{GrEmptyState-CS9do8eM.js.map → GrEmptyState-D4T5pzXA.js.map} +1 -1
  267. package/dist/components/GrEmptyState/index.js +2 -2
  268. package/dist/components/GrFilePreview/chunks/{GrFilePreview-D0Bt-0nn.js → GrFilePreview-C9Z7hMK8.js} +1 -1
  269. package/dist/components/GrFilePreview/chunks/{GrFilePreview-D0Bt-0nn.js.map → GrFilePreview-C9Z7hMK8.js.map} +1 -1
  270. package/dist/components/GrFilePreview/index.js +2 -2
  271. package/dist/components/GrFileUpload/chunks/{GrFileUpload-wNXzHb5N.js → GrFileUpload-FjbaYGjL.js} +2 -2
  272. package/dist/components/GrFileUpload/chunks/{GrFileUpload-wNXzHb5N.js.map → GrFileUpload-FjbaYGjL.js.map} +1 -1
  273. package/dist/components/GrFileUpload/index.js +2 -2
  274. package/dist/components/GrForm/chunks/{GrForm-CAlJg-wb.js → GrForm-CrnfCsgj.js} +8 -2
  275. package/dist/components/GrForm/chunks/GrForm-CrnfCsgj.js.map +1 -0
  276. package/dist/components/GrForm/index.js +1 -1
  277. package/dist/components/GrFormField/chunks/GrFormField-DSylU7IU.js.map +1 -1
  278. package/dist/components/GrFormField/index.js +1 -1
  279. package/dist/components/GrFormFile/chunks/{GrFormFile-DhVkB2gm.js → GrFormFile-ChdKlN83.js} +3 -3
  280. package/dist/components/GrFormFile/chunks/{GrFormFile-DhVkB2gm.js.map → GrFormFile-ChdKlN83.js.map} +1 -1
  281. package/dist/components/GrFormFile/index.js +2 -2
  282. package/dist/components/GrFormSection/chunks/{GrFormSection-CdGWvzXO.js → GrFormSection-ejieOg9H.js} +1 -1
  283. package/dist/components/GrFormSection/chunks/{GrFormSection-CdGWvzXO.js.map → GrFormSection-ejieOg9H.js.map} +1 -1
  284. package/dist/components/GrFormSection/index.js +2 -2
  285. package/dist/components/GrIcon/chunks/{GrIcon-bQwtZtYT.js → GrIcon-Bn1XEriL.js} +1 -1
  286. package/dist/components/GrIcon/chunks/GrIcon-Bn1XEriL.js.map +1 -0
  287. package/dist/components/GrIcon/index.js +2 -2
  288. package/dist/components/GrImageViewer/chunks/{GrImageViewer-ng7el4wn.js → GrImageViewer-COUcpOgR.js} +2 -2
  289. package/dist/components/GrImageViewer/chunks/GrImageViewer-COUcpOgR.js.map +1 -0
  290. package/dist/components/GrImageViewer/index.js +2 -2
  291. package/dist/components/GrInput/chunks/{GrInput-Bb_pxqpT.js → GrInput-c53iltz0.js} +1 -1
  292. package/dist/components/GrInput/chunks/{GrInput-Bb_pxqpT.js.map → GrInput-c53iltz0.js.map} +1 -1
  293. package/dist/components/GrInput/index.js +2 -2
  294. package/dist/components/GrInputTag/chunks/{GrInputTag-UI8kIB_F.js → GrInputTag-LP3smqOv.js} +46 -49
  295. package/dist/components/GrInputTag/chunks/GrInputTag-LP3smqOv.js.map +1 -0
  296. package/dist/components/GrInputTag/index.js +2 -2
  297. package/dist/components/GrJsonViewer/chunks/{GrJsonViewer-jk3ylOTc.js → GrJsonViewer-ClTvjlFx.js} +4 -4
  298. package/dist/components/GrJsonViewer/chunks/{GrJsonViewer-jk3ylOTc.js.map → GrJsonViewer-ClTvjlFx.js.map} +1 -1
  299. package/dist/components/GrJsonViewer/index.js +2 -2
  300. package/dist/components/GrKbd/chunks/{GrKbd-BXbhsH0M.js → GrKbd-D2ga1H9i.js} +1 -1
  301. package/dist/components/GrKbd/chunks/{GrKbd-BXbhsH0M.js.map → GrKbd-D2ga1H9i.js.map} +1 -1
  302. package/dist/components/GrKbd/index.js +2 -2
  303. package/dist/components/GrLink/chunks/{GrLink-BQb7U4so.js → GrLink-DAGCFYO7.js} +2 -2
  304. package/dist/components/GrLink/chunks/GrLink-DAGCFYO7.js.map +1 -0
  305. package/dist/components/GrLink/index.js +2 -2
  306. package/dist/components/GrList/chunks/{GrList-B5bclmHV.js → GrList-DrXrKU37.js} +3 -3
  307. package/dist/components/GrList/chunks/GrList-DrXrKU37.js.map +1 -0
  308. package/dist/components/GrList/index.js +2 -2
  309. package/dist/components/GrList/styles.css +1 -1
  310. package/dist/components/GrLoading/chunks/{GrLoading-DeBFTvFX.js → GrLoading-DDD8WAIH.js} +2 -2
  311. package/dist/components/GrLoading/chunks/{GrLoading-DeBFTvFX.js.map → GrLoading-DDD8WAIH.js.map} +1 -1
  312. package/dist/components/GrLoading/index.js +2 -2
  313. package/dist/components/GrModal/index.js +1 -1
  314. package/dist/components/GrNavbar/chunks/{GrNavbar-DPj30sHX.js → GrNavbar-DhswlYyh.js} +3 -3
  315. package/dist/components/GrNavbar/chunks/{GrNavbar-DPj30sHX.js.map → GrNavbar-DhswlYyh.js.map} +1 -1
  316. package/dist/components/GrNavbar/index.js +2 -2
  317. package/dist/components/GrNumberInput/chunks/{GrNumberInput-V2mZvDDC.js → GrNumberInput-Daud9Jdm.js} +3 -14
  318. package/dist/components/GrNumberInput/chunks/GrNumberInput-Daud9Jdm.js.map +1 -0
  319. package/dist/components/GrNumberInput/index.js +2 -2
  320. package/dist/components/GrPagination/chunks/{GrPagination-DG7kp6VL.js → GrPagination-CaNTZc-v.js} +3 -3
  321. package/dist/components/GrPagination/chunks/{GrPagination-DG7kp6VL.js.map → GrPagination-CaNTZc-v.js.map} +1 -1
  322. package/dist/components/GrPagination/index.js +2 -2
  323. package/dist/components/GrPopover/chunks/{GrPopover-DDChM1jD.js → GrPopover-CofG-Tfe.js} +16 -8
  324. package/dist/components/GrPopover/chunks/GrPopover-CofG-Tfe.js.map +1 -0
  325. package/dist/components/GrPopover/index.js +2 -2
  326. package/dist/components/GrProgressBar/index.js +1 -1
  327. package/dist/components/GrProgressCircle/chunks/{GrProgressCircle-BeUx1g1f.js → GrProgressCircle-D3yWXYDa.js} +1 -1
  328. package/dist/components/GrProgressCircle/chunks/{GrProgressCircle-BeUx1g1f.js.map → GrProgressCircle-D3yWXYDa.js.map} +1 -1
  329. package/dist/components/GrProgressCircle/index.js +2 -2
  330. package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-BGuMUzlv.js → GrPromptDialog-DMhALhSS.js} +6 -6
  331. package/dist/components/GrPromptDialog/chunks/GrPromptDialog-DMhALhSS.js.map +1 -0
  332. package/dist/components/GrPromptDialog/index.js +1 -1
  333. package/dist/components/GrRadio/chunks/{GrRadio-BdhknbO8.js → GrRadio-C_rESc5g.js} +1 -1
  334. package/dist/components/GrRadio/chunks/GrRadio-C_rESc5g.js.map +1 -0
  335. package/dist/components/GrRadio/index.js +2 -2
  336. package/dist/components/GrRadioGroup/chunks/{GrRadioGroup-7w4bXIg_.js → GrRadioGroup-CdQO4G-U.js} +2 -2
  337. package/dist/components/GrRadioGroup/chunks/{GrRadioGroup-7w4bXIg_.js.map → GrRadioGroup-CdQO4G-U.js.map} +1 -1
  338. package/dist/components/GrRadioGroup/index.js +1 -1
  339. package/dist/components/GrRating/chunks/{GrRating-BSEtaibx.js → GrRating-IEiTOdnF.js} +1 -1
  340. package/dist/components/GrRating/chunks/{GrRating-BSEtaibx.js.map → GrRating-IEiTOdnF.js.map} +1 -1
  341. package/dist/components/GrRating/index.js +2 -2
  342. package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-DA4q90Zt.js → GrResponseErrorBanner-C_skObtv.js} +1 -1
  343. package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-DA4q90Zt.js.map → GrResponseErrorBanner-C_skObtv.js.map} +1 -1
  344. package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-BhP-xw2P.js → GrResponseErrorBanner-DudGc9LO.js} +4 -4
  345. package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-BhP-xw2P.js.map → GrResponseErrorBanner-DudGc9LO.js.map} +1 -1
  346. package/dist/components/GrResponseErrorBanner/index.js +2 -2
  347. package/dist/components/GrSegmented/chunks/{GrSegmented-DKpo3cnC.js → GrSegmented-CB-VR-yL.js} +1 -1
  348. package/dist/components/GrSegmented/chunks/{GrSegmented-DKpo3cnC.js.map → GrSegmented-CB-VR-yL.js.map} +1 -1
  349. package/dist/components/GrSegmented/index.js +2 -2
  350. package/dist/components/GrSelect/chunks/{GrSelect-BA1wfX3c.js → GrSelect-BE1VNTiY.js} +96 -89
  351. package/dist/components/GrSelect/chunks/GrSelect-BE1VNTiY.js.map +1 -0
  352. package/dist/components/GrSelect/index.js +2 -2
  353. package/dist/components/GrSelect/styles.css +1 -1
  354. package/dist/components/GrSidebar/chunks/{GrSidebar-DY-LgIbS.js → GrSidebar-DxPhIiWs.js} +3 -3
  355. package/dist/components/GrSidebar/chunks/{GrSidebar-DY-LgIbS.js.map → GrSidebar-DxPhIiWs.js.map} +1 -1
  356. package/dist/components/GrSidebar/index.js +2 -2
  357. package/dist/components/GrSlider/chunks/{GrSlider-s99yAyz6.js → GrSlider-DJfeEl4h.js} +5 -4
  358. package/dist/components/GrSlider/chunks/GrSlider-DJfeEl4h.js.map +1 -0
  359. package/dist/components/GrSlider/index.js +2 -2
  360. package/dist/components/GrSortableList/chunks/{GrSortableList-BMXyxmRc.js → GrSortableList-DGs3Pi2J.js} +2 -2
  361. package/dist/components/GrSortableList/chunks/{GrSortableList-BMXyxmRc.js.map → GrSortableList-DGs3Pi2J.js.map} +1 -1
  362. package/dist/components/GrSortableList/index.js +2 -2
  363. package/dist/components/GrSplitter/chunks/{GrSplitter-B9_JrT7q.js → GrSplitter-MltjaADn.js} +1 -1
  364. package/dist/components/GrSplitter/chunks/{GrSplitter-B9_JrT7q.js.map → GrSplitter-MltjaADn.js.map} +1 -1
  365. package/dist/components/GrSplitter/index.js +2 -2
  366. package/dist/components/GrStatistic/chunks/{GrStatistic-BJQv5aOS.js → GrStatistic-qHVasK37.js} +2 -2
  367. package/dist/components/GrStatistic/chunks/GrStatistic-qHVasK37.js.map +1 -0
  368. package/dist/components/GrStatistic/index.js +2 -2
  369. package/dist/components/GrSteps/chunks/{GrSteps-Cce4rfr3.js → GrSteps-C2jxpZoN.js} +1 -1
  370. package/dist/components/GrSteps/chunks/{GrSteps-Cce4rfr3.js.map → GrSteps-C2jxpZoN.js.map} +1 -1
  371. package/dist/components/GrSteps/index.js +2 -2
  372. package/dist/components/GrSwitch/chunks/{GrSwitch-CHiIj9GT.js → GrSwitch-KRlRMwgp.js} +1 -1
  373. package/dist/components/GrSwitch/chunks/{GrSwitch-CHiIj9GT.js.map → GrSwitch-KRlRMwgp.js.map} +1 -1
  374. package/dist/components/GrSwitch/index.js +2 -2
  375. package/dist/components/GrTabPanels/chunks/GrTabPanels-BZQS8-JM.js.map +1 -1
  376. package/dist/components/GrTable/chunks/{GrTable-f3qCWa99.js → GrTable-Zcdz2St_.js} +1 -1
  377. package/dist/components/GrTable/chunks/GrTable-Zcdz2St_.js.map +1 -0
  378. package/dist/components/GrTable/index.js +2 -2
  379. package/dist/components/GrTabs/chunks/{GrTabs-CBHZkOFY.js → GrTabs-ugDnkk-2.js} +2 -2
  380. package/dist/components/GrTabs/chunks/{GrTabs-CBHZkOFY.js.map → GrTabs-ugDnkk-2.js.map} +1 -1
  381. package/dist/components/GrTabs/index.js +2 -2
  382. package/dist/components/GrTextarea/chunks/{GrTextarea-CNnkcIG1.js → GrTextarea-KREK75Bu.js} +1 -1
  383. package/dist/components/GrTextarea/chunks/{GrTextarea-CNnkcIG1.js.map → GrTextarea-KREK75Bu.js.map} +1 -1
  384. package/dist/components/GrTextarea/index.js +2 -2
  385. package/dist/components/GrTimeline/chunks/{GrTimeline-DIDdkTn7.js → GrTimeline-BiHpArsg.js} +1 -1
  386. package/dist/components/GrTimeline/chunks/{GrTimeline-DIDdkTn7.js.map → GrTimeline-BiHpArsg.js.map} +1 -1
  387. package/dist/components/GrTimeline/index.js +2 -2
  388. package/dist/components/GrToaster/chunks/{GrToaster-CC49q3a4.js → GrToaster-CUi3ldJ0.js} +6 -6
  389. package/dist/components/GrToaster/chunks/GrToaster-CUi3ldJ0.js.map +1 -0
  390. package/dist/components/GrToaster/index.js +2 -2
  391. package/dist/components/GrToaster/styles.css +1 -1
  392. package/dist/components/GrTooltip/chunks/{GrTooltip-B6AwE_UX.js → GrTooltip-BKFjqu0E.js} +4 -4
  393. package/dist/components/GrTooltip/chunks/GrTooltip-BKFjqu0E.js.map +1 -0
  394. package/dist/components/GrTooltip/index.js +2 -2
  395. package/dist/components/GrTree/chunks/{GrTree-J5q8aCya.js → GrTree-D5ozu6U4.js} +15 -25
  396. package/dist/components/GrTree/chunks/GrTree-D5ozu6U4.js.map +1 -0
  397. package/dist/components/GrTree/index.js +1 -1
  398. package/dist/components/GrTree/styles.css +1 -1
  399. package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-DEfxWAc3.js → GrTreeSelect-Db_uKdNa.js} +18 -10
  400. package/dist/components/GrTreeSelect/chunks/GrTreeSelect-Db_uKdNa.js.map +1 -0
  401. package/dist/components/GrTreeSelect/index.js +2 -2
  402. package/dist/components/GrValue/chunks/{GrValue-CZsuZ4x-.js → GrValue-ezkQM05Q.js} +1 -1
  403. package/dist/components/GrValue/chunks/{GrValue-CZsuZ4x-.js.map → GrValue-ezkQM05Q.js.map} +1 -1
  404. package/dist/components/GrValue/index.js +2 -2
  405. package/dist/directives/loading.js +1 -1
  406. package/dist/granular-provider-node.js +1 -1
  407. package/dist/granular-provider.js +1 -1
  408. package/dist/index.js +143 -143
  409. package/dist/styles/tokens.css +11 -0
  410. package/dist/theme.js +1 -1
  411. package/dist/tokens.js +1 -1
  412. package/dist/types/components/GrAutocomplete/GrAutocomplete.vue.d.ts +4 -3
  413. package/dist/types/components/GrAutocomplete/grAutocompleteStyles.d.ts +2 -2
  414. package/dist/types/components/GrBadge/GrBadge.vue.d.ts +3 -3
  415. package/dist/types/components/GrBadgeWrap/GrBadgeWrap.vue.d.ts +3 -3
  416. package/dist/types/components/GrBadgeWrap/grBadgeWrapStyles.d.ts +1 -1
  417. package/dist/types/components/GrBottomNav/grBottomNavStyles.d.ts +1 -1
  418. package/dist/types/components/GrButton/GrButton.vue.d.ts +7 -7
  419. package/dist/types/components/GrButtonGroup/GrButtonGroup.vue.d.ts +3 -3
  420. package/dist/types/components/GrCard/GrCard.vue.d.ts +7 -9
  421. package/dist/types/components/GrCheckbox/GrCheckbox.vue.d.ts +1 -1
  422. package/dist/types/components/GrCheckboxGroup/GrCheckboxGroup.vue.d.ts +1 -1
  423. package/dist/types/components/GrChip/GrChip.vue.d.ts +19 -1
  424. package/dist/types/components/GrChip/grChipStyles.d.ts +10 -6
  425. package/dist/types/components/GrChipGroup/GrChipGroup.vue.d.ts +2 -2
  426. package/dist/types/components/GrCollapse/GrCollapseItem.vue.d.ts +9 -11
  427. package/dist/types/components/GrColorPicker/GrColorPicker.vue.d.ts +1 -1
  428. package/dist/types/components/GrCommandPalette/GrCommandPalette.vue.d.ts +13 -13
  429. package/dist/types/components/GrCommandPalette/grCommandPaletteStyles.d.ts +5 -5
  430. package/dist/types/components/GrConfigProvider/GrConfigProvider.vue.d.ts +3 -3
  431. package/dist/types/components/GrConfirmDialog/GrConfirmDialog.vue.d.ts +9 -9
  432. package/dist/types/components/GrContextMenu/GrContextMenu.vue.d.ts +9 -9
  433. package/dist/types/components/GrDataTable/GrDataTable.vue.d.ts +9 -17
  434. package/dist/types/components/GrDescriptionList/GrDescriptionList.vue.d.ts +16 -13
  435. package/dist/types/components/GrDialog/GrDialogFooter.vue.d.ts +3 -3
  436. package/dist/types/components/GrDivider/GrDivider.vue.d.ts +3 -3
  437. package/dist/types/components/GrDrawer/grDrawerStyles.d.ts +1 -1
  438. package/dist/types/components/GrDropdown/GrDropdown.vue.d.ts +16 -20
  439. package/dist/types/components/GrDropdownMenu/GrDropdownMenu.vue.d.ts +16 -19
  440. package/dist/types/components/GrDropdownMenu/GrDropdownMenuColumn.vue.d.ts +3 -3
  441. package/dist/types/components/GrDropdownMenu/GrDropdownMenuColumns.vue.d.ts +3 -3
  442. package/dist/types/components/GrDropdownMenu/GrDropdownMenuGroup.vue.d.ts +3 -3
  443. package/dist/types/components/GrDropdownMenu/GrDropdownMenuHeader.vue.d.ts +3 -3
  444. package/dist/types/components/GrDropdownMenu/GrDropdownMenuItem.vue.d.ts +7 -7
  445. package/dist/types/components/GrDropdownMenu/GrDropdownMenuList.vue.d.ts +3 -3
  446. package/dist/types/components/GrDropdownMenu/grDropdownMenuStyles.d.ts +3 -3
  447. package/dist/types/components/GrForm/GrForm.vue.d.ts +5 -1
  448. package/dist/types/components/GrFormField/GrFormField.vue.d.ts +11 -11
  449. package/dist/types/components/GrFormFile/GrFormFile.vue.d.ts +1 -1
  450. package/dist/types/components/GrFormSection/grFormSectionStyles.d.ts +2 -2
  451. package/dist/types/components/GrIcon/GrIcon.vue.d.ts +3 -3
  452. package/dist/types/components/GrImageViewer/GrImageViewer.vue.d.ts +6 -25
  453. package/dist/types/components/GrInput/GrInput.vue.d.ts +1 -1
  454. package/dist/types/components/GrInput/grInputStyles.d.ts +4 -4
  455. package/dist/types/components/GrInputTag/GrInputTag.vue.d.ts +2 -2
  456. package/dist/types/components/GrInputTag/grInputTagStyles.d.ts +0 -6
  457. package/dist/types/components/GrKbd/GrKbd.vue.d.ts +3 -3
  458. package/dist/types/components/GrKbd/grKbdStyles.d.ts +5 -0
  459. package/dist/types/components/GrLink/GrLink.vue.d.ts +3 -3
  460. package/dist/types/components/GrList/GrList.vue.d.ts +12 -6
  461. package/dist/types/components/GrList/GrListItem.vue.d.ts +9 -9
  462. package/dist/types/components/GrList/grListStyles.d.ts +3 -3
  463. package/dist/types/components/GrNavbar/grNavbarStyles.d.ts +1 -1
  464. package/dist/types/components/GrNumberInput/GrNumberInput.vue.d.ts +1 -1
  465. package/dist/types/components/GrNumberInput/numberInputMath.d.ts +1 -6
  466. package/dist/types/components/GrPopover/GrPopover.vue.d.ts +16 -17
  467. package/dist/types/components/GrPromptDialog/GrPromptDialog.vue.d.ts +9 -9
  468. package/dist/types/components/GrRadio/GrRadio.vue.d.ts +6 -8
  469. package/dist/types/components/GrRadioGroup/GrRadioGroup.vue.d.ts +1 -1
  470. package/dist/types/components/GrRating/GrRating.vue.d.ts +1 -1
  471. package/dist/types/components/GrSegmented/GrSegmented.vue.d.ts +1 -1
  472. package/dist/types/components/GrSelect/grSelectStyles.d.ts +1 -1
  473. package/dist/types/components/GrSidebar/GrSidebar.vue.d.ts +7 -7
  474. package/dist/types/components/GrSidebar/grSidebarStyles.d.ts +4 -4
  475. package/dist/types/components/GrSlider/GrSlider.vue.d.ts +1 -1
  476. package/dist/types/components/GrSortableList/grSortableListStyles.d.ts +2 -2
  477. package/dist/types/components/GrSplitter/GrSplitter.vue.d.ts +1 -1
  478. package/dist/types/components/GrStatistic/GrStatistic.vue.d.ts +13 -13
  479. package/dist/types/components/GrSteps/grStepsStyles.d.ts +2 -2
  480. package/dist/types/components/GrSwitch/GrSwitch.vue.d.ts +1 -1
  481. package/dist/types/components/GrTabPanels/GrTabPanel.vue.d.ts +3 -3
  482. package/dist/types/components/GrTabPanels/GrTabPanels.vue.d.ts +3 -3
  483. package/dist/types/components/GrTable/GrTable.vue.d.ts +13 -13
  484. package/dist/types/components/GrTextarea/GrTextarea.vue.d.ts +1 -1
  485. package/dist/types/components/GrTreeSelect/grTreeSelectStyles.d.ts +1 -1
  486. package/dist/types/components/shared/classTokens.d.ts +8 -0
  487. package/dist/types/components/shared/numericStep.d.ts +14 -0
  488. package/dist/types/components/shared/overlayTransition.d.ts +33 -0
  489. package/dist/web-types.json +292 -218
  490. package/package.json +2 -2
  491. package/tokens/foundation.json +41 -1
  492. package/dist/chunks/classTokens-BzazaERD.js +0 -6
  493. package/dist/chunks/classTokens-BzazaERD.js.map +0 -1
  494. package/dist/chunks/config-9PYRZlKE.js.map +0 -1
  495. package/dist/chunks/config-B4w5gBD0.js.map +0 -1
  496. package/dist/chunks/config-BEVBsvni2.js.map +0 -1
  497. package/dist/chunks/config-BN4sXYXn.js.map +0 -1
  498. package/dist/chunks/config-BViooYNv.js.map +0 -1
  499. package/dist/chunks/config-B_qi4Fma.js.map +0 -1
  500. package/dist/chunks/config-Baj7Wvx-.js.map +0 -1
  501. package/dist/chunks/config-BbY2SKGE.js.map +0 -1
  502. package/dist/chunks/config-BfsBepkH.js.map +0 -1
  503. package/dist/chunks/config-Bpt9Xbxm.js.map +0 -1
  504. package/dist/chunks/config-BsPDQ0dS.js.map +0 -1
  505. package/dist/chunks/config-BtXRpAtq.js.map +0 -1
  506. package/dist/chunks/config-BuGlNPE92.js.map +0 -1
  507. package/dist/chunks/config-C8tVRv8i.js.map +0 -1
  508. package/dist/chunks/config-CIcynHGr.js.map +0 -1
  509. package/dist/chunks/config-CN2ULSQL.js.map +0 -1
  510. package/dist/chunks/config-CN970ZcJ.js.map +0 -1
  511. package/dist/chunks/config-COvrUfhR.js.map +0 -1
  512. package/dist/chunks/config-Cl4ST6Qd.js.map +0 -1
  513. package/dist/chunks/config-Cwd3yjRw.js.map +0 -1
  514. package/dist/chunks/config-D7zgE_Gr.js.map +0 -1
  515. package/dist/chunks/config-D94Z9po5.js.map +0 -1
  516. package/dist/chunks/config-DAX8Deh1.js.map +0 -1
  517. package/dist/chunks/config-DBmdgoVf.js.map +0 -1
  518. package/dist/chunks/config-DCFvmHEv.js.map +0 -1
  519. package/dist/chunks/config-DGWFal5h.js.map +0 -1
  520. package/dist/chunks/config-DKdlqXiY.js.map +0 -1
  521. package/dist/chunks/config-DSJY6aEl.js.map +0 -1
  522. package/dist/chunks/config-DWN4x6_e.js.map +0 -1
  523. package/dist/chunks/config-Dgj1Q6JY.js.map +0 -1
  524. package/dist/chunks/config-Dguto_6o.js.map +0 -1
  525. package/dist/chunks/config-DtgYuGUn2.js.map +0 -1
  526. package/dist/chunks/config-rkcKArZQ.js.map +0 -1
  527. package/dist/chunks/config-vSji8w90.js.map +0 -1
  528. package/dist/chunks/config-zjeAJ4ho2.js.map +0 -1
  529. package/dist/chunks/context-BfIQv7m12.js.map +0 -1
  530. package/dist/chunks/generated-CJe6hdiE.js.map +0 -1
  531. package/dist/chunks/grBadgeStyles-C1S56Alo.js.map +0 -1
  532. package/dist/chunks/grDropdownMenuStyles-D1LOkdVj.js.map +0 -1
  533. package/dist/chunks/grInputStyles-CJeMhUe5.js.map +0 -1
  534. package/dist/chunks/grKbdStyles-CeZhGQHr.js.map +0 -1
  535. package/dist/chunks/grLinkStyles-BoL8QYcV.js.map +0 -1
  536. package/dist/chunks/grPopoverStyles-Cke_BZsM.js.map +0 -1
  537. package/dist/chunks/grRadioStyles-BTjGNhtU.js.map +0 -1
  538. package/dist/chunks/grSelectStyles-eTz4uPMP.js.map +0 -1
  539. package/dist/chunks/grTextareaStyles-iOcHuVMM.js.map +0 -1
  540. package/dist/chunks/useMenuItemsFocus-OyOnIAlr.js.map +0 -1
  541. package/dist/components/GrAutocomplete/chunks/GrAutocomplete-D9c9BNFg.js.map +0 -1
  542. package/dist/components/GrBadge/chunks/GrBadge-_9rCHuE1.js.map +0 -1
  543. package/dist/components/GrBadgeWrap/chunks/GrBadgeWrap-DDoFQscR.js.map +0 -1
  544. package/dist/components/GrButton/chunks/GrButton-DCz-Wn-V.js.map +0 -1
  545. package/dist/components/GrButtonGroup/chunks/GrButtonGroup-BQo5VQ_c.js.map +0 -1
  546. package/dist/components/GrCard/chunks/GrCard-aQIjk6I9.js.map +0 -1
  547. package/dist/components/GrChip/chunks/GrChip-BnL2FedO.js.map +0 -1
  548. package/dist/components/GrCommandPalette/chunks/GrCommandPalette-BPsVN_XU.js.map +0 -1
  549. package/dist/components/GrConfirmDialog/chunks/GrConfirmDialog-CwXNLyzk.js.map +0 -1
  550. package/dist/components/GrContextMenu/chunks/GrContextMenu-BbAJholy.js.map +0 -1
  551. package/dist/components/GrDataTable/chunks/GrDataTable-NRbrXpdx.js.map +0 -1
  552. package/dist/components/GrDescriptionList/chunks/GrDescriptionList-1mICfrqX.js.map +0 -1
  553. package/dist/components/GrDialog/chunks/GrDialog-5Y5K87ss.js.map +0 -1
  554. package/dist/components/GrDivider/chunks/GrDivider-CAhm9jbE.js.map +0 -1
  555. package/dist/components/GrDropdown/chunks/GrDropdown-BfTmdPyh.js.map +0 -1
  556. package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-l5HEqzjr.js.map +0 -1
  557. package/dist/components/GrDropdownMenu/chunks/GrDropdownMenuList-BGA_xNVo.js.map +0 -1
  558. package/dist/components/GrForm/chunks/GrForm-CAlJg-wb.js.map +0 -1
  559. package/dist/components/GrIcon/chunks/GrIcon-bQwtZtYT.js.map +0 -1
  560. package/dist/components/GrImageViewer/chunks/GrImageViewer-ng7el4wn.js.map +0 -1
  561. package/dist/components/GrInputTag/chunks/GrInputTag-UI8kIB_F.js.map +0 -1
  562. package/dist/components/GrLink/chunks/GrLink-BQb7U4so.js.map +0 -1
  563. package/dist/components/GrList/chunks/GrList-B5bclmHV.js.map +0 -1
  564. package/dist/components/GrNumberInput/chunks/GrNumberInput-V2mZvDDC.js.map +0 -1
  565. package/dist/components/GrPopover/chunks/GrPopover-DDChM1jD.js.map +0 -1
  566. package/dist/components/GrPromptDialog/chunks/GrPromptDialog-BGuMUzlv.js.map +0 -1
  567. package/dist/components/GrRadio/chunks/GrRadio-BdhknbO8.js.map +0 -1
  568. package/dist/components/GrSelect/chunks/GrSelect-BA1wfX3c.js.map +0 -1
  569. package/dist/components/GrSlider/chunks/GrSlider-s99yAyz6.js.map +0 -1
  570. package/dist/components/GrStatistic/chunks/GrStatistic-BJQv5aOS.js.map +0 -1
  571. package/dist/components/GrTable/chunks/GrTable-f3qCWa99.js.map +0 -1
  572. package/dist/components/GrToaster/chunks/GrToaster-CC49q3a4.js.map +0 -1
  573. package/dist/components/GrTooltip/chunks/GrTooltip-B6AwE_UX.js.map +0 -1
  574. package/dist/components/GrTree/chunks/GrTree-J5q8aCya.js.map +0 -1
  575. package/dist/components/GrTreeSelect/chunks/GrTreeSelect-DEfxWAc3.js.map +0 -1
  576. /package/dist/chunks/{config-BuGlNPE92.js → config-BuGlNPE9.js} +0 -0
  577. /package/dist/chunks/{config-DBmdgoVf.js → config-DBmdgoVf2.js} +0 -0
  578. /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-B21QGele.js";
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 { t as GrBadge_default } from "../../GrBadge/chunks/GrBadge-_9rCHuE1.js";
19
- import { t as _plugin_vue_export_helper_default } from "../../../chunks/_plugin-vue_export-helper-BOaGB7Aw.js";
20
- import { a as autocompleteShellClass, i as autocompletePanelClasses, o as autocompleteStateClass, r as autocompleteOptionClass } from "../../../chunks/config-BbY2SKGE.js";
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: "inline-flex max-w-full items-center gap-1 align-middle" };
26
- var _hoisted_2 = { class: "truncate" };
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 _hoisted_5 = {
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 _hoisted_6 = ["aria-label"];
54
- var _hoisted_7 = {
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 _hoisted_8 = ["name", "value"];
60
- var _hoisted_9 = [
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 _hoisted_10 = ["id"];
66
- var _hoisted_11 = [
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 _hoisted_12 = { class: "flex items-center gap-2 min-w-0" };
75
- var _hoisted_13 = {
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 _hoisted_14 = { class: "truncate" };
80
- var _hoisted_15 = {
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 _hoisted_16 = {
82
+ var _hoisted_14 = {
86
83
  key: 1,
87
84
  "data-gr-autocomplete-hint": ""
88
85
  };
89
- var _hoisted_17 = {
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
- function chipRemoveButtons() {
551
- return [...rootEl.value?.querySelectorAll("[data-gr-autocomplete-chip-remove]") ?? []];
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 buttons = chipRemoveButtons();
555
- if (!buttons.length) {
571
+ const last = selectedOptions.value.length - 1;
572
+ if (last < 0) {
556
573
  focusInput();
557
574
  return;
558
575
  }
559
- buttons[Math.min(Math.max(index, 0), buttons.length - 1)].focus();
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(GrBadge_default, {
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: __props.tagSize,
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, [createElementVNode("span", _hoisted_2, toDisplayString(option.label), 1), !locked.value ? (openBlock(), createElementBlock("button", {
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, _hoisted_4),
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", _hoisted_5, [createVNode(unref(loader_circle_default), {
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, _hoisted_6)) : (openBlock(), createElementBlock("span", _hoisted_7, [createVNode(unref(chevron_down_default), {
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, _hoisted_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": "transition ease-[var(--gr-ease-out)] duration-[var(--gr-duration-fast)]",
769
- "enter-from-class": "transform opacity-0 scale-95",
770
- "enter-to-class": "transform opacity-100 scale-100",
771
- "leave-active-class": "transition ease-[var(--gr-ease-in)] duration-[var(--gr-duration-fast)]",
772
- "leave-from-class": "transform opacity-100 scale-100",
773
- "leave-to-class": "transform opacity-0 scale-95"
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, _hoisted_10)) : createCommentVNode("", true), (openBlock(true), createElementBlock(Fragment, null, renderList(renderedOptions.value, ({ option, index: optionIndex }) => {
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", _hoisted_12, [createElementVNode("span", _hoisted_13, [isSelected(option.value) ? (openBlock(), createBlock(unref(check_default), {
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", _hoisted_14, toDisplayString(option.label), 1)])], true)], 16, _hoisted_11);
839
- }), 128))], 14, _hoisted_9)) : createCommentVNode("", true), isLoading.value || belowMinQuery.value || showEmpty.value ? (openBlock(), createElementBlock("div", {
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", _hoisted_15, [renderSlot(_ctx.$slots, "loading", {}, () => [createVNode(unref(loader_circle_default), {
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", _hoisted_16, toDisplayString(resolvedTypeMoreText.value), 1)) : (openBlock(), createElementBlock("span", _hoisted_17, [renderSlot(_ctx.$slots, "empty", {}, () => [createTextVNode(toDisplayString(resolvedNoResultsText.value), 1)], true)]))], 2)) : createCommentVNode("", true)], 2)], 16), [[vShow, unref(open)]])]),
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
- })], 8, ["to", "disabled"]))
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-06fe398b"]]);
865
+ }), [["__scopeId", "data-v-c2307e4c"]]);
859
866
  //#endregion
860
867
  export { GrAutocomplete_default as t };