@feugene/granularity 0.49.0 → 0.50.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 (368) hide show
  1. package/README.md +3 -3
  2. package/dist/chunks/chevron-up-BhW6hi8L.js +23 -0
  3. package/dist/chunks/chevron-up-BhW6hi8L.js.map +1 -0
  4. package/dist/chunks/{config-E1cTyRVV.js → config-8n1VR0ju.js} +1 -1
  5. package/dist/chunks/{config-E1cTyRVV.js.map → config-8n1VR0ju.js.map} +1 -1
  6. package/dist/chunks/{config-DIDz_E5m.js → config-B34mkd53.js} +66 -1
  7. package/dist/chunks/config-B34mkd53.js.map +1 -0
  8. package/dist/chunks/{config-B5SBUa6u.js → config-B7qZqiUB.js} +28 -1
  9. package/dist/chunks/config-B7qZqiUB.js.map +1 -0
  10. package/dist/chunks/config-BBrPUEye.js +8 -0
  11. package/dist/chunks/config-BBrPUEye.js.map +1 -0
  12. package/dist/chunks/{config-CT4lP6S4.js → config-BOCzHqWh.js} +2 -2
  13. package/dist/chunks/{config-CT4lP6S4.js.map → config-BOCzHqWh.js.map} +1 -1
  14. package/dist/chunks/{config-iemgzS4x.js → config-BP1ktzwh.js} +2 -24
  15. package/dist/chunks/config-BP1ktzwh.js.map +1 -0
  16. package/dist/chunks/config-BTxmdRzT.js +28 -0
  17. package/dist/chunks/config-BTxmdRzT.js.map +1 -0
  18. package/dist/chunks/{config-CjWOTgLL.js → config-Bk52xd5l.js} +12 -5
  19. package/dist/chunks/config-Bk52xd5l.js.map +1 -0
  20. package/dist/chunks/{config-D3HOuHDe.js → config-C3SqBqSQ.js} +3 -1
  21. package/dist/chunks/config-C3SqBqSQ.js.map +1 -0
  22. package/dist/chunks/{config-2ZHRsdOc.js → config-C3uqd-sW.js} +1 -1
  23. package/dist/chunks/config-C3uqd-sW.js.map +1 -0
  24. package/dist/chunks/{config-BXRmsn3t.js → config-CPhcZzHi.js} +72 -10
  25. package/dist/chunks/config-CPhcZzHi.js.map +1 -0
  26. package/dist/chunks/config-CWtfxkM9.js.map +1 -1
  27. package/dist/chunks/{config--t2dxj0t.js → config-CmLTCmY9.js} +2 -2
  28. package/dist/chunks/{config--t2dxj0t.js.map → config-CmLTCmY9.js.map} +1 -1
  29. package/dist/chunks/{config-BAse0laT.js → config-CvtqB4ki.js} +8 -3
  30. package/dist/chunks/config-CvtqB4ki.js.map +1 -0
  31. package/dist/chunks/{config-BcXX7S7B.js → config-D-JgqV0J.js} +5 -1
  32. package/dist/chunks/{config-BcXX7S7B.js.map → config-D-JgqV0J.js.map} +1 -1
  33. package/dist/chunks/{config-BHLMTJaR.js → config-D1oVht-E.js} +8 -3
  34. package/dist/chunks/config-D1oVht-E.js.map +1 -0
  35. package/dist/chunks/{config-B42iJ48O.js → config-DG41PD9i.js} +13 -1
  36. package/dist/chunks/config-DG41PD9i.js.map +1 -0
  37. package/dist/chunks/{config-Bs1HwUcx.js → config-DPJ3jtiB.js} +12 -2
  38. package/dist/chunks/config-DPJ3jtiB.js.map +1 -0
  39. package/dist/chunks/{config-tNqtapcT.js → config-DpqjlCfB.js} +2 -2
  40. package/dist/chunks/{config-tNqtapcT.js.map → config-DpqjlCfB.js.map} +1 -1
  41. package/dist/chunks/{config-DNDgp9bB.js → config-DpzFoSIh.js} +64 -2
  42. package/dist/chunks/config-DpzFoSIh.js.map +1 -0
  43. package/dist/chunks/config-SPugeaHT.js +37 -0
  44. package/dist/chunks/config-SPugeaHT.js.map +1 -0
  45. package/dist/chunks/{en-CsQUoBS2.js → en-mIFywnV2.js} +22 -6
  46. package/dist/chunks/en-mIFywnV2.js.map +1 -0
  47. package/dist/chunks/{es-9nbkPvdA.js → es-CvthYwtB.js} +22 -6
  48. package/dist/chunks/es-CvthYwtB.js.map +1 -0
  49. package/dist/chunks/{es-DrUz5J6I.js → es-DlGd6Mrj.js} +3 -3
  50. package/dist/chunks/{es-DrUz5J6I.js.map → es-DlGd6Mrj.js.map} +1 -1
  51. package/dist/chunks/{generated-CxvC5O0V.js → generated-Cx4C7GRN.js} +84 -0
  52. package/dist/chunks/{generated-CxvC5O0V.js.map → generated-Cx4C7GRN.js.map} +1 -1
  53. package/dist/chunks/{grPopoverStyles-CYAeO3Ov.js → grPopoverStyles-CncEkiPu.js} +1 -1
  54. package/dist/chunks/{grPopoverStyles-CYAeO3Ov.js.map → grPopoverStyles-CncEkiPu.js.map} +1 -1
  55. package/dist/chunks/{grSelectStyles-D9EQ-pgK.js → grSelectStyles-Cam-IG9s.js} +3 -2
  56. package/dist/chunks/grSelectStyles-Cam-IG9s.js.map +1 -0
  57. package/dist/chunks/{grSliderStyles-kaz6VXZ3.js → grSliderStyles-CqzV0hll.js} +1 -1
  58. package/dist/chunks/grSliderStyles-CqzV0hll.js.map +1 -0
  59. package/dist/chunks/{config-CbEbLyDE.js → grSortableListStyles-CxieDmpe.js} +1 -27
  60. package/dist/chunks/grSortableListStyles-CxieDmpe.js.map +1 -0
  61. package/dist/chunks/grTableStyles-CPSxDTOW.js +66 -0
  62. package/dist/chunks/grTableStyles-CPSxDTOW.js.map +1 -0
  63. package/dist/chunks/{config-CMNfZO7S.js → grTabsStyles-DIz2VdIm.js} +1 -36
  64. package/dist/chunks/grTabsStyles-DIz2VdIm.js.map +1 -0
  65. package/dist/chunks/grTooltipStyles-CtbGEEGV.js +24 -0
  66. package/dist/chunks/grTooltipStyles-CtbGEEGV.js.map +1 -0
  67. package/dist/chunks/{granular-provider-B6xomapW.js → granular-provider-cv5vaM1a.js} +21 -19
  68. package/dist/chunks/granular-provider-cv5vaM1a.js.map +1 -0
  69. package/dist/chunks/hotkeySequence-BTHIM_5A.js +46 -0
  70. package/dist/chunks/hotkeySequence-BTHIM_5A.js.map +1 -0
  71. package/dist/chunks/{keyboard-DE2yhz_b.js → keyboard-BiFSgWLt.js} +70 -1
  72. package/dist/chunks/keyboard-BiFSgWLt.js.map +1 -0
  73. package/dist/chunks/optionPanel-DvY7Tv_4.js +182 -0
  74. package/dist/chunks/optionPanel-DvY7Tv_4.js.map +1 -0
  75. package/dist/chunks/overlayListPanel-D91jBCHU.js +21 -0
  76. package/dist/chunks/overlayListPanel-D91jBCHU.js.map +1 -0
  77. package/dist/chunks/{overlayStack-DH4Z7am1.js → overlayStack-DCkCgXZP.js} +1 -1
  78. package/dist/chunks/{overlayStack-DH4Z7am1.js.map → overlayStack-DCkCgXZP.js.map} +1 -1
  79. package/dist/chunks/{overlayPanelSurface-BKeMhRx4.js → overlayTransition-C0FDMx7Q.js} +24 -24
  80. package/dist/chunks/overlayTransition-C0FDMx7Q.js.map +1 -0
  81. package/dist/chunks/{ru-88i1WG0b.js → ru-CQKDR-kD.js} +22 -6
  82. package/dist/chunks/ru-CQKDR-kD.js.map +1 -0
  83. package/dist/chunks/{useMenuItemsFocus-B7Bl_aFA.js → useMenuItemsFocus-C031blYS.js} +1 -1
  84. package/dist/chunks/{useMenuItemsFocus-B7Bl_aFA.js.map → useMenuItemsFocus-C031blYS.js.map} +1 -1
  85. package/dist/chunks/{useModalOverlay-ACRkflzx.js → useModalOverlay-CKCQkGdB.js} +1 -1
  86. package/dist/chunks/{useModalOverlay-ACRkflzx.js.map → useModalOverlay-CKCQkGdB.js.map} +1 -1
  87. package/dist/components/GrAutocomplete/chunks/{GrAutocomplete-Chhw65pI.js → GrAutocomplete-Cyr1-ENw.js} +181 -123
  88. package/dist/components/GrAutocomplete/chunks/GrAutocomplete-Cyr1-ENw.js.map +1 -0
  89. package/dist/components/GrAutocomplete/index.js +2 -2
  90. package/dist/components/GrAutocomplete/styles.css +1 -1
  91. package/dist/components/GrCarousel/chunks/{GrCarousel-ByuughtI.js → GrCarousel-CBj-PEPB.js} +186 -37
  92. package/dist/components/GrCarousel/chunks/GrCarousel-CBj-PEPB.js.map +1 -0
  93. package/dist/components/GrCarousel/index.js +2 -2
  94. package/dist/components/GrCarousel/styles.css +1 -1
  95. package/dist/components/GrCheckbox/chunks/{GrCheckbox-Dp201frb.js → GrCheckbox-B4NJc7Ur.js} +2 -1
  96. package/dist/components/GrCheckbox/chunks/GrCheckbox-B4NJc7Ur.js.map +1 -0
  97. package/dist/components/GrCheckbox/index.js +1 -1
  98. package/dist/components/GrCheckboxGroup/chunks/{GrCheckboxGroup-IpqG5qwm.js → GrCheckboxGroup-qZHpNFCX.js} +1 -1
  99. package/dist/components/GrCheckboxGroup/chunks/{GrCheckboxGroup-IpqG5qwm.js.map → GrCheckboxGroup-qZHpNFCX.js.map} +1 -1
  100. package/dist/components/GrCheckboxGroup/index.js +1 -1
  101. package/dist/components/GrColorPicker/chunks/{GrColorPicker-BRM_4lyI.js → GrColorPicker-vGSgpUV9.js} +353 -38
  102. package/dist/components/GrColorPicker/chunks/GrColorPicker-vGSgpUV9.js.map +1 -0
  103. package/dist/components/GrColorPicker/index.js +2 -2
  104. package/dist/components/GrColorPicker/styles.css +1 -1
  105. package/dist/components/GrCommandPalette/chunks/{GrCommandPalette-BJHmkDQv.js → GrCommandPalette-CAHgj0Aa.js} +23 -7
  106. package/dist/components/GrCommandPalette/chunks/GrCommandPalette-CAHgj0Aa.js.map +1 -0
  107. package/dist/components/GrCommandPalette/index.js +1 -1
  108. package/dist/components/GrCommandPalette/styles.css +1 -1
  109. package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-BzUQwbec.js → GrConfirmDialog-dg021BMd.js} +1 -1
  110. package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-BzUQwbec.js.map → GrConfirmDialog-dg021BMd.js.map} +1 -1
  111. package/dist/components/GrConfirmDialog/index.js +1 -1
  112. package/dist/components/GrContextMenu/chunks/{GrContextMenu-RpxMHQXH.js → GrContextMenu-bQ1Vvy2c.js} +3 -3
  113. package/dist/components/GrContextMenu/chunks/{GrContextMenu-RpxMHQXH.js.map → GrContextMenu-bQ1Vvy2c.js.map} +1 -1
  114. package/dist/components/GrContextMenu/index.js +1 -1
  115. package/dist/components/GrDataTable/chunks/{GrDataTable-DQxYYgQk.js → GrDataTable-Bb2jWnRG.js} +576 -136
  116. package/dist/components/GrDataTable/chunks/GrDataTable-Bb2jWnRG.js.map +1 -0
  117. package/dist/components/GrDataTable/index.js +2 -2
  118. package/dist/components/GrDelta/chunks/{GrDelta-CgTvfoIN.js → GrDelta-BSv1KdMy.js} +0 -0
  119. package/dist/components/GrDelta/chunks/{GrDelta-CgTvfoIN.js.map → GrDelta-BSv1KdMy.js.map} +1 -1
  120. package/dist/components/GrDelta/index.js +2 -2
  121. package/dist/components/GrDialog/chunks/{GrDialog-DDz_OEhk.js → GrDialog-C9Zu72jB.js} +1 -1
  122. package/dist/components/GrDialog/chunks/{GrDialog-DDz_OEhk.js.map → GrDialog-C9Zu72jB.js.map} +1 -1
  123. package/dist/components/GrDialog/index.js +1 -1
  124. package/dist/components/GrDialogService/chunks/{GrDialogService-Dtq0ZCN5.js → GrDialogService-DLBifO61.js} +2 -2
  125. package/dist/components/GrDialogService/chunks/{GrDialogService-Dtq0ZCN5.js.map → GrDialogService-DLBifO61.js.map} +1 -1
  126. package/dist/components/GrDialogService/index.js +1 -1
  127. package/dist/components/GrDrawer/chunks/{GrDrawer-CNpSMuN-.js → GrDrawer-DOcRTE8G.js} +1 -1
  128. package/dist/components/GrDrawer/chunks/{GrDrawer-CNpSMuN-.js.map → GrDrawer-DOcRTE8G.js.map} +1 -1
  129. package/dist/components/GrDrawer/index.js +1 -1
  130. package/dist/components/GrDropdown/chunks/{GrDropdown-cLZuZMEY.js → GrDropdown-kxwmgfSe.js} +2 -2
  131. package/dist/components/GrDropdown/chunks/{GrDropdown-cLZuZMEY.js.map → GrDropdown-kxwmgfSe.js.map} +1 -1
  132. package/dist/components/GrDropdown/index.js +2 -2
  133. package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu-Dxkz_ry4.js → GrDropdownMenu--VoK3VY0.js} +3 -34
  134. package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu--VoK3VY0.js.map +1 -0
  135. package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-CkM3BFPL.js +34 -0
  136. package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-CkM3BFPL.js.map +1 -0
  137. package/dist/components/GrDropdownMenu/index.js +2 -1
  138. package/dist/components/GrEmptyState/chunks/{GrEmptyState-BbvwE-E0.js → GrEmptyState-Bz6-_ED4.js} +42 -6
  139. package/dist/components/GrEmptyState/chunks/GrEmptyState-Bz6-_ED4.js.map +1 -0
  140. package/dist/components/GrEmptyState/index.js +1 -1
  141. package/dist/components/GrFileUpload/chunks/{GrFileUpload-BwMR71zN.js → GrFileUpload-Bgdfnkd8.js} +5 -2
  142. package/dist/components/GrFileUpload/chunks/GrFileUpload-Bgdfnkd8.js.map +1 -0
  143. package/dist/components/GrFileUpload/index.js +1 -1
  144. package/dist/components/GrFormFile/chunks/{GrFormFile-Dlxx-9zi.js → GrFormFile-Ctq1isz-.js} +78 -11
  145. package/dist/components/GrFormFile/chunks/GrFormFile-Ctq1isz-.js.map +1 -0
  146. package/dist/components/GrFormFile/index.js +2 -2
  147. package/dist/components/GrFormFile/styles.css +1 -1
  148. package/dist/components/GrImageViewer/chunks/{GrImageViewer-DK-iVHHC.js → GrImageViewer-Bnql_dNP.js} +1 -1
  149. package/dist/components/GrImageViewer/chunks/{GrImageViewer-DK-iVHHC.js.map → GrImageViewer-Bnql_dNP.js.map} +1 -1
  150. package/dist/components/GrImageViewer/index.js +1 -1
  151. package/dist/components/GrInput/chunks/{GrInput-DV4gMWPR.js → GrInput-CoaFLpaU.js} +43 -22
  152. package/dist/components/GrInput/chunks/GrInput-CoaFLpaU.js.map +1 -0
  153. package/dist/components/GrInput/index.js +1 -1
  154. package/dist/components/GrInputTag/chunks/{GrInputTag-qnRdAZnn.js → GrInputTag-BzzNRBe3.js} +245 -18
  155. package/dist/components/GrInputTag/chunks/GrInputTag-BzzNRBe3.js.map +1 -0
  156. package/dist/components/GrInputTag/index.js +2 -2
  157. package/dist/components/GrJsonViewer/chunks/{GrJsonViewer-D7CyWzhT.js → GrJsonViewer-B6ZJ3GFH.js} +2 -2
  158. package/dist/components/GrJsonViewer/chunks/{GrJsonViewer-D7CyWzhT.js.map → GrJsonViewer-B6ZJ3GFH.js.map} +1 -1
  159. package/dist/components/GrJsonViewer/index.js +1 -1
  160. package/dist/components/GrKbd/chunks/{GrKbd-BNMeoaLV.js → GrKbd-D2rHDkQv.js} +42 -37
  161. package/dist/components/GrKbd/chunks/GrKbd-D2rHDkQv.js.map +1 -0
  162. package/dist/components/GrKbd/index.js +1 -1
  163. package/dist/components/GrModal/chunks/{GrModal-Cm0mtSXk.js → GrModal-SHb1U2qx.js} +1 -1
  164. package/dist/components/GrModal/chunks/{GrModal-Cm0mtSXk.js.map → GrModal-SHb1U2qx.js.map} +1 -1
  165. package/dist/components/GrModal/index.js +1 -1
  166. package/dist/components/GrNavbar/chunks/{GrNavbar-BRGuksiy.js → GrNavbar-IEIHC5Vt.js} +10 -4
  167. package/dist/components/GrNavbar/chunks/GrNavbar-IEIHC5Vt.js.map +1 -0
  168. package/dist/components/GrNavbar/index.js +2 -2
  169. package/dist/components/GrNumberInput/chunks/{GrNumberInput-BI6-vkcs.js → GrNumberInput-CmnUDaKi.js} +2 -22
  170. package/dist/components/GrNumberInput/chunks/{GrNumberInput-BI6-vkcs.js.map → GrNumberInput-CmnUDaKi.js.map} +1 -1
  171. package/dist/components/GrNumberInput/index.js +1 -1
  172. package/dist/components/GrPagination/chunks/{GrPagination-CMrLPzvL.js → GrPagination-AMbn5D8I.js} +1 -1
  173. package/dist/components/GrPagination/chunks/{GrPagination-CMrLPzvL.js.map → GrPagination-AMbn5D8I.js.map} +1 -1
  174. package/dist/components/GrPagination/index.js +1 -1
  175. package/dist/components/GrPopover/chunks/{GrPopover-CcWvr1ZA.js → GrPopover-DjVxt8bf.js} +3 -3
  176. package/dist/components/GrPopover/chunks/{GrPopover-CcWvr1ZA.js.map → GrPopover-DjVxt8bf.js.map} +1 -1
  177. package/dist/components/GrPopover/index.js +2 -2
  178. package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-BEL-QgwE.js → GrPromptDialog-BhbIZP1f.js} +3 -3
  179. package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-BEL-QgwE.js.map → GrPromptDialog-BhbIZP1f.js.map} +1 -1
  180. package/dist/components/GrPromptDialog/index.js +1 -1
  181. package/dist/components/GrSelect/chunks/{GrSelect-DvSq-nV-.js → GrSelect-B-ykrHpL.js} +24 -180
  182. package/dist/components/GrSelect/chunks/GrSelect-B-ykrHpL.js.map +1 -0
  183. package/dist/components/GrSelect/index.js +2 -2
  184. package/dist/components/GrSelect/styles.css +1 -1
  185. package/dist/components/GrSidebar/chunks/GrSidebar-jVvoLGDO.js +543 -0
  186. package/dist/components/GrSidebar/chunks/GrSidebar-jVvoLGDO.js.map +1 -0
  187. package/dist/components/GrSidebar/index.js +2 -2
  188. package/dist/components/GrSlider/chunks/{GrSlider-CO8N9SF6.js → GrSlider-DF2Cq0rV.js} +29 -4
  189. package/dist/components/GrSlider/chunks/GrSlider-DF2Cq0rV.js.map +1 -0
  190. package/dist/components/GrSlider/index.js +2 -2
  191. package/dist/components/GrSortableList/chunks/{GrSortableList-NKriuGm_.js → GrSortableList-ChH9nQBv.js} +1 -1
  192. package/dist/components/GrSortableList/chunks/{GrSortableList-NKriuGm_.js.map → GrSortableList-ChH9nQBv.js.map} +1 -1
  193. package/dist/components/GrSortableList/index.js +2 -2
  194. package/dist/components/GrTabPanels/chunks/GrTabPanels-BDt5oVdd.js +30 -0
  195. package/dist/components/GrTabPanels/chunks/GrTabPanels-BDt5oVdd.js.map +1 -0
  196. package/dist/components/GrTabPanels/chunks/GrTabPanels-BJvAflnA.js +83 -0
  197. package/dist/components/GrTabPanels/chunks/GrTabPanels-BJvAflnA.js.map +1 -0
  198. package/dist/components/GrTabPanels/index.js +2 -1
  199. package/dist/components/GrTable/chunks/{GrTable-CKJ-HrsN.js → GrTable-BQitSDep.js} +52 -16
  200. package/dist/components/GrTable/chunks/GrTable-BQitSDep.js.map +1 -0
  201. package/dist/components/GrTable/index.js +2 -2
  202. package/dist/components/GrTabs/chunks/{GrTabs-s9RzC1WX.js → GrTabs-DVC6nfWB.js} +1 -1
  203. package/dist/components/GrTabs/chunks/{GrTabs-s9RzC1WX.js.map → GrTabs-DVC6nfWB.js.map} +1 -1
  204. package/dist/components/GrTabs/index.js +2 -2
  205. package/dist/components/GrTabsWithPanels/chunks/GrTabsWithPanels-BYtuzouj.js +98 -0
  206. package/dist/components/GrTabsWithPanels/chunks/GrTabsWithPanels-BYtuzouj.js.map +1 -0
  207. package/dist/components/GrTabsWithPanels/index.js +3 -0
  208. package/dist/components/GrTextarea/chunks/{GrTextarea-Bfgc0DD2.js → GrTextarea-BFwyqcHB.js} +22 -5
  209. package/dist/components/GrTextarea/chunks/GrTextarea-BFwyqcHB.js.map +1 -0
  210. package/dist/components/GrTextarea/index.js +1 -1
  211. package/dist/components/GrToaster/chunks/{GrToaster-CZixNk0l.js → GrToaster-OzT1VKcp.js} +163 -32
  212. package/dist/components/GrToaster/chunks/GrToaster-OzT1VKcp.js.map +1 -0
  213. package/dist/components/GrToaster/index.js +2 -2
  214. package/dist/components/GrToaster/styles.css +1 -1
  215. package/dist/components/GrTooltip/chunks/{GrTooltip-DkMMM0uq.js → GrTooltip-BDcFycvW.js} +26 -13
  216. package/dist/components/GrTooltip/chunks/GrTooltip-BDcFycvW.js.map +1 -0
  217. package/dist/components/GrTooltip/index.js +2 -2
  218. package/dist/components/GrTransfer/chunks/{GrTransfer-DdfBUf35.js → GrTransfer-CV7BL5UK.js} +114 -12
  219. package/dist/components/GrTransfer/chunks/GrTransfer-CV7BL5UK.js.map +1 -0
  220. package/dist/components/GrTransfer/index.js +1 -1
  221. package/dist/components/GrTransfer/styles.css +1 -1
  222. package/dist/components/GrTree/chunks/{GrTree-6yZrncJE.js → GrTree-DpgaP8hk.js} +39 -1
  223. package/dist/components/GrTree/chunks/GrTree-DpgaP8hk.js.map +1 -0
  224. package/dist/components/GrTree/index.js +1 -1
  225. package/dist/components/GrTree/styles.css +1 -1
  226. package/dist/components/GrTreeSections/chunks/{GrTreeSections-DcmDcLwj.js → GrTreeSections-BeOj__44.js} +1 -1
  227. package/dist/components/GrTreeSections/chunks/{GrTreeSections-DcmDcLwj.js.map → GrTreeSections-BeOj__44.js.map} +1 -1
  228. package/dist/components/GrTreeSections/index.js +1 -1
  229. package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-B6KoDYiZ.js → GrTreeSelect-BHq-T8wH.js} +113 -14
  230. package/dist/components/GrTreeSelect/chunks/GrTreeSelect-BHq-T8wH.js.map +1 -0
  231. package/dist/components/GrTreeSelect/index.js +2 -2
  232. package/dist/composables/useFloating.js +1 -1
  233. package/dist/composables/useHotkeys.js +89 -0
  234. package/dist/composables/useHotkeys.js.map +1 -0
  235. package/dist/composables/useOverlayLayer.js +1 -1
  236. package/dist/directives/hotkey.js +19 -46
  237. package/dist/directives/hotkey.js.map +1 -1
  238. package/dist/granular-provider-node.js +1 -1
  239. package/dist/granular-provider.js +1 -1
  240. package/dist/i18n/all.js +1 -1
  241. package/dist/i18n/index.js +1 -1
  242. package/dist/index.js +71 -63
  243. package/dist/theme.js +1 -1
  244. package/dist/tokens.js +1 -1
  245. package/dist/types/components/GrAutocomplete/GrAutocomplete.vue.d.ts +4 -4
  246. package/dist/types/components/GrAutocomplete/composables/useAutocompleteNavigation.d.ts +12 -3
  247. package/dist/types/components/GrAutocomplete/composables/useAutocompletePanel.d.ts +12 -2
  248. package/dist/types/components/GrAutocomplete/composables/useAutocompleteValues.d.ts +7 -4
  249. package/dist/types/components/GrAutocomplete/composables/useRemoteOptions.d.ts +4 -4
  250. package/dist/types/components/GrAutocomplete/grAutocompleteStyles.d.ts +15 -1
  251. package/dist/types/components/GrAutocomplete/index.d.ts +1 -1
  252. package/dist/types/components/GrCarousel/GrCarousel.vue.d.ts +29 -1
  253. package/dist/types/components/GrCarousel/composables/useCarouselSwipe.d.ts +5 -0
  254. package/dist/types/components/GrCarousel/grCarouselContext.d.ts +21 -0
  255. package/dist/types/components/GrCarousel/grCarouselStyles.d.ts +39 -9
  256. package/dist/types/components/GrCheckbox/GrCheckbox.vue.d.ts +13 -0
  257. package/dist/types/components/GrColorPicker/GrColorPicker.vue.d.ts +18 -2
  258. package/dist/types/components/GrColorPicker/color.d.ts +13 -1
  259. package/dist/types/components/GrColorPicker/colorArea.d.ts +59 -0
  260. package/dist/types/components/GrColorPicker/defaults.d.ts +3 -1
  261. package/dist/types/components/GrColorPicker/eyeDropper.d.ts +21 -0
  262. package/dist/types/components/GrColorPicker/grColorPickerStyles.d.ts +42 -0
  263. package/dist/types/components/GrCommandPalette/GrCommandPalette.vue.d.ts +10 -1
  264. package/dist/types/components/GrDataTable/GrDataTable.vue.d.ts +41 -1
  265. package/dist/types/components/GrDataTable/composables/useDataTableGridNavigation.d.ts +53 -0
  266. package/dist/types/components/GrDataTable/grDataTableStyles.d.ts +8 -0
  267. package/dist/types/components/GrDataTable/index.d.ts +1 -1
  268. package/dist/types/components/GrDelta/grDeltaStyles.d.ts +10 -3
  269. package/dist/types/components/GrEmptyState/GrEmptyState.vue.d.ts +11 -2
  270. package/dist/types/components/GrEmptyState/grEmptyStateStyles.d.ts +10 -0
  271. package/dist/types/components/GrEmptyState/index.d.ts +1 -1
  272. package/dist/types/components/GrFileUpload/GrFileUpload.vue.d.ts +2 -1
  273. package/dist/types/components/GrFormFile/GrFormFile.vue.d.ts +10 -0
  274. package/dist/types/components/GrInput/GrInput.vue.d.ts +15 -0
  275. package/dist/types/components/GrInputTag/GrInputTag.vue.d.ts +16 -0
  276. package/dist/types/components/GrInputTag/grInputTagStyles.d.ts +11 -0
  277. package/dist/types/components/GrKbd/GrKbd.vue.d.ts +14 -0
  278. package/dist/types/components/GrNavbar/GrNavbar.vue.d.ts +18 -0
  279. package/dist/types/components/GrNavbar/grNavbarStyles.d.ts +10 -1
  280. package/dist/types/components/GrNavbar/index.d.ts +1 -0
  281. package/dist/types/components/GrSelect/composables/useSelectPanelItems.d.ts +8 -34
  282. package/dist/types/components/GrSelect/composables/useSelectVirtualization.d.ts +7 -0
  283. package/dist/types/components/GrSelect/grSelectStyles.d.ts +1 -1
  284. package/dist/types/components/GrSidebar/GrSidebar.vue.d.ts +20 -0
  285. package/dist/types/components/GrSidebar/GrSidebarItem.vue.d.ts +39 -5
  286. package/dist/types/components/GrSidebar/grSidebarStyles.d.ts +32 -0
  287. package/dist/types/components/GrSidebar/index.d.ts +1 -1
  288. package/dist/types/components/GrSidebar/sidebarContext.d.ts +23 -1
  289. package/dist/types/components/GrSlider/GrSlider.vue.d.ts +39 -1
  290. package/dist/types/components/GrSlider/grSliderStyles.d.ts +1 -1
  291. package/dist/types/components/GrTabPanels/context.d.ts +6 -0
  292. package/dist/types/components/GrTable/GrTable.vue.d.ts +37 -0
  293. package/dist/types/components/GrTable/grTableStyles.d.ts +16 -7
  294. package/dist/types/components/GrTabsWithPanels/GrTabsWithPanels.vue.d.ts +77 -0
  295. package/dist/types/components/GrTabsWithPanels/config.d.ts +1 -0
  296. package/dist/types/components/GrTabsWithPanels/index.d.ts +4 -0
  297. package/dist/types/components/GrTextarea/GrTextarea.vue.d.ts +19 -1
  298. package/dist/types/components/GrToaster/GrToaster.vue.d.ts +12 -0
  299. package/dist/types/components/GrToaster/grToasterStyles.d.ts +26 -0
  300. package/dist/types/components/GrTooltip/GrTooltip.vue.d.ts +22 -0
  301. package/dist/types/components/GrTransfer/GrTransfer.vue.d.ts +23 -0
  302. package/dist/types/components/GrTreeSelect/grTreeSelectStyles.d.ts +1 -1
  303. package/dist/types/components/GrTreeSelect/grTreeSelectTypes.d.ts +20 -0
  304. package/dist/types/components/shared/hotkey.d.ts +8 -9
  305. package/dist/types/components/shared/optionPanel.d.ts +100 -0
  306. package/dist/types/components/shared/overlayListPanel.d.ts +18 -0
  307. package/dist/types/composables/useHotkeys.d.ts +43 -0
  308. package/dist/types/granular-provider/shared.d.ts +1 -0
  309. package/dist/types/i18n/messages/en.d.ts +28 -0
  310. package/dist/types/i18n/messages/es.d.ts +28 -0
  311. package/dist/types/i18n/messages/ru.d.ts +28 -0
  312. package/dist/types/index.d.ts +3 -0
  313. package/dist/types/internal/hotkeySequence.d.ts +22 -0
  314. package/dist/types/internal/keyboard.d.ts +45 -0
  315. package/dist/web-types.json +463 -26
  316. package/package.json +9 -1
  317. package/dist/chunks/config-2ZHRsdOc.js.map +0 -1
  318. package/dist/chunks/config-B42iJ48O.js.map +0 -1
  319. package/dist/chunks/config-B5SBUa6u.js.map +0 -1
  320. package/dist/chunks/config-BAse0laT.js.map +0 -1
  321. package/dist/chunks/config-BHLMTJaR.js.map +0 -1
  322. package/dist/chunks/config-BXRmsn3t.js.map +0 -1
  323. package/dist/chunks/config-Bs1HwUcx.js.map +0 -1
  324. package/dist/chunks/config-CMNfZO7S.js.map +0 -1
  325. package/dist/chunks/config-CbEbLyDE.js.map +0 -1
  326. package/dist/chunks/config-CjWOTgLL.js.map +0 -1
  327. package/dist/chunks/config-D3HOuHDe.js.map +0 -1
  328. package/dist/chunks/config-DIDz_E5m.js.map +0 -1
  329. package/dist/chunks/config-DNDgp9bB.js.map +0 -1
  330. package/dist/chunks/config-iemgzS4x.js.map +0 -1
  331. package/dist/chunks/en-CsQUoBS2.js.map +0 -1
  332. package/dist/chunks/es-9nbkPvdA.js.map +0 -1
  333. package/dist/chunks/grSelectStyles-D9EQ-pgK.js.map +0 -1
  334. package/dist/chunks/grSliderStyles-kaz6VXZ3.js.map +0 -1
  335. package/dist/chunks/grTableStyles-DkQPMfx9.js +0 -39
  336. package/dist/chunks/grTableStyles-DkQPMfx9.js.map +0 -1
  337. package/dist/chunks/granular-provider-B6xomapW.js.map +0 -1
  338. package/dist/chunks/keyboard-DE2yhz_b.js.map +0 -1
  339. package/dist/chunks/overlayPanelSurface-BKeMhRx4.js.map +0 -1
  340. package/dist/chunks/ru-88i1WG0b.js.map +0 -1
  341. package/dist/components/GrAutocomplete/chunks/GrAutocomplete-Chhw65pI.js.map +0 -1
  342. package/dist/components/GrCarousel/chunks/GrCarousel-ByuughtI.js.map +0 -1
  343. package/dist/components/GrCheckbox/chunks/GrCheckbox-Dp201frb.js.map +0 -1
  344. package/dist/components/GrColorPicker/chunks/GrColorPicker-BRM_4lyI.js.map +0 -1
  345. package/dist/components/GrCommandPalette/chunks/GrCommandPalette-BJHmkDQv.js.map +0 -1
  346. package/dist/components/GrDataTable/chunks/GrDataTable-DQxYYgQk.js.map +0 -1
  347. package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-Dxkz_ry4.js.map +0 -1
  348. package/dist/components/GrEmptyState/chunks/GrEmptyState-BbvwE-E0.js.map +0 -1
  349. package/dist/components/GrFileUpload/chunks/GrFileUpload-BwMR71zN.js.map +0 -1
  350. package/dist/components/GrFormFile/chunks/GrFormFile-Dlxx-9zi.js.map +0 -1
  351. package/dist/components/GrInput/chunks/GrInput-DV4gMWPR.js.map +0 -1
  352. package/dist/components/GrInputTag/chunks/GrInputTag-qnRdAZnn.js.map +0 -1
  353. package/dist/components/GrKbd/chunks/GrKbd-BNMeoaLV.js.map +0 -1
  354. package/dist/components/GrNavbar/chunks/GrNavbar-BRGuksiy.js.map +0 -1
  355. package/dist/components/GrSelect/chunks/GrSelect-DvSq-nV-.js.map +0 -1
  356. package/dist/components/GrSidebar/chunks/GrSidebar-DoKLlHSw.js +0 -264
  357. package/dist/components/GrSidebar/chunks/GrSidebar-DoKLlHSw.js.map +0 -1
  358. package/dist/components/GrSlider/chunks/GrSlider-CO8N9SF6.js.map +0 -1
  359. package/dist/components/GrTabPanels/chunks/GrTabPanels-5zsbqS1v.js +0 -92
  360. package/dist/components/GrTabPanels/chunks/GrTabPanels-5zsbqS1v.js.map +0 -1
  361. package/dist/components/GrTable/chunks/GrTable-CKJ-HrsN.js.map +0 -1
  362. package/dist/components/GrTextarea/chunks/GrTextarea-Bfgc0DD2.js.map +0 -1
  363. package/dist/components/GrToaster/chunks/GrToaster-CZixNk0l.js.map +0 -1
  364. package/dist/components/GrTooltip/chunks/GrTooltip-DkMMM0uq.js.map +0 -1
  365. package/dist/components/GrTransfer/chunks/GrTransfer-DdfBUf35.js.map +0 -1
  366. package/dist/components/GrTree/chunks/GrTree-6yZrncJE.js.map +0 -1
  367. package/dist/components/GrTreeSelect/chunks/GrTreeSelect-B6KoDYiZ.js.map +0 -1
  368. package/dist/types/components/GrAutocomplete/composables/useAutocompleteVirtual.d.ts +0 -33
@@ -20,6 +20,22 @@ export interface GrTooltipProps {
20
20
  disabled?: boolean;
21
21
  /** Управляемая видимость. Без неё компонент ведёт видимость сам. */
22
22
  open?: boolean;
23
+ /**
24
+ * Обёртка занимает ширину родителя вместо ширины содержимого.
25
+ *
26
+ * Нужно там, где триггер обязан тянуться: пункт списка, строка меню, ячейка.
27
+ * `inline-flex` по умолчанию схлопнул бы такой триггер по содержимому, и
28
+ * подсветка с кольцом фокуса сжались бы вместе с ним.
29
+ */
30
+ block?: boolean;
31
+ /**
32
+ * Вешать ли `aria-describedby` на триггер. По умолчанию да.
33
+ *
34
+ * `false` — когда подсказка **дословно повторяет** доступное имя триггера:
35
+ * тогда это не описание, а шум, и диктор произносит подпись дважды. Так
36
+ * устроен свёрнутый `GrSidebarItem`: имя у него уже в `aria-label`.
37
+ */
38
+ describeTrigger?: boolean;
23
39
  }
24
40
  export interface GrTooltipEmits {
25
41
  (e: 'update:open', value: boolean): void;
@@ -40,6 +56,8 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
40
56
  closeDelay: number;
41
57
  disabled: boolean;
42
58
  open: undefined;
59
+ block: boolean;
60
+ describeTrigger: boolean;
43
61
  }>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
44
62
  "update:open": (value: boolean) => void;
45
63
  }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<GrTooltipProps>, {
@@ -52,6 +70,8 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
52
70
  closeDelay: number;
53
71
  disabled: boolean;
54
72
  open: undefined;
73
+ block: boolean;
74
+ describeTrigger: boolean;
55
75
  }>>> & Readonly<{
56
76
  "onUpdate:open"?: ((value: boolean) => any) | undefined;
57
77
  }>, {
@@ -59,11 +79,13 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
59
79
  disabled: boolean;
60
80
  text: string;
61
81
  size: GrTooltipSize;
82
+ block: boolean;
62
83
  open: boolean;
63
84
  offsetPx: number;
64
85
  openDelay: number;
65
86
  closeDelay: number;
66
87
  iconColor: string;
88
+ describeTrigger: boolean;
67
89
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
68
90
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
69
91
  declare const _default: typeof __VLS_export;
@@ -19,12 +19,31 @@ export interface GrTransferProps<T extends Record<string, unknown> = Record<stri
19
19
  searchable?: boolean;
20
20
  /** Свой матчер: встроенный ищет по `itemLabel`, а строка может показывать больше. */
21
21
  filter?: (item: T, query: string) => boolean;
22
+ /**
23
+ * Каталог в пути: пустая панель говорит «ищем», а не «ничего не найдено».
24
+ *
25
+ * Проп общий на обе панели, а не свой у каждой: `items` — один каталог, и обе
26
+ * панели его виды, так что пока он едет, пусты обе. Подгрузку запускает
27
+ * потребитель по событию `search`, поэтому и флаг держит он.
28
+ */
29
+ loading?: boolean;
30
+ /** Текст индикатора. Не задан — из локали (`gr.transfer.loading`). */
31
+ loadingText?: string;
22
32
  /** Правую панель можно переставлять. */
23
33
  sortable?: boolean;
24
34
  /** Перетаскивание строк указателем. Усиление поверх кнопок, а не контракт. */
25
35
  draggable?: boolean;
26
36
  /** Высота панелей: обе одинаковы и прокручиваются внутри себя. */
27
37
  maxHeight?: number | string;
38
+ /**
39
+ * Держать в DOM только окно строк вокруг вьюпорта. Нужен `maxHeight`: без
40
+ * него панель не прокручивается, окна нет и виртуализировать нечего.
41
+ *
42
+ * Перенос от этого не страдает — он идёт по модели, а не по разметке. А вот
43
+ * перетаскивание указателем ограничено отрисованными строками: навести
44
+ * указатель на то, чего нет на экране, всё равно нечем.
45
+ */
46
+ virtual?: boolean;
28
47
  size?: GrComponentSize;
29
48
  disabled?: boolean;
30
49
  readonly?: boolean;
@@ -89,6 +108,10 @@ declare const __VLS_export: <TItem extends Record<string, unknown> = Record<stri
89
108
  side: GrTransferSide;
90
109
  filtered: boolean;
91
110
  }) => unknown;
111
+ /** Панель под загрузкой — вместо текста «ищем». */
112
+ loading?: (props: {
113
+ side: GrTransferSide;
114
+ }) => unknown;
92
115
  };
93
116
  emit: GrTransferEmits;
94
117
  }>) => import("vue").VNode & {
@@ -29,7 +29,7 @@ export declare function grTreeSelectClass(options: {
29
29
  invalid: boolean;
30
30
  disabled?: boolean;
31
31
  }): string;
32
- export declare const grTreeSelectPanelClass = "rounded-[var(--gr-radius-xl)] border border-[var(--gr-brd)] bg-[var(--gr-popover)] text-[var(--gr-popover-fg)] shadow-[var(--gr-shadow-2)] overflow-hidden";
32
+ export declare const grTreeSelectPanelClass = "rounded-[var(--gr-radius-xl)] border border-[var(--gr-brd)] bg-[var(--gr-popover)] text-[var(--gr-popover-fg)] shadow-[var(--gr-shadow-2)] flex flex-col max-h-[var(--gr-floating-available-height,100vh)] overflow-hidden";
33
33
  /**
34
34
  * Строка состояния панели: загрузка и «нет данных». По центру и с двойным
35
35
  * воздухом — тот же язык, что у `GrSelect`, `GrAutocomplete` и палитры команд.
@@ -1,6 +1,7 @@
1
1
  import type { InputHTMLAttributes } from 'vue';
2
2
  import type { GrInputSize } from '../GrInput/GrInput.vue';
3
3
  import type { GrTreeFilterNodeMethod, GrTreeKey, GrTreePropsMap } from '../GrTree';
4
+ import type { GrBadgeRadius, GrBadgeSize, GrBadgeTone } from '../GrBadge/grBadgeStyles';
4
5
  import type { GrTreeSelectState } from './grTreeSelectStyles';
5
6
  export type GrTreeSelectModelValue = GrTreeKey | GrTreeKey[] | null;
6
7
  export type GrTreeSelectValueDisplay = 'label' | 'path';
@@ -39,6 +40,25 @@ export interface GrTreeSelectProps<T extends object = any> {
39
40
  showCheckbox?: boolean;
40
41
  /** Отвязать родителей от детей: отметка перестаёт распространяться каскадом. */
41
42
  checkStrictly?: boolean;
43
+ /**
44
+ * Чипы выбранных узлов в триггере вместо строки «a, b, c». Работает только
45
+ * вместе с `multiple`: у одиночного выбора чип был бы плашкой на одно значение.
46
+ */
47
+ tags?: boolean;
48
+ /**
49
+ * Сколько чипов показать до сворачивания остатка в «+N». Без него растёт весь
50
+ * набор, а высота триггера за ним не идёт — лишние чипы уходят за край.
51
+ */
52
+ maxTagCount?: number;
53
+ /**
54
+ * Вид чипов. Чип — это `GrBadge`: своя плашка на светлой теме почти не
55
+ * отличалась бы от фона поля. Имена и шкалы те же, что у `GrSelect`, — переходя
56
+ * с одного компонента на другой, потребитель не переучивается.
57
+ */
58
+ tagTone?: GrBadgeTone;
59
+ tagDark?: boolean;
60
+ tagSize?: GrBadgeSize;
61
+ tagRadius?: GrBadgeRadius;
42
62
  clearable?: boolean;
43
63
  /**
44
64
  * Контролируемое состояние панели (`v-model:open`). Без пропа панель ведёт
@@ -10,19 +10,13 @@
10
10
  * а палитра в закрытом состоянии не рендерит ничего. Поэтому здесь — свой
11
11
  * матчер на `window`, с тем же синтаксисом комбинаций плюс токен `mod`.
12
12
  */
13
+ import type { ParsedHotkeyCombo } from '../../internal/keyboard';
13
14
  import { type HotkeyKeyView } from './hotkeyTokens';
14
15
  export { isAppleDevice } from '../../internal/keyboard';
15
16
  export { findKbdToken, GR_KBD_TOKENS } from './hotkeyTokens';
16
17
  export type { GrKbdKeyName, GrKbdTokenGroup, GrKbdTokenSpec, HotkeyKeyView } from './hotkeyTokens';
17
- export type ParsedCommandHotkey = {
18
- key: string;
19
- ctrl: boolean;
20
- meta: boolean;
21
- alt: boolean;
22
- shift: boolean;
23
- /** `mod` — Cmd на macOS, Ctrl на остальных платформах. */
24
- mod: boolean;
25
- };
18
+ /** Разбор сочетания общий на пакет, см. `internal/keyboard`. */
19
+ export type ParsedCommandHotkey = ParsedHotkeyCombo;
26
20
  export declare function parseCommandHotkey(combo: string): ParsedCommandHotkey | null;
27
21
  export declare function matchesCommandHotkey(event: KeyboardEvent, hotkey: ParsedCommandHotkey, apple?: boolean): boolean;
28
22
  /** Человекочитаемые клавиши для подсказки в поле ввода (`⌘` / `Ctrl`). */
@@ -36,3 +30,8 @@ export declare function formatHotkeyToken(token: string, apple: boolean): Hotkey
36
30
  export declare function formatHotkeyTokens(tokens: readonly string[], apple: boolean): HotkeyKeyView[];
37
31
  /** Комбинация строкой (`mod+shift+K`) — в набор токенов в порядке показа. */
38
32
  export declare function splitHotkeyCombo(combo: string): string[];
33
+ /**
34
+ * Последовательность строкой (`g i`, `mod+k p`) — в шаги, каждый набором
35
+ * токенов. Аккорд даёт один шаг, поэтому отдельного пути для него нет.
36
+ */
37
+ export declare function splitHotkeySequence(value: string): string[][];
@@ -0,0 +1,100 @@
1
+ import type { ComputedRef, Ref } from 'vue';
2
+ /**
3
+ * Панель списка опций с группами — общая машинерия `GrSelect` и `GrAutocomplete`.
4
+ *
5
+ * Модуль ничего не знает об опции: ему нужны только её место в наборе и
6
+ * принадлежность группе. Поэтому он обобщён по типу опции, а не по типу
7
+ * значения — иначе у двух компонентов с разными шкалами значений получилось бы
8
+ * две копии одного алгоритма, и разошлись бы они молча.
9
+ *
10
+ * Разделение ответственности: **что показывать** решает компонент (у каждого
11
+ * своя фильтрация — локальный матчер, серверный ответ, «добавить своё»), а
12
+ * **как это разложить** — здесь.
13
+ */
14
+ /** Элемент панели: заголовок группы либо опция. Плоский, в порядке отрисовки. */
15
+ export type OptionPanelItem<TOption> = {
16
+ kind: 'group';
17
+ label: string;
18
+ key: string;
19
+ }
20
+ /** `groupKey` связывает опцию с заголовком её группы для скринридера. */
21
+ | {
22
+ kind: 'option';
23
+ option: TOption;
24
+ key: string;
25
+ groupKey?: string;
26
+ };
27
+ export type OptionPanelOptionRow<TOption> = {
28
+ option: TOption;
29
+ key: string;
30
+ /** Позиция в плоском наборе: из неё строится `id`, поэтому она не от значения. */
31
+ index: number;
32
+ };
33
+ export type OptionPanelGroupRow<TOption> = {
34
+ kind: 'group';
35
+ label: string;
36
+ key: string;
37
+ options: OptionPanelOptionRow<TOption>[];
38
+ /**
39
+ * Есть ли в этой отрисовке видимый заголовок. При виртуализации окно может
40
+ * начаться серединой группы: обёртка нужна всё равно, а заголовка нет —
41
+ * имя тогда идёт в `aria-label`.
42
+ */
43
+ labelVisible?: boolean;
44
+ /** Позиция заголовка в наборе — по ней его замеряет виртуализатор. */
45
+ labelIndex?: number;
46
+ };
47
+ export type OptionPanelRow<TOption> = OptionPanelGroupRow<TOption> | ({
48
+ kind: 'option';
49
+ } & OptionPanelOptionRow<TOption>);
50
+ /**
51
+ * Плоский набор → строки для рендера: заголовок группы не сосед опций, а их
52
+ * контейнер.
53
+ *
54
+ * Прямыми потомками `role="listbox"` обязаны быть только опции, иначе диктор
55
+ * считает заголовок таким же элементом выбора. Имя группе даёт `aria-labelledby`
56
+ * на её заголовке.
57
+ *
58
+ * `windowed` описывает срез: при виртуализации окно может начаться серединой
59
+ * группы, и такая группа открывается **без** видимого заголовка — иначе её
60
+ * опции оказались бы прямыми детьми listbox'а и потеряли имя набора.
61
+ */
62
+ export declare function buildOptionPanelRows<TOption>(items: OptionPanelItem<TOption>[], options?: {
63
+ /** Смещение индексов, если срез начат не с нуля. */
64
+ offset?: number;
65
+ windowed?: boolean;
66
+ /** Метки групп по ключу — нужны группе, чей заголовок остался выше окна. */
67
+ groupLabels?: Map<string, string>;
68
+ }): OptionPanelRow<TOption>[];
69
+ export interface UseOptionPanelVirtualizationOptions<TOption> {
70
+ panelItems: ComputedRef<OptionPanelItem<TOption>[]>;
71
+ panelRows: ComputedRef<OptionPanelRow<TOption>[]>;
72
+ /** Есть ли перед опциями строка «добавить своё»: она сдвигает весь набор. */
73
+ hasLeadingRow: ComputedRef<boolean>;
74
+ /** Контейнер списка: по нему считается окно и замеряются строки. */
75
+ listboxEl: Ref<HTMLElement | null>;
76
+ enabled: () => boolean;
77
+ maxHeight: () => number;
78
+ }
79
+ export interface OptionPanelVirtualization<TOption> {
80
+ virtualEnabled: ComputedRef<boolean>;
81
+ /** Сдвиг набора: ведущая строка стоит перед опциями. */
82
+ addOffset: ComputedRef<number>;
83
+ scrollToIndex: (index: number) => void;
84
+ /** Замер строки: оценка высоты уточняется по реальному узлу. */
85
+ measure: (index: number, el: Element | null) => void;
86
+ /** ARIA набора для опции; вне виртуализации набор виден по DOM. */
87
+ optionSetProps: (index: number) => Record<string, number> | undefined;
88
+ leadingRowSetProps: ComputedRef<Record<string, number> | undefined>;
89
+ showLeadingRow: ComputedRef<boolean>;
90
+ renderedPanelRows: ComputedRef<OptionPanelRow<TOption>[]>;
91
+ listboxStyle: ComputedRef<Record<string, string>>;
92
+ }
93
+ /**
94
+ * Виртуализация панели с группами.
95
+ *
96
+ * Набор — `[ведущая строка?] + panelItems`, то есть заголовки групп идут в нём
97
+ * наравне с опциями: на экране они занимают такую же строку. Вложенную
98
+ * структуру групп рендер пересобирает уже из окна.
99
+ */
100
+ export declare function useOptionPanelVirtualization<TOption>(options: UseOptionPanelVirtualizationOptions<TOption>): OptionPanelVirtualization<TOption>;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Панель списка, ужимающаяся до места, оставшегося до края вьюпорта.
3
+ *
4
+ * Слой позиционирования публикует замер в `--gr-floating-available-height`
5
+ * (`composables/useFloating.ts`), и панель берёт его потолком: собственный
6
+ * `dropdownMaxHeight` на коротком экране больше доступного места, а сжать
7
+ * панель не умеют ни `flip`, ни `shift` — низ списка просто уходит за край.
8
+ *
9
+ * Колонка обязательна вместе с потолком. Панель держит не только список, но и
10
+ * поле поиска, строку «добавить своё» и строки состояний; без `flex-col` и
11
+ * `min-h-0` у списка ужимался бы не он, а панель целиком — то есть вместо
12
+ * одного скролла вышло бы два.
13
+ *
14
+ * Модуль отдельный от `overlayPanelSurface` намеренно: ту поверхность берёт и
15
+ * `GrPopover` со своим потолком, а класс из общего модуля обязан объявить в
16
+ * safelist **каждый** импортёр, даже не пользующийся им.
17
+ */
18
+ export declare const overlayListPanelClass = "flex flex-col max-h-[var(--gr-floating-available-height,100vh)]";
@@ -0,0 +1,43 @@
1
+ import type { App, InjectionKey } from 'vue';
2
+ /**
3
+ * Реестр горячих клавиш приложения: один источник «id → сочетание + подпись».
4
+ *
5
+ * Без него сочетание пишется дважды — в привязке (`v-hotkey`) и в подсказке
6
+ * (`GrKbd`), — и расходится молча: подсказка обещает одно, а срабатывает другое,
7
+ * и заметить это можно только руками.
8
+ *
9
+ * Реестр объявляет **умолчания приложения**. Пользовательские переопределения —
10
+ * состояние приложения, и жить им здесь незачем: кит про них ничего не знает.
11
+ */
12
+ export interface GrHotkeyDefinition {
13
+ /**
14
+ * Сочетание в общем синтаксисе пакета: `'mod+k'` — аккорд, `'g i'` —
15
+ * «G, затем I». Разбор — `parseHotkeySequence`.
16
+ */
17
+ keys: string;
18
+ /** Человекочитаемое имя действия: для подсказок и списка сочетаний. */
19
+ label?: string;
20
+ }
21
+ export type GrHotkeyRegistry = Record<string, GrHotkeyDefinition>;
22
+ interface HotkeysState {
23
+ hotkeys: GrHotkeyRegistry;
24
+ }
25
+ export interface GranularityHotkeysPluginOptions {
26
+ hotkeys?: GrHotkeyRegistry;
27
+ }
28
+ /** Ключ provide/inject для app-scoped реестра (устанавливает плагин ниже). */
29
+ export declare const GRANULARITY_HOTKEYS_STATE: InjectionKey<HotkeysState>;
30
+ export declare const granularityHotkeysPlugin: {
31
+ install(app: App, options?: GranularityHotkeysPluginOptions): void;
32
+ };
33
+ /** Сброс модульного реестра и dev-предупреждения. Внутреннее API — нужно тестам. */
34
+ export declare function resetHotkeysRegistry(): void;
35
+ export declare function useHotkeys(): {
36
+ hotkeys: import("vue").ComputedRef<GrHotkeyRegistry>;
37
+ get: (id: string) => GrHotkeyDefinition | undefined;
38
+ register: (id: string, definition: GrHotkeyDefinition) => void;
39
+ byHotkeyId: (map: Record<string, unknown>) => Record<string, any>;
40
+ keysOf: (id: string) => string | undefined;
41
+ labelOf: (id: string) => string | undefined;
42
+ };
43
+ export {};
@@ -85,6 +85,7 @@ export declare const granularityComponentConfigs: {
85
85
  GrTable: GranularComponentDescriptor<"GrTable">;
86
86
  GrTabPanels: GranularComponentDescriptor<"GrTabPanels">;
87
87
  GrTabs: GranularComponentDescriptor<"GrTabs">;
88
+ GrTabsWithPanels: GranularComponentDescriptor<"GrTabsWithPanels">;
88
89
  GrTextarea: GranularComponentDescriptor<"GrTextarea">;
89
90
  GrTimeline: GranularComponentDescriptor<"GrTimeline">;
90
91
  GrToaster: GranularComponentDescriptor<"GrToaster">;
@@ -26,6 +26,7 @@ export declare const en: {
26
26
  reordered: string;
27
27
  reorderFiltered: string;
28
28
  cancelled: string;
29
+ loading: string;
29
30
  };
30
31
  carousel: {
31
32
  roledescription: string;
@@ -64,6 +65,7 @@ export declare const en: {
64
65
  filterPlaceholder: string;
65
66
  empty: string;
66
67
  loading: string;
68
+ removeTag: string;
67
69
  };
68
70
  badgeWrap: {
69
71
  count: string;
@@ -113,6 +115,13 @@ export declare const en: {
113
115
  detailExpanded: string;
114
116
  detailCollapsed: string;
115
117
  detailReady: string;
118
+ columnMenu: string;
119
+ pinLeft: string;
120
+ pinRight: string;
121
+ unpin: string;
122
+ columnPinnedLeft: string;
123
+ columnPinnedRight: string;
124
+ columnUnpinned: string;
116
125
  };
117
126
  breadcrumbs: {
118
127
  label: string;
@@ -241,6 +250,8 @@ export declare const en: {
241
250
  removed: string;
242
251
  cleared: string;
243
252
  limitReached: string;
253
+ editTag: string;
254
+ edited: string;
244
255
  };
245
256
  fileUpload: {
246
257
  placeholder: string;
@@ -365,6 +376,8 @@ export declare const en: {
365
376
  hexLabel: string;
366
377
  presetsLabel: string;
367
378
  swatchLabel: string;
379
+ area: string;
380
+ eyedropper: string;
368
381
  };
369
382
  collapse: {
370
383
  empty: string;
@@ -391,6 +404,7 @@ export declare const en: {
391
404
  };
392
405
  emptyState: {
393
406
  title: string;
407
+ searchTitle: string;
394
408
  };
395
409
  sortable: {
396
410
  label: string;
@@ -431,6 +445,7 @@ export declare const en: {
431
445
  reordered: string;
432
446
  reorderFiltered: string;
433
447
  cancelled: string;
448
+ loading: string;
434
449
  };
435
450
  carousel: {
436
451
  roledescription: string;
@@ -469,6 +484,7 @@ export declare const en: {
469
484
  filterPlaceholder: string;
470
485
  empty: string;
471
486
  loading: string;
487
+ removeTag: string;
472
488
  };
473
489
  badgeWrap: {
474
490
  count: string;
@@ -518,6 +534,13 @@ export declare const en: {
518
534
  detailExpanded: string;
519
535
  detailCollapsed: string;
520
536
  detailReady: string;
537
+ columnMenu: string;
538
+ pinLeft: string;
539
+ pinRight: string;
540
+ unpin: string;
541
+ columnPinnedLeft: string;
542
+ columnPinnedRight: string;
543
+ columnUnpinned: string;
521
544
  };
522
545
  breadcrumbs: {
523
546
  label: string;
@@ -646,6 +669,8 @@ export declare const en: {
646
669
  removed: string;
647
670
  cleared: string;
648
671
  limitReached: string;
672
+ editTag: string;
673
+ edited: string;
649
674
  };
650
675
  fileUpload: {
651
676
  placeholder: string;
@@ -770,6 +795,8 @@ export declare const en: {
770
795
  hexLabel: string;
771
796
  presetsLabel: string;
772
797
  swatchLabel: string;
798
+ area: string;
799
+ eyedropper: string;
773
800
  };
774
801
  collapse: {
775
802
  empty: string;
@@ -796,6 +823,7 @@ export declare const en: {
796
823
  };
797
824
  emptyState: {
798
825
  title: string;
826
+ searchTitle: string;
799
827
  };
800
828
  sortable: {
801
829
  label: string;
@@ -19,6 +19,7 @@ export declare const es: {
19
19
  reordered: string;
20
20
  reorderFiltered: string;
21
21
  cancelled: string;
22
+ loading: string;
22
23
  };
23
24
  carousel: {
24
25
  roledescription: string;
@@ -57,6 +58,7 @@ export declare const es: {
57
58
  filterPlaceholder: string;
58
59
  empty: string;
59
60
  loading: string;
61
+ removeTag: string;
60
62
  };
61
63
  badgeWrap: {
62
64
  count: string;
@@ -106,6 +108,13 @@ export declare const es: {
106
108
  detailExpanded: string;
107
109
  detailCollapsed: string;
108
110
  detailReady: string;
111
+ columnMenu: string;
112
+ pinLeft: string;
113
+ pinRight: string;
114
+ unpin: string;
115
+ columnPinnedLeft: string;
116
+ columnPinnedRight: string;
117
+ columnUnpinned: string;
109
118
  };
110
119
  breadcrumbs: {
111
120
  label: string;
@@ -235,6 +244,8 @@ export declare const es: {
235
244
  removed: string;
236
245
  cleared: string;
237
246
  limitReached: string;
247
+ editTag: string;
248
+ edited: string;
238
249
  };
239
250
  fileUpload: {
240
251
  placeholder: string;
@@ -360,6 +371,8 @@ export declare const es: {
360
371
  hexLabel: string;
361
372
  presetsLabel: string;
362
373
  swatchLabel: string;
374
+ area: string;
375
+ eyedropper: string;
363
376
  };
364
377
  collapse: {
365
378
  empty: string;
@@ -386,6 +399,7 @@ export declare const es: {
386
399
  };
387
400
  emptyState: {
388
401
  title: string;
402
+ searchTitle: string;
389
403
  };
390
404
  sortable: {
391
405
  label: string;
@@ -426,6 +440,7 @@ export declare const es: {
426
440
  reordered: string;
427
441
  reorderFiltered: string;
428
442
  cancelled: string;
443
+ loading: string;
429
444
  };
430
445
  carousel: {
431
446
  roledescription: string;
@@ -464,6 +479,7 @@ export declare const es: {
464
479
  filterPlaceholder: string;
465
480
  empty: string;
466
481
  loading: string;
482
+ removeTag: string;
467
483
  };
468
484
  badgeWrap: {
469
485
  count: string;
@@ -513,6 +529,13 @@ export declare const es: {
513
529
  detailExpanded: string;
514
530
  detailCollapsed: string;
515
531
  detailReady: string;
532
+ columnMenu: string;
533
+ pinLeft: string;
534
+ pinRight: string;
535
+ unpin: string;
536
+ columnPinnedLeft: string;
537
+ columnPinnedRight: string;
538
+ columnUnpinned: string;
516
539
  };
517
540
  breadcrumbs: {
518
541
  label: string;
@@ -642,6 +665,8 @@ export declare const es: {
642
665
  removed: string;
643
666
  cleared: string;
644
667
  limitReached: string;
668
+ editTag: string;
669
+ edited: string;
645
670
  };
646
671
  fileUpload: {
647
672
  placeholder: string;
@@ -767,6 +792,8 @@ export declare const es: {
767
792
  hexLabel: string;
768
793
  presetsLabel: string;
769
794
  swatchLabel: string;
795
+ area: string;
796
+ eyedropper: string;
770
797
  };
771
798
  collapse: {
772
799
  empty: string;
@@ -793,6 +820,7 @@ export declare const es: {
793
820
  };
794
821
  emptyState: {
795
822
  title: string;
823
+ searchTitle: string;
796
824
  };
797
825
  sortable: {
798
826
  label: string;
@@ -19,6 +19,7 @@ export declare const ru: {
19
19
  reordered: string;
20
20
  reorderFiltered: string;
21
21
  cancelled: string;
22
+ loading: string;
22
23
  };
23
24
  carousel: {
24
25
  roledescription: string;
@@ -57,6 +58,7 @@ export declare const ru: {
57
58
  filterPlaceholder: string;
58
59
  empty: string;
59
60
  loading: string;
61
+ removeTag: string;
60
62
  };
61
63
  badgeWrap: {
62
64
  count: string;
@@ -106,6 +108,13 @@ export declare const ru: {
106
108
  detailExpanded: string;
107
109
  detailCollapsed: string;
108
110
  detailReady: string;
111
+ columnMenu: string;
112
+ pinLeft: string;
113
+ pinRight: string;
114
+ unpin: string;
115
+ columnPinnedLeft: string;
116
+ columnPinnedRight: string;
117
+ columnUnpinned: string;
109
118
  };
110
119
  breadcrumbs: {
111
120
  label: string;
@@ -236,6 +245,8 @@ export declare const ru: {
236
245
  removed: string;
237
246
  cleared: string;
238
247
  limitReached: string;
248
+ editTag: string;
249
+ edited: string;
239
250
  };
240
251
  fileUpload: {
241
252
  placeholder: string;
@@ -362,6 +373,8 @@ export declare const ru: {
362
373
  hexLabel: string;
363
374
  presetsLabel: string;
364
375
  swatchLabel: string;
376
+ area: string;
377
+ eyedropper: string;
365
378
  };
366
379
  collapse: {
367
380
  empty: string;
@@ -388,6 +401,7 @@ export declare const ru: {
388
401
  };
389
402
  emptyState: {
390
403
  title: string;
404
+ searchTitle: string;
391
405
  };
392
406
  sortable: {
393
407
  label: string;
@@ -428,6 +442,7 @@ export declare const ru: {
428
442
  reordered: string;
429
443
  reorderFiltered: string;
430
444
  cancelled: string;
445
+ loading: string;
431
446
  };
432
447
  carousel: {
433
448
  roledescription: string;
@@ -466,6 +481,7 @@ export declare const ru: {
466
481
  filterPlaceholder: string;
467
482
  empty: string;
468
483
  loading: string;
484
+ removeTag: string;
469
485
  };
470
486
  badgeWrap: {
471
487
  count: string;
@@ -515,6 +531,13 @@ export declare const ru: {
515
531
  detailExpanded: string;
516
532
  detailCollapsed: string;
517
533
  detailReady: string;
534
+ columnMenu: string;
535
+ pinLeft: string;
536
+ pinRight: string;
537
+ unpin: string;
538
+ columnPinnedLeft: string;
539
+ columnPinnedRight: string;
540
+ columnUnpinned: string;
518
541
  };
519
542
  breadcrumbs: {
520
543
  label: string;
@@ -645,6 +668,8 @@ export declare const ru: {
645
668
  removed: string;
646
669
  cleared: string;
647
670
  limitReached: string;
671
+ editTag: string;
672
+ edited: string;
648
673
  };
649
674
  fileUpload: {
650
675
  placeholder: string;
@@ -771,6 +796,8 @@ export declare const ru: {
771
796
  hexLabel: string;
772
797
  presetsLabel: string;
773
798
  swatchLabel: string;
799
+ area: string;
800
+ eyedropper: string;
774
801
  };
775
802
  collapse: {
776
803
  empty: string;
@@ -797,6 +824,7 @@ export declare const ru: {
797
824
  };
798
825
  emptyState: {
799
826
  title: string;
827
+ searchTitle: string;
800
828
  };
801
829
  sortable: {
802
830
  label: string;