@feugene/granularity 0.10.0 → 0.11.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 (442) hide show
  1. package/README.md +44 -45
  2. package/dist/GrButtonGroup.css +1 -1
  3. package/dist/GrFormFile.css +1 -1
  4. package/dist/GrIcon.css +1 -1
  5. package/dist/GrLoading.css +1 -1
  6. package/dist/GrSkeleton.css +1 -1
  7. package/dist/GrToaster.css +1 -0
  8. package/dist/GrTree.css +1 -1
  9. package/dist/chunks/{adapter-BqqjEZGU.js.map → adapter-CAOxmn2G.js.map} +1 -1
  10. package/dist/chunks/arrow-up-C_G4jg8M.js.map +1 -0
  11. package/dist/chunks/{classTokens-BPeBXNzu.js.map → classTokens-BzazaERD.js.map} +1 -1
  12. package/dist/chunks/{config-A-iei0Ux.js → config-1uSYl98Y.js} +5 -5
  13. package/dist/chunks/{config-A-iei0Ux.js.map → config-1uSYl98Y.js.map} +1 -1
  14. package/dist/chunks/{config-DZrlovR42.js.map → config-8Pcutu1j2.js.map} +1 -1
  15. package/dist/chunks/{config-VJuoznpH.js.map → config-B0qIpo8m.js.map} +1 -1
  16. package/dist/chunks/{config-C8MM2Dg0.js → config-B7IIWGt_2.js} +3 -3
  17. package/dist/chunks/config-B7IIWGt_2.js.map +1 -0
  18. package/dist/chunks/{config-DbghHyY_.js.map → config-BEegFP74.js.map} +1 -1
  19. package/dist/chunks/{config-D_Pafsjq2.js → config-BIRO0vDJ2.js} +6 -6
  20. package/dist/chunks/{config-D_Pafsjq2.js.map → config-BIRO0vDJ2.js.map} +1 -1
  21. package/dist/chunks/{config-BeBsN0c12.js.map → config-BLHqZhy-2.js.map} +1 -1
  22. package/dist/chunks/{config-BV4vBzdm.js.map → config-BNu8lFQB.js.map} +1 -1
  23. package/dist/chunks/config-BOlr7qw7.js +106 -0
  24. package/dist/chunks/config-BOlr7qw7.js.map +1 -0
  25. package/dist/chunks/{config-DhQc1TRY.js.map → config-BUHuGBik.js.map} +1 -1
  26. package/dist/chunks/{config-CPSdAjUi.js.map → config-BWGGp7uV.js.map} +1 -1
  27. package/dist/chunks/config-BX1JTrkV2.js +14 -0
  28. package/dist/chunks/config-BX1JTrkV2.js.map +1 -0
  29. package/dist/chunks/{config-BduXEXjt.js.map → config-BXtAmU3s.js.map} +1 -1
  30. package/dist/chunks/{config-CzgNEHKi.js.map → config-Bah4oHwL.js.map} +1 -1
  31. package/dist/chunks/{config-C_egzT_K.js → config-C49QUoJL.js} +3 -3
  32. package/dist/chunks/{config-C_egzT_K.js.map → config-C49QUoJL.js.map} +1 -1
  33. package/dist/chunks/{config-3I3vqDW4.js → config-C4snOIXg.js} +1 -1
  34. package/dist/chunks/{config-3I3vqDW4.js.map → config-C4snOIXg.js.map} +1 -1
  35. package/dist/chunks/{config-DvDNney3.js → config-C7NpDrfO.js} +5 -5
  36. package/dist/chunks/{config-DvDNney3.js.map → config-C7NpDrfO.js.map} +1 -1
  37. package/dist/chunks/{config-lMDE_8A5.js.map → config-C86UzUYf.js.map} +1 -1
  38. package/dist/chunks/{config-BgBWt9-A.js.map → config-C9AcVDkv.js.map} +1 -1
  39. package/dist/chunks/{config-BuoIngj32.js.map → config-CGHLoBlH2.js.map} +1 -1
  40. package/dist/chunks/{config-ChQxl75m.js.map → config-CThzliFi.js.map} +1 -1
  41. package/dist/chunks/{config-DDwBSoc_.js.map → config-Cb2PAlSD.js.map} +1 -1
  42. package/dist/chunks/{config-XspHtPsU.js → config-ClhKPJvg.js} +5 -5
  43. package/dist/chunks/{config-XspHtPsU.js.map → config-ClhKPJvg.js.map} +1 -1
  44. package/dist/chunks/{config-58Mj2rGH.js → config-Cpi9Mh2J.js} +3 -3
  45. package/dist/chunks/{config-58Mj2rGH.js.map → config-Cpi9Mh2J.js.map} +1 -1
  46. package/dist/chunks/{config-nrOj9p6I.js → config-CrG1XiE7.js} +4 -4
  47. package/dist/chunks/{config-nrOj9p6I.js.map → config-CrG1XiE7.js.map} +1 -1
  48. package/dist/chunks/{config-DRpkoSvq.js → config-CziwTDDL.js} +3 -3
  49. package/dist/chunks/{config-DRpkoSvq.js.map → config-CziwTDDL.js.map} +1 -1
  50. package/dist/chunks/{config-C5-ujXCI.js.map → config-D7GZO-Dx.js.map} +1 -1
  51. package/dist/chunks/{config-CUwF4E4R.js.map → config-DBmdgoVf.js.map} +1 -1
  52. package/dist/chunks/{config-C9MblwGq.js.map → config-DICOd-2X.js.map} +1 -1
  53. package/dist/chunks/{config-C6zT56Jc2.js → config-DUcu1D68.js} +3 -3
  54. package/dist/chunks/config-DUcu1D68.js.map +1 -0
  55. package/dist/chunks/{config-8f8624RN.js → config-D_R56_gT.js} +5 -5
  56. package/dist/chunks/{config-8f8624RN.js.map → config-D_R56_gT.js.map} +1 -1
  57. package/dist/chunks/{config-RjfJFv1Y.js → config-DezDih8_.js} +4 -4
  58. package/dist/chunks/config-DezDih8_.js.map +1 -0
  59. package/dist/chunks/{config-B0uUCaJW.js → config-DnvPqu4g.js} +3 -3
  60. package/dist/chunks/{config-B0uUCaJW.js.map → config-DnvPqu4g.js.map} +1 -1
  61. package/dist/chunks/{config-BLa1TEGm2.js.map → config-DpqOnJiz2.js.map} +1 -1
  62. package/dist/chunks/{config-V3LF-b_F.js.map → config-Dxuwwepq.js.map} +1 -1
  63. package/dist/chunks/{config-Doa_gU40.js.map → config-HZto2PVy.js.map} +1 -1
  64. package/dist/chunks/{config-Dl5aZ5VR.js.map → config-JOtB4mzs.js.map} +1 -1
  65. package/dist/chunks/{config-CWTfyPNI.js.map → config-JpHA4Xx0.js.map} +1 -1
  66. package/dist/chunks/{config-DkeLkzxj2.js → config-LGrZIdaZ2.js} +1 -1
  67. package/dist/chunks/{config-DkeLkzxj2.js.map → config-LGrZIdaZ2.js.map} +1 -1
  68. package/dist/chunks/{config-B3dn-gdC.js.map → config-PFg39mYo.js.map} +1 -1
  69. package/dist/chunks/{config-CU_CBd0k.js → config-QYGvEBu5.js} +2 -2
  70. package/dist/chunks/{config-CU_CBd0k.js.map → config-QYGvEBu5.js.map} +1 -1
  71. package/dist/chunks/{config-Bh4NWWsQ.js.map → config-QaIc_gRa.js.map} +1 -1
  72. package/dist/chunks/{config-vcDVCYXo.js.map → config-U4m9PSql.js.map} +1 -1
  73. package/dist/chunks/{config-C_q_4FrU.js.map → config-ZiXWIRBX.js.map} +1 -1
  74. package/dist/chunks/{config-hSlCXHoG.js → config-eYLZYOUS2.js} +63 -63
  75. package/dist/chunks/config-eYLZYOUS2.js.map +1 -0
  76. package/dist/chunks/{config-DDUPnue12.js.map → config-ipvU0lzP2.js.map} +1 -1
  77. package/dist/chunks/{config-B61cX08u.js → config-jBp9wVv-.js} +4 -4
  78. package/dist/chunks/{config-B61cX08u.js.map → config-jBp9wVv-.js.map} +1 -1
  79. package/dist/chunks/{config-D5ek7VSi.js.map → config-xR4XVmcy.js.map} +1 -1
  80. package/dist/chunks/{dialogShared-BtXUk6Zc.js.map → dialogShared-CxW62PQE.js.map} +1 -1
  81. package/dist/chunks/en-BdtiS2d3.js +138 -0
  82. package/dist/chunks/en-BdtiS2d3.js.map +1 -0
  83. package/dist/chunks/es-BGRMZbe9.js +138 -0
  84. package/dist/chunks/es-BGRMZbe9.js.map +1 -0
  85. package/dist/chunks/{es-CISK11Nv.js → es-DBhctWg-.js} +3 -3
  86. package/dist/chunks/{es-CISK11Nv.js.map → es-DBhctWg-.js.map} +1 -1
  87. package/dist/chunks/{fileValidation-c_iBg74s.js → fileValidation-C3WFaWU2.js} +2 -1
  88. package/dist/chunks/{fileValidation-c_iBg74s.js.map → fileValidation-C3WFaWU2.js.map} +1 -1
  89. package/dist/chunks/{grBadgeStyles-Cq0hH2Ls.js → grBadgeStyles-DrycBuKT.js} +13 -13
  90. package/dist/chunks/grBadgeStyles-DrycBuKT.js.map +1 -0
  91. package/dist/chunks/grButtonStyles-C7Yga_Q1.js +191 -0
  92. package/dist/chunks/grButtonStyles-C7Yga_Q1.js.map +1 -0
  93. package/dist/chunks/{grDropdownStyles-Bqx9hOzU.js → grDropdownStyles-B_-DKytw.js} +2 -2
  94. package/dist/chunks/{grDropdownStyles-Bqx9hOzU.js.map → grDropdownStyles-B_-DKytw.js.map} +1 -1
  95. package/dist/chunks/{grLoadingStyles-DmI-SJ3i.js.map → grLoadingStyles-R5sreH__.js.map} +1 -1
  96. package/dist/chunks/{grModalStyles-FgaKqx50.js → grModalStyles-DWd3i05Q.js} +6 -6
  97. package/dist/chunks/{grModalStyles-FgaKqx50.js.map → grModalStyles-DWd3i05Q.js.map} +1 -1
  98. package/dist/chunks/{grSelectStyles-AjWWl007.js → grSelectStyles-CLK5hRd3.js} +3 -3
  99. package/dist/chunks/grSelectStyles-CLK5hRd3.js.map +1 -0
  100. package/dist/chunks/{grStyle-D-gPHdyW.js → grStyle-Blc9otAx.js} +6 -6
  101. package/dist/chunks/grStyle-Blc9otAx.js.map +1 -0
  102. package/dist/chunks/{granularityI18n-D_7jowK2.js → granularityI18n-DoV7Ca2m.js} +1 -1
  103. package/dist/chunks/{granularityI18n-D_7jowK2.js.map → granularityI18n-DoV7Ca2m.js.map} +1 -1
  104. package/dist/chunks/info-Be2OccTu.js.map +1 -0
  105. package/dist/chunks/loader-circle-CfVLz7lb.js.map +1 -0
  106. package/dist/chunks/ru-BFCnOiML.js +138 -0
  107. package/dist/chunks/ru-BFCnOiML.js.map +1 -0
  108. package/dist/chunks/{safelist-_UVzJrgE2.js → safelist-CkF4v7DC.js} +3 -3
  109. package/dist/chunks/safelist-CkF4v7DC.js.map +1 -0
  110. package/dist/chunks/{safelist-DccvJqCE.js → safelist-Do2RtzLB.js} +3 -3
  111. package/dist/chunks/{safelist-DccvJqCE.js.map → safelist-Do2RtzLB.js.map} +1 -1
  112. package/dist/chunks/shared-ChvcQgDl.js +168 -0
  113. package/dist/chunks/shared-ChvcQgDl.js.map +1 -0
  114. package/dist/chunks/{transition-mJ3PZCHH.js → transition-TLFw4KBn.js} +26 -12
  115. package/dist/chunks/{transition-mJ3PZCHH.js.map → transition-TLFw4KBn.js.map} +1 -1
  116. package/dist/chunks/useAddonMeasurement-DM0akF4C.js +65 -0
  117. package/dist/chunks/useAddonMeasurement-DM0akF4C.js.map +1 -0
  118. package/dist/chunks/useEscapeToClose-C2t_S1gh.js +27 -0
  119. package/dist/chunks/useEscapeToClose-C2t_S1gh.js.map +1 -0
  120. package/dist/chunks/{useFloating-CLtbU7eD.js → useFloating-DtM6TyE4.js} +19 -4
  121. package/dist/chunks/{useFloating-CLtbU7eD.js.map → useFloating-DtM6TyE4.js.map} +1 -1
  122. package/dist/chunks/x-2KXnqxiD.js.map +1 -0
  123. package/dist/chunks/x-circle-BCBURwyX.js.map +1 -0
  124. package/dist/components/GrAlert/chunks/{GrAlert-HyCjYJeL.js → GrAlert-DPJSU_fG.js} +40 -37
  125. package/dist/components/GrAlert/chunks/GrAlert-DPJSU_fG.js.map +1 -0
  126. package/dist/components/GrAlert/index.js +2 -2
  127. package/dist/components/GrAvatar/chunks/{GrAvatar-BjnPKNAL.js → GrAvatar-96CpTCq5.js} +2 -2
  128. package/dist/components/GrAvatar/chunks/{GrAvatar-BjnPKNAL.js.map → GrAvatar-96CpTCq5.js.map} +1 -1
  129. package/dist/components/GrAvatar/index.js +2 -2
  130. package/dist/components/GrBadge/chunks/{GrBadge-Cs_cVfuO.js → GrBadge-B77XlaqE.js} +3 -3
  131. package/dist/components/GrBadge/chunks/{GrBadge-Cs_cVfuO.js.map → GrBadge-B77XlaqE.js.map} +1 -1
  132. package/dist/components/GrBadge/index.js +2 -2
  133. package/dist/components/GrBadgeWrap/chunks/{GrBadgeWrap-BEnE9DyJ.js → GrBadgeWrap-CcktMOdg.js} +2 -2
  134. package/dist/components/GrBadgeWrap/chunks/{GrBadgeWrap-BEnE9DyJ.js.map → GrBadgeWrap-CcktMOdg.js.map} +1 -1
  135. package/dist/components/GrBadgeWrap/index.js +2 -2
  136. package/dist/components/GrBottomNav/chunks/{GrBottomNav-XPHwd7UQ.js.map → GrBottomNav-usuMgG8_.js.map} +1 -1
  137. package/dist/components/GrBottomNav/index.js +2 -2
  138. package/dist/components/GrButton/chunks/GrButton-BlffdeJr.js +124 -0
  139. package/dist/components/GrButton/chunks/GrButton-BlffdeJr.js.map +1 -0
  140. package/dist/components/GrButton/index.js +4 -4
  141. package/dist/components/GrButtonGroup/chunks/{GrButtonGroup-CPOH6V-P.js → GrButtonGroup-Bs9dEKfA.js} +1 -1
  142. package/dist/components/GrButtonGroup/chunks/GrButtonGroup-Bs9dEKfA.js.map +1 -0
  143. package/dist/components/GrButtonGroup/index.js +2 -2
  144. package/dist/components/GrCard/chunks/{GrCard-6yk1RRAQ.js → GrCard-DUNMkuHW.js} +3 -3
  145. package/dist/components/GrCard/chunks/GrCard-DUNMkuHW.js.map +1 -0
  146. package/dist/components/GrCard/index.js +2 -2
  147. package/dist/components/GrCheckbox/chunks/{GrCheckbox-Bt3d7ckE.js → GrCheckbox-DJhzZZdO.js} +66 -18
  148. package/dist/components/GrCheckbox/chunks/GrCheckbox-DJhzZZdO.js.map +1 -0
  149. package/dist/components/GrCheckbox/index.js +2 -2
  150. package/dist/components/GrCollapse/chunks/{GrCollapse-CU94BTAR.js → GrCollapse-CPPLh_xU.js} +12 -12
  151. package/dist/components/GrCollapse/chunks/{GrCollapse-CU94BTAR.js.map → GrCollapse-CPPLh_xU.js.map} +1 -1
  152. package/dist/components/GrCollapse/index.js +2 -2
  153. package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-Bi2KLumL.js → GrConfirmDialog-BWYKCsHd.js} +20 -14
  154. package/dist/components/GrConfirmDialog/chunks/GrConfirmDialog-BWYKCsHd.js.map +1 -0
  155. package/dist/components/GrConfirmDialog/index.js +2 -2
  156. package/dist/components/GrDataTable/chunks/{GrDataTable-ClcYiyc8.js → GrDataTable-ptbARmJ3.js} +7 -7
  157. package/dist/components/GrDataTable/chunks/{GrDataTable-ClcYiyc8.js.map → GrDataTable-ptbARmJ3.js.map} +1 -1
  158. package/dist/components/GrDataTable/index.js +2 -2
  159. package/dist/components/GrDialog/chunks/{GrDialog-CxK4Lj4F.js → GrDialog-5DAS-1Lb.js} +14 -12
  160. package/dist/components/GrDialog/chunks/GrDialog-5DAS-1Lb.js.map +1 -0
  161. package/dist/components/GrDialog/index.js +3 -3
  162. package/dist/components/GrDialogService/chunks/GrDialogService-DY_fmaMu.js +425 -0
  163. package/dist/components/GrDialogService/chunks/GrDialogService-DY_fmaMu.js.map +1 -0
  164. package/dist/components/GrDialogService/index.js +3 -0
  165. package/dist/components/GrDrawer/chunks/{GrDrawer-BW3wtI7h.js → GrDrawer-D1kzsjXN.js} +19 -15
  166. package/dist/components/GrDrawer/chunks/GrDrawer-D1kzsjXN.js.map +1 -0
  167. package/dist/components/GrDrawer/index.js +2 -2
  168. package/dist/components/GrDropdown/chunks/{GrDropdown-BGKeEfZ1.js → GrDropdown-BXb5Cxxf.js} +9 -19
  169. package/dist/components/GrDropdown/chunks/GrDropdown-BXb5Cxxf.js.map +1 -0
  170. package/dist/components/GrDropdown/index.js +2 -2
  171. package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu-CJom_-c2.js → GrDropdownMenu-DFEJLPcV.js} +10 -10
  172. package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu-CJom_-c2.js.map → GrDropdownMenu-DFEJLPcV.js.map} +1 -1
  173. package/dist/components/GrDropdownMenu/index.js +2 -2
  174. package/dist/components/GrEmptyState/chunks/{GrEmptyState-yOuZW7-t.js → GrEmptyState-CA3BiTV7.js} +3 -3
  175. package/dist/components/GrEmptyState/chunks/{GrEmptyState-yOuZW7-t.js.map → GrEmptyState-CA3BiTV7.js.map} +1 -1
  176. package/dist/components/GrEmptyState/index.js +2 -2
  177. package/dist/components/GrFileUpload/chunks/{GrFileUpload-CBKK3dgC.js → GrFileUpload-DvWPpiJS.js} +26 -23
  178. package/dist/components/GrFileUpload/chunks/GrFileUpload-DvWPpiJS.js.map +1 -0
  179. package/dist/components/GrFileUpload/index.js +3 -3
  180. package/dist/components/GrFormField/chunks/{GrFormField-U7c_aDPJ.js → GrFormField-BujNQrw8.js} +1 -1
  181. package/dist/components/GrFormField/chunks/{GrFormField-U7c_aDPJ.js.map → GrFormField-BujNQrw8.js.map} +1 -1
  182. package/dist/components/GrFormField/index.js +2 -2
  183. package/dist/components/GrFormFile/chunks/{GrFormFile-CkR6cYqf.js → GrFormFile-CXcqqdvV.js} +38 -31
  184. package/dist/components/GrFormFile/chunks/GrFormFile-CXcqqdvV.js.map +1 -0
  185. package/dist/components/GrFormFile/index.js +2 -2
  186. package/dist/components/GrFormSection/chunks/{GrFormSection-dbyzqxYk.js → GrFormSection-Ce21jcgo.js} +1 -1
  187. package/dist/components/GrFormSection/chunks/{GrFormSection-dbyzqxYk.js.map → GrFormSection-Ce21jcgo.js.map} +1 -1
  188. package/dist/components/GrFormSection/index.js +2 -2
  189. package/dist/components/GrIcon/chunks/{GrIcon-BV7RBU_0.js → GrIcon-D9AWQLk2.js} +3 -3
  190. package/dist/components/GrIcon/chunks/{GrIcon-BV7RBU_0.js.map → GrIcon-D9AWQLk2.js.map} +1 -1
  191. package/dist/components/GrIcon/index.js +2 -2
  192. package/dist/components/GrImageViewer/chunks/{GrImageViewer-BG40DsHa.js → GrImageViewer-OCUIrNh2.js} +44 -33
  193. package/dist/components/GrImageViewer/chunks/GrImageViewer-OCUIrNh2.js.map +1 -0
  194. package/dist/components/GrImageViewer/index.js +2 -2
  195. package/dist/components/GrInput/chunks/{GrInput-gwFQ1sk4.js → GrInput-C8pOJgCi.js} +43 -66
  196. package/dist/components/GrInput/chunks/GrInput-C8pOJgCi.js.map +1 -0
  197. package/dist/components/GrInput/index.js +2 -2
  198. package/dist/components/GrInputTag/chunks/{GrInputTag-g-KdUI_Z.js → GrInputTag-zMgFqp2g.js} +27 -24
  199. package/dist/components/GrInputTag/chunks/GrInputTag-zMgFqp2g.js.map +1 -0
  200. package/dist/components/GrInputTag/index.js +2 -2
  201. package/dist/components/GrLink/chunks/{GrLink-KSTmk9Yq.js → GrLink-CYUe-Q8k.js} +14 -7
  202. package/dist/components/GrLink/chunks/GrLink-CYUe-Q8k.js.map +1 -0
  203. package/dist/components/GrLink/index.js +2 -2
  204. package/dist/components/GrList/chunks/{GrList-CUW2sRm_.js → GrList-Dx772Ns4.js} +1 -1
  205. package/dist/components/GrList/chunks/{GrList-CUW2sRm_.js.map → GrList-Dx772Ns4.js.map} +1 -1
  206. package/dist/components/GrList/index.js +2 -2
  207. package/dist/components/GrLoading/chunks/{GrLoading-mfyfghxs.js → GrLoading--X_7rdbb.js} +7 -7
  208. package/dist/components/GrLoading/chunks/{GrLoading-mfyfghxs.js.map → GrLoading--X_7rdbb.js.map} +1 -1
  209. package/dist/components/GrLoading/index.js +2 -2
  210. package/dist/components/GrModal/chunks/{GrModal-CSOL3fHQ.js → GrModal-BkjW9jZS.js} +7 -7
  211. package/dist/components/GrModal/chunks/{GrModal-CSOL3fHQ.js.map → GrModal-BkjW9jZS.js.map} +1 -1
  212. package/dist/components/GrModal/index.js +3 -3
  213. package/dist/components/GrNavbar/chunks/{GrNavbar-CHxwtFIR.js → GrNavbar-DW3MiIIf.js} +6 -6
  214. package/dist/components/GrNavbar/chunks/{GrNavbar-CHxwtFIR.js.map → GrNavbar-DW3MiIIf.js.map} +1 -1
  215. package/dist/components/GrNavbar/index.js +2 -2
  216. package/dist/components/GrNumberInput/chunks/{GrNumberInput-ClPBwkxx.js → GrNumberInput-CldPIWQx.js} +51 -61
  217. package/dist/components/GrNumberInput/chunks/GrNumberInput-CldPIWQx.js.map +1 -0
  218. package/dist/components/GrNumberInput/index.js +2 -2
  219. package/dist/components/GrPagination/chunks/{GrPagination-D2GS0ShQ.js → GrPagination-Bu9wv6it.js} +76 -25
  220. package/dist/components/GrPagination/chunks/GrPagination-Bu9wv6it.js.map +1 -0
  221. package/dist/components/GrPagination/index.js +2 -2
  222. package/dist/components/GrProgressBar/chunks/{GrProgressBar-BBSFpVEq.js → GrProgressBar-CC3z-Zqp.js} +3 -3
  223. package/dist/components/GrProgressBar/chunks/{GrProgressBar-BBSFpVEq.js.map → GrProgressBar-CC3z-Zqp.js.map} +1 -1
  224. package/dist/components/GrProgressBar/index.js +2 -2
  225. package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-D_TFqKsF.js → GrPromptDialog-TmWXbpEP.js} +31 -23
  226. package/dist/components/GrPromptDialog/chunks/GrPromptDialog-TmWXbpEP.js.map +1 -0
  227. package/dist/components/GrPromptDialog/index.js +2 -2
  228. package/dist/components/GrRadio/chunks/{GrRadio-CSbTnrom.js → GrRadio-CPTixXaY.js} +6 -6
  229. package/dist/components/GrRadio/chunks/{GrRadio-CSbTnrom.js.map → GrRadio-CPTixXaY.js.map} +1 -1
  230. package/dist/components/GrRadio/index.js +2 -2
  231. package/dist/components/GrRadioGroup/chunks/{GrRadioGroup-DsrnTygR.js → GrRadioGroup-vKZCbkCp.js} +3 -3
  232. package/dist/components/GrRadioGroup/chunks/{GrRadioGroup-DsrnTygR.js.map → GrRadioGroup-vKZCbkCp.js.map} +1 -1
  233. package/dist/components/GrRadioGroup/index.js +2 -2
  234. package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-K1uZ1mYD.js → GrResponseErrorBanner-BWJNe2gr.js} +21 -18
  235. package/dist/components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-BWJNe2gr.js.map +1 -0
  236. package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-bM8FC_Bw.js → GrResponseErrorBanner-Cdu9ekK9.js} +5 -5
  237. package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-bM8FC_Bw.js.map → GrResponseErrorBanner-Cdu9ekK9.js.map} +1 -1
  238. package/dist/components/GrResponseErrorBanner/index.js +2 -2
  239. package/dist/components/GrSegmented/chunks/{GrSegmented-DpZGs4VX.js → GrSegmented-C1y0UXpQ.js} +5 -5
  240. package/dist/components/GrSegmented/chunks/{GrSegmented-DpZGs4VX.js.map → GrSegmented-C1y0UXpQ.js.map} +1 -1
  241. package/dist/components/GrSegmented/index.js +2 -2
  242. package/dist/components/GrSelect/chunks/{GrSelect-DSz7jvUb.js → GrSelect-RShK21lK.js} +84 -64
  243. package/dist/components/GrSelect/chunks/GrSelect-RShK21lK.js.map +1 -0
  244. package/dist/components/GrSelect/index.js +2 -2
  245. package/dist/components/GrSidebar/chunks/GrSidebar-DkWozzwA.js +238 -0
  246. package/dist/components/GrSidebar/chunks/GrSidebar-DkWozzwA.js.map +1 -0
  247. package/dist/components/GrSidebar/index.js +3 -3
  248. package/dist/components/GrSkeleton/chunks/{GrSkeleton-B05K0QKh.js → GrSkeleton-DsN-_CDZ.js} +1 -1
  249. package/dist/components/GrSkeleton/chunks/{GrSkeleton-B05K0QKh.js.map → GrSkeleton-DsN-_CDZ.js.map} +1 -1
  250. package/dist/components/GrSkeleton/index.js +2 -2
  251. package/dist/components/GrSwitch/chunks/{GrSwitch-CSRtcN5-.js → GrSwitch-DAioyccZ.js} +10 -10
  252. package/dist/components/GrSwitch/chunks/{GrSwitch-CSRtcN5-.js.map → GrSwitch-DAioyccZ.js.map} +1 -1
  253. package/dist/components/GrSwitch/index.js +2 -2
  254. package/dist/components/GrTable/chunks/{GrTable-dTWUxzRm.js → GrTable-Db3hRnKA.js} +3 -3
  255. package/dist/components/GrTable/chunks/{GrTable-dTWUxzRm.js.map → GrTable-Db3hRnKA.js.map} +1 -1
  256. package/dist/components/GrTable/index.js +2 -2
  257. package/dist/components/GrTabs/chunks/{GrTabs-BfeVNMFJ.js → GrTabs-Z-FDJUr_.js} +3 -3
  258. package/dist/components/GrTabs/chunks/{GrTabs-BfeVNMFJ.js.map → GrTabs-Z-FDJUr_.js.map} +1 -1
  259. package/dist/components/GrTabs/index.js +2 -2
  260. package/dist/components/GrTextarea/chunks/{GrTextarea-CBBzpF2S.js → GrTextarea-D56YxhKq.js} +3 -3
  261. package/dist/components/GrTextarea/chunks/{GrTextarea-CBBzpF2S.js.map → GrTextarea-D56YxhKq.js.map} +1 -1
  262. package/dist/components/GrTextarea/index.js +2 -2
  263. package/dist/components/GrToaster/chunks/GrToaster-eI8YvnIo.js +189 -0
  264. package/dist/components/GrToaster/chunks/GrToaster-eI8YvnIo.js.map +1 -0
  265. package/dist/components/GrToaster/index.js +2 -2
  266. package/dist/components/GrTooltip/chunks/{GrTooltip-BC-40SA5.js → GrTooltip-BeyZ8ssR.js} +10 -10
  267. package/dist/components/GrTooltip/chunks/{GrTooltip-BC-40SA5.js.map → GrTooltip-BeyZ8ssR.js.map} +1 -1
  268. package/dist/components/GrTooltip/index.js +2 -2
  269. package/dist/components/GrTree/chunks/{GrTree-uZr5SyQI.js → GrTree-D3ODe2dB.js} +40 -35
  270. package/dist/components/GrTree/chunks/GrTree-D3ODe2dB.js.map +1 -0
  271. package/dist/components/GrTree/index.js +2 -2
  272. package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-CytivcCa.js → GrTreeSelect-B2xBKs5Q.js} +16 -16
  273. package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-CytivcCa.js.map → GrTreeSelect-B2xBKs5Q.js.map} +1 -1
  274. package/dist/components/GrTreeSelect/index.js +2 -2
  275. package/dist/composables/useTheme.js +48 -8
  276. package/dist/composables/useTheme.js.map +1 -1
  277. package/dist/composables/useToast.js +88 -26
  278. package/dist/composables/useToast.js.map +1 -1
  279. package/dist/directives/autofocus.js.map +1 -1
  280. package/dist/directives/autosize.js.map +1 -1
  281. package/dist/directives/clickOutside.js.map +1 -1
  282. package/dist/directives/dropzone.js +6 -5
  283. package/dist/directives/dropzone.js.map +1 -1
  284. package/dist/directives/hotkey.js +24 -7
  285. package/dist/directives/hotkey.js.map +1 -1
  286. package/dist/directives/loading.js +2 -2
  287. package/dist/directives/loading.js.map +1 -1
  288. package/dist/fileValidation/index.js +1 -1
  289. package/dist/granular-provider-node.js +7 -7
  290. package/dist/granular-provider-node.js.map +1 -1
  291. package/dist/granular-provider.js +1 -1
  292. package/dist/granular-provider.js.map +1 -1
  293. package/dist/i18n/all.js +1 -1
  294. package/dist/i18n/all.js.map +1 -1
  295. package/dist/i18n/index.js +2 -2
  296. package/dist/index.js +109 -534
  297. package/dist/index.js.map +1 -1
  298. package/dist/styles/base.css +32 -0
  299. package/dist/styles/index.css +15 -0
  300. package/dist/styles/preflight.css +29 -0
  301. package/dist/styles/themes/dark.css +107 -0
  302. package/dist/styles/themes/light.css +98 -0
  303. package/dist/styles/tokens.css +135 -0
  304. package/dist/types/src/components/GrButton/GrButton.vue.d.ts +25 -2
  305. package/dist/types/src/components/GrCheckbox/GrCheckbox.vue.d.ts +7 -2
  306. package/dist/types/src/components/GrConfirmDialog/GrConfirmDialog.vue.d.ts +8 -8
  307. package/dist/types/src/components/GrDataTable/GrDataTable.vue.d.ts +1 -1
  308. package/dist/types/src/components/GrDialog/GrDialog.vue.d.ts +2 -2
  309. package/dist/types/src/components/GrDialog/GrDialogHeader.vue.d.ts +2 -2
  310. package/dist/types/src/components/GrDrawer/GrDrawer.vue.d.ts +2 -2
  311. package/dist/types/src/components/GrFileUpload/GrFileUpload.vue.d.ts +4 -4
  312. package/dist/types/src/components/GrFormFile/GrFormFile.vue.d.ts +11 -11
  313. package/dist/types/src/components/GrImageViewer/GrImageViewer.vue.d.ts +18 -18
  314. package/dist/types/src/components/GrInput/GrInput.vue.d.ts +14 -0
  315. package/dist/types/src/components/GrInput/grInputStyles.d.ts +3 -3
  316. package/dist/types/src/components/GrInputTag/GrInputTag.vue.d.ts +2 -2
  317. package/dist/types/src/components/GrLink/GrLink.vue.d.ts +12 -6
  318. package/dist/types/src/components/GrLink/grLinkStyles.d.ts +31 -3
  319. package/dist/types/src/components/GrLink/index.d.ts +1 -1
  320. package/dist/types/src/components/GrLoading/GrLoading.vue.d.ts +1 -1
  321. package/dist/types/src/components/GrModal/grModalStyles.d.ts +1 -1
  322. package/dist/types/src/components/GrNumberInput/GrNumberInput.vue.d.ts +17 -4
  323. package/dist/types/src/components/GrPagination/GrPagination.vue.d.ts +13 -1
  324. package/dist/types/src/components/GrPromptDialog/GrPromptDialog.vue.d.ts +12 -12
  325. package/dist/types/src/components/GrSegmented/GrSegmented.vue.d.ts +1 -1
  326. package/dist/types/src/components/GrSegmented/grSegmentedStyles.d.ts +5 -5
  327. package/dist/types/src/components/GrSelect/GrSelect.vue.d.ts +1 -1
  328. package/dist/types/src/components/GrSelect/grSelectStyles.d.ts +2 -1
  329. package/dist/types/src/components/GrSidebar/GrSidebar.vue.d.ts +33 -10
  330. package/dist/types/src/components/GrSidebar/GrSidebarItem.vue.d.ts +64 -0
  331. package/dist/types/src/components/GrSidebar/index.d.ts +1 -0
  332. package/dist/types/src/components/GrSidebar/sidebarContext.d.ts +9 -0
  333. package/dist/types/src/components/GrSwitch/GrSwitch.vue.d.ts +1 -1
  334. package/dist/types/src/components/GrSwitch/grSwitchStyles.d.ts +2 -2
  335. package/dist/types/src/components/GrToaster/GrToaster.vue.d.ts +9 -4
  336. package/dist/types/src/components/GrTree/GrTree.vue.d.ts +1 -1
  337. package/dist/types/src/components/GrTreeSelect/GrTreeSelect.vue.d.ts +2 -2
  338. package/dist/types/src/components/GrTreeSelect/grTreeSelectStyles.d.ts +1 -1
  339. package/dist/types/src/components/GrTreeSelect/grTreeSelectTypes.d.ts +1 -1
  340. package/dist/types/src/composables/internal/useAddonMeasurement.d.ts +18 -0
  341. package/dist/types/src/composables/internal/useEscapeToClose.d.ts +11 -0
  342. package/dist/types/src/composables/useTheme.d.ts +5 -2
  343. package/dist/types/src/composables/useToast.d.ts +33 -1
  344. package/dist/types/src/directives/hotkey.d.ts +14 -0
  345. package/dist/types/src/granular-provider/shared.d.ts +1 -3
  346. package/dist/types/src/i18n/messages/en.d.ts +120 -0
  347. package/dist/types/src/i18n/messages/es.d.ts +120 -0
  348. package/dist/types/src/i18n/messages/ru.d.ts +120 -0
  349. package/dist/types/src/index.d.ts +2 -2
  350. package/dist/vue/index.js.map +1 -1
  351. package/dist/web-types.json +4673 -0
  352. package/package.json +26 -20
  353. package/dist/chunks/arrow-up-DZdIrpaF.js.map +0 -1
  354. package/dist/chunks/config-C6zT56Jc2.js.map +0 -1
  355. package/dist/chunks/config-C8MM2Dg0.js.map +0 -1
  356. package/dist/chunks/config-NkbzVFZo.js +0 -59
  357. package/dist/chunks/config-NkbzVFZo.js.map +0 -1
  358. package/dist/chunks/config-RjfJFv1Y.js.map +0 -1
  359. package/dist/chunks/config-hSlCXHoG.js.map +0 -1
  360. package/dist/chunks/en-B_fSdoTi.js +0 -72
  361. package/dist/chunks/en-B_fSdoTi.js.map +0 -1
  362. package/dist/chunks/es-DKP6fLir.js +0 -72
  363. package/dist/chunks/es-DKP6fLir.js.map +0 -1
  364. package/dist/chunks/grBadgeStyles-Cq0hH2Ls.js.map +0 -1
  365. package/dist/chunks/grButtonStyles-DKuXUemw.js +0 -191
  366. package/dist/chunks/grButtonStyles-DKuXUemw.js.map +0 -1
  367. package/dist/chunks/grSelectStyles-AjWWl007.js.map +0 -1
  368. package/dist/chunks/grStyle-D-gPHdyW.js.map +0 -1
  369. package/dist/chunks/info-C0bHmdZq.js.map +0 -1
  370. package/dist/chunks/loader-circle-BUntgosj.js.map +0 -1
  371. package/dist/chunks/ru-S6VlnurJ.js +0 -72
  372. package/dist/chunks/ru-S6VlnurJ.js.map +0 -1
  373. package/dist/chunks/safelist-_UVzJrgE2.js.map +0 -1
  374. package/dist/chunks/shared-DpjTvFno.js +0 -169
  375. package/dist/chunks/shared-DpjTvFno.js.map +0 -1
  376. package/dist/chunks/x-Pa6C2hwi.js.map +0 -1
  377. package/dist/chunks/x-circle-DQSlBLmX.js.map +0 -1
  378. package/dist/components/GrAlert/chunks/GrAlert-HyCjYJeL.js.map +0 -1
  379. package/dist/components/GrButton/chunks/GrButton-CPDKonoB.js +0 -83
  380. package/dist/components/GrButton/chunks/GrButton-CPDKonoB.js.map +0 -1
  381. package/dist/components/GrButtonGroup/chunks/GrButtonGroup-CPOH6V-P.js.map +0 -1
  382. package/dist/components/GrCard/chunks/GrCard-6yk1RRAQ.js.map +0 -1
  383. package/dist/components/GrCheckbox/chunks/GrCheckbox-Bt3d7ckE.js.map +0 -1
  384. package/dist/components/GrConfirmDialog/chunks/GrConfirmDialog-Bi2KLumL.js.map +0 -1
  385. package/dist/components/GrDialog/chunks/GrDialog-CxK4Lj4F.js.map +0 -1
  386. package/dist/components/GrDrawer/chunks/GrDrawer-BW3wtI7h.js.map +0 -1
  387. package/dist/components/GrDropdown/chunks/GrDropdown-BGKeEfZ1.js.map +0 -1
  388. package/dist/components/GrFileUpload/chunks/GrFileUpload-CBKK3dgC.js.map +0 -1
  389. package/dist/components/GrFormFile/chunks/GrFormFile-CkR6cYqf.js.map +0 -1
  390. package/dist/components/GrImageViewer/chunks/GrImageViewer-BG40DsHa.js.map +0 -1
  391. package/dist/components/GrInput/chunks/GrInput-gwFQ1sk4.js.map +0 -1
  392. package/dist/components/GrInputTag/chunks/GrInputTag-g-KdUI_Z.js.map +0 -1
  393. package/dist/components/GrLink/chunks/GrLink-KSTmk9Yq.js.map +0 -1
  394. package/dist/components/GrNumberInput/chunks/GrNumberInput-ClPBwkxx.js.map +0 -1
  395. package/dist/components/GrPagination/chunks/GrPagination-D2GS0ShQ.js.map +0 -1
  396. package/dist/components/GrPromptDialog/chunks/GrPromptDialog-D_TFqKsF.js.map +0 -1
  397. package/dist/components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-K1uZ1mYD.js.map +0 -1
  398. package/dist/components/GrSelect/chunks/GrSelect-DSz7jvUb.js.map +0 -1
  399. package/dist/components/GrSidebar/chunks/GrSidebar-BW8LRMZ-.js +0 -44
  400. package/dist/components/GrSidebar/chunks/GrSidebar-BW8LRMZ-.js.map +0 -1
  401. package/dist/components/GrToaster/chunks/GrToaster-C6_iHk2J.js +0 -172
  402. package/dist/components/GrToaster/chunks/GrToaster-C6_iHk2J.js.map +0 -1
  403. package/dist/components/GrTree/chunks/GrTree-uZr5SyQI.js.map +0 -1
  404. /package/dist/chunks/{_plugin-vue_export-helper-DQR7Sy7Q.js → _plugin-vue_export-helper-BOaGB7Aw.js} +0 -0
  405. /package/dist/chunks/{adapter-BqqjEZGU.js → adapter-CAOxmn2G.js} +0 -0
  406. /package/dist/chunks/{arrow-up-DZdIrpaF.js → arrow-up-C_G4jg8M.js} +0 -0
  407. /package/dist/chunks/{classTokens-BPeBXNzu.js → classTokens-BzazaERD.js} +0 -0
  408. /package/dist/chunks/{config-DZrlovR42.js → config-8Pcutu1j2.js} +0 -0
  409. /package/dist/chunks/{config-VJuoznpH.js → config-B0qIpo8m.js} +0 -0
  410. /package/dist/chunks/{config-DbghHyY_.js → config-BEegFP74.js} +0 -0
  411. /package/dist/chunks/{config-BeBsN0c12.js → config-BLHqZhy-2.js} +0 -0
  412. /package/dist/chunks/{config-BV4vBzdm.js → config-BNu8lFQB.js} +0 -0
  413. /package/dist/chunks/{config-DhQc1TRY.js → config-BUHuGBik.js} +0 -0
  414. /package/dist/chunks/{config-CPSdAjUi.js → config-BWGGp7uV.js} +0 -0
  415. /package/dist/chunks/{config-BduXEXjt.js → config-BXtAmU3s.js} +0 -0
  416. /package/dist/chunks/{config-CzgNEHKi.js → config-Bah4oHwL.js} +0 -0
  417. /package/dist/chunks/{config-lMDE_8A5.js → config-C86UzUYf.js} +0 -0
  418. /package/dist/chunks/{config-BgBWt9-A.js → config-C9AcVDkv.js} +0 -0
  419. /package/dist/chunks/{config-BuoIngj32.js → config-CGHLoBlH2.js} +0 -0
  420. /package/dist/chunks/{config-ChQxl75m.js → config-CThzliFi.js} +0 -0
  421. /package/dist/chunks/{config-DDwBSoc_.js → config-Cb2PAlSD.js} +0 -0
  422. /package/dist/chunks/{config-C5-ujXCI.js → config-D7GZO-Dx.js} +0 -0
  423. /package/dist/chunks/{config-CUwF4E4R.js → config-DBmdgoVf.js} +0 -0
  424. /package/dist/chunks/{config-C9MblwGq.js → config-DICOd-2X.js} +0 -0
  425. /package/dist/chunks/{config-BLa1TEGm2.js → config-DpqOnJiz2.js} +0 -0
  426. /package/dist/chunks/{config-V3LF-b_F.js → config-Dxuwwepq.js} +0 -0
  427. /package/dist/chunks/{config-Doa_gU40.js → config-HZto2PVy.js} +0 -0
  428. /package/dist/chunks/{config-Dl5aZ5VR.js → config-JOtB4mzs.js} +0 -0
  429. /package/dist/chunks/{config-CWTfyPNI.js → config-JpHA4Xx0.js} +0 -0
  430. /package/dist/chunks/{config-B3dn-gdC.js → config-PFg39mYo.js} +0 -0
  431. /package/dist/chunks/{config-Bh4NWWsQ.js → config-QaIc_gRa.js} +0 -0
  432. /package/dist/chunks/{config-vcDVCYXo.js → config-U4m9PSql.js} +0 -0
  433. /package/dist/chunks/{config-C_q_4FrU.js → config-ZiXWIRBX.js} +0 -0
  434. /package/dist/chunks/{config-DDUPnue12.js → config-ipvU0lzP2.js} +0 -0
  435. /package/dist/chunks/{config-D5ek7VSi.js → config-xR4XVmcy.js} +0 -0
  436. /package/dist/chunks/{dialogShared-BtXUk6Zc.js → dialogShared-CxW62PQE.js} +0 -0
  437. /package/dist/chunks/{grLoadingStyles-DmI-SJ3i.js → grLoadingStyles-R5sreH__.js} +0 -0
  438. /package/dist/chunks/{info-C0bHmdZq.js → info-Be2OccTu.js} +0 -0
  439. /package/dist/chunks/{loader-circle-BUntgosj.js → loader-circle-CfVLz7lb.js} +0 -0
  440. /package/dist/chunks/{x-Pa6C2hwi.js → x-2KXnqxiD.js} +0 -0
  441. /package/dist/chunks/{x-circle-DQSlBLmX.js → x-circle-BCBURwyX.js} +0 -0
  442. /package/dist/components/GrBottomNav/chunks/{GrBottomNav-XPHwd7UQ.js → GrBottomNav-usuMgG8_.js} +0 -0
@@ -1,12 +1,12 @@
1
- import { createElementBlock, createElementVNode, createVNode, defineComponent, markRaw, normalizeClass, openBlock, ref, renderSlot, unref, watch, withKeys, withModifiers } from "vue";
1
+ import { createBlock, createElementBlock, createElementVNode, defineComponent, markRaw, normalizeClass, onMounted, openBlock, ref, renderSlot, unref, watch, withKeys, withModifiers } from "vue";
2
2
  //#region ~icons/lucide/check
3
- var _hoisted_1$1 = {
3
+ var _hoisted_1$2 = {
4
4
  viewBox: "0 0 24 24",
5
5
  width: "1.2em",
6
6
  height: "1.2em"
7
7
  };
8
- function render$1(_ctx, _cache) {
9
- return openBlock(), createElementBlock("svg", _hoisted_1$1, [..._cache[0] || (_cache[0] = [createElementVNode("path", {
8
+ function render$2(_ctx, _cache) {
9
+ return openBlock(), createElementBlock("svg", _hoisted_1$2, [..._cache[0] || (_cache[0] = [createElementVNode("path", {
10
10
  fill: "none",
11
11
  stroke: "currentColor",
12
12
  "stroke-linecap": "round",
@@ -17,6 +17,27 @@ function render$1(_ctx, _cache) {
17
17
  }
18
18
  var check_default = markRaw({
19
19
  name: "lucide-check",
20
+ render: render$2
21
+ });
22
+ //#endregion
23
+ //#region ~icons/lucide/minus
24
+ var _hoisted_1$1 = {
25
+ viewBox: "0 0 24 24",
26
+ width: "1.2em",
27
+ height: "1.2em"
28
+ };
29
+ function render$1(_ctx, _cache) {
30
+ return openBlock(), createElementBlock("svg", _hoisted_1$1, [..._cache[0] || (_cache[0] = [createElementVNode("path", {
31
+ fill: "none",
32
+ stroke: "currentColor",
33
+ "stroke-linecap": "round",
34
+ "stroke-linejoin": "round",
35
+ "stroke-width": "2",
36
+ d: "M5 12h14"
37
+ }, null, -1)])]);
38
+ }
39
+ var minus_default = markRaw({
40
+ name: "lucide-minus",
20
41
  render: render$1
21
42
  });
22
43
  //#endregion
@@ -57,16 +78,25 @@ var GrCheckbox_default = /* @__PURE__ */ defineComponent({
57
78
  default: false
58
79
  },
59
80
  form: { default: void 0 },
60
- id: { default: void 0 }
81
+ id: { default: void 0 },
82
+ indeterminate: {
83
+ type: Boolean,
84
+ default: false
85
+ }
61
86
  },
62
87
  emits: ["update:modelValue"],
63
88
  setup(__props, { emit: __emit }) {
64
89
  /**
65
- * GrCheckbox — DS-примитив чекбокса с нативным скрытым `<input type="checkbox">`
90
+ * GrCheckbox — GR-примитив чекбокса с нативным скрытым `<input type="checkbox">`
66
91
  * для интеграции с HTML-формами (`FormData`, `required`, `form`).
67
92
  *
68
- * Клавиатура: `Space`/`Enter` переключают значение, фокус на корневом элементе.
69
- * A11y: `role="checkbox"` + `aria-checked`/`aria-disabled`.
93
+ * Источник истины нативный input: клик по нему (в т.ч. по внешнему
94
+ * `<label for="...">`) слушается через `@change` и эмитит модель. Клик по видимой
95
+ * части компонента переключает через корневой обработчик.
96
+ *
97
+ * Клавиатура: `Space` переключает значение (Enter — намеренно нет, это нестандартно
98
+ * для чекбоксов). Фокус — на корневом элементе.
99
+ * A11y: `role="checkbox"` + `aria-checked` (`true`/`false`/`mixed`) + `aria-disabled`.
70
100
  */
71
101
  const hiddenInputStyle = {
72
102
  position: "absolute",
@@ -81,9 +111,20 @@ var GrCheckbox_default = /* @__PURE__ */ defineComponent({
81
111
  watch(() => props.modelValue, (value) => {
82
112
  if (nativeInput.value && nativeInput.value.checked !== value) nativeInput.value.checked = value;
83
113
  });
84
- function toggle() {
114
+ function syncIndeterminate() {
115
+ if (nativeInput.value) nativeInput.value.indeterminate = props.indeterminate;
116
+ }
117
+ watch(() => props.indeterminate, syncIndeterminate);
118
+ onMounted(syncIndeterminate);
119
+ function setChecked(next) {
85
120
  if (props.disabled) return;
86
- emit("update:modelValue", !props.modelValue);
121
+ emit("update:modelValue", next);
122
+ }
123
+ function toggle() {
124
+ setChecked(props.indeterminate ? true : !props.modelValue);
125
+ }
126
+ function onNativeChange(e) {
127
+ setChecked(e.target.checked);
87
128
  }
88
129
  function isInteractiveTarget(target) {
89
130
  const el = target;
@@ -96,14 +137,14 @@ var GrCheckbox_default = /* @__PURE__ */ defineComponent({
96
137
  }
97
138
  return (_ctx, _cache) => {
98
139
  return openBlock(), createElementBlock("div", {
99
- "data-ds-checkbox": "",
140
+ "data-gr-checkbox": "",
100
141
  class: normalizeClass(["inline-flex items-center gap-2 select-none focus-visible:outline-none focus-visible:rounded-[8px] focus-visible:shadow-[0_0_0_2px_var(--ring),0_0_0_4px_var(--bg)]", __props.disabled ? "cursor-not-allowed opacity-70" : "cursor-pointer"]),
101
142
  role: "checkbox",
102
- "aria-checked": __props.modelValue ? "true" : "false",
143
+ "aria-checked": __props.indeterminate ? "mixed" : __props.modelValue ? "true" : "false",
103
144
  "aria-disabled": __props.disabled ? "true" : void 0,
104
145
  tabindex: __props.disabled ? -1 : 0,
105
146
  onClick,
106
- onKeydown: [withKeys(withModifiers(toggle, ["prevent"]), ["space"]), withKeys(withModifiers(toggle, ["prevent"]), ["enter"])]
147
+ onKeydown: withKeys(withModifiers(toggle, ["prevent"]), ["space"])
107
148
  }, [
108
149
  createElementVNode("input", {
109
150
  id: __props.id,
@@ -118,13 +159,20 @@ var GrCheckbox_default = /* @__PURE__ */ defineComponent({
118
159
  form: __props.form,
119
160
  tabindex: "-1",
120
161
  "aria-hidden": "true",
121
- style: hiddenInputStyle
122
- }, null, 8, _hoisted_2),
162
+ style: hiddenInputStyle,
163
+ onChange: onNativeChange
164
+ }, null, 40, _hoisted_2),
123
165
  createElementVNode("span", {
124
- "data-ds-checkbox-indicator": "",
166
+ "data-gr-checkbox-indicator": "",
125
167
  "aria-hidden": "true",
126
- class: normalizeClass(["h-4 w-4 rounded border flex items-center justify-center transition-colors duration-150", __props.modelValue ? "border-[var(--primary)] bg-[var(--primary)]" : "border-[var(--brd)] bg-[var(--bg)]"])
127
- }, [createVNode(unref(check_default), { class: normalizeClass(["ds-checkbox-icon h-3.5 w-3.5 transition-transform transition-opacity duration-150", __props.modelValue ? "opacity-100 scale-100 text-[var(--primary-fg)]" : "opacity-0 scale-75 text-transparent"]) }, null, 8, ["class"])], 2),
168
+ class: normalizeClass(["h-4 w-4 rounded border flex items-center justify-center transition-colors duration-150", __props.modelValue || __props.indeterminate ? "border-[var(--primary)] bg-[var(--primary)]" : "border-[var(--brd)] bg-[var(--bg)]"])
169
+ }, [__props.indeterminate ? (openBlock(), createBlock(unref(minus_default), {
170
+ key: 0,
171
+ class: "gr-checkbox-icon h-3.5 w-3.5 text-[var(--primary-fg)]"
172
+ })) : (openBlock(), createBlock(unref(check_default), {
173
+ key: 1,
174
+ class: normalizeClass(["gr-checkbox-icon h-3.5 w-3.5 transition-transform transition-opacity duration-150", __props.modelValue ? "opacity-100 scale-100 text-[var(--primary-fg)]" : "opacity-0 scale-75 text-transparent"])
175
+ }, null, 8, ["class"]))], 2),
128
176
  createElementVNode("span", _hoisted_3, [renderSlot(_ctx.$slots, "default")])
129
177
  ], 42, _hoisted_1);
130
178
  };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GrCheckbox-DJhzZZdO.js","names":[],"sources":["../../../../src/components/GrCheckbox/GrCheckbox.vue","../../../../src/components/GrCheckbox/GrCheckbox.vue"],"sourcesContent":["<script setup lang=\"ts\">\n/**\n * GrCheckbox — GR-примитив чекбокса с нативным скрытым `<input type=\"checkbox\">`\n * для интеграции с HTML-формами (`FormData`, `required`, `form`).\n *\n * Источник истины — нативный input: клик по нему (в т.ч. по внешнему\n * `<label for=\"...\">`) слушается через `@change` и эмитит модель. Клик по видимой\n * части компонента переключает через корневой обработчик.\n *\n * Клавиатура: `Space` переключает значение (Enter — намеренно нет, это нестандартно\n * для чекбоксов). Фокус — на корневом элементе.\n * A11y: `role=\"checkbox\"` + `aria-checked` (`true`/`false`/`mixed`) + `aria-disabled`.\n */\nimport { onMounted, ref, watch } from 'vue'\nimport IconCheck from '~icons/lucide/check'\nimport IconMinus from '~icons/lucide/minus'\n\nexport interface GrCheckboxProps {\n modelValue?: boolean\n disabled?: boolean\n name?: string\n value?: string\n required?: boolean\n form?: string\n /** Пробрасывается на скрытый нативный `<input>`, чтобы работал `<label for=\"...\">`. */\n id?: string\n /** Промежуточное («смешанное») состояние: `aria-checked=\"mixed\"`, индикатор — тире. */\n indeterminate?: boolean\n}\n\nconst hiddenInputStyle = {\n position: 'absolute',\n opacity: '0',\n width: '0',\n height: '0',\n pointerEvents: 'none',\n} as const\n\nconst props = withDefaults(defineProps<GrCheckboxProps>(), {\n modelValue: false,\n disabled: false,\n name: undefined,\n value: 'on',\n required: false,\n form: undefined,\n id: undefined,\n indeterminate: false,\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n}>()\n\n// Держим `.checked` на нативном input синхронно с пропом — `:checked`-биндинг\n// на скрытом элементе иногда отстаёт при программных обновлениях.\nconst nativeInput = ref<HTMLInputElement | null>(null)\nwatch(\n () => props.modelValue,\n (value) => {\n if (nativeInput.value && nativeInput.value.checked !== value)\n nativeInput.value.checked = value\n },\n)\n\n// `indeterminate` можно выставить только через JS-свойство (не атрибут).\nfunction syncIndeterminate(): void {\n if (nativeInput.value)\n nativeInput.value.indeterminate = props.indeterminate\n}\nwatch(() => props.indeterminate, syncIndeterminate)\nonMounted(syncIndeterminate)\n\nfunction setChecked(next: boolean): void {\n if (props.disabled)\n return\n emit('update:modelValue', next)\n}\n\nfunction toggle(): void {\n // Из промежуточного состояния переключаемся во «включено» (стандартное поведение).\n setChecked(props.indeterminate ? true : !props.modelValue)\n}\n\n// Клик по нативному input (в т.ч. по внешнему `<label for=\"...\">`) уже переключил его\n// `.checked` — берём значение как источник истины и эмитим модель.\nfunction onNativeChange(e: Event): void {\n setChecked((e.target as HTMLInputElement).checked)\n}\n\nfunction isInteractiveTarget(target: EventTarget | null): boolean {\n const el = target as HTMLElement | null\n if (!el)\n return false\n return !!el.closest('a,button,input,select,textarea,label,[role=\"button\"],[role=\"link\"]')\n}\n\nfunction onClick(e: MouseEvent): void {\n if (isInteractiveTarget(e.target))\n return\n toggle()\n}\n</script>\n<template>\n <div\n data-gr-checkbox\n class=\"inline-flex items-center gap-2 select-none focus-visible:outline-none focus-visible:rounded-[8px] focus-visible:shadow-[0_0_0_2px_var(--ring),0_0_0_4px_var(--bg)]\"\n role=\"checkbox\"\n :aria-checked=\"indeterminate ? 'mixed' : (modelValue ? 'true' : 'false')\"\n :aria-disabled=\"disabled ? 'true' : undefined\"\n :tabindex=\"disabled ? -1 : 0\"\n :class=\"disabled ? 'cursor-not-allowed opacity-70' : 'cursor-pointer'\"\n @click=\"onClick\"\n @keydown.space.prevent=\"toggle\"\n >\n <input\n :id=\"id\"\n ref=\"nativeInput\"\n type=\"checkbox\"\n :checked=\"modelValue\"\n :disabled=\"disabled\"\n :name=\"name\"\n :value=\"value\"\n :required=\"required\"\n :form=\"form\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n :style=\"hiddenInputStyle\"\n @change=\"onNativeChange\"\n >\n <span\n data-gr-checkbox-indicator\n aria-hidden=\"true\"\n class=\"h-4 w-4 rounded border flex items-center justify-center transition-colors duration-150\"\n :class=\"(modelValue || indeterminate)\n ? 'border-[var(--primary)] bg-[var(--primary)]'\n : 'border-[var(--brd)] bg-[var(--bg)]'\"\n >\n <IconMinus\n v-if=\"indeterminate\"\n class=\"gr-checkbox-icon h-3.5 w-3.5 text-[var(--primary-fg)]\"\n />\n <IconCheck\n v-else\n class=\"gr-checkbox-icon h-3.5 w-3.5 transition-transform transition-opacity duration-150\"\n :class=\"modelValue\n ? 'opacity-100 scale-100 text-[var(--primary-fg)]'\n : 'opacity-0 scale-75 text-transparent'\"\n />\n </span>\n <span class=\"text-sm text-[var(--muted-fg)]\">\n <slot />\n </span>\n </div>\n</template>\n","<script setup lang=\"ts\">\n/**\n * GrCheckbox — GR-примитив чекбокса с нативным скрытым `<input type=\"checkbox\">`\n * для интеграции с HTML-формами (`FormData`, `required`, `form`).\n *\n * Источник истины — нативный input: клик по нему (в т.ч. по внешнему\n * `<label for=\"...\">`) слушается через `@change` и эмитит модель. Клик по видимой\n * части компонента переключает через корневой обработчик.\n *\n * Клавиатура: `Space` переключает значение (Enter — намеренно нет, это нестандартно\n * для чекбоксов). Фокус — на корневом элементе.\n * A11y: `role=\"checkbox\"` + `aria-checked` (`true`/`false`/`mixed`) + `aria-disabled`.\n */\nimport { onMounted, ref, watch } from 'vue'\nimport IconCheck from '~icons/lucide/check'\nimport IconMinus from '~icons/lucide/minus'\n\nexport interface GrCheckboxProps {\n modelValue?: boolean\n disabled?: boolean\n name?: string\n value?: string\n required?: boolean\n form?: string\n /** Пробрасывается на скрытый нативный `<input>`, чтобы работал `<label for=\"...\">`. */\n id?: string\n /** Промежуточное («смешанное») состояние: `aria-checked=\"mixed\"`, индикатор — тире. */\n indeterminate?: boolean\n}\n\nconst hiddenInputStyle = {\n position: 'absolute',\n opacity: '0',\n width: '0',\n height: '0',\n pointerEvents: 'none',\n} as const\n\nconst props = withDefaults(defineProps<GrCheckboxProps>(), {\n modelValue: false,\n disabled: false,\n name: undefined,\n value: 'on',\n required: false,\n form: undefined,\n id: undefined,\n indeterminate: false,\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n}>()\n\n// Держим `.checked` на нативном input синхронно с пропом — `:checked`-биндинг\n// на скрытом элементе иногда отстаёт при программных обновлениях.\nconst nativeInput = ref<HTMLInputElement | null>(null)\nwatch(\n () => props.modelValue,\n (value) => {\n if (nativeInput.value && nativeInput.value.checked !== value)\n nativeInput.value.checked = value\n },\n)\n\n// `indeterminate` можно выставить только через JS-свойство (не атрибут).\nfunction syncIndeterminate(): void {\n if (nativeInput.value)\n nativeInput.value.indeterminate = props.indeterminate\n}\nwatch(() => props.indeterminate, syncIndeterminate)\nonMounted(syncIndeterminate)\n\nfunction setChecked(next: boolean): void {\n if (props.disabled)\n return\n emit('update:modelValue', next)\n}\n\nfunction toggle(): void {\n // Из промежуточного состояния переключаемся во «включено» (стандартное поведение).\n setChecked(props.indeterminate ? true : !props.modelValue)\n}\n\n// Клик по нативному input (в т.ч. по внешнему `<label for=\"...\">`) уже переключил его\n// `.checked` — берём значение как источник истины и эмитим модель.\nfunction onNativeChange(e: Event): void {\n setChecked((e.target as HTMLInputElement).checked)\n}\n\nfunction isInteractiveTarget(target: EventTarget | null): boolean {\n const el = target as HTMLElement | null\n if (!el)\n return false\n return !!el.closest('a,button,input,select,textarea,label,[role=\"button\"],[role=\"link\"]')\n}\n\nfunction onClick(e: MouseEvent): void {\n if (isInteractiveTarget(e.target))\n return\n toggle()\n}\n</script>\n<template>\n <div\n data-gr-checkbox\n class=\"inline-flex items-center gap-2 select-none focus-visible:outline-none focus-visible:rounded-[8px] focus-visible:shadow-[0_0_0_2px_var(--ring),0_0_0_4px_var(--bg)]\"\n role=\"checkbox\"\n :aria-checked=\"indeterminate ? 'mixed' : (modelValue ? 'true' : 'false')\"\n :aria-disabled=\"disabled ? 'true' : undefined\"\n :tabindex=\"disabled ? -1 : 0\"\n :class=\"disabled ? 'cursor-not-allowed opacity-70' : 'cursor-pointer'\"\n @click=\"onClick\"\n @keydown.space.prevent=\"toggle\"\n >\n <input\n :id=\"id\"\n ref=\"nativeInput\"\n type=\"checkbox\"\n :checked=\"modelValue\"\n :disabled=\"disabled\"\n :name=\"name\"\n :value=\"value\"\n :required=\"required\"\n :form=\"form\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n :style=\"hiddenInputStyle\"\n @change=\"onNativeChange\"\n >\n <span\n data-gr-checkbox-indicator\n aria-hidden=\"true\"\n class=\"h-4 w-4 rounded border flex items-center justify-center transition-colors duration-150\"\n :class=\"(modelValue || indeterminate)\n ? 'border-[var(--primary)] bg-[var(--primary)]'\n : 'border-[var(--brd)] bg-[var(--bg)]'\"\n >\n <IconMinus\n v-if=\"indeterminate\"\n class=\"gr-checkbox-icon h-3.5 w-3.5 text-[var(--primary-fg)]\"\n />\n <IconCheck\n v-else\n class=\"gr-checkbox-icon h-3.5 w-3.5 transition-transform transition-opacity duration-150\"\n :class=\"modelValue\n ? 'opacity-100 scale-100 text-[var(--primary-fg)]'\n : 'opacity-0 scale-75 text-transparent'\"\n />\n </span>\n <span class=\"text-sm text-[var(--muted-fg)]\">\n <slot />\n </span>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8BA,MAAM,mBAAmB;GACvB,UAAU;GACV,SAAS;GACT,OAAO;GACP,QAAQ;GACR,eAAe;EACjB;EAEA,MAAM,QAAQ;EAWd,MAAM,OAAO;EAMb,MAAM,cAAc,IAA6B,IAAI;EACrD,YACQ,MAAM,aACX,UAAU;GACT,IAAI,YAAY,SAAS,YAAY,MAAM,YAAY,OACrD,YAAY,MAAM,UAAU;EAChC,CACF;EAGA,SAAS,oBAA0B;GACjC,IAAI,YAAY,OACd,YAAY,MAAM,gBAAgB,MAAM;EAC5C;EACA,YAAY,MAAM,eAAe,iBAAiB;EAClD,UAAU,iBAAiB;EAE3B,SAAS,WAAW,MAAqB;GACvC,IAAI,MAAM,UACR;GACF,KAAK,qBAAqB,IAAI;EAChC;EAEA,SAAS,SAAe;GAEtB,WAAW,MAAM,gBAAgB,OAAO,CAAC,MAAM,UAAU;EAC3D;EAIA,SAAS,eAAe,GAAgB;GACtC,WAAY,EAAE,OAA4B,OAAO;EACnD;EAEA,SAAS,oBAAoB,QAAqC;GAChE,MAAM,KAAK;GACX,IAAI,CAAC,IACH,OAAO;GACT,OAAO,CAAC,CAAC,GAAG,QAAQ,wEAAoE;EAC1F;EAEA,SAAS,QAAQ,GAAqB;GACpC,IAAI,oBAAoB,EAAE,MAAM,GAC9B;GACF,OAAO;EACT;;uBAGE,mBAiDM,OAAA;IAhDJ,oBAAA;IACA,OAAK,eAAA,CAAC,sKAKE,QAAA,WAAQ,kCAAA,gBAAA,CAAA;IAJhB,MAAK;IACJ,gBAAc,QAAA,gBAAa,UAAc,QAAA,aAAU,SAAA;IACnD,iBAAe,QAAA,WAAQ,SAAY,KAAA;IACnC,UAAU,QAAA,WAAQ,KAAA;IAEX;IACP,WAAO,SAAA,cAAgB,QAAM,CAAA,SAAA,CAAA,GAAA,CAAA,OAAA,CAAA;;IAE9B,mBAcC,SAAA;KAbE,IAAI,QAAA;cACD;KAAJ,KAAI;KACJ,MAAK;KACJ,SAAS,QAAA;KACT,UAAU,QAAA;KACV,MAAM,QAAA;KACN,OAAO,QAAA;KACP,UAAU,QAAA;KACV,MAAM,QAAA;KACP,UAAS;KACT,eAAY;KACX,OAAO;KACP,UAAQ;;IAEX,mBAmBO,QAAA;KAlBL,8BAAA;KACA,eAAY;KACZ,OAAK,eAAA,CAAC,0FACG,QAAA,cAAc,QAAA,gBAAA,gDAAA,oCAAA,CAAA;QAKf,QAAA,iBAAA,UAAA,GADR,YAGE,MAAA,aAAA,GAAA;;KADA,OAAM;wBAER,YAME,MAAA,aAAA,GAAA;;KAJA,OAAK,eAAA,CAAC,qFACE,QAAA,aAAA,mDAAA,qCAAA,CAAA;;IAKZ,mBAEO,QAFP,YAEO,CADL,WAAQ,KAAA,QAAA,SAAA,CAAA,CAAA"}
@@ -1,3 +1,3 @@
1
- import { t as GrCheckbox_default } from "./chunks/GrCheckbox-Bt3d7ckE.js";
2
- import { t as grCheckboxConfig } from "../../chunks/config-C9MblwGq.js";
1
+ import { t as GrCheckbox_default } from "./chunks/GrCheckbox-DJhzZZdO.js";
2
+ import { t as grCheckboxConfig } from "../../chunks/config-DICOd-2X.js";
3
3
  export { GrCheckbox_default as GrCheckbox, GrCheckbox_default as default, grCheckboxConfig };
@@ -1,5 +1,5 @@
1
- import { t as GrCard_default } from "../../GrCard/chunks/GrCard-6yk1RRAQ.js";
2
- import { t as GrIcon_default } from "../../GrIcon/chunks/GrIcon-BV7RBU_0.js";
1
+ import { t as GrCard_default } from "../../GrCard/chunks/GrCard-DUNMkuHW.js";
2
+ import { t as GrIcon_default } from "../../GrIcon/chunks/GrIcon-D9AWQLk2.js";
3
3
  import { computed, createBlock, createElementBlock, createElementVNode, createVNode, defineComponent, getCurrentInstance, inject, markRaw, normalizeClass, openBlock, provide, ref, renderSlot, toDisplayString, unref, withCtx } from "vue";
4
4
  //#region src/components/GrCollapse/grCollapseContext.ts
5
5
  var GR_COLLAPSE_CONTEXT = Symbol("GR_COLLAPSE_CONTEXT");
@@ -29,11 +29,11 @@ var GrCollapse_default = /* @__PURE__ */ defineComponent({
29
29
  const activeSet = computed(() => {
30
30
  const value = props.modelValue;
31
31
  if (props.accordion) {
32
- if (typeof value === "string" || typeof value === "number") return new Set([value]);
32
+ if (typeof value === "string" || typeof value === "number") return /* @__PURE__ */ new Set([value]);
33
33
  return /* @__PURE__ */ new Set();
34
34
  }
35
35
  if (Array.isArray(value)) return new Set(value);
36
- if (typeof value === "string" || typeof value === "number") return new Set([value]);
36
+ if (typeof value === "string" || typeof value === "number") return /* @__PURE__ */ new Set([value]);
37
37
  return /* @__PURE__ */ new Set();
38
38
  });
39
39
  function setModelValue(next) {
@@ -56,7 +56,7 @@ var GrCollapse_default = /* @__PURE__ */ defineComponent({
56
56
  toggle
57
57
  });
58
58
  return (_ctx, _cache) => {
59
- return openBlock(), createBlock(unref(GrCard_default), { "data-ds-collapse": "" }, {
59
+ return openBlock(), createBlock(unref(GrCard_default), { "data-gr-collapse": "" }, {
60
60
  default: withCtx(() => [createElementVNode("div", { class: normalizeClass(__props.divided ? "divide-y divide-[var(--brd)]" : "") }, [renderSlot(_ctx.$slots, "default")], 2)]),
61
61
  _: 3
62
62
  });
@@ -87,7 +87,7 @@ var chevron_down_default = markRaw({
87
87
  //#endregion
88
88
  //#region src/components/GrCollapse/GrCollapseItem.vue?vue&type=script&setup=true&lang.ts
89
89
  var _hoisted_1 = {
90
- "data-ds-collapse-item": "",
90
+ "data-gr-collapse-item": "",
91
91
  class: "text-[var(--fg)]"
92
92
  };
93
93
  var _hoisted_2 = { class: "m-0" };
@@ -120,17 +120,17 @@ var GrCollapseItem_default = /* @__PURE__ */ defineComponent({
120
120
  });
121
121
  const resolvedDisabled = computed(() => collapseContext.disabled.value || props.disabled);
122
122
  const expanded = computed(() => collapseContext.isActive(resolvedName.value));
123
- const headerId = `ds-collapse-header-${uid}`;
124
- const panelId = `ds-collapse-panel-${uid}`;
123
+ const headerId = `gr-collapse-header-${uid}`;
124
+ const panelId = `gr-collapse-panel-${uid}`;
125
125
  const triggerEl = ref(null);
126
126
  function onToggle() {
127
127
  if (resolvedDisabled.value) return;
128
128
  collapseContext.toggle(resolvedName.value);
129
129
  }
130
130
  function getAllTriggers() {
131
- const root = triggerEl.value?.closest("[data-ds-collapse]");
131
+ const root = triggerEl.value?.closest("[data-gr-collapse]");
132
132
  if (!root) return [];
133
- return Array.prototype.slice.call(root.querySelectorAll("[data-ds-collapse-trigger]"));
133
+ return Array.prototype.slice.call(root.querySelectorAll("[data-gr-collapse-trigger]"));
134
134
  }
135
135
  function focusRelative(direction) {
136
136
  const current = triggerEl.value;
@@ -176,7 +176,7 @@ var GrCollapseItem_default = /* @__PURE__ */ defineComponent({
176
176
  id: headerId,
177
177
  ref_key: "triggerEl",
178
178
  ref: triggerEl,
179
- "data-ds-collapse-trigger": "",
179
+ "data-gr-collapse-trigger": "",
180
180
  type: "button",
181
181
  "aria-expanded": expanded.value ? "true" : "false",
182
182
  "aria-controls": panelId,
@@ -187,7 +187,7 @@ var GrCollapseItem_default = /* @__PURE__ */ defineComponent({
187
187
  }, [createElementVNode("span", _hoisted_4, [renderSlot(_ctx.$slots, "title", {}, () => [createElementVNode("span", _hoisted_5, toDisplayString(__props.title), 1)])]), createVNode(unref(GrIcon_default), {
188
188
  size: "sm",
189
189
  "aria-hidden": "true",
190
- "data-ds-collapse-chevron": "",
190
+ "data-gr-collapse-chevron": "",
191
191
  class: normalizeClass(["shrink-0 transition-transform duration-150 text-[var(--muted-fg)]", expanded.value ? "rotate-180" : ""])
192
192
  }, {
193
193
  default: withCtx(() => [createVNode(unref(chevron_down_default))]),
@@ -1 +1 @@
1
- {"version":3,"file":"GrCollapse-CU94BTAR.js","names":[],"sources":["../../../../src/components/GrCollapse/grCollapseContext.ts","../../../../src/components/GrCollapse/GrCollapse.vue","../../../../src/components/GrCollapse/GrCollapse.vue","../../../../src/components/GrCollapse/GrCollapseItem.vue","../../../../src/components/GrCollapse/GrCollapseItem.vue"],"sourcesContent":["import type { ComputedRef, InjectionKey } from 'vue'\n\nexport type GrCollapseValue = string | number\n\nexport type GrCollapseModelValue = GrCollapseValue | GrCollapseValue[] | undefined\n\nexport type GrCollapseContext = {\n accordion: ComputedRef<boolean>\n disabled: ComputedRef<boolean>\n isActive: (name: GrCollapseValue) => boolean\n toggle: (name: GrCollapseValue) => void\n}\n\nexport const GR_COLLAPSE_CONTEXT: InjectionKey<GrCollapseContext> = Symbol('GR_COLLAPSE_CONTEXT')","<script setup lang=\"ts\">\nimport { computed, provide } from 'vue'\n\nimport GrCard from '../GrCard'\n\nimport {\n GR_COLLAPSE_CONTEXT,\n type GrCollapseContext,\n type GrCollapseModelValue,\n type GrCollapseValue,\n} from './grCollapseContext'\n\n/**\n * GrCollapse — контейнер секций `GrCollapseItem`.\n *\n * @prop modelValue — открытые секции. В `accordion`-режиме — `string|number|undefined`, иначе — массив значений.\n * @prop accordion — режим, когда одновременно может быть открыта только одна секция.\n * @prop disabled — блокирует взаимодействие со всеми секциями.\n * @prop divided — разделители между секциями.\n */\nexport interface GrCollapseProps {\n modelValue?: GrCollapseModelValue\n accordion?: boolean\n disabled?: boolean\n divided?: boolean\n}\n\nconst props = withDefaults(defineProps<GrCollapseProps>(), {\n modelValue: undefined,\n accordion: false,\n disabled: false,\n divided: true,\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: GrCollapseModelValue): void\n (e: 'change', value: GrCollapseModelValue): void\n}>()\n\nconst activeSet = computed(() => {\n const value = props.modelValue\n\n if (props.accordion) {\n if (typeof value === 'string' || typeof value === 'number') {\n return new Set<GrCollapseValue>([value])\n }\n\n return new Set<GrCollapseValue>()\n }\n\n if (Array.isArray(value)) {\n return new Set<GrCollapseValue>(value)\n }\n\n if (typeof value === 'string' || typeof value === 'number') {\n return new Set<GrCollapseValue>([value])\n }\n\n return new Set<GrCollapseValue>()\n})\n\nfunction setModelValue(next: GrCollapseModelValue): void {\n emit('update:modelValue', next)\n emit('change', next)\n}\n\nfunction toggle(name: GrCollapseValue): void {\n if (props.disabled)\n return\n\n if (props.accordion) {\n const next = activeSet.value.has(name) ? undefined : name\n setModelValue(next)\n return\n }\n\n const current = Array.isArray(props.modelValue)\n ? [...props.modelValue]\n : typeof props.modelValue === 'string' || typeof props.modelValue === 'number'\n ? [props.modelValue]\n : []\n\n const exists = current.includes(name)\n const next = exists\n ? current.filter(x => x !== name)\n : [...current, name]\n\n setModelValue(next)\n}\n\nconst context: GrCollapseContext = {\n accordion: computed(() => props.accordion),\n disabled: computed(() => props.disabled),\n isActive: name => activeSet.value.has(name),\n toggle,\n}\n\nprovide(GR_COLLAPSE_CONTEXT, context)\n</script>\n\n<template>\n <GrCard data-ds-collapse>\n <div :class=\"divided ? 'divide-y divide-[var(--brd)]' : ''\">\n <slot />\n </div>\n </GrCard>\n</template>","<script setup lang=\"ts\">\nimport { computed, provide } from 'vue'\n\nimport GrCard from '../GrCard'\n\nimport {\n GR_COLLAPSE_CONTEXT,\n type GrCollapseContext,\n type GrCollapseModelValue,\n type GrCollapseValue,\n} from './grCollapseContext'\n\n/**\n * GrCollapse — контейнер секций `GrCollapseItem`.\n *\n * @prop modelValue — открытые секции. В `accordion`-режиме — `string|number|undefined`, иначе — массив значений.\n * @prop accordion — режим, когда одновременно может быть открыта только одна секция.\n * @prop disabled — блокирует взаимодействие со всеми секциями.\n * @prop divided — разделители между секциями.\n */\nexport interface GrCollapseProps {\n modelValue?: GrCollapseModelValue\n accordion?: boolean\n disabled?: boolean\n divided?: boolean\n}\n\nconst props = withDefaults(defineProps<GrCollapseProps>(), {\n modelValue: undefined,\n accordion: false,\n disabled: false,\n divided: true,\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: GrCollapseModelValue): void\n (e: 'change', value: GrCollapseModelValue): void\n}>()\n\nconst activeSet = computed(() => {\n const value = props.modelValue\n\n if (props.accordion) {\n if (typeof value === 'string' || typeof value === 'number') {\n return new Set<GrCollapseValue>([value])\n }\n\n return new Set<GrCollapseValue>()\n }\n\n if (Array.isArray(value)) {\n return new Set<GrCollapseValue>(value)\n }\n\n if (typeof value === 'string' || typeof value === 'number') {\n return new Set<GrCollapseValue>([value])\n }\n\n return new Set<GrCollapseValue>()\n})\n\nfunction setModelValue(next: GrCollapseModelValue): void {\n emit('update:modelValue', next)\n emit('change', next)\n}\n\nfunction toggle(name: GrCollapseValue): void {\n if (props.disabled)\n return\n\n if (props.accordion) {\n const next = activeSet.value.has(name) ? undefined : name\n setModelValue(next)\n return\n }\n\n const current = Array.isArray(props.modelValue)\n ? [...props.modelValue]\n : typeof props.modelValue === 'string' || typeof props.modelValue === 'number'\n ? [props.modelValue]\n : []\n\n const exists = current.includes(name)\n const next = exists\n ? current.filter(x => x !== name)\n : [...current, name]\n\n setModelValue(next)\n}\n\nconst context: GrCollapseContext = {\n accordion: computed(() => props.accordion),\n disabled: computed(() => props.disabled),\n isActive: name => activeSet.value.has(name),\n toggle,\n}\n\nprovide(GR_COLLAPSE_CONTEXT, context)\n</script>\n\n<template>\n <GrCard data-ds-collapse>\n <div :class=\"divided ? 'divide-y divide-[var(--brd)]' : ''\">\n <slot />\n </div>\n </GrCard>\n</template>","<script setup lang=\"ts\">\nimport ChevronDownIcon from '~icons/lucide/chevron-down'\nimport { computed, getCurrentInstance, inject, ref } from 'vue'\n\nimport GrIcon from '../GrIcon'\n\nimport { GR_COLLAPSE_CONTEXT, type GrCollapseValue } from './grCollapseContext'\n\n/**\n * GrCollapseItem — одна секция `GrCollapse`. Должна использоваться строго внутри `GrCollapse`.\n *\n * @prop name — уникальный идентификатор секции (для `v-model` у `GrCollapse`); по умолчанию генерируется из `uid`.\n * @prop title — текст заголовка; можно заменить слотом `#title`.\n * @prop disabled — запрещает раскрытие/сворачивание секции.\n */\nexport interface GrCollapseItemProps {\n name?: GrCollapseValue\n title?: string\n disabled?: boolean\n}\n\nconst props = withDefaults(defineProps<GrCollapseItemProps>(), {\n name: undefined,\n title: undefined,\n disabled: false,\n})\n\nconst collapse = inject(GR_COLLAPSE_CONTEXT)\n\nif (!collapse) {\n throw new Error('GrCollapseItem must be used inside GrCollapse')\n}\n\nconst collapseContext = collapse\n\nconst instance = getCurrentInstance()\nconst uid = instance?.uid ?? Math.random()\n\nconst resolvedName = computed<GrCollapseValue>(() => {\n if (typeof props.name === 'string' || typeof props.name === 'number')\n return props.name\n\n return uid\n})\n\nconst resolvedDisabled = computed(() => collapseContext.disabled.value || props.disabled)\nconst expanded = computed(() => collapseContext.isActive(resolvedName.value))\n\nconst headerId = `ds-collapse-header-${uid}`\nconst panelId = `ds-collapse-panel-${uid}`\n\nconst triggerEl = ref<HTMLElement | null>(null)\n\nfunction onToggle(): void {\n if (resolvedDisabled.value)\n return\n\n collapseContext.toggle(resolvedName.value)\n}\n\nfunction getAllTriggers(): HTMLElement[] {\n const root = triggerEl.value?.closest('[data-ds-collapse]')\n if (!root)\n return []\n\n return Array.prototype.slice.call(root.querySelectorAll<HTMLElement>('[data-ds-collapse-trigger]')) as HTMLElement[]\n}\n\nfunction focusRelative(direction: 1 | -1): void {\n const current = triggerEl.value\n if (!current)\n return\n\n const triggers = getAllTriggers()\n const index = triggers.indexOf(current)\n if (index === -1 || triggers.length === 0)\n return\n\n const nextIndex = (index + direction + triggers.length) % triggers.length\n triggers[nextIndex]?.focus()\n}\n\nfunction focusEdge(edge: 'start' | 'end'): void {\n const triggers = getAllTriggers()\n if (triggers.length === 0)\n return\n\n ;(edge === 'start' ? triggers[0] : triggers.at(-1))?.focus()\n}\n\nfunction onKeydown(event: KeyboardEvent): void {\n if (event.key === 'ArrowDown') {\n event.preventDefault()\n focusRelative(1)\n return\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault()\n focusRelative(-1)\n return\n }\n\n if (event.key === 'Home') {\n event.preventDefault()\n focusEdge('start')\n return\n }\n\n if (event.key === 'End') {\n event.preventDefault()\n focusEdge('end')\n return\n }\n\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault()\n onToggle()\n }\n}\n</script>\n\n<template>\n <div\n data-ds-collapse-item\n class=\"text-[var(--fg)]\"\n >\n <h3 class=\"m-0\">\n <button\n :id=\"headerId\"\n ref=\"triggerEl\"\n data-ds-collapse-trigger\n type=\"button\"\n :aria-expanded=\"expanded ? 'true' : 'false'\"\n :aria-controls=\"panelId\"\n :disabled=\"resolvedDisabled\"\n class=\"w-full px-4 py-3 flex items-center justify-between gap-4 text-left transition-colors duration-150 focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] disabled:opacity-50 disabled:cursor-not-allowed\"\n :class=\"resolvedDisabled ? '' : 'hover:bg-[var(--muted)]'\"\n @click=\"onToggle\"\n @keydown=\"onKeydown\"\n >\n <span class=\"min-w-0\">\n <slot name=\"title\">\n <span class=\"text-sm font-600\">\n {{ title }}\n </span>\n </slot>\n </span>\n\n <GrIcon\n size=\"sm\"\n aria-hidden=\"true\"\n data-ds-collapse-chevron\n class=\"shrink-0 transition-transform duration-150 text-[var(--muted-fg)]\"\n :class=\"expanded ? 'rotate-180' : ''\"\n >\n <ChevronDownIcon />\n </GrIcon>\n </button>\n </h3>\n\n <div\n :id=\"panelId\"\n role=\"region\"\n :aria-labelledby=\"headerId\"\n class=\"grid transition-[grid-template-rows] duration-200\"\n :class=\"expanded ? 'grid-rows-[1fr]' : 'grid-rows-[0fr]'\"\n >\n <div class=\"overflow-hidden\">\n <div class=\"px-4 pb-4 text-sm text-[var(--muted-fg)]\">\n <slot />\n </div>\n </div>\n </div>\n </div>\n</template>","<script setup lang=\"ts\">\nimport ChevronDownIcon from '~icons/lucide/chevron-down'\nimport { computed, getCurrentInstance, inject, ref } from 'vue'\n\nimport GrIcon from '../GrIcon'\n\nimport { GR_COLLAPSE_CONTEXT, type GrCollapseValue } from './grCollapseContext'\n\n/**\n * GrCollapseItem — одна секция `GrCollapse`. Должна использоваться строго внутри `GrCollapse`.\n *\n * @prop name — уникальный идентификатор секции (для `v-model` у `GrCollapse`); по умолчанию генерируется из `uid`.\n * @prop title — текст заголовка; можно заменить слотом `#title`.\n * @prop disabled — запрещает раскрытие/сворачивание секции.\n */\nexport interface GrCollapseItemProps {\n name?: GrCollapseValue\n title?: string\n disabled?: boolean\n}\n\nconst props = withDefaults(defineProps<GrCollapseItemProps>(), {\n name: undefined,\n title: undefined,\n disabled: false,\n})\n\nconst collapse = inject(GR_COLLAPSE_CONTEXT)\n\nif (!collapse) {\n throw new Error('GrCollapseItem must be used inside GrCollapse')\n}\n\nconst collapseContext = collapse\n\nconst instance = getCurrentInstance()\nconst uid = instance?.uid ?? Math.random()\n\nconst resolvedName = computed<GrCollapseValue>(() => {\n if (typeof props.name === 'string' || typeof props.name === 'number')\n return props.name\n\n return uid\n})\n\nconst resolvedDisabled = computed(() => collapseContext.disabled.value || props.disabled)\nconst expanded = computed(() => collapseContext.isActive(resolvedName.value))\n\nconst headerId = `ds-collapse-header-${uid}`\nconst panelId = `ds-collapse-panel-${uid}`\n\nconst triggerEl = ref<HTMLElement | null>(null)\n\nfunction onToggle(): void {\n if (resolvedDisabled.value)\n return\n\n collapseContext.toggle(resolvedName.value)\n}\n\nfunction getAllTriggers(): HTMLElement[] {\n const root = triggerEl.value?.closest('[data-ds-collapse]')\n if (!root)\n return []\n\n return Array.prototype.slice.call(root.querySelectorAll<HTMLElement>('[data-ds-collapse-trigger]')) as HTMLElement[]\n}\n\nfunction focusRelative(direction: 1 | -1): void {\n const current = triggerEl.value\n if (!current)\n return\n\n const triggers = getAllTriggers()\n const index = triggers.indexOf(current)\n if (index === -1 || triggers.length === 0)\n return\n\n const nextIndex = (index + direction + triggers.length) % triggers.length\n triggers[nextIndex]?.focus()\n}\n\nfunction focusEdge(edge: 'start' | 'end'): void {\n const triggers = getAllTriggers()\n if (triggers.length === 0)\n return\n\n ;(edge === 'start' ? triggers[0] : triggers.at(-1))?.focus()\n}\n\nfunction onKeydown(event: KeyboardEvent): void {\n if (event.key === 'ArrowDown') {\n event.preventDefault()\n focusRelative(1)\n return\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault()\n focusRelative(-1)\n return\n }\n\n if (event.key === 'Home') {\n event.preventDefault()\n focusEdge('start')\n return\n }\n\n if (event.key === 'End') {\n event.preventDefault()\n focusEdge('end')\n return\n }\n\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault()\n onToggle()\n }\n}\n</script>\n\n<template>\n <div\n data-ds-collapse-item\n class=\"text-[var(--fg)]\"\n >\n <h3 class=\"m-0\">\n <button\n :id=\"headerId\"\n ref=\"triggerEl\"\n data-ds-collapse-trigger\n type=\"button\"\n :aria-expanded=\"expanded ? 'true' : 'false'\"\n :aria-controls=\"panelId\"\n :disabled=\"resolvedDisabled\"\n class=\"w-full px-4 py-3 flex items-center justify-between gap-4 text-left transition-colors duration-150 focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] disabled:opacity-50 disabled:cursor-not-allowed\"\n :class=\"resolvedDisabled ? '' : 'hover:bg-[var(--muted)]'\"\n @click=\"onToggle\"\n @keydown=\"onKeydown\"\n >\n <span class=\"min-w-0\">\n <slot name=\"title\">\n <span class=\"text-sm font-600\">\n {{ title }}\n </span>\n </slot>\n </span>\n\n <GrIcon\n size=\"sm\"\n aria-hidden=\"true\"\n data-ds-collapse-chevron\n class=\"shrink-0 transition-transform duration-150 text-[var(--muted-fg)]\"\n :class=\"expanded ? 'rotate-180' : ''\"\n >\n <ChevronDownIcon />\n </GrIcon>\n </button>\n </h3>\n\n <div\n :id=\"panelId\"\n role=\"region\"\n :aria-labelledby=\"headerId\"\n class=\"grid transition-[grid-template-rows] duration-200\"\n :class=\"expanded ? 'grid-rows-[1fr]' : 'grid-rows-[0fr]'\"\n >\n <div class=\"overflow-hidden\">\n <div class=\"px-4 pb-4 text-sm text-[var(--muted-fg)]\">\n <slot />\n </div>\n </div>\n </div>\n </div>\n</template>"],"mappings":"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"}
1
+ {"version":3,"file":"GrCollapse-CPPLh_xU.js","names":[],"sources":["../../../../src/components/GrCollapse/grCollapseContext.ts","../../../../src/components/GrCollapse/GrCollapse.vue","../../../../src/components/GrCollapse/GrCollapse.vue","../../../../src/components/GrCollapse/GrCollapseItem.vue","../../../../src/components/GrCollapse/GrCollapseItem.vue"],"sourcesContent":["import type { ComputedRef, InjectionKey } from 'vue'\n\nexport type GrCollapseValue = string | number\n\nexport type GrCollapseModelValue = GrCollapseValue | GrCollapseValue[] | undefined\n\nexport type GrCollapseContext = {\n accordion: ComputedRef<boolean>\n disabled: ComputedRef<boolean>\n isActive: (name: GrCollapseValue) => boolean\n toggle: (name: GrCollapseValue) => void\n}\n\nexport const GR_COLLAPSE_CONTEXT: InjectionKey<GrCollapseContext> = Symbol('GR_COLLAPSE_CONTEXT')","<script setup lang=\"ts\">\nimport { computed, provide } from 'vue'\n\nimport GrCard from '../GrCard'\n\nimport {\n GR_COLLAPSE_CONTEXT,\n type GrCollapseContext,\n type GrCollapseModelValue,\n type GrCollapseValue,\n} from './grCollapseContext'\n\n/**\n * GrCollapse — контейнер секций `GrCollapseItem`.\n *\n * @prop modelValue — открытые секции. В `accordion`-режиме — `string|number|undefined`, иначе — массив значений.\n * @prop accordion — режим, когда одновременно может быть открыта только одна секция.\n * @prop disabled — блокирует взаимодействие со всеми секциями.\n * @prop divided — разделители между секциями.\n */\nexport interface GrCollapseProps {\n modelValue?: GrCollapseModelValue\n accordion?: boolean\n disabled?: boolean\n divided?: boolean\n}\n\nconst props = withDefaults(defineProps<GrCollapseProps>(), {\n modelValue: undefined,\n accordion: false,\n disabled: false,\n divided: true,\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: GrCollapseModelValue): void\n (e: 'change', value: GrCollapseModelValue): void\n}>()\n\nconst activeSet = computed(() => {\n const value = props.modelValue\n\n if (props.accordion) {\n if (typeof value === 'string' || typeof value === 'number') {\n return new Set<GrCollapseValue>([value])\n }\n\n return new Set<GrCollapseValue>()\n }\n\n if (Array.isArray(value)) {\n return new Set<GrCollapseValue>(value)\n }\n\n if (typeof value === 'string' || typeof value === 'number') {\n return new Set<GrCollapseValue>([value])\n }\n\n return new Set<GrCollapseValue>()\n})\n\nfunction setModelValue(next: GrCollapseModelValue): void {\n emit('update:modelValue', next)\n emit('change', next)\n}\n\nfunction toggle(name: GrCollapseValue): void {\n if (props.disabled)\n return\n\n if (props.accordion) {\n const next = activeSet.value.has(name) ? undefined : name\n setModelValue(next)\n return\n }\n\n const current = Array.isArray(props.modelValue)\n ? [...props.modelValue]\n : typeof props.modelValue === 'string' || typeof props.modelValue === 'number'\n ? [props.modelValue]\n : []\n\n const exists = current.includes(name)\n const next = exists\n ? current.filter(x => x !== name)\n : [...current, name]\n\n setModelValue(next)\n}\n\nconst context: GrCollapseContext = {\n accordion: computed(() => props.accordion),\n disabled: computed(() => props.disabled),\n isActive: name => activeSet.value.has(name),\n toggle,\n}\n\nprovide(GR_COLLAPSE_CONTEXT, context)\n</script>\n\n<template>\n <GrCard data-gr-collapse>\n <div :class=\"divided ? 'divide-y divide-[var(--brd)]' : ''\">\n <slot />\n </div>\n </GrCard>\n</template>","<script setup lang=\"ts\">\nimport { computed, provide } from 'vue'\n\nimport GrCard from '../GrCard'\n\nimport {\n GR_COLLAPSE_CONTEXT,\n type GrCollapseContext,\n type GrCollapseModelValue,\n type GrCollapseValue,\n} from './grCollapseContext'\n\n/**\n * GrCollapse — контейнер секций `GrCollapseItem`.\n *\n * @prop modelValue — открытые секции. В `accordion`-режиме — `string|number|undefined`, иначе — массив значений.\n * @prop accordion — режим, когда одновременно может быть открыта только одна секция.\n * @prop disabled — блокирует взаимодействие со всеми секциями.\n * @prop divided — разделители между секциями.\n */\nexport interface GrCollapseProps {\n modelValue?: GrCollapseModelValue\n accordion?: boolean\n disabled?: boolean\n divided?: boolean\n}\n\nconst props = withDefaults(defineProps<GrCollapseProps>(), {\n modelValue: undefined,\n accordion: false,\n disabled: false,\n divided: true,\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: GrCollapseModelValue): void\n (e: 'change', value: GrCollapseModelValue): void\n}>()\n\nconst activeSet = computed(() => {\n const value = props.modelValue\n\n if (props.accordion) {\n if (typeof value === 'string' || typeof value === 'number') {\n return new Set<GrCollapseValue>([value])\n }\n\n return new Set<GrCollapseValue>()\n }\n\n if (Array.isArray(value)) {\n return new Set<GrCollapseValue>(value)\n }\n\n if (typeof value === 'string' || typeof value === 'number') {\n return new Set<GrCollapseValue>([value])\n }\n\n return new Set<GrCollapseValue>()\n})\n\nfunction setModelValue(next: GrCollapseModelValue): void {\n emit('update:modelValue', next)\n emit('change', next)\n}\n\nfunction toggle(name: GrCollapseValue): void {\n if (props.disabled)\n return\n\n if (props.accordion) {\n const next = activeSet.value.has(name) ? undefined : name\n setModelValue(next)\n return\n }\n\n const current = Array.isArray(props.modelValue)\n ? [...props.modelValue]\n : typeof props.modelValue === 'string' || typeof props.modelValue === 'number'\n ? [props.modelValue]\n : []\n\n const exists = current.includes(name)\n const next = exists\n ? current.filter(x => x !== name)\n : [...current, name]\n\n setModelValue(next)\n}\n\nconst context: GrCollapseContext = {\n accordion: computed(() => props.accordion),\n disabled: computed(() => props.disabled),\n isActive: name => activeSet.value.has(name),\n toggle,\n}\n\nprovide(GR_COLLAPSE_CONTEXT, context)\n</script>\n\n<template>\n <GrCard data-gr-collapse>\n <div :class=\"divided ? 'divide-y divide-[var(--brd)]' : ''\">\n <slot />\n </div>\n </GrCard>\n</template>","<script setup lang=\"ts\">\nimport ChevronDownIcon from '~icons/lucide/chevron-down'\nimport { computed, getCurrentInstance, inject, ref } from 'vue'\n\nimport GrIcon from '../GrIcon'\n\nimport { GR_COLLAPSE_CONTEXT, type GrCollapseValue } from './grCollapseContext'\n\n/**\n * GrCollapseItem — одна секция `GrCollapse`. Должна использоваться строго внутри `GrCollapse`.\n *\n * @prop name — уникальный идентификатор секции (для `v-model` у `GrCollapse`); по умолчанию генерируется из `uid`.\n * @prop title — текст заголовка; можно заменить слотом `#title`.\n * @prop disabled — запрещает раскрытие/сворачивание секции.\n */\nexport interface GrCollapseItemProps {\n name?: GrCollapseValue\n title?: string\n disabled?: boolean\n}\n\nconst props = withDefaults(defineProps<GrCollapseItemProps>(), {\n name: undefined,\n title: undefined,\n disabled: false,\n})\n\nconst collapse = inject(GR_COLLAPSE_CONTEXT)\n\nif (!collapse) {\n throw new Error('GrCollapseItem must be used inside GrCollapse')\n}\n\nconst collapseContext = collapse\n\nconst instance = getCurrentInstance()\nconst uid = instance?.uid ?? Math.random()\n\nconst resolvedName = computed<GrCollapseValue>(() => {\n if (typeof props.name === 'string' || typeof props.name === 'number')\n return props.name\n\n return uid\n})\n\nconst resolvedDisabled = computed(() => collapseContext.disabled.value || props.disabled)\nconst expanded = computed(() => collapseContext.isActive(resolvedName.value))\n\nconst headerId = `gr-collapse-header-${uid}`\nconst panelId = `gr-collapse-panel-${uid}`\n\nconst triggerEl = ref<HTMLElement | null>(null)\n\nfunction onToggle(): void {\n if (resolvedDisabled.value)\n return\n\n collapseContext.toggle(resolvedName.value)\n}\n\nfunction getAllTriggers(): HTMLElement[] {\n const root = triggerEl.value?.closest('[data-gr-collapse]')\n if (!root)\n return []\n\n return Array.prototype.slice.call(root.querySelectorAll<HTMLElement>('[data-gr-collapse-trigger]')) as HTMLElement[]\n}\n\nfunction focusRelative(direction: 1 | -1): void {\n const current = triggerEl.value\n if (!current)\n return\n\n const triggers = getAllTriggers()\n const index = triggers.indexOf(current)\n if (index === -1 || triggers.length === 0)\n return\n\n const nextIndex = (index + direction + triggers.length) % triggers.length\n triggers[nextIndex]?.focus()\n}\n\nfunction focusEdge(edge: 'start' | 'end'): void {\n const triggers = getAllTriggers()\n if (triggers.length === 0)\n return\n\n ;(edge === 'start' ? triggers[0] : triggers.at(-1))?.focus()\n}\n\nfunction onKeydown(event: KeyboardEvent): void {\n if (event.key === 'ArrowDown') {\n event.preventDefault()\n focusRelative(1)\n return\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault()\n focusRelative(-1)\n return\n }\n\n if (event.key === 'Home') {\n event.preventDefault()\n focusEdge('start')\n return\n }\n\n if (event.key === 'End') {\n event.preventDefault()\n focusEdge('end')\n return\n }\n\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault()\n onToggle()\n }\n}\n</script>\n\n<template>\n <div\n data-gr-collapse-item\n class=\"text-[var(--fg)]\"\n >\n <h3 class=\"m-0\">\n <button\n :id=\"headerId\"\n ref=\"triggerEl\"\n data-gr-collapse-trigger\n type=\"button\"\n :aria-expanded=\"expanded ? 'true' : 'false'\"\n :aria-controls=\"panelId\"\n :disabled=\"resolvedDisabled\"\n class=\"w-full px-4 py-3 flex items-center justify-between gap-4 text-left transition-colors duration-150 focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] disabled:opacity-50 disabled:cursor-not-allowed\"\n :class=\"resolvedDisabled ? '' : 'hover:bg-[var(--muted)]'\"\n @click=\"onToggle\"\n @keydown=\"onKeydown\"\n >\n <span class=\"min-w-0\">\n <slot name=\"title\">\n <span class=\"text-sm font-600\">\n {{ title }}\n </span>\n </slot>\n </span>\n\n <GrIcon\n size=\"sm\"\n aria-hidden=\"true\"\n data-gr-collapse-chevron\n class=\"shrink-0 transition-transform duration-150 text-[var(--muted-fg)]\"\n :class=\"expanded ? 'rotate-180' : ''\"\n >\n <ChevronDownIcon />\n </GrIcon>\n </button>\n </h3>\n\n <div\n :id=\"panelId\"\n role=\"region\"\n :aria-labelledby=\"headerId\"\n class=\"grid transition-[grid-template-rows] duration-200\"\n :class=\"expanded ? 'grid-rows-[1fr]' : 'grid-rows-[0fr]'\"\n >\n <div class=\"overflow-hidden\">\n <div class=\"px-4 pb-4 text-sm text-[var(--muted-fg)]\">\n <slot />\n </div>\n </div>\n </div>\n </div>\n</template>","<script setup lang=\"ts\">\nimport ChevronDownIcon from '~icons/lucide/chevron-down'\nimport { computed, getCurrentInstance, inject, ref } from 'vue'\n\nimport GrIcon from '../GrIcon'\n\nimport { GR_COLLAPSE_CONTEXT, type GrCollapseValue } from './grCollapseContext'\n\n/**\n * GrCollapseItem — одна секция `GrCollapse`. Должна использоваться строго внутри `GrCollapse`.\n *\n * @prop name — уникальный идентификатор секции (для `v-model` у `GrCollapse`); по умолчанию генерируется из `uid`.\n * @prop title — текст заголовка; можно заменить слотом `#title`.\n * @prop disabled — запрещает раскрытие/сворачивание секции.\n */\nexport interface GrCollapseItemProps {\n name?: GrCollapseValue\n title?: string\n disabled?: boolean\n}\n\nconst props = withDefaults(defineProps<GrCollapseItemProps>(), {\n name: undefined,\n title: undefined,\n disabled: false,\n})\n\nconst collapse = inject(GR_COLLAPSE_CONTEXT)\n\nif (!collapse) {\n throw new Error('GrCollapseItem must be used inside GrCollapse')\n}\n\nconst collapseContext = collapse\n\nconst instance = getCurrentInstance()\nconst uid = instance?.uid ?? Math.random()\n\nconst resolvedName = computed<GrCollapseValue>(() => {\n if (typeof props.name === 'string' || typeof props.name === 'number')\n return props.name\n\n return uid\n})\n\nconst resolvedDisabled = computed(() => collapseContext.disabled.value || props.disabled)\nconst expanded = computed(() => collapseContext.isActive(resolvedName.value))\n\nconst headerId = `gr-collapse-header-${uid}`\nconst panelId = `gr-collapse-panel-${uid}`\n\nconst triggerEl = ref<HTMLElement | null>(null)\n\nfunction onToggle(): void {\n if (resolvedDisabled.value)\n return\n\n collapseContext.toggle(resolvedName.value)\n}\n\nfunction getAllTriggers(): HTMLElement[] {\n const root = triggerEl.value?.closest('[data-gr-collapse]')\n if (!root)\n return []\n\n return Array.prototype.slice.call(root.querySelectorAll<HTMLElement>('[data-gr-collapse-trigger]')) as HTMLElement[]\n}\n\nfunction focusRelative(direction: 1 | -1): void {\n const current = triggerEl.value\n if (!current)\n return\n\n const triggers = getAllTriggers()\n const index = triggers.indexOf(current)\n if (index === -1 || triggers.length === 0)\n return\n\n const nextIndex = (index + direction + triggers.length) % triggers.length\n triggers[nextIndex]?.focus()\n}\n\nfunction focusEdge(edge: 'start' | 'end'): void {\n const triggers = getAllTriggers()\n if (triggers.length === 0)\n return\n\n ;(edge === 'start' ? triggers[0] : triggers.at(-1))?.focus()\n}\n\nfunction onKeydown(event: KeyboardEvent): void {\n if (event.key === 'ArrowDown') {\n event.preventDefault()\n focusRelative(1)\n return\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault()\n focusRelative(-1)\n return\n }\n\n if (event.key === 'Home') {\n event.preventDefault()\n focusEdge('start')\n return\n }\n\n if (event.key === 'End') {\n event.preventDefault()\n focusEdge('end')\n return\n }\n\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault()\n onToggle()\n }\n}\n</script>\n\n<template>\n <div\n data-gr-collapse-item\n class=\"text-[var(--fg)]\"\n >\n <h3 class=\"m-0\">\n <button\n :id=\"headerId\"\n ref=\"triggerEl\"\n data-gr-collapse-trigger\n type=\"button\"\n :aria-expanded=\"expanded ? 'true' : 'false'\"\n :aria-controls=\"panelId\"\n :disabled=\"resolvedDisabled\"\n class=\"w-full px-4 py-3 flex items-center justify-between gap-4 text-left transition-colors duration-150 focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] disabled:opacity-50 disabled:cursor-not-allowed\"\n :class=\"resolvedDisabled ? '' : 'hover:bg-[var(--muted)]'\"\n @click=\"onToggle\"\n @keydown=\"onKeydown\"\n >\n <span class=\"min-w-0\">\n <slot name=\"title\">\n <span class=\"text-sm font-600\">\n {{ title }}\n </span>\n </slot>\n </span>\n\n <GrIcon\n size=\"sm\"\n aria-hidden=\"true\"\n data-gr-collapse-chevron\n class=\"shrink-0 transition-transform duration-150 text-[var(--muted-fg)]\"\n :class=\"expanded ? 'rotate-180' : ''\"\n >\n <ChevronDownIcon />\n </GrIcon>\n </button>\n </h3>\n\n <div\n :id=\"panelId\"\n role=\"region\"\n :aria-labelledby=\"headerId\"\n class=\"grid transition-[grid-template-rows] duration-200\"\n :class=\"expanded ? 'grid-rows-[1fr]' : 'grid-rows-[0fr]'\"\n >\n <div class=\"overflow-hidden\">\n <div class=\"px-4 pb-4 text-sm text-[var(--muted-fg)]\">\n <slot />\n </div>\n </div>\n </div>\n </div>\n</template>"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import { n as GrCollapse_default, r as GR_COLLAPSE_CONTEXT, t as GrCollapseItem_default } from "./chunks/GrCollapse-CU94BTAR.js";
2
- import { t as grCollapseConfig } from "../../chunks/config-D5ek7VSi.js";
1
+ import { n as GrCollapse_default, r as GR_COLLAPSE_CONTEXT, t as GrCollapseItem_default } from "./chunks/GrCollapse-CPPLh_xU.js";
2
+ import { t as grCollapseConfig } from "../../chunks/config-xR4XVmcy.js";
3
3
  export { GR_COLLAPSE_CONTEXT, GrCollapse_default as GrCollapse, GrCollapse_default as default, GrCollapseItem_default as GrCollapseItem, grCollapseConfig };
@@ -1,6 +1,7 @@
1
- import { t as GrButton_default } from "../../GrButton/chunks/GrButton-CPDKonoB.js";
2
- import { t as GrDialog_default } from "../../GrDialog/chunks/GrDialog-CxK4Lj4F.js";
3
- import { t as GrResponseErrorBanner_default } from "../../GrResponseErrorBanner/chunks/GrResponseErrorBanner-bM8FC_Bw.js";
1
+ import { t as useGranularityTranslations } from "../../../chunks/granularityI18n-DoV7Ca2m.js";
2
+ import { t as GrButton_default } from "../../GrButton/chunks/GrButton-BlffdeJr.js";
3
+ import { t as GrDialog_default } from "../../GrDialog/chunks/GrDialog-5DAS-1Lb.js";
4
+ import { t as GrResponseErrorBanner_default } from "../../GrResponseErrorBanner/chunks/GrResponseErrorBanner-Cdu9ekK9.js";
4
5
  import { computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, openBlock, renderSlot, toDisplayString, withCtx } from "vue";
5
6
  //#region src/components/GrConfirmDialog/GrConfirmDialog.vue?vue&type=script&setup=true&lang.ts
6
7
  var _hoisted_1 = { class: "grid gap-4" };
@@ -15,7 +16,7 @@ var GrConfirmDialog_default = /* @__PURE__ */ defineComponent({
15
16
  __name: "GrConfirmDialog",
16
17
  props: {
17
18
  modelValue: { type: Boolean },
18
- title: { default: "Confirm" },
19
+ title: { default: void 0 },
19
20
  description: { default: void 0 },
20
21
  closeOnBackdrop: {
21
22
  type: Boolean,
@@ -37,10 +38,10 @@ var GrConfirmDialog_default = /* @__PURE__ */ defineComponent({
37
38
  headerConfig: { default: void 0 },
38
39
  footerConfig: { default: void 0 },
39
40
  bodyConfig: { default: void 0 },
40
- closeLabel: { default: "Close" },
41
+ closeLabel: { default: void 0 },
41
42
  buttonSize: { default: void 0 },
42
- confirmText: { default: "Confirm" },
43
- cancelText: { default: "Cancel" },
43
+ confirmText: { default: void 0 },
44
+ cancelText: { default: void 0 },
44
45
  confirmVariant: { default: "primary" },
45
46
  confirmTone: { default: "primary" },
46
47
  error: { default: null },
@@ -64,7 +65,7 @@ var GrConfirmDialog_default = /* @__PURE__ */ defineComponent({
64
65
  ],
65
66
  setup(__props, { emit: __emit }) {
66
67
  /**
67
- * GrConfirmDialog — DS-примитив диалога подтверждения поверх `GrDialog`.
68
+ * GrConfirmDialog — GR-примитив диалога подтверждения поверх `GrDialog`.
68
69
  *
69
70
  * Синхронизирован с `GrDialog`/`GrPromptDialog` по набору проп-проксирования:
70
71
  * `size`, `closeOnBackdrop`, `closeOnEsc`, `showHeader`, `showCloseButton`,
@@ -75,6 +76,11 @@ var GrConfirmDialog_default = /* @__PURE__ */ defineComponent({
75
76
  */
76
77
  const props = __props;
77
78
  const emit = __emit;
79
+ const { t } = useGranularityTranslations();
80
+ const resolvedTitle = computed(() => props.title ?? t("gr.dialog.confirm.title", "Confirm"));
81
+ const resolvedCloseLabel = computed(() => props.closeLabel ?? t("gr.common.close", "Close"));
82
+ const resolvedConfirmText = computed(() => props.confirmText ?? t("gr.common.confirm", "Confirm"));
83
+ const resolvedCancelText = computed(() => props.cancelText ?? t("gr.common.cancel", "Cancel"));
78
84
  const open = computed({
79
85
  get: () => props.modelValue,
80
86
  set: (value) => emit("update:modelValue", value)
@@ -91,7 +97,7 @@ var GrConfirmDialog_default = /* @__PURE__ */ defineComponent({
91
97
  return openBlock(), createBlock(GrDialog_default, {
92
98
  modelValue: open.value,
93
99
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => open.value = $event),
94
- title: __props.title,
100
+ title: resolvedTitle.value,
95
101
  size: __props.size,
96
102
  "close-on-backdrop": __props.closeOnBackdrop,
97
103
  "close-on-esc": __props.closeOnEsc,
@@ -100,18 +106,18 @@ var GrConfirmDialog_default = /* @__PURE__ */ defineComponent({
100
106
  "header-config": __props.headerConfig,
101
107
  "footer-config": __props.footerConfig,
102
108
  "body-config": __props.bodyConfig,
103
- "close-label": __props.closeLabel
109
+ "close-label": resolvedCloseLabel.value
104
110
  }, {
105
111
  footer: withCtx(() => [renderSlot(_ctx.$slots, "footer", {}, () => [createElementVNode("div", _hoisted_3, [createVNode(GrButton_default, {
106
- "data-testid": "ds-confirm-cancel",
112
+ "data-testid": "gr-confirm-cancel",
107
113
  variant: "outline",
108
114
  size: __props.buttonSize,
109
115
  onClick: onCancel
110
116
  }, {
111
- default: withCtx(() => [createTextVNode(toDisplayString(__props.cancelText), 1)]),
117
+ default: withCtx(() => [createTextVNode(toDisplayString(resolvedCancelText.value), 1)]),
112
118
  _: 1
113
119
  }, 8, ["size"]), createVNode(GrButton_default, {
114
- "data-testid": "ds-confirm-confirm",
120
+ "data-testid": "gr-confirm-confirm",
115
121
  variant: __props.confirmVariant,
116
122
  tone: __props.confirmTone,
117
123
  size: __props.buttonSize,
@@ -119,7 +125,7 @@ var GrConfirmDialog_default = /* @__PURE__ */ defineComponent({
119
125
  disabled: __props.confirmDisabled,
120
126
  onClick: onConfirm
121
127
  }, {
122
- default: withCtx(() => [createTextVNode(toDisplayString(__props.confirmText), 1)]),
128
+ default: withCtx(() => [createTextVNode(toDisplayString(resolvedConfirmText.value), 1)]),
123
129
  _: 1
124
130
  }, 8, [
125
131
  "variant",
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GrConfirmDialog-BWYKCsHd.js","names":[],"sources":["../../../../src/components/GrConfirmDialog/GrConfirmDialog.vue","../../../../src/components/GrConfirmDialog/GrConfirmDialog.vue"],"sourcesContent":["<script setup lang=\"ts\">\n/**\n * GrConfirmDialog — GR-примитив диалога подтверждения поверх `GrDialog`.\n *\n * Синхронизирован с `GrDialog`/`GrPromptDialog` по набору проп-проксирования:\n * `size`, `closeOnBackdrop`, `closeOnEsc`, `showHeader`, `showCloseButton`,\n * `headerConfig`, `footerConfig`, `bodyConfig`, `closeLabel`.\n *\n * Клик по «Confirm»/«Cancel» эмитит одноимённое событие и закрывает диалог\n * через `update:modelValue`.\n */\nimport { computed } from 'vue'\n\nimport GrButton from '../GrButton/GrButton.vue'\nimport GrDialog from '../GrDialog/GrDialog.vue'\nimport GrResponseErrorBanner from '../GrResponseErrorBanner/GrResponseErrorBanner.vue'\nimport { useGranularityTranslations } from '../../internal/granularityI18n'\nimport type { GrButtonSize, GrButtonTone, GrButtonVariant } from '../GrButton'\nimport type { GrDialogSectionConfig, GrDialogSize } from '../GrDialog'\nimport type { ResponseErrorInfo } from '../GrResponseErrorBanner'\n\nexport interface GrConfirmDialogProps {\n modelValue: boolean\n title?: string\n description?: string\n closeOnBackdrop?: boolean\n closeOnEsc?: boolean\n showHeader?: boolean\n showCloseButton?: boolean\n size?: GrDialogSize\n headerConfig?: GrDialogSectionConfig\n footerConfig?: GrDialogSectionConfig\n bodyConfig?: GrDialogSectionConfig\n /** A11y-лейбл кнопки закрытия (i18n). */\n closeLabel?: string\n buttonSize?: GrButtonSize\n confirmText?: string\n cancelText?: string\n confirmVariant?: GrButtonVariant\n confirmTone?: GrButtonTone\n /**\n * Структура ошибки ответа сервера для показа в теле диалога\n * (через `GrResponseErrorBanner`). Используется императивным\n * `useDialogService` для async-`onConfirm`. `null` — блок скрыт.\n */\n error?: ResponseErrorInfo | null\n /** Состояние загрузки кнопки Confirm (async-`onConfirm` in-flight). */\n confirmLoading?: boolean\n /** Принудительно дизейблит кнопку Confirm. */\n confirmDisabled?: boolean\n /**\n * Закрывать ли диалог автоматически по клику Confirm. По умолчанию `true`\n * (историческое поведение). `false` — отдаёт управление закрытием наружу\n * (нужно `useDialogService`, который ждёт результат async-`onConfirm`).\n */\n closeOnConfirm?: boolean\n}\n\nconst props = withDefaults(defineProps<GrConfirmDialogProps>(), {\n title: undefined,\n description: undefined,\n closeOnBackdrop: true,\n closeOnEsc: true,\n showHeader: true,\n showCloseButton: true,\n size: 'md',\n headerConfig: undefined,\n footerConfig: undefined,\n bodyConfig: undefined,\n closeLabel: undefined,\n buttonSize: undefined,\n confirmText: undefined,\n cancelText: undefined,\n confirmVariant: 'primary',\n confirmTone: 'primary',\n error: null,\n confirmLoading: false,\n confirmDisabled: false,\n closeOnConfirm: true,\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n (e: 'confirm'): void\n (e: 'cancel'): void\n}>()\n\n// Дефолты берём из общего i18n-блока пакета (fallback — англ.), а не хардкодим.\nconst { t } = useGranularityTranslations()\nconst resolvedTitle = computed(() => props.title ?? t('gr.dialog.confirm.title', 'Confirm'))\nconst resolvedCloseLabel = computed(() => props.closeLabel ?? t('gr.common.close', 'Close'))\nconst resolvedConfirmText = computed(() => props.confirmText ?? t('gr.common.confirm', 'Confirm'))\nconst resolvedCancelText = computed(() => props.cancelText ?? t('gr.common.cancel', 'Cancel'))\n\nconst open = computed({\n get: () => props.modelValue,\n set: (value: boolean) => emit('update:modelValue', value),\n})\n\nfunction onCancel(): void {\n emit('cancel')\n emit('update:modelValue', false)\n}\n\nfunction onConfirm(): void {\n emit('confirm')\n if (props.closeOnConfirm)\n emit('update:modelValue', false)\n}\n</script>\n\n<template>\n <GrDialog\n v-model=\"open\"\n :title=\"resolvedTitle\"\n :size=\"size\"\n :close-on-backdrop=\"closeOnBackdrop\"\n :close-on-esc=\"closeOnEsc\"\n :show-header=\"showHeader\"\n :show-close-button=\"showCloseButton\"\n :header-config=\"headerConfig\"\n :footer-config=\"footerConfig\"\n :body-config=\"bodyConfig\"\n :close-label=\"resolvedCloseLabel\"\n >\n <div class=\"grid gap-4\">\n <slot>\n <div v-if=\"description\" class=\"text-[14px] text-[var(--muted-fg)]\">\n {{ description }}\n </div>\n </slot>\n\n <slot name=\"error\" :error=\"error\">\n <GrResponseErrorBanner v-if=\"error\" :error=\"error\" :can-dismiss=\"false\" />\n </slot>\n </div>\n\n <template #footer>\n <slot name=\"footer\">\n <div class=\"flex items-center justify-end gap-3\">\n <GrButton data-testid=\"gr-confirm-cancel\" variant=\"outline\" :size=\"buttonSize\" @click=\"onCancel\">\n {{ resolvedCancelText }}\n </GrButton>\n <GrButton\n data-testid=\"gr-confirm-confirm\"\n :variant=\"confirmVariant\"\n :tone=\"confirmTone\"\n :size=\"buttonSize\"\n :loading=\"confirmLoading\"\n :disabled=\"confirmDisabled\"\n @click=\"onConfirm\"\n >\n {{ resolvedConfirmText }}\n </GrButton>\n </div>\n </slot>\n </template>\n </GrDialog>\n</template>\n","<script setup lang=\"ts\">\n/**\n * GrConfirmDialog — GR-примитив диалога подтверждения поверх `GrDialog`.\n *\n * Синхронизирован с `GrDialog`/`GrPromptDialog` по набору проп-проксирования:\n * `size`, `closeOnBackdrop`, `closeOnEsc`, `showHeader`, `showCloseButton`,\n * `headerConfig`, `footerConfig`, `bodyConfig`, `closeLabel`.\n *\n * Клик по «Confirm»/«Cancel» эмитит одноимённое событие и закрывает диалог\n * через `update:modelValue`.\n */\nimport { computed } from 'vue'\n\nimport GrButton from '../GrButton/GrButton.vue'\nimport GrDialog from '../GrDialog/GrDialog.vue'\nimport GrResponseErrorBanner from '../GrResponseErrorBanner/GrResponseErrorBanner.vue'\nimport { useGranularityTranslations } from '../../internal/granularityI18n'\nimport type { GrButtonSize, GrButtonTone, GrButtonVariant } from '../GrButton'\nimport type { GrDialogSectionConfig, GrDialogSize } from '../GrDialog'\nimport type { ResponseErrorInfo } from '../GrResponseErrorBanner'\n\nexport interface GrConfirmDialogProps {\n modelValue: boolean\n title?: string\n description?: string\n closeOnBackdrop?: boolean\n closeOnEsc?: boolean\n showHeader?: boolean\n showCloseButton?: boolean\n size?: GrDialogSize\n headerConfig?: GrDialogSectionConfig\n footerConfig?: GrDialogSectionConfig\n bodyConfig?: GrDialogSectionConfig\n /** A11y-лейбл кнопки закрытия (i18n). */\n closeLabel?: string\n buttonSize?: GrButtonSize\n confirmText?: string\n cancelText?: string\n confirmVariant?: GrButtonVariant\n confirmTone?: GrButtonTone\n /**\n * Структура ошибки ответа сервера для показа в теле диалога\n * (через `GrResponseErrorBanner`). Используется императивным\n * `useDialogService` для async-`onConfirm`. `null` — блок скрыт.\n */\n error?: ResponseErrorInfo | null\n /** Состояние загрузки кнопки Confirm (async-`onConfirm` in-flight). */\n confirmLoading?: boolean\n /** Принудительно дизейблит кнопку Confirm. */\n confirmDisabled?: boolean\n /**\n * Закрывать ли диалог автоматически по клику Confirm. По умолчанию `true`\n * (историческое поведение). `false` — отдаёт управление закрытием наружу\n * (нужно `useDialogService`, который ждёт результат async-`onConfirm`).\n */\n closeOnConfirm?: boolean\n}\n\nconst props = withDefaults(defineProps<GrConfirmDialogProps>(), {\n title: undefined,\n description: undefined,\n closeOnBackdrop: true,\n closeOnEsc: true,\n showHeader: true,\n showCloseButton: true,\n size: 'md',\n headerConfig: undefined,\n footerConfig: undefined,\n bodyConfig: undefined,\n closeLabel: undefined,\n buttonSize: undefined,\n confirmText: undefined,\n cancelText: undefined,\n confirmVariant: 'primary',\n confirmTone: 'primary',\n error: null,\n confirmLoading: false,\n confirmDisabled: false,\n closeOnConfirm: true,\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n (e: 'confirm'): void\n (e: 'cancel'): void\n}>()\n\n// Дефолты берём из общего i18n-блока пакета (fallback — англ.), а не хардкодим.\nconst { t } = useGranularityTranslations()\nconst resolvedTitle = computed(() => props.title ?? t('gr.dialog.confirm.title', 'Confirm'))\nconst resolvedCloseLabel = computed(() => props.closeLabel ?? t('gr.common.close', 'Close'))\nconst resolvedConfirmText = computed(() => props.confirmText ?? t('gr.common.confirm', 'Confirm'))\nconst resolvedCancelText = computed(() => props.cancelText ?? t('gr.common.cancel', 'Cancel'))\n\nconst open = computed({\n get: () => props.modelValue,\n set: (value: boolean) => emit('update:modelValue', value),\n})\n\nfunction onCancel(): void {\n emit('cancel')\n emit('update:modelValue', false)\n}\n\nfunction onConfirm(): void {\n emit('confirm')\n if (props.closeOnConfirm)\n emit('update:modelValue', false)\n}\n</script>\n\n<template>\n <GrDialog\n v-model=\"open\"\n :title=\"resolvedTitle\"\n :size=\"size\"\n :close-on-backdrop=\"closeOnBackdrop\"\n :close-on-esc=\"closeOnEsc\"\n :show-header=\"showHeader\"\n :show-close-button=\"showCloseButton\"\n :header-config=\"headerConfig\"\n :footer-config=\"footerConfig\"\n :body-config=\"bodyConfig\"\n :close-label=\"resolvedCloseLabel\"\n >\n <div class=\"grid gap-4\">\n <slot>\n <div v-if=\"description\" class=\"text-[14px] text-[var(--muted-fg)]\">\n {{ description }}\n </div>\n </slot>\n\n <slot name=\"error\" :error=\"error\">\n <GrResponseErrorBanner v-if=\"error\" :error=\"error\" :can-dismiss=\"false\" />\n </slot>\n </div>\n\n <template #footer>\n <slot name=\"footer\">\n <div class=\"flex items-center justify-end gap-3\">\n <GrButton data-testid=\"gr-confirm-cancel\" variant=\"outline\" :size=\"buttonSize\" @click=\"onCancel\">\n {{ resolvedCancelText }}\n </GrButton>\n <GrButton\n data-testid=\"gr-confirm-confirm\"\n :variant=\"confirmVariant\"\n :tone=\"confirmTone\"\n :size=\"buttonSize\"\n :loading=\"confirmLoading\"\n :disabled=\"confirmDisabled\"\n @click=\"onConfirm\"\n >\n {{ resolvedConfirmText }}\n </GrButton>\n </div>\n </slot>\n </template>\n </GrDialog>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0DA,MAAM,QAAQ;EAuBd,MAAM,OAAO;EAOb,MAAM,EAAE,MAAM,2BAA2B;EACzC,MAAM,gBAAgB,eAAe,MAAM,SAAS,EAAE,2BAA2B,SAAS,CAAC;EAC3F,MAAM,qBAAqB,eAAe,MAAM,cAAc,EAAE,mBAAmB,OAAO,CAAC;EAC3F,MAAM,sBAAsB,eAAe,MAAM,eAAe,EAAE,qBAAqB,SAAS,CAAC;EACjG,MAAM,qBAAqB,eAAe,MAAM,cAAc,EAAE,oBAAoB,QAAQ,CAAC;EAE7F,MAAM,OAAO,SAAS;GACpB,WAAW,MAAM;GACjB,MAAM,UAAmB,KAAK,qBAAqB,KAAK;EAC1D,CAAC;EAED,SAAS,WAAiB;GACxB,KAAK,QAAQ;GACb,KAAK,qBAAqB,KAAK;EACjC;EAEA,SAAS,YAAkB;GACzB,KAAK,SAAS;GACd,IAAI,MAAM,gBACR,KAAK,qBAAqB,KAAK;EACnC;;uBAIE,YA6CW,kBAAA;gBA5CA,KAAA;sEAAI,QAAA;IACZ,OAAO,cAAA;IACP,MAAM,QAAA;IACN,qBAAmB,QAAA;IACnB,gBAAc,QAAA;IACd,eAAa,QAAA;IACb,qBAAmB,QAAA;IACnB,iBAAe,QAAA;IACf,iBAAe,QAAA;IACf,eAAa,QAAA;IACb,eAAa,mBAAA;;IAcH,QAAM,cAkBR,CAjBP,WAiBO,KAAA,QAAA,UAAA,CAAA,SAAA,CAhBL,mBAeM,OAfN,YAeM,CAdJ,YAEW,kBAAA;KAFD,eAAY;KAAoB,SAAQ;KAAW,MAAM,QAAA;KAAa,SAAO;;4BAC7D,CAAA,gBAAA,gBAArB,mBAAA,KAAkB,GAAA,CAAA,CAAA,CAAA;;qBAEvB,YAUW,kBAAA;KATT,eAAY;KACX,SAAS,QAAA;KACT,MAAM,QAAA;KACN,MAAM,QAAA;KACN,SAAS,QAAA;KACT,UAAU,QAAA;KACV,SAAO;;4BAEiB,CAAA,gBAAA,gBAAtB,oBAAA,KAAmB,GAAA,CAAA,CAAA,CAAA;;;;;;;;;2BAjBxB,CAVN,mBAUM,OAVN,YAUM,CATJ,WAIO,KAAA,QAAA,WAAA,CAAA,SAAA,CAHM,QAAA,eAAA,UAAA,GAAX,mBAEM,OAFN,YAEM,gBADD,QAAA,WAAW,GAAA,CAAA,KAAA,mBAAA,IAAA,IAAA,CAAA,CAAA,GAIlB,WAEO,KAAA,QAAA,SAAA,EAFa,OAAO,QAAA,MAAK,SAEzB,CADwB,QAAA,SAAA,UAAA,GAA7B,YAA0E,+BAAA;;KAArC,OAAO,QAAA;KAAQ,eAAa"}
@@ -1,3 +1,3 @@
1
- import { t as GrConfirmDialog_default } from "./chunks/GrConfirmDialog-Bi2KLumL.js";
2
- import { t as grConfirmDialogConfig } from "../../chunks/config-BduXEXjt.js";
1
+ import { t as GrConfirmDialog_default } from "./chunks/GrConfirmDialog-BWYKCsHd.js";
2
+ import { t as grConfirmDialogConfig } from "../../chunks/config-BXtAmU3s.js";
3
3
  export { GrConfirmDialog_default as GrConfirmDialog, GrConfirmDialog_default as default, grConfirmDialogConfig };
@@ -1,6 +1,6 @@
1
- import { t as GrIcon_default } from "../../GrIcon/chunks/GrIcon-BV7RBU_0.js";
2
- import { t as GrTable_default } from "../../GrTable/chunks/GrTable-dTWUxzRm.js";
3
- import { t as arrow_up_default } from "../../../chunks/arrow-up-DZdIrpaF.js";
1
+ import { t as GrIcon_default } from "../../GrIcon/chunks/GrIcon-D9AWQLk2.js";
2
+ import { t as GrTable_default } from "../../GrTable/chunks/GrTable-Db3hRnKA.js";
3
+ import { t as arrow_up_default } from "../../../chunks/arrow-up-C_G4jg8M.js";
4
4
  import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createTextVNode, createVNode, defineComponent, markRaw, mergeProps, normalizeClass, openBlock, ref, renderList, renderSlot, toDisplayString, unref, withCtx } from "vue";
5
5
  //#region ~icons/lucide/arrow-down
6
6
  var _hoisted_1$1 = {
@@ -24,7 +24,7 @@ var arrow_down_default = markRaw({
24
24
  });
25
25
  //#endregion
26
26
  //#region src/components/GrDataTable/GrDataTable.vue?vue&type=script&setup=true&lang.ts
27
- var _hoisted_1 = { "data-ds-datatable-header": "" };
27
+ var _hoisted_1 = { "data-gr-datatable-header": "" };
28
28
  var _hoisted_2 = ["aria-sort"];
29
29
  var _hoisted_3 = { class: "inline-flex items-center gap-2" };
30
30
  var _hoisted_4 = ["aria-label", "onClick"];
@@ -35,7 +35,7 @@ var _hoisted_6 = {
35
35
  };
36
36
  var _hoisted_7 = {
37
37
  key: 0,
38
- "data-ds-datatable-empty": ""
38
+ "data-gr-datatable-empty": ""
39
39
  };
40
40
  var _hoisted_8 = ["colspan"];
41
41
  //#endregion
@@ -118,7 +118,7 @@ var GrDataTable_default = /* @__PURE__ */ defineComponent({
118
118
  return row[key];
119
119
  }
120
120
  return (_ctx, _cache) => {
121
- return openBlock(), createBlock(GrTable_default, mergeProps(tableProps.value, { "data-ds-datatable": "" }), createSlots({
121
+ return openBlock(), createBlock(GrTable_default, mergeProps(tableProps.value, { "data-gr-datatable": "" }), createSlots({
122
122
  head: withCtx(() => [createElementVNode("tr", _hoisted_1, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.columns, (col) => {
123
123
  return openBlock(), createElementBlock("th", {
124
124
  key: col.key,
@@ -154,7 +154,7 @@ var GrDataTable_default = /* @__PURE__ */ defineComponent({
154
154
  return openBlock(), createElementBlock("tr", {
155
155
  key: rowKeyValue(row),
156
156
  class: "border-t border-[var(--brd)]",
157
- "data-ds-datatable-row": ""
157
+ "data-gr-datatable-row": ""
158
158
  }, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.columns, (col) => {
159
159
  return openBlock(), createElementBlock("td", {
160
160
  key: col.key,