@feugene/granularity 0.10.0 → 0.12.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 (501) 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-1uSYl98Y2.js} +5 -5
  13. package/dist/chunks/config-1uSYl98Y2.js.map +1 -0
  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-BIRO0vDJ.js} +6 -6
  20. package/dist/chunks/config-BIRO0vDJ.js.map +1 -0
  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-BWiPnygb.js +5 -0
  28. package/dist/chunks/config-BWiPnygb.js.map +1 -0
  29. package/dist/chunks/config-BX1JTrkV2.js +14 -0
  30. package/dist/chunks/config-BX1JTrkV2.js.map +1 -0
  31. package/dist/chunks/config-BXtAmU3s2.js.map +1 -0
  32. package/dist/chunks/{config-CzgNEHKi.js.map → config-Bah4oHwL.js.map} +1 -1
  33. package/dist/chunks/{config-C_egzT_K.js → config-C49QUoJL.js} +3 -3
  34. package/dist/chunks/{config-C_egzT_K.js.map → config-C49QUoJL.js.map} +1 -1
  35. package/dist/chunks/{config-3I3vqDW4.js → config-C4snOIXg.js} +1 -1
  36. package/dist/chunks/{config-3I3vqDW4.js.map → config-C4snOIXg.js.map} +1 -1
  37. package/dist/chunks/{config-DvDNney3.js → config-C7NpDrfO.js} +5 -5
  38. package/dist/chunks/{config-DvDNney3.js.map → config-C7NpDrfO.js.map} +1 -1
  39. package/dist/chunks/{config-lMDE_8A5.js.map → config-C86UzUYf.js.map} +1 -1
  40. package/dist/chunks/{config-BgBWt9-A.js.map → config-C9AcVDkv.js.map} +1 -1
  41. package/dist/chunks/config-CGHLoBlH.js.map +1 -0
  42. package/dist/chunks/{config-ChQxl75m.js.map → config-CThzliFi.js.map} +1 -1
  43. package/dist/chunks/{config-DDwBSoc_.js.map → config-Cb2PAlSD.js.map} +1 -1
  44. package/dist/chunks/{config-XspHtPsU.js → config-ClhKPJvg.js} +5 -5
  45. package/dist/chunks/{config-XspHtPsU.js.map → config-ClhKPJvg.js.map} +1 -1
  46. package/dist/chunks/{config-58Mj2rGH.js → config-Cpi9Mh2J.js} +3 -3
  47. package/dist/chunks/{config-58Mj2rGH.js.map → config-Cpi9Mh2J.js.map} +1 -1
  48. package/dist/chunks/{config-nrOj9p6I.js → config-CrG1XiE72.js} +4 -4
  49. package/dist/chunks/config-CrG1XiE72.js.map +1 -0
  50. package/dist/chunks/{config-DRpkoSvq.js → config-CziwTDDL.js} +3 -3
  51. package/dist/chunks/{config-DRpkoSvq.js.map → config-CziwTDDL.js.map} +1 -1
  52. package/dist/chunks/{config-C5-ujXCI.js.map → config-D7GZO-Dx.js.map} +1 -1
  53. package/dist/chunks/{config-CUwF4E4R.js.map → config-DBmdgoVf.js.map} +1 -1
  54. package/dist/chunks/{config-C9MblwGq.js.map → config-DICOd-2X.js.map} +1 -1
  55. package/dist/chunks/{config-C6zT56Jc2.js → config-DUcu1D682.js} +3 -3
  56. package/dist/chunks/{config-C6zT56Jc2.js.map → config-DUcu1D682.js.map} +1 -1
  57. package/dist/chunks/{config-8f8624RN.js → config-D_R56_gT.js} +5 -5
  58. package/dist/chunks/{config-8f8624RN.js.map → config-D_R56_gT.js.map} +1 -1
  59. package/dist/chunks/{config-RjfJFv1Y.js → config-DezDih8_.js} +4 -4
  60. package/dist/chunks/config-DezDih8_.js.map +1 -0
  61. package/dist/chunks/config-Dlm49Jp5.js +5 -0
  62. package/dist/chunks/config-Dlm49Jp5.js.map +1 -0
  63. package/dist/chunks/{config-B0uUCaJW.js → config-DnvPqu4g2.js} +3 -3
  64. package/dist/chunks/config-DnvPqu4g2.js.map +1 -0
  65. package/dist/chunks/config-DpqOnJiz.js.map +1 -0
  66. package/dist/chunks/{config-V3LF-b_F.js.map → config-Dxuwwepq.js.map} +1 -1
  67. package/dist/chunks/{config-Doa_gU40.js.map → config-HZto2PVy.js.map} +1 -1
  68. package/dist/chunks/{config-Dl5aZ5VR.js.map → config-JOtB4mzs.js.map} +1 -1
  69. package/dist/chunks/config-JpHA4Xx02.js.map +1 -0
  70. package/dist/chunks/{config-DkeLkzxj2.js → config-LGrZIdaZ.js} +1 -1
  71. package/dist/chunks/config-LGrZIdaZ.js.map +1 -0
  72. package/dist/chunks/{config-B3dn-gdC.js.map → config-PFg39mYo.js.map} +1 -1
  73. package/dist/chunks/{config-CU_CBd0k.js → config-QYGvEBu5.js} +2 -2
  74. package/dist/chunks/{config-CU_CBd0k.js.map → config-QYGvEBu5.js.map} +1 -1
  75. package/dist/chunks/{config-Bh4NWWsQ.js.map → config-QaIc_gRa.js.map} +1 -1
  76. package/dist/chunks/{config-vcDVCYXo.js.map → config-U4m9PSql.js.map} +1 -1
  77. package/dist/chunks/{config-C_q_4FrU.js.map → config-ZiXWIRBX.js.map} +1 -1
  78. package/dist/chunks/config-eXB87DOi2.js +9 -0
  79. package/dist/chunks/config-eXB87DOi2.js.map +1 -0
  80. package/dist/chunks/{config-hSlCXHoG.js → config-eYLZYOUS2.js} +63 -63
  81. package/dist/chunks/config-eYLZYOUS2.js.map +1 -0
  82. package/dist/chunks/{config-DDUPnue12.js.map → config-ipvU0lzP2.js.map} +1 -1
  83. package/dist/chunks/{config-B61cX08u.js → config-jBp9wVv-.js} +4 -4
  84. package/dist/chunks/{config-B61cX08u.js.map → config-jBp9wVv-.js.map} +1 -1
  85. package/dist/chunks/{config-D5ek7VSi.js.map → config-xR4XVmcy.js.map} +1 -1
  86. package/dist/chunks/context-DdNIxa1w.js +9 -0
  87. package/dist/chunks/context-DdNIxa1w.js.map +1 -0
  88. package/dist/chunks/{dialogShared-BtXUk6Zc.js.map → dialogShared-CxW62PQE.js.map} +1 -1
  89. package/dist/chunks/en-CfkDa4GX.js +144 -0
  90. package/dist/chunks/en-CfkDa4GX.js.map +1 -0
  91. package/dist/chunks/{es-CISK11Nv.js → es-CgaLnFYx.js} +3 -3
  92. package/dist/chunks/{es-CISK11Nv.js.map → es-CgaLnFYx.js.map} +1 -1
  93. package/dist/chunks/es-FkgECuCm.js +144 -0
  94. package/dist/chunks/es-FkgECuCm.js.map +1 -0
  95. package/dist/chunks/{fileValidation-c_iBg74s.js → fileValidation-C3WFaWU2.js} +2 -1
  96. package/dist/chunks/{fileValidation-c_iBg74s.js.map → fileValidation-C3WFaWU2.js.map} +1 -1
  97. package/dist/chunks/{grBadgeStyles-Cq0hH2Ls.js → grBadgeStyles-DrycBuKT.js} +13 -13
  98. package/dist/chunks/grBadgeStyles-DrycBuKT.js.map +1 -0
  99. package/dist/chunks/grButtonStyles-C7Yga_Q1.js +191 -0
  100. package/dist/chunks/grButtonStyles-C7Yga_Q1.js.map +1 -0
  101. package/dist/chunks/{grDropdownStyles-Bqx9hOzU.js → grDropdownStyles-B_-DKytw.js} +2 -2
  102. package/dist/chunks/{grDropdownStyles-Bqx9hOzU.js.map → grDropdownStyles-B_-DKytw.js.map} +1 -1
  103. package/dist/chunks/{grLoadingStyles-DmI-SJ3i.js.map → grLoadingStyles-R5sreH__.js.map} +1 -1
  104. package/dist/chunks/grModalEscStack-BXk-9mv7.js +43 -0
  105. package/dist/chunks/grModalEscStack-BXk-9mv7.js.map +1 -0
  106. package/dist/chunks/{grModalStyles-FgaKqx50.js → grModalStyles-DWd3i05Q.js} +6 -6
  107. package/dist/chunks/{grModalStyles-FgaKqx50.js.map → grModalStyles-DWd3i05Q.js.map} +1 -1
  108. package/dist/chunks/{grSelectStyles-AjWWl007.js → grSelectStyles-CLK5hRd3.js} +3 -3
  109. package/dist/chunks/grSelectStyles-CLK5hRd3.js.map +1 -0
  110. package/dist/chunks/{grStyle-D-gPHdyW.js → grStyle-Blc9otAx.js} +6 -6
  111. package/dist/chunks/grStyle-Blc9otAx.js.map +1 -0
  112. package/dist/chunks/{granularityI18n-D_7jowK2.js → granularityI18n-DoV7Ca2m.js} +1 -1
  113. package/dist/chunks/{granularityI18n-D_7jowK2.js.map → granularityI18n-DoV7Ca2m.js.map} +1 -1
  114. package/dist/chunks/info-Be2OccTu.js.map +1 -0
  115. package/dist/chunks/loader-circle-CfVLz7lb.js.map +1 -0
  116. package/dist/chunks/ru-Bl8CxpEa.js +144 -0
  117. package/dist/chunks/ru-Bl8CxpEa.js.map +1 -0
  118. package/dist/chunks/{safelist-_UVzJrgE2.js → safelist-CkF4v7DC.js} +3 -3
  119. package/dist/chunks/safelist-CkF4v7DC.js.map +1 -0
  120. package/dist/chunks/{safelist-DccvJqCE.js → safelist-Do2RtzLB.js} +3 -3
  121. package/dist/chunks/{safelist-DccvJqCE.js.map → safelist-Do2RtzLB.js.map} +1 -1
  122. package/dist/chunks/shared-B6Ay2081.js +174 -0
  123. package/dist/chunks/shared-B6Ay2081.js.map +1 -0
  124. package/dist/chunks/useAddonMeasurement-DM0akF4C.js +65 -0
  125. package/dist/chunks/useAddonMeasurement-DM0akF4C.js.map +1 -0
  126. package/dist/chunks/useEscapeToClose-C2t_S1gh.js +27 -0
  127. package/dist/chunks/useEscapeToClose-C2t_S1gh.js.map +1 -0
  128. package/dist/chunks/{useFloating-CLtbU7eD.js → useFloating-DtM6TyE4.js} +19 -4
  129. package/dist/chunks/{useFloating-CLtbU7eD.js.map → useFloating-DtM6TyE4.js.map} +1 -1
  130. package/dist/chunks/{transition-mJ3PZCHH.js → useScrollLock-K7kaP2Ud.js} +78 -13
  131. package/dist/chunks/useScrollLock-K7kaP2Ud.js.map +1 -0
  132. package/dist/chunks/x-2KXnqxiD.js.map +1 -0
  133. package/dist/chunks/x-circle-BCBURwyX.js.map +1 -0
  134. package/dist/components/GrAlert/chunks/{GrAlert-HyCjYJeL.js → GrAlert-DPJSU_fG.js} +40 -37
  135. package/dist/components/GrAlert/chunks/GrAlert-DPJSU_fG.js.map +1 -0
  136. package/dist/components/GrAlert/index.js +2 -2
  137. package/dist/components/GrAvatar/chunks/{GrAvatar-BjnPKNAL.js → GrAvatar-96CpTCq5.js} +2 -2
  138. package/dist/components/GrAvatar/chunks/{GrAvatar-BjnPKNAL.js.map → GrAvatar-96CpTCq5.js.map} +1 -1
  139. package/dist/components/GrAvatar/index.js +2 -2
  140. package/dist/components/GrBadge/chunks/{GrBadge-Cs_cVfuO.js → GrBadge-B77XlaqE.js} +3 -3
  141. package/dist/components/GrBadge/chunks/{GrBadge-Cs_cVfuO.js.map → GrBadge-B77XlaqE.js.map} +1 -1
  142. package/dist/components/GrBadge/index.js +2 -2
  143. package/dist/components/GrBadgeWrap/chunks/{GrBadgeWrap-BEnE9DyJ.js → GrBadgeWrap-CcktMOdg.js} +2 -2
  144. package/dist/components/GrBadgeWrap/chunks/{GrBadgeWrap-BEnE9DyJ.js.map → GrBadgeWrap-CcktMOdg.js.map} +1 -1
  145. package/dist/components/GrBadgeWrap/index.js +2 -2
  146. package/dist/components/GrBottomNav/chunks/{GrBottomNav-XPHwd7UQ.js.map → GrBottomNav-usuMgG8_.js.map} +1 -1
  147. package/dist/components/GrBottomNav/index.js +2 -2
  148. package/dist/components/GrButton/chunks/GrButton-BlffdeJr.js +124 -0
  149. package/dist/components/GrButton/chunks/GrButton-BlffdeJr.js.map +1 -0
  150. package/dist/components/GrButton/index.js +4 -4
  151. package/dist/components/GrButtonGroup/chunks/{GrButtonGroup-CPOH6V-P.js → GrButtonGroup-Bs9dEKfA.js} +1 -1
  152. package/dist/components/GrButtonGroup/chunks/GrButtonGroup-Bs9dEKfA.js.map +1 -0
  153. package/dist/components/GrButtonGroup/index.js +2 -2
  154. package/dist/components/GrCard/chunks/{GrCard-6yk1RRAQ.js → GrCard-DUNMkuHW.js} +3 -3
  155. package/dist/components/GrCard/chunks/GrCard-DUNMkuHW.js.map +1 -0
  156. package/dist/components/GrCard/index.js +2 -2
  157. package/dist/components/GrCheckbox/chunks/{GrCheckbox-Bt3d7ckE.js → GrCheckbox-DJhzZZdO.js} +66 -18
  158. package/dist/components/GrCheckbox/chunks/GrCheckbox-DJhzZZdO.js.map +1 -0
  159. package/dist/components/GrCheckbox/index.js +2 -2
  160. package/dist/components/GrCollapse/chunks/{GrCollapse-CU94BTAR.js → GrCollapse-CPPLh_xU.js} +12 -12
  161. package/dist/components/GrCollapse/chunks/{GrCollapse-CU94BTAR.js.map → GrCollapse-CPPLh_xU.js.map} +1 -1
  162. package/dist/components/GrCollapse/index.js +2 -2
  163. package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-Bi2KLumL.js → GrConfirmDialog-D8CkOtqv.js} +20 -14
  164. package/dist/components/GrConfirmDialog/chunks/GrConfirmDialog-D8CkOtqv.js.map +1 -0
  165. package/dist/components/GrConfirmDialog/index.js +2 -2
  166. package/dist/components/GrDataTable/chunks/{GrDataTable-ClcYiyc8.js → GrDataTable-Ds5OeGat.js} +49 -23
  167. package/dist/components/GrDataTable/chunks/GrDataTable-Ds5OeGat.js.map +1 -0
  168. package/dist/components/GrDataTable/index.js +2 -2
  169. package/dist/components/GrDialog/chunks/{GrDialog-CxK4Lj4F.js → GrDialog-Ctucxju9.js} +14 -12
  170. package/dist/components/GrDialog/chunks/GrDialog-Ctucxju9.js.map +1 -0
  171. package/dist/components/GrDialog/index.js +3 -3
  172. package/dist/components/GrDialogService/chunks/GrDialogService-CU1Fbonc.js +425 -0
  173. package/dist/components/GrDialogService/chunks/GrDialogService-CU1Fbonc.js.map +1 -0
  174. package/dist/components/GrDialogService/index.js +3 -0
  175. package/dist/components/GrDivider/chunks/GrDivider-5bcE-BB4.js +54 -0
  176. package/dist/components/GrDivider/chunks/GrDivider-5bcE-BB4.js.map +1 -0
  177. package/dist/components/GrDivider/index.js +3 -0
  178. package/dist/components/GrDrawer/chunks/{GrDrawer-BW3wtI7h.js → GrDrawer-SLGKCY2A.js} +54 -26
  179. package/dist/components/GrDrawer/chunks/GrDrawer-SLGKCY2A.js.map +1 -0
  180. package/dist/components/GrDrawer/index.js +2 -2
  181. package/dist/components/GrDropdown/chunks/GrDropdown-BnDMYP8v.js +181 -0
  182. package/dist/components/GrDropdown/chunks/GrDropdown-BnDMYP8v.js.map +1 -0
  183. package/dist/components/GrDropdown/index.js +2 -2
  184. package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu-CJom_-c2.js → GrDropdownMenu--g9Vofcq.js} +10 -10
  185. package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu-CJom_-c2.js.map → GrDropdownMenu--g9Vofcq.js.map} +1 -1
  186. package/dist/components/GrDropdownMenu/index.js +2 -2
  187. package/dist/components/GrEmptyState/chunks/{GrEmptyState-yOuZW7-t.js → GrEmptyState-CA3BiTV7.js} +3 -3
  188. package/dist/components/GrEmptyState/chunks/{GrEmptyState-yOuZW7-t.js.map → GrEmptyState-CA3BiTV7.js.map} +1 -1
  189. package/dist/components/GrEmptyState/index.js +2 -2
  190. package/dist/components/GrFileUpload/chunks/{GrFileUpload-CBKK3dgC.js → GrFileUpload-DvWPpiJS.js} +26 -23
  191. package/dist/components/GrFileUpload/chunks/GrFileUpload-DvWPpiJS.js.map +1 -0
  192. package/dist/components/GrFileUpload/index.js +3 -3
  193. package/dist/components/GrFormField/chunks/GrFormField-DnfMHx_U.js +73 -0
  194. package/dist/components/GrFormField/chunks/GrFormField-DnfMHx_U.js.map +1 -0
  195. package/dist/components/GrFormField/index.js +4 -3
  196. package/dist/components/GrFormFile/chunks/{GrFormFile-CkR6cYqf.js → GrFormFile-CXcqqdvV.js} +38 -31
  197. package/dist/components/GrFormFile/chunks/GrFormFile-CXcqqdvV.js.map +1 -0
  198. package/dist/components/GrFormFile/index.js +2 -2
  199. package/dist/components/GrFormSection/chunks/{GrFormSection-dbyzqxYk.js → GrFormSection-Ce21jcgo.js} +1 -1
  200. package/dist/components/GrFormSection/chunks/{GrFormSection-dbyzqxYk.js.map → GrFormSection-Ce21jcgo.js.map} +1 -1
  201. package/dist/components/GrFormSection/index.js +2 -2
  202. package/dist/components/GrIcon/chunks/{GrIcon-BV7RBU_0.js → GrIcon-D9AWQLk2.js} +3 -3
  203. package/dist/components/GrIcon/chunks/{GrIcon-BV7RBU_0.js.map → GrIcon-D9AWQLk2.js.map} +1 -1
  204. package/dist/components/GrIcon/index.js +2 -2
  205. package/dist/components/GrImageViewer/chunks/GrImageViewer-Dla9IBkd.js +650 -0
  206. package/dist/components/GrImageViewer/chunks/GrImageViewer-Dla9IBkd.js.map +1 -0
  207. package/dist/components/GrImageViewer/index.js +2 -2
  208. package/dist/components/GrInput/chunks/GrInput-B8dd3JaA.js +334 -0
  209. package/dist/components/GrInput/chunks/GrInput-B8dd3JaA.js.map +1 -0
  210. package/dist/components/GrInput/index.js +2 -2
  211. package/dist/components/GrInputTag/chunks/{GrInputTag-g-KdUI_Z.js → GrInputTag-zMgFqp2g.js} +27 -24
  212. package/dist/components/GrInputTag/chunks/GrInputTag-zMgFqp2g.js.map +1 -0
  213. package/dist/components/GrInputTag/index.js +2 -2
  214. package/dist/components/GrKbd/chunks/GrKbd-BEoYxWhE.js +22 -0
  215. package/dist/components/GrKbd/chunks/GrKbd-BEoYxWhE.js.map +1 -0
  216. package/dist/components/GrKbd/index.js +3 -0
  217. package/dist/components/GrLink/chunks/{GrLink-KSTmk9Yq.js → GrLink-CYUe-Q8k.js} +14 -7
  218. package/dist/components/GrLink/chunks/GrLink-CYUe-Q8k.js.map +1 -0
  219. package/dist/components/GrLink/index.js +2 -2
  220. package/dist/components/GrList/chunks/{GrList-CUW2sRm_.js → GrList-Dx772Ns4.js} +1 -1
  221. package/dist/components/GrList/chunks/{GrList-CUW2sRm_.js.map → GrList-Dx772Ns4.js.map} +1 -1
  222. package/dist/components/GrList/index.js +2 -2
  223. package/dist/components/GrLoading/chunks/{GrLoading-mfyfghxs.js → GrLoading--X_7rdbb.js} +7 -7
  224. package/dist/components/GrLoading/chunks/{GrLoading-mfyfghxs.js.map → GrLoading--X_7rdbb.js.map} +1 -1
  225. package/dist/components/GrLoading/index.js +2 -2
  226. package/dist/components/GrModal/chunks/{GrModal-CSOL3fHQ.js → GrModal-C0GZrHN3.js} +9 -62
  227. package/dist/components/GrModal/chunks/GrModal-C0GZrHN3.js.map +1 -0
  228. package/dist/components/GrModal/index.js +3 -3
  229. package/dist/components/GrNavbar/chunks/{GrNavbar-CHxwtFIR.js → GrNavbar-DW3MiIIf.js} +6 -6
  230. package/dist/components/GrNavbar/chunks/{GrNavbar-CHxwtFIR.js.map → GrNavbar-DW3MiIIf.js.map} +1 -1
  231. package/dist/components/GrNavbar/index.js +2 -2
  232. package/dist/components/GrNumberInput/chunks/{GrNumberInput-ClPBwkxx.js → GrNumberInput-DxCEvL7V.js} +144 -72
  233. package/dist/components/GrNumberInput/chunks/GrNumberInput-DxCEvL7V.js.map +1 -0
  234. package/dist/components/GrNumberInput/index.js +2 -2
  235. package/dist/components/GrPagination/chunks/{GrPagination-D2GS0ShQ.js → GrPagination-mlyfLjQY.js} +76 -25
  236. package/dist/components/GrPagination/chunks/GrPagination-mlyfLjQY.js.map +1 -0
  237. package/dist/components/GrPagination/index.js +2 -2
  238. package/dist/components/GrProgressBar/chunks/{GrProgressBar-BBSFpVEq.js → GrProgressBar-CC3z-Zqp.js} +3 -3
  239. package/dist/components/GrProgressBar/chunks/{GrProgressBar-BBSFpVEq.js.map → GrProgressBar-CC3z-Zqp.js.map} +1 -1
  240. package/dist/components/GrProgressBar/index.js +2 -2
  241. package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-D_TFqKsF.js → GrPromptDialog-C-_BMNuY.js} +31 -23
  242. package/dist/components/GrPromptDialog/chunks/GrPromptDialog-C-_BMNuY.js.map +1 -0
  243. package/dist/components/GrPromptDialog/index.js +2 -2
  244. package/dist/components/GrRadio/chunks/{GrRadio-CSbTnrom.js → GrRadio-Dr-pvs_9.js} +6 -6
  245. package/dist/components/GrRadio/chunks/{GrRadio-CSbTnrom.js.map → GrRadio-Dr-pvs_9.js.map} +1 -1
  246. package/dist/components/GrRadio/index.js +2 -2
  247. package/dist/components/GrRadioGroup/chunks/{GrRadioGroup-DsrnTygR.js → GrRadioGroup-nOdvfV_g.js} +3 -3
  248. package/dist/components/GrRadioGroup/chunks/{GrRadioGroup-DsrnTygR.js.map → GrRadioGroup-nOdvfV_g.js.map} +1 -1
  249. package/dist/components/GrRadioGroup/index.js +2 -2
  250. package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-K1uZ1mYD.js → GrResponseErrorBanner-BWJNe2gr.js} +21 -18
  251. package/dist/components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-BWJNe2gr.js.map +1 -0
  252. package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-bM8FC_Bw.js → GrResponseErrorBanner-Cdu9ekK9.js} +5 -5
  253. package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-bM8FC_Bw.js.map → GrResponseErrorBanner-Cdu9ekK9.js.map} +1 -1
  254. package/dist/components/GrResponseErrorBanner/index.js +2 -2
  255. package/dist/components/GrSegmented/chunks/{GrSegmented-DpZGs4VX.js → GrSegmented-C1y0UXpQ.js} +5 -5
  256. package/dist/components/GrSegmented/chunks/{GrSegmented-DpZGs4VX.js.map → GrSegmented-C1y0UXpQ.js.map} +1 -1
  257. package/dist/components/GrSegmented/index.js +2 -2
  258. package/dist/components/GrSelect/chunks/{GrSelect-DSz7jvUb.js → GrSelect-BVCmitqa.js} +227 -87
  259. package/dist/components/GrSelect/chunks/GrSelect-BVCmitqa.js.map +1 -0
  260. package/dist/components/GrSelect/index.js +2 -2
  261. package/dist/components/GrSidebar/chunks/GrSidebar-DkWozzwA.js +238 -0
  262. package/dist/components/GrSidebar/chunks/GrSidebar-DkWozzwA.js.map +1 -0
  263. package/dist/components/GrSidebar/index.js +3 -3
  264. package/dist/components/GrSkeleton/chunks/{GrSkeleton-B05K0QKh.js → GrSkeleton-DsN-_CDZ.js} +1 -1
  265. package/dist/components/GrSkeleton/chunks/{GrSkeleton-B05K0QKh.js.map → GrSkeleton-DsN-_CDZ.js.map} +1 -1
  266. package/dist/components/GrSkeleton/index.js +2 -2
  267. package/dist/components/GrSwitch/chunks/{GrSwitch-CSRtcN5-.js → GrSwitch-DAioyccZ.js} +10 -10
  268. package/dist/components/GrSwitch/chunks/{GrSwitch-CSRtcN5-.js.map → GrSwitch-DAioyccZ.js.map} +1 -1
  269. package/dist/components/GrSwitch/index.js +2 -2
  270. package/dist/components/GrTabPanels/chunks/GrTabPanels-DbKybwe-.js +68 -0
  271. package/dist/components/GrTabPanels/chunks/GrTabPanels-DbKybwe-.js.map +1 -0
  272. package/dist/components/GrTabPanels/index.js +3 -0
  273. package/dist/components/GrTable/chunks/{GrTable-dTWUxzRm.js → GrTable-Db3hRnKA.js} +3 -3
  274. package/dist/components/GrTable/chunks/{GrTable-dTWUxzRm.js.map → GrTable-Db3hRnKA.js.map} +1 -1
  275. package/dist/components/GrTable/index.js +2 -2
  276. package/dist/components/GrTabs/chunks/{GrTabs-BfeVNMFJ.js → GrTabs-DsLwWoRz.js} +9 -4
  277. package/dist/components/GrTabs/chunks/GrTabs-DsLwWoRz.js.map +1 -0
  278. package/dist/components/GrTabs/index.js +2 -2
  279. package/dist/components/GrTextarea/chunks/{GrTextarea-CBBzpF2S.js → GrTextarea-CKukGlNl.js} +17 -7
  280. package/dist/components/GrTextarea/chunks/GrTextarea-CKukGlNl.js.map +1 -0
  281. package/dist/components/GrTextarea/index.js +2 -2
  282. package/dist/components/GrToaster/chunks/GrToaster-L2cu6cSR.js +189 -0
  283. package/dist/components/GrToaster/chunks/GrToaster-L2cu6cSR.js.map +1 -0
  284. package/dist/components/GrToaster/index.js +2 -2
  285. package/dist/components/GrTooltip/chunks/{GrTooltip-BC-40SA5.js → GrTooltip-BeyZ8ssR.js} +10 -10
  286. package/dist/components/GrTooltip/chunks/{GrTooltip-BC-40SA5.js.map → GrTooltip-BeyZ8ssR.js.map} +1 -1
  287. package/dist/components/GrTooltip/index.js +2 -2
  288. package/dist/components/GrTree/chunks/{GrTree-uZr5SyQI.js → GrTree-B2_yW6g1.js} +145 -41
  289. package/dist/components/GrTree/chunks/GrTree-B2_yW6g1.js.map +1 -0
  290. package/dist/components/GrTree/index.js +2 -2
  291. package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-CytivcCa.js → GrTreeSelect-0aM62xyu.js} +16 -16
  292. package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-CytivcCa.js.map → GrTreeSelect-0aM62xyu.js.map} +1 -1
  293. package/dist/components/GrTreeSelect/index.js +2 -2
  294. package/dist/composables/useTheme.js +48 -8
  295. package/dist/composables/useTheme.js.map +1 -1
  296. package/dist/composables/useToast.js +88 -26
  297. package/dist/composables/useToast.js.map +1 -1
  298. package/dist/directives/autofocus.js.map +1 -1
  299. package/dist/directives/autosize.js.map +1 -1
  300. package/dist/directives/clickOutside.js.map +1 -1
  301. package/dist/directives/dropzone.js +6 -5
  302. package/dist/directives/dropzone.js.map +1 -1
  303. package/dist/directives/hotkey.js +24 -7
  304. package/dist/directives/hotkey.js.map +1 -1
  305. package/dist/directives/loading.js +2 -2
  306. package/dist/directives/loading.js.map +1 -1
  307. package/dist/fileValidation/index.js +1 -1
  308. package/dist/granular-provider-node.js +7 -7
  309. package/dist/granular-provider-node.js.map +1 -1
  310. package/dist/granular-provider.js +1 -1
  311. package/dist/granular-provider.js.map +1 -1
  312. package/dist/i18n/all.js +1 -1
  313. package/dist/i18n/all.js.map +1 -1
  314. package/dist/i18n/index.js +2 -2
  315. package/dist/index.js +116 -534
  316. package/dist/index.js.map +1 -1
  317. package/dist/styles/base.css +54 -0
  318. package/dist/styles/index.css +15 -0
  319. package/dist/styles/preflight.css +33 -0
  320. package/dist/styles/themes/dark.css +107 -0
  321. package/dist/styles/themes/light.css +98 -0
  322. package/dist/styles/tokens.css +135 -0
  323. package/dist/types/src/components/GrButton/GrButton.vue.d.ts +25 -2
  324. package/dist/types/src/components/GrCheckbox/GrCheckbox.vue.d.ts +7 -2
  325. package/dist/types/src/components/GrConfirmDialog/GrConfirmDialog.vue.d.ts +8 -8
  326. package/dist/types/src/components/GrDataTable/GrDataTable.vue.d.ts +29 -5
  327. package/dist/types/src/components/GrDialog/GrDialog.vue.d.ts +2 -2
  328. package/dist/types/src/components/GrDialog/GrDialogHeader.vue.d.ts +2 -2
  329. package/dist/types/src/components/GrDivider/GrDivider.vue.d.ts +58 -0
  330. package/dist/types/src/components/GrDivider/config.d.ts +1 -0
  331. package/dist/types/src/components/GrDivider/index.d.ts +4 -0
  332. package/dist/types/src/components/GrDrawer/GrDrawer.vue.d.ts +6 -6
  333. package/dist/types/src/components/GrDropdown/GrDropdown.vue.d.ts +7 -0
  334. package/dist/types/src/components/GrDropdownMenu/GrDropdownMenu.vue.d.ts +6 -0
  335. package/dist/types/src/components/GrFileUpload/GrFileUpload.vue.d.ts +4 -4
  336. package/dist/types/src/components/GrFormField/GrFormField.vue.d.ts +15 -2
  337. package/dist/types/src/components/GrFormField/context.d.ts +20 -0
  338. package/dist/types/src/components/GrFormField/index.d.ts +1 -0
  339. package/dist/types/src/components/GrFormFile/GrFormFile.vue.d.ts +11 -11
  340. package/dist/types/src/components/GrImageViewer/GrImageViewer.vue.d.ts +22 -18
  341. package/dist/types/src/components/GrImageViewer/composables/useViewerKeyboard.d.ts +20 -0
  342. package/dist/types/src/components/GrImageViewer/composables/useWheelGesture.d.ts +16 -0
  343. package/dist/types/src/components/GrImageViewer/composables/useZoomPan.d.ts +50 -0
  344. package/dist/types/src/components/GrInput/GrInput.vue.d.ts +55 -2
  345. package/dist/types/src/components/GrInput/grInputStyles.d.ts +3 -3
  346. package/dist/types/src/components/GrInputTag/GrInputTag.vue.d.ts +2 -2
  347. package/dist/types/src/components/GrKbd/GrKbd.vue.d.ts +46 -0
  348. package/dist/types/src/components/GrKbd/config.d.ts +1 -0
  349. package/dist/types/src/components/GrKbd/index.d.ts +4 -0
  350. package/dist/types/src/components/GrLink/GrLink.vue.d.ts +12 -6
  351. package/dist/types/src/components/GrLink/grLinkStyles.d.ts +31 -3
  352. package/dist/types/src/components/GrLink/index.d.ts +1 -1
  353. package/dist/types/src/components/GrLoading/GrLoading.vue.d.ts +1 -1
  354. package/dist/types/src/components/GrModal/grModalStyles.d.ts +1 -1
  355. package/dist/types/src/components/GrNumberInput/GrNumberInput.vue.d.ts +33 -4
  356. package/dist/types/src/components/GrPagination/GrPagination.vue.d.ts +13 -1
  357. package/dist/types/src/components/GrPromptDialog/GrPromptDialog.vue.d.ts +12 -12
  358. package/dist/types/src/components/GrSegmented/GrSegmented.vue.d.ts +1 -1
  359. package/dist/types/src/components/GrSegmented/grSegmentedStyles.d.ts +5 -5
  360. package/dist/types/src/components/GrSelect/GrSelect.vue.d.ts +3 -3
  361. package/dist/types/src/components/GrSelect/grSelectStyles.d.ts +2 -1
  362. package/dist/types/src/components/GrSidebar/GrSidebar.vue.d.ts +33 -10
  363. package/dist/types/src/components/GrSidebar/GrSidebarItem.vue.d.ts +64 -0
  364. package/dist/types/src/components/GrSidebar/index.d.ts +1 -0
  365. package/dist/types/src/components/GrSidebar/sidebarContext.d.ts +9 -0
  366. package/dist/types/src/components/GrSwitch/GrSwitch.vue.d.ts +1 -1
  367. package/dist/types/src/components/GrSwitch/grSwitchStyles.d.ts +2 -2
  368. package/dist/types/src/components/GrTabPanels/GrTabPanel.vue.d.ts +46 -0
  369. package/dist/types/src/components/GrTabPanels/GrTabPanels.vue.d.ts +51 -0
  370. package/dist/types/src/components/GrTabPanels/config.d.ts +5 -0
  371. package/dist/types/src/components/GrTabPanels/context.d.ts +9 -0
  372. package/dist/types/src/components/GrTabPanels/index.d.ts +6 -0
  373. package/dist/types/src/components/GrTabs/GrTabs.vue.d.ts +6 -0
  374. package/dist/types/src/components/GrToaster/GrToaster.vue.d.ts +9 -4
  375. package/dist/types/src/components/GrTree/GrTree.vue.d.ts +1 -1
  376. package/dist/types/src/components/GrTree/grTreeInteractionContext.d.ts +2 -0
  377. package/dist/types/src/components/GrTreeSelect/GrTreeSelect.vue.d.ts +2 -2
  378. package/dist/types/src/components/GrTreeSelect/grTreeSelectStyles.d.ts +1 -1
  379. package/dist/types/src/components/GrTreeSelect/grTreeSelectTypes.d.ts +1 -1
  380. package/dist/types/src/composables/internal/useAddonMeasurement.d.ts +18 -0
  381. package/dist/types/src/composables/internal/useEscapeToClose.d.ts +11 -0
  382. package/dist/types/src/composables/internal/useScrollLock.d.ts +24 -0
  383. package/dist/types/src/composables/useTheme.d.ts +5 -2
  384. package/dist/types/src/composables/useToast.d.ts +33 -1
  385. package/dist/types/src/directives/hotkey.d.ts +14 -0
  386. package/dist/types/src/granular-provider/shared.d.ts +4 -3
  387. package/dist/types/src/i18n/messages/en.d.ts +130 -0
  388. package/dist/types/src/i18n/messages/es.d.ts +130 -0
  389. package/dist/types/src/i18n/messages/ru.d.ts +130 -0
  390. package/dist/types/src/index.d.ts +5 -2
  391. package/dist/vue/index.js.map +1 -1
  392. package/dist/web-types.json +4922 -0
  393. package/package.json +38 -20
  394. package/dist/chunks/arrow-up-DZdIrpaF.js.map +0 -1
  395. package/dist/chunks/config-A-iei0Ux.js.map +0 -1
  396. package/dist/chunks/config-B0uUCaJW.js.map +0 -1
  397. package/dist/chunks/config-BLa1TEGm2.js.map +0 -1
  398. package/dist/chunks/config-BduXEXjt.js.map +0 -1
  399. package/dist/chunks/config-BuoIngj32.js.map +0 -1
  400. package/dist/chunks/config-C8MM2Dg0.js.map +0 -1
  401. package/dist/chunks/config-CWTfyPNI.js.map +0 -1
  402. package/dist/chunks/config-D_Pafsjq2.js.map +0 -1
  403. package/dist/chunks/config-DkeLkzxj2.js.map +0 -1
  404. package/dist/chunks/config-NkbzVFZo.js +0 -59
  405. package/dist/chunks/config-NkbzVFZo.js.map +0 -1
  406. package/dist/chunks/config-RjfJFv1Y.js.map +0 -1
  407. package/dist/chunks/config-hSlCXHoG.js.map +0 -1
  408. package/dist/chunks/config-nrOj9p6I.js.map +0 -1
  409. package/dist/chunks/en-B_fSdoTi.js +0 -72
  410. package/dist/chunks/en-B_fSdoTi.js.map +0 -1
  411. package/dist/chunks/es-DKP6fLir.js +0 -72
  412. package/dist/chunks/es-DKP6fLir.js.map +0 -1
  413. package/dist/chunks/grBadgeStyles-Cq0hH2Ls.js.map +0 -1
  414. package/dist/chunks/grButtonStyles-DKuXUemw.js +0 -191
  415. package/dist/chunks/grButtonStyles-DKuXUemw.js.map +0 -1
  416. package/dist/chunks/grSelectStyles-AjWWl007.js.map +0 -1
  417. package/dist/chunks/grStyle-D-gPHdyW.js.map +0 -1
  418. package/dist/chunks/info-C0bHmdZq.js.map +0 -1
  419. package/dist/chunks/loader-circle-BUntgosj.js.map +0 -1
  420. package/dist/chunks/ru-S6VlnurJ.js +0 -72
  421. package/dist/chunks/ru-S6VlnurJ.js.map +0 -1
  422. package/dist/chunks/safelist-_UVzJrgE2.js.map +0 -1
  423. package/dist/chunks/shared-DpjTvFno.js +0 -169
  424. package/dist/chunks/shared-DpjTvFno.js.map +0 -1
  425. package/dist/chunks/transition-mJ3PZCHH.js.map +0 -1
  426. package/dist/chunks/x-Pa6C2hwi.js.map +0 -1
  427. package/dist/chunks/x-circle-DQSlBLmX.js.map +0 -1
  428. package/dist/components/GrAlert/chunks/GrAlert-HyCjYJeL.js.map +0 -1
  429. package/dist/components/GrButton/chunks/GrButton-CPDKonoB.js +0 -83
  430. package/dist/components/GrButton/chunks/GrButton-CPDKonoB.js.map +0 -1
  431. package/dist/components/GrButtonGroup/chunks/GrButtonGroup-CPOH6V-P.js.map +0 -1
  432. package/dist/components/GrCard/chunks/GrCard-6yk1RRAQ.js.map +0 -1
  433. package/dist/components/GrCheckbox/chunks/GrCheckbox-Bt3d7ckE.js.map +0 -1
  434. package/dist/components/GrConfirmDialog/chunks/GrConfirmDialog-Bi2KLumL.js.map +0 -1
  435. package/dist/components/GrDataTable/chunks/GrDataTable-ClcYiyc8.js.map +0 -1
  436. package/dist/components/GrDialog/chunks/GrDialog-CxK4Lj4F.js.map +0 -1
  437. package/dist/components/GrDrawer/chunks/GrDrawer-BW3wtI7h.js.map +0 -1
  438. package/dist/components/GrDropdown/chunks/GrDropdown-BGKeEfZ1.js +0 -105
  439. package/dist/components/GrDropdown/chunks/GrDropdown-BGKeEfZ1.js.map +0 -1
  440. package/dist/components/GrFileUpload/chunks/GrFileUpload-CBKK3dgC.js.map +0 -1
  441. package/dist/components/GrFormField/chunks/GrFormField-U7c_aDPJ.js +0 -35
  442. package/dist/components/GrFormField/chunks/GrFormField-U7c_aDPJ.js.map +0 -1
  443. package/dist/components/GrFormFile/chunks/GrFormFile-CkR6cYqf.js.map +0 -1
  444. package/dist/components/GrImageViewer/chunks/GrImageViewer-BG40DsHa.js +0 -550
  445. package/dist/components/GrImageViewer/chunks/GrImageViewer-BG40DsHa.js.map +0 -1
  446. package/dist/components/GrInput/chunks/GrInput-gwFQ1sk4.js +0 -211
  447. package/dist/components/GrInput/chunks/GrInput-gwFQ1sk4.js.map +0 -1
  448. package/dist/components/GrInputTag/chunks/GrInputTag-g-KdUI_Z.js.map +0 -1
  449. package/dist/components/GrLink/chunks/GrLink-KSTmk9Yq.js.map +0 -1
  450. package/dist/components/GrModal/chunks/GrModal-CSOL3fHQ.js.map +0 -1
  451. package/dist/components/GrNumberInput/chunks/GrNumberInput-ClPBwkxx.js.map +0 -1
  452. package/dist/components/GrPagination/chunks/GrPagination-D2GS0ShQ.js.map +0 -1
  453. package/dist/components/GrPromptDialog/chunks/GrPromptDialog-D_TFqKsF.js.map +0 -1
  454. package/dist/components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-K1uZ1mYD.js.map +0 -1
  455. package/dist/components/GrSelect/chunks/GrSelect-DSz7jvUb.js.map +0 -1
  456. package/dist/components/GrSidebar/chunks/GrSidebar-BW8LRMZ-.js +0 -44
  457. package/dist/components/GrSidebar/chunks/GrSidebar-BW8LRMZ-.js.map +0 -1
  458. package/dist/components/GrTabs/chunks/GrTabs-BfeVNMFJ.js.map +0 -1
  459. package/dist/components/GrTextarea/chunks/GrTextarea-CBBzpF2S.js.map +0 -1
  460. package/dist/components/GrToaster/chunks/GrToaster-C6_iHk2J.js +0 -172
  461. package/dist/components/GrToaster/chunks/GrToaster-C6_iHk2J.js.map +0 -1
  462. package/dist/components/GrTree/chunks/GrTree-uZr5SyQI.js.map +0 -1
  463. /package/dist/chunks/{_plugin-vue_export-helper-DQR7Sy7Q.js → _plugin-vue_export-helper-BOaGB7Aw.js} +0 -0
  464. /package/dist/chunks/{adapter-BqqjEZGU.js → adapter-CAOxmn2G.js} +0 -0
  465. /package/dist/chunks/{arrow-up-DZdIrpaF.js → arrow-up-C_G4jg8M.js} +0 -0
  466. /package/dist/chunks/{classTokens-BPeBXNzu.js → classTokens-BzazaERD.js} +0 -0
  467. /package/dist/chunks/{config-DZrlovR42.js → config-8Pcutu1j2.js} +0 -0
  468. /package/dist/chunks/{config-VJuoznpH.js → config-B0qIpo8m.js} +0 -0
  469. /package/dist/chunks/{config-DbghHyY_.js → config-BEegFP74.js} +0 -0
  470. /package/dist/chunks/{config-BeBsN0c12.js → config-BLHqZhy-2.js} +0 -0
  471. /package/dist/chunks/{config-BV4vBzdm.js → config-BNu8lFQB.js} +0 -0
  472. /package/dist/chunks/{config-DhQc1TRY.js → config-BUHuGBik.js} +0 -0
  473. /package/dist/chunks/{config-CPSdAjUi.js → config-BWGGp7uV.js} +0 -0
  474. /package/dist/chunks/{config-BduXEXjt.js → config-BXtAmU3s2.js} +0 -0
  475. /package/dist/chunks/{config-CzgNEHKi.js → config-Bah4oHwL.js} +0 -0
  476. /package/dist/chunks/{config-lMDE_8A5.js → config-C86UzUYf.js} +0 -0
  477. /package/dist/chunks/{config-BgBWt9-A.js → config-C9AcVDkv.js} +0 -0
  478. /package/dist/chunks/{config-BuoIngj32.js → config-CGHLoBlH.js} +0 -0
  479. /package/dist/chunks/{config-ChQxl75m.js → config-CThzliFi.js} +0 -0
  480. /package/dist/chunks/{config-DDwBSoc_.js → config-Cb2PAlSD.js} +0 -0
  481. /package/dist/chunks/{config-C5-ujXCI.js → config-D7GZO-Dx.js} +0 -0
  482. /package/dist/chunks/{config-CUwF4E4R.js → config-DBmdgoVf.js} +0 -0
  483. /package/dist/chunks/{config-C9MblwGq.js → config-DICOd-2X.js} +0 -0
  484. /package/dist/chunks/{config-BLa1TEGm2.js → config-DpqOnJiz.js} +0 -0
  485. /package/dist/chunks/{config-V3LF-b_F.js → config-Dxuwwepq.js} +0 -0
  486. /package/dist/chunks/{config-Doa_gU40.js → config-HZto2PVy.js} +0 -0
  487. /package/dist/chunks/{config-Dl5aZ5VR.js → config-JOtB4mzs.js} +0 -0
  488. /package/dist/chunks/{config-CWTfyPNI.js → config-JpHA4Xx02.js} +0 -0
  489. /package/dist/chunks/{config-B3dn-gdC.js → config-PFg39mYo.js} +0 -0
  490. /package/dist/chunks/{config-Bh4NWWsQ.js → config-QaIc_gRa.js} +0 -0
  491. /package/dist/chunks/{config-vcDVCYXo.js → config-U4m9PSql.js} +0 -0
  492. /package/dist/chunks/{config-C_q_4FrU.js → config-ZiXWIRBX.js} +0 -0
  493. /package/dist/chunks/{config-DDUPnue12.js → config-ipvU0lzP2.js} +0 -0
  494. /package/dist/chunks/{config-D5ek7VSi.js → config-xR4XVmcy.js} +0 -0
  495. /package/dist/chunks/{dialogShared-BtXUk6Zc.js → dialogShared-CxW62PQE.js} +0 -0
  496. /package/dist/chunks/{grLoadingStyles-DmI-SJ3i.js → grLoadingStyles-R5sreH__.js} +0 -0
  497. /package/dist/chunks/{info-C0bHmdZq.js → info-Be2OccTu.js} +0 -0
  498. /package/dist/chunks/{loader-circle-BUntgosj.js → loader-circle-CfVLz7lb.js} +0 -0
  499. /package/dist/chunks/{x-Pa6C2hwi.js → x-2KXnqxiD.js} +0 -0
  500. /package/dist/chunks/{x-circle-DQSlBLmX.js → x-circle-BCBURwyX.js} +0 -0
  501. /package/dist/components/GrBottomNav/chunks/{GrBottomNav-XPHwd7UQ.js → GrBottomNav-usuMgG8_.js} +0 -0
@@ -1,23 +1,25 @@
1
- import { t as x_default } from "../../../chunks/x-Pa6C2hwi.js";
2
- import { t as GrButton_default } from "../../GrButton/chunks/GrButton-CPDKonoB.js";
3
- import { t as GrIcon_default } from "../../GrIcon/chunks/GrIcon-BV7RBU_0.js";
4
- import { a as Ve, n as he, o as Ye, r as Ge, t as Se } from "../../../chunks/transition-mJ3PZCHH.js";
5
- import { i as grDrawerPanelEnterFrom, r as grDrawerPanelClass } from "../../../chunks/config-C6zT56Jc2.js";
6
- import { Teleport, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, normalizeClass, openBlock, renderSlot, toDisplayString, unref, useId, withCtx } from "vue";
1
+ import { t as x_default } from "../../../chunks/x-2KXnqxiD.js";
2
+ import { t as useGranularityTranslations } from "../../../chunks/granularityI18n-DoV7Ca2m.js";
3
+ import { t as GrButton_default } from "../../GrButton/chunks/GrButton-BlffdeJr.js";
4
+ import { t as GrIcon_default } from "../../GrIcon/chunks/GrIcon-D9AWQLk2.js";
5
+ import { i as Ge, n as Se, o as Ve, r as he, s as Ye, t as useScrollLock } from "../../../chunks/useScrollLock-K7kaP2Ud.js";
6
+ import { n as removeGrModalEsc, t as pushGrModalEsc } from "../../../chunks/grModalEscStack-BXk-9mv7.js";
7
+ import { i as grDrawerPanelEnterFrom, r as grDrawerPanelClass } from "../../../chunks/config-DUcu1D682.js";
8
+ import { Teleport, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, normalizeClass, onBeforeUnmount, openBlock, renderSlot, toDisplayString, unref, useId, watch, withCtx } from "vue";
7
9
  //#region src/components/GrDrawer/GrDrawer.vue?vue&type=script&setup=true&lang.ts
8
10
  var _hoisted_1 = { class: "fixed inset-0" };
9
11
  var _hoisted_2 = {
10
- "data-ds-drawer-header": "",
12
+ "data-gr-drawer-header": "",
11
13
  class: "px-5 py-4 border-b border-[var(--brd)] flex items-center justify-between gap-4"
12
14
  };
13
15
  var _hoisted_3 = {
14
- "data-ds-drawer-body": "",
16
+ "data-gr-drawer-body": "",
15
17
  class: "flex-1 overflow-y-auto"
16
18
  };
17
19
  var _hoisted_4 = { class: "p-5" };
18
20
  var _hoisted_5 = {
19
21
  key: 0,
20
- "data-ds-drawer-footer": "",
22
+ "data-gr-drawer-footer": "",
21
23
  class: "px-5 py-4 border-t border-[var(--brd)]"
22
24
  };
23
25
  //#endregion
@@ -37,13 +39,17 @@ var GrDrawer_default = /* @__PURE__ */ defineComponent({
37
39
  },
38
40
  side: { default: "right" },
39
41
  size: { default: "md" },
40
- closeLabel: { default: "Close" }
42
+ closeLabel: { default: void 0 }
41
43
  },
42
44
  emits: ["update:modelValue"],
43
45
  setup(__props, { emit: __emit }) {
44
46
  const props = __props;
47
+ const { t } = useGranularityTranslations();
48
+ const resolvedTitle = computed(() => props.title ?? t("gr.drawer.title", "Drawer"));
49
+ const resolvedCloseLabel = computed(() => props.closeLabel ?? t("gr.common.close", "Close"));
45
50
  const emit = __emit;
46
51
  const titleId = useId();
52
+ const isClient = typeof window !== "undefined";
47
53
  const panelClass = computed(() => {
48
54
  return grDrawerPanelClass({
49
55
  side: props.side,
@@ -62,26 +68,48 @@ var GrDrawer_default = /* @__PURE__ */ defineComponent({
62
68
  if (!props.closeOnBackdrop) return;
63
69
  close();
64
70
  }
65
- function onKeydown(e) {
66
- if (e.key !== "Escape") return;
67
- if (!props.closeOnEsc) return;
68
- e.stopPropagation();
69
- e.preventDefault();
70
- close();
71
+ const { lock: lockBodyScroll, unlock: unlockBodyScroll } = useScrollLock();
72
+ let escEntryId = null;
73
+ function registerEsc() {
74
+ if (escEntryId !== null) return;
75
+ escEntryId = pushGrModalEsc({
76
+ shouldClose: () => props.closeOnEsc,
77
+ close
78
+ });
71
79
  }
80
+ function unregisterEsc() {
81
+ if (escEntryId === null) return;
82
+ removeGrModalEsc(escEntryId);
83
+ escEntryId = null;
84
+ }
85
+ watch(() => props.modelValue, (value) => {
86
+ if (value) {
87
+ lockBodyScroll();
88
+ registerEsc();
89
+ } else {
90
+ unlockBodyScroll();
91
+ unregisterEsc();
92
+ }
93
+ }, { immediate: true });
94
+ onBeforeUnmount(() => {
95
+ unlockBodyScroll();
96
+ unregisterEsc();
97
+ });
72
98
  return (_ctx, _cache) => {
73
- return openBlock(), createBlock(Teleport, { to: "body" }, [createVNode(unref(Se), {
99
+ return openBlock(), createBlock(Teleport, {
100
+ to: "body",
101
+ disabled: !isClient
102
+ }, [createVNode(unref(Se), {
74
103
  show: __props.modelValue,
75
104
  as: "template"
76
105
  }, {
77
106
  default: withCtx(() => [createVNode(unref(Ye), {
78
107
  as: "div",
79
- "data-ds-drawer": "",
108
+ "data-gr-drawer": "",
80
109
  class: "fixed inset-0 z-50",
81
110
  static: true,
82
111
  "aria-labelledby": unref(titleId),
83
- onClose: onDialogClose,
84
- onKeydown
112
+ onClose: onDialogClose
85
113
  }, {
86
114
  default: withCtx(() => [createElementVNode("div", _hoisted_1, [createVNode(unref(he), {
87
115
  as: "template",
@@ -93,7 +121,7 @@ var GrDrawer_default = /* @__PURE__ */ defineComponent({
93
121
  "leave-to": "opacity-0"
94
122
  }, {
95
123
  default: withCtx(() => [createElementVNode("div", {
96
- "data-ds-drawer-overlay": "",
124
+ "data-gr-drawer-overlay": "",
97
125
  class: "fixed inset-0 bg-black/40",
98
126
  "aria-hidden": "true",
99
127
  onClick: onOverlayClick
@@ -109,7 +137,7 @@ var GrDrawer_default = /* @__PURE__ */ defineComponent({
109
137
  "leave-to": panelEnterFrom.value
110
138
  }, {
111
139
  default: withCtx(() => [createVNode(unref(Ge), {
112
- "data-ds-drawer-panel": "",
140
+ "data-gr-drawer-panel": "",
113
141
  tabindex: "-1",
114
142
  class: normalizeClass(["fixed inset-y-0 flex flex-col", panelClass.value])
115
143
  }, {
@@ -117,16 +145,16 @@ var GrDrawer_default = /* @__PURE__ */ defineComponent({
117
145
  createElementVNode("div", _hoisted_2, [createVNode(unref(Ve), {
118
146
  id: unref(titleId),
119
147
  as: "div",
120
- "data-ds-drawer-title": "",
148
+ "data-gr-drawer-title": "",
121
149
  class: "text-[14px] font-700 min-w-0 truncate"
122
150
  }, {
123
- default: withCtx(() => [renderSlot(_ctx.$slots, "title", {}, () => [createTextVNode(toDisplayString(__props.title ?? "Drawer"), 1)])]),
151
+ default: withCtx(() => [renderSlot(_ctx.$slots, "title", {}, () => [createTextVNode(toDisplayString(resolvedTitle.value), 1)])]),
124
152
  _: 3
125
153
  }, 8, ["id"]), createVNode(GrButton_default, {
126
154
  variant: "ghost",
127
155
  size: "sm",
128
156
  square: "",
129
- "aria-label": __props.closeLabel,
157
+ "aria-label": resolvedCloseLabel.value,
130
158
  onClick: close
131
159
  }, {
132
160
  default: withCtx(() => [createVNode(GrIcon_default, {
@@ -148,7 +176,7 @@ var GrDrawer_default = /* @__PURE__ */ defineComponent({
148
176
  _: 3
149
177
  }, 8, ["aria-labelledby"])]),
150
178
  _: 3
151
- }, 8, ["show"])]);
179
+ }, 8, ["show"])], 8, ["disabled"]);
152
180
  };
153
181
  }
154
182
  });
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GrDrawer-SLGKCY2A.js","names":["$slots"],"sources":["../../../../src/components/GrDrawer/GrDrawer.vue","../../../../src/components/GrDrawer/GrDrawer.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, onBeforeUnmount, useId, watch } from 'vue'\nimport { Dialog, DialogPanel, DialogTitle, TransitionChild, TransitionRoot } from '@headlessui/vue'\n\nimport GrButton from '../GrButton/GrButton.vue'\nimport GrIcon from '../GrIcon/GrIcon.vue'\nimport { useGranularityTranslations } from '../../internal/granularityI18n'\n// Переиспользуем инфраструктуру оверлеев GrModal: общий Esc-стек (Esc закрывает\n// верхний оверлей независимо от дерева рендера) и reference-counted scroll-lock.\nimport { pushGrModalEsc, removeGrModalEsc } from '../GrModal/grModalEscStack'\nimport { useScrollLock } from '../../composables/internal/useScrollLock'\nimport {\n grDrawerPanelClass,\n grDrawerPanelEnterFrom,\n type GrDrawerSide,\n type GrDrawerSize,\n} from './grDrawerStyles'\n\nimport IconClose from '~icons/lucide/x'\n\nexport interface GrDrawerProps {\n /** Контроль открытия через v-model. */\n modelValue: boolean\n /** Заголовок; если передан — покажется в хедере. Можно переопределить слотом `#title`. */\n title?: string\n /** Закрывать при клике по бэкдропу / через HeadlessUI close. */\n closeOnBackdrop?: boolean\n /** Закрывать по Esc. */\n closeOnEsc?: boolean\n /** Сторона, с которой выезжает панель. */\n side?: GrDrawerSide\n /** Размер панели. */\n size?: GrDrawerSize\n /** i18n-friendly aria-label для кнопки закрытия. */\n closeLabel?: string\n}\n\nconst props = withDefaults(defineProps<GrDrawerProps>(), {\n title: undefined,\n closeOnBackdrop: true,\n closeOnEsc: true,\n side: 'right',\n size: 'md',\n closeLabel: undefined,\n})\n\nconst { t } = useGranularityTranslations()\nconst resolvedTitle = computed(() => props.title ?? t('gr.drawer.title', 'Drawer'))\nconst resolvedCloseLabel = computed(() => props.closeLabel ?? t('gr.common.close', 'Close'))\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n}>()\n\nconst titleId = useId()\n\n// SSR-guard: на сервере `document.body` недоступен — отключаем teleport\n// (в клиенте включаем после маунта). Раньше `<teleport to=\"body\">` без\n// `:disabled` падал при SSR — расхождение с GrModal.\nconst isClient = typeof window !== 'undefined'\n\nconst panelClass = computed(() => {\n return grDrawerPanelClass({ side: props.side, size: props.size })\n})\n\nconst panelEnterFrom = computed(() => grDrawerPanelEnterFrom(props.side))\n\nfunction close(): void {\n emit('update:modelValue', false)\n}\n\nfunction onDialogClose(): void {\n if (!props.closeOnBackdrop) return\n close()\n}\n\nfunction onOverlayClick(): void {\n if (!props.closeOnBackdrop) return\n close()\n}\n\n// ————— Esc через общий стек оверлеев + scroll-lock, синхронно с открытием.\nconst { lock: lockBodyScroll, unlock: unlockBodyScroll } = useScrollLock()\n\nlet escEntryId: number | null = null\n\nfunction registerEsc(): void {\n if (escEntryId !== null) return\n escEntryId = pushGrModalEsc({\n shouldClose: () => props.closeOnEsc,\n close,\n })\n}\n\nfunction unregisterEsc(): void {\n if (escEntryId === null) return\n removeGrModalEsc(escEntryId)\n escEntryId = null\n}\n\nwatch(\n () => props.modelValue,\n (value) => {\n if (value) {\n lockBodyScroll()\n registerEsc()\n }\n else {\n unlockBodyScroll()\n unregisterEsc()\n }\n },\n { immediate: true },\n)\n\nonBeforeUnmount(() => {\n unlockBodyScroll()\n unregisterEsc()\n})\n</script>\n\n<template>\n <teleport to=\"body\" :disabled=\"!isClient\">\n <TransitionRoot :show=\"modelValue\" as=\"template\">\n <Dialog\n as=\"div\"\n data-gr-drawer\n class=\"fixed inset-0 z-50\"\n :static=\"true\"\n :aria-labelledby=\"titleId\"\n @close=\"onDialogClose\"\n >\n <div class=\"fixed inset-0\">\n <TransitionChild\n as=\"template\"\n enter=\"duration-200 ease-out\"\n enter-from=\"opacity-0\"\n enter-to=\"opacity-100\"\n leave=\"duration-150 ease-in\"\n leave-from=\"opacity-100\"\n leave-to=\"opacity-0\"\n >\n <div\n data-gr-drawer-overlay\n class=\"fixed inset-0 bg-black/40\"\n aria-hidden=\"true\"\n @click=\"onOverlayClick\"\n />\n </TransitionChild>\n\n <TransitionChild\n as=\"template\"\n enter=\"duration-200 ease-out\"\n :enter-from=\"panelEnterFrom\"\n enter-to=\"translate-x-0\"\n leave=\"duration-150 ease-in\"\n leave-from=\"translate-x-0\"\n :leave-to=\"panelEnterFrom\"\n >\n <DialogPanel\n data-gr-drawer-panel\n tabindex=\"-1\"\n class=\"fixed inset-y-0 flex flex-col\"\n :class=\"panelClass\"\n >\n <div\n data-gr-drawer-header\n class=\"px-5 py-4 border-b border-[var(--brd)] flex items-center justify-between gap-4\"\n >\n <DialogTitle :id=\"titleId\" as=\"div\" data-gr-drawer-title class=\"text-[14px] font-700 min-w-0 truncate\">\n <slot name=\"title\">\n {{ resolvedTitle }}\n </slot>\n </DialogTitle>\n\n <GrButton\n variant=\"ghost\"\n size=\"sm\"\n square\n :aria-label=\"resolvedCloseLabel\"\n @click=\"close\"\n >\n <GrIcon size=\"sm\" aria-hidden=\"true\">\n <IconClose />\n </GrIcon>\n </GrButton>\n </div>\n\n <div data-gr-drawer-body class=\"flex-1 overflow-y-auto\">\n <div class=\"p-5\">\n <slot />\n </div>\n </div>\n\n <div\n v-if=\"$slots.footer\"\n data-gr-drawer-footer\n class=\"px-5 py-4 border-t border-[var(--brd)]\"\n >\n <slot name=\"footer\" />\n </div>\n </DialogPanel>\n </TransitionChild>\n </div>\n </Dialog>\n </TransitionRoot>\n </teleport>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, onBeforeUnmount, useId, watch } from 'vue'\nimport { Dialog, DialogPanel, DialogTitle, TransitionChild, TransitionRoot } from '@headlessui/vue'\n\nimport GrButton from '../GrButton/GrButton.vue'\nimport GrIcon from '../GrIcon/GrIcon.vue'\nimport { useGranularityTranslations } from '../../internal/granularityI18n'\n// Переиспользуем инфраструктуру оверлеев GrModal: общий Esc-стек (Esc закрывает\n// верхний оверлей независимо от дерева рендера) и reference-counted scroll-lock.\nimport { pushGrModalEsc, removeGrModalEsc } from '../GrModal/grModalEscStack'\nimport { useScrollLock } from '../../composables/internal/useScrollLock'\nimport {\n grDrawerPanelClass,\n grDrawerPanelEnterFrom,\n type GrDrawerSide,\n type GrDrawerSize,\n} from './grDrawerStyles'\n\nimport IconClose from '~icons/lucide/x'\n\nexport interface GrDrawerProps {\n /** Контроль открытия через v-model. */\n modelValue: boolean\n /** Заголовок; если передан — покажется в хедере. Можно переопределить слотом `#title`. */\n title?: string\n /** Закрывать при клике по бэкдропу / через HeadlessUI close. */\n closeOnBackdrop?: boolean\n /** Закрывать по Esc. */\n closeOnEsc?: boolean\n /** Сторона, с которой выезжает панель. */\n side?: GrDrawerSide\n /** Размер панели. */\n size?: GrDrawerSize\n /** i18n-friendly aria-label для кнопки закрытия. */\n closeLabel?: string\n}\n\nconst props = withDefaults(defineProps<GrDrawerProps>(), {\n title: undefined,\n closeOnBackdrop: true,\n closeOnEsc: true,\n side: 'right',\n size: 'md',\n closeLabel: undefined,\n})\n\nconst { t } = useGranularityTranslations()\nconst resolvedTitle = computed(() => props.title ?? t('gr.drawer.title', 'Drawer'))\nconst resolvedCloseLabel = computed(() => props.closeLabel ?? t('gr.common.close', 'Close'))\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n}>()\n\nconst titleId = useId()\n\n// SSR-guard: на сервере `document.body` недоступен — отключаем teleport\n// (в клиенте включаем после маунта). Раньше `<teleport to=\"body\">` без\n// `:disabled` падал при SSR — расхождение с GrModal.\nconst isClient = typeof window !== 'undefined'\n\nconst panelClass = computed(() => {\n return grDrawerPanelClass({ side: props.side, size: props.size })\n})\n\nconst panelEnterFrom = computed(() => grDrawerPanelEnterFrom(props.side))\n\nfunction close(): void {\n emit('update:modelValue', false)\n}\n\nfunction onDialogClose(): void {\n if (!props.closeOnBackdrop) return\n close()\n}\n\nfunction onOverlayClick(): void {\n if (!props.closeOnBackdrop) return\n close()\n}\n\n// ————— Esc через общий стек оверлеев + scroll-lock, синхронно с открытием.\nconst { lock: lockBodyScroll, unlock: unlockBodyScroll } = useScrollLock()\n\nlet escEntryId: number | null = null\n\nfunction registerEsc(): void {\n if (escEntryId !== null) return\n escEntryId = pushGrModalEsc({\n shouldClose: () => props.closeOnEsc,\n close,\n })\n}\n\nfunction unregisterEsc(): void {\n if (escEntryId === null) return\n removeGrModalEsc(escEntryId)\n escEntryId = null\n}\n\nwatch(\n () => props.modelValue,\n (value) => {\n if (value) {\n lockBodyScroll()\n registerEsc()\n }\n else {\n unlockBodyScroll()\n unregisterEsc()\n }\n },\n { immediate: true },\n)\n\nonBeforeUnmount(() => {\n unlockBodyScroll()\n unregisterEsc()\n})\n</script>\n\n<template>\n <teleport to=\"body\" :disabled=\"!isClient\">\n <TransitionRoot :show=\"modelValue\" as=\"template\">\n <Dialog\n as=\"div\"\n data-gr-drawer\n class=\"fixed inset-0 z-50\"\n :static=\"true\"\n :aria-labelledby=\"titleId\"\n @close=\"onDialogClose\"\n >\n <div class=\"fixed inset-0\">\n <TransitionChild\n as=\"template\"\n enter=\"duration-200 ease-out\"\n enter-from=\"opacity-0\"\n enter-to=\"opacity-100\"\n leave=\"duration-150 ease-in\"\n leave-from=\"opacity-100\"\n leave-to=\"opacity-0\"\n >\n <div\n data-gr-drawer-overlay\n class=\"fixed inset-0 bg-black/40\"\n aria-hidden=\"true\"\n @click=\"onOverlayClick\"\n />\n </TransitionChild>\n\n <TransitionChild\n as=\"template\"\n enter=\"duration-200 ease-out\"\n :enter-from=\"panelEnterFrom\"\n enter-to=\"translate-x-0\"\n leave=\"duration-150 ease-in\"\n leave-from=\"translate-x-0\"\n :leave-to=\"panelEnterFrom\"\n >\n <DialogPanel\n data-gr-drawer-panel\n tabindex=\"-1\"\n class=\"fixed inset-y-0 flex flex-col\"\n :class=\"panelClass\"\n >\n <div\n data-gr-drawer-header\n class=\"px-5 py-4 border-b border-[var(--brd)] flex items-center justify-between gap-4\"\n >\n <DialogTitle :id=\"titleId\" as=\"div\" data-gr-drawer-title class=\"text-[14px] font-700 min-w-0 truncate\">\n <slot name=\"title\">\n {{ resolvedTitle }}\n </slot>\n </DialogTitle>\n\n <GrButton\n variant=\"ghost\"\n size=\"sm\"\n square\n :aria-label=\"resolvedCloseLabel\"\n @click=\"close\"\n >\n <GrIcon size=\"sm\" aria-hidden=\"true\">\n <IconClose />\n </GrIcon>\n </GrButton>\n </div>\n\n <div data-gr-drawer-body class=\"flex-1 overflow-y-auto\">\n <div class=\"p-5\">\n <slot />\n </div>\n </div>\n\n <div\n v-if=\"$slots.footer\"\n data-gr-drawer-footer\n class=\"px-5 py-4 border-t border-[var(--brd)]\"\n >\n <slot name=\"footer\" />\n </div>\n </DialogPanel>\n </TransitionChild>\n </div>\n </Dialog>\n </TransitionRoot>\n </teleport>\n</template>\n"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import { n as grDrawerSafelist, t as grDrawerConfig } from "../../chunks/config-C6zT56Jc2.js";
2
- import { t as GrDrawer_default } from "./chunks/GrDrawer-BW3wtI7h.js";
1
+ import { n as grDrawerSafelist, t as grDrawerConfig } from "../../chunks/config-DUcu1D682.js";
2
+ import { t as GrDrawer_default } from "./chunks/GrDrawer-SLGKCY2A.js";
3
3
  export { GrDrawer_default as GrDrawer, GrDrawer_default as default, grDrawerConfig, grDrawerSafelist };
@@ -0,0 +1,181 @@
1
+ import { vClickOutside } from "../../../directives/clickOutside.js";
2
+ import { t as useFloating } from "../../../chunks/useFloating-DtM6TyE4.js";
3
+ import { t as useEscapeToClose } from "../../../chunks/useEscapeToClose-C2t_S1gh.js";
4
+ import { n as grDropdownOriginClass, r as grDropdownWidthClass, t as grDropdownContentClass } from "../../../chunks/grDropdownStyles-B_-DKytw.js";
5
+ import { Teleport, Transition, computed, createBlock, createElementBlock, createElementVNode, createVNode, defineComponent, nextTick, normalizeClass, normalizeStyle, openBlock, ref, renderSlot, unref, useId, vShow, watch, withCtx, withDirectives } from "vue";
6
+ //#region src/components/GrDropdown/GrDropdown.vue?vue&type=script&setup=true&lang.ts
7
+ var _hoisted_1 = { "data-gr-dropdown": "" };
8
+ var _hoisted_2 = ["id"];
9
+ //#endregion
10
+ //#region src/components/GrDropdown/GrDropdown.vue
11
+ var GrDropdown_default = /* @__PURE__ */ defineComponent({
12
+ __name: "GrDropdown",
13
+ props: {
14
+ align: { default: "right" },
15
+ width: { default: "48" },
16
+ closeOnContentClick: {
17
+ type: Boolean,
18
+ default: true
19
+ },
20
+ contentClass: { default: "" },
21
+ teleportTo: { default: "body" }
22
+ },
23
+ setup(__props) {
24
+ const props = __props;
25
+ const open = ref(false);
26
+ const rootEl = ref(null);
27
+ const panelEl = ref(null);
28
+ const clickOutsideExclude = [() => panelEl.value];
29
+ const panelId = useId();
30
+ let triggerFocusEl = null;
31
+ function panelItems() {
32
+ const root = panelEl.value;
33
+ if (!root) return [];
34
+ return Array.from(root.querySelectorAll("[role=\"menuitem\"], a[href], button:not([disabled]), [tabindex]:not([tabindex=\"-1\"])")).filter((el) => el.offsetParent !== null || el === document.activeElement);
35
+ }
36
+ function focusItemAt(index) {
37
+ const items = panelItems();
38
+ if (items.length === 0) return;
39
+ items[(index + items.length) % items.length]?.focus();
40
+ }
41
+ async function openWithFocus(first) {
42
+ triggerFocusEl = document.activeElement ?? null;
43
+ open.value = true;
44
+ await nextTick();
45
+ focusItemAt(first ? 0 : -1);
46
+ }
47
+ function returnFocusToTrigger() {
48
+ const target = triggerFocusEl;
49
+ triggerFocusEl = null;
50
+ target?.focus?.();
51
+ }
52
+ /**
53
+ * Пропсы для реального фокусируемого триггера (кнопки). Консьюмер биндит их на
54
+ * элемент внутри слота `#trigger`: `<button v-bind="triggerProps">`. Даёт
55
+ * `aria-haspopup`/`aria-expanded`/`aria-controls` и клавиатуру (Enter/Space/стрелки).
56
+ */
57
+ const triggerProps = computed(() => ({
58
+ "aria-haspopup": "menu",
59
+ "aria-expanded": open.value,
60
+ "aria-controls": open.value ? panelId : void 0,
61
+ "onKeydown": onTriggerKeydown
62
+ }));
63
+ function onTriggerKeydown(event) {
64
+ switch (event.key) {
65
+ case "Enter":
66
+ case " ":
67
+ case "ArrowDown":
68
+ event.preventDefault();
69
+ openWithFocus(true);
70
+ break;
71
+ case "ArrowUp":
72
+ event.preventDefault();
73
+ openWithFocus(false);
74
+ break;
75
+ case "Escape":
76
+ if (open.value) {
77
+ event.preventDefault();
78
+ close();
79
+ }
80
+ break;
81
+ }
82
+ }
83
+ function onPanelKeydown(event) {
84
+ const currentIndex = panelItems().indexOf(document.activeElement);
85
+ switch (event.key) {
86
+ case "ArrowDown":
87
+ event.preventDefault();
88
+ focusItemAt(currentIndex + 1);
89
+ break;
90
+ case "ArrowUp":
91
+ event.preventDefault();
92
+ focusItemAt(currentIndex - 1);
93
+ break;
94
+ case "Home":
95
+ event.preventDefault();
96
+ focusItemAt(0);
97
+ break;
98
+ case "End":
99
+ event.preventDefault();
100
+ focusItemAt(-1);
101
+ break;
102
+ case "Tab":
103
+ close();
104
+ break;
105
+ }
106
+ }
107
+ const placementByAlign = {
108
+ left: "bottom-start",
109
+ right: "bottom-end",
110
+ center: "bottom"
111
+ };
112
+ const { floatingStyle, resolvedPlacement, update: updateFloatingPosition } = useFloating(rootEl, panelEl, open, {
113
+ placement: () => placementByAlign[props.align],
114
+ zIndexVar: "--gr-z-dropdown"
115
+ });
116
+ function toggle() {
117
+ open.value = !open.value;
118
+ }
119
+ function close() {
120
+ const wasOpen = open.value;
121
+ open.value = false;
122
+ if (wasOpen) returnFocusToTrigger();
123
+ }
124
+ useEscapeToClose(open, close);
125
+ watch(() => props.align, () => {
126
+ if (open.value) updateFloatingPosition();
127
+ });
128
+ const widthClass = computed(() => grDropdownWidthClass(props.width));
129
+ const contentClasses = computed(() => grDropdownContentClass(props.contentClass));
130
+ const panelClasses = computed(() => {
131
+ return [widthClass.value, grDropdownOriginClass(resolvedPlacement.value)].filter(Boolean);
132
+ });
133
+ function onContentClick() {
134
+ if (props.closeOnContentClick) close();
135
+ }
136
+ return (_ctx, _cache) => {
137
+ return openBlock(), createElementBlock("div", _hoisted_1, [withDirectives((openBlock(), createElementBlock("div", {
138
+ ref_key: "rootEl",
139
+ ref: rootEl,
140
+ "data-gr-dropdown-trigger": "",
141
+ class: "inline-block max-w-full",
142
+ onClick: toggle
143
+ }, [renderSlot(_ctx.$slots, "trigger", {
144
+ open: open.value,
145
+ toggle,
146
+ close,
147
+ triggerProps: triggerProps.value
148
+ })])), [[unref(vClickOutside), {
149
+ handler: close,
150
+ enabled: open.value,
151
+ exclude: clickOutsideExclude
152
+ }]]), (openBlock(), createBlock(Teleport, { to: __props.teleportTo }, [createVNode(Transition, {
153
+ "enter-active-class": "transition ease-out duration-150",
154
+ "enter-from-class": "transform opacity-0 scale-95",
155
+ "enter-to-class": "transform opacity-100 scale-100",
156
+ "leave-active-class": "transition ease-in duration-100",
157
+ "leave-from-class": "transform opacity-100 scale-100",
158
+ "leave-to-class": "transform opacity-0 scale-95"
159
+ }, {
160
+ default: withCtx(() => [withDirectives(createElementVNode("div", {
161
+ id: unref(panelId),
162
+ ref_key: "panelEl",
163
+ ref: panelEl,
164
+ "data-gr-dropdown-panel": "",
165
+ role: "menu",
166
+ tabindex: "-1",
167
+ class: normalizeClass(panelClasses.value),
168
+ style: normalizeStyle(unref(floatingStyle)),
169
+ onClick: onContentClick,
170
+ onKeydown: onPanelKeydown
171
+ }, [createElementVNode("div", {
172
+ "data-gr-dropdown-content": "",
173
+ class: normalizeClass(contentClasses.value)
174
+ }, [renderSlot(_ctx.$slots, "content", { close })], 2)], 46, _hoisted_2), [[vShow, open.value]])]),
175
+ _: 3
176
+ })], 8, ["to"]))]);
177
+ };
178
+ }
179
+ });
180
+ //#endregion
181
+ export { GrDropdown_default as t };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GrDropdown-BnDMYP8v.js","names":[],"sources":["../../../../src/components/GrDropdown/GrDropdown.vue","../../../../src/components/GrDropdown/GrDropdown.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, nextTick, ref, useId, watch } from 'vue'\n\nimport { vClickOutside } from '../../directives'\nimport { useFloating } from '../../composables/internal/useFloating'\nimport { useEscapeToClose } from '../../composables/internal/useEscapeToClose'\nimport {\n grDropdownContentClass,\n grDropdownOriginClass,\n grDropdownWidthClass,\n type GrDropdownAlign,\n type GrDropdownWidth,\n} from './grDropdownStyles'\n\nexport interface GrDropdownProps {\n /** Выравнивание панели относительно триггера. */\n align?: GrDropdownAlign\n /** Ширина панели (tailwind-токены `w-*` или `auto`). */\n width?: GrDropdownWidth\n /** Закрывать панель по клику внутри content. */\n closeOnContentClick?: boolean\n /** Дополнительные классы контейнера content. */\n contentClass?: string\n /** Куда телепортировать панель (`body` по умолчанию). */\n teleportTo?: string | HTMLElement\n}\n\nconst props = withDefaults(defineProps<GrDropdownProps>(), {\n align: 'right',\n width: '48',\n closeOnContentClick: true,\n contentClass: '',\n teleportTo: 'body',\n})\n\nconst open = ref(false)\nconst rootEl = ref<HTMLElement | null>(null)\nconst panelEl = ref<HTMLElement | null>(null)\nconst clickOutsideExclude = [() => panelEl.value]\n\nconst panelId = useId()\n\n// Элемент триггера, которому вернём фокус при закрытии (клавиатурный сценарий).\nlet triggerFocusEl: HTMLElement | null = null\n\n// Фокусируемые пункты панели для клавиатурной навигации (roving-фокус).\nfunction panelItems(): HTMLElement[] {\n const root = panelEl.value\n if (!root)\n return []\n const selector = '[role=\"menuitem\"], a[href], button:not([disabled]), [tabindex]:not([tabindex=\"-1\"])'\n return Array.from(root.querySelectorAll<HTMLElement>(selector)).filter(el => el.offsetParent !== null || el === document.activeElement)\n}\n\nfunction focusItemAt(index: number): void {\n const items = panelItems()\n if (items.length === 0)\n return\n const clamped = (index + items.length) % items.length\n items[clamped]?.focus()\n}\n\nasync function openWithFocus(first: boolean): Promise<void> {\n triggerFocusEl = (document.activeElement as HTMLElement) ?? null\n open.value = true\n await nextTick()\n focusItemAt(first ? 0 : -1)\n}\n\nfunction returnFocusToTrigger(): void {\n const target = triggerFocusEl\n triggerFocusEl = null\n target?.focus?.()\n}\n\n/**\n * Пропсы для реального фокусируемого триггера (кнопки). Консьюмер биндит их на\n * элемент внутри слота `#trigger`: `<button v-bind=\"triggerProps\">`. Даёт\n * `aria-haspopup`/`aria-expanded`/`aria-controls` и клавиатуру (Enter/Space/стрелки).\n */\nconst triggerProps = computed(() => ({\n 'aria-haspopup': 'menu' as const,\n 'aria-expanded': open.value,\n 'aria-controls': open.value ? panelId : undefined,\n 'onKeydown': onTriggerKeydown,\n}))\n\nfunction onTriggerKeydown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'Enter':\n case ' ':\n case 'ArrowDown':\n event.preventDefault()\n void openWithFocus(true)\n break\n case 'ArrowUp':\n event.preventDefault()\n void openWithFocus(false)\n break\n case 'Escape':\n if (open.value) {\n event.preventDefault()\n close()\n }\n break\n }\n}\n\nfunction onPanelKeydown(event: KeyboardEvent): void {\n const items = panelItems()\n const currentIndex = items.indexOf(document.activeElement as HTMLElement)\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault()\n focusItemAt(currentIndex + 1)\n break\n case 'ArrowUp':\n event.preventDefault()\n focusItemAt(currentIndex - 1)\n break\n case 'Home':\n event.preventDefault()\n focusItemAt(0)\n break\n case 'End':\n event.preventDefault()\n focusItemAt(-1)\n break\n case 'Tab':\n close()\n break\n }\n}\n\n// `align='right'` — правый край панели совпадает с правым краем триггера (bottom-end);\n// `align='left'` — левые края (bottom-start); `align='center'` — floating-ui сам\n// центрирует панель под триггером при обычном `'bottom'` без суффикса.\nconst placementByAlign: Record<GrDropdownAlign, 'bottom-start' | 'bottom-end' | 'bottom'> = {\n left: 'bottom-start',\n right: 'bottom-end',\n center: 'bottom',\n}\n\nconst { floatingStyle, resolvedPlacement, update: updateFloatingPosition } = useFloating(\n rootEl,\n panelEl,\n open,\n {\n placement: () => placementByAlign[props.align],\n zIndexVar: '--gr-z-dropdown',\n },\n)\n\nfunction toggle(): void {\n open.value = !open.value\n}\n\nfunction close(): void {\n const wasOpen = open.value\n open.value = false\n // Возвращаем фокус на триггер только если панель была открыта с клавиатуры.\n if (wasOpen)\n returnFocusToTrigger()\n}\n\nuseEscapeToClose(open, close)\n\nwatch(\n () => props.align,\n () => {\n if (open.value) updateFloatingPosition()\n },\n)\n\nconst widthClass = computed(() => grDropdownWidthClass(props.width))\n\nconst contentClasses = computed(() => grDropdownContentClass(props.contentClass))\n\nconst panelClasses = computed(() => {\n return [widthClass.value, grDropdownOriginClass(resolvedPlacement.value)].filter(Boolean)\n})\n\nfunction onContentClick(): void {\n if (props.closeOnContentClick) {\n close()\n }\n}\n</script>\n\n<template>\n <div data-gr-dropdown>\n <div\n ref=\"rootEl\"\n v-click-outside=\"{ handler: close, enabled: open, exclude: clickOutsideExclude }\"\n data-gr-dropdown-trigger\n class=\"inline-block max-w-full\"\n @click=\"toggle\"\n >\n <slot name=\"trigger\" :open=\"open\" :toggle=\"toggle\" :close=\"close\" :triggerProps=\"triggerProps\" />\n </div>\n\n <teleport :to=\"teleportTo\">\n <transition\n enter-active-class=\"transition ease-out duration-150\"\n enter-from-class=\"transform opacity-0 scale-95\"\n enter-to-class=\"transform opacity-100 scale-100\"\n leave-active-class=\"transition ease-in duration-100\"\n leave-from-class=\"transform opacity-100 scale-100\"\n leave-to-class=\"transform opacity-0 scale-95\"\n >\n <div\n v-show=\"open\"\n :id=\"panelId\"\n ref=\"panelEl\"\n data-gr-dropdown-panel\n role=\"menu\"\n tabindex=\"-1\"\n :class=\"panelClasses\"\n :style=\"floatingStyle\"\n @click=\"onContentClick\"\n @keydown=\"onPanelKeydown\"\n >\n <div data-gr-dropdown-content :class=\"contentClasses\">\n <slot name=\"content\" :close=\"close\" />\n </div>\n </div>\n </transition>\n </teleport>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, nextTick, ref, useId, watch } from 'vue'\n\nimport { vClickOutside } from '../../directives'\nimport { useFloating } from '../../composables/internal/useFloating'\nimport { useEscapeToClose } from '../../composables/internal/useEscapeToClose'\nimport {\n grDropdownContentClass,\n grDropdownOriginClass,\n grDropdownWidthClass,\n type GrDropdownAlign,\n type GrDropdownWidth,\n} from './grDropdownStyles'\n\nexport interface GrDropdownProps {\n /** Выравнивание панели относительно триггера. */\n align?: GrDropdownAlign\n /** Ширина панели (tailwind-токены `w-*` или `auto`). */\n width?: GrDropdownWidth\n /** Закрывать панель по клику внутри content. */\n closeOnContentClick?: boolean\n /** Дополнительные классы контейнера content. */\n contentClass?: string\n /** Куда телепортировать панель (`body` по умолчанию). */\n teleportTo?: string | HTMLElement\n}\n\nconst props = withDefaults(defineProps<GrDropdownProps>(), {\n align: 'right',\n width: '48',\n closeOnContentClick: true,\n contentClass: '',\n teleportTo: 'body',\n})\n\nconst open = ref(false)\nconst rootEl = ref<HTMLElement | null>(null)\nconst panelEl = ref<HTMLElement | null>(null)\nconst clickOutsideExclude = [() => panelEl.value]\n\nconst panelId = useId()\n\n// Элемент триггера, которому вернём фокус при закрытии (клавиатурный сценарий).\nlet triggerFocusEl: HTMLElement | null = null\n\n// Фокусируемые пункты панели для клавиатурной навигации (roving-фокус).\nfunction panelItems(): HTMLElement[] {\n const root = panelEl.value\n if (!root)\n return []\n const selector = '[role=\"menuitem\"], a[href], button:not([disabled]), [tabindex]:not([tabindex=\"-1\"])'\n return Array.from(root.querySelectorAll<HTMLElement>(selector)).filter(el => el.offsetParent !== null || el === document.activeElement)\n}\n\nfunction focusItemAt(index: number): void {\n const items = panelItems()\n if (items.length === 0)\n return\n const clamped = (index + items.length) % items.length\n items[clamped]?.focus()\n}\n\nasync function openWithFocus(first: boolean): Promise<void> {\n triggerFocusEl = (document.activeElement as HTMLElement) ?? null\n open.value = true\n await nextTick()\n focusItemAt(first ? 0 : -1)\n}\n\nfunction returnFocusToTrigger(): void {\n const target = triggerFocusEl\n triggerFocusEl = null\n target?.focus?.()\n}\n\n/**\n * Пропсы для реального фокусируемого триггера (кнопки). Консьюмер биндит их на\n * элемент внутри слота `#trigger`: `<button v-bind=\"triggerProps\">`. Даёт\n * `aria-haspopup`/`aria-expanded`/`aria-controls` и клавиатуру (Enter/Space/стрелки).\n */\nconst triggerProps = computed(() => ({\n 'aria-haspopup': 'menu' as const,\n 'aria-expanded': open.value,\n 'aria-controls': open.value ? panelId : undefined,\n 'onKeydown': onTriggerKeydown,\n}))\n\nfunction onTriggerKeydown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'Enter':\n case ' ':\n case 'ArrowDown':\n event.preventDefault()\n void openWithFocus(true)\n break\n case 'ArrowUp':\n event.preventDefault()\n void openWithFocus(false)\n break\n case 'Escape':\n if (open.value) {\n event.preventDefault()\n close()\n }\n break\n }\n}\n\nfunction onPanelKeydown(event: KeyboardEvent): void {\n const items = panelItems()\n const currentIndex = items.indexOf(document.activeElement as HTMLElement)\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault()\n focusItemAt(currentIndex + 1)\n break\n case 'ArrowUp':\n event.preventDefault()\n focusItemAt(currentIndex - 1)\n break\n case 'Home':\n event.preventDefault()\n focusItemAt(0)\n break\n case 'End':\n event.preventDefault()\n focusItemAt(-1)\n break\n case 'Tab':\n close()\n break\n }\n}\n\n// `align='right'` — правый край панели совпадает с правым краем триггера (bottom-end);\n// `align='left'` — левые края (bottom-start); `align='center'` — floating-ui сам\n// центрирует панель под триггером при обычном `'bottom'` без суффикса.\nconst placementByAlign: Record<GrDropdownAlign, 'bottom-start' | 'bottom-end' | 'bottom'> = {\n left: 'bottom-start',\n right: 'bottom-end',\n center: 'bottom',\n}\n\nconst { floatingStyle, resolvedPlacement, update: updateFloatingPosition } = useFloating(\n rootEl,\n panelEl,\n open,\n {\n placement: () => placementByAlign[props.align],\n zIndexVar: '--gr-z-dropdown',\n },\n)\n\nfunction toggle(): void {\n open.value = !open.value\n}\n\nfunction close(): void {\n const wasOpen = open.value\n open.value = false\n // Возвращаем фокус на триггер только если панель была открыта с клавиатуры.\n if (wasOpen)\n returnFocusToTrigger()\n}\n\nuseEscapeToClose(open, close)\n\nwatch(\n () => props.align,\n () => {\n if (open.value) updateFloatingPosition()\n },\n)\n\nconst widthClass = computed(() => grDropdownWidthClass(props.width))\n\nconst contentClasses = computed(() => grDropdownContentClass(props.contentClass))\n\nconst panelClasses = computed(() => {\n return [widthClass.value, grDropdownOriginClass(resolvedPlacement.value)].filter(Boolean)\n})\n\nfunction onContentClick(): void {\n if (props.closeOnContentClick) {\n close()\n }\n}\n</script>\n\n<template>\n <div data-gr-dropdown>\n <div\n ref=\"rootEl\"\n v-click-outside=\"{ handler: close, enabled: open, exclude: clickOutsideExclude }\"\n data-gr-dropdown-trigger\n class=\"inline-block max-w-full\"\n @click=\"toggle\"\n >\n <slot name=\"trigger\" :open=\"open\" :toggle=\"toggle\" :close=\"close\" :triggerProps=\"triggerProps\" />\n </div>\n\n <teleport :to=\"teleportTo\">\n <transition\n enter-active-class=\"transition ease-out duration-150\"\n enter-from-class=\"transform opacity-0 scale-95\"\n enter-to-class=\"transform opacity-100 scale-100\"\n leave-active-class=\"transition ease-in duration-100\"\n leave-from-class=\"transform opacity-100 scale-100\"\n leave-to-class=\"transform opacity-0 scale-95\"\n >\n <div\n v-show=\"open\"\n :id=\"panelId\"\n ref=\"panelEl\"\n data-gr-dropdown-panel\n role=\"menu\"\n tabindex=\"-1\"\n :class=\"panelClasses\"\n :style=\"floatingStyle\"\n @click=\"onContentClick\"\n @keydown=\"onPanelKeydown\"\n >\n <div data-gr-dropdown-content :class=\"contentClasses\">\n <slot name=\"content\" :close=\"close\" />\n </div>\n </div>\n </transition>\n </teleport>\n </div>\n</template>\n"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import { t as GrDropdown_default } from "./chunks/GrDropdown-BGKeEfZ1.js";
2
- import { n as grDropdownSafelist, t as grDropdownConfig } from "../../chunks/config-C_egzT_K.js";
1
+ import { t as GrDropdown_default } from "./chunks/GrDropdown-BnDMYP8v.js";
2
+ import { n as grDropdownSafelist, t as grDropdownConfig } from "../../chunks/config-C49QUoJL.js";
3
3
  export { GrDropdown_default as GrDropdown, GrDropdown_default as default, grDropdownConfig, grDropdownSafelist };
@@ -1,4 +1,4 @@
1
- import { t as GrDropdown_default } from "../../GrDropdown/chunks/GrDropdown-BGKeEfZ1.js";
1
+ import { t as GrDropdown_default } from "../../GrDropdown/chunks/GrDropdown-BnDMYP8v.js";
2
2
  import { computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, guardReactiveProps, mergeProps, normalizeClass, normalizeProps, openBlock, renderSlot, resolveDynamicComponent, toDisplayString, unref, useAttrs, useSlots, withCtx } from "vue";
3
3
  //#endregion
4
4
  //#region src/components/GrDropdownMenu/GrDropdownMenuList.vue
@@ -30,7 +30,7 @@ var GrDropdownMenuList_default = /* @__PURE__ */ defineComponent({
30
30
  });
31
31
  return (_ctx, _cache) => {
32
32
  return openBlock(), createElementBlock("div", {
33
- "data-ds-dropdown-menu-list": "",
33
+ "data-gr-dropdown-menu-list": "",
34
34
  class: normalizeClass(className.value)
35
35
  }, [renderSlot(_ctx.$slots, "default")], 2);
36
36
  };
@@ -65,7 +65,7 @@ var GrDropdownMenu_default = /* @__PURE__ */ defineComponent({
65
65
  setup(__props) {
66
66
  return (_ctx, _cache) => {
67
67
  return openBlock(), createBlock(GrDropdown_default, {
68
- "data-ds-dropdown-menu": "",
68
+ "data-gr-dropdown-menu": "",
69
69
  align: __props.align,
70
70
  width: __props.width,
71
71
  "close-on-content-click": __props.closeOnContentClick,
@@ -109,7 +109,7 @@ var GrDropdownMenuColumn_default = /* @__PURE__ */ defineComponent({
109
109
  };
110
110
  return (_ctx, _cache) => {
111
111
  return openBlock(), createElementBlock("div", {
112
- "data-ds-dropdown-menu-column": "",
112
+ "data-gr-dropdown-menu-column": "",
113
113
  class: normalizeClass(["px-3 py-2 flex items-center", alignClass[__props.align]])
114
114
  }, [renderSlot(_ctx.$slots, "default")], 2);
115
115
  };
@@ -131,7 +131,7 @@ var GrDropdownMenuColumns_default = /* @__PURE__ */ defineComponent({
131
131
  });
132
132
  return (_ctx, _cache) => {
133
133
  return openBlock(), createElementBlock("div", {
134
- "data-ds-dropdown-menu-columns": "",
134
+ "data-gr-dropdown-menu-columns": "",
135
135
  class: normalizeClass(["w-full grid divide-x divide-[var(--brd)]", colsClass.value])
136
136
  }, [renderSlot(_ctx.$slots, "default")], 2);
137
137
  };
@@ -148,7 +148,7 @@ var GrDropdownMenuDivider_default = /* @__PURE__ */ defineComponent({
148
148
  setup(__props) {
149
149
  return (_ctx, _cache) => {
150
150
  return openBlock(), createElementBlock("div", {
151
- "data-ds-dropdown-menu-divider": "",
151
+ "data-gr-dropdown-menu-divider": "",
152
152
  role: "separator",
153
153
  class: normalizeClass(["border-t border-[var(--brd)]", __props.inset ? "mx-2" : ""])
154
154
  }, null, 2);
@@ -181,7 +181,7 @@ var GrDropdownMenuHeader_default = /* @__PURE__ */ defineComponent({
181
181
  return (_ctx, _cache) => {
182
182
  return isVisible.value ? (openBlock(), createElementBlock("div", {
183
183
  key: 0,
184
- "data-ds-dropdown-menu-header": "",
184
+ "data-gr-dropdown-menu-header": "",
185
185
  class: normalizeClass(["px-4 py-2 text-[11px] tracking-wide text-[var(--muted-fg)]", [titleAlignClass.value, { uppercase: __props.uppercase }]])
186
186
  }, [renderSlot(_ctx.$slots, "default", {}, () => [createTextVNode(toDisplayString(__props.title), 1)])], 2)) : createCommentVNode("", true);
187
187
  };
@@ -190,7 +190,7 @@ var GrDropdownMenuHeader_default = /* @__PURE__ */ defineComponent({
190
190
  //#endregion
191
191
  //#region src/components/GrDropdownMenu/GrDropdownMenuGroup.vue?vue&type=script&setup=true&lang.ts
192
192
  var _hoisted_1 = {
193
- "data-ds-dropdown-menu-group": "",
193
+ "data-gr-dropdown-menu-group": "",
194
194
  class: "w-full"
195
195
  };
196
196
  //#endregion
@@ -254,7 +254,7 @@ var GrDropdownMenuItem_default = /* @__PURE__ */ defineComponent({
254
254
  }[props.align];
255
255
  });
256
256
  const variantClass = computed(() => {
257
- if (props.variant === "danger") return "text-[var(--ds-danger)]";
257
+ if (props.variant === "danger") return "text-[var(--gr-danger)]";
258
258
  return "text-[var(--fg)]";
259
259
  });
260
260
  const disabledClass = computed(() => {
@@ -285,7 +285,7 @@ var GrDropdownMenuItem_default = /* @__PURE__ */ defineComponent({
285
285
  }
286
286
  return (_ctx, _cache) => {
287
287
  return openBlock(), createBlock(resolveDynamicComponent(__props.as), mergeProps(unref(attrs), {
288
- "data-ds-dropdown-menu-item": "",
288
+ "data-gr-dropdown-menu-item": "",
289
289
  class: className.value,
290
290
  type: isNativeButton.value ? unref(attrs).type ?? "button" : void 0,
291
291
  disabled: isNativeButton.value ? __props.disabled : void 0,