@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
@@ -0,0 +1,108 @@
1
+ import type { ComputedRef } from 'vue';
2
+ /**
3
+ * Roving tabindex: группа — одна остановка `Tab`, внутрь заходят стрелками.
4
+ *
5
+ * Механика написана в пакете шесть раз (`GrDropdownMenu`, `GrTree`, `GrTabs`,
6
+ * `GrSegmented`, `GrRadio`, `GrInputTag`) и разошлась не стилистически, а по
7
+ * существу: у одних кольцо зациклено, у других упирается в края; одни
8
+ * пропускают выключенные элементы, другие намеренно нет; адресуются то
9
+ * индексом, то ключом, то значением. Каждое расхождение здесь стало опцией —
10
+ * поэтому опций много, и это дешевле, чем седьмая копия.
11
+ *
12
+ * Осознанно **не** обобщается активация: `Enter`/`Space` и «двигает ли стрелка
13
+ * выбор» — доменная логика компонента. У `GrSegmented` и `GrRadio` стрелка
14
+ * меняет значение, у `GrTree` и `GrInputTag` — нет, у `GrTabs` это проп.
15
+ * Примитив ведёт фокус и отдаёт `onMove`; что делать с переездом, решает
16
+ * компонент.
17
+ *
18
+ * Инвариант «ровно один элемент с `tabindex="0"`» держит `rovingKey`: это
19
+ * `computed`, а не `ref`, поэтому при смене набора он самокорректируется в
20
+ * момент чтения. Отдельная нормализация с `watch(..., { flush: 'sync' })`,
21
+ * как в `GrTree`, больше не нужна.
22
+ */
23
+ /** Какие стрелки ведут по набору. */
24
+ export type GrRovingOrientation = 'horizontal' | 'vertical' | 'both' | 'grid';
25
+ /** Край набора, в который упёрлось движение. */
26
+ export type GrRovingEdge = 'start' | 'end';
27
+ export interface UseRovingFocusOptions<TKey> {
28
+ /** Ключи элементов в порядке отображения. Индекс, значение, opaque-ключ — что угодно сравнимое по `===`. */
29
+ items: () => readonly TKey[];
30
+ /**
31
+ * DOM-узел элемента. Массив ref-ов, `Map`, `querySelector` — примитиву
32
+ * безразлично, знать раскладку обязан компонент.
33
+ */
34
+ elementFor: (key: TKey) => HTMLElement | null | undefined;
35
+ /** Выключен ли элемент. Спрашивается только при `skipDisabled`. */
36
+ isDisabled?: (key: TKey) => boolean;
37
+ /** По умолчанию `vertical`. */
38
+ orientation?: () => GrRovingOrientation;
39
+ /** Ширина строки для `orientation: 'grid'`. Игнорируется в остальных режимах. */
40
+ columns?: () => number;
41
+ /** Замкнуто ли кольцо. По умолчанию `true`. */
42
+ wrap?: () => boolean;
43
+ /**
44
+ * Пропускать выключенные при движении. По умолчанию `false`: в паттерне
45
+ * `menu` выключенный пункт остаётся в обходе намеренно — `aria-disabled`
46
+ * оставляет его фокусируемым, чтобы скринридер прочёл, что он есть.
47
+ */
48
+ skipDisabled?: () => boolean;
49
+ /**
50
+ * Стартовый элемент, когда фокус в группе ещё не был — обычно выбранное
51
+ * значение.
52
+ *
53
+ * **Выключенность здесь не проверяется, и это не упущение.** Проверить её
54
+ * автоматически по `isDisabled` нельзя: у `GrSegmented` загружающийся сегмент
55
+ * остановку `Tab` сохраняет, хотя для движения заблокирован, а у `GrRadio`
56
+ * выключенный переключатель терять её обязан. Условие знает только вызывающий,
57
+ * поэтому геттер обязан вернуть `undefined` для значения, которое не может
58
+ * принять фокус. Забыть об этом — значит оставить группу без остановки `Tab`
59
+ * вовсе: элемент с `tabindex="0"` будет назначен, но отрисует `-1`.
60
+ */
61
+ initialKey?: () => TKey | undefined;
62
+ /**
63
+ * Позиция переехала — компонент решает, менять ли заодно выбор. Вызывается
64
+ * **до** переноса фокуса: в `radiogroup` стрелка переносит выбор, и модель
65
+ * обязана примениться раньше, чем сфокусируется целевой элемент.
66
+ */
67
+ onMove?: (key: TKey, previous: TKey | undefined) => void;
68
+ /**
69
+ * Движение упёрлось в край при `wrap: false`. Вернул `true` — считаем клавишу
70
+ * обработанной (кольцо `GrInputTag` так отдаёт фокус полю ввода, календарь —
71
+ * листает месяц).
72
+ */
73
+ onOverflow?: (edge: GrRovingEdge, delta: number) => boolean;
74
+ /**
75
+ * Донести элемент до экрана перед фокусом: виртуализация, `scrollIntoView`,
76
+ * ожидание перерисовки после `onMove`. Вернул промис — фокус ждёт ровно его,
77
+ * без добавленных примитивом тиков; вернул `undefined` — фокус остаётся
78
+ * синхронным, чтобы не менять тайминг у компонентов, которые на него
79
+ * полагаются.
80
+ */
81
+ beforeFocus?: (key: TKey) => void | Promise<void>;
82
+ }
83
+ export interface UseRovingFocusReturn<TKey> {
84
+ /** Элемент, который держит `tabindex="0"`. Никогда не «никто» при непустом наборе. */
85
+ rovingKey: ComputedRef<TKey | undefined>;
86
+ /** `0` для роверного элемента, `-1` для всех остальных. */
87
+ tabindexFor: (key: TKey) => 0 | -1;
88
+ /** Сделать активным без переноса фокуса — для синхронизации с мышью (`@focus`, `@click`). */
89
+ setActive: (key: TKey) => void;
90
+ /**
91
+ * Забыть явно наведённый фокус: остановка `Tab` возвращается к производной
92
+ * (`initialKey` → первый доступный). Нужно, когда набор опустел, — иначе
93
+ * устаревший ключ всплывёт, как только элементы появятся снова.
94
+ */
95
+ reset: () => void;
96
+ /** Сделать активным и перенести фокус. */
97
+ focusKey: (key: TKey) => Promise<void>;
98
+ /** Сдвиг на `delta` позиций от текущего. Вернёт `false`, если движение не состоялось. */
99
+ moveBy: (delta: number) => boolean;
100
+ /** На край набора (в `grid` — на край текущей строки). */
101
+ moveToEdge: (edge: GrRovingEdge) => boolean;
102
+ /**
103
+ * Стрелки, `Home`, `End` по объявленной ориентации. Возвращает `true`, если
104
+ * клавиша обработана (с `preventDefault`) — остальное компонент разбирает сам.
105
+ */
106
+ handleNavigationKeys: (event: KeyboardEvent) => boolean;
107
+ }
108
+ export declare function useRovingFocus<TKey>(options: UseRovingFocusOptions<TKey>): UseRovingFocusReturn<TKey>;
@@ -66,6 +66,7 @@ export declare const granularityComponentConfigs: {
66
66
  GrSidebar: GranularComponentDescriptor<"GrSidebar">;
67
67
  GrSkeleton: GranularComponentDescriptor<"GrSkeleton">;
68
68
  GrSlider: GranularComponentDescriptor<"GrSlider">;
69
+ GrSortableList: GranularComponentDescriptor<"GrSortableList">;
69
70
  GrSplitter: GranularComponentDescriptor<"GrSplitter">;
70
71
  GrStatistic: GranularComponentDescriptor<"GrStatistic">;
71
72
  GrSwitch: GranularComponentDescriptor<"GrSwitch">;
@@ -41,6 +41,7 @@ export declare const en: {
41
41
  drag: string;
42
42
  expand: string;
43
43
  collapse: string;
44
+ moved: string;
44
45
  };
45
46
  select: {
46
47
  customValuePlaceholder: string;
@@ -59,6 +60,10 @@ export declare const en: {
59
60
  sortAsc: string;
60
61
  sortDesc: string;
61
62
  sortNone: string;
63
+ moveColumn: string;
64
+ columnMoved: string;
65
+ resizeColumn: string;
66
+ columnResized: string;
62
67
  };
63
68
  breadcrumbs: {
64
69
  label: string;
@@ -277,6 +282,16 @@ export declare const en: {
277
282
  control: string;
278
283
  enter: string;
279
284
  escape: string;
285
+ tab: string;
286
+ backspace: string;
287
+ delete: string;
288
+ pageUp: string;
289
+ pageDown: string;
290
+ arrowUp: string;
291
+ arrowDown: string;
292
+ arrowLeft: string;
293
+ arrowRight: string;
294
+ then: string;
280
295
  };
281
296
  link: {
282
297
  opensInNewTab: string;
@@ -317,6 +332,15 @@ export declare const en: {
317
332
  emptyState: {
318
333
  title: string;
319
334
  };
335
+ sortable: {
336
+ label: string;
337
+ handle: string;
338
+ empty: string;
339
+ grabbed: string;
340
+ moved: string;
341
+ dropped: string;
342
+ cancelled: string;
343
+ };
320
344
  };
321
345
  common: {
322
346
  confirm: string;
@@ -350,6 +374,7 @@ export declare const en: {
350
374
  drag: string;
351
375
  expand: string;
352
376
  collapse: string;
377
+ moved: string;
353
378
  };
354
379
  select: {
355
380
  customValuePlaceholder: string;
@@ -368,6 +393,10 @@ export declare const en: {
368
393
  sortAsc: string;
369
394
  sortDesc: string;
370
395
  sortNone: string;
396
+ moveColumn: string;
397
+ columnMoved: string;
398
+ resizeColumn: string;
399
+ columnResized: string;
371
400
  };
372
401
  breadcrumbs: {
373
402
  label: string;
@@ -586,6 +615,16 @@ export declare const en: {
586
615
  control: string;
587
616
  enter: string;
588
617
  escape: string;
618
+ tab: string;
619
+ backspace: string;
620
+ delete: string;
621
+ pageUp: string;
622
+ pageDown: string;
623
+ arrowUp: string;
624
+ arrowDown: string;
625
+ arrowLeft: string;
626
+ arrowRight: string;
627
+ then: string;
589
628
  };
590
629
  link: {
591
630
  opensInNewTab: string;
@@ -626,6 +665,15 @@ export declare const en: {
626
665
  emptyState: {
627
666
  title: string;
628
667
  };
668
+ sortable: {
669
+ label: string;
670
+ handle: string;
671
+ empty: string;
672
+ grabbed: string;
673
+ moved: string;
674
+ dropped: string;
675
+ cancelled: string;
676
+ };
629
677
  }>;
630
678
  };
631
679
  };
@@ -34,6 +34,7 @@ export declare const es: {
34
34
  drag: string;
35
35
  expand: string;
36
36
  collapse: string;
37
+ moved: string;
37
38
  };
38
39
  select: {
39
40
  customValuePlaceholder: string;
@@ -52,6 +53,10 @@ export declare const es: {
52
53
  sortAsc: string;
53
54
  sortDesc: string;
54
55
  sortNone: string;
56
+ moveColumn: string;
57
+ columnMoved: string;
58
+ resizeColumn: string;
59
+ columnResized: string;
55
60
  };
56
61
  breadcrumbs: {
57
62
  label: string;
@@ -272,6 +277,16 @@ export declare const es: {
272
277
  control: string;
273
278
  enter: string;
274
279
  escape: string;
280
+ tab: string;
281
+ backspace: string;
282
+ delete: string;
283
+ pageUp: string;
284
+ pageDown: string;
285
+ arrowUp: string;
286
+ arrowDown: string;
287
+ arrowLeft: string;
288
+ arrowRight: string;
289
+ then: string;
275
290
  };
276
291
  link: {
277
292
  opensInNewTab: string;
@@ -312,6 +327,15 @@ export declare const es: {
312
327
  emptyState: {
313
328
  title: string;
314
329
  };
330
+ sortable: {
331
+ label: string;
332
+ handle: string;
333
+ empty: string;
334
+ grabbed: string;
335
+ moved: string;
336
+ dropped: string;
337
+ cancelled: string;
338
+ };
315
339
  };
316
340
  common: {
317
341
  confirm: string;
@@ -345,6 +369,7 @@ export declare const es: {
345
369
  drag: string;
346
370
  expand: string;
347
371
  collapse: string;
372
+ moved: string;
348
373
  };
349
374
  select: {
350
375
  customValuePlaceholder: string;
@@ -363,6 +388,10 @@ export declare const es: {
363
388
  sortAsc: string;
364
389
  sortDesc: string;
365
390
  sortNone: string;
391
+ moveColumn: string;
392
+ columnMoved: string;
393
+ resizeColumn: string;
394
+ columnResized: string;
366
395
  };
367
396
  breadcrumbs: {
368
397
  label: string;
@@ -583,6 +612,16 @@ export declare const es: {
583
612
  control: string;
584
613
  enter: string;
585
614
  escape: string;
615
+ tab: string;
616
+ backspace: string;
617
+ delete: string;
618
+ pageUp: string;
619
+ pageDown: string;
620
+ arrowUp: string;
621
+ arrowDown: string;
622
+ arrowLeft: string;
623
+ arrowRight: string;
624
+ then: string;
586
625
  };
587
626
  link: {
588
627
  opensInNewTab: string;
@@ -623,6 +662,15 @@ export declare const es: {
623
662
  emptyState: {
624
663
  title: string;
625
664
  };
665
+ sortable: {
666
+ label: string;
667
+ handle: string;
668
+ empty: string;
669
+ grabbed: string;
670
+ moved: string;
671
+ dropped: string;
672
+ cancelled: string;
673
+ };
626
674
  }>;
627
675
  };
628
676
  };
@@ -34,6 +34,7 @@ export declare const ru: {
34
34
  drag: string;
35
35
  expand: string;
36
36
  collapse: string;
37
+ moved: string;
37
38
  };
38
39
  select: {
39
40
  customValuePlaceholder: string;
@@ -52,6 +53,10 @@ export declare const ru: {
52
53
  sortAsc: string;
53
54
  sortDesc: string;
54
55
  sortNone: string;
56
+ moveColumn: string;
57
+ columnMoved: string;
58
+ resizeColumn: string;
59
+ columnResized: string;
55
60
  };
56
61
  breadcrumbs: {
57
62
  label: string;
@@ -274,6 +279,16 @@ export declare const ru: {
274
279
  control: string;
275
280
  enter: string;
276
281
  escape: string;
282
+ tab: string;
283
+ backspace: string;
284
+ delete: string;
285
+ pageUp: string;
286
+ pageDown: string;
287
+ arrowUp: string;
288
+ arrowDown: string;
289
+ arrowLeft: string;
290
+ arrowRight: string;
291
+ then: string;
277
292
  };
278
293
  link: {
279
294
  opensInNewTab: string;
@@ -314,6 +329,15 @@ export declare const ru: {
314
329
  emptyState: {
315
330
  title: string;
316
331
  };
332
+ sortable: {
333
+ label: string;
334
+ handle: string;
335
+ empty: string;
336
+ grabbed: string;
337
+ moved: string;
338
+ dropped: string;
339
+ cancelled: string;
340
+ };
317
341
  };
318
342
  common: {
319
343
  confirm: string;
@@ -347,6 +371,7 @@ export declare const ru: {
347
371
  drag: string;
348
372
  expand: string;
349
373
  collapse: string;
374
+ moved: string;
350
375
  };
351
376
  select: {
352
377
  customValuePlaceholder: string;
@@ -365,6 +390,10 @@ export declare const ru: {
365
390
  sortAsc: string;
366
391
  sortDesc: string;
367
392
  sortNone: string;
393
+ moveColumn: string;
394
+ columnMoved: string;
395
+ resizeColumn: string;
396
+ columnResized: string;
368
397
  };
369
398
  breadcrumbs: {
370
399
  label: string;
@@ -587,6 +616,16 @@ export declare const ru: {
587
616
  control: string;
588
617
  enter: string;
589
618
  escape: string;
619
+ tab: string;
620
+ backspace: string;
621
+ delete: string;
622
+ pageUp: string;
623
+ pageDown: string;
624
+ arrowUp: string;
625
+ arrowDown: string;
626
+ arrowLeft: string;
627
+ arrowRight: string;
628
+ then: string;
590
629
  };
591
630
  link: {
592
631
  opensInNewTab: string;
@@ -627,6 +666,15 @@ export declare const ru: {
627
666
  emptyState: {
628
667
  title: string;
629
668
  };
669
+ sortable: {
670
+ label: string;
671
+ handle: string;
672
+ empty: string;
673
+ grabbed: string;
674
+ moved: string;
675
+ dropped: string;
676
+ cancelled: string;
677
+ };
630
678
  }>;
631
679
  };
632
680
  };
@@ -53,6 +53,7 @@ export * from './components/GrSelect';
53
53
  export * from './components/GrSidebar';
54
54
  export * from './components/GrSkeleton';
55
55
  export * from './components/GrSlider';
56
+ export * from './components/GrSortableList';
56
57
  export * from './components/GrSplitter';
57
58
  export * from './components/GrStatistic';
58
59
  export * from './components/GrSwitch';
@@ -73,12 +74,23 @@ export { usePortalTarget } from './composables/usePortalTarget';
73
74
  export type { PortalTarget } from './composables/usePortalTarget';
74
75
  export { useOverlayLayer } from './composables/useOverlayLayer';
75
76
  export type { OverlayLayerHandle, UseOverlayLayerOptions } from './composables/useOverlayLayer';
77
+ export { useRovingFocus } from './composables/useRovingFocus';
78
+ export type { GrRovingEdge, GrRovingOrientation, UseRovingFocusOptions, UseRovingFocusReturn, } from './composables/useRovingFocus';
79
+ export * from './composables/useGrComponentConfig';
80
+ export { useComboboxNavigation } from './composables/useComboboxNavigation';
81
+ export type { UseComboboxNavigationOptions, UseComboboxNavigationReturn, } from './composables/useComboboxNavigation';
82
+ export { useGranularityTranslations } from './composables/useGranularityTranslations';
83
+ export type { GranularityI18nLike } from './composables/useGranularityTranslations';
76
84
  export { useFloating } from './composables/useFloating';
77
85
  export type { UseFloatingOptions, UseFloatingPlacement, UseFloatingReturn } from './composables/useFloating';
78
86
  export { useAnnouncer } from './composables/useAnnouncer';
79
87
  export type { GrAnnounceOptions, GrAnnouncer, GrAnnouncerPoliteness } from './composables/useAnnouncer';
80
88
  export { useVirtualList } from './composables/useVirtualList';
81
89
  export type { GrVirtualAlign, UseVirtualListOptions, UseVirtualListReturn } from './composables/useVirtualList';
90
+ export { useDragGesture } from './composables/useDragGesture';
91
+ export type { UseDragGestureOptions, UseDragGestureReturn } from './composables/useDragGesture';
92
+ export { useDragSort } from './composables/useDragSort';
93
+ export type { DragSortHit, DragSortMode, DragSortOrientation, UseDragSortOptions, UseDragSortReturn, } from './composables/useDragSort';
82
94
  export { useGrFormControl } from './composables/useGrFormControl';
83
95
  export type { GrFormControlProps, GrFormControlState } from './composables/useGrFormControl';
84
96
  export { GRANULARITY_THEME_STATE, granularityThemePlugin, initThemeEarly, useTheme } from './composables/useTheme';
@@ -21,6 +21,12 @@ export declare function isComposingEvent(event: KeyboardEvent): boolean;
21
21
  * typeahead меню обязаны молчать, пока пользователь печатает в поле внутри них.
22
22
  */
23
23
  export declare function isEditableTarget(target: EventTarget | null): boolean;
24
+ /**
25
+ * macOS определяем по платформе: от неё зависит, чем является токен `mod` —
26
+ * Cmd или Ctrl. Живёт здесь, а не рядом с одним потребителем: то же нужно
27
+ * `GrKbd` (что показать), палитре (что слушать) и директиве `v-hotkey`.
28
+ */
29
+ export declare function isAppleDevice(): boolean;
24
30
  /** Физический код клавиши для латинской буквы или цифры; иначе `null`. */
25
31
  export declare function codeForChar(ch: string): string | null;
26
32
  export interface EventMatchesKeyOptions {
@@ -0,0 +1,10 @@
1
+ import type { GrAnnouncerPoliteness } from '../composables/useAnnouncer';
2
+ /**
3
+ * Текст живого региона.
4
+ *
5
+ * Ждать здесь обязательно: `announce` пишет в регион **отложенным** макротаском,
6
+ * и это не деталь реализации, а условие работы. Регион, в котором текст
7
+ * появился в том же кадре, что и сам регион, часть AT не объявляет вовсе;
8
+ * поэтому синхронное чтение сразу после действия покажет пустую строку.
9
+ */
10
+ export declare function announced(politeness?: GrAnnouncerPoliteness): Promise<string>;
@@ -0,0 +1,36 @@
1
+ import { type Ref } from 'vue';
2
+ import { type GrComponentDefaults, type GrComponentSize } from '../components/GrConfigProvider/context';
3
+ import { type GranularityI18nAdapter, type GranularityI18nParams } from '../i18n/adapter';
4
+ export interface I18nAdapterOptions {
5
+ /** Перевод по ключу. По умолчанию — сам ключ: видно, что спросили. */
6
+ t?: (key: string, params?: GranularityI18nParams) => string;
7
+ te?: (key: string) => boolean;
8
+ locale?: string | Ref<string>;
9
+ }
10
+ /** Адаптер перевода для теста: словарь или своя функция. */
11
+ export declare function i18nAdapter(options?: I18nAdapterOptions | Record<string, string>): GranularityI18nAdapter;
12
+ export interface GranularityGlobalOptions {
13
+ size?: GrComponentSize;
14
+ componentDefaults?: GrComponentDefaults;
15
+ theme?: string;
16
+ portalTarget?: string | HTMLElement;
17
+ /** Адаптер перевода: готовый, словарь `{ ключ: перевод }` или опции `i18nAdapter`. */
18
+ i18n?: GranularityI18nAdapter | I18nAdapterOptions | Record<string, string>;
19
+ }
20
+ /**
21
+ * Окружение пакета для монтирования — то, что `<GrConfigProvider>` раздаёт
22
+ * через `provide`.
23
+ *
24
+ * Отдаётся объектом, а не компонентом-обёрткой, намеренно: провайдер тянет за
25
+ * собой лишний корневой элемент, а искать компонент внутри чужой разметки в
26
+ * каждом тесте дороже, чем передать `global`. Проверять **сам** провайдер
27
+ * (`data-gr-config-provider`, тема на корне) этим нельзя и не нужно — для этого
28
+ * его и монтируют.
29
+ *
30
+ * ```ts
31
+ * mount(GrSelect, { props, global: granularityGlobal({ size: 'sm' }) })
32
+ * ```
33
+ */
34
+ export declare function granularityGlobal(options?: GranularityGlobalOptions): {
35
+ provide: Record<symbol, unknown>;
36
+ };
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Уборка между тестами.
3
+ *
4
+ * `document.body.innerHTML = ''` сам по себе оставляет пакет в разобранном
5
+ * состоянии: корень портала и хост живого региона закэшированы модулями, и
6
+ * после очистки `body` они указывают на узлы **вне документа**. Следующий
7
+ * монтаж телепортирует туда оверлеи, тест ищет их в документе и не находит —
8
+ * без единой ошибки в консоли. Очередь тостов переживает размонтирование по
9
+ * замыслу, поэтому её тоже гасим.
10
+ */
11
+ export declare function resetGranularityDom(): void;
12
+ export interface StubMatchMediaOptions {
13
+ /** Ответ на `(prefers-reduced-motion: reduce)`. */
14
+ reducedMotion?: boolean;
15
+ /** Ответ на остальные запросы. */
16
+ matches?: boolean;
17
+ }
18
+ /**
19
+ * Ответ `matchMedia` — например «пользователь просил меньше движения».
20
+ *
21
+ * Не для того, чтобы «не падало»: сам пакет зовёт `matchMedia` опционально и без
22
+ * него живёт. Нужно, когда проверяется поведение **под** медиазапросом.
23
+ * Возвращает функцию отката: глобальное состояние обязано уйти вместе с тестом.
24
+ */
25
+ export declare function stubMatchMedia(options?: StubMatchMediaOptions): () => void;
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Геометрия в jsdom.
3
+ *
4
+ * Раскладки в jsdom нет: `getBoundingClientRect` у любого элемента возвращает
5
+ * нули. Всё, что считает попадание указателя — слайдер, сплиттер, перестановка,
6
+ * ширины колонок таблицы, — на нулевом прямоугольнике проверять не на чем,
7
+ * поэтому геометрия задаётся руками.
8
+ */
9
+ export type MockRect = Partial<Omit<DOMRect, 'toJSON'>>;
10
+ /** Прямоугольник элемента. Незаданные стороны выводятся из заданных. */
11
+ export declare function mockRect(target: Element, rect: MockRect): void;
12
+ export interface StackRectsOptions {
13
+ /** Размер элемента вдоль оси. */
14
+ size: number;
15
+ /** Ось раскладки. По умолчанию вертикальная — так лежат списки и строки. */
16
+ axis?: 'vertical' | 'horizontal';
17
+ /** Смещение первого элемента. */
18
+ start?: number;
19
+ /** Размер поперёк оси. */
20
+ cross?: number;
21
+ }
22
+ /** Элементы подряд, встык, без зазоров: строки списка, ячейки шапки, деления шкалы. */
23
+ export declare function stackRects(targets: Iterable<Element>, options: StackRectsOptions): void;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Тестовые утилиты пакета — `@feugene/granularity/testing`.
3
+ *
4
+ * Ни `vitest`, ни `@vue/test-utils` здесь нет и не будет: утилиты отдают данные
5
+ * и действия над DOM, а монтирует и утверждает потребитель — своим раннером.
6
+ * Документация: `docs/testing.md`.
7
+ */
8
+ export { cancelPointer, drag, move, pointer, press, release } from './pointer';
9
+ export { mockRect, type MockRect, stackRects, type StackRectsOptions } from './geometry';
10
+ export { resetGranularityDom, stubMatchMedia, type StubMatchMediaOptions } from './env';
11
+ export { granularityGlobal, type GranularityGlobalOptions, i18nAdapter, type I18nAdapterOptions } from './context';
12
+ export { announced } from './announcer';
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Указательные жесты в тестах.
3
+ *
4
+ * Две вещи, которые ломают наивную запись жеста, и обе неочевидны:
5
+ *
6
+ * 1. **`pointerdown` идёт в элемент, а `pointermove`/`pointerup`/`pointercancel` — в `window`.**
7
+ * Так слушает `useDragGesture` (и всё, что на нём стоит: слайдер, сплиттер,
8
+ * перестановка, смахивание тоста): нажатие приходит от разметки, а движение
9
+ * ловится глобально, иначе жест обрывался бы на выходе курсора за элемент.
10
+ * Тест, отправивший движение в тот же элемент, ничего не проверяет — и молча.
11
+ * 2. **`PointerEvent` в jsdom нет**, а `wrapper.trigger('pointerdown', { clientY })`
12
+ * падает на попытке записать `clientY`. Поэтому события собираются
13
+ * `MouseEvent`-ом и отправляются через `dispatchEvent`.
14
+ *
15
+ * Плюс `button: 0` по умолчанию: жест игнорирует неосновную кнопку, и без этого
16
+ * «перетаскивание» в тесте не начинается вовсе.
17
+ */
18
+ /** Событие указателя: `MouseEvent`, потому что `PointerEvent` в jsdom не реализован. */
19
+ export declare function pointer(type: string, init?: MouseEventInit): MouseEvent;
20
+ /** Нажатие: единственное событие жеста, которое адресуется элементу. */
21
+ export declare function press(target: Element, init?: MouseEventInit): void;
22
+ export declare function move(init?: MouseEventInit): void;
23
+ export declare function release(init?: MouseEventInit): void;
24
+ /**
25
+ * Обрыв жеста: система забрала указатель (системный жест, звонок, потеря окна).
26
+ * Отдельная ветка поведения у всех потребителей — смахивание возвращает тост,
27
+ * перестановка откатывает порядок, — поэтому проверяется отдельно от `release`.
28
+ */
29
+ export declare function cancelPointer(init?: MouseEventInit): void;
30
+ /** Жест целиком: нажали на элементе, провели, отпустили. */
31
+ export declare function drag(target: Element, from: MouseEventInit, to: MouseEventInit): void;
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Подключение темы в рантайме — `@feugene/granularity/theme/apply`.
3
+ *
4
+ * Отдельный подпуть от `@feugene/granularity/theme` не по вкусу, а по весу:
5
+ * там справочник токенов (сотня килобайт данных), нужный, чтобы тему
6
+ * **собрать**. Чтобы её **подключить**, не нужно ничего, кроме готовой строки,
7
+ * — и приложению незачем платить за первое, если оно делает второе.
8
+ *
9
+ * Штатный путь всё же другой: собрать тему на сборке и отдать браузеру обычный
10
+ * CSS-файл. Этот модуль — для случаев, когда тема появляется только в браузере:
11
+ * редактор тем, превью, тема из пользовательских настроек.
12
+ */
13
+ export interface ApplyThemeOptions {
14
+ /**
15
+ * Имя, под которым тема живёт в документе. Повторный вызов с тем же именем
16
+ * заменяет её содержимое, а не добавляет второй `<style>`: иначе редактор
17
+ * темы за минуту работы оставил бы в `<head>` сотню слоёв, и побеждал бы
18
+ * последний — то есть результат зависел бы от истории правок.
19
+ */
20
+ name?: string;
21
+ /** Куда вставлять. По умолчанию `document.head`. */
22
+ target?: HTMLElement | null;
23
+ }
24
+ /** Подключает CSS темы и возвращает функцию, которая его снимает. */
25
+ export declare function applyTheme(css: string, options?: ApplyThemeOptions): () => void;
26
+ /** Снимает тему, подключённую `applyTheme`. */
27
+ export declare function removeTheme(name?: string, target?: HTMLElement | null): void;