@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
@@ -1 +0,0 @@
1
- {"version":3,"file":"GrImageViewer-DDLJkvIU.js","names":["$slots"],"sources":["../../../../src/components/GrImageViewer/composables/useZoomPan.ts","../../../../src/components/GrImageViewer/composables/useWheelGesture.ts","../../../../src/components/GrImageViewer/composables/useViewerKeyboard.ts","../../../../src/components/GrImageViewer/GrImageViewer.vue","../../../../src/components/GrImageViewer/GrImageViewer.vue"],"sourcesContent":["import { computed, ref, type Ref } from 'vue'\n\nconst TRAILING_ZERO_DECIMAL_RE = /\\.0$/\n\nexport function formatPercent(value: number): string {\n if (Number.isInteger(value))\n return String(value)\n return value.toFixed(1).replace(TRAILING_ZERO_DECIMAL_RE, '')\n}\n\nexport interface UseZoomPanOptions {\n minScale: () => number\n maxScale: () => number\n zoomRate: () => number\n draggable: () => boolean\n /** Ссылка на `<img>` — для измерения layout-размера и подписки ResizeObserver. */\n imageEl: Ref<HTMLImageElement | null>\n /** Колбэк на поворот (эмит `rotate`). */\n onRotate: (deg: number) => void\n}\n\n/**\n * useZoomPan — состояние и логика масштаба/поворота/панорамирования картинки,\n * а также метрики (натуральный/вписанный/фактический размер, реальный масштаб).\n * Вынесено из монолитного `GrImageViewer.vue`.\n */\nexport function useZoomPan(options: UseZoomPanOptions) {\n const scale = ref(1)\n const rotation = ref(0)\n const offsetX = ref(0)\n const offsetY = ref(0)\n\n const isDragging = ref(false)\n let dragStartX = 0\n let dragStartY = 0\n let dragOffsetStartX = 0\n let dragOffsetStartY = 0\n\n // Натуральный размер (из `<img>`) и layout-размер вписанного (`object-contain`) изображения.\n const naturalWidth = ref(0)\n const naturalHeight = ref(0)\n const fittedWidth = ref(0)\n const fittedHeight = ref(0)\n\n let resizeObserver: ResizeObserver | null = null\n\n const imageStyle = computed(() => ({\n transform: `translate3d(${offsetX.value}px, ${offsetY.value}px, 0) scale(${scale.value}) rotate(${rotation.value}deg)`,\n }))\n\n const zoomValueText = computed(() => formatPercent(scale.value * 100))\n\n // Фактический размер изображения на экране вдоль его осей (footprint), c учётом scale.\n const renderedWidth = computed(() => Math.round(fittedWidth.value * scale.value))\n const renderedHeight = computed(() => Math.round(fittedHeight.value * scale.value))\n\n // Реальный масштаб относительно натурального размера (доля). Не зависит от rotation.\n const realScale = computed(() => {\n if (!naturalWidth.value)\n return 0\n return (fittedWidth.value * scale.value) / naturalWidth.value\n })\n const realScalePercent = computed(() => formatPercent(realScale.value * 100))\n\n function setScale(value: number): void {\n const clamped = Math.min(options.maxScale(), Math.max(options.minScale(), value))\n scale.value = Number(clamped.toFixed(4))\n }\n\n function zoomIn(): void {\n setScale(scale.value * options.zoomRate())\n }\n\n function zoomOut(): void {\n setScale(scale.value / options.zoomRate())\n }\n\n function rotateLeft(): void {\n rotation.value -= 90\n options.onRotate(rotation.value)\n }\n\n function rotateRight(): void {\n rotation.value += 90\n options.onRotate(rotation.value)\n }\n\n function resetTransform(): void {\n scale.value = 1\n rotation.value = 0\n offsetX.value = 0\n offsetY.value = 0\n isDragging.value = false\n }\n\n function resetImageMetrics(): void {\n naturalWidth.value = 0\n naturalHeight.value = 0\n fittedWidth.value = 0\n fittedHeight.value = 0\n }\n\n function measureFitted(): void {\n const el = options.imageEl.value\n if (!el)\n return\n // offsetWidth/Height — layout-размер вписанного изображения, без CSS transform.\n fittedWidth.value = el.offsetWidth\n fittedHeight.value = el.offsetHeight\n }\n\n function onImageLoad(event: Event): void {\n const el = event.target as HTMLImageElement\n naturalWidth.value = el.naturalWidth\n naturalHeight.value = el.naturalHeight\n measureFitted()\n }\n\n function startObservingImage(): void {\n const el = options.imageEl.value\n if (!el || typeof ResizeObserver === 'undefined')\n return\n\n if (!resizeObserver)\n resizeObserver = new ResizeObserver(() => measureFitted())\n\n resizeObserver.observe(el)\n\n // Если картинка уже в кэше и `load` не сработал — считаем метрики сразу.\n if (el.complete && el.naturalWidth) {\n naturalWidth.value = el.naturalWidth\n naturalHeight.value = el.naturalHeight\n }\n\n measureFitted()\n }\n\n function stopObservingImage(): void {\n resizeObserver?.disconnect()\n }\n\n function onPointerDown(event: PointerEvent): void {\n // Тянем только основной кнопкой и только если drag включён.\n if (!options.draggable() || event.button !== 0)\n return\n\n event.preventDefault()\n isDragging.value = true\n dragStartX = event.clientX\n dragStartY = event.clientY\n dragOffsetStartX = offsetX.value\n dragOffsetStartY = offsetY.value\n\n // Захватываем указатель, чтобы движение/отпускание ловились за пределами картинки.\n ;(event.currentTarget as Element).setPointerCapture?.(event.pointerId)\n }\n\n function onPointerMove(event: PointerEvent): void {\n if (!isDragging.value)\n return\n offsetX.value = dragOffsetStartX + (event.clientX - dragStartX)\n offsetY.value = dragOffsetStartY + (event.clientY - dragStartY)\n }\n\n function onPointerUp(event: PointerEvent): void {\n if (!isDragging.value)\n return\n isDragging.value = false\n ;(event.currentTarget as Element).releasePointerCapture?.(event.pointerId)\n }\n\n return {\n scale,\n rotation,\n offsetX,\n offsetY,\n isDragging,\n naturalWidth,\n naturalHeight,\n fittedWidth,\n fittedHeight,\n imageStyle,\n zoomValueText,\n renderedWidth,\n renderedHeight,\n realScale,\n realScalePercent,\n setScale,\n zoomIn,\n zoomOut,\n rotateLeft,\n rotateRight,\n resetTransform,\n resetImageMetrics,\n measureFitted,\n onImageLoad,\n startObservingImage,\n stopObservingImage,\n onPointerDown,\n onPointerMove,\n onPointerUp,\n }\n}\n","import { ref } from 'vue'\n\n// Чувствительность масштабирования колесом/трекпадом: чем больше — тем резче реакция.\nconst WHEEL_ZOOM_SENSITIVITY = 0.0015\n// Сколько ms простоя после последнего wheel-события считаем «зум завершён»\n// (после этого возвращаем плавный CSS-переход).\nconst WHEEL_IDLE_MS = 120\n\nexport interface UseWheelGestureOptions {\n /** Разрешён ли зум колесом (проп `wheelZoom` + наличие изображений). */\n enabled: () => boolean\n /** Применить множитель масштаба (накопленный за кадр). */\n applyZoomFactor: (factor: number) => void\n}\n\n/**\n * useWheelGesture — масштабирование колесом мыши / жестом трекпада с батчингом\n * по `requestAnimationFrame` (рендер не чаще кадра — без «дёрганья»/наслоения) и\n * временным отключением CSS-перехода на время жеста (`isWheelZooming`).\n */\nexport function useWheelGesture(options: UseWheelGestureOptions) {\n const isWheelZooming = ref(false)\n\n let pendingWheelDelta = 0\n let wheelFrameId: number | null = null\n let wheelIdleTimer: ReturnType<typeof setTimeout> | null = null\n\n function cancelWheelFrame(): void {\n if (wheelFrameId !== null) {\n cancelAnimationFrame(wheelFrameId)\n wheelFrameId = null\n }\n }\n\n function endWheelZoom(): void {\n if (wheelIdleTimer !== null) {\n clearTimeout(wheelIdleTimer)\n wheelIdleTimer = null\n }\n\n isWheelZooming.value = false\n pendingWheelDelta = 0\n cancelWheelFrame()\n }\n\n // Применяем накопленный за кадр deltaY одним обновлением scale.\n function flushWheelZoom(): void {\n wheelFrameId = null\n\n const delta = pendingWheelDelta\n pendingWheelDelta = 0\n\n if (!delta)\n return\n\n // Экспоненциальный шаг — плавно и одинаково для колеса и трекпада.\n // delta < 0 (scroll up) — приближение, delta > 0 — отдаление.\n const factor = Math.exp(-delta * WHEEL_ZOOM_SENSITIVITY)\n options.applyZoomFactor(factor)\n }\n\n function onWheel(event: WheelEvent): void {\n if (!options.enabled())\n return\n\n // Не даём странице/оверлею проскроллиться — колесо отдаём под зум.\n event.preventDefault()\n\n // Во время непрерывного зума отключаем CSS-переход: плавность даёт само\n // покадровое обновление, а transition на микрошагах вызывает лаг/наслоение.\n isWheelZooming.value = true\n\n pendingWheelDelta += event.deltaY\n\n if (wheelFrameId === null)\n wheelFrameId = requestAnimationFrame(flushWheelZoom)\n\n if (wheelIdleTimer !== null)\n clearTimeout(wheelIdleTimer)\n\n // По завершении жеста возвращаем плавный переход для дискретных зумов.\n wheelIdleTimer = setTimeout(() => {\n wheelIdleTimer = null\n isWheelZooming.value = false\n }, WHEEL_IDLE_MS)\n }\n\n return { isWheelZooming, onWheel, endWheelZoom }\n}\n","export interface ViewerKeyboardActions {\n close: () => void\n prev: () => void\n next: () => void\n zoomIn: () => void\n zoomOut: () => void\n reset: () => void\n}\n\nexport interface UseViewerKeyboardOptions {\n /** Закрывать ли по Escape (проп `closeOnPressEscape`). */\n closeOnEscape: () => boolean\n actions: ViewerKeyboardActions\n}\n\n/**\n * useViewerKeyboard — клавиатурное управление просмотрщиком:\n * Esc — закрыть, стрелки — переключение, `+`/`-`/`0` — зум/сброс.\n */\nexport function useViewerKeyboard(options: UseViewerKeyboardOptions) {\n const { actions } = options\n\n function onKeydown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'Escape':\n if (!options.closeOnEscape())\n return\n event.preventDefault()\n actions.close()\n return\n\n case 'ArrowLeft':\n event.preventDefault()\n actions.prev()\n return\n\n case 'ArrowRight':\n event.preventDefault()\n actions.next()\n return\n\n case '+':\n case '=':\n case 'Add':\n event.preventDefault()\n actions.zoomIn()\n return\n\n case '-':\n case '_':\n case 'Subtract':\n event.preventDefault()\n actions.zoomOut()\n return\n\n case '0':\n event.preventDefault()\n actions.reset()\n break\n\n default:\n }\n }\n\n return { onKeydown }\n}\n","<script setup lang=\"ts\">\nimport { computed, nextTick, onBeforeUnmount, ref, watch } from 'vue'\nimport { Dialog, DialogPanel, TransitionChild, TransitionRoot } from '@headlessui/vue'\n\nimport { useGranularityTranslations } from '../../internal/granularityI18n'\nimport { useScrollLock } from '../../composables/internal/useScrollLock'\nimport { useZoomPan } from './composables/useZoomPan'\nimport { useWheelGesture } from './composables/useWheelGesture'\nimport { useViewerKeyboard } from './composables/useViewerKeyboard'\n\n/**\n * Usage:\n *\n * <GrImageViewer\n * v-model=\"open\"\n * :url-list=\"images\"\n * :initial-index=\"0\"\n * show-progress\n * hide-on-click-modal\n * />\n *\n * Логика вынесена в composables: `useZoomPan` (масштаб/поворот/пан + метрики),\n * `useWheelGesture` (зум колесом/трекпадом с rAF-батчингом), `useViewerKeyboard`\n * (клавиатура). Сам SFC отвечает за оверлей, индекс изображений и композицию.\n */\nconst props = withDefaults(\n defineProps<{\n modelValue: boolean\n urlList: string[]\n initialIndex?: number\n zoomRate?: number\n minScale?: number\n maxScale?: number\n hideOnClickModal?: boolean\n closeOnPressEscape?: boolean\n showProgress?: boolean\n showZoomValue?: boolean\n /** Включает масштабирование колесом мыши / жестом на трекпаде. По умолчанию включено. */\n wheelZoom?: boolean\n /** Включает перетаскивание (pan) картинки мышью. При наведении курсор «рука». По умолчанию выключено. */\n draggable?: boolean\n zIndex?: number\n /** i18n: aria-label кнопки закрытия. */\n closeLabel?: string\n /** i18n: aria-label кнопки «предыдущее изображение». */\n prevLabel?: string\n /** i18n: aria-label кнопки «следующее изображение». */\n nextLabel?: string\n /** i18n: aria-label кнопки «увеличить». */\n zoomInLabel?: string\n /** i18n: aria-label кнопки «уменьшить». */\n zoomOutLabel?: string\n /** i18n: aria-label кнопки «сбросить масштаб». */\n resetZoomLabel?: string\n /** i18n: aria-label кнопки «повернуть влево». */\n rotateLeftLabel?: string\n /** i18n: aria-label кнопки «повернуть вправо». */\n rotateRightLabel?: string\n /** i18n: текст в пустом состоянии (нет изображений). */\n emptyText?: string\n }>(),\n {\n initialIndex: 0,\n zoomRate: 1.2,\n minScale: 0.5,\n maxScale: 5,\n hideOnClickModal: false,\n closeOnPressEscape: true,\n showProgress: false,\n showZoomValue: true,\n wheelZoom: true,\n draggable: false,\n zIndex: undefined,\n closeLabel: undefined,\n prevLabel: undefined,\n nextLabel: undefined,\n zoomInLabel: undefined,\n zoomOutLabel: undefined,\n resetZoomLabel: undefined,\n rotateLeftLabel: undefined,\n rotateRightLabel: undefined,\n emptyText: undefined,\n },\n)\n\nconst { t } = useGranularityTranslations()\nconst resolvedCloseLabel = computed(() => props.closeLabel ?? t('gr.imageViewer.close', 'Close image viewer'))\nconst resolvedPrevLabel = computed(() => props.prevLabel ?? t('gr.imageViewer.prev', 'Previous image'))\nconst resolvedNextLabel = computed(() => props.nextLabel ?? t('gr.imageViewer.next', 'Next image'))\nconst resolvedZoomInLabel = computed(() => props.zoomInLabel ?? t('gr.imageViewer.zoomIn', 'Zoom in'))\nconst resolvedZoomOutLabel = computed(() => props.zoomOutLabel ?? t('gr.imageViewer.zoomOut', 'Zoom out'))\nconst resolvedResetZoomLabel = computed(() => props.resetZoomLabel ?? t('gr.imageViewer.resetZoom', 'Reset zoom'))\nconst resolvedRotateLeftLabel = computed(() => props.rotateLeftLabel ?? t('gr.imageViewer.rotateLeft', 'Rotate left'))\nconst resolvedRotateRightLabel = computed(() => props.rotateRightLabel ?? t('gr.imageViewer.rotateRight', 'Rotate right'))\nconst resolvedEmptyText = computed(() => props.emptyText ?? t('gr.imageViewer.empty', 'No image'))\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n (e: 'close'): void\n (e: 'switch', newIndex: number): void\n (e: 'rotate', deg: number): void\n}>()\n\ntype GrImageViewerToolbarActions = {\n close: () => void\n prev: () => void\n next: () => void\n zoomIn: () => void\n zoomOut: () => void\n reset: () => void\n rotateLeft: () => void\n rotateRight: () => void\n}\n\ntype GrImageViewerSlotProps = {\n index: number\n displayIndex: number\n total: number\n scale: number\n rotation: number\n /** Натуральный (исходный) размер картинки, px. 0 пока изображение не загружено. */\n naturalWidth: number\n naturalHeight: number\n /** Фактический размер изображения на экране c учётом scale, px (footprint вдоль осей картинки). */\n renderedWidth: number\n renderedHeight: number\n /** Реальный масштаб относительно натурального размера (доля): renderedWidth / naturalWidth. */\n realScale: number\n /** Реальный масштаб в процентах, отформатированный (например `67`). */\n realScalePercent: string\n actions: GrImageViewerToolbarActions\n}\n\nconst DEFAULT_Z_INDEX = 2000\n\nconst open = computed(() => props.modelValue)\n\n// SSR-guard для teleport + общий reference-counted scroll-lock (как в GrModal/GrDrawer).\nconst isClient = typeof window !== 'undefined'\nconst { lock: lockBodyScroll, unlock: unlockBodyScroll } = useScrollLock()\n\nconst total = computed(() => props.urlList.length)\nconst hasImages = computed(() => total.value > 0)\n\nconst currentIndex = ref(0)\nconst imageEl = ref<HTMLImageElement | null>(null)\n\n// Масштаб / поворот / панорамирование + метрики изображения.\nconst {\n scale,\n rotation,\n isDragging,\n naturalWidth,\n naturalHeight,\n renderedWidth,\n renderedHeight,\n realScale,\n realScalePercent,\n imageStyle,\n zoomValueText,\n setScale,\n zoomIn,\n zoomOut,\n rotateLeft,\n rotateRight,\n resetTransform,\n resetImageMetrics,\n onImageLoad,\n startObservingImage,\n stopObservingImage,\n onPointerDown,\n onPointerMove,\n onPointerUp,\n} = useZoomPan({\n minScale: () => props.minScale,\n maxScale: () => props.maxScale,\n zoomRate: () => props.zoomRate,\n draggable: () => props.draggable,\n imageEl,\n onRotate: deg => emit('rotate', deg),\n})\n\n// Зум колесом мыши / жестом трекпада.\nconst { isWheelZooming, onWheel, endWheelZoom } = useWheelGesture({\n enabled: () => props.wheelZoom && hasImages.value,\n applyZoomFactor: factor => setScale(scale.value * factor),\n})\n\nconst currentUrl = computed(() => (hasImages.value ? props.urlList[currentIndex.value] : undefined))\nconst displayIndex = computed(() => (hasImages.value ? currentIndex.value + 1 : 0))\n\nconst viewerStyle = computed(() => ({\n zIndex: String(Number.isFinite(props.zIndex) ? props.zIndex : DEFAULT_Z_INDEX),\n}))\n\n// Плавный CSS-переход только для дискретных зумов; при wheel-зуме/перетаскивании отключаем.\nconst imageTransitionClass = computed(() =>\n isWheelZooming.value || isDragging.value ? '' : 'transition-transform duration-150 ease-out',\n)\n\n// Курсор «рука» (grab/grabbing), только если включён drag.\nconst imageCursorClass = computed(() => {\n if (!props.draggable)\n return ''\n return isDragging.value ? 'cursor-grabbing' : 'cursor-grab'\n})\n\nfunction normalizeIndex(value: number): number {\n if (!hasImages.value)\n return 0\n const normalized = Number.isFinite(value) ? Math.trunc(value) : 0\n return ((normalized % total.value) + total.value) % total.value\n}\n\nfunction setIndex(nextIndex: number, options?: { emitSwitch?: boolean }): void {\n const normalizedIndex = normalizeIndex(nextIndex)\n if (normalizedIndex === currentIndex.value)\n return\n\n currentIndex.value = normalizedIndex\n resetTransform()\n resetImageMetrics()\n endWheelZoom()\n\n if (options?.emitSwitch !== false)\n emit('switch', normalizedIndex)\n}\n\nfunction syncIndexFromInitial(): void {\n if (!hasImages.value) {\n currentIndex.value = 0\n return\n }\n currentIndex.value = normalizeIndex(props.initialIndex)\n resetTransform()\n resetImageMetrics()\n endWheelZoom()\n}\n\nfunction preloadAt(index: number): void {\n const url = props.urlList[index]\n if (!url)\n return\n const image = new Image()\n image.decoding = 'async'\n image.src = url\n}\n\nfunction closeViewer(): void {\n emit('update:modelValue', false)\n emit('close')\n}\n\nfunction prev(): void {\n setIndex(currentIndex.value - 1)\n}\n\nfunction next(): void {\n setIndex(currentIndex.value + 1)\n}\n\nconst toolbarActions: GrImageViewerToolbarActions = {\n close: closeViewer,\n prev,\n next,\n zoomIn,\n zoomOut,\n reset: resetTransform,\n rotateLeft,\n rotateRight,\n}\n\nconst toolbarSlotProps = computed<GrImageViewerSlotProps>(() => ({\n index: currentIndex.value,\n displayIndex: displayIndex.value,\n total: total.value,\n scale: scale.value,\n rotation: rotation.value,\n naturalWidth: naturalWidth.value,\n naturalHeight: naturalHeight.value,\n renderedWidth: renderedWidth.value,\n renderedHeight: renderedHeight.value,\n realScale: realScale.value,\n realScalePercent: realScalePercent.value,\n actions: toolbarActions,\n}))\n\nfunction onBackdropClick(): void {\n if (!props.hideOnClickModal)\n return\n closeViewer()\n}\n\nconst { onKeydown } = useViewerKeyboard({\n closeOnEscape: () => props.closeOnPressEscape,\n actions: { close: closeViewer, prev, next, zoomIn, zoomOut, reset: resetTransform },\n})\n\nwatch(\n () => props.modelValue,\n async (isOpen) => {\n if (!isOpen) {\n unlockBodyScroll()\n stopObservingImage()\n endWheelZoom()\n isDragging.value = false\n return\n }\n\n lockBodyScroll()\n syncIndexFromInitial()\n await nextTick()\n startObservingImage()\n },\n { immediate: true },\n)\n\nwatch(\n () => props.initialIndex,\n () => {\n if (!props.modelValue)\n return\n syncIndexFromInitial()\n },\n)\n\nwatch(\n () => props.urlList,\n () => {\n if (!props.modelValue)\n return\n syncIndexFromInitial()\n },\n { deep: true },\n)\n\nwatch(\n currentIndex,\n (index) => {\n if (!hasImages.value || total.value < 2)\n return\n preloadAt(normalizeIndex(index - 1))\n preloadAt(normalizeIndex(index + 1))\n },\n { immediate: true },\n)\n\nonBeforeUnmount(() => {\n unlockBodyScroll()\n stopObservingImage()\n endWheelZoom()\n})\n</script>\n\n<template>\n <teleport to=\"body\" :disabled=\"!isClient\">\n <TransitionRoot :show=\"open\" as=\"template\">\n <Dialog\n as=\"div\"\n class=\"fixed inset-0\"\n :style=\"viewerStyle\"\n role=\"dialog\"\n aria-modal=\"true\"\n :static=\"true\"\n @keydown=\"onKeydown\"\n >\n <div class=\"fixed inset-0 overflow-hidden\">\n <TransitionChild\n as=\"template\"\n enter=\"duration-150 ease-out\"\n enter-from=\"opacity-0\"\n enter-to=\"opacity-100\"\n leave=\"duration-120 ease-in\"\n leave-from=\"opacity-100\"\n leave-to=\"opacity-0\"\n >\n <div\n data-gr-image-viewer-overlay\n class=\"absolute inset-0 bg-black/60 backdrop-blur-sm\"\n aria-hidden=\"true\"\n @click=\"onBackdropClick\"\n />\n </TransitionChild>\n\n <TransitionChild\n as=\"template\"\n enter=\"duration-180 ease-out\"\n enter-from=\"opacity-0 scale-98\"\n enter-to=\"opacity-100 scale-100\"\n leave=\"duration-130 ease-in\"\n leave-from=\"opacity-100 scale-100\"\n leave-to=\"opacity-0 scale-98\"\n >\n <DialogPanel\n data-gr-image-viewer-panel\n class=\"relative z-10 h-full w-full outline-none\"\n tabindex=\"-1\"\n >\n <div class=\"pointer-events-none absolute inset-x-0 top-0 z-30 px-3 py-3 sm:px-6\">\n <div class=\"pointer-events-auto flex items-center justify-between gap-3\">\n <div class=\"flex items-center gap-2\">\n <div\n v-if=\"showProgress\"\n data-gr-image-viewer-progress\n class=\"rounded-full bg-black/35 px-3 py-1 text-xs font-600 text-white/95 sm:text-sm\"\n >\n {{ displayIndex }} / {{ total }}\n </div>\n\n <div\n v-if=\"showZoomValue\"\n data-gr-image-viewer-zoom-value\n class=\"rounded-full bg-black/35 px-3 py-1 text-xs font-700 text-white/95 sm:text-sm\"\n >\n {{ zoomValueText }}%\n </div>\n </div>\n\n <button\n type=\"button\"\n data-gr-image-viewer-close\n :aria-label=\"resolvedCloseLabel\"\n class=\"h-11 w-11 flex items-center justify-center rounded-full border border-white/20 bg-black/35 text-white transition-colors hover:bg-black/55 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/80\"\n @click=\"closeViewer\"\n >\n <span aria-hidden=\"true\" class=\"text-lg leading-none\">✕</span>\n </button>\n </div>\n </div>\n\n <div\n class=\"relative z-10 h-full w-full flex items-center justify-center px-16 py-16 sm:px-24 sm:py-20\"\n @wheel=\"onWheel\"\n >\n <button\n v-if=\"total > 1\"\n type=\"button\"\n data-gr-image-viewer-prev\n :aria-label=\"resolvedPrevLabel\"\n class=\"absolute left-3 top-1/2 z-20 h-12 w-12 -translate-y-1/2 flex items-center justify-center rounded-full border border-white/20 bg-black/35 text-white transition-colors hover:bg-black/55 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/80 sm:left-6\"\n @click=\"prev\"\n >\n <span aria-hidden=\"true\" class=\"text-xl leading-none\">‹</span>\n </button>\n\n <button\n v-if=\"total > 1\"\n type=\"button\"\n data-gr-image-viewer-next\n :aria-label=\"resolvedNextLabel\"\n class=\"absolute right-3 top-1/2 z-20 h-12 w-12 -translate-y-1/2 flex items-center justify-center rounded-full border border-white/20 bg-black/35 text-white transition-colors hover:bg-black/55 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/80 sm:right-6\"\n @click=\"next\"\n >\n <span aria-hidden=\"true\" class=\"text-xl leading-none\">›</span>\n </button>\n\n <div class=\"h-full w-full flex items-center justify-center\">\n <img\n v-if=\"currentUrl\"\n ref=\"imageEl\"\n data-gr-image-viewer-image\n :src=\"currentUrl\"\n alt=\"\"\n draggable=\"false\"\n class=\"max-h-full max-w-full select-none object-contain will-change-transform\"\n :class=\"[imageTransitionClass, imageCursorClass]\"\n :style=\"imageStyle\"\n @load=\"onImageLoad\"\n @pointerdown=\"onPointerDown\"\n @pointermove=\"onPointerMove\"\n @pointerup=\"onPointerUp\"\n @pointercancel=\"onPointerUp\"\n >\n\n <div\n v-else\n class=\"rounded-[var(--gr-radius-xl)] border border-white/20 bg-black/25 px-4 py-3 text-sm text-white/80\"\n >\n {{ resolvedEmptyText }}\n </div>\n </div>\n </div>\n\n <div class=\"pointer-events-none absolute inset-x-0 bottom-0 z-30 px-3 pb-3 sm:px-6 sm:pb-6\">\n <div class=\"pointer-events-auto mx-auto w-full max-w-max\">\n <slot\n name=\"toolbar\"\n v-bind=\"toolbarSlotProps\"\n >\n <div class=\"rounded-full border border-white/20 bg-black/35 p-1 backdrop-blur-sm flex items-center gap-1\">\n <button\n type=\"button\"\n data-gr-image-viewer-zoom-out\n :aria-label=\"resolvedZoomOutLabel\"\n class=\"h-11 min-w-11 px-2 flex items-center justify-center rounded-full text-sm font-600 text-white transition-colors hover:bg-white/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/80\"\n @click=\"zoomOut\"\n >\n −\n </button>\n\n <button\n type=\"button\"\n data-gr-image-viewer-zoom-reset\n :aria-label=\"resolvedResetZoomLabel\"\n class=\"h-11 min-w-11 px-3 flex items-center justify-center rounded-full text-xs font-700 text-white transition-colors hover:bg-white/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/80\"\n @click=\"resetTransform\"\n >\n 100%\n </button>\n\n <button\n type=\"button\"\n data-gr-image-viewer-zoom-in\n :aria-label=\"resolvedZoomInLabel\"\n class=\"h-11 min-w-11 px-2 flex items-center justify-center rounded-full text-sm font-600 text-white transition-colors hover:bg-white/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/80\"\n @click=\"zoomIn\"\n >\n +\n </button>\n\n <template v-if=\"$slots['toolbar-actions']\">\n <div class=\"mx-1 h-6 w-px bg-white/25\" aria-hidden=\"true\" />\n\n <slot\n name=\"toolbar-actions\"\n v-bind=\"toolbarSlotProps\"\n />\n\n <div class=\"mx-1 h-6 w-px bg-white/25\" aria-hidden=\"true\" />\n </template>\n\n <div v-else class=\"mx-1 h-6 w-px bg-white/25\" aria-hidden=\"true\" />\n\n <button\n type=\"button\"\n data-gr-image-viewer-rotate-left\n :aria-label=\"resolvedRotateLeftLabel\"\n class=\"h-11 min-w-11 px-2 flex items-center justify-center rounded-full text-sm font-600 text-white transition-colors hover:bg-white/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/80\"\n @click=\"rotateLeft\"\n >\n ↺\n </button>\n\n <button\n type=\"button\"\n data-gr-image-viewer-rotate-right\n :aria-label=\"resolvedRotateRightLabel\"\n class=\"h-11 min-w-11 px-2 flex items-center justify-center rounded-full text-sm font-600 text-white transition-colors hover:bg-white/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/80\"\n @click=\"rotateRight\"\n >\n ↻\n </button>\n </div>\n </slot>\n </div>\n </div>\n </DialogPanel>\n </TransitionChild>\n </div>\n </Dialog>\n </TransitionRoot>\n </teleport>\n</template>","<script setup lang=\"ts\">\nimport { computed, nextTick, onBeforeUnmount, ref, watch } from 'vue'\nimport { Dialog, DialogPanel, TransitionChild, TransitionRoot } from '@headlessui/vue'\n\nimport { useGranularityTranslations } from '../../internal/granularityI18n'\nimport { useScrollLock } from '../../composables/internal/useScrollLock'\nimport { useZoomPan } from './composables/useZoomPan'\nimport { useWheelGesture } from './composables/useWheelGesture'\nimport { useViewerKeyboard } from './composables/useViewerKeyboard'\n\n/**\n * Usage:\n *\n * <GrImageViewer\n * v-model=\"open\"\n * :url-list=\"images\"\n * :initial-index=\"0\"\n * show-progress\n * hide-on-click-modal\n * />\n *\n * Логика вынесена в composables: `useZoomPan` (масштаб/поворот/пан + метрики),\n * `useWheelGesture` (зум колесом/трекпадом с rAF-батчингом), `useViewerKeyboard`\n * (клавиатура). Сам SFC отвечает за оверлей, индекс изображений и композицию.\n */\nconst props = withDefaults(\n defineProps<{\n modelValue: boolean\n urlList: string[]\n initialIndex?: number\n zoomRate?: number\n minScale?: number\n maxScale?: number\n hideOnClickModal?: boolean\n closeOnPressEscape?: boolean\n showProgress?: boolean\n showZoomValue?: boolean\n /** Включает масштабирование колесом мыши / жестом на трекпаде. По умолчанию включено. */\n wheelZoom?: boolean\n /** Включает перетаскивание (pan) картинки мышью. При наведении курсор «рука». По умолчанию выключено. */\n draggable?: boolean\n zIndex?: number\n /** i18n: aria-label кнопки закрытия. */\n closeLabel?: string\n /** i18n: aria-label кнопки «предыдущее изображение». */\n prevLabel?: string\n /** i18n: aria-label кнопки «следующее изображение». */\n nextLabel?: string\n /** i18n: aria-label кнопки «увеличить». */\n zoomInLabel?: string\n /** i18n: aria-label кнопки «уменьшить». */\n zoomOutLabel?: string\n /** i18n: aria-label кнопки «сбросить масштаб». */\n resetZoomLabel?: string\n /** i18n: aria-label кнопки «повернуть влево». */\n rotateLeftLabel?: string\n /** i18n: aria-label кнопки «повернуть вправо». */\n rotateRightLabel?: string\n /** i18n: текст в пустом состоянии (нет изображений). */\n emptyText?: string\n }>(),\n {\n initialIndex: 0,\n zoomRate: 1.2,\n minScale: 0.5,\n maxScale: 5,\n hideOnClickModal: false,\n closeOnPressEscape: true,\n showProgress: false,\n showZoomValue: true,\n wheelZoom: true,\n draggable: false,\n zIndex: undefined,\n closeLabel: undefined,\n prevLabel: undefined,\n nextLabel: undefined,\n zoomInLabel: undefined,\n zoomOutLabel: undefined,\n resetZoomLabel: undefined,\n rotateLeftLabel: undefined,\n rotateRightLabel: undefined,\n emptyText: undefined,\n },\n)\n\nconst { t } = useGranularityTranslations()\nconst resolvedCloseLabel = computed(() => props.closeLabel ?? t('gr.imageViewer.close', 'Close image viewer'))\nconst resolvedPrevLabel = computed(() => props.prevLabel ?? t('gr.imageViewer.prev', 'Previous image'))\nconst resolvedNextLabel = computed(() => props.nextLabel ?? t('gr.imageViewer.next', 'Next image'))\nconst resolvedZoomInLabel = computed(() => props.zoomInLabel ?? t('gr.imageViewer.zoomIn', 'Zoom in'))\nconst resolvedZoomOutLabel = computed(() => props.zoomOutLabel ?? t('gr.imageViewer.zoomOut', 'Zoom out'))\nconst resolvedResetZoomLabel = computed(() => props.resetZoomLabel ?? t('gr.imageViewer.resetZoom', 'Reset zoom'))\nconst resolvedRotateLeftLabel = computed(() => props.rotateLeftLabel ?? t('gr.imageViewer.rotateLeft', 'Rotate left'))\nconst resolvedRotateRightLabel = computed(() => props.rotateRightLabel ?? t('gr.imageViewer.rotateRight', 'Rotate right'))\nconst resolvedEmptyText = computed(() => props.emptyText ?? t('gr.imageViewer.empty', 'No image'))\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n (e: 'close'): void\n (e: 'switch', newIndex: number): void\n (e: 'rotate', deg: number): void\n}>()\n\ntype GrImageViewerToolbarActions = {\n close: () => void\n prev: () => void\n next: () => void\n zoomIn: () => void\n zoomOut: () => void\n reset: () => void\n rotateLeft: () => void\n rotateRight: () => void\n}\n\ntype GrImageViewerSlotProps = {\n index: number\n displayIndex: number\n total: number\n scale: number\n rotation: number\n /** Натуральный (исходный) размер картинки, px. 0 пока изображение не загружено. */\n naturalWidth: number\n naturalHeight: number\n /** Фактический размер изображения на экране c учётом scale, px (footprint вдоль осей картинки). */\n renderedWidth: number\n renderedHeight: number\n /** Реальный масштаб относительно натурального размера (доля): renderedWidth / naturalWidth. */\n realScale: number\n /** Реальный масштаб в процентах, отформатированный (например `67`). */\n realScalePercent: string\n actions: GrImageViewerToolbarActions\n}\n\nconst DEFAULT_Z_INDEX = 2000\n\nconst open = computed(() => props.modelValue)\n\n// SSR-guard для teleport + общий reference-counted scroll-lock (как в GrModal/GrDrawer).\nconst isClient = typeof window !== 'undefined'\nconst { lock: lockBodyScroll, unlock: unlockBodyScroll } = useScrollLock()\n\nconst total = computed(() => props.urlList.length)\nconst hasImages = computed(() => total.value > 0)\n\nconst currentIndex = ref(0)\nconst imageEl = ref<HTMLImageElement | null>(null)\n\n// Масштаб / поворот / панорамирование + метрики изображения.\nconst {\n scale,\n rotation,\n isDragging,\n naturalWidth,\n naturalHeight,\n renderedWidth,\n renderedHeight,\n realScale,\n realScalePercent,\n imageStyle,\n zoomValueText,\n setScale,\n zoomIn,\n zoomOut,\n rotateLeft,\n rotateRight,\n resetTransform,\n resetImageMetrics,\n onImageLoad,\n startObservingImage,\n stopObservingImage,\n onPointerDown,\n onPointerMove,\n onPointerUp,\n} = useZoomPan({\n minScale: () => props.minScale,\n maxScale: () => props.maxScale,\n zoomRate: () => props.zoomRate,\n draggable: () => props.draggable,\n imageEl,\n onRotate: deg => emit('rotate', deg),\n})\n\n// Зум колесом мыши / жестом трекпада.\nconst { isWheelZooming, onWheel, endWheelZoom } = useWheelGesture({\n enabled: () => props.wheelZoom && hasImages.value,\n applyZoomFactor: factor => setScale(scale.value * factor),\n})\n\nconst currentUrl = computed(() => (hasImages.value ? props.urlList[currentIndex.value] : undefined))\nconst displayIndex = computed(() => (hasImages.value ? currentIndex.value + 1 : 0))\n\nconst viewerStyle = computed(() => ({\n zIndex: String(Number.isFinite(props.zIndex) ? props.zIndex : DEFAULT_Z_INDEX),\n}))\n\n// Плавный CSS-переход только для дискретных зумов; при wheel-зуме/перетаскивании отключаем.\nconst imageTransitionClass = computed(() =>\n isWheelZooming.value || isDragging.value ? '' : 'transition-transform duration-150 ease-out',\n)\n\n// Курсор «рука» (grab/grabbing), только если включён drag.\nconst imageCursorClass = computed(() => {\n if (!props.draggable)\n return ''\n return isDragging.value ? 'cursor-grabbing' : 'cursor-grab'\n})\n\nfunction normalizeIndex(value: number): number {\n if (!hasImages.value)\n return 0\n const normalized = Number.isFinite(value) ? Math.trunc(value) : 0\n return ((normalized % total.value) + total.value) % total.value\n}\n\nfunction setIndex(nextIndex: number, options?: { emitSwitch?: boolean }): void {\n const normalizedIndex = normalizeIndex(nextIndex)\n if (normalizedIndex === currentIndex.value)\n return\n\n currentIndex.value = normalizedIndex\n resetTransform()\n resetImageMetrics()\n endWheelZoom()\n\n if (options?.emitSwitch !== false)\n emit('switch', normalizedIndex)\n}\n\nfunction syncIndexFromInitial(): void {\n if (!hasImages.value) {\n currentIndex.value = 0\n return\n }\n currentIndex.value = normalizeIndex(props.initialIndex)\n resetTransform()\n resetImageMetrics()\n endWheelZoom()\n}\n\nfunction preloadAt(index: number): void {\n const url = props.urlList[index]\n if (!url)\n return\n const image = new Image()\n image.decoding = 'async'\n image.src = url\n}\n\nfunction closeViewer(): void {\n emit('update:modelValue', false)\n emit('close')\n}\n\nfunction prev(): void {\n setIndex(currentIndex.value - 1)\n}\n\nfunction next(): void {\n setIndex(currentIndex.value + 1)\n}\n\nconst toolbarActions: GrImageViewerToolbarActions = {\n close: closeViewer,\n prev,\n next,\n zoomIn,\n zoomOut,\n reset: resetTransform,\n rotateLeft,\n rotateRight,\n}\n\nconst toolbarSlotProps = computed<GrImageViewerSlotProps>(() => ({\n index: currentIndex.value,\n displayIndex: displayIndex.value,\n total: total.value,\n scale: scale.value,\n rotation: rotation.value,\n naturalWidth: naturalWidth.value,\n naturalHeight: naturalHeight.value,\n renderedWidth: renderedWidth.value,\n renderedHeight: renderedHeight.value,\n realScale: realScale.value,\n realScalePercent: realScalePercent.value,\n actions: toolbarActions,\n}))\n\nfunction onBackdropClick(): void {\n if (!props.hideOnClickModal)\n return\n closeViewer()\n}\n\nconst { onKeydown } = useViewerKeyboard({\n closeOnEscape: () => props.closeOnPressEscape,\n actions: { close: closeViewer, prev, next, zoomIn, zoomOut, reset: resetTransform },\n})\n\nwatch(\n () => props.modelValue,\n async (isOpen) => {\n if (!isOpen) {\n unlockBodyScroll()\n stopObservingImage()\n endWheelZoom()\n isDragging.value = false\n return\n }\n\n lockBodyScroll()\n syncIndexFromInitial()\n await nextTick()\n startObservingImage()\n },\n { immediate: true },\n)\n\nwatch(\n () => props.initialIndex,\n () => {\n if (!props.modelValue)\n return\n syncIndexFromInitial()\n },\n)\n\nwatch(\n () => props.urlList,\n () => {\n if (!props.modelValue)\n return\n syncIndexFromInitial()\n },\n { deep: true },\n)\n\nwatch(\n currentIndex,\n (index) => {\n if (!hasImages.value || total.value < 2)\n return\n preloadAt(normalizeIndex(index - 1))\n preloadAt(normalizeIndex(index + 1))\n },\n { immediate: true },\n)\n\nonBeforeUnmount(() => {\n unlockBodyScroll()\n stopObservingImage()\n endWheelZoom()\n})\n</script>\n\n<template>\n <teleport to=\"body\" :disabled=\"!isClient\">\n <TransitionRoot :show=\"open\" as=\"template\">\n <Dialog\n as=\"div\"\n class=\"fixed inset-0\"\n :style=\"viewerStyle\"\n role=\"dialog\"\n aria-modal=\"true\"\n :static=\"true\"\n @keydown=\"onKeydown\"\n >\n <div class=\"fixed inset-0 overflow-hidden\">\n <TransitionChild\n as=\"template\"\n enter=\"duration-150 ease-out\"\n enter-from=\"opacity-0\"\n enter-to=\"opacity-100\"\n leave=\"duration-120 ease-in\"\n leave-from=\"opacity-100\"\n leave-to=\"opacity-0\"\n >\n <div\n data-gr-image-viewer-overlay\n class=\"absolute inset-0 bg-black/60 backdrop-blur-sm\"\n aria-hidden=\"true\"\n @click=\"onBackdropClick\"\n />\n </TransitionChild>\n\n <TransitionChild\n as=\"template\"\n enter=\"duration-180 ease-out\"\n enter-from=\"opacity-0 scale-98\"\n enter-to=\"opacity-100 scale-100\"\n leave=\"duration-130 ease-in\"\n leave-from=\"opacity-100 scale-100\"\n leave-to=\"opacity-0 scale-98\"\n >\n <DialogPanel\n data-gr-image-viewer-panel\n class=\"relative z-10 h-full w-full outline-none\"\n tabindex=\"-1\"\n >\n <div class=\"pointer-events-none absolute inset-x-0 top-0 z-30 px-3 py-3 sm:px-6\">\n <div class=\"pointer-events-auto flex items-center justify-between gap-3\">\n <div class=\"flex items-center gap-2\">\n <div\n v-if=\"showProgress\"\n data-gr-image-viewer-progress\n class=\"rounded-full bg-black/35 px-3 py-1 text-xs font-600 text-white/95 sm:text-sm\"\n >\n {{ displayIndex }} / {{ total }}\n </div>\n\n <div\n v-if=\"showZoomValue\"\n data-gr-image-viewer-zoom-value\n class=\"rounded-full bg-black/35 px-3 py-1 text-xs font-700 text-white/95 sm:text-sm\"\n >\n {{ zoomValueText }}%\n </div>\n </div>\n\n <button\n type=\"button\"\n data-gr-image-viewer-close\n :aria-label=\"resolvedCloseLabel\"\n class=\"h-11 w-11 flex items-center justify-center rounded-full border border-white/20 bg-black/35 text-white transition-colors hover:bg-black/55 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/80\"\n @click=\"closeViewer\"\n >\n <span aria-hidden=\"true\" class=\"text-lg leading-none\">✕</span>\n </button>\n </div>\n </div>\n\n <div\n class=\"relative z-10 h-full w-full flex items-center justify-center px-16 py-16 sm:px-24 sm:py-20\"\n @wheel=\"onWheel\"\n >\n <button\n v-if=\"total > 1\"\n type=\"button\"\n data-gr-image-viewer-prev\n :aria-label=\"resolvedPrevLabel\"\n class=\"absolute left-3 top-1/2 z-20 h-12 w-12 -translate-y-1/2 flex items-center justify-center rounded-full border border-white/20 bg-black/35 text-white transition-colors hover:bg-black/55 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/80 sm:left-6\"\n @click=\"prev\"\n >\n <span aria-hidden=\"true\" class=\"text-xl leading-none\">‹</span>\n </button>\n\n <button\n v-if=\"total > 1\"\n type=\"button\"\n data-gr-image-viewer-next\n :aria-label=\"resolvedNextLabel\"\n class=\"absolute right-3 top-1/2 z-20 h-12 w-12 -translate-y-1/2 flex items-center justify-center rounded-full border border-white/20 bg-black/35 text-white transition-colors hover:bg-black/55 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/80 sm:right-6\"\n @click=\"next\"\n >\n <span aria-hidden=\"true\" class=\"text-xl leading-none\">›</span>\n </button>\n\n <div class=\"h-full w-full flex items-center justify-center\">\n <img\n v-if=\"currentUrl\"\n ref=\"imageEl\"\n data-gr-image-viewer-image\n :src=\"currentUrl\"\n alt=\"\"\n draggable=\"false\"\n class=\"max-h-full max-w-full select-none object-contain will-change-transform\"\n :class=\"[imageTransitionClass, imageCursorClass]\"\n :style=\"imageStyle\"\n @load=\"onImageLoad\"\n @pointerdown=\"onPointerDown\"\n @pointermove=\"onPointerMove\"\n @pointerup=\"onPointerUp\"\n @pointercancel=\"onPointerUp\"\n >\n\n <div\n v-else\n class=\"rounded-[var(--gr-radius-xl)] border border-white/20 bg-black/25 px-4 py-3 text-sm text-white/80\"\n >\n {{ resolvedEmptyText }}\n </div>\n </div>\n </div>\n\n <div class=\"pointer-events-none absolute inset-x-0 bottom-0 z-30 px-3 pb-3 sm:px-6 sm:pb-6\">\n <div class=\"pointer-events-auto mx-auto w-full max-w-max\">\n <slot\n name=\"toolbar\"\n v-bind=\"toolbarSlotProps\"\n >\n <div class=\"rounded-full border border-white/20 bg-black/35 p-1 backdrop-blur-sm flex items-center gap-1\">\n <button\n type=\"button\"\n data-gr-image-viewer-zoom-out\n :aria-label=\"resolvedZoomOutLabel\"\n class=\"h-11 min-w-11 px-2 flex items-center justify-center rounded-full text-sm font-600 text-white transition-colors hover:bg-white/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/80\"\n @click=\"zoomOut\"\n >\n −\n </button>\n\n <button\n type=\"button\"\n data-gr-image-viewer-zoom-reset\n :aria-label=\"resolvedResetZoomLabel\"\n class=\"h-11 min-w-11 px-3 flex items-center justify-center rounded-full text-xs font-700 text-white transition-colors hover:bg-white/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/80\"\n @click=\"resetTransform\"\n >\n 100%\n </button>\n\n <button\n type=\"button\"\n data-gr-image-viewer-zoom-in\n :aria-label=\"resolvedZoomInLabel\"\n class=\"h-11 min-w-11 px-2 flex items-center justify-center rounded-full text-sm font-600 text-white transition-colors hover:bg-white/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/80\"\n @click=\"zoomIn\"\n >\n +\n </button>\n\n <template v-if=\"$slots['toolbar-actions']\">\n <div class=\"mx-1 h-6 w-px bg-white/25\" aria-hidden=\"true\" />\n\n <slot\n name=\"toolbar-actions\"\n v-bind=\"toolbarSlotProps\"\n />\n\n <div class=\"mx-1 h-6 w-px bg-white/25\" aria-hidden=\"true\" />\n </template>\n\n <div v-else class=\"mx-1 h-6 w-px bg-white/25\" aria-hidden=\"true\" />\n\n <button\n type=\"button\"\n data-gr-image-viewer-rotate-left\n :aria-label=\"resolvedRotateLeftLabel\"\n class=\"h-11 min-w-11 px-2 flex items-center justify-center rounded-full text-sm font-600 text-white transition-colors hover:bg-white/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/80\"\n @click=\"rotateLeft\"\n >\n ↺\n </button>\n\n <button\n type=\"button\"\n data-gr-image-viewer-rotate-right\n :aria-label=\"resolvedRotateRightLabel\"\n class=\"h-11 min-w-11 px-2 flex items-center justify-center rounded-full text-sm font-600 text-white transition-colors hover:bg-white/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/80\"\n @click=\"rotateRight\"\n >\n ↻\n </button>\n </div>\n </slot>\n </div>\n </div>\n </DialogPanel>\n </TransitionChild>\n </div>\n </Dialog>\n </TransitionRoot>\n </teleport>\n</template>"],"mappings":"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"}
@@ -1,337 +0,0 @@
1
- import { t as x_default } from "../../../chunks/x-2KXnqxiD.js";
2
- import { a as useGrComponentProp, o as useGrComponentSize } from "../../../chunks/context-DfWYCBB-.js";
3
- import { n as useGranularityTranslations } from "../../../chunks/granularityI18n-SH0I--GW.js";
4
- import { n as useGrFormFieldContext } from "../../../chunks/context-DdNIxa1w.js";
5
- import { n as useAddonMeasurement, t as addLen } from "../../../chunks/useAddonMeasurement-DM0akF4C.js";
6
- import { computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, markRaw, mergeProps, normalizeClass, normalizeStyle, openBlock, ref, renderSlot, toDisplayString, unref, useSlots } from "vue";
7
- //#region ~icons/lucide/eye
8
- var _hoisted_1$2 = {
9
- viewBox: "0 0 24 24",
10
- width: "1.2em",
11
- height: "1.2em"
12
- };
13
- function render$2(_ctx, _cache) {
14
- return openBlock(), createElementBlock("svg", _hoisted_1$2, [..._cache[0] || (_cache[0] = [createElementVNode("g", {
15
- fill: "none",
16
- stroke: "currentColor",
17
- "stroke-linecap": "round",
18
- "stroke-linejoin": "round",
19
- "stroke-width": "2"
20
- }, [createElementVNode("path", { d: "M2.062 12.348a1 1 0 0 1 0-.696a10.75 10.75 0 0 1 19.876 0a1 1 0 0 1 0 .696a10.75 10.75 0 0 1-19.876 0" }), createElementVNode("circle", {
21
- cx: "12",
22
- cy: "12",
23
- r: "3"
24
- })], -1)])]);
25
- }
26
- var eye_default = markRaw({
27
- name: "lucide-eye",
28
- render: render$2
29
- });
30
- //#endregion
31
- //#region ~icons/lucide/eye-off
32
- var _hoisted_1$1 = {
33
- viewBox: "0 0 24 24",
34
- width: "1.2em",
35
- height: "1.2em"
36
- };
37
- function render$1(_ctx, _cache) {
38
- return openBlock(), createElementBlock("svg", _hoisted_1$1, [..._cache[0] || (_cache[0] = [createElementVNode("g", {
39
- fill: "none",
40
- stroke: "currentColor",
41
- "stroke-linecap": "round",
42
- "stroke-linejoin": "round",
43
- "stroke-width": "2"
44
- }, [createElementVNode("path", { d: "M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575a1 1 0 0 1 0 .696a10.8 10.8 0 0 1-1.444 2.49m-6.41-.679a3 3 0 0 1-4.242-4.242" }), createElementVNode("path", { d: "M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151a1 1 0 0 1 0-.696a10.75 10.75 0 0 1 4.446-5.143M2 2l20 20" })], -1)])]);
45
- }
46
- var eye_off_default = markRaw({
47
- name: "lucide-eye-off",
48
- render: render$1
49
- });
50
- //#endregion
51
- //#region src/components/GrInput/GrInput.vue?vue&type=script&setup=true&lang.ts
52
- var _hoisted_1 = {
53
- "data-gr-input": "",
54
- class: "w-full"
55
- };
56
- var _hoisted_2 = [
57
- "id",
58
- "name",
59
- "type",
60
- "inputmode",
61
- "autocomplete",
62
- "placeholder",
63
- "disabled",
64
- "readonly",
65
- "maxlength",
66
- "value",
67
- "aria-invalid",
68
- "aria-describedby",
69
- "aria-required"
70
- ];
71
- var _hoisted_3 = {
72
- key: 1,
73
- "data-gr-input-trailing": "",
74
- class: "absolute inset-y-0 right-1 flex items-center gap-0.5"
75
- };
76
- var _hoisted_4 = ["aria-label"];
77
- var _hoisted_5 = ["aria-label", "aria-pressed"];
78
- var _hoisted_6 = {
79
- key: 0,
80
- "data-gr-input-count": "",
81
- class: "mt-1 text-right text-xs text-[var(--gr-muted-fg)] tabular-nums"
82
- };
83
- //#endregion
84
- //#region src/components/GrInput/GrInput.vue
85
- var GrInput_default = /* @__PURE__ */ defineComponent({
86
- inheritAttrs: false,
87
- __name: "GrInput",
88
- props: {
89
- modelValue: {},
90
- type: { default: "text" },
91
- placeholder: { default: void 0 },
92
- autocomplete: { default: void 0 },
93
- inputmode: { default: void 0 },
94
- disabled: {
95
- type: Boolean,
96
- default: false
97
- },
98
- readonly: {
99
- type: Boolean,
100
- default: false
101
- },
102
- invalid: {
103
- type: Boolean,
104
- default: false
105
- },
106
- state: { default: "default" },
107
- name: { default: void 0 },
108
- id: { default: void 0 },
109
- size: { default: void 0 },
110
- clearable: {
111
- type: Boolean,
112
- default: void 0
113
- },
114
- clearLabel: { default: void 0 },
115
- maxlength: { default: void 0 },
116
- showCount: {
117
- type: Boolean,
118
- default: false
119
- },
120
- passwordToggle: {
121
- type: Boolean,
122
- default: false
123
- },
124
- passwordShowLabel: { default: void 0 },
125
- passwordHideLabel: { default: void 0 },
126
- textAlign: { default: "left" },
127
- prefixMinWidth: { default: void 0 },
128
- prefixMaxWidth: { default: void 0 },
129
- suffixMinWidth: { default: void 0 },
130
- suffixMaxWidth: { default: void 0 },
131
- prefixFixed: {
132
- type: Boolean,
133
- default: false
134
- },
135
- suffixFixed: {
136
- type: Boolean,
137
- default: false
138
- }
139
- },
140
- emits: ["update:modelValue"],
141
- setup(__props, { expose: __expose, emit: __emit }) {
142
- const props = __props;
143
- const emit = __emit;
144
- const field = useGrFormFieldContext();
145
- const resolvedSize = useGrComponentSize(() => props.size, { component: "GrInput" });
146
- const resolvedClearable = useGrComponentProp("GrInput", "clearable", () => props.clearable, false);
147
- const resolvedId = computed(() => props.id ?? field?.id.value);
148
- const isInvalid = computed(() => props.invalid || Boolean(field?.invalid.value));
149
- const describedBy = computed(() => field?.describedById.value);
150
- const isRequired = computed(() => Boolean(field?.required.value));
151
- const inputEl = ref(null);
152
- function focus() {
153
- inputEl.value?.focus();
154
- }
155
- __expose({ focus });
156
- const slots = useSlots();
157
- const hasPrefix = computed(() => Boolean(slots.prefix));
158
- const hasSuffix = computed(() => Boolean(slots.suffix));
159
- const defaultAddonMinWidth = computed(() => {
160
- return {
161
- xs: "2rem",
162
- sm: "2.25rem",
163
- md: "2.5rem",
164
- lg: "3rem"
165
- }[resolvedSize.value];
166
- });
167
- const prefixMinWidth = computed(() => props.prefixMinWidth ?? defaultAddonMinWidth.value);
168
- const suffixMinWidth = computed(() => props.suffixMinWidth ?? defaultAddonMinWidth.value);
169
- const prefixFixedWidth = computed(() => props.prefixMaxWidth ?? props.prefixMinWidth ?? defaultAddonMinWidth.value);
170
- const suffixFixedWidth = computed(() => props.suffixMaxWidth ?? props.suffixMinWidth ?? defaultAddonMinWidth.value);
171
- const { prefixEl, suffixEl, measuredPrefixWidth, measuredSuffixWidth } = useAddonMeasurement(hasPrefix, hasSuffix);
172
- const basePaddingXLen = computed(() => {
173
- return {
174
- xs: "10px",
175
- sm: "12px",
176
- md: "12px",
177
- lg: "16px"
178
- }[resolvedSize.value];
179
- });
180
- const inputStyle = computed(() => {
181
- const leftReserved = hasPrefix.value ? props.prefixFixed ? prefixFixedWidth.value : measuredPrefixWidth.value ?? prefixMinWidth.value : "0px";
182
- const rightReserved = hasSuffix.value ? props.suffixFixed ? suffixFixedWidth.value : measuredSuffixWidth.value ?? suffixMinWidth.value : "0px";
183
- const left = hasPrefix.value ? addLen(leftReserved, basePaddingXLen.value) : void 0;
184
- const rightSpace = addLen(rightReserved, trailingReserve.value);
185
- return {
186
- paddingLeft: left,
187
- paddingRight: hasSuffix.value || trailingCount.value > 0 ? addLen(rightSpace, basePaddingXLen.value) : void 0
188
- };
189
- });
190
- const prefixStyle = computed(() => {
191
- if (props.prefixFixed) return {
192
- width: prefixFixedWidth.value,
193
- minWidth: prefixFixedWidth.value,
194
- maxWidth: prefixFixedWidth.value
195
- };
196
- return {
197
- minWidth: prefixMinWidth.value,
198
- maxWidth: props.prefixMaxWidth
199
- };
200
- });
201
- const suffixStyle = computed(() => {
202
- if (props.suffixFixed) return {
203
- width: suffixFixedWidth.value,
204
- minWidth: suffixFixedWidth.value,
205
- maxWidth: suffixFixedWidth.value
206
- };
207
- return {
208
- minWidth: suffixMinWidth.value,
209
- maxWidth: props.suffixMaxWidth
210
- };
211
- });
212
- const sizeClass = computed(() => {
213
- return {
214
- xs: "h-7 px-2.5 text-[12px]",
215
- sm: "h-8 px-3 text-[13px]",
216
- md: "h-10 px-3 text-[14px]",
217
- lg: "h-11 px-4 text-[16px]"
218
- }[resolvedSize.value];
219
- });
220
- const textAlignClass = computed(() => {
221
- return {
222
- left: "text-left",
223
- center: "text-center",
224
- right: "text-right"
225
- }[props.textAlign];
226
- });
227
- const shellClass = computed(() => {
228
- const state = props.state;
229
- const borderByState = {
230
- default: "border-[var(--gr-brd)]",
231
- success: "border-[var(--gr-success)] focus-within:ring-[var(--gr-success)]",
232
- warning: "border-[var(--gr-warning)] focus-within:ring-[var(--gr-warning)]",
233
- danger: "border-[var(--gr-danger)] focus-within:ring-[var(--gr-danger)]"
234
- };
235
- return [isInvalid.value ? borderByState.danger : borderByState[state], props.disabled ? "opacity-50 cursor-not-allowed" : ""].filter(Boolean).join(" ");
236
- });
237
- const className = computed(() => {
238
- return [sizeClass.value, textAlignClass.value].join(" ");
239
- });
240
- function onInput(e) {
241
- emit("update:modelValue", e.target.value);
242
- }
243
- const { t } = useGranularityTranslations();
244
- const resolvedClearLabel = computed(() => props.clearLabel ?? t("gr.input.clear", "Clear"));
245
- const resolvedPasswordShowLabel = computed(() => props.passwordShowLabel ?? t("gr.input.showPassword", "Show password"));
246
- const resolvedPasswordHideLabel = computed(() => props.passwordHideLabel ?? t("gr.input.hidePassword", "Hide password"));
247
- const passwordVisible = ref(false);
248
- const resolvedType = computed(() => props.type === "password" && passwordVisible.value ? "text" : props.type);
249
- const showPasswordToggle = computed(() => props.passwordToggle && props.type === "password" && !props.disabled);
250
- const showClear = computed(() => resolvedClearable.value && props.modelValue.length > 0 && !props.disabled && !props.readonly);
251
- const trailingCount = computed(() => (showClear.value ? 1 : 0) + (showPasswordToggle.value ? 1 : 0));
252
- const trailingReserve = computed(() => trailingCount.value > 0 ? `${trailingCount.value * 28}px` : "0px");
253
- const countText = computed(() => props.maxlength !== void 0 ? `${props.modelValue.length} / ${props.maxlength}` : String(props.modelValue.length));
254
- function clear() {
255
- emit("update:modelValue", "");
256
- inputEl.value?.focus();
257
- }
258
- function togglePassword() {
259
- passwordVisible.value = !passwordVisible.value;
260
- inputEl.value?.focus();
261
- }
262
- return (_ctx, _cache) => {
263
- return openBlock(), createElementBlock("div", _hoisted_1, [createElementVNode("div", { class: normalizeClass(["relative w-full overflow-hidden rounded-md border bg-[var(--gr-bg)] transition-colors duration-150 focus-within:ring-2 focus-within:ring-[var(--gr-ring)]", shellClass.value]) }, [
264
- _ctx.$slots.prefix ? (openBlock(), createElementBlock("div", {
265
- key: 0,
266
- ref_key: "prefixEl",
267
- ref: prefixEl,
268
- "data-testid": "gr-input-prefix",
269
- 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",
270
- style: normalizeStyle(prefixStyle.value),
271
- "aria-hidden": "true"
272
- }, [renderSlot(_ctx.$slots, "prefix")], 4)) : createCommentVNode("", true),
273
- createElementVNode("input", mergeProps({
274
- id: resolvedId.value,
275
- ref_key: "inputEl",
276
- ref: inputEl
277
- }, _ctx.$attrs, {
278
- name: props.name,
279
- type: resolvedType.value,
280
- inputmode: props.inputmode,
281
- autocomplete: props.autocomplete,
282
- placeholder: props.placeholder,
283
- disabled: props.disabled,
284
- readonly: props.readonly,
285
- maxlength: props.maxlength,
286
- value: props.modelValue,
287
- "aria-invalid": isInvalid.value ? "true" : void 0,
288
- "aria-describedby": describedBy.value,
289
- "aria-required": isRequired.value ? "true" : void 0,
290
- 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", className.value],
291
- style: inputStyle.value,
292
- onInput
293
- }), null, 16, _hoisted_2),
294
- trailingCount.value > 0 ? (openBlock(), createElementBlock("div", _hoisted_3, [showClear.value ? (openBlock(), createElementBlock("button", {
295
- key: 0,
296
- type: "button",
297
- "data-gr-input-clear": "",
298
- "aria-label": resolvedClearLabel.value,
299
- class: "flex h-6 w-6 items-center justify-center rounded text-[var(--gr-muted-fg)] transition-colors hover:bg-[var(--gr-muted)] hover:text-[var(--gr-fg)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]",
300
- tabindex: "-1",
301
- onClick: clear
302
- }, [createVNode(unref(x_default), {
303
- class: "h-4 w-4",
304
- "aria-hidden": "true"
305
- })], 8, _hoisted_4)) : createCommentVNode("", true), showPasswordToggle.value ? (openBlock(), createElementBlock("button", {
306
- key: 1,
307
- type: "button",
308
- "data-gr-input-password-toggle": "",
309
- "aria-label": passwordVisible.value ? resolvedPasswordHideLabel.value : resolvedPasswordShowLabel.value,
310
- "aria-pressed": passwordVisible.value ? "true" : "false",
311
- class: "flex h-6 w-6 items-center justify-center rounded text-[var(--gr-muted-fg)] transition-colors hover:bg-[var(--gr-muted)] hover:text-[var(--gr-fg)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]",
312
- tabindex: "-1",
313
- onClick: togglePassword
314
- }, [passwordVisible.value ? (openBlock(), createBlock(unref(eye_off_default), {
315
- key: 0,
316
- class: "h-4 w-4",
317
- "aria-hidden": "true"
318
- })) : (openBlock(), createBlock(unref(eye_default), {
319
- key: 1,
320
- class: "h-4 w-4",
321
- "aria-hidden": "true"
322
- }))], 8, _hoisted_5)) : createCommentVNode("", true)])) : createCommentVNode("", true),
323
- _ctx.$slots.suffix ? (openBlock(), createElementBlock("div", {
324
- key: 2,
325
- ref_key: "suffixEl",
326
- ref: suffixEl,
327
- "data-testid": "gr-input-suffix",
328
- class: normalizeClass(["absolute inset-y-0 right-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", __props.suffixFixed ? "[direction:rtl]" : ""]),
329
- style: normalizeStyle(suffixStyle.value),
330
- "aria-hidden": "true"
331
- }, [renderSlot(_ctx.$slots, "suffix")], 6)) : createCommentVNode("", true)
332
- ], 2), __props.showCount ? (openBlock(), createElementBlock("div", _hoisted_6, toDisplayString(countText.value), 1)) : createCommentVNode("", true)]);
333
- };
334
- }
335
- });
336
- //#endregion
337
- export { GrInput_default as t };
@@ -1 +0,0 @@
1
- {"version":3,"file":"GrInput-C1VBL0dg.js","names":["$slots","$attrs"],"sources":["../../../../src/components/GrInput/GrInput.vue","../../../../src/components/GrInput/GrInput.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {computed, ref, useSlots} from 'vue'\n\nimport {addLen, useAddonMeasurement} from '../../composables/internal/useAddonMeasurement'\nimport {useGrComponentProp, useGrComponentSize} from '../GrConfigProvider/context'\nimport {useGrFormFieldContext} from '../GrFormField/context'\nimport {useGranularityTranslations} from '../../internal/granularityI18n'\nimport type {InputHTMLAttributes} from 'vue'\n\nimport IconX from '~icons/lucide/x'\nimport IconEye from '~icons/lucide/eye'\nimport IconEyeOff from '~icons/lucide/eye-off'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nexport type GrInputSize = 'xs' | 'sm' | 'md' | 'lg'\nexport type GrInputTextAlign = 'left' | 'center' | 'right'\n\nconst props = withDefaults(\n defineProps<{\n modelValue: string\n type?: 'text' | 'email' | 'password' | 'number' | 'search'\n placeholder?: string\n autocomplete?: string\n inputmode?: InputHTMLAttributes['inputmode']\n disabled?: boolean\n /** Только для чтения: значение видно и выделяемо, но не редактируется. */\n readonly?: boolean\n invalid?: boolean\n state?: 'default' | 'success' | 'warning' | 'danger'\n name?: string\n id?: string\n size?: GrInputSize\n\n /** Показывать кнопку очистки, когда есть значение (и не disabled/readonly). */\n clearable?: boolean\n /** i18n aria-label кнопки очистки. */\n clearLabel?: string\n /** Ограничение длины + основа для счётчика символов. */\n maxlength?: number\n /** Показывать счётчик символов (`len` или `len/maxlength`). */\n showCount?: boolean\n /** Кнопка показать/скрыть пароль (только при `type=\"password\"`). */\n passwordToggle?: boolean\n /** i18n aria-label кнопки показать/скрыть пароль. */\n passwordShowLabel?: string\n passwordHideLabel?: string\n\n textAlign?: GrInputTextAlign\n\n prefixMinWidth?: string\n prefixMaxWidth?: string\n suffixMinWidth?: string\n suffixMaxWidth?: string\n /**\n * Фиксированная ширина у prefix/suffix: аддон получает жёсткую ширину\n * (из `*MaxWidth` → `*MinWidth` → дефолт), а контент обрезается по краю\n * (prefix — справа, suffix — слева). По умолчанию аддоны «растягиваются»\n * под контент (в пределах min/max), а излишек клипается оболочкой.\n */\n prefixFixed?: boolean\n suffixFixed?: boolean\n }>(),\n {\n type: 'text',\n placeholder: undefined,\n autocomplete: undefined,\n inputmode: undefined,\n disabled: false,\n readonly: false,\n invalid: false,\n state: 'default',\n name: undefined,\n id: undefined,\n size: undefined,\n\n // Настраивается через `GrConfigProvider`; дефолт — в резолвере ниже.\n clearable: undefined,\n clearLabel: undefined,\n maxlength: undefined,\n showCount: false,\n passwordToggle: false,\n passwordShowLabel: undefined,\n passwordHideLabel: undefined,\n\n textAlign: 'left',\n\n prefixMinWidth: undefined,\n prefixMaxWidth: undefined,\n suffixMinWidth: undefined,\n suffixMaxWidth: undefined,\n prefixFixed: false,\n suffixFixed: false,\n },\n)\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: string): void\n}>()\n\n// Контекст `GrFormField` (если инпут внутри него): даёт id/aria-describedby/\n// invalid/required как fallback, чтобы не прокидывать `forId` вручную.\nconst field = useGrFormFieldContext()\n\n// Эффективные значения: локальный проп → `GrConfigProvider` → дефолт компонента.\nconst resolvedSize = useGrComponentSize(() => props.size, { component: 'GrInput' })\nconst resolvedClearable = useGrComponentProp('GrInput', 'clearable', () => props.clearable, false)\n\nconst resolvedId = computed(() => props.id ?? field?.id.value)\nconst isInvalid = computed(() => props.invalid || Boolean(field?.invalid.value))\nconst describedBy = computed(() => field?.describedById.value)\nconst isRequired = computed(() => Boolean(field?.required.value))\n\nconst inputEl = ref<HTMLInputElement | null>(null)\n\nfunction focus(): void {\n inputEl.value?.focus()\n}\n\ndefineExpose({\n focus,\n})\n\nconst slots = useSlots()\n\nconst hasPrefix = computed(() => Boolean(slots.prefix))\nconst hasSuffix = computed(() => Boolean(slots.suffix))\n\nconst defaultAddonMinWidth = computed(() => {\n const map: Record<NonNullable<typeof props.size>, string> = {\n xs: '2rem', // w-8\n sm: '2.25rem', // w-9\n md: '2.5rem', // w-10\n lg: '3rem', // w-12\n }\n\n return map[resolvedSize.value]\n})\n\nconst prefixMinWidth = computed(() => props.prefixMinWidth ?? defaultAddonMinWidth.value)\nconst suffixMinWidth = computed(() => props.suffixMinWidth ?? defaultAddonMinWidth.value)\n\n// Жёсткая ширина для fixed-режима: max → min → дефолт.\nconst prefixFixedWidth = computed(() => props.prefixMaxWidth ?? props.prefixMinWidth ?? defaultAddonMinWidth.value)\nconst suffixFixedWidth = computed(() => props.suffixMaxWidth ?? props.suffixMinWidth ?? defaultAddonMinWidth.value)\n\nconst { prefixEl, suffixEl, measuredPrefixWidth, measuredSuffixWidth } = useAddonMeasurement(hasPrefix, hasSuffix)\n\nconst basePaddingXLen = computed(() => {\n // Must mirror `sizeClass` horizontal padding (px-*) because inline paddings override class paddings.\n const map: Record<NonNullable<typeof props.size>, string> = {\n xs: '10px', // px-2.5\n sm: '12px', // px-3\n md: '12px', // px-3\n lg: '16px', // px-4\n }\n\n return map[resolvedSize.value]\n})\n\nconst inputStyle = computed(() => {\n const leftReserved = hasPrefix.value\n ? (props.prefixFixed ? prefixFixedWidth.value : measuredPrefixWidth.value ?? prefixMinWidth.value)\n : '0px'\n const rightReserved = hasSuffix.value\n ? (props.suffixFixed ? suffixFixedWidth.value : measuredSuffixWidth.value ?? suffixMinWidth.value)\n : '0px'\n\n // Keep the same visual text padding as without addons (px-*), but add it on top of reserved space.\n const left = hasPrefix.value ? addLen(leftReserved, basePaddingXLen.value) : undefined\n const rightSpace = addLen(rightReserved, trailingReserve.value)\n const right = (hasSuffix.value || trailingCount.value > 0)\n ? addLen(rightSpace, basePaddingXLen.value)\n : undefined\n\n return {\n paddingLeft: left,\n paddingRight: right,\n } as Record<string, string | undefined>\n})\n\nconst prefixStyle = computed(() => {\n if (props.prefixFixed) {\n return {\n width: prefixFixedWidth.value,\n minWidth: prefixFixedWidth.value,\n maxWidth: prefixFixedWidth.value,\n } as Record<string, string | undefined>\n }\n\n return {\n minWidth: prefixMinWidth.value,\n maxWidth: props.prefixMaxWidth,\n } as Record<string, string | undefined>\n})\n\nconst suffixStyle = computed(() => {\n if (props.suffixFixed) {\n return {\n width: suffixFixedWidth.value,\n minWidth: suffixFixedWidth.value,\n maxWidth: suffixFixedWidth.value,\n } as Record<string, string | undefined>\n }\n\n return {\n minWidth: suffixMinWidth.value,\n maxWidth: props.suffixMaxWidth,\n } as Record<string, string | undefined>\n})\n\nconst sizeClass = computed(() => {\n const map: Record<NonNullable<typeof props.size>, string> = {\n xs: 'h-7 px-2.5 text-[12px]',\n sm: 'h-8 px-3 text-[13px]',\n md: 'h-10 px-3 text-[14px]',\n lg: 'h-11 px-4 text-[16px]',\n }\n\n return map[resolvedSize.value]\n})\n\nconst textAlignClass = computed(() => {\n const map: Record<NonNullable<typeof props.textAlign>, string> = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n }\n\n return map[props.textAlign]\n})\n\n// Border/ring/disabled — на оболочке (`focus-within`), размеры/выравнивание — на инпуте.\nconst shellClass = computed(() => {\n const state = props.state\n\n const borderByState: Record<typeof state, string> = {\n default: 'border-[var(--gr-brd)]',\n success: 'border-[var(--gr-success)] focus-within:ring-[var(--gr-success)]',\n warning: 'border-[var(--gr-warning)] focus-within:ring-[var(--gr-warning)]',\n danger: 'border-[var(--gr-danger)] focus-within:ring-[var(--gr-danger)]',\n }\n\n return [\n isInvalid.value ? borderByState.danger : borderByState[state],\n props.disabled ? 'opacity-50 cursor-not-allowed' : '',\n ].filter(Boolean).join(' ')\n})\n\nconst className = computed(() => {\n return [\n sizeClass.value,\n textAlignClass.value,\n ].join(' ')\n})\n\nfunction onInput(e: Event): void {\n emit('update:modelValue', (e.target as HTMLInputElement).value)\n}\n\n// ————— Trailing-контролы: очистка, переключатель пароля, счётчик символов.\nconst { t } = useGranularityTranslations()\nconst resolvedClearLabel = computed(() => props.clearLabel ?? t('gr.input.clear', 'Clear'))\nconst resolvedPasswordShowLabel = computed(() => props.passwordShowLabel ?? t('gr.input.showPassword', 'Show password'))\nconst resolvedPasswordHideLabel = computed(() => props.passwordHideLabel ?? t('gr.input.hidePassword', 'Hide password'))\n\nconst passwordVisible = ref(false)\n// Тип поля с учётом переключателя пароля.\nconst resolvedType = computed(() => (props.type === 'password' && passwordVisible.value ? 'text' : props.type))\n\nconst showPasswordToggle = computed(() => props.passwordToggle && props.type === 'password' && !props.disabled)\nconst showClear = computed(() => resolvedClearable.value && props.modelValue.length > 0 && !props.disabled && !props.readonly)\n\nconst trailingCount = computed(() => (showClear.value ? 1 : 0) + (showPasswordToggle.value ? 1 : 0))\nconst trailingReserve = computed(() => (trailingCount.value > 0 ? `${trailingCount.value * 28}px` : '0px'))\n\n// Счётчик символов: `len` или `len / maxlength`.\nconst countText = computed(() =>\n props.maxlength !== undefined ? `${props.modelValue.length} / ${props.maxlength}` : String(props.modelValue.length),\n)\n\nfunction clear(): void {\n emit('update:modelValue', '')\n inputEl.value?.focus()\n}\n\nfunction togglePassword(): void {\n passwordVisible.value = !passwordVisible.value\n inputEl.value?.focus()\n}\n</script>\n\n<template>\n <div data-gr-input class=\"w-full\">\n <div\n class=\"relative w-full overflow-hidden rounded-md border bg-[var(--gr-bg)] transition-colors duration-150 focus-within:ring-2 focus-within:ring-[var(--gr-ring)]\"\n :class=\"shellClass\"\n >\n <div\n v-if=\"$slots.prefix\"\n ref=\"prefixEl\"\n data-testid=\"gr-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=\"props.name\"\n :type=\"resolvedType\"\n :inputmode=\"props.inputmode\"\n :autocomplete=\"props.autocomplete\"\n :placeholder=\"props.placeholder\"\n :disabled=\"props.disabled\"\n :readonly=\"props.readonly\"\n :maxlength=\"props.maxlength\"\n :value=\"props.modelValue\"\n :aria-invalid=\"isInvalid ? 'true' : undefined\"\n :aria-describedby=\"describedBy\"\n :aria-required=\"isRequired ? 'true' : undefined\"\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=\"className\"\n :style=\"inputStyle\"\n @input=\"onInput\"\n >\n\n <div\n v-if=\"trailingCount > 0\"\n data-gr-input-trailing\n class=\"absolute inset-y-0 right-1 flex items-center gap-0.5\"\n >\n <button\n v-if=\"showClear\"\n type=\"button\"\n data-gr-input-clear\n :aria-label=\"resolvedClearLabel\"\n class=\"flex h-6 w-6 items-center justify-center rounded text-[var(--gr-muted-fg)] transition-colors hover:bg-[var(--gr-muted)] hover:text-[var(--gr-fg)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]\"\n tabindex=\"-1\"\n @click=\"clear\"\n >\n <IconX class=\"h-4 w-4\" aria-hidden=\"true\" />\n </button>\n\n <button\n v-if=\"showPasswordToggle\"\n type=\"button\"\n data-gr-input-password-toggle\n :aria-label=\"passwordVisible ? resolvedPasswordHideLabel : resolvedPasswordShowLabel\"\n :aria-pressed=\"passwordVisible ? 'true' : 'false'\"\n class=\"flex h-6 w-6 items-center justify-center rounded text-[var(--gr-muted-fg)] transition-colors hover:bg-[var(--gr-muted)] hover:text-[var(--gr-fg)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]\"\n tabindex=\"-1\"\n @click=\"togglePassword\"\n >\n <IconEyeOff v-if=\"passwordVisible\" class=\"h-4 w-4\" aria-hidden=\"true\" />\n <IconEye v-else class=\"h-4 w-4\" aria-hidden=\"true\" />\n </button>\n </div>\n\n <div\n v-if=\"$slots.suffix\"\n ref=\"suffixEl\"\n data-testid=\"gr-input-suffix\"\n class=\"absolute inset-y-0 right-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 </div>\n\n <div\n v-if=\"showCount\"\n data-gr-input-count\n class=\"mt-1 text-right text-xs text-[var(--gr-muted-fg)] tabular-nums\"\n >\n {{ countText }}\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport {computed, ref, useSlots} from 'vue'\n\nimport {addLen, useAddonMeasurement} from '../../composables/internal/useAddonMeasurement'\nimport {useGrComponentProp, useGrComponentSize} from '../GrConfigProvider/context'\nimport {useGrFormFieldContext} from '../GrFormField/context'\nimport {useGranularityTranslations} from '../../internal/granularityI18n'\nimport type {InputHTMLAttributes} from 'vue'\n\nimport IconX from '~icons/lucide/x'\nimport IconEye from '~icons/lucide/eye'\nimport IconEyeOff from '~icons/lucide/eye-off'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nexport type GrInputSize = 'xs' | 'sm' | 'md' | 'lg'\nexport type GrInputTextAlign = 'left' | 'center' | 'right'\n\nconst props = withDefaults(\n defineProps<{\n modelValue: string\n type?: 'text' | 'email' | 'password' | 'number' | 'search'\n placeholder?: string\n autocomplete?: string\n inputmode?: InputHTMLAttributes['inputmode']\n disabled?: boolean\n /** Только для чтения: значение видно и выделяемо, но не редактируется. */\n readonly?: boolean\n invalid?: boolean\n state?: 'default' | 'success' | 'warning' | 'danger'\n name?: string\n id?: string\n size?: GrInputSize\n\n /** Показывать кнопку очистки, когда есть значение (и не disabled/readonly). */\n clearable?: boolean\n /** i18n aria-label кнопки очистки. */\n clearLabel?: string\n /** Ограничение длины + основа для счётчика символов. */\n maxlength?: number\n /** Показывать счётчик символов (`len` или `len/maxlength`). */\n showCount?: boolean\n /** Кнопка показать/скрыть пароль (только при `type=\"password\"`). */\n passwordToggle?: boolean\n /** i18n aria-label кнопки показать/скрыть пароль. */\n passwordShowLabel?: string\n passwordHideLabel?: string\n\n textAlign?: GrInputTextAlign\n\n prefixMinWidth?: string\n prefixMaxWidth?: string\n suffixMinWidth?: string\n suffixMaxWidth?: string\n /**\n * Фиксированная ширина у prefix/suffix: аддон получает жёсткую ширину\n * (из `*MaxWidth` → `*MinWidth` → дефолт), а контент обрезается по краю\n * (prefix — справа, suffix — слева). По умолчанию аддоны «растягиваются»\n * под контент (в пределах min/max), а излишек клипается оболочкой.\n */\n prefixFixed?: boolean\n suffixFixed?: boolean\n }>(),\n {\n type: 'text',\n placeholder: undefined,\n autocomplete: undefined,\n inputmode: undefined,\n disabled: false,\n readonly: false,\n invalid: false,\n state: 'default',\n name: undefined,\n id: undefined,\n size: undefined,\n\n // Настраивается через `GrConfigProvider`; дефолт — в резолвере ниже.\n clearable: undefined,\n clearLabel: undefined,\n maxlength: undefined,\n showCount: false,\n passwordToggle: false,\n passwordShowLabel: undefined,\n passwordHideLabel: undefined,\n\n textAlign: 'left',\n\n prefixMinWidth: undefined,\n prefixMaxWidth: undefined,\n suffixMinWidth: undefined,\n suffixMaxWidth: undefined,\n prefixFixed: false,\n suffixFixed: false,\n },\n)\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: string): void\n}>()\n\n// Контекст `GrFormField` (если инпут внутри него): даёт id/aria-describedby/\n// invalid/required как fallback, чтобы не прокидывать `forId` вручную.\nconst field = useGrFormFieldContext()\n\n// Эффективные значения: локальный проп → `GrConfigProvider` → дефолт компонента.\nconst resolvedSize = useGrComponentSize(() => props.size, { component: 'GrInput' })\nconst resolvedClearable = useGrComponentProp('GrInput', 'clearable', () => props.clearable, false)\n\nconst resolvedId = computed(() => props.id ?? field?.id.value)\nconst isInvalid = computed(() => props.invalid || Boolean(field?.invalid.value))\nconst describedBy = computed(() => field?.describedById.value)\nconst isRequired = computed(() => Boolean(field?.required.value))\n\nconst inputEl = ref<HTMLInputElement | null>(null)\n\nfunction focus(): void {\n inputEl.value?.focus()\n}\n\ndefineExpose({\n focus,\n})\n\nconst slots = useSlots()\n\nconst hasPrefix = computed(() => Boolean(slots.prefix))\nconst hasSuffix = computed(() => Boolean(slots.suffix))\n\nconst defaultAddonMinWidth = computed(() => {\n const map: Record<NonNullable<typeof props.size>, string> = {\n xs: '2rem', // w-8\n sm: '2.25rem', // w-9\n md: '2.5rem', // w-10\n lg: '3rem', // w-12\n }\n\n return map[resolvedSize.value]\n})\n\nconst prefixMinWidth = computed(() => props.prefixMinWidth ?? defaultAddonMinWidth.value)\nconst suffixMinWidth = computed(() => props.suffixMinWidth ?? defaultAddonMinWidth.value)\n\n// Жёсткая ширина для fixed-режима: max → min → дефолт.\nconst prefixFixedWidth = computed(() => props.prefixMaxWidth ?? props.prefixMinWidth ?? defaultAddonMinWidth.value)\nconst suffixFixedWidth = computed(() => props.suffixMaxWidth ?? props.suffixMinWidth ?? defaultAddonMinWidth.value)\n\nconst { prefixEl, suffixEl, measuredPrefixWidth, measuredSuffixWidth } = useAddonMeasurement(hasPrefix, hasSuffix)\n\nconst basePaddingXLen = computed(() => {\n // Must mirror `sizeClass` horizontal padding (px-*) because inline paddings override class paddings.\n const map: Record<NonNullable<typeof props.size>, string> = {\n xs: '10px', // px-2.5\n sm: '12px', // px-3\n md: '12px', // px-3\n lg: '16px', // px-4\n }\n\n return map[resolvedSize.value]\n})\n\nconst inputStyle = computed(() => {\n const leftReserved = hasPrefix.value\n ? (props.prefixFixed ? prefixFixedWidth.value : measuredPrefixWidth.value ?? prefixMinWidth.value)\n : '0px'\n const rightReserved = hasSuffix.value\n ? (props.suffixFixed ? suffixFixedWidth.value : measuredSuffixWidth.value ?? suffixMinWidth.value)\n : '0px'\n\n // Keep the same visual text padding as without addons (px-*), but add it on top of reserved space.\n const left = hasPrefix.value ? addLen(leftReserved, basePaddingXLen.value) : undefined\n const rightSpace = addLen(rightReserved, trailingReserve.value)\n const right = (hasSuffix.value || trailingCount.value > 0)\n ? addLen(rightSpace, basePaddingXLen.value)\n : undefined\n\n return {\n paddingLeft: left,\n paddingRight: right,\n } as Record<string, string | undefined>\n})\n\nconst prefixStyle = computed(() => {\n if (props.prefixFixed) {\n return {\n width: prefixFixedWidth.value,\n minWidth: prefixFixedWidth.value,\n maxWidth: prefixFixedWidth.value,\n } as Record<string, string | undefined>\n }\n\n return {\n minWidth: prefixMinWidth.value,\n maxWidth: props.prefixMaxWidth,\n } as Record<string, string | undefined>\n})\n\nconst suffixStyle = computed(() => {\n if (props.suffixFixed) {\n return {\n width: suffixFixedWidth.value,\n minWidth: suffixFixedWidth.value,\n maxWidth: suffixFixedWidth.value,\n } as Record<string, string | undefined>\n }\n\n return {\n minWidth: suffixMinWidth.value,\n maxWidth: props.suffixMaxWidth,\n } as Record<string, string | undefined>\n})\n\nconst sizeClass = computed(() => {\n const map: Record<NonNullable<typeof props.size>, string> = {\n xs: 'h-7 px-2.5 text-[12px]',\n sm: 'h-8 px-3 text-[13px]',\n md: 'h-10 px-3 text-[14px]',\n lg: 'h-11 px-4 text-[16px]',\n }\n\n return map[resolvedSize.value]\n})\n\nconst textAlignClass = computed(() => {\n const map: Record<NonNullable<typeof props.textAlign>, string> = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n }\n\n return map[props.textAlign]\n})\n\n// Border/ring/disabled — на оболочке (`focus-within`), размеры/выравнивание — на инпуте.\nconst shellClass = computed(() => {\n const state = props.state\n\n const borderByState: Record<typeof state, string> = {\n default: 'border-[var(--gr-brd)]',\n success: 'border-[var(--gr-success)] focus-within:ring-[var(--gr-success)]',\n warning: 'border-[var(--gr-warning)] focus-within:ring-[var(--gr-warning)]',\n danger: 'border-[var(--gr-danger)] focus-within:ring-[var(--gr-danger)]',\n }\n\n return [\n isInvalid.value ? borderByState.danger : borderByState[state],\n props.disabled ? 'opacity-50 cursor-not-allowed' : '',\n ].filter(Boolean).join(' ')\n})\n\nconst className = computed(() => {\n return [\n sizeClass.value,\n textAlignClass.value,\n ].join(' ')\n})\n\nfunction onInput(e: Event): void {\n emit('update:modelValue', (e.target as HTMLInputElement).value)\n}\n\n// ————— Trailing-контролы: очистка, переключатель пароля, счётчик символов.\nconst { t } = useGranularityTranslations()\nconst resolvedClearLabel = computed(() => props.clearLabel ?? t('gr.input.clear', 'Clear'))\nconst resolvedPasswordShowLabel = computed(() => props.passwordShowLabel ?? t('gr.input.showPassword', 'Show password'))\nconst resolvedPasswordHideLabel = computed(() => props.passwordHideLabel ?? t('gr.input.hidePassword', 'Hide password'))\n\nconst passwordVisible = ref(false)\n// Тип поля с учётом переключателя пароля.\nconst resolvedType = computed(() => (props.type === 'password' && passwordVisible.value ? 'text' : props.type))\n\nconst showPasswordToggle = computed(() => props.passwordToggle && props.type === 'password' && !props.disabled)\nconst showClear = computed(() => resolvedClearable.value && props.modelValue.length > 0 && !props.disabled && !props.readonly)\n\nconst trailingCount = computed(() => (showClear.value ? 1 : 0) + (showPasswordToggle.value ? 1 : 0))\nconst trailingReserve = computed(() => (trailingCount.value > 0 ? `${trailingCount.value * 28}px` : '0px'))\n\n// Счётчик символов: `len` или `len / maxlength`.\nconst countText = computed(() =>\n props.maxlength !== undefined ? `${props.modelValue.length} / ${props.maxlength}` : String(props.modelValue.length),\n)\n\nfunction clear(): void {\n emit('update:modelValue', '')\n inputEl.value?.focus()\n}\n\nfunction togglePassword(): void {\n passwordVisible.value = !passwordVisible.value\n inputEl.value?.focus()\n}\n</script>\n\n<template>\n <div data-gr-input class=\"w-full\">\n <div\n class=\"relative w-full overflow-hidden rounded-md border bg-[var(--gr-bg)] transition-colors duration-150 focus-within:ring-2 focus-within:ring-[var(--gr-ring)]\"\n :class=\"shellClass\"\n >\n <div\n v-if=\"$slots.prefix\"\n ref=\"prefixEl\"\n data-testid=\"gr-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=\"props.name\"\n :type=\"resolvedType\"\n :inputmode=\"props.inputmode\"\n :autocomplete=\"props.autocomplete\"\n :placeholder=\"props.placeholder\"\n :disabled=\"props.disabled\"\n :readonly=\"props.readonly\"\n :maxlength=\"props.maxlength\"\n :value=\"props.modelValue\"\n :aria-invalid=\"isInvalid ? 'true' : undefined\"\n :aria-describedby=\"describedBy\"\n :aria-required=\"isRequired ? 'true' : undefined\"\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=\"className\"\n :style=\"inputStyle\"\n @input=\"onInput\"\n >\n\n <div\n v-if=\"trailingCount > 0\"\n data-gr-input-trailing\n class=\"absolute inset-y-0 right-1 flex items-center gap-0.5\"\n >\n <button\n v-if=\"showClear\"\n type=\"button\"\n data-gr-input-clear\n :aria-label=\"resolvedClearLabel\"\n class=\"flex h-6 w-6 items-center justify-center rounded text-[var(--gr-muted-fg)] transition-colors hover:bg-[var(--gr-muted)] hover:text-[var(--gr-fg)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]\"\n tabindex=\"-1\"\n @click=\"clear\"\n >\n <IconX class=\"h-4 w-4\" aria-hidden=\"true\" />\n </button>\n\n <button\n v-if=\"showPasswordToggle\"\n type=\"button\"\n data-gr-input-password-toggle\n :aria-label=\"passwordVisible ? resolvedPasswordHideLabel : resolvedPasswordShowLabel\"\n :aria-pressed=\"passwordVisible ? 'true' : 'false'\"\n class=\"flex h-6 w-6 items-center justify-center rounded text-[var(--gr-muted-fg)] transition-colors hover:bg-[var(--gr-muted)] hover:text-[var(--gr-fg)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]\"\n tabindex=\"-1\"\n @click=\"togglePassword\"\n >\n <IconEyeOff v-if=\"passwordVisible\" class=\"h-4 w-4\" aria-hidden=\"true\" />\n <IconEye v-else class=\"h-4 w-4\" aria-hidden=\"true\" />\n </button>\n </div>\n\n <div\n v-if=\"$slots.suffix\"\n ref=\"suffixEl\"\n data-testid=\"gr-input-suffix\"\n class=\"absolute inset-y-0 right-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 </div>\n\n <div\n v-if=\"showCount\"\n data-gr-input-count\n class=\"mt-1 text-right text-xs text-[var(--gr-muted-fg)] tabular-nums\"\n >\n {{ countText }}\n </div>\n </div>\n</template>\n"],"mappings":"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"}