@feugene/granularity 0.13.0 → 0.18.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 (1266) hide show
  1. package/README.md +14 -1
  2. package/dist/chunks/adapter-CAOxmn2G.js.map +1 -1
  3. package/dist/chunks/check-BZI24Qs4.js +23 -0
  4. package/dist/chunks/check-BZI24Qs4.js.map +1 -0
  5. package/dist/chunks/chevron-down-CQS2OG_s.js +23 -0
  6. package/dist/chunks/chevron-down-CQS2OG_s.js.map +1 -0
  7. package/dist/chunks/chevron-right-BfqMVpbB.js +44 -0
  8. package/dist/chunks/chevron-right-BfqMVpbB.js.map +1 -0
  9. package/dist/chunks/config-06SQjBx0.js +96 -0
  10. package/dist/chunks/config-06SQjBx0.js.map +1 -0
  11. package/dist/chunks/config-A-bBiotF.js +12 -0
  12. package/dist/chunks/config-A-bBiotF.js.map +1 -0
  13. package/dist/chunks/config-B-iNaGdw.js +199 -0
  14. package/dist/chunks/config-B-iNaGdw.js.map +1 -0
  15. package/dist/chunks/config-B84z1aos.js +19 -0
  16. package/dist/chunks/config-B84z1aos.js.map +1 -0
  17. package/dist/chunks/config-BDfTXHo12.js +23 -0
  18. package/dist/chunks/config-BDfTXHo12.js.map +1 -0
  19. package/dist/chunks/config-BE6n20np2.js +27 -0
  20. package/dist/chunks/config-BE6n20np2.js.map +1 -0
  21. package/dist/chunks/config-BKvX0q10.js +89 -0
  22. package/dist/chunks/config-BKvX0q10.js.map +1 -0
  23. package/dist/chunks/config-BN4sXYXn.js +77 -0
  24. package/dist/chunks/config-BN4sXYXn.js.map +1 -0
  25. package/dist/chunks/config-BNu8lFQB.js.map +1 -1
  26. package/dist/chunks/config-BSyiFlbi.js +17 -0
  27. package/dist/chunks/config-BSyiFlbi.js.map +1 -0
  28. package/dist/chunks/config-BViooYNv.js +13 -0
  29. package/dist/chunks/config-BViooYNv.js.map +1 -0
  30. package/dist/chunks/config-Baj7Wvx-.js +72 -0
  31. package/dist/chunks/config-Baj7Wvx-.js.map +1 -0
  32. package/dist/chunks/config-BbY2SKGE.js +90 -0
  33. package/dist/chunks/config-BbY2SKGE.js.map +1 -0
  34. package/dist/chunks/config-BeZRuonp.js +54 -0
  35. package/dist/chunks/config-BeZRuonp.js.map +1 -0
  36. package/dist/chunks/config-BoNR7_PD2.js +140 -0
  37. package/dist/chunks/config-BoNR7_PD2.js.map +1 -0
  38. package/dist/chunks/config-Bpt9Xbxm.js +49 -0
  39. package/dist/chunks/config-Bpt9Xbxm.js.map +1 -0
  40. package/dist/chunks/config-BqFjr3tN.js +131 -0
  41. package/dist/chunks/config-BqFjr3tN.js.map +1 -0
  42. package/dist/chunks/config-BsPDQ0dS.js +97 -0
  43. package/dist/chunks/config-BsPDQ0dS.js.map +1 -0
  44. package/dist/chunks/config-BsuDM3Hb.js +55 -0
  45. package/dist/chunks/config-BsuDM3Hb.js.map +1 -0
  46. package/dist/chunks/config-BtXRpAtq.js +48 -0
  47. package/dist/chunks/config-BtXRpAtq.js.map +1 -0
  48. package/dist/chunks/config-BuGlNPE9.js +8 -0
  49. package/dist/chunks/config-BuGlNPE9.js.map +1 -0
  50. package/dist/chunks/config-C0Ea9ePP.js +15 -0
  51. package/dist/chunks/config-C0Ea9ePP.js.map +1 -0
  52. package/dist/chunks/config-CN2ULSQL.js +36 -0
  53. package/dist/chunks/config-CN2ULSQL.js.map +1 -0
  54. package/dist/chunks/config-CN970ZcJ.js +113 -0
  55. package/dist/chunks/config-CN970ZcJ.js.map +1 -0
  56. package/dist/chunks/config-COpuWGr_.js +72 -0
  57. package/dist/chunks/config-COpuWGr_.js.map +1 -0
  58. package/dist/chunks/config-COvrUfhR.js +83 -0
  59. package/dist/chunks/config-COvrUfhR.js.map +1 -0
  60. package/dist/chunks/config-CQzGyi1C.js +54 -0
  61. package/dist/chunks/config-CQzGyi1C.js.map +1 -0
  62. package/dist/chunks/config-CY0_6cMi.js +51 -0
  63. package/dist/chunks/config-CY0_6cMi.js.map +1 -0
  64. package/dist/chunks/config-CjXjhphs.js +12 -0
  65. package/dist/chunks/config-CjXjhphs.js.map +1 -0
  66. package/dist/chunks/config-CjnbevbD.js +13 -0
  67. package/dist/chunks/config-CjnbevbD.js.map +1 -0
  68. package/dist/chunks/config-Cl4ST6Qd.js +21 -0
  69. package/dist/chunks/config-Cl4ST6Qd.js.map +1 -0
  70. package/dist/chunks/config-Cp0DE0GH.js +12 -0
  71. package/dist/chunks/config-Cp0DE0GH.js.map +1 -0
  72. package/dist/chunks/config-Cwd3yjRw.js +41 -0
  73. package/dist/chunks/config-Cwd3yjRw.js.map +1 -0
  74. package/dist/chunks/config-D2aNP7Es.js +70 -0
  75. package/dist/chunks/config-D2aNP7Es.js.map +1 -0
  76. package/dist/chunks/config-D3_g2KIn.js +120 -0
  77. package/dist/chunks/config-D3_g2KIn.js.map +1 -0
  78. package/dist/chunks/config-D6W1rnlp.js +26 -0
  79. package/dist/chunks/config-D6W1rnlp.js.map +1 -0
  80. package/dist/chunks/config-D94Z9po5.js +126 -0
  81. package/dist/chunks/config-D94Z9po5.js.map +1 -0
  82. package/dist/chunks/config-DA6SnEoy.js +22 -0
  83. package/dist/chunks/config-DA6SnEoy.js.map +1 -0
  84. package/dist/chunks/config-DBmdgoVf.js.map +1 -1
  85. package/dist/chunks/config-DCFvmHEv2.js +76 -0
  86. package/dist/chunks/config-DCFvmHEv2.js.map +1 -0
  87. package/dist/chunks/config-DEvsMTQE.js +150 -0
  88. package/dist/chunks/config-DEvsMTQE.js.map +1 -0
  89. package/dist/chunks/config-DKdlqXiY.js +109 -0
  90. package/dist/chunks/config-DKdlqXiY.js.map +1 -0
  91. package/dist/chunks/config-DP7eseR1.js +92 -0
  92. package/dist/chunks/config-DP7eseR1.js.map +1 -0
  93. package/dist/chunks/config-DSJY6aEl.js +80 -0
  94. package/dist/chunks/config-DSJY6aEl.js.map +1 -0
  95. package/dist/chunks/config-DU2DNSRx2.js +116 -0
  96. package/dist/chunks/config-DU2DNSRx2.js.map +1 -0
  97. package/dist/chunks/config-DhHbU3zO.js +37 -0
  98. package/dist/chunks/config-DhHbU3zO.js.map +1 -0
  99. package/dist/chunks/config-DpeQchsV.js +21 -0
  100. package/dist/chunks/config-DpeQchsV.js.map +1 -0
  101. package/dist/chunks/config-DpqOnJiz2.js.map +1 -0
  102. package/dist/chunks/config-DvQIb4kb.js +98 -0
  103. package/dist/chunks/config-DvQIb4kb.js.map +1 -0
  104. package/dist/chunks/config-K0C2tcLB.js +84 -0
  105. package/dist/chunks/config-K0C2tcLB.js.map +1 -0
  106. package/dist/chunks/config-MRvhUl-O.js +81 -0
  107. package/dist/chunks/config-MRvhUl-O.js.map +1 -0
  108. package/dist/chunks/config-QaIc_gRa.js.map +1 -0
  109. package/dist/chunks/config-Rw9OyW70.js +87 -0
  110. package/dist/chunks/config-Rw9OyW70.js.map +1 -0
  111. package/dist/chunks/config-ScuvHw6k2.js +42 -0
  112. package/dist/chunks/config-ScuvHw6k2.js.map +1 -0
  113. package/dist/chunks/config-T3qdQBgU2.js +40 -0
  114. package/dist/chunks/config-T3qdQBgU2.js.map +1 -0
  115. package/dist/chunks/config-WTNhdh6T2.js +20 -0
  116. package/dist/chunks/config-WTNhdh6T2.js.map +1 -0
  117. package/dist/chunks/config-_qPUfb6-2.js +165 -0
  118. package/dist/chunks/config-_qPUfb6-2.js.map +1 -0
  119. package/dist/chunks/config-esdviAPL.js +41 -0
  120. package/dist/chunks/config-esdviAPL.js.map +1 -0
  121. package/dist/chunks/config-gvq_hWNM.js +103 -0
  122. package/dist/chunks/config-gvq_hWNM.js.map +1 -0
  123. package/dist/chunks/config-gwro_7yn.js +55 -0
  124. package/dist/chunks/config-gwro_7yn.js.map +1 -0
  125. package/dist/chunks/config-qVg3Zz_A.js +30 -0
  126. package/dist/chunks/config-qVg3Zz_A.js.map +1 -0
  127. package/dist/chunks/config-zjeAJ4ho.js +64 -0
  128. package/dist/chunks/config-zjeAJ4ho.js.map +1 -0
  129. package/dist/chunks/context-BSYR7RZs.js +152 -0
  130. package/dist/chunks/context-BSYR7RZs.js.map +1 -0
  131. package/dist/chunks/context-BfIQv7m1.js +18 -0
  132. package/dist/chunks/context-BfIQv7m1.js.map +1 -0
  133. package/dist/chunks/context-Bfrgsluh.js.map +1 -1
  134. package/dist/chunks/context-DdNIxa1w.js.map +1 -1
  135. package/dist/chunks/dialogShared-CxW62PQE.js.map +1 -1
  136. package/dist/chunks/en-COdzxgAX.js +352 -0
  137. package/dist/chunks/en-COdzxgAX.js.map +1 -0
  138. package/dist/chunks/es-ClqJ-4hr.js +354 -0
  139. package/dist/chunks/es-ClqJ-4hr.js.map +1 -0
  140. package/dist/chunks/es-DGMHwknJ.js +20 -0
  141. package/dist/chunks/es-DGMHwknJ.js.map +1 -0
  142. package/dist/chunks/fileValidation-D5TFBhbv.js +296 -0
  143. package/dist/chunks/fileValidation-D5TFBhbv.js.map +1 -0
  144. package/dist/chunks/focusables-BkzK42SQ.js +87 -0
  145. package/dist/chunks/focusables-BkzK42SQ.js.map +1 -0
  146. package/dist/chunks/grBadgeStyles-C2wLlkjF.js +61 -0
  147. package/dist/chunks/grBadgeStyles-C2wLlkjF.js.map +1 -0
  148. package/dist/chunks/grButtonStyles-B_-YRE__.js +221 -0
  149. package/dist/chunks/grButtonStyles-B_-YRE__.js.map +1 -0
  150. package/dist/chunks/grCheckboxStyles-hOAgURZG.js +82 -0
  151. package/dist/chunks/grCheckboxStyles-hOAgURZG.js.map +1 -0
  152. package/dist/chunks/grDropdownStyles-V7TRiCXn.js +24 -0
  153. package/dist/chunks/grDropdownStyles-V7TRiCXn.js.map +1 -0
  154. package/dist/chunks/grFormFieldStyles-BkeZHIw0.js +32 -0
  155. package/dist/chunks/grFormFieldStyles-BkeZHIw0.js.map +1 -0
  156. package/dist/chunks/grIconStyles-BwJrml2L.js +44 -0
  157. package/dist/chunks/grIconStyles-BwJrml2L.js.map +1 -0
  158. package/dist/chunks/grInputStyles-CJeMhUe5.js +66 -0
  159. package/dist/chunks/grInputStyles-CJeMhUe5.js.map +1 -0
  160. package/dist/chunks/grKbdStyles-CeZhGQHr.js +43 -0
  161. package/dist/chunks/grKbdStyles-CeZhGQHr.js.map +1 -0
  162. package/dist/chunks/grLinkStyles-BoL8QYcV.js +84 -0
  163. package/dist/chunks/grLinkStyles-BoL8QYcV.js.map +1 -0
  164. package/dist/chunks/grLoadingStyles-DEmji2wv.js +30 -0
  165. package/dist/chunks/grLoadingStyles-DEmji2wv.js.map +1 -0
  166. package/dist/chunks/grModalStyles-EZfuEiw_.js +77 -0
  167. package/dist/chunks/grModalStyles-EZfuEiw_.js.map +1 -0
  168. package/dist/chunks/grPopoverStyles-Rz_Z5nLW.js +46 -0
  169. package/dist/chunks/grPopoverStyles-Rz_Z5nLW.js.map +1 -0
  170. package/dist/chunks/grSelectStyles-eTz4uPMP.js +147 -0
  171. package/dist/chunks/grSelectStyles-eTz4uPMP.js.map +1 -0
  172. package/dist/chunks/grSliderStyles-B5uNxNJq.js +133 -0
  173. package/dist/chunks/grSliderStyles-B5uNxNJq.js.map +1 -0
  174. package/dist/chunks/grStyle-CrgLQKKf.js +46 -0
  175. package/dist/chunks/grStyle-CrgLQKKf.js.map +1 -0
  176. package/dist/chunks/grTableStyles-C-iaqQUN.js +26 -0
  177. package/dist/chunks/grTableStyles-C-iaqQUN.js.map +1 -0
  178. package/dist/chunks/grTextareaStyles-iOcHuVMM.js +50 -0
  179. package/dist/chunks/grTextareaStyles-iOcHuVMM.js.map +1 -0
  180. package/dist/chunks/granular-provider-B9nXQCMu.js +195 -0
  181. package/dist/chunks/granular-provider-B9nXQCMu.js.map +1 -0
  182. package/dist/chunks/granularityI18n-BC5zsj_d.js +68 -0
  183. package/dist/chunks/granularityI18n-BC5zsj_d.js.map +1 -0
  184. package/dist/chunks/inert-DIHCCn_1.js +78 -0
  185. package/dist/chunks/inert-DIHCCn_1.js.map +1 -0
  186. package/dist/chunks/keyboard-DE2yhz_b.js +70 -0
  187. package/dist/chunks/keyboard-DE2yhz_b.js.map +1 -0
  188. package/dist/chunks/loader-2-B1fdsdWW.js +23 -0
  189. package/dist/chunks/loader-2-B1fdsdWW.js.map +1 -0
  190. package/dist/chunks/minus-oxdbHF33.js +23 -0
  191. package/dist/chunks/minus-oxdbHF33.js.map +1 -0
  192. package/dist/chunks/optionFilter-DYw9XPPx.js +79 -0
  193. package/dist/chunks/optionFilter-DYw9XPPx.js.map +1 -0
  194. package/dist/chunks/overlayStack-C8cfsqXa.js +99 -0
  195. package/dist/chunks/overlayStack-C8cfsqXa.js.map +1 -0
  196. package/dist/chunks/portalRoot-CWD4zHBm.js +35 -0
  197. package/dist/chunks/portalRoot-CWD4zHBm.js.map +1 -0
  198. package/dist/chunks/ru-9z8ix45c.js +356 -0
  199. package/dist/chunks/ru-9z8ix45c.js.map +1 -0
  200. package/dist/chunks/safelist-CudBLyAD.js +26 -0
  201. package/dist/chunks/safelist-CudBLyAD.js.map +1 -0
  202. package/dist/chunks/slotNodes-DxNXpC7v.js +39 -0
  203. package/dist/chunks/slotNodes-DxNXpC7v.js.map +1 -0
  204. package/dist/chunks/useControlAddons-asUr10Pf.js +128 -0
  205. package/dist/chunks/useControlAddons-asUr10Pf.js.map +1 -0
  206. package/dist/chunks/useControlledOpen-DV3SqLTP.js +27 -0
  207. package/dist/chunks/useControlledOpen-DV3SqLTP.js.map +1 -0
  208. package/dist/chunks/useDragSort-0l47h4yb.js +265 -0
  209. package/dist/chunks/useDragSort-0l47h4yb.js.map +1 -0
  210. package/dist/chunks/useFilePreviews-DnwgdyBs.js +53 -0
  211. package/dist/chunks/useFilePreviews-DnwgdyBs.js.map +1 -0
  212. package/dist/chunks/useFocusWithin-BwHE0rzm.js +33 -0
  213. package/dist/chunks/useFocusWithin-BwHE0rzm.js.map +1 -0
  214. package/dist/chunks/useModalOverlay-BTq-0ImG.js +212 -0
  215. package/dist/chunks/useModalOverlay-BTq-0ImG.js.map +1 -0
  216. package/dist/chunks/usePortalTarget-RyzEgNTb.js +77 -0
  217. package/dist/chunks/usePortalTarget-RyzEgNTb.js.map +1 -0
  218. package/dist/chunks/validation-5HhpanPP.js +178 -0
  219. package/dist/chunks/validation-5HhpanPP.js.map +1 -0
  220. package/dist/components/GrAlert/chunks/GrAlert-BC1lplbY.js +272 -0
  221. package/dist/components/GrAlert/chunks/GrAlert-BC1lplbY.js.map +1 -0
  222. package/dist/components/GrAlert/index.js +2 -2
  223. package/dist/components/GrAutocomplete/chunks/GrAutocomplete-CPEQxmLZ.js +852 -0
  224. package/dist/components/GrAutocomplete/chunks/GrAutocomplete-CPEQxmLZ.js.map +1 -0
  225. package/dist/components/GrAutocomplete/index.js +2 -2
  226. package/dist/components/GrAutocomplete/styles.css +1 -0
  227. package/dist/components/GrAvatar/chunks/GrAvatar-CVUujLmn.js +222 -0
  228. package/dist/components/GrAvatar/chunks/GrAvatar-CVUujLmn.js.map +1 -0
  229. package/dist/components/GrAvatar/index.js +3 -3
  230. package/dist/components/GrBadge/chunks/GrBadge-B1tgqfGQ.js +40 -0
  231. package/dist/components/GrBadge/chunks/GrBadge-B1tgqfGQ.js.map +1 -0
  232. package/dist/components/GrBadge/index.js +2 -2
  233. package/dist/components/GrBadge/styles.css +1 -0
  234. package/dist/components/GrBadge/themes/dark.css +19 -0
  235. package/dist/components/GrBadge/themes/light.css +18 -0
  236. package/dist/components/GrBadgeWrap/chunks/GrBadgeWrap-C-E9betg.js +97 -0
  237. package/dist/components/GrBadgeWrap/chunks/GrBadgeWrap-C-E9betg.js.map +1 -0
  238. package/dist/components/GrBadgeWrap/index.js +3 -3
  239. package/dist/components/GrBadgeWrap/styles.css +1 -0
  240. package/dist/components/GrBottomNav/chunks/GrBottomNav-9GH7Dd9E.js +117 -0
  241. package/dist/components/GrBottomNav/chunks/GrBottomNav-9GH7Dd9E.js.map +1 -0
  242. package/dist/components/GrBottomNav/index.js +3 -3
  243. package/dist/components/GrBreadcrumbs/chunks/GrBreadcrumbs-BCNGDS6k.js +266 -0
  244. package/dist/components/GrBreadcrumbs/chunks/GrBreadcrumbs-BCNGDS6k.js.map +1 -0
  245. package/dist/components/GrBreadcrumbs/index.js +3 -0
  246. package/dist/components/GrButton/chunks/GrButton-D0m_z0XW.js +153 -0
  247. package/dist/components/GrButton/chunks/GrButton-D0m_z0XW.js.map +1 -0
  248. package/dist/components/GrButton/index.js +5 -5
  249. package/dist/components/GrButton/themes/dark.css +46 -0
  250. package/dist/components/GrButton/themes/light.css +82 -0
  251. package/dist/components/GrButtonGroup/chunks/GrButtonGroup-CKyiAV8K.js +44 -0
  252. package/dist/components/GrButtonGroup/chunks/GrButtonGroup-CKyiAV8K.js.map +1 -0
  253. package/dist/components/GrButtonGroup/index.js +3 -2
  254. package/dist/components/GrButtonGroup/styles.css +1 -0
  255. package/dist/components/GrCard/chunks/GrCard-DOrGHf2x.js +89 -0
  256. package/dist/components/GrCard/chunks/GrCard-DOrGHf2x.js.map +1 -0
  257. package/dist/components/GrCard/index.js +3 -3
  258. package/dist/components/GrCheckbox/chunks/GrCheckbox-BLOp8452.js +262 -0
  259. package/dist/components/GrCheckbox/chunks/GrCheckbox-BLOp8452.js.map +1 -0
  260. package/dist/components/GrCheckbox/index.js +3 -3
  261. package/dist/components/GrCheckboxGroup/chunks/GrCheckboxGroup-CXTx2Z5H.js +140 -0
  262. package/dist/components/GrCheckboxGroup/chunks/GrCheckboxGroup-CXTx2Z5H.js.map +1 -0
  263. package/dist/components/GrCheckboxGroup/index.js +3 -0
  264. package/dist/components/GrCollapse/chunks/GrCollapse-B2Fc6A9r.js +308 -0
  265. package/dist/components/GrCollapse/chunks/GrCollapse-B2Fc6A9r.js.map +1 -0
  266. package/dist/components/GrCollapse/index.js +3 -3
  267. package/dist/components/GrColorPicker/chunks/GrColorPicker-DAdQ-Gc3.js +584 -0
  268. package/dist/components/GrColorPicker/chunks/GrColorPicker-DAdQ-Gc3.js.map +1 -0
  269. package/dist/components/GrColorPicker/index.js +3 -0
  270. package/dist/components/GrColorPicker/styles.css +1 -0
  271. package/dist/components/GrCommandPalette/chunks/GrCommandPalette-DMeSqkEv.js +565 -0
  272. package/dist/components/GrCommandPalette/chunks/GrCommandPalette-DMeSqkEv.js.map +1 -0
  273. package/dist/components/GrCommandPalette/index.js +2 -2
  274. package/dist/components/GrCommandPalette/styles.css +1 -0
  275. package/dist/components/GrConfigProvider/chunks/GrConfigProvider-BA6JO7V6.js +144 -0
  276. package/dist/components/GrConfigProvider/chunks/GrConfigProvider-BA6JO7V6.js.map +1 -0
  277. package/dist/components/GrConfigProvider/index.js +3 -3
  278. package/dist/components/GrConfirmDialog/chunks/GrConfirmDialog-hUTi-GdJ.js +200 -0
  279. package/dist/components/GrConfirmDialog/chunks/GrConfirmDialog-hUTi-GdJ.js.map +1 -0
  280. package/dist/components/GrConfirmDialog/index.js +2 -2
  281. package/dist/components/GrDataTable/chunks/GrDataTable-DzaGLG3A.js +1053 -0
  282. package/dist/components/GrDataTable/chunks/GrDataTable-DzaGLG3A.js.map +1 -0
  283. package/dist/components/GrDataTable/index.js +3 -3
  284. package/dist/components/GrDialog/chunks/GrDialog-MD9Fzy9C.js +255 -0
  285. package/dist/components/GrDialog/chunks/GrDialog-MD9Fzy9C.js.map +1 -0
  286. package/dist/components/GrDialog/index.js +1 -1
  287. package/dist/components/GrDialogService/chunks/GrDialogService-DtgUijMj.js +656 -0
  288. package/dist/components/GrDialogService/chunks/GrDialogService-DtgUijMj.js.map +1 -0
  289. package/dist/components/GrDialogService/index.js +3 -3
  290. package/dist/components/GrDivider/chunks/GrDivider-B2Xwc_QO.js +109 -0
  291. package/dist/components/GrDivider/chunks/GrDivider-B2Xwc_QO.js.map +1 -0
  292. package/dist/components/GrDivider/index.js +3 -3
  293. package/dist/components/GrDrawer/chunks/GrDrawer-DWHdZZzW.js +251 -0
  294. package/dist/components/GrDrawer/chunks/GrDrawer-DWHdZZzW.js.map +1 -0
  295. package/dist/components/GrDrawer/index.js +2 -2
  296. package/dist/components/GrDropdown/chunks/GrDropdown-0tJK01Kq.js +300 -0
  297. package/dist/components/GrDropdown/chunks/GrDropdown-0tJK01Kq.js.map +1 -0
  298. package/dist/components/GrDropdown/index.js +2 -2
  299. package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-VPPrpCoA.js +421 -0
  300. package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-VPPrpCoA.js.map +1 -0
  301. package/dist/components/GrDropdownMenu/index.js +3 -3
  302. package/dist/components/GrEmptyState/chunks/GrEmptyState-W7Irx3vc.js +86 -0
  303. package/dist/components/GrEmptyState/chunks/GrEmptyState-W7Irx3vc.js.map +1 -0
  304. package/dist/components/GrEmptyState/index.js +3 -3
  305. package/dist/components/GrFileUpload/chunks/GrFileUpload-DuDzC43S.js +1080 -0
  306. package/dist/components/GrFileUpload/chunks/GrFileUpload-DuDzC43S.js.map +1 -0
  307. package/dist/components/GrFileUpload/index.js +4 -4
  308. package/dist/components/GrForm/chunks/GrForm-BCHCfIMv.js +326 -0
  309. package/dist/components/GrForm/chunks/GrForm-BCHCfIMv.js.map +1 -0
  310. package/dist/components/GrForm/index.js +3 -2
  311. package/dist/components/GrFormField/chunks/GrFormField-CL5rcgj6.js +190 -0
  312. package/dist/components/GrFormField/chunks/GrFormField-CL5rcgj6.js.map +1 -0
  313. package/dist/components/GrFormField/index.js +3 -3
  314. package/dist/components/GrFormFile/chunks/GrFormFile-BikSD7bg.js +452 -0
  315. package/dist/components/GrFormFile/chunks/GrFormFile-BikSD7bg.js.map +1 -0
  316. package/dist/components/GrFormFile/index.js +3 -3
  317. package/dist/components/GrFormFile/styles.css +1 -0
  318. package/dist/components/GrFormSection/chunks/GrFormSection-BEh5n4jF.js +63 -0
  319. package/dist/components/GrFormSection/chunks/GrFormSection-BEh5n4jF.js.map +1 -0
  320. package/dist/components/GrFormSection/index.js +3 -3
  321. package/dist/components/GrIcon/chunks/GrIcon-BvA2ZGXP.js +57 -0
  322. package/dist/components/GrIcon/chunks/GrIcon-BvA2ZGXP.js.map +1 -0
  323. package/dist/components/GrIcon/index.js +3 -3
  324. package/dist/components/GrIcon/styles.css +1 -0
  325. package/dist/components/GrImageViewer/chunks/GrImageViewer-DE7MBbF8.js +1127 -0
  326. package/dist/components/GrImageViewer/chunks/GrImageViewer-DE7MBbF8.js.map +1 -0
  327. package/dist/components/GrImageViewer/index.js +3 -3
  328. package/dist/components/GrImageViewer/themes/dark.css +17 -0
  329. package/dist/components/GrImageViewer/themes/light.css +16 -0
  330. package/dist/components/GrInput/chunks/GrInput-2wd7Crs0.js +348 -0
  331. package/dist/components/GrInput/chunks/GrInput-2wd7Crs0.js.map +1 -0
  332. package/dist/components/GrInput/index.js +2 -2
  333. package/dist/components/GrInputTag/chunks/GrInputTag-CyV2eY7Z.js +512 -0
  334. package/dist/components/GrInputTag/chunks/GrInputTag-CyV2eY7Z.js.map +1 -0
  335. package/dist/components/GrInputTag/index.js +2 -2
  336. package/dist/components/GrKbd/chunks/GrKbd-DU2lBkRV.js +358 -0
  337. package/dist/components/GrKbd/chunks/GrKbd-DU2lBkRV.js.map +1 -0
  338. package/dist/components/GrKbd/index.js +3 -3
  339. package/dist/components/GrLink/chunks/GrLink-D-cgUMXW.js +163 -0
  340. package/dist/components/GrLink/chunks/GrLink-D-cgUMXW.js.map +1 -0
  341. package/dist/components/GrLink/index.js +2 -2
  342. package/dist/components/GrList/chunks/GrList-4YU1NZtM.js +277 -0
  343. package/dist/components/GrList/chunks/GrList-4YU1NZtM.js.map +1 -0
  344. package/dist/components/GrList/index.js +3 -3
  345. package/dist/components/GrList/styles.css +1 -0
  346. package/dist/components/GrLoading/chunks/GrLoading-CH95CFzS.js +101 -0
  347. package/dist/components/GrLoading/chunks/GrLoading-CH95CFzS.js.map +1 -0
  348. package/dist/components/GrLoading/index.js +2 -2
  349. package/dist/components/GrModal/chunks/GrModal-BbhcsDQ8.js +313 -0
  350. package/dist/components/GrModal/chunks/GrModal-BbhcsDQ8.js.map +1 -0
  351. package/dist/components/GrModal/index.js +3 -4
  352. package/dist/components/GrNavbar/chunks/GrNavbar-CF0KbM_6.js +104 -0
  353. package/dist/components/GrNavbar/chunks/GrNavbar-CF0KbM_6.js.map +1 -0
  354. package/dist/components/GrNavbar/index.js +3 -3
  355. package/dist/components/GrNumberInput/chunks/GrNumberInput-CZOyPz4J.js +658 -0
  356. package/dist/components/GrNumberInput/chunks/GrNumberInput-CZOyPz4J.js.map +1 -0
  357. package/dist/components/GrNumberInput/index.js +2 -2
  358. package/dist/components/GrPagination/chunks/GrPagination-waKhxBP7.js +283 -0
  359. package/dist/components/GrPagination/chunks/GrPagination-waKhxBP7.js.map +1 -0
  360. package/dist/components/GrPagination/index.js +3 -3
  361. package/dist/components/GrPopover/chunks/GrPopover-DuqeoFaI.js +216 -0
  362. package/dist/components/GrPopover/chunks/GrPopover-DuqeoFaI.js.map +1 -0
  363. package/dist/components/GrPopover/index.js +3 -0
  364. package/dist/components/GrProgressBar/chunks/GrProgressBar-xwbNM9QB.js +90 -0
  365. package/dist/components/GrProgressBar/chunks/GrProgressBar-xwbNM9QB.js.map +1 -0
  366. package/dist/components/GrProgressBar/index.js +2 -2
  367. package/dist/components/GrProgressBar/styles.css +1 -0
  368. package/dist/components/GrProgressBar/themes/dark.css +13 -0
  369. package/dist/components/GrProgressBar/themes/light.css +12 -0
  370. package/dist/components/GrProgressCircle/chunks/GrProgressCircle-B8olXRo5.js +210 -0
  371. package/dist/components/GrProgressCircle/chunks/GrProgressCircle-B8olXRo5.js.map +1 -0
  372. package/dist/components/GrProgressCircle/index.js +3 -0
  373. package/dist/components/GrProgressCircle/styles.css +1 -0
  374. package/dist/components/GrPromptDialog/chunks/GrPromptDialog-JVVqBsPY.js +348 -0
  375. package/dist/components/GrPromptDialog/chunks/GrPromptDialog-JVVqBsPY.js.map +1 -0
  376. package/dist/components/GrPromptDialog/index.js +2 -2
  377. package/dist/components/GrRadio/chunks/GrRadio-DWiRaMzt.js +253 -0
  378. package/dist/components/GrRadio/chunks/GrRadio-DWiRaMzt.js.map +1 -0
  379. package/dist/components/GrRadio/index.js +2 -2
  380. package/dist/components/GrRadioGroup/chunks/GrRadioGroup-DIuBw0wk.js +196 -0
  381. package/dist/components/GrRadioGroup/chunks/GrRadioGroup-DIuBw0wk.js.map +1 -0
  382. package/dist/components/GrRadioGroup/index.js +2 -2
  383. package/dist/components/GrRating/chunks/GrRating-LarIiwJL.js +315 -0
  384. package/dist/components/GrRating/chunks/GrRating-LarIiwJL.js.map +1 -0
  385. package/dist/components/GrRating/index.js +2 -2
  386. package/dist/components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-C7W9mgYN.js +777 -0
  387. package/dist/components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-C7W9mgYN.js.map +1 -0
  388. package/dist/components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-DhX4jjay.js +224 -0
  389. package/dist/components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-DhX4jjay.js.map +1 -0
  390. package/dist/components/GrResponseErrorBanner/index.js +2 -2
  391. package/dist/components/GrSegmented/chunks/GrSegmented-CQw3ijqa.js +388 -0
  392. package/dist/components/GrSegmented/chunks/GrSegmented-CQw3ijqa.js.map +1 -0
  393. package/dist/components/GrSegmented/index.js +3 -3
  394. package/dist/components/GrSelect/chunks/GrSelect-DAdu044K.js +1373 -0
  395. package/dist/components/GrSelect/chunks/GrSelect-DAdu044K.js.map +1 -0
  396. package/dist/components/GrSelect/index.js +2 -2
  397. package/dist/components/GrSelect/styles.css +1 -0
  398. package/dist/components/GrSidebar/chunks/GrSidebar-DRGnnViw.js +257 -0
  399. package/dist/components/GrSidebar/chunks/GrSidebar-DRGnnViw.js.map +1 -0
  400. package/dist/components/GrSidebar/index.js +3 -3
  401. package/dist/components/GrSkeleton/chunks/GrSkeleton-DEvNE3bC.js +84 -0
  402. package/dist/components/GrSkeleton/chunks/GrSkeleton-DEvNE3bC.js.map +1 -0
  403. package/dist/components/GrSkeleton/index.js +2 -2
  404. package/dist/components/GrSlider/chunks/GrSlider-CyhVsNKn.js +379 -0
  405. package/dist/components/GrSlider/chunks/GrSlider-CyhVsNKn.js.map +1 -0
  406. package/dist/components/GrSlider/index.js +2 -2
  407. package/dist/components/GrSortableList/chunks/GrSortableList-BefVfWKh.js +276 -0
  408. package/dist/components/GrSortableList/chunks/GrSortableList-BefVfWKh.js.map +1 -0
  409. package/dist/components/GrSortableList/index.js +3 -0
  410. package/dist/components/GrSplitter/chunks/GrSplitter-BzxVQwbY.js +268 -0
  411. package/dist/components/GrSplitter/chunks/GrSplitter-BzxVQwbY.js.map +1 -0
  412. package/dist/components/GrSplitter/index.js +3 -0
  413. package/dist/components/GrSplitter/styles.css +1 -0
  414. package/dist/components/GrStatistic/chunks/GrStatistic-J4qLs3TH.js +319 -0
  415. package/dist/components/GrStatistic/chunks/GrStatistic-J4qLs3TH.js.map +1 -0
  416. package/dist/components/GrStatistic/index.js +2 -2
  417. package/dist/components/GrSwitch/chunks/GrSwitch-DpyvVrZG.js +183 -0
  418. package/dist/components/GrSwitch/chunks/GrSwitch-DpyvVrZG.js.map +1 -0
  419. package/dist/components/GrSwitch/index.js +2 -2
  420. package/dist/components/GrTabPanels/chunks/GrTabPanels-BVe1CZdJ.js +81 -0
  421. package/dist/components/GrTabPanels/chunks/GrTabPanels-BVe1CZdJ.js.map +1 -0
  422. package/dist/components/GrTabPanels/index.js +1 -1
  423. package/dist/components/GrTable/chunks/GrTable-BfqgwETQ.js +169 -0
  424. package/dist/components/GrTable/chunks/GrTable-BfqgwETQ.js.map +1 -0
  425. package/dist/components/GrTable/index.js +3 -3
  426. package/dist/components/GrTabs/chunks/GrTabs-TeXaU5Uh.js +261 -0
  427. package/dist/components/GrTabs/chunks/GrTabs-TeXaU5Uh.js.map +1 -0
  428. package/dist/components/GrTabs/index.js +3 -3
  429. package/dist/components/GrTextarea/chunks/GrTextarea-DSvd1nSy.js +241 -0
  430. package/dist/components/GrTextarea/chunks/GrTextarea-DSvd1nSy.js.map +1 -0
  431. package/dist/components/GrTextarea/index.js +2 -2
  432. package/dist/components/GrTimeline/chunks/GrTimeline-B-h2Yanw.js +285 -0
  433. package/dist/components/GrTimeline/chunks/GrTimeline-B-h2Yanw.js.map +1 -0
  434. package/dist/components/GrTimeline/index.js +3 -0
  435. package/dist/components/GrTimeline/styles.css +1 -0
  436. package/dist/components/GrToaster/chunks/GrToaster-Ct-39hga.js +373 -0
  437. package/dist/components/GrToaster/chunks/GrToaster-Ct-39hga.js.map +1 -0
  438. package/dist/components/GrToaster/index.js +2 -2
  439. package/dist/components/GrToaster/styles.css +1 -0
  440. package/dist/components/GrTooltip/chunks/GrTooltip-xAcqs0bP.js +185 -0
  441. package/dist/components/GrTooltip/chunks/GrTooltip-xAcqs0bP.js.map +1 -0
  442. package/dist/components/GrTooltip/index.js +3 -3
  443. package/dist/components/GrTree/chunks/GrTree-CaYK8dGZ.js +1371 -0
  444. package/dist/components/GrTree/chunks/GrTree-CaYK8dGZ.js.map +1 -0
  445. package/dist/components/GrTree/index.js +2 -2
  446. package/dist/components/GrTree/styles.css +1 -0
  447. package/dist/components/GrTreeSelect/chunks/GrTreeSelect-DZp7CqqW.js +623 -0
  448. package/dist/components/GrTreeSelect/chunks/GrTreeSelect-DZp7CqqW.js.map +1 -0
  449. package/dist/components/GrTreeSelect/index.js +2 -2
  450. package/dist/composables/useAnnouncer.js +114 -0
  451. package/dist/composables/useAnnouncer.js.map +1 -0
  452. package/dist/composables/useComboboxNavigation.js +71 -0
  453. package/dist/composables/useComboboxNavigation.js.map +1 -0
  454. package/dist/composables/useDismissible.js +31 -0
  455. package/dist/composables/useDismissible.js.map +1 -0
  456. package/dist/composables/useDragGesture.js +55 -0
  457. package/dist/composables/useDragGesture.js.map +1 -0
  458. package/dist/composables/useDragSort.js +2 -0
  459. package/dist/composables/useFloating.js +133 -0
  460. package/dist/composables/useFloating.js.map +1 -0
  461. package/dist/composables/useFocusTrap.js +124 -0
  462. package/dist/composables/useFocusTrap.js.map +1 -0
  463. package/dist/composables/useGrComponentConfig.js +2 -0
  464. package/dist/composables/useGrFormControl.js +24 -0
  465. package/dist/composables/useGrFormControl.js.map +1 -0
  466. package/dist/composables/useGranularityTranslations.js +2 -0
  467. package/dist/composables/useOverlayLayer.js +65 -0
  468. package/dist/composables/useOverlayLayer.js.map +1 -0
  469. package/dist/composables/usePortalTarget.js +2 -0
  470. package/dist/composables/useRovingFocus.js +150 -0
  471. package/dist/composables/useRovingFocus.js.map +1 -0
  472. package/dist/composables/useTheme.js +106 -36
  473. package/dist/composables/useTheme.js.map +1 -1
  474. package/dist/composables/useToast.js +123 -7
  475. package/dist/composables/useToast.js.map +1 -1
  476. package/dist/composables/useVirtualList.js +244 -0
  477. package/dist/composables/useVirtualList.js.map +1 -0
  478. package/dist/directives/dropzone.js +1 -1
  479. package/dist/directives/hotkey.js +18 -18
  480. package/dist/directives/hotkey.js.map +1 -1
  481. package/dist/directives/loading.js +43 -7
  482. package/dist/directives/loading.js.map +1 -1
  483. package/dist/fileValidation/index.js +2 -2
  484. package/dist/granular-provider-node.js +1 -31
  485. package/dist/granular-provider.js +1 -4
  486. package/dist/i18n/all.js +1 -1
  487. package/dist/i18n/index.js +1 -1
  488. package/dist/index.js +157 -140
  489. package/dist/styles/base.css +32 -0
  490. package/dist/styles/preflight.css +33 -0
  491. package/dist/styles/themes/dark.css +81 -26
  492. package/dist/styles/themes/light.css +86 -15
  493. package/dist/styles/tokens.css +63 -4
  494. package/dist/tokens.js +3216 -0
  495. package/dist/tokens.js.map +1 -0
  496. package/dist/types/src/components/GrAlert/GrAlert.vue.d.ts +42 -10
  497. package/dist/types/src/components/GrAlert/config.d.ts +1 -1
  498. package/dist/types/src/components/GrAlert/defaults.d.ts +10 -4
  499. package/dist/types/src/components/GrAlert/grAlertStyles.d.ts +0 -7
  500. package/dist/types/src/components/GrAlert/index.d.ts +3 -2
  501. package/dist/types/src/components/GrAutocomplete/GrAutocomplete.vue.d.ts +112 -99
  502. package/dist/types/src/components/GrAutocomplete/config.d.ts +1 -1
  503. package/dist/types/src/components/GrAutocomplete/defaults.d.ts +1 -1
  504. package/dist/types/src/components/GrAutocomplete/grAutocompleteStyles.d.ts +43 -7
  505. package/dist/types/src/components/GrAutocomplete/index.d.ts +4 -0
  506. package/dist/types/src/components/GrAvatar/GrAvatar.vue.d.ts +40 -17
  507. package/dist/types/src/components/GrAvatar/GrAvatarGroup.vue.d.ts +70 -0
  508. package/dist/types/src/components/GrAvatar/avatarContext.d.ts +12 -0
  509. package/dist/types/src/components/GrAvatar/config.d.ts +1 -1
  510. package/dist/types/src/components/GrAvatar/defaults.d.ts +16 -0
  511. package/dist/types/src/components/GrAvatar/grAvatarStyles.d.ts +38 -0
  512. package/dist/types/src/components/GrAvatar/index.d.ts +5 -0
  513. package/dist/types/src/components/GrAvatar/safelist.d.ts +4 -0
  514. package/dist/types/src/components/GrBadge/GrBadge.vue.d.ts +4 -4
  515. package/dist/types/src/components/GrBadge/config.d.ts +1 -1
  516. package/dist/types/src/components/GrBadge/defaults.d.ts +1 -1
  517. package/dist/types/src/components/GrBadge/grBadgeStyles.d.ts +13 -1
  518. package/dist/types/src/components/GrBadge/index.d.ts +1 -0
  519. package/dist/types/src/components/GrBadgeWrap/GrBadgeWrap.vue.d.ts +42 -5
  520. package/dist/types/src/components/GrBadgeWrap/config.d.ts +1 -1
  521. package/dist/types/src/components/GrBadgeWrap/grBadgeWrapStyles.d.ts +46 -0
  522. package/dist/types/src/components/GrBadgeWrap/index.d.ts +4 -0
  523. package/dist/types/src/components/GrBadgeWrap/safelist.d.ts +1 -0
  524. package/dist/types/src/components/GrBottomNav/GrBottomNav.vue.d.ts +91 -4
  525. package/dist/types/src/components/GrBottomNav/config.d.ts +1 -1
  526. package/dist/types/src/components/GrBottomNav/defaults.d.ts +16 -0
  527. package/dist/types/src/components/GrBottomNav/grBottomNavStyles.d.ts +56 -0
  528. package/dist/types/src/components/GrBottomNav/index.d.ts +6 -1
  529. package/dist/types/src/components/GrBottomNav/safelist.d.ts +1 -0
  530. package/dist/types/src/components/GrBreadcrumbs/GrBreadcrumbs.vue.d.ts +117 -0
  531. package/dist/types/src/components/GrBreadcrumbs/config.d.ts +1 -0
  532. package/dist/types/src/components/GrBreadcrumbs/defaults.d.ts +15 -0
  533. package/dist/types/src/components/GrBreadcrumbs/grBreadcrumbsStyles.d.ts +86 -0
  534. package/dist/types/src/components/GrBreadcrumbs/index.d.ts +8 -0
  535. package/dist/types/src/components/GrBreadcrumbs/safelist.d.ts +1 -0
  536. package/dist/types/src/components/GrButton/GrButton.vue.d.ts +31 -7
  537. package/dist/types/src/components/GrButton/config.d.ts +1 -1
  538. package/dist/types/src/components/GrButton/defaults.d.ts +1 -1
  539. package/dist/types/src/components/GrButton/grButtonStyles.d.ts +27 -3
  540. package/dist/types/src/components/GrButton/index.d.ts +5 -1
  541. package/dist/types/src/components/GrButton/safelist.d.ts +1 -0
  542. package/dist/types/src/components/GrButtonGroup/GrButtonGroup.vue.d.ts +32 -4
  543. package/dist/types/src/components/GrButtonGroup/config.d.ts +1 -1
  544. package/dist/types/src/components/GrButtonGroup/context.d.ts +20 -0
  545. package/dist/types/src/components/GrButtonGroup/index.d.ts +3 -0
  546. package/dist/types/src/components/GrCard/GrCard.vue.d.ts +80 -3
  547. package/dist/types/src/components/GrCard/config.d.ts +1 -1
  548. package/dist/types/src/components/GrCard/defaults.d.ts +15 -0
  549. package/dist/types/src/components/GrCard/grCardStyles.d.ts +24 -0
  550. package/dist/types/src/components/GrCard/index.d.ts +5 -0
  551. package/dist/types/src/components/GrCard/safelist.d.ts +1 -0
  552. package/dist/types/src/components/GrCheckbox/GrCheckbox.vue.d.ts +56 -10
  553. package/dist/types/src/components/GrCheckbox/config.d.ts +1 -1
  554. package/dist/types/src/components/GrCheckbox/defaults.d.ts +14 -0
  555. package/dist/types/src/components/GrCheckbox/grCheckboxGroupContext.d.ts +19 -0
  556. package/dist/types/src/components/GrCheckbox/grCheckboxStyles.d.ts +44 -0
  557. package/dist/types/src/components/GrCheckbox/index.d.ts +9 -0
  558. package/dist/types/src/components/GrCheckbox/safelist.d.ts +13 -0
  559. package/dist/types/src/components/GrCheckboxGroup/GrCheckboxGroup.vue.d.ts +105 -0
  560. package/dist/types/src/components/GrCheckboxGroup/config.d.ts +1 -0
  561. package/dist/types/src/components/GrCheckboxGroup/defaults.d.ts +14 -0
  562. package/dist/types/src/components/GrCheckboxGroup/index.d.ts +9 -0
  563. package/dist/types/src/components/GrCollapse/GrCollapse.vue.d.ts +55 -7
  564. package/dist/types/src/components/GrCollapse/GrCollapseItem.vue.d.ts +13 -3
  565. package/dist/types/src/components/GrCollapse/config.d.ts +1 -1
  566. package/dist/types/src/components/GrCollapse/defaults.d.ts +19 -0
  567. package/dist/types/src/components/GrCollapse/grCollapseContext.d.ts +20 -0
  568. package/dist/types/src/components/GrCollapse/grCollapseStyles.d.ts +42 -0
  569. package/dist/types/src/components/GrCollapse/index.d.ts +3 -0
  570. package/dist/types/src/components/GrCollapse/safelist.d.ts +15 -0
  571. package/dist/types/src/components/GrColorPicker/GrColorPicker.vue.d.ts +104 -0
  572. package/dist/types/src/components/GrColorPicker/color.d.ts +38 -0
  573. package/dist/types/src/components/GrColorPicker/config.d.ts +1 -0
  574. package/dist/types/src/components/GrColorPicker/defaults.d.ts +15 -0
  575. package/dist/types/src/components/GrColorPicker/grColorPickerStyles.d.ts +39 -0
  576. package/dist/types/src/components/GrColorPicker/index.d.ts +11 -0
  577. package/dist/types/src/components/GrColorPicker/safelist.d.ts +1 -0
  578. package/dist/types/src/components/GrCommandPalette/GrCommandPalette.vue.d.ts +45 -10
  579. package/dist/types/src/components/GrCommandPalette/config.d.ts +1 -1
  580. package/dist/types/src/components/GrCommandPalette/defaults.d.ts +14 -0
  581. package/dist/types/src/components/GrCommandPalette/filtering.d.ts +24 -0
  582. package/dist/types/src/components/GrCommandPalette/grCommandPaletteStyles.d.ts +33 -8
  583. package/dist/types/src/components/GrCommandPalette/index.d.ts +4 -0
  584. package/dist/types/src/components/GrConfigProvider/GrConfigProvider.vue.d.ts +38 -4
  585. package/dist/types/src/components/GrConfigProvider/config.d.ts +1 -1
  586. package/dist/types/src/components/GrConfigProvider/context.d.ts +33 -22
  587. package/dist/types/src/components/GrConfigProvider/index.d.ts +2 -1
  588. package/dist/types/src/components/GrConfigProvider/zIndexScale.d.ts +23 -0
  589. package/dist/types/src/components/GrConfirmDialog/GrConfirmDialog.vue.d.ts +33 -4
  590. package/dist/types/src/components/GrConfirmDialog/config.d.ts +1 -1
  591. package/dist/types/src/components/GrConfirmDialog/defaults.d.ts +14 -0
  592. package/dist/types/src/components/GrConfirmDialog/index.d.ts +2 -1
  593. package/dist/types/src/components/GrDataTable/GrDataTable.vue.d.ts +145 -27
  594. package/dist/types/src/components/GrDataTable/config.d.ts +1 -1
  595. package/dist/types/src/components/GrDataTable/defaults.d.ts +10 -0
  596. package/dist/types/src/components/GrDataTable/grDataTableSort.d.ts +25 -0
  597. package/dist/types/src/components/GrDataTable/grDataTableStyles.d.ts +68 -0
  598. package/dist/types/src/components/GrDataTable/index.d.ts +10 -1
  599. package/dist/types/src/components/GrDataTable/safelist.d.ts +1 -0
  600. package/dist/types/src/components/GrDialog/GrDialog.vue.d.ts +51 -4
  601. package/dist/types/src/components/GrDialog/GrDialogCloseButton.vue.d.ts +3 -0
  602. package/dist/types/src/components/GrDialog/GrDialogHeader.vue.d.ts +3 -0
  603. package/dist/types/src/components/GrDialog/config.d.ts +1 -1
  604. package/dist/types/src/components/GrDialog/defaults.d.ts +14 -0
  605. package/dist/types/src/components/GrDialog/dialogShared.d.ts +2 -1
  606. package/dist/types/src/components/GrDialog/index.d.ts +5 -0
  607. package/dist/types/src/components/GrDialogService/GrDialogServiceHost.vue.d.ts +18 -1
  608. package/dist/types/src/components/GrDialogService/GrDialogServiceItem.vue.d.ts +15 -0
  609. package/dist/types/src/components/GrDialogService/config.d.ts +1 -1
  610. package/dist/types/src/components/GrDialogService/index.d.ts +3 -1
  611. package/dist/types/src/components/GrDialogService/store.d.ts +78 -7
  612. package/dist/types/src/components/GrDialogService/types.d.ts +22 -1
  613. package/dist/types/src/components/GrDialogService/useDialogService.d.ts +31 -1
  614. package/dist/types/src/components/GrDivider/GrDivider.vue.d.ts +44 -9
  615. package/dist/types/src/components/GrDivider/config.d.ts +1 -1
  616. package/dist/types/src/components/GrDivider/defaults.d.ts +15 -0
  617. package/dist/types/src/components/GrDivider/grDividerStyles.d.ts +19 -0
  618. package/dist/types/src/components/GrDivider/index.d.ts +4 -1
  619. package/dist/types/src/components/GrDivider/safelist.d.ts +1 -0
  620. package/dist/types/src/components/GrDrawer/GrDrawer.vue.d.ts +93 -17
  621. package/dist/types/src/components/GrDrawer/config.d.ts +1 -1
  622. package/dist/types/src/components/GrDrawer/defaults.d.ts +19 -0
  623. package/dist/types/src/components/GrDrawer/grDrawerStyles.d.ts +48 -2
  624. package/dist/types/src/components/GrDrawer/index.d.ts +6 -1
  625. package/dist/types/src/components/GrDropdown/GrDropdown.vue.d.ts +66 -13
  626. package/dist/types/src/components/GrDropdown/config.d.ts +1 -1
  627. package/dist/types/src/components/GrDropdown/grDropdownStyles.d.ts +4 -5
  628. package/dist/types/src/components/GrDropdown/index.d.ts +5 -2
  629. package/dist/types/src/components/GrDropdownMenu/GrDropdownMenu.vue.d.ts +79 -16
  630. package/dist/types/src/components/GrDropdownMenu/GrDropdownMenuColumn.vue.d.ts +2 -1
  631. package/dist/types/src/components/GrDropdownMenu/GrDropdownMenuColumns.vue.d.ts +3 -2
  632. package/dist/types/src/components/GrDropdownMenu/GrDropdownMenuGroup.vue.d.ts +2 -2
  633. package/dist/types/src/components/GrDropdownMenu/GrDropdownMenuHeader.vue.d.ts +3 -2
  634. package/dist/types/src/components/GrDropdownMenu/GrDropdownMenuItem.vue.d.ts +51 -5
  635. package/dist/types/src/components/GrDropdownMenu/GrDropdownMenuList.vue.d.ts +5 -0
  636. package/dist/types/src/components/GrDropdownMenu/config.d.ts +1 -1
  637. package/dist/types/src/components/GrDropdownMenu/grDropdownMenuStyles.d.ts +33 -0
  638. package/dist/types/src/components/GrDropdownMenu/index.d.ts +6 -2
  639. package/dist/types/src/components/GrDropdownMenu/menuModel.d.ts +42 -0
  640. package/dist/types/src/components/GrDropdownMenu/safelist.d.ts +7 -0
  641. package/dist/types/src/components/GrEmptyState/GrEmptyState.vue.d.ts +33 -10
  642. package/dist/types/src/components/GrEmptyState/config.d.ts +1 -1
  643. package/dist/types/src/components/GrEmptyState/defaults.d.ts +16 -0
  644. package/dist/types/src/components/GrEmptyState/grEmptyStateStyles.d.ts +32 -0
  645. package/dist/types/src/components/GrEmptyState/index.d.ts +4 -0
  646. package/dist/types/src/components/GrEmptyState/safelist.d.ts +1 -0
  647. package/dist/types/src/components/GrFileUpload/GrFileUpload.vue.d.ts +158 -148
  648. package/dist/types/src/components/GrFileUpload/config.d.ts +1 -1
  649. package/dist/types/src/components/GrFileUpload/defaults.d.ts +10 -0
  650. package/dist/types/src/components/GrFileUpload/fileEntry.d.ts +26 -0
  651. package/dist/types/src/components/GrFileUpload/grFileUploadStyles.d.ts +45 -0
  652. package/dist/types/src/components/GrFileUpload/index.d.ts +10 -1
  653. package/dist/types/src/components/GrFileUpload/maxFileSize.d.ts +2 -0
  654. package/dist/types/src/components/GrFileUpload/safelist.d.ts +1 -0
  655. package/dist/types/src/components/GrFileUpload/useDropZone.d.ts +24 -0
  656. package/dist/types/src/components/GrFileUpload/usePerFileUpload.d.ts +38 -0
  657. package/dist/types/src/components/GrFileUpload/useUploadState.d.ts +30 -0
  658. package/dist/types/src/components/GrForm/GrForm.vue.d.ts +38 -2
  659. package/dist/types/src/components/GrForm/config.d.ts +1 -1
  660. package/dist/types/src/components/GrForm/context.d.ts +22 -3
  661. package/dist/types/src/components/GrForm/fileRule.d.ts +43 -0
  662. package/dist/types/src/components/GrForm/index.d.ts +6 -2
  663. package/dist/types/src/components/GrForm/modelSnapshot.d.ts +17 -0
  664. package/dist/types/src/components/GrForm/validation.d.ts +16 -1
  665. package/dist/types/src/components/GrFormField/GrFormField.vue.d.ts +56 -10
  666. package/dist/types/src/components/GrFormField/config.d.ts +1 -1
  667. package/dist/types/src/components/GrFormField/context.d.ts +19 -0
  668. package/dist/types/src/components/GrFormField/defaults.d.ts +15 -0
  669. package/dist/types/src/components/GrFormField/grFormFieldStyles.d.ts +19 -0
  670. package/dist/types/src/components/GrFormField/index.d.ts +5 -1
  671. package/dist/types/src/components/GrFormField/safelist.d.ts +1 -0
  672. package/dist/types/src/components/GrFormFile/GrFormFile.vue.d.ts +70 -16
  673. package/dist/types/src/components/GrFormFile/config.d.ts +1 -1
  674. package/dist/types/src/components/GrFormFile/defaults.d.ts +10 -0
  675. package/dist/types/src/components/GrFormFile/grFormFileStyles.d.ts +22 -0
  676. package/dist/types/src/components/GrFormFile/index.d.ts +7 -0
  677. package/dist/types/src/components/GrFormFile/safelist.d.ts +1 -0
  678. package/dist/types/src/components/GrFormSection/GrFormSection.vue.d.ts +34 -7
  679. package/dist/types/src/components/GrFormSection/config.d.ts +1 -1
  680. package/dist/types/src/components/GrFormSection/defaults.d.ts +14 -0
  681. package/dist/types/src/components/GrFormSection/grFormSectionStyles.d.ts +12 -0
  682. package/dist/types/src/components/GrFormSection/index.d.ts +4 -0
  683. package/dist/types/src/components/GrFormSection/safelist.d.ts +1 -0
  684. package/dist/types/src/components/GrIcon/GrIcon.vue.d.ts +40 -4
  685. package/dist/types/src/components/GrIcon/config.d.ts +1 -1
  686. package/dist/types/src/components/GrIcon/defaults.d.ts +14 -0
  687. package/dist/types/src/components/GrIcon/grIconStyles.d.ts +25 -0
  688. package/dist/types/src/components/GrIcon/index.d.ts +4 -0
  689. package/dist/types/src/components/GrIcon/safelist.d.ts +1 -0
  690. package/dist/types/src/components/GrImageViewer/GrImageViewer.vue.d.ts +87 -16
  691. package/dist/types/src/components/GrImageViewer/composables/usePointerGestures.d.ts +37 -0
  692. package/dist/types/src/components/GrImageViewer/composables/useViewerKeyboard.d.ts +7 -4
  693. package/dist/types/src/components/GrImageViewer/composables/useWheelGesture.d.ts +3 -2
  694. package/dist/types/src/components/GrImageViewer/composables/useZoomPan.d.ts +18 -5
  695. package/dist/types/src/components/GrImageViewer/config.d.ts +1 -1
  696. package/dist/types/src/components/GrImageViewer/grImageViewerStyles.d.ts +21 -0
  697. package/dist/types/src/components/GrImageViewer/index.d.ts +7 -0
  698. package/dist/types/src/components/GrImageViewer/safelist.d.ts +1 -0
  699. package/dist/types/src/components/GrInput/GrInput.vue.d.ts +66 -21
  700. package/dist/types/src/components/GrInput/config.d.ts +1 -1
  701. package/dist/types/src/components/GrInput/defaults.d.ts +1 -1
  702. package/dist/types/src/components/GrInput/grInputStyles.d.ts +53 -7
  703. package/dist/types/src/components/GrInput/index.d.ts +5 -0
  704. package/dist/types/src/components/GrInputTag/GrInputTag.vue.d.ts +97 -14
  705. package/dist/types/src/components/GrInputTag/config.d.ts +1 -1
  706. package/dist/types/src/components/GrInputTag/defaults.d.ts +17 -0
  707. package/dist/types/src/components/GrInputTag/grInputTagStyles.d.ts +24 -1
  708. package/dist/types/src/components/GrInputTag/index.d.ts +5 -0
  709. package/dist/types/src/components/GrKbd/GrKbd.vue.d.ts +46 -10
  710. package/dist/types/src/components/GrKbd/config.d.ts +1 -1
  711. package/dist/types/src/components/GrKbd/defaults.d.ts +14 -0
  712. package/dist/types/src/components/GrKbd/grKbdStyles.d.ts +32 -0
  713. package/dist/types/src/components/GrKbd/index.d.ts +10 -1
  714. package/dist/types/src/components/GrKbd/safelist.d.ts +1 -0
  715. package/dist/types/src/components/GrLink/GrLink.vue.d.ts +23 -10
  716. package/dist/types/src/components/GrLink/config.d.ts +1 -1
  717. package/dist/types/src/components/GrLink/defaults.d.ts +14 -0
  718. package/dist/types/src/components/GrLink/grLinkStyles.d.ts +11 -13
  719. package/dist/types/src/components/GrLink/index.d.ts +2 -0
  720. package/dist/types/src/components/GrList/GrList.vue.d.ts +57 -32
  721. package/dist/types/src/components/GrList/GrListItem.vue.d.ts +42 -9
  722. package/dist/types/src/components/GrList/config.d.ts +1 -1
  723. package/dist/types/src/components/GrList/grListStyles.d.ts +25 -0
  724. package/dist/types/src/components/GrList/index.d.ts +5 -0
  725. package/dist/types/src/components/GrList/safelist.d.ts +1 -0
  726. package/dist/types/src/components/GrLoading/GrLoading.vue.d.ts +59 -19
  727. package/dist/types/src/components/GrLoading/config.d.ts +1 -1
  728. package/dist/types/src/components/GrLoading/grLoadingStyles.d.ts +10 -2
  729. package/dist/types/src/components/GrLoading/index.d.ts +1 -0
  730. package/dist/types/src/components/GrModal/GrModal.vue.d.ts +58 -12
  731. package/dist/types/src/components/GrModal/config.d.ts +1 -1
  732. package/dist/types/src/components/GrModal/context.d.ts +37 -0
  733. package/dist/types/src/components/GrModal/defaults.d.ts +14 -0
  734. package/dist/types/src/components/GrModal/grModalStyles.d.ts +25 -10
  735. package/dist/types/src/components/GrModal/index.d.ts +6 -3
  736. package/dist/types/src/components/GrNavbar/GrNavbar.vue.d.ts +28 -9
  737. package/dist/types/src/components/GrNavbar/config.d.ts +1 -1
  738. package/dist/types/src/components/GrNavbar/grNavbarStyles.d.ts +23 -0
  739. package/dist/types/src/components/GrNavbar/index.d.ts +2 -0
  740. package/dist/types/src/components/GrNavbar/safelist.d.ts +1 -0
  741. package/dist/types/src/components/GrNumberInput/GrNumberInput.vue.d.ts +64 -17
  742. package/dist/types/src/components/GrNumberInput/config.d.ts +1 -1
  743. package/dist/types/src/components/GrNumberInput/defaults.d.ts +2 -1
  744. package/dist/types/src/components/GrNumberInput/grNumberInputStyles.d.ts +20 -4
  745. package/dist/types/src/components/GrNumberInput/index.d.ts +4 -0
  746. package/dist/types/src/components/GrNumberInput/numberInputMath.d.ts +17 -0
  747. package/dist/types/src/components/GrPagination/GrPagination.vue.d.ts +47 -1
  748. package/dist/types/src/components/GrPagination/config.d.ts +1 -1
  749. package/dist/types/src/components/GrPagination/defaults.d.ts +10 -0
  750. package/dist/types/src/components/GrPagination/grPaginationStyles.d.ts +19 -0
  751. package/dist/types/src/components/GrPagination/index.d.ts +4 -0
  752. package/dist/types/src/components/GrPagination/safelist.d.ts +1 -0
  753. package/dist/types/src/components/GrPopover/GrPopover.vue.d.ts +161 -0
  754. package/dist/types/src/components/GrPopover/config.d.ts +1 -0
  755. package/dist/types/src/components/GrPopover/defaults.d.ts +15 -0
  756. package/dist/types/src/components/GrPopover/grPopoverStyles.d.ts +28 -0
  757. package/dist/types/src/components/GrPopover/index.d.ts +11 -0
  758. package/dist/types/src/components/GrPopover/safelist.d.ts +1 -0
  759. package/dist/types/src/components/GrProgressBar/GrProgressBar.vue.d.ts +37 -5
  760. package/dist/types/src/components/GrProgressBar/config.d.ts +1 -1
  761. package/dist/types/src/components/GrProgressBar/defaults.d.ts +11 -0
  762. package/dist/types/src/components/GrProgressBar/grStyle.d.ts +14 -0
  763. package/dist/types/src/components/GrProgressBar/index.d.ts +2 -1
  764. package/dist/types/src/components/GrProgressBar/safelist.d.ts +4 -0
  765. package/dist/types/src/components/GrProgressCircle/GrProgressCircle.vue.d.ts +103 -0
  766. package/dist/types/src/components/GrProgressCircle/config.d.ts +1 -0
  767. package/dist/types/src/components/GrProgressCircle/defaults.d.ts +18 -0
  768. package/dist/types/src/components/GrProgressCircle/geometry.d.ts +29 -0
  769. package/dist/types/src/components/GrProgressCircle/grProgressCircleStyles.d.ts +34 -0
  770. package/dist/types/src/components/GrProgressCircle/index.d.ts +11 -0
  771. package/dist/types/src/components/GrProgressCircle/safelist.d.ts +1 -0
  772. package/dist/types/src/components/GrPromptDialog/GrPromptDialog.vue.d.ts +78 -10
  773. package/dist/types/src/components/GrPromptDialog/config.d.ts +1 -1
  774. package/dist/types/src/components/GrPromptDialog/defaults.d.ts +14 -0
  775. package/dist/types/src/components/GrPromptDialog/index.d.ts +1 -0
  776. package/dist/types/src/components/GrRadio/GrRadio.vue.d.ts +28 -9
  777. package/dist/types/src/components/GrRadio/config.d.ts +1 -1
  778. package/dist/types/src/components/GrRadio/defaults.d.ts +1 -1
  779. package/dist/types/src/components/GrRadio/grRadioGroupContext.d.ts +45 -2
  780. package/dist/types/src/components/GrRadio/grRadioStyles.d.ts +49 -6
  781. package/dist/types/src/components/GrRadio/index.d.ts +1 -0
  782. package/dist/types/src/components/GrRadioGroup/GrRadioGroup.vue.d.ts +54 -10
  783. package/dist/types/src/components/GrRadioGroup/config.d.ts +1 -1
  784. package/dist/types/src/components/GrRadioGroup/defaults.d.ts +1 -1
  785. package/dist/types/src/components/GrRadioGroup/index.d.ts +4 -0
  786. package/dist/types/src/components/GrRating/GrRating.vue.d.ts +66 -17
  787. package/dist/types/src/components/GrRating/config.d.ts +1 -1
  788. package/dist/types/src/components/GrRating/defaults.d.ts +1 -1
  789. package/dist/types/src/components/GrRating/grRatingStyles.d.ts +4 -1
  790. package/dist/types/src/components/GrRating/index.d.ts +4 -0
  791. package/dist/types/src/components/GrResponseErrorBanner/GrFormErrorBanner.vue.d.ts +8 -4
  792. package/dist/types/src/components/GrResponseErrorBanner/GrResponseErrorBanner.vue.d.ts +8 -4
  793. package/dist/types/src/components/GrResponseErrorBanner/GrUploadErrorBanner.vue.d.ts +11 -4
  794. package/dist/types/src/components/GrResponseErrorBanner/config.d.ts +1 -1
  795. package/dist/types/src/components/GrResponseErrorBanner/index.d.ts +6 -0
  796. package/dist/types/src/components/GrResponseErrorBanner/parsers/httpStatusParser.d.ts +3 -1
  797. package/dist/types/src/components/GrResponseErrorBanner/parsers/plainMessageParser.d.ts +4 -1
  798. package/dist/types/src/components/GrResponseErrorBanner/responseError.types.d.ts +12 -2
  799. package/dist/types/src/components/GrSegmented/GrSegmented.vue.d.ts +48 -9
  800. package/dist/types/src/components/GrSegmented/config.d.ts +1 -1
  801. package/dist/types/src/components/GrSegmented/defaults.d.ts +1 -1
  802. package/dist/types/src/components/GrSegmented/grSegmentedStyles.d.ts +31 -5
  803. package/dist/types/src/components/GrSegmented/index.d.ts +5 -1
  804. package/dist/types/src/components/GrSegmented/safelist.d.ts +3 -1
  805. package/dist/types/src/components/GrSelect/GrSelect.vue.d.ts +138 -114
  806. package/dist/types/src/components/GrSelect/composables/useSelectNavigation.d.ts +52 -0
  807. package/dist/types/src/components/GrSelect/composables/useSelectPanelItems.d.ts +67 -0
  808. package/dist/types/src/components/GrSelect/composables/useSelectValues.d.ts +37 -0
  809. package/dist/types/src/components/GrSelect/composables/useSelectVirtualization.d.ts +27 -0
  810. package/dist/types/src/components/GrSelect/config.d.ts +1 -1
  811. package/dist/types/src/components/GrSelect/defaults.d.ts +1 -1
  812. package/dist/types/src/components/GrSelect/grSelectStyles.d.ts +64 -9
  813. package/dist/types/src/components/GrSelect/index.d.ts +5 -1
  814. package/dist/types/src/components/GrSelect/selectValue.d.ts +20 -0
  815. package/dist/types/src/components/GrSidebar/GrSidebar.vue.d.ts +30 -5
  816. package/dist/types/src/components/GrSidebar/GrSidebarGroup.vue.d.ts +43 -0
  817. package/dist/types/src/components/GrSidebar/GrSidebarItem.vue.d.ts +4 -4
  818. package/dist/types/src/components/GrSidebar/config.d.ts +1 -1
  819. package/dist/types/src/components/GrSidebar/grSidebarStyles.d.ts +48 -0
  820. package/dist/types/src/components/GrSidebar/index.d.ts +6 -0
  821. package/dist/types/src/components/GrSidebar/safelist.d.ts +1 -0
  822. package/dist/types/src/components/GrSkeleton/GrSkeleton.vue.d.ts +22 -6
  823. package/dist/types/src/components/GrSkeleton/config.d.ts +1 -1
  824. package/dist/types/src/components/GrSkeleton/grSkeletonStyles.d.ts +9 -0
  825. package/dist/types/src/components/GrSkeleton/index.d.ts +1 -0
  826. package/dist/types/src/components/GrSlider/GrSlider.vue.d.ts +54 -4
  827. package/dist/types/src/components/GrSlider/config.d.ts +1 -1
  828. package/dist/types/src/components/GrSlider/defaults.d.ts +1 -1
  829. package/dist/types/src/components/GrSlider/grSliderStyles.d.ts +47 -8
  830. package/dist/types/src/components/GrSlider/index.d.ts +4 -0
  831. package/dist/types/src/components/GrSortableList/GrSortableList.vue.d.ts +68 -0
  832. package/dist/types/src/components/GrSortableList/config.d.ts +1 -0
  833. package/dist/types/src/components/GrSortableList/grSortableListStyles.d.ts +38 -0
  834. package/dist/types/src/components/GrSortableList/index.d.ts +9 -0
  835. package/dist/types/src/components/GrSortableList/safelist.d.ts +1 -0
  836. package/dist/types/src/components/GrSplitter/GrSplitter.vue.d.ts +121 -0
  837. package/dist/types/src/components/GrSplitter/config.d.ts +1 -0
  838. package/dist/types/src/components/GrSplitter/defaults.d.ts +16 -0
  839. package/dist/types/src/components/GrSplitter/grSplitterStyles.d.ts +9 -0
  840. package/dist/types/src/components/GrSplitter/index.d.ts +11 -0
  841. package/dist/types/src/components/GrSplitter/safelist.d.ts +1 -0
  842. package/dist/types/src/components/GrSplitter/splitterGeometry.d.ts +39 -0
  843. package/dist/types/src/components/GrStatistic/GrStatistic.vue.d.ts +65 -16
  844. package/dist/types/src/components/GrStatistic/config.d.ts +1 -1
  845. package/dist/types/src/components/GrStatistic/countUp.d.ts +17 -0
  846. package/dist/types/src/components/GrStatistic/defaults.d.ts +14 -0
  847. package/dist/types/src/components/GrStatistic/formatStatisticValue.d.ts +6 -2
  848. package/dist/types/src/components/GrStatistic/grStatisticStyles.d.ts +14 -1
  849. package/dist/types/src/components/GrStatistic/index.d.ts +2 -1
  850. package/dist/types/src/components/GrSwitch/GrSwitch.vue.d.ts +68 -6
  851. package/dist/types/src/components/GrSwitch/config.d.ts +1 -1
  852. package/dist/types/src/components/GrSwitch/defaults.d.ts +1 -1
  853. package/dist/types/src/components/GrSwitch/grSwitchStyles.d.ts +45 -4
  854. package/dist/types/src/components/GrSwitch/index.d.ts +5 -1
  855. package/dist/types/src/components/GrSwitch/safelist.d.ts +4 -1
  856. package/dist/types/src/components/GrTabPanels/GrTabPanel.vue.d.ts +12 -9
  857. package/dist/types/src/components/GrTabPanels/GrTabPanels.vue.d.ts +4 -14
  858. package/dist/types/src/components/GrTabPanels/config.d.ts +1 -1
  859. package/dist/types/src/components/GrTabPanels/context.d.ts +1 -1
  860. package/dist/types/src/components/GrTabPanels/index.d.ts +2 -0
  861. package/dist/types/src/components/GrTable/GrTable.vue.d.ts +98 -15
  862. package/dist/types/src/components/GrTable/config.d.ts +1 -1
  863. package/dist/types/src/components/GrTable/defaults.d.ts +10 -0
  864. package/dist/types/src/components/GrTable/grTableStyles.d.ts +20 -0
  865. package/dist/types/src/components/GrTable/index.d.ts +7 -1
  866. package/dist/types/src/components/GrTable/safelist.d.ts +1 -0
  867. package/dist/types/src/components/GrTabs/GrTabs.vue.d.ts +92 -6
  868. package/dist/types/src/components/GrTabs/config.d.ts +1 -1
  869. package/dist/types/src/components/GrTabs/defaults.d.ts +12 -0
  870. package/dist/types/src/components/GrTabs/grTabsStyles.d.ts +71 -0
  871. package/dist/types/src/components/GrTabs/index.d.ts +5 -0
  872. package/dist/types/src/components/GrTabs/safelist.d.ts +1 -0
  873. package/dist/types/src/components/GrTextarea/GrTextarea.vue.d.ts +89 -24
  874. package/dist/types/src/components/GrTextarea/config.d.ts +1 -1
  875. package/dist/types/src/components/GrTextarea/defaults.d.ts +18 -0
  876. package/dist/types/src/components/GrTextarea/grTextareaStyles.d.ts +33 -1
  877. package/dist/types/src/components/GrTextarea/index.d.ts +6 -1
  878. package/dist/types/src/components/GrTimeline/GrTimeline.vue.d.ts +70 -0
  879. package/dist/types/src/components/GrTimeline/GrTimelineItem.vue.d.ts +84 -0
  880. package/dist/types/src/components/GrTimeline/config.d.ts +1 -0
  881. package/dist/types/src/components/GrTimeline/defaults.d.ts +19 -0
  882. package/dist/types/src/components/GrTimeline/grTimelineContext.d.ts +18 -0
  883. package/dist/types/src/components/GrTimeline/grTimelineStyles.d.ts +37 -0
  884. package/dist/types/src/components/GrTimeline/index.d.ts +12 -0
  885. package/dist/types/src/components/GrTimeline/safelist.d.ts +1 -0
  886. package/dist/types/src/components/GrTimeline/timelineGroups.d.ts +23 -0
  887. package/dist/types/src/components/GrToaster/GrToaster.vue.d.ts +33 -1
  888. package/dist/types/src/components/GrToaster/config.d.ts +1 -1
  889. package/dist/types/src/components/GrToaster/grToasterStyles.d.ts +27 -0
  890. package/dist/types/src/components/GrToaster/index.d.ts +3 -0
  891. package/dist/types/src/components/GrTooltip/GrTooltip.vue.d.ts +57 -6
  892. package/dist/types/src/components/GrTooltip/config.d.ts +1 -1
  893. package/dist/types/src/components/GrTooltip/defaults.d.ts +10 -0
  894. package/dist/types/src/components/GrTooltip/grTooltipStyles.d.ts +8 -0
  895. package/dist/types/src/components/GrTooltip/index.d.ts +5 -1
  896. package/dist/types/src/components/GrTooltip/safelist.d.ts +1 -0
  897. package/dist/types/src/components/GrTree/GrTree.vue.d.ts +20 -7
  898. package/dist/types/src/components/GrTree/config.d.ts +1 -1
  899. package/dist/types/src/components/GrTree/defaults.d.ts +10 -0
  900. package/dist/types/src/components/GrTree/grTreeChecking.d.ts +31 -0
  901. package/dist/types/src/components/GrTree/grTreeDataAdapter.d.ts +2 -0
  902. package/dist/types/src/components/GrTree/grTreeInteractionContext.d.ts +9 -1
  903. package/dist/types/src/components/GrTree/grTreeProps.d.ts +60 -11
  904. package/dist/types/src/components/GrTree/grTreeStore.d.ts +27 -1
  905. package/dist/types/src/components/GrTree/grTreeStyles.d.ts +22 -0
  906. package/dist/types/src/components/GrTree/grTreeTypes.d.ts +15 -0
  907. package/dist/types/src/components/GrTree/index.d.ts +5 -1
  908. package/dist/types/src/components/GrTreeSelect/GrTreeSelect.vue.d.ts +30 -9
  909. package/dist/types/src/components/GrTreeSelect/config.d.ts +1 -1
  910. package/dist/types/src/components/GrTreeSelect/defaults.d.ts +10 -0
  911. package/dist/types/src/components/GrTreeSelect/grTreeSelectStyles.d.ts +29 -1
  912. package/dist/types/src/components/GrTreeSelect/grTreeSelectTypes.d.ts +43 -0
  913. package/dist/types/src/components/GrTreeSelect/index.d.ts +5 -0
  914. package/dist/types/src/components/shared/hotkey.d.ts +38 -0
  915. package/dist/types/src/components/shared/hotkeyTokens.d.ts +37 -0
  916. package/dist/types/src/components/shared/instance.d.ts +15 -0
  917. package/dist/types/src/components/shared/optionFilter.d.ts +61 -0
  918. package/dist/types/src/components/shared/sizes.d.ts +30 -0
  919. package/dist/types/src/components/shared/slotNodes.d.ts +19 -0
  920. package/dist/types/src/composables/internal/dragSortGeometry.d.ts +59 -0
  921. package/dist/types/src/composables/internal/focusables.d.ts +30 -0
  922. package/dist/types/src/composables/internal/inert.d.ts +35 -0
  923. package/dist/types/src/composables/internal/overlayStack.d.ts +71 -0
  924. package/dist/types/src/composables/internal/portalRoot.d.ts +27 -0
  925. package/dist/types/src/composables/internal/useAddonMeasurement.d.ts +1 -1
  926. package/dist/types/src/composables/internal/useControlAddons.d.ts +61 -0
  927. package/dist/types/src/composables/internal/useControlledOpen.d.ts +14 -0
  928. package/dist/types/src/composables/internal/useFilePreviews.d.ts +26 -0
  929. package/dist/types/src/composables/internal/useFocusWithin.d.ts +32 -0
  930. package/dist/types/src/composables/internal/useInertOthers.d.ts +9 -0
  931. package/dist/types/src/composables/internal/useModalOverlay.d.ts +95 -0
  932. package/dist/types/src/composables/internal/useOverlayPresence.d.ts +24 -0
  933. package/dist/types/src/composables/internal/useScrollLock.d.ts +10 -5
  934. package/dist/types/src/composables/internal/useTeleportEnabled.d.ts +35 -0
  935. package/dist/types/src/composables/useAnnouncer.d.ts +44 -0
  936. package/dist/types/src/composables/useComboboxNavigation.d.ts +51 -0
  937. package/dist/types/src/composables/useDismissible.d.ts +32 -0
  938. package/dist/types/src/composables/useDragGesture.d.ts +63 -0
  939. package/dist/types/src/composables/useDragSort.d.ts +80 -0
  940. package/dist/types/src/composables/useFloating.d.ts +57 -0
  941. package/dist/types/src/composables/useFocusTrap.d.ts +50 -0
  942. package/dist/types/src/composables/useGrComponentConfig.d.ts +41 -0
  943. package/dist/types/src/composables/useGrFormControl.d.ts +52 -0
  944. package/dist/types/src/composables/useGranularityTranslations.d.ts +13 -0
  945. package/dist/types/src/composables/useOverlayLayer.d.ts +67 -0
  946. package/dist/types/src/composables/usePortalTarget.d.ts +28 -0
  947. package/dist/types/src/composables/useRovingFocus.d.ts +108 -0
  948. package/dist/types/src/composables/useTheme.d.ts +48 -2
  949. package/dist/types/src/composables/useToast.d.ts +20 -11
  950. package/dist/types/src/composables/useVirtualList.d.ts +119 -0
  951. package/dist/types/src/directives/loading.d.ts +7 -1
  952. package/dist/types/src/fileValidation/i18n.d.ts +24 -0
  953. package/dist/types/src/fileValidation/index.d.ts +4 -2
  954. package/dist/types/src/fileValidation/maxCountValidator.d.ts +9 -0
  955. package/dist/types/src/fileValidation/maxFileSize.d.ts +16 -0
  956. package/dist/types/src/fileValidation/types.d.ts +8 -2
  957. package/dist/types/src/granular-provider/index.d.ts +1 -1
  958. package/dist/types/src/granular-provider/node.d.ts +2 -3
  959. package/dist/types/src/granular-provider/shared.d.ts +14 -18
  960. package/dist/types/src/i18n/adapter.d.ts +24 -0
  961. package/dist/types/src/i18n/messages/en.d.ts +334 -2
  962. package/dist/types/src/i18n/messages/es.d.ts +338 -2
  963. package/dist/types/src/i18n/messages/ru.d.ts +342 -2
  964. package/dist/types/src/index.d.ts +38 -3
  965. package/dist/types/src/internal/granularityFormat.d.ts +19 -0
  966. package/dist/types/src/internal/granularityI18n.d.ts +6 -0
  967. package/dist/types/src/internal/keyboard.d.ts +52 -0
  968. package/dist/types/src/tokens/generated.d.ts +6 -0
  969. package/dist/types/src/tokens/index.d.ts +13 -0
  970. package/dist/types/src/tokens/types.d.ts +54 -0
  971. package/dist/vue/index.js.map +1 -1
  972. package/dist/web-types.json +6503 -2020
  973. package/package.json +118 -17
  974. package/tokens/derived.json +142 -0
  975. package/tokens/foundation.json +558 -0
  976. package/tokens/themes/dark.json +499 -0
  977. package/tokens/themes/light.json +499 -0
  978. package/dist/GrBadge.css +0 -1
  979. package/dist/GrButtonGroup.css +0 -1
  980. package/dist/GrFormFile.css +0 -1
  981. package/dist/GrIcon.css +0 -1
  982. package/dist/GrLoading.css +0 -1
  983. package/dist/GrToaster.css +0 -1
  984. package/dist/GrTree.css +0 -1
  985. package/dist/chunks/config-23WtUiAL.js +0 -53
  986. package/dist/chunks/config-23WtUiAL.js.map +0 -1
  987. package/dist/chunks/config-B0i5r8kH.js +0 -23
  988. package/dist/chunks/config-B0i5r8kH.js.map +0 -1
  989. package/dist/chunks/config-B0qIpo8m.js +0 -5
  990. package/dist/chunks/config-B0qIpo8m.js.map +0 -1
  991. package/dist/chunks/config-B5Rknzkd.js +0 -100
  992. package/dist/chunks/config-B5Rknzkd.js.map +0 -1
  993. package/dist/chunks/config-BDSHekVC.js +0 -84
  994. package/dist/chunks/config-BDSHekVC.js.map +0 -1
  995. package/dist/chunks/config-BEegFP74.js +0 -5
  996. package/dist/chunks/config-BEegFP74.js.map +0 -1
  997. package/dist/chunks/config-BLHqZhy-.js +0 -5
  998. package/dist/chunks/config-BLHqZhy-.js.map +0 -1
  999. package/dist/chunks/config-BMKNHFMD2.js +0 -171
  1000. package/dist/chunks/config-BMKNHFMD2.js.map +0 -1
  1001. package/dist/chunks/config-BUHuGBik2.js +0 -13
  1002. package/dist/chunks/config-BUHuGBik2.js.map +0 -1
  1003. package/dist/chunks/config-BWGGp7uV.js +0 -8
  1004. package/dist/chunks/config-BWGGp7uV.js.map +0 -1
  1005. package/dist/chunks/config-BWiPnygb.js +0 -5
  1006. package/dist/chunks/config-BWiPnygb.js.map +0 -1
  1007. package/dist/chunks/config-BX1JTrkV.js +0 -14
  1008. package/dist/chunks/config-BX1JTrkV.js.map +0 -1
  1009. package/dist/chunks/config-BXtAmU3s.js +0 -8
  1010. package/dist/chunks/config-BXtAmU3s.js.map +0 -1
  1011. package/dist/chunks/config-BZFUM3Ky.js +0 -75
  1012. package/dist/chunks/config-BZFUM3Ky.js.map +0 -1
  1013. package/dist/chunks/config-Bah4oHwL.js +0 -8
  1014. package/dist/chunks/config-Bah4oHwL.js.map +0 -1
  1015. package/dist/chunks/config-BmNT0Fmx.js +0 -45
  1016. package/dist/chunks/config-BmNT0Fmx.js.map +0 -1
  1017. package/dist/chunks/config-BvVq2gbd.js +0 -13
  1018. package/dist/chunks/config-BvVq2gbd.js.map +0 -1
  1019. package/dist/chunks/config-C4hJxXDa.js +0 -58
  1020. package/dist/chunks/config-C4hJxXDa.js.map +0 -1
  1021. package/dist/chunks/config-C86UzUYf.js +0 -13
  1022. package/dist/chunks/config-C86UzUYf.js.map +0 -1
  1023. package/dist/chunks/config-C9AcVDkv.js +0 -5
  1024. package/dist/chunks/config-C9AcVDkv.js.map +0 -1
  1025. package/dist/chunks/config-CB4RVt9M.js +0 -66
  1026. package/dist/chunks/config-CB4RVt9M.js.map +0 -1
  1027. package/dist/chunks/config-CGHLoBlH2.js +0 -5
  1028. package/dist/chunks/config-CGHLoBlH2.js.map +0 -1
  1029. package/dist/chunks/config-COE_vZ-l.js +0 -52
  1030. package/dist/chunks/config-COE_vZ-l.js.map +0 -1
  1031. package/dist/chunks/config-CPdmr7tC.js +0 -39
  1032. package/dist/chunks/config-CPdmr7tC.js.map +0 -1
  1033. package/dist/chunks/config-CThzliFi.js +0 -5
  1034. package/dist/chunks/config-CThzliFi.js.map +0 -1
  1035. package/dist/chunks/config-Cb2PAlSD.js +0 -8
  1036. package/dist/chunks/config-Cb2PAlSD.js.map +0 -1
  1037. package/dist/chunks/config-D7GZO-Dx.js +0 -8
  1038. package/dist/chunks/config-D7GZO-Dx.js.map +0 -1
  1039. package/dist/chunks/config-DICOd-2X.js +0 -5
  1040. package/dist/chunks/config-DICOd-2X.js.map +0 -1
  1041. package/dist/chunks/config-DPDFYzIa.js +0 -40
  1042. package/dist/chunks/config-DPDFYzIa.js.map +0 -1
  1043. package/dist/chunks/config-DRKXJ9PW2.js +0 -22
  1044. package/dist/chunks/config-DRKXJ9PW2.js.map +0 -1
  1045. package/dist/chunks/config-DToHb81g.js +0 -45
  1046. package/dist/chunks/config-DToHb81g.js.map +0 -1
  1047. package/dist/chunks/config-D_myOZbA.js +0 -20
  1048. package/dist/chunks/config-D_myOZbA.js.map +0 -1
  1049. package/dist/chunks/config-Dg_6FTvJ.js +0 -35
  1050. package/dist/chunks/config-Dg_6FTvJ.js.map +0 -1
  1051. package/dist/chunks/config-Dlm49Jp5.js +0 -5
  1052. package/dist/chunks/config-Dlm49Jp5.js.map +0 -1
  1053. package/dist/chunks/config-DpqOnJiz.js.map +0 -1
  1054. package/dist/chunks/config-Dqy0rPPO2.js +0 -17
  1055. package/dist/chunks/config-Dqy0rPPO2.js.map +0 -1
  1056. package/dist/chunks/config-Dxuwwepq.js +0 -5
  1057. package/dist/chunks/config-Dxuwwepq.js.map +0 -1
  1058. package/dist/chunks/config-HZto2PVy.js +0 -5
  1059. package/dist/chunks/config-HZto2PVy.js.map +0 -1
  1060. package/dist/chunks/config-JOtB4mzs.js +0 -8
  1061. package/dist/chunks/config-JOtB4mzs.js.map +0 -1
  1062. package/dist/chunks/config-JpHA4Xx0.js +0 -8
  1063. package/dist/chunks/config-JpHA4Xx0.js.map +0 -1
  1064. package/dist/chunks/config-KXuionN3.js +0 -9
  1065. package/dist/chunks/config-KXuionN3.js.map +0 -1
  1066. package/dist/chunks/config-LGrZIdaZ.js +0 -21
  1067. package/dist/chunks/config-LGrZIdaZ.js.map +0 -1
  1068. package/dist/chunks/config-LqDC_rvp.js +0 -78
  1069. package/dist/chunks/config-LqDC_rvp.js.map +0 -1
  1070. package/dist/chunks/config-PFg39mYo.js +0 -5
  1071. package/dist/chunks/config-PFg39mYo.js.map +0 -1
  1072. package/dist/chunks/config-QYGvEBu5.js +0 -22
  1073. package/dist/chunks/config-QYGvEBu5.js.map +0 -1
  1074. package/dist/chunks/config-QaIc_gRa2.js.map +0 -1
  1075. package/dist/chunks/config-U4m9PSql2.js +0 -8
  1076. package/dist/chunks/config-U4m9PSql2.js.map +0 -1
  1077. package/dist/chunks/config-XmTv4pnI.js +0 -26
  1078. package/dist/chunks/config-XmTv4pnI.js.map +0 -1
  1079. package/dist/chunks/config-ZiXWIRBX.js +0 -8
  1080. package/dist/chunks/config-ZiXWIRBX.js.map +0 -1
  1081. package/dist/chunks/config-gZWR75Bh2.js +0 -44
  1082. package/dist/chunks/config-gZWR75Bh2.js.map +0 -1
  1083. package/dist/chunks/config-ipvU0lzP.js +0 -5
  1084. package/dist/chunks/config-ipvU0lzP.js.map +0 -1
  1085. package/dist/chunks/config-xR4XVmcy2.js +0 -8
  1086. package/dist/chunks/config-xR4XVmcy2.js.map +0 -1
  1087. package/dist/chunks/context-DfWYCBB-.js +0 -129
  1088. package/dist/chunks/context-DfWYCBB-.js.map +0 -1
  1089. package/dist/chunks/en-Cr6EkG8c.js +0 -186
  1090. package/dist/chunks/en-Cr6EkG8c.js.map +0 -1
  1091. package/dist/chunks/es-DuYb1Qju.js +0 -20
  1092. package/dist/chunks/es-DuYb1Qju.js.map +0 -1
  1093. package/dist/chunks/es-i08e9Sdo.js +0 -186
  1094. package/dist/chunks/es-i08e9Sdo.js.map +0 -1
  1095. package/dist/chunks/fileValidation-C3WFaWU2.js +0 -220
  1096. package/dist/chunks/fileValidation-C3WFaWU2.js.map +0 -1
  1097. package/dist/chunks/grBadgeStyles-D3dFjr_N.js +0 -50
  1098. package/dist/chunks/grBadgeStyles-D3dFjr_N.js.map +0 -1
  1099. package/dist/chunks/grButtonStyles-DRBgDmOp.js +0 -191
  1100. package/dist/chunks/grButtonStyles-DRBgDmOp.js.map +0 -1
  1101. package/dist/chunks/grDropdownStyles-HBPkghVr.js +0 -35
  1102. package/dist/chunks/grDropdownStyles-HBPkghVr.js.map +0 -1
  1103. package/dist/chunks/grLoadingStyles-R5sreH__.js +0 -17
  1104. package/dist/chunks/grLoadingStyles-R5sreH__.js.map +0 -1
  1105. package/dist/chunks/grModalEscStack-BXk-9mv7.js +0 -43
  1106. package/dist/chunks/grModalEscStack-BXk-9mv7.js.map +0 -1
  1107. package/dist/chunks/grModalStyles-D8-shx9A.js +0 -47
  1108. package/dist/chunks/grModalStyles-D8-shx9A.js.map +0 -1
  1109. package/dist/chunks/grSelectStyles-CwMUQrBZ.js +0 -97
  1110. package/dist/chunks/grSelectStyles-CwMUQrBZ.js.map +0 -1
  1111. package/dist/chunks/grStyle-CdvxTXPH.js +0 -19
  1112. package/dist/chunks/grStyle-CdvxTXPH.js.map +0 -1
  1113. package/dist/chunks/granularityI18n-SH0I--GW.js +0 -61
  1114. package/dist/chunks/granularityI18n-SH0I--GW.js.map +0 -1
  1115. package/dist/chunks/ru-B5XOOYZt.js +0 -186
  1116. package/dist/chunks/ru-B5XOOYZt.js.map +0 -1
  1117. package/dist/chunks/safelist-BvO8HPnE.js +0 -24
  1118. package/dist/chunks/safelist-BvO8HPnE.js.map +0 -1
  1119. package/dist/chunks/shared-D-v9lit0.js +0 -188
  1120. package/dist/chunks/shared-D-v9lit0.js.map +0 -1
  1121. package/dist/chunks/useAddonMeasurement-DM0akF4C.js +0 -65
  1122. package/dist/chunks/useAddonMeasurement-DM0akF4C.js.map +0 -1
  1123. package/dist/chunks/useEscapeToClose-C2t_S1gh.js +0 -27
  1124. package/dist/chunks/useEscapeToClose-C2t_S1gh.js.map +0 -1
  1125. package/dist/chunks/useFloating-DtM6TyE4.js +0 -1249
  1126. package/dist/chunks/useFloating-DtM6TyE4.js.map +0 -1
  1127. package/dist/chunks/useScrollLock-K7kaP2Ud.js +0 -1757
  1128. package/dist/chunks/useScrollLock-K7kaP2Ud.js.map +0 -1
  1129. package/dist/components/GrAlert/chunks/GrAlert-B9gmpoPC.js +0 -251
  1130. package/dist/components/GrAlert/chunks/GrAlert-B9gmpoPC.js.map +0 -1
  1131. package/dist/components/GrAutocomplete/chunks/GrAutocomplete-BVLoQ5tZ.js +0 -499
  1132. package/dist/components/GrAutocomplete/chunks/GrAutocomplete-BVLoQ5tZ.js.map +0 -1
  1133. package/dist/components/GrAvatar/chunks/GrAvatar-CTOUVBF7.js +0 -41
  1134. package/dist/components/GrAvatar/chunks/GrAvatar-CTOUVBF7.js.map +0 -1
  1135. package/dist/components/GrBadge/chunks/GrBadge-D1jefy4S.js +0 -40
  1136. package/dist/components/GrBadge/chunks/GrBadge-D1jefy4S.js.map +0 -1
  1137. package/dist/components/GrBadgeWrap/chunks/GrBadgeWrap-DWDxHdiQ.js +0 -33
  1138. package/dist/components/GrBadgeWrap/chunks/GrBadgeWrap-DWDxHdiQ.js.map +0 -1
  1139. package/dist/components/GrBottomNav/chunks/GrBottomNav-vSE4LXmk.js +0 -31
  1140. package/dist/components/GrBottomNav/chunks/GrBottomNav-vSE4LXmk.js.map +0 -1
  1141. package/dist/components/GrButton/chunks/GrButton-DCi4CUpo.js +0 -128
  1142. package/dist/components/GrButton/chunks/GrButton-DCi4CUpo.js.map +0 -1
  1143. package/dist/components/GrButtonGroup/chunks/GrButtonGroup-Bs9dEKfA.js +0 -21
  1144. package/dist/components/GrButtonGroup/chunks/GrButtonGroup-Bs9dEKfA.js.map +0 -1
  1145. package/dist/components/GrCard/chunks/GrCard-CxCjyHMb.js +0 -11
  1146. package/dist/components/GrCard/chunks/GrCard-CxCjyHMb.js.map +0 -1
  1147. package/dist/components/GrCheckbox/chunks/GrCheckbox-BbIDRXtl.js +0 -182
  1148. package/dist/components/GrCheckbox/chunks/GrCheckbox-BbIDRXtl.js.map +0 -1
  1149. package/dist/components/GrCollapse/chunks/GrCollapse-DApXztn8.js +0 -205
  1150. package/dist/components/GrCollapse/chunks/GrCollapse-DApXztn8.js.map +0 -1
  1151. package/dist/components/GrCommandPalette/chunks/GrCommandPalette-6OyvNbek.js +0 -410
  1152. package/dist/components/GrCommandPalette/chunks/GrCommandPalette-6OyvNbek.js.map +0 -1
  1153. package/dist/components/GrConfigProvider/chunks/GrConfigProvider-BtyeBGm8.js +0 -57
  1154. package/dist/components/GrConfigProvider/chunks/GrConfigProvider-BtyeBGm8.js.map +0 -1
  1155. package/dist/components/GrConfirmDialog/chunks/GrConfirmDialog-e4120mWw.js +0 -160
  1156. package/dist/components/GrConfirmDialog/chunks/GrConfirmDialog-e4120mWw.js.map +0 -1
  1157. package/dist/components/GrDataTable/chunks/GrDataTable-C1CzxV0p.js +0 -307
  1158. package/dist/components/GrDataTable/chunks/GrDataTable-C1CzxV0p.js.map +0 -1
  1159. package/dist/components/GrDialog/chunks/GrDialog-BPMvDHOz.js +0 -223
  1160. package/dist/components/GrDialog/chunks/GrDialog-BPMvDHOz.js.map +0 -1
  1161. package/dist/components/GrDialogService/chunks/GrDialogService-CYXCTGm3.js +0 -450
  1162. package/dist/components/GrDialogService/chunks/GrDialogService-CYXCTGm3.js.map +0 -1
  1163. package/dist/components/GrDivider/chunks/GrDivider-BdENZ1w0.js +0 -54
  1164. package/dist/components/GrDivider/chunks/GrDivider-BdENZ1w0.js.map +0 -1
  1165. package/dist/components/GrDrawer/chunks/GrDrawer-KevdZ5BB.js +0 -184
  1166. package/dist/components/GrDrawer/chunks/GrDrawer-KevdZ5BB.js.map +0 -1
  1167. package/dist/components/GrDropdown/chunks/GrDropdown-BKoy8hm-.js +0 -181
  1168. package/dist/components/GrDropdown/chunks/GrDropdown-BKoy8hm-.js.map +0 -1
  1169. package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-zCatXzmt.js +0 -309
  1170. package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-zCatXzmt.js.map +0 -1
  1171. package/dist/components/GrEmptyState/chunks/GrEmptyState-CNb0BzjG.js +0 -62
  1172. package/dist/components/GrEmptyState/chunks/GrEmptyState-CNb0BzjG.js.map +0 -1
  1173. package/dist/components/GrFileUpload/chunks/GrFileUpload-CnLgUGDF.js +0 -592
  1174. package/dist/components/GrFileUpload/chunks/GrFileUpload-CnLgUGDF.js.map +0 -1
  1175. package/dist/components/GrForm/chunks/GrForm-CdaFjcyl.js +0 -234
  1176. package/dist/components/GrForm/chunks/GrForm-CdaFjcyl.js.map +0 -1
  1177. package/dist/components/GrFormField/chunks/GrFormField-CXCDBd99.js +0 -100
  1178. package/dist/components/GrFormField/chunks/GrFormField-CXCDBd99.js.map +0 -1
  1179. package/dist/components/GrFormFile/chunks/GrFormFile-CqacSbUl.js +0 -320
  1180. package/dist/components/GrFormFile/chunks/GrFormFile-CqacSbUl.js.map +0 -1
  1181. package/dist/components/GrFormSection/chunks/GrFormSection-C3w9DQJf.js +0 -35
  1182. package/dist/components/GrFormSection/chunks/GrFormSection-C3w9DQJf.js.map +0 -1
  1183. package/dist/components/GrIcon/chunks/GrIcon-D9AWQLk2.js +0 -32
  1184. package/dist/components/GrIcon/chunks/GrIcon-D9AWQLk2.js.map +0 -1
  1185. package/dist/components/GrImageViewer/chunks/GrImageViewer-DDLJkvIU.js +0 -650
  1186. package/dist/components/GrImageViewer/chunks/GrImageViewer-DDLJkvIU.js.map +0 -1
  1187. package/dist/components/GrInput/chunks/GrInput-C1VBL0dg.js +0 -337
  1188. package/dist/components/GrInput/chunks/GrInput-C1VBL0dg.js.map +0 -1
  1189. package/dist/components/GrInputTag/chunks/GrInputTag-BMk9jm42.js +0 -260
  1190. package/dist/components/GrInputTag/chunks/GrInputTag-BMk9jm42.js.map +0 -1
  1191. package/dist/components/GrKbd/chunks/GrKbd-DTspwtoN.js +0 -22
  1192. package/dist/components/GrKbd/chunks/GrKbd-DTspwtoN.js.map +0 -1
  1193. package/dist/components/GrLink/chunks/GrLink-BP0YrnL9.js +0 -100
  1194. package/dist/components/GrLink/chunks/GrLink-BP0YrnL9.js.map +0 -1
  1195. package/dist/components/GrList/chunks/GrList-5RA-tZzE.js +0 -77
  1196. package/dist/components/GrList/chunks/GrList-5RA-tZzE.js.map +0 -1
  1197. package/dist/components/GrLoading/chunks/GrLoading-fRDtVfi7.js +0 -69
  1198. package/dist/components/GrLoading/chunks/GrLoading-fRDtVfi7.js.map +0 -1
  1199. package/dist/components/GrModal/chunks/GrModal-BTu1-5eY.js +0 -233
  1200. package/dist/components/GrModal/chunks/GrModal-BTu1-5eY.js.map +0 -1
  1201. package/dist/components/GrNavbar/chunks/GrNavbar-keKT_mIM.js +0 -75
  1202. package/dist/components/GrNavbar/chunks/GrNavbar-keKT_mIM.js.map +0 -1
  1203. package/dist/components/GrNumberInput/chunks/GrNumberInput-l9ZOHG9D.js +0 -471
  1204. package/dist/components/GrNumberInput/chunks/GrNumberInput-l9ZOHG9D.js.map +0 -1
  1205. package/dist/components/GrPagination/chunks/GrPagination-C5Y69CuK.js +0 -208
  1206. package/dist/components/GrPagination/chunks/GrPagination-C5Y69CuK.js.map +0 -1
  1207. package/dist/components/GrProgressBar/chunks/GrProgressBar-Dqg4Fj9S.js +0 -39
  1208. package/dist/components/GrProgressBar/chunks/GrProgressBar-Dqg4Fj9S.js.map +0 -1
  1209. package/dist/components/GrPromptDialog/chunks/GrPromptDialog-DNUjRVB9.js +0 -224
  1210. package/dist/components/GrPromptDialog/chunks/GrPromptDialog-DNUjRVB9.js.map +0 -1
  1211. package/dist/components/GrRadio/chunks/GrRadio-DlhxPGqf.js +0 -182
  1212. package/dist/components/GrRadio/chunks/GrRadio-DlhxPGqf.js.map +0 -1
  1213. package/dist/components/GrRadioGroup/chunks/GrRadioGroup-BXt9iw4q.js +0 -82
  1214. package/dist/components/GrRadioGroup/chunks/GrRadioGroup-BXt9iw4q.js.map +0 -1
  1215. package/dist/components/GrRating/chunks/GrRating-Co-3Rk4h.js +0 -241
  1216. package/dist/components/GrRating/chunks/GrRating-Co-3Rk4h.js.map +0 -1
  1217. package/dist/components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-2CvM7Z08.js +0 -224
  1218. package/dist/components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-2CvM7Z08.js.map +0 -1
  1219. package/dist/components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-C8NGx8pE.js +0 -782
  1220. package/dist/components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-C8NGx8pE.js.map +0 -1
  1221. package/dist/components/GrSegmented/chunks/GrSegmented-CTd3n4PA.js +0 -326
  1222. package/dist/components/GrSegmented/chunks/GrSegmented-CTd3n4PA.js.map +0 -1
  1223. package/dist/components/GrSelect/chunks/GrSelect-Dn3FgJ3Z.js +0 -730
  1224. package/dist/components/GrSelect/chunks/GrSelect-Dn3FgJ3Z.js.map +0 -1
  1225. package/dist/components/GrSidebar/chunks/GrSidebar-cvnzBfj3.js +0 -238
  1226. package/dist/components/GrSidebar/chunks/GrSidebar-cvnzBfj3.js.map +0 -1
  1227. package/dist/components/GrSkeleton/chunks/GrSkeleton-BucA5F4J.js +0 -33
  1228. package/dist/components/GrSkeleton/chunks/GrSkeleton-BucA5F4J.js.map +0 -1
  1229. package/dist/components/GrSlider/chunks/GrSlider-CzzJ3bD-.js +0 -286
  1230. package/dist/components/GrSlider/chunks/GrSlider-CzzJ3bD-.js.map +0 -1
  1231. package/dist/components/GrStatistic/chunks/GrStatistic-gHiAwrX5.js +0 -128
  1232. package/dist/components/GrStatistic/chunks/GrStatistic-gHiAwrX5.js.map +0 -1
  1233. package/dist/components/GrSwitch/chunks/GrSwitch-CJdRvS0s.js +0 -88
  1234. package/dist/components/GrSwitch/chunks/GrSwitch-CJdRvS0s.js.map +0 -1
  1235. package/dist/components/GrTabPanels/chunks/GrTabPanels-DeEMgb_y.js +0 -68
  1236. package/dist/components/GrTabPanels/chunks/GrTabPanels-DeEMgb_y.js.map +0 -1
  1237. package/dist/components/GrTable/chunks/GrTable-sNvsA8wa.js +0 -70
  1238. package/dist/components/GrTable/chunks/GrTable-sNvsA8wa.js.map +0 -1
  1239. package/dist/components/GrTabs/chunks/GrTabs-BqTak0SR.js +0 -123
  1240. package/dist/components/GrTabs/chunks/GrTabs-BqTak0SR.js.map +0 -1
  1241. package/dist/components/GrTextarea/chunks/GrTextarea-DIYBAPpP.js +0 -81
  1242. package/dist/components/GrTextarea/chunks/GrTextarea-DIYBAPpP.js.map +0 -1
  1243. package/dist/components/GrToaster/chunks/GrToaster-BVHjIHcM.js +0 -230
  1244. package/dist/components/GrToaster/chunks/GrToaster-BVHjIHcM.js.map +0 -1
  1245. package/dist/components/GrTooltip/chunks/GrTooltip-BMKH2lIx.js +0 -109
  1246. package/dist/components/GrTooltip/chunks/GrTooltip-BMKH2lIx.js.map +0 -1
  1247. package/dist/components/GrTree/chunks/GrTree-_12ChXRQ.js +0 -838
  1248. package/dist/components/GrTree/chunks/GrTree-_12ChXRQ.js.map +0 -1
  1249. package/dist/components/GrTreeSelect/chunks/GrTreeSelect-CdaLG7Xq.js +0 -426
  1250. package/dist/components/GrTreeSelect/chunks/GrTreeSelect-CdaLG7Xq.js.map +0 -1
  1251. package/dist/granular-provider-node.js.map +0 -1
  1252. package/dist/granular-provider.js.map +0 -1
  1253. package/dist/index.js.map +0 -1
  1254. package/dist/types/src/components/GrButton/config.node.d.ts +0 -1
  1255. package/dist/types/src/components/GrCommandPalette/hotkey.d.ts +0 -23
  1256. package/dist/types/src/components/GrFileUpload/maxSizeMbValidator.d.ts +0 -1
  1257. package/dist/types/src/components/GrModal/grModalEscStack.d.ts +0 -30
  1258. package/dist/types/src/components/GrModal/grModalTopStack.d.ts +0 -31
  1259. package/dist/types/src/components/GrProgressBar/config.node.d.ts +0 -1
  1260. package/dist/types/src/composables/internal/useEscapeToClose.d.ts +0 -11
  1261. package/dist/types/src/composables/internal/useFloating.d.ts +0 -53
  1262. package/dist/types/src/fileValidation/maxFileSizeBytesValidator.d.ts +0 -2
  1263. package/dist/types/src/fileValidation/maxSizeMbValidator.d.ts +0 -2
  1264. /package/dist/chunks/{config-DpqOnJiz.js → config-DpqOnJiz2.js} +0 -0
  1265. /package/dist/chunks/{config-QaIc_gRa2.js → config-QaIc_gRa.js} +0 -0
  1266. /package/dist/{GrSkeleton.css → components/GrSkeleton/styles.css} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GrNumberInput-CZOyPz4J.js","names":["$slots","$attrs"],"sources":["../../../../src/components/GrNumberInput/numberInputMath.ts","../../../../src/components/GrNumberInput/GrNumberInput.vue","../../../../src/components/GrNumberInput/GrNumberInput.vue"],"sourcesContent":["/**\n * Экспоненциальная запись разбирается отдельно: `String(1e-7)` — это `\"1e-7\"`,\n * и поиск точки насчитал бы ноль знаков, после чего округление съело бы всё\n * значение.\n */\nexport function decimalsOf(value: number): number {\n if (!Number.isFinite(value)) return 0\n\n const text = String(Math.abs(value))\n\n const exponential = text.match(/^\\d+(?:\\.(\\d+))?e-(\\d+)$/)\n if (exponential) {\n const [, fraction = '', exponent] = exponential\n return fraction.length + Number(exponent)\n }\n\n const dot = text.indexOf('.')\n return dot === -1 ? 0 : text.length - dot - 1\n}\n\n/**\n * Двоичная дробь копит ошибку, поэтому сумма округляется. Разрядность — по\n * большему из операндов: шаг `0.5` от значения `1.25` обязан дать `1.75`.\n */\nexport function addStep(current: number, step: number): number {\n const decimals = Math.max(decimalsOf(current), decimalsOf(step))\n const sum = current + step\n\n // `toFixed` за пределами 100 знаков бросает.\n return decimals > 100 ? sum : Number(sum.toFixed(decimals))\n}\n\n/**\n * Правило `GrSlider` (`bigStep` в `GrSlider.vue`): десять шагов либо десятая\n * часть диапазона — что крупнее. У поля границы необязательны, и без них\n * диапазона не существует.\n */\nexport function bigStep(step: number, min?: number, max?: number): number {\n const base = step * 10\n if (min === undefined || max === undefined) return base\n\n const span = max - min\n const tenth = Math.round((span / 10) / step) * step\n\n return Math.max(base, tenth || step)\n}\n","<script setup lang=\"ts\">\nimport type { InputHTMLAttributes } from 'vue'\n\nimport { useGrComponentProp, useGrComponentSize } from '../GrConfigProvider/context'\nimport { computed, onBeforeUnmount, ref } from 'vue'\n\nimport {\n clearButtonClass,\n stepperCompactClass,\n stepperWideClass,\n grNumberInputInputClass,\n grNumberInputShellClass,\n type GrNumberInputControlsDirection,\n type GrNumberInputSize,\n type GrNumberInputState,\n type GrNumberInputTextAlign,\n} from './grNumberInputStyles'\nimport { addStep, bigStep } from './numberInputMath'\nimport { useGrFormFieldContext } from '../GrFormField/context'\nimport { useGrFormControl } from '../../composables/useGrFormControl'\nimport { useGranularityTranslations } from '../../internal/granularityI18n'\nimport GrIcon from '../GrIcon/GrIcon.vue'\nimport IconChevronDown from '~icons/lucide/chevron-down'\nimport IconChevronLeft from '~icons/lucide/chevron-left'\nimport IconChevronRight from '~icons/lucide/chevron-right'\nimport IconChevronUp from '~icons/lucide/chevron-up'\nimport IconX from '~icons/lucide/x'\nimport { addLen } from '../../composables/internal/useAddonMeasurement'\nimport { useControlAddons } from '../../composables/internal/useControlAddons'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst ADDON_PX_BY_SIZE: Record<GrNumberInputSize, number> = {\n xs: 32,\n sm: 36,\n md: 40,\n lg: 48,\n}\n\nconst BASE_PADDING_X_LEN_BY_SIZE: Record<GrNumberInputSize, string> = {\n xs: '10px',\n sm: '12px',\n md: '12px',\n lg: '16px',\n}\n\nfunction px(n: number): string {\n return `${n}px`\n}\n\nexport interface GrNumberInputProps {\n /**\n * Значение поля. `null` — пусто.\n *\n * Незавершённый ввод («-», «1,») числом не является и в модель не попадает:\n * пока он набирается, поле держит его во внутреннем черновике, а модель\n * честно говорит «числа пока нет».\n */\n modelValue: number | null\n placeholder?: string\n autocomplete?: string\n inputmode?: InputHTMLAttributes['inputmode']\n disabled?: boolean\n /** Быстрый флаг невалидности; эквивалент `state='danger'` + `aria-invalid`. */\n invalid?: boolean\n /** Только для чтения: значение видно и уходит в форму, но не редактируется. */\n readonly?: boolean\n /** Обязательное поле (`aria-required`). Складывается с `required` у `GrFormField`. */\n required?: boolean\n /** Доступное имя вне `GrFormField`. */\n ariaLabel?: string\n state?: GrNumberInputState\n name?: string\n id?: string\n size?: GrNumberInputSize\n\n textAlign?: GrNumberInputTextAlign\n\n decimalSeparator?: string\n step?: number\n min?: number\n max?: number\n precision?: number\n\n /** Кнопка очистки значения. */\n clearable?: boolean\n /** A11y-подпись кнопки очистки. */\n clearLabel?: string\n /**\n * BCP-47 локаль для отображения значения (группировка разрядов и разделители\n * через `Intl.NumberFormat`). Работает вместе с `useGrouping`.\n */\n locale?: string\n /**\n * Группировать разряды при отображении (когда поле не в фокусе). При фокусе\n * показывается «сырое» значение для редактирования. По умолчанию выключено.\n */\n useGrouping?: boolean\n\n /** Показывать кнопки +/-. */\n controls?: boolean\n controlsDirection?: GrNumberInputControlsDirection\n\n prefixMinWidth?: string\n prefixMaxWidth?: string\n suffixMinWidth?: string\n suffixMaxWidth?: string\n /**\n * Фиксированная ширина у prefix/suffix: жёсткая ширина (из `*MaxWidth` →\n * `*MinWidth` → дефолт) + обрезка контента по краю (prefix — справа,\n * suffix — слева). По умолчанию аддоны растягиваются под контент.\n */\n prefixFixed?: boolean\n suffixFixed?: boolean\n\n /** i18n-friendly aria-label для кнопки \"увеличить\". */\n increaseLabel?: string\n /** i18n-friendly aria-label для кнопки \"уменьшить\". */\n decreaseLabel?: string\n}\n\nexport interface GrNumberInputEmits {\n (e: 'update:modelValue', value: number | null): void\n (e: 'change', value: number | null): void\n (e: 'focus', event: FocusEvent): void\n (e: 'blur', event: FocusEvent): void\n /** Значение стёрто кнопкой очистки. */\n (e: 'clear'): void\n}\n\n// Контекст `GrFormField` — fallback для id/описания/невалидности, как в `GrInput`.\nconst field = useGrFormFieldContext()\n\nconst props = withDefaults(defineProps<GrNumberInputProps>(), {\n placeholder: undefined,\n autocomplete: undefined,\n inputmode: 'decimal',\n disabled: false,\n invalid: false,\n readonly: false,\n required: false,\n ariaLabel: undefined,\n state: 'default',\n name: undefined,\n id: undefined,\n size: undefined,\n\n textAlign: 'left',\n\n decimalSeparator: '.',\n step: 1,\n min: undefined,\n max: undefined,\n precision: undefined,\n locale: undefined,\n useGrouping: false,\n clearable: undefined,\n clearLabel: undefined,\n\n controls: false,\n controlsDirection: 'vertical',\n\n prefixMinWidth: undefined,\n prefixMaxWidth: undefined,\n suffixMinWidth: undefined,\n suffixMaxWidth: undefined,\n prefixFixed: false,\n suffixFixed: false,\n\n increaseLabel: undefined,\n decreaseLabel: undefined,\n})\n\n// Эффективный размер: локальный проп → `GrConfigProvider` → дефолт компонента.\nconst resolvedSize = useGrComponentSize(() => props.size, { component: 'GrNumberInput' })\n\nconst resolvedId = computed(() => props.id ?? field?.id.value)\nconst describedBy = computed(() => field?.describedById.value)\nconst {\n disabled: isDisabled,\n invalid: isInvalid,\n required: isRequired,\n readonly: isReadonly,\n} = useGrFormControl(() => props)\n\nconst emit = defineEmits<GrNumberInputEmits>()\ndefineSlots<{\n /** Аддон слева от поля: знак валюты, иконка. */\n prefix?: () => any\n /** Аддон справа от поля: единица измерения. */\n suffix?: () => any\n}>()\n\n\nconst inputEl = ref<HTMLInputElement | null>(null)\n\n// В фокусе поле показывает «сырое» значение: группировка мешала бы правке.\nconst isFocused = ref(false)\n\n/**\n * Строка ровно в том виде, в каком её набирают. Модель к этому моменту может\n * быть `null` («-», «1,» — не числа), и без черновика поле стирало бы под\n * пальцами то, что печатают. Коммит (`change`/`blur`) черновик снимает.\n */\nconst draft = ref<string | null>(null)\n\nfunction focus(): void {\n inputEl.value?.focus()\n}\n\nfunction blur(): void {\n inputEl.value?.blur()\n}\n\ndefineExpose({ focus, blur })\n\nconst { t, locale } = useGranularityTranslations()\n\n/**\n * Локаль форматирования: свой проп → локаль i18n-адаптера → окружение. Без\n * второго шага мультиязычное приложение передавало бы `locale` каждому полю.\n */\nconst resolvedLocale = computed(() => props.locale ?? locale.value)\nconst resolvedIncreaseLabel = computed(() => props.increaseLabel ?? t('gr.numberInput.increase', 'Increase'))\nconst resolvedDecreaseLabel = computed(() => props.decreaseLabel ?? t('gr.numberInput.decrease', 'Decrease'))\n\nconst hasHorizontalControls = computed(() => props.controls && props.controlsDirection === 'horizontal')\nconst hasVerticalControls = computed(() => props.controls && props.controlsDirection === 'vertical')\n\nconst addonPx = computed(() => ADDON_PX_BY_SIZE[resolvedSize.value])\nconst addonLen = computed(() => px(addonPx.value))\nconst basePaddingXLen = computed(() => BASE_PADDING_X_LEN_BY_SIZE[resolvedSize.value])\n\n/** Кнопки ± справа: вертикальный стек — одна колонка, горизонтальный — вторая. */\nconst rightControlsCount = computed(() =>\n (hasHorizontalControls.value ? 1 : 0) + (hasVerticalControls.value ? 1 : 0))\n\nconst {\n prefixEl,\n suffixEl,\n prefixLen,\n suffixLen,\n prefixStyle,\n suffixStyle,\n fieldPadding: inputStyle,\n} = useControlAddons(() => props, {\n defaultMinWidth: () => addonLen.value,\n paddingX: () => basePaddingXLen.value,\n leadingReserve: () => (hasHorizontalControls.value ? addonLen.value : '0px'),\n trailingReserve: () => (rightControlsCount.value > 0 ? px(addonPx.value * rightControlsCount.value) : '0px'),\n // Суффикс позиционируется абсолютно: без якоря он уехал бы от правого края.\n anchorSuffixRight: true,\n})\n\nfunction addonStyle(side: 'left' | 'right', offset: string): Record<string, string> {\n return {\n width: addonLen.value,\n [side]: offset,\n }\n}\n\nconst verticalControlsStyle = computed(() => addonStyle('right', suffixLen.value))\n\n/**\n * Крестик очистки живёт левее правой зоны (суффикс + кнопки ±) — иначе он лёг бы\n * на них. Ширины там же, где их считает поле, поэтому переиспользуем расчёт.\n */\nconst clearButtonStyle = computed(() => {\n const controls = rightControlsCount.value > 0 ? px(addonPx.value * rightControlsCount.value) : '0px'\n\n return { right: addLen(addLen(suffixLen.value, controls), '6px') }\n})\nconst horizontalLeftControlsStyle = computed(() => addonStyle('left', prefixLen.value))\nconst horizontalRightControlsStyle = computed(() => addonStyle('right', suffixLen.value))\n\nconst shellClassName = computed(() => {\n return grNumberInputShellClass({\n disabled: isDisabled.value,\n state: props.state,\n invalid: isInvalid.value,\n })\n})\n\nconst inputClassName = computed(() => {\n return grNumberInputInputClass({\n size: resolvedSize.value,\n textAlign: props.textAlign,\n })\n})\n\nfunction isDigit(ch: string): boolean {\n return ch >= '0' && ch <= '9'\n}\n\nfunction sanitize(raw: string): string {\n const sep = props.decimalSeparator || '.'\n\n let out = ''\n let hasSepLocal = false\n\n for (let i = 0; i < raw.length; i++) {\n const ch = raw[i]\n\n // Ведущий минус: разрешаем один в начале, чтобы можно было ввести\n // отрицательное значение с клавиатуры (границы проверит `clamp` на change).\n if (ch === '-' && out.length === 0) {\n out += '-'\n continue\n }\n\n if (isDigit(ch)) {\n out += ch\n continue\n }\n\n if ((ch === sep || ch === '.' || ch === ',') && !hasSepLocal) {\n out += sep\n hasSepLocal = true\n }\n }\n\n return out\n}\n\nfunction toNumber(value: string): number | null {\n if (value.trim() === '') return null\n const sep = props.decimalSeparator || '.'\n const normalized = sep === '.' ? value : value.replace(sep, '.')\n const n = Number(normalized)\n if (!Number.isFinite(n)) return null\n return n\n}\n\nfunction clamp(v: number): number {\n if (props.min !== undefined) v = Math.max(props.min, v)\n if (props.max !== undefined) v = Math.min(props.max, v)\n return v\n}\n\nfunction normalize(v: number): number {\n if (props.precision === undefined) return v\n const p = Math.max(0, props.precision)\n return Number(v.toFixed(p))\n}\n\nfunction format(n: number): string {\n const sep = props.decimalSeparator || '.'\n const p = props.precision\n\n // Без `precision` избегаем экспоненциальной записи (`String(1e21)` → `\"1e+21\"`),\n // форматируя через `Intl` без группировки разрядов.\n let s = p === undefined\n ? n.toLocaleString('en-US', { useGrouping: false, maximumFractionDigits: 20 })\n : n.toFixed(Math.max(0, p))\n if (sep !== '.') s = s.replace('.', sep)\n return s\n}\n\nfunction onInput(e: Event): void {\n const el = e.target as HTMLInputElement\n const raw = el.value\n const next = sanitize(raw)\n\n if (raw !== next) {\n // Сохраняем позицию каретки: считаем, сколько валидных символов было ДО\n // каретки, и ставим её после стольких же в очищенной строке — иначе при\n // редактировании середины числа каретка прыгала в конец.\n const caret = el.selectionStart ?? raw.length\n const keptBefore = sanitize(raw.slice(0, caret)).length\n el.value = next\n el.setSelectionRange(keptBefore, keptBefore)\n }\n\n draft.value = next\n\n const num = toNumber(next)\n if (num !== props.modelValue) emit('update:modelValue', num)\n}\n\n/**\n * Коммит набранного: границы и точность применяются здесь, а не на каждом\n * нажатии, — иначе `min=10` не дал бы набрать «1» как начало «15».\n */\nfunction commit(): void {\n // Без черновика коммитится сама модель: значение вне границ обязано\n // выправиться и тогда, когда его выставили снаружи, а не набрали руками.\n const num = draft.value !== null ? toNumber(draft.value) : props.modelValue\n const next = num === null ? null : clamp(normalize(num))\n\n draft.value = null\n\n if (next !== props.modelValue) emit('update:modelValue', next)\n emit('change', next)\n}\n\nfunction onChange(): void {\n // Клампинг границ (`min`/`max`) и нормализация — на `change`/`blur`, а не только\n // в кнопках: иначе ручной ввод «999» при `max=10` останется невалидным.\n commit()\n}\n\nfunction setValue(n: number): void {\n const next = clamp(normalize(n))\n // Шаг завершает набор: черновик снимается, показ считается от модели.\n draft.value = null\n emit('update:modelValue', next)\n emit('change', next)\n}\n\n/**\n * Шаг значения. Фокус не трогаем: кнопка ± обязана оставаться под фокусом,\n * иначе клавиатурный пользователь после первого Enter теряет её и повторно\n * нажать не может. Поле фокусирует тот, кто шагает от него самого.\n */\nfunction stepBy(dir: 1 | -1, step: number = props.step ?? 1): void {\n if (isDisabled.value || isReadonly.value) return\n\n const current = props.modelValue ?? 0\n setValue(addStep(current, step * dir))\n}\n\n// Интервал уже шагал: финальный `click` при отпускании — не намерение\n// пользователя сделать ещё один шаг, а хвост того же жеста.\nlet repeatFired = false\n\n/** Клик кнопки «±»: шаг, если это не хвост только что завершённого удержания. */\nfunction onStepClick(dir: 1 | -1, event: MouseEvent): void {\n // Enter/Space на кнопке дают click без указателя (`detail === 0`) — хвостом\n // жеста он быть не может. Иначе удержание, кончившееся без клика (отпускание\n // вне кнопки, `pointercancel` на таче), оставляло бы флаг взведённым, и\n // спинбаттон молча терял бы нажатие у клавиатуры и вспомогательных технологий.\n if (event.detail === 0) {\n repeatFired = false\n stepBy(dir)\n return\n }\n\n if (repeatFired) {\n repeatFired = false\n return\n }\n stepBy(dir)\n}\n\nfunction onKeydown(e: KeyboardEvent): void {\n if (isDisabled.value) return\n // Readonly-поле ведёт себя как текст: стрелки и Home/End отдаются нативной\n // каретке, значение не меняется.\n if (isReadonly.value) return\n\n switch (e.key) {\n case 'ArrowUp':\n e.preventDefault()\n stepBy(1)\n break\n case 'ArrowDown':\n e.preventDefault()\n stepBy(-1)\n break\n case 'PageUp':\n e.preventDefault()\n stepBy(1, bigStep(props.step ?? 1, props.min, props.max))\n break\n case 'PageDown':\n e.preventDefault()\n stepBy(-1, bigStep(props.step ?? 1, props.min, props.max))\n break\n case 'Home':\n if (props.min !== undefined) {\n e.preventDefault()\n setValue(props.min)\n }\n break\n case 'End':\n if (props.max !== undefined) {\n e.preventDefault()\n setValue(props.max)\n }\n break\n }\n}\n\n// `aria-valuenow` — числовое значение для скринридеров; отсутствует, если поле пусто.\nconst ariaValueNow = computed(() => props.modelValue ?? undefined)\n\n// На пределе кнопка ± гаснет: активная кнопка, у которой `clamp` съедает\n// результат, читается как сломанная.\nconst numericValue = computed(() => props.modelValue)\n\nconst canIncrease = computed(() => {\n if (props.max === undefined) return true\n const current = numericValue.value\n return current === null || normalize(current) < props.max\n})\n\nconst canDecrease = computed(() => {\n if (props.min === undefined) return true\n const current = numericValue.value\n return current === null || normalize(current) > props.min\n})\n\n// Локале-зависимое отображение: при фокусе показываем «сырое» значение для\n// редактирования, иначе — сгруппированное через `Intl.NumberFormat`.\nfunction formatGrouped(num: number): string {\n const sep = props.decimalSeparator || '.'\n // formatToParts позволяет оставить локале-зависимый групповой разделитель,\n // но принудительно подставить наш десятичный разделитель (`decimalSeparator`),\n // корректно работая для любой локали (в т.ч. de-DE, где группа — '.').\n return new Intl.NumberFormat(resolvedLocale.value, {\n useGrouping: true,\n minimumFractionDigits: props.precision ?? 0,\n maximumFractionDigits: props.precision ?? 20,\n })\n .formatToParts(num)\n .map(part => (part.type === 'decimal' ? sep : part.value))\n .join('')\n}\n\n/**\n * `aria-valuetext` нужен только при группировке: без неё `aria-valuenow` уже\n * несёт то же самое число, и дублировать его текстом незачем.\n */\nconst ariaValueText = computed(() => {\n if (!props.useGrouping) return undefined\n return props.modelValue === null ? undefined : formatGrouped(props.modelValue)\n})\n\n/**\n * Что показывает поле: набираемый черновик, пока он есть, иначе — модель.\n * Группировка только вне фокуса: при правке разделители разрядов мешают.\n */\nconst displayValue = computed(() => {\n if (draft.value !== null) return draft.value\n if (props.modelValue === null) return ''\n if (props.useGrouping && !isFocused.value) return formatGrouped(props.modelValue)\n return format(props.modelValue)\n})\n\nfunction onFocus(event: FocusEvent): void {\n isFocused.value = true\n emit('focus', event)\n}\n\nfunction onBlur(event: FocusEvent): void {\n isFocused.value = false\n // `change` до `blur` доходит не всегда (значение могло вернуться к исходному),\n // а черновик обязан сняться в любом случае — иначе поле застынет на нём.\n draft.value = null\n emit('blur', event)\n stopRepeat()\n}\n\n// ————— Удержание кнопки ±: шаг повторяется, пока кнопку держат.\nconst REPEAT_DELAY_MS = 400\nconst REPEAT_INTERVAL_MS = 60\n\nlet repeatDelay: ReturnType<typeof setTimeout> | null = null\nlet repeatTimer: ReturnType<typeof setInterval> | null = null\n\nfunction stopRepeat(): void {\n if (repeatDelay !== null) {\n clearTimeout(repeatDelay)\n repeatDelay = null\n }\n if (repeatTimer !== null) {\n clearInterval(repeatTimer)\n repeatTimer = null\n }\n}\n\nfunction canStep(dir: 1 | -1): boolean {\n return dir === 1 ? canIncrease.value : canDecrease.value\n}\n\n/**\n * `pointerdown`, а не `mousedown`: на тач-устройствах второго не бывает.\n * Повтор останавливается на границе — иначе таймер крутился бы вхолостую.\n */\nfunction startRepeat(dir: 1 | -1): void {\n if (isDisabled.value || isReadonly.value) return\n\n stopRepeat()\n repeatFired = false\n repeatDelay = setTimeout(() => {\n repeatTimer = setInterval(() => {\n if (!canStep(dir)) {\n stopRepeat()\n return\n }\n repeatFired = true\n stepBy(dir)\n }, REPEAT_INTERVAL_MS)\n }, REPEAT_DELAY_MS)\n}\n\nonBeforeUnmount(stopRepeat)\n\n// ————— Очистка значения.\nconst resolvedClearable = useGrComponentProp('GrNumberInput', 'clearable', () => props.clearable, false)\nconst resolvedClearLabel = computed(() => props.clearLabel ?? t('gr.input.clear', 'Clear'))\n\nconst clearVisible = computed(() =>\n resolvedClearable.value && !isDisabled.value && !isReadonly.value && props.modelValue !== null,\n)\n\nfunction clear(): void {\n draft.value = null\n emit('update:modelValue', null)\n emit('change', null)\n emit('clear')\n focus()\n}\n</script>\n\n<template>\n <div\n data-gr-number-input\n class=\"relative w-full overflow-hidden rounded-[var(--gr-radius-control)] border bg-[var(--gr-bg)] transition-colors duration-[var(--gr-duration-fast)] focus-within:ring-2 focus-within:ring-[var(--gr-ring)]\"\n :class=\"shellClassName\"\n >\n <div\n v-if=\"$slots.prefix\"\n ref=\"prefixEl\"\n data-testid=\"number-input-prefix\"\n data-gr-number-input-prefix\n class=\"absolute inset-y-0 left-0 flex items-center justify-center border-r border-[var(--gr-brd)] px-2 text-[var(--gr-muted-fg)] pointer-events-none select-none truncate\"\n :style=\"prefixStyle\"\n aria-hidden=\"true\"\n >\n <slot name=\"prefix\" />\n </div>\n\n <input\n :id=\"resolvedId\"\n ref=\"inputEl\"\n v-bind=\"$attrs\"\n :name=\"name\"\n type=\"text\"\n :inputmode=\"inputmode\"\n :autocomplete=\"autocomplete\"\n :placeholder=\"placeholder\"\n :disabled=\"isDisabled\"\n :value=\"displayValue\"\n role=\"spinbutton\"\n :aria-valuenow=\"ariaValueNow\"\n :aria-valuemin=\"min\"\n :aria-valuemax=\"max\"\n :aria-valuetext=\"ariaValueText\"\n :aria-invalid=\"isInvalid ? 'true' : undefined\"\n :aria-describedby=\"describedBy\"\n :aria-required=\"isRequired ? 'true' : undefined\"\n :aria-readonly=\"isReadonly ? 'true' : undefined\"\n :aria-label=\"ariaLabel\"\n :readonly=\"isReadonly\"\n class=\"w-full bg-transparent text-[var(--gr-fg)] placeholder:text-[var(--gr-muted-fg)] focus:placeholder:text-transparent focus:outline-none disabled:cursor-not-allowed\"\n :class=\"inputClassName\"\n :style=\"inputStyle\"\n @input=\"onInput\"\n @change=\"onChange\"\n @keydown=\"onKeydown\"\n @focus=\"onFocus\"\n @blur=\"onBlur\"\n >\n\n <div\n v-if=\"$slots.suffix\"\n ref=\"suffixEl\"\n data-testid=\"number-input-suffix\"\n data-gr-number-input-suffix\n class=\"absolute inset-y-0 flex items-center justify-center border-l border-[var(--gr-brd)] px-2 text-[var(--gr-muted-fg)] pointer-events-none select-none truncate\"\n :class=\"suffixFixed ? '[direction:rtl]' : ''\"\n :style=\"suffixStyle\"\n aria-hidden=\"true\"\n >\n <slot name=\"suffix\" />\n </div>\n\n <button\n v-if=\"clearVisible\"\n type=\"button\"\n data-gr-number-input-clear\n :class=\"clearButtonClass\"\n :style=\"clearButtonStyle\"\n :aria-label=\"resolvedClearLabel\"\n @mousedown.prevent\n @click=\"clear\"\n >\n <GrIcon :size=\"14\">\n <IconX />\n </GrIcon>\n </button>\n\n <div\n v-if=\"hasVerticalControls\"\n data-testid=\"number-input-controls-vertical\"\n data-gr-number-input-controls=\"vertical\"\n class=\"absolute inset-y-0 flex items-center justify-center border-l border-[var(--gr-brd)]\"\n :style=\"verticalControlsStyle\"\n >\n <div class=\"flex flex-col justify-center gap-1\">\n <button\n type=\"button\"\n data-gr-number-input-increase\n :class=\"stepperCompactClass\"\n :disabled=\"isDisabled || isReadonly || !canIncrease\"\n :aria-label=\"resolvedIncreaseLabel\"\n @mousedown.prevent\n @pointerdown=\"startRepeat(1)\"\n @pointerup=\"stopRepeat\"\n @pointerleave=\"stopRepeat\"\n @pointercancel=\"stopRepeat\"\n @click=\"onStepClick(1, $event)\"\n >\n <GrIcon :size=\"12\">\n <IconChevronUp />\n </GrIcon>\n </button>\n <button\n type=\"button\"\n data-gr-number-input-decrease\n :class=\"stepperCompactClass\"\n :disabled=\"isDisabled || isReadonly || !canDecrease\"\n :aria-label=\"resolvedDecreaseLabel\"\n @mousedown.prevent\n @pointerdown=\"startRepeat(-1)\"\n @pointerup=\"stopRepeat\"\n @pointerleave=\"stopRepeat\"\n @pointercancel=\"stopRepeat\"\n @click=\"onStepClick(-1, $event)\"\n >\n <GrIcon :size=\"12\">\n <IconChevronDown />\n </GrIcon>\n </button>\n </div>\n </div>\n\n <div\n v-if=\"hasHorizontalControls\"\n data-testid=\"number-input-controls-horizontal-left\"\n data-gr-number-input-controls=\"horizontal-left\"\n class=\"absolute inset-y-0 flex items-stretch justify-center border-r border-[var(--gr-brd)]\"\n :style=\"horizontalLeftControlsStyle\"\n >\n <button\n type=\"button\"\n data-gr-number-input-decrease\n :class=\"stepperWideClass\"\n :disabled=\"isDisabled || isReadonly || !canDecrease\"\n :aria-label=\"resolvedDecreaseLabel\"\n @mousedown.prevent\n @pointerdown=\"startRepeat(-1)\"\n @pointerup=\"stopRepeat\"\n @pointerleave=\"stopRepeat\"\n @pointercancel=\"stopRepeat\"\n @click=\"onStepClick(-1, $event)\"\n >\n <GrIcon :size=\"12\">\n <IconChevronLeft />\n </GrIcon>\n </button>\n </div>\n\n <div\n v-if=\"hasHorizontalControls\"\n data-testid=\"number-input-controls-horizontal-right\"\n data-gr-number-input-controls=\"horizontal-right\"\n class=\"absolute inset-y-0 flex items-stretch justify-center border-l border-[var(--gr-brd)]\"\n :style=\"horizontalRightControlsStyle\"\n >\n <button\n type=\"button\"\n data-gr-number-input-increase\n :class=\"stepperWideClass\"\n :disabled=\"isDisabled || isReadonly || !canIncrease\"\n :aria-label=\"resolvedIncreaseLabel\"\n @mousedown.prevent\n @pointerdown=\"startRepeat(1)\"\n @pointerup=\"stopRepeat\"\n @pointerleave=\"stopRepeat\"\n @pointercancel=\"stopRepeat\"\n @click=\"onStepClick(1, $event)\"\n >\n <GrIcon :size=\"12\">\n <IconChevronRight />\n </GrIcon>\n </button>\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport type { InputHTMLAttributes } from 'vue'\n\nimport { useGrComponentProp, useGrComponentSize } from '../GrConfigProvider/context'\nimport { computed, onBeforeUnmount, ref } from 'vue'\n\nimport {\n clearButtonClass,\n stepperCompactClass,\n stepperWideClass,\n grNumberInputInputClass,\n grNumberInputShellClass,\n type GrNumberInputControlsDirection,\n type GrNumberInputSize,\n type GrNumberInputState,\n type GrNumberInputTextAlign,\n} from './grNumberInputStyles'\nimport { addStep, bigStep } from './numberInputMath'\nimport { useGrFormFieldContext } from '../GrFormField/context'\nimport { useGrFormControl } from '../../composables/useGrFormControl'\nimport { useGranularityTranslations } from '../../internal/granularityI18n'\nimport GrIcon from '../GrIcon/GrIcon.vue'\nimport IconChevronDown from '~icons/lucide/chevron-down'\nimport IconChevronLeft from '~icons/lucide/chevron-left'\nimport IconChevronRight from '~icons/lucide/chevron-right'\nimport IconChevronUp from '~icons/lucide/chevron-up'\nimport IconX from '~icons/lucide/x'\nimport { addLen } from '../../composables/internal/useAddonMeasurement'\nimport { useControlAddons } from '../../composables/internal/useControlAddons'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst ADDON_PX_BY_SIZE: Record<GrNumberInputSize, number> = {\n xs: 32,\n sm: 36,\n md: 40,\n lg: 48,\n}\n\nconst BASE_PADDING_X_LEN_BY_SIZE: Record<GrNumberInputSize, string> = {\n xs: '10px',\n sm: '12px',\n md: '12px',\n lg: '16px',\n}\n\nfunction px(n: number): string {\n return `${n}px`\n}\n\nexport interface GrNumberInputProps {\n /**\n * Значение поля. `null` — пусто.\n *\n * Незавершённый ввод («-», «1,») числом не является и в модель не попадает:\n * пока он набирается, поле держит его во внутреннем черновике, а модель\n * честно говорит «числа пока нет».\n */\n modelValue: number | null\n placeholder?: string\n autocomplete?: string\n inputmode?: InputHTMLAttributes['inputmode']\n disabled?: boolean\n /** Быстрый флаг невалидности; эквивалент `state='danger'` + `aria-invalid`. */\n invalid?: boolean\n /** Только для чтения: значение видно и уходит в форму, но не редактируется. */\n readonly?: boolean\n /** Обязательное поле (`aria-required`). Складывается с `required` у `GrFormField`. */\n required?: boolean\n /** Доступное имя вне `GrFormField`. */\n ariaLabel?: string\n state?: GrNumberInputState\n name?: string\n id?: string\n size?: GrNumberInputSize\n\n textAlign?: GrNumberInputTextAlign\n\n decimalSeparator?: string\n step?: number\n min?: number\n max?: number\n precision?: number\n\n /** Кнопка очистки значения. */\n clearable?: boolean\n /** A11y-подпись кнопки очистки. */\n clearLabel?: string\n /**\n * BCP-47 локаль для отображения значения (группировка разрядов и разделители\n * через `Intl.NumberFormat`). Работает вместе с `useGrouping`.\n */\n locale?: string\n /**\n * Группировать разряды при отображении (когда поле не в фокусе). При фокусе\n * показывается «сырое» значение для редактирования. По умолчанию выключено.\n */\n useGrouping?: boolean\n\n /** Показывать кнопки +/-. */\n controls?: boolean\n controlsDirection?: GrNumberInputControlsDirection\n\n prefixMinWidth?: string\n prefixMaxWidth?: string\n suffixMinWidth?: string\n suffixMaxWidth?: string\n /**\n * Фиксированная ширина у prefix/suffix: жёсткая ширина (из `*MaxWidth` →\n * `*MinWidth` → дефолт) + обрезка контента по краю (prefix — справа,\n * suffix — слева). По умолчанию аддоны растягиваются под контент.\n */\n prefixFixed?: boolean\n suffixFixed?: boolean\n\n /** i18n-friendly aria-label для кнопки \"увеличить\". */\n increaseLabel?: string\n /** i18n-friendly aria-label для кнопки \"уменьшить\". */\n decreaseLabel?: string\n}\n\nexport interface GrNumberInputEmits {\n (e: 'update:modelValue', value: number | null): void\n (e: 'change', value: number | null): void\n (e: 'focus', event: FocusEvent): void\n (e: 'blur', event: FocusEvent): void\n /** Значение стёрто кнопкой очистки. */\n (e: 'clear'): void\n}\n\n// Контекст `GrFormField` — fallback для id/описания/невалидности, как в `GrInput`.\nconst field = useGrFormFieldContext()\n\nconst props = withDefaults(defineProps<GrNumberInputProps>(), {\n placeholder: undefined,\n autocomplete: undefined,\n inputmode: 'decimal',\n disabled: false,\n invalid: false,\n readonly: false,\n required: false,\n ariaLabel: undefined,\n state: 'default',\n name: undefined,\n id: undefined,\n size: undefined,\n\n textAlign: 'left',\n\n decimalSeparator: '.',\n step: 1,\n min: undefined,\n max: undefined,\n precision: undefined,\n locale: undefined,\n useGrouping: false,\n clearable: undefined,\n clearLabel: undefined,\n\n controls: false,\n controlsDirection: 'vertical',\n\n prefixMinWidth: undefined,\n prefixMaxWidth: undefined,\n suffixMinWidth: undefined,\n suffixMaxWidth: undefined,\n prefixFixed: false,\n suffixFixed: false,\n\n increaseLabel: undefined,\n decreaseLabel: undefined,\n})\n\n// Эффективный размер: локальный проп → `GrConfigProvider` → дефолт компонента.\nconst resolvedSize = useGrComponentSize(() => props.size, { component: 'GrNumberInput' })\n\nconst resolvedId = computed(() => props.id ?? field?.id.value)\nconst describedBy = computed(() => field?.describedById.value)\nconst {\n disabled: isDisabled,\n invalid: isInvalid,\n required: isRequired,\n readonly: isReadonly,\n} = useGrFormControl(() => props)\n\nconst emit = defineEmits<GrNumberInputEmits>()\ndefineSlots<{\n /** Аддон слева от поля: знак валюты, иконка. */\n prefix?: () => any\n /** Аддон справа от поля: единица измерения. */\n suffix?: () => any\n}>()\n\n\nconst inputEl = ref<HTMLInputElement | null>(null)\n\n// В фокусе поле показывает «сырое» значение: группировка мешала бы правке.\nconst isFocused = ref(false)\n\n/**\n * Строка ровно в том виде, в каком её набирают. Модель к этому моменту может\n * быть `null` («-», «1,» — не числа), и без черновика поле стирало бы под\n * пальцами то, что печатают. Коммит (`change`/`blur`) черновик снимает.\n */\nconst draft = ref<string | null>(null)\n\nfunction focus(): void {\n inputEl.value?.focus()\n}\n\nfunction blur(): void {\n inputEl.value?.blur()\n}\n\ndefineExpose({ focus, blur })\n\nconst { t, locale } = useGranularityTranslations()\n\n/**\n * Локаль форматирования: свой проп → локаль i18n-адаптера → окружение. Без\n * второго шага мультиязычное приложение передавало бы `locale` каждому полю.\n */\nconst resolvedLocale = computed(() => props.locale ?? locale.value)\nconst resolvedIncreaseLabel = computed(() => props.increaseLabel ?? t('gr.numberInput.increase', 'Increase'))\nconst resolvedDecreaseLabel = computed(() => props.decreaseLabel ?? t('gr.numberInput.decrease', 'Decrease'))\n\nconst hasHorizontalControls = computed(() => props.controls && props.controlsDirection === 'horizontal')\nconst hasVerticalControls = computed(() => props.controls && props.controlsDirection === 'vertical')\n\nconst addonPx = computed(() => ADDON_PX_BY_SIZE[resolvedSize.value])\nconst addonLen = computed(() => px(addonPx.value))\nconst basePaddingXLen = computed(() => BASE_PADDING_X_LEN_BY_SIZE[resolvedSize.value])\n\n/** Кнопки ± справа: вертикальный стек — одна колонка, горизонтальный — вторая. */\nconst rightControlsCount = computed(() =>\n (hasHorizontalControls.value ? 1 : 0) + (hasVerticalControls.value ? 1 : 0))\n\nconst {\n prefixEl,\n suffixEl,\n prefixLen,\n suffixLen,\n prefixStyle,\n suffixStyle,\n fieldPadding: inputStyle,\n} = useControlAddons(() => props, {\n defaultMinWidth: () => addonLen.value,\n paddingX: () => basePaddingXLen.value,\n leadingReserve: () => (hasHorizontalControls.value ? addonLen.value : '0px'),\n trailingReserve: () => (rightControlsCount.value > 0 ? px(addonPx.value * rightControlsCount.value) : '0px'),\n // Суффикс позиционируется абсолютно: без якоря он уехал бы от правого края.\n anchorSuffixRight: true,\n})\n\nfunction addonStyle(side: 'left' | 'right', offset: string): Record<string, string> {\n return {\n width: addonLen.value,\n [side]: offset,\n }\n}\n\nconst verticalControlsStyle = computed(() => addonStyle('right', suffixLen.value))\n\n/**\n * Крестик очистки живёт левее правой зоны (суффикс + кнопки ±) — иначе он лёг бы\n * на них. Ширины там же, где их считает поле, поэтому переиспользуем расчёт.\n */\nconst clearButtonStyle = computed(() => {\n const controls = rightControlsCount.value > 0 ? px(addonPx.value * rightControlsCount.value) : '0px'\n\n return { right: addLen(addLen(suffixLen.value, controls), '6px') }\n})\nconst horizontalLeftControlsStyle = computed(() => addonStyle('left', prefixLen.value))\nconst horizontalRightControlsStyle = computed(() => addonStyle('right', suffixLen.value))\n\nconst shellClassName = computed(() => {\n return grNumberInputShellClass({\n disabled: isDisabled.value,\n state: props.state,\n invalid: isInvalid.value,\n })\n})\n\nconst inputClassName = computed(() => {\n return grNumberInputInputClass({\n size: resolvedSize.value,\n textAlign: props.textAlign,\n })\n})\n\nfunction isDigit(ch: string): boolean {\n return ch >= '0' && ch <= '9'\n}\n\nfunction sanitize(raw: string): string {\n const sep = props.decimalSeparator || '.'\n\n let out = ''\n let hasSepLocal = false\n\n for (let i = 0; i < raw.length; i++) {\n const ch = raw[i]\n\n // Ведущий минус: разрешаем один в начале, чтобы можно было ввести\n // отрицательное значение с клавиатуры (границы проверит `clamp` на change).\n if (ch === '-' && out.length === 0) {\n out += '-'\n continue\n }\n\n if (isDigit(ch)) {\n out += ch\n continue\n }\n\n if ((ch === sep || ch === '.' || ch === ',') && !hasSepLocal) {\n out += sep\n hasSepLocal = true\n }\n }\n\n return out\n}\n\nfunction toNumber(value: string): number | null {\n if (value.trim() === '') return null\n const sep = props.decimalSeparator || '.'\n const normalized = sep === '.' ? value : value.replace(sep, '.')\n const n = Number(normalized)\n if (!Number.isFinite(n)) return null\n return n\n}\n\nfunction clamp(v: number): number {\n if (props.min !== undefined) v = Math.max(props.min, v)\n if (props.max !== undefined) v = Math.min(props.max, v)\n return v\n}\n\nfunction normalize(v: number): number {\n if (props.precision === undefined) return v\n const p = Math.max(0, props.precision)\n return Number(v.toFixed(p))\n}\n\nfunction format(n: number): string {\n const sep = props.decimalSeparator || '.'\n const p = props.precision\n\n // Без `precision` избегаем экспоненциальной записи (`String(1e21)` → `\"1e+21\"`),\n // форматируя через `Intl` без группировки разрядов.\n let s = p === undefined\n ? n.toLocaleString('en-US', { useGrouping: false, maximumFractionDigits: 20 })\n : n.toFixed(Math.max(0, p))\n if (sep !== '.') s = s.replace('.', sep)\n return s\n}\n\nfunction onInput(e: Event): void {\n const el = e.target as HTMLInputElement\n const raw = el.value\n const next = sanitize(raw)\n\n if (raw !== next) {\n // Сохраняем позицию каретки: считаем, сколько валидных символов было ДО\n // каретки, и ставим её после стольких же в очищенной строке — иначе при\n // редактировании середины числа каретка прыгала в конец.\n const caret = el.selectionStart ?? raw.length\n const keptBefore = sanitize(raw.slice(0, caret)).length\n el.value = next\n el.setSelectionRange(keptBefore, keptBefore)\n }\n\n draft.value = next\n\n const num = toNumber(next)\n if (num !== props.modelValue) emit('update:modelValue', num)\n}\n\n/**\n * Коммит набранного: границы и точность применяются здесь, а не на каждом\n * нажатии, — иначе `min=10` не дал бы набрать «1» как начало «15».\n */\nfunction commit(): void {\n // Без черновика коммитится сама модель: значение вне границ обязано\n // выправиться и тогда, когда его выставили снаружи, а не набрали руками.\n const num = draft.value !== null ? toNumber(draft.value) : props.modelValue\n const next = num === null ? null : clamp(normalize(num))\n\n draft.value = null\n\n if (next !== props.modelValue) emit('update:modelValue', next)\n emit('change', next)\n}\n\nfunction onChange(): void {\n // Клампинг границ (`min`/`max`) и нормализация — на `change`/`blur`, а не только\n // в кнопках: иначе ручной ввод «999» при `max=10` останется невалидным.\n commit()\n}\n\nfunction setValue(n: number): void {\n const next = clamp(normalize(n))\n // Шаг завершает набор: черновик снимается, показ считается от модели.\n draft.value = null\n emit('update:modelValue', next)\n emit('change', next)\n}\n\n/**\n * Шаг значения. Фокус не трогаем: кнопка ± обязана оставаться под фокусом,\n * иначе клавиатурный пользователь после первого Enter теряет её и повторно\n * нажать не может. Поле фокусирует тот, кто шагает от него самого.\n */\nfunction stepBy(dir: 1 | -1, step: number = props.step ?? 1): void {\n if (isDisabled.value || isReadonly.value) return\n\n const current = props.modelValue ?? 0\n setValue(addStep(current, step * dir))\n}\n\n// Интервал уже шагал: финальный `click` при отпускании — не намерение\n// пользователя сделать ещё один шаг, а хвост того же жеста.\nlet repeatFired = false\n\n/** Клик кнопки «±»: шаг, если это не хвост только что завершённого удержания. */\nfunction onStepClick(dir: 1 | -1, event: MouseEvent): void {\n // Enter/Space на кнопке дают click без указателя (`detail === 0`) — хвостом\n // жеста он быть не может. Иначе удержание, кончившееся без клика (отпускание\n // вне кнопки, `pointercancel` на таче), оставляло бы флаг взведённым, и\n // спинбаттон молча терял бы нажатие у клавиатуры и вспомогательных технологий.\n if (event.detail === 0) {\n repeatFired = false\n stepBy(dir)\n return\n }\n\n if (repeatFired) {\n repeatFired = false\n return\n }\n stepBy(dir)\n}\n\nfunction onKeydown(e: KeyboardEvent): void {\n if (isDisabled.value) return\n // Readonly-поле ведёт себя как текст: стрелки и Home/End отдаются нативной\n // каретке, значение не меняется.\n if (isReadonly.value) return\n\n switch (e.key) {\n case 'ArrowUp':\n e.preventDefault()\n stepBy(1)\n break\n case 'ArrowDown':\n e.preventDefault()\n stepBy(-1)\n break\n case 'PageUp':\n e.preventDefault()\n stepBy(1, bigStep(props.step ?? 1, props.min, props.max))\n break\n case 'PageDown':\n e.preventDefault()\n stepBy(-1, bigStep(props.step ?? 1, props.min, props.max))\n break\n case 'Home':\n if (props.min !== undefined) {\n e.preventDefault()\n setValue(props.min)\n }\n break\n case 'End':\n if (props.max !== undefined) {\n e.preventDefault()\n setValue(props.max)\n }\n break\n }\n}\n\n// `aria-valuenow` — числовое значение для скринридеров; отсутствует, если поле пусто.\nconst ariaValueNow = computed(() => props.modelValue ?? undefined)\n\n// На пределе кнопка ± гаснет: активная кнопка, у которой `clamp` съедает\n// результат, читается как сломанная.\nconst numericValue = computed(() => props.modelValue)\n\nconst canIncrease = computed(() => {\n if (props.max === undefined) return true\n const current = numericValue.value\n return current === null || normalize(current) < props.max\n})\n\nconst canDecrease = computed(() => {\n if (props.min === undefined) return true\n const current = numericValue.value\n return current === null || normalize(current) > props.min\n})\n\n// Локале-зависимое отображение: при фокусе показываем «сырое» значение для\n// редактирования, иначе — сгруппированное через `Intl.NumberFormat`.\nfunction formatGrouped(num: number): string {\n const sep = props.decimalSeparator || '.'\n // formatToParts позволяет оставить локале-зависимый групповой разделитель,\n // но принудительно подставить наш десятичный разделитель (`decimalSeparator`),\n // корректно работая для любой локали (в т.ч. de-DE, где группа — '.').\n return new Intl.NumberFormat(resolvedLocale.value, {\n useGrouping: true,\n minimumFractionDigits: props.precision ?? 0,\n maximumFractionDigits: props.precision ?? 20,\n })\n .formatToParts(num)\n .map(part => (part.type === 'decimal' ? sep : part.value))\n .join('')\n}\n\n/**\n * `aria-valuetext` нужен только при группировке: без неё `aria-valuenow` уже\n * несёт то же самое число, и дублировать его текстом незачем.\n */\nconst ariaValueText = computed(() => {\n if (!props.useGrouping) return undefined\n return props.modelValue === null ? undefined : formatGrouped(props.modelValue)\n})\n\n/**\n * Что показывает поле: набираемый черновик, пока он есть, иначе — модель.\n * Группировка только вне фокуса: при правке разделители разрядов мешают.\n */\nconst displayValue = computed(() => {\n if (draft.value !== null) return draft.value\n if (props.modelValue === null) return ''\n if (props.useGrouping && !isFocused.value) return formatGrouped(props.modelValue)\n return format(props.modelValue)\n})\n\nfunction onFocus(event: FocusEvent): void {\n isFocused.value = true\n emit('focus', event)\n}\n\nfunction onBlur(event: FocusEvent): void {\n isFocused.value = false\n // `change` до `blur` доходит не всегда (значение могло вернуться к исходному),\n // а черновик обязан сняться в любом случае — иначе поле застынет на нём.\n draft.value = null\n emit('blur', event)\n stopRepeat()\n}\n\n// ————— Удержание кнопки ±: шаг повторяется, пока кнопку держат.\nconst REPEAT_DELAY_MS = 400\nconst REPEAT_INTERVAL_MS = 60\n\nlet repeatDelay: ReturnType<typeof setTimeout> | null = null\nlet repeatTimer: ReturnType<typeof setInterval> | null = null\n\nfunction stopRepeat(): void {\n if (repeatDelay !== null) {\n clearTimeout(repeatDelay)\n repeatDelay = null\n }\n if (repeatTimer !== null) {\n clearInterval(repeatTimer)\n repeatTimer = null\n }\n}\n\nfunction canStep(dir: 1 | -1): boolean {\n return dir === 1 ? canIncrease.value : canDecrease.value\n}\n\n/**\n * `pointerdown`, а не `mousedown`: на тач-устройствах второго не бывает.\n * Повтор останавливается на границе — иначе таймер крутился бы вхолостую.\n */\nfunction startRepeat(dir: 1 | -1): void {\n if (isDisabled.value || isReadonly.value) return\n\n stopRepeat()\n repeatFired = false\n repeatDelay = setTimeout(() => {\n repeatTimer = setInterval(() => {\n if (!canStep(dir)) {\n stopRepeat()\n return\n }\n repeatFired = true\n stepBy(dir)\n }, REPEAT_INTERVAL_MS)\n }, REPEAT_DELAY_MS)\n}\n\nonBeforeUnmount(stopRepeat)\n\n// ————— Очистка значения.\nconst resolvedClearable = useGrComponentProp('GrNumberInput', 'clearable', () => props.clearable, false)\nconst resolvedClearLabel = computed(() => props.clearLabel ?? t('gr.input.clear', 'Clear'))\n\nconst clearVisible = computed(() =>\n resolvedClearable.value && !isDisabled.value && !isReadonly.value && props.modelValue !== null,\n)\n\nfunction clear(): void {\n draft.value = null\n emit('update:modelValue', null)\n emit('change', null)\n emit('clear')\n focus()\n}\n</script>\n\n<template>\n <div\n data-gr-number-input\n class=\"relative w-full overflow-hidden rounded-[var(--gr-radius-control)] border bg-[var(--gr-bg)] transition-colors duration-[var(--gr-duration-fast)] focus-within:ring-2 focus-within:ring-[var(--gr-ring)]\"\n :class=\"shellClassName\"\n >\n <div\n v-if=\"$slots.prefix\"\n ref=\"prefixEl\"\n data-testid=\"number-input-prefix\"\n data-gr-number-input-prefix\n class=\"absolute inset-y-0 left-0 flex items-center justify-center border-r border-[var(--gr-brd)] px-2 text-[var(--gr-muted-fg)] pointer-events-none select-none truncate\"\n :style=\"prefixStyle\"\n aria-hidden=\"true\"\n >\n <slot name=\"prefix\" />\n </div>\n\n <input\n :id=\"resolvedId\"\n ref=\"inputEl\"\n v-bind=\"$attrs\"\n :name=\"name\"\n type=\"text\"\n :inputmode=\"inputmode\"\n :autocomplete=\"autocomplete\"\n :placeholder=\"placeholder\"\n :disabled=\"isDisabled\"\n :value=\"displayValue\"\n role=\"spinbutton\"\n :aria-valuenow=\"ariaValueNow\"\n :aria-valuemin=\"min\"\n :aria-valuemax=\"max\"\n :aria-valuetext=\"ariaValueText\"\n :aria-invalid=\"isInvalid ? 'true' : undefined\"\n :aria-describedby=\"describedBy\"\n :aria-required=\"isRequired ? 'true' : undefined\"\n :aria-readonly=\"isReadonly ? 'true' : undefined\"\n :aria-label=\"ariaLabel\"\n :readonly=\"isReadonly\"\n class=\"w-full bg-transparent text-[var(--gr-fg)] placeholder:text-[var(--gr-muted-fg)] focus:placeholder:text-transparent focus:outline-none disabled:cursor-not-allowed\"\n :class=\"inputClassName\"\n :style=\"inputStyle\"\n @input=\"onInput\"\n @change=\"onChange\"\n @keydown=\"onKeydown\"\n @focus=\"onFocus\"\n @blur=\"onBlur\"\n >\n\n <div\n v-if=\"$slots.suffix\"\n ref=\"suffixEl\"\n data-testid=\"number-input-suffix\"\n data-gr-number-input-suffix\n class=\"absolute inset-y-0 flex items-center justify-center border-l border-[var(--gr-brd)] px-2 text-[var(--gr-muted-fg)] pointer-events-none select-none truncate\"\n :class=\"suffixFixed ? '[direction:rtl]' : ''\"\n :style=\"suffixStyle\"\n aria-hidden=\"true\"\n >\n <slot name=\"suffix\" />\n </div>\n\n <button\n v-if=\"clearVisible\"\n type=\"button\"\n data-gr-number-input-clear\n :class=\"clearButtonClass\"\n :style=\"clearButtonStyle\"\n :aria-label=\"resolvedClearLabel\"\n @mousedown.prevent\n @click=\"clear\"\n >\n <GrIcon :size=\"14\">\n <IconX />\n </GrIcon>\n </button>\n\n <div\n v-if=\"hasVerticalControls\"\n data-testid=\"number-input-controls-vertical\"\n data-gr-number-input-controls=\"vertical\"\n class=\"absolute inset-y-0 flex items-center justify-center border-l border-[var(--gr-brd)]\"\n :style=\"verticalControlsStyle\"\n >\n <div class=\"flex flex-col justify-center gap-1\">\n <button\n type=\"button\"\n data-gr-number-input-increase\n :class=\"stepperCompactClass\"\n :disabled=\"isDisabled || isReadonly || !canIncrease\"\n :aria-label=\"resolvedIncreaseLabel\"\n @mousedown.prevent\n @pointerdown=\"startRepeat(1)\"\n @pointerup=\"stopRepeat\"\n @pointerleave=\"stopRepeat\"\n @pointercancel=\"stopRepeat\"\n @click=\"onStepClick(1, $event)\"\n >\n <GrIcon :size=\"12\">\n <IconChevronUp />\n </GrIcon>\n </button>\n <button\n type=\"button\"\n data-gr-number-input-decrease\n :class=\"stepperCompactClass\"\n :disabled=\"isDisabled || isReadonly || !canDecrease\"\n :aria-label=\"resolvedDecreaseLabel\"\n @mousedown.prevent\n @pointerdown=\"startRepeat(-1)\"\n @pointerup=\"stopRepeat\"\n @pointerleave=\"stopRepeat\"\n @pointercancel=\"stopRepeat\"\n @click=\"onStepClick(-1, $event)\"\n >\n <GrIcon :size=\"12\">\n <IconChevronDown />\n </GrIcon>\n </button>\n </div>\n </div>\n\n <div\n v-if=\"hasHorizontalControls\"\n data-testid=\"number-input-controls-horizontal-left\"\n data-gr-number-input-controls=\"horizontal-left\"\n class=\"absolute inset-y-0 flex items-stretch justify-center border-r border-[var(--gr-brd)]\"\n :style=\"horizontalLeftControlsStyle\"\n >\n <button\n type=\"button\"\n data-gr-number-input-decrease\n :class=\"stepperWideClass\"\n :disabled=\"isDisabled || isReadonly || !canDecrease\"\n :aria-label=\"resolvedDecreaseLabel\"\n @mousedown.prevent\n @pointerdown=\"startRepeat(-1)\"\n @pointerup=\"stopRepeat\"\n @pointerleave=\"stopRepeat\"\n @pointercancel=\"stopRepeat\"\n @click=\"onStepClick(-1, $event)\"\n >\n <GrIcon :size=\"12\">\n <IconChevronLeft />\n </GrIcon>\n </button>\n </div>\n\n <div\n v-if=\"hasHorizontalControls\"\n data-testid=\"number-input-controls-horizontal-right\"\n data-gr-number-input-controls=\"horizontal-right\"\n class=\"absolute inset-y-0 flex items-stretch justify-center border-l border-[var(--gr-brd)]\"\n :style=\"horizontalRightControlsStyle\"\n >\n <button\n type=\"button\"\n data-gr-number-input-increase\n :class=\"stepperWideClass\"\n :disabled=\"isDisabled || isReadonly || !canIncrease\"\n :aria-label=\"resolvedIncreaseLabel\"\n @mousedown.prevent\n @pointerdown=\"startRepeat(1)\"\n @pointerup=\"stopRepeat\"\n @pointerleave=\"stopRepeat\"\n @pointercancel=\"stopRepeat\"\n @click=\"onStepClick(1, $event)\"\n >\n <GrIcon :size=\"12\">\n <IconChevronRight />\n </GrIcon>\n </button>\n </div>\n </div>\n</template>\n"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import { n as grNumberInputSafelist, t as grNumberInputConfig } from "../../chunks/config-gZWR75Bh2.js";
2
- import { t as GrNumberInput_default } from "./chunks/GrNumberInput-l9ZOHG9D.js";
1
+ import { n as grNumberInputSafelist, t as grNumberInputConfig } from "../../chunks/config-zjeAJ4ho.js";
2
+ import { t as GrNumberInput_default } from "./chunks/GrNumberInput-CZOyPz4J.js";
3
3
  export { GrNumberInput_default as GrNumberInput, GrNumberInput_default as default, grNumberInputConfig, grNumberInputSafelist };
@@ -0,0 +1,283 @@
1
+ import { o as useGrComponentSize } from "../../../chunks/context-BSYR7RZs.js";
2
+ import { n as useGranularityTranslations } from "../../../chunks/granularityI18n-BC5zsj_d.js";
3
+ import { t as GrButton_default } from "../../GrButton/chunks/GrButton-D0m_z0XW.js";
4
+ import { t as GrSelect_default } from "../../GrSelect/chunks/GrSelect-DAdu044K.js";
5
+ import { a as labelSizes, c as pageSizeSelectWidths, i as jumperSizes, l as pageSizes, o as navButtonSizes, r as ellipsisSizes, s as pageListGaps, u as rowGaps } from "../../../chunks/config-DSJY6aEl.js";
6
+ import { Fragment, computed, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, normalizeClass, openBlock, ref, renderList, renderSlot, toDisplayString, unref, vModelText, watch, withCtx, withDirectives, withKeys } from "vue";
7
+ //#region src/components/GrPagination/GrPagination.vue?vue&type=script&setup=true&lang.ts
8
+ var _hoisted_1 = ["aria-label"];
9
+ var _hoisted_2 = ["aria-hidden"];
10
+ var _hoisted_3 = [
11
+ "disabled",
12
+ "aria-current",
13
+ "aria-label",
14
+ "onClick"
15
+ ];
16
+ var _hoisted_4 = {
17
+ "data-gr-pagination-status": "",
18
+ role: "status",
19
+ class: "sr-only"
20
+ };
21
+ var _hoisted_5 = [
22
+ "max",
23
+ "disabled",
24
+ "aria-label"
25
+ ];
26
+ //#endregion
27
+ //#region src/components/GrPagination/GrPagination.vue
28
+ var GrPagination_default = /* @__PURE__ */ defineComponent({
29
+ __name: "GrPagination",
30
+ props: {
31
+ page: {},
32
+ pageSize: {},
33
+ total: {},
34
+ pageSizes: { default: () => [
35
+ 10,
36
+ 20,
37
+ 50
38
+ ] },
39
+ siblingCount: { default: 1 },
40
+ boundaryCount: { default: 1 },
41
+ compact: {
42
+ type: Boolean,
43
+ default: false
44
+ },
45
+ showJumper: {
46
+ type: Boolean,
47
+ default: false
48
+ },
49
+ showPageSize: {
50
+ type: Boolean,
51
+ default: false
52
+ },
53
+ showTotal: {
54
+ type: Boolean,
55
+ default: false
56
+ },
57
+ jumperLabel: { default: void 0 },
58
+ ariaLabel: { default: void 0 },
59
+ disabled: {
60
+ type: Boolean,
61
+ default: false
62
+ },
63
+ size: { default: void 0 }
64
+ },
65
+ emits: ["update:page", "update:pageSize"],
66
+ setup(__props, { emit: __emit }) {
67
+ const { t } = useGranularityTranslations();
68
+ const props = __props;
69
+ const resolvedSize = useGrComponentSize(() => props.size, { component: "GrPagination" });
70
+ const rowClass = computed(() => rowGaps[resolvedSize.value]);
71
+ const pageListClass = computed(() => pageListGaps[resolvedSize.value]);
72
+ const pageClass = computed(() => pageSizes[resolvedSize.value]);
73
+ const jumperClass = computed(() => jumperSizes[resolvedSize.value]);
74
+ const ellipsisClass = computed(() => ellipsisSizes[resolvedSize.value]);
75
+ const labelClass = computed(() => labelSizes[resolvedSize.value]);
76
+ const selectWrapClass = computed(() => pageSizeSelectWidths[resolvedSize.value]);
77
+ const navButtonSize = computed(() => navButtonSizes[resolvedSize.value]);
78
+ const emit = __emit;
79
+ const resolvedPageSize = computed(() => Math.max(1, Math.trunc(props.pageSize)));
80
+ const pageCount = computed(() => Math.max(1, Math.ceil(props.total / resolvedPageSize.value)));
81
+ const currentPage = computed(() => Math.min(Math.max(Math.trunc(props.page), 1), pageCount.value));
82
+ watch(pageCount, (count) => {
83
+ if (props.page > count) emit("update:page", count);
84
+ });
85
+ const pageSizeModel = computed({
86
+ get: () => String(props.pageSize),
87
+ set: (value) => emit("update:pageSize", Number(value))
88
+ });
89
+ const pageSizeOptions = computed(() => props.pageSizes.map((pageSize) => ({
90
+ value: String(pageSize),
91
+ label: String(pageSize)
92
+ })));
93
+ const rangeFrom = computed(() => props.total === 0 ? 0 : (currentPage.value - 1) * resolvedPageSize.value + 1);
94
+ const rangeTo = computed(() => Math.min(currentPage.value * resolvedPageSize.value, props.total));
95
+ function range(start, end) {
96
+ const list = [];
97
+ for (let page = start; page <= end; page += 1) list.push(page);
98
+ return list;
99
+ }
100
+ const items = computed(() => {
101
+ const count = pageCount.value;
102
+ const current = currentPage.value;
103
+ const boundaryCount = Math.max(0, props.boundaryCount);
104
+ const siblingCount = Math.max(0, props.siblingCount);
105
+ const startPages = range(1, Math.min(boundaryCount, count));
106
+ const endPages = range(Math.max(count - boundaryCount + 1, boundaryCount + 1), count);
107
+ const siblingsStart = Math.max(Math.min(current - siblingCount, count - boundaryCount - siblingCount * 2 - 1), boundaryCount + 2);
108
+ const siblingsEnd = Math.min(Math.max(current + siblingCount, boundaryCount + siblingCount * 2 + 2), endPages.length > 0 ? endPages[0] - 2 : count - 1);
109
+ return [
110
+ ...startPages,
111
+ ...siblingsStart > boundaryCount + 2 ? ["ellipsis-start"] : boundaryCount + 1 < count - boundaryCount ? [boundaryCount + 1] : [],
112
+ ...range(siblingsStart, siblingsEnd),
113
+ ...siblingsEnd < count - boundaryCount - 1 ? ["ellipsis-end"] : count - boundaryCount > boundaryCount ? [count - boundaryCount] : [],
114
+ ...endPages
115
+ ];
116
+ });
117
+ function goTo(page) {
118
+ if (props.disabled) return;
119
+ emit("update:page", page);
120
+ }
121
+ function prev() {
122
+ goTo(Math.max(1, currentPage.value - 1));
123
+ }
124
+ function next() {
125
+ goTo(Math.min(pageCount.value, currentPage.value + 1));
126
+ }
127
+ function first() {
128
+ goTo(1);
129
+ }
130
+ function last() {
131
+ goTo(pageCount.value);
132
+ }
133
+ const jumperValue = ref("");
134
+ function submitJumper() {
135
+ const parsed = Number.parseInt(jumperValue.value, 10);
136
+ jumperValue.value = "";
137
+ if (Number.isNaN(parsed)) return;
138
+ goTo(Math.min(pageCount.value, Math.max(1, parsed)));
139
+ }
140
+ const resolvedJumperLabel = computed(() => props.jumperLabel ?? t("gr.pagination.jumpTo", "Go to"));
141
+ const resolvedAriaLabel = computed(() => props.ariaLabel ?? t("gr.pagination.label", "Pagination"));
142
+ const statusText = computed(() => t("gr.pagination.status", "Page {page} of {count}", {
143
+ page: currentPage.value,
144
+ count: pageCount.value
145
+ }));
146
+ const totalText = computed(() => t("gr.pagination.total", "{from}–{to} of {total}", {
147
+ from: rangeFrom.value,
148
+ to: rangeTo.value,
149
+ total: props.total
150
+ }));
151
+ return (_ctx, _cache) => {
152
+ return openBlock(), createElementBlock("div", {
153
+ class: normalizeClass(["flex flex-wrap items-center justify-end", rowClass.value]),
154
+ "data-gr-pagination": "",
155
+ role: "navigation",
156
+ "aria-label": resolvedAriaLabel.value
157
+ }, [
158
+ __props.showTotal ? (openBlock(), createElementBlock("div", {
159
+ key: 0,
160
+ "data-gr-pagination-total": "",
161
+ class: normalizeClass(["text-[var(--gr-muted-fg)] tabular-nums", labelClass.value])
162
+ }, [renderSlot(_ctx.$slots, "total", {
163
+ from: rangeFrom.value,
164
+ to: rangeTo.value,
165
+ total: __props.total
166
+ }, () => [createTextVNode(toDisplayString(totalText.value), 1)])], 2)) : createCommentVNode("", true),
167
+ __props.showPageSize ? (openBlock(), createElementBlock("div", {
168
+ key: 1,
169
+ class: normalizeClass(selectWrapClass.value)
170
+ }, [createVNode(GrSelect_default, {
171
+ modelValue: pageSizeModel.value,
172
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => pageSizeModel.value = $event),
173
+ options: pageSizeOptions.value,
174
+ size: unref(resolvedSize),
175
+ disabled: __props.disabled,
176
+ "aria-label": unref(t)("gr.pagination.pageSize", "Page size")
177
+ }, null, 8, [
178
+ "modelValue",
179
+ "options",
180
+ "size",
181
+ "disabled",
182
+ "aria-label"
183
+ ])], 2)) : createCommentVNode("", true),
184
+ createVNode(GrButton_default, {
185
+ variant: "ghost",
186
+ size: navButtonSize.value,
187
+ disabled: __props.disabled || currentPage.value <= 1,
188
+ "aria-label": unref(t)("gr.pagination.first", "First page"),
189
+ "data-gr-pagination-first": "",
190
+ onClick: first
191
+ }, {
192
+ default: withCtx(() => [..._cache[2] || (_cache[2] = [createTextVNode(" « ", -1)])]),
193
+ _: 1
194
+ }, 8, [
195
+ "size",
196
+ "disabled",
197
+ "aria-label"
198
+ ]),
199
+ createVNode(GrButton_default, {
200
+ variant: "ghost",
201
+ size: navButtonSize.value,
202
+ disabled: __props.disabled || currentPage.value <= 1,
203
+ "data-gr-pagination-prev": "",
204
+ onClick: prev
205
+ }, {
206
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(t)("gr.pagination.prev", "Prev")), 1)]),
207
+ _: 1
208
+ }, 8, ["size", "disabled"]),
209
+ __props.compact ? (openBlock(), createElementBlock("div", {
210
+ key: 2,
211
+ "data-gr-pagination-compact": "",
212
+ class: normalizeClass(["px-2 text-[var(--gr-fg)] tabular-nums", labelClass.value]),
213
+ role: "status"
214
+ }, toDisplayString(currentPage.value) + " / " + toDisplayString(pageCount.value), 3)) : (openBlock(), createElementBlock(Fragment, { key: 3 }, [createElementVNode("ul", {
215
+ class: normalizeClass(["flex items-center [list-style:none]", pageListClass.value]),
216
+ "data-gr-pagination-pages": "",
217
+ role: "list"
218
+ }, [(openBlock(true), createElementBlock(Fragment, null, renderList(items.value, (item, index) => {
219
+ return openBlock(), createElementBlock("li", {
220
+ key: index,
221
+ "aria-hidden": typeof item === "string" ? "true" : void 0
222
+ }, [item === "ellipsis-start" || item === "ellipsis-end" ? (openBlock(), createElementBlock("span", {
223
+ key: 0,
224
+ "data-gr-pagination-ellipsis": "",
225
+ class: normalizeClass(["grid place-items-center text-[var(--gr-muted-fg)]", ellipsisClass.value])
226
+ }, "…", 2)) : (openBlock(), createElementBlock("button", {
227
+ key: 1,
228
+ type: "button",
229
+ "data-gr-pagination-page": "",
230
+ disabled: __props.disabled,
231
+ "aria-current": item === currentPage.value ? "page" : void 0,
232
+ "aria-label": unref(t)("gr.pagination.page", "Page {n}", { n: item }),
233
+ class: normalizeClass(["rounded-[var(--gr-radius-control)] font-600 transition-colors duration-[var(--gr-duration-fast)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)] disabled:cursor-not-allowed", [pageClass.value, item === currentPage.value ? "bg-[var(--gr-primary)] text-[var(--gr-primary-fg)]" : "text-[var(--gr-muted-fg)] hover:bg-[var(--gr-accent)] hover:text-[var(--gr-accent-fg)]"]]),
234
+ onClick: ($event) => goTo(item)
235
+ }, toDisplayString(item), 11, _hoisted_3))], 8, _hoisted_2);
236
+ }), 128))], 2), createElementVNode("div", _hoisted_4, toDisplayString(statusText.value), 1)], 64)),
237
+ createVNode(GrButton_default, {
238
+ variant: "ghost",
239
+ size: navButtonSize.value,
240
+ disabled: __props.disabled || currentPage.value >= pageCount.value,
241
+ "data-gr-pagination-next": "",
242
+ onClick: next
243
+ }, {
244
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(t)("gr.pagination.next", "Next")), 1)]),
245
+ _: 1
246
+ }, 8, ["size", "disabled"]),
247
+ createVNode(GrButton_default, {
248
+ variant: "ghost",
249
+ size: navButtonSize.value,
250
+ disabled: __props.disabled || currentPage.value >= pageCount.value,
251
+ "aria-label": unref(t)("gr.pagination.last", "Last page"),
252
+ "data-gr-pagination-last": "",
253
+ onClick: last
254
+ }, {
255
+ default: withCtx(() => [..._cache[3] || (_cache[3] = [createTextVNode(" » ", -1)])]),
256
+ _: 1
257
+ }, 8, [
258
+ "size",
259
+ "disabled",
260
+ "aria-label"
261
+ ]),
262
+ __props.showJumper ? (openBlock(), createElementBlock("div", {
263
+ key: 4,
264
+ class: normalizeClass(["flex items-center gap-2 text-[var(--gr-muted-fg)]", labelClass.value])
265
+ }, [createElementVNode("span", null, toDisplayString(resolvedJumperLabel.value), 1), withDirectives(createElementVNode("input", {
266
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => jumperValue.value = $event),
267
+ type: "number",
268
+ min: "1",
269
+ max: pageCount.value,
270
+ inputmode: "numeric",
271
+ "data-gr-pagination-jumper": "",
272
+ disabled: __props.disabled,
273
+ "aria-label": resolvedJumperLabel.value,
274
+ class: normalizeClass(["rounded-[var(--gr-radius-control)] border border-[var(--gr-brd)] bg-[var(--gr-bg)] px-2 text-center text-[var(--gr-fg)] tabular-nums transition-colors duration-[var(--gr-duration-fast)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)] disabled:cursor-not-allowed", jumperClass.value]),
275
+ onKeydown: withKeys(submitJumper, ["enter"]),
276
+ onBlur: submitJumper
277
+ }, null, 42, _hoisted_5), [[vModelText, jumperValue.value]])], 2)) : createCommentVNode("", true)
278
+ ], 10, _hoisted_1);
279
+ };
280
+ }
281
+ });
282
+ //#endregion
283
+ export { GrPagination_default as t };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GrPagination-waKhxBP7.js","names":[],"sources":["../../../../src/components/GrPagination/GrPagination.vue","../../../../src/components/GrPagination/GrPagination.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref, watch } from 'vue'\n\nimport { useGranularityTranslations } from '../../internal/granularityI18n'\nimport GrButton from '../GrButton/GrButton.vue'\nimport GrSelect from '../GrSelect/GrSelect.vue'\nimport { useGrComponentSize } from '../GrConfigProvider/context'\nimport {\n type GrPaginationSize,\n ellipsisSizes,\n jumperSizes,\n labelSizes,\n navButtonSizes,\n pageListGaps,\n pageSizes,\n pageSizeSelectWidths,\n rowGaps,\n} from './grPaginationStyles'\n\n/**\n * Пропы пагинации.\n *\n * `total` интерпретируется как общее количество элементов; число страниц\n * вычисляется из `total` и `pageSize`. Номера усекаются многоточием\n * (алгоритм boundary/sibling, как у MUI): всегда видны первая/последняя страница\n * и `siblingCount` соседей вокруг текущей.\n */\nexport interface GrPaginationProps {\n page: number\n pageSize: number\n total: number\n pageSizes?: number[]\n /** Сколько соседних страниц показывать вокруг текущей. По умолчанию `1`. */\n siblingCount?: number\n /** Сколько крайних страниц всегда показывать с каждого края. По умолчанию `1`. */\n boundaryCount?: number\n /**\n * Компактный вариант: вместо нумерованных страниц показывается индикатор\n * «текущая / всего» — удобно для узких мест (мобайл, тулбары таблиц).\n */\n compact?: boolean\n /** Показывать поле «перейти к странице» с быстрым переходом по вводу номера. */\n showJumper?: boolean\n /** Показывать селект размера страницы. */\n showPageSize?: boolean\n /** Показывать диапазон показанных элементов — «1–20 из 137». Слот `#total` сильнее. */\n showTotal?: boolean\n /** i18n-подпись перед полем перехода. По умолчанию — `gr.pagination.jumpTo`. */\n jumperLabel?: string\n /**\n * Имя навигационного лендмарка. По умолчанию — `gr.pagination.label`; задавать\n * стоит там, где пагинаций на странице несколько и их надо различать.\n */\n ariaLabel?: string\n /** Гасит всю пагинацию: номера, кнопки, селект размера и поле перехода. */\n disabled?: boolean\n size?: GrPaginationSize\n}\n\nexport interface GrPaginationEmits {\n (e: 'update:page', value: number): void\n (e: 'update:pageSize', value: number): void\n}\n\nconst { t } = useGranularityTranslations()\n\nconst props = withDefaults(defineProps<GrPaginationProps>(), {\n pageSizes: () => [10, 20, 50],\n siblingCount: 1,\n boundaryCount: 1,\n compact: false,\n showJumper: false,\n showPageSize: false,\n showTotal: false,\n jumperLabel: undefined,\n ariaLabel: undefined,\n disabled: false,\n size: undefined,\n})\n\ndefineSlots<{\n /** Диапазон показанных элементов целиком — вместо строки из локали. */\n total?: (props: { from: number, to: number, total: number }) => unknown\n}>()\n\nconst resolvedSize = useGrComponentSize(() => props.size, { component: 'GrPagination' })\n\nconst rowClass = computed(() => rowGaps[resolvedSize.value])\nconst pageListClass = computed(() => pageListGaps[resolvedSize.value])\nconst pageClass = computed(() => pageSizes[resolvedSize.value])\nconst jumperClass = computed(() => jumperSizes[resolvedSize.value])\nconst ellipsisClass = computed(() => ellipsisSizes[resolvedSize.value])\nconst labelClass = computed(() => labelSizes[resolvedSize.value])\nconst selectWrapClass = computed(() => pageSizeSelectWidths[resolvedSize.value])\nconst navButtonSize = computed(() => navButtonSizes[resolvedSize.value])\n\nconst emit = defineEmits<GrPaginationEmits>()\n\n// Делитель клампится: `pageSize: 0` дал бы `Infinity` страниц и бесконечный\n// цикл в `range()`.\nconst resolvedPageSize = computed(() => Math.max(1, Math.trunc(props.pageSize)))\nconst pageCount = computed(() => Math.max(1, Math.ceil(props.total / resolvedPageSize.value)))\n\n// Рендер идёт от зажатого номера: вотчер ниже просит родителя подтянуть `page`,\n// но на первом рендере он молчит, и без клампа пагинация осталась бы вовсе без\n// активной страницы.\nconst currentPage = computed(() => Math.min(Math.max(Math.trunc(props.page), 1), pageCount.value))\n\n// Контролируемый компонент: если `total`/`pageSize` уменьшились и текущая `page`\n// вышла за диапазон — просим родителя подтянуть её к последней странице.\nwatch(pageCount, (count) => {\n if (props.page > count)\n emit('update:page', count)\n})\n\nconst pageSizeModel = computed({\n get: () => String(props.pageSize),\n set: (value: string) => emit('update:pageSize', Number(value)),\n})\n\nconst pageSizeOptions = computed(() =>\n props.pageSizes.map(pageSize => ({\n value: String(pageSize),\n label: String(pageSize),\n })),\n)\n\nconst rangeFrom = computed(() => (props.total === 0 ? 0 : (currentPage.value - 1) * resolvedPageSize.value + 1))\nconst rangeTo = computed(() => Math.min(currentPage.value * resolvedPageSize.value, props.total))\n\ntype PaginationItem = number | 'ellipsis-start' | 'ellipsis-end'\n\nfunction range(start: number, end: number): number[] {\n const list: number[] = []\n for (let page = start; page <= end; page += 1)\n list.push(page)\n return list\n}\n\n// Алгоритм usePagination как в MUI: крайние `boundaryCount` страниц + `siblingCount`\n// соседей вокруг текущей, разрывы схлопываются в многоточие. Одиночный «пропущенный»\n// номер показываем как номер, а не как «…» (визуально ровнее).\nconst items = computed<PaginationItem[]>(() => {\n const count = pageCount.value\n const current = currentPage.value\n const boundaryCount = Math.max(0, props.boundaryCount)\n const siblingCount = Math.max(0, props.siblingCount)\n\n const startPages = range(1, Math.min(boundaryCount, count))\n const endPages = range(Math.max(count - boundaryCount + 1, boundaryCount + 1), count)\n\n const siblingsStart = Math.max(\n Math.min(current - siblingCount, count - boundaryCount - siblingCount * 2 - 1),\n boundaryCount + 2,\n )\n const siblingsEnd = Math.min(\n Math.max(current + siblingCount, boundaryCount + siblingCount * 2 + 2),\n endPages.length > 0 ? endPages[0] - 2 : count - 1,\n )\n\n return [\n ...startPages,\n ...(siblingsStart > boundaryCount + 2\n ? ['ellipsis-start' as const]\n : boundaryCount + 1 < count - boundaryCount\n ? [boundaryCount + 1]\n : []),\n ...range(siblingsStart, siblingsEnd),\n ...(siblingsEnd < count - boundaryCount - 1\n ? ['ellipsis-end' as const]\n : count - boundaryCount > boundaryCount\n ? [count - boundaryCount]\n : []),\n ...endPages,\n ]\n})\n\nfunction goTo(page: number): void {\n if (props.disabled)\n return\n\n emit('update:page', page)\n}\n\nfunction prev(): void {\n goTo(Math.max(1, currentPage.value - 1))\n}\n\nfunction next(): void {\n goTo(Math.min(pageCount.value, currentPage.value + 1))\n}\n\nfunction first(): void {\n goTo(1)\n}\n\nfunction last(): void {\n goTo(pageCount.value)\n}\n\n// «Перейти к странице»: клампим введённый номер к диапазону [1, pageCount]\n// и сбрасываем поле после перехода.\nconst jumperValue = ref('')\n\nfunction submitJumper(): void {\n const parsed = Number.parseInt(jumperValue.value, 10)\n jumperValue.value = ''\n if (Number.isNaN(parsed))\n return\n\n goTo(Math.min(pageCount.value, Math.max(1, parsed)))\n}\n\nconst resolvedJumperLabel = computed(() => props.jumperLabel ?? t('gr.pagination.jumpTo', 'Go to'))\nconst resolvedAriaLabel = computed(() => props.ariaLabel ?? t('gr.pagination.label', 'Pagination'))\nconst statusText = computed(() =>\n t('gr.pagination.status', 'Page {page} of {count}', { page: currentPage.value, count: pageCount.value }),\n)\nconst totalText = computed(() =>\n t('gr.pagination.total', '{from}–{to} of {total}', { from: rangeFrom.value, to: rangeTo.value, total: props.total }),\n)\n</script>\n\n<template>\n <div\n class=\"flex flex-wrap items-center justify-end\"\n :class=\"rowClass\"\n data-gr-pagination\n role=\"navigation\"\n :aria-label=\"resolvedAriaLabel\"\n >\n <div\n v-if=\"showTotal\"\n data-gr-pagination-total\n class=\"text-[var(--gr-muted-fg)] tabular-nums\"\n :class=\"labelClass\"\n >\n <slot name=\"total\" :from=\"rangeFrom\" :to=\"rangeTo\" :total=\"total\">\n {{ totalText }}\n </slot>\n </div>\n\n <div v-if=\"showPageSize\" :class=\"selectWrapClass\">\n <GrSelect\n v-model=\"pageSizeModel\"\n :options=\"pageSizeOptions\"\n :size=\"resolvedSize\"\n :disabled=\"disabled\"\n :aria-label=\"t('gr.pagination.pageSize', 'Page size')\"\n />\n </div>\n\n <GrButton variant=\"ghost\" :size=\"navButtonSize\" :disabled=\"disabled || currentPage <= 1\" :aria-label=\"t('gr.pagination.first', 'First page')\" data-gr-pagination-first @click=\"first\">\n «\n </GrButton>\n\n <GrButton variant=\"ghost\" :size=\"navButtonSize\" :disabled=\"disabled || currentPage <= 1\" data-gr-pagination-prev @click=\"prev\">\n {{ t('gr.pagination.prev', 'Prev') }}\n </GrButton>\n\n <!-- Компактный вариант: индикатор «текущая / всего» вместо нумерованных страниц. -->\n <div\n v-if=\"compact\"\n data-gr-pagination-compact\n class=\"px-2 text-[var(--gr-fg)] tabular-nums\"\n :class=\"labelClass\"\n role=\"status\"\n >\n {{ currentPage }} / {{ pageCount }}\n </div>\n\n <template v-else>\n <ul class=\"flex items-center [list-style:none]\" :class=\"pageListClass\" data-gr-pagination-pages role=\"list\">\n <li v-for=\"(item, index) in items\" :key=\"index\" :aria-hidden=\"typeof item === 'string' ? 'true' : undefined\">\n <span\n v-if=\"item === 'ellipsis-start' || item === 'ellipsis-end'\"\n data-gr-pagination-ellipsis\n class=\"grid place-items-center text-[var(--gr-muted-fg)]\"\n :class=\"ellipsisClass\"\n >…</span>\n <button\n v-else\n type=\"button\"\n data-gr-pagination-page\n :disabled=\"disabled\"\n :aria-current=\"item === currentPage ? 'page' : undefined\"\n :aria-label=\"t('gr.pagination.page', 'Page {n}', { n: item })\"\n class=\"rounded-[var(--gr-radius-control)] font-600 transition-colors duration-[var(--gr-duration-fast)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)] disabled:cursor-not-allowed\"\n :class=\"[\n pageClass,\n item === currentPage\n ? 'bg-[var(--gr-primary)] text-[var(--gr-primary-fg)]'\n // Подложка тональная, а не `--gr-muted`: серый на белом фоне даёт\n // 1.10:1 и на светлой теме hover был практически не виден, хотя у\n // соседних «назад/вперёд» (ghost-кнопки) он тонирован. Ряд обязан\n // читаться одним контролом.\n : 'text-[var(--gr-muted-fg)] hover:bg-[var(--gr-accent)] hover:text-[var(--gr-accent-fg)]',\n ]\"\n @click=\"goTo(item)\"\n >\n {{ item }}\n </button>\n </li>\n </ul>\n\n <!-- В компактном режиме смену страницы объявляет видимый индикатор. -->\n <div data-gr-pagination-status role=\"status\" class=\"sr-only\">\n {{ statusText }}\n </div>\n </template>\n\n <GrButton variant=\"ghost\" :size=\"navButtonSize\" :disabled=\"disabled || currentPage >= pageCount\" data-gr-pagination-next @click=\"next\">\n {{ t('gr.pagination.next', 'Next') }}\n </GrButton>\n\n <GrButton variant=\"ghost\" :size=\"navButtonSize\" :disabled=\"disabled || currentPage >= pageCount\" :aria-label=\"t('gr.pagination.last', 'Last page')\" data-gr-pagination-last @click=\"last\">\n »\n </GrButton>\n\n <!-- «Перейти к странице»: Enter или blur применяют введённый номер. -->\n <div v-if=\"showJumper\" class=\"flex items-center gap-2 text-[var(--gr-muted-fg)]\" :class=\"labelClass\">\n <span>{{ resolvedJumperLabel }}</span>\n <input\n v-model=\"jumperValue\"\n type=\"number\"\n min=\"1\"\n :max=\"pageCount\"\n inputmode=\"numeric\"\n data-gr-pagination-jumper\n :disabled=\"disabled\"\n :aria-label=\"resolvedJumperLabel\"\n class=\"rounded-[var(--gr-radius-control)] border border-[var(--gr-brd)] bg-[var(--gr-bg)] px-2 text-center text-[var(--gr-fg)] tabular-nums transition-colors duration-[var(--gr-duration-fast)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)] disabled:cursor-not-allowed\"\n :class=\"jumperClass\"\n @keydown.enter=\"submitJumper\"\n @blur=\"submitJumper\"\n >\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, ref, watch } from 'vue'\n\nimport { useGranularityTranslations } from '../../internal/granularityI18n'\nimport GrButton from '../GrButton/GrButton.vue'\nimport GrSelect from '../GrSelect/GrSelect.vue'\nimport { useGrComponentSize } from '../GrConfigProvider/context'\nimport {\n type GrPaginationSize,\n ellipsisSizes,\n jumperSizes,\n labelSizes,\n navButtonSizes,\n pageListGaps,\n pageSizes,\n pageSizeSelectWidths,\n rowGaps,\n} from './grPaginationStyles'\n\n/**\n * Пропы пагинации.\n *\n * `total` интерпретируется как общее количество элементов; число страниц\n * вычисляется из `total` и `pageSize`. Номера усекаются многоточием\n * (алгоритм boundary/sibling, как у MUI): всегда видны первая/последняя страница\n * и `siblingCount` соседей вокруг текущей.\n */\nexport interface GrPaginationProps {\n page: number\n pageSize: number\n total: number\n pageSizes?: number[]\n /** Сколько соседних страниц показывать вокруг текущей. По умолчанию `1`. */\n siblingCount?: number\n /** Сколько крайних страниц всегда показывать с каждого края. По умолчанию `1`. */\n boundaryCount?: number\n /**\n * Компактный вариант: вместо нумерованных страниц показывается индикатор\n * «текущая / всего» — удобно для узких мест (мобайл, тулбары таблиц).\n */\n compact?: boolean\n /** Показывать поле «перейти к странице» с быстрым переходом по вводу номера. */\n showJumper?: boolean\n /** Показывать селект размера страницы. */\n showPageSize?: boolean\n /** Показывать диапазон показанных элементов — «1–20 из 137». Слот `#total` сильнее. */\n showTotal?: boolean\n /** i18n-подпись перед полем перехода. По умолчанию — `gr.pagination.jumpTo`. */\n jumperLabel?: string\n /**\n * Имя навигационного лендмарка. По умолчанию — `gr.pagination.label`; задавать\n * стоит там, где пагинаций на странице несколько и их надо различать.\n */\n ariaLabel?: string\n /** Гасит всю пагинацию: номера, кнопки, селект размера и поле перехода. */\n disabled?: boolean\n size?: GrPaginationSize\n}\n\nexport interface GrPaginationEmits {\n (e: 'update:page', value: number): void\n (e: 'update:pageSize', value: number): void\n}\n\nconst { t } = useGranularityTranslations()\n\nconst props = withDefaults(defineProps<GrPaginationProps>(), {\n pageSizes: () => [10, 20, 50],\n siblingCount: 1,\n boundaryCount: 1,\n compact: false,\n showJumper: false,\n showPageSize: false,\n showTotal: false,\n jumperLabel: undefined,\n ariaLabel: undefined,\n disabled: false,\n size: undefined,\n})\n\ndefineSlots<{\n /** Диапазон показанных элементов целиком — вместо строки из локали. */\n total?: (props: { from: number, to: number, total: number }) => unknown\n}>()\n\nconst resolvedSize = useGrComponentSize(() => props.size, { component: 'GrPagination' })\n\nconst rowClass = computed(() => rowGaps[resolvedSize.value])\nconst pageListClass = computed(() => pageListGaps[resolvedSize.value])\nconst pageClass = computed(() => pageSizes[resolvedSize.value])\nconst jumperClass = computed(() => jumperSizes[resolvedSize.value])\nconst ellipsisClass = computed(() => ellipsisSizes[resolvedSize.value])\nconst labelClass = computed(() => labelSizes[resolvedSize.value])\nconst selectWrapClass = computed(() => pageSizeSelectWidths[resolvedSize.value])\nconst navButtonSize = computed(() => navButtonSizes[resolvedSize.value])\n\nconst emit = defineEmits<GrPaginationEmits>()\n\n// Делитель клампится: `pageSize: 0` дал бы `Infinity` страниц и бесконечный\n// цикл в `range()`.\nconst resolvedPageSize = computed(() => Math.max(1, Math.trunc(props.pageSize)))\nconst pageCount = computed(() => Math.max(1, Math.ceil(props.total / resolvedPageSize.value)))\n\n// Рендер идёт от зажатого номера: вотчер ниже просит родителя подтянуть `page`,\n// но на первом рендере он молчит, и без клампа пагинация осталась бы вовсе без\n// активной страницы.\nconst currentPage = computed(() => Math.min(Math.max(Math.trunc(props.page), 1), pageCount.value))\n\n// Контролируемый компонент: если `total`/`pageSize` уменьшились и текущая `page`\n// вышла за диапазон — просим родителя подтянуть её к последней странице.\nwatch(pageCount, (count) => {\n if (props.page > count)\n emit('update:page', count)\n})\n\nconst pageSizeModel = computed({\n get: () => String(props.pageSize),\n set: (value: string) => emit('update:pageSize', Number(value)),\n})\n\nconst pageSizeOptions = computed(() =>\n props.pageSizes.map(pageSize => ({\n value: String(pageSize),\n label: String(pageSize),\n })),\n)\n\nconst rangeFrom = computed(() => (props.total === 0 ? 0 : (currentPage.value - 1) * resolvedPageSize.value + 1))\nconst rangeTo = computed(() => Math.min(currentPage.value * resolvedPageSize.value, props.total))\n\ntype PaginationItem = number | 'ellipsis-start' | 'ellipsis-end'\n\nfunction range(start: number, end: number): number[] {\n const list: number[] = []\n for (let page = start; page <= end; page += 1)\n list.push(page)\n return list\n}\n\n// Алгоритм usePagination как в MUI: крайние `boundaryCount` страниц + `siblingCount`\n// соседей вокруг текущей, разрывы схлопываются в многоточие. Одиночный «пропущенный»\n// номер показываем как номер, а не как «…» (визуально ровнее).\nconst items = computed<PaginationItem[]>(() => {\n const count = pageCount.value\n const current = currentPage.value\n const boundaryCount = Math.max(0, props.boundaryCount)\n const siblingCount = Math.max(0, props.siblingCount)\n\n const startPages = range(1, Math.min(boundaryCount, count))\n const endPages = range(Math.max(count - boundaryCount + 1, boundaryCount + 1), count)\n\n const siblingsStart = Math.max(\n Math.min(current - siblingCount, count - boundaryCount - siblingCount * 2 - 1),\n boundaryCount + 2,\n )\n const siblingsEnd = Math.min(\n Math.max(current + siblingCount, boundaryCount + siblingCount * 2 + 2),\n endPages.length > 0 ? endPages[0] - 2 : count - 1,\n )\n\n return [\n ...startPages,\n ...(siblingsStart > boundaryCount + 2\n ? ['ellipsis-start' as const]\n : boundaryCount + 1 < count - boundaryCount\n ? [boundaryCount + 1]\n : []),\n ...range(siblingsStart, siblingsEnd),\n ...(siblingsEnd < count - boundaryCount - 1\n ? ['ellipsis-end' as const]\n : count - boundaryCount > boundaryCount\n ? [count - boundaryCount]\n : []),\n ...endPages,\n ]\n})\n\nfunction goTo(page: number): void {\n if (props.disabled)\n return\n\n emit('update:page', page)\n}\n\nfunction prev(): void {\n goTo(Math.max(1, currentPage.value - 1))\n}\n\nfunction next(): void {\n goTo(Math.min(pageCount.value, currentPage.value + 1))\n}\n\nfunction first(): void {\n goTo(1)\n}\n\nfunction last(): void {\n goTo(pageCount.value)\n}\n\n// «Перейти к странице»: клампим введённый номер к диапазону [1, pageCount]\n// и сбрасываем поле после перехода.\nconst jumperValue = ref('')\n\nfunction submitJumper(): void {\n const parsed = Number.parseInt(jumperValue.value, 10)\n jumperValue.value = ''\n if (Number.isNaN(parsed))\n return\n\n goTo(Math.min(pageCount.value, Math.max(1, parsed)))\n}\n\nconst resolvedJumperLabel = computed(() => props.jumperLabel ?? t('gr.pagination.jumpTo', 'Go to'))\nconst resolvedAriaLabel = computed(() => props.ariaLabel ?? t('gr.pagination.label', 'Pagination'))\nconst statusText = computed(() =>\n t('gr.pagination.status', 'Page {page} of {count}', { page: currentPage.value, count: pageCount.value }),\n)\nconst totalText = computed(() =>\n t('gr.pagination.total', '{from}–{to} of {total}', { from: rangeFrom.value, to: rangeTo.value, total: props.total }),\n)\n</script>\n\n<template>\n <div\n class=\"flex flex-wrap items-center justify-end\"\n :class=\"rowClass\"\n data-gr-pagination\n role=\"navigation\"\n :aria-label=\"resolvedAriaLabel\"\n >\n <div\n v-if=\"showTotal\"\n data-gr-pagination-total\n class=\"text-[var(--gr-muted-fg)] tabular-nums\"\n :class=\"labelClass\"\n >\n <slot name=\"total\" :from=\"rangeFrom\" :to=\"rangeTo\" :total=\"total\">\n {{ totalText }}\n </slot>\n </div>\n\n <div v-if=\"showPageSize\" :class=\"selectWrapClass\">\n <GrSelect\n v-model=\"pageSizeModel\"\n :options=\"pageSizeOptions\"\n :size=\"resolvedSize\"\n :disabled=\"disabled\"\n :aria-label=\"t('gr.pagination.pageSize', 'Page size')\"\n />\n </div>\n\n <GrButton variant=\"ghost\" :size=\"navButtonSize\" :disabled=\"disabled || currentPage <= 1\" :aria-label=\"t('gr.pagination.first', 'First page')\" data-gr-pagination-first @click=\"first\">\n «\n </GrButton>\n\n <GrButton variant=\"ghost\" :size=\"navButtonSize\" :disabled=\"disabled || currentPage <= 1\" data-gr-pagination-prev @click=\"prev\">\n {{ t('gr.pagination.prev', 'Prev') }}\n </GrButton>\n\n <!-- Компактный вариант: индикатор «текущая / всего» вместо нумерованных страниц. -->\n <div\n v-if=\"compact\"\n data-gr-pagination-compact\n class=\"px-2 text-[var(--gr-fg)] tabular-nums\"\n :class=\"labelClass\"\n role=\"status\"\n >\n {{ currentPage }} / {{ pageCount }}\n </div>\n\n <template v-else>\n <ul class=\"flex items-center [list-style:none]\" :class=\"pageListClass\" data-gr-pagination-pages role=\"list\">\n <li v-for=\"(item, index) in items\" :key=\"index\" :aria-hidden=\"typeof item === 'string' ? 'true' : undefined\">\n <span\n v-if=\"item === 'ellipsis-start' || item === 'ellipsis-end'\"\n data-gr-pagination-ellipsis\n class=\"grid place-items-center text-[var(--gr-muted-fg)]\"\n :class=\"ellipsisClass\"\n >…</span>\n <button\n v-else\n type=\"button\"\n data-gr-pagination-page\n :disabled=\"disabled\"\n :aria-current=\"item === currentPage ? 'page' : undefined\"\n :aria-label=\"t('gr.pagination.page', 'Page {n}', { n: item })\"\n class=\"rounded-[var(--gr-radius-control)] font-600 transition-colors duration-[var(--gr-duration-fast)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)] disabled:cursor-not-allowed\"\n :class=\"[\n pageClass,\n item === currentPage\n ? 'bg-[var(--gr-primary)] text-[var(--gr-primary-fg)]'\n // Подложка тональная, а не `--gr-muted`: серый на белом фоне даёт\n // 1.10:1 и на светлой теме hover был практически не виден, хотя у\n // соседних «назад/вперёд» (ghost-кнопки) он тонирован. Ряд обязан\n // читаться одним контролом.\n : 'text-[var(--gr-muted-fg)] hover:bg-[var(--gr-accent)] hover:text-[var(--gr-accent-fg)]',\n ]\"\n @click=\"goTo(item)\"\n >\n {{ item }}\n </button>\n </li>\n </ul>\n\n <!-- В компактном режиме смену страницы объявляет видимый индикатор. -->\n <div data-gr-pagination-status role=\"status\" class=\"sr-only\">\n {{ statusText }}\n </div>\n </template>\n\n <GrButton variant=\"ghost\" :size=\"navButtonSize\" :disabled=\"disabled || currentPage >= pageCount\" data-gr-pagination-next @click=\"next\">\n {{ t('gr.pagination.next', 'Next') }}\n </GrButton>\n\n <GrButton variant=\"ghost\" :size=\"navButtonSize\" :disabled=\"disabled || currentPage >= pageCount\" :aria-label=\"t('gr.pagination.last', 'Last page')\" data-gr-pagination-last @click=\"last\">\n »\n </GrButton>\n\n <!-- «Перейти к странице»: Enter или blur применяют введённый номер. -->\n <div v-if=\"showJumper\" class=\"flex items-center gap-2 text-[var(--gr-muted-fg)]\" :class=\"labelClass\">\n <span>{{ resolvedJumperLabel }}</span>\n <input\n v-model=\"jumperValue\"\n type=\"number\"\n min=\"1\"\n :max=\"pageCount\"\n inputmode=\"numeric\"\n data-gr-pagination-jumper\n :disabled=\"disabled\"\n :aria-label=\"resolvedJumperLabel\"\n class=\"rounded-[var(--gr-radius-control)] border border-[var(--gr-brd)] bg-[var(--gr-bg)] px-2 text-center text-[var(--gr-fg)] tabular-nums transition-colors duration-[var(--gr-duration-fast)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)] disabled:cursor-not-allowed\"\n :class=\"jumperClass\"\n @keydown.enter=\"submitJumper\"\n @blur=\"submitJumper\"\n >\n </div>\n </div>\n</template>\n"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import { t as GrPagination_default } from "./chunks/GrPagination-C5Y69CuK.js";
2
- import { t as grPaginationConfig } from "../../chunks/config-JpHA4Xx0.js";
3
- export { GrPagination_default as GrPagination, GrPagination_default as default, grPaginationConfig };
1
+ import { n as grPaginationSafelist, t as grPaginationConfig } from "../../chunks/config-DSJY6aEl.js";
2
+ import { t as GrPagination_default } from "./chunks/GrPagination-waKhxBP7.js";
3
+ export { GrPagination_default as GrPagination, GrPagination_default as default, grPaginationConfig, grPaginationSafelist };