@feugene/granularity 0.24.1 → 0.26.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 (296) hide show
  1. package/dist/chunks/config-BViooYNv.js.map +1 -0
  2. package/dist/chunks/config-BfsBepkH.js.map +1 -0
  3. package/dist/chunks/config-BuGlNPE92.js.map +1 -0
  4. package/dist/chunks/config-CPSxM7XE.js +8 -0
  5. package/dist/chunks/config-CPSxM7XE.js.map +1 -0
  6. package/dist/chunks/config-D7zgE_Gr.js +107 -0
  7. package/dist/chunks/config-D7zgE_Gr.js.map +1 -0
  8. package/dist/chunks/config-DAX8Deh1.js.map +1 -0
  9. package/dist/chunks/config-DGCMHPCR.js +19 -0
  10. package/dist/chunks/config-DGCMHPCR.js.map +1 -0
  11. package/dist/chunks/config-DGWFal5h.js +128 -0
  12. package/dist/chunks/config-DGWFal5h.js.map +1 -0
  13. package/dist/chunks/config-DKISz9gR.js +39 -0
  14. package/dist/chunks/config-DKISz9gR.js.map +1 -0
  15. package/dist/chunks/{config-BSyiFlbi2.js → config-DtgYuGUn2.js} +2 -1
  16. package/dist/chunks/config-DtgYuGUn2.js.map +1 -0
  17. package/dist/chunks/config-Iu684VNI.js +21 -0
  18. package/dist/chunks/config-Iu684VNI.js.map +1 -0
  19. package/dist/chunks/config-T3qdQBgU.js.map +1 -0
  20. package/dist/chunks/config-rkcKArZQ.js.map +1 -0
  21. package/dist/chunks/config-vSji8w90.js.map +1 -0
  22. package/dist/chunks/config-zjeAJ4ho2.js.map +1 -0
  23. package/dist/chunks/context-BfIQv7m12.js.map +1 -0
  24. package/dist/chunks/context-CTbuwcYs.js.map +1 -1
  25. package/dist/chunks/{en-DCCFP4qu.js → en-NpP9e7lC.js} +16 -2
  26. package/dist/chunks/en-NpP9e7lC.js.map +1 -0
  27. package/dist/chunks/{es-CT34HBVM.js → es-DaeA2Ql-.js} +16 -2
  28. package/dist/chunks/es-DaeA2Ql-.js.map +1 -0
  29. package/dist/chunks/{es-DdJsxlUr.js → es-Do2CNrC2.js} +3 -3
  30. package/dist/chunks/{es-DdJsxlUr.js.map → es-Do2CNrC2.js.map} +1 -1
  31. package/dist/chunks/{generated-1WEi10KK.js → generated-CJe6hdiE.js} +49 -0
  32. package/dist/chunks/{generated-1WEi10KK.js.map → generated-CJe6hdiE.js.map} +1 -1
  33. package/dist/chunks/{grBadgeStyles-C2wLlkjF.js → grBadgeStyles-C1S56Alo.js} +6 -1
  34. package/dist/chunks/{grBadgeStyles-C2wLlkjF.js.map → grBadgeStyles-C1S56Alo.js.map} +1 -1
  35. package/dist/chunks/grChipGroupContext-DZXkACap.js +4 -0
  36. package/dist/chunks/grChipGroupContext-DZXkACap.js.map +1 -0
  37. package/dist/chunks/{config-C5mO5DYZ.js → grDropdownMenuStyles-D1LOkdVj.js} +1 -38
  38. package/dist/chunks/grDropdownMenuStyles-D1LOkdVj.js.map +1 -0
  39. package/dist/chunks/{grPopoverStyles-Rz_Z5nLW.js → grPopoverStyles-Cke_BZsM.js} +16 -3
  40. package/dist/chunks/grPopoverStyles-Cke_BZsM.js.map +1 -0
  41. package/dist/chunks/{granular-provider-Dr2PKgl1.js → granular-provider-BaHkLjFX.js} +19 -11
  42. package/dist/chunks/granular-provider-BaHkLjFX.js.map +1 -0
  43. package/dist/chunks/{ru-CLiAMwrx.js → ru-Bg9-DPmg.js} +16 -2
  44. package/dist/chunks/ru-Bg9-DPmg.js.map +1 -0
  45. package/dist/chunks/{config-qVg3Zz_A.js → safelist-DOfCQR5O.js} +2 -19
  46. package/dist/chunks/safelist-DOfCQR5O.js.map +1 -0
  47. package/dist/chunks/useMenuItemsFocus-OyOnIAlr.js +117 -0
  48. package/dist/chunks/useMenuItemsFocus-OyOnIAlr.js.map +1 -0
  49. package/dist/chunks/{validation-DauXRIkL.js → validation-5HhpanPP.js} +1 -1
  50. package/dist/chunks/{validation-DauXRIkL.js.map → validation-5HhpanPP.js.map} +1 -1
  51. package/dist/components/GrAutocomplete/chunks/{GrAutocomplete-DsevPtiS.js → GrAutocomplete-D9c9BNFg.js} +1 -1
  52. package/dist/components/GrAutocomplete/chunks/{GrAutocomplete-DsevPtiS.js.map → GrAutocomplete-D9c9BNFg.js.map} +1 -1
  53. package/dist/components/GrAutocomplete/index.js +1 -1
  54. package/dist/components/GrBadge/chunks/{GrBadge-u2ZdS7CN.js → GrBadge-_9rCHuE1.js} +1 -1
  55. package/dist/components/GrBadge/chunks/{GrBadge-u2ZdS7CN.js.map → GrBadge-_9rCHuE1.js.map} +1 -1
  56. package/dist/components/GrBadge/index.js +3 -2
  57. package/dist/components/GrButton/chunks/{GrButton-Bw2AH4uX.js → GrButton-DCz-Wn-V.js} +1 -1
  58. package/dist/components/GrButton/chunks/{GrButton-Bw2AH4uX.js.map → GrButton-DCz-Wn-V.js.map} +1 -1
  59. package/dist/components/GrButton/index.js +1 -1
  60. package/dist/components/GrButtonGroup/chunks/{GrButtonGroup-CKyiAV8K.js → GrButtonGroup-BQo5VQ_c.js} +1 -1
  61. package/dist/components/GrButtonGroup/chunks/{GrButtonGroup-CKyiAV8K.js.map → GrButtonGroup-BQo5VQ_c.js.map} +1 -1
  62. package/dist/components/GrButtonGroup/index.js +2 -2
  63. package/dist/components/GrCard/chunks/{GrCard-gI2wA8ZZ.js → GrCard-aQIjk6I9.js} +1 -1
  64. package/dist/components/GrCard/chunks/GrCard-aQIjk6I9.js.map +1 -0
  65. package/dist/components/GrCard/index.js +1 -1
  66. package/dist/components/GrCheckboxGroup/index.js +1 -1
  67. package/dist/components/GrChip/chunks/GrChip-BnL2FedO.js +222 -0
  68. package/dist/components/GrChip/chunks/GrChip-BnL2FedO.js.map +1 -0
  69. package/dist/components/GrChip/index.js +3 -0
  70. package/dist/components/GrChipGroup/chunks/GrChipGroup-DefmSdY9.js +209 -0
  71. package/dist/components/GrChipGroup/chunks/GrChipGroup-DefmSdY9.js.map +1 -0
  72. package/dist/components/GrChipGroup/index.js +3 -0
  73. package/dist/components/GrCodeBlock/chunks/{GrCodeBlock-BmXCLgLS.js → GrCodeBlock-CyptiEo4.js} +1 -1
  74. package/dist/components/GrCodeBlock/chunks/{GrCodeBlock-BmXCLgLS.js.map → GrCodeBlock-CyptiEo4.js.map} +1 -1
  75. package/dist/components/GrCodeBlock/index.js +1 -1
  76. package/dist/components/GrCollapse/chunks/{GrCollapse-DIHEiTju.js → GrCollapse-DUROgAgc.js} +1 -1
  77. package/dist/components/GrCollapse/chunks/{GrCollapse-DIHEiTju.js.map → GrCollapse-DUROgAgc.js.map} +1 -1
  78. package/dist/components/GrCollapse/index.js +1 -1
  79. package/dist/components/GrColorPicker/chunks/{GrColorPicker-qQdoEPHF.js → GrColorPicker-CDaJRVIM.js} +1 -1
  80. package/dist/components/GrColorPicker/chunks/{GrColorPicker-qQdoEPHF.js.map → GrColorPicker-CDaJRVIM.js.map} +1 -1
  81. package/dist/components/GrColorPicker/index.js +1 -1
  82. package/dist/components/GrCommandPalette/chunks/{GrCommandPalette-BFcMf4Pn.js → GrCommandPalette-BPsVN_XU.js} +3 -3
  83. package/dist/components/GrCommandPalette/chunks/GrCommandPalette-BPsVN_XU.js.map +1 -0
  84. package/dist/components/GrCommandPalette/index.js +1 -1
  85. package/dist/components/GrCommandPalette/styles.css +1 -1
  86. package/dist/components/GrConfigProvider/chunks/{GrConfigProvider-UP-EaoAf.js → GrConfigProvider-BF7R3hgg.js} +1 -1
  87. package/dist/components/GrConfigProvider/chunks/GrConfigProvider-BF7R3hgg.js.map +1 -0
  88. package/dist/components/GrConfigProvider/index.js +1 -1
  89. package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-rRtMScJX.js → GrConfirmDialog-CwXNLyzk.js} +3 -3
  90. package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-rRtMScJX.js.map → GrConfirmDialog-CwXNLyzk.js.map} +1 -1
  91. package/dist/components/GrConfirmDialog/index.js +1 -1
  92. package/dist/components/GrContextMenu/chunks/GrContextMenu-BbAJholy.js +331 -0
  93. package/dist/components/GrContextMenu/chunks/GrContextMenu-BbAJholy.js.map +1 -0
  94. package/dist/components/GrContextMenu/index.js +3 -0
  95. package/dist/components/GrDataTable/chunks/{GrDataTable-B5MmZFUg.js → GrDataTable-NRbrXpdx.js} +2 -2
  96. package/dist/components/GrDataTable/chunks/GrDataTable-NRbrXpdx.js.map +1 -0
  97. package/dist/components/GrDataTable/index.js +1 -1
  98. package/dist/components/GrDescriptionList/chunks/{GrDescriptionList-C6Pxjjbh.js → GrDescriptionList-1mICfrqX.js} +1 -1
  99. package/dist/components/GrDescriptionList/chunks/{GrDescriptionList-C6Pxjjbh.js.map → GrDescriptionList-1mICfrqX.js.map} +1 -1
  100. package/dist/components/GrDescriptionList/index.js +2 -2
  101. package/dist/components/GrDialog/chunks/{GrDialog-D0U5iRqV.js → GrDialog-5Y5K87ss.js} +2 -2
  102. package/dist/components/GrDialog/chunks/{GrDialog-D0U5iRqV.js.map → GrDialog-5Y5K87ss.js.map} +1 -1
  103. package/dist/components/GrDialog/index.js +1 -1
  104. package/dist/components/GrDialogService/chunks/{GrDialogService-CrwA4aJq.js → GrDialogService-CHVR4sOk.js} +6 -6
  105. package/dist/components/GrDialogService/chunks/GrDialogService-CHVR4sOk.js.map +1 -0
  106. package/dist/components/GrDialogService/index.js +1 -1
  107. package/dist/components/GrDrawer/chunks/{GrDrawer-C3zAg2tG.js → GrDrawer-CXy3-SVd.js} +2 -2
  108. package/dist/components/GrDrawer/chunks/GrDrawer-CXy3-SVd.js.map +1 -0
  109. package/dist/components/GrDrawer/index.js +1 -1
  110. package/dist/components/GrDropdown/chunks/{GrDropdown-BSfFOcDx.js → GrDropdown-BfTmdPyh.js} +10 -79
  111. package/dist/components/GrDropdown/chunks/GrDropdown-BfTmdPyh.js.map +1 -0
  112. package/dist/components/GrDropdown/index.js +2 -2
  113. package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-l5HEqzjr.js +130 -0
  114. package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-l5HEqzjr.js.map +1 -0
  115. package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu-DyS6dWDp.js → GrDropdownMenuList-BGA_xNVo.js} +57 -159
  116. package/dist/components/GrDropdownMenu/chunks/GrDropdownMenuList-BGA_xNVo.js.map +1 -0
  117. package/dist/components/GrDropdownMenu/index.js +3 -2
  118. package/dist/components/GrEmptyState/chunks/{GrEmptyState-BGUX8O0U.js → GrEmptyState-CS9do8eM.js} +1 -1
  119. package/dist/components/GrEmptyState/chunks/{GrEmptyState-BGUX8O0U.js.map → GrEmptyState-CS9do8eM.js.map} +1 -1
  120. package/dist/components/GrEmptyState/index.js +2 -2
  121. package/dist/components/GrFileUpload/chunks/{GrFileUpload-D3-vC-ap.js → GrFileUpload-wNXzHb5N.js} +1 -1
  122. package/dist/components/GrFileUpload/chunks/GrFileUpload-wNXzHb5N.js.map +1 -0
  123. package/dist/components/GrFileUpload/index.js +1 -1
  124. package/dist/components/GrForm/chunks/{GrForm-B_Qq_13k.js → GrForm-CAlJg-wb.js} +1 -1
  125. package/dist/components/GrForm/chunks/{GrForm-B_Qq_13k.js.map → GrForm-CAlJg-wb.js.map} +1 -1
  126. package/dist/components/GrForm/index.js +3 -3
  127. package/dist/components/GrFormField/chunks/{GrFormField-kqfVY30N.js → GrFormField-DSylU7IU.js} +1 -1
  128. package/dist/components/GrFormField/chunks/GrFormField-DSylU7IU.js.map +1 -0
  129. package/dist/components/GrFormField/index.js +1 -1
  130. package/dist/components/GrFormFile/chunks/{GrFormFile-D722xHn8.js → GrFormFile-DhVkB2gm.js} +1 -1
  131. package/dist/components/GrFormFile/chunks/{GrFormFile-D722xHn8.js.map → GrFormFile-DhVkB2gm.js.map} +1 -1
  132. package/dist/components/GrFormFile/index.js +1 -1
  133. package/dist/components/GrInputTag/chunks/{GrInputTag-C7QVPijj.js → GrInputTag-UI8kIB_F.js} +2 -2
  134. package/dist/components/GrInputTag/chunks/{GrInputTag-C7QVPijj.js.map → GrInputTag-UI8kIB_F.js.map} +1 -1
  135. package/dist/components/GrInputTag/index.js +1 -1
  136. package/dist/components/GrJsonViewer/chunks/{GrJsonViewer-DFUppRNb.js → GrJsonViewer-jk3ylOTc.js} +2 -2
  137. package/dist/components/GrJsonViewer/chunks/GrJsonViewer-jk3ylOTc.js.map +1 -0
  138. package/dist/components/GrJsonViewer/index.js +1 -1
  139. package/dist/components/GrList/chunks/{GrList-DAtzVIHh.js → GrList-B5bclmHV.js} +30 -3
  140. package/dist/components/GrList/chunks/GrList-B5bclmHV.js.map +1 -0
  141. package/dist/components/GrList/index.js +1 -1
  142. package/dist/components/GrList/styles.css +1 -1
  143. package/dist/components/GrModal/chunks/{GrModal-CPz7SWD_.js → GrModal-CCoWZuIl.js} +2 -2
  144. package/dist/components/GrModal/chunks/GrModal-CCoWZuIl.js.map +1 -0
  145. package/dist/components/GrModal/index.js +1 -1
  146. package/dist/components/GrNavbar/chunks/{GrNavbar-DWaaoV7n.js → GrNavbar-DPj30sHX.js} +1 -1
  147. package/dist/components/GrNavbar/chunks/{GrNavbar-DWaaoV7n.js.map → GrNavbar-DPj30sHX.js.map} +1 -1
  148. package/dist/components/GrNavbar/index.js +1 -1
  149. package/dist/components/GrNumberInput/chunks/{GrNumberInput-BotnzW77.js → GrNumberInput-V2mZvDDC.js} +1 -1
  150. package/dist/components/GrNumberInput/chunks/{GrNumberInput-BotnzW77.js.map → GrNumberInput-V2mZvDDC.js.map} +1 -1
  151. package/dist/components/GrNumberInput/index.js +2 -2
  152. package/dist/components/GrPagination/chunks/{GrPagination-GtGtSMJG.js → GrPagination-DG7kp6VL.js} +2 -2
  153. package/dist/components/GrPagination/chunks/{GrPagination-GtGtSMJG.js.map → GrPagination-DG7kp6VL.js.map} +1 -1
  154. package/dist/components/GrPagination/index.js +1 -1
  155. package/dist/components/GrPopover/chunks/{GrPopover-b70bIlQ9.js → GrPopover-DDChM1jD.js} +28 -10
  156. package/dist/components/GrPopover/chunks/GrPopover-DDChM1jD.js.map +1 -0
  157. package/dist/components/GrPopover/index.js +2 -2
  158. package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-CEI8bf-t.js → GrPromptDialog-BGuMUzlv.js} +5 -5
  159. package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-CEI8bf-t.js.map → GrPromptDialog-BGuMUzlv.js.map} +1 -1
  160. package/dist/components/GrPromptDialog/index.js +1 -1
  161. package/dist/components/GrRadioGroup/chunks/{GrRadioGroup-BVmjKXcv.js → GrRadioGroup-7w4bXIg_.js} +1 -1
  162. package/dist/components/GrRadioGroup/chunks/{GrRadioGroup-BVmjKXcv.js.map → GrRadioGroup-7w4bXIg_.js.map} +1 -1
  163. package/dist/components/GrRadioGroup/index.js +1 -1
  164. package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-CZONq8uT.js → GrResponseErrorBanner-BhP-xw2P.js} +1 -1
  165. package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-CZONq8uT.js.map → GrResponseErrorBanner-BhP-xw2P.js.map} +1 -1
  166. package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-CgfAwlg3.js → GrResponseErrorBanner-DA4q90Zt.js} +1 -1
  167. package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-CgfAwlg3.js.map → GrResponseErrorBanner-DA4q90Zt.js.map} +1 -1
  168. package/dist/components/GrResponseErrorBanner/index.js +2 -2
  169. package/dist/components/GrSelect/chunks/{GrSelect-CaGuyvtb.js → GrSelect-BA1wfX3c.js} +19 -3
  170. package/dist/components/GrSelect/chunks/GrSelect-BA1wfX3c.js.map +1 -0
  171. package/dist/components/GrSelect/index.js +1 -1
  172. package/dist/components/GrSelect/styles.css +1 -1
  173. package/dist/components/GrSidebar/chunks/{GrSidebar-D7WxRtIu.js → GrSidebar-DY-LgIbS.js} +2 -2
  174. package/dist/components/GrSidebar/chunks/{GrSidebar-D7WxRtIu.js.map → GrSidebar-DY-LgIbS.js.map} +1 -1
  175. package/dist/components/GrSidebar/index.js +2 -2
  176. package/dist/components/GrSlider/index.js +1 -1
  177. package/dist/components/GrSortableList/chunks/{GrSortableList-BmcUVAMb.js → GrSortableList-BMXyxmRc.js} +3 -3
  178. package/dist/components/GrSortableList/chunks/{GrSortableList-BmcUVAMb.js.map → GrSortableList-BMXyxmRc.js.map} +1 -1
  179. package/dist/components/GrSortableList/index.js +2 -2
  180. package/dist/components/GrSteps/chunks/GrSteps-Cce4rfr3.js +282 -0
  181. package/dist/components/GrSteps/chunks/GrSteps-Cce4rfr3.js.map +1 -0
  182. package/dist/components/GrSteps/index.js +3 -0
  183. package/dist/components/GrTabPanels/chunks/{GrTabPanels-AJt1w1XC.js → GrTabPanels-BZQS8-JM.js} +12 -1
  184. package/dist/components/GrTabPanels/chunks/{GrTabPanels-AJt1w1XC.js.map → GrTabPanels-BZQS8-JM.js.map} +1 -1
  185. package/dist/components/GrTabPanels/index.js +1 -1
  186. package/dist/components/GrTimeline/chunks/{GrTimeline-Ch9sHzwL.js → GrTimeline-DIDdkTn7.js} +12 -1
  187. package/dist/components/GrTimeline/chunks/GrTimeline-DIDdkTn7.js.map +1 -0
  188. package/dist/components/GrTimeline/index.js +1 -1
  189. package/dist/components/GrToaster/chunks/{GrToaster-DJUzx3sR.js → GrToaster-CC49q3a4.js} +1 -1
  190. package/dist/components/GrToaster/chunks/{GrToaster-DJUzx3sR.js.map → GrToaster-CC49q3a4.js.map} +1 -1
  191. package/dist/components/GrToaster/index.js +1 -1
  192. package/dist/components/GrTree/chunks/{GrTree-BvOeQ3xJ.js.map → GrTree-J5q8aCya.js.map} +1 -1
  193. package/dist/components/GrTree/index.js +1 -1
  194. package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-_LjTRR7X.js → GrTreeSelect-DEfxWAc3.js} +1 -1
  195. package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-_LjTRR7X.js.map → GrTreeSelect-DEfxWAc3.js.map} +1 -1
  196. package/dist/components/GrTreeSelect/index.js +1 -1
  197. package/dist/composables/useFloating.js +47 -7
  198. package/dist/composables/useFloating.js.map +1 -1
  199. package/dist/composables/useTheme.js.map +1 -1
  200. package/dist/composables/useToast.js.map +1 -1
  201. package/dist/granular-provider-node.js +1 -1
  202. package/dist/granular-provider.js +1 -1
  203. package/dist/i18n/all.js +1 -1
  204. package/dist/i18n/index.js +1 -1
  205. package/dist/index.js +68 -58
  206. package/dist/theme.js +1 -1
  207. package/dist/tokens.js +1 -1
  208. package/dist/types/components/GrBadge/grBadgeStyles.d.ts +7 -0
  209. package/dist/types/components/GrCard/GrCard.vue.d.ts +1 -1
  210. package/dist/types/components/GrChip/GrChip.vue.d.ts +118 -0
  211. package/dist/types/components/GrChip/config.d.ts +1 -0
  212. package/dist/types/components/GrChip/defaults.d.ts +16 -0
  213. package/dist/types/components/GrChip/grChipGroupContext.d.ts +52 -0
  214. package/dist/types/components/GrChip/grChipStyles.d.ts +64 -0
  215. package/dist/types/components/GrChip/index.d.ts +11 -0
  216. package/dist/types/components/GrChip/safelist.d.ts +7 -0
  217. package/dist/types/components/GrChipGroup/GrChipGroup.vue.d.ts +128 -0
  218. package/dist/types/components/GrChipGroup/config.d.ts +1 -0
  219. package/dist/types/components/GrChipGroup/defaults.d.ts +13 -0
  220. package/dist/types/components/GrChipGroup/grChipGroupStyles.d.ts +7 -0
  221. package/dist/types/components/GrChipGroup/index.d.ts +9 -0
  222. package/dist/types/components/GrChipGroup/safelist.d.ts +1 -0
  223. package/dist/types/components/GrContextMenu/GrContextMenu.vue.d.ts +157 -0
  224. package/dist/types/components/GrContextMenu/config.d.ts +1 -0
  225. package/dist/types/components/GrContextMenu/contextMenuAnchor.d.ts +29 -0
  226. package/dist/types/components/GrContextMenu/index.d.ts +7 -0
  227. package/dist/types/components/GrDataTable/GrDataTable.vue.d.ts +1 -1
  228. package/dist/types/components/GrDropdownMenu/GrDropdownMenu.vue.d.ts +3 -3
  229. package/dist/types/components/GrDropdownMenu/GrDropdownMenuEntries.vue.d.ts +22 -0
  230. package/dist/types/components/GrFilePreview/GrFilePreview.vue.d.ts +1 -1
  231. package/dist/types/components/GrForm/index.d.ts +1 -1
  232. package/dist/types/components/GrList/GrListItem.vue.d.ts +1 -1
  233. package/dist/types/components/GrPopover/GrPopover.vue.d.ts +21 -2
  234. package/dist/types/components/GrPopover/grPopoverStyles.d.ts +11 -1
  235. package/dist/types/components/GrPopover/index.d.ts +1 -1
  236. package/dist/types/components/GrStatistic/GrStatistic.vue.d.ts +1 -1
  237. package/dist/types/components/GrSteps/GrSteps.vue.d.ts +118 -0
  238. package/dist/types/components/GrSteps/config.d.ts +1 -0
  239. package/dist/types/components/GrSteps/defaults.d.ts +18 -0
  240. package/dist/types/components/GrSteps/grStepsStyles.d.ts +63 -0
  241. package/dist/types/components/GrSteps/index.d.ts +11 -0
  242. package/dist/types/components/GrSteps/safelist.d.ts +1 -0
  243. package/dist/types/components/GrSteps/stepsModel.d.ts +57 -0
  244. package/dist/types/composables/internal/useMenuItemsFocus.d.ts +24 -0
  245. package/dist/types/composables/internal/useTypeahead.d.ts +30 -0
  246. package/dist/types/composables/useFloating.d.ts +33 -2
  247. package/dist/types/granular-provider/shared.d.ts +4 -0
  248. package/dist/types/i18n/messages/en.d.ts +26 -0
  249. package/dist/types/i18n/messages/es.d.ts +26 -0
  250. package/dist/types/i18n/messages/ru.d.ts +26 -0
  251. package/dist/types/index.d.ts +4 -0
  252. package/dist/web-types.json +790 -241
  253. package/package.json +18 -2
  254. package/dist/chunks/config-BSyiFlbi2.js.map +0 -1
  255. package/dist/chunks/config-BViooYNv2.js.map +0 -1
  256. package/dist/chunks/config-BfsBepkH2.js.map +0 -1
  257. package/dist/chunks/config-BuGlNPE9.js.map +0 -1
  258. package/dist/chunks/config-C5mO5DYZ.js.map +0 -1
  259. package/dist/chunks/config-DAX8Deh12.js.map +0 -1
  260. package/dist/chunks/config-T3qdQBgU2.js.map +0 -1
  261. package/dist/chunks/config-qVg3Zz_A.js.map +0 -1
  262. package/dist/chunks/config-rkcKArZQ2.js.map +0 -1
  263. package/dist/chunks/config-vSji8w902.js.map +0 -1
  264. package/dist/chunks/config-zjeAJ4ho.js.map +0 -1
  265. package/dist/chunks/context-BfIQv7m1.js.map +0 -1
  266. package/dist/chunks/en-DCCFP4qu.js.map +0 -1
  267. package/dist/chunks/es-CT34HBVM.js.map +0 -1
  268. package/dist/chunks/grPopoverStyles-Rz_Z5nLW.js.map +0 -1
  269. package/dist/chunks/granular-provider-Dr2PKgl1.js.map +0 -1
  270. package/dist/chunks/ru-CLiAMwrx.js.map +0 -1
  271. package/dist/components/GrCard/chunks/GrCard-gI2wA8ZZ.js.map +0 -1
  272. package/dist/components/GrCommandPalette/chunks/GrCommandPalette-BFcMf4Pn.js.map +0 -1
  273. package/dist/components/GrConfigProvider/chunks/GrConfigProvider-UP-EaoAf.js.map +0 -1
  274. package/dist/components/GrDataTable/chunks/GrDataTable-B5MmZFUg.js.map +0 -1
  275. package/dist/components/GrDialogService/chunks/GrDialogService-CrwA4aJq.js.map +0 -1
  276. package/dist/components/GrDrawer/chunks/GrDrawer-C3zAg2tG.js.map +0 -1
  277. package/dist/components/GrDropdown/chunks/GrDropdown-BSfFOcDx.js.map +0 -1
  278. package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-DyS6dWDp.js.map +0 -1
  279. package/dist/components/GrFileUpload/chunks/GrFileUpload-D3-vC-ap.js.map +0 -1
  280. package/dist/components/GrFormField/chunks/GrFormField-kqfVY30N.js.map +0 -1
  281. package/dist/components/GrJsonViewer/chunks/GrJsonViewer-DFUppRNb.js.map +0 -1
  282. package/dist/components/GrList/chunks/GrList-DAtzVIHh.js.map +0 -1
  283. package/dist/components/GrModal/chunks/GrModal-CPz7SWD_.js.map +0 -1
  284. package/dist/components/GrPopover/chunks/GrPopover-b70bIlQ9.js.map +0 -1
  285. package/dist/components/GrSelect/chunks/GrSelect-CaGuyvtb.js.map +0 -1
  286. package/dist/components/GrTimeline/chunks/GrTimeline-Ch9sHzwL.js.map +0 -1
  287. package/dist/chunks/{config-BViooYNv2.js → config-BViooYNv.js} +0 -0
  288. package/dist/chunks/{config-BfsBepkH2.js → config-BfsBepkH.js} +0 -0
  289. package/dist/chunks/{config-BuGlNPE9.js → config-BuGlNPE92.js} +0 -0
  290. package/dist/chunks/{config-DAX8Deh12.js → config-DAX8Deh1.js} +0 -0
  291. package/dist/chunks/{config-T3qdQBgU2.js → config-T3qdQBgU.js} +0 -0
  292. package/dist/chunks/{config-rkcKArZQ2.js → config-rkcKArZQ.js} +0 -0
  293. package/dist/chunks/{config-vSji8w902.js → config-vSji8w90.js} +0 -0
  294. package/dist/chunks/{config-zjeAJ4ho.js → config-zjeAJ4ho2.js} +0 -0
  295. package/dist/chunks/{context-BfIQv7m1.js → context-BfIQv7m12.js} +0 -0
  296. package/dist/components/GrTree/chunks/{GrTree-BvOeQ3xJ.js → GrTree-J5q8aCya.js} +1 -1
@@ -178,13 +178,13 @@ export interface GrDataTableEmits<TRow extends Record<string, unknown> = Record<
178
178
  }
179
179
  declare const __VLS_export: <TRow extends Record<string, unknown> = Record<string, unknown>>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
180
180
  props: import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & __VLS_PrettifyLocal<GrDataTableProps<TRow> & {
181
+ "onUpdate:selected"?: ((value: (string | number)[]) => any) | undefined;
181
182
  "onUpdate:sortKey"?: ((value: string) => any) | undefined;
182
183
  "onUpdate:sortDir"?: ((value: GrDataTableSortDir) => any) | undefined;
183
184
  onSortChange?: ((value: {
184
185
  key: string;
185
186
  dir: GrDataTableSortDir;
186
187
  }) => any) | undefined;
187
- "onUpdate:selected"?: ((value: (string | number)[]) => any) | undefined;
188
188
  onRowClick?: ((payload: {
189
189
  row: TRow;
190
190
  index: number;
@@ -1,7 +1,7 @@
1
1
  import type { GrDropdownTrigger } from '../GrDropdown/GrDropdown.vue';
2
2
  import type { GrDropdownWidth } from '../GrDropdown/grDropdownStyles';
3
3
  import type { UseFloatingPlacement } from '../../composables/useFloating';
4
- import { type GrDropdownMenuAction, type GrDropdownMenuEntry } from './menuModel';
4
+ import type { GrDropdownMenuAction, GrDropdownMenuEntry } from './menuModel';
5
5
  export interface GrDropdownMenuProps {
6
6
  /** Размещение панели относительно триггера; переворот при нехватке места остаётся. */
7
7
  placement?: UseFloatingPlacement;
@@ -122,10 +122,10 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
122
122
  closeOnContentClick: boolean;
123
123
  teleportTo: string | HTMLElement;
124
124
  contentClass: string;
125
- openDelay: number;
126
- closeDelay: number;
127
125
  dividers: boolean;
128
126
  listClass: string;
127
+ openDelay: number;
128
+ closeDelay: number;
129
129
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
130
130
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
131
131
  declare const _default: typeof __VLS_export;
@@ -0,0 +1,22 @@
1
+ import type { GrDropdownMenuAction, GrDropdownMenuEntry } from './menuModel';
2
+ export interface GrDropdownMenuEntriesProps {
3
+ items?: GrDropdownMenuEntry[];
4
+ }
5
+ export interface GrDropdownMenuEntriesEmits {
6
+ (e: 'select', item: GrDropdownMenuAction): void;
7
+ }
8
+ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_TypePropsToOption<GrDropdownMenuEntriesProps>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
9
+ select: (item: GrDropdownMenuAction) => void;
10
+ }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_TypePropsToOption<GrDropdownMenuEntriesProps>>> & Readonly<{
11
+ onSelect?: ((item: GrDropdownMenuAction) => any) | undefined;
12
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
13
+ declare const _default: typeof __VLS_export;
14
+ export default _default;
15
+ type __VLS_TypePropsToOption<T> = {
16
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
17
+ type: import('vue').PropType<Required<T>[K]>;
18
+ } : {
19
+ type: import('vue').PropType<T[K]>;
20
+ required: true;
21
+ };
22
+ };
@@ -70,12 +70,12 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
70
70
  tileSize: GrSizeWithPx;
71
71
  ratio: GrFilePreviewRatio;
72
72
  loading: "lazy" | "eager";
73
+ clickable: boolean;
73
74
  name: string | null;
74
75
  href: string;
75
76
  ariaLabel: string;
76
77
  src: string | null;
77
78
  as: string | Component;
78
- clickable: boolean;
79
79
  mime: string | null;
80
80
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
81
81
  declare const _default: typeof __VLS_export;
@@ -5,6 +5,6 @@ export { default as GrForm } from './GrForm.vue';
5
5
  export { grFormConfig } from './config';
6
6
  export { type GrFormContext, useGrFormContext } from './context';
7
7
  export type { GrFormFileRule, GrFormProps, GrFormRule, GrFormRules, GrFormTrigger, GrFormValidatorResult, } from './GrForm.vue';
8
- export { createGrFormMessageResolver, type GrFormMessageResolver, type GrFormMessageTranslate, type GrFormRuleFailure, runFieldRules, } from './validation';
8
+ export { createGrFormMessageResolver, getByPath, type GrFormMessageResolver, type GrFormMessageTranslate, type GrFormRuleFailure, isEmpty, runFieldRules, setByPath, } from './validation';
9
9
  export type { GrFormEmits } from './GrForm.vue';
10
10
  export type GrFormInstance = ComponentExposed<typeof GrFormComponent>;
@@ -55,12 +55,12 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
55
55
  onClick?: ((event: MouseEvent) => any) | undefined;
56
56
  }>, {
57
57
  density: GrListItemDensity;
58
+ clickable: boolean;
58
59
  title: string;
59
60
  description: string;
60
61
  href: string;
61
62
  disabled: boolean;
62
63
  as: string | Component;
63
- clickable: boolean;
64
64
  hoverable: boolean;
65
65
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
66
66
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -1,5 +1,5 @@
1
- import { type UseFloatingPlacement } from '../../composables/useFloating';
2
- import { type GrPopoverRole, type GrPopoverSize } from './grPopoverStyles';
1
+ import { type GrFloatingAnchorRect, type UseFloatingPlacement } from '../../composables/useFloating';
2
+ import { type GrPopoverPadding, type GrPopoverRole, type GrPopoverSize } from './grPopoverStyles';
3
3
  export interface GrPopoverProps {
4
4
  /**
5
5
  * Открыт ли поповер. Без этого пропа компонент ведёт состояние сам
@@ -48,6 +48,19 @@ export interface GrPopoverProps {
48
48
  teleportTo?: string | HTMLElement;
49
49
  contentClass?: string;
50
50
  disabled?: boolean;
51
+ /**
52
+ * Якорь-прямоугольник в координатах вьюпорта вместо обёртки слота `#trigger`:
53
+ * панель встаёт у точки курсора или у строки списка. Нужен контекстному меню,
54
+ * у которого триггера-элемента нет вовсе.
55
+ *
56
+ * `triggerProps` в этом режиме некому потребить, и своих ARIA-атрибутов
57
+ * поповер никуда не вешает: `aria-haspopup` невалиден вне интерактивного
58
+ * элемента, а `aria-expanded` без хозяина — шум. Связь с содержимым страницы
59
+ * объявляет тот, кто открывает.
60
+ */
61
+ anchor?: GrFloatingAnchorRect | null;
62
+ /** Поле панели. `none` — содержимое рисует своё (меню, список опций). */
63
+ padding?: GrPopoverPadding;
51
64
  }
52
65
  export interface GrPopoverEmits {
53
66
  (e: 'update:open', value: boolean): void;
@@ -90,6 +103,8 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
90
103
  teleportTo: undefined;
91
104
  contentClass: undefined;
92
105
  disabled: boolean;
106
+ anchor: undefined;
107
+ padding: string;
93
108
  }>>, {
94
109
  open: typeof open;
95
110
  close: typeof close;
@@ -113,10 +128,14 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
113
128
  teleportTo: undefined;
114
129
  contentClass: undefined;
115
130
  disabled: boolean;
131
+ anchor: undefined;
132
+ padding: string;
116
133
  }>>> & Readonly<{
117
134
  "onUpdate:open"?: ((value: boolean) => any) | undefined;
118
135
  }>, {
119
136
  size: GrPopoverSize;
137
+ padding: GrPopoverPadding;
138
+ anchor: GrFloatingAnchorRect | null;
120
139
  role: GrPopoverRole;
121
140
  modal: boolean;
122
141
  placement: UseFloatingPlacement;
@@ -10,6 +10,8 @@ export type GrPopoverSize = GrComponentSize;
10
10
  * потому что клавиатурный паттерн принадлежит ему, а не поповеру.
11
11
  */
12
12
  export type GrPopoverRole = 'dialog' | 'menu' | 'listbox' | 'grid' | 'group' | 'none';
13
+ /** Поле панели. `none` — поле рисует содержимое (меню, список опций). */
14
+ export type GrPopoverPadding = 'default' | 'none';
13
15
  export declare const panelSizes: Record<GrPopoverSize, string>;
14
16
  /**
15
17
  * `transform-origin` для scale-анимации: координаты панели уже посчитал
@@ -24,5 +26,13 @@ export declare function grPopoverOriginClass(placement: Placement): string;
24
26
  * Поверхность панели. `max-w-[min(...)]` не даёт поповеру вылезти за узкий
25
27
  * экран: `useFloating` смещает панель в пределах viewport, но не сужает её.
26
28
  */
29
+ /**
30
+ * Кегль без поля.
31
+ *
32
+ * Отдельная мапа, а не `contentClass="p-0"`: поле и кегль приезжают одной
33
+ * строкой равной специфичности, и кто победит — решал бы порядок правил в
34
+ * сгенерированном CSS. Меню внутри поповера с `p-3` — визуально не меню.
35
+ */
36
+ export declare const panelSizesFlush: Record<GrPopoverSize, string>;
27
37
  export declare const popoverPanelBaseClass = "rounded-[var(--gr-radius-xl)] border border-[var(--gr-brd)] bg-[var(--gr-popover)] text-[var(--gr-popover-fg)] shadow-[var(--gr-shadow-2)] max-w-[min(22rem,calc(100vw-1rem))] focus:outline-none";
28
- export declare function grPopoverPanelClass(size: GrPopoverSize, placement: Placement, extra?: string): string;
38
+ export declare function grPopoverPanelClass(size: GrPopoverSize, placement: Placement, extra?: string, padding?: GrPopoverPadding): string;
@@ -5,7 +5,7 @@ export { default as GrPopover } from './GrPopover.vue';
5
5
  export type { GrPopoverProps } from './GrPopover.vue';
6
6
  export { grPopoverConfig } from './config';
7
7
  export type { GrPopoverConfigurableProps } from './defaults';
8
- export type { GrPopoverRole, GrPopoverSize } from './grPopoverStyles';
8
+ export type { GrPopoverPadding, GrPopoverRole, GrPopoverSize } from './grPopoverStyles';
9
9
  export { grPopoverSafelist } from './safelist';
10
10
  export type { GrPopoverEmits } from './GrPopover.vue';
11
11
  export type GrPopoverInstance = ComponentExposed<typeof GrPopoverComponent>;
@@ -134,6 +134,7 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
134
134
  size: GrStatisticSize;
135
135
  polarity: GrDeltaPolarity;
136
136
  loading: boolean;
137
+ clickable: boolean;
137
138
  title: string;
138
139
  icon: string | Component;
139
140
  animate: boolean;
@@ -141,7 +142,6 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
141
142
  prefix: string;
142
143
  suffix: string;
143
144
  as: string | Component;
144
- clickable: boolean;
145
145
  locale: string;
146
146
  precision: number;
147
147
  decimalSeparator: string;
@@ -0,0 +1,118 @@
1
+ import type { GrStepsOrientation, GrStepsSize, GrStepsVariant } from './grStepsStyles';
2
+ import type { GrStep, GrStepStatus } from './stepsModel';
3
+ /**
4
+ * Индикатор шагов многошагового мастера.
5
+ *
6
+ * По семантике это **навигация**, а не составной виджет выбора: `<nav>` со
7
+ * списком, где пройденный шаг — кнопка со своей остановкой `Tab`, текущий —
8
+ * `aria-current="step"`, будущий — вне таб-порядка. Той же формы держатся
9
+ * `GrBreadcrumbs` и `GrBottomNav`; `role="tab"` здесь неприменим — tablist без
10
+ * `tabpanel` это сломанный паттерн, а панель шага никакой роли не несёт.
11
+ *
12
+ * Контент шага компонент не рисует: его ставит потребитель обычным `v-if`.
13
+ */
14
+ export interface GrStepsProps {
15
+ modelValue: string;
16
+ steps: GrStep[];
17
+ orientation?: GrStepsOrientation;
18
+ size?: GrStepsSize;
19
+ /** Компактный вид для узкой колонки: подпись текущего шага и полоса прогресса. */
20
+ variant?: GrStepsVariant;
21
+ /**
22
+ * Вперёд — не дальше первого непройденного. Назад свободно всегда: вернуться
23
+ * и поправить заполненное — обычный сценарий, а не обход правила.
24
+ */
25
+ linear?: boolean;
26
+ /** Переход кликом по шагу. Выключен — лента становится только индикатором. */
27
+ clickable?: boolean;
28
+ ariaLabel?: string;
29
+ /**
30
+ * Гейт перехода. Вернул `false` — перехода нет.
31
+ *
32
+ * Сюда потребитель кладёт валидацию шага: `GrSteps` про `GrForm` ничего не
33
+ * знает и знать не должен, а форма уже отдаёт `validate()`/`validateField()`.
34
+ */
35
+ beforeLeave?: (from: string, to: string) => boolean | Promise<boolean>;
36
+ }
37
+ export interface GrStepsEmits {
38
+ (e: 'update:modelValue', value: string): void;
39
+ (e: 'change', value: string): void;
40
+ }
41
+ type __VLS_Slots = {
42
+ /**
43
+ * Своя разметка пункта. Корневой тег, `aria-current` и клик остаются за
44
+ * компонентом — иначе доступность шага пришлось бы собирать заново.
45
+ */
46
+ step?: (props: {
47
+ step: GrStep;
48
+ index: number;
49
+ status: GrStepStatus;
50
+ enterable: boolean;
51
+ }) => unknown;
52
+ };
53
+ declare function next(): Promise<boolean>;
54
+ declare function back(): Promise<boolean>;
55
+ declare function goTo(value: string): Promise<boolean>;
56
+ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<GrStepsProps>, {
57
+ orientation: undefined;
58
+ size: undefined;
59
+ variant: undefined;
60
+ linear: undefined;
61
+ clickable: undefined;
62
+ ariaLabel: undefined;
63
+ beforeLeave: undefined;
64
+ }>>, {
65
+ next: typeof next;
66
+ back: typeof back;
67
+ goTo: typeof goTo;
68
+ isFirst: import("vue").ComputedRef<boolean>;
69
+ isLast: import("vue").ComputedRef<boolean>;
70
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
71
+ "update:modelValue": (value: string) => void;
72
+ change: (value: string) => void;
73
+ }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<GrStepsProps>, {
74
+ orientation: undefined;
75
+ size: undefined;
76
+ variant: undefined;
77
+ linear: undefined;
78
+ clickable: undefined;
79
+ ariaLabel: undefined;
80
+ beforeLeave: undefined;
81
+ }>>> & Readonly<{
82
+ onChange?: ((value: string) => any) | undefined;
83
+ "onUpdate:modelValue"?: ((value: string) => any) | undefined;
84
+ }>, {
85
+ variant: GrStepsVariant;
86
+ size: GrStepsSize;
87
+ orientation: GrStepsOrientation;
88
+ linear: boolean;
89
+ clickable: boolean;
90
+ ariaLabel: string;
91
+ beforeLeave: (from: string, to: string) => boolean | Promise<boolean>;
92
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
93
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
94
+ declare const _default: typeof __VLS_export;
95
+ export default _default;
96
+ type __VLS_TypePropsToOption<T> = {
97
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
98
+ type: import('vue').PropType<Required<T>[K]>;
99
+ } : {
100
+ type: import('vue').PropType<T[K]>;
101
+ required: true;
102
+ };
103
+ };
104
+ type __VLS_WithDefaults<P, D> = {
105
+ [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_PrettifyLocal<P[K] & {
106
+ default: D[K];
107
+ }> : P[K];
108
+ };
109
+ type __VLS_WithSlots<T, S> = T & {
110
+ new (): {
111
+ $slots: S;
112
+ };
113
+ };
114
+ type __VLS_PrettifyLocal<T> = (T extends any ? {
115
+ [K in keyof T]: T[K];
116
+ } : {
117
+ [K in keyof T as K]: T[K];
118
+ }) & {};
@@ -0,0 +1 @@
1
+ export declare const grStepsConfig: import("@feugene/unocss-preset-granular/contract").GranularComponentDescriptor<"GrSteps">;
@@ -0,0 +1,18 @@
1
+ import type { GrStepsOrientation, GrStepsSize, GrStepsVariant } from './grStepsStyles';
2
+ /**
3
+ * Пропы `GrSteps`, настраиваемые глобально через `componentDefaults`.
4
+ * Оформление и правило перехода — то, что приложение задаёт один раз на все
5
+ * мастера; текущий шаг относится к экземпляру и сюда не входит.
6
+ */
7
+ export interface GrStepsConfigurableProps {
8
+ size: GrStepsSize;
9
+ orientation: GrStepsOrientation;
10
+ variant: GrStepsVariant;
11
+ linear: boolean;
12
+ clickable: boolean;
13
+ }
14
+ declare module '../../composables/useGrComponentConfig' {
15
+ interface GrComponentDefaultsRegistry {
16
+ GrSteps: GrStepsConfigurableProps;
17
+ }
18
+ }
@@ -0,0 +1,63 @@
1
+ import type { GrComponentSize } from '../shared/sizes';
2
+ import type { GrStepStatus } from './stepsModel';
3
+ export type GrStepsSize = GrComponentSize;
4
+ export type GrStepsOrientation = 'horizontal' | 'vertical';
5
+ export type GrStepsVariant = 'steps' | 'compact';
6
+ export declare const stepsRootClass = "w-full min-w-0";
7
+ export declare const stepsListClass: Record<GrStepsOrientation, string>;
8
+ /**
9
+ * Пункт растёт по горизонтали и прижимается влево по вертикали.
10
+ *
11
+ * В горизонтальной ленте маркер стоит **над** подписью, а не слева от неё:
12
+ * соединитель идёт от маркера к маркеру на их высоте, и подпись сбоку он бы
13
+ * перечёркивал. В вертикальной колонке места по ширине хватает, там подпись
14
+ * справа, а линия спускается вниз.
15
+ */
16
+ export declare const stepsItemClass: Record<GrStepsOrientation, string>;
17
+ /** Отступ снизу у вертикального пункта — место, по которому идёт соединитель. */
18
+ export declare const stepsItemConnectedClass: Record<GrStepsOrientation, string>;
19
+ /**
20
+ * Кегль и метрика маркера на ступени.
21
+ *
22
+ * Шкала контрольная (`--gr-control-text-*`): шаги стоят в шапке мастера рядом с
23
+ * кнопками «Назад»/«Далее», и подпись обязана совпасть с ними, а не с меткой.
24
+ * Диаметр маркера — покомпонентный токен, потому что ступени в общей шкале для
25
+ * него нет: это не кегль и не радиус, а собственная метрика компонента.
26
+ */
27
+ export declare const stepsSizeClassBySize: Record<GrStepsSize, string>;
28
+ export declare const stepsTriggerClass = "min-w-0 bg-transparent focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--gr-bg)] rounded-[var(--gr-radius-md)]";
29
+ export declare const stepsTriggerClassByOrientation: Record<GrStepsOrientation, string>;
30
+ /** Кликабельный шаг обязан выглядеть кликабельным — иначе о нём не догадаются. */
31
+ export declare const stepsTriggerEnabledClass = "cursor-pointer";
32
+ export declare const stepsMarkerClass = "inline-flex shrink-0 items-center justify-center rounded-[var(--gr-radius-full)] border font-600 leading-none h-[var(--gr-steps-marker-size)] w-[var(--gr-steps-marker-size)] text-[length:var(--gr-control-text-2xs)]";
33
+ /**
34
+ * Маркер по статусу.
35
+ *
36
+ * Пройденный — сплошная заливка, текущий — обводка тем же тоном, будущий —
37
+ * приглушённый. Различие идёт по светлоте, а не по оттенку: три соседних цвета
38
+ * одного тона на одной ленте не читаются, а сплошное/полое — читается и в
39
+ * монохроме. `error` — единственный, кто меняет тон, и меняет его осмысленно.
40
+ */
41
+ export declare const stepsMarkerClassByStatus: Record<GrStepStatus, string>;
42
+ export declare const stepsLabelClass = "block min-w-0 font-600";
43
+ export declare const stepsLabelClassByStatus: Record<GrStepStatus, string>;
44
+ export declare const stepsDescriptionClass = "block mt-0.5 text-[length:var(--gr-control-text-xs)] text-[var(--gr-muted-fg)]";
45
+ /**
46
+ * Соединитель между шагами.
47
+ *
48
+ * Позиция считается от диаметра маркера, а не от жёсткой высоты: маркер растёт
49
+ * со ступенью размера, и линия обязана оставаться на его оси. По горизонтали
50
+ * пункты делят ширину поровну, поэтому маркер стоит ровно по центру пункта —
51
+ * отсюда `50%` слева и `-50%` справа: линия идёт от края одного маркера до
52
+ * края соседнего.
53
+ */
54
+ export declare const stepsConnectorClass: Record<GrStepsOrientation, string>;
55
+ export declare const stepsConnectorDoneClass = "bg-[var(--gr-steps-connector-done,var(--gr-primary-solid))]";
56
+ export declare const stepsConnectorPendingClass = "bg-[var(--gr-steps-connector-pending,var(--gr-brd))]";
57
+ /** Компактный вариант: подпись и полоса вместо ленты. */
58
+ export declare const stepsCompactRowClass = "flex items-baseline justify-between gap-3";
59
+ export declare const stepsCompactCounterClass = "shrink-0 text-[length:var(--gr-control-text-xs)] text-[var(--gr-muted-fg)]";
60
+ export declare const stepsCompactLabelClass = "min-w-0 truncate font-600 text-[var(--gr-fg)]";
61
+ export declare const stepsCompactBarClass = "mt-2";
62
+ export declare function grStepsMarkerClass(status: GrStepStatus): string;
63
+ export declare function grStepsLabelClass(status: GrStepStatus): string;
@@ -0,0 +1,11 @@
1
+ import type { ComponentExposed } from '../shared/instance';
2
+ import type GrStepsComponent from './GrSteps.vue';
3
+ export { default } from './GrSteps.vue';
4
+ export { default as GrSteps } from './GrSteps.vue';
5
+ export { grStepsConfig } from './config';
6
+ export type { GrStepsConfigurableProps } from './defaults';
7
+ export type { GrStepsOrientation, GrStepsSize, GrStepsVariant } from './grStepsStyles';
8
+ export { grStepsSafelist } from './safelist';
9
+ export type { GrStep, GrStepStatus } from './stepsModel';
10
+ export type { GrStepsEmits, GrStepsProps } from './GrSteps.vue';
11
+ export type GrStepsInstance = ComponentExposed<typeof GrStepsComponent>;
@@ -0,0 +1 @@
1
+ export declare const grStepsSafelist: string[];
@@ -0,0 +1,57 @@
1
+ import type { Component } from 'vue';
2
+ /**
3
+ * Правила шагового мастера — чистая арифметика без Vue.
4
+ *
5
+ * Вынесено отдельным модулем и тестируется без монтирования: «можно ли уйти на
6
+ * шаг N» и «какого он статуса» — вся содержательная логика компонента, и
7
+ * проверять её через отрендеренный DOM было бы дороже и слабее (эталон —
8
+ * `GrForm/validation.ts`).
9
+ */
10
+ /**
11
+ * Состояние шага.
12
+ *
13
+ * `error` не выводится из позиции — его ставит приложение, когда шаг пройден,
14
+ * но не прошёл проверку. Без него мастер не умеет сказать «на втором шаге
15
+ * остались ошибки», ради чего гейт перехода и заводится.
16
+ */
17
+ export type GrStepStatus = 'complete' | 'current' | 'upcoming' | 'error';
18
+ export type GrStep = {
19
+ value: string;
20
+ label: string;
21
+ /** Вторая строка под подписью: что от пользователя ждут на этом шаге. */
22
+ description?: string;
23
+ /**
24
+ * Иконка вместо номера — декоративна. Vue-компонент либо класс иконки вашей
25
+ * UnoCSS-сборки (`i-lucide-*` требует вашего `presetIcons`).
26
+ */
27
+ icon?: string | Component;
28
+ /** Явный статус. Не задан — выводится из позиции относительно текущего шага. */
29
+ status?: GrStepStatus;
30
+ disabled?: boolean;
31
+ };
32
+ export declare function stepIndexOf(steps: readonly GrStep[], value: string): number;
33
+ /**
34
+ * Статус шага: явный побеждает позиционный.
35
+ *
36
+ * Позиция даёт три состояния из четырёх, и только `error` приходит снаружи —
37
+ * вывести его неоткуда, ошибка живёт в форме, а не в порядке шагов.
38
+ */
39
+ export declare function stepStatusAt(steps: readonly GrStep[], index: number, currentIndex: number): GrStepStatus;
40
+ /**
41
+ * Можно ли уйти на шаг по его индексу.
42
+ *
43
+ * `linear` ограничивает **только движение вперёд**, и не одним шагом, а первым
44
+ * непройденным: вернуться назад и снова прыгнуть на тот же шаг, до которого уже
45
+ * дошёл, — нормальный сценарий правки заполненного мастера. Запрещать его
46
+ * значило бы заставлять пользователя проходить всё заново ради одной опечатки.
47
+ */
48
+ export declare function canEnterStep(options: {
49
+ steps: readonly GrStep[];
50
+ index: number;
51
+ currentIndex: number;
52
+ linear: boolean;
53
+ }): boolean;
54
+ /** Индекс следующего доступного шага, или `-1`, если дальше идти некуда. */
55
+ export declare function nextEnterableIndex(steps: readonly GrStep[], currentIndex: number): number;
56
+ /** Индекс предыдущего доступного шага, или `-1`. */
57
+ export declare function previousEnterableIndex(steps: readonly GrStep[], currentIndex: number): number;
@@ -0,0 +1,24 @@
1
+ export interface UseMenuItemsFocusOptions {
2
+ /** Корень, внутри которого живут пункты. */
3
+ container: () => HTMLElement | null;
4
+ /** Закрыть меню — `Tab` уводит фокус наружу, панель при этом закрывается. */
5
+ close: () => void;
6
+ }
7
+ export interface UseMenuItemsFocusReturn {
8
+ /** Пункты в порядке документа. */
9
+ items: () => HTMLElement[];
10
+ /** Сфокусировать по индексу; отрицательный и превышающий заворачиваются. */
11
+ focusAt: (index: number) => void;
12
+ /** Стрелки, `Home`/`End`, `Tab`, typeahead. `true` — клавиша обработана. */
13
+ onKeydown: (event: KeyboardEvent) => boolean;
14
+ reset: () => void;
15
+ }
16
+ /**
17
+ * Клавиатура панели-меню: кольцо фокуса плюс поиск по первым буквам.
18
+ *
19
+ * Пункты ищутся в DOM, а не в модели, и это осознанно: у панели бывает
20
+ * произвольное содержимое из слота, в котором ключей нет вовсе. По той же
21
+ * причине здесь не `useRovingFocus` — он адресуется ключами и ведёт
22
+ * `tabindex="0"` на активном элементе, а пункты меню обязаны быть `-1`.
23
+ */
24
+ export declare function useMenuItemsFocus(options: UseMenuItemsFocusOptions): UseMenuItemsFocusReturn;
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Буфер живёт ровно столько: дальше набранное перестаёт быть одним словом.
3
+ * Значение из WAI-ARIA APG, оно же стояло во всех трёх прежних копиях.
4
+ */
5
+ export declare const TYPEAHEAD_RESET_MS = 600;
6
+ export interface UseTypeaheadOptions<TItem> {
7
+ /** Кандидаты в порядке отображения. Опрашивается на каждый символ. */
8
+ items: () => readonly TItem[];
9
+ /** Текст кандидата. Нормализацию (`trim` + нижний регистр) делает композабл. */
10
+ textOf: (item: TItem, index: number) => string;
11
+ /** Откуда шагать. Получает уже разрешённый набор, чтобы не опрашивать его дважды. */
12
+ currentIndex: (items: readonly TItem[]) => number;
13
+ /** Совпадение найдено. Фокус, `activeIndex` — решает потребитель. */
14
+ onMatch: (item: TItem, index: number) => void;
15
+ resetMs?: number;
16
+ }
17
+ export interface UseTypeaheadReturn {
18
+ /** Обработать печатный символ. `true` — совпадение найдено. */
19
+ type: (char: string) => boolean;
20
+ /** Пуст ли буфер: правило «`Space` при пустом буфере активирует пункт». */
21
+ isEmpty: () => boolean;
22
+ reset: () => void;
23
+ }
24
+ /**
25
+ * Поиск по первым буквам в списке — паттерн `typeahead` из WAI-ARIA APG.
26
+ *
27
+ * Буфер намеренно не реактивный: на рендер он не влияет, а читается синхронно
28
+ * внутри обработчика `keydown`.
29
+ */
30
+ export declare function useTypeahead<TItem>(options: UseTypeaheadOptions<TItem>): UseTypeaheadReturn;
@@ -1,6 +1,35 @@
1
1
  import type { CSSProperties, Ref } from 'vue';
2
- import type { Placement } from '@floating-ui/dom';
2
+ import type { Placement, VirtualElement } from '@floating-ui/dom';
3
3
  export type UseFloatingPlacement = Placement;
4
+ /**
5
+ * Прямоугольник в координатах вьюпорта — якорь, которого нет в DOM.
6
+ *
7
+ * Точка курсора описывается прямоугольником `0×0`. Размеры необязательны именно
8
+ * поэтому: контекстное меню, открытое с клавиатуры, встаёт у **прямоугольника**
9
+ * сфокусированной строки, а не у её угла, и переворачивается вместе с ней.
10
+ */
11
+ export interface GrFloatingAnchorRect {
12
+ x: number;
13
+ y: number;
14
+ /** По умолчанию 0. */
15
+ width?: number;
16
+ /** По умолчанию 0. */
17
+ height?: number;
18
+ }
19
+ /** Ссылка позиционирования: элемент, виртуальный якорь или ничего. */
20
+ export type UseFloatingReference = HTMLElement | VirtualElement | null;
21
+ /**
22
+ * Виртуальный якорь: объект создаётся один раз, координаты читает геттер на
23
+ * каждом измерении.
24
+ *
25
+ * Стабильность объекта здесь не стилистика, а условие работы: `useFloating`
26
+ * пересоздаёт подписку `autoUpdate` при смене самой ссылки, поэтому новый объект
27
+ * на каждое движение курсора рвал бы и заводил её заново. С одним объектом смена
28
+ * точки — это просто `update()`.
29
+ */
30
+ export declare function createFloatingAnchor(get: () => GrFloatingAnchorRect | null | undefined, options?: {
31
+ contextElement?: () => Element | null | undefined;
32
+ }): VirtualElement;
4
33
  export interface UseFloatingOptions {
5
34
  /**
6
35
  * Предпочитаемое место панели относительно триггера. По умолчанию `bottom-start`.
@@ -19,6 +48,8 @@ export interface UseFloatingOptions {
19
48
  * - `'min'` — панель растёт по контенту (`width: max-content`), но не уже триггера
20
49
  * (`min-width = ширина триггера`) — режим `GrSelect view="link"`;
21
50
  * - функция-геттер — как и `placement`, для реактивной зависимости от пропа.
51
+ *
52
+ * С виртуальным якорем не работает: ширина точки равна нулю.
22
53
  */
23
54
  matchWidth?: boolean | 'min' | (() => boolean | 'min');
24
55
  /**
@@ -54,4 +85,4 @@ export interface UseFloatingReturn {
54
85
  * `<teleport to="body">` + `v-show`, а не `v-if`): позиционирование не может измерить
55
86
  * элемент, которого нет в дереве.
56
87
  */
57
- export declare function useFloating(referenceEl: Ref<HTMLElement | null>, floatingEl: Ref<HTMLElement | null>, open: Ref<boolean>, options?: UseFloatingOptions): UseFloatingReturn;
88
+ export declare function useFloating(reference: Ref<HTMLElement | null> | (() => UseFloatingReference), floatingEl: Ref<HTMLElement | null>, open: Ref<boolean>, options?: UseFloatingOptions): UseFloatingReturn;
@@ -23,12 +23,15 @@ export declare const granularityComponentConfigs: {
23
23
  GrCard: GranularComponentDescriptor<"GrCard">;
24
24
  GrCheckbox: GranularComponentDescriptor<"GrCheckbox">;
25
25
  GrCheckboxGroup: GranularComponentDescriptor<"GrCheckboxGroup">;
26
+ GrChip: GranularComponentDescriptor<"GrChip">;
27
+ GrChipGroup: GranularComponentDescriptor<"GrChipGroup">;
26
28
  GrCodeBlock: GranularComponentDescriptor<"GrCodeBlock">;
27
29
  GrCollapse: GranularComponentDescriptor<"GrCollapse">;
28
30
  GrColorPicker: GranularComponentDescriptor<"GrColorPicker">;
29
31
  GrCommandPalette: GranularComponentDescriptor<"GrCommandPalette">;
30
32
  GrConfigProvider: GranularComponentDescriptor<"GrConfigProvider">;
31
33
  GrConfirmDialog: GranularComponentDescriptor<"GrConfirmDialog">;
34
+ GrContextMenu: GranularComponentDescriptor<"GrContextMenu">;
32
35
  GrDataTable: GranularComponentDescriptor<"GrDataTable">;
33
36
  GrDelta: GranularComponentDescriptor<"GrDelta">;
34
37
  GrDescriptionList: GranularComponentDescriptor<"GrDescriptionList">;
@@ -74,6 +77,7 @@ export declare const granularityComponentConfigs: {
74
77
  GrSortableList: GranularComponentDescriptor<"GrSortableList">;
75
78
  GrSplitter: GranularComponentDescriptor<"GrSplitter">;
76
79
  GrStatistic: GranularComponentDescriptor<"GrStatistic">;
80
+ GrSteps: GranularComponentDescriptor<"GrSteps">;
77
81
  GrSwitch: GranularComponentDescriptor<"GrSwitch">;
78
82
  GrTable: GranularComponentDescriptor<"GrTable">;
79
83
  GrTabPanels: GranularComponentDescriptor<"GrTabPanels">;