@feugene/granularity 0.19.0 → 0.20.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 (835) hide show
  1. package/README.md +8 -0
  2. package/dist/chunks/config-8Pcutu1j.js.map +1 -0
  3. package/dist/chunks/{config-06SQjBx0.js → config-B4w5gBD0.js} +1 -8
  4. package/dist/chunks/{config-06SQjBx0.js.map → config-B4w5gBD0.js.map} +1 -1
  5. package/dist/chunks/config-BE6n20np.js.map +1 -0
  6. package/dist/chunks/{config-B-iNaGdw.js → config-BEVBsvni.js} +1 -3
  7. package/dist/chunks/{config-B-iNaGdw.js.map → config-BEVBsvni.js.map} +1 -1
  8. package/dist/chunks/config-BKvX0q10.js.map +1 -0
  9. package/dist/chunks/config-BTCOJO5z.js +37 -0
  10. package/dist/chunks/config-BTCOJO5z.js.map +1 -0
  11. package/dist/chunks/{config-Rw9OyW702.js → config-BfsBepkH2.js} +1 -5
  12. package/dist/chunks/{config-Rw9OyW702.js.map → config-BfsBepkH2.js.map} +1 -1
  13. package/dist/chunks/{config-DP7eseR1.js → config-Bsh948nP.js} +1 -8
  14. package/dist/chunks/{config-DP7eseR1.js.map → config-Bsh948nP.js.map} +1 -1
  15. package/dist/chunks/config-CDat1wXf.js.map +1 -0
  16. package/dist/chunks/config-COpuWGr_2.js.map +1 -0
  17. package/dist/chunks/config-CY0_6cMi.js.map +1 -0
  18. package/dist/chunks/config-D94Z9po5.js.map +1 -0
  19. package/dist/chunks/config-DAX8Deh12.js.map +1 -0
  20. package/dist/chunks/{config-_qPUfb6-2.js → config-DWN4x6_e.js} +1 -7
  21. package/dist/chunks/config-DWN4x6_e.js.map +1 -0
  22. package/dist/chunks/{config-DhHbU3zO.js → config-Dgj1Q6JY.js} +1 -12
  23. package/dist/chunks/{config-DhHbU3zO.js.map → config-Dgj1Q6JY.js.map} +1 -1
  24. package/dist/chunks/{config-D3_g2KIn.js → config-Dguto_6o.js} +1 -13
  25. package/dist/chunks/{config-D3_g2KIn.js.map → config-Dguto_6o.js.map} +1 -1
  26. package/dist/chunks/config-WTNhdh6T.js.map +1 -0
  27. package/dist/chunks/config-eXB87DOi2.js.map +1 -0
  28. package/dist/chunks/{config-DvQIb4kb.js → config-vSji8w90.js} +1 -14
  29. package/dist/chunks/{config-DvQIb4kb.js.map → config-vSji8w90.js.map} +1 -1
  30. package/dist/chunks/{context-BSYR7RZs.js → context-CTbuwcYs.js} +1 -20
  31. package/dist/chunks/{context-BSYR7RZs.js.map → context-CTbuwcYs.js.map} +1 -1
  32. package/dist/chunks/{config-BqFjr3tN.js → grRadioStyles-BTjGNhtU.js} +1 -36
  33. package/dist/chunks/grRadioStyles-BTjGNhtU.js.map +1 -0
  34. package/dist/chunks/{granular-provider-C6uAujdJ.js → granular-provider-CZYm70Pm.js} +19 -19
  35. package/dist/chunks/{granular-provider-C6uAujdJ.js.map → granular-provider-CZYm70Pm.js.map} +1 -1
  36. package/dist/chunks/{useModalOverlay-DrQVYwwA.js → useModalOverlay-Cv5hF63W.js} +2 -2
  37. package/dist/chunks/{useModalOverlay-DrQVYwwA.js.map → useModalOverlay-Cv5hF63W.js.map} +1 -1
  38. package/dist/chunks/{usePortalTarget-Cn-Wiz5d.js → usePortalTarget-C0p-mhaM.js} +1 -1
  39. package/dist/chunks/{usePortalTarget-Cn-Wiz5d.js.map → usePortalTarget-C0p-mhaM.js.map} +1 -1
  40. package/dist/chunks/{validation-5HhpanPP.js → validation-DauXRIkL.js} +1 -1
  41. package/dist/chunks/{validation-5HhpanPP.js.map → validation-DauXRIkL.js.map} +1 -1
  42. package/dist/components/GrAlert/chunks/{GrAlert-BC1lplbY.js → GrAlert-B21QGele.js} +2 -16
  43. package/dist/components/GrAlert/chunks/{GrAlert-BC1lplbY.js.map → GrAlert-B21QGele.js.map} +1 -1
  44. package/dist/components/GrAlert/index.js +2 -2
  45. package/dist/components/GrAutocomplete/chunks/{GrAutocomplete-gY4Xopza.js → GrAutocomplete-DsevPtiS.js} +3 -3
  46. package/dist/components/GrAutocomplete/chunks/{GrAutocomplete-gY4Xopza.js.map → GrAutocomplete-DsevPtiS.js.map} +1 -1
  47. package/dist/components/GrAutocomplete/index.js +1 -1
  48. package/dist/components/GrAvatar/chunks/{GrAvatar-CVUujLmn.js → GrAvatar-BbdKRX8i.js} +3 -3
  49. package/dist/components/GrAvatar/chunks/{GrAvatar-CVUujLmn.js.map → GrAvatar-BbdKRX8i.js.map} +1 -1
  50. package/dist/components/GrAvatar/index.js +3 -3
  51. package/dist/components/GrBadge/chunks/{GrBadge-B1tgqfGQ.js → GrBadge-u2ZdS7CN.js} +1 -1
  52. package/dist/components/GrBadge/chunks/{GrBadge-B1tgqfGQ.js.map → GrBadge-u2ZdS7CN.js.map} +1 -1
  53. package/dist/components/GrBadge/index.js +1 -1
  54. package/dist/components/GrBadgeWrap/chunks/{GrBadgeWrap-C-E9betg.js → GrBadgeWrap-DDoFQscR.js} +1 -1
  55. package/dist/components/GrBadgeWrap/chunks/{GrBadgeWrap-C-E9betg.js.map → GrBadgeWrap-DDoFQscR.js.map} +1 -1
  56. package/dist/components/GrBadgeWrap/index.js +3 -3
  57. package/dist/components/GrBottomNav/chunks/{GrBottomNav-9GH7Dd9E.js → GrBottomNav-JUu4ylYv.js} +2 -2
  58. package/dist/components/GrBottomNav/chunks/{GrBottomNav-9GH7Dd9E.js.map → GrBottomNav-JUu4ylYv.js.map} +1 -1
  59. package/dist/components/GrBottomNav/index.js +3 -3
  60. package/dist/components/GrBreadcrumbs/chunks/{GrBreadcrumbs-DS_-PBVt.js → GrBreadcrumbs-CQ44iU2o.js} +2 -2
  61. package/dist/components/GrBreadcrumbs/chunks/{GrBreadcrumbs-DS_-PBVt.js.map → GrBreadcrumbs-CQ44iU2o.js.map} +1 -1
  62. package/dist/components/GrBreadcrumbs/index.js +1 -1
  63. package/dist/components/GrButton/chunks/{GrButton-D0m_z0XW.js → GrButton-Bw2AH4uX.js} +1 -1
  64. package/dist/components/GrButton/chunks/{GrButton-D0m_z0XW.js.map → GrButton-Bw2AH4uX.js.map} +1 -1
  65. package/dist/components/GrButton/index.js +2 -3
  66. package/dist/components/GrCard/chunks/{GrCard-DOrGHf2x.js → GrCard-DfIZOP5N.js} +1 -1
  67. package/dist/components/GrCard/chunks/{GrCard-DOrGHf2x.js.map → GrCard-DfIZOP5N.js.map} +1 -1
  68. package/dist/components/GrCard/index.js +1 -1
  69. package/dist/components/GrCheckbox/chunks/{GrCheckbox-BLOp8452.js → GrCheckbox-CEcHIsXM.js} +1 -1
  70. package/dist/components/GrCheckbox/chunks/{GrCheckbox-BLOp8452.js.map → GrCheckbox-CEcHIsXM.js.map} +1 -1
  71. package/dist/components/GrCheckbox/index.js +2 -2
  72. package/dist/components/GrCheckboxGroup/chunks/{GrCheckboxGroup-CXTx2Z5H.js → GrCheckboxGroup-BOwrVcFr.js} +2 -2
  73. package/dist/components/GrCheckboxGroup/chunks/{GrCheckboxGroup-CXTx2Z5H.js.map → GrCheckboxGroup-BOwrVcFr.js.map} +1 -1
  74. package/dist/components/GrCheckboxGroup/index.js +1 -1
  75. package/dist/components/GrCollapse/chunks/{GrCollapse-Kk0DE8tb.js → GrCollapse-KFcrji1L.js} +4 -18
  76. package/dist/components/GrCollapse/chunks/{GrCollapse-Kk0DE8tb.js.map → GrCollapse-KFcrji1L.js.map} +1 -1
  77. package/dist/components/GrCollapse/index.js +2 -2
  78. package/dist/components/GrColorPicker/chunks/{GrColorPicker-CkBTzkqn.js → GrColorPicker-qQdoEPHF.js} +5 -5
  79. package/dist/components/GrColorPicker/chunks/{GrColorPicker-CkBTzkqn.js.map → GrColorPicker-qQdoEPHF.js.map} +1 -1
  80. package/dist/components/GrColorPicker/index.js +2 -2
  81. package/dist/components/GrCommandPalette/chunks/{GrCommandPalette-BugTlGdj.js → GrCommandPalette-BFcMf4Pn.js} +4 -4
  82. package/dist/components/GrCommandPalette/chunks/{GrCommandPalette-BugTlGdj.js.map → GrCommandPalette-BFcMf4Pn.js.map} +1 -1
  83. package/dist/components/GrCommandPalette/index.js +2 -2
  84. package/dist/components/GrConfigProvider/chunks/{GrConfigProvider-BA6JO7V6.js → GrConfigProvider-UP-EaoAf.js} +1 -1
  85. package/dist/components/GrConfigProvider/chunks/{GrConfigProvider-BA6JO7V6.js.map → GrConfigProvider-UP-EaoAf.js.map} +1 -1
  86. package/dist/components/GrConfigProvider/index.js +3 -3
  87. package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-Ds5T0GiR.js → GrConfirmDialog-rRtMScJX.js} +4 -4
  88. package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-Ds5T0GiR.js.map → GrConfirmDialog-rRtMScJX.js.map} +1 -1
  89. package/dist/components/GrConfirmDialog/index.js +1 -1
  90. package/dist/components/GrDataTable/chunks/{GrDataTable-CYe2A2WA.js → GrDataTable-CNvZg2HZ.js} +5 -5
  91. package/dist/components/GrDataTable/chunks/{GrDataTable-CYe2A2WA.js.map → GrDataTable-CNvZg2HZ.js.map} +1 -1
  92. package/dist/components/GrDataTable/index.js +2 -2
  93. package/dist/components/GrDialog/chunks/{GrDialog-C3tYaA8v.js → GrDialog-D0U5iRqV.js} +3 -3
  94. package/dist/components/GrDialog/chunks/{GrDialog-C3tYaA8v.js.map → GrDialog-D0U5iRqV.js.map} +1 -1
  95. package/dist/components/GrDialog/index.js +2 -3
  96. package/dist/components/GrDialogService/chunks/{GrDialogService-CTBiiJDI.js → GrDialogService-CrwA4aJq.js} +6 -6
  97. package/dist/components/GrDialogService/chunks/GrDialogService-CrwA4aJq.js.map +1 -0
  98. package/dist/components/GrDialogService/index.js +2 -2
  99. package/dist/components/GrDivider/chunks/{GrDivider-xxq1_fIl.js → GrDivider-CAhm9jbE.js} +2 -2
  100. package/dist/components/GrDivider/chunks/{GrDivider-xxq1_fIl.js.map → GrDivider-CAhm9jbE.js.map} +1 -1
  101. package/dist/components/GrDivider/index.js +2 -2
  102. package/dist/components/GrDrawer/chunks/{GrDrawer-BSSuiNHU.js → GrDrawer-C3zAg2tG.js} +5 -5
  103. package/dist/components/GrDrawer/chunks/{GrDrawer-BSSuiNHU.js.map → GrDrawer-C3zAg2tG.js.map} +1 -1
  104. package/dist/components/GrDrawer/index.js +2 -2
  105. package/dist/components/GrDropdown/chunks/{GrDropdown-Bh6UK2M5.js → GrDropdown-BSfFOcDx.js} +2 -2
  106. package/dist/components/GrDropdown/chunks/{GrDropdown-Bh6UK2M5.js.map → GrDropdown-BSfFOcDx.js.map} +1 -1
  107. package/dist/components/GrDropdown/index.js +1 -1
  108. package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu-LyfEFUbg.js → GrDropdownMenu-LOaFSCyd.js} +3 -3
  109. package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu-LyfEFUbg.js.map → GrDropdownMenu-LOaFSCyd.js.map} +1 -1
  110. package/dist/components/GrDropdownMenu/index.js +3 -3
  111. package/dist/components/GrEmptyState/chunks/{GrEmptyState-W7Irx3vc.js → GrEmptyState-CS9do8eM.js} +3 -3
  112. package/dist/components/GrEmptyState/chunks/{GrEmptyState-W7Irx3vc.js.map → GrEmptyState-CS9do8eM.js.map} +1 -1
  113. package/dist/components/GrEmptyState/index.js +3 -3
  114. package/dist/components/GrFileUpload/chunks/{GrFileUpload-DuDzC43S.js → GrFileUpload-D3-vC-ap.js} +4 -4
  115. package/dist/components/GrFileUpload/chunks/{GrFileUpload-DuDzC43S.js.map → GrFileUpload-D3-vC-ap.js.map} +1 -1
  116. package/dist/components/GrFileUpload/index.js +3 -3
  117. package/dist/components/GrForm/chunks/{GrForm-BCHCfIMv.js → GrForm-DdJw23Pz.js} +1 -1
  118. package/dist/components/GrForm/chunks/{GrForm-BCHCfIMv.js.map → GrForm-DdJw23Pz.js.map} +1 -1
  119. package/dist/components/GrForm/index.js +4 -4
  120. package/dist/components/GrFormField/chunks/{GrFormField-CL5rcgj6.js → GrFormField-kqfVY30N.js} +1 -1
  121. package/dist/components/GrFormField/chunks/{GrFormField-CL5rcgj6.js.map → GrFormField-kqfVY30N.js.map} +1 -1
  122. package/dist/components/GrFormField/index.js +3 -3
  123. package/dist/components/GrFormFile/chunks/{GrFormFile-BikSD7bg.js → GrFormFile-D722xHn8.js} +3 -3
  124. package/dist/components/GrFormFile/chunks/{GrFormFile-BikSD7bg.js.map → GrFormFile-D722xHn8.js.map} +1 -1
  125. package/dist/components/GrFormFile/index.js +1 -1
  126. package/dist/components/GrFormSection/chunks/{GrFormSection-BEh5n4jF.js → GrFormSection-CdGWvzXO.js} +2 -2
  127. package/dist/components/GrFormSection/chunks/{GrFormSection-BEh5n4jF.js.map → GrFormSection-CdGWvzXO.js.map} +1 -1
  128. package/dist/components/GrFormSection/index.js +3 -3
  129. package/dist/components/GrIcon/chunks/{GrIcon-BvA2ZGXP.js → GrIcon-bQwtZtYT.js} +1 -1
  130. package/dist/components/GrIcon/chunks/{GrIcon-BvA2ZGXP.js.map → GrIcon-bQwtZtYT.js.map} +1 -1
  131. package/dist/components/GrIcon/index.js +1 -1
  132. package/dist/components/GrImageViewer/chunks/{GrImageViewer-DfD4euH5.js → GrImageViewer-CMO10TS7.js} +2 -2
  133. package/dist/components/GrImageViewer/chunks/{GrImageViewer-DfD4euH5.js.map → GrImageViewer-CMO10TS7.js.map} +1 -1
  134. package/dist/components/GrImageViewer/index.js +1 -1
  135. package/dist/components/GrInput/chunks/{GrInput-2wd7Crs0.js → GrInput-Bb_pxqpT.js} +1 -1
  136. package/dist/components/GrInput/chunks/{GrInput-2wd7Crs0.js.map → GrInput-Bb_pxqpT.js.map} +1 -1
  137. package/dist/components/GrInput/index.js +1 -1
  138. package/dist/components/GrInputTag/chunks/{GrInputTag-CyV2eY7Z.js → GrInputTag-Dghhg03-.js} +3 -3
  139. package/dist/components/GrInputTag/chunks/{GrInputTag-CyV2eY7Z.js.map → GrInputTag-Dghhg03-.js.map} +1 -1
  140. package/dist/components/GrInputTag/index.js +1 -1
  141. package/dist/components/GrKbd/chunks/{GrKbd-DU2lBkRV.js → GrKbd-BXbhsH0M.js} +1 -1
  142. package/dist/components/GrKbd/chunks/{GrKbd-DU2lBkRV.js.map → GrKbd-BXbhsH0M.js.map} +1 -1
  143. package/dist/components/GrKbd/index.js +1 -1
  144. package/dist/components/GrLink/chunks/{GrLink-D-cgUMXW.js → GrLink-BQb7U4so.js} +2 -2
  145. package/dist/components/GrLink/chunks/{GrLink-D-cgUMXW.js.map → GrLink-BQb7U4so.js.map} +1 -1
  146. package/dist/components/GrLink/index.js +1 -1
  147. package/dist/components/GrList/chunks/{GrList-4YU1NZtM.js → GrList-CHibO0xA.js} +2 -2
  148. package/dist/components/GrList/chunks/{GrList-4YU1NZtM.js.map → GrList-CHibO0xA.js.map} +1 -1
  149. package/dist/components/GrList/index.js +1 -1
  150. package/dist/components/GrLoading/chunks/{GrLoading-CH95CFzS.js → GrLoading-C3DZSSuh.js} +1 -1
  151. package/dist/components/GrLoading/chunks/{GrLoading-CH95CFzS.js.map → GrLoading-C3DZSSuh.js.map} +1 -1
  152. package/dist/components/GrLoading/index.js +1 -1
  153. package/dist/components/GrModal/chunks/{GrModal-CbMMr6W1.js → GrModal-CPz7SWD_.js} +2 -2
  154. package/dist/components/GrModal/chunks/{GrModal-CbMMr6W1.js.map → GrModal-CPz7SWD_.js.map} +1 -1
  155. package/dist/components/GrModal/index.js +1 -1
  156. package/dist/components/GrNavbar/chunks/{GrNavbar-CF0KbM_6.js → GrNavbar-DWaaoV7n.js} +2 -2
  157. package/dist/components/GrNavbar/chunks/{GrNavbar-CF0KbM_6.js.map → GrNavbar-DWaaoV7n.js.map} +1 -1
  158. package/dist/components/GrNavbar/index.js +1 -1
  159. package/dist/components/GrNumberInput/chunks/{GrNumberInput-B5CHZDBj.js → GrNumberInput-BotnzW77.js} +2 -2
  160. package/dist/components/GrNumberInput/chunks/{GrNumberInput-B5CHZDBj.js.map → GrNumberInput-BotnzW77.js.map} +1 -1
  161. package/dist/components/GrNumberInput/index.js +1 -1
  162. package/dist/components/GrPagination/chunks/{GrPagination-BM4FrD6Q.js → GrPagination-GtGtSMJG.js} +3 -3
  163. package/dist/components/GrPagination/chunks/{GrPagination-BM4FrD6Q.js.map → GrPagination-GtGtSMJG.js.map} +1 -1
  164. package/dist/components/GrPagination/index.js +1 -1
  165. package/dist/components/GrPopover/chunks/{GrPopover-DMH4Jjst.js → GrPopover-b70bIlQ9.js} +2 -2
  166. package/dist/components/GrPopover/chunks/{GrPopover-DMH4Jjst.js.map → GrPopover-b70bIlQ9.js.map} +1 -1
  167. package/dist/components/GrPopover/index.js +1 -1
  168. package/dist/components/GrProgressBar/chunks/{GrProgressBar-xwbNM9QB.js → GrProgressBar-hszUOC8f.js} +1 -1
  169. package/dist/components/GrProgressBar/chunks/{GrProgressBar-xwbNM9QB.js.map → GrProgressBar-hszUOC8f.js.map} +1 -1
  170. package/dist/components/GrProgressBar/index.js +1 -1
  171. package/dist/components/GrProgressCircle/chunks/{GrProgressCircle-B8olXRo5.js → GrProgressCircle-BeUx1g1f.js} +3 -11
  172. package/dist/components/GrProgressCircle/chunks/{GrProgressCircle-B8olXRo5.js.map → GrProgressCircle-BeUx1g1f.js.map} +1 -1
  173. package/dist/components/GrProgressCircle/index.js +2 -2
  174. package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-Pwr9NPxK.js → GrPromptDialog-CEI8bf-t.js} +8 -8
  175. package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-Pwr9NPxK.js.map → GrPromptDialog-CEI8bf-t.js.map} +1 -1
  176. package/dist/components/GrPromptDialog/index.js +1 -1
  177. package/dist/components/GrRadio/chunks/{GrRadio-DWiRaMzt.js → GrRadio-BdhknbO8.js} +2 -2
  178. package/dist/components/GrRadio/chunks/{GrRadio-DWiRaMzt.js.map → GrRadio-BdhknbO8.js.map} +1 -1
  179. package/dist/components/GrRadio/index.js +3 -3
  180. package/dist/components/GrRadioGroup/chunks/{GrRadioGroup-DIuBw0wk.js → GrRadioGroup-BVmjKXcv.js} +2 -2
  181. package/dist/components/GrRadioGroup/chunks/GrRadioGroup-BVmjKXcv.js.map +1 -0
  182. package/dist/components/GrRadioGroup/index.js +1 -1
  183. package/dist/components/GrRating/chunks/{GrRating-DVFH3lYu.js → GrRating-BSEtaibx.js} +1 -1
  184. package/dist/components/GrRating/chunks/{GrRating-DVFH3lYu.js.map → GrRating-BSEtaibx.js.map} +1 -1
  185. package/dist/components/GrRating/index.js +1 -1
  186. package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-C7W9mgYN.js → GrResponseErrorBanner-CZONq8uT.js} +3 -3
  187. package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-C7W9mgYN.js.map → GrResponseErrorBanner-CZONq8uT.js.map} +1 -1
  188. package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-DhX4jjay.js → GrResponseErrorBanner-CgfAwlg3.js} +1 -1
  189. package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-DhX4jjay.js.map → GrResponseErrorBanner-CgfAwlg3.js.map} +1 -1
  190. package/dist/components/GrResponseErrorBanner/index.js +3 -3
  191. package/dist/components/GrSegmented/chunks/{GrSegmented-CQw3ijqa.js → GrSegmented-DP9WMAbm.js} +2 -2
  192. package/dist/components/GrSegmented/chunks/{GrSegmented-CQw3ijqa.js.map → GrSegmented-DP9WMAbm.js.map} +1 -1
  193. package/dist/components/GrSegmented/index.js +3 -3
  194. package/dist/components/GrSelect/chunks/{GrSelect-B-Voni7D.js → GrSelect-CaGuyvtb.js} +5 -7
  195. package/dist/components/GrSelect/chunks/GrSelect-CaGuyvtb.js.map +1 -0
  196. package/dist/components/GrSelect/index.js +1 -1
  197. package/dist/components/GrSelect/styles.css +1 -1
  198. package/dist/components/GrSidebar/chunks/{GrSidebar-i7AxjhY_.js → GrSidebar-DG_t4aPE.js} +3 -3
  199. package/dist/components/GrSidebar/chunks/{GrSidebar-i7AxjhY_.js.map → GrSidebar-DG_t4aPE.js.map} +1 -1
  200. package/dist/components/GrSidebar/index.js +3 -3
  201. package/dist/components/GrSkeleton/chunks/{GrSkeleton-DEvNE3bC.js → GrSkeleton-CgfXxPQ2.js} +1 -7
  202. package/dist/components/GrSkeleton/chunks/{GrSkeleton-DEvNE3bC.js.map → GrSkeleton-CgfXxPQ2.js.map} +1 -1
  203. package/dist/components/GrSkeleton/index.js +3 -3
  204. package/dist/components/GrSlider/chunks/{GrSlider-CyhVsNKn.js → GrSlider-s99yAyz6.js} +1 -1
  205. package/dist/components/GrSlider/chunks/{GrSlider-CyhVsNKn.js.map → GrSlider-s99yAyz6.js.map} +1 -1
  206. package/dist/components/GrSlider/index.js +1 -1
  207. package/dist/components/GrSortableList/chunks/{GrSortableList-XB7mXM1W.js → GrSortableList-DJFPdUVv.js} +2 -2
  208. package/dist/components/GrSortableList/chunks/{GrSortableList-XB7mXM1W.js.map → GrSortableList-DJFPdUVv.js.map} +1 -1
  209. package/dist/components/GrSortableList/index.js +2 -2
  210. package/dist/components/GrSplitter/chunks/{GrSplitter-BzxVQwbY.js → GrSplitter-B9_JrT7q.js} +3 -12
  211. package/dist/components/GrSplitter/chunks/{GrSplitter-BzxVQwbY.js.map → GrSplitter-B9_JrT7q.js.map} +1 -1
  212. package/dist/components/GrSplitter/index.js +3 -3
  213. package/dist/components/GrStatistic/chunks/{GrStatistic-DOsM6s5V.js → GrStatistic-C3VpykHo.js} +2 -2
  214. package/dist/components/GrStatistic/chunks/{GrStatistic-DOsM6s5V.js.map → GrStatistic-C3VpykHo.js.map} +1 -1
  215. package/dist/components/GrStatistic/index.js +1 -1
  216. package/dist/components/GrSwitch/chunks/{GrSwitch-DpyvVrZG.js → GrSwitch-x_vQQ6ao.js} +1 -1
  217. package/dist/components/GrSwitch/chunks/{GrSwitch-DpyvVrZG.js.map → GrSwitch-x_vQQ6ao.js.map} +1 -1
  218. package/dist/components/GrSwitch/index.js +1 -1
  219. package/dist/components/GrTabPanels/chunks/{GrTabPanels-BVe1CZdJ.js → GrTabPanels-AJt1w1XC.js} +1 -1
  220. package/dist/components/GrTabPanels/chunks/{GrTabPanels-BVe1CZdJ.js.map → GrTabPanels-AJt1w1XC.js.map} +1 -1
  221. package/dist/components/GrTabPanels/index.js +3 -3
  222. package/dist/components/GrTable/chunks/{GrTable-BfqgwETQ.js → GrTable-f3qCWa99.js} +2 -2
  223. package/dist/components/GrTable/chunks/{GrTable-BfqgwETQ.js.map → GrTable-f3qCWa99.js.map} +1 -1
  224. package/dist/components/GrTable/index.js +2 -2
  225. package/dist/components/GrTabs/chunks/{GrTabs-f3-oQenu.js → GrTabs-CBHZkOFY.js} +2 -2
  226. package/dist/components/GrTabs/chunks/{GrTabs-f3-oQenu.js.map → GrTabs-CBHZkOFY.js.map} +1 -1
  227. package/dist/components/GrTabs/index.js +3 -3
  228. package/dist/components/GrTextarea/chunks/{GrTextarea-DSvd1nSy.js → GrTextarea-CNnkcIG1.js} +1 -1
  229. package/dist/components/GrTextarea/chunks/{GrTextarea-DSvd1nSy.js.map → GrTextarea-CNnkcIG1.js.map} +1 -1
  230. package/dist/components/GrTextarea/index.js +1 -1
  231. package/dist/components/GrTimeline/chunks/{GrTimeline-B-h2Yanw.js → GrTimeline-DlTraRn5.js} +4 -15
  232. package/dist/components/GrTimeline/chunks/{GrTimeline-B-h2Yanw.js.map → GrTimeline-DlTraRn5.js.map} +1 -1
  233. package/dist/components/GrTimeline/index.js +3 -3
  234. package/dist/components/GrToaster/chunks/{GrToaster-Dqja0Lf9.js → GrToaster-Db2NgrXu.js} +4 -4
  235. package/dist/components/GrToaster/chunks/{GrToaster-Dqja0Lf9.js.map → GrToaster-Db2NgrXu.js.map} +1 -1
  236. package/dist/components/GrToaster/index.js +1 -1
  237. package/dist/components/GrTooltip/chunks/{GrTooltip-Cn08heWz.js → GrTooltip-B6AwE_UX.js} +3 -3
  238. package/dist/components/GrTooltip/chunks/{GrTooltip-Cn08heWz.js.map → GrTooltip-B6AwE_UX.js.map} +1 -1
  239. package/dist/components/GrTooltip/index.js +1 -1
  240. package/dist/components/GrTree/chunks/{GrTree-BR9a2pay.js → GrTree-BvOeQ3xJ.js} +1 -1
  241. package/dist/components/GrTree/chunks/{GrTree-BR9a2pay.js.map → GrTree-BvOeQ3xJ.js.map} +1 -1
  242. package/dist/components/GrTree/index.js +2 -2
  243. package/dist/components/GrTreeSelect/chunks/{GrTreeSelect--muUeB0v.js → GrTreeSelect-_LjTRR7X.js} +5 -9
  244. package/dist/components/GrTreeSelect/chunks/GrTreeSelect-_LjTRR7X.js.map +1 -0
  245. package/dist/components/GrTreeSelect/index.js +1 -1
  246. package/dist/composables/useGrComponentConfig.js +1 -1
  247. package/dist/composables/usePortalTarget.js +1 -1
  248. package/dist/directives/loading.js +1 -1
  249. package/dist/granular-provider-node.js +1 -1
  250. package/dist/granular-provider.js +1 -1
  251. package/dist/index.js +95 -96
  252. package/dist/testing.js +33 -2
  253. package/dist/testing.js.map +1 -1
  254. package/dist/types/{src/components → components}/GrAlert/index.d.ts +0 -1
  255. package/dist/types/{src/components → components}/GrAvatar/index.d.ts +0 -1
  256. package/dist/types/{src/components → components}/GrBadgeWrap/index.d.ts +1 -1
  257. package/dist/types/{src/components → components}/GrBottomNav/index.d.ts +0 -1
  258. package/dist/types/{src/components → components}/GrButton/index.d.ts +0 -1
  259. package/dist/types/{src/components → components}/GrCheckbox/index.d.ts +0 -1
  260. package/dist/types/{src/components → components}/GrCollapse/index.d.ts +0 -1
  261. package/dist/types/{src/components → components}/GrColorPicker/index.d.ts +1 -1
  262. package/dist/types/{src/components → components}/GrCommandPalette/index.d.ts +0 -1
  263. package/dist/types/{src/components → components}/GrConfigProvider/index.d.ts +1 -1
  264. package/dist/types/{src/components → components}/GrDataTable/index.d.ts +0 -1
  265. package/dist/types/{src/components → components}/GrDialog/index.d.ts +1 -1
  266. package/dist/types/{src/components → components}/GrDialogService/index.d.ts +1 -1
  267. package/dist/types/{src/components → components}/GrDropdownMenu/index.d.ts +0 -1
  268. package/dist/types/{src/components → components}/GrEmptyState/index.d.ts +0 -1
  269. package/dist/types/{src/components → components}/GrFileUpload/index.d.ts +2 -3
  270. package/dist/types/{src/components → components}/GrForm/index.d.ts +2 -2
  271. package/dist/types/{src/components → components}/GrFormField/index.d.ts +1 -1
  272. package/dist/types/{src/components → components}/GrFormSection/index.d.ts +0 -1
  273. package/dist/types/{src/components → components}/GrProgressCircle/index.d.ts +0 -1
  274. package/dist/types/{src/components → components}/GrRadio/index.d.ts +0 -1
  275. package/dist/types/{src/components → components}/GrResponseErrorBanner/index.d.ts +2 -3
  276. package/dist/types/{src/components → components}/GrSegmented/index.d.ts +1 -1
  277. package/dist/types/{src/components → components}/GrSelect/GrSelect.vue.d.ts +0 -6
  278. package/dist/types/{src/components → components}/GrSidebar/index.d.ts +0 -1
  279. package/dist/types/{src/components → components}/GrSkeleton/index.d.ts +1 -1
  280. package/dist/types/{src/components → components}/GrSplitter/index.d.ts +1 -1
  281. package/dist/types/{src/components → components}/GrTabPanels/index.d.ts +0 -1
  282. package/dist/types/{src/components → components}/GrTabs/index.d.ts +0 -1
  283. package/dist/types/{src/components → components}/GrTimeline/index.d.ts +0 -2
  284. package/dist/types/{src/components → components}/GrTreeSelect/GrTreeSelect.vue.d.ts +0 -6
  285. package/dist/types/{src/testing → testing}/index.d.ts +1 -0
  286. package/dist/types/testing/keyboard.d.ts +32 -0
  287. package/dist/web-types.json +1 -9
  288. package/package.json +109 -106
  289. package/dist/chunks/config-8Pcutu1j2.js.map +0 -1
  290. package/dist/chunks/config-BE6n20np2.js.map +0 -1
  291. package/dist/chunks/config-BKvX0q102.js.map +0 -1
  292. package/dist/chunks/config-BqFjr3tN.js.map +0 -1
  293. package/dist/chunks/config-CDat1wXf2.js.map +0 -1
  294. package/dist/chunks/config-COpuWGr_.js.map +0 -1
  295. package/dist/chunks/config-CY0_6cMi2.js.map +0 -1
  296. package/dist/chunks/config-D94Z9po52.js.map +0 -1
  297. package/dist/chunks/config-DAX8Deh1.js.map +0 -1
  298. package/dist/chunks/config-WTNhdh6T2.js.map +0 -1
  299. package/dist/chunks/config-_qPUfb6-2.js.map +0 -1
  300. package/dist/chunks/config-eXB87DOi.js.map +0 -1
  301. package/dist/components/GrDialogService/chunks/GrDialogService-CTBiiJDI.js.map +0 -1
  302. package/dist/components/GrRadioGroup/chunks/GrRadioGroup-DIuBw0wk.js.map +0 -1
  303. package/dist/components/GrSelect/chunks/GrSelect-B-Voni7D.js.map +0 -1
  304. package/dist/components/GrTreeSelect/chunks/GrTreeSelect--muUeB0v.js.map +0 -1
  305. /package/dist/chunks/{config-8Pcutu1j2.js → config-8Pcutu1j.js} +0 -0
  306. /package/dist/chunks/{config-BE6n20np2.js → config-BE6n20np.js} +0 -0
  307. /package/dist/chunks/{config-BKvX0q102.js → config-BKvX0q10.js} +0 -0
  308. /package/dist/chunks/{config-CDat1wXf2.js → config-CDat1wXf.js} +0 -0
  309. /package/dist/chunks/{config-COpuWGr_.js → config-COpuWGr_2.js} +0 -0
  310. /package/dist/chunks/{config-CY0_6cMi2.js → config-CY0_6cMi.js} +0 -0
  311. /package/dist/chunks/{config-D94Z9po52.js → config-D94Z9po5.js} +0 -0
  312. /package/dist/chunks/{config-DAX8Deh1.js → config-DAX8Deh12.js} +0 -0
  313. /package/dist/chunks/{config-WTNhdh6T2.js → config-WTNhdh6T.js} +0 -0
  314. /package/dist/chunks/{config-eXB87DOi.js → config-eXB87DOi2.js} +0 -0
  315. /package/dist/types/{src/components → components}/GrAlert/GrAlert.vue.d.ts +0 -0
  316. /package/dist/types/{src/components → components}/GrAlert/config.d.ts +0 -0
  317. /package/dist/types/{src/components → components}/GrAlert/defaults.d.ts +0 -0
  318. /package/dist/types/{src/components → components}/GrAlert/grAlertStyles.d.ts +0 -0
  319. /package/dist/types/{src/components → components}/GrAutocomplete/GrAutocomplete.vue.d.ts +0 -0
  320. /package/dist/types/{src/components → components}/GrAutocomplete/config.d.ts +0 -0
  321. /package/dist/types/{src/components → components}/GrAutocomplete/defaults.d.ts +0 -0
  322. /package/dist/types/{src/components → components}/GrAutocomplete/grAutocompleteStyles.d.ts +0 -0
  323. /package/dist/types/{src/components → components}/GrAutocomplete/index.d.ts +0 -0
  324. /package/dist/types/{src/components → components}/GrAutocomplete/safelist.d.ts +0 -0
  325. /package/dist/types/{src/components → components}/GrAvatar/GrAvatar.vue.d.ts +0 -0
  326. /package/dist/types/{src/components → components}/GrAvatar/GrAvatarGroup.vue.d.ts +0 -0
  327. /package/dist/types/{src/components → components}/GrAvatar/avatarContext.d.ts +0 -0
  328. /package/dist/types/{src/components → components}/GrAvatar/config.d.ts +0 -0
  329. /package/dist/types/{src/components → components}/GrAvatar/defaults.d.ts +0 -0
  330. /package/dist/types/{src/components → components}/GrAvatar/grAvatarStyles.d.ts +0 -0
  331. /package/dist/types/{src/components → components}/GrAvatar/safelist.d.ts +0 -0
  332. /package/dist/types/{src/components → components}/GrBadge/GrBadge.vue.d.ts +0 -0
  333. /package/dist/types/{src/components → components}/GrBadge/config.d.ts +0 -0
  334. /package/dist/types/{src/components → components}/GrBadge/defaults.d.ts +0 -0
  335. /package/dist/types/{src/components → components}/GrBadge/grBadgeStyles.d.ts +0 -0
  336. /package/dist/types/{src/components → components}/GrBadge/index.d.ts +0 -0
  337. /package/dist/types/{src/components → components}/GrBadge/safelist.d.ts +0 -0
  338. /package/dist/types/{src/components → components}/GrBadgeWrap/GrBadgeWrap.vue.d.ts +0 -0
  339. /package/dist/types/{src/components → components}/GrBadgeWrap/config.d.ts +0 -0
  340. /package/dist/types/{src/components → components}/GrBadgeWrap/grBadgeWrapStyles.d.ts +0 -0
  341. /package/dist/types/{src/components → components}/GrBadgeWrap/safelist.d.ts +0 -0
  342. /package/dist/types/{src/components → components}/GrBottomNav/GrBottomNav.vue.d.ts +0 -0
  343. /package/dist/types/{src/components → components}/GrBottomNav/config.d.ts +0 -0
  344. /package/dist/types/{src/components → components}/GrBottomNav/defaults.d.ts +0 -0
  345. /package/dist/types/{src/components → components}/GrBottomNav/grBottomNavStyles.d.ts +0 -0
  346. /package/dist/types/{src/components → components}/GrBottomNav/safelist.d.ts +0 -0
  347. /package/dist/types/{src/components → components}/GrBreadcrumbs/GrBreadcrumbs.vue.d.ts +0 -0
  348. /package/dist/types/{src/components → components}/GrBreadcrumbs/config.d.ts +0 -0
  349. /package/dist/types/{src/components → components}/GrBreadcrumbs/defaults.d.ts +0 -0
  350. /package/dist/types/{src/components → components}/GrBreadcrumbs/grBreadcrumbsStyles.d.ts +0 -0
  351. /package/dist/types/{src/components → components}/GrBreadcrumbs/index.d.ts +0 -0
  352. /package/dist/types/{src/components → components}/GrBreadcrumbs/safelist.d.ts +0 -0
  353. /package/dist/types/{src/components → components}/GrButton/GrButton.vue.d.ts +0 -0
  354. /package/dist/types/{src/components → components}/GrButton/config.d.ts +0 -0
  355. /package/dist/types/{src/components → components}/GrButton/defaults.d.ts +0 -0
  356. /package/dist/types/{src/components → components}/GrButton/grButtonStyles.d.ts +0 -0
  357. /package/dist/types/{src/components → components}/GrButton/safelist.d.ts +0 -0
  358. /package/dist/types/{src/components → components}/GrButtonGroup/GrButtonGroup.vue.d.ts +0 -0
  359. /package/dist/types/{src/components → components}/GrButtonGroup/config.d.ts +0 -0
  360. /package/dist/types/{src/components → components}/GrButtonGroup/context.d.ts +0 -0
  361. /package/dist/types/{src/components → components}/GrButtonGroup/index.d.ts +0 -0
  362. /package/dist/types/{src/components → components}/GrCard/GrCard.vue.d.ts +0 -0
  363. /package/dist/types/{src/components → components}/GrCard/config.d.ts +0 -0
  364. /package/dist/types/{src/components → components}/GrCard/defaults.d.ts +0 -0
  365. /package/dist/types/{src/components → components}/GrCard/grCardStyles.d.ts +0 -0
  366. /package/dist/types/{src/components → components}/GrCard/index.d.ts +0 -0
  367. /package/dist/types/{src/components → components}/GrCard/safelist.d.ts +0 -0
  368. /package/dist/types/{src/components → components}/GrCheckbox/GrCheckbox.vue.d.ts +0 -0
  369. /package/dist/types/{src/components → components}/GrCheckbox/config.d.ts +0 -0
  370. /package/dist/types/{src/components → components}/GrCheckbox/defaults.d.ts +0 -0
  371. /package/dist/types/{src/components → components}/GrCheckbox/grCheckboxGroupContext.d.ts +0 -0
  372. /package/dist/types/{src/components → components}/GrCheckbox/grCheckboxStyles.d.ts +0 -0
  373. /package/dist/types/{src/components → components}/GrCheckbox/safelist.d.ts +0 -0
  374. /package/dist/types/{src/components → components}/GrCheckboxGroup/GrCheckboxGroup.vue.d.ts +0 -0
  375. /package/dist/types/{src/components → components}/GrCheckboxGroup/config.d.ts +0 -0
  376. /package/dist/types/{src/components → components}/GrCheckboxGroup/defaults.d.ts +0 -0
  377. /package/dist/types/{src/components → components}/GrCheckboxGroup/index.d.ts +0 -0
  378. /package/dist/types/{src/components → components}/GrCollapse/GrCollapse.vue.d.ts +0 -0
  379. /package/dist/types/{src/components → components}/GrCollapse/GrCollapseItem.vue.d.ts +0 -0
  380. /package/dist/types/{src/components → components}/GrCollapse/config.d.ts +0 -0
  381. /package/dist/types/{src/components → components}/GrCollapse/defaults.d.ts +0 -0
  382. /package/dist/types/{src/components → components}/GrCollapse/grCollapseContext.d.ts +0 -0
  383. /package/dist/types/{src/components → components}/GrCollapse/grCollapseStyles.d.ts +0 -0
  384. /package/dist/types/{src/components → components}/GrCollapse/safelist.d.ts +0 -0
  385. /package/dist/types/{src/components → components}/GrColorPicker/GrColorPicker.vue.d.ts +0 -0
  386. /package/dist/types/{src/components → components}/GrColorPicker/color.d.ts +0 -0
  387. /package/dist/types/{src/components → components}/GrColorPicker/config.d.ts +0 -0
  388. /package/dist/types/{src/components → components}/GrColorPicker/defaults.d.ts +0 -0
  389. /package/dist/types/{src/components → components}/GrColorPicker/grColorPickerStyles.d.ts +0 -0
  390. /package/dist/types/{src/components → components}/GrColorPicker/safelist.d.ts +0 -0
  391. /package/dist/types/{src/components → components}/GrCommandPalette/GrCommandPalette.vue.d.ts +0 -0
  392. /package/dist/types/{src/components → components}/GrCommandPalette/config.d.ts +0 -0
  393. /package/dist/types/{src/components → components}/GrCommandPalette/defaults.d.ts +0 -0
  394. /package/dist/types/{src/components → components}/GrCommandPalette/filtering.d.ts +0 -0
  395. /package/dist/types/{src/components → components}/GrCommandPalette/grCommandPaletteStyles.d.ts +0 -0
  396. /package/dist/types/{src/components → components}/GrCommandPalette/safelist.d.ts +0 -0
  397. /package/dist/types/{src/components → components}/GrConfigProvider/GrConfigProvider.vue.d.ts +0 -0
  398. /package/dist/types/{src/components → components}/GrConfigProvider/config.d.ts +0 -0
  399. /package/dist/types/{src/components → components}/GrConfigProvider/context.d.ts +0 -0
  400. /package/dist/types/{src/components → components}/GrConfigProvider/zIndexScale.d.ts +0 -0
  401. /package/dist/types/{src/components → components}/GrConfirmDialog/GrConfirmDialog.vue.d.ts +0 -0
  402. /package/dist/types/{src/components → components}/GrConfirmDialog/config.d.ts +0 -0
  403. /package/dist/types/{src/components → components}/GrConfirmDialog/defaults.d.ts +0 -0
  404. /package/dist/types/{src/components → components}/GrConfirmDialog/index.d.ts +0 -0
  405. /package/dist/types/{src/components → components}/GrDataTable/GrDataTable.vue.d.ts +0 -0
  406. /package/dist/types/{src/components → components}/GrDataTable/config.d.ts +0 -0
  407. /package/dist/types/{src/components → components}/GrDataTable/defaults.d.ts +0 -0
  408. /package/dist/types/{src/components → components}/GrDataTable/grDataTableSort.d.ts +0 -0
  409. /package/dist/types/{src/components → components}/GrDataTable/grDataTableStyles.d.ts +0 -0
  410. /package/dist/types/{src/components → components}/GrDataTable/safelist.d.ts +0 -0
  411. /package/dist/types/{src/components → components}/GrDialog/GrDialog.vue.d.ts +0 -0
  412. /package/dist/types/{src/components → components}/GrDialog/GrDialogCloseButton.vue.d.ts +0 -0
  413. /package/dist/types/{src/components → components}/GrDialog/GrDialogFooter.vue.d.ts +0 -0
  414. /package/dist/types/{src/components → components}/GrDialog/GrDialogHeader.vue.d.ts +0 -0
  415. /package/dist/types/{src/components → components}/GrDialog/config.d.ts +0 -0
  416. /package/dist/types/{src/components → components}/GrDialog/defaults.d.ts +0 -0
  417. /package/dist/types/{src/components → components}/GrDialog/dialogShared.d.ts +0 -0
  418. /package/dist/types/{src/components → components}/GrDialog/safelist.d.ts +0 -0
  419. /package/dist/types/{src/components → components}/GrDialogService/GrDialogServiceHost.vue.d.ts +0 -0
  420. /package/dist/types/{src/components → components}/GrDialogService/GrDialogServiceItem.vue.d.ts +0 -0
  421. /package/dist/types/{src/components → components}/GrDialogService/config.d.ts +0 -0
  422. /package/dist/types/{src/components → components}/GrDialogService/store.d.ts +0 -0
  423. /package/dist/types/{src/components → components}/GrDialogService/types.d.ts +0 -0
  424. /package/dist/types/{src/components → components}/GrDialogService/useDialogService.d.ts +0 -0
  425. /package/dist/types/{src/components → components}/GrDivider/GrDivider.vue.d.ts +0 -0
  426. /package/dist/types/{src/components → components}/GrDivider/config.d.ts +0 -0
  427. /package/dist/types/{src/components → components}/GrDivider/defaults.d.ts +0 -0
  428. /package/dist/types/{src/components → components}/GrDivider/grDividerStyles.d.ts +0 -0
  429. /package/dist/types/{src/components → components}/GrDivider/index.d.ts +0 -0
  430. /package/dist/types/{src/components → components}/GrDivider/safelist.d.ts +0 -0
  431. /package/dist/types/{src/components → components}/GrDrawer/GrDrawer.vue.d.ts +0 -0
  432. /package/dist/types/{src/components → components}/GrDrawer/config.d.ts +0 -0
  433. /package/dist/types/{src/components → components}/GrDrawer/defaults.d.ts +0 -0
  434. /package/dist/types/{src/components → components}/GrDrawer/grDrawerStyles.d.ts +0 -0
  435. /package/dist/types/{src/components → components}/GrDrawer/index.d.ts +0 -0
  436. /package/dist/types/{src/components → components}/GrDrawer/safelist.d.ts +0 -0
  437. /package/dist/types/{src/components → components}/GrDropdown/GrDropdown.vue.d.ts +0 -0
  438. /package/dist/types/{src/components → components}/GrDropdown/config.d.ts +0 -0
  439. /package/dist/types/{src/components → components}/GrDropdown/grDropdownStyles.d.ts +0 -0
  440. /package/dist/types/{src/components → components}/GrDropdown/index.d.ts +0 -0
  441. /package/dist/types/{src/components → components}/GrDropdown/safelist.d.ts +0 -0
  442. /package/dist/types/{src/components → components}/GrDropdownMenu/GrDropdownMenu.vue.d.ts +0 -0
  443. /package/dist/types/{src/components → components}/GrDropdownMenu/GrDropdownMenuColumn.vue.d.ts +0 -0
  444. /package/dist/types/{src/components → components}/GrDropdownMenu/GrDropdownMenuColumns.vue.d.ts +0 -0
  445. /package/dist/types/{src/components → components}/GrDropdownMenu/GrDropdownMenuDivider.vue.d.ts +0 -0
  446. /package/dist/types/{src/components → components}/GrDropdownMenu/GrDropdownMenuGroup.vue.d.ts +0 -0
  447. /package/dist/types/{src/components → components}/GrDropdownMenu/GrDropdownMenuHeader.vue.d.ts +0 -0
  448. /package/dist/types/{src/components → components}/GrDropdownMenu/GrDropdownMenuItem.vue.d.ts +0 -0
  449. /package/dist/types/{src/components → components}/GrDropdownMenu/GrDropdownMenuList.vue.d.ts +0 -0
  450. /package/dist/types/{src/components → components}/GrDropdownMenu/config.d.ts +0 -0
  451. /package/dist/types/{src/components → components}/GrDropdownMenu/grDropdownMenuStyles.d.ts +0 -0
  452. /package/dist/types/{src/components → components}/GrDropdownMenu/menuModel.d.ts +0 -0
  453. /package/dist/types/{src/components → components}/GrDropdownMenu/safelist.d.ts +0 -0
  454. /package/dist/types/{src/components → components}/GrEmptyState/GrEmptyState.vue.d.ts +0 -0
  455. /package/dist/types/{src/components → components}/GrEmptyState/config.d.ts +0 -0
  456. /package/dist/types/{src/components → components}/GrEmptyState/defaults.d.ts +0 -0
  457. /package/dist/types/{src/components → components}/GrEmptyState/grEmptyStateStyles.d.ts +0 -0
  458. /package/dist/types/{src/components → components}/GrEmptyState/safelist.d.ts +0 -0
  459. /package/dist/types/{src/components → components}/GrFileUpload/FileValidationError.d.ts +0 -0
  460. /package/dist/types/{src/components → components}/GrFileUpload/GrFileUpload.vue.d.ts +0 -0
  461. /package/dist/types/{src/components → components}/GrFileUpload/acceptValidator.d.ts +0 -0
  462. /package/dist/types/{src/components → components}/GrFileUpload/config.d.ts +0 -0
  463. /package/dist/types/{src/components → components}/GrFileUpload/defaults.d.ts +0 -0
  464. /package/dist/types/{src/components → components}/GrFileUpload/fileEntry.d.ts +0 -0
  465. /package/dist/types/{src/components → components}/GrFileUpload/grFileUploadStyles.d.ts +0 -0
  466. /package/dist/types/{src/components → components}/GrFileUpload/matchAccept.d.ts +0 -0
  467. /package/dist/types/{src/components → components}/GrFileUpload/maxFileSize.d.ts +0 -0
  468. /package/dist/types/{src/components → components}/GrFileUpload/runFileValidators.d.ts +0 -0
  469. /package/dist/types/{src/components → components}/GrFileUpload/safelist.d.ts +0 -0
  470. /package/dist/types/{src/components → components}/GrFileUpload/types.d.ts +0 -0
  471. /package/dist/types/{src/components → components}/GrFileUpload/uploadState.d.ts +0 -0
  472. /package/dist/types/{src/components → components}/GrFileUpload/uploadViaXhr.d.ts +0 -0
  473. /package/dist/types/{src/components → components}/GrFileUpload/useDropZone.d.ts +0 -0
  474. /package/dist/types/{src/components → components}/GrFileUpload/usePerFileUpload.d.ts +0 -0
  475. /package/dist/types/{src/components → components}/GrFileUpload/useUploadState.d.ts +0 -0
  476. /package/dist/types/{src/components → components}/GrForm/GrForm.vue.d.ts +0 -0
  477. /package/dist/types/{src/components → components}/GrForm/config.d.ts +0 -0
  478. /package/dist/types/{src/components → components}/GrForm/context.d.ts +0 -0
  479. /package/dist/types/{src/components → components}/GrForm/fileRule.d.ts +0 -0
  480. /package/dist/types/{src/components → components}/GrForm/modelSnapshot.d.ts +0 -0
  481. /package/dist/types/{src/components → components}/GrForm/validation.d.ts +0 -0
  482. /package/dist/types/{src/components → components}/GrFormField/GrFormField.vue.d.ts +0 -0
  483. /package/dist/types/{src/components → components}/GrFormField/config.d.ts +0 -0
  484. /package/dist/types/{src/components → components}/GrFormField/context.d.ts +0 -0
  485. /package/dist/types/{src/components → components}/GrFormField/defaults.d.ts +0 -0
  486. /package/dist/types/{src/components → components}/GrFormField/grFormFieldStyles.d.ts +0 -0
  487. /package/dist/types/{src/components → components}/GrFormField/safelist.d.ts +0 -0
  488. /package/dist/types/{src/components → components}/GrFormFile/GrFormFile.vue.d.ts +0 -0
  489. /package/dist/types/{src/components → components}/GrFormFile/config.d.ts +0 -0
  490. /package/dist/types/{src/components → components}/GrFormFile/defaults.d.ts +0 -0
  491. /package/dist/types/{src/components → components}/GrFormFile/grFormFileStyles.d.ts +0 -0
  492. /package/dist/types/{src/components → components}/GrFormFile/index.d.ts +0 -0
  493. /package/dist/types/{src/components → components}/GrFormFile/safelist.d.ts +0 -0
  494. /package/dist/types/{src/components → components}/GrFormSection/GrFormSection.vue.d.ts +0 -0
  495. /package/dist/types/{src/components → components}/GrFormSection/config.d.ts +0 -0
  496. /package/dist/types/{src/components → components}/GrFormSection/defaults.d.ts +0 -0
  497. /package/dist/types/{src/components → components}/GrFormSection/grFormSectionStyles.d.ts +0 -0
  498. /package/dist/types/{src/components → components}/GrFormSection/safelist.d.ts +0 -0
  499. /package/dist/types/{src/components → components}/GrIcon/GrIcon.vue.d.ts +0 -0
  500. /package/dist/types/{src/components → components}/GrIcon/config.d.ts +0 -0
  501. /package/dist/types/{src/components → components}/GrIcon/defaults.d.ts +0 -0
  502. /package/dist/types/{src/components → components}/GrIcon/grIconStyles.d.ts +0 -0
  503. /package/dist/types/{src/components → components}/GrIcon/index.d.ts +0 -0
  504. /package/dist/types/{src/components → components}/GrIcon/safelist.d.ts +0 -0
  505. /package/dist/types/{src/components → components}/GrImageViewer/GrImageViewer.vue.d.ts +0 -0
  506. /package/dist/types/{src/components → components}/GrImageViewer/composables/usePointerGestures.d.ts +0 -0
  507. /package/dist/types/{src/components → components}/GrImageViewer/composables/useViewerKeyboard.d.ts +0 -0
  508. /package/dist/types/{src/components → components}/GrImageViewer/composables/useWheelGesture.d.ts +0 -0
  509. /package/dist/types/{src/components → components}/GrImageViewer/composables/useZoomPan.d.ts +0 -0
  510. /package/dist/types/{src/components → components}/GrImageViewer/config.d.ts +0 -0
  511. /package/dist/types/{src/components → components}/GrImageViewer/grImageViewerStyles.d.ts +0 -0
  512. /package/dist/types/{src/components → components}/GrImageViewer/index.d.ts +0 -0
  513. /package/dist/types/{src/components → components}/GrImageViewer/safelist.d.ts +0 -0
  514. /package/dist/types/{src/components → components}/GrInput/GrInput.vue.d.ts +0 -0
  515. /package/dist/types/{src/components → components}/GrInput/config.d.ts +0 -0
  516. /package/dist/types/{src/components → components}/GrInput/defaults.d.ts +0 -0
  517. /package/dist/types/{src/components → components}/GrInput/grInputStyles.d.ts +0 -0
  518. /package/dist/types/{src/components → components}/GrInput/index.d.ts +0 -0
  519. /package/dist/types/{src/components → components}/GrInput/safelist.d.ts +0 -0
  520. /package/dist/types/{src/components → components}/GrInputTag/GrInputTag.vue.d.ts +0 -0
  521. /package/dist/types/{src/components → components}/GrInputTag/config.d.ts +0 -0
  522. /package/dist/types/{src/components → components}/GrInputTag/defaults.d.ts +0 -0
  523. /package/dist/types/{src/components → components}/GrInputTag/grInputTagStyles.d.ts +0 -0
  524. /package/dist/types/{src/components → components}/GrInputTag/index.d.ts +0 -0
  525. /package/dist/types/{src/components → components}/GrInputTag/safelist.d.ts +0 -0
  526. /package/dist/types/{src/components → components}/GrKbd/GrKbd.vue.d.ts +0 -0
  527. /package/dist/types/{src/components → components}/GrKbd/config.d.ts +0 -0
  528. /package/dist/types/{src/components → components}/GrKbd/defaults.d.ts +0 -0
  529. /package/dist/types/{src/components → components}/GrKbd/grKbdStyles.d.ts +0 -0
  530. /package/dist/types/{src/components → components}/GrKbd/index.d.ts +0 -0
  531. /package/dist/types/{src/components → components}/GrKbd/safelist.d.ts +0 -0
  532. /package/dist/types/{src/components → components}/GrLink/GrLink.vue.d.ts +0 -0
  533. /package/dist/types/{src/components → components}/GrLink/config.d.ts +0 -0
  534. /package/dist/types/{src/components → components}/GrLink/defaults.d.ts +0 -0
  535. /package/dist/types/{src/components → components}/GrLink/grLinkStyles.d.ts +0 -0
  536. /package/dist/types/{src/components → components}/GrLink/index.d.ts +0 -0
  537. /package/dist/types/{src/components → components}/GrLink/safelist.d.ts +0 -0
  538. /package/dist/types/{src/components → components}/GrList/GrList.vue.d.ts +0 -0
  539. /package/dist/types/{src/components → components}/GrList/GrListItem.vue.d.ts +0 -0
  540. /package/dist/types/{src/components → components}/GrList/config.d.ts +0 -0
  541. /package/dist/types/{src/components → components}/GrList/grListStyles.d.ts +0 -0
  542. /package/dist/types/{src/components → components}/GrList/index.d.ts +0 -0
  543. /package/dist/types/{src/components → components}/GrList/safelist.d.ts +0 -0
  544. /package/dist/types/{src/components → components}/GrLoading/GrLoading.vue.d.ts +0 -0
  545. /package/dist/types/{src/components → components}/GrLoading/config.d.ts +0 -0
  546. /package/dist/types/{src/components → components}/GrLoading/grLoadingStyles.d.ts +0 -0
  547. /package/dist/types/{src/components → components}/GrLoading/index.d.ts +0 -0
  548. /package/dist/types/{src/components → components}/GrLoading/safelist.d.ts +0 -0
  549. /package/dist/types/{src/components → components}/GrModal/GrModal.vue.d.ts +0 -0
  550. /package/dist/types/{src/components → components}/GrModal/config.d.ts +0 -0
  551. /package/dist/types/{src/components → components}/GrModal/context.d.ts +0 -0
  552. /package/dist/types/{src/components → components}/GrModal/defaults.d.ts +0 -0
  553. /package/dist/types/{src/components → components}/GrModal/grModalStyles.d.ts +0 -0
  554. /package/dist/types/{src/components → components}/GrModal/index.d.ts +0 -0
  555. /package/dist/types/{src/components → components}/GrModal/safelist.d.ts +0 -0
  556. /package/dist/types/{src/components → components}/GrNavbar/GrNavbar.vue.d.ts +0 -0
  557. /package/dist/types/{src/components → components}/GrNavbar/config.d.ts +0 -0
  558. /package/dist/types/{src/components → components}/GrNavbar/grNavbarStyles.d.ts +0 -0
  559. /package/dist/types/{src/components → components}/GrNavbar/index.d.ts +0 -0
  560. /package/dist/types/{src/components → components}/GrNavbar/safelist.d.ts +0 -0
  561. /package/dist/types/{src/components → components}/GrNumberInput/GrNumberInput.vue.d.ts +0 -0
  562. /package/dist/types/{src/components → components}/GrNumberInput/config.d.ts +0 -0
  563. /package/dist/types/{src/components → components}/GrNumberInput/defaults.d.ts +0 -0
  564. /package/dist/types/{src/components → components}/GrNumberInput/grNumberInputStyles.d.ts +0 -0
  565. /package/dist/types/{src/components → components}/GrNumberInput/index.d.ts +0 -0
  566. /package/dist/types/{src/components → components}/GrNumberInput/numberInputMath.d.ts +0 -0
  567. /package/dist/types/{src/components → components}/GrNumberInput/safelist.d.ts +0 -0
  568. /package/dist/types/{src/components → components}/GrPagination/GrPagination.vue.d.ts +0 -0
  569. /package/dist/types/{src/components → components}/GrPagination/config.d.ts +0 -0
  570. /package/dist/types/{src/components → components}/GrPagination/defaults.d.ts +0 -0
  571. /package/dist/types/{src/components → components}/GrPagination/grPaginationStyles.d.ts +0 -0
  572. /package/dist/types/{src/components → components}/GrPagination/index.d.ts +0 -0
  573. /package/dist/types/{src/components → components}/GrPagination/safelist.d.ts +0 -0
  574. /package/dist/types/{src/components → components}/GrPopover/GrPopover.vue.d.ts +0 -0
  575. /package/dist/types/{src/components → components}/GrPopover/config.d.ts +0 -0
  576. /package/dist/types/{src/components → components}/GrPopover/defaults.d.ts +0 -0
  577. /package/dist/types/{src/components → components}/GrPopover/grPopoverStyles.d.ts +0 -0
  578. /package/dist/types/{src/components → components}/GrPopover/index.d.ts +0 -0
  579. /package/dist/types/{src/components → components}/GrPopover/safelist.d.ts +0 -0
  580. /package/dist/types/{src/components → components}/GrProgressBar/GrProgressBar.vue.d.ts +0 -0
  581. /package/dist/types/{src/components → components}/GrProgressBar/config.d.ts +0 -0
  582. /package/dist/types/{src/components → components}/GrProgressBar/defaults.d.ts +0 -0
  583. /package/dist/types/{src/components → components}/GrProgressBar/grStyle.d.ts +0 -0
  584. /package/dist/types/{src/components → components}/GrProgressBar/index.d.ts +0 -0
  585. /package/dist/types/{src/components → components}/GrProgressBar/safelist.d.ts +0 -0
  586. /package/dist/types/{src/components → components}/GrProgressCircle/GrProgressCircle.vue.d.ts +0 -0
  587. /package/dist/types/{src/components → components}/GrProgressCircle/config.d.ts +0 -0
  588. /package/dist/types/{src/components → components}/GrProgressCircle/defaults.d.ts +0 -0
  589. /package/dist/types/{src/components → components}/GrProgressCircle/geometry.d.ts +0 -0
  590. /package/dist/types/{src/components → components}/GrProgressCircle/grProgressCircleStyles.d.ts +0 -0
  591. /package/dist/types/{src/components → components}/GrProgressCircle/safelist.d.ts +0 -0
  592. /package/dist/types/{src/components → components}/GrPromptDialog/GrPromptDialog.vue.d.ts +0 -0
  593. /package/dist/types/{src/components → components}/GrPromptDialog/config.d.ts +0 -0
  594. /package/dist/types/{src/components → components}/GrPromptDialog/defaults.d.ts +0 -0
  595. /package/dist/types/{src/components → components}/GrPromptDialog/index.d.ts +0 -0
  596. /package/dist/types/{src/components → components}/GrRadio/GrRadio.vue.d.ts +0 -0
  597. /package/dist/types/{src/components → components}/GrRadio/config.d.ts +0 -0
  598. /package/dist/types/{src/components → components}/GrRadio/defaults.d.ts +0 -0
  599. /package/dist/types/{src/components → components}/GrRadio/grRadioGroupContext.d.ts +0 -0
  600. /package/dist/types/{src/components → components}/GrRadio/grRadioStyles.d.ts +0 -0
  601. /package/dist/types/{src/components → components}/GrRadio/safelist.d.ts +0 -0
  602. /package/dist/types/{src/components → components}/GrRadioGroup/GrRadioGroup.vue.d.ts +0 -0
  603. /package/dist/types/{src/components → components}/GrRadioGroup/config.d.ts +0 -0
  604. /package/dist/types/{src/components → components}/GrRadioGroup/defaults.d.ts +0 -0
  605. /package/dist/types/{src/components → components}/GrRadioGroup/index.d.ts +0 -0
  606. /package/dist/types/{src/components → components}/GrRating/GrRating.vue.d.ts +0 -0
  607. /package/dist/types/{src/components → components}/GrRating/config.d.ts +0 -0
  608. /package/dist/types/{src/components → components}/GrRating/defaults.d.ts +0 -0
  609. /package/dist/types/{src/components → components}/GrRating/grRatingStyles.d.ts +0 -0
  610. /package/dist/types/{src/components → components}/GrRating/index.d.ts +0 -0
  611. /package/dist/types/{src/components → components}/GrRating/safelist.d.ts +0 -0
  612. /package/dist/types/{src/components → components}/GrResponseErrorBanner/GrFormErrorBanner.vue.d.ts +0 -0
  613. /package/dist/types/{src/components → components}/GrResponseErrorBanner/GrResponseErrorBanner.vue.d.ts +0 -0
  614. /package/dist/types/{src/components → components}/GrResponseErrorBanner/GrUploadErrorBanner.vue.d.ts +0 -0
  615. /package/dist/types/{src/components → components}/GrResponseErrorBanner/config.d.ts +0 -0
  616. /package/dist/types/{src/components → components}/GrResponseErrorBanner/parsers/abortErrorParser.d.ts +0 -0
  617. /package/dist/types/{src/components → components}/GrResponseErrorBanner/parsers/createResponseErrorClassifier.d.ts +0 -0
  618. /package/dist/types/{src/components → components}/GrResponseErrorBanner/parsers/fileValidationParser.d.ts +0 -0
  619. /package/dist/types/{src/components → components}/GrResponseErrorBanner/parsers/httpStatusParser.d.ts +0 -0
  620. /package/dist/types/{src/components → components}/GrResponseErrorBanner/parsers/index.d.ts +0 -0
  621. /package/dist/types/{src/components → components}/GrResponseErrorBanner/parsers/jsonApiErrorParser.d.ts +0 -0
  622. /package/dist/types/{src/components → components}/GrResponseErrorBanner/parsers/laravelValidationParser.d.ts +0 -0
  623. /package/dist/types/{src/components → components}/GrResponseErrorBanner/parsers/networkErrorParser.d.ts +0 -0
  624. /package/dist/types/{src/components → components}/GrResponseErrorBanner/parsers/normalizeError.d.ts +0 -0
  625. /package/dist/types/{src/components → components}/GrResponseErrorBanner/parsers/plainMessageParser.d.ts +0 -0
  626. /package/dist/types/{src/components → components}/GrResponseErrorBanner/parsers/problemDetailsParser.d.ts +0 -0
  627. /package/dist/types/{src/components → components}/GrResponseErrorBanner/responseError.defaults.d.ts +0 -0
  628. /package/dist/types/{src/components → components}/GrResponseErrorBanner/responseError.types.d.ts +0 -0
  629. /package/dist/types/{src/components → components}/GrResponseErrorBanner/useResponseError.d.ts +0 -0
  630. /package/dist/types/{src/components → components}/GrSegmented/GrSegmented.vue.d.ts +0 -0
  631. /package/dist/types/{src/components → components}/GrSegmented/config.d.ts +0 -0
  632. /package/dist/types/{src/components → components}/GrSegmented/defaults.d.ts +0 -0
  633. /package/dist/types/{src/components → components}/GrSegmented/grSegmentedStyles.d.ts +0 -0
  634. /package/dist/types/{src/components → components}/GrSegmented/safelist.d.ts +0 -0
  635. /package/dist/types/{src/components → components}/GrSelect/composables/useSelectNavigation.d.ts +0 -0
  636. /package/dist/types/{src/components → components}/GrSelect/composables/useSelectPanelItems.d.ts +0 -0
  637. /package/dist/types/{src/components → components}/GrSelect/composables/useSelectValues.d.ts +0 -0
  638. /package/dist/types/{src/components → components}/GrSelect/composables/useSelectVirtualization.d.ts +0 -0
  639. /package/dist/types/{src/components → components}/GrSelect/config.d.ts +0 -0
  640. /package/dist/types/{src/components → components}/GrSelect/defaults.d.ts +0 -0
  641. /package/dist/types/{src/components → components}/GrSelect/grSelectStyles.d.ts +0 -0
  642. /package/dist/types/{src/components → components}/GrSelect/index.d.ts +0 -0
  643. /package/dist/types/{src/components → components}/GrSelect/safelist.d.ts +0 -0
  644. /package/dist/types/{src/components → components}/GrSelect/selectValue.d.ts +0 -0
  645. /package/dist/types/{src/components → components}/GrSidebar/GrSidebar.vue.d.ts +0 -0
  646. /package/dist/types/{src/components → components}/GrSidebar/GrSidebarGroup.vue.d.ts +0 -0
  647. /package/dist/types/{src/components → components}/GrSidebar/GrSidebarItem.vue.d.ts +0 -0
  648. /package/dist/types/{src/components → components}/GrSidebar/config.d.ts +0 -0
  649. /package/dist/types/{src/components → components}/GrSidebar/grSidebarStyles.d.ts +0 -0
  650. /package/dist/types/{src/components → components}/GrSidebar/safelist.d.ts +0 -0
  651. /package/dist/types/{src/components → components}/GrSidebar/sidebarContext.d.ts +0 -0
  652. /package/dist/types/{src/components → components}/GrSkeleton/GrSkeleton.vue.d.ts +0 -0
  653. /package/dist/types/{src/components → components}/GrSkeleton/config.d.ts +0 -0
  654. /package/dist/types/{src/components → components}/GrSkeleton/grSkeletonStyles.d.ts +0 -0
  655. /package/dist/types/{src/components → components}/GrSlider/GrSlider.vue.d.ts +0 -0
  656. /package/dist/types/{src/components → components}/GrSlider/config.d.ts +0 -0
  657. /package/dist/types/{src/components → components}/GrSlider/defaults.d.ts +0 -0
  658. /package/dist/types/{src/components → components}/GrSlider/grSliderStyles.d.ts +0 -0
  659. /package/dist/types/{src/components → components}/GrSlider/index.d.ts +0 -0
  660. /package/dist/types/{src/components → components}/GrSlider/safelist.d.ts +0 -0
  661. /package/dist/types/{src/components → components}/GrSortableList/GrSortableList.vue.d.ts +0 -0
  662. /package/dist/types/{src/components → components}/GrSortableList/config.d.ts +0 -0
  663. /package/dist/types/{src/components → components}/GrSortableList/grSortableListStyles.d.ts +0 -0
  664. /package/dist/types/{src/components → components}/GrSortableList/index.d.ts +0 -0
  665. /package/dist/types/{src/components → components}/GrSortableList/safelist.d.ts +0 -0
  666. /package/dist/types/{src/components → components}/GrSplitter/GrSplitter.vue.d.ts +0 -0
  667. /package/dist/types/{src/components → components}/GrSplitter/config.d.ts +0 -0
  668. /package/dist/types/{src/components → components}/GrSplitter/defaults.d.ts +0 -0
  669. /package/dist/types/{src/components → components}/GrSplitter/grSplitterStyles.d.ts +0 -0
  670. /package/dist/types/{src/components → components}/GrSplitter/safelist.d.ts +0 -0
  671. /package/dist/types/{src/components → components}/GrSplitter/splitterGeometry.d.ts +0 -0
  672. /package/dist/types/{src/components → components}/GrStatistic/GrStatistic.vue.d.ts +0 -0
  673. /package/dist/types/{src/components → components}/GrStatistic/config.d.ts +0 -0
  674. /package/dist/types/{src/components → components}/GrStatistic/countUp.d.ts +0 -0
  675. /package/dist/types/{src/components → components}/GrStatistic/defaults.d.ts +0 -0
  676. /package/dist/types/{src/components → components}/GrStatistic/formatStatisticValue.d.ts +0 -0
  677. /package/dist/types/{src/components → components}/GrStatistic/grStatisticStyles.d.ts +0 -0
  678. /package/dist/types/{src/components → components}/GrStatistic/index.d.ts +0 -0
  679. /package/dist/types/{src/components → components}/GrStatistic/safelist.d.ts +0 -0
  680. /package/dist/types/{src/components → components}/GrSwitch/GrSwitch.vue.d.ts +0 -0
  681. /package/dist/types/{src/components → components}/GrSwitch/config.d.ts +0 -0
  682. /package/dist/types/{src/components → components}/GrSwitch/defaults.d.ts +0 -0
  683. /package/dist/types/{src/components → components}/GrSwitch/grSwitchStyles.d.ts +0 -0
  684. /package/dist/types/{src/components → components}/GrSwitch/index.d.ts +0 -0
  685. /package/dist/types/{src/components → components}/GrSwitch/safelist.d.ts +0 -0
  686. /package/dist/types/{src/components → components}/GrTabPanels/GrTabPanel.vue.d.ts +0 -0
  687. /package/dist/types/{src/components → components}/GrTabPanels/GrTabPanels.vue.d.ts +0 -0
  688. /package/dist/types/{src/components → components}/GrTabPanels/config.d.ts +0 -0
  689. /package/dist/types/{src/components → components}/GrTabPanels/context.d.ts +0 -0
  690. /package/dist/types/{src/components → components}/GrTable/GrTable.vue.d.ts +0 -0
  691. /package/dist/types/{src/components → components}/GrTable/config.d.ts +0 -0
  692. /package/dist/types/{src/components → components}/GrTable/defaults.d.ts +0 -0
  693. /package/dist/types/{src/components → components}/GrTable/grTableStyles.d.ts +0 -0
  694. /package/dist/types/{src/components → components}/GrTable/index.d.ts +0 -0
  695. /package/dist/types/{src/components → components}/GrTable/safelist.d.ts +0 -0
  696. /package/dist/types/{src/components → components}/GrTabs/GrTabs.vue.d.ts +0 -0
  697. /package/dist/types/{src/components → components}/GrTabs/config.d.ts +0 -0
  698. /package/dist/types/{src/components → components}/GrTabs/defaults.d.ts +0 -0
  699. /package/dist/types/{src/components → components}/GrTabs/grTabsStyles.d.ts +0 -0
  700. /package/dist/types/{src/components → components}/GrTabs/safelist.d.ts +0 -0
  701. /package/dist/types/{src/components → components}/GrTextarea/GrTextarea.vue.d.ts +0 -0
  702. /package/dist/types/{src/components → components}/GrTextarea/config.d.ts +0 -0
  703. /package/dist/types/{src/components → components}/GrTextarea/defaults.d.ts +0 -0
  704. /package/dist/types/{src/components → components}/GrTextarea/grTextareaStyles.d.ts +0 -0
  705. /package/dist/types/{src/components → components}/GrTextarea/index.d.ts +0 -0
  706. /package/dist/types/{src/components → components}/GrTextarea/safelist.d.ts +0 -0
  707. /package/dist/types/{src/components → components}/GrTimeline/GrTimeline.vue.d.ts +0 -0
  708. /package/dist/types/{src/components → components}/GrTimeline/GrTimelineItem.vue.d.ts +0 -0
  709. /package/dist/types/{src/components → components}/GrTimeline/config.d.ts +0 -0
  710. /package/dist/types/{src/components → components}/GrTimeline/defaults.d.ts +0 -0
  711. /package/dist/types/{src/components → components}/GrTimeline/grTimelineContext.d.ts +0 -0
  712. /package/dist/types/{src/components → components}/GrTimeline/grTimelineStyles.d.ts +0 -0
  713. /package/dist/types/{src/components → components}/GrTimeline/safelist.d.ts +0 -0
  714. /package/dist/types/{src/components → components}/GrTimeline/timelineGroups.d.ts +0 -0
  715. /package/dist/types/{src/components → components}/GrToaster/GrToaster.vue.d.ts +0 -0
  716. /package/dist/types/{src/components → components}/GrToaster/config.d.ts +0 -0
  717. /package/dist/types/{src/components → components}/GrToaster/grToasterStyles.d.ts +0 -0
  718. /package/dist/types/{src/components → components}/GrToaster/index.d.ts +0 -0
  719. /package/dist/types/{src/components → components}/GrToaster/safelist.d.ts +0 -0
  720. /package/dist/types/{src/components → components}/GrTooltip/GrTooltip.vue.d.ts +0 -0
  721. /package/dist/types/{src/components → components}/GrTooltip/config.d.ts +0 -0
  722. /package/dist/types/{src/components → components}/GrTooltip/defaults.d.ts +0 -0
  723. /package/dist/types/{src/components → components}/GrTooltip/grTooltipStyles.d.ts +0 -0
  724. /package/dist/types/{src/components → components}/GrTooltip/index.d.ts +0 -0
  725. /package/dist/types/{src/components → components}/GrTooltip/safelist.d.ts +0 -0
  726. /package/dist/types/{src/components → components}/GrTree/GrTree.vue.d.ts +0 -0
  727. /package/dist/types/{src/components → components}/GrTree/config.d.ts +0 -0
  728. /package/dist/types/{src/components → components}/GrTree/defaults.d.ts +0 -0
  729. /package/dist/types/{src/components → components}/GrTree/grTreeChecking.d.ts +0 -0
  730. /package/dist/types/{src/components → components}/GrTree/grTreeDataAdapter.d.ts +0 -0
  731. /package/dist/types/{src/components → components}/GrTree/grTreeInteractionContext.d.ts +0 -0
  732. /package/dist/types/{src/components → components}/GrTree/grTreeProps.d.ts +0 -0
  733. /package/dist/types/{src/components → components}/GrTree/grTreeStore.d.ts +0 -0
  734. /package/dist/types/{src/components → components}/GrTree/grTreeStyles.d.ts +0 -0
  735. /package/dist/types/{src/components → components}/GrTree/grTreeTypes.d.ts +0 -0
  736. /package/dist/types/{src/components → components}/GrTree/index.d.ts +0 -0
  737. /package/dist/types/{src/components → components}/GrTree/safelist.d.ts +0 -0
  738. /package/dist/types/{src/components → components}/GrTreeSelect/config.d.ts +0 -0
  739. /package/dist/types/{src/components → components}/GrTreeSelect/defaults.d.ts +0 -0
  740. /package/dist/types/{src/components → components}/GrTreeSelect/grTreeSelectStyles.d.ts +0 -0
  741. /package/dist/types/{src/components → components}/GrTreeSelect/grTreeSelectTypes.d.ts +0 -0
  742. /package/dist/types/{src/components → components}/GrTreeSelect/index.d.ts +0 -0
  743. /package/dist/types/{src/components → components}/GrTreeSelect/safelist.d.ts +0 -0
  744. /package/dist/types/{src/components → components}/shared/classTokens.d.ts +0 -0
  745. /package/dist/types/{src/components → components}/shared/hotkey.d.ts +0 -0
  746. /package/dist/types/{src/components → components}/shared/hotkeyTokens.d.ts +0 -0
  747. /package/dist/types/{src/components → components}/shared/icon.d.ts +0 -0
  748. /package/dist/types/{src/components → components}/shared/instance.d.ts +0 -0
  749. /package/dist/types/{src/components → components}/shared/optionFilter.d.ts +0 -0
  750. /package/dist/types/{src/components → components}/shared/sizes.d.ts +0 -0
  751. /package/dist/types/{src/components → components}/shared/slotNodes.d.ts +0 -0
  752. /package/dist/types/{src/components → components}/shared/tones.d.ts +0 -0
  753. /package/dist/types/{src/composables → composables}/internal/dragSortGeometry.d.ts +0 -0
  754. /package/dist/types/{src/composables → composables}/internal/focusables.d.ts +0 -0
  755. /package/dist/types/{src/composables → composables}/internal/inert.d.ts +0 -0
  756. /package/dist/types/{src/composables → composables}/internal/overlayStack.d.ts +0 -0
  757. /package/dist/types/{src/composables → composables}/internal/portalRoot.d.ts +0 -0
  758. /package/dist/types/{src/composables → composables}/internal/useAddonMeasurement.d.ts +0 -0
  759. /package/dist/types/{src/composables → composables}/internal/useControlAddons.d.ts +0 -0
  760. /package/dist/types/{src/composables → composables}/internal/useControlledOpen.d.ts +0 -0
  761. /package/dist/types/{src/composables → composables}/internal/useFilePreviews.d.ts +0 -0
  762. /package/dist/types/{src/composables → composables}/internal/useFocusWithin.d.ts +0 -0
  763. /package/dist/types/{src/composables → composables}/internal/useInertOthers.d.ts +0 -0
  764. /package/dist/types/{src/composables → composables}/internal/useModalOverlay.d.ts +0 -0
  765. /package/dist/types/{src/composables → composables}/internal/useOverlayPresence.d.ts +0 -0
  766. /package/dist/types/{src/composables → composables}/internal/useScrollLock.d.ts +0 -0
  767. /package/dist/types/{src/composables → composables}/internal/useTeleportEnabled.d.ts +0 -0
  768. /package/dist/types/{src/composables → composables}/useAnnouncer.d.ts +0 -0
  769. /package/dist/types/{src/composables → composables}/useComboboxNavigation.d.ts +0 -0
  770. /package/dist/types/{src/composables → composables}/useDismissible.d.ts +0 -0
  771. /package/dist/types/{src/composables → composables}/useDragGesture.d.ts +0 -0
  772. /package/dist/types/{src/composables → composables}/useDragSort.d.ts +0 -0
  773. /package/dist/types/{src/composables → composables}/useFloating.d.ts +0 -0
  774. /package/dist/types/{src/composables → composables}/useFocusTrap.d.ts +0 -0
  775. /package/dist/types/{src/composables → composables}/useGrComponentConfig.d.ts +0 -0
  776. /package/dist/types/{src/composables → composables}/useGrFormControl.d.ts +0 -0
  777. /package/dist/types/{src/composables → composables}/useGranularityTranslations.d.ts +0 -0
  778. /package/dist/types/{src/composables → composables}/useOverlayLayer.d.ts +0 -0
  779. /package/dist/types/{src/composables → composables}/usePortalTarget.d.ts +0 -0
  780. /package/dist/types/{src/composables → composables}/useRovingFocus.d.ts +0 -0
  781. /package/dist/types/{src/composables → composables}/useTheme.d.ts +0 -0
  782. /package/dist/types/{src/composables → composables}/useToast.d.ts +0 -0
  783. /package/dist/types/{src/composables → composables}/useVirtualList.d.ts +0 -0
  784. /package/dist/types/{src/directives → directives}/autofocus.d.ts +0 -0
  785. /package/dist/types/{src/directives → directives}/autosize.d.ts +0 -0
  786. /package/dist/types/{src/directives → directives}/clickOutside.d.ts +0 -0
  787. /package/dist/types/{src/directives → directives}/dropzone.d.ts +0 -0
  788. /package/dist/types/{src/directives → directives}/globalDirectives.d.ts +0 -0
  789. /package/dist/types/{src/directives → directives}/hotkey.d.ts +0 -0
  790. /package/dist/types/{src/directives → directives}/index.d.ts +0 -0
  791. /package/dist/types/{src/directives → directives}/loading.d.ts +0 -0
  792. /package/dist/types/{src/fileValidation → fileValidation}/FileValidationError.d.ts +0 -0
  793. /package/dist/types/{src/fileValidation → fileValidation}/acceptValidator.d.ts +0 -0
  794. /package/dist/types/{src/fileValidation → fileValidation}/allowedExtensionsValidator.d.ts +0 -0
  795. /package/dist/types/{src/fileValidation → fileValidation}/allowedMimeTypesValidator.d.ts +0 -0
  796. /package/dist/types/{src/fileValidation → fileValidation}/i18n.d.ts +0 -0
  797. /package/dist/types/{src/fileValidation → fileValidation}/index.d.ts +0 -0
  798. /package/dist/types/{src/fileValidation → fileValidation}/matchAccept.d.ts +0 -0
  799. /package/dist/types/{src/fileValidation → fileValidation}/maxCountValidator.d.ts +0 -0
  800. /package/dist/types/{src/fileValidation → fileValidation}/maxFileSize.d.ts +0 -0
  801. /package/dist/types/{src/fileValidation → fileValidation}/maxTotalSizeBytesValidator.d.ts +0 -0
  802. /package/dist/types/{src/fileValidation → fileValidation}/runFileValidators.d.ts +0 -0
  803. /package/dist/types/{src/fileValidation → fileValidation}/types.d.ts +0 -0
  804. /package/dist/types/{src/granular-provider → granular-provider}/index.d.ts +0 -0
  805. /package/dist/types/{src/granular-provider → granular-provider}/node.d.ts +0 -0
  806. /package/dist/types/{src/granular-provider → granular-provider}/shared.d.ts +0 -0
  807. /package/dist/types/{src/i18n → i18n}/adapter.d.ts +0 -0
  808. /package/dist/types/{src/i18n → i18n}/all.d.ts +0 -0
  809. /package/dist/types/{src/i18n → i18n}/index.d.ts +0 -0
  810. /package/dist/types/{src/i18n → i18n}/messages/const.d.ts +0 -0
  811. /package/dist/types/{src/i18n → i18n}/messages/en.d.ts +0 -0
  812. /package/dist/types/{src/i18n → i18n}/messages/es.d.ts +0 -0
  813. /package/dist/types/{src/i18n → i18n}/messages/index.d.ts +0 -0
  814. /package/dist/types/{src/i18n → i18n}/messages/ru.d.ts +0 -0
  815. /package/dist/types/{src/index.d.ts → index.d.ts} +0 -0
  816. /package/dist/types/{src/internal → internal}/granularityFormat.d.ts +0 -0
  817. /package/dist/types/{src/internal → internal}/granularityI18n.d.ts +0 -0
  818. /package/dist/types/{src/internal → internal}/keyboard.d.ts +0 -0
  819. /package/dist/types/{src/testing → testing}/announcer.d.ts +0 -0
  820. /package/dist/types/{src/testing → testing}/context.d.ts +0 -0
  821. /package/dist/types/{src/testing → testing}/env.d.ts +0 -0
  822. /package/dist/types/{src/testing → testing}/geometry.d.ts +0 -0
  823. /package/dist/types/{src/testing → testing}/pointer.d.ts +0 -0
  824. /package/dist/types/{src/theme → theme}/apply.d.ts +0 -0
  825. /package/dist/types/{src/theme → theme}/color.d.ts +0 -0
  826. /package/dist/types/{src/theme → theme}/extendTheme.d.ts +0 -0
  827. /package/dist/types/{src/theme → theme}/index.d.ts +0 -0
  828. /package/dist/types/{src/theme → theme}/roles.d.ts +0 -0
  829. /package/dist/types/{src/theme → theme}/tone.d.ts +0 -0
  830. /package/dist/types/{src/theme → theme}/validate.d.ts +0 -0
  831. /package/dist/types/{src/tokens → tokens}/generated.d.ts +0 -0
  832. /package/dist/types/{src/tokens → tokens}/index.d.ts +0 -0
  833. /package/dist/types/{src/tokens → tokens}/types.d.ts +0 -0
  834. /package/dist/types/{src/vue → vue}/index.d.ts +0 -0
  835. /package/dist/types/{src/vue → vue}/plugin.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"config-D3_g2KIn.js","names":[],"sources":["../../src/components/GrBottomNav/grBottomNavStyles.ts","../../src/components/GrBottomNav/safelist.ts","../../src/components/GrBottomNav/config.ts"],"sourcesContent":["import type { GrComponentSize } from '../shared/sizes'\n\n/**\n * Брейкпоинт, начиная с которого панель скрывается. `none` — видна всегда:\n * киоск и PWA нижнюю навигацию не прячут.\n */\nexport const GR_BOTTOM_NAV_HIDE_ABOVE = ['sm', 'md', 'lg', 'none'] as const\nexport type GrBottomNavHideAbove = typeof GR_BOTTOM_NAV_HIDE_ABOVE[number]\n\n/** Прижата к нижней кромке экрана или лежит обычным блоком в потоке. */\nexport const GR_BOTTOM_NAV_POSITIONS = ['fixed', 'static'] as const\nexport type GrBottomNavPosition = typeof GR_BOTTOM_NAV_POSITIONS[number]\n\nexport const rootBase = 'border-t border-[var(--gr-brd)] bg-[var(--gr-bg)] px-2 pb-[env(safe-area-inset-bottom)]'\n\nexport const rootPositionClass: Record<GrBottomNavPosition, string> = {\n fixed: 'fixed bottom-0 left-0 right-0 z-[var(--gr-z-bottom-nav)]',\n static: 'relative w-full',\n}\n\nexport const rootHideAboveClass: Record<GrBottomNavHideAbove, string> = {\n sm: 'sm:hidden',\n md: 'md:hidden',\n lg: 'lg:hidden',\n none: '',\n}\n\nexport const listClass = 'flex items-center justify-around'\n\n/**\n * Размерная шкала панели: высота полосы, глиф и кегль подписи.\n *\n * Что тянуть у панели фиксированной высоты — вопрос неочевидный, и ответ здесь\n * ограничен снизу доступностью: **тач-таргет пункта не может стать меньше\n * 44×44** (WCAG 2.5.5). Поэтому ступень ужимает полосу и содержимое, а сам\n * пункт остаётся тем же прямоугольником под палец — `min-w-[44px]\n * min-h-[44px]` в `itemBase` вне шкалы намеренно.\n *\n * `md` совпадает с историческим видом панели: без пропа не меняется ничего.\n */\nexport const listSizes: Record<GrComponentSize, string> = {\n xs: 'h-12',\n sm: 'h-14',\n md: 'h-14',\n lg: 'h-16',\n}\n\nexport const itemTextSizes: Record<GrComponentSize, string> = {\n xs: 'text-[length:var(--gr-text-2xs)]',\n sm: 'text-[length:var(--gr-text-2xs)]',\n md: 'text-[length:var(--gr-text-xs)]',\n lg: 'text-[length:var(--gr-text-sm)]',\n}\n\nexport const itemIconSizes: Record<GrComponentSize, string> = {\n xs: 'h-4 w-4',\n sm: 'h-5 w-5',\n md: 'h-5 w-5',\n lg: 'h-6 w-6',\n}\n\nexport const itemBase = 'relative min-w-[44px] min-h-[44px] px-3 py-1 rounded-[var(--gr-radius-md)] flex flex-col items-center justify-center gap-0.5 transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]'\n\n/**\n * Активный пункт несёт три отличия сразу — подложку, вес и цвет. Одного цвета\n * мало: он не виден при монохромном зрении и не существует для диктора\n * (`aria-current` закрывает вторую половину задачи).\n */\nexport const itemActiveClass = 'bg-[var(--gr-muted)] font-600 text-[var(--gr-primary-text)]'\nexport const itemIdleClass = 'font-500 text-[var(--gr-muted-fg)] hover:text-[var(--gr-fg)]'\n\n/** Недоступный пункт гасится токеном: `opacity` разбавляет выверенные на AA цвета. */\nexport const itemDisabledClass = 'cursor-not-allowed font-500 text-[var(--gr-disabled-fg)]'\n\nexport const itemIconClass = 'block shrink-0'\nexport const itemLabelClass = 'max-w-full truncate leading-none'\n\n/**\n * Бейдж висит поверх правого верхнего угла пункта. Своя разметка, а не\n * `GrBadgeWrap`: зависимость притащила бы потребителю чужой CSS ради кружка.\n */\nexport const itemBadgeClass = 'absolute top-0.5 right-1 min-w-4 h-4 px-1 rounded-[var(--gr-radius-full)] bg-[var(--gr-danger)] text-[var(--gr-danger-fg)] text-[length:var(--gr-text-2xs)] font-700 inline-flex items-center justify-center'\n\nexport function grBottomNavRootClass(options: {\n position: GrBottomNavPosition\n hideAbove: GrBottomNavHideAbove\n}): string {\n return [rootBase, rootPositionClass[options.position], rootHideAboveClass[options.hideAbove]]\n .filter(Boolean)\n .join(' ')\n}\n\nexport function grBottomNavListClass(size: GrComponentSize): string {\n return [listClass, listSizes[size]].join(' ')\n}\n\nexport function grBottomNavIconClass(size: GrComponentSize): string {\n return [itemIconClass, itemIconSizes[size]].join(' ')\n}\n\nexport function grBottomNavItemClass(options: {\n active: boolean\n disabled: boolean\n size: GrComponentSize\n}): string {\n const state = options.disabled\n ? itemDisabledClass\n : options.active ? itemActiveClass : itemIdleClass\n\n return [itemBase, itemTextSizes[options.size], state].join(' ')\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n itemActiveClass,\n itemBadgeClass,\n itemBase,\n itemDisabledClass,\n itemIconClass,\n itemIconSizes,\n itemIdleClass,\n itemLabelClass,\n itemTextSizes,\n listClass,\n listSizes,\n rootBase,\n rootHideAboveClass,\n rootPositionClass,\n} from './grBottomNavStyles'\n\nexport const grBottomNavSafelist = [...new Set([\n ...splitClassTokens(rootBase),\n ...splitClassTokens(listClass),\n ...splitClassTokens(itemBase),\n ...splitClassTokens(itemActiveClass),\n ...splitClassTokens(itemIdleClass),\n ...splitClassTokens(itemDisabledClass),\n ...splitClassTokens(itemIconClass),\n ...splitClassTokens(itemLabelClass),\n ...splitClassTokens(itemBadgeClass),\n ...Object.values(listSizes).flatMap(splitClassTokens),\n ...Object.values(itemTextSizes).flatMap(splitClassTokens),\n ...Object.values(itemIconSizes).flatMap(splitClassTokens),\n ...Object.values(rootPositionClass).flatMap(splitClassTokens),\n ...Object.values(rootHideAboveClass).flatMap(splitClassTokens),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grBottomNavSafelist } from './safelist'\n\nexport const grBottomNavConfig = defineGranularComponent(import.meta.url, {\n name: 'GrBottomNav',\n safelist: grBottomNavSafelist,\n})\n"],"mappings":";;;;;;;AAMA,IAAa,2BAA2B;CAAC;CAAM;CAAM;CAAM;AAAM;;AAIjE,IAAa,0BAA0B,CAAC,SAAS,QAAQ;AAGzD,IAAa,WAAW;AAExB,IAAa,oBAAyD;CACpE,OAAO;CACP,QAAQ;AACV;AAEA,IAAa,qBAA2D;CACtE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,MAAM;AACR;AAEA,IAAa,YAAY;;;;;;;;;;;;AAazB,IAAa,YAA6C;CACxD,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,gBAAiD;CAC5D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,gBAAiD;CAC5D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,WAAW;;;;;;AAOxB,IAAa,kBAAkB;AAC/B,IAAa,gBAAgB;;AAG7B,IAAa,oBAAoB;AAEjC,IAAa,gBAAgB;AAC7B,IAAa,iBAAiB;;;;;AAM9B,IAAa,iBAAiB;AAE9B,SAAgB,qBAAqB,SAG1B;CACT,OAAO;EAAC;EAAU,kBAAkB,QAAQ;EAAW,mBAAmB,QAAQ;CAAU,CAAC,CAC1F,OAAO,OAAO,CAAC,CACf,KAAK,GAAG;AACb;AAEA,SAAgB,qBAAqB,MAA+B;CAClE,OAAO,CAAC,WAAW,UAAU,KAAK,CAAC,CAAC,KAAK,GAAG;AAC9C;AAEA,SAAgB,qBAAqB,MAA+B;CAClE,OAAO,CAAC,eAAe,cAAc,KAAK,CAAC,CAAC,KAAK,GAAG;AACtD;AAEA,SAAgB,qBAAqB,SAI1B;CACT,MAAM,QAAQ,QAAQ,WAClB,oBACA,QAAQ,SAAS,kBAAkB;CAEvC,OAAO;EAAC;EAAU,cAAc,QAAQ;EAAO;CAAK,CAAC,CAAC,KAAK,GAAG;AAChE;;;AC5FA,IAAa,sBAAsB,CAAC,mBAAG,IAAI,IAAI;CAC7C,GAAG,iBAAiB,QAAQ;CAC5B,GAAG,iBAAiB,SAAS;CAC7B,GAAG,iBAAiB,QAAQ;CAC5B,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,cAAc;CAClC,GAAG,OAAO,OAAO,SAAS,CAAC,CAAC,QAAQ,gBAAgB;CACpD,GAAG,OAAO,OAAO,aAAa,CAAC,CAAC,QAAQ,gBAAgB;CACxD,GAAG,OAAO,OAAO,aAAa,CAAC,CAAC,QAAQ,gBAAgB;CACxD,GAAG,OAAO,OAAO,iBAAiB,CAAC,CAAC,QAAQ,gBAAgB;CAC5D,GAAG,OAAO,OAAO,kBAAkB,CAAC,CAAC,QAAQ,gBAAgB;AAC/D,CAAC,CAAC;;;AC7BF,IAAa,oBAAoB,wBAAwB,OAAO,KAAK,KAAK;CACxE,MAAM;CACN,UAAU;AACZ,CAAC"}
1
+ {"version":3,"file":"config-Dguto_6o.js","names":[],"sources":["../../src/components/GrBottomNav/grBottomNavStyles.ts","../../src/components/GrBottomNav/safelist.ts","../../src/components/GrBottomNav/config.ts"],"sourcesContent":["import type { GrComponentSize } from '../shared/sizes'\n\n/**\n * Брейкпоинт, начиная с которого панель скрывается. `none` — видна всегда:\n * киоск и PWA нижнюю навигацию не прячут.\n */\nexport const GR_BOTTOM_NAV_HIDE_ABOVE = ['sm', 'md', 'lg', 'none'] as const\nexport type GrBottomNavHideAbove = typeof GR_BOTTOM_NAV_HIDE_ABOVE[number]\n\n/** Прижата к нижней кромке экрана или лежит обычным блоком в потоке. */\nexport const GR_BOTTOM_NAV_POSITIONS = ['fixed', 'static'] as const\nexport type GrBottomNavPosition = typeof GR_BOTTOM_NAV_POSITIONS[number]\n\nexport const rootBase = 'border-t border-[var(--gr-brd)] bg-[var(--gr-bg)] px-2 pb-[env(safe-area-inset-bottom)]'\n\nexport const rootPositionClass: Record<GrBottomNavPosition, string> = {\n fixed: 'fixed bottom-0 left-0 right-0 z-[var(--gr-z-bottom-nav)]',\n static: 'relative w-full',\n}\n\nexport const rootHideAboveClass: Record<GrBottomNavHideAbove, string> = {\n sm: 'sm:hidden',\n md: 'md:hidden',\n lg: 'lg:hidden',\n none: '',\n}\n\nexport const listClass = 'flex items-center justify-around'\n\n/**\n * Размерная шкала панели: высота полосы, глиф и кегль подписи.\n *\n * Что тянуть у панели фиксированной высоты — вопрос неочевидный, и ответ здесь\n * ограничен снизу доступностью: **тач-таргет пункта не может стать меньше\n * 44×44** (WCAG 2.5.5). Поэтому ступень ужимает полосу и содержимое, а сам\n * пункт остаётся тем же прямоугольником под палец — `min-w-[44px]\n * min-h-[44px]` в `itemBase` вне шкалы намеренно.\n *\n * `md` совпадает с историческим видом панели: без пропа не меняется ничего.\n */\nexport const listSizes: Record<GrComponentSize, string> = {\n xs: 'h-12',\n sm: 'h-14',\n md: 'h-14',\n lg: 'h-16',\n}\n\nexport const itemTextSizes: Record<GrComponentSize, string> = {\n xs: 'text-[length:var(--gr-text-2xs)]',\n sm: 'text-[length:var(--gr-text-2xs)]',\n md: 'text-[length:var(--gr-text-xs)]',\n lg: 'text-[length:var(--gr-text-sm)]',\n}\n\nexport const itemIconSizes: Record<GrComponentSize, string> = {\n xs: 'h-4 w-4',\n sm: 'h-5 w-5',\n md: 'h-5 w-5',\n lg: 'h-6 w-6',\n}\n\nexport const itemBase = 'relative min-w-[44px] min-h-[44px] px-3 py-1 rounded-[var(--gr-radius-md)] flex flex-col items-center justify-center gap-0.5 transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]'\n\n/**\n * Активный пункт несёт три отличия сразу — подложку, вес и цвет. Одного цвета\n * мало: он не виден при монохромном зрении и не существует для диктора\n * (`aria-current` закрывает вторую половину задачи).\n */\nexport const itemActiveClass = 'bg-[var(--gr-muted)] font-600 text-[var(--gr-primary-text)]'\nexport const itemIdleClass = 'font-500 text-[var(--gr-muted-fg)] hover:text-[var(--gr-fg)]'\n\n/** Недоступный пункт гасится токеном: `opacity` разбавляет выверенные на AA цвета. */\nexport const itemDisabledClass = 'cursor-not-allowed font-500 text-[var(--gr-disabled-fg)]'\n\nexport const itemIconClass = 'block shrink-0'\nexport const itemLabelClass = 'max-w-full truncate leading-none'\n\n/**\n * Бейдж висит поверх правого верхнего угла пункта. Своя разметка, а не\n * `GrBadgeWrap`: зависимость притащила бы потребителю чужой CSS ради кружка.\n */\nexport const itemBadgeClass = 'absolute top-0.5 right-1 min-w-4 h-4 px-1 rounded-[var(--gr-radius-full)] bg-[var(--gr-danger)] text-[var(--gr-danger-fg)] text-[length:var(--gr-text-2xs)] font-700 inline-flex items-center justify-center'\n\nexport function grBottomNavRootClass(options: {\n position: GrBottomNavPosition\n hideAbove: GrBottomNavHideAbove\n}): string {\n return [rootBase, rootPositionClass[options.position], rootHideAboveClass[options.hideAbove]]\n .filter(Boolean)\n .join(' ')\n}\n\nexport function grBottomNavListClass(size: GrComponentSize): string {\n return [listClass, listSizes[size]].join(' ')\n}\n\nexport function grBottomNavIconClass(size: GrComponentSize): string {\n return [itemIconClass, itemIconSizes[size]].join(' ')\n}\n\nexport function grBottomNavItemClass(options: {\n active: boolean\n disabled: boolean\n size: GrComponentSize\n}): string {\n const state = options.disabled\n ? itemDisabledClass\n : options.active ? itemActiveClass : itemIdleClass\n\n return [itemBase, itemTextSizes[options.size], state].join(' ')\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n itemActiveClass,\n itemBadgeClass,\n itemBase,\n itemDisabledClass,\n itemIconClass,\n itemIconSizes,\n itemIdleClass,\n itemLabelClass,\n itemTextSizes,\n listClass,\n listSizes,\n rootBase,\n rootHideAboveClass,\n rootPositionClass,\n} from './grBottomNavStyles'\n\nexport const grBottomNavSafelist = [...new Set([\n ...splitClassTokens(rootBase),\n ...splitClassTokens(listClass),\n ...splitClassTokens(itemBase),\n ...splitClassTokens(itemActiveClass),\n ...splitClassTokens(itemIdleClass),\n ...splitClassTokens(itemDisabledClass),\n ...splitClassTokens(itemIconClass),\n ...splitClassTokens(itemLabelClass),\n ...splitClassTokens(itemBadgeClass),\n ...Object.values(listSizes).flatMap(splitClassTokens),\n ...Object.values(itemTextSizes).flatMap(splitClassTokens),\n ...Object.values(itemIconSizes).flatMap(splitClassTokens),\n ...Object.values(rootPositionClass).flatMap(splitClassTokens),\n ...Object.values(rootHideAboveClass).flatMap(splitClassTokens),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grBottomNavSafelist } from './safelist'\n\nexport const grBottomNavConfig = defineGranularComponent(import.meta.url, {\n name: 'GrBottomNav',\n safelist: grBottomNavSafelist,\n})\n"],"mappings":";;;AAaA,IAAa,WAAW;AAExB,IAAa,oBAAyD;CACpE,OAAO;CACP,QAAQ;AACV;AAEA,IAAa,qBAA2D;CACtE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,MAAM;AACR;AAEA,IAAa,YAAY;;;;;;;;;;;;AAazB,IAAa,YAA6C;CACxD,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,gBAAiD;CAC5D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,gBAAiD;CAC5D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,WAAW;;;;;;AAOxB,IAAa,kBAAkB;AAC/B,IAAa,gBAAgB;;AAG7B,IAAa,oBAAoB;AAEjC,IAAa,gBAAgB;AAC7B,IAAa,iBAAiB;;;;;AAM9B,IAAa,iBAAiB;AAE9B,SAAgB,qBAAqB,SAG1B;CACT,OAAO;EAAC;EAAU,kBAAkB,QAAQ;EAAW,mBAAmB,QAAQ;CAAU,CAAC,CAC1F,OAAO,OAAO,CAAC,CACf,KAAK,GAAG;AACb;AAEA,SAAgB,qBAAqB,MAA+B;CAClE,OAAO,CAAC,WAAW,UAAU,KAAK,CAAC,CAAC,KAAK,GAAG;AAC9C;AAEA,SAAgB,qBAAqB,MAA+B;CAClE,OAAO,CAAC,eAAe,cAAc,KAAK,CAAC,CAAC,KAAK,GAAG;AACtD;AAEA,SAAgB,qBAAqB,SAI1B;CACT,MAAM,QAAQ,QAAQ,WAClB,oBACA,QAAQ,SAAS,kBAAkB;CAEvC,OAAO;EAAC;EAAU,cAAc,QAAQ;EAAO;CAAK,CAAC,CAAC,KAAK,GAAG;AAChE;;;AC5FA,IAAa,sBAAsB,CAAC,mBAAG,IAAI,IAAI;CAC7C,GAAG,iBAAiB,QAAQ;CAC5B,GAAG,iBAAiB,SAAS;CAC7B,GAAG,iBAAiB,QAAQ;CAC5B,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,cAAc;CAClC,GAAG,OAAO,OAAO,SAAS,CAAC,CAAC,QAAQ,gBAAgB;CACpD,GAAG,OAAO,OAAO,aAAa,CAAC,CAAC,QAAQ,gBAAgB;CACxD,GAAG,OAAO,OAAO,aAAa,CAAC,CAAC,QAAQ,gBAAgB;CACxD,GAAG,OAAO,OAAO,iBAAiB,CAAC,CAAC,QAAQ,gBAAgB;CAC5D,GAAG,OAAO,OAAO,kBAAkB,CAAC,CAAC,QAAQ,gBAAgB;AAC/D,CAAC,CAAC;;;AC7BF,IAAa,oBAAoB,wBAAwB,OAAO,KAAK,KAAK;CACxE,MAAM;CACN,UAAU;AACZ,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-WTNhdh6T.js","names":[],"sources":["../../src/components/GrTable/safelist.ts","../../src/components/GrTable/config.ts"],"sourcesContent":["import { splitClassTokens } from '../shared/classTokens'\nimport {\n emptyCellClass,\n hoverableClass,\n loadingRowCellClass,\n stripedClass,\n tableSizes,\n} from './grTableStyles'\n\nexport const grTableSafelist = [...new Set([\n ...Object.values(tableSizes).flatMap(splitClassTokens),\n ...splitClassTokens(stripedClass),\n ...splitClassTokens(hoverableClass),\n ...splitClassTokens(emptyCellClass),\n ...splitClassTokens(loadingRowCellClass),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grTableSafelist } from './safelist'\n\nexport const grTableConfig = defineGranularComponent(import.meta.url, {\n name: 'GrTable',\n dependencies: ['GrSkeleton'],\n safelist: grTableSafelist,\n})\n"],"mappings":";;;;AASA,IAAa,kBAAkB,CAAC,mBAAG,IAAI,IAAI;CACzC,GAAG,OAAO,OAAO,UAAU,CAAC,CAAC,QAAQ,gBAAgB;CACrD,GAAG,iBAAiB,YAAY;CAChC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,mBAAmB;AACzC,CAAC,CAAC;;;ACXF,IAAa,gBAAgB,wBAAwB,OAAO,KAAK,KAAK;CACpE,MAAM;CACN,cAAc,CAAC,YAAY;CAC3B,UAAU;AACZ,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-eXB87DOi2.js","names":[],"sources":["../../src/components/GrTabPanels/config.ts"],"sourcesContent":["import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\n/**\n * Granular-конфиг семейства `GrTabPanels` (контейнер `GrTabPanels` + панель\n * `GrTabPanel`). Companion к `GrTabs` для ARIA-связки `tab`↔`tabpanel`.\n */\nexport const grTabPanelsConfig = defineGranularComponent(import.meta.url, {\n name: 'GrTabPanels',\n})\n"],"mappings":";;;;;;AAMA,IAAa,oBAAoB,wBAAwB,OAAO,KAAK,KAAK,EACxE,MAAM,cACR,CAAC"}
@@ -1,19 +1,6 @@
1
1
  import { t as splitClassTokens } from "./classTokens-BzazaERD.js";
2
2
  import { defineGranularComponent } from "@feugene/unocss-preset-granular/contract";
3
3
  //#region src/components/GrEmptyState/grEmptyStateStyles.ts
4
- /** Поверхность карточки. `ghost` — для встраивания в уже существующую карточку. */
5
- var GR_EMPTY_STATE_VARIANTS = ["outlined", "ghost"];
6
- /**
7
- * Уровень заголовка. `h1` намеренно нет: пустое состояние живёт внутри уже
8
- * существующей структуры страницы, а не задаёт её.
9
- */
10
- var GR_EMPTY_STATE_HEADING_LEVELS = [
11
- 2,
12
- 3,
13
- 4,
14
- 5,
15
- 6
16
- ];
17
4
  var rootBaseClass = "text-center";
18
5
  var variantClass = {
19
6
  outlined: "rounded-[var(--gr-radius-lg)] border border-[var(--gr-brd)] bg-[var(--gr-card)]",
@@ -95,4 +82,4 @@ var grEmptyStateConfig = defineGranularComponent(import.meta.url, {
95
82
  dependencies: ["GrIcon"]
96
83
  });
97
84
  //#endregion
98
- export { actionsBaseClass as a, descriptionBySize as c, iconBoxBySize as d, iconSizeBySize as f, GR_EMPTY_STATE_VARIANTS as i, grEmptyStateRootClass as l, titleBySize as m, grEmptyStateSafelist as n, actionsBySize as o, titleBaseClass as p, GR_EMPTY_STATE_HEADING_LEVELS as r, descriptionBaseClass as s, grEmptyStateConfig as t, iconBoxBaseClass as u };
85
+ export { descriptionBaseClass as a, iconBoxBaseClass as c, titleBaseClass as d, titleBySize as f, actionsBySize as i, iconBoxBySize as l, grEmptyStateSafelist as n, descriptionBySize as o, actionsBaseClass as r, grEmptyStateRootClass as s, grEmptyStateConfig as t, iconSizeBySize as u };
@@ -1 +1 @@
1
- {"version":3,"file":"config-DvQIb4kb.js","names":[],"sources":["../../src/components/GrEmptyState/grEmptyStateStyles.ts","../../src/components/GrEmptyState/safelist.ts","../../src/components/GrEmptyState/config.ts"],"sourcesContent":["import type { GrComponentSize } from '../shared/sizes'\n\nexport type GrEmptyStateSize = GrComponentSize\n\n/** Поверхность карточки. `ghost` — для встраивания в уже существующую карточку. */\nexport const GR_EMPTY_STATE_VARIANTS = ['outlined', 'ghost'] as const\nexport type GrEmptyStateVariant = typeof GR_EMPTY_STATE_VARIANTS[number]\n\n/**\n * Уровень заголовка. `h1` намеренно нет: пустое состояние живёт внутри уже\n * существующей структуры страницы, а не задаёт её.\n */\nexport const GR_EMPTY_STATE_HEADING_LEVELS = [2, 3, 4, 5, 6] as const\nexport type GrEmptyStateHeadingLevel = typeof GR_EMPTY_STATE_HEADING_LEVELS[number]\n\nexport const rootBaseClass = 'text-center'\n\nexport const variantClass: Record<GrEmptyStateVariant, string> = {\n outlined: 'rounded-[var(--gr-radius-lg)] border border-[var(--gr-brd)] bg-[var(--gr-card)]',\n // Карточка внутри карточки: вторая рамка только шумит (тот же смысл, что у `GrCard`).\n ghost: '',\n}\n\nexport const rootPaddingBySize: Record<GrEmptyStateSize, string> = {\n xs: 'p-3',\n sm: 'p-4',\n md: 'p-6',\n lg: 'p-8',\n}\n\nexport const iconBoxBaseClass = 'flex items-center justify-center border border-[var(--gr-brd)] bg-[var(--gr-muted)] text-[var(--gr-muted-fg)]'\n\nexport const iconBoxBySize: Record<GrEmptyStateSize, string> = {\n xs: 'h-8 w-8 rounded-[var(--gr-radius-md)]',\n sm: 'h-10 w-10 rounded-[var(--gr-radius-md)]',\n md: 'h-12 w-12 rounded-[var(--gr-radius-lg)]',\n lg: 'h-14 w-14 rounded-[var(--gr-radius-lg)]',\n}\n\n/** Размер самой иконки в пикселях — `GrIcon` принимает число. */\nexport const iconSizeBySize: Record<GrEmptyStateSize, number> = {\n xs: 16,\n sm: 20,\n md: 24,\n lg: 28,\n}\n\n/**\n * `mb-0` гасит браузерный отступ снизу у настоящего заголовка: без сброса\n * карточка разъезжается по вертикали.\n */\nexport const titleBaseClass = 'mb-0 font-700'\n\nexport const titleBySize: Record<GrEmptyStateSize, string> = {\n xs: 'mt-2 text-[length:var(--gr-text-xs)]',\n sm: 'mt-3 text-[length:var(--gr-text-sm)]',\n md: 'mt-4 text-[length:var(--gr-text-sm)]',\n lg: 'mt-5 text-[length:var(--gr-text-base)]',\n}\n\nexport const descriptionBaseClass = 'text-[var(--gr-muted-fg)]'\n\nexport const descriptionBySize: Record<GrEmptyStateSize, string> = {\n xs: 'mt-0.5 text-[length:var(--gr-text-xs)]',\n sm: 'mt-1 text-[length:var(--gr-text-xs)]',\n md: 'mt-1 text-[length:var(--gr-text-sm)]',\n lg: 'mt-2 text-[length:var(--gr-text-sm)]',\n}\n\nexport const actionsBaseClass = 'flex justify-center'\n\nexport const actionsBySize: Record<GrEmptyStateSize, string> = {\n xs: 'mt-2',\n sm: 'mt-3',\n md: 'mt-4',\n lg: 'mt-5',\n}\n\nexport function grEmptyStateRootClass(options: {\n variant: GrEmptyStateVariant\n size: GrEmptyStateSize\n}): string {\n return [rootBaseClass, variantClass[options.variant], rootPaddingBySize[options.size]]\n .filter(Boolean)\n .join(' ')\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n actionsBaseClass,\n actionsBySize,\n descriptionBaseClass,\n descriptionBySize,\n iconBoxBaseClass,\n iconBoxBySize,\n rootBaseClass,\n rootPaddingBySize,\n titleBaseClass,\n titleBySize,\n variantClass,\n} from './grEmptyStateStyles'\n\nexport const grEmptyStateSafelist = [...new Set([\n ...splitClassTokens(rootBaseClass),\n ...splitClassTokens(iconBoxBaseClass),\n ...splitClassTokens(titleBaseClass),\n ...splitClassTokens(descriptionBaseClass),\n ...splitClassTokens(actionsBaseClass),\n ...Object.values(variantClass).flatMap(splitClassTokens),\n ...Object.values(rootPaddingBySize).flatMap(splitClassTokens),\n ...Object.values(iconBoxBySize).flatMap(splitClassTokens),\n ...Object.values(titleBySize).flatMap(splitClassTokens),\n ...Object.values(descriptionBySize).flatMap(splitClassTokens),\n ...Object.values(actionsBySize).flatMap(splitClassTokens),\n // Центрирование блока иконки живёт литералом в шаблоне.\n ...splitClassTokens('flex justify-center'),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grEmptyStateSafelist } from './safelist'\n\nexport const grEmptyStateConfig = defineGranularComponent(import.meta.url, {\n name: 'GrEmptyState',\n safelist: grEmptyStateSafelist,\n dependencies: ['GrIcon'],\n})\n"],"mappings":";;;;AAKA,IAAa,0BAA0B,CAAC,YAAY,OAAO;;;;;AAO3D,IAAa,gCAAgC;CAAC;CAAG;CAAG;CAAG;CAAG;AAAC;AAG3D,IAAa,gBAAgB;AAE7B,IAAa,eAAoD;CAC/D,UAAU;CAEV,OAAO;AACT;AAEA,IAAa,oBAAsD;CACjE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,mBAAmB;AAEhC,IAAa,gBAAkD;CAC7D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;AAGA,IAAa,iBAAmD;CAC9D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;;;;AAMA,IAAa,iBAAiB;AAE9B,IAAa,cAAgD;CAC3D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,uBAAuB;AAEpC,IAAa,oBAAsD;CACjE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,mBAAmB;AAEhC,IAAa,gBAAkD;CAC7D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,SAAgB,sBAAsB,SAG3B;CACT,OAAO;EAAC;EAAe,aAAa,QAAQ;EAAU,kBAAkB,QAAQ;CAAK,CAAC,CACnF,OAAO,OAAO,CAAC,CACf,KAAK,GAAG;AACb;;;ACtEA,IAAa,uBAAuB,CAAC,mBAAG,IAAI,IAAI;CAC9C,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,OAAO,OAAO,YAAY,CAAC,CAAC,QAAQ,gBAAgB;CACvD,GAAG,OAAO,OAAO,iBAAiB,CAAC,CAAC,QAAQ,gBAAgB;CAC5D,GAAG,OAAO,OAAO,aAAa,CAAC,CAAC,QAAQ,gBAAgB;CACxD,GAAG,OAAO,OAAO,WAAW,CAAC,CAAC,QAAQ,gBAAgB;CACtD,GAAG,OAAO,OAAO,iBAAiB,CAAC,CAAC,QAAQ,gBAAgB;CAC5D,GAAG,OAAO,OAAO,aAAa,CAAC,CAAC,QAAQ,gBAAgB;CAExD,GAAG,iBAAiB,qBAAqB;AAC3C,CAAC,CAAC;;;ACzBF,IAAa,qBAAqB,wBAAwB,OAAO,KAAK,KAAK;CACzE,MAAM;CACN,UAAU;CACV,cAAc,CAAC,QAAQ;AACzB,CAAC"}
1
+ {"version":3,"file":"config-vSji8w90.js","names":[],"sources":["../../src/components/GrEmptyState/grEmptyStateStyles.ts","../../src/components/GrEmptyState/safelist.ts","../../src/components/GrEmptyState/config.ts"],"sourcesContent":["import type { GrComponentSize } from '../shared/sizes'\n\nexport type GrEmptyStateSize = GrComponentSize\n\n/** Поверхность карточки. `ghost` — для встраивания в уже существующую карточку. */\nexport const GR_EMPTY_STATE_VARIANTS = ['outlined', 'ghost'] as const\nexport type GrEmptyStateVariant = typeof GR_EMPTY_STATE_VARIANTS[number]\n\n/**\n * Уровень заголовка. `h1` намеренно нет: пустое состояние живёт внутри уже\n * существующей структуры страницы, а не задаёт её.\n */\nexport const GR_EMPTY_STATE_HEADING_LEVELS = [2, 3, 4, 5, 6] as const\nexport type GrEmptyStateHeadingLevel = typeof GR_EMPTY_STATE_HEADING_LEVELS[number]\n\nexport const rootBaseClass = 'text-center'\n\nexport const variantClass: Record<GrEmptyStateVariant, string> = {\n outlined: 'rounded-[var(--gr-radius-lg)] border border-[var(--gr-brd)] bg-[var(--gr-card)]',\n // Карточка внутри карточки: вторая рамка только шумит (тот же смысл, что у `GrCard`).\n ghost: '',\n}\n\nexport const rootPaddingBySize: Record<GrEmptyStateSize, string> = {\n xs: 'p-3',\n sm: 'p-4',\n md: 'p-6',\n lg: 'p-8',\n}\n\nexport const iconBoxBaseClass = 'flex items-center justify-center border border-[var(--gr-brd)] bg-[var(--gr-muted)] text-[var(--gr-muted-fg)]'\n\nexport const iconBoxBySize: Record<GrEmptyStateSize, string> = {\n xs: 'h-8 w-8 rounded-[var(--gr-radius-md)]',\n sm: 'h-10 w-10 rounded-[var(--gr-radius-md)]',\n md: 'h-12 w-12 rounded-[var(--gr-radius-lg)]',\n lg: 'h-14 w-14 rounded-[var(--gr-radius-lg)]',\n}\n\n/** Размер самой иконки в пикселях — `GrIcon` принимает число. */\nexport const iconSizeBySize: Record<GrEmptyStateSize, number> = {\n xs: 16,\n sm: 20,\n md: 24,\n lg: 28,\n}\n\n/**\n * `mb-0` гасит браузерный отступ снизу у настоящего заголовка: без сброса\n * карточка разъезжается по вертикали.\n */\nexport const titleBaseClass = 'mb-0 font-700'\n\nexport const titleBySize: Record<GrEmptyStateSize, string> = {\n xs: 'mt-2 text-[length:var(--gr-text-xs)]',\n sm: 'mt-3 text-[length:var(--gr-text-sm)]',\n md: 'mt-4 text-[length:var(--gr-text-sm)]',\n lg: 'mt-5 text-[length:var(--gr-text-base)]',\n}\n\nexport const descriptionBaseClass = 'text-[var(--gr-muted-fg)]'\n\nexport const descriptionBySize: Record<GrEmptyStateSize, string> = {\n xs: 'mt-0.5 text-[length:var(--gr-text-xs)]',\n sm: 'mt-1 text-[length:var(--gr-text-xs)]',\n md: 'mt-1 text-[length:var(--gr-text-sm)]',\n lg: 'mt-2 text-[length:var(--gr-text-sm)]',\n}\n\nexport const actionsBaseClass = 'flex justify-center'\n\nexport const actionsBySize: Record<GrEmptyStateSize, string> = {\n xs: 'mt-2',\n sm: 'mt-3',\n md: 'mt-4',\n lg: 'mt-5',\n}\n\nexport function grEmptyStateRootClass(options: {\n variant: GrEmptyStateVariant\n size: GrEmptyStateSize\n}): string {\n return [rootBaseClass, variantClass[options.variant], rootPaddingBySize[options.size]]\n .filter(Boolean)\n .join(' ')\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n actionsBaseClass,\n actionsBySize,\n descriptionBaseClass,\n descriptionBySize,\n iconBoxBaseClass,\n iconBoxBySize,\n rootBaseClass,\n rootPaddingBySize,\n titleBaseClass,\n titleBySize,\n variantClass,\n} from './grEmptyStateStyles'\n\nexport const grEmptyStateSafelist = [...new Set([\n ...splitClassTokens(rootBaseClass),\n ...splitClassTokens(iconBoxBaseClass),\n ...splitClassTokens(titleBaseClass),\n ...splitClassTokens(descriptionBaseClass),\n ...splitClassTokens(actionsBaseClass),\n ...Object.values(variantClass).flatMap(splitClassTokens),\n ...Object.values(rootPaddingBySize).flatMap(splitClassTokens),\n ...Object.values(iconBoxBySize).flatMap(splitClassTokens),\n ...Object.values(titleBySize).flatMap(splitClassTokens),\n ...Object.values(descriptionBySize).flatMap(splitClassTokens),\n ...Object.values(actionsBySize).flatMap(splitClassTokens),\n // Центрирование блока иконки живёт литералом в шаблоне.\n ...splitClassTokens('flex justify-center'),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grEmptyStateSafelist } from './safelist'\n\nexport const grEmptyStateConfig = defineGranularComponent(import.meta.url, {\n name: 'GrEmptyState',\n safelist: grEmptyStateSafelist,\n dependencies: ['GrIcon'],\n})\n"],"mappings":";;;AAeA,IAAa,gBAAgB;AAE7B,IAAa,eAAoD;CAC/D,UAAU;CAEV,OAAO;AACT;AAEA,IAAa,oBAAsD;CACjE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,mBAAmB;AAEhC,IAAa,gBAAkD;CAC7D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;AAGA,IAAa,iBAAmD;CAC9D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;;;;AAMA,IAAa,iBAAiB;AAE9B,IAAa,cAAgD;CAC3D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,uBAAuB;AAEpC,IAAa,oBAAsD;CACjE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,mBAAmB;AAEhC,IAAa,gBAAkD;CAC7D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,SAAgB,sBAAsB,SAG3B;CACT,OAAO;EAAC;EAAe,aAAa,QAAQ;EAAU,kBAAkB,QAAQ;CAAK,CAAC,CACnF,OAAO,OAAO,CAAC,CACf,KAAK,GAAG;AACb;;;ACtEA,IAAa,uBAAuB,CAAC,mBAAG,IAAI,IAAI;CAC9C,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,OAAO,OAAO,YAAY,CAAC,CAAC,QAAQ,gBAAgB;CACvD,GAAG,OAAO,OAAO,iBAAiB,CAAC,CAAC,QAAQ,gBAAgB;CAC5D,GAAG,OAAO,OAAO,aAAa,CAAC,CAAC,QAAQ,gBAAgB;CACxD,GAAG,OAAO,OAAO,WAAW,CAAC,CAAC,QAAQ,gBAAgB;CACtD,GAAG,OAAO,OAAO,iBAAiB,CAAC,CAAC,QAAQ,gBAAgB;CAC5D,GAAG,OAAO,OAAO,aAAa,CAAC,CAAC,QAAQ,gBAAgB;CAExD,GAAG,iBAAiB,qBAAqB;AAC3C,CAAC,CAAC;;;ACzBF,IAAa,qBAAqB,wBAAwB,OAAO,KAAK,KAAK;CACzE,MAAM;CACN,UAAU;CACV,cAAc,CAAC,QAAQ;AACzB,CAAC"}
@@ -1,24 +1,5 @@
1
1
  import { computed, getCurrentInstance, inject } from "vue";
2
2
  //#region src/components/GrConfigProvider/context.ts
3
- /**
4
- * Контекст `GrConfigProvider` — глобальные дефолты для вложенных GR-компонентов:
5
- * размер контролов и per-component дефолтные пропсы.
6
- *
7
- * Компоненты читают его через {@link useGrConfig} (или хелперы ниже) и используют
8
- * как fallback, когда соответствующий проп не задан на самом компоненте. Провайдер
9
- * можно вкладывать — дочерний мержится поверх родительского.
10
- */
11
- /**
12
- * Размеры, которыми оперирует провайдер. Это «размеры контролов» — общий
13
- * знаменатель формных компонентов, а не объединение всех size-шкал пакета
14
- * (у оверлеев есть свои `xl`/`full`, у слайдера нет `xs`).
15
- */
16
- var GR_COMPONENT_SIZES = [
17
- "xs",
18
- "sm",
19
- "md",
20
- "lg"
21
- ];
22
3
  var GR_CONFIG_KEY = Symbol("gr-config");
23
4
  /**
24
5
  * Пустой конфиг: когда провайдера в дереве нет, всё разрешается в `undefined`,
@@ -149,4 +130,4 @@ function useGrThemeAttrs() {
149
130
  });
150
131
  }
151
132
  //#endregion
152
- export { useGrComponentProp as a, useGrThemeAttrs as c, useGrComponentDefaults as i, GR_CONFIG_KEY as n, useGrComponentSize as o, resolveGrConfig as r, useGrConfig as s, GR_COMPONENT_SIZES as t };
133
+ export { useGrComponentSize as a, useGrComponentProp as i, resolveGrConfig as n, useGrConfig as o, useGrComponentDefaults as r, useGrThemeAttrs as s, GR_CONFIG_KEY as t };
@@ -1 +1 @@
1
- {"version":3,"file":"context-BSYR7RZs.js","names":[],"sources":["../../src/components/GrConfigProvider/context.ts"],"sourcesContent":["import { computed, getCurrentInstance, inject, type ComputedRef, type InjectionKey } from 'vue'\n\nimport type { GrComponentDefaultsRegistry } from '../../composables/useGrComponentConfig'\n\n/**\n * Контекст `GrConfigProvider` — глобальные дефолты для вложенных GR-компонентов:\n * размер контролов и per-component дефолтные пропсы.\n *\n * Компоненты читают его через {@link useGrConfig} (или хелперы ниже) и используют\n * как fallback, когда соответствующий проп не задан на самом компоненте. Провайдер\n * можно вкладывать — дочерний мержится поверх родительского.\n */\n\n/**\n * Размеры, которыми оперирует провайдер. Это «размеры контролов» — общий\n * знаменатель формных компонентов, а не объединение всех size-шкал пакета\n * (у оверлеев есть свои `xl`/`full`, у слайдера нет `xs`).\n */\nexport const GR_COMPONENT_SIZES = ['xs', 'sm', 'md', 'lg'] as const\n\nexport type GrComponentSize = typeof GR_COMPONENT_SIZES[number]\n\n/**\n * Реестр компонентов с настраиваемыми через конфиг пропами.\n *\n * Объявлен в `composables/useGrComponentConfig` — там же, куда его дополняют\n * и компоненты пакета, и companion-пакеты. Здесь только реэкспорт для тех, кто\n * работает с контекстом провайдера напрямую.\n */\nexport type { GrComponentDefaultsRegistry }\n\n/** Имя компонента, у которого есть настраиваемые через конфиг пропы. */\nexport type GrConfigurableComponent = keyof GrComponentDefaultsRegistry\n\n/**\n * Дефолтные пропсы по имени компонента: `{ GrButton: { variant: 'secondary' } }`.\n *\n * Набор ключей закрыт реестром, а не `Record<string, unknown>`: через конфиг\n * должны настраиваться только «оформительские» пропы. Пустить туда что угодно —\n * значит разрешить задать глобальный `modelValue` или обработчик и получить баг,\n * который ищется часами.\n */\nexport type GrComponentDefaults = {\n [TComponent in GrConfigurableComponent]?: Partial<GrComponentDefaultsRegistry[TComponent]>\n}\n\ntype GrDefaultsOf<TComponent extends GrConfigurableComponent> = Partial<GrComponentDefaultsRegistry[TComponent]>\n\nexport interface GrConfigContext {\n /** Дефолтный размер контролов (если проп `size` не задан на компоненте). */\n size: ComputedRef<GrComponentSize | undefined>\n /** Дефолтные пропсы по компонентам. */\n componentDefaults: ComputedRef<GrComponentDefaults>\n /**\n * Тема поддерева (`data-theme`). Необязательна: тип публичный, и контекст\n * строят руками — например хост императивных диалогов.\n */\n theme?: ComputedRef<string | undefined>\n /**\n * Куда монтируются оверлеи поддерева (`usePortalTarget`). Необязательно, как\n * и `theme`: контекст строят руками — например хост императивных диалогов.\n */\n portalTarget?: ComputedRef<string | HTMLElement | undefined>\n}\n\nexport const GR_CONFIG_KEY: InjectionKey<GrConfigContext> = Symbol('gr-config')\n\n/**\n * Пустой конфиг: когда провайдера в дереве нет, всё разрешается в `undefined`,\n * а компоненты падают на собственные дефолты.\n *\n * `computed` здесь не роскошь: контекст типизирован рефами, и потребитель вправе\n * прогнать `size` через `unref()` или `watch()`. Плоский объект `{ value: … }`\n * не пройдёт проверку `isRef`, и такой код молча получит сам объект вместо\n * значения — поэтому «просто константа» тут не подходит.\n *\n * А вот пустые значения заморожены, и это не педантизм: `computed` без\n * зависимостей вычисляется один раз и отдаёт **один и тот же** объект всем\n * компонентам без провайдера. Незамороженный, он позволил бы одному потребителю\n * записать в него ключ и тем самым подменить дефолты всему приложению.\n */\nconst EMPTY_COMPONENT_DEFAULTS: GrComponentDefaults = Object.freeze({})\n\nconst EMPTY_CONFIG: GrConfigContext = {\n size: computed(() => undefined),\n componentDefaults: computed(() => EMPTY_COMPONENT_DEFAULTS),\n theme: computed(() => undefined),\n portalTarget: computed(() => undefined),\n}\n\n/** Возвращает ближайший `GrConfigProvider` или пустой конфиг, если провайдера нет. */\nexport function useGrConfig(): GrConfigContext {\n return inject(GR_CONFIG_KEY, EMPTY_CONFIG)\n}\n\n/**\n * Источник конфига для {@link resolveGrConfig}: сам контекст, `AppContext` или\n * инстанс компонента — у двух последних читается `provides`.\n */\nexport type GrConfigSource = GrConfigContext | { provides?: Record<symbol | string, unknown> }\n\nfunction isGrConfigContext(source: unknown): source is GrConfigContext {\n return typeof (source as GrConfigContext | null)?.componentDefaults?.value === 'object'\n}\n\n/**\n * Конфиг там, где `inject` недоступен — вне `setup`: в директивах, императивных\n * сервисах, утилитах. Порядок: явный контекст → `provides` источника → `inject`\n * (если есть активный инстанс) → пустой конфиг.\n *\n * Важно понимать границу: `provides` у `AppContext` содержит только то, что\n * роздано через `app.provide()`. Значения от `<GrConfigProvider>` живут в дереве\n * компонентов, и достать их можно лишь оттуда, где это дерево ещё есть — то есть\n * захватом в `setup`. Просто передать `appContext` в отрыве от дерева\n * недостаточно; см. `SPEC-GrConfig-resolver.md`.\n */\nexport function resolveGrConfig(source?: GrConfigSource | null): GrConfigContext {\n if (isGrConfigContext(source)) return source\n\n const provides = source?.provides\n if (provides) {\n const fromProvides = provides[GR_CONFIG_KEY as symbol] as GrConfigContext | undefined\n return isGrConfigContext(fromProvides) ? fromProvides : EMPTY_CONFIG\n }\n\n if (getCurrentInstance()) return inject(GR_CONFIG_KEY, EMPTY_CONFIG)\n\n return EMPTY_CONFIG\n}\n\nexport type UseGrComponentSizeOptions<TSize extends string> = {\n /**\n * Имя компонента, чтобы учесть точечный `componentDefaults[Component].size`.\n * Без него читается только глобальный `size` провайдера.\n */\n component?: GrConfigurableComponent\n /** Размер, когда ни проп, ни конфиг ничего не дали. По умолчанию `md`. */\n fallback?: TSize\n /**\n * Размеры, которые компонент реально умеет. Значение из конфига вне этого\n * списка игнорируется в пользу `fallback`.\n *\n * Обязателен для компонентов, у которых size-шкала уже общей (`GrSlider`,\n * `GrRating`, `GrSwitch`, `GrLink`, `GrStatistic` не знают про `xs`): без него\n * `<GrConfigProvider size=\"xs\">` дал бы `sizeMap['xs'] === undefined`, то есть\n * компонент без размерных классов — молча, без ошибки сборки.\n */\n supported?: readonly TSize[]\n}\n\n// Предупреждаем один раз на уникальную пару «размер + список поддерживаемых»,\n// иначе список из сотни контролов зальёт консоль одинаковыми сообщениями.\nconst warnedUnsupportedSizes = new Set<string>()\n\n/** Сброс дедупликации предупреждений. Внутреннее API — нужно тестам. */\nexport function resetUnsupportedSizeWarnings(): void {\n warnedUnsupportedSizes.clear()\n}\n\nfunction warnUnsupportedSize(size: string, supported: readonly string[]): void {\n const key = `${size}|${supported.join(',')}`\n if (warnedUnsupportedSizes.has(key)) return\n warnedUnsupportedSizes.add(key)\n\n console.warn(\n `[granularity] GrConfigProvider size=\"${size}\" is not supported by this component `\n + `(supported: ${supported.join(', ')}); falling back to its own default.`,\n )\n}\n\n/**\n * Эффективный размер компонента. Приоритет:\n * локальный проп → `componentDefaults[Component].size` → глобальный `size`\n * провайдера → `fallback`. Точечная настройка компонента должна побеждать\n * общую — иначе `componentDefaults` нельзя было бы использовать как исключение\n * из глобального правила.\n *\n * Передавайте `size` геттером, чтобы сохранить реактивность.\n *\n * Локальный проп не проверяется по `supported`: он уже сужен типом пропа самого\n * компонента, и передать туда лишнее — явная ошибка вызывающего кода. Проверка\n * нужна конфигу: это глобальный канал, который не знает, кто его читает.\n */\nexport function useGrComponentSize<TSize extends string = GrComponentSize>(\n localSize: () => TSize | undefined,\n options: UseGrComponentSizeOptions<TSize> = {},\n): ComputedRef<TSize> {\n // Все size-шкалы пакета содержат `md`, поэтому он безопасен как общий дефолт.\n const { component, fallback = 'md' as TSize, supported } = options\n const config = useGrConfig()\n\n return computed(() => {\n const local = localSize()\n if (local !== undefined) return local\n\n const fromComponentDefaults = component\n ? (config.componentDefaults.value[component] as { size?: TSize } | undefined)?.size\n : undefined\n\n const fromConfig = fromComponentDefaults ?? config.size.value\n if (fromConfig === undefined) return fallback\n\n if (supported && !supported.includes(fromConfig as TSize)) {\n // Проверку окружения держим инлайном: бандлер потребителя подставляет\n // `process.env.NODE_ENV`, сворачивает условие в `false` и выкидывает\n // и текст предупреждения, и дедуп-Set. Через промежуточную константу\n // это не работает — межмодульную свёртку esbuild/rollup не делают, и\n // DX-сообщение осталось бы в каждом бандле (проверено замером).\n // `typeof process` — страховка для сборок, где `process` не определён.\n if (typeof process !== 'undefined' && process.env.NODE_ENV !== 'production')\n warnUnsupportedSize(fromConfig, supported)\n return fallback\n }\n\n return fromConfig as TSize\n })\n}\n\n/** Дефолтные пропсы конкретного компонента из ближайшего провайдера. */\nexport function useGrComponentDefaults<TComponent extends GrConfigurableComponent>(\n name: TComponent,\n): ComputedRef<GrDefaultsOf<TComponent>> {\n const config = useGrConfig()\n return computed(() => (config.componentDefaults.value[name] ?? EMPTY_COMPONENT_DEFAULTS) as GrDefaultsOf<TComponent>)\n}\n\n/**\n * Эффективное значение «оформительского» пропа: локальный проп →\n * `componentDefaults[Component][prop]` → собственный дефолт компонента.\n *\n * Обязательное условие на стороне компонента: у такого пропа в `withDefaults`\n * должен стоять `undefined`, а «настоящий» дефолт — переехать сюда, в `fallback`.\n * Иначе конфиг не сработает никогда: Vue отдаёт `props.x` уже с подставленным\n * дефолтом, и отличить «пользователь передал значение» от «сработал дефолт»\n * изнутри компонента невозможно.\n */\nexport function useGrComponentProp<\n TComponent extends GrConfigurableComponent,\n TProp extends keyof GrDefaultsOf<TComponent>,\n>(\n component: TComponent,\n prop: TProp,\n localValue: () => GrDefaultsOf<TComponent>[TProp],\n fallback: NonNullable<GrDefaultsOf<TComponent>[TProp]>,\n): ComputedRef<NonNullable<GrDefaultsOf<TComponent>[TProp]>> {\n const config = useGrConfig()\n\n return computed(() => {\n const local = localValue()\n if (local !== undefined) return local as NonNullable<GrDefaultsOf<TComponent>[TProp]>\n\n // Промежуточная аннотация (а не `as`) нужна, чтобы TS не разворачивал\n // `GrComponentDefaults[TComponent]` в объединение всех блоков — по нему\n // generic-ключ `TProp` уже не проиндексировать.\n const defaults: GrDefaultsOf<TComponent> | undefined = config.componentDefaults.value[component]\n return defaults?.[prop] ?? fallback\n })\n}\n\n/**\n * Атрибут темы для **телепортируемого** корня панели.\n *\n * Панель уезжает в `body`, то есть вне DOM-поддерева провайдера, и `data-theme`\n * с его обёртки на неё не наследуется. В дереве компонентов она при этом\n * остаётся внутри — `inject` работает, — поэтому тему панель ставит себе сама.\n * Без этого «тёмный остров» ломался бы на первом же открытом дропдауне.\n *\n * ```vue\n * <teleport to=\"body\">\n * <div v-bind=\"themeAttrs\">…</div>\n * </teleport>\n * ```\n */\nexport function useGrThemeAttrs(): ComputedRef<{ 'data-theme'?: string }> {\n const config = useGrConfig()\n return computed(() => {\n const theme = config.theme?.value\n return theme ? { 'data-theme': theme } : {}\n })\n}\n"],"mappings":";;;;;;;;;;;;;;;AAkBA,IAAa,qBAAqB;CAAC;CAAM;CAAM;CAAM;AAAI;AA+CzD,IAAa,gBAA+C,OAAO,WAAW;;;;;;;;;;;;;;;AAgB9E,IAAM,2BAAgD,OAAO,OAAO,CAAC,CAAC;AAEtE,IAAM,eAAgC;CACpC,MAAM,eAAe,KAAA,CAAS;CAC9B,mBAAmB,eAAe,wBAAwB;CAC1D,OAAO,eAAe,KAAA,CAAS;CAC/B,cAAc,eAAe,KAAA,CAAS;AACxC;;AAGA,SAAgB,cAA+B;CAC7C,OAAO,OAAO,eAAe,YAAY;AAC3C;AAQA,SAAS,kBAAkB,QAA4C;CACrE,OAAO,OAAQ,QAAmC,mBAAmB,UAAU;AACjF;;;;;;;;;;;;AAaA,SAAgB,gBAAgB,QAAiD;CAC/E,IAAI,kBAAkB,MAAM,GAAG,OAAO;CAEtC,MAAM,WAAW,QAAQ;CACzB,IAAI,UAAU;EACZ,MAAM,eAAe,SAAS;EAC9B,OAAO,kBAAkB,YAAY,IAAI,eAAe;CAC1D;CAEA,IAAI,mBAAmB,GAAG,OAAO,OAAO,eAAe,YAAY;CAEnE,OAAO;AACT;AAwBA,IAAM,yCAAyB,IAAI,IAAY;AAO/C,SAAS,oBAAoB,MAAc,WAAoC;CAC7E,MAAM,MAAM,GAAG,KAAK,GAAG,UAAU,KAAK,GAAG;CACzC,IAAI,uBAAuB,IAAI,GAAG,GAAG;CACrC,uBAAuB,IAAI,GAAG;CAE9B,QAAQ,KACN,wCAAwC,KAAK,mDAC5B,UAAU,KAAK,IAAI,EAAE,oCACxC;AACF;;;;;;;;;;;;;;AAeA,SAAgB,mBACd,WACA,UAA4C,CAAC,GACzB;CAEpB,MAAM,EAAE,WAAW,WAAW,MAAe,cAAc;CAC3D,MAAM,SAAS,YAAY;CAE3B,OAAO,eAAe;EACpB,MAAM,QAAQ,UAAU;EACxB,IAAI,UAAU,KAAA,GAAW,OAAO;EAMhC,MAAM,cAJwB,YACzB,OAAO,kBAAkB,MAAM,UAAU,EAAmC,OAC7E,KAAA,MAEwC,OAAO,KAAK;EACxD,IAAI,eAAe,KAAA,GAAW,OAAO;EAErC,IAAI,aAAa,CAAC,UAAU,SAAS,UAAmB,GAAG;GAOzD,IAAI,OAAO,YAAY,eAAA,QAAA,IAAA,aAAwC,cAC7D,oBAAoB,YAAY,SAAS;GAC3C,OAAO;EACT;EAEA,OAAO;CACT,CAAC;AACH;;AAGA,SAAgB,uBACd,MACuC;CACvC,MAAM,SAAS,YAAY;CAC3B,OAAO,eAAgB,OAAO,kBAAkB,MAAM,SAAS,wBAAqD;AACtH;;;;;;;;;;;AAYA,SAAgB,mBAId,WACA,MACA,YACA,UAC2D;CAC3D,MAAM,SAAS,YAAY;CAE3B,OAAO,eAAe;EACpB,MAAM,QAAQ,WAAW;EACzB,IAAI,UAAU,KAAA,GAAW,OAAO;EAMhC,OADuD,OAAO,kBAAkB,MAAM,UAC/E,GAAW,SAAS;CAC7B,CAAC;AACH;;;;;;;;;;;;;;;AAgBA,SAAgB,kBAA0D;CACxE,MAAM,SAAS,YAAY;CAC3B,OAAO,eAAe;EACpB,MAAM,QAAQ,OAAO,OAAO;EAC5B,OAAO,QAAQ,EAAE,cAAc,MAAM,IAAI,CAAC;CAC5C,CAAC;AACH"}
1
+ {"version":3,"file":"context-CTbuwcYs.js","names":[],"sources":["../../src/components/GrConfigProvider/context.ts"],"sourcesContent":["import { computed, getCurrentInstance, inject, type ComputedRef, type InjectionKey } from 'vue'\n\nimport type { GrComponentDefaultsRegistry } from '../../composables/useGrComponentConfig'\n\n/**\n * Контекст `GrConfigProvider` — глобальные дефолты для вложенных GR-компонентов:\n * размер контролов и per-component дефолтные пропсы.\n *\n * Компоненты читают его через {@link useGrConfig} (или хелперы ниже) и используют\n * как fallback, когда соответствующий проп не задан на самом компоненте. Провайдер\n * можно вкладывать — дочерний мержится поверх родительского.\n */\n\n/**\n * Размеры, которыми оперирует провайдер. Это «размеры контролов» — общий\n * знаменатель формных компонентов, а не объединение всех size-шкал пакета\n * (у оверлеев есть свои `xl`/`full`, у слайдера нет `xs`).\n */\nexport const GR_COMPONENT_SIZES = ['xs', 'sm', 'md', 'lg'] as const\n\nexport type GrComponentSize = typeof GR_COMPONENT_SIZES[number]\n\n/**\n * Реестр компонентов с настраиваемыми через конфиг пропами.\n *\n * Объявлен в `composables/useGrComponentConfig` — там же, куда его дополняют\n * и компоненты пакета, и companion-пакеты. Здесь только реэкспорт для тех, кто\n * работает с контекстом провайдера напрямую.\n */\nexport type { GrComponentDefaultsRegistry }\n\n/** Имя компонента, у которого есть настраиваемые через конфиг пропы. */\nexport type GrConfigurableComponent = keyof GrComponentDefaultsRegistry\n\n/**\n * Дефолтные пропсы по имени компонента: `{ GrButton: { variant: 'secondary' } }`.\n *\n * Набор ключей закрыт реестром, а не `Record<string, unknown>`: через конфиг\n * должны настраиваться только «оформительские» пропы. Пустить туда что угодно —\n * значит разрешить задать глобальный `modelValue` или обработчик и получить баг,\n * который ищется часами.\n */\nexport type GrComponentDefaults = {\n [TComponent in GrConfigurableComponent]?: Partial<GrComponentDefaultsRegistry[TComponent]>\n}\n\ntype GrDefaultsOf<TComponent extends GrConfigurableComponent> = Partial<GrComponentDefaultsRegistry[TComponent]>\n\nexport interface GrConfigContext {\n /** Дефолтный размер контролов (если проп `size` не задан на компоненте). */\n size: ComputedRef<GrComponentSize | undefined>\n /** Дефолтные пропсы по компонентам. */\n componentDefaults: ComputedRef<GrComponentDefaults>\n /**\n * Тема поддерева (`data-theme`). Необязательна: тип публичный, и контекст\n * строят руками — например хост императивных диалогов.\n */\n theme?: ComputedRef<string | undefined>\n /**\n * Куда монтируются оверлеи поддерева (`usePortalTarget`). Необязательно, как\n * и `theme`: контекст строят руками — например хост императивных диалогов.\n */\n portalTarget?: ComputedRef<string | HTMLElement | undefined>\n}\n\nexport const GR_CONFIG_KEY: InjectionKey<GrConfigContext> = Symbol('gr-config')\n\n/**\n * Пустой конфиг: когда провайдера в дереве нет, всё разрешается в `undefined`,\n * а компоненты падают на собственные дефолты.\n *\n * `computed` здесь не роскошь: контекст типизирован рефами, и потребитель вправе\n * прогнать `size` через `unref()` или `watch()`. Плоский объект `{ value: … }`\n * не пройдёт проверку `isRef`, и такой код молча получит сам объект вместо\n * значения — поэтому «просто константа» тут не подходит.\n *\n * А вот пустые значения заморожены, и это не педантизм: `computed` без\n * зависимостей вычисляется один раз и отдаёт **один и тот же** объект всем\n * компонентам без провайдера. Незамороженный, он позволил бы одному потребителю\n * записать в него ключ и тем самым подменить дефолты всему приложению.\n */\nconst EMPTY_COMPONENT_DEFAULTS: GrComponentDefaults = Object.freeze({})\n\nconst EMPTY_CONFIG: GrConfigContext = {\n size: computed(() => undefined),\n componentDefaults: computed(() => EMPTY_COMPONENT_DEFAULTS),\n theme: computed(() => undefined),\n portalTarget: computed(() => undefined),\n}\n\n/** Возвращает ближайший `GrConfigProvider` или пустой конфиг, если провайдера нет. */\nexport function useGrConfig(): GrConfigContext {\n return inject(GR_CONFIG_KEY, EMPTY_CONFIG)\n}\n\n/**\n * Источник конфига для {@link resolveGrConfig}: сам контекст, `AppContext` или\n * инстанс компонента — у двух последних читается `provides`.\n */\nexport type GrConfigSource = GrConfigContext | { provides?: Record<symbol | string, unknown> }\n\nfunction isGrConfigContext(source: unknown): source is GrConfigContext {\n return typeof (source as GrConfigContext | null)?.componentDefaults?.value === 'object'\n}\n\n/**\n * Конфиг там, где `inject` недоступен — вне `setup`: в директивах, императивных\n * сервисах, утилитах. Порядок: явный контекст → `provides` источника → `inject`\n * (если есть активный инстанс) → пустой конфиг.\n *\n * Важно понимать границу: `provides` у `AppContext` содержит только то, что\n * роздано через `app.provide()`. Значения от `<GrConfigProvider>` живут в дереве\n * компонентов, и достать их можно лишь оттуда, где это дерево ещё есть — то есть\n * захватом в `setup`. Просто передать `appContext` в отрыве от дерева\n * недостаточно; см. `SPEC-GrConfig-resolver.md`.\n */\nexport function resolveGrConfig(source?: GrConfigSource | null): GrConfigContext {\n if (isGrConfigContext(source)) return source\n\n const provides = source?.provides\n if (provides) {\n const fromProvides = provides[GR_CONFIG_KEY as symbol] as GrConfigContext | undefined\n return isGrConfigContext(fromProvides) ? fromProvides : EMPTY_CONFIG\n }\n\n if (getCurrentInstance()) return inject(GR_CONFIG_KEY, EMPTY_CONFIG)\n\n return EMPTY_CONFIG\n}\n\nexport type UseGrComponentSizeOptions<TSize extends string> = {\n /**\n * Имя компонента, чтобы учесть точечный `componentDefaults[Component].size`.\n * Без него читается только глобальный `size` провайдера.\n */\n component?: GrConfigurableComponent\n /** Размер, когда ни проп, ни конфиг ничего не дали. По умолчанию `md`. */\n fallback?: TSize\n /**\n * Размеры, которые компонент реально умеет. Значение из конфига вне этого\n * списка игнорируется в пользу `fallback`.\n *\n * Обязателен для компонентов, у которых size-шкала уже общей (`GrSlider`,\n * `GrRating`, `GrSwitch`, `GrLink`, `GrStatistic` не знают про `xs`): без него\n * `<GrConfigProvider size=\"xs\">` дал бы `sizeMap['xs'] === undefined`, то есть\n * компонент без размерных классов — молча, без ошибки сборки.\n */\n supported?: readonly TSize[]\n}\n\n// Предупреждаем один раз на уникальную пару «размер + список поддерживаемых»,\n// иначе список из сотни контролов зальёт консоль одинаковыми сообщениями.\nconst warnedUnsupportedSizes = new Set<string>()\n\n/** Сброс дедупликации предупреждений. Внутреннее API — нужно тестам. */\nexport function resetUnsupportedSizeWarnings(): void {\n warnedUnsupportedSizes.clear()\n}\n\nfunction warnUnsupportedSize(size: string, supported: readonly string[]): void {\n const key = `${size}|${supported.join(',')}`\n if (warnedUnsupportedSizes.has(key)) return\n warnedUnsupportedSizes.add(key)\n\n console.warn(\n `[granularity] GrConfigProvider size=\"${size}\" is not supported by this component `\n + `(supported: ${supported.join(', ')}); falling back to its own default.`,\n )\n}\n\n/**\n * Эффективный размер компонента. Приоритет:\n * локальный проп → `componentDefaults[Component].size` → глобальный `size`\n * провайдера → `fallback`. Точечная настройка компонента должна побеждать\n * общую — иначе `componentDefaults` нельзя было бы использовать как исключение\n * из глобального правила.\n *\n * Передавайте `size` геттером, чтобы сохранить реактивность.\n *\n * Локальный проп не проверяется по `supported`: он уже сужен типом пропа самого\n * компонента, и передать туда лишнее — явная ошибка вызывающего кода. Проверка\n * нужна конфигу: это глобальный канал, который не знает, кто его читает.\n */\nexport function useGrComponentSize<TSize extends string = GrComponentSize>(\n localSize: () => TSize | undefined,\n options: UseGrComponentSizeOptions<TSize> = {},\n): ComputedRef<TSize> {\n // Все size-шкалы пакета содержат `md`, поэтому он безопасен как общий дефолт.\n const { component, fallback = 'md' as TSize, supported } = options\n const config = useGrConfig()\n\n return computed(() => {\n const local = localSize()\n if (local !== undefined) return local\n\n const fromComponentDefaults = component\n ? (config.componentDefaults.value[component] as { size?: TSize } | undefined)?.size\n : undefined\n\n const fromConfig = fromComponentDefaults ?? config.size.value\n if (fromConfig === undefined) return fallback\n\n if (supported && !supported.includes(fromConfig as TSize)) {\n // Проверку окружения держим инлайном: бандлер потребителя подставляет\n // `process.env.NODE_ENV`, сворачивает условие в `false` и выкидывает\n // и текст предупреждения, и дедуп-Set. Через промежуточную константу\n // это не работает — межмодульную свёртку esbuild/rollup не делают, и\n // DX-сообщение осталось бы в каждом бандле (проверено замером).\n // `typeof process` — страховка для сборок, где `process` не определён.\n if (typeof process !== 'undefined' && process.env.NODE_ENV !== 'production')\n warnUnsupportedSize(fromConfig, supported)\n return fallback\n }\n\n return fromConfig as TSize\n })\n}\n\n/** Дефолтные пропсы конкретного компонента из ближайшего провайдера. */\nexport function useGrComponentDefaults<TComponent extends GrConfigurableComponent>(\n name: TComponent,\n): ComputedRef<GrDefaultsOf<TComponent>> {\n const config = useGrConfig()\n return computed(() => (config.componentDefaults.value[name] ?? EMPTY_COMPONENT_DEFAULTS) as GrDefaultsOf<TComponent>)\n}\n\n/**\n * Эффективное значение «оформительского» пропа: локальный проп →\n * `componentDefaults[Component][prop]` → собственный дефолт компонента.\n *\n * Обязательное условие на стороне компонента: у такого пропа в `withDefaults`\n * должен стоять `undefined`, а «настоящий» дефолт — переехать сюда, в `fallback`.\n * Иначе конфиг не сработает никогда: Vue отдаёт `props.x` уже с подставленным\n * дефолтом, и отличить «пользователь передал значение» от «сработал дефолт»\n * изнутри компонента невозможно.\n */\nexport function useGrComponentProp<\n TComponent extends GrConfigurableComponent,\n TProp extends keyof GrDefaultsOf<TComponent>,\n>(\n component: TComponent,\n prop: TProp,\n localValue: () => GrDefaultsOf<TComponent>[TProp],\n fallback: NonNullable<GrDefaultsOf<TComponent>[TProp]>,\n): ComputedRef<NonNullable<GrDefaultsOf<TComponent>[TProp]>> {\n const config = useGrConfig()\n\n return computed(() => {\n const local = localValue()\n if (local !== undefined) return local as NonNullable<GrDefaultsOf<TComponent>[TProp]>\n\n // Промежуточная аннотация (а не `as`) нужна, чтобы TS не разворачивал\n // `GrComponentDefaults[TComponent]` в объединение всех блоков — по нему\n // generic-ключ `TProp` уже не проиндексировать.\n const defaults: GrDefaultsOf<TComponent> | undefined = config.componentDefaults.value[component]\n return defaults?.[prop] ?? fallback\n })\n}\n\n/**\n * Атрибут темы для **телепортируемого** корня панели.\n *\n * Панель уезжает в `body`, то есть вне DOM-поддерева провайдера, и `data-theme`\n * с его обёртки на неё не наследуется. В дереве компонентов она при этом\n * остаётся внутри — `inject` работает, — поэтому тему панель ставит себе сама.\n * Без этого «тёмный остров» ломался бы на первом же открытом дропдауне.\n *\n * ```vue\n * <teleport to=\"body\">\n * <div v-bind=\"themeAttrs\">…</div>\n * </teleport>\n * ```\n */\nexport function useGrThemeAttrs(): ComputedRef<{ 'data-theme'?: string }> {\n const config = useGrConfig()\n return computed(() => {\n const theme = config.theme?.value\n return theme ? { 'data-theme': theme } : {}\n })\n}\n"],"mappings":";;AAiEA,IAAa,gBAA+C,OAAO,WAAW;;;;;;;;;;;;;;;AAgB9E,IAAM,2BAAgD,OAAO,OAAO,CAAC,CAAC;AAEtE,IAAM,eAAgC;CACpC,MAAM,eAAe,KAAA,CAAS;CAC9B,mBAAmB,eAAe,wBAAwB;CAC1D,OAAO,eAAe,KAAA,CAAS;CAC/B,cAAc,eAAe,KAAA,CAAS;AACxC;;AAGA,SAAgB,cAA+B;CAC7C,OAAO,OAAO,eAAe,YAAY;AAC3C;AAQA,SAAS,kBAAkB,QAA4C;CACrE,OAAO,OAAQ,QAAmC,mBAAmB,UAAU;AACjF;;;;;;;;;;;;AAaA,SAAgB,gBAAgB,QAAiD;CAC/E,IAAI,kBAAkB,MAAM,GAAG,OAAO;CAEtC,MAAM,WAAW,QAAQ;CACzB,IAAI,UAAU;EACZ,MAAM,eAAe,SAAS;EAC9B,OAAO,kBAAkB,YAAY,IAAI,eAAe;CAC1D;CAEA,IAAI,mBAAmB,GAAG,OAAO,OAAO,eAAe,YAAY;CAEnE,OAAO;AACT;AAwBA,IAAM,yCAAyB,IAAI,IAAY;AAO/C,SAAS,oBAAoB,MAAc,WAAoC;CAC7E,MAAM,MAAM,GAAG,KAAK,GAAG,UAAU,KAAK,GAAG;CACzC,IAAI,uBAAuB,IAAI,GAAG,GAAG;CACrC,uBAAuB,IAAI,GAAG;CAE9B,QAAQ,KACN,wCAAwC,KAAK,mDAC5B,UAAU,KAAK,IAAI,EAAE,oCACxC;AACF;;;;;;;;;;;;;;AAeA,SAAgB,mBACd,WACA,UAA4C,CAAC,GACzB;CAEpB,MAAM,EAAE,WAAW,WAAW,MAAe,cAAc;CAC3D,MAAM,SAAS,YAAY;CAE3B,OAAO,eAAe;EACpB,MAAM,QAAQ,UAAU;EACxB,IAAI,UAAU,KAAA,GAAW,OAAO;EAMhC,MAAM,cAJwB,YACzB,OAAO,kBAAkB,MAAM,UAAU,EAAmC,OAC7E,KAAA,MAEwC,OAAO,KAAK;EACxD,IAAI,eAAe,KAAA,GAAW,OAAO;EAErC,IAAI,aAAa,CAAC,UAAU,SAAS,UAAmB,GAAG;GAOzD,IAAI,OAAO,YAAY,eAAA,QAAA,IAAA,aAAwC,cAC7D,oBAAoB,YAAY,SAAS;GAC3C,OAAO;EACT;EAEA,OAAO;CACT,CAAC;AACH;;AAGA,SAAgB,uBACd,MACuC;CACvC,MAAM,SAAS,YAAY;CAC3B,OAAO,eAAgB,OAAO,kBAAkB,MAAM,SAAS,wBAAqD;AACtH;;;;;;;;;;;AAYA,SAAgB,mBAId,WACA,MACA,YACA,UAC2D;CAC3D,MAAM,SAAS,YAAY;CAE3B,OAAO,eAAe;EACpB,MAAM,QAAQ,WAAW;EACzB,IAAI,UAAU,KAAA,GAAW,OAAO;EAMhC,OADuD,OAAO,kBAAkB,MAAM,UAC/E,GAAW,SAAS;CAC7B,CAAC;AACH;;;;;;;;;;;;;;;AAgBA,SAAgB,kBAA0D;CACxE,MAAM,SAAS,YAAY;CAC3B,OAAO,eAAe;EACpB,MAAM,QAAQ,OAAO,OAAO;EAC5B,OAAO,QAAQ,EAAE,cAAc,MAAM,IAAI,CAAC;CAC5C,CAAC;AACH"}
@@ -1,7 +1,4 @@
1
- import { t as splitClassTokens } from "./classTokens-BzazaERD.js";
2
1
  import { a as grButtonClass, i as grButtonBaseClass, o as sizes } from "./grButtonStyles-B_-YRE__.js";
3
- import { t as grButtonSafelist } from "./safelist-CudBLyAD.js";
4
- import { defineGranularComponent } from "@feugene/unocss-preset-granular/contract";
5
2
  //#region src/components/GrRadio/grRadioStyles.ts
6
3
  var grRadioEnabledClass = "cursor-pointer";
7
4
  /**
@@ -96,36 +93,4 @@ function grRadioDotClass(options) {
96
93
  return options.disabled ? grRadioDotDisabledClass : grRadioDotCheckedClass;
97
94
  }
98
95
  //#endregion
99
- //#region src/components/GrRadio/safelist.ts
100
- var grRadioSafelist = [.../* @__PURE__ */ new Set([
101
- ...grButtonSafelist,
102
- ...splitClassTokens(grRadioEnabledClass),
103
- ...splitClassTokens(grRadioButtonDisabledClass),
104
- ...splitClassTokens(grRadioButtonDisabledCheckedClass),
105
- ...splitClassTokens(grRadioRootDisabledClass),
106
- ...splitClassTokens(grRadioRootEnabledClass),
107
- ...splitClassTokens(grRadioRootReadonlyClass),
108
- ...splitClassTokens(grRadioControlCheckedClass),
109
- ...splitClassTokens(grRadioControlUncheckedClass),
110
- ...splitClassTokens(grRadioControlDisabledClass),
111
- ...splitClassTokens(grRadioControlInvalidClass),
112
- ...splitClassTokens(grRadioDotCheckedClass),
113
- ...splitClassTokens(grRadioDotUncheckedClass),
114
- ...splitClassTokens(grRadioDotDisabledClass),
115
- ...splitClassTokens(grRadioDotBaseClass),
116
- ...Object.values(grRadioControlSizes).flatMap(splitClassTokens),
117
- ...Object.values(grRadioDotSizes).flatMap(splitClassTokens),
118
- ...Object.values(grRadioLabelSizes).flatMap(splitClassTokens),
119
- ...Object.values(grRadioDescriptionSizes).flatMap(splitClassTokens),
120
- ...splitClassTokens(grRadioLabelColorClass),
121
- ...splitClassTokens(grRadioLabelCheckedColorClass)
122
- ])];
123
- //#endregion
124
- //#region src/components/GrRadio/config.ts
125
- var grRadioConfig = defineGranularComponent(import.meta.url, {
126
- name: "GrRadio",
127
- dependencies: ["GrButton"],
128
- safelist: grRadioSafelist
129
- });
130
- //#endregion
131
- export { grRadioDescriptionSizes as a, grRadioDotSizes as c, grRadioControlClass as i, grRadioLabelClassFor as l, grRadioSafelist as n, grRadioDotBaseClass as o, grRadioButtonClass as r, grRadioDotClass as s, grRadioConfig as t, grRadioRootClass as u };
96
+ export { grRadioRootDisabledClass as C, grRadioRootClass as S, grRadioRootReadonlyClass as T, grRadioEnabledClass as _, grRadioControlClass as a, grRadioLabelColorClass as b, grRadioControlSizes as c, grRadioDotBaseClass as d, grRadioDotCheckedClass as f, grRadioDotUncheckedClass as g, grRadioDotSizes as h, grRadioControlCheckedClass as i, grRadioControlUncheckedClass as l, grRadioDotDisabledClass as m, grRadioButtonDisabledCheckedClass as n, grRadioControlDisabledClass as o, grRadioDotClass as p, grRadioButtonDisabledClass as r, grRadioControlInvalidClass as s, grRadioButtonClass as t, grRadioDescriptionSizes as u, grRadioLabelCheckedColorClass as v, grRadioRootEnabledClass as w, grRadioLabelSizes as x, grRadioLabelClassFor as y };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grRadioStyles-BTjGNhtU.js","names":[],"sources":["../../src/components/GrRadio/grRadioStyles.ts"],"sourcesContent":["import {\n grButtonBaseClass,\n grButtonClass,\n sizes as grButtonSizes,\n type GrButtonSize,\n type GrButtonTone,\n type GrButtonVariant,\n} from '../GrButton/grButtonStyles'\n\nexport type GrRadioVariant = 'radiobox' | 'button'\n\nexport const grRadioEnabledClass = 'cursor-pointer'\n\n/**\n * Отключённая кнопка-радио гасится, но НЕ теряет состояние: в отключённой\n * группе всё равно должно быть видно, что выбрано. Поэтому не отдаём вид\n * `GrButton`-у (его disabled состояние-слепой), а держим свою пару.\n */\nexport const grRadioButtonDisabledClass = 'cursor-not-allowed bg-transparent text-[var(--gr-muted-fg)] border border-[var(--gr-brd)]'\nexport const grRadioButtonDisabledCheckedClass = 'cursor-not-allowed bg-[var(--gr-muted)] text-[var(--gr-fg)] border border-[var(--gr-muted-fg)]'\n\n/**\n * Отключённый переключатель гасится токенами, а не `opacity`: прозрачность\n * разбавляет выверенные на AA цвета текста.\n */\nexport const grRadioRootDisabledClass = 'cursor-not-allowed text-[var(--gr-muted-fg)]'\nexport const grRadioRootEnabledClass = 'cursor-pointer'\n/** Только для чтения: значение видно и читается, но курсор не обещает клика. */\nexport const grRadioRootReadonlyClass = 'cursor-default'\n\nexport const grRadioControlCheckedClass = 'border-[var(--gr-primary)] bg-[color-mix(in_srgb,var(--gr-primary)_10%,var(--gr-bg))]'\nexport const grRadioControlUncheckedClass = 'border-[var(--gr-brd)] bg-[var(--gr-bg)]'\nexport const grRadioControlDisabledClass = 'border-[var(--gr-brd)] bg-[var(--gr-muted)]'\nexport const grRadioControlInvalidClass = 'border-[var(--gr-danger)] bg-[var(--gr-bg)]'\n\nexport const grRadioDotCheckedClass = 'bg-[var(--gr-primary)] opacity-100 scale-100'\nexport const grRadioDotUncheckedClass = 'bg-transparent opacity-0 scale-75'\nexport const grRadioDotDisabledClass = 'bg-[var(--gr-muted-fg)] opacity-100 scale-100'\n// Базовые классы «точки» внутри radiobox — нестандартный transition. Вынесены сюда,\n// чтобы `safelist` гарантировал их присутствие в сборке даже при tree-shaking шаблона.\nexport const grRadioDotBaseClass = 'rounded-[var(--gr-radius-full)] transition-[transform,opacity,background-color] duration-[var(--gr-duration-fast)]'\n\n/**\n * Ступени `radiobox`: коробка, точка и кегли подписи с описанием.\n *\n * До этого коробка была зашита `h-4 w-4` в шаблоне, а кегли — фиксированным\n * `--gr-text-sm`: вариант `radiobox` не масштабировался вовсе, хотя `size` у\n * компонента был и работал для варианта `button`. Ступени согласованы с высотой\n * кнопки (`grButtonStyles.sizes`: 28/32/40/44) — радио стоит в тех же формах.\n */\nexport const grRadioControlSizes: Record<GrButtonSize, string> = {\n xs: 'h-3.5 w-3.5',\n sm: 'h-4 w-4',\n md: 'h-5 w-5',\n lg: 'h-6 w-6',\n}\n\nexport const grRadioDotSizes: Record<GrButtonSize, string> = {\n xs: 'h-[5px] w-[5px]',\n sm: 'h-[6px] w-[6px]',\n md: 'h-2 w-2',\n lg: 'h-2.5 w-2.5',\n}\n\nconst grRadioLabelTexts: Record<GrButtonSize, string> = {\n xs: 'text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)]',\n sm: 'text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)]',\n md: 'text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)]',\n lg: 'text-[length:var(--gr-text-base)] leading-[var(--gr-leading-base)]',\n}\n\nexport const grRadioDescriptionSizes: Record<GrButtonSize, string> = {\n xs: 'text-[length:var(--gr-text-2xs)] text-[var(--gr-muted-fg)]',\n sm: 'text-[length:var(--gr-text-xs)] text-[var(--gr-muted-fg)]',\n md: 'text-[length:var(--gr-text-xs)] text-[var(--gr-muted-fg)]',\n lg: 'text-[length:var(--gr-text-sm)] text-[var(--gr-muted-fg)]',\n}\n\n/** Выбранный вариант выделяется текстом, а не только точкой. */\nexport const grRadioLabelCheckedColorClass = 'text-[var(--gr-fg)] font-500'\nexport const grRadioLabelColorClass = 'text-[var(--gr-muted-fg)]'\n\nexport function grRadioLabelClassFor(size: GrButtonSize, checked: boolean): string {\n return [\n grRadioLabelTexts[size],\n checked ? grRadioLabelCheckedColorClass : grRadioLabelColorClass,\n ].join(' ')\n}\n\nexport const grRadioLabelSizes = grRadioLabelTexts\n\nexport function grRadioButtonClass(options: {\n checked: boolean\n disabled: boolean\n readonly: boolean\n size: GrButtonSize\n buttonVariant: GrButtonVariant\n buttonTone: GrButtonTone\n selectedButtonVariant: GrButtonVariant\n selectedButtonTone: GrButtonTone\n}): string {\n if (options.disabled) {\n return [\n grButtonBaseClass,\n grButtonSizes[options.size],\n options.checked ? grRadioButtonDisabledCheckedClass : grRadioButtonDisabledClass,\n ].join(' ')\n }\n\n const variant = options.checked ? options.selectedButtonVariant : options.buttonVariant\n const tone = options.checked ? options.selectedButtonTone : options.buttonTone\n\n return [\n grButtonBaseClass,\n grButtonClass({\n variant,\n tone,\n size: options.size,\n square: false,\n }),\n options.readonly ? grRadioRootReadonlyClass : grRadioEnabledClass,\n ].join(' ')\n}\n\nexport function grRadioRootClass(options: { disabled: boolean, readonly: boolean }): string {\n if (options.disabled) return grRadioRootDisabledClass\n return options.readonly ? grRadioRootReadonlyClass : grRadioRootEnabledClass\n}\n\nexport function grRadioControlClass(options: {\n checked: boolean\n disabled: boolean\n invalid: boolean\n size: GrButtonSize\n}): string {\n const state = options.disabled\n ? grRadioControlDisabledClass\n : options.invalid && !options.checked\n ? grRadioControlInvalidClass\n : options.checked ? grRadioControlCheckedClass : grRadioControlUncheckedClass\n\n return [grRadioControlSizes[options.size], state].join(' ')\n}\n\nexport function grRadioDotClass(options: { checked: boolean, disabled: boolean }): string {\n if (!options.checked)\n return grRadioDotUncheckedClass\n\n return options.disabled ? grRadioDotDisabledClass : grRadioDotCheckedClass\n}\n"],"mappings":";;AAWA,IAAa,sBAAsB;;;;;;AAOnC,IAAa,6BAA6B;AAC1C,IAAa,oCAAoC;;;;;AAMjD,IAAa,2BAA2B;AACxC,IAAa,0BAA0B;;AAEvC,IAAa,2BAA2B;AAExC,IAAa,6BAA6B;AAC1C,IAAa,+BAA+B;AAC5C,IAAa,8BAA8B;AAC3C,IAAa,6BAA6B;AAE1C,IAAa,yBAAyB;AACtC,IAAa,2BAA2B;AACxC,IAAa,0BAA0B;AAGvC,IAAa,sBAAsB;;;;;;;;;AAUnC,IAAa,sBAAoD;CAC/D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,kBAAgD;CAC3D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAM,oBAAkD;CACtD,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,0BAAwD;CACnE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;AAGA,IAAa,gCAAgC;AAC7C,IAAa,yBAAyB;AAEtC,SAAgB,qBAAqB,MAAoB,SAA0B;CACjF,OAAO,CACL,kBAAkB,OAClB,UAAU,gCAAgC,sBAC5C,CAAC,CAAC,KAAK,GAAG;AACZ;AAEA,IAAa,oBAAoB;AAEjC,SAAgB,mBAAmB,SASxB;CACT,IAAI,QAAQ,UACV,OAAO;EACL;EACA,MAAc,QAAQ;EACtB,QAAQ,UAAU,oCAAoC;CACxD,CAAC,CAAC,KAAK,GAAG;CAMZ,OAAO;EACL;EACA,cAAc;GACZ,SANY,QAAQ,UAAU,QAAQ,wBAAwB,QAAQ;GAOtE,MANS,QAAQ,UAAU,QAAQ,qBAAqB,QAAQ;GAOhE,MAAM,QAAQ;GACd,QAAQ;EACV,CAAC;EACD,QAAQ,WAAW,2BAA2B;CAChD,CAAC,CAAC,KAAK,GAAG;AACZ;AAEA,SAAgB,iBAAiB,SAA2D;CAC1F,IAAI,QAAQ,UAAU,OAAO;CAC7B,OAAO,QAAQ,WAAW,2BAA2B;AACvD;AAEA,SAAgB,oBAAoB,SAKzB;CACT,MAAM,QAAQ,QAAQ,WAClB,8BACA,QAAQ,WAAW,CAAC,QAAQ,UAC1B,6BACA,QAAQ,UAAU,6BAA6B;CAErD,OAAO,CAAC,oBAAoB,QAAQ,OAAO,KAAK,CAAC,CAAC,KAAK,GAAG;AAC5D;AAEA,SAAgB,gBAAgB,SAA0D;CACxF,IAAI,CAAC,QAAQ,SACX,OAAO;CAET,OAAO,QAAQ,WAAW,0BAA0B;AACtD"}
@@ -1,9 +1,9 @@
1
1
  import { t as grAlertConfig } from "./config-BNu8lFQB.js";
2
2
  import { t as grAutocompleteConfig } from "./config-BbY2SKGE.js";
3
- import { t as grAvatarConfig } from "./config-DP7eseR1.js";
3
+ import { t as grAvatarConfig } from "./config-Bsh948nP.js";
4
4
  import { t as grBadgeConfig } from "./config-qVg3Zz_A.js";
5
- import { t as grBadgeWrapConfig } from "./config-06SQjBx0.js";
6
- import { t as grBottomNavConfig } from "./config-D3_g2KIn.js";
5
+ import { t as grBadgeWrapConfig } from "./config-B4w5gBD0.js";
6
+ import { t as grBottomNavConfig } from "./config-Dguto_6o.js";
7
7
  import { t as grBreadcrumbsConfig } from "./config-DKdlqXiY.js";
8
8
  import { t as grButtonConfig } from "./config-B84z1aos.js";
9
9
  import { t as grButtonGroupConfig } from "./config-DBmdgoVf.js";
@@ -19,16 +19,16 @@ import { t as grConfirmDialogConfig } from "./config-A-bBiotF.js";
19
19
  import { t as grDataTableConfig } from "./config-BJ7Bv_G2.js";
20
20
  import { t as grDialogSafelist } from "./safelist-CkF4v7DC.js";
21
21
  import { t as grDialogServiceConfig } from "./config-CjXjhphs.js";
22
- import { t as grDividerConfig } from "./config-CY0_6cMi2.js";
23
- import { t as grDrawerConfig } from "./config-D94Z9po52.js";
22
+ import { t as grDividerConfig } from "./config-CY0_6cMi.js";
23
+ import { t as grDrawerConfig } from "./config-D94Z9po5.js";
24
24
  import { t as grDropdownConfig } from "./config-BViooYNv.js";
25
- import { t as grDropdownMenuConfig } from "./config-BKvX0q102.js";
26
- import { t as grEmptyStateConfig } from "./config-DvQIb4kb.js";
25
+ import { t as grDropdownMenuConfig } from "./config-BKvX0q10.js";
26
+ import { t as grEmptyStateConfig } from "./config-vSji8w90.js";
27
27
  import { t as grFileUploadConfig } from "./config-CN970ZcJ.js";
28
28
  import { t as grFormConfig } from "./config-Droqn55j.js";
29
29
  import { t as grFormFieldConfig } from "./config-D6W1rnlp.js";
30
30
  import { t as grFormFileConfig } from "./config-COvrUfhR.js";
31
- import { t as grFormSectionConfig } from "./config-DhHbU3zO.js";
31
+ import { t as grFormSectionConfig } from "./config-Dgj1Q6JY.js";
32
32
  import { t as grImageViewerConfig } from "./config-BeZRuonp.js";
33
33
  import { t as grInputConfig } from "./config-DpeQchsV.js";
34
34
  import { t as grInputTagConfig } from "./config-BN4sXYXn.js";
@@ -44,26 +44,26 @@ import { t as grPopoverConfig } from "./config-BSyiFlbi.js";
44
44
  import { t as grProgressBarConfig } from "./config-CQzGyi1C.js";
45
45
  import { t as grProgressCircleConfig } from "./config-MRvhUl-O.js";
46
46
  import { t as grPromptDialogConfig } from "./config-C0Ea9ePP.js";
47
- import { t as grRadioConfig } from "./config-BqFjr3tN.js";
47
+ import { t as grRadioConfig } from "./config-BTCOJO5z.js";
48
48
  import { t as grRadioGroupConfig } from "./config-QaIc_gRa.js";
49
49
  import { t as grRatingConfig } from "./config-Baj7Wvx-.js";
50
- import { t as grSegmentedConfig } from "./config-B-iNaGdw.js";
50
+ import { t as grSegmentedConfig } from "./config-BEVBsvni.js";
51
51
  import { t as grSelectConfig } from "./config-Cwd3yjRw.js";
52
- import { t as grSidebarConfig } from "./config-Rw9OyW702.js";
53
- import { t as grSkeletonConfig } from "./config-8Pcutu1j2.js";
52
+ import { t as grSidebarConfig } from "./config-BfsBepkH2.js";
53
+ import { t as grSkeletonConfig } from "./config-8Pcutu1j.js";
54
54
  import { t as grSliderConfig } from "./config-T3qdQBgU2.js";
55
- import { t as grSortableListConfig } from "./config-DAX8Deh1.js";
56
- import { t as grSplitterConfig } from "./config-BE6n20np2.js";
55
+ import { t as grSortableListConfig } from "./config-DAX8Deh12.js";
56
+ import { t as grSplitterConfig } from "./config-BE6n20np.js";
57
57
  import { t as grStatisticConfig } from "./config-Be9k9bOf.js";
58
58
  import { t as grSwitchConfig } from "./config-BoNR7_PD2.js";
59
- import { t as grTableConfig } from "./config-WTNhdh6T2.js";
60
- import { t as grTabPanelsConfig } from "./config-eXB87DOi.js";
61
- import { t as grTabsConfig } from "./config-_qPUfb6-2.js";
59
+ import { t as grTableConfig } from "./config-WTNhdh6T.js";
60
+ import { t as grTabPanelsConfig } from "./config-eXB87DOi2.js";
61
+ import { t as grTabsConfig } from "./config-DWN4x6_e.js";
62
62
  import { t as grTextareaConfig } from "./config-BDfTXHo12.js";
63
- import { t as grTimelineConfig } from "./config-COpuWGr_.js";
63
+ import { t as grTimelineConfig } from "./config-COpuWGr_2.js";
64
64
  import { t as grToasterConfig } from "./config-ScuvHw6k2.js";
65
65
  import { t as grTooltipConfig } from "./config-CN2ULSQL.js";
66
- import { t as grTreeConfig } from "./config-CDat1wXf2.js";
66
+ import { t as grTreeConfig } from "./config-CDat1wXf.js";
67
67
  import { t as grTreeSelectConfig } from "./config-DCFvmHEv.js";
68
68
  import { defineGranularComponent, defineGranularProvider, resolvePackageBaseUrl } from "@feugene/unocss-preset-granular/contract";
69
69
  //#region src/components/GrDialog/config.ts
@@ -1 +1 @@
1
- {"version":3,"file":"granular-provider-C6uAujdJ.js","names":[],"sources":["../../src/components/GrDialog/config.ts","../../src/components/GrResponseErrorBanner/config.ts","../../src/granular-provider/shared.ts","../../src/granular-provider/index.ts"],"sourcesContent":["import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grDialogSafelist } from './safelist'\n\nexport const grDialogConfig = defineGranularComponent(import.meta.url, {\n name: 'GrDialog',\n dependencies: ['GrButton', 'GrModal'],\n safelist: grDialogSafelist,\n})\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nexport const grResponseErrorBannerConfig = defineGranularComponent(import.meta.url, {\n name: 'GrResponseErrorBanner',\n dependencies: ['GrAlert', 'GrButton'],\n})\n","// `id`, `theme.*`, `packageBaseUrl` и реестр компонентов провайдера.\n//\n// Все `new URL('../styles/...', import.meta.url)` обязаны лежать именно здесь:\n// `shared.ts` в одной директории с `index.ts` / `node.ts`, поэтому\n// относительные пути совпадают. Для браузера безопасно — бандлеры\n// транслируют такие литералы в статические asset-URL.\n//\n// `apps/showcase/scripts/generate-component-api.mjs` читает список компонентов\n// из `Object.keys(granularityComponentConfigs)` через vite SSR.\nimport {\n defineGranularProvider,\n type GranularComponentDescriptor,\n type GranularProvider,\n resolvePackageBaseUrl,\n} from '@feugene/unocss-preset-granular/contract'\n// <granularity:components:imports> — блок генерируется `yarn generate:registry`\nimport { grAlertConfig } from '../components/GrAlert/config'\nimport { grAutocompleteConfig } from '../components/GrAutocomplete/config'\nimport { grAvatarConfig } from '../components/GrAvatar/config'\nimport { grBadgeConfig } from '../components/GrBadge/config'\nimport { grBadgeWrapConfig } from '../components/GrBadgeWrap/config'\nimport { grBottomNavConfig } from '../components/GrBottomNav/config'\nimport { grBreadcrumbsConfig } from '../components/GrBreadcrumbs/config'\nimport { grButtonConfig } from '../components/GrButton/config'\nimport { grButtonGroupConfig } from '../components/GrButtonGroup/config'\nimport { grCardConfig } from '../components/GrCard/config'\nimport { grCheckboxConfig } from '../components/GrCheckbox/config'\nimport { grCheckboxGroupConfig } from '../components/GrCheckboxGroup/config'\nimport { grCollapseConfig } from '../components/GrCollapse/config'\nimport { grColorPickerConfig } from '../components/GrColorPicker/config'\nimport { grCommandPaletteConfig } from '../components/GrCommandPalette/config'\nimport { grConfigProviderConfig } from '../components/GrConfigProvider/config'\nimport { grConfirmDialogConfig } from '../components/GrConfirmDialog/config'\nimport { grDataTableConfig } from '../components/GrDataTable/config'\nimport { grDialogConfig } from '../components/GrDialog/config'\nimport { grDialogServiceConfig } from '../components/GrDialogService/config'\nimport { grDividerConfig } from '../components/GrDivider/config'\nimport { grDrawerConfig } from '../components/GrDrawer/config'\nimport { grDropdownConfig } from '../components/GrDropdown/config'\nimport { grDropdownMenuConfig } from '../components/GrDropdownMenu/config'\nimport { grEmptyStateConfig } from '../components/GrEmptyState/config'\nimport { grFileUploadConfig } from '../components/GrFileUpload/config'\nimport { grFormConfig } from '../components/GrForm/config'\nimport { grFormFieldConfig } from '../components/GrFormField/config'\nimport { grFormFileConfig } from '../components/GrFormFile/config'\nimport { grFormSectionConfig } from '../components/GrFormSection/config'\nimport { grIconConfig } from '../components/GrIcon/config'\nimport { grImageViewerConfig } from '../components/GrImageViewer/config'\nimport { grInputConfig } from '../components/GrInput/config'\nimport { grInputTagConfig } from '../components/GrInputTag/config'\nimport { grKbdConfig } from '../components/GrKbd/config'\nimport { grLinkConfig } from '../components/GrLink/config'\nimport { grListConfig } from '../components/GrList/config'\nimport { grLoadingConfig } from '../components/GrLoading/config'\nimport { grModalConfig } from '../components/GrModal/config'\nimport { grNavbarConfig } from '../components/GrNavbar/config'\nimport { grNumberInputConfig } from '../components/GrNumberInput/config'\nimport { grPaginationConfig } from '../components/GrPagination/config'\nimport { grPopoverConfig } from '../components/GrPopover/config'\nimport { grProgressBarConfig } from '../components/GrProgressBar/config'\nimport { grProgressCircleConfig } from '../components/GrProgressCircle/config'\nimport { grPromptDialogConfig } from '../components/GrPromptDialog/config'\nimport { grRadioConfig } from '../components/GrRadio/config'\nimport { grRadioGroupConfig } from '../components/GrRadioGroup/config'\nimport { grRatingConfig } from '../components/GrRating/config'\nimport { grResponseErrorBannerConfig } from '../components/GrResponseErrorBanner/config'\nimport { grSegmentedConfig } from '../components/GrSegmented/config'\nimport { grSelectConfig } from '../components/GrSelect/config'\nimport { grSidebarConfig } from '../components/GrSidebar/config'\nimport { grSkeletonConfig } from '../components/GrSkeleton/config'\nimport { grSliderConfig } from '../components/GrSlider/config'\nimport { grSortableListConfig } from '../components/GrSortableList/config'\nimport { grSplitterConfig } from '../components/GrSplitter/config'\nimport { grStatisticConfig } from '../components/GrStatistic/config'\nimport { grSwitchConfig } from '../components/GrSwitch/config'\nimport { grTableConfig } from '../components/GrTable/config'\nimport { grTabPanelsConfig } from '../components/GrTabPanels/config'\nimport { grTabsConfig } from '../components/GrTabs/config'\nimport { grTextareaConfig } from '../components/GrTextarea/config'\nimport { grTimelineConfig } from '../components/GrTimeline/config'\nimport { grToasterConfig } from '../components/GrToaster/config'\nimport { grTooltipConfig } from '../components/GrTooltip/config'\nimport { grTreeConfig } from '../components/GrTree/config'\nimport { grTreeSelectConfig } from '../components/GrTreeSelect/config'\n// </granularity:components:imports>\n\n/** Идентификатор провайдера — совпадает с именем пакета. */\nexport const GRANULARITY_PROVIDER_ID = '@feugene/granularity'\n\n// Не заменять на `new URL('..', import.meta.url)`: Vite и rolldown распознают\n// этот литерал и подставляют `data:`-URL, после чего scan-директории пустеют.\nconst packageBaseUrl = resolvePackageBaseUrl(import.meta.url)\n\n/** Встроенные темы пакета. Единственный источник правды о списке тем. */\nexport const granularityThemeNames = ['light', 'dark'] as const\nexport type GranularityThemeName = (typeof granularityThemeNames)[number]\n\n/** Темы, активные по умолчанию, если окружение не переопределяет выбор. */\nexport const granularityDefaultThemes: readonly GranularityThemeName[] = ['light']\n\nconst theme = {\n baseCssUrl: new URL('../styles/base.css', import.meta.url).href,\n tokensCssUrl: new URL('../styles/tokens.css', import.meta.url).href,\n themes: {\n light: new URL('../styles/themes/light.css', import.meta.url).href,\n dark: new URL('../styles/themes/dark.css', import.meta.url).href,\n },\n defaultThemes: granularityDefaultThemes,\n} as const\n\n/**\n * Реестр публичных компонентов. Ключи совпадают с subpath-экспортом\n * `@feugene/granularity/components/<Name>`.\n */\nexport const granularityComponentConfigs = {\n // <granularity:components:registry> — блок генерируется `yarn generate:registry`\n GrAlert: grAlertConfig,\n GrAutocomplete: grAutocompleteConfig,\n GrAvatar: grAvatarConfig,\n GrBadge: grBadgeConfig,\n GrBadgeWrap: grBadgeWrapConfig,\n GrBottomNav: grBottomNavConfig,\n GrBreadcrumbs: grBreadcrumbsConfig,\n GrButton: grButtonConfig,\n GrButtonGroup: grButtonGroupConfig,\n GrCard: grCardConfig,\n GrCheckbox: grCheckboxConfig,\n GrCheckboxGroup: grCheckboxGroupConfig,\n GrCollapse: grCollapseConfig,\n GrColorPicker: grColorPickerConfig,\n GrCommandPalette: grCommandPaletteConfig,\n GrConfigProvider: grConfigProviderConfig,\n GrConfirmDialog: grConfirmDialogConfig,\n GrDataTable: grDataTableConfig,\n GrDialog: grDialogConfig,\n GrDialogService: grDialogServiceConfig,\n GrDivider: grDividerConfig,\n GrDrawer: grDrawerConfig,\n GrDropdown: grDropdownConfig,\n GrDropdownMenu: grDropdownMenuConfig,\n GrEmptyState: grEmptyStateConfig,\n GrFileUpload: grFileUploadConfig,\n GrForm: grFormConfig,\n GrFormField: grFormFieldConfig,\n GrFormFile: grFormFileConfig,\n GrFormSection: grFormSectionConfig,\n GrIcon: grIconConfig,\n GrImageViewer: grImageViewerConfig,\n GrInput: grInputConfig,\n GrInputTag: grInputTagConfig,\n GrKbd: grKbdConfig,\n GrLink: grLinkConfig,\n GrList: grListConfig,\n GrLoading: grLoadingConfig,\n GrModal: grModalConfig,\n GrNavbar: grNavbarConfig,\n GrNumberInput: grNumberInputConfig,\n GrPagination: grPaginationConfig,\n GrPopover: grPopoverConfig,\n GrProgressBar: grProgressBarConfig,\n GrProgressCircle: grProgressCircleConfig,\n GrPromptDialog: grPromptDialogConfig,\n GrRadio: grRadioConfig,\n GrRadioGroup: grRadioGroupConfig,\n GrRating: grRatingConfig,\n GrResponseErrorBanner: grResponseErrorBannerConfig,\n GrSegmented: grSegmentedConfig,\n GrSelect: grSelectConfig,\n GrSidebar: grSidebarConfig,\n GrSkeleton: grSkeletonConfig,\n GrSlider: grSliderConfig,\n GrSortableList: grSortableListConfig,\n GrSplitter: grSplitterConfig,\n GrStatistic: grStatisticConfig,\n GrSwitch: grSwitchConfig,\n GrTable: grTableConfig,\n GrTabPanels: grTabPanelsConfig,\n GrTabs: grTabsConfig,\n GrTextarea: grTextareaConfig,\n GrTimeline: grTimelineConfig,\n GrToaster: grToasterConfig,\n GrTooltip: grTooltipConfig,\n GrTree: grTreeConfig,\n GrTreeSelect: grTreeSelectConfig,\n // </granularity:components:registry>\n}\n\nexport type GranularityComponentName = keyof typeof granularityComponentConfigs\n\n/** Базовый набор компонентов в порядке реестра. */\nconst baseComponents: readonly GranularComponentDescriptor[] = Object.values(\n granularityComponentConfigs,\n)\n\n/**\n * Собирает granular-provider пакета.\n *\n * `overrides` — точка расширения для потребителя: дескриптор с именем из\n * базового реестра заменяет его, остальные дописываются в конец.\n */\nexport function createGranularityProvider(\n overrides: readonly GranularComponentDescriptor[] = [],\n): GranularProvider {\n const overrideByName = new Map(\n overrides.map(component => [component.name, component]),\n )\n const components: GranularComponentDescriptor[] = [\n ...baseComponents.map(component => overrideByName.get(component.name) ?? component),\n ...overrides.filter(component => !baseComponents.some(base => base.name === component.name)),\n ]\n\n return defineGranularProvider({\n id: GRANULARITY_PROVIDER_ID,\n contractVersion: 1,\n packageBaseUrl,\n components,\n theme,\n })\n}\n","import { createGranularityProvider } from './shared'\n\nexport * from './shared'\n\nexport const granularityProvider = createGranularityProvider()\n\nexport default granularityProvider\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,IAAa,iBAAiB,wBAAwB,OAAO,KAAK,KAAK;CACrE,MAAM;CACN,cAAc,CAAC,YAAY,SAAS;CACpC,UAAU;AACZ,CAAC;;;ACND,IAAa,8BAA8B,wBAAwB,OAAO,KAAK,KAAK;CAClF,MAAM;CACN,cAAc,CAAC,WAAW,UAAU;AACtC,CAAC;;;;ACkFD,IAAa,0BAA0B;AAIvC,IAAM,iBAAiB,sBAAsB,OAAO,KAAK,GAAG;;AAG5D,IAAa,wBAAwB,CAAC,SAAS,MAAM;;AAIrD,IAAa,2BAA4D,CAAC,OAAO;AAEjF,IAAM,QAAQ;CACZ,YAAY,IAAA,IAAA,q5KAAA,KAAA,OAAA,KAAA,GAAA,CAA8C,CAAC;CAC3D,cAAc,IAAA,IAAA,ykXAAA,KAAA,OAAA,KAAA,GAAA,CAAgD,CAAC;CAC/D,QAAQ;EACN,OAAO,IAAA,IAAA,qjYAAA,KAAA,OAAA,KAAA,GAAA,CAAsD,CAAC;EAC9D,MAAM,IAAA,IAAA,yxSAAA,KAAA,OAAA,KAAA,GAAA,CAAqD,CAAC;CAC9D;CACA,eAAe;AACjB;;;;;AAMA,IAAa,8BAA8B;CAEzC,SAAS;CACT,gBAAgB;CAChB,UAAU;CACV,SAAS;CACT,aAAa;CACb,aAAa;CACb,eAAe;CACf,UAAU;CACV,eAAe;CACf,QAAQ;CACR,YAAY;CACZ,iBAAiB;CACjB,YAAY;CACZ,eAAe;CACf,kBAAkB;CAClB,kBAAkB;CAClB,iBAAiB;CACjB,aAAa;CACb,UAAU;CACV,iBAAiB;CACjB,WAAW;CACX,UAAU;CACV,YAAY;CACZ,gBAAgB;CAChB,cAAc;CACd,cAAc;CACd,QAAQ;CACR,aAAa;CACb,YAAY;CACZ,eAAe;CACf,QAAQ;CACR,eAAe;CACf,SAAS;CACT,YAAY;CACZ,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,WAAW;CACX,SAAS;CACT,UAAU;CACV,eAAe;CACf,cAAc;CACd,WAAW;CACX,eAAe;CACf,kBAAkB;CAClB,gBAAgB;CAChB,SAAS;CACT,cAAc;CACd,UAAU;CACV,uBAAuB;CACvB,aAAa;CACb,UAAU;CACV,WAAW;CACX,YAAY;CACZ,UAAU;CACV,gBAAgB;CAChB,YAAY;CACZ,aAAa;CACb,UAAU;CACV,SAAS;CACT,aAAa;CACb,QAAQ;CACR,YAAY;CACZ,YAAY;CACZ,WAAW;CACX,WAAW;CACX,QAAQ;CACR,cAAc;AAEhB;;AAKA,IAAM,iBAAyD,OAAO,OACpE,2BACF;;;;;;;AAQA,SAAgB,0BACd,YAAoD,CAAC,GACnC;CAClB,MAAM,iBAAiB,IAAI,IACzB,UAAU,KAAI,cAAa,CAAC,UAAU,MAAM,SAAS,CAAC,CACxD;CAMA,OAAO,uBAAuB;EAC5B,IAAI;EACJ,iBAAiB;EACjB;EACA,aARA,GAAG,eAAe,KAAI,cAAa,eAAe,IAAI,UAAU,IAAI,KAAK,SAAS,GAClF,GAAG,UAAU,QAAO,cAAa,CAAC,eAAe,MAAK,SAAQ,KAAK,SAAS,UAAU,IAAI,CAAC,CAO3F;EACA;CACF,CAAC;AACH;;;ACtNA,IAAa,sBAAsB,0BAA0B"}
1
+ {"version":3,"file":"granular-provider-CZYm70Pm.js","names":[],"sources":["../../src/components/GrDialog/config.ts","../../src/components/GrResponseErrorBanner/config.ts","../../src/granular-provider/shared.ts","../../src/granular-provider/index.ts"],"sourcesContent":["import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grDialogSafelist } from './safelist'\n\nexport const grDialogConfig = defineGranularComponent(import.meta.url, {\n name: 'GrDialog',\n dependencies: ['GrButton', 'GrModal'],\n safelist: grDialogSafelist,\n})\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nexport const grResponseErrorBannerConfig = defineGranularComponent(import.meta.url, {\n name: 'GrResponseErrorBanner',\n dependencies: ['GrAlert', 'GrButton'],\n})\n","// `id`, `theme.*`, `packageBaseUrl` и реестр компонентов провайдера.\n//\n// Все `new URL('../styles/...', import.meta.url)` обязаны лежать именно здесь:\n// `shared.ts` в одной директории с `index.ts` / `node.ts`, поэтому\n// относительные пути совпадают. Для браузера безопасно — бандлеры\n// транслируют такие литералы в статические asset-URL.\n//\n// `apps/showcase/scripts/generate-component-api.mjs` читает список компонентов\n// из `Object.keys(granularityComponentConfigs)` через vite SSR.\nimport {\n defineGranularProvider,\n type GranularComponentDescriptor,\n type GranularProvider,\n resolvePackageBaseUrl,\n} from '@feugene/unocss-preset-granular/contract'\n// <granularity:components:imports> — блок генерируется `yarn generate:registry`\nimport { grAlertConfig } from '../components/GrAlert/config'\nimport { grAutocompleteConfig } from '../components/GrAutocomplete/config'\nimport { grAvatarConfig } from '../components/GrAvatar/config'\nimport { grBadgeConfig } from '../components/GrBadge/config'\nimport { grBadgeWrapConfig } from '../components/GrBadgeWrap/config'\nimport { grBottomNavConfig } from '../components/GrBottomNav/config'\nimport { grBreadcrumbsConfig } from '../components/GrBreadcrumbs/config'\nimport { grButtonConfig } from '../components/GrButton/config'\nimport { grButtonGroupConfig } from '../components/GrButtonGroup/config'\nimport { grCardConfig } from '../components/GrCard/config'\nimport { grCheckboxConfig } from '../components/GrCheckbox/config'\nimport { grCheckboxGroupConfig } from '../components/GrCheckboxGroup/config'\nimport { grCollapseConfig } from '../components/GrCollapse/config'\nimport { grColorPickerConfig } from '../components/GrColorPicker/config'\nimport { grCommandPaletteConfig } from '../components/GrCommandPalette/config'\nimport { grConfigProviderConfig } from '../components/GrConfigProvider/config'\nimport { grConfirmDialogConfig } from '../components/GrConfirmDialog/config'\nimport { grDataTableConfig } from '../components/GrDataTable/config'\nimport { grDialogConfig } from '../components/GrDialog/config'\nimport { grDialogServiceConfig } from '../components/GrDialogService/config'\nimport { grDividerConfig } from '../components/GrDivider/config'\nimport { grDrawerConfig } from '../components/GrDrawer/config'\nimport { grDropdownConfig } from '../components/GrDropdown/config'\nimport { grDropdownMenuConfig } from '../components/GrDropdownMenu/config'\nimport { grEmptyStateConfig } from '../components/GrEmptyState/config'\nimport { grFileUploadConfig } from '../components/GrFileUpload/config'\nimport { grFormConfig } from '../components/GrForm/config'\nimport { grFormFieldConfig } from '../components/GrFormField/config'\nimport { grFormFileConfig } from '../components/GrFormFile/config'\nimport { grFormSectionConfig } from '../components/GrFormSection/config'\nimport { grIconConfig } from '../components/GrIcon/config'\nimport { grImageViewerConfig } from '../components/GrImageViewer/config'\nimport { grInputConfig } from '../components/GrInput/config'\nimport { grInputTagConfig } from '../components/GrInputTag/config'\nimport { grKbdConfig } from '../components/GrKbd/config'\nimport { grLinkConfig } from '../components/GrLink/config'\nimport { grListConfig } from '../components/GrList/config'\nimport { grLoadingConfig } from '../components/GrLoading/config'\nimport { grModalConfig } from '../components/GrModal/config'\nimport { grNavbarConfig } from '../components/GrNavbar/config'\nimport { grNumberInputConfig } from '../components/GrNumberInput/config'\nimport { grPaginationConfig } from '../components/GrPagination/config'\nimport { grPopoverConfig } from '../components/GrPopover/config'\nimport { grProgressBarConfig } from '../components/GrProgressBar/config'\nimport { grProgressCircleConfig } from '../components/GrProgressCircle/config'\nimport { grPromptDialogConfig } from '../components/GrPromptDialog/config'\nimport { grRadioConfig } from '../components/GrRadio/config'\nimport { grRadioGroupConfig } from '../components/GrRadioGroup/config'\nimport { grRatingConfig } from '../components/GrRating/config'\nimport { grResponseErrorBannerConfig } from '../components/GrResponseErrorBanner/config'\nimport { grSegmentedConfig } from '../components/GrSegmented/config'\nimport { grSelectConfig } from '../components/GrSelect/config'\nimport { grSidebarConfig } from '../components/GrSidebar/config'\nimport { grSkeletonConfig } from '../components/GrSkeleton/config'\nimport { grSliderConfig } from '../components/GrSlider/config'\nimport { grSortableListConfig } from '../components/GrSortableList/config'\nimport { grSplitterConfig } from '../components/GrSplitter/config'\nimport { grStatisticConfig } from '../components/GrStatistic/config'\nimport { grSwitchConfig } from '../components/GrSwitch/config'\nimport { grTableConfig } from '../components/GrTable/config'\nimport { grTabPanelsConfig } from '../components/GrTabPanels/config'\nimport { grTabsConfig } from '../components/GrTabs/config'\nimport { grTextareaConfig } from '../components/GrTextarea/config'\nimport { grTimelineConfig } from '../components/GrTimeline/config'\nimport { grToasterConfig } from '../components/GrToaster/config'\nimport { grTooltipConfig } from '../components/GrTooltip/config'\nimport { grTreeConfig } from '../components/GrTree/config'\nimport { grTreeSelectConfig } from '../components/GrTreeSelect/config'\n// </granularity:components:imports>\n\n/** Идентификатор провайдера — совпадает с именем пакета. */\nexport const GRANULARITY_PROVIDER_ID = '@feugene/granularity'\n\n// Не заменять на `new URL('..', import.meta.url)`: Vite и rolldown распознают\n// этот литерал и подставляют `data:`-URL, после чего scan-директории пустеют.\nconst packageBaseUrl = resolvePackageBaseUrl(import.meta.url)\n\n/** Встроенные темы пакета. Единственный источник правды о списке тем. */\nexport const granularityThemeNames = ['light', 'dark'] as const\nexport type GranularityThemeName = (typeof granularityThemeNames)[number]\n\n/** Темы, активные по умолчанию, если окружение не переопределяет выбор. */\nexport const granularityDefaultThemes: readonly GranularityThemeName[] = ['light']\n\nconst theme = {\n baseCssUrl: new URL('../styles/base.css', import.meta.url).href,\n tokensCssUrl: new URL('../styles/tokens.css', import.meta.url).href,\n themes: {\n light: new URL('../styles/themes/light.css', import.meta.url).href,\n dark: new URL('../styles/themes/dark.css', import.meta.url).href,\n },\n defaultThemes: granularityDefaultThemes,\n} as const\n\n/**\n * Реестр публичных компонентов. Ключи совпадают с subpath-экспортом\n * `@feugene/granularity/components/<Name>`.\n */\nexport const granularityComponentConfigs = {\n // <granularity:components:registry> — блок генерируется `yarn generate:registry`\n GrAlert: grAlertConfig,\n GrAutocomplete: grAutocompleteConfig,\n GrAvatar: grAvatarConfig,\n GrBadge: grBadgeConfig,\n GrBadgeWrap: grBadgeWrapConfig,\n GrBottomNav: grBottomNavConfig,\n GrBreadcrumbs: grBreadcrumbsConfig,\n GrButton: grButtonConfig,\n GrButtonGroup: grButtonGroupConfig,\n GrCard: grCardConfig,\n GrCheckbox: grCheckboxConfig,\n GrCheckboxGroup: grCheckboxGroupConfig,\n GrCollapse: grCollapseConfig,\n GrColorPicker: grColorPickerConfig,\n GrCommandPalette: grCommandPaletteConfig,\n GrConfigProvider: grConfigProviderConfig,\n GrConfirmDialog: grConfirmDialogConfig,\n GrDataTable: grDataTableConfig,\n GrDialog: grDialogConfig,\n GrDialogService: grDialogServiceConfig,\n GrDivider: grDividerConfig,\n GrDrawer: grDrawerConfig,\n GrDropdown: grDropdownConfig,\n GrDropdownMenu: grDropdownMenuConfig,\n GrEmptyState: grEmptyStateConfig,\n GrFileUpload: grFileUploadConfig,\n GrForm: grFormConfig,\n GrFormField: grFormFieldConfig,\n GrFormFile: grFormFileConfig,\n GrFormSection: grFormSectionConfig,\n GrIcon: grIconConfig,\n GrImageViewer: grImageViewerConfig,\n GrInput: grInputConfig,\n GrInputTag: grInputTagConfig,\n GrKbd: grKbdConfig,\n GrLink: grLinkConfig,\n GrList: grListConfig,\n GrLoading: grLoadingConfig,\n GrModal: grModalConfig,\n GrNavbar: grNavbarConfig,\n GrNumberInput: grNumberInputConfig,\n GrPagination: grPaginationConfig,\n GrPopover: grPopoverConfig,\n GrProgressBar: grProgressBarConfig,\n GrProgressCircle: grProgressCircleConfig,\n GrPromptDialog: grPromptDialogConfig,\n GrRadio: grRadioConfig,\n GrRadioGroup: grRadioGroupConfig,\n GrRating: grRatingConfig,\n GrResponseErrorBanner: grResponseErrorBannerConfig,\n GrSegmented: grSegmentedConfig,\n GrSelect: grSelectConfig,\n GrSidebar: grSidebarConfig,\n GrSkeleton: grSkeletonConfig,\n GrSlider: grSliderConfig,\n GrSortableList: grSortableListConfig,\n GrSplitter: grSplitterConfig,\n GrStatistic: grStatisticConfig,\n GrSwitch: grSwitchConfig,\n GrTable: grTableConfig,\n GrTabPanels: grTabPanelsConfig,\n GrTabs: grTabsConfig,\n GrTextarea: grTextareaConfig,\n GrTimeline: grTimelineConfig,\n GrToaster: grToasterConfig,\n GrTooltip: grTooltipConfig,\n GrTree: grTreeConfig,\n GrTreeSelect: grTreeSelectConfig,\n // </granularity:components:registry>\n}\n\nexport type GranularityComponentName = keyof typeof granularityComponentConfigs\n\n/** Базовый набор компонентов в порядке реестра. */\nconst baseComponents: readonly GranularComponentDescriptor[] = Object.values(\n granularityComponentConfigs,\n)\n\n/**\n * Собирает granular-provider пакета.\n *\n * `overrides` — точка расширения для потребителя: дескриптор с именем из\n * базового реестра заменяет его, остальные дописываются в конец.\n */\nexport function createGranularityProvider(\n overrides: readonly GranularComponentDescriptor[] = [],\n): GranularProvider {\n const overrideByName = new Map(\n overrides.map(component => [component.name, component]),\n )\n const components: GranularComponentDescriptor[] = [\n ...baseComponents.map(component => overrideByName.get(component.name) ?? component),\n ...overrides.filter(component => !baseComponents.some(base => base.name === component.name)),\n ]\n\n return defineGranularProvider({\n id: GRANULARITY_PROVIDER_ID,\n contractVersion: 1,\n packageBaseUrl,\n components,\n theme,\n })\n}\n","import { createGranularityProvider } from './shared'\n\nexport * from './shared'\n\nexport const granularityProvider = createGranularityProvider()\n\nexport default granularityProvider\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,IAAa,iBAAiB,wBAAwB,OAAO,KAAK,KAAK;CACrE,MAAM;CACN,cAAc,CAAC,YAAY,SAAS;CACpC,UAAU;AACZ,CAAC;;;ACND,IAAa,8BAA8B,wBAAwB,OAAO,KAAK,KAAK;CAClF,MAAM;CACN,cAAc,CAAC,WAAW,UAAU;AACtC,CAAC;;;;ACkFD,IAAa,0BAA0B;AAIvC,IAAM,iBAAiB,sBAAsB,OAAO,KAAK,GAAG;;AAG5D,IAAa,wBAAwB,CAAC,SAAS,MAAM;;AAIrD,IAAa,2BAA4D,CAAC,OAAO;AAEjF,IAAM,QAAQ;CACZ,YAAY,IAAA,IAAA,q5KAAA,KAAA,OAAA,KAAA,GAAA,CAA8C,CAAC;CAC3D,cAAc,IAAA,IAAA,ykXAAA,KAAA,OAAA,KAAA,GAAA,CAAgD,CAAC;CAC/D,QAAQ;EACN,OAAO,IAAA,IAAA,qjYAAA,KAAA,OAAA,KAAA,GAAA,CAAsD,CAAC;EAC9D,MAAM,IAAA,IAAA,yxSAAA,KAAA,OAAA,KAAA,GAAA,CAAqD,CAAC;CAC9D;CACA,eAAe;AACjB;;;;;AAMA,IAAa,8BAA8B;CAEzC,SAAS;CACT,gBAAgB;CAChB,UAAU;CACV,SAAS;CACT,aAAa;CACb,aAAa;CACb,eAAe;CACf,UAAU;CACV,eAAe;CACf,QAAQ;CACR,YAAY;CACZ,iBAAiB;CACjB,YAAY;CACZ,eAAe;CACf,kBAAkB;CAClB,kBAAkB;CAClB,iBAAiB;CACjB,aAAa;CACb,UAAU;CACV,iBAAiB;CACjB,WAAW;CACX,UAAU;CACV,YAAY;CACZ,gBAAgB;CAChB,cAAc;CACd,cAAc;CACd,QAAQ;CACR,aAAa;CACb,YAAY;CACZ,eAAe;CACf,QAAQ;CACR,eAAe;CACf,SAAS;CACT,YAAY;CACZ,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,WAAW;CACX,SAAS;CACT,UAAU;CACV,eAAe;CACf,cAAc;CACd,WAAW;CACX,eAAe;CACf,kBAAkB;CAClB,gBAAgB;CAChB,SAAS;CACT,cAAc;CACd,UAAU;CACV,uBAAuB;CACvB,aAAa;CACb,UAAU;CACV,WAAW;CACX,YAAY;CACZ,UAAU;CACV,gBAAgB;CAChB,YAAY;CACZ,aAAa;CACb,UAAU;CACV,SAAS;CACT,aAAa;CACb,QAAQ;CACR,YAAY;CACZ,YAAY;CACZ,WAAW;CACX,WAAW;CACX,QAAQ;CACR,cAAc;AAEhB;;AAKA,IAAM,iBAAyD,OAAO,OACpE,2BACF;;;;;;;AAQA,SAAgB,0BACd,YAAoD,CAAC,GACnC;CAClB,MAAM,iBAAiB,IAAI,IACzB,UAAU,KAAI,cAAa,CAAC,UAAU,MAAM,SAAS,CAAC,CACxD;CAMA,OAAO,uBAAuB;EAC5B,IAAI;EACJ,iBAAiB;EACjB;EACA,aARA,GAAG,eAAe,KAAI,cAAa,eAAe,IAAI,UAAU,IAAI,KAAK,SAAS,GAClF,GAAG,UAAU,QAAO,cAAa,CAAC,eAAe,MAAK,SAAQ,KAAK,SAAS,UAAU,IAAI,CAAC,CAO3F;EACA;CACF,CAAC;AACH;;;ACtNA,IAAa,sBAAsB,0BAA0B"}
@@ -1,5 +1,5 @@
1
- import { c as useGrThemeAttrs } from "./context-BSYR7RZs.js";
2
- import { t as usePortalTarget } from "./usePortalTarget-Cn-Wiz5d.js";
1
+ import { s as useGrThemeAttrs } from "./context-CTbuwcYs.js";
2
+ import { t as usePortalTarget } from "./usePortalTarget-C0p-mhaM.js";
3
3
  import { n as markInert, t as inertableOutside } from "./inert-DIHCCn_1.js";
4
4
  import { useOverlayLayer } from "../composables/useOverlayLayer.js";
5
5
  import { useFocusTrap } from "../composables/useFocusTrap.js";
@@ -1 +1 @@
1
- {"version":3,"file":"useModalOverlay-DrQVYwwA.js","names":[],"sources":["../../src/composables/internal/useInertOthers.ts","../../src/composables/internal/useOverlayPresence.ts","../../src/composables/internal/useScrollLock.ts","../../src/composables/internal/useModalOverlay.ts"],"sourcesContent":["import type { Ref } from 'vue'\nimport { onScopeDispose, watch } from 'vue'\n\nimport { inertableOutside, markInert } from './inert'\n\n/**\n * Пока слой активен, всё вне его ветки помечено `inert`: от корня оверлея вверх\n * до `<body>`, на каждом уровне — соседи.\n *\n * Это вторая половина модальности: `z-index` перекрывает страницу глазами,\n * `inert` — клавиатурой и скринридером.\n */\nexport function useInertOthers(root: Ref<HTMLElement | null>, active: () => boolean): void {\n let release: (() => void) | undefined\n\n function apply(): void {\n release?.()\n release = markInert(inertableOutside(root.value))\n }\n\n function clear(): void {\n release?.()\n release = undefined\n }\n\n watch(\n () => Boolean(active()) && Boolean(root.value),\n (isActive) => {\n if (isActive) apply()\n else clear()\n },\n { immediate: true, flush: 'post' },\n )\n\n onScopeDispose(clear)\n}\n","import type { Ref } from 'vue'\nimport { ref, watch } from 'vue'\n\nexport interface OverlayPresence {\n /** Смонтировано ли поддерево слоя: держится до конца leave-анимации. */\n mounted: Ref<boolean>\n /** Показан ли слой: этим переключаются `<Transition>` внутри. */\n visible: Ref<boolean>\n /** Вызывается из `@after-leave` панели. */\n onPanelAfterLeave: () => void\n}\n\n/**\n * Присутствие оверлея в DOM отдельно от его видимости.\n *\n * Штатный `<Transition>` анимирует свой элемент, но не координирует соседей:\n * убери обёртку по `v-if` — и подложка с панелью исчезнут мгновенно, без\n * leave-анимации. Поэтому присутствие поддерева и видимость слоя — два разных\n * флага: первый снимается только по концу leave-анимации панели.\n *\n * Видимость включается **в том же такте**, что и монтирование: содержимое окна\n * обязано появляться в DOM сразу после открытия — на этом стоит и код\n * потребителя, и внутренние компоненты, которые ищут в панели свои элементы.\n * Enter-анимацию это не отменяет: `<Transition appear>` проигрывает её и на\n * первом рендере ребёнка.\n */\nexport function useOverlayPresence(open: Ref<boolean>): OverlayPresence {\n const mounted = ref(open.value)\n const visible = ref(open.value)\n\n watch(open, (isOpen) => {\n if (isOpen) mounted.value = true\n visible.value = isOpen\n })\n\n function onPanelAfterLeave(): void {\n // Пока панель уезжала, слой могли открыть заново — тогда размонтировать\n // нечего и незачем.\n if (!open.value) mounted.value = false\n }\n\n return { mounted, visible, onPanelAfterLeave }\n}\n","/**\n * useScrollLock — общий **reference-counted** lock скролла `<body>` для оверлеев\n * (GrModal, GrDrawer, GrImageViewer).\n *\n * Зачем счётчик: состояние `<body>` принадлежит не оверлею, а их совокупности.\n * Держи каждый свой `savedBodyOverflow`, и закрытие A при ещё открытой B вернуло\n * бы странице прокрутку под открытым окном — закрывают не всегда в порядке\n * открытия. Поэтому состояние сохраняется один раз (переход счётчика 0→1) и\n * восстанавливается только когда закрыт последний оверлей (1→0).\n *\n * Плюс компенсация ширины скроллбара: при `overflow: hidden` скроллбар исчезает и\n * контент дёргается вправо — добавляем `padding-right` на его ширину.\n *\n * Отдельная ветка — iOS Safari: там `overflow: hidden` фон не держит, страница\n * продолжает «резинить» под открытым окном. Лечится тем же, чем лечил\n * HeadlessUI (`handleIOSLocking`): гасим `touchmove` вне скроллящихся областей\n * оверлея и возвращаем позицию прокрутки после снятия лока.\n */\n\ninterface SavedBodyStyle {\n overflow: string\n paddingRight: string\n overscrollBehavior: string\n}\n\nlet lockCount = 0\nlet saved: SavedBodyStyle | null = null\nlet savedScrollY = 0\nlet releaseTouchGuard: (() => void) | null = null\n\n/**\n * iOS определяем по платформе, а не по ширине экрана: лечение специфично для\n * движка, а не для размера. `maxTouchPoints` отличает iPadOS, который со времён\n * 13-й версии представляется десктопным Mac.\n */\nfunction isIOS(): boolean {\n if (typeof navigator === 'undefined') return false\n return /iP(?:hone|ad|od)/.test(navigator.platform)\n || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1)\n}\n\n/** Прокручиваемая область оверлея — единственное, чему `touchmove` разрешён. */\nfunction isScrollableOverlayArea(target: EventTarget | null): boolean {\n if (!(target instanceof Element)) return false\n\n for (let node: Element | null = target; node; node = node.parentElement) {\n if (!(node instanceof HTMLElement)) continue\n if (node.hasAttribute('data-gr-overlay-root')) return true\n }\n\n return false\n}\n\nfunction applyTouchGuard(): void {\n if (!isIOS()) return\n\n const onTouchMove = (event: TouchEvent): void => {\n // Внутри оверлея скролл законен (длинное окно, лента изображений), а всё\n // остальное — это и есть фон, который лок обязан держать.\n if (isScrollableOverlayArea(event.target)) return\n if (event.cancelable) event.preventDefault()\n }\n\n document.addEventListener('touchmove', onTouchMove, { passive: false })\n releaseTouchGuard = () => document.removeEventListener('touchmove', onTouchMove)\n}\n\nfunction getScrollbarWidth(): number {\n return window.innerWidth - document.documentElement.clientWidth\n}\n\nfunction applyLock(): void {\n const body = document.body\n saved = {\n overflow: body.style.overflow,\n paddingRight: body.style.paddingRight,\n overscrollBehavior: body.style.overscrollBehavior,\n }\n savedScrollY = window.scrollY\n\n // Ширину скроллбара считаем ДО `overflow: hidden` (после — `clientWidth` меняется).\n const scrollbarWidth = getScrollbarWidth()\n\n body.style.overflow = 'hidden'\n // Прокрутка, «доехавшая» до края внутри окна, не должна продолжаться фоном.\n body.style.overscrollBehavior = 'contain'\n if (scrollbarWidth > 0) {\n const currentPadding = Number.parseFloat(getComputedStyle(body).paddingRight) || 0\n body.style.paddingRight = `${currentPadding + scrollbarWidth}px`\n }\n\n applyTouchGuard()\n}\n\nfunction releaseLock(): void {\n releaseTouchGuard?.()\n releaseTouchGuard = null\n\n if (!saved) return\n document.body.style.overflow = saved.overflow\n document.body.style.paddingRight = saved.paddingRight\n document.body.style.overscrollBehavior = saved.overscrollBehavior\n saved = null\n\n // iOS сдвигает страницу, пока фон заблокирован; возвращаем её на место.\n if (isIOS() && window.scrollY !== savedScrollY) window.scrollTo(0, savedScrollY)\n}\n\n/**\n * Возвращает пару `lock`/`unlock`, идемпотентную **в пределах одного инстанса**\n * (повторный `lock()` без `unlock()` не увеличивает глобальный счётчик дважды).\n * Глобальный счётчик разделяется всеми оверлеями.\n */\nexport function useScrollLock() {\n const isClient = typeof window !== 'undefined'\n let held = false\n\n function lock(): void {\n if (!isClient || held) return\n held = true\n lockCount += 1\n if (lockCount === 1) applyLock()\n }\n\n function unlock(): void {\n if (!isClient || !held) return\n held = false\n lockCount = Math.max(0, lockCount - 1)\n if (lockCount === 0) releaseLock()\n }\n\n return { lock, unlock }\n}\n\n/** Тестовая/служебная очистка глобального состояния. */\nexport function resetScrollLock(): void {\n lockCount = 0\n if (typeof document !== 'undefined') releaseLock()\n saved = null\n}\n","import type { ComputedRef, Ref } from 'vue'\nimport { computed, onBeforeUnmount, ref, watch } from 'vue'\n\nimport { useGrThemeAttrs } from '../../components/GrConfigProvider/context'\nimport { useFocusTrap } from '../useFocusTrap'\nimport { useOverlayLayer } from '../useOverlayLayer'\nimport { usePortalTarget } from '../usePortalTarget'\nimport { useInertOthers } from './useInertOthers'\nimport { useOverlayPresence } from './useOverlayPresence'\nimport { useScrollLock } from './useScrollLock'\n\n/**\n * Модальный слой целиком: одна сборка на весь пакет.\n *\n * Модальность собиралась вручную в трёх компонентах (`GrModal`, `GrDrawer`,\n * `GrImageViewer`) из шести примитивов, и сборка повторялась дословно. Дело не\n * в объёме: в этой проводке сидят инварианты, каждый из которых при пропуске\n * даёт тихий баг доступности, а не заметную поломку. Здесь они собраны в одном\n * месте — забыть часть модального слоя больше нельзя.\n *\n * Что именно неочевидно:\n *\n * - **`restoreFocus: false` у ловушки.** Возврат фокуса принадлежит стеку\n * слоёв: у него правило строже — вернуть, только если на момент закрытия\n * фокус ещё был внутри слоя. Две системы возврата подрались бы за фокус.\n * - **`containers: layer.rootsAbove`.** Панель селекта, открытого ВНУТРИ окна,\n * телепортирована в `body` и лежит вне поддерева панели. Без этого списка\n * ловушка считала бы её «снаружи» и отбирала фокус.\n * - **Ловушка и `inert` работают, только пока слой верхний.** Иначе нижнее\n * окно ворует фокус у открытого поверх него, а `inert` гасит собственную\n * панель вместе со страницей.\n * - **Клик по подложке считается только тот, что на ней и начался.** Иначе\n * выделение текста мышью или перетаскивание, отпущенное за пределами панели,\n * закрывает слой.\n *\n * Чего композабл НЕ делает: не рисует разметку. Корневой `div`, подложка и\n * панель у трёх компонентов различаются по существу (обёртки скролла у окна,\n * сквозные клики у немодальной панели, слои хрома у просмотрщика), а классами\n * общий модуль владеть не вправе — пресет гранулярности подмешивает safelist\n * только по директориям выбранных компонентов.\n */\nexport interface UseModalOverlayOptions {\n /**\n * Модальный ли слой: блокирует страницу, держит фокус, гасит нижние окна.\n * Геттером — там, где модальность включается пропом (`GrDrawer`).\n */\n modal?: boolean | (() => boolean)\n /** Закрывать ли по Esc. Геттер — проп компонента реактивен. */\n closeOnEscape?: () => boolean\n /** Закрывать ли по клику в подложку; читается обработчиками `backdrop`. */\n closeOnBackdrop?: () => boolean\n /** Панель слоя: контейнер ловушки фокуса и её запасной приёмник. */\n panel: Ref<HTMLElement | null>\n /**\n * Свой корень слоя. У якорного оверлея (`GrPopover`) корень и панель — один\n * элемент: в портал уезжает сама панель, отдельной обёртки нет. Не задан —\n * композабл заводит корень сам, как у центрированных окон.\n */\n root?: Ref<HTMLElement | null>\n /**\n * Точечное переопределение точки монтирования (проп `teleportTo`). По\n * умолчанию — общий портал оверлеев.\n */\n teleportTo?: () => string | HTMLElement | undefined\n /**\n * Кому отдать фокус при открытии. Не задан — первому фокусируемому внутри\n * панели (правило `useFocusTrap`): просмотрщику нужна именно кнопка тулбара,\n * а окну — сама панель, и оно передаёт её явно.\n */\n initialFocus?: () => HTMLElement | null | undefined\n /**\n * Блокировать ли скролл страницы. По умолчанию — пока слой открыт и модален:\n * немодальная панель существует ровно ради работы со страницей под ней.\n */\n lockScroll?: () => boolean\n}\n\nexport interface ModalOverlay {\n /** Корень слоя: цель `ref` в шаблоне, хозяин `inert` и корень для стека слоёв. */\n rootEl: Ref<HTMLElement | null>\n /** Смонтировано ли поддерево: держится до конца leave-анимации панели. */\n isMounted: Ref<boolean>\n /** Показан ли слой: этим переключаются `<Transition>` внутри. */\n isVisible: Ref<boolean>\n /** Верхний ли это слой сейчас. */\n isTopmost: Ref<boolean>\n /** Значение атрибута `inert` для корня: слой перестал быть верхним. */\n inertAttr: ComputedRef<true | undefined>\n portalTarget: ComputedRef<string | HTMLElement>\n teleportEnabled: ComputedRef<boolean>\n /** `data-theme` на телепортированный корень: в DOM он вне обёртки провайдера. */\n themeAttrs: ComputedRef<{ 'data-theme'?: string }>\n /** Для `@after-leave` панели. Компонент оборачивает, если ему нужен эмит `closed`. */\n onPanelAfterLeave: () => void\n /**\n * Обработчики подложки вместе с guard'ом «клик начался на ней». Имена — под\n * `v-on=\"backdrop\"`: объектный синтаксис ждёт имена событий, а не пропов.\n */\n backdrop: {\n mousedown: (event: MouseEvent) => void\n click: (event: MouseEvent) => void\n }\n}\n\nexport function useModalOverlay(\n open: Ref<boolean>,\n onDismiss: () => void,\n options: UseModalOverlayOptions,\n): ModalOverlay {\n const isModal = (): boolean =>\n typeof options.modal === 'function' ? options.modal() : options.modal ?? true\n\n const rootEl = options.root ?? ref<HTMLElement | null>(null)\n const isTopmost = ref(true)\n\n const inertAttr = computed(() => (open.value && isModal() && !isTopmost.value ? true : undefined))\n\n // Телепорт включается только ПОСЛЕ монтирования: иначе первый клиентский\n // рендер не совпадёт с серверным и сломается гидрация.\n const { target: portalTarget, enabled: teleportEnabled } = usePortalTarget(options.teleportTo)\n\n // Панель уезжает в `body`, то есть вне обёртки провайдера, и `data-theme` с\n // неё не наследуется. В дереве компонентов слой остаётся внутри — `inject`\n // доходит, и тему он ставит себе сам.\n const themeAttrs = useGrThemeAttrs()\n\n const { mounted: isMounted, visible: isVisible, onPanelAfterLeave } = useOverlayPresence(open)\n\n const layer = useOverlayLayer(open, onDismiss, {\n modal: isModal,\n closeOnEscape: options.closeOnEscape,\n onTopmostChange: (value) => { isTopmost.value = value },\n root: rootEl,\n })\n\n useFocusTrap(options.panel, {\n active: () => open.value && isModal() && isTopmost.value,\n initialFocus: options.initialFocus,\n fallbackFocus: () => options.panel.value,\n containers: layer.rootsAbove,\n restoreFocus: false,\n })\n\n useInertOthers(rootEl, () => open.value && isModal() && isTopmost.value)\n\n // Общий reference-counted lock: несколько открытых оверлеев снимают блокировку\n // независимо от порядка закрытия, ширина скроллбара компенсируется.\n const { lock, unlock } = useScrollLock()\n\n watch(\n () => options.lockScroll?.() ?? (open.value && isModal()),\n (locked) => {\n if (locked) lock()\n else unlock()\n },\n { immediate: true },\n )\n\n onBeforeUnmount(unlock)\n\n let pointerDownOnBackdrop = false\n\n return {\n rootEl,\n isMounted,\n isVisible,\n isTopmost,\n inertAttr,\n portalTarget,\n teleportEnabled,\n themeAttrs,\n onPanelAfterLeave,\n backdrop: {\n mousedown(event: MouseEvent): void {\n pointerDownOnBackdrop = event.target === event.currentTarget\n },\n click(event: MouseEvent): void {\n const startedHere = pointerDownOnBackdrop\n pointerDownOnBackdrop = false\n\n if (!startedHere || event.target !== event.currentTarget) return\n if (options.closeOnBackdrop?.() === false) return\n\n onDismiss()\n },\n },\n }\n}\n"],"mappings":";;;;;;;;;;;;;;AAYA,SAAgB,eAAe,MAA+B,QAA6B;CACzF,IAAI;CAEJ,SAAS,QAAc;EACrB,UAAU;EACV,UAAU,UAAU,iBAAiB,KAAK,KAAK,CAAC;CAClD;CAEA,SAAS,QAAc;EACrB,UAAU;EACV,UAAU,KAAA;CACZ;CAEA,YACQ,QAAQ,OAAO,CAAC,KAAK,QAAQ,KAAK,KAAK,IAC5C,aAAa;EACZ,IAAI,UAAU,MAAM;OACf,MAAM;CACb,GACA;EAAE,WAAW;EAAM,OAAO;CAAO,CACnC;CAEA,eAAe,KAAK;AACtB;;;;;;;;;;;;;;;;;ACTA,SAAgB,mBAAmB,MAAqC;CACtE,MAAM,UAAU,IAAI,KAAK,KAAK;CAC9B,MAAM,UAAU,IAAI,KAAK,KAAK;CAE9B,MAAM,OAAO,WAAW;EACtB,IAAI,QAAQ,QAAQ,QAAQ;EAC5B,QAAQ,QAAQ;CAClB,CAAC;CAED,SAAS,oBAA0B;EAGjC,IAAI,CAAC,KAAK,OAAO,QAAQ,QAAQ;CACnC;CAEA,OAAO;EAAE;EAAS;EAAS;CAAkB;AAC/C;;;ACjBA,IAAI,YAAY;AAChB,IAAI,QAA+B;AACnC,IAAI,eAAe;AACnB,IAAI,oBAAyC;;;;;;AAO7C,SAAS,QAAiB;CACxB,IAAI,OAAO,cAAc,aAAa,OAAO;CAC7C,OAAO,mBAAmB,KAAK,UAAU,QAAQ,KAC3C,UAAU,aAAa,cAAc,UAAU,iBAAiB;AACxE;;AAGA,SAAS,wBAAwB,QAAqC;CACpE,IAAI,EAAE,kBAAkB,UAAU,OAAO;CAEzC,KAAK,IAAI,OAAuB,QAAQ,MAAM,OAAO,KAAK,eAAe;EACvE,IAAI,EAAE,gBAAgB,cAAc;EACpC,IAAI,KAAK,aAAa,sBAAsB,GAAG,OAAO;CACxD;CAEA,OAAO;AACT;AAEA,SAAS,kBAAwB;CAC/B,IAAI,CAAC,MAAM,GAAG;CAEd,MAAM,eAAe,UAA4B;EAG/C,IAAI,wBAAwB,MAAM,MAAM,GAAG;EAC3C,IAAI,MAAM,YAAY,MAAM,eAAe;CAC7C;CAEA,SAAS,iBAAiB,aAAa,aAAa,EAAE,SAAS,MAAM,CAAC;CACtE,0BAA0B,SAAS,oBAAoB,aAAa,WAAW;AACjF;AAEA,SAAS,oBAA4B;CACnC,OAAO,OAAO,aAAa,SAAS,gBAAgB;AACtD;AAEA,SAAS,YAAkB;CACzB,MAAM,OAAO,SAAS;CACtB,QAAQ;EACN,UAAU,KAAK,MAAM;EACrB,cAAc,KAAK,MAAM;EACzB,oBAAoB,KAAK,MAAM;CACjC;CACA,eAAe,OAAO;CAGtB,MAAM,iBAAiB,kBAAkB;CAEzC,KAAK,MAAM,WAAW;CAEtB,KAAK,MAAM,qBAAqB;CAChC,IAAI,iBAAiB,GAAG;EACtB,MAAM,iBAAiB,OAAO,WAAW,iBAAiB,IAAI,CAAC,CAAC,YAAY,KAAK;EACjF,KAAK,MAAM,eAAe,GAAG,iBAAiB,eAAe;CAC/D;CAEA,gBAAgB;AAClB;AAEA,SAAS,cAAoB;CAC3B,oBAAoB;CACpB,oBAAoB;CAEpB,IAAI,CAAC,OAAO;CACZ,SAAS,KAAK,MAAM,WAAW,MAAM;CACrC,SAAS,KAAK,MAAM,eAAe,MAAM;CACzC,SAAS,KAAK,MAAM,qBAAqB,MAAM;CAC/C,QAAQ;CAGR,IAAI,MAAM,KAAK,OAAO,YAAY,cAAc,OAAO,SAAS,GAAG,YAAY;AACjF;;;;;;AAOA,SAAgB,gBAAgB;CAC9B,MAAM,WAAW,OAAO,WAAW;CACnC,IAAI,OAAO;CAEX,SAAS,OAAa;EACpB,IAAI,CAAC,YAAY,MAAM;EACvB,OAAO;EACP,aAAa;EACb,IAAI,cAAc,GAAG,UAAU;CACjC;CAEA,SAAS,SAAe;EACtB,IAAI,CAAC,YAAY,CAAC,MAAM;EACxB,OAAO;EACP,YAAY,KAAK,IAAI,GAAG,YAAY,CAAC;EACrC,IAAI,cAAc,GAAG,YAAY;CACnC;CAEA,OAAO;EAAE;EAAM;CAAO;AACxB;;;AC5BA,SAAgB,gBACd,MACA,WACA,SACc;CACd,MAAM,gBACJ,OAAO,QAAQ,UAAU,aAAa,QAAQ,MAAM,IAAI,QAAQ,SAAS;CAE3E,MAAM,SAAS,QAAQ,QAAQ,IAAwB,IAAI;CAC3D,MAAM,YAAY,IAAI,IAAI;CAE1B,MAAM,YAAY,eAAgB,KAAK,SAAS,QAAQ,KAAK,CAAC,UAAU,QAAQ,OAAO,KAAA,CAAU;CAIjG,MAAM,EAAE,QAAQ,cAAc,SAAS,oBAAoB,gBAAgB,QAAQ,UAAU;CAK7F,MAAM,aAAa,gBAAgB;CAEnC,MAAM,EAAE,SAAS,WAAW,SAAS,WAAW,sBAAsB,mBAAmB,IAAI;CAE7F,MAAM,QAAQ,gBAAgB,MAAM,WAAW;EAC7C,OAAO;EACP,eAAe,QAAQ;EACvB,kBAAkB,UAAU;GAAE,UAAU,QAAQ;EAAM;EACtD,MAAM;CACR,CAAC;CAED,aAAa,QAAQ,OAAO;EAC1B,cAAc,KAAK,SAAS,QAAQ,KAAK,UAAU;EACnD,cAAc,QAAQ;EACtB,qBAAqB,QAAQ,MAAM;EACnC,YAAY,MAAM;EAClB,cAAc;CAChB,CAAC;CAED,eAAe,cAAc,KAAK,SAAS,QAAQ,KAAK,UAAU,KAAK;CAIvE,MAAM,EAAE,MAAM,WAAW,cAAc;CAEvC,YACQ,QAAQ,aAAa,MAAM,KAAK,SAAS,QAAQ,KACtD,WAAW;EACV,IAAI,QAAQ,KAAK;OACZ,OAAO;CACd,GACA,EAAE,WAAW,KAAK,CACpB;CAEA,gBAAgB,MAAM;CAEtB,IAAI,wBAAwB;CAE5B,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,UAAU;GACR,UAAU,OAAyB;IACjC,wBAAwB,MAAM,WAAW,MAAM;GACjD;GACA,MAAM,OAAyB;IAC7B,MAAM,cAAc;IACpB,wBAAwB;IAExB,IAAI,CAAC,eAAe,MAAM,WAAW,MAAM,eAAe;IAC1D,IAAI,QAAQ,kBAAkB,MAAM,OAAO;IAE3C,UAAU;GACZ;EACF;CACF;AACF"}
1
+ {"version":3,"file":"useModalOverlay-Cv5hF63W.js","names":[],"sources":["../../src/composables/internal/useInertOthers.ts","../../src/composables/internal/useOverlayPresence.ts","../../src/composables/internal/useScrollLock.ts","../../src/composables/internal/useModalOverlay.ts"],"sourcesContent":["import type { Ref } from 'vue'\nimport { onScopeDispose, watch } from 'vue'\n\nimport { inertableOutside, markInert } from './inert'\n\n/**\n * Пока слой активен, всё вне его ветки помечено `inert`: от корня оверлея вверх\n * до `<body>`, на каждом уровне — соседи.\n *\n * Это вторая половина модальности: `z-index` перекрывает страницу глазами,\n * `inert` — клавиатурой и скринридером.\n */\nexport function useInertOthers(root: Ref<HTMLElement | null>, active: () => boolean): void {\n let release: (() => void) | undefined\n\n function apply(): void {\n release?.()\n release = markInert(inertableOutside(root.value))\n }\n\n function clear(): void {\n release?.()\n release = undefined\n }\n\n watch(\n () => Boolean(active()) && Boolean(root.value),\n (isActive) => {\n if (isActive) apply()\n else clear()\n },\n { immediate: true, flush: 'post' },\n )\n\n onScopeDispose(clear)\n}\n","import type { Ref } from 'vue'\nimport { ref, watch } from 'vue'\n\nexport interface OverlayPresence {\n /** Смонтировано ли поддерево слоя: держится до конца leave-анимации. */\n mounted: Ref<boolean>\n /** Показан ли слой: этим переключаются `<Transition>` внутри. */\n visible: Ref<boolean>\n /** Вызывается из `@after-leave` панели. */\n onPanelAfterLeave: () => void\n}\n\n/**\n * Присутствие оверлея в DOM отдельно от его видимости.\n *\n * Штатный `<Transition>` анимирует свой элемент, но не координирует соседей:\n * убери обёртку по `v-if` — и подложка с панелью исчезнут мгновенно, без\n * leave-анимации. Поэтому присутствие поддерева и видимость слоя — два разных\n * флага: первый снимается только по концу leave-анимации панели.\n *\n * Видимость включается **в том же такте**, что и монтирование: содержимое окна\n * обязано появляться в DOM сразу после открытия — на этом стоит и код\n * потребителя, и внутренние компоненты, которые ищут в панели свои элементы.\n * Enter-анимацию это не отменяет: `<Transition appear>` проигрывает её и на\n * первом рендере ребёнка.\n */\nexport function useOverlayPresence(open: Ref<boolean>): OverlayPresence {\n const mounted = ref(open.value)\n const visible = ref(open.value)\n\n watch(open, (isOpen) => {\n if (isOpen) mounted.value = true\n visible.value = isOpen\n })\n\n function onPanelAfterLeave(): void {\n // Пока панель уезжала, слой могли открыть заново — тогда размонтировать\n // нечего и незачем.\n if (!open.value) mounted.value = false\n }\n\n return { mounted, visible, onPanelAfterLeave }\n}\n","/**\n * useScrollLock — общий **reference-counted** lock скролла `<body>` для оверлеев\n * (GrModal, GrDrawer, GrImageViewer).\n *\n * Зачем счётчик: состояние `<body>` принадлежит не оверлею, а их совокупности.\n * Держи каждый свой `savedBodyOverflow`, и закрытие A при ещё открытой B вернуло\n * бы странице прокрутку под открытым окном — закрывают не всегда в порядке\n * открытия. Поэтому состояние сохраняется один раз (переход счётчика 0→1) и\n * восстанавливается только когда закрыт последний оверлей (1→0).\n *\n * Плюс компенсация ширины скроллбара: при `overflow: hidden` скроллбар исчезает и\n * контент дёргается вправо — добавляем `padding-right` на его ширину.\n *\n * Отдельная ветка — iOS Safari: там `overflow: hidden` фон не держит, страница\n * продолжает «резинить» под открытым окном. Лечится тем же, чем лечил\n * HeadlessUI (`handleIOSLocking`): гасим `touchmove` вне скроллящихся областей\n * оверлея и возвращаем позицию прокрутки после снятия лока.\n */\n\ninterface SavedBodyStyle {\n overflow: string\n paddingRight: string\n overscrollBehavior: string\n}\n\nlet lockCount = 0\nlet saved: SavedBodyStyle | null = null\nlet savedScrollY = 0\nlet releaseTouchGuard: (() => void) | null = null\n\n/**\n * iOS определяем по платформе, а не по ширине экрана: лечение специфично для\n * движка, а не для размера. `maxTouchPoints` отличает iPadOS, который со времён\n * 13-й версии представляется десктопным Mac.\n */\nfunction isIOS(): boolean {\n if (typeof navigator === 'undefined') return false\n return /iP(?:hone|ad|od)/.test(navigator.platform)\n || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1)\n}\n\n/** Прокручиваемая область оверлея — единственное, чему `touchmove` разрешён. */\nfunction isScrollableOverlayArea(target: EventTarget | null): boolean {\n if (!(target instanceof Element)) return false\n\n for (let node: Element | null = target; node; node = node.parentElement) {\n if (!(node instanceof HTMLElement)) continue\n if (node.hasAttribute('data-gr-overlay-root')) return true\n }\n\n return false\n}\n\nfunction applyTouchGuard(): void {\n if (!isIOS()) return\n\n const onTouchMove = (event: TouchEvent): void => {\n // Внутри оверлея скролл законен (длинное окно, лента изображений), а всё\n // остальное — это и есть фон, который лок обязан держать.\n if (isScrollableOverlayArea(event.target)) return\n if (event.cancelable) event.preventDefault()\n }\n\n document.addEventListener('touchmove', onTouchMove, { passive: false })\n releaseTouchGuard = () => document.removeEventListener('touchmove', onTouchMove)\n}\n\nfunction getScrollbarWidth(): number {\n return window.innerWidth - document.documentElement.clientWidth\n}\n\nfunction applyLock(): void {\n const body = document.body\n saved = {\n overflow: body.style.overflow,\n paddingRight: body.style.paddingRight,\n overscrollBehavior: body.style.overscrollBehavior,\n }\n savedScrollY = window.scrollY\n\n // Ширину скроллбара считаем ДО `overflow: hidden` (после — `clientWidth` меняется).\n const scrollbarWidth = getScrollbarWidth()\n\n body.style.overflow = 'hidden'\n // Прокрутка, «доехавшая» до края внутри окна, не должна продолжаться фоном.\n body.style.overscrollBehavior = 'contain'\n if (scrollbarWidth > 0) {\n const currentPadding = Number.parseFloat(getComputedStyle(body).paddingRight) || 0\n body.style.paddingRight = `${currentPadding + scrollbarWidth}px`\n }\n\n applyTouchGuard()\n}\n\nfunction releaseLock(): void {\n releaseTouchGuard?.()\n releaseTouchGuard = null\n\n if (!saved) return\n document.body.style.overflow = saved.overflow\n document.body.style.paddingRight = saved.paddingRight\n document.body.style.overscrollBehavior = saved.overscrollBehavior\n saved = null\n\n // iOS сдвигает страницу, пока фон заблокирован; возвращаем её на место.\n if (isIOS() && window.scrollY !== savedScrollY) window.scrollTo(0, savedScrollY)\n}\n\n/**\n * Возвращает пару `lock`/`unlock`, идемпотентную **в пределах одного инстанса**\n * (повторный `lock()` без `unlock()` не увеличивает глобальный счётчик дважды).\n * Глобальный счётчик разделяется всеми оверлеями.\n */\nexport function useScrollLock() {\n const isClient = typeof window !== 'undefined'\n let held = false\n\n function lock(): void {\n if (!isClient || held) return\n held = true\n lockCount += 1\n if (lockCount === 1) applyLock()\n }\n\n function unlock(): void {\n if (!isClient || !held) return\n held = false\n lockCount = Math.max(0, lockCount - 1)\n if (lockCount === 0) releaseLock()\n }\n\n return { lock, unlock }\n}\n\n/** Тестовая/служебная очистка глобального состояния. */\nexport function resetScrollLock(): void {\n lockCount = 0\n if (typeof document !== 'undefined') releaseLock()\n saved = null\n}\n","import type { ComputedRef, Ref } from 'vue'\nimport { computed, onBeforeUnmount, ref, watch } from 'vue'\n\nimport { useGrThemeAttrs } from '../../components/GrConfigProvider/context'\nimport { useFocusTrap } from '../useFocusTrap'\nimport { useOverlayLayer } from '../useOverlayLayer'\nimport { usePortalTarget } from '../usePortalTarget'\nimport { useInertOthers } from './useInertOthers'\nimport { useOverlayPresence } from './useOverlayPresence'\nimport { useScrollLock } from './useScrollLock'\n\n/**\n * Модальный слой целиком: одна сборка на весь пакет.\n *\n * Модальность собиралась вручную в трёх компонентах (`GrModal`, `GrDrawer`,\n * `GrImageViewer`) из шести примитивов, и сборка повторялась дословно. Дело не\n * в объёме: в этой проводке сидят инварианты, каждый из которых при пропуске\n * даёт тихий баг доступности, а не заметную поломку. Здесь они собраны в одном\n * месте — забыть часть модального слоя больше нельзя.\n *\n * Что именно неочевидно:\n *\n * - **`restoreFocus: false` у ловушки.** Возврат фокуса принадлежит стеку\n * слоёв: у него правило строже — вернуть, только если на момент закрытия\n * фокус ещё был внутри слоя. Две системы возврата подрались бы за фокус.\n * - **`containers: layer.rootsAbove`.** Панель селекта, открытого ВНУТРИ окна,\n * телепортирована в `body` и лежит вне поддерева панели. Без этого списка\n * ловушка считала бы её «снаружи» и отбирала фокус.\n * - **Ловушка и `inert` работают, только пока слой верхний.** Иначе нижнее\n * окно ворует фокус у открытого поверх него, а `inert` гасит собственную\n * панель вместе со страницей.\n * - **Клик по подложке считается только тот, что на ней и начался.** Иначе\n * выделение текста мышью или перетаскивание, отпущенное за пределами панели,\n * закрывает слой.\n *\n * Чего композабл НЕ делает: не рисует разметку. Корневой `div`, подложка и\n * панель у трёх компонентов различаются по существу (обёртки скролла у окна,\n * сквозные клики у немодальной панели, слои хрома у просмотрщика), а классами\n * общий модуль владеть не вправе — пресет гранулярности подмешивает safelist\n * только по директориям выбранных компонентов.\n */\nexport interface UseModalOverlayOptions {\n /**\n * Модальный ли слой: блокирует страницу, держит фокус, гасит нижние окна.\n * Геттером — там, где модальность включается пропом (`GrDrawer`).\n */\n modal?: boolean | (() => boolean)\n /** Закрывать ли по Esc. Геттер — проп компонента реактивен. */\n closeOnEscape?: () => boolean\n /** Закрывать ли по клику в подложку; читается обработчиками `backdrop`. */\n closeOnBackdrop?: () => boolean\n /** Панель слоя: контейнер ловушки фокуса и её запасной приёмник. */\n panel: Ref<HTMLElement | null>\n /**\n * Свой корень слоя. У якорного оверлея (`GrPopover`) корень и панель — один\n * элемент: в портал уезжает сама панель, отдельной обёртки нет. Не задан —\n * композабл заводит корень сам, как у центрированных окон.\n */\n root?: Ref<HTMLElement | null>\n /**\n * Точечное переопределение точки монтирования (проп `teleportTo`). По\n * умолчанию — общий портал оверлеев.\n */\n teleportTo?: () => string | HTMLElement | undefined\n /**\n * Кому отдать фокус при открытии. Не задан — первому фокусируемому внутри\n * панели (правило `useFocusTrap`): просмотрщику нужна именно кнопка тулбара,\n * а окну — сама панель, и оно передаёт её явно.\n */\n initialFocus?: () => HTMLElement | null | undefined\n /**\n * Блокировать ли скролл страницы. По умолчанию — пока слой открыт и модален:\n * немодальная панель существует ровно ради работы со страницей под ней.\n */\n lockScroll?: () => boolean\n}\n\nexport interface ModalOverlay {\n /** Корень слоя: цель `ref` в шаблоне, хозяин `inert` и корень для стека слоёв. */\n rootEl: Ref<HTMLElement | null>\n /** Смонтировано ли поддерево: держится до конца leave-анимации панели. */\n isMounted: Ref<boolean>\n /** Показан ли слой: этим переключаются `<Transition>` внутри. */\n isVisible: Ref<boolean>\n /** Верхний ли это слой сейчас. */\n isTopmost: Ref<boolean>\n /** Значение атрибута `inert` для корня: слой перестал быть верхним. */\n inertAttr: ComputedRef<true | undefined>\n portalTarget: ComputedRef<string | HTMLElement>\n teleportEnabled: ComputedRef<boolean>\n /** `data-theme` на телепортированный корень: в DOM он вне обёртки провайдера. */\n themeAttrs: ComputedRef<{ 'data-theme'?: string }>\n /** Для `@after-leave` панели. Компонент оборачивает, если ему нужен эмит `closed`. */\n onPanelAfterLeave: () => void\n /**\n * Обработчики подложки вместе с guard'ом «клик начался на ней». Имена — под\n * `v-on=\"backdrop\"`: объектный синтаксис ждёт имена событий, а не пропов.\n */\n backdrop: {\n mousedown: (event: MouseEvent) => void\n click: (event: MouseEvent) => void\n }\n}\n\nexport function useModalOverlay(\n open: Ref<boolean>,\n onDismiss: () => void,\n options: UseModalOverlayOptions,\n): ModalOverlay {\n const isModal = (): boolean =>\n typeof options.modal === 'function' ? options.modal() : options.modal ?? true\n\n const rootEl = options.root ?? ref<HTMLElement | null>(null)\n const isTopmost = ref(true)\n\n const inertAttr = computed(() => (open.value && isModal() && !isTopmost.value ? true : undefined))\n\n // Телепорт включается только ПОСЛЕ монтирования: иначе первый клиентский\n // рендер не совпадёт с серверным и сломается гидрация.\n const { target: portalTarget, enabled: teleportEnabled } = usePortalTarget(options.teleportTo)\n\n // Панель уезжает в `body`, то есть вне обёртки провайдера, и `data-theme` с\n // неё не наследуется. В дереве компонентов слой остаётся внутри — `inject`\n // доходит, и тему он ставит себе сам.\n const themeAttrs = useGrThemeAttrs()\n\n const { mounted: isMounted, visible: isVisible, onPanelAfterLeave } = useOverlayPresence(open)\n\n const layer = useOverlayLayer(open, onDismiss, {\n modal: isModal,\n closeOnEscape: options.closeOnEscape,\n onTopmostChange: (value) => { isTopmost.value = value },\n root: rootEl,\n })\n\n useFocusTrap(options.panel, {\n active: () => open.value && isModal() && isTopmost.value,\n initialFocus: options.initialFocus,\n fallbackFocus: () => options.panel.value,\n containers: layer.rootsAbove,\n restoreFocus: false,\n })\n\n useInertOthers(rootEl, () => open.value && isModal() && isTopmost.value)\n\n // Общий reference-counted lock: несколько открытых оверлеев снимают блокировку\n // независимо от порядка закрытия, ширина скроллбара компенсируется.\n const { lock, unlock } = useScrollLock()\n\n watch(\n () => options.lockScroll?.() ?? (open.value && isModal()),\n (locked) => {\n if (locked) lock()\n else unlock()\n },\n { immediate: true },\n )\n\n onBeforeUnmount(unlock)\n\n let pointerDownOnBackdrop = false\n\n return {\n rootEl,\n isMounted,\n isVisible,\n isTopmost,\n inertAttr,\n portalTarget,\n teleportEnabled,\n themeAttrs,\n onPanelAfterLeave,\n backdrop: {\n mousedown(event: MouseEvent): void {\n pointerDownOnBackdrop = event.target === event.currentTarget\n },\n click(event: MouseEvent): void {\n const startedHere = pointerDownOnBackdrop\n pointerDownOnBackdrop = false\n\n if (!startedHere || event.target !== event.currentTarget) return\n if (options.closeOnBackdrop?.() === false) return\n\n onDismiss()\n },\n },\n }\n}\n"],"mappings":";;;;;;;;;;;;;;AAYA,SAAgB,eAAe,MAA+B,QAA6B;CACzF,IAAI;CAEJ,SAAS,QAAc;EACrB,UAAU;EACV,UAAU,UAAU,iBAAiB,KAAK,KAAK,CAAC;CAClD;CAEA,SAAS,QAAc;EACrB,UAAU;EACV,UAAU,KAAA;CACZ;CAEA,YACQ,QAAQ,OAAO,CAAC,KAAK,QAAQ,KAAK,KAAK,IAC5C,aAAa;EACZ,IAAI,UAAU,MAAM;OACf,MAAM;CACb,GACA;EAAE,WAAW;EAAM,OAAO;CAAO,CACnC;CAEA,eAAe,KAAK;AACtB;;;;;;;;;;;;;;;;;ACTA,SAAgB,mBAAmB,MAAqC;CACtE,MAAM,UAAU,IAAI,KAAK,KAAK;CAC9B,MAAM,UAAU,IAAI,KAAK,KAAK;CAE9B,MAAM,OAAO,WAAW;EACtB,IAAI,QAAQ,QAAQ,QAAQ;EAC5B,QAAQ,QAAQ;CAClB,CAAC;CAED,SAAS,oBAA0B;EAGjC,IAAI,CAAC,KAAK,OAAO,QAAQ,QAAQ;CACnC;CAEA,OAAO;EAAE;EAAS;EAAS;CAAkB;AAC/C;;;ACjBA,IAAI,YAAY;AAChB,IAAI,QAA+B;AACnC,IAAI,eAAe;AACnB,IAAI,oBAAyC;;;;;;AAO7C,SAAS,QAAiB;CACxB,IAAI,OAAO,cAAc,aAAa,OAAO;CAC7C,OAAO,mBAAmB,KAAK,UAAU,QAAQ,KAC3C,UAAU,aAAa,cAAc,UAAU,iBAAiB;AACxE;;AAGA,SAAS,wBAAwB,QAAqC;CACpE,IAAI,EAAE,kBAAkB,UAAU,OAAO;CAEzC,KAAK,IAAI,OAAuB,QAAQ,MAAM,OAAO,KAAK,eAAe;EACvE,IAAI,EAAE,gBAAgB,cAAc;EACpC,IAAI,KAAK,aAAa,sBAAsB,GAAG,OAAO;CACxD;CAEA,OAAO;AACT;AAEA,SAAS,kBAAwB;CAC/B,IAAI,CAAC,MAAM,GAAG;CAEd,MAAM,eAAe,UAA4B;EAG/C,IAAI,wBAAwB,MAAM,MAAM,GAAG;EAC3C,IAAI,MAAM,YAAY,MAAM,eAAe;CAC7C;CAEA,SAAS,iBAAiB,aAAa,aAAa,EAAE,SAAS,MAAM,CAAC;CACtE,0BAA0B,SAAS,oBAAoB,aAAa,WAAW;AACjF;AAEA,SAAS,oBAA4B;CACnC,OAAO,OAAO,aAAa,SAAS,gBAAgB;AACtD;AAEA,SAAS,YAAkB;CACzB,MAAM,OAAO,SAAS;CACtB,QAAQ;EACN,UAAU,KAAK,MAAM;EACrB,cAAc,KAAK,MAAM;EACzB,oBAAoB,KAAK,MAAM;CACjC;CACA,eAAe,OAAO;CAGtB,MAAM,iBAAiB,kBAAkB;CAEzC,KAAK,MAAM,WAAW;CAEtB,KAAK,MAAM,qBAAqB;CAChC,IAAI,iBAAiB,GAAG;EACtB,MAAM,iBAAiB,OAAO,WAAW,iBAAiB,IAAI,CAAC,CAAC,YAAY,KAAK;EACjF,KAAK,MAAM,eAAe,GAAG,iBAAiB,eAAe;CAC/D;CAEA,gBAAgB;AAClB;AAEA,SAAS,cAAoB;CAC3B,oBAAoB;CACpB,oBAAoB;CAEpB,IAAI,CAAC,OAAO;CACZ,SAAS,KAAK,MAAM,WAAW,MAAM;CACrC,SAAS,KAAK,MAAM,eAAe,MAAM;CACzC,SAAS,KAAK,MAAM,qBAAqB,MAAM;CAC/C,QAAQ;CAGR,IAAI,MAAM,KAAK,OAAO,YAAY,cAAc,OAAO,SAAS,GAAG,YAAY;AACjF;;;;;;AAOA,SAAgB,gBAAgB;CAC9B,MAAM,WAAW,OAAO,WAAW;CACnC,IAAI,OAAO;CAEX,SAAS,OAAa;EACpB,IAAI,CAAC,YAAY,MAAM;EACvB,OAAO;EACP,aAAa;EACb,IAAI,cAAc,GAAG,UAAU;CACjC;CAEA,SAAS,SAAe;EACtB,IAAI,CAAC,YAAY,CAAC,MAAM;EACxB,OAAO;EACP,YAAY,KAAK,IAAI,GAAG,YAAY,CAAC;EACrC,IAAI,cAAc,GAAG,YAAY;CACnC;CAEA,OAAO;EAAE;EAAM;CAAO;AACxB;;;AC5BA,SAAgB,gBACd,MACA,WACA,SACc;CACd,MAAM,gBACJ,OAAO,QAAQ,UAAU,aAAa,QAAQ,MAAM,IAAI,QAAQ,SAAS;CAE3E,MAAM,SAAS,QAAQ,QAAQ,IAAwB,IAAI;CAC3D,MAAM,YAAY,IAAI,IAAI;CAE1B,MAAM,YAAY,eAAgB,KAAK,SAAS,QAAQ,KAAK,CAAC,UAAU,QAAQ,OAAO,KAAA,CAAU;CAIjG,MAAM,EAAE,QAAQ,cAAc,SAAS,oBAAoB,gBAAgB,QAAQ,UAAU;CAK7F,MAAM,aAAa,gBAAgB;CAEnC,MAAM,EAAE,SAAS,WAAW,SAAS,WAAW,sBAAsB,mBAAmB,IAAI;CAE7F,MAAM,QAAQ,gBAAgB,MAAM,WAAW;EAC7C,OAAO;EACP,eAAe,QAAQ;EACvB,kBAAkB,UAAU;GAAE,UAAU,QAAQ;EAAM;EACtD,MAAM;CACR,CAAC;CAED,aAAa,QAAQ,OAAO;EAC1B,cAAc,KAAK,SAAS,QAAQ,KAAK,UAAU;EACnD,cAAc,QAAQ;EACtB,qBAAqB,QAAQ,MAAM;EACnC,YAAY,MAAM;EAClB,cAAc;CAChB,CAAC;CAED,eAAe,cAAc,KAAK,SAAS,QAAQ,KAAK,UAAU,KAAK;CAIvE,MAAM,EAAE,MAAM,WAAW,cAAc;CAEvC,YACQ,QAAQ,aAAa,MAAM,KAAK,SAAS,QAAQ,KACtD,WAAW;EACV,IAAI,QAAQ,KAAK;OACZ,OAAO;CACd,GACA,EAAE,WAAW,KAAK,CACpB;CAEA,gBAAgB,MAAM;CAEtB,IAAI,wBAAwB;CAE5B,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,UAAU;GACR,UAAU,OAAyB;IACjC,wBAAwB,MAAM,WAAW,MAAM;GACjD;GACA,MAAM,OAAyB;IAC7B,MAAM,cAAc;IACpB,wBAAwB;IAExB,IAAI,CAAC,eAAe,MAAM,WAAW,MAAM,eAAe;IAC1D,IAAI,QAAQ,kBAAkB,MAAM,OAAO;IAE3C,UAAU;GACZ;EACF;CACF;AACF"}
@@ -1,4 +1,4 @@
1
- import { s as useGrConfig } from "./context-BSYR7RZs.js";
1
+ import { o as useGrConfig } from "./context-CTbuwcYs.js";
2
2
  import { t as ensurePortalRoot } from "./portalRoot-CVhCgdG6.js";
3
3
  import { computed, onMounted, readonly, ref } from "vue";
4
4
  //#region src/composables/internal/useTeleportEnabled.ts