@feugene/granularity 0.16.0 → 0.19.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 (425) hide show
  1. package/dist/chunks/chevron-left-D8AUBAM7.js +23 -0
  2. package/dist/chunks/chevron-left-D8AUBAM7.js.map +1 -0
  3. package/dist/chunks/{chevron-right-BfqMVpbB.js → chevron-right-C6Z01h0X.js} +1 -22
  4. package/dist/chunks/chevron-right-C6Z01h0X.js.map +1 -0
  5. package/dist/chunks/config-8Pcutu1j2.js.map +1 -0
  6. package/dist/chunks/{config-K0C2tcLB.js → config-9PYRZlKE.js} +1 -1
  7. package/dist/chunks/{config-K0C2tcLB.js.map → config-9PYRZlKE.js.map} +1 -1
  8. package/dist/chunks/{config-Zc_bUvZY2.js → config-BDfTXHo12.js} +1 -1
  9. package/dist/chunks/{config-Zc_bUvZY2.js.map → config-BDfTXHo12.js.map} +1 -1
  10. package/dist/chunks/config-BE6n20np2.js.map +1 -0
  11. package/dist/chunks/config-BJ7Bv_G2.js +148 -0
  12. package/dist/chunks/config-BJ7Bv_G2.js.map +1 -0
  13. package/dist/chunks/config-BKvX0q102.js.map +1 -0
  14. package/dist/chunks/{config-CpwwkFBO.js → config-Baj7Wvx-.js} +1 -1
  15. package/dist/chunks/{config-CpwwkFBO.js.map → config-Baj7Wvx-.js.map} +1 -1
  16. package/dist/chunks/{config-D8tSR2uS.js → config-Be9k9bOf.js} +2 -8
  17. package/dist/chunks/config-Be9k9bOf.js.map +1 -0
  18. package/dist/chunks/config-BoNR7_PD2.js.map +1 -0
  19. package/dist/chunks/{config-DxCTVBfx.js → config-BsPDQ0dS.js} +2 -2
  20. package/dist/chunks/config-BsPDQ0dS.js.map +1 -0
  21. package/dist/chunks/{config-DpqOnJiz2.js → config-CDat1wXf2.js} +1 -1
  22. package/dist/chunks/config-CDat1wXf2.js.map +1 -0
  23. package/dist/chunks/config-CN2ULSQL.js.map +1 -0
  24. package/dist/chunks/{config-Cw6TDzWv2.js → config-COpuWGr_.js} +1 -1
  25. package/dist/chunks/config-COpuWGr_.js.map +1 -0
  26. package/dist/chunks/config-CY0_6cMi2.js.map +1 -0
  27. package/dist/chunks/{config-B-g6lT19.js → config-DA6SnEoy.js} +5 -2
  28. package/dist/chunks/config-DA6SnEoy.js.map +1 -0
  29. package/dist/chunks/config-DAX8Deh1.js +68 -0
  30. package/dist/chunks/config-DAX8Deh1.js.map +1 -0
  31. package/dist/chunks/config-DKdlqXiY.js.map +1 -1
  32. package/dist/chunks/{config-CvC0sX8p.js → config-MRvhUl-O.js} +1 -1
  33. package/dist/chunks/{config-CvC0sX8p.js.map → config-MRvhUl-O.js.map} +1 -1
  34. package/dist/chunks/config-Rw9OyW702.js.map +1 -0
  35. package/dist/chunks/config-ScuvHw6k2.js +42 -0
  36. package/dist/chunks/config-ScuvHw6k2.js.map +1 -0
  37. package/dist/chunks/config-T3qdQBgU2.js.map +1 -0
  38. package/dist/chunks/config-eXB87DOi.js.map +1 -0
  39. package/dist/chunks/context-BSYR7RZs.js.map +1 -1
  40. package/dist/chunks/{en-B3xMeswz.js → en-COdzxgAX.js} +30 -5
  41. package/dist/chunks/en-COdzxgAX.js.map +1 -0
  42. package/dist/chunks/{es-CA-mkU--.js → es-ClqJ-4hr.js} +30 -5
  43. package/dist/chunks/es-ClqJ-4hr.js.map +1 -0
  44. package/dist/chunks/{es-Bv8vvqdT.js → es-DGMHwknJ.js} +3 -3
  45. package/dist/chunks/{es-Bv8vvqdT.js.map → es-DGMHwknJ.js.map} +1 -1
  46. package/dist/chunks/generated-BRkbhyxk.js +3270 -0
  47. package/dist/chunks/generated-BRkbhyxk.js.map +1 -0
  48. package/dist/chunks/grKbdStyles-CeZhGQHr.js +43 -0
  49. package/dist/chunks/grKbdStyles-CeZhGQHr.js.map +1 -0
  50. package/dist/chunks/{grTextareaStyles-CWI2SqC8.js → grTextareaStyles-iOcHuVMM.js} +2 -2
  51. package/dist/chunks/{grTextareaStyles-CWI2SqC8.js.map → grTextareaStyles-iOcHuVMM.js.map} +1 -1
  52. package/dist/chunks/{granular-provider-CtrXGa7c.js → granular-provider-C6uAujdJ.js} +23 -21
  53. package/dist/chunks/granular-provider-C6uAujdJ.js.map +1 -0
  54. package/dist/chunks/grip-vertical-lRha2S7q.js +16 -0
  55. package/dist/chunks/grip-vertical-lRha2S7q.js.map +1 -0
  56. package/dist/chunks/icon-Dag2tIMs.js +21 -0
  57. package/dist/chunks/icon-Dag2tIMs.js.map +1 -0
  58. package/dist/chunks/{keyboard-zYvvyHd4.js → keyboard-DE2yhz_b.js} +10 -1
  59. package/dist/chunks/keyboard-DE2yhz_b.js.map +1 -0
  60. package/dist/chunks/{optionFilter-BVY988pC.js → optionFilter-DYw9XPPx.js} +1 -71
  61. package/dist/chunks/optionFilter-DYw9XPPx.js.map +1 -0
  62. package/dist/chunks/{useOverlayLayer-BupuP_hs.js → overlayStack-C8cfsqXa.js} +11 -61
  63. package/dist/chunks/overlayStack-C8cfsqXa.js.map +1 -0
  64. package/dist/chunks/{portalRoot-CWD4zHBm.js → portalRoot-CVhCgdG6.js} +10 -1
  65. package/dist/chunks/{portalRoot-CWD4zHBm.js.map → portalRoot-CVhCgdG6.js.map} +1 -1
  66. package/dist/chunks/{ru-COWxgh2A.js → ru-9z8ix45c.js} +30 -5
  67. package/dist/chunks/ru-9z8ix45c.js.map +1 -0
  68. package/dist/chunks/useDragSort-0l47h4yb.js +265 -0
  69. package/dist/chunks/useDragSort-0l47h4yb.js.map +1 -0
  70. package/dist/chunks/{useModalOverlay-DCM4d3yA.js → useModalOverlay-DrQVYwwA.js} +2 -2
  71. package/dist/chunks/{useModalOverlay-DCM4d3yA.js.map → useModalOverlay-DrQVYwwA.js.map} +1 -1
  72. package/dist/chunks/{usePortalTarget-RyzEgNTb.js → usePortalTarget-Cn-Wiz5d.js} +1 -1
  73. package/dist/chunks/{usePortalTarget-RyzEgNTb.js.map → usePortalTarget-Cn-Wiz5d.js.map} +1 -1
  74. package/dist/components/GrAutocomplete/chunks/{GrAutocomplete-CQ9T7Lly.js → GrAutocomplete-gY4Xopza.js} +35 -26
  75. package/dist/components/GrAutocomplete/chunks/GrAutocomplete-gY4Xopza.js.map +1 -0
  76. package/dist/components/GrAutocomplete/index.js +1 -1
  77. package/dist/components/GrAutocomplete/styles.css +1 -1
  78. package/dist/components/GrBreadcrumbs/chunks/{GrBreadcrumbs-BCNGDS6k.js → GrBreadcrumbs-DS_-PBVt.js} +8 -7
  79. package/dist/components/GrBreadcrumbs/chunks/GrBreadcrumbs-DS_-PBVt.js.map +1 -0
  80. package/dist/components/GrBreadcrumbs/index.js +1 -1
  81. package/dist/components/GrCollapse/chunks/{GrCollapse-B2Fc6A9r.js.map → GrCollapse-Kk0DE8tb.js.map} +1 -1
  82. package/dist/components/GrCollapse/index.js +1 -1
  83. package/dist/components/GrColorPicker/chunks/{GrColorPicker-bnYBRGk8.js → GrColorPicker-CkBTzkqn.js} +4 -4
  84. package/dist/components/GrColorPicker/chunks/{GrColorPicker-bnYBRGk8.js.map → GrColorPicker-CkBTzkqn.js.map} +1 -1
  85. package/dist/components/GrColorPicker/index.js +2 -2
  86. package/dist/components/GrCommandPalette/chunks/{GrCommandPalette-MWDYDPNC.js → GrCommandPalette-BugTlGdj.js} +41 -16
  87. package/dist/components/GrCommandPalette/chunks/GrCommandPalette-BugTlGdj.js.map +1 -0
  88. package/dist/components/GrCommandPalette/index.js +2 -2
  89. package/dist/components/GrCommandPalette/styles.css +1 -1
  90. package/dist/components/GrConfigProvider/index.js +2 -2
  91. package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-DaQmlp1_.js → GrConfirmDialog-Ds5T0GiR.js} +1 -1
  92. package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-DaQmlp1_.js.map → GrConfirmDialog-Ds5T0GiR.js.map} +1 -1
  93. package/dist/components/GrConfirmDialog/index.js +1 -1
  94. package/dist/components/GrDataTable/chunks/{GrDataTable-DVFho9Cj.js → GrDataTable-CYe2A2WA.js} +498 -48
  95. package/dist/components/GrDataTable/chunks/GrDataTable-CYe2A2WA.js.map +1 -0
  96. package/dist/components/GrDataTable/index.js +2 -2
  97. package/dist/components/GrDialog/chunks/{GrDialog-AE1gIZuz.js → GrDialog-C3tYaA8v.js} +1 -1
  98. package/dist/components/GrDialog/chunks/{GrDialog-AE1gIZuz.js.map → GrDialog-C3tYaA8v.js.map} +1 -1
  99. package/dist/components/GrDialog/index.js +1 -1
  100. package/dist/components/GrDialogService/chunks/{GrDialogService-B4DYWDkA.js → GrDialogService-CTBiiJDI.js} +3 -3
  101. package/dist/components/GrDialogService/chunks/{GrDialogService-B4DYWDkA.js.map → GrDialogService-CTBiiJDI.js.map} +1 -1
  102. package/dist/components/GrDialogService/index.js +1 -1
  103. package/dist/components/GrDivider/chunks/{GrDivider-B2Xwc_QO.js → GrDivider-xxq1_fIl.js} +1 -1
  104. package/dist/components/GrDivider/chunks/{GrDivider-B2Xwc_QO.js.map → GrDivider-xxq1_fIl.js.map} +1 -1
  105. package/dist/components/GrDivider/index.js +2 -2
  106. package/dist/components/GrDrawer/chunks/{GrDrawer-DQwi6aRw.js → GrDrawer-BSSuiNHU.js} +1 -1
  107. package/dist/components/GrDrawer/chunks/{GrDrawer-DQwi6aRw.js.map → GrDrawer-BSSuiNHU.js.map} +1 -1
  108. package/dist/components/GrDrawer/index.js +1 -1
  109. package/dist/components/GrDropdown/chunks/{GrDropdown-BLng6V1m.js → GrDropdown-Bh6UK2M5.js} +3 -3
  110. package/dist/components/GrDropdown/chunks/{GrDropdown-BLng6V1m.js.map → GrDropdown-Bh6UK2M5.js.map} +1 -1
  111. package/dist/components/GrDropdown/index.js +1 -1
  112. package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu-BImk2Vs7.js → GrDropdownMenu-LyfEFUbg.js} +2 -2
  113. package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu-BImk2Vs7.js.map → GrDropdownMenu-LyfEFUbg.js.map} +1 -1
  114. package/dist/components/GrDropdownMenu/index.js +2 -2
  115. package/dist/components/GrFileUpload/chunks/{GrFileUpload-D0B-BEsd.js → GrFileUpload-DuDzC43S.js} +2 -2
  116. package/dist/components/GrFileUpload/chunks/{GrFileUpload-D0B-BEsd.js.map → GrFileUpload-DuDzC43S.js.map} +1 -1
  117. package/dist/components/GrFileUpload/index.js +1 -1
  118. package/dist/components/GrImageViewer/chunks/{GrImageViewer-BeCnE8XQ.js → GrImageViewer-DfD4euH5.js} +48 -23
  119. package/dist/components/GrImageViewer/chunks/GrImageViewer-DfD4euH5.js.map +1 -0
  120. package/dist/components/GrImageViewer/index.js +1 -1
  121. package/dist/components/GrInput/chunks/{GrInput-DD2gYdqS.js → GrInput-2wd7Crs0.js} +1 -1
  122. package/dist/components/GrInput/chunks/GrInput-2wd7Crs0.js.map +1 -0
  123. package/dist/components/GrInput/index.js +1 -1
  124. package/dist/components/GrInputTag/chunks/{GrInputTag-DmNunixz.js → GrInputTag-CyV2eY7Z.js} +20 -33
  125. package/dist/components/GrInputTag/chunks/GrInputTag-CyV2eY7Z.js.map +1 -0
  126. package/dist/components/GrInputTag/index.js +1 -1
  127. package/dist/components/GrKbd/chunks/{GrKbd-DRFPvW3G.js → GrKbd-DU2lBkRV.js} +218 -52
  128. package/dist/components/GrKbd/chunks/GrKbd-DU2lBkRV.js.map +1 -0
  129. package/dist/components/GrKbd/index.js +3 -3
  130. package/dist/components/GrModal/chunks/{GrModal-B8I78T0N.js → GrModal-CbMMr6W1.js} +1 -1
  131. package/dist/components/GrModal/chunks/{GrModal-B8I78T0N.js.map → GrModal-CbMMr6W1.js.map} +1 -1
  132. package/dist/components/GrModal/index.js +1 -1
  133. package/dist/components/GrNumberInput/chunks/{GrNumberInput-CZOyPz4J.js → GrNumberInput-B5CHZDBj.js} +2 -1
  134. package/dist/components/GrNumberInput/chunks/{GrNumberInput-CZOyPz4J.js.map → GrNumberInput-B5CHZDBj.js.map} +1 -1
  135. package/dist/components/GrNumberInput/index.js +1 -1
  136. package/dist/components/GrPagination/chunks/{GrPagination-B6N0QZBf.js → GrPagination-BM4FrD6Q.js} +4 -4
  137. package/dist/components/GrPagination/chunks/GrPagination-BM4FrD6Q.js.map +1 -0
  138. package/dist/components/GrPagination/index.js +1 -1
  139. package/dist/components/GrPopover/chunks/{GrPopover-B1eRCOoO.js → GrPopover-DMH4Jjst.js} +1 -1
  140. package/dist/components/GrPopover/chunks/{GrPopover-B1eRCOoO.js.map → GrPopover-DMH4Jjst.js.map} +1 -1
  141. package/dist/components/GrPopover/index.js +1 -1
  142. package/dist/components/GrProgressBar/chunks/{GrProgressBar-BiHnaitu.js → GrProgressBar-xwbNM9QB.js} +1 -1
  143. package/dist/components/GrProgressBar/chunks/GrProgressBar-xwbNM9QB.js.map +1 -0
  144. package/dist/components/GrProgressBar/index.js +1 -1
  145. package/dist/components/GrProgressCircle/chunks/{GrProgressCircle-CTogjcHz.js → GrProgressCircle-B8olXRo5.js} +1 -1
  146. package/dist/components/GrProgressCircle/chunks/{GrProgressCircle-CTogjcHz.js.map → GrProgressCircle-B8olXRo5.js.map} +1 -1
  147. package/dist/components/GrProgressCircle/index.js +2 -2
  148. package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-Ct174NVD.js → GrPromptDialog-Pwr9NPxK.js} +3 -3
  149. package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-Ct174NVD.js.map → GrPromptDialog-Pwr9NPxK.js.map} +1 -1
  150. package/dist/components/GrPromptDialog/index.js +1 -1
  151. package/dist/components/GrRadio/chunks/{GrRadio-DksDro_U.js → GrRadio-DWiRaMzt.js} +8 -32
  152. package/dist/components/GrRadio/chunks/GrRadio-DWiRaMzt.js.map +1 -0
  153. package/dist/components/GrRadio/index.js +1 -1
  154. package/dist/components/GrRadioGroup/chunks/{GrRadioGroup-BOIhejE6.js → GrRadioGroup-DIuBw0wk.js} +34 -27
  155. package/dist/components/GrRadioGroup/chunks/GrRadioGroup-DIuBw0wk.js.map +1 -0
  156. package/dist/components/GrRadioGroup/index.js +1 -1
  157. package/dist/components/GrRating/chunks/{GrRating-JrHXz0Rv.js → GrRating-DVFH3lYu.js} +10 -9
  158. package/dist/components/GrRating/chunks/GrRating-DVFH3lYu.js.map +1 -0
  159. package/dist/components/GrRating/index.js +2 -2
  160. package/dist/components/GrSegmented/chunks/{GrSegmented-BQIlH5KI.js → GrSegmented-CQw3ijqa.js} +47 -65
  161. package/dist/components/GrSegmented/chunks/GrSegmented-CQw3ijqa.js.map +1 -0
  162. package/dist/components/GrSegmented/index.js +1 -1
  163. package/dist/components/GrSelect/chunks/{GrSelect-aqkPCqjd.js → GrSelect-B-Voni7D.js} +69 -55
  164. package/dist/components/GrSelect/chunks/GrSelect-B-Voni7D.js.map +1 -0
  165. package/dist/components/GrSelect/index.js +1 -1
  166. package/dist/components/GrSelect/styles.css +1 -1
  167. package/dist/components/GrSidebar/chunks/{GrSidebar-DRGnnViw.js → GrSidebar-i7AxjhY_.js} +3 -2
  168. package/dist/components/GrSidebar/chunks/{GrSidebar-DRGnnViw.js.map → GrSidebar-i7AxjhY_.js.map} +1 -1
  169. package/dist/components/GrSidebar/index.js +2 -2
  170. package/dist/components/GrSkeleton/index.js +1 -1
  171. package/dist/components/GrSlider/chunks/{GrSlider-DkU9IQSX.js → GrSlider-CyhVsNKn.js} +21 -34
  172. package/dist/components/GrSlider/chunks/GrSlider-CyhVsNKn.js.map +1 -0
  173. package/dist/components/GrSlider/index.js +2 -2
  174. package/dist/components/GrSortableList/chunks/GrSortableList-XB7mXM1W.js +277 -0
  175. package/dist/components/GrSortableList/chunks/GrSortableList-XB7mXM1W.js.map +1 -0
  176. package/dist/components/GrSortableList/index.js +3 -0
  177. package/dist/components/GrSplitter/chunks/{GrSplitter-7To8jbJ8.js → GrSplitter-BzxVQwbY.js} +17 -37
  178. package/dist/components/GrSplitter/chunks/GrSplitter-BzxVQwbY.js.map +1 -0
  179. package/dist/components/GrSplitter/index.js +2 -2
  180. package/dist/components/GrStatistic/chunks/{GrStatistic-CttyoYPT.js → GrStatistic-DOsM6s5V.js} +54 -7
  181. package/dist/components/GrStatistic/chunks/GrStatistic-DOsM6s5V.js.map +1 -0
  182. package/dist/components/GrStatistic/index.js +2 -2
  183. package/dist/components/GrSwitch/chunks/{GrSwitch-B9TYbiih.js → GrSwitch-DpyvVrZG.js} +1 -1
  184. package/dist/components/GrSwitch/chunks/{GrSwitch-B9TYbiih.js.map → GrSwitch-DpyvVrZG.js.map} +1 -1
  185. package/dist/components/GrSwitch/index.js +2 -2
  186. package/dist/components/GrTabPanels/index.js +1 -1
  187. package/dist/components/GrTable/chunks/{GrTable-BB-mI_NM.js → GrTable-BfqgwETQ.js} +7 -1
  188. package/dist/components/GrTable/chunks/GrTable-BfqgwETQ.js.map +1 -0
  189. package/dist/components/GrTable/index.js +1 -1
  190. package/dist/components/GrTabs/chunks/{GrTabs-B8CDq2D9.js → GrTabs-f3-oQenu.js} +55 -65
  191. package/dist/components/GrTabs/chunks/GrTabs-f3-oQenu.js.map +1 -0
  192. package/dist/components/GrTabs/index.js +1 -1
  193. package/dist/components/GrTextarea/chunks/{GrTextarea-DUh5Tlo4.js → GrTextarea-DSvd1nSy.js} +1 -1
  194. package/dist/components/GrTextarea/chunks/{GrTextarea-DUh5Tlo4.js.map → GrTextarea-DSvd1nSy.js.map} +1 -1
  195. package/dist/components/GrTextarea/index.js +2 -2
  196. package/dist/components/GrTimeline/chunks/{GrTimeline-CE9b3s18.js → GrTimeline-B-h2Yanw.js} +1 -1
  197. package/dist/components/GrTimeline/chunks/{GrTimeline-CE9b3s18.js.map → GrTimeline-B-h2Yanw.js.map} +1 -1
  198. package/dist/components/GrTimeline/index.js +2 -2
  199. package/dist/components/GrToaster/chunks/{GrToaster-BKQy3Srm.js → GrToaster-Dqja0Lf9.js} +114 -13
  200. package/dist/components/GrToaster/chunks/GrToaster-Dqja0Lf9.js.map +1 -0
  201. package/dist/components/GrToaster/index.js +2 -2
  202. package/dist/components/GrToaster/styles.css +1 -1
  203. package/dist/components/GrTooltip/chunks/{GrTooltip-DEbejfhA.js → GrTooltip-Cn08heWz.js} +2 -2
  204. package/dist/components/GrTooltip/chunks/{GrTooltip-DEbejfhA.js.map → GrTooltip-Cn08heWz.js.map} +1 -1
  205. package/dist/components/GrTooltip/index.js +2 -2
  206. package/dist/components/GrTree/chunks/{GrTree-wfdbvygw.js → GrTree-BR9a2pay.js} +148 -111
  207. package/dist/components/GrTree/chunks/GrTree-BR9a2pay.js.map +1 -0
  208. package/dist/components/GrTree/index.js +2 -2
  209. package/dist/components/GrTree/styles.css +1 -1
  210. package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-lLWmAMtI.js → GrTreeSelect--muUeB0v.js} +28 -14
  211. package/dist/components/GrTreeSelect/chunks/GrTreeSelect--muUeB0v.js.map +1 -0
  212. package/dist/components/GrTreeSelect/index.js +1 -1
  213. package/dist/composables/useAnnouncer.js +1 -1
  214. package/dist/composables/useComboboxNavigation.js +71 -0
  215. package/dist/composables/useComboboxNavigation.js.map +1 -0
  216. package/dist/composables/useDismissible.js +1 -1
  217. package/dist/composables/useDragGesture.js +55 -0
  218. package/dist/composables/useDragGesture.js.map +1 -0
  219. package/dist/composables/useDragSort.js +2 -0
  220. package/dist/composables/useFloating.js +22 -1
  221. package/dist/composables/useFloating.js.map +1 -1
  222. package/dist/composables/useGrComponentConfig.js +2 -0
  223. package/dist/composables/useGranularityTranslations.js +2 -0
  224. package/dist/composables/useOverlayLayer.js +64 -1
  225. package/dist/composables/useOverlayLayer.js.map +1 -0
  226. package/dist/composables/usePortalTarget.js +1 -1
  227. package/dist/composables/useRovingFocus.js +150 -0
  228. package/dist/composables/useRovingFocus.js.map +1 -0
  229. package/dist/directives/hotkey.js +13 -7
  230. package/dist/directives/hotkey.js.map +1 -1
  231. package/dist/directives/loading.js +1 -1
  232. package/dist/granular-provider-node.js +1 -1
  233. package/dist/granular-provider.js +1 -1
  234. package/dist/i18n/all.js +1 -1
  235. package/dist/i18n/index.js +1 -1
  236. package/dist/index.js +77 -68
  237. package/dist/styles/themes/dark.css +6 -1
  238. package/dist/testing.js +199 -0
  239. package/dist/testing.js.map +1 -0
  240. package/dist/theme-apply.js +33 -0
  241. package/dist/theme-apply.js.map +1 -0
  242. package/dist/theme.js +501 -0
  243. package/dist/theme.js.map +1 -0
  244. package/dist/tokens.js +1 -3131
  245. package/dist/types/src/components/GrAlert/defaults.d.ts +1 -1
  246. package/dist/types/src/components/GrAutocomplete/defaults.d.ts +1 -1
  247. package/dist/types/src/components/GrAvatar/defaults.d.ts +1 -1
  248. package/dist/types/src/components/GrBadge/defaults.d.ts +1 -1
  249. package/dist/types/src/components/GrBottomNav/defaults.d.ts +1 -1
  250. package/dist/types/src/components/GrBreadcrumbs/defaults.d.ts +1 -1
  251. package/dist/types/src/components/GrBreadcrumbs/grBreadcrumbsStyles.d.ts +5 -2
  252. package/dist/types/src/components/GrButton/defaults.d.ts +1 -1
  253. package/dist/types/src/components/GrCard/defaults.d.ts +1 -1
  254. package/dist/types/src/components/GrCheckbox/defaults.d.ts +1 -1
  255. package/dist/types/src/components/GrCheckboxGroup/defaults.d.ts +1 -1
  256. package/dist/types/src/components/GrCollapse/defaults.d.ts +1 -1
  257. package/dist/types/src/components/GrColorPicker/defaults.d.ts +1 -1
  258. package/dist/types/src/components/GrColorPicker/grColorPickerStyles.d.ts +2 -2
  259. package/dist/types/src/components/GrCommandPalette/GrCommandPalette.vue.d.ts +6 -6
  260. package/dist/types/src/components/GrCommandPalette/defaults.d.ts +1 -1
  261. package/dist/types/src/components/GrCommandPalette/filtering.d.ts +6 -2
  262. package/dist/types/src/components/GrConfigProvider/context.d.ts +6 -22
  263. package/dist/types/src/components/GrConfigProvider/index.d.ts +1 -1
  264. package/dist/types/src/components/GrConfirmDialog/defaults.d.ts +1 -1
  265. package/dist/types/src/components/GrDataTable/GrDataTable.vue.d.ts +53 -0
  266. package/dist/types/src/components/GrDataTable/defaults.d.ts +1 -1
  267. package/dist/types/src/components/GrDataTable/grDataTableStyles.d.ts +38 -0
  268. package/dist/types/src/components/GrDialog/defaults.d.ts +1 -1
  269. package/dist/types/src/components/GrDivider/defaults.d.ts +1 -1
  270. package/dist/types/src/components/GrDrawer/defaults.d.ts +1 -1
  271. package/dist/types/src/components/GrEmptyState/defaults.d.ts +1 -1
  272. package/dist/types/src/components/GrFileUpload/defaults.d.ts +1 -1
  273. package/dist/types/src/components/GrFormField/defaults.d.ts +1 -1
  274. package/dist/types/src/components/GrFormFile/defaults.d.ts +1 -1
  275. package/dist/types/src/components/GrFormSection/defaults.d.ts +1 -1
  276. package/dist/types/src/components/GrIcon/defaults.d.ts +1 -1
  277. package/dist/types/src/components/GrImageViewer/composables/usePointerGestures.d.ts +1 -0
  278. package/dist/types/src/components/GrImageViewer/composables/useZoomPan.d.ts +1 -2
  279. package/dist/types/src/components/GrInput/defaults.d.ts +1 -1
  280. package/dist/types/src/components/GrInputTag/defaults.d.ts +1 -1
  281. package/dist/types/src/components/GrKbd/GrKbd.vue.d.ts +18 -3
  282. package/dist/types/src/components/GrKbd/defaults.d.ts +1 -1
  283. package/dist/types/src/components/GrKbd/grKbdStyles.d.ts +20 -3
  284. package/dist/types/src/components/GrKbd/index.d.ts +6 -0
  285. package/dist/types/src/components/GrLink/defaults.d.ts +1 -1
  286. package/dist/types/src/components/GrModal/defaults.d.ts +1 -1
  287. package/dist/types/src/components/GrNumberInput/defaults.d.ts +1 -1
  288. package/dist/types/src/components/GrPagination/defaults.d.ts +1 -1
  289. package/dist/types/src/components/GrPopover/GrPopover.vue.d.ts +1 -1
  290. package/dist/types/src/components/GrPopover/defaults.d.ts +1 -1
  291. package/dist/types/src/components/GrProgressBar/defaults.d.ts +1 -1
  292. package/dist/types/src/components/GrProgressCircle/defaults.d.ts +1 -1
  293. package/dist/types/src/components/GrProgressCircle/grProgressCircleStyles.d.ts +1 -1
  294. package/dist/types/src/components/GrPromptDialog/defaults.d.ts +1 -1
  295. package/dist/types/src/components/GrRadio/defaults.d.ts +1 -1
  296. package/dist/types/src/components/GrRadio/grRadioGroupContext.d.ts +12 -4
  297. package/dist/types/src/components/GrRadioGroup/defaults.d.ts +1 -1
  298. package/dist/types/src/components/GrRating/GrRating.vue.d.ts +9 -4
  299. package/dist/types/src/components/GrRating/defaults.d.ts +1 -1
  300. package/dist/types/src/components/GrSegmented/defaults.d.ts +1 -1
  301. package/dist/types/src/components/GrSelect/defaults.d.ts +1 -1
  302. package/dist/types/src/components/GrSlider/defaults.d.ts +1 -1
  303. package/dist/types/src/components/GrSortableList/GrSortableList.vue.d.ts +68 -0
  304. package/dist/types/src/components/GrSortableList/config.d.ts +1 -0
  305. package/dist/types/src/components/GrSortableList/grSortableListStyles.d.ts +37 -0
  306. package/dist/types/src/components/GrSortableList/index.d.ts +9 -0
  307. package/dist/types/src/components/GrSortableList/safelist.d.ts +1 -0
  308. package/dist/types/src/components/GrSplitter/defaults.d.ts +1 -1
  309. package/dist/types/src/components/GrStatistic/GrStatistic.vue.d.ts +12 -9
  310. package/dist/types/src/components/GrStatistic/defaults.d.ts +1 -1
  311. package/dist/types/src/components/GrStatistic/grStatisticStyles.d.ts +1 -2
  312. package/dist/types/src/components/GrSwitch/defaults.d.ts +1 -1
  313. package/dist/types/src/components/GrTable/GrTable.vue.d.ts +13 -0
  314. package/dist/types/src/components/GrTable/defaults.d.ts +1 -1
  315. package/dist/types/src/components/GrTabs/GrTabs.vue.d.ts +6 -2
  316. package/dist/types/src/components/GrTabs/defaults.d.ts +1 -1
  317. package/dist/types/src/components/GrTextarea/defaults.d.ts +1 -1
  318. package/dist/types/src/components/GrTextarea/grTextareaStyles.d.ts +2 -2
  319. package/dist/types/src/components/GrTimeline/defaults.d.ts +1 -1
  320. package/dist/types/src/components/GrTimeline/grTimelineStyles.d.ts +1 -1
  321. package/dist/types/src/components/GrToaster/GrToaster.vue.d.ts +8 -0
  322. package/dist/types/src/components/GrToaster/grToasterStyles.d.ts +27 -0
  323. package/dist/types/src/components/GrTooltip/defaults.d.ts +1 -1
  324. package/dist/types/src/components/GrTree/defaults.d.ts +1 -1
  325. package/dist/types/src/components/GrTree/grTreeInteractionContext.d.ts +0 -1
  326. package/dist/types/src/components/GrTree/grTreeProps.d.ts +11 -4
  327. package/dist/types/src/components/GrTree/safelist.d.ts +1 -1
  328. package/dist/types/src/components/GrTreeSelect/defaults.d.ts +1 -1
  329. package/dist/types/src/components/shared/hotkey.d.ts +7 -15
  330. package/dist/types/src/components/shared/hotkeyTokens.d.ts +37 -0
  331. package/dist/types/src/components/shared/icon.d.ts +13 -0
  332. package/dist/types/src/composables/internal/dragSortGeometry.d.ts +59 -0
  333. package/dist/types/src/composables/internal/overlayStack.d.ts +11 -0
  334. package/dist/types/src/composables/useDragGesture.d.ts +63 -0
  335. package/dist/types/src/composables/useDragSort.d.ts +80 -0
  336. package/dist/types/src/composables/useFloating.d.ts +5 -1
  337. package/dist/types/src/composables/useGrComponentConfig.d.ts +41 -0
  338. package/dist/types/src/composables/useGranularityTranslations.d.ts +13 -0
  339. package/dist/types/src/composables/useRovingFocus.d.ts +108 -0
  340. package/dist/types/src/granular-provider/shared.d.ts +1 -0
  341. package/dist/types/src/i18n/messages/en.d.ts +48 -0
  342. package/dist/types/src/i18n/messages/es.d.ts +48 -0
  343. package/dist/types/src/i18n/messages/ru.d.ts +48 -0
  344. package/dist/types/src/index.d.ts +12 -0
  345. package/dist/types/src/internal/keyboard.d.ts +6 -0
  346. package/dist/types/src/testing/announcer.d.ts +10 -0
  347. package/dist/types/src/testing/context.d.ts +36 -0
  348. package/dist/types/src/testing/env.d.ts +25 -0
  349. package/dist/types/src/testing/geometry.d.ts +23 -0
  350. package/dist/types/src/testing/index.d.ts +12 -0
  351. package/dist/types/src/testing/pointer.d.ts +31 -0
  352. package/dist/types/src/theme/apply.d.ts +27 -0
  353. package/dist/types/src/theme/color.d.ts +35 -0
  354. package/dist/types/src/theme/extendTheme.d.ts +63 -0
  355. package/dist/types/src/theme/index.d.ts +22 -0
  356. package/dist/types/src/theme/roles.d.ts +16 -0
  357. package/dist/types/src/theme/tone.d.ts +32 -0
  358. package/dist/types/src/theme/validate.d.ts +16 -0
  359. package/dist/types/src/tokens/types.d.ts +8 -0
  360. package/dist/web-types.json +214 -13
  361. package/package.json +47 -4
  362. package/tokens/themes/dark.json +2 -1
  363. package/dist/chunks/chevron-right-BfqMVpbB.js.map +0 -1
  364. package/dist/chunks/config-8Pcutu1j.js.map +0 -1
  365. package/dist/chunks/config-B-g6lT19.js.map +0 -1
  366. package/dist/chunks/config-BE6n20np.js.map +0 -1
  367. package/dist/chunks/config-BKvX0q10.js.map +0 -1
  368. package/dist/chunks/config-BNfQwyL4.js +0 -97
  369. package/dist/chunks/config-BNfQwyL4.js.map +0 -1
  370. package/dist/chunks/config-BoNR7_PD.js.map +0 -1
  371. package/dist/chunks/config-CN2ULSQL2.js.map +0 -1
  372. package/dist/chunks/config-CY0_6cMi.js.map +0 -1
  373. package/dist/chunks/config-Cw6TDzWv2.js.map +0 -1
  374. package/dist/chunks/config-D8tSR2uS.js.map +0 -1
  375. package/dist/chunks/config-DpqOnJiz2.js.map +0 -1
  376. package/dist/chunks/config-DxCTVBfx.js.map +0 -1
  377. package/dist/chunks/config-LGrZIdaZ.js +0 -21
  378. package/dist/chunks/config-LGrZIdaZ.js.map +0 -1
  379. package/dist/chunks/config-Rw9OyW70.js.map +0 -1
  380. package/dist/chunks/config-T3qdQBgU.js.map +0 -1
  381. package/dist/chunks/config-eXB87DOi2.js.map +0 -1
  382. package/dist/chunks/en-B3xMeswz.js.map +0 -1
  383. package/dist/chunks/es-CA-mkU--.js.map +0 -1
  384. package/dist/chunks/grKbdStyles-DAoxiytu.js +0 -31
  385. package/dist/chunks/grKbdStyles-DAoxiytu.js.map +0 -1
  386. package/dist/chunks/granular-provider-CtrXGa7c.js.map +0 -1
  387. package/dist/chunks/keyboard-zYvvyHd4.js.map +0 -1
  388. package/dist/chunks/optionFilter-BVY988pC.js.map +0 -1
  389. package/dist/chunks/ru-COWxgh2A.js.map +0 -1
  390. package/dist/chunks/useOverlayLayer-BupuP_hs.js.map +0 -1
  391. package/dist/components/GrAutocomplete/chunks/GrAutocomplete-CQ9T7Lly.js.map +0 -1
  392. package/dist/components/GrBreadcrumbs/chunks/GrBreadcrumbs-BCNGDS6k.js.map +0 -1
  393. package/dist/components/GrCommandPalette/chunks/GrCommandPalette-MWDYDPNC.js.map +0 -1
  394. package/dist/components/GrDataTable/chunks/GrDataTable-DVFho9Cj.js.map +0 -1
  395. package/dist/components/GrImageViewer/chunks/GrImageViewer-BeCnE8XQ.js.map +0 -1
  396. package/dist/components/GrInput/chunks/GrInput-DD2gYdqS.js.map +0 -1
  397. package/dist/components/GrInputTag/chunks/GrInputTag-DmNunixz.js.map +0 -1
  398. package/dist/components/GrKbd/chunks/GrKbd-DRFPvW3G.js.map +0 -1
  399. package/dist/components/GrPagination/chunks/GrPagination-B6N0QZBf.js.map +0 -1
  400. package/dist/components/GrProgressBar/chunks/GrProgressBar-BiHnaitu.js.map +0 -1
  401. package/dist/components/GrRadio/chunks/GrRadio-DksDro_U.js.map +0 -1
  402. package/dist/components/GrRadioGroup/chunks/GrRadioGroup-BOIhejE6.js.map +0 -1
  403. package/dist/components/GrRating/chunks/GrRating-JrHXz0Rv.js.map +0 -1
  404. package/dist/components/GrSegmented/chunks/GrSegmented-BQIlH5KI.js.map +0 -1
  405. package/dist/components/GrSelect/chunks/GrSelect-aqkPCqjd.js.map +0 -1
  406. package/dist/components/GrSlider/chunks/GrSlider-DkU9IQSX.js.map +0 -1
  407. package/dist/components/GrSplitter/chunks/GrSplitter-7To8jbJ8.js.map +0 -1
  408. package/dist/components/GrStatistic/chunks/GrStatistic-CttyoYPT.js.map +0 -1
  409. package/dist/components/GrTable/chunks/GrTable-BB-mI_NM.js.map +0 -1
  410. package/dist/components/GrTabs/chunks/GrTabs-B8CDq2D9.js.map +0 -1
  411. package/dist/components/GrToaster/chunks/GrToaster-BKQy3Srm.js.map +0 -1
  412. package/dist/components/GrTree/chunks/GrTree-wfdbvygw.js.map +0 -1
  413. package/dist/components/GrTreeSelect/chunks/GrTreeSelect-lLWmAMtI.js.map +0 -1
  414. package/dist/tokens.js.map +0 -1
  415. package/dist/chunks/{config-8Pcutu1j.js → config-8Pcutu1j2.js} +0 -0
  416. package/dist/chunks/{config-BE6n20np.js → config-BE6n20np2.js} +0 -0
  417. package/dist/chunks/{config-BKvX0q10.js → config-BKvX0q102.js} +0 -0
  418. package/dist/chunks/{config-BoNR7_PD.js → config-BoNR7_PD2.js} +0 -0
  419. package/dist/chunks/{config-CN2ULSQL2.js → config-CN2ULSQL.js} +0 -0
  420. package/dist/chunks/{config-CY0_6cMi.js → config-CY0_6cMi2.js} +0 -0
  421. package/dist/chunks/{config-Rw9OyW70.js → config-Rw9OyW702.js} +0 -0
  422. package/dist/chunks/{config-T3qdQBgU.js → config-T3qdQBgU2.js} +0 -0
  423. package/dist/chunks/{config-eXB87DOi2.js → config-eXB87DOi.js} +0 -0
  424. package/dist/components/GrCollapse/chunks/{GrCollapse-B2Fc6A9r.js → GrCollapse-Kk0DE8tb.js} +1 -1
  425. /package/dist/types/src/composables/{internal/useComboboxNavigation.d.ts → useComboboxNavigation.d.ts} +0 -0
@@ -27,7 +27,7 @@ export declare const markerFilledToneClass: Record<GrTimelineTone, string>;
27
27
  /** Полая точка: обводка тоном, середина — фон страницы, чтобы ось не просвечивала. */
28
28
  export declare const markerOutlinedToneClass: Record<GrTimelineTone, string>;
29
29
  export declare const markerBaseClass = "block shrink-0 rounded-[var(--gr-radius-full)]";
30
- export declare const timeClass = "text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-normal)] text-[var(--gr-muted-fg)] [font-variant-numeric:tabular-nums]";
30
+ export declare const timeClass = "text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-normal)] text-[var(--gr-muted-fg)] tabular-nums";
31
31
  export declare const titleClass = "text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-normal)] font-600 text-[var(--gr-fg)]";
32
32
  export declare const descriptionClass = "mt-0.5 text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-normal)] text-[var(--gr-muted-fg)]";
33
33
  export declare const groupTitleClass = "text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-normal)] font-600 uppercase tracking-wide text-[var(--gr-muted-fg)]";
@@ -20,6 +20,11 @@ export interface GrToasterProps {
20
20
  * `F6` — рекомендация APG для перехода между «регионами» страницы.
21
21
  */
22
22
  focusHotkey?: string | false;
23
+ /**
24
+ * Смахивание тоста к своему краю экрана. Клавиатурный эквивалент — `Delete`
25
+ * и `Backspace` на сфокусированном тосте — остаётся и при выключенном жесте.
26
+ */
27
+ swipeDismiss?: boolean;
23
28
  }
24
29
  /**
25
30
  * Слот `actions` полностью заменяет дефолтные action-кнопки тоста. Получает сам
@@ -44,6 +49,7 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
44
49
  regionLabel: undefined;
45
50
  width: undefined;
46
51
  focusHotkey: string;
52
+ swipeDismiss: boolean;
47
53
  }>>, {
48
54
  focus: typeof focus;
49
55
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<GrToasterProps>, {
@@ -53,6 +59,7 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
53
59
  regionLabel: undefined;
54
60
  width: undefined;
55
61
  focusHotkey: string;
62
+ swipeDismiss: boolean;
56
63
  }>>> & Readonly<{}>, {
57
64
  width: string | number;
58
65
  placement: GrToasterPlacement;
@@ -60,6 +67,7 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
60
67
  regionLabel: string;
61
68
  maxVisible: number;
62
69
  focusHotkey: string | false;
70
+ swipeDismiss: boolean;
63
71
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
64
72
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
65
73
  declare const _default: typeof __VLS_export;
@@ -1,2 +1,29 @@
1
1
  export type GrToasterPlacement = 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left';
2
2
  export declare const PLACEMENT_CLASS: Record<GrToasterPlacement, string>;
3
+ /**
4
+ * Куда смахивается тост: к своему краю экрана. Стек у правого края уходит
5
+ * вправо, у левого — влево; смахивание «вглубь экрана» читалось бы как попытка
6
+ * достать что-то из-под тоста, а не выбросить его.
7
+ */
8
+ export declare const SWIPE_DIRECTION: Record<GrToasterPlacement, 1 | -1>;
9
+ /** Доля ширины тоста, после которой отпускание закрывает, а не возвращает. */
10
+ export declare const SWIPE_THRESHOLD_RATIO = 0.25;
11
+ /** Нижняя граница порога: на узком стеке четверть ширины слишком мала. */
12
+ export declare const SWIPE_THRESHOLD_MIN_PX = 56;
13
+ /**
14
+ * Сопротивление движению не в свою сторону. Жест остаётся живым — тост едет за
15
+ * пальцем, — но закрыть его «наоборот» нельзя: это была бы вторая, неочевидная
16
+ * дорога к тому же действию.
17
+ */
18
+ export declare const SWIPE_RESISTANCE = 4;
19
+ /**
20
+ * Куда уезжает отпущенный тост. Заведомо дальше своей ширины: он должен уйти
21
+ * за край экрана, а не остановиться на полпути.
22
+ */
23
+ export declare const SWIPE_FLY_OUT_PX = 600;
24
+ /**
25
+ * Смещение, на котором тост становится полностью прозрачным, — вдвое дальше
26
+ * порога. К моменту закрытия он уже наполовину растворён, и уход не выглядит
27
+ * мгновенным исчезновением.
28
+ */
29
+ export declare function swipeOpacity(offset: number, threshold: number): number;
@@ -3,7 +3,7 @@ import type { GrComponentSize } from '../GrConfigProvider/context';
3
3
  export interface GrTooltipConfigurableProps {
4
4
  size: GrComponentSize;
5
5
  }
6
- declare module '../GrConfigProvider/context' {
6
+ declare module '../../composables/useGrComponentConfig' {
7
7
  interface GrComponentDefaultsRegistry {
8
8
  GrTooltip: GrTooltipConfigurableProps;
9
9
  }
@@ -3,7 +3,7 @@ import type { GrComponentSize } from '../GrConfigProvider/context';
3
3
  export interface GrTreeConfigurableProps {
4
4
  size: GrComponentSize;
5
5
  }
6
- declare module '../GrConfigProvider/context' {
6
+ declare module '../../composables/useGrComponentConfig' {
7
7
  interface GrComponentDefaultsRegistry {
8
8
  GrTree: GrTreeConfigurableProps;
9
9
  }
@@ -20,7 +20,6 @@ export type GrTreeInteractionEmitters<T> = {
20
20
  export type GrTreeInteractionContext<T> = {
21
21
  hoveredKey: Ref<GrTreeKey | undefined>;
22
22
  /** Клавиша узла, держащего roving-фокус (единственный tabindex=0 во всём дереве). */
23
- focusedKey: Ref<GrTreeKey | undefined>;
24
23
  /**
25
24
  * Реестр DOM-узлов строк, общий на все уровни дерева. Нужен клавиатуре: без
26
25
  * него каждое нажатие стрелки обходило бы весь DOM поддерева в поисках
@@ -1,4 +1,4 @@
1
- import type { HTMLAttributes } from 'vue';
1
+ import type { Component, HTMLAttributes } from 'vue';
2
2
  import type { GrTreeSize } from './grTreeStyles';
3
3
  import type { GrTreeAllowDropType, GrTreeKey, GrTreeNode } from './grTreeTypes';
4
4
  export type NodeKeyProp<T extends object> = Extract<keyof T, string>;
@@ -71,8 +71,14 @@ export type GrTreeViewProps<T extends object> = {
71
71
  /** Максимальная высота дерева со своим скроллером. Число — пиксели. */
72
72
  maxHeight?: number | string;
73
73
  highlightCurrent?: boolean;
74
- expandIcon?: string;
75
- collapseIcon?: string;
74
+ /**
75
+ * Иконка свёрнутого узла: Vue-компонент либо класс иконки вашей UnoCSS-сборки
76
+ * (`'i-lucide-plus'` — тогда нужен ваш `presetIcons`, см. `docs/installation.md`).
77
+ * Не задана — встроенная стрелка.
78
+ */
79
+ expandIcon?: string | Component;
80
+ /** Иконка раскрытого узла. Не задана — та же встроенная стрелка, повёрнутая. */
81
+ collapseIcon?: string | Component;
76
82
  toggleIconRotate?: boolean;
77
83
  branchLine?: boolean;
78
84
  branchLineColor?: GrTreeBranchLineColor<T>;
@@ -96,7 +102,8 @@ export type GrTreeInteractionProps<T extends object> = {
96
102
  /** На каждом уровне раскрыт максимум один узел. */
97
103
  accordion?: boolean;
98
104
  draggable?: boolean;
99
- dragHandleIcon?: string;
105
+ /** Иконка ручки переноса: компонент, класс иконки или ничего — тогда встроенная. */
106
+ dragHandleIcon?: string | Component;
100
107
  allowDrop?: (draggingNode: GrTreeNode<T>, dropNode: GrTreeNode<T>, type: GrTreeAllowDropType) => boolean;
101
108
  allowDrag?: (draggingNode: GrTreeNode<T>) => boolean;
102
109
  };
@@ -1 +1 @@
1
- export declare const grTreeSafelist: readonly ["i-lucide-chevron-right", "i-lucide-grip-vertical"];
1
+ export declare const grTreeSafelist: readonly [];
@@ -3,7 +3,7 @@ import type { GrComponentSize } from '../GrConfigProvider/context';
3
3
  export interface GrTreeSelectConfigurableProps {
4
4
  size: GrComponentSize;
5
5
  }
6
- declare module '../GrConfigProvider/context' {
6
+ declare module '../../composables/useGrComponentConfig' {
7
7
  interface GrComponentDefaultsRegistry {
8
8
  GrTreeSelect: GrTreeSelectConfigurableProps;
9
9
  }
@@ -10,6 +10,10 @@
10
10
  * а палитра в закрытом состоянии не рендерит ничего. Поэтому здесь — свой
11
11
  * матчер на `window`, с тем же синтаксисом комбинаций плюс токен `mod`.
12
12
  */
13
+ import { type HotkeyKeyView } from './hotkeyTokens';
14
+ export { isAppleDevice } from '../../internal/keyboard';
15
+ export { findKbdToken, GR_KBD_TOKENS } from './hotkeyTokens';
16
+ export type { GrKbdKeyName, GrKbdTokenGroup, GrKbdTokenSpec, HotkeyKeyView } from './hotkeyTokens';
13
17
  export type ParsedCommandHotkey = {
14
18
  key: string;
15
19
  ctrl: boolean;
@@ -20,25 +24,13 @@ export type ParsedCommandHotkey = {
20
24
  mod: boolean;
21
25
  };
22
26
  export declare function parseCommandHotkey(combo: string): ParsedCommandHotkey | null;
23
- /** macOS определяем по платформе — от неё зависит, чем является `mod`. */
24
- export declare function isAppleDevice(): boolean;
25
27
  export declare function matchesCommandHotkey(event: KeyboardEvent, hotkey: ParsedCommandHotkey, apple?: boolean): boolean;
26
28
  /** Человекочитаемые клавиши для подсказки в поле ввода (`⌘` / `Ctrl`). */
27
29
  export declare function formatCommandHotkey(hotkey: ParsedCommandHotkey, apple?: boolean): string[];
28
- /** Одна клавиша в человекочитаемом виде. */
29
- export interface HotkeyKeyView {
30
- /** Что видно на экране: символ (`⌘`) или слово (`Ctrl`). */
31
- label: string;
32
- /**
33
- * Ключ читаемого имени (`gr.kbd.<name>`) для символьных клавиш. У `K` или
34
- * `Ctrl` его нет — они и так читаются вслух.
35
- */
36
- name?: 'command' | 'option' | 'shift' | 'control' | 'enter' | 'escape';
37
- }
38
30
  /**
39
- * Токен → то, что видит пользователь. `mod` зависит от платформы: на macOS это
40
- * Cmd, на остальных Ctrl. Символы отдаются вместе с ключом читаемого имени:
41
- * `⌘` без имени диктор произносит как «знак места интереса».
31
+ * Токен → то, что видит пользователь. Каталог общий с витриной и докой
32
+ * (`hotkeyTokens.ts`): цепочка `if` расходилась бы со списком, который читает
33
+ * потребитель.
42
34
  */
43
35
  export declare function formatHotkeyToken(token: string, apple: boolean): HotkeyKeyView;
44
36
  export declare function formatHotkeyTokens(tokens: readonly string[], apple: boolean): HotkeyKeyView[];
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Каталог клавиш, которые понимает `keys` у `GrKbd`.
3
+ *
4
+ * Таблица, а не цепочка `if`, по двум причинам: во-первых, список — часть
5
+ * публичного контракта (потребителю нужно знать, что можно написать), и
6
+ * витрина показывает именно его, а не свою копию; во-вторых, копия в демо или
7
+ * в доке разошлась бы с форматтером молча.
8
+ */
9
+ /** Ключи читаемых имён — `gr.kbd.<name>`. */
10
+ export type GrKbdKeyName = 'command' | 'option' | 'shift' | 'control' | 'enter' | 'escape' | 'tab' | 'backspace' | 'delete' | 'pageUp' | 'pageDown' | 'arrowUp' | 'arrowDown' | 'arrowLeft' | 'arrowRight';
11
+ /** Одна клавиша в человекочитаемом виде. */
12
+ export interface HotkeyKeyView {
13
+ /** Что видно на экране: символ (`⌘`) или слово (`Ctrl`). */
14
+ label: string;
15
+ /**
16
+ * Ключ читаемого имени (`gr.kbd.<name>`) для символьных клавиш. У `K` или
17
+ * `Ctrl` его нет — они и так читаются вслух.
18
+ */
19
+ name?: GrKbdKeyName;
20
+ /** Символ (`⌘`, `↑`) или слово (`Ctrl`, `Esc`): от этого зависит склейка в одной плашке. */
21
+ symbol?: boolean;
22
+ }
23
+ /** Смысловая группа — ею витрина и дока раскладывают каталог. */
24
+ export type GrKbdTokenGroup = 'modifier' | 'editing' | 'navigation';
25
+ export interface GrKbdTokenSpec {
26
+ /** Канонический токен: его пишут в `keys`. */
27
+ token: string;
28
+ /** Что ещё принимается — синонимы и сам глиф. */
29
+ aliases: readonly string[];
30
+ group: GrKbdTokenGroup;
31
+ /** Вид на macOS и на остальных платформах. */
32
+ apple: HotkeyKeyView;
33
+ other: HotkeyKeyView;
34
+ }
35
+ export declare const GR_KBD_TOKENS: readonly GrKbdTokenSpec[];
36
+ /** Токен или его синоним — в описание клавиши. Регистр не важен, глиф тоже принимается. */
37
+ export declare function findKbdToken(token: string): GrKbdTokenSpec | undefined;
@@ -0,0 +1,13 @@
1
+ import type { Component } from 'vue';
2
+ /**
3
+ * Иконку компонент получает двумя способами, и рисуются они разными тегами.
4
+ *
5
+ * Vue-компонент пакет рисует сам — он ни от чего не зависит. Класс иконки
6
+ * (`i-lucide-*`) генерирует не пакет, а UnoCSS-сборка приложения: без своего
7
+ * `presetIcons` потребитель получит пустое место вместо картинки
8
+ * (`docs/installation.md`). Поэтому класс уезжает в `:class` пустого `span`,
9
+ * а компонент — в `:is`.
10
+ */
11
+ export declare function iconTag(icon: string | Component | undefined, fallback?: string | Component): string | Component;
12
+ /** Класс иконки, если она задана строкой; для компонента классов нет. */
13
+ export declare function iconClass(icon: string | Component | undefined): string;
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Геометрия перестановки: чистая арифметика без DOM и без реактивности.
3
+ *
4
+ * Вынесена отдельно, потому что ошибка здесь проявляется не исключением, а
5
+ * «элемент встал не туда» — поймать это можно только тестом на числах.
6
+ * Композабл `useDragSort` сводит `DOMRect` к отрезкам вдоль оси и зовёт эти
7
+ * функции; какой смысл у попадания, решает уже компонент.
8
+ */
9
+ /** Отрезок, занимаемый элементом вдоль оси переноса. */
10
+ export interface DragSortSpan {
11
+ start: number;
12
+ end: number;
13
+ }
14
+ export interface DragSortHitResult {
15
+ /** Индекс элемента в переданном наборе. */
16
+ index: number;
17
+ /** Доля вдоль элемента: 0 — его начало, 1 — конец. */
18
+ fraction: number;
19
+ }
20
+ /**
21
+ * Какой элемент под указателем и в каком месте его.
22
+ *
23
+ * Промах не отбрасывается: между строками есть зазоры, а курсор уезжает за
24
+ * край списка — и в обоих случаях перенос обязан продолжать показывать
25
+ * ближайшую цель, иначе индикатор мигает на каждом пикселе между строками.
26
+ *
27
+ * Вырожденный отрезок (нулевая высота строки) даёт `fraction: 0` — цель
28
+ * остаётся детерминированной, а не зависящей от направления подхода.
29
+ */
30
+ export declare function hitTest(spans: readonly DragSortSpan[], position: number): DragSortHitResult | null;
31
+ /**
32
+ * Куда встанет элемент, если отпустить сейчас.
33
+ *
34
+ * Верхняя половина строки — «до неё», нижняя — «после». Индекс возвращается
35
+ * **в терминах итогового массива**, то есть уже с поправкой на то, что
36
+ * перетаскиваемый элемент из него временно вынут: без поправки перенос вниз
37
+ * на одну позицию не двигал бы ничего.
38
+ */
39
+ export declare function insertionIndex(hit: DragSortHitResult, from: number, count: number): number;
40
+ export interface AutoScrollOptions {
41
+ /** Ширина чувствительной полосы у каждого края, px. По умолчанию 32. */
42
+ zone?: number;
43
+ /** Скорость на самом краю, px за кадр. По умолчанию 12. */
44
+ speed?: number;
45
+ }
46
+ /**
47
+ * На сколько прокрутить контейнер за кадр: отрицательное — к началу.
48
+ *
49
+ * Скорость растёт линейно по мере приближения к краю, а не включается
50
+ * ступенькой: ступенька на длинном списке ощущается как рывок и промахивается
51
+ * мимо цели.
52
+ */
53
+ export declare function autoScrollDelta(viewport: DragSortSpan, position: number, options?: AutoScrollOptions): number;
54
+ /**
55
+ * Перестановка без мутации входа: массив потребителя остаётся нетронутым,
56
+ * наружу уходит новый. `v-model` с мутацией исходного набора ломает и
57
+ * сравнение «было — стало», и историю в сторе потребителя.
58
+ */
59
+ export declare function moveItem<T>(items: readonly T[], from: number, to: number): T[];
@@ -10,6 +10,9 @@
10
10
  * - **`inert`** → ставится на модальные слои ниже последнего **модального**.
11
11
  * Немодальный слой сверху модалку не понижает: иначе окно ушло бы в `inert`
12
12
  * вместе со своим же открытым дропдауном и перестало отвечать.
13
+ * - **высота** → `openModalCount()` поднимает floating-панель над окном, из
14
+ * которого её открыли: телепортированная панель лежит рядом с корнем окна,
15
+ * и статический `z-index` дропдауна оставлял её под ним.
13
16
  *
14
17
  * Вести эти две вершины в двух независимых реестрах нельзя: реестры описывают
15
18
  * один и тот же порядок и расходятся молча — достаточно оверлея, который
@@ -56,5 +59,13 @@ export declare function layerRootsAbove(id: number): HTMLElement[];
56
59
  export declare function allLayerRoots(): HTMLElement[];
57
60
  /** Сколько слоёв открыто. Для тестов и диагностики. */
58
61
  export declare function overlayStackSize(): number;
62
+ /**
63
+ * Сколько **модальных** слоёв открыто прямо сейчас.
64
+ *
65
+ * Читает `useFloating`, когда считает высоту панели: панель телепортирована в
66
+ * общий портал и лежит рядом с корнем окна, а не внутри него, поэтому свой
67
+ * стек-контекст её не спасает — высоту приходится брать из порядка слоёв.
68
+ */
69
+ export declare function openModalCount(): number;
59
70
  /** Тестовая/служебная очистка стека. */
60
71
  export declare function resetOverlayStack(): void;
@@ -0,0 +1,63 @@
1
+ import type { Ref } from 'vue';
2
+ /**
3
+ * Скелет указательного жеста: нажал, повёл, отпустил.
4
+ *
5
+ * Механика написана в пакете дважды дословно (`GrSlider`, `GrSplitter`) и
6
+ * ещё раз иначе (`GrImageViewer`), а следующие потребители известны заранее —
7
+ * swipe у `GrToaster`, перенос узла в `GrTree`, ресайз колонок `GrDataTable`.
8
+ * Дублируется при этом не разметка, а **правило**: оборванный жест не
9
+ * коммитит. Живя в двух копиях, оно разъезжается молча.
10
+ *
11
+ * Слушатели вешаются на `window`, а не на элемент: указатель уходит за
12
+ * границы дорожки и разделителя постоянно, и жест обязан это переживать.
13
+ * Захват (`setPointerCapture`) дал бы то же самое, но привязал бы жест к
14
+ * живому DOM-узлу — а он в середине жеста может перерисоваться.
15
+ *
16
+ * У жеста **два разных исхода**, и это главное, ради чего примитив заведён:
17
+ * `pointerup` — завершение (значение коммитится), `pointercancel` — обрыв
18
+ * (браузер забрал указатель: системный жест, скролл, потеря окна), и тогда
19
+ * состояние возвращается к тому, что было до нажатия.
20
+ *
21
+ * Осознанно **не** делает:
22
+ * - не вызывает `preventDefault` — в слайдере и сплиттере это гашение
23
+ * выделения текста, а в панорамировании картинки помешало бы; строка
24
+ * дешевле опции, меняющей поведение невидимо;
25
+ * - не считает координаты и дельты — это доменная арифметика компонента;
26
+ * - не знает про порог начала жеста: он нужен сортировке, где нажатие ещё не
27
+ * означает перенос, и появится вместе с ней.
28
+ *
29
+ * ```ts
30
+ * const drag = useDragGesture({
31
+ * disabled: () => isDisabled.value,
32
+ * onStart: (event) => { activeThumb.value = nearestThumb(event) },
33
+ * onMove: (event) => setValue(valueFromPointer(event), false),
34
+ * onEnd: () => commit(),
35
+ * onCancel: () => rollback(),
36
+ * })
37
+ *
38
+ * <div @pointerdown="drag.start" />
39
+ * ```
40
+ */
41
+ export interface UseDragGestureOptions {
42
+ /** Жест не начинается: `disabled` / `readonly`. */
43
+ disabled?: () => boolean;
44
+ /**
45
+ * Нажатие прошло проверки. Вернуть `false` — жест не начинать: так
46
+ * отсеивается попадание мимо цели, когда `disabled` тут ни при чём.
47
+ */
48
+ onStart?: (event: PointerEvent) => boolean | void;
49
+ onMove: (event: PointerEvent) => void;
50
+ /** Жест завершён отпусканием: значение коммитится. */
51
+ onEnd?: (event?: PointerEvent) => void;
52
+ /** Жест оборван: откат к состоянию до нажатия. */
53
+ onCancel?: () => void;
54
+ }
55
+ export interface UseDragGestureReturn {
56
+ /** Идёт ли жест. Менять снаружи не нужно — состоянием владеет примитив. */
57
+ isDragging: Ref<boolean>;
58
+ /** Вешается на `@pointerdown` цели. */
59
+ start: (event: PointerEvent) => void;
60
+ /** Принудительное завершение. По умолчанию — как обрыв, без коммита. */
61
+ stop: (commit?: boolean) => void;
62
+ }
63
+ export declare function useDragGesture(options: UseDragGestureOptions): UseDragGestureReturn;
@@ -0,0 +1,80 @@
1
+ import type { Ref } from 'vue';
2
+ /**
3
+ * Модель перестановки: перенос элемента указателем и с клавиатуры.
4
+ *
5
+ * Композабл владеет **механикой** — сессией жеста поверх `useDragGesture`,
6
+ * порогом начала, попаданием в элемент, автопрокруткой у краёв и состоянием
7
+ * переноса. **Смысл** остаётся у компонента: что считать целью (индекс вставки
8
+ * у списка, «до / внутрь / после» у дерева), какими клавишами это делается и
9
+ * что сказать в живой регион.
10
+ *
11
+ * Граница проведена так не из вкуса: у списка цель переноса — число, у дерева —
12
+ * пара «узел и зона», а `Space` в дереве уже занят чекбоксом. Общая у них
13
+ * механика, а не семантика; обобщать семантику значило бы завести опцию на
14
+ * каждое расхождение.
15
+ *
16
+ * Данные композабл не меняет: он сообщает «источник и цель», перестановку
17
+ * делает потребитель (`moveItem` из `internal/dragSortGeometry` — если она
18
+ * обычная).
19
+ *
20
+ * ```ts
21
+ * const sort = useDragSort<string, number>({
22
+ * items: () => keys.value,
23
+ * elementFor: key => rowEls.get(key),
24
+ * scroller: () => scrollerEl.value,
25
+ * resolveTarget: (hit, source) => insertionIndex(hit, indexOf(source), keys.value.length),
26
+ * onDrop: (source, to) => emit('move', indexOf(source), to),
27
+ * })
28
+ * ```
29
+ */
30
+ export type DragSortOrientation = 'vertical' | 'horizontal';
31
+ /** Чем ведётся перенос: указателем или с клавиатуры. */
32
+ export type DragSortMode = 'pointer' | 'keyboard';
33
+ export interface DragSortHit<TKey> {
34
+ key: TKey;
35
+ index: number;
36
+ /** Доля вдоль элемента: 0 — начало, 1 — конец. Зоны нарезает компонент. */
37
+ fraction: number;
38
+ }
39
+ export interface UseDragSortOptions<TKey, TTarget> {
40
+ items: () => readonly TKey[];
41
+ elementFor: (key: TKey) => HTMLElement | null | undefined;
42
+ /** По умолчанию `vertical`. */
43
+ orientation?: () => DragSortOrientation;
44
+ /** Скроллер для автопрокрутки у краёв. Не задан — автопрокрутки нет. */
45
+ scroller?: () => HTMLElement | null | undefined;
46
+ disabled?: () => boolean;
47
+ canDrag?: (key: TKey) => boolean;
48
+ /** Сдвиг, после которого нажатие становится переносом. По умолчанию 4px. */
49
+ threshold?: () => number;
50
+ /**
51
+ * Попадание указателя → цель переноса. `null` — сюда положить нельзя.
52
+ *
53
+ * Третьим аргументом приходит прежняя цель: цели сравниваются по ссылке, и
54
+ * объектной цели (как «узел плюс зона» у дерева) стоит вернуть **ту же**
55
+ * ссылку, пока смысл не изменился, — иначе подсветка и объявления будут
56
+ * дёргаться на каждом движении указателя.
57
+ */
58
+ resolveTarget: (hit: DragSortHit<TKey>, source: TKey, previous: TTarget | null) => TTarget | null;
59
+ /** Перенос состоялся. */
60
+ onDrop: (source: TKey, target: TTarget) => void;
61
+ /** Состояние изменилось: подсветка строк и объявления — на этом. */
62
+ onUpdate?: (source: TKey | null, target: TTarget | null, mode: DragSortMode | null) => void;
63
+ }
64
+ export interface UseDragSortReturn<TKey, TTarget> {
65
+ source: Ref<TKey | null>;
66
+ target: Ref<TTarget | null>;
67
+ mode: Ref<DragSortMode | null>;
68
+ isActive: Ref<boolean>;
69
+ /** Вешается на `@pointerdown` ручки или строки. */
70
+ startFrom: (key: TKey) => (event: PointerEvent) => void;
71
+ /** Клавиатурный перенос: взять элемент. */
72
+ grab: (key: TKey) => void;
73
+ /** Клавиатурный перенос: назначить цель (двигать ведёт компонент). */
74
+ setTarget: (target: TTarget | null) => void;
75
+ /** Положить: если цель есть — состоится `onDrop`. */
76
+ drop: () => void;
77
+ /** Отменить: ничего не переносится. */
78
+ cancel: () => void;
79
+ }
80
+ export declare function useDragSort<TKey, TTarget>(options: UseDragSortOptions<TKey, TTarget>): UseDragSortReturn<TKey, TTarget>;
@@ -21,7 +21,11 @@ export interface UseFloatingOptions {
21
21
  * - функция-геттер — как и `placement`, для реактивной зависимости от пропа.
22
22
  */
23
23
  matchWidth?: boolean | 'min' | (() => boolean | 'min');
24
- /** CSS-переменная шкалы слоёв (см. `styles/tokens.css`). По умолчанию `--gr-z-dropdown`. */
24
+ /**
25
+ * CSS-переменная шкалы слоёв (см. `styles/tokens.css`). По умолчанию
26
+ * `--gr-z-dropdown`. Действует, пока панель открыта вне модального окна: над
27
+ * окном высоту задаёт стек слоёв (см. {@link floatingZIndex}).
28
+ */
25
29
  zIndexVar?: string;
26
30
  }
27
31
  export interface UseFloatingReturn {
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Чтение дефолтов `GrConfigProvider` — публичной точкой входа.
3
+ *
4
+ * Сами функции живут в `components/GrConfigProvider/context.ts` и оттуда же
5
+ * реэкспортируются барrelем компонента. Отдельный субпуть нужен пакетам-
6
+ * компаньонам: импорт из `components/GrConfigProvider` виден `granular doctor`
7
+ * как ребро графа компонентов, и он справедливо требует объявить зависимость.
8
+ * Объявлять её нельзя — композабл ничего не рендерит, а объявление притащило
9
+ * бы потребителю весь CSS и safelist провайдера. Импорт из `composables/*`
10
+ * ребра не создаёт.
11
+ */
12
+ export { resolveGrConfig, useGrComponentDefaults, useGrComponentProp, useGrComponentSize, useGrConfig, useGrThemeAttrs, } from '../components/GrConfigProvider/context';
13
+ export type { GrConfigContext, GrConfigSource, GrConfigurableComponent, UseGrComponentSizeOptions, } from '../components/GrConfigProvider/context';
14
+ /**
15
+ * Открытый реестр компонентов, у которых есть настраиваемые через конфиг пропы.
16
+ *
17
+ * Объявление живёт здесь, а не в `GrConfigProvider/context`, потому что это
18
+ * **точка расширения**: компонент дополняет реестр из своей папки через
19
+ * declaration merging, и то же самое обязан уметь companion-пакет. Дополнять
20
+ * можно только тот модуль, который тип объявляет; через реэкспорт-баррель
21
+ * слияние работает лишь до первой чужой аугментации, а дальше молча
22
+ * отваливается — типы расходятся с рантаймом, ошибки нет.
23
+ *
24
+ * ```ts
25
+ * // GrButton/defaults.ts
26
+ * declare module '../../composables/useGrComponentConfig' {
27
+ * interface GrComponentDefaultsRegistry {
28
+ * GrButton: GrButtonConfigurableProps
29
+ * }
30
+ * }
31
+ * ```
32
+ *
33
+ * Companion-пакет пишет тот же блок с публичным именем модуля
34
+ * `@feugene/granularity/composables/useGrComponentConfig`.
35
+ *
36
+ * Реестр пуст по умолчанию и состоит ровно из тех компонентов, которые попали
37
+ * в граф типов потребителя: импортировали только `GrButton` — в
38
+ * `componentDefaults` типизирована только кнопка.
39
+ */
40
+ export interface GrComponentDefaultsRegistry {
41
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Публичная точка входа к строкам пакета.
3
+ *
4
+ * Реализация живёт в `internal/granularityI18n.ts` и остаётся внутренней: там
5
+ * же `resolveGranularityI18n` — резолвер адаптера для кода вне `setup`, который
6
+ * публичным контрактом не является. Наружу выходит только то, что нужно
7
+ * потребителю и companion-пакетам: сам композабл и тип адаптера.
8
+ *
9
+ * Файл-фасад, а не переезд: `internal/granularityI18n` импортируют 55 файлов
10
+ * пакета, и переписывание путей ради смены директории — риск без выгоды.
11
+ */
12
+ export { useGranularityTranslations } from '../internal/granularityI18n';
13
+ export type { GranularityI18nLike } from '../internal/granularityI18n';