@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
@@ -33,8 +33,16 @@ export type GrDataColumn<TRow extends Record<string, unknown> = Record<string, u
33
33
  * колонки из группы в группу запрещён, иначе «закреплена слева» перестало бы
34
34
  * означать «слева».
35
35
  */
36
- pinned?: 'left' | 'right';
36
+ pinned?: GrColumnPinSide;
37
37
  };
38
+ /** Край, к которому липнет колонка. */
39
+ export type GrColumnPinSide = 'left' | 'right';
40
+ /**
41
+ * Закрепление, выбранное пользователем. `null` — не «как в конфиге», а
42
+ * «откреплена»: без него снять закрепление, объявленное у колонки, было бы
43
+ * нечем — отсутствие ключа означает «решает конфиг».
44
+ */
45
+ export type GrColumnPin = GrColumnPinSide | null;
38
46
  /**
39
47
  * Значения итоговой строки по ключам колонок.
40
48
  *
@@ -150,6 +158,28 @@ export interface GrDataTableProps<TRow extends Record<string, unknown> = Record<
150
158
  * Не заданы — ширины компонент помнит сам.
151
159
  */
152
160
  columnWidths?: Record<string, number>;
161
+ /**
162
+ * Закрепление колонок задаёт пользователь: в шапке появляется меню с
163
+ * «закрепить слева / справа / открепить».
164
+ *
165
+ * Без пропа `pinned` у колонки остаётся тем, чем был, — объявлением в
166
+ * конфиге, которое меняется только кодом.
167
+ */
168
+ pinnableColumns?: boolean;
169
+ /**
170
+ * Контролируемое закрепление по ключу колонки (`v-model:pinnedColumns`).
171
+ * Не задано — компонент помнит его сам, начиная с `pinned` у колонок.
172
+ */
173
+ pinnedColumns?: Record<string, GrColumnPin>;
174
+ /**
175
+ * Клавиатура по ячейкам: паттерн `grid` из WAI-ARIA APG.
176
+ *
177
+ * Вся таблица становится **одной** остановкой `Tab`, внутрь ведут стрелки, а
178
+ * в содержимое ячейки — `Enter` или `F2`. Поэтому проп отдельный, а не
179
+ * поведение по умолчанию: он переставляет таб-порядок у всех, кто таблицу
180
+ * уже поставил.
181
+ */
182
+ cellNavigation?: boolean;
153
183
  /**
154
184
  * Второй ярус строки: колонка с кнопкой раскрытия и блок подробностей под
155
185
  * строкой. Содержимое рисует слот `#detail`.
@@ -200,6 +230,11 @@ export interface GrDataTableEmits<TRow extends Record<string, unknown> = Record<
200
230
  key: string;
201
231
  width: number;
202
232
  }): void;
233
+ (e: 'update:pinnedColumns', value: Record<string, GrColumnPin>): void;
234
+ (e: 'columnPin', payload: {
235
+ key: string;
236
+ pinned: GrColumnPin;
237
+ }): void;
203
238
  (e: 'update:expandedKeys', value: Array<string | number>): void;
204
239
  (e: 'expand', payload: {
205
240
  row: TRow;
@@ -248,6 +283,11 @@ declare const __VLS_export: <TRow extends Record<string, unknown> = Record<strin
248
283
  key: string;
249
284
  width: number;
250
285
  }) => any) | undefined;
286
+ "onUpdate:pinnedColumns"?: ((value: Record<string, GrColumnPin>) => any) | undefined;
287
+ onColumnPin?: ((payload: {
288
+ key: string;
289
+ pinned: GrColumnPin;
290
+ }) => any) | undefined;
251
291
  "onUpdate:expandedKeys"?: ((value: (string | number)[]) => any) | undefined;
252
292
  onDetailLoadError?: ((payload: {
253
293
  row: TRow;
@@ -0,0 +1,53 @@
1
+ import type { ComputedRef } from 'vue';
2
+ /**
3
+ * Клавиатура по ячейкам: паттерн `grid` из WAI-ARIA APG.
4
+ *
5
+ * Своей арифметики здесь нет — её ведёт `useRovingFocus` в режиме `grid`. Этот
6
+ * модуль отвечает за то, чего примитив знать не может: как адресуется ячейка
7
+ * таблицы, что делать на краю окна виртуализации и куда прокрутить, прежде чем
8
+ * фокусировать.
9
+ *
10
+ * **Кольцо не замкнуто.** У списка зацикливание уместно, у сетки нет: строка
11
+ * ниже последней — это не первая, а «дальше некуда», и в виртуальном списке
12
+ * именно на этом краю начинается подгрузка.
13
+ *
14
+ * **Набор — отрисованное окно, а не вся таблица.** У десяти тысяч строк на шесть
15
+ * колонок ключей было бы шестьдесят тысяч, и пересобирались бы они при каждом
16
+ * чтении. Шаг за край окна разбирается до примитива (`windowStep`): список
17
+ * прокручивается, и фокус уходит в строку, появившуюся следующим кадром.
18
+ */
19
+ /** Строка шапки адресуется как `-1`: в наборе она первая, но строкой данных не является. */
20
+ export declare const HEADER_ROW_INDEX = -1;
21
+ /** Ключ ячейки. Строка вместо пары чисел — примитив сравнивает ключи по `===`. */
22
+ export type GrGridCellKey = string;
23
+ export declare function gridCellKey(row: number, column: number): GrGridCellKey;
24
+ export declare function parseGridCellKey(key: GrGridCellKey): {
25
+ row: number;
26
+ column: number;
27
+ };
28
+ export interface UseDataTableGridNavigationOptions {
29
+ /** Включена ли навигация по ячейкам. Выключенная не занимает ни одной клавиши. */
30
+ enabled: () => boolean;
31
+ /** Ширина сетки со служебными колонками. */
32
+ columns: () => number;
33
+ /** Индексы отрисованных строк в порядке показа. При виртуализации — только окно. */
34
+ renderedRows: () => number[];
35
+ /** Сколько всего строк: по нему считается край при виртуализации. */
36
+ totalRows: () => number;
37
+ /** Узлы ячеек по ключу. Заполняется `:ref` самой таблицы. */
38
+ cellEls: Map<GrGridCellKey, HTMLElement>;
39
+ /**
40
+ * Прокрутить список к строке. Есть только при виртуализации: без неё строка
41
+ * уже в разметке, и доводить до экрана её незачем.
42
+ */
43
+ scrollToRow?: (index: number) => void;
44
+ }
45
+ export interface DataTableGridNavigation {
46
+ /** Ключ ячейки, держащей остановку `Tab`. */
47
+ rovingKey: ComputedRef<GrGridCellKey | undefined>;
48
+ tabindexFor: (row: number, column: number) => 0 | -1;
49
+ setActive: (row: number, column: number) => void;
50
+ /** Обработчик `keydown` на таблице. Возвращает `true`, если клавиша разобрана. */
51
+ onKeydown: (event: KeyboardEvent) => boolean;
52
+ }
53
+ export declare function useDataTableGridNavigation(options: UseDataTableGridNavigationOptions): DataTableGridNavigation;
@@ -18,6 +18,14 @@ export declare const placeholderPaddings: Record<GrDataTableSize, string>;
18
18
  */
19
19
  export declare const columnHandleClass = "inline-flex shrink-0 cursor-grab items-center text-[var(--gr-datatable-drag-handle,var(--gr-muted-fg))] opacity-0 [touch-action:none] transition-opacity duration-[var(--gr-duration-fast)] focus:outline-none focus-visible:opacity-100 focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)] rounded-[var(--gr-radius-sm)] group-hover:opacity-100";
20
20
  export declare const columnHandleActiveClass = "opacity-100";
21
+ /**
22
+ * Кнопка меню колонки. Как и ручка переноса, в покое не видна: три значка в
23
+ * каждом заголовке — шум, а нужны они по случаю.
24
+ *
25
+ * Открытое меню держит кнопку видимой само (`aria-expanded`), иначе она гасла
26
+ * бы ровно в тот момент, когда указатель уходит с заголовка на её же панель.
27
+ */
28
+ export declare const columnMenuTriggerClass = "absolute end-1 top-1/2 -translate-y-1/2 inline-flex shrink-0 items-center rounded-[var(--gr-radius-sm)] text-[var(--gr-muted-fg)] opacity-0 transition-opacity duration-[var(--gr-duration-fast)] hover:text-[var(--gr-fg)] focus:outline-none focus-visible:opacity-100 focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)] group-hover:opacity-100 [&[aria-expanded=true]]:opacity-100 disabled:cursor-not-allowed disabled:text-[var(--gr-disabled-fg)]";
21
29
  /** Переносимая колонка гасится, чтобы было видно, что она «поднята». */
22
30
  export declare const columnDraggingClass = "bg-[var(--gr-muted)]";
23
31
  /**
@@ -2,7 +2,7 @@ import type { ComponentExposed } from '../shared/instance';
2
2
  import type GrDataTableComponent from './GrDataTable.vue';
3
3
  export { default } from './GrDataTable.vue';
4
4
  export { default as GrDataTable } from './GrDataTable.vue';
5
- export type { GrDataColumn, GrDataColumnKey, GrDataTableProps, GrDataTableRowKey, GrDataTableSortCycle, GrDataTableSummary, } from './GrDataTable.vue';
5
+ export type { GrColumnPin, GrColumnPinSide, GrDataColumn, GrDataColumnKey, GrDataTableProps, GrDataTableRowKey, GrDataTableSortCycle, GrDataTableSummary, } from './GrDataTable.vue';
6
6
  export type { GrDataTableSortDir } from './grDataTableSort';
7
7
  export { grDataTableConfig } from './config';
8
8
  export type { GrDataTableConfigurableProps } from './defaults';
@@ -20,8 +20,12 @@ export declare const deltaRootClass = "inline-flex items-baseline tabular-nums";
20
20
  * оказывается мельче окружающих слов.
21
21
  *
22
22
  * Дефолт `GrValue` рассчитан на плитку, где величина крупная и приписке есть
23
- * куда уменьшаться. Здесь он переопределяется — ровно теми же токенами, что
24
- * доступны потребителю.
23
+ * куда уменьшаться. Здесь он переопределяется.
24
+ *
25
+ * **Переопределение ссылается на свои хуки, а не задаёт значение.** Стиль
26
+ * применяется инлайном, а инлайн бьёт любой CSS потребителя: напиши тут
27
+ * `currentColor` — и вернуть приглушённый суффикс у дельты стало бы нечем.
28
+ * Ссылка на `--gr-delta-suffix-*` оставляет решение за тем, кто его задал.
25
29
  *
26
30
  * `currentColor` и `1em`, а не `inherit`: у пользовательского свойства
27
31
  * `inherit` значит «наследовать саму переменную», то есть ничего.
@@ -35,8 +39,11 @@ export declare const deltaValueStyle: Record<string, string>;
35
39
  * пиксельная лестница оставила бы стрелку 14-пиксельной внутри заголовка.
36
40
  * Чуть меньше единицы: стрелка декоративна, и равный вес спорил бы с самим
37
41
  * числом.
42
+ *
43
+ * Отбивка **логическая** (`me-`), как у приписок `GrValue`: физический
44
+ * `margin-right` в RTL поставил бы стрелку зазором не с той стороны.
38
45
  */
39
- export declare const deltaArrowClass = "mr-0.5 self-center shrink-0 h-[0.875em] w-[0.875em]";
46
+ export declare const deltaArrowClass = "me-[var(--gr-delta-arrow-gap,0.125rem)] self-center shrink-0 h-[var(--gr-delta-arrow-size,0.875em)] w-[var(--gr-delta-arrow-size,0.875em)]";
40
47
  export declare const deltaToneClass: Record<GrDeltaTone, string>;
41
48
  /** Прочерк вместо величины: тона у него нет, но и цвет основного текста ему не нужен. */
42
49
  export declare const deltaEmptyClass = "text-[var(--gr-muted-fg)]";
@@ -1,5 +1,5 @@
1
- import { type GrEmptyStateHeadingLevel, type GrEmptyStateSize, type GrEmptyStateVariant } from './grEmptyStateStyles';
2
- export type { GrEmptyStateHeadingLevel, GrEmptyStateSize, GrEmptyStateVariant, } from './grEmptyStateStyles';
1
+ import { type GrEmptyStateHeadingLevel, type GrEmptyStateSize, type GrEmptyStateKind, type GrEmptyStateVariant } from './grEmptyStateStyles';
2
+ export type { GrEmptyStateHeadingLevel, GrEmptyStateKind, GrEmptyStateSize, GrEmptyStateVariant, } from './grEmptyStateStyles';
3
3
  /**
4
4
  * GrEmptyState — карточка пустого состояния: иконка, заголовок, описание и
5
5
  * слот действий.
@@ -16,6 +16,12 @@ export interface GrEmptyStateProps {
16
16
  /** `ghost` снимает рамку и фон: карточка внутри карточки рисует вторую рамку. */
17
17
  variant?: GrEmptyStateVariant;
18
18
  headingLevel?: GrEmptyStateHeadingLevel;
19
+ /**
20
+ * Что за пустота: ещё ничего не создано (`empty`) или под запросом ничего не
21
+ * нашлось (`search`). Меняет иконку и заголовок по умолчанию; заданный
22
+ * `title` сильнее в обоих случаях.
23
+ */
24
+ kind?: GrEmptyStateKind;
19
25
  }
20
26
  type __VLS_Slots = {
21
27
  /** Иконка вместо встроенной. */
@@ -32,18 +38,21 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
32
38
  size: undefined;
33
39
  variant: undefined;
34
40
  headingLevel: undefined;
41
+ kind: string;
35
42
  }>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<GrEmptyStateProps>, {
36
43
  title: undefined;
37
44
  description: undefined;
38
45
  size: undefined;
39
46
  variant: undefined;
40
47
  headingLevel: undefined;
48
+ kind: string;
41
49
  }>>> & Readonly<{}>, {
42
50
  title: string;
43
51
  variant: GrEmptyStateVariant;
44
52
  size: GrEmptyStateSize;
45
53
  headingLevel: GrEmptyStateHeadingLevel;
46
54
  description: string;
55
+ kind: GrEmptyStateKind;
47
56
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
48
57
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
49
58
  declare const _default: typeof __VLS_export;
@@ -7,6 +7,16 @@ export type GrEmptyStateVariant = typeof GR_EMPTY_STATE_VARIANTS[number];
7
7
  * Уровень заголовка. `h1` намеренно нет: пустое состояние живёт внутри уже
8
8
  * существующей структуры страницы, а не задаёт её.
9
9
  */
10
+ /**
11
+ * Что за пустота. Значений два, и это не упрощение, а весь корпус: по репозиторию
12
+ * повторяются ровно они — «ещё ничего не создано» и «под запросом не нашлось».
13
+ *
14
+ * Разводить их обязательно: дефолтный заголовок «Пока пусто» под фильтром
15
+ * дезинформирует — данные есть, просто не совпали. Ошибка загрузки сюда не
16
+ * входит намеренно, у неё в пакете свои компоненты (`GrResponseErrorBanner`).
17
+ */
18
+ export declare const GR_EMPTY_STATE_KINDS: readonly ["empty", "search"];
19
+ export type GrEmptyStateKind = typeof GR_EMPTY_STATE_KINDS[number];
10
20
  export declare const GR_EMPTY_STATE_HEADING_LEVELS: readonly [2, 3, 4, 5, 6];
11
21
  export type GrEmptyStateHeadingLevel = typeof GR_EMPTY_STATE_HEADING_LEVELS[number];
12
22
  export declare const rootBaseClass = "text-center";
@@ -3,5 +3,5 @@ export { default as GrEmptyState } from './GrEmptyState.vue';
3
3
  export type { GrEmptyStateProps } from './GrEmptyState.vue';
4
4
  export { grEmptyStateConfig } from './config';
5
5
  export type { GrEmptyStateConfigurableProps } from './defaults';
6
- export type { GrEmptyStateHeadingLevel, GrEmptyStateSize, GrEmptyStateVariant, } from './grEmptyStateStyles';
6
+ export type { GrEmptyStateHeadingLevel, GrEmptyStateKind, GrEmptyStateSize, GrEmptyStateVariant, } from './grEmptyStateStyles';
7
7
  export { grEmptyStateSafelist } from './safelist';
@@ -22,7 +22,8 @@ export type GrFileUploadRequest<TResponse = unknown> = (files: File[], ctx: GrFi
22
22
  * Пропы `GrFileUpload`.
23
23
  *
24
24
  * Либо `action` (URL для POST multipart/form-data), либо `request` — кастомный
25
- * загрузчик (например, через axios). Если переданы оба — приоритет у `request`.
25
+ * загрузчик (например, через axios). Если переданы оба — приоритет у `request`,
26
+ * а `action` не используется; в dev-сборке об этом предупреждает консоль.
26
27
  *
27
28
  * `placeholder` — надпись в дефолтном UI-варианте (без слота default).
28
29
  */
@@ -33,6 +33,13 @@ export interface GrFormFileProps {
33
33
  size?: GrFormFileSize;
34
34
  /** Миниатюры для картинок в наборе. Файлы других типов остаются строкой. */
35
35
  preview?: boolean;
36
+ /**
37
+ * Порядок набора задаёт пользователь: у строки появляется ручка переноса.
38
+ *
39
+ * Нужно там, где последовательность файлов что-то значит, — галерея,
40
+ * страницы документа, очередь вложений. Осмысленно только с `multiple`.
41
+ */
42
+ reorderable?: boolean;
36
43
  /** Дополнительная (кастомная) валидация на стороне потребителя. */
37
44
  validate?: (files: File[]) => GrFormFileError[] | Promise<GrFormFileError[]>;
38
45
  /**
@@ -62,6 +69,7 @@ declare function blur(): void;
62
69
  declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<GrFormFileProps>, {
63
70
  multiple: boolean;
64
71
  preview: boolean;
72
+ reorderable: boolean;
65
73
  disabled: boolean;
66
74
  readonly: boolean;
67
75
  invalid: boolean;
@@ -91,6 +99,7 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
91
99
  }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<GrFormFileProps>, {
92
100
  multiple: boolean;
93
101
  preview: boolean;
102
+ reorderable: boolean;
94
103
  disabled: boolean;
95
104
  readonly: boolean;
96
105
  invalid: boolean;
@@ -133,6 +142,7 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
133
142
  changeText: string;
134
143
  removeText: string;
135
144
  clearAllText: string;
145
+ reorderable: boolean;
136
146
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
137
147
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
138
148
  declare const _default: typeof __VLS_export;
@@ -31,6 +31,18 @@ export interface GrInputProps {
31
31
  maxlength?: number;
32
32
  /** Показывать счётчик символов (`len` или `len/maxlength`). */
33
33
  showCount?: boolean;
34
+ /**
35
+ * Аддоны `prefix`/`suffix` несут смысл, а не украшают.
36
+ *
37
+ * По умолчанию они скрыты от скринридера: чаще всего там иконка поиска или
38
+ * глиф, повторяющий подпись поля, и второе прочтение мешает. Но `https://`
39
+ * или `₽` бывают единственным местом, где сказано, что вводить, — тогда
40
+ * аддон уезжает в `aria-describedby` поля.
41
+ *
42
+ * Декоративную иконку внутри слота помечайте `aria-hidden` сами: проп снимает
43
+ * скрытие со всей обёртки, а не разбирает её содержимое.
44
+ */
45
+ describeAddons?: boolean;
34
46
  /**
35
47
  * Фоновая работа по полю (проверка занятости логина, автосохранение):
36
48
  * спиннер в trailing-области + `aria-busy`. Ввод не блокируется —
@@ -112,6 +124,7 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
112
124
  clearLabel: undefined;
113
125
  maxlength: undefined;
114
126
  showCount: boolean;
127
+ describeAddons: boolean;
115
128
  loading: boolean;
116
129
  passwordToggle: boolean;
117
130
  passwordShowLabel: undefined;
@@ -153,6 +166,7 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
153
166
  clearLabel: undefined;
154
167
  maxlength: undefined;
155
168
  showCount: boolean;
169
+ describeAddons: boolean;
156
170
  loading: boolean;
157
171
  passwordToggle: boolean;
158
172
  passwordShowLabel: undefined;
@@ -198,6 +212,7 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
198
212
  inputmode: "search" | "text" | "none" | "email" | "tel" | "url" | "numeric" | "decimal";
199
213
  state: "default" | "success" | "warning" | "danger";
200
214
  maxlength: number;
215
+ describeAddons: boolean;
201
216
  passwordToggle: boolean;
202
217
  passwordShowLabel: string;
203
218
  passwordHideLabel: string;
@@ -27,6 +27,15 @@ export interface GrInputTagProps {
27
27
  * сервере). Отклонённый тег не добавляется и уходит в событие `reject`.
28
28
  */
29
29
  beforeAdd?: (tag: string) => boolean | Promise<boolean>;
30
+ /**
31
+ * Правка тега на месте: `F2` на чипе или двойной клик по нему открывают
32
+ * поле, `Enter` подтверждает, `Escape` отменяет.
33
+ *
34
+ * Проп, а не поведение по умолчанию: двойной клик по чипу сегодня ничего не
35
+ * делает, и превращать его во вход в правку у всех потребителей — тихая
36
+ * смена поведения.
37
+ */
38
+ editable?: boolean;
30
39
  /** Кнопка «снести все теги». Настраивается через `GrConfigProvider`. */
31
40
  clearable?: boolean;
32
41
  /** Фоновая работа: спиннер + `aria-busy`. Асинхронный `beforeAdd` поднимает его сам. */
@@ -63,6 +72,8 @@ export interface GrInputTagEmits {
63
72
  (e: 'update:modelValue', value: string[]): void;
64
73
  (e: 'add', value: string): void;
65
74
  (e: 'remove', value: string, index: number): void;
75
+ /** Тег изменён на месте: новое значение, его позиция и то, что стояло раньше. */
76
+ (e: 'edit', value: string, index: number, previous: string): void;
66
77
  /** Тег не прошёл `beforeAdd`. */
67
78
  (e: 'reject', value: string): void;
68
79
  /** Набор снесён кнопкой «очистить». */
@@ -101,6 +112,7 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
101
112
  max: undefined;
102
113
  addOnBlur: boolean;
103
114
  clearInputOnAdd: boolean;
115
+ editable: boolean;
104
116
  beforeAdd: undefined;
105
117
  clearable: undefined;
106
118
  loading: boolean;
@@ -121,6 +133,7 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
121
133
  "update:modelValue": (value: string[]) => void;
122
134
  add: (value: string) => void;
123
135
  remove: (value: string, index: number) => void;
136
+ edit: (value: string, index: number, previous: string) => void;
124
137
  reject: (value: string) => void;
125
138
  clear: () => void;
126
139
  change: (value: string[]) => void;
@@ -140,6 +153,7 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
140
153
  max: undefined;
141
154
  addOnBlur: boolean;
142
155
  clearInputOnAdd: boolean;
156
+ editable: boolean;
143
157
  beforeAdd: undefined;
144
158
  clearable: undefined;
145
159
  loading: boolean;
@@ -160,6 +174,7 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
160
174
  onFocus?: ((event: FocusEvent) => any) | undefined;
161
175
  onRemove?: ((value: string, index: number) => any) | undefined;
162
176
  "onUpdate:modelValue"?: ((value: string[]) => any) | undefined;
177
+ onEdit?: ((value: string, index: number, previous: string) => any) | undefined;
163
178
  onReject?: ((value: string) => any) | undefined;
164
179
  }>, {
165
180
  disabled: boolean;
@@ -184,6 +199,7 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
184
199
  addOnBlur: boolean;
185
200
  clearInputOnAdd: boolean;
186
201
  beforeAdd: (tag: string) => boolean | Promise<boolean>;
202
+ editable: boolean;
187
203
  tagClosable: boolean;
188
204
  removeTagLabel: string;
189
205
  clearAllLabel: string;
@@ -28,3 +28,14 @@ export declare function grInputTagWrapperClass(options: {
28
28
  disabled: boolean;
29
29
  }): string;
30
30
  export declare function grInputTagInputClass(size: GrInputTagSize): string;
31
+ /**
32
+ * Поле правки тега — внутри чипа, вместо его содержимого.
33
+ *
34
+ * Ни фона, ни рамки: их рисует сам чип, и второй набор внутри выглядел бы
35
+ * полем в поле. А вот кольцо фокуса нужно: без него чип в правке неотличим от
36
+ * обычного — единственным признаком остаётся каретка, и режим не виден.
37
+ *
38
+ * Ширину задаёт нативный `size` по длине черновика: в режиме правки у чипа нет
39
+ * содержимого, от которого он взял бы ширину.
40
+ */
41
+ export declare const tagEditInputClass = "min-w-[2ch] bg-transparent border-none p-0 text-inherit [font:inherit] rounded-[var(--gr-radius-sm)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]";
@@ -11,8 +11,19 @@ export interface GrKbdProps {
11
11
  /**
12
12
  * Сочетание: строкой (`"mod+shift+K"`) или набором токенов
13
13
  * (`['mod', 'K']`). Токен `mod` — Cmd на macOS, Ctrl на остальных.
14
+ *
15
+ * Пробел в строке делит её на шаги: `"g i"` рисуется как «G затем I», а
16
+ * `"mod+k p"` — как «⌘K затем P». Форма массива остаётся плоским аккордом:
17
+ * что там шаг, а что клавиша, массив не различает.
14
18
  */
15
19
  keys?: string | string[];
20
+ /**
21
+ * Идентификатор записи в реестре (`granularityHotkeysPlugin`). Сочетание
22
+ * берётся оттуда, поэтому подсказка не может разойтись с привязкой. Сильнее
23
+ * `keys`: если задан и он, побеждает реестр — иначе два источника спорили бы
24
+ * молча.
25
+ */
26
+ hotkey?: string;
16
27
  /**
17
28
  * Разделитель между клавишами. Не задан — авто: в общей плашке символы
18
29
  * склеиваются (`⌘K`), а слова разделяются плюсом (`Ctrl+K`); у `split` это
@@ -39,12 +50,14 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
39
50
  size: undefined;
40
51
  variant: string;
41
52
  keys: undefined;
53
+ hotkey: undefined;
42
54
  separator: undefined;
43
55
  platform: string;
44
56
  }>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<GrKbdProps>, {
45
57
  size: undefined;
46
58
  variant: string;
47
59
  keys: undefined;
60
+ hotkey: undefined;
48
61
  separator: undefined;
49
62
  platform: string;
50
63
  }>>> & Readonly<{}>, {
@@ -53,6 +66,7 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
53
66
  size: GrKbdSize;
54
67
  separator: string;
55
68
  platform: GrKbdPlatform;
69
+ hotkey: string;
56
70
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
57
71
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
58
72
  declare const _default: typeof __VLS_export;
@@ -1,4 +1,5 @@
1
1
  import { type GrComponentSize } from '../GrConfigProvider/context';
2
+ import type { GrNavbarHeadingLevel } from './grNavbarStyles';
2
3
  /**
3
4
  * GrNavbar — верхняя панель приложения (header) с тремя зонами: слева заголовок
4
5
  * и кнопка меню, по центру — свободная зона (поиск, хлебные крошки), справа —
@@ -10,6 +11,20 @@ import { type GrComponentSize } from '../GrConfigProvider/context';
10
11
  export interface GrNavbarProps {
11
12
  /** Заголовок строкой. Слот `#title` сильнее и позволяет обойтись без пропа. */
12
13
  title?: string;
14
+ /**
15
+ * Сделать заголовок настоящим `h1`…`h6`.
16
+ *
17
+ * По умолчанию заголовок — `div`, и это верно для большинства шапок: логотип
18
+ * и название приложения заголовками не являются, и `h1` на них исказил бы
19
+ * структуру страницы. Но шапка раздела админки или имя документа — заголовок
20
+ * и есть, а обойти такую страницу по структуре иначе нечем.
21
+ *
22
+ * Через `GrConfigProvider` не настраивается намеренно: «заголовка нет» там не
23
+ * выразить (`useGrComponentProp` требует не-nullable фолбэк), то есть общим
24
+ * дефолтом стал бы какой-то уровень. Да и шапка у оболочки одна — глобальный
25
+ * дефолт настраивал бы единственное место вызова.
26
+ */
27
+ headingLevel?: GrNavbarHeadingLevel;
13
28
  showMenuButton?: boolean;
14
29
  /**
15
30
  * Ступень кнопки меню — и только её: остальное в шапке принадлежит
@@ -44,6 +59,7 @@ type __VLS_Slots = {
44
59
  };
45
60
  declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<GrNavbarProps>, {
46
61
  title: undefined;
62
+ headingLevel: undefined;
47
63
  showMenuButton: boolean;
48
64
  size: undefined;
49
65
  menuButtonClass: string;
@@ -52,6 +68,7 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
52
68
  menu: () => void;
53
69
  }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<GrNavbarProps>, {
54
70
  title: undefined;
71
+ headingLevel: undefined;
55
72
  showMenuButton: boolean;
56
73
  size: undefined;
57
74
  menuButtonClass: string;
@@ -62,6 +79,7 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
62
79
  sticky: boolean;
63
80
  title: string;
64
81
  size: GrComponentSize;
82
+ headingLevel: GrNavbarHeadingLevel;
65
83
  showMenuButton: boolean;
66
84
  menuButtonClass: string;
67
85
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
@@ -19,5 +19,14 @@ export declare const navbarSideClass = "flex min-w-0 items-center gap-3";
19
19
  export declare const navbarSideGrowClass = "flex-1";
20
20
  export declare const navbarRightAlignClass = "justify-end";
21
21
  export declare const navbarCenterClass = "flex min-w-0 flex-1 items-center justify-center gap-3";
22
- export declare const navbarTitleClass = "text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)] font-700";
22
+ /**
23
+ * Уровни заголовка шапки.
24
+ *
25
+ * Единица разрешена, в отличие от `GrCard`, где шкала начинается с двойки:
26
+ * карточка никогда не бывает заголовком страницы, а шапка раздела — бывает, и
27
+ * имя раздела в ней и есть `h1`.
28
+ */
29
+ export declare const GR_NAVBAR_HEADING_LEVELS: readonly [1, 2, 3, 4, 5, 6];
30
+ export type GrNavbarHeadingLevel = typeof GR_NAVBAR_HEADING_LEVELS[number];
31
+ export declare const navbarTitleClass = "m-0 text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)] font-700";
23
32
  export declare function grNavbarRootClass(sticky: boolean): string;
@@ -1,6 +1,7 @@
1
1
  export { default } from './GrNavbar.vue';
2
2
  export { default as GrNavbar } from './GrNavbar.vue';
3
3
  export type { GrNavbarProps } from './GrNavbar.vue';
4
+ export type { GrNavbarHeadingLevel } from './grNavbarStyles';
4
5
  export type { GrNavbarConfigurableProps } from './defaults';
5
6
  export { grNavbarConfig } from './config';
6
7
  export { grNavbarSafelist } from './safelist';
@@ -1,42 +1,16 @@
1
1
  import type { ComputedRef } from 'vue';
2
+ import type { OptionPanelItem, OptionPanelOptionRow, OptionPanelRow } from '../../shared/optionPanel';
2
3
  import type { GrSelectOption, GrSelectOptionGroup, GrSelectOptionOrGroup, GrSelectValue } from '../grSelectStyles';
3
4
  /**
4
5
  * Элемент рендера панели: либо заголовок группы, либо опция.
5
- * Группировка сохраняется, фильтрация по запросу скрывает пустые группы.
6
+ *
7
+ * Типы — алиасы общей машинерии (`shared/optionPanel`): алгоритм у панели
8
+ * `GrSelect` и `GrAutocomplete` один, и копия разошлась бы с оригиналом молча.
9
+ * Имена остаются своими, потому что они публичные.
6
10
  */
7
- export type GrSelectPanelItem<TValue extends GrSelectValue> = {
8
- kind: 'group';
9
- label: string;
10
- key: string;
11
- }
12
- /** `groupKey` связывает опцию с заголовком её группы для скринридера. */
13
- | {
14
- kind: 'option';
15
- option: GrSelectOption<TValue>;
16
- key: string;
17
- groupKey?: string;
18
- };
19
- export type GrSelectPanelOptionRow<TValue extends GrSelectValue> = {
20
- option: GrSelectOption<TValue>;
21
- key: string;
22
- index: number;
23
- };
24
- export type GrSelectPanelRow<TValue extends GrSelectValue> = {
25
- kind: 'group';
26
- label: string;
27
- key: string;
28
- options: GrSelectPanelOptionRow<TValue>[];
29
- /**
30
- * Есть ли в этой отрисовке видимый заголовок. При виртуализации окно может
31
- * начаться серединой группы: обёртка нужна всё равно, а заголовка нет —
32
- * имя тогда идёт в `aria-label`.
33
- */
34
- labelVisible?: boolean;
35
- /** Позиция заголовка в `panelItems` — по ней его замеряет виртуализатор. */
36
- labelIndex?: number;
37
- } | ({
38
- kind: 'option';
39
- } & GrSelectPanelOptionRow<TValue>);
11
+ export type GrSelectPanelItem<TValue extends GrSelectValue> = OptionPanelItem<GrSelectOption<TValue>>;
12
+ export type GrSelectPanelOptionRow<TValue extends GrSelectValue> = OptionPanelOptionRow<GrSelectOption<TValue>>;
13
+ export type GrSelectPanelRow<TValue extends GrSelectValue> = OptionPanelRow<GrSelectOption<TValue>>;
40
14
  /**
41
15
  * Состав панели `GrSelect`: плоский набор строк, их группировка и признак
42
16
  * «набранное можно добавить».
@@ -1,6 +1,13 @@
1
1
  import type { ComputedRef, Ref } from 'vue';
2
2
  import type { GrSelectValue } from '../grSelectStyles';
3
3
  import type { GrSelectPanelItem, GrSelectPanelRow } from './useSelectPanelItems';
4
+ /**
5
+ * Виртуализация панели `GrSelect` — тонкая обёртка над общей машинерией
6
+ * (`shared/optionPanel`): алгоритм тот же, что у `GrAutocomplete`, и держать
7
+ * его в двух местах значило бы разойтись молча.
8
+ *
9
+ * Своё здесь только имя ведущей строки: у селекта это «Add …».
10
+ */
4
11
  export interface UseSelectVirtualizationOptions<TValue extends GrSelectValue> {
5
12
  panelItems: ComputedRef<GrSelectPanelItem<TValue>[]>;
6
13
  panelRows: ComputedRef<GrSelectPanelRow<TValue>[]>;
@@ -122,7 +122,7 @@ export declare function grSelectTriggerClass(options: {
122
122
  state?: GrSelectState;
123
123
  invalid?: boolean;
124
124
  }): string;
125
- export declare const grSelectPanelClasses = "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";
125
+ export declare const grSelectPanelClasses = "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";
126
126
  export declare const selectOptionBaseClass = "rounded-[var(--gr-radius-md)] px-3 py-2 text-left text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)]";
127
127
  export declare const selectOptionLinkWidthClass = "block min-w-full w-max whitespace-nowrap";
128
128
  export declare const selectOptionWidthClass = "w-full";