@feugene/granularity 0.13.0 → 0.16.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 (1223) 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-g6lT19.js +19 -0
  14. package/dist/chunks/config-B-g6lT19.js.map +1 -0
  15. package/dist/chunks/config-B-iNaGdw.js +199 -0
  16. package/dist/chunks/config-B-iNaGdw.js.map +1 -0
  17. package/dist/chunks/config-B84z1aos.js +19 -0
  18. package/dist/chunks/config-B84z1aos.js.map +1 -0
  19. package/dist/chunks/config-BE6n20np.js +27 -0
  20. package/dist/chunks/config-BE6n20np.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-BNfQwyL4.js +97 -0
  26. package/dist/chunks/config-BNfQwyL4.js.map +1 -0
  27. package/dist/chunks/config-BNu8lFQB.js.map +1 -1
  28. package/dist/chunks/config-BSyiFlbi.js +17 -0
  29. package/dist/chunks/config-BSyiFlbi.js.map +1 -0
  30. package/dist/chunks/config-BViooYNv.js +13 -0
  31. package/dist/chunks/config-BViooYNv.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_PD.js +140 -0
  37. package/dist/chunks/config-BoNR7_PD.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-BsuDM3Hb.js +55 -0
  43. package/dist/chunks/config-BsuDM3Hb.js.map +1 -0
  44. package/dist/chunks/config-BtXRpAtq.js +48 -0
  45. package/dist/chunks/config-BtXRpAtq.js.map +1 -0
  46. package/dist/chunks/config-BuGlNPE9.js +8 -0
  47. package/dist/chunks/config-BuGlNPE9.js.map +1 -0
  48. package/dist/chunks/config-C0Ea9ePP.js +15 -0
  49. package/dist/chunks/config-C0Ea9ePP.js.map +1 -0
  50. package/dist/chunks/config-CN2ULSQL2.js +36 -0
  51. package/dist/chunks/config-CN2ULSQL2.js.map +1 -0
  52. package/dist/chunks/config-CN970ZcJ.js +113 -0
  53. package/dist/chunks/config-CN970ZcJ.js.map +1 -0
  54. package/dist/chunks/config-COvrUfhR.js +83 -0
  55. package/dist/chunks/config-COvrUfhR.js.map +1 -0
  56. package/dist/chunks/config-CQzGyi1C.js +54 -0
  57. package/dist/chunks/config-CQzGyi1C.js.map +1 -0
  58. package/dist/chunks/config-CY0_6cMi.js +51 -0
  59. package/dist/chunks/config-CY0_6cMi.js.map +1 -0
  60. package/dist/chunks/config-CjXjhphs.js +12 -0
  61. package/dist/chunks/config-CjXjhphs.js.map +1 -0
  62. package/dist/chunks/config-CjnbevbD.js +13 -0
  63. package/dist/chunks/config-CjnbevbD.js.map +1 -0
  64. package/dist/chunks/config-Cl4ST6Qd.js +21 -0
  65. package/dist/chunks/config-Cl4ST6Qd.js.map +1 -0
  66. package/dist/chunks/config-Cp0DE0GH.js +12 -0
  67. package/dist/chunks/config-Cp0DE0GH.js.map +1 -0
  68. package/dist/chunks/config-CpwwkFBO.js +72 -0
  69. package/dist/chunks/config-CpwwkFBO.js.map +1 -0
  70. package/dist/chunks/config-CvC0sX8p.js +81 -0
  71. package/dist/chunks/config-CvC0sX8p.js.map +1 -0
  72. package/dist/chunks/config-Cw6TDzWv2.js +72 -0
  73. package/dist/chunks/config-Cw6TDzWv2.js.map +1 -0
  74. package/dist/chunks/config-Cwd3yjRw.js +41 -0
  75. package/dist/chunks/config-Cwd3yjRw.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-D8tSR2uS.js +103 -0
  81. package/dist/chunks/config-D8tSR2uS.js.map +1 -0
  82. package/dist/chunks/config-D94Z9po52.js +126 -0
  83. package/dist/chunks/config-D94Z9po52.js.map +1 -0
  84. package/dist/chunks/config-DBmdgoVf.js.map +1 -1
  85. package/dist/chunks/config-DCFvmHEv.js +76 -0
  86. package/dist/chunks/config-DCFvmHEv.js.map +1 -0
  87. package/dist/chunks/config-DKdlqXiY.js +109 -0
  88. package/dist/chunks/config-DKdlqXiY.js.map +1 -0
  89. package/dist/chunks/config-DP7eseR1.js +92 -0
  90. package/dist/chunks/config-DP7eseR1.js.map +1 -0
  91. package/dist/chunks/config-DSJY6aEl.js +80 -0
  92. package/dist/chunks/config-DSJY6aEl.js.map +1 -0
  93. package/dist/chunks/config-DU2DNSRx2.js +116 -0
  94. package/dist/chunks/config-DU2DNSRx2.js.map +1 -0
  95. package/dist/chunks/config-DhHbU3zO.js +37 -0
  96. package/dist/chunks/config-DhHbU3zO.js.map +1 -0
  97. package/dist/chunks/config-DpeQchsV.js +21 -0
  98. package/dist/chunks/config-DpeQchsV.js.map +1 -0
  99. package/dist/chunks/config-DpqOnJiz2.js.map +1 -0
  100. package/dist/chunks/config-DvQIb4kb.js +98 -0
  101. package/dist/chunks/config-DvQIb4kb.js.map +1 -0
  102. package/dist/chunks/config-DxCTVBfx.js +97 -0
  103. package/dist/chunks/config-DxCTVBfx.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-QaIc_gRa.js.map +1 -0
  107. package/dist/chunks/config-Rw9OyW70.js +87 -0
  108. package/dist/chunks/config-Rw9OyW70.js.map +1 -0
  109. package/dist/chunks/config-T3qdQBgU.js +40 -0
  110. package/dist/chunks/config-T3qdQBgU.js.map +1 -0
  111. package/dist/chunks/config-WTNhdh6T2.js +20 -0
  112. package/dist/chunks/config-WTNhdh6T2.js.map +1 -0
  113. package/dist/chunks/config-Zc_bUvZY2.js +23 -0
  114. package/dist/chunks/config-Zc_bUvZY2.js.map +1 -0
  115. package/dist/chunks/config-_qPUfb6-2.js +165 -0
  116. package/dist/chunks/config-_qPUfb6-2.js.map +1 -0
  117. package/dist/chunks/config-eXB87DOi2.js.map +1 -0
  118. package/dist/chunks/config-esdviAPL.js +41 -0
  119. package/dist/chunks/config-esdviAPL.js.map +1 -0
  120. package/dist/chunks/config-gwro_7yn.js +55 -0
  121. package/dist/chunks/config-gwro_7yn.js.map +1 -0
  122. package/dist/chunks/config-qVg3Zz_A.js +30 -0
  123. package/dist/chunks/config-qVg3Zz_A.js.map +1 -0
  124. package/dist/chunks/config-zjeAJ4ho.js +64 -0
  125. package/dist/chunks/config-zjeAJ4ho.js.map +1 -0
  126. package/dist/chunks/context-BSYR7RZs.js +152 -0
  127. package/dist/chunks/context-BSYR7RZs.js.map +1 -0
  128. package/dist/chunks/context-BfIQv7m1.js +18 -0
  129. package/dist/chunks/context-BfIQv7m1.js.map +1 -0
  130. package/dist/chunks/context-Bfrgsluh.js.map +1 -1
  131. package/dist/chunks/context-DdNIxa1w.js.map +1 -1
  132. package/dist/chunks/dialogShared-CxW62PQE.js.map +1 -1
  133. package/dist/chunks/en-B3xMeswz.js +327 -0
  134. package/dist/chunks/en-B3xMeswz.js.map +1 -0
  135. package/dist/chunks/es-Bv8vvqdT.js +20 -0
  136. package/dist/chunks/es-Bv8vvqdT.js.map +1 -0
  137. package/dist/chunks/es-CA-mkU--.js +329 -0
  138. package/dist/chunks/es-CA-mkU--.js.map +1 -0
  139. package/dist/chunks/fileValidation-D5TFBhbv.js +296 -0
  140. package/dist/chunks/fileValidation-D5TFBhbv.js.map +1 -0
  141. package/dist/chunks/focusables-BkzK42SQ.js +87 -0
  142. package/dist/chunks/focusables-BkzK42SQ.js.map +1 -0
  143. package/dist/chunks/grBadgeStyles-C2wLlkjF.js +61 -0
  144. package/dist/chunks/grBadgeStyles-C2wLlkjF.js.map +1 -0
  145. package/dist/chunks/grButtonStyles-B_-YRE__.js +221 -0
  146. package/dist/chunks/grButtonStyles-B_-YRE__.js.map +1 -0
  147. package/dist/chunks/grCheckboxStyles-hOAgURZG.js +82 -0
  148. package/dist/chunks/grCheckboxStyles-hOAgURZG.js.map +1 -0
  149. package/dist/chunks/grDropdownStyles-V7TRiCXn.js +24 -0
  150. package/dist/chunks/grDropdownStyles-V7TRiCXn.js.map +1 -0
  151. package/dist/chunks/grFormFieldStyles-BkeZHIw0.js +32 -0
  152. package/dist/chunks/grFormFieldStyles-BkeZHIw0.js.map +1 -0
  153. package/dist/chunks/grIconStyles-BwJrml2L.js +44 -0
  154. package/dist/chunks/grIconStyles-BwJrml2L.js.map +1 -0
  155. package/dist/chunks/grInputStyles-CJeMhUe5.js +66 -0
  156. package/dist/chunks/grInputStyles-CJeMhUe5.js.map +1 -0
  157. package/dist/chunks/grKbdStyles-DAoxiytu.js +31 -0
  158. package/dist/chunks/grKbdStyles-DAoxiytu.js.map +1 -0
  159. package/dist/chunks/grLinkStyles-BoL8QYcV.js +84 -0
  160. package/dist/chunks/grLinkStyles-BoL8QYcV.js.map +1 -0
  161. package/dist/chunks/grLoadingStyles-DEmji2wv.js +30 -0
  162. package/dist/chunks/grLoadingStyles-DEmji2wv.js.map +1 -0
  163. package/dist/chunks/grModalStyles-EZfuEiw_.js +77 -0
  164. package/dist/chunks/grModalStyles-EZfuEiw_.js.map +1 -0
  165. package/dist/chunks/grPopoverStyles-Rz_Z5nLW.js +46 -0
  166. package/dist/chunks/grPopoverStyles-Rz_Z5nLW.js.map +1 -0
  167. package/dist/chunks/grSelectStyles-eTz4uPMP.js +147 -0
  168. package/dist/chunks/grSelectStyles-eTz4uPMP.js.map +1 -0
  169. package/dist/chunks/grSliderStyles-B5uNxNJq.js +133 -0
  170. package/dist/chunks/grSliderStyles-B5uNxNJq.js.map +1 -0
  171. package/dist/chunks/grStyle-CrgLQKKf.js +46 -0
  172. package/dist/chunks/grStyle-CrgLQKKf.js.map +1 -0
  173. package/dist/chunks/grTableStyles-C-iaqQUN.js +26 -0
  174. package/dist/chunks/grTableStyles-C-iaqQUN.js.map +1 -0
  175. package/dist/chunks/grTextareaStyles-CWI2SqC8.js +50 -0
  176. package/dist/chunks/grTextareaStyles-CWI2SqC8.js.map +1 -0
  177. package/dist/chunks/granular-provider-CtrXGa7c.js +193 -0
  178. package/dist/chunks/granular-provider-CtrXGa7c.js.map +1 -0
  179. package/dist/chunks/granularityI18n-BC5zsj_d.js +68 -0
  180. package/dist/chunks/granularityI18n-BC5zsj_d.js.map +1 -0
  181. package/dist/chunks/inert-DIHCCn_1.js +78 -0
  182. package/dist/chunks/inert-DIHCCn_1.js.map +1 -0
  183. package/dist/chunks/keyboard-zYvvyHd4.js +61 -0
  184. package/dist/chunks/keyboard-zYvvyHd4.js.map +1 -0
  185. package/dist/chunks/loader-2-B1fdsdWW.js +23 -0
  186. package/dist/chunks/loader-2-B1fdsdWW.js.map +1 -0
  187. package/dist/chunks/minus-oxdbHF33.js +23 -0
  188. package/dist/chunks/minus-oxdbHF33.js.map +1 -0
  189. package/dist/chunks/optionFilter-BVY988pC.js +149 -0
  190. package/dist/chunks/optionFilter-BVY988pC.js.map +1 -0
  191. package/dist/chunks/portalRoot-CWD4zHBm.js +35 -0
  192. package/dist/chunks/portalRoot-CWD4zHBm.js.map +1 -0
  193. package/dist/chunks/ru-COWxgh2A.js +331 -0
  194. package/dist/chunks/ru-COWxgh2A.js.map +1 -0
  195. package/dist/chunks/safelist-CudBLyAD.js +26 -0
  196. package/dist/chunks/safelist-CudBLyAD.js.map +1 -0
  197. package/dist/chunks/slotNodes-DxNXpC7v.js +39 -0
  198. package/dist/chunks/slotNodes-DxNXpC7v.js.map +1 -0
  199. package/dist/chunks/useControlAddons-asUr10Pf.js +128 -0
  200. package/dist/chunks/useControlAddons-asUr10Pf.js.map +1 -0
  201. package/dist/chunks/useControlledOpen-DV3SqLTP.js +27 -0
  202. package/dist/chunks/useControlledOpen-DV3SqLTP.js.map +1 -0
  203. package/dist/chunks/useFilePreviews-DnwgdyBs.js +53 -0
  204. package/dist/chunks/useFilePreviews-DnwgdyBs.js.map +1 -0
  205. package/dist/chunks/useFocusWithin-BwHE0rzm.js +33 -0
  206. package/dist/chunks/useFocusWithin-BwHE0rzm.js.map +1 -0
  207. package/dist/chunks/useModalOverlay-DCM4d3yA.js +212 -0
  208. package/dist/chunks/useModalOverlay-DCM4d3yA.js.map +1 -0
  209. package/dist/chunks/useOverlayLayer-BupuP_hs.js +149 -0
  210. package/dist/chunks/useOverlayLayer-BupuP_hs.js.map +1 -0
  211. package/dist/chunks/usePortalTarget-RyzEgNTb.js +77 -0
  212. package/dist/chunks/usePortalTarget-RyzEgNTb.js.map +1 -0
  213. package/dist/chunks/validation-5HhpanPP.js +178 -0
  214. package/dist/chunks/validation-5HhpanPP.js.map +1 -0
  215. package/dist/components/GrAlert/chunks/GrAlert-BC1lplbY.js +272 -0
  216. package/dist/components/GrAlert/chunks/GrAlert-BC1lplbY.js.map +1 -0
  217. package/dist/components/GrAlert/index.js +2 -2
  218. package/dist/components/GrAutocomplete/chunks/GrAutocomplete-CQ9T7Lly.js +851 -0
  219. package/dist/components/GrAutocomplete/chunks/GrAutocomplete-CQ9T7Lly.js.map +1 -0
  220. package/dist/components/GrAutocomplete/index.js +2 -2
  221. package/dist/components/GrAutocomplete/styles.css +1 -0
  222. package/dist/components/GrAvatar/chunks/GrAvatar-CVUujLmn.js +222 -0
  223. package/dist/components/GrAvatar/chunks/GrAvatar-CVUujLmn.js.map +1 -0
  224. package/dist/components/GrAvatar/index.js +3 -3
  225. package/dist/components/GrBadge/chunks/GrBadge-B1tgqfGQ.js +40 -0
  226. package/dist/components/GrBadge/chunks/GrBadge-B1tgqfGQ.js.map +1 -0
  227. package/dist/components/GrBadge/index.js +2 -2
  228. package/dist/components/GrBadge/styles.css +1 -0
  229. package/dist/components/GrBadge/themes/dark.css +19 -0
  230. package/dist/components/GrBadge/themes/light.css +18 -0
  231. package/dist/components/GrBadgeWrap/chunks/GrBadgeWrap-C-E9betg.js +97 -0
  232. package/dist/components/GrBadgeWrap/chunks/GrBadgeWrap-C-E9betg.js.map +1 -0
  233. package/dist/components/GrBadgeWrap/index.js +3 -3
  234. package/dist/components/GrBadgeWrap/styles.css +1 -0
  235. package/dist/components/GrBottomNav/chunks/GrBottomNav-9GH7Dd9E.js +117 -0
  236. package/dist/components/GrBottomNav/chunks/GrBottomNav-9GH7Dd9E.js.map +1 -0
  237. package/dist/components/GrBottomNav/index.js +3 -3
  238. package/dist/components/GrBreadcrumbs/chunks/GrBreadcrumbs-BCNGDS6k.js +266 -0
  239. package/dist/components/GrBreadcrumbs/chunks/GrBreadcrumbs-BCNGDS6k.js.map +1 -0
  240. package/dist/components/GrBreadcrumbs/index.js +3 -0
  241. package/dist/components/GrButton/chunks/GrButton-D0m_z0XW.js +153 -0
  242. package/dist/components/GrButton/chunks/GrButton-D0m_z0XW.js.map +1 -0
  243. package/dist/components/GrButton/index.js +5 -5
  244. package/dist/components/GrButton/themes/dark.css +46 -0
  245. package/dist/components/GrButton/themes/light.css +82 -0
  246. package/dist/components/GrButtonGroup/chunks/GrButtonGroup-CKyiAV8K.js +44 -0
  247. package/dist/components/GrButtonGroup/chunks/GrButtonGroup-CKyiAV8K.js.map +1 -0
  248. package/dist/components/GrButtonGroup/index.js +3 -2
  249. package/dist/components/GrButtonGroup/styles.css +1 -0
  250. package/dist/components/GrCard/chunks/GrCard-DOrGHf2x.js +89 -0
  251. package/dist/components/GrCard/chunks/GrCard-DOrGHf2x.js.map +1 -0
  252. package/dist/components/GrCard/index.js +3 -3
  253. package/dist/components/GrCheckbox/chunks/GrCheckbox-BLOp8452.js +262 -0
  254. package/dist/components/GrCheckbox/chunks/GrCheckbox-BLOp8452.js.map +1 -0
  255. package/dist/components/GrCheckbox/index.js +3 -3
  256. package/dist/components/GrCheckboxGroup/chunks/GrCheckboxGroup-CXTx2Z5H.js +140 -0
  257. package/dist/components/GrCheckboxGroup/chunks/GrCheckboxGroup-CXTx2Z5H.js.map +1 -0
  258. package/dist/components/GrCheckboxGroup/index.js +3 -0
  259. package/dist/components/GrCollapse/chunks/GrCollapse-B2Fc6A9r.js +308 -0
  260. package/dist/components/GrCollapse/chunks/GrCollapse-B2Fc6A9r.js.map +1 -0
  261. package/dist/components/GrCollapse/index.js +3 -3
  262. package/dist/components/GrColorPicker/chunks/GrColorPicker-bnYBRGk8.js +584 -0
  263. package/dist/components/GrColorPicker/chunks/GrColorPicker-bnYBRGk8.js.map +1 -0
  264. package/dist/components/GrColorPicker/index.js +3 -0
  265. package/dist/components/GrColorPicker/styles.css +1 -0
  266. package/dist/components/GrCommandPalette/chunks/GrCommandPalette-MWDYDPNC.js +566 -0
  267. package/dist/components/GrCommandPalette/chunks/GrCommandPalette-MWDYDPNC.js.map +1 -0
  268. package/dist/components/GrCommandPalette/index.js +2 -2
  269. package/dist/components/GrCommandPalette/styles.css +1 -0
  270. package/dist/components/GrConfigProvider/chunks/GrConfigProvider-BA6JO7V6.js +144 -0
  271. package/dist/components/GrConfigProvider/chunks/GrConfigProvider-BA6JO7V6.js.map +1 -0
  272. package/dist/components/GrConfigProvider/index.js +2 -2
  273. package/dist/components/GrConfirmDialog/chunks/GrConfirmDialog-DaQmlp1_.js +200 -0
  274. package/dist/components/GrConfirmDialog/chunks/GrConfirmDialog-DaQmlp1_.js.map +1 -0
  275. package/dist/components/GrConfirmDialog/index.js +2 -2
  276. package/dist/components/GrDataTable/chunks/GrDataTable-DVFho9Cj.js +605 -0
  277. package/dist/components/GrDataTable/chunks/GrDataTable-DVFho9Cj.js.map +1 -0
  278. package/dist/components/GrDataTable/index.js +3 -3
  279. package/dist/components/GrDialog/chunks/GrDialog-AE1gIZuz.js +255 -0
  280. package/dist/components/GrDialog/chunks/GrDialog-AE1gIZuz.js.map +1 -0
  281. package/dist/components/GrDialog/index.js +1 -1
  282. package/dist/components/GrDialogService/chunks/GrDialogService-B4DYWDkA.js +656 -0
  283. package/dist/components/GrDialogService/chunks/GrDialogService-B4DYWDkA.js.map +1 -0
  284. package/dist/components/GrDialogService/index.js +3 -3
  285. package/dist/components/GrDivider/chunks/GrDivider-B2Xwc_QO.js +109 -0
  286. package/dist/components/GrDivider/chunks/GrDivider-B2Xwc_QO.js.map +1 -0
  287. package/dist/components/GrDivider/index.js +3 -3
  288. package/dist/components/GrDrawer/chunks/GrDrawer-DQwi6aRw.js +251 -0
  289. package/dist/components/GrDrawer/chunks/GrDrawer-DQwi6aRw.js.map +1 -0
  290. package/dist/components/GrDrawer/index.js +2 -2
  291. package/dist/components/GrDropdown/chunks/GrDropdown-BLng6V1m.js +300 -0
  292. package/dist/components/GrDropdown/chunks/GrDropdown-BLng6V1m.js.map +1 -0
  293. package/dist/components/GrDropdown/index.js +2 -2
  294. package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-BImk2Vs7.js +421 -0
  295. package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-BImk2Vs7.js.map +1 -0
  296. package/dist/components/GrDropdownMenu/index.js +3 -3
  297. package/dist/components/GrEmptyState/chunks/GrEmptyState-W7Irx3vc.js +86 -0
  298. package/dist/components/GrEmptyState/chunks/GrEmptyState-W7Irx3vc.js.map +1 -0
  299. package/dist/components/GrEmptyState/index.js +3 -3
  300. package/dist/components/GrFileUpload/chunks/GrFileUpload-D0B-BEsd.js +1080 -0
  301. package/dist/components/GrFileUpload/chunks/GrFileUpload-D0B-BEsd.js.map +1 -0
  302. package/dist/components/GrFileUpload/index.js +4 -4
  303. package/dist/components/GrForm/chunks/GrForm-BCHCfIMv.js +326 -0
  304. package/dist/components/GrForm/chunks/GrForm-BCHCfIMv.js.map +1 -0
  305. package/dist/components/GrForm/index.js +3 -2
  306. package/dist/components/GrFormField/chunks/GrFormField-CL5rcgj6.js +190 -0
  307. package/dist/components/GrFormField/chunks/GrFormField-CL5rcgj6.js.map +1 -0
  308. package/dist/components/GrFormField/index.js +3 -3
  309. package/dist/components/GrFormFile/chunks/GrFormFile-BikSD7bg.js +452 -0
  310. package/dist/components/GrFormFile/chunks/GrFormFile-BikSD7bg.js.map +1 -0
  311. package/dist/components/GrFormFile/index.js +3 -3
  312. package/dist/components/GrFormFile/styles.css +1 -0
  313. package/dist/components/GrFormSection/chunks/GrFormSection-BEh5n4jF.js +63 -0
  314. package/dist/components/GrFormSection/chunks/GrFormSection-BEh5n4jF.js.map +1 -0
  315. package/dist/components/GrFormSection/index.js +3 -3
  316. package/dist/components/GrIcon/chunks/GrIcon-BvA2ZGXP.js +57 -0
  317. package/dist/components/GrIcon/chunks/GrIcon-BvA2ZGXP.js.map +1 -0
  318. package/dist/components/GrIcon/index.js +3 -3
  319. package/dist/components/GrIcon/styles.css +1 -0
  320. package/dist/components/GrImageViewer/chunks/GrImageViewer-BeCnE8XQ.js +1103 -0
  321. package/dist/components/GrImageViewer/chunks/GrImageViewer-BeCnE8XQ.js.map +1 -0
  322. package/dist/components/GrImageViewer/index.js +3 -3
  323. package/dist/components/GrImageViewer/themes/dark.css +17 -0
  324. package/dist/components/GrImageViewer/themes/light.css +16 -0
  325. package/dist/components/GrInput/chunks/GrInput-DD2gYdqS.js +348 -0
  326. package/dist/components/GrInput/chunks/GrInput-DD2gYdqS.js.map +1 -0
  327. package/dist/components/GrInput/index.js +2 -2
  328. package/dist/components/GrInputTag/chunks/GrInputTag-DmNunixz.js +525 -0
  329. package/dist/components/GrInputTag/chunks/GrInputTag-DmNunixz.js.map +1 -0
  330. package/dist/components/GrInputTag/index.js +2 -2
  331. package/dist/components/GrKbd/chunks/GrKbd-DRFPvW3G.js +192 -0
  332. package/dist/components/GrKbd/chunks/GrKbd-DRFPvW3G.js.map +1 -0
  333. package/dist/components/GrKbd/index.js +3 -3
  334. package/dist/components/GrLink/chunks/GrLink-D-cgUMXW.js +163 -0
  335. package/dist/components/GrLink/chunks/GrLink-D-cgUMXW.js.map +1 -0
  336. package/dist/components/GrLink/index.js +2 -2
  337. package/dist/components/GrList/chunks/GrList-4YU1NZtM.js +277 -0
  338. package/dist/components/GrList/chunks/GrList-4YU1NZtM.js.map +1 -0
  339. package/dist/components/GrList/index.js +3 -3
  340. package/dist/components/GrList/styles.css +1 -0
  341. package/dist/components/GrLoading/chunks/GrLoading-CH95CFzS.js +101 -0
  342. package/dist/components/GrLoading/chunks/GrLoading-CH95CFzS.js.map +1 -0
  343. package/dist/components/GrLoading/index.js +2 -2
  344. package/dist/components/GrModal/chunks/GrModal-B8I78T0N.js +313 -0
  345. package/dist/components/GrModal/chunks/GrModal-B8I78T0N.js.map +1 -0
  346. package/dist/components/GrModal/index.js +3 -4
  347. package/dist/components/GrNavbar/chunks/GrNavbar-CF0KbM_6.js +104 -0
  348. package/dist/components/GrNavbar/chunks/GrNavbar-CF0KbM_6.js.map +1 -0
  349. package/dist/components/GrNavbar/index.js +3 -3
  350. package/dist/components/GrNumberInput/chunks/GrNumberInput-CZOyPz4J.js +658 -0
  351. package/dist/components/GrNumberInput/chunks/GrNumberInput-CZOyPz4J.js.map +1 -0
  352. package/dist/components/GrNumberInput/index.js +2 -2
  353. package/dist/components/GrPagination/chunks/GrPagination-B6N0QZBf.js +283 -0
  354. package/dist/components/GrPagination/chunks/GrPagination-B6N0QZBf.js.map +1 -0
  355. package/dist/components/GrPagination/index.js +3 -3
  356. package/dist/components/GrPopover/chunks/GrPopover-B1eRCOoO.js +216 -0
  357. package/dist/components/GrPopover/chunks/GrPopover-B1eRCOoO.js.map +1 -0
  358. package/dist/components/GrPopover/index.js +3 -0
  359. package/dist/components/GrProgressBar/chunks/GrProgressBar-BiHnaitu.js +90 -0
  360. package/dist/components/GrProgressBar/chunks/GrProgressBar-BiHnaitu.js.map +1 -0
  361. package/dist/components/GrProgressBar/index.js +2 -2
  362. package/dist/components/GrProgressBar/styles.css +1 -0
  363. package/dist/components/GrProgressBar/themes/dark.css +13 -0
  364. package/dist/components/GrProgressBar/themes/light.css +12 -0
  365. package/dist/components/GrProgressCircle/chunks/GrProgressCircle-CTogjcHz.js +210 -0
  366. package/dist/components/GrProgressCircle/chunks/GrProgressCircle-CTogjcHz.js.map +1 -0
  367. package/dist/components/GrProgressCircle/index.js +3 -0
  368. package/dist/components/GrProgressCircle/styles.css +1 -0
  369. package/dist/components/GrPromptDialog/chunks/GrPromptDialog-Ct174NVD.js +348 -0
  370. package/dist/components/GrPromptDialog/chunks/GrPromptDialog-Ct174NVD.js.map +1 -0
  371. package/dist/components/GrPromptDialog/index.js +2 -2
  372. package/dist/components/GrRadio/chunks/GrRadio-DksDro_U.js +277 -0
  373. package/dist/components/GrRadio/chunks/GrRadio-DksDro_U.js.map +1 -0
  374. package/dist/components/GrRadio/index.js +2 -2
  375. package/dist/components/GrRadioGroup/chunks/GrRadioGroup-BOIhejE6.js +189 -0
  376. package/dist/components/GrRadioGroup/chunks/GrRadioGroup-BOIhejE6.js.map +1 -0
  377. package/dist/components/GrRadioGroup/index.js +2 -2
  378. package/dist/components/GrRating/chunks/GrRating-JrHXz0Rv.js +315 -0
  379. package/dist/components/GrRating/chunks/GrRating-JrHXz0Rv.js.map +1 -0
  380. package/dist/components/GrRating/index.js +2 -2
  381. package/dist/components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-C7W9mgYN.js +777 -0
  382. package/dist/components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-C7W9mgYN.js.map +1 -0
  383. package/dist/components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-DhX4jjay.js +224 -0
  384. package/dist/components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-DhX4jjay.js.map +1 -0
  385. package/dist/components/GrResponseErrorBanner/index.js +2 -2
  386. package/dist/components/GrSegmented/chunks/GrSegmented-BQIlH5KI.js +406 -0
  387. package/dist/components/GrSegmented/chunks/GrSegmented-BQIlH5KI.js.map +1 -0
  388. package/dist/components/GrSegmented/index.js +3 -3
  389. package/dist/components/GrSelect/chunks/GrSelect-aqkPCqjd.js +1372 -0
  390. package/dist/components/GrSelect/chunks/GrSelect-aqkPCqjd.js.map +1 -0
  391. package/dist/components/GrSelect/index.js +2 -2
  392. package/dist/components/GrSelect/styles.css +1 -0
  393. package/dist/components/GrSidebar/chunks/GrSidebar-DRGnnViw.js +257 -0
  394. package/dist/components/GrSidebar/chunks/GrSidebar-DRGnnViw.js.map +1 -0
  395. package/dist/components/GrSidebar/index.js +3 -3
  396. package/dist/components/GrSkeleton/chunks/GrSkeleton-DEvNE3bC.js +84 -0
  397. package/dist/components/GrSkeleton/chunks/GrSkeleton-DEvNE3bC.js.map +1 -0
  398. package/dist/components/GrSkeleton/index.js +2 -2
  399. package/dist/components/GrSlider/chunks/GrSlider-DkU9IQSX.js +392 -0
  400. package/dist/components/GrSlider/chunks/GrSlider-DkU9IQSX.js.map +1 -0
  401. package/dist/components/GrSlider/index.js +2 -2
  402. package/dist/components/GrSplitter/chunks/GrSplitter-7To8jbJ8.js +288 -0
  403. package/dist/components/GrSplitter/chunks/GrSplitter-7To8jbJ8.js.map +1 -0
  404. package/dist/components/GrSplitter/index.js +3 -0
  405. package/dist/components/GrSplitter/styles.css +1 -0
  406. package/dist/components/GrStatistic/chunks/GrStatistic-CttyoYPT.js +319 -0
  407. package/dist/components/GrStatistic/chunks/GrStatistic-CttyoYPT.js.map +1 -0
  408. package/dist/components/GrStatistic/index.js +2 -2
  409. package/dist/components/GrSwitch/chunks/GrSwitch-B9TYbiih.js +183 -0
  410. package/dist/components/GrSwitch/chunks/GrSwitch-B9TYbiih.js.map +1 -0
  411. package/dist/components/GrSwitch/index.js +2 -2
  412. package/dist/components/GrTabPanels/chunks/GrTabPanels-BVe1CZdJ.js +81 -0
  413. package/dist/components/GrTabPanels/chunks/GrTabPanels-BVe1CZdJ.js.map +1 -0
  414. package/dist/components/GrTabPanels/index.js +2 -2
  415. package/dist/components/GrTable/chunks/GrTable-BB-mI_NM.js +163 -0
  416. package/dist/components/GrTable/chunks/GrTable-BB-mI_NM.js.map +1 -0
  417. package/dist/components/GrTable/index.js +3 -3
  418. package/dist/components/GrTabs/chunks/GrTabs-B8CDq2D9.js +272 -0
  419. package/dist/components/GrTabs/chunks/GrTabs-B8CDq2D9.js.map +1 -0
  420. package/dist/components/GrTabs/index.js +3 -3
  421. package/dist/components/GrTextarea/chunks/GrTextarea-DUh5Tlo4.js +241 -0
  422. package/dist/components/GrTextarea/chunks/GrTextarea-DUh5Tlo4.js.map +1 -0
  423. package/dist/components/GrTextarea/index.js +2 -2
  424. package/dist/components/GrTimeline/chunks/GrTimeline-CE9b3s18.js +285 -0
  425. package/dist/components/GrTimeline/chunks/GrTimeline-CE9b3s18.js.map +1 -0
  426. package/dist/components/GrTimeline/index.js +3 -0
  427. package/dist/components/GrTimeline/styles.css +1 -0
  428. package/dist/components/GrToaster/chunks/GrToaster-BKQy3Srm.js +272 -0
  429. package/dist/components/GrToaster/chunks/GrToaster-BKQy3Srm.js.map +1 -0
  430. package/dist/components/GrToaster/index.js +1 -1
  431. package/dist/components/GrToaster/styles.css +1 -0
  432. package/dist/components/GrTooltip/chunks/GrTooltip-DEbejfhA.js +185 -0
  433. package/dist/components/GrTooltip/chunks/GrTooltip-DEbejfhA.js.map +1 -0
  434. package/dist/components/GrTooltip/index.js +3 -3
  435. package/dist/components/GrTree/chunks/GrTree-wfdbvygw.js +1339 -0
  436. package/dist/components/GrTree/chunks/GrTree-wfdbvygw.js.map +1 -0
  437. package/dist/components/GrTree/index.js +2 -2
  438. package/dist/components/GrTree/styles.css +1 -0
  439. package/dist/components/GrTreeSelect/chunks/GrTreeSelect-lLWmAMtI.js +623 -0
  440. package/dist/components/GrTreeSelect/chunks/GrTreeSelect-lLWmAMtI.js.map +1 -0
  441. package/dist/components/GrTreeSelect/index.js +2 -2
  442. package/dist/composables/useAnnouncer.js +114 -0
  443. package/dist/composables/useAnnouncer.js.map +1 -0
  444. package/dist/composables/useDismissible.js +31 -0
  445. package/dist/composables/useDismissible.js.map +1 -0
  446. package/dist/composables/useFloating.js +112 -0
  447. package/dist/composables/useFloating.js.map +1 -0
  448. package/dist/composables/useFocusTrap.js +124 -0
  449. package/dist/composables/useFocusTrap.js.map +1 -0
  450. package/dist/composables/useGrFormControl.js +24 -0
  451. package/dist/composables/useGrFormControl.js.map +1 -0
  452. package/dist/composables/useOverlayLayer.js +2 -0
  453. package/dist/composables/usePortalTarget.js +2 -0
  454. package/dist/composables/useTheme.js +106 -36
  455. package/dist/composables/useTheme.js.map +1 -1
  456. package/dist/composables/useToast.js +123 -7
  457. package/dist/composables/useToast.js.map +1 -1
  458. package/dist/composables/useVirtualList.js +244 -0
  459. package/dist/composables/useVirtualList.js.map +1 -0
  460. package/dist/directives/dropzone.js +1 -1
  461. package/dist/directives/hotkey.js +9 -15
  462. package/dist/directives/hotkey.js.map +1 -1
  463. package/dist/directives/loading.js +43 -7
  464. package/dist/directives/loading.js.map +1 -1
  465. package/dist/fileValidation/index.js +2 -2
  466. package/dist/granular-provider-node.js +1 -31
  467. package/dist/granular-provider.js +1 -4
  468. package/dist/i18n/all.js +1 -1
  469. package/dist/i18n/index.js +1 -1
  470. package/dist/index.js +148 -140
  471. package/dist/styles/base.css +32 -0
  472. package/dist/styles/preflight.css +33 -0
  473. package/dist/styles/themes/dark.css +81 -26
  474. package/dist/styles/themes/light.css +86 -15
  475. package/dist/styles/tokens.css +63 -4
  476. package/dist/tokens.js +3132 -0
  477. package/dist/tokens.js.map +1 -0
  478. package/dist/types/src/components/GrAlert/GrAlert.vue.d.ts +42 -10
  479. package/dist/types/src/components/GrAlert/config.d.ts +1 -1
  480. package/dist/types/src/components/GrAlert/defaults.d.ts +9 -3
  481. package/dist/types/src/components/GrAlert/grAlertStyles.d.ts +0 -7
  482. package/dist/types/src/components/GrAlert/index.d.ts +3 -2
  483. package/dist/types/src/components/GrAutocomplete/GrAutocomplete.vue.d.ts +112 -99
  484. package/dist/types/src/components/GrAutocomplete/config.d.ts +1 -1
  485. package/dist/types/src/components/GrAutocomplete/grAutocompleteStyles.d.ts +43 -7
  486. package/dist/types/src/components/GrAutocomplete/index.d.ts +4 -0
  487. package/dist/types/src/components/GrAvatar/GrAvatar.vue.d.ts +40 -17
  488. package/dist/types/src/components/GrAvatar/GrAvatarGroup.vue.d.ts +70 -0
  489. package/dist/types/src/components/GrAvatar/avatarContext.d.ts +12 -0
  490. package/dist/types/src/components/GrAvatar/config.d.ts +1 -1
  491. package/dist/types/src/components/GrAvatar/defaults.d.ts +16 -0
  492. package/dist/types/src/components/GrAvatar/grAvatarStyles.d.ts +38 -0
  493. package/dist/types/src/components/GrAvatar/index.d.ts +5 -0
  494. package/dist/types/src/components/GrAvatar/safelist.d.ts +4 -0
  495. package/dist/types/src/components/GrBadge/GrBadge.vue.d.ts +4 -4
  496. package/dist/types/src/components/GrBadge/config.d.ts +1 -1
  497. package/dist/types/src/components/GrBadge/grBadgeStyles.d.ts +13 -1
  498. package/dist/types/src/components/GrBadge/index.d.ts +1 -0
  499. package/dist/types/src/components/GrBadgeWrap/GrBadgeWrap.vue.d.ts +42 -5
  500. package/dist/types/src/components/GrBadgeWrap/config.d.ts +1 -1
  501. package/dist/types/src/components/GrBadgeWrap/grBadgeWrapStyles.d.ts +46 -0
  502. package/dist/types/src/components/GrBadgeWrap/index.d.ts +4 -0
  503. package/dist/types/src/components/GrBadgeWrap/safelist.d.ts +1 -0
  504. package/dist/types/src/components/GrBottomNav/GrBottomNav.vue.d.ts +91 -4
  505. package/dist/types/src/components/GrBottomNav/config.d.ts +1 -1
  506. package/dist/types/src/components/GrBottomNav/defaults.d.ts +16 -0
  507. package/dist/types/src/components/GrBottomNav/grBottomNavStyles.d.ts +56 -0
  508. package/dist/types/src/components/GrBottomNav/index.d.ts +6 -1
  509. package/dist/types/src/components/GrBottomNav/safelist.d.ts +1 -0
  510. package/dist/types/src/components/GrBreadcrumbs/GrBreadcrumbs.vue.d.ts +117 -0
  511. package/dist/types/src/components/GrBreadcrumbs/config.d.ts +1 -0
  512. package/dist/types/src/components/GrBreadcrumbs/defaults.d.ts +15 -0
  513. package/dist/types/src/components/GrBreadcrumbs/grBreadcrumbsStyles.d.ts +86 -0
  514. package/dist/types/src/components/GrBreadcrumbs/index.d.ts +8 -0
  515. package/dist/types/src/components/GrBreadcrumbs/safelist.d.ts +1 -0
  516. package/dist/types/src/components/GrButton/GrButton.vue.d.ts +31 -7
  517. package/dist/types/src/components/GrButton/config.d.ts +1 -1
  518. package/dist/types/src/components/GrButton/grButtonStyles.d.ts +27 -3
  519. package/dist/types/src/components/GrButton/index.d.ts +5 -1
  520. package/dist/types/src/components/GrButton/safelist.d.ts +1 -0
  521. package/dist/types/src/components/GrButtonGroup/GrButtonGroup.vue.d.ts +32 -4
  522. package/dist/types/src/components/GrButtonGroup/config.d.ts +1 -1
  523. package/dist/types/src/components/GrButtonGroup/context.d.ts +20 -0
  524. package/dist/types/src/components/GrButtonGroup/index.d.ts +3 -0
  525. package/dist/types/src/components/GrCard/GrCard.vue.d.ts +80 -3
  526. package/dist/types/src/components/GrCard/config.d.ts +1 -1
  527. package/dist/types/src/components/GrCard/defaults.d.ts +15 -0
  528. package/dist/types/src/components/GrCard/grCardStyles.d.ts +24 -0
  529. package/dist/types/src/components/GrCard/index.d.ts +5 -0
  530. package/dist/types/src/components/GrCard/safelist.d.ts +1 -0
  531. package/dist/types/src/components/GrCheckbox/GrCheckbox.vue.d.ts +56 -10
  532. package/dist/types/src/components/GrCheckbox/config.d.ts +1 -1
  533. package/dist/types/src/components/GrCheckbox/defaults.d.ts +14 -0
  534. package/dist/types/src/components/GrCheckbox/grCheckboxGroupContext.d.ts +19 -0
  535. package/dist/types/src/components/GrCheckbox/grCheckboxStyles.d.ts +44 -0
  536. package/dist/types/src/components/GrCheckbox/index.d.ts +9 -0
  537. package/dist/types/src/components/GrCheckbox/safelist.d.ts +13 -0
  538. package/dist/types/src/components/GrCheckboxGroup/GrCheckboxGroup.vue.d.ts +105 -0
  539. package/dist/types/src/components/GrCheckboxGroup/config.d.ts +1 -0
  540. package/dist/types/src/components/GrCheckboxGroup/defaults.d.ts +14 -0
  541. package/dist/types/src/components/GrCheckboxGroup/index.d.ts +9 -0
  542. package/dist/types/src/components/GrCollapse/GrCollapse.vue.d.ts +55 -7
  543. package/dist/types/src/components/GrCollapse/GrCollapseItem.vue.d.ts +13 -3
  544. package/dist/types/src/components/GrCollapse/config.d.ts +1 -1
  545. package/dist/types/src/components/GrCollapse/defaults.d.ts +19 -0
  546. package/dist/types/src/components/GrCollapse/grCollapseContext.d.ts +20 -0
  547. package/dist/types/src/components/GrCollapse/grCollapseStyles.d.ts +42 -0
  548. package/dist/types/src/components/GrCollapse/index.d.ts +3 -0
  549. package/dist/types/src/components/GrCollapse/safelist.d.ts +15 -0
  550. package/dist/types/src/components/GrColorPicker/GrColorPicker.vue.d.ts +104 -0
  551. package/dist/types/src/components/GrColorPicker/color.d.ts +38 -0
  552. package/dist/types/src/components/GrColorPicker/config.d.ts +1 -0
  553. package/dist/types/src/components/GrColorPicker/defaults.d.ts +15 -0
  554. package/dist/types/src/components/GrColorPicker/grColorPickerStyles.d.ts +39 -0
  555. package/dist/types/src/components/GrColorPicker/index.d.ts +11 -0
  556. package/dist/types/src/components/GrColorPicker/safelist.d.ts +1 -0
  557. package/dist/types/src/components/GrCommandPalette/GrCommandPalette.vue.d.ts +45 -10
  558. package/dist/types/src/components/GrCommandPalette/config.d.ts +1 -1
  559. package/dist/types/src/components/GrCommandPalette/defaults.d.ts +14 -0
  560. package/dist/types/src/components/GrCommandPalette/filtering.d.ts +24 -0
  561. package/dist/types/src/components/GrCommandPalette/grCommandPaletteStyles.d.ts +33 -8
  562. package/dist/types/src/components/GrCommandPalette/index.d.ts +4 -0
  563. package/dist/types/src/components/GrConfigProvider/GrConfigProvider.vue.d.ts +38 -4
  564. package/dist/types/src/components/GrConfigProvider/config.d.ts +1 -1
  565. package/dist/types/src/components/GrConfigProvider/context.d.ts +27 -0
  566. package/dist/types/src/components/GrConfigProvider/index.d.ts +1 -0
  567. package/dist/types/src/components/GrConfigProvider/zIndexScale.d.ts +23 -0
  568. package/dist/types/src/components/GrConfirmDialog/GrConfirmDialog.vue.d.ts +33 -4
  569. package/dist/types/src/components/GrConfirmDialog/config.d.ts +1 -1
  570. package/dist/types/src/components/GrConfirmDialog/defaults.d.ts +14 -0
  571. package/dist/types/src/components/GrConfirmDialog/index.d.ts +2 -1
  572. package/dist/types/src/components/GrDataTable/GrDataTable.vue.d.ts +92 -27
  573. package/dist/types/src/components/GrDataTable/config.d.ts +1 -1
  574. package/dist/types/src/components/GrDataTable/defaults.d.ts +10 -0
  575. package/dist/types/src/components/GrDataTable/grDataTableSort.d.ts +25 -0
  576. package/dist/types/src/components/GrDataTable/grDataTableStyles.d.ts +29 -0
  577. package/dist/types/src/components/GrDataTable/index.d.ts +10 -1
  578. package/dist/types/src/components/GrDataTable/safelist.d.ts +1 -0
  579. package/dist/types/src/components/GrDialog/GrDialog.vue.d.ts +51 -4
  580. package/dist/types/src/components/GrDialog/GrDialogCloseButton.vue.d.ts +3 -0
  581. package/dist/types/src/components/GrDialog/GrDialogHeader.vue.d.ts +3 -0
  582. package/dist/types/src/components/GrDialog/config.d.ts +1 -1
  583. package/dist/types/src/components/GrDialog/defaults.d.ts +14 -0
  584. package/dist/types/src/components/GrDialog/dialogShared.d.ts +2 -1
  585. package/dist/types/src/components/GrDialog/index.d.ts +5 -0
  586. package/dist/types/src/components/GrDialogService/GrDialogServiceHost.vue.d.ts +18 -1
  587. package/dist/types/src/components/GrDialogService/GrDialogServiceItem.vue.d.ts +15 -0
  588. package/dist/types/src/components/GrDialogService/config.d.ts +1 -1
  589. package/dist/types/src/components/GrDialogService/index.d.ts +3 -1
  590. package/dist/types/src/components/GrDialogService/store.d.ts +78 -7
  591. package/dist/types/src/components/GrDialogService/types.d.ts +22 -1
  592. package/dist/types/src/components/GrDialogService/useDialogService.d.ts +31 -1
  593. package/dist/types/src/components/GrDivider/GrDivider.vue.d.ts +44 -9
  594. package/dist/types/src/components/GrDivider/config.d.ts +1 -1
  595. package/dist/types/src/components/GrDivider/defaults.d.ts +15 -0
  596. package/dist/types/src/components/GrDivider/grDividerStyles.d.ts +19 -0
  597. package/dist/types/src/components/GrDivider/index.d.ts +4 -1
  598. package/dist/types/src/components/GrDivider/safelist.d.ts +1 -0
  599. package/dist/types/src/components/GrDrawer/GrDrawer.vue.d.ts +93 -17
  600. package/dist/types/src/components/GrDrawer/config.d.ts +1 -1
  601. package/dist/types/src/components/GrDrawer/defaults.d.ts +19 -0
  602. package/dist/types/src/components/GrDrawer/grDrawerStyles.d.ts +48 -2
  603. package/dist/types/src/components/GrDrawer/index.d.ts +6 -1
  604. package/dist/types/src/components/GrDropdown/GrDropdown.vue.d.ts +66 -13
  605. package/dist/types/src/components/GrDropdown/config.d.ts +1 -1
  606. package/dist/types/src/components/GrDropdown/grDropdownStyles.d.ts +4 -5
  607. package/dist/types/src/components/GrDropdown/index.d.ts +5 -2
  608. package/dist/types/src/components/GrDropdownMenu/GrDropdownMenu.vue.d.ts +79 -16
  609. package/dist/types/src/components/GrDropdownMenu/GrDropdownMenuColumn.vue.d.ts +2 -1
  610. package/dist/types/src/components/GrDropdownMenu/GrDropdownMenuColumns.vue.d.ts +3 -2
  611. package/dist/types/src/components/GrDropdownMenu/GrDropdownMenuGroup.vue.d.ts +2 -2
  612. package/dist/types/src/components/GrDropdownMenu/GrDropdownMenuHeader.vue.d.ts +3 -2
  613. package/dist/types/src/components/GrDropdownMenu/GrDropdownMenuItem.vue.d.ts +51 -5
  614. package/dist/types/src/components/GrDropdownMenu/GrDropdownMenuList.vue.d.ts +5 -0
  615. package/dist/types/src/components/GrDropdownMenu/config.d.ts +1 -1
  616. package/dist/types/src/components/GrDropdownMenu/grDropdownMenuStyles.d.ts +33 -0
  617. package/dist/types/src/components/GrDropdownMenu/index.d.ts +6 -2
  618. package/dist/types/src/components/GrDropdownMenu/menuModel.d.ts +42 -0
  619. package/dist/types/src/components/GrDropdownMenu/safelist.d.ts +7 -0
  620. package/dist/types/src/components/GrEmptyState/GrEmptyState.vue.d.ts +33 -10
  621. package/dist/types/src/components/GrEmptyState/config.d.ts +1 -1
  622. package/dist/types/src/components/GrEmptyState/defaults.d.ts +16 -0
  623. package/dist/types/src/components/GrEmptyState/grEmptyStateStyles.d.ts +32 -0
  624. package/dist/types/src/components/GrEmptyState/index.d.ts +4 -0
  625. package/dist/types/src/components/GrEmptyState/safelist.d.ts +1 -0
  626. package/dist/types/src/components/GrFileUpload/GrFileUpload.vue.d.ts +158 -148
  627. package/dist/types/src/components/GrFileUpload/config.d.ts +1 -1
  628. package/dist/types/src/components/GrFileUpload/defaults.d.ts +10 -0
  629. package/dist/types/src/components/GrFileUpload/fileEntry.d.ts +26 -0
  630. package/dist/types/src/components/GrFileUpload/grFileUploadStyles.d.ts +45 -0
  631. package/dist/types/src/components/GrFileUpload/index.d.ts +10 -1
  632. package/dist/types/src/components/GrFileUpload/maxFileSize.d.ts +2 -0
  633. package/dist/types/src/components/GrFileUpload/safelist.d.ts +1 -0
  634. package/dist/types/src/components/GrFileUpload/useDropZone.d.ts +24 -0
  635. package/dist/types/src/components/GrFileUpload/usePerFileUpload.d.ts +38 -0
  636. package/dist/types/src/components/GrFileUpload/useUploadState.d.ts +30 -0
  637. package/dist/types/src/components/GrForm/GrForm.vue.d.ts +38 -2
  638. package/dist/types/src/components/GrForm/config.d.ts +1 -1
  639. package/dist/types/src/components/GrForm/context.d.ts +22 -3
  640. package/dist/types/src/components/GrForm/fileRule.d.ts +43 -0
  641. package/dist/types/src/components/GrForm/index.d.ts +6 -2
  642. package/dist/types/src/components/GrForm/modelSnapshot.d.ts +17 -0
  643. package/dist/types/src/components/GrForm/validation.d.ts +16 -1
  644. package/dist/types/src/components/GrFormField/GrFormField.vue.d.ts +56 -10
  645. package/dist/types/src/components/GrFormField/config.d.ts +1 -1
  646. package/dist/types/src/components/GrFormField/context.d.ts +19 -0
  647. package/dist/types/src/components/GrFormField/defaults.d.ts +15 -0
  648. package/dist/types/src/components/GrFormField/grFormFieldStyles.d.ts +19 -0
  649. package/dist/types/src/components/GrFormField/index.d.ts +5 -1
  650. package/dist/types/src/components/GrFormField/safelist.d.ts +1 -0
  651. package/dist/types/src/components/GrFormFile/GrFormFile.vue.d.ts +70 -16
  652. package/dist/types/src/components/GrFormFile/config.d.ts +1 -1
  653. package/dist/types/src/components/GrFormFile/defaults.d.ts +10 -0
  654. package/dist/types/src/components/GrFormFile/grFormFileStyles.d.ts +22 -0
  655. package/dist/types/src/components/GrFormFile/index.d.ts +7 -0
  656. package/dist/types/src/components/GrFormFile/safelist.d.ts +1 -0
  657. package/dist/types/src/components/GrFormSection/GrFormSection.vue.d.ts +34 -7
  658. package/dist/types/src/components/GrFormSection/config.d.ts +1 -1
  659. package/dist/types/src/components/GrFormSection/defaults.d.ts +14 -0
  660. package/dist/types/src/components/GrFormSection/grFormSectionStyles.d.ts +12 -0
  661. package/dist/types/src/components/GrFormSection/index.d.ts +4 -0
  662. package/dist/types/src/components/GrFormSection/safelist.d.ts +1 -0
  663. package/dist/types/src/components/GrIcon/GrIcon.vue.d.ts +40 -4
  664. package/dist/types/src/components/GrIcon/config.d.ts +1 -1
  665. package/dist/types/src/components/GrIcon/defaults.d.ts +14 -0
  666. package/dist/types/src/components/GrIcon/grIconStyles.d.ts +25 -0
  667. package/dist/types/src/components/GrIcon/index.d.ts +4 -0
  668. package/dist/types/src/components/GrIcon/safelist.d.ts +1 -0
  669. package/dist/types/src/components/GrImageViewer/GrImageViewer.vue.d.ts +87 -16
  670. package/dist/types/src/components/GrImageViewer/composables/usePointerGestures.d.ts +36 -0
  671. package/dist/types/src/components/GrImageViewer/composables/useViewerKeyboard.d.ts +7 -4
  672. package/dist/types/src/components/GrImageViewer/composables/useWheelGesture.d.ts +3 -2
  673. package/dist/types/src/components/GrImageViewer/composables/useZoomPan.d.ts +17 -3
  674. package/dist/types/src/components/GrImageViewer/config.d.ts +1 -1
  675. package/dist/types/src/components/GrImageViewer/grImageViewerStyles.d.ts +21 -0
  676. package/dist/types/src/components/GrImageViewer/index.d.ts +7 -0
  677. package/dist/types/src/components/GrImageViewer/safelist.d.ts +1 -0
  678. package/dist/types/src/components/GrInput/GrInput.vue.d.ts +66 -21
  679. package/dist/types/src/components/GrInput/config.d.ts +1 -1
  680. package/dist/types/src/components/GrInput/grInputStyles.d.ts +53 -7
  681. package/dist/types/src/components/GrInput/index.d.ts +5 -0
  682. package/dist/types/src/components/GrInputTag/GrInputTag.vue.d.ts +97 -14
  683. package/dist/types/src/components/GrInputTag/config.d.ts +1 -1
  684. package/dist/types/src/components/GrInputTag/defaults.d.ts +17 -0
  685. package/dist/types/src/components/GrInputTag/grInputTagStyles.d.ts +24 -1
  686. package/dist/types/src/components/GrInputTag/index.d.ts +5 -0
  687. package/dist/types/src/components/GrKbd/GrKbd.vue.d.ts +31 -10
  688. package/dist/types/src/components/GrKbd/config.d.ts +1 -1
  689. package/dist/types/src/components/GrKbd/defaults.d.ts +14 -0
  690. package/dist/types/src/components/GrKbd/grKbdStyles.d.ts +15 -0
  691. package/dist/types/src/components/GrKbd/index.d.ts +4 -1
  692. package/dist/types/src/components/GrKbd/safelist.d.ts +1 -0
  693. package/dist/types/src/components/GrLink/GrLink.vue.d.ts +23 -10
  694. package/dist/types/src/components/GrLink/config.d.ts +1 -1
  695. package/dist/types/src/components/GrLink/defaults.d.ts +14 -0
  696. package/dist/types/src/components/GrLink/grLinkStyles.d.ts +11 -13
  697. package/dist/types/src/components/GrLink/index.d.ts +2 -0
  698. package/dist/types/src/components/GrList/GrList.vue.d.ts +57 -32
  699. package/dist/types/src/components/GrList/GrListItem.vue.d.ts +42 -9
  700. package/dist/types/src/components/GrList/config.d.ts +1 -1
  701. package/dist/types/src/components/GrList/grListStyles.d.ts +25 -0
  702. package/dist/types/src/components/GrList/index.d.ts +5 -0
  703. package/dist/types/src/components/GrList/safelist.d.ts +1 -0
  704. package/dist/types/src/components/GrLoading/GrLoading.vue.d.ts +59 -19
  705. package/dist/types/src/components/GrLoading/config.d.ts +1 -1
  706. package/dist/types/src/components/GrLoading/grLoadingStyles.d.ts +10 -2
  707. package/dist/types/src/components/GrLoading/index.d.ts +1 -0
  708. package/dist/types/src/components/GrModal/GrModal.vue.d.ts +58 -12
  709. package/dist/types/src/components/GrModal/config.d.ts +1 -1
  710. package/dist/types/src/components/GrModal/context.d.ts +37 -0
  711. package/dist/types/src/components/GrModal/defaults.d.ts +14 -0
  712. package/dist/types/src/components/GrModal/grModalStyles.d.ts +25 -10
  713. package/dist/types/src/components/GrModal/index.d.ts +6 -3
  714. package/dist/types/src/components/GrNavbar/GrNavbar.vue.d.ts +28 -9
  715. package/dist/types/src/components/GrNavbar/config.d.ts +1 -1
  716. package/dist/types/src/components/GrNavbar/grNavbarStyles.d.ts +23 -0
  717. package/dist/types/src/components/GrNavbar/index.d.ts +2 -0
  718. package/dist/types/src/components/GrNavbar/safelist.d.ts +1 -0
  719. package/dist/types/src/components/GrNumberInput/GrNumberInput.vue.d.ts +64 -17
  720. package/dist/types/src/components/GrNumberInput/config.d.ts +1 -1
  721. package/dist/types/src/components/GrNumberInput/defaults.d.ts +1 -0
  722. package/dist/types/src/components/GrNumberInput/grNumberInputStyles.d.ts +20 -4
  723. package/dist/types/src/components/GrNumberInput/index.d.ts +4 -0
  724. package/dist/types/src/components/GrNumberInput/numberInputMath.d.ts +17 -0
  725. package/dist/types/src/components/GrPagination/GrPagination.vue.d.ts +47 -1
  726. package/dist/types/src/components/GrPagination/config.d.ts +1 -1
  727. package/dist/types/src/components/GrPagination/defaults.d.ts +10 -0
  728. package/dist/types/src/components/GrPagination/grPaginationStyles.d.ts +19 -0
  729. package/dist/types/src/components/GrPagination/index.d.ts +4 -0
  730. package/dist/types/src/components/GrPagination/safelist.d.ts +1 -0
  731. package/dist/types/src/components/GrPopover/GrPopover.vue.d.ts +161 -0
  732. package/dist/types/src/components/GrPopover/config.d.ts +1 -0
  733. package/dist/types/src/components/GrPopover/defaults.d.ts +15 -0
  734. package/dist/types/src/components/GrPopover/grPopoverStyles.d.ts +28 -0
  735. package/dist/types/src/components/GrPopover/index.d.ts +11 -0
  736. package/dist/types/src/components/GrPopover/safelist.d.ts +1 -0
  737. package/dist/types/src/components/GrProgressBar/GrProgressBar.vue.d.ts +37 -5
  738. package/dist/types/src/components/GrProgressBar/config.d.ts +1 -1
  739. package/dist/types/src/components/GrProgressBar/defaults.d.ts +11 -0
  740. package/dist/types/src/components/GrProgressBar/grStyle.d.ts +14 -0
  741. package/dist/types/src/components/GrProgressBar/index.d.ts +2 -1
  742. package/dist/types/src/components/GrProgressBar/safelist.d.ts +4 -0
  743. package/dist/types/src/components/GrProgressCircle/GrProgressCircle.vue.d.ts +103 -0
  744. package/dist/types/src/components/GrProgressCircle/config.d.ts +1 -0
  745. package/dist/types/src/components/GrProgressCircle/defaults.d.ts +18 -0
  746. package/dist/types/src/components/GrProgressCircle/geometry.d.ts +29 -0
  747. package/dist/types/src/components/GrProgressCircle/grProgressCircleStyles.d.ts +34 -0
  748. package/dist/types/src/components/GrProgressCircle/index.d.ts +11 -0
  749. package/dist/types/src/components/GrProgressCircle/safelist.d.ts +1 -0
  750. package/dist/types/src/components/GrPromptDialog/GrPromptDialog.vue.d.ts +78 -10
  751. package/dist/types/src/components/GrPromptDialog/config.d.ts +1 -1
  752. package/dist/types/src/components/GrPromptDialog/defaults.d.ts +14 -0
  753. package/dist/types/src/components/GrPromptDialog/index.d.ts +1 -0
  754. package/dist/types/src/components/GrRadio/GrRadio.vue.d.ts +28 -9
  755. package/dist/types/src/components/GrRadio/config.d.ts +1 -1
  756. package/dist/types/src/components/GrRadio/grRadioGroupContext.d.ts +37 -2
  757. package/dist/types/src/components/GrRadio/grRadioStyles.d.ts +49 -6
  758. package/dist/types/src/components/GrRadio/index.d.ts +1 -0
  759. package/dist/types/src/components/GrRadioGroup/GrRadioGroup.vue.d.ts +54 -10
  760. package/dist/types/src/components/GrRadioGroup/config.d.ts +1 -1
  761. package/dist/types/src/components/GrRadioGroup/index.d.ts +4 -0
  762. package/dist/types/src/components/GrRating/GrRating.vue.d.ts +66 -17
  763. package/dist/types/src/components/GrRating/config.d.ts +1 -1
  764. package/dist/types/src/components/GrRating/grRatingStyles.d.ts +4 -1
  765. package/dist/types/src/components/GrRating/index.d.ts +4 -0
  766. package/dist/types/src/components/GrResponseErrorBanner/GrFormErrorBanner.vue.d.ts +8 -4
  767. package/dist/types/src/components/GrResponseErrorBanner/GrResponseErrorBanner.vue.d.ts +8 -4
  768. package/dist/types/src/components/GrResponseErrorBanner/GrUploadErrorBanner.vue.d.ts +11 -4
  769. package/dist/types/src/components/GrResponseErrorBanner/config.d.ts +1 -1
  770. package/dist/types/src/components/GrResponseErrorBanner/index.d.ts +6 -0
  771. package/dist/types/src/components/GrResponseErrorBanner/parsers/httpStatusParser.d.ts +3 -1
  772. package/dist/types/src/components/GrResponseErrorBanner/parsers/plainMessageParser.d.ts +4 -1
  773. package/dist/types/src/components/GrResponseErrorBanner/responseError.types.d.ts +12 -2
  774. package/dist/types/src/components/GrSegmented/GrSegmented.vue.d.ts +48 -9
  775. package/dist/types/src/components/GrSegmented/config.d.ts +1 -1
  776. package/dist/types/src/components/GrSegmented/grSegmentedStyles.d.ts +31 -5
  777. package/dist/types/src/components/GrSegmented/index.d.ts +5 -1
  778. package/dist/types/src/components/GrSegmented/safelist.d.ts +3 -1
  779. package/dist/types/src/components/GrSelect/GrSelect.vue.d.ts +138 -114
  780. package/dist/types/src/components/GrSelect/composables/useSelectNavigation.d.ts +52 -0
  781. package/dist/types/src/components/GrSelect/composables/useSelectPanelItems.d.ts +67 -0
  782. package/dist/types/src/components/GrSelect/composables/useSelectValues.d.ts +37 -0
  783. package/dist/types/src/components/GrSelect/composables/useSelectVirtualization.d.ts +27 -0
  784. package/dist/types/src/components/GrSelect/config.d.ts +1 -1
  785. package/dist/types/src/components/GrSelect/grSelectStyles.d.ts +64 -9
  786. package/dist/types/src/components/GrSelect/index.d.ts +5 -1
  787. package/dist/types/src/components/GrSelect/selectValue.d.ts +20 -0
  788. package/dist/types/src/components/GrSidebar/GrSidebar.vue.d.ts +30 -5
  789. package/dist/types/src/components/GrSidebar/GrSidebarGroup.vue.d.ts +43 -0
  790. package/dist/types/src/components/GrSidebar/GrSidebarItem.vue.d.ts +4 -4
  791. package/dist/types/src/components/GrSidebar/config.d.ts +1 -1
  792. package/dist/types/src/components/GrSidebar/grSidebarStyles.d.ts +48 -0
  793. package/dist/types/src/components/GrSidebar/index.d.ts +6 -0
  794. package/dist/types/src/components/GrSidebar/safelist.d.ts +1 -0
  795. package/dist/types/src/components/GrSkeleton/GrSkeleton.vue.d.ts +22 -6
  796. package/dist/types/src/components/GrSkeleton/config.d.ts +1 -1
  797. package/dist/types/src/components/GrSkeleton/grSkeletonStyles.d.ts +9 -0
  798. package/dist/types/src/components/GrSkeleton/index.d.ts +1 -0
  799. package/dist/types/src/components/GrSlider/GrSlider.vue.d.ts +54 -4
  800. package/dist/types/src/components/GrSlider/config.d.ts +1 -1
  801. package/dist/types/src/components/GrSlider/grSliderStyles.d.ts +47 -8
  802. package/dist/types/src/components/GrSlider/index.d.ts +4 -0
  803. package/dist/types/src/components/GrSplitter/GrSplitter.vue.d.ts +121 -0
  804. package/dist/types/src/components/GrSplitter/config.d.ts +1 -0
  805. package/dist/types/src/components/GrSplitter/defaults.d.ts +16 -0
  806. package/dist/types/src/components/GrSplitter/grSplitterStyles.d.ts +9 -0
  807. package/dist/types/src/components/GrSplitter/index.d.ts +11 -0
  808. package/dist/types/src/components/GrSplitter/safelist.d.ts +1 -0
  809. package/dist/types/src/components/GrSplitter/splitterGeometry.d.ts +39 -0
  810. package/dist/types/src/components/GrStatistic/GrStatistic.vue.d.ts +65 -16
  811. package/dist/types/src/components/GrStatistic/config.d.ts +1 -1
  812. package/dist/types/src/components/GrStatistic/countUp.d.ts +17 -0
  813. package/dist/types/src/components/GrStatistic/defaults.d.ts +14 -0
  814. package/dist/types/src/components/GrStatistic/formatStatisticValue.d.ts +6 -2
  815. package/dist/types/src/components/GrStatistic/grStatisticStyles.d.ts +14 -1
  816. package/dist/types/src/components/GrStatistic/index.d.ts +2 -1
  817. package/dist/types/src/components/GrSwitch/GrSwitch.vue.d.ts +68 -6
  818. package/dist/types/src/components/GrSwitch/config.d.ts +1 -1
  819. package/dist/types/src/components/GrSwitch/grSwitchStyles.d.ts +45 -4
  820. package/dist/types/src/components/GrSwitch/index.d.ts +5 -1
  821. package/dist/types/src/components/GrSwitch/safelist.d.ts +4 -1
  822. package/dist/types/src/components/GrTabPanels/GrTabPanel.vue.d.ts +12 -9
  823. package/dist/types/src/components/GrTabPanels/GrTabPanels.vue.d.ts +4 -14
  824. package/dist/types/src/components/GrTabPanels/config.d.ts +1 -1
  825. package/dist/types/src/components/GrTabPanels/context.d.ts +1 -1
  826. package/dist/types/src/components/GrTabPanels/index.d.ts +2 -0
  827. package/dist/types/src/components/GrTable/GrTable.vue.d.ts +85 -15
  828. package/dist/types/src/components/GrTable/config.d.ts +1 -1
  829. package/dist/types/src/components/GrTable/defaults.d.ts +10 -0
  830. package/dist/types/src/components/GrTable/grTableStyles.d.ts +20 -0
  831. package/dist/types/src/components/GrTable/index.d.ts +7 -1
  832. package/dist/types/src/components/GrTable/safelist.d.ts +1 -0
  833. package/dist/types/src/components/GrTabs/GrTabs.vue.d.ts +92 -6
  834. package/dist/types/src/components/GrTabs/config.d.ts +1 -1
  835. package/dist/types/src/components/GrTabs/defaults.d.ts +12 -0
  836. package/dist/types/src/components/GrTabs/grTabsStyles.d.ts +71 -0
  837. package/dist/types/src/components/GrTabs/index.d.ts +5 -0
  838. package/dist/types/src/components/GrTabs/safelist.d.ts +1 -0
  839. package/dist/types/src/components/GrTextarea/GrTextarea.vue.d.ts +89 -24
  840. package/dist/types/src/components/GrTextarea/config.d.ts +1 -1
  841. package/dist/types/src/components/GrTextarea/defaults.d.ts +18 -0
  842. package/dist/types/src/components/GrTextarea/grTextareaStyles.d.ts +33 -1
  843. package/dist/types/src/components/GrTextarea/index.d.ts +6 -1
  844. package/dist/types/src/components/GrTimeline/GrTimeline.vue.d.ts +70 -0
  845. package/dist/types/src/components/GrTimeline/GrTimelineItem.vue.d.ts +84 -0
  846. package/dist/types/src/components/GrTimeline/config.d.ts +1 -0
  847. package/dist/types/src/components/GrTimeline/defaults.d.ts +19 -0
  848. package/dist/types/src/components/GrTimeline/grTimelineContext.d.ts +18 -0
  849. package/dist/types/src/components/GrTimeline/grTimelineStyles.d.ts +37 -0
  850. package/dist/types/src/components/GrTimeline/index.d.ts +12 -0
  851. package/dist/types/src/components/GrTimeline/safelist.d.ts +1 -0
  852. package/dist/types/src/components/GrTimeline/timelineGroups.d.ts +23 -0
  853. package/dist/types/src/components/GrToaster/GrToaster.vue.d.ts +25 -1
  854. package/dist/types/src/components/GrToaster/config.d.ts +1 -1
  855. package/dist/types/src/components/GrToaster/index.d.ts +3 -0
  856. package/dist/types/src/components/GrTooltip/GrTooltip.vue.d.ts +57 -6
  857. package/dist/types/src/components/GrTooltip/config.d.ts +1 -1
  858. package/dist/types/src/components/GrTooltip/defaults.d.ts +10 -0
  859. package/dist/types/src/components/GrTooltip/grTooltipStyles.d.ts +8 -0
  860. package/dist/types/src/components/GrTooltip/index.d.ts +5 -1
  861. package/dist/types/src/components/GrTooltip/safelist.d.ts +1 -0
  862. package/dist/types/src/components/GrTree/GrTree.vue.d.ts +20 -7
  863. package/dist/types/src/components/GrTree/config.d.ts +1 -1
  864. package/dist/types/src/components/GrTree/defaults.d.ts +10 -0
  865. package/dist/types/src/components/GrTree/grTreeChecking.d.ts +31 -0
  866. package/dist/types/src/components/GrTree/grTreeDataAdapter.d.ts +2 -0
  867. package/dist/types/src/components/GrTree/grTreeInteractionContext.d.ts +9 -0
  868. package/dist/types/src/components/GrTree/grTreeProps.d.ts +60 -11
  869. package/dist/types/src/components/GrTree/grTreeStore.d.ts +27 -1
  870. package/dist/types/src/components/GrTree/grTreeStyles.d.ts +22 -0
  871. package/dist/types/src/components/GrTree/grTreeTypes.d.ts +15 -0
  872. package/dist/types/src/components/GrTree/index.d.ts +5 -1
  873. package/dist/types/src/components/GrTreeSelect/GrTreeSelect.vue.d.ts +30 -9
  874. package/dist/types/src/components/GrTreeSelect/config.d.ts +1 -1
  875. package/dist/types/src/components/GrTreeSelect/defaults.d.ts +10 -0
  876. package/dist/types/src/components/GrTreeSelect/grTreeSelectStyles.d.ts +29 -1
  877. package/dist/types/src/components/GrTreeSelect/grTreeSelectTypes.d.ts +43 -0
  878. package/dist/types/src/components/GrTreeSelect/index.d.ts +5 -0
  879. package/dist/types/src/components/shared/hotkey.d.ts +46 -0
  880. package/dist/types/src/components/shared/instance.d.ts +15 -0
  881. package/dist/types/src/components/shared/optionFilter.d.ts +61 -0
  882. package/dist/types/src/components/shared/sizes.d.ts +30 -0
  883. package/dist/types/src/components/shared/slotNodes.d.ts +19 -0
  884. package/dist/types/src/composables/internal/focusables.d.ts +30 -0
  885. package/dist/types/src/composables/internal/inert.d.ts +35 -0
  886. package/dist/types/src/composables/internal/overlayStack.d.ts +60 -0
  887. package/dist/types/src/composables/internal/portalRoot.d.ts +27 -0
  888. package/dist/types/src/composables/internal/useAddonMeasurement.d.ts +1 -1
  889. package/dist/types/src/composables/internal/useComboboxNavigation.d.ts +51 -0
  890. package/dist/types/src/composables/internal/useControlAddons.d.ts +61 -0
  891. package/dist/types/src/composables/internal/useControlledOpen.d.ts +14 -0
  892. package/dist/types/src/composables/internal/useFilePreviews.d.ts +26 -0
  893. package/dist/types/src/composables/internal/useFocusWithin.d.ts +32 -0
  894. package/dist/types/src/composables/internal/useInertOthers.d.ts +9 -0
  895. package/dist/types/src/composables/internal/useModalOverlay.d.ts +95 -0
  896. package/dist/types/src/composables/internal/useOverlayPresence.d.ts +24 -0
  897. package/dist/types/src/composables/internal/useScrollLock.d.ts +10 -5
  898. package/dist/types/src/composables/internal/useTeleportEnabled.d.ts +35 -0
  899. package/dist/types/src/composables/useAnnouncer.d.ts +44 -0
  900. package/dist/types/src/composables/useDismissible.d.ts +32 -0
  901. package/dist/types/src/composables/useFocusTrap.d.ts +50 -0
  902. package/dist/types/src/composables/useGrFormControl.d.ts +52 -0
  903. package/dist/types/src/composables/useOverlayLayer.d.ts +67 -0
  904. package/dist/types/src/composables/usePortalTarget.d.ts +28 -0
  905. package/dist/types/src/composables/useTheme.d.ts +48 -2
  906. package/dist/types/src/composables/useToast.d.ts +20 -11
  907. package/dist/types/src/composables/useVirtualList.d.ts +119 -0
  908. package/dist/types/src/directives/loading.d.ts +7 -1
  909. package/dist/types/src/fileValidation/i18n.d.ts +24 -0
  910. package/dist/types/src/fileValidation/index.d.ts +4 -2
  911. package/dist/types/src/fileValidation/maxCountValidator.d.ts +9 -0
  912. package/dist/types/src/fileValidation/maxFileSize.d.ts +16 -0
  913. package/dist/types/src/fileValidation/types.d.ts +8 -2
  914. package/dist/types/src/granular-provider/index.d.ts +1 -1
  915. package/dist/types/src/granular-provider/node.d.ts +2 -3
  916. package/dist/types/src/granular-provider/shared.d.ts +13 -18
  917. package/dist/types/src/i18n/adapter.d.ts +24 -0
  918. package/dist/types/src/i18n/messages/en.d.ts +286 -2
  919. package/dist/types/src/i18n/messages/es.d.ts +290 -2
  920. package/dist/types/src/i18n/messages/ru.d.ts +294 -2
  921. package/dist/types/src/index.d.ts +26 -3
  922. package/dist/types/src/internal/granularityFormat.d.ts +19 -0
  923. package/dist/types/src/internal/granularityI18n.d.ts +6 -0
  924. package/dist/types/src/internal/keyboard.d.ts +46 -0
  925. package/dist/types/src/tokens/generated.d.ts +6 -0
  926. package/dist/types/src/tokens/index.d.ts +13 -0
  927. package/dist/types/src/tokens/types.d.ts +54 -0
  928. package/dist/vue/index.js.map +1 -1
  929. package/dist/web-types.json +6309 -2024
  930. package/package.json +90 -17
  931. package/tokens/derived.json +142 -0
  932. package/tokens/foundation.json +558 -0
  933. package/tokens/themes/dark.json +499 -0
  934. package/tokens/themes/light.json +499 -0
  935. package/dist/GrBadge.css +0 -1
  936. package/dist/GrButtonGroup.css +0 -1
  937. package/dist/GrFormFile.css +0 -1
  938. package/dist/GrIcon.css +0 -1
  939. package/dist/GrLoading.css +0 -1
  940. package/dist/GrToaster.css +0 -1
  941. package/dist/GrTree.css +0 -1
  942. package/dist/chunks/config-23WtUiAL.js +0 -53
  943. package/dist/chunks/config-23WtUiAL.js.map +0 -1
  944. package/dist/chunks/config-B0i5r8kH.js +0 -23
  945. package/dist/chunks/config-B0i5r8kH.js.map +0 -1
  946. package/dist/chunks/config-B0qIpo8m.js +0 -5
  947. package/dist/chunks/config-B0qIpo8m.js.map +0 -1
  948. package/dist/chunks/config-B5Rknzkd.js +0 -100
  949. package/dist/chunks/config-B5Rknzkd.js.map +0 -1
  950. package/dist/chunks/config-BDSHekVC.js +0 -84
  951. package/dist/chunks/config-BDSHekVC.js.map +0 -1
  952. package/dist/chunks/config-BEegFP74.js +0 -5
  953. package/dist/chunks/config-BEegFP74.js.map +0 -1
  954. package/dist/chunks/config-BLHqZhy-.js +0 -5
  955. package/dist/chunks/config-BLHqZhy-.js.map +0 -1
  956. package/dist/chunks/config-BMKNHFMD2.js +0 -171
  957. package/dist/chunks/config-BMKNHFMD2.js.map +0 -1
  958. package/dist/chunks/config-BUHuGBik2.js +0 -13
  959. package/dist/chunks/config-BUHuGBik2.js.map +0 -1
  960. package/dist/chunks/config-BWGGp7uV.js +0 -8
  961. package/dist/chunks/config-BWGGp7uV.js.map +0 -1
  962. package/dist/chunks/config-BWiPnygb.js +0 -5
  963. package/dist/chunks/config-BWiPnygb.js.map +0 -1
  964. package/dist/chunks/config-BX1JTrkV.js +0 -14
  965. package/dist/chunks/config-BX1JTrkV.js.map +0 -1
  966. package/dist/chunks/config-BXtAmU3s.js +0 -8
  967. package/dist/chunks/config-BXtAmU3s.js.map +0 -1
  968. package/dist/chunks/config-BZFUM3Ky.js +0 -75
  969. package/dist/chunks/config-BZFUM3Ky.js.map +0 -1
  970. package/dist/chunks/config-Bah4oHwL.js +0 -8
  971. package/dist/chunks/config-Bah4oHwL.js.map +0 -1
  972. package/dist/chunks/config-BmNT0Fmx.js +0 -45
  973. package/dist/chunks/config-BmNT0Fmx.js.map +0 -1
  974. package/dist/chunks/config-BvVq2gbd.js +0 -13
  975. package/dist/chunks/config-BvVq2gbd.js.map +0 -1
  976. package/dist/chunks/config-C4hJxXDa.js +0 -58
  977. package/dist/chunks/config-C4hJxXDa.js.map +0 -1
  978. package/dist/chunks/config-C86UzUYf.js +0 -13
  979. package/dist/chunks/config-C86UzUYf.js.map +0 -1
  980. package/dist/chunks/config-C9AcVDkv.js +0 -5
  981. package/dist/chunks/config-C9AcVDkv.js.map +0 -1
  982. package/dist/chunks/config-CB4RVt9M.js +0 -66
  983. package/dist/chunks/config-CB4RVt9M.js.map +0 -1
  984. package/dist/chunks/config-CGHLoBlH2.js +0 -5
  985. package/dist/chunks/config-CGHLoBlH2.js.map +0 -1
  986. package/dist/chunks/config-COE_vZ-l.js +0 -52
  987. package/dist/chunks/config-COE_vZ-l.js.map +0 -1
  988. package/dist/chunks/config-CPdmr7tC.js +0 -39
  989. package/dist/chunks/config-CPdmr7tC.js.map +0 -1
  990. package/dist/chunks/config-CThzliFi.js +0 -5
  991. package/dist/chunks/config-CThzliFi.js.map +0 -1
  992. package/dist/chunks/config-Cb2PAlSD.js +0 -8
  993. package/dist/chunks/config-Cb2PAlSD.js.map +0 -1
  994. package/dist/chunks/config-D7GZO-Dx.js +0 -8
  995. package/dist/chunks/config-D7GZO-Dx.js.map +0 -1
  996. package/dist/chunks/config-DICOd-2X.js +0 -5
  997. package/dist/chunks/config-DICOd-2X.js.map +0 -1
  998. package/dist/chunks/config-DPDFYzIa.js +0 -40
  999. package/dist/chunks/config-DPDFYzIa.js.map +0 -1
  1000. package/dist/chunks/config-DRKXJ9PW2.js +0 -22
  1001. package/dist/chunks/config-DRKXJ9PW2.js.map +0 -1
  1002. package/dist/chunks/config-DToHb81g.js +0 -45
  1003. package/dist/chunks/config-DToHb81g.js.map +0 -1
  1004. package/dist/chunks/config-D_myOZbA.js +0 -20
  1005. package/dist/chunks/config-D_myOZbA.js.map +0 -1
  1006. package/dist/chunks/config-Dg_6FTvJ.js +0 -35
  1007. package/dist/chunks/config-Dg_6FTvJ.js.map +0 -1
  1008. package/dist/chunks/config-Dlm49Jp5.js +0 -5
  1009. package/dist/chunks/config-Dlm49Jp5.js.map +0 -1
  1010. package/dist/chunks/config-DpqOnJiz.js.map +0 -1
  1011. package/dist/chunks/config-Dqy0rPPO2.js +0 -17
  1012. package/dist/chunks/config-Dqy0rPPO2.js.map +0 -1
  1013. package/dist/chunks/config-Dxuwwepq.js +0 -5
  1014. package/dist/chunks/config-Dxuwwepq.js.map +0 -1
  1015. package/dist/chunks/config-HZto2PVy.js +0 -5
  1016. package/dist/chunks/config-HZto2PVy.js.map +0 -1
  1017. package/dist/chunks/config-JOtB4mzs.js +0 -8
  1018. package/dist/chunks/config-JOtB4mzs.js.map +0 -1
  1019. package/dist/chunks/config-JpHA4Xx0.js +0 -8
  1020. package/dist/chunks/config-JpHA4Xx0.js.map +0 -1
  1021. package/dist/chunks/config-KXuionN3.js +0 -9
  1022. package/dist/chunks/config-KXuionN3.js.map +0 -1
  1023. package/dist/chunks/config-LqDC_rvp.js +0 -78
  1024. package/dist/chunks/config-LqDC_rvp.js.map +0 -1
  1025. package/dist/chunks/config-PFg39mYo.js +0 -5
  1026. package/dist/chunks/config-PFg39mYo.js.map +0 -1
  1027. package/dist/chunks/config-QYGvEBu5.js +0 -22
  1028. package/dist/chunks/config-QYGvEBu5.js.map +0 -1
  1029. package/dist/chunks/config-QaIc_gRa2.js.map +0 -1
  1030. package/dist/chunks/config-U4m9PSql2.js +0 -8
  1031. package/dist/chunks/config-U4m9PSql2.js.map +0 -1
  1032. package/dist/chunks/config-XmTv4pnI.js +0 -26
  1033. package/dist/chunks/config-XmTv4pnI.js.map +0 -1
  1034. package/dist/chunks/config-ZiXWIRBX.js +0 -8
  1035. package/dist/chunks/config-ZiXWIRBX.js.map +0 -1
  1036. package/dist/chunks/config-eXB87DOi.js.map +0 -1
  1037. package/dist/chunks/config-gZWR75Bh2.js +0 -44
  1038. package/dist/chunks/config-gZWR75Bh2.js.map +0 -1
  1039. package/dist/chunks/config-ipvU0lzP.js +0 -5
  1040. package/dist/chunks/config-ipvU0lzP.js.map +0 -1
  1041. package/dist/chunks/config-xR4XVmcy2.js +0 -8
  1042. package/dist/chunks/config-xR4XVmcy2.js.map +0 -1
  1043. package/dist/chunks/context-DfWYCBB-.js +0 -129
  1044. package/dist/chunks/context-DfWYCBB-.js.map +0 -1
  1045. package/dist/chunks/en-Cr6EkG8c.js +0 -186
  1046. package/dist/chunks/en-Cr6EkG8c.js.map +0 -1
  1047. package/dist/chunks/es-DuYb1Qju.js +0 -20
  1048. package/dist/chunks/es-DuYb1Qju.js.map +0 -1
  1049. package/dist/chunks/es-i08e9Sdo.js +0 -186
  1050. package/dist/chunks/es-i08e9Sdo.js.map +0 -1
  1051. package/dist/chunks/fileValidation-C3WFaWU2.js +0 -220
  1052. package/dist/chunks/fileValidation-C3WFaWU2.js.map +0 -1
  1053. package/dist/chunks/grBadgeStyles-D3dFjr_N.js +0 -50
  1054. package/dist/chunks/grBadgeStyles-D3dFjr_N.js.map +0 -1
  1055. package/dist/chunks/grButtonStyles-DRBgDmOp.js +0 -191
  1056. package/dist/chunks/grButtonStyles-DRBgDmOp.js.map +0 -1
  1057. package/dist/chunks/grDropdownStyles-HBPkghVr.js +0 -35
  1058. package/dist/chunks/grDropdownStyles-HBPkghVr.js.map +0 -1
  1059. package/dist/chunks/grLoadingStyles-R5sreH__.js +0 -17
  1060. package/dist/chunks/grLoadingStyles-R5sreH__.js.map +0 -1
  1061. package/dist/chunks/grModalEscStack-BXk-9mv7.js +0 -43
  1062. package/dist/chunks/grModalEscStack-BXk-9mv7.js.map +0 -1
  1063. package/dist/chunks/grModalStyles-D8-shx9A.js +0 -47
  1064. package/dist/chunks/grModalStyles-D8-shx9A.js.map +0 -1
  1065. package/dist/chunks/grSelectStyles-CwMUQrBZ.js +0 -97
  1066. package/dist/chunks/grSelectStyles-CwMUQrBZ.js.map +0 -1
  1067. package/dist/chunks/grStyle-CdvxTXPH.js +0 -19
  1068. package/dist/chunks/grStyle-CdvxTXPH.js.map +0 -1
  1069. package/dist/chunks/granularityI18n-SH0I--GW.js +0 -61
  1070. package/dist/chunks/granularityI18n-SH0I--GW.js.map +0 -1
  1071. package/dist/chunks/ru-B5XOOYZt.js +0 -186
  1072. package/dist/chunks/ru-B5XOOYZt.js.map +0 -1
  1073. package/dist/chunks/safelist-BvO8HPnE.js +0 -24
  1074. package/dist/chunks/safelist-BvO8HPnE.js.map +0 -1
  1075. package/dist/chunks/shared-D-v9lit0.js +0 -188
  1076. package/dist/chunks/shared-D-v9lit0.js.map +0 -1
  1077. package/dist/chunks/useAddonMeasurement-DM0akF4C.js +0 -65
  1078. package/dist/chunks/useAddonMeasurement-DM0akF4C.js.map +0 -1
  1079. package/dist/chunks/useEscapeToClose-C2t_S1gh.js +0 -27
  1080. package/dist/chunks/useEscapeToClose-C2t_S1gh.js.map +0 -1
  1081. package/dist/chunks/useFloating-DtM6TyE4.js +0 -1249
  1082. package/dist/chunks/useFloating-DtM6TyE4.js.map +0 -1
  1083. package/dist/chunks/useScrollLock-K7kaP2Ud.js +0 -1757
  1084. package/dist/chunks/useScrollLock-K7kaP2Ud.js.map +0 -1
  1085. package/dist/components/GrAlert/chunks/GrAlert-B9gmpoPC.js +0 -251
  1086. package/dist/components/GrAlert/chunks/GrAlert-B9gmpoPC.js.map +0 -1
  1087. package/dist/components/GrAutocomplete/chunks/GrAutocomplete-BVLoQ5tZ.js +0 -499
  1088. package/dist/components/GrAutocomplete/chunks/GrAutocomplete-BVLoQ5tZ.js.map +0 -1
  1089. package/dist/components/GrAvatar/chunks/GrAvatar-CTOUVBF7.js +0 -41
  1090. package/dist/components/GrAvatar/chunks/GrAvatar-CTOUVBF7.js.map +0 -1
  1091. package/dist/components/GrBadge/chunks/GrBadge-D1jefy4S.js +0 -40
  1092. package/dist/components/GrBadge/chunks/GrBadge-D1jefy4S.js.map +0 -1
  1093. package/dist/components/GrBadgeWrap/chunks/GrBadgeWrap-DWDxHdiQ.js +0 -33
  1094. package/dist/components/GrBadgeWrap/chunks/GrBadgeWrap-DWDxHdiQ.js.map +0 -1
  1095. package/dist/components/GrBottomNav/chunks/GrBottomNav-vSE4LXmk.js +0 -31
  1096. package/dist/components/GrBottomNav/chunks/GrBottomNav-vSE4LXmk.js.map +0 -1
  1097. package/dist/components/GrButton/chunks/GrButton-DCi4CUpo.js +0 -128
  1098. package/dist/components/GrButton/chunks/GrButton-DCi4CUpo.js.map +0 -1
  1099. package/dist/components/GrButtonGroup/chunks/GrButtonGroup-Bs9dEKfA.js +0 -21
  1100. package/dist/components/GrButtonGroup/chunks/GrButtonGroup-Bs9dEKfA.js.map +0 -1
  1101. package/dist/components/GrCard/chunks/GrCard-CxCjyHMb.js +0 -11
  1102. package/dist/components/GrCard/chunks/GrCard-CxCjyHMb.js.map +0 -1
  1103. package/dist/components/GrCheckbox/chunks/GrCheckbox-BbIDRXtl.js +0 -182
  1104. package/dist/components/GrCheckbox/chunks/GrCheckbox-BbIDRXtl.js.map +0 -1
  1105. package/dist/components/GrCollapse/chunks/GrCollapse-DApXztn8.js +0 -205
  1106. package/dist/components/GrCollapse/chunks/GrCollapse-DApXztn8.js.map +0 -1
  1107. package/dist/components/GrCommandPalette/chunks/GrCommandPalette-6OyvNbek.js +0 -410
  1108. package/dist/components/GrCommandPalette/chunks/GrCommandPalette-6OyvNbek.js.map +0 -1
  1109. package/dist/components/GrConfigProvider/chunks/GrConfigProvider-BtyeBGm8.js +0 -57
  1110. package/dist/components/GrConfigProvider/chunks/GrConfigProvider-BtyeBGm8.js.map +0 -1
  1111. package/dist/components/GrConfirmDialog/chunks/GrConfirmDialog-e4120mWw.js +0 -160
  1112. package/dist/components/GrConfirmDialog/chunks/GrConfirmDialog-e4120mWw.js.map +0 -1
  1113. package/dist/components/GrDataTable/chunks/GrDataTable-C1CzxV0p.js +0 -307
  1114. package/dist/components/GrDataTable/chunks/GrDataTable-C1CzxV0p.js.map +0 -1
  1115. package/dist/components/GrDialog/chunks/GrDialog-BPMvDHOz.js +0 -223
  1116. package/dist/components/GrDialog/chunks/GrDialog-BPMvDHOz.js.map +0 -1
  1117. package/dist/components/GrDialogService/chunks/GrDialogService-CYXCTGm3.js +0 -450
  1118. package/dist/components/GrDialogService/chunks/GrDialogService-CYXCTGm3.js.map +0 -1
  1119. package/dist/components/GrDivider/chunks/GrDivider-BdENZ1w0.js +0 -54
  1120. package/dist/components/GrDivider/chunks/GrDivider-BdENZ1w0.js.map +0 -1
  1121. package/dist/components/GrDrawer/chunks/GrDrawer-KevdZ5BB.js +0 -184
  1122. package/dist/components/GrDrawer/chunks/GrDrawer-KevdZ5BB.js.map +0 -1
  1123. package/dist/components/GrDropdown/chunks/GrDropdown-BKoy8hm-.js +0 -181
  1124. package/dist/components/GrDropdown/chunks/GrDropdown-BKoy8hm-.js.map +0 -1
  1125. package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-zCatXzmt.js +0 -309
  1126. package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-zCatXzmt.js.map +0 -1
  1127. package/dist/components/GrEmptyState/chunks/GrEmptyState-CNb0BzjG.js +0 -62
  1128. package/dist/components/GrEmptyState/chunks/GrEmptyState-CNb0BzjG.js.map +0 -1
  1129. package/dist/components/GrFileUpload/chunks/GrFileUpload-CnLgUGDF.js +0 -592
  1130. package/dist/components/GrFileUpload/chunks/GrFileUpload-CnLgUGDF.js.map +0 -1
  1131. package/dist/components/GrForm/chunks/GrForm-CdaFjcyl.js +0 -234
  1132. package/dist/components/GrForm/chunks/GrForm-CdaFjcyl.js.map +0 -1
  1133. package/dist/components/GrFormField/chunks/GrFormField-CXCDBd99.js +0 -100
  1134. package/dist/components/GrFormField/chunks/GrFormField-CXCDBd99.js.map +0 -1
  1135. package/dist/components/GrFormFile/chunks/GrFormFile-CqacSbUl.js +0 -320
  1136. package/dist/components/GrFormFile/chunks/GrFormFile-CqacSbUl.js.map +0 -1
  1137. package/dist/components/GrFormSection/chunks/GrFormSection-C3w9DQJf.js +0 -35
  1138. package/dist/components/GrFormSection/chunks/GrFormSection-C3w9DQJf.js.map +0 -1
  1139. package/dist/components/GrIcon/chunks/GrIcon-D9AWQLk2.js +0 -32
  1140. package/dist/components/GrIcon/chunks/GrIcon-D9AWQLk2.js.map +0 -1
  1141. package/dist/components/GrImageViewer/chunks/GrImageViewer-DDLJkvIU.js +0 -650
  1142. package/dist/components/GrImageViewer/chunks/GrImageViewer-DDLJkvIU.js.map +0 -1
  1143. package/dist/components/GrInput/chunks/GrInput-C1VBL0dg.js +0 -337
  1144. package/dist/components/GrInput/chunks/GrInput-C1VBL0dg.js.map +0 -1
  1145. package/dist/components/GrInputTag/chunks/GrInputTag-BMk9jm42.js +0 -260
  1146. package/dist/components/GrInputTag/chunks/GrInputTag-BMk9jm42.js.map +0 -1
  1147. package/dist/components/GrKbd/chunks/GrKbd-DTspwtoN.js +0 -22
  1148. package/dist/components/GrKbd/chunks/GrKbd-DTspwtoN.js.map +0 -1
  1149. package/dist/components/GrLink/chunks/GrLink-BP0YrnL9.js +0 -100
  1150. package/dist/components/GrLink/chunks/GrLink-BP0YrnL9.js.map +0 -1
  1151. package/dist/components/GrList/chunks/GrList-5RA-tZzE.js +0 -77
  1152. package/dist/components/GrList/chunks/GrList-5RA-tZzE.js.map +0 -1
  1153. package/dist/components/GrLoading/chunks/GrLoading-fRDtVfi7.js +0 -69
  1154. package/dist/components/GrLoading/chunks/GrLoading-fRDtVfi7.js.map +0 -1
  1155. package/dist/components/GrModal/chunks/GrModal-BTu1-5eY.js +0 -233
  1156. package/dist/components/GrModal/chunks/GrModal-BTu1-5eY.js.map +0 -1
  1157. package/dist/components/GrNavbar/chunks/GrNavbar-keKT_mIM.js +0 -75
  1158. package/dist/components/GrNavbar/chunks/GrNavbar-keKT_mIM.js.map +0 -1
  1159. package/dist/components/GrNumberInput/chunks/GrNumberInput-l9ZOHG9D.js +0 -471
  1160. package/dist/components/GrNumberInput/chunks/GrNumberInput-l9ZOHG9D.js.map +0 -1
  1161. package/dist/components/GrPagination/chunks/GrPagination-C5Y69CuK.js +0 -208
  1162. package/dist/components/GrPagination/chunks/GrPagination-C5Y69CuK.js.map +0 -1
  1163. package/dist/components/GrProgressBar/chunks/GrProgressBar-Dqg4Fj9S.js +0 -39
  1164. package/dist/components/GrProgressBar/chunks/GrProgressBar-Dqg4Fj9S.js.map +0 -1
  1165. package/dist/components/GrPromptDialog/chunks/GrPromptDialog-DNUjRVB9.js +0 -224
  1166. package/dist/components/GrPromptDialog/chunks/GrPromptDialog-DNUjRVB9.js.map +0 -1
  1167. package/dist/components/GrRadio/chunks/GrRadio-DlhxPGqf.js +0 -182
  1168. package/dist/components/GrRadio/chunks/GrRadio-DlhxPGqf.js.map +0 -1
  1169. package/dist/components/GrRadioGroup/chunks/GrRadioGroup-BXt9iw4q.js +0 -82
  1170. package/dist/components/GrRadioGroup/chunks/GrRadioGroup-BXt9iw4q.js.map +0 -1
  1171. package/dist/components/GrRating/chunks/GrRating-Co-3Rk4h.js +0 -241
  1172. package/dist/components/GrRating/chunks/GrRating-Co-3Rk4h.js.map +0 -1
  1173. package/dist/components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-2CvM7Z08.js +0 -224
  1174. package/dist/components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-2CvM7Z08.js.map +0 -1
  1175. package/dist/components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-C8NGx8pE.js +0 -782
  1176. package/dist/components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-C8NGx8pE.js.map +0 -1
  1177. package/dist/components/GrSegmented/chunks/GrSegmented-CTd3n4PA.js +0 -326
  1178. package/dist/components/GrSegmented/chunks/GrSegmented-CTd3n4PA.js.map +0 -1
  1179. package/dist/components/GrSelect/chunks/GrSelect-Dn3FgJ3Z.js +0 -730
  1180. package/dist/components/GrSelect/chunks/GrSelect-Dn3FgJ3Z.js.map +0 -1
  1181. package/dist/components/GrSidebar/chunks/GrSidebar-cvnzBfj3.js +0 -238
  1182. package/dist/components/GrSidebar/chunks/GrSidebar-cvnzBfj3.js.map +0 -1
  1183. package/dist/components/GrSkeleton/chunks/GrSkeleton-BucA5F4J.js +0 -33
  1184. package/dist/components/GrSkeleton/chunks/GrSkeleton-BucA5F4J.js.map +0 -1
  1185. package/dist/components/GrSlider/chunks/GrSlider-CzzJ3bD-.js +0 -286
  1186. package/dist/components/GrSlider/chunks/GrSlider-CzzJ3bD-.js.map +0 -1
  1187. package/dist/components/GrStatistic/chunks/GrStatistic-gHiAwrX5.js +0 -128
  1188. package/dist/components/GrStatistic/chunks/GrStatistic-gHiAwrX5.js.map +0 -1
  1189. package/dist/components/GrSwitch/chunks/GrSwitch-CJdRvS0s.js +0 -88
  1190. package/dist/components/GrSwitch/chunks/GrSwitch-CJdRvS0s.js.map +0 -1
  1191. package/dist/components/GrTabPanels/chunks/GrTabPanels-DeEMgb_y.js +0 -68
  1192. package/dist/components/GrTabPanels/chunks/GrTabPanels-DeEMgb_y.js.map +0 -1
  1193. package/dist/components/GrTable/chunks/GrTable-sNvsA8wa.js +0 -70
  1194. package/dist/components/GrTable/chunks/GrTable-sNvsA8wa.js.map +0 -1
  1195. package/dist/components/GrTabs/chunks/GrTabs-BqTak0SR.js +0 -123
  1196. package/dist/components/GrTabs/chunks/GrTabs-BqTak0SR.js.map +0 -1
  1197. package/dist/components/GrTextarea/chunks/GrTextarea-DIYBAPpP.js +0 -81
  1198. package/dist/components/GrTextarea/chunks/GrTextarea-DIYBAPpP.js.map +0 -1
  1199. package/dist/components/GrToaster/chunks/GrToaster-BVHjIHcM.js +0 -230
  1200. package/dist/components/GrToaster/chunks/GrToaster-BVHjIHcM.js.map +0 -1
  1201. package/dist/components/GrTooltip/chunks/GrTooltip-BMKH2lIx.js +0 -109
  1202. package/dist/components/GrTooltip/chunks/GrTooltip-BMKH2lIx.js.map +0 -1
  1203. package/dist/components/GrTree/chunks/GrTree-_12ChXRQ.js +0 -838
  1204. package/dist/components/GrTree/chunks/GrTree-_12ChXRQ.js.map +0 -1
  1205. package/dist/components/GrTreeSelect/chunks/GrTreeSelect-CdaLG7Xq.js +0 -426
  1206. package/dist/components/GrTreeSelect/chunks/GrTreeSelect-CdaLG7Xq.js.map +0 -1
  1207. package/dist/granular-provider-node.js.map +0 -1
  1208. package/dist/granular-provider.js.map +0 -1
  1209. package/dist/index.js.map +0 -1
  1210. package/dist/types/src/components/GrButton/config.node.d.ts +0 -1
  1211. package/dist/types/src/components/GrCommandPalette/hotkey.d.ts +0 -23
  1212. package/dist/types/src/components/GrFileUpload/maxSizeMbValidator.d.ts +0 -1
  1213. package/dist/types/src/components/GrModal/grModalEscStack.d.ts +0 -30
  1214. package/dist/types/src/components/GrModal/grModalTopStack.d.ts +0 -31
  1215. package/dist/types/src/components/GrProgressBar/config.node.d.ts +0 -1
  1216. package/dist/types/src/composables/internal/useEscapeToClose.d.ts +0 -11
  1217. package/dist/types/src/fileValidation/maxFileSizeBytesValidator.d.ts +0 -2
  1218. package/dist/types/src/fileValidation/maxSizeMbValidator.d.ts +0 -2
  1219. /package/dist/chunks/{config-DpqOnJiz.js → config-DpqOnJiz2.js} +0 -0
  1220. /package/dist/chunks/{config-QaIc_gRa2.js → config-QaIc_gRa.js} +0 -0
  1221. /package/dist/chunks/{config-eXB87DOi.js → config-eXB87DOi2.js} +0 -0
  1222. /package/dist/{GrSkeleton.css → components/GrSkeleton/styles.css} +0 -0
  1223. /package/dist/types/src/composables/{internal/useFloating.d.ts → useFloating.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GrTextarea-DUh5Tlo4.js","names":["$attrs"],"sources":["../../../../src/components/GrTextarea/GrTextarea.vue","../../../../src/components/GrTextarea/GrTextarea.vue"],"sourcesContent":["<script setup lang=\"ts\">\n/**\n * GrTextarea — многострочное поле ввода GR-примитива.\n *\n * Состояния:\n * - `state`: визуальный оттенок рамки (`default | success | warning | danger`).\n * - `invalid`: форсирует `danger`-состояние и проставляет `aria-invalid=\"true\"`.\n */\nimport { computed, ref, useId } from 'vue'\nimport {\n countClass,\n countRowClass,\n lineCountClass,\n disabledSurfaceClass,\n enabledSurfaceClass,\n grTextareaClass,\n resizeClass,\n sizes,\n type GrTextareaResize,\n type GrTextareaSize,\n type GrTextareaState,\n} from './grTextareaStyles'\nimport IconX from '~icons/lucide/x'\nimport { vAutosize } from '../../directives'\nimport { useGrComponentProp, useGrComponentSize } from '../GrConfigProvider/context'\nimport { useGrFormFieldContext } from '../GrFormField/context'\nimport { useGrFormControl } from '../../composables/useGrFormControl'\nimport { useGranularityTranslations } from '../../internal/granularityI18n'\n\nexport interface GrTextareaProps {\n modelValue: string\n placeholder?: string\n autocomplete?: string\n disabled?: boolean\n /** Только для чтения: значение видно и уходит в форму, но не редактируется. */\n readonly?: boolean\n invalid?: boolean\n /** Обязательное поле (`aria-required`). Складывается с `required` у `GrFormField`. */\n required?: boolean\n /** Доступное имя вне `GrFormField`. */\n ariaLabel?: string\n state?: GrTextareaState\n name?: string\n id?: string\n rows?: number\n size?: GrTextareaSize\n /** Ограничение длины + основа для счётчика символов. */\n maxlength?: number\n /** Показывать счётчик символов (`len` или `len/maxlength`). */\n showCount?: boolean\n /**\n * Показывать счётчик строк. Считаются **логические** строки (переводы строки), а\n * не визуальные переносы: при `autosize` число не меняется от ширины поля.\n */\n showLineCount?: boolean\n /**\n * Ориентир по числу строк для счётчика (`3 / 10`). Ввод не ограничивает: обрезать\n * набранный текст за пользователя компонент не вправе.\n */\n maxLines?: number\n /** Подгонять высоту под содержимое (директива `v-autosize`). */\n autosize?: boolean\n /** Кнопка очистки значения. Настраивается через `GrConfigProvider`. */\n clearable?: boolean\n /** A11y-подпись кнопки очистки. */\n clearLabel?: string\n /** Ручное изменение размера пользователем. */\n resize?: GrTextareaResize\n}\n\nexport interface GrTextareaEmits {\n (e: 'update:modelValue', value: string): void\n /** Значение зафиксировано нативным `change` — по `blur`. */\n (e: 'change', value: string): void\n /** Значение стёрто кнопкой очистки. */\n (e: 'clear'): void\n (e: 'focus', event: FocusEvent): void\n (e: 'blur', event: FocusEvent): void\n}\n\nconst props = withDefaults(defineProps<GrTextareaProps>(), {\n placeholder: undefined,\n autocomplete: undefined,\n disabled: false,\n readonly: false,\n invalid: false,\n required: false,\n ariaLabel: undefined,\n state: 'default',\n name: undefined,\n id: undefined,\n rows: 4,\n size: undefined,\n maxlength: undefined,\n showCount: false,\n autosize: false,\n clearable: undefined,\n clearLabel: undefined,\n resize: 'vertical',\n})\n\ndefineOptions({\n // Иначе атрибуты потребителя (`data-*`, `aria-*`, `name`) садятся на корень,\n // а корень со `showCount` — обёртка счётчика, а не само поле.\n inheritAttrs: false,\n})\n\nconst emit = defineEmits<GrTextareaEmits>()\n\n// Fallback из контекста `GrFormField` (id/aria-describedby/invalid/required).\nconst field = useGrFormFieldContext()\nconst resolvedId = computed(() => props.id ?? field?.id.value)\n\n// Счётчик обязан быть частью описания поля: иначе «12 / 60» видно глазами, но\n// не слышно — при том что ограничение длины и есть его смысл.\nconst countId = useId()\nconst lineCountId = useId()\nconst describedBy = computed(() =>\n [\n field?.describedById.value,\n props.showCount ? countId : undefined,\n props.showLineCount ? lineCountId : undefined,\n ]\n .filter(Boolean)\n .join(' ') || undefined,\n)\n\n/** Обёртка нужна любому из счётчиков — и кнопке очистки. */\nconst hasCounters = computed(() => props.showCount || props.showLineCount)\n\nconst lineCount = computed(() => props.modelValue.split('\\n').length)\n\nconst countText = computed(() =>\n props.maxlength !== undefined ? `${props.modelValue.length} / ${props.maxlength}` : String(props.modelValue.length),\n)\nconst {\n disabled: isDisabled,\n invalid: isInvalid,\n required: isRequired,\n readonly: isReadonly,\n} = useGrFormControl(() => props)\n\nconst textareaEl = ref<HTMLTextAreaElement | null>(null)\n\nfunction focus(): void {\n textareaEl.value?.focus()\n}\n\nfunction blur(): void {\n textareaEl.value?.blur()\n}\n\ndefineExpose({ focus, blur })\n\nconst resolvedSize = useGrComponentSize(() => props.size, { component: 'GrTextarea' })\nconst resolvedClearable = useGrComponentProp('GrTextarea', 'clearable', () => props.clearable, false)\n\nconst { t } = useGranularityTranslations()\nconst resolvedClearLabel = computed(() => props.clearLabel ?? t('gr.input.clear', 'Clear'))\n\n/** С `maxLines` — «3 / 10», без него — локализованная подпись с формой числа. */\nconst lineCountText = computed(() => (\n props.maxLines !== undefined\n ? `${lineCount.value} / ${props.maxLines}`\n : t('gr.textarea.lines', '{n} lines', { n: lineCount.value })\n))\n\nconst showClear = computed(() =>\n resolvedClearable.value && !isDisabled.value && !isReadonly.value && props.modelValue !== '',\n)\n\nfunction clear(): void {\n emit('update:modelValue', '')\n emit('change', '')\n emit('clear')\n focus()\n}\n\nconst baseClass = 'w-full rounded-[var(--gr-radius-control)] border text-[var(--gr-fg)] placeholder:text-[var(--gr-muted-fg)] transition-colors duration-[var(--gr-duration-fast)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)] disabled:cursor-not-allowed'\n\nconst className = computed(() => [\n sizes[resolvedSize.value],\n resizeClass[props.resize],\n isDisabled.value ? disabledSurfaceClass : enabledSurfaceClass,\n grTextareaClass({\n state: props.state,\n invalid: isInvalid.value,\n }),\n].join(' '))\n\n// Обе ветки шаблона (со счётчиком и без) рендерят одно и то же поле, поэтому\n// атрибуты живут одним объектом: двадцать строк копипасты расходятся молча.\nconst textareaAttrs = computed(() => ({\n id: resolvedId.value,\n 'data-gr-textarea': '',\n name: props.name,\n rows: props.rows,\n maxlength: props.maxlength,\n autocomplete: props.autocomplete,\n placeholder: props.placeholder,\n disabled: isDisabled.value,\n value: props.modelValue,\n 'aria-invalid': isInvalid.value ? ('true' as const) : undefined,\n 'aria-describedby': describedBy.value,\n 'aria-required': isRequired.value ? ('true' as const) : undefined,\n 'aria-readonly': isReadonly.value ? ('true' as const) : undefined,\n 'aria-label': props.ariaLabel,\n readonly: isReadonly.value,\n class: [baseClass, className.value],\n}))\n\nfunction onInput(e: Event): void {\n emit('update:modelValue', (e.target as HTMLTextAreaElement).value)\n}\n\n// Объявленный emit уходит из `$attrs`, поэтому нативные события переизлучаем\n// руками — иначе `@change`/`@focus`/`@blur` у потребителя перестали бы работать.\nfunction onChange(e: Event): void {\n emit('change', (e.target as HTMLTextAreaElement).value)\n}\n\nfunction onFocus(e: FocusEvent): void {\n emit('focus', e)\n}\n\nfunction onBlur(e: FocusEvent): void {\n emit('blur', e)\n}\n</script>\n\n<template>\n <div v-if=\"hasCounters\" data-gr-textarea-wrap class=\"relative w-full\">\n <textarea\n ref=\"textareaEl\"\n v-autosize=\"autosize\"\n v-bind=\"{ ...textareaAttrs, ...$attrs }\"\n @input=\"onInput\"\n @change=\"onChange\"\n @focus=\"onFocus\"\n @blur=\"onBlur\"\n />\n\n <button\n v-if=\"showClear\"\n type=\"button\"\n data-gr-textarea-clear\n :aria-label=\"resolvedClearLabel\"\n class=\"absolute right-2 top-2 flex h-6 w-6 items-center justify-center rounded-[var(--gr-radius-sm)] 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 @click=\"clear\"\n >\n <IconX class=\"h-4 w-4\" aria-hidden=\"true\" />\n </button>\n\n <div :class=\"countRowClass\">\n <div\n v-if=\"showLineCount\"\n :id=\"lineCountId\"\n data-gr-textarea-line-count\n :class=\"lineCountClass\"\n >\n {{ lineCountText }}\n </div>\n\n <!-- Символьный счётчик всегда прижат вправо: без счётчика строк он остаётся\n единственным в ряду, и `justify-between` его туда и отправляет. -->\n <div\n v-if=\"showCount\"\n :id=\"countId\"\n data-gr-textarea-count\n class=\"ml-auto\"\n :class=\"countClass\"\n >\n {{ countText }}\n </div>\n </div>\n </div>\n\n <!-- Обёртка появляется только под кнопку очистки: без неё поле остаётся\n корневым элементом — на этом стоит контракт fallthrough-атрибутов. -->\n <div v-else-if=\"resolvedClearable\" class=\"relative w-full\">\n <textarea\n ref=\"textareaEl\"\n v-autosize=\"autosize\"\n v-bind=\"{ ...textareaAttrs, ...$attrs }\"\n @input=\"onInput\"\n @change=\"onChange\"\n @focus=\"onFocus\"\n @blur=\"onBlur\"\n />\n\n <button\n v-if=\"showClear\"\n type=\"button\"\n data-gr-textarea-clear\n :aria-label=\"resolvedClearLabel\"\n class=\"absolute right-2 top-2 flex h-6 w-6 items-center justify-center rounded-[var(--gr-radius-sm)] 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 @click=\"clear\"\n >\n <IconX class=\"h-4 w-4\" aria-hidden=\"true\" />\n </button>\n </div>\n\n <textarea\n v-else\n ref=\"textareaEl\"\n v-autosize=\"autosize\"\n v-bind=\"{ ...textareaAttrs, ...$attrs }\"\n @input=\"onInput\"\n @change=\"onChange\"\n @focus=\"onFocus\"\n @blur=\"onBlur\"\n />\n</template>\n","<script setup lang=\"ts\">\n/**\n * GrTextarea — многострочное поле ввода GR-примитива.\n *\n * Состояния:\n * - `state`: визуальный оттенок рамки (`default | success | warning | danger`).\n * - `invalid`: форсирует `danger`-состояние и проставляет `aria-invalid=\"true\"`.\n */\nimport { computed, ref, useId } from 'vue'\nimport {\n countClass,\n countRowClass,\n lineCountClass,\n disabledSurfaceClass,\n enabledSurfaceClass,\n grTextareaClass,\n resizeClass,\n sizes,\n type GrTextareaResize,\n type GrTextareaSize,\n type GrTextareaState,\n} from './grTextareaStyles'\nimport IconX from '~icons/lucide/x'\nimport { vAutosize } from '../../directives'\nimport { useGrComponentProp, useGrComponentSize } from '../GrConfigProvider/context'\nimport { useGrFormFieldContext } from '../GrFormField/context'\nimport { useGrFormControl } from '../../composables/useGrFormControl'\nimport { useGranularityTranslations } from '../../internal/granularityI18n'\n\nexport interface GrTextareaProps {\n modelValue: string\n placeholder?: string\n autocomplete?: string\n disabled?: boolean\n /** Только для чтения: значение видно и уходит в форму, но не редактируется. */\n readonly?: boolean\n invalid?: boolean\n /** Обязательное поле (`aria-required`). Складывается с `required` у `GrFormField`. */\n required?: boolean\n /** Доступное имя вне `GrFormField`. */\n ariaLabel?: string\n state?: GrTextareaState\n name?: string\n id?: string\n rows?: number\n size?: GrTextareaSize\n /** Ограничение длины + основа для счётчика символов. */\n maxlength?: number\n /** Показывать счётчик символов (`len` или `len/maxlength`). */\n showCount?: boolean\n /**\n * Показывать счётчик строк. Считаются **логические** строки (переводы строки), а\n * не визуальные переносы: при `autosize` число не меняется от ширины поля.\n */\n showLineCount?: boolean\n /**\n * Ориентир по числу строк для счётчика (`3 / 10`). Ввод не ограничивает: обрезать\n * набранный текст за пользователя компонент не вправе.\n */\n maxLines?: number\n /** Подгонять высоту под содержимое (директива `v-autosize`). */\n autosize?: boolean\n /** Кнопка очистки значения. Настраивается через `GrConfigProvider`. */\n clearable?: boolean\n /** A11y-подпись кнопки очистки. */\n clearLabel?: string\n /** Ручное изменение размера пользователем. */\n resize?: GrTextareaResize\n}\n\nexport interface GrTextareaEmits {\n (e: 'update:modelValue', value: string): void\n /** Значение зафиксировано нативным `change` — по `blur`. */\n (e: 'change', value: string): void\n /** Значение стёрто кнопкой очистки. */\n (e: 'clear'): void\n (e: 'focus', event: FocusEvent): void\n (e: 'blur', event: FocusEvent): void\n}\n\nconst props = withDefaults(defineProps<GrTextareaProps>(), {\n placeholder: undefined,\n autocomplete: undefined,\n disabled: false,\n readonly: false,\n invalid: false,\n required: false,\n ariaLabel: undefined,\n state: 'default',\n name: undefined,\n id: undefined,\n rows: 4,\n size: undefined,\n maxlength: undefined,\n showCount: false,\n autosize: false,\n clearable: undefined,\n clearLabel: undefined,\n resize: 'vertical',\n})\n\ndefineOptions({\n // Иначе атрибуты потребителя (`data-*`, `aria-*`, `name`) садятся на корень,\n // а корень со `showCount` — обёртка счётчика, а не само поле.\n inheritAttrs: false,\n})\n\nconst emit = defineEmits<GrTextareaEmits>()\n\n// Fallback из контекста `GrFormField` (id/aria-describedby/invalid/required).\nconst field = useGrFormFieldContext()\nconst resolvedId = computed(() => props.id ?? field?.id.value)\n\n// Счётчик обязан быть частью описания поля: иначе «12 / 60» видно глазами, но\n// не слышно — при том что ограничение длины и есть его смысл.\nconst countId = useId()\nconst lineCountId = useId()\nconst describedBy = computed(() =>\n [\n field?.describedById.value,\n props.showCount ? countId : undefined,\n props.showLineCount ? lineCountId : undefined,\n ]\n .filter(Boolean)\n .join(' ') || undefined,\n)\n\n/** Обёртка нужна любому из счётчиков — и кнопке очистки. */\nconst hasCounters = computed(() => props.showCount || props.showLineCount)\n\nconst lineCount = computed(() => props.modelValue.split('\\n').length)\n\nconst countText = computed(() =>\n props.maxlength !== undefined ? `${props.modelValue.length} / ${props.maxlength}` : String(props.modelValue.length),\n)\nconst {\n disabled: isDisabled,\n invalid: isInvalid,\n required: isRequired,\n readonly: isReadonly,\n} = useGrFormControl(() => props)\n\nconst textareaEl = ref<HTMLTextAreaElement | null>(null)\n\nfunction focus(): void {\n textareaEl.value?.focus()\n}\n\nfunction blur(): void {\n textareaEl.value?.blur()\n}\n\ndefineExpose({ focus, blur })\n\nconst resolvedSize = useGrComponentSize(() => props.size, { component: 'GrTextarea' })\nconst resolvedClearable = useGrComponentProp('GrTextarea', 'clearable', () => props.clearable, false)\n\nconst { t } = useGranularityTranslations()\nconst resolvedClearLabel = computed(() => props.clearLabel ?? t('gr.input.clear', 'Clear'))\n\n/** С `maxLines` — «3 / 10», без него — локализованная подпись с формой числа. */\nconst lineCountText = computed(() => (\n props.maxLines !== undefined\n ? `${lineCount.value} / ${props.maxLines}`\n : t('gr.textarea.lines', '{n} lines', { n: lineCount.value })\n))\n\nconst showClear = computed(() =>\n resolvedClearable.value && !isDisabled.value && !isReadonly.value && props.modelValue !== '',\n)\n\nfunction clear(): void {\n emit('update:modelValue', '')\n emit('change', '')\n emit('clear')\n focus()\n}\n\nconst baseClass = 'w-full rounded-[var(--gr-radius-control)] border text-[var(--gr-fg)] placeholder:text-[var(--gr-muted-fg)] transition-colors duration-[var(--gr-duration-fast)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)] disabled:cursor-not-allowed'\n\nconst className = computed(() => [\n sizes[resolvedSize.value],\n resizeClass[props.resize],\n isDisabled.value ? disabledSurfaceClass : enabledSurfaceClass,\n grTextareaClass({\n state: props.state,\n invalid: isInvalid.value,\n }),\n].join(' '))\n\n// Обе ветки шаблона (со счётчиком и без) рендерят одно и то же поле, поэтому\n// атрибуты живут одним объектом: двадцать строк копипасты расходятся молча.\nconst textareaAttrs = computed(() => ({\n id: resolvedId.value,\n 'data-gr-textarea': '',\n name: props.name,\n rows: props.rows,\n maxlength: props.maxlength,\n autocomplete: props.autocomplete,\n placeholder: props.placeholder,\n disabled: isDisabled.value,\n value: props.modelValue,\n 'aria-invalid': isInvalid.value ? ('true' as const) : undefined,\n 'aria-describedby': describedBy.value,\n 'aria-required': isRequired.value ? ('true' as const) : undefined,\n 'aria-readonly': isReadonly.value ? ('true' as const) : undefined,\n 'aria-label': props.ariaLabel,\n readonly: isReadonly.value,\n class: [baseClass, className.value],\n}))\n\nfunction onInput(e: Event): void {\n emit('update:modelValue', (e.target as HTMLTextAreaElement).value)\n}\n\n// Объявленный emit уходит из `$attrs`, поэтому нативные события переизлучаем\n// руками — иначе `@change`/`@focus`/`@blur` у потребителя перестали бы работать.\nfunction onChange(e: Event): void {\n emit('change', (e.target as HTMLTextAreaElement).value)\n}\n\nfunction onFocus(e: FocusEvent): void {\n emit('focus', e)\n}\n\nfunction onBlur(e: FocusEvent): void {\n emit('blur', e)\n}\n</script>\n\n<template>\n <div v-if=\"hasCounters\" data-gr-textarea-wrap class=\"relative w-full\">\n <textarea\n ref=\"textareaEl\"\n v-autosize=\"autosize\"\n v-bind=\"{ ...textareaAttrs, ...$attrs }\"\n @input=\"onInput\"\n @change=\"onChange\"\n @focus=\"onFocus\"\n @blur=\"onBlur\"\n />\n\n <button\n v-if=\"showClear\"\n type=\"button\"\n data-gr-textarea-clear\n :aria-label=\"resolvedClearLabel\"\n class=\"absolute right-2 top-2 flex h-6 w-6 items-center justify-center rounded-[var(--gr-radius-sm)] 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 @click=\"clear\"\n >\n <IconX class=\"h-4 w-4\" aria-hidden=\"true\" />\n </button>\n\n <div :class=\"countRowClass\">\n <div\n v-if=\"showLineCount\"\n :id=\"lineCountId\"\n data-gr-textarea-line-count\n :class=\"lineCountClass\"\n >\n {{ lineCountText }}\n </div>\n\n <!-- Символьный счётчик всегда прижат вправо: без счётчика строк он остаётся\n единственным в ряду, и `justify-between` его туда и отправляет. -->\n <div\n v-if=\"showCount\"\n :id=\"countId\"\n data-gr-textarea-count\n class=\"ml-auto\"\n :class=\"countClass\"\n >\n {{ countText }}\n </div>\n </div>\n </div>\n\n <!-- Обёртка появляется только под кнопку очистки: без неё поле остаётся\n корневым элементом — на этом стоит контракт fallthrough-атрибутов. -->\n <div v-else-if=\"resolvedClearable\" class=\"relative w-full\">\n <textarea\n ref=\"textareaEl\"\n v-autosize=\"autosize\"\n v-bind=\"{ ...textareaAttrs, ...$attrs }\"\n @input=\"onInput\"\n @change=\"onChange\"\n @focus=\"onFocus\"\n @blur=\"onBlur\"\n />\n\n <button\n v-if=\"showClear\"\n type=\"button\"\n data-gr-textarea-clear\n :aria-label=\"resolvedClearLabel\"\n class=\"absolute right-2 top-2 flex h-6 w-6 items-center justify-center rounded-[var(--gr-radius-sm)] 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 @click=\"clear\"\n >\n <IconX class=\"h-4 w-4\" aria-hidden=\"true\" />\n </button>\n </div>\n\n <textarea\n v-else\n ref=\"textareaEl\"\n v-autosize=\"autosize\"\n v-bind=\"{ ...textareaAttrs, ...$attrs }\"\n @input=\"onInput\"\n @change=\"onChange\"\n @focus=\"onFocus\"\n @blur=\"onBlur\"\n />\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAkLA,IAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAlGlB,MAAM,QAAQ;EA2Bd,MAAM,OAAO;EAGb,MAAM,QAAQ,sBAAsB;EACpC,MAAM,aAAa,eAAe,MAAM,MAAM,OAAO,GAAG,KAAK;EAI7D,MAAM,UAAU,MAAM;EACtB,MAAM,cAAc,MAAM;EAC1B,MAAM,cAAc,eAClB;GACE,OAAO,cAAc;GACrB,MAAM,YAAY,UAAU,KAAA;GAC5B,MAAM,gBAAgB,cAAc,KAAA;EACtC,CAAA,CACG,OAAO,OAAO,CAAA,CACd,KAAK,GAAG,KAAK,KAAA,CAClB;;EAGA,MAAM,cAAc,eAAe,MAAM,aAAa,MAAM,aAAa;EAEzE,MAAM,YAAY,eAAe,MAAM,WAAW,MAAM,IAAI,CAAC,CAAC,MAAM;EAEpE,MAAM,YAAY,eAChB,MAAM,cAAc,KAAA,IAAY,GAAG,MAAM,WAAW,OAAO,KAAK,MAAM,cAAc,OAAO,MAAM,WAAW,MAAM,CACpH;EACA,MAAM,EACJ,UAAU,YACV,SAAS,WACT,UAAU,YACV,UAAU,eACR,uBAAuB,KAAK;EAEhC,MAAM,aAAa,IAAgC,IAAI;EAEvD,SAAS,QAAc;GACrB,WAAW,OAAO,MAAM;EAC1B;EAEA,SAAS,OAAa;GACpB,WAAW,OAAO,KAAK;EACzB;EAEA,SAAa;GAAE;GAAO;EAAK,CAAC;EAE5B,MAAM,eAAe,yBAAyB,MAAM,MAAM,EAAE,WAAW,aAAa,CAAC;EACrF,MAAM,oBAAoB,mBAAmB,cAAc,mBAAmB,MAAM,WAAW,KAAK;EAEpG,MAAM,EAAE,MAAM,2BAA2B;EACzC,MAAM,qBAAqB,eAAe,MAAM,cAAc,EAAE,kBAAkB,OAAO,CAAC;;EAG1F,MAAM,gBAAgB,eACpB,MAAM,aAAa,KAAA,IACf,GAAG,UAAU,MAAM,KAAK,MAAM,aAC9B,EAAE,qBAAqB,aAAa,EAAE,GAAG,UAAU,MAAM,CAAC,CAC/D;EAED,MAAM,YAAY,eAChB,kBAAkB,SAAS,CAAC,WAAW,SAAS,CAAC,WAAW,SAAS,MAAM,eAAe,EAC5F;EAEA,SAAS,QAAc;GACrB,KAAK,qBAAqB,EAAE;GAC5B,KAAK,UAAU,EAAE;GACjB,KAAK,OAAO;GACZ,MAAM;EACR;EAIA,MAAM,YAAY,eAAe;GAC/B,MAAM,aAAa;GACnB,YAAY,MAAM;GAClB,WAAW,QAAQ,uBAAuB;GAC1C,gBAAgB;IACd,OAAO,MAAM;IACb,SAAS,UAAU;GACrB,CAAC;EACH,CAAC,CAAC,KAAK,GAAG,CAAC;EAIX,MAAM,gBAAgB,gBAAgB;GACpC,IAAI,WAAW;GACf,oBAAoB;GACpB,MAAM,MAAM;GACZ,MAAM,MAAM;GACZ,WAAW,MAAM;GACjB,cAAc,MAAM;GACpB,aAAa,MAAM;GACnB,UAAU,WAAW;GACrB,OAAO,MAAM;GACb,gBAAgB,UAAU,QAAS,SAAmB,KAAA;GACtD,oBAAoB,YAAY;GAChC,iBAAiB,WAAW,QAAS,SAAmB,KAAA;GACxD,iBAAiB,WAAW,QAAS,SAAmB,KAAA;GACxD,cAAc,MAAM;GACpB,UAAU,WAAW;GACrB,OAAO,CAAC,WAAW,UAAU,KAAK;EACpC,EAAE;EAEF,SAAS,QAAQ,GAAgB;GAC/B,KAAK,qBAAsB,EAAE,OAA+B,KAAK;EACnE;EAIA,SAAS,SAAS,GAAgB;GAChC,KAAK,UAAW,EAAE,OAA+B,KAAK;EACxD;EAEA,SAAS,QAAQ,GAAqB;GACpC,KAAK,SAAS,CAAC;EACjB;EAEA,SAAS,OAAO,GAAqB;GACnC,KAAK,QAAQ,CAAC;EAChB;;UAIa,YAAA,SAAA,UAAA,GAAX,mBA4CM,OA5CN,YA4CM;mBA3CJ,mBAQE,YARF,WAQE;cAPI;KAAJ,KAAI;;QAES,cAAA;KAAa,GAAKA,KAAAA;IAAM,GAAA;KAC7B;KACC;KACD;KACD;uCALK,QAAA,QAAQ,CAAA,CAAA;IASd,UAAA,SAAA,UAAA,GADR,mBASS,UAAA;;KAPP,MAAK;KACL,0BAAA;KACC,cAAY,mBAAA;KACb,OAAM;KACL,SAAO;QAER,YAA4C,MAAA,SAAA,GAAA;KAArC,OAAM;KAAU,eAAY;;IAGrC,mBAqBM,OAAA,EArBA,OAAK,eAAE,MAAA,aAAA,CAAa,EAAA,GAAA,CAEhB,QAAA,iBAAA,UAAA,GADR,mBAOM,OAAA;;KALH,IAAI,MAAA,WAAA;KACL,+BAAA;KACC,OAAK,eAAE,MAAA,cAAA,CAAc;uBAEnB,cAAA,KAAa,GAAA,IAAA,UAAA,KAAA,mBAAA,IAAA,IAAA,GAMV,QAAA,aAAA,UAAA,GADR,mBAQM,OAAA;;KANH,IAAI,MAAA,OAAA;KACL,0BAAA;KACA,OAAK,eAAA,CAAC,WACE,MAAA,UAAA,CAAU,CAAA;uBAEf,UAAA,KAAS,GAAA,IAAA,UAAA,KAAA,mBAAA,IAAA,IAAA,CAAA,GAAA,CAAA;SAOF,MAAA,iBAAA,KAAA,UAAA,GAAhB,mBAqBM,OArBN,YAqBM,CAAA,eApBJ,mBAQE,YARF,WAQE;aAPI;IAAJ,KAAI;;OAES,cAAA;IAAa,GAAKA,KAAAA;GAAM,GAAA;IAC7B;IACC;IACD;IACD;sCALK,QAAA,QAAQ,CAAA,CAAA,GASd,UAAA,SAAA,UAAA,GADR,mBASS,UAAA;;IAPP,MAAK;IACL,0BAAA;IACC,cAAY,mBAAA;IACb,OAAM;IACL,SAAO;OAER,YAA4C,MAAA,SAAA,GAAA;IAArC,OAAM;IAAU,eAAY;yFAIvC,mBASE,YATF,WASE;;aAPI;IAAJ,KAAI;;OAES,cAAA;IAAa,GAAKA,KAAAA;GAAM,GAAA;IAC7B;IACC;IACD;IACD;uCALK,QAAA,QAAQ,CAAA,CAAA"}
@@ -1,3 +1,3 @@
1
- import { n as grTextareaSafelist, t as grTextareaConfig } from "../../chunks/config-B0i5r8kH.js";
2
- import { t as GrTextarea_default } from "./chunks/GrTextarea-DIYBAPpP.js";
1
+ import { t as GrTextarea_default } from "./chunks/GrTextarea-DUh5Tlo4.js";
2
+ import { n as grTextareaSafelist, t as grTextareaConfig } from "../../chunks/config-Zc_bUvZY2.js";
3
3
  export { GrTextarea_default as GrTextarea, GrTextarea_default as default, grTextareaConfig, grTextareaSafelist };
@@ -0,0 +1,285 @@
1
+ import { a as useGrComponentProp } from "../../../chunks/context-BSYR7RZs.js";
2
+ import { n as useGranularityTranslations } from "../../../chunks/granularityI18n-BC5zsj_d.js";
3
+ import { t as GrSkeleton_default } from "../../GrSkeleton/chunks/GrSkeleton-DEvNE3bC.js";
4
+ import { n as hasMeaningfulSlotContent } from "../../../chunks/slotNodes-DxNXpC7v.js";
5
+ import { a as grTimelineDensityClass, c as loadingRowClass, i as emptyClass, l as timeClass, o as grTimelineMarkerClass, r as descriptionClass, s as groupTitleClass, u as titleClass } from "../../../chunks/config-Cw6TDzWv2.js";
6
+ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, inject, normalizeClass, openBlock, provide, renderList, renderSlot, resolveDynamicComponent, toDisplayString, unref, useSlots, withCtx } from "vue";
7
+ import '../styles.css';//#region src/components/GrTimeline/grTimelineContext.ts
8
+ /**
9
+ * Уровень заголовка группы. Тот же довод, что у `GrCollapse`: лента в разделе
10
+ * `<h4>` с захардкоженным `<h3>` рвёт навигацию по заголовкам.
11
+ */
12
+ var GR_TIMELINE_HEADING_LEVELS = [
13
+ 2,
14
+ 3,
15
+ 4,
16
+ 5,
17
+ 6
18
+ ];
19
+ var GR_TIMELINE_CONTEXT = Symbol("GR_TIMELINE_CONTEXT");
20
+ //#endregion
21
+ //#region src/components/GrTimeline/timelineGroups.ts
22
+ function keyOf(item, index, groupBy) {
23
+ if (typeof groupBy === "function") return String(groupBy(item, index) ?? "");
24
+ const value = item?.[groupBy];
25
+ return value == null ? "" : String(value);
26
+ }
27
+ /**
28
+ * Режет набор на группы, **не меняя порядок**: лента хронологична, и
29
+ * пересортировать её компонент не вправе. Порядок групп — порядок первого
30
+ * вхождения ключа; разорванная группа (`A B A`) собирается в одну.
31
+ *
32
+ * Без `groupBy` — одна безымянная группа: плоская лента остаётся частным
33
+ * случаем, и второй ветки рендера у компонента не появляется.
34
+ */
35
+ function groupTimelineItems(items, groupBy) {
36
+ const entries = items.map((item, index) => ({
37
+ item,
38
+ index
39
+ }));
40
+ if (groupBy === void 0) return entries.length === 0 ? [] : [{
41
+ key: "",
42
+ entries
43
+ }];
44
+ const byKey = /* @__PURE__ */ new Map();
45
+ for (const entry of entries) {
46
+ const key = keyOf(entry.item, entry.index, groupBy);
47
+ const group = byKey.get(key);
48
+ if (group) group.entries.push(entry);
49
+ else byKey.set(key, {
50
+ key,
51
+ entries: [entry]
52
+ });
53
+ }
54
+ return [...byKey.values()];
55
+ }
56
+ //#endregion
57
+ //#region src/components/GrTimeline/GrTimeline.vue?vue&type=script&setup=true&lang.ts
58
+ var _hoisted_1$1 = [
59
+ "data-layout",
60
+ "data-orientation",
61
+ "aria-busy"
62
+ ];
63
+ var _hoisted_2$1 = {
64
+ key: 0,
65
+ "data-gr-timeline-group-header": ""
66
+ };
67
+ var _hoisted_3$1 = ["tabindex"];
68
+ var _hoisted_4$1 = ["tabindex"];
69
+ //#endregion
70
+ //#region src/components/GrTimeline/GrTimeline.vue
71
+ var GrTimeline_default = /* @__PURE__ */ defineComponent({
72
+ __name: "GrTimeline",
73
+ props: {
74
+ items: { default: void 0 },
75
+ itemKey: {
76
+ type: [String, Function],
77
+ default: void 0
78
+ },
79
+ groupBy: {
80
+ type: [String, Function],
81
+ default: void 0
82
+ },
83
+ groupHeadingLevel: { default: void 0 },
84
+ layout: { default: void 0 },
85
+ orientation: { default: void 0 },
86
+ density: { default: void 0 },
87
+ loading: {
88
+ type: Boolean,
89
+ default: false
90
+ },
91
+ loadingRows: { default: 3 },
92
+ empty: {
93
+ type: Boolean,
94
+ default: void 0
95
+ },
96
+ emptyText: { default: void 0 }
97
+ },
98
+ setup(__props) {
99
+ const props = __props;
100
+ const slots = useSlots();
101
+ const { t } = useGranularityTranslations();
102
+ const density = useGrComponentProp("GrTimeline", "density", () => props.density, "regular");
103
+ const orientation = useGrComponentProp("GrTimeline", "orientation", () => props.orientation, "vertical");
104
+ const headingLevel = useGrComponentProp("GrTimeline", "groupHeadingLevel", () => props.groupHeadingLevel, 3);
105
+ const requestedLayout = useGrComponentProp("GrTimeline", "layout", () => props.layout, "stacked");
106
+ /**
107
+ * Горизонтальная лента знает одну раскладку: колонка времени и чередование
108
+ * сторон — это вертикальные приёмы, у горизонтальной оси сторон нет.
109
+ */
110
+ const layout = computed(() => orientation.value === "horizontal" ? "stacked" : requestedLayout.value);
111
+ const headingTag = computed(() => `h${headingLevel.value}`);
112
+ const dataMode = computed(() => props.items !== void 0);
113
+ const grouped = computed(() => dataMode.value && props.groupBy !== void 0);
114
+ const groups = computed(() => groupTimelineItems(props.items ?? [], props.groupBy));
115
+ /** Единственная группа плоской ленты: тот же набор, что и в data-режиме без группировки. */
116
+ const entries = computed(() => groups.value[0]?.entries ?? []);
117
+ const resolvedEmptyText = computed(() => props.emptyText ?? t("gr.timeline.empty", "Nothing here yet"));
118
+ const isEmpty = computed(() => {
119
+ if (props.empty !== void 0) return props.empty;
120
+ if (dataMode.value) return props.items.length === 0;
121
+ return !hasMeaningfulSlotContent(slots.default?.() ?? []);
122
+ });
123
+ const loadingRowCount = computed(() => Math.max(1, Math.trunc(props.loadingRows)));
124
+ function keyOf(item, index) {
125
+ const key = props.itemKey;
126
+ if (typeof key === "function") return key(item, index);
127
+ if (typeof key === "string") return item[key];
128
+ return index;
129
+ }
130
+ function itemsOf(group) {
131
+ return group.entries.map((entry) => entry.item);
132
+ }
133
+ provide(GR_TIMELINE_CONTEXT, {
134
+ layout,
135
+ orientation,
136
+ density
137
+ });
138
+ return (_ctx, _cache) => {
139
+ return openBlock(), createElementBlock("div", {
140
+ "data-gr-timeline": "",
141
+ "data-layout": layout.value,
142
+ "data-orientation": unref(orientation),
143
+ "aria-busy": __props.loading ? "true" : void 0
144
+ }, [__props.loading ? renderSlot(_ctx.$slots, "loading", {}, () => [(openBlock(true), createElementBlock(Fragment, null, renderList(loadingRowCount.value, (row) => {
145
+ return openBlock(), createElementBlock("div", {
146
+ key: row,
147
+ "data-gr-timeline-loading-row": "",
148
+ class: normalizeClass(unref(loadingRowClass))
149
+ }, [createVNode(GrSkeleton_default, {
150
+ variant: "circle",
151
+ width: "var(--gr-timeline-marker-size, 10px)"
152
+ }), createVNode(GrSkeleton_default)], 2);
153
+ }), 128))], void 0, 0) : isEmpty.value ? (openBlock(), createElementBlock("div", {
154
+ key: 1,
155
+ "data-gr-timeline-empty": "",
156
+ class: normalizeClass(unref(emptyClass))
157
+ }, [renderSlot(_ctx.$slots, "empty", {}, () => [createTextVNode(toDisplayString(resolvedEmptyText.value), 1)])], 2)) : grouped.value ? (openBlock(true), createElementBlock(Fragment, { key: 2 }, renderList(groups.value, (group) => {
158
+ return openBlock(), createElementBlock("section", {
159
+ key: group.key,
160
+ "data-gr-timeline-group": ""
161
+ }, [group.key ? (openBlock(), createElementBlock("div", _hoisted_2$1, [_cache[0] || (_cache[0] = createElementVNode("div", {
162
+ "data-gr-timeline-rail": "",
163
+ "aria-hidden": "true"
164
+ }, [createElementVNode("span", { "data-gr-timeline-line": "" })], -1)), (openBlock(), createBlock(resolveDynamicComponent(headingTag.value), {
165
+ "data-gr-timeline-group-title": "",
166
+ class: normalizeClass(unref(groupTitleClass))
167
+ }, {
168
+ default: withCtx(() => [renderSlot(_ctx.$slots, "group", {
169
+ group: group.key,
170
+ items: itemsOf(group)
171
+ }, () => [createTextVNode(toDisplayString(group.key), 1)])]),
172
+ _: 2
173
+ }, 1032, ["class"]))])) : createCommentVNode("", true), createElementVNode("ol", {
174
+ "data-gr-timeline-list": "",
175
+ tabindex: unref(orientation) === "horizontal" ? 0 : void 0
176
+ }, [(openBlock(true), createElementBlock(Fragment, null, renderList(group.entries, (entry) => {
177
+ return renderSlot(_ctx.$slots, "item", {
178
+ item: entry.item,
179
+ index: entry.index
180
+ }, void 0, void 0, keyOf(entry.item, entry.index));
181
+ }), 128))], 8, _hoisted_3$1)]);
182
+ }), 128)) : (openBlock(), createElementBlock("ol", {
183
+ key: 3,
184
+ "data-gr-timeline-list": "",
185
+ tabindex: unref(orientation) === "horizontal" ? 0 : void 0
186
+ }, [dataMode.value ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(entries.value, (entry) => {
187
+ return renderSlot(_ctx.$slots, "item", {
188
+ item: entry.item,
189
+ index: entry.index
190
+ }, void 0, void 0, keyOf(entry.item, entry.index));
191
+ }), 128)) : renderSlot(_ctx.$slots, "default", {}, void 0, void 0, 1)], 8, _hoisted_4$1))], 8, _hoisted_1$1);
192
+ };
193
+ }
194
+ });
195
+ //#endregion
196
+ //#region src/components/GrTimeline/GrTimelineItem.vue?vue&type=script&setup=true&lang.ts
197
+ var _hoisted_1 = ["data-tone", "data-pending"];
198
+ var _hoisted_2 = {
199
+ key: 0,
200
+ "data-gr-timeline-aside": ""
201
+ };
202
+ var _hoisted_3 = ["datetime"];
203
+ var _hoisted_4 = {
204
+ "data-gr-timeline-rail": "",
205
+ "aria-hidden": "true"
206
+ };
207
+ var _hoisted_5 = ["datetime"];
208
+ var _hoisted_6 = {
209
+ key: 3,
210
+ "data-gr-timeline-body": ""
211
+ };
212
+ //#endregion
213
+ //#region src/components/GrTimeline/GrTimelineItem.vue
214
+ var GrTimelineItem_default = /* @__PURE__ */ defineComponent({
215
+ __name: "GrTimelineItem",
216
+ props: {
217
+ time: { default: void 0 },
218
+ datetime: { default: void 0 },
219
+ title: { default: void 0 },
220
+ description: { default: void 0 },
221
+ tone: { default: "neutral" },
222
+ variant: { default: "filled" },
223
+ pending: {
224
+ type: Boolean,
225
+ default: false
226
+ }
227
+ },
228
+ setup(__props) {
229
+ const props = __props;
230
+ const slots = useSlots();
231
+ /**
232
+ * Раскладку пункт читает из контейнера. Вне `GrTimeline` — дефолты: пункт
233
+ * остаётся рабочей строкой, а не падает.
234
+ */
235
+ const timeline = inject(GR_TIMELINE_CONTEXT, null);
236
+ const layout = computed(() => timeline?.layout.value ?? "stacked");
237
+ const density = computed(() => timeline?.density.value ?? "regular");
238
+ const markerClass = computed(() => grTimelineMarkerClass(props.tone, props.pending ? "outlined" : props.variant));
239
+ const hasTime = computed(() => !!slots.time || !!props.time);
240
+ const hasTitle = computed(() => !!slots.title || !!props.title);
241
+ const hasDescription = computed(() => !!slots.description || !!props.description);
242
+ /** В `layout="time"` метка уезжает в свою колонку, во всех остальных — в содержимое. */
243
+ const timeInAside = computed(() => layout.value === "time");
244
+ return (_ctx, _cache) => {
245
+ return openBlock(), createElementBlock("li", {
246
+ "data-gr-timeline-item": "",
247
+ "data-tone": __props.tone,
248
+ "data-pending": __props.pending ? "" : void 0
249
+ }, [
250
+ timeInAside.value ? (openBlock(), createElementBlock("div", _hoisted_2, [hasTime.value ? (openBlock(), createElementBlock("time", {
251
+ key: 0,
252
+ datetime: __props.datetime,
253
+ class: normalizeClass(unref(timeClass))
254
+ }, [renderSlot(_ctx.$slots, "time", {}, () => [createTextVNode(toDisplayString(__props.time), 1)])], 10, _hoisted_3)) : createCommentVNode("", true)])) : createCommentVNode("", true),
255
+ createElementVNode("div", _hoisted_4, [renderSlot(_ctx.$slots, "marker", {}, () => [createElementVNode("span", {
256
+ "data-gr-timeline-marker": "",
257
+ class: normalizeClass(markerClass.value)
258
+ }, null, 2)]), _cache[0] || (_cache[0] = createElementVNode("span", { "data-gr-timeline-line": "" }, null, -1))]),
259
+ createElementVNode("div", {
260
+ "data-gr-timeline-content": "",
261
+ class: normalizeClass(unref(grTimelineDensityClass)(density.value))
262
+ }, [
263
+ hasTime.value && !timeInAside.value ? (openBlock(), createElementBlock("time", {
264
+ key: 0,
265
+ "data-gr-timeline-time": "",
266
+ datetime: __props.datetime,
267
+ class: normalizeClass(unref(timeClass))
268
+ }, [renderSlot(_ctx.$slots, "time", {}, () => [createTextVNode(toDisplayString(__props.time), 1)])], 10, _hoisted_5)) : createCommentVNode("", true),
269
+ hasTitle.value ? (openBlock(), createElementBlock("div", {
270
+ key: 1,
271
+ "data-gr-timeline-title": "",
272
+ class: normalizeClass(unref(titleClass))
273
+ }, [renderSlot(_ctx.$slots, "title", {}, () => [createTextVNode(toDisplayString(__props.title), 1)])], 2)) : createCommentVNode("", true),
274
+ hasDescription.value ? (openBlock(), createElementBlock("div", {
275
+ key: 2,
276
+ class: normalizeClass(unref(descriptionClass))
277
+ }, [renderSlot(_ctx.$slots, "description", {}, () => [createTextVNode(toDisplayString(__props.description), 1)])], 2)) : createCommentVNode("", true),
278
+ _ctx.$slots.default ? (openBlock(), createElementBlock("div", _hoisted_6, [renderSlot(_ctx.$slots, "default")])) : createCommentVNode("", true)
279
+ ], 2)
280
+ ], 8, _hoisted_1);
281
+ };
282
+ }
283
+ });
284
+ //#endregion
285
+ export { GR_TIMELINE_HEADING_LEVELS as i, GrTimeline_default as n, groupTimelineItems as r, GrTimelineItem_default as t };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GrTimeline-CE9b3s18.js","names":["$slots"],"sources":["../../../../src/components/GrTimeline/grTimelineContext.ts","../../../../src/components/GrTimeline/timelineGroups.ts","../../../../src/components/GrTimeline/GrTimeline.vue","../../../../src/components/GrTimeline/GrTimeline.vue","../../../../src/components/GrTimeline/GrTimelineItem.vue","../../../../src/components/GrTimeline/GrTimelineItem.vue"],"sourcesContent":["import type { ComputedRef, InjectionKey } from 'vue'\n\nimport type { GrTimelineDensity, GrTimelineLayout, GrTimelineOrientation } from './grTimelineStyles'\n\n/**\n * Уровень заголовка группы. Тот же довод, что у `GrCollapse`: лента в разделе\n * `<h4>` с захардкоженным `<h3>` рвёт навигацию по заголовкам.\n */\nexport const GR_TIMELINE_HEADING_LEVELS = [2, 3, 4, 5, 6] as const\n\nexport type GrTimelineHeadingLevel = typeof GR_TIMELINE_HEADING_LEVELS[number]\n\n/**\n * Пункт читает раскладку из контейнера, а не получает её пропом: иначе\n * `layout` пришлось бы дублировать на каждом `GrTimelineItem`.\n */\nexport interface GrTimelineContext {\n layout: ComputedRef<GrTimelineLayout>\n orientation: ComputedRef<GrTimelineOrientation>\n density: ComputedRef<GrTimelineDensity>\n}\n\nexport const GR_TIMELINE_CONTEXT: InjectionKey<GrTimelineContext> = Symbol('GR_TIMELINE_CONTEXT')\n","/**\n * Группировка ленты событий. Без Vue — чтобы проверялась без монтирования.\n */\n\nexport type GrTimelineGroupBy<T> = string | ((item: T, index: number) => string)\n\n/** Пункт вместе с его позицией в исходном наборе: ключи `v-for` считаются от неё. */\nexport interface GrTimelineEntry<T> {\n item: T\n index: number\n}\n\nexport interface GrTimelineGroup<T> {\n /** Ключ группы. Пустая строка — заголовка у группы нет. */\n key: string\n entries: GrTimelineEntry<T>[]\n}\n\nfunction keyOf<T>(item: T, index: number, groupBy: GrTimelineGroupBy<T>): string {\n if (typeof groupBy === 'function')\n return String(groupBy(item, index) ?? '')\n\n const value = (item as Record<string, unknown> | null | undefined)?.[groupBy]\n\n // `undefined` в поле — это «группы нет», а не группа с надписью «undefined».\n return value == null ? '' : String(value)\n}\n\n/**\n * Режет набор на группы, **не меняя порядок**: лента хронологична, и\n * пересортировать её компонент не вправе. Порядок групп — порядок первого\n * вхождения ключа; разорванная группа (`A B A`) собирается в одну.\n *\n * Без `groupBy` — одна безымянная группа: плоская лента остаётся частным\n * случаем, и второй ветки рендера у компонента не появляется.\n */\nexport function groupTimelineItems<T>(\n items: readonly T[],\n groupBy?: GrTimelineGroupBy<T>,\n): GrTimelineGroup<T>[] {\n const entries = items.map((item, index) => ({ item, index }))\n\n if (groupBy === undefined)\n return entries.length === 0 ? [] : [{ key: '', entries }]\n\n const byKey = new Map<string, GrTimelineGroup<T>>()\n\n for (const entry of entries) {\n const key = keyOf(entry.item, entry.index, groupBy)\n const group = byKey.get(key)\n\n if (group)\n group.entries.push(entry)\n else\n byKey.set(key, { key, entries: [entry] })\n }\n\n return [...byKey.values()]\n}\n","<script setup lang=\"ts\" generic=\"T = unknown\">\nimport { computed, provide, useSlots, watch } from 'vue'\n\nimport GrSkeleton from '../GrSkeleton/GrSkeleton.vue'\nimport { useGrComponentProp } from '../GrConfigProvider/context'\nimport { hasMeaningfulSlotContent } from '../shared/slotNodes'\nimport { useGranularityTranslations } from '../../internal/granularityI18n'\n\nimport { GR_TIMELINE_CONTEXT, type GrTimelineHeadingLevel } from './grTimelineContext'\nimport {\n emptyClass,\n groupTitleClass,\n loadingRowClass,\n type GrTimelineDensity,\n type GrTimelineLayout,\n type GrTimelineOrientation,\n} from './grTimelineStyles'\nimport { groupTimelineItems, type GrTimelineGroupBy } from './timelineGroups'\n\nexport type {\n GrTimelineDensity,\n GrTimelineLayout,\n GrTimelineOrientation,\n} from './grTimelineStyles'\nexport type { GrTimelineGroupBy } from './timelineGroups'\n\nexport interface GrTimelineProps<TItem = unknown> {\n /**\n * Данные ленты. С ними пункты рисует слот `#item` — и только так лента знает\n * состав набора, то есть может его группировать.\n */\n items?: TItem[]\n /** Ключ пункта для `v-for`: имя поля или функция. Без него — индекс. */\n itemKey?: string | ((item: TItem, index: number) => string | number)\n /** Группировка: имя поля или функция от пункта. Заголовок группы — слот `#group`. */\n groupBy?: GrTimelineGroupBy<TItem>\n /** Уровень заголовка группы: лента обязана вписаться в структуру заголовков страницы. */\n groupHeadingLevel?: GrTimelineHeadingLevel\n /** Раскладка: одна ось, колонка времени слева или чередование сторон. */\n layout?: GrTimelineLayout\n /** Направление оси. Горизонтальная лента — скроллер. */\n orientation?: GrTimelineOrientation\n /** Плотность вертикальных отступов пункта. */\n density?: GrTimelineDensity\n /** Идёт загрузка: вместо пунктов — заглушки, контейнер помечен `aria-busy`. */\n loading?: boolean\n /** Сколько строк-заглушек показать при `loading`. */\n loadingRows?: number\n /**\n * Лента пуста. По умолчанию определяется сама — по данным или по слоту; проп\n * нужен там, где потребитель знает лучше.\n */\n empty?: boolean\n /** Текст пустого состояния. Слот `#empty` сильнее. */\n emptyText?: string\n}\n\nconst props = withDefaults(defineProps<GrTimelineProps<T>>(), {\n items: undefined,\n itemKey: undefined,\n groupBy: undefined,\n // Настоящие дефолты живут в резолверах `useGrComponentProp`: объявленный здесь\n // дефолт неотличим от значения, переданного потребителем, и перебивал бы конфиг.\n groupHeadingLevel: undefined,\n layout: undefined,\n orientation: undefined,\n density: undefined,\n loading: false,\n loadingRows: 3,\n empty: undefined,\n emptyText: undefined,\n})\n\ndefineSlots<{\n /** Пункты ленты (`GrTimelineItem`), когда данные не переданы пропом. */\n default?: () => any\n /** Пункт в data-режиме. */\n item?: (props: { item: T, index: number }) => any\n /** Заголовок группы. По умолчанию — сам ключ. */\n group?: (props: { group: string, items: T[] }) => any\n /** Содержимое пустого состояния вместо текста по умолчанию. */\n empty?: () => any\n /** Заглушки загрузки вместо строк по умолчанию. */\n loading?: () => any\n}>()\n\nconst slots = useSlots()\nconst { t } = useGranularityTranslations()\n\nconst density = useGrComponentProp('GrTimeline', 'density', () => props.density, 'regular')\nconst orientation = useGrComponentProp('GrTimeline', 'orientation', () => props.orientation, 'vertical')\nconst headingLevel = useGrComponentProp('GrTimeline', 'groupHeadingLevel', () => props.groupHeadingLevel, 3)\nconst requestedLayout = useGrComponentProp('GrTimeline', 'layout', () => props.layout, 'stacked')\n\n/**\n * Горизонтальная лента знает одну раскладку: колонка времени и чередование\n * сторон — это вертикальные приёмы, у горизонтальной оси сторон нет.\n */\nconst layout = computed<GrTimelineLayout>(() => (\n orientation.value === 'horizontal' ? 'stacked' : requestedLayout.value\n))\n\nconst headingTag = computed(() => `h${headingLevel.value}`)\n\nconst dataMode = computed(() => props.items !== undefined)\n\nconst grouped = computed(() => dataMode.value && props.groupBy !== undefined)\n\nconst groups = computed(() => groupTimelineItems(props.items ?? [], props.groupBy))\n\n/** Единственная группа плоской ленты: тот же набор, что и в data-режиме без группировки. */\nconst entries = computed(() => groups.value[0]?.entries ?? [])\n\nconst resolvedEmptyText = computed(() => props.emptyText ?? t('gr.timeline.empty', 'Nothing here yet'))\n\nconst isEmpty = computed(() => {\n if (props.empty !== undefined) return props.empty\n\n if (dataMode.value) return props.items!.length === 0\n\n // `v-for` по пустому массиву оставляет фрагмент без узлов, `v-if` — комментарий,\n // и ни то ни другое пунктом ленты не является.\n return !hasMeaningfulSlotContent(slots.default?.() ?? [])\n})\n\nconst loadingRowCount = computed(() => Math.max(1, Math.trunc(props.loadingRows)))\n\nfunction keyOf(item: T, index: number): string | number {\n const key = props.itemKey\n if (typeof key === 'function') return key(item, index)\n if (typeof key === 'string') return (item as Record<string, unknown>)[key] as string | number\n\n return index\n}\n\nfunction itemsOf(group: { entries: { item: T }[] }): T[] {\n return group.entries.map(entry => entry.item)\n}\n\nprovide(GR_TIMELINE_CONTEXT, { layout, orientation, density })\n\nif (import.meta.env?.DEV) {\n watch(\n () => [dataMode.value, Boolean(slots.item)] as const,\n ([hasItems, hasSlot]) => {\n if (hasItems && !hasSlot) {\n console.warn(\n '[granularity] GrTimeline: с `items` пункты рисует слот `#item` — без него лента пуста.',\n )\n }\n },\n { immediate: true },\n )\n\n watch(\n () => [dataMode.value, props.groupBy !== undefined] as const,\n ([hasItems, hasGroupBy]) => {\n if (hasGroupBy && !hasItems) {\n console.warn(\n '[granularity] GrTimeline: `groupBy` работает только с `items` — пункты из слота по '\n + 'умолчанию лента не разбирает и сгруппировать их ей не из чего.',\n )\n }\n },\n { immediate: true },\n )\n\n watch(\n () => [orientation.value, requestedLayout.value] as const,\n ([axis, requested]) => {\n if (axis === 'horizontal' && requested !== 'stacked') {\n console.warn(\n `[granularity] GrTimeline: layout=\"${requested}\" — вертикальная раскладка, `\n + 'в горизонтальной ленте она игнорируется.',\n )\n }\n },\n { immediate: true },\n )\n}\n</script>\n\n<template>\n <div\n data-gr-timeline\n :data-layout=\"layout\"\n :data-orientation=\"orientation\"\n :aria-busy=\"loading ? 'true' : undefined\"\n >\n <template v-if=\"loading\">\n <slot name=\"loading\">\n <div\n v-for=\"row in loadingRowCount\"\n :key=\"row\"\n data-gr-timeline-loading-row\n :class=\"loadingRowClass\"\n >\n <GrSkeleton variant=\"circle\" width=\"var(--gr-timeline-marker-size, 10px)\" />\n <GrSkeleton />\n </div>\n </slot>\n </template>\n\n <div\n v-else-if=\"isEmpty\"\n data-gr-timeline-empty\n :class=\"emptyClass\"\n >\n <slot name=\"empty\">\n {{ resolvedEmptyText }}\n </slot>\n </div>\n\n <template v-else-if=\"grouped\">\n <!--\n Группа — секция с заголовком, а не пункт-заголовок внутри списка:\n `<li>` с датой попал бы в набор событий и был бы объявлен как одно из них.\n -->\n <section\n v-for=\"group in groups\"\n :key=\"group.key\"\n data-gr-timeline-group\n >\n <div\n v-if=\"group.key\"\n data-gr-timeline-group-header\n >\n <div data-gr-timeline-rail aria-hidden=\"true\">\n <span data-gr-timeline-line />\n </div>\n\n <component\n :is=\"headingTag\"\n data-gr-timeline-group-title\n :class=\"groupTitleClass\"\n >\n <slot name=\"group\" :group=\"group.key\" :items=\"itemsOf(group)\">\n {{ group.key }}\n </slot>\n </component>\n </div>\n\n <ol\n data-gr-timeline-list\n :tabindex=\"orientation === 'horizontal' ? 0 : undefined\"\n >\n <template\n v-for=\"entry in group.entries\"\n :key=\"keyOf(entry.item, entry.index)\"\n >\n <slot name=\"item\" :item=\"entry.item\" :index=\"entry.index\" />\n </template>\n </ol>\n </section>\n </template>\n\n <ol\n v-else\n data-gr-timeline-list\n :tabindex=\"orientation === 'horizontal' ? 0 : undefined\"\n >\n <template v-if=\"dataMode\">\n <template\n v-for=\"entry in entries\"\n :key=\"keyOf(entry.item, entry.index)\"\n >\n <slot name=\"item\" :item=\"entry.item\" :index=\"entry.index\" />\n </template>\n </template>\n\n <slot v-else />\n </ol>\n </div>\n</template>\n\n<style>\n/*\n * Геометрия ленты живёт здесь, а не в утилитах, по одной причине: сторона\n * пункта в `alternate` — это `nth-child`, а обрыв оси — `last-child`, и оба\n * вопроса утилитами не выражаются. Альтернатива — регистрация пунктов в\n * контексте на `onMounted` — дала бы порядок, зависящий от порядка монтирования,\n * и разъезжалась бы на `v-if` посреди ленты.\n */\n\n[data-gr-timeline] {\n --gr-timeline-columns: auto 1fr;\n}\n\n[data-gr-timeline][data-layout='time'] {\n --gr-timeline-columns: var(--gr-timeline-time-width, 5.5rem) auto 1fr;\n}\n\n[data-gr-timeline][data-layout='alternate'] {\n --gr-timeline-columns: 1fr auto 1fr;\n}\n\n[data-gr-timeline-list] {\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n[data-gr-timeline-item],\n[data-gr-timeline-group-header] {\n display: grid;\n grid-template-columns: var(--gr-timeline-columns);\n column-gap: var(--gr-timeline-gap, 0.75rem);\n align-items: start;\n}\n\n[data-gr-timeline-aside] {\n text-align: end;\n}\n\n/*\n * Ось — отрезок у каждого пункта, а не одна длинная линия: соседние отрезки\n * смыкаются сами, и мерить высоту списка не приходится.\n */\n[data-gr-timeline-rail] {\n display: flex;\n flex-direction: column;\n align-items: center;\n align-self: stretch;\n padding-top: var(--gr-timeline-marker-top, 0.35rem);\n}\n\n[data-gr-timeline-rail] > :first-child {\n flex: none;\n}\n\n[data-gr-timeline-marker] {\n box-sizing: border-box;\n width: var(--gr-timeline-marker-size, 10px);\n height: var(--gr-timeline-marker-size, 10px);\n border-width: var(--gr-timeline-marker-ring, 2px);\n border-style: solid;\n border-color: transparent;\n}\n\n[data-gr-timeline-line] {\n flex: 1 1 auto;\n width: var(--gr-timeline-axis-width, 2px);\n min-height: var(--gr-timeline-line-min, 0.75rem);\n margin-top: 0.25rem;\n /* Ровно на столько следующая точка отступает от верха своей строки: без этого\n отрезок не доходит до неё, и ось выглядит пунктиром из длинных штрихов. */\n margin-bottom: calc(-1 * var(--gr-timeline-marker-top, 0.35rem));\n background-color: var(--gr-timeline-axis-color, var(--gr-brd));\n}\n\n/*\n * Пунктиром идёт участок, ведущий **к** незавершённому событию, и всё, что за\n * ним: непройденный путь. Отрезок после точки для этого не годится — обычно\n * незавершённое событие последнее, и его отрезка не видно вовсе.\n */\n[data-gr-timeline-item]:has(+ [data-gr-timeline-item][data-pending]) [data-gr-timeline-line],\n[data-gr-timeline-item][data-pending] [data-gr-timeline-line] {\n background-color: transparent;\n background-image: repeating-linear-gradient(\n to bottom,\n var(--gr-timeline-axis-color, var(--gr-brd)) 0 var(--gr-timeline-dash, 4px),\n transparent var(--gr-timeline-dash, 4px) calc(var(--gr-timeline-dash, 4px) * 2)\n );\n}\n\n/* Хвост после последнего события — линия в никуда. */\n[data-gr-timeline-item]:last-child [data-gr-timeline-line] {\n visibility: hidden;\n}\n\n/* Между группами ось не рвётся: разрыв читался бы как две разные ленты. */\n[data-gr-timeline-group]:not(:last-of-type) [data-gr-timeline-item]:last-child [data-gr-timeline-line] {\n visibility: visible;\n}\n\n[data-gr-timeline-group-header] [data-gr-timeline-rail] {\n padding-top: 0;\n}\n\n/* Воздух перед заголовком — отступом строки, а не полем: поле разорвало бы ось. */\n[data-gr-timeline-group] + [data-gr-timeline-group] [data-gr-timeline-group-header] {\n padding-top: 0.5rem;\n}\n\n[data-gr-timeline-group-header] [data-gr-timeline-line] {\n margin-top: 0;\n}\n\n/* Над первым заголовком оси ещё нет — линия висела бы в воздухе. */\n[data-gr-timeline-group]:first-of-type [data-gr-timeline-group-header] [data-gr-timeline-line] {\n visibility: hidden;\n}\n\n[data-gr-timeline][data-layout='time'] [data-gr-timeline-group-header] [data-gr-timeline-rail],\n[data-gr-timeline][data-layout='alternate'] [data-gr-timeline-group-header] [data-gr-timeline-rail] {\n grid-column: 2;\n}\n\n[data-gr-timeline][data-layout='time'] [data-gr-timeline-group-title],\n[data-gr-timeline][data-layout='alternate'] [data-gr-timeline-group-title] {\n grid-column: 3;\n}\n\n[data-gr-timeline][data-layout='alternate'] [data-gr-timeline-rail] {\n grid-column: 2;\n}\n\n[data-gr-timeline][data-layout='alternate'] [data-gr-timeline-content] {\n grid-column: 3;\n}\n\n[data-gr-timeline][data-layout='alternate'] [data-gr-timeline-item]:nth-child(even) [data-gr-timeline-content] {\n grid-column: 1;\n grid-row: 1;\n text-align: end;\n}\n\n/* Двухсторонняя лента в узкой колонке нечитаема — там она односторонняя. */\n@media (max-width: 640px) {\n [data-gr-timeline][data-layout='alternate'] {\n --gr-timeline-columns: auto 1fr;\n }\n\n [data-gr-timeline][data-layout='alternate'] [data-gr-timeline-rail],\n [data-gr-timeline][data-layout='alternate'] [data-gr-timeline-group-header] [data-gr-timeline-rail] {\n grid-column: 1;\n }\n\n [data-gr-timeline][data-layout='alternate'] [data-gr-timeline-content],\n [data-gr-timeline][data-layout='alternate'] [data-gr-timeline-item]:nth-child(even) [data-gr-timeline-content],\n [data-gr-timeline][data-layout='alternate'] [data-gr-timeline-group-title] {\n grid-column: 2;\n text-align: start;\n }\n}\n\n[data-gr-timeline][data-orientation='horizontal'] [data-gr-timeline-list] {\n display: flex;\n flex-direction: row;\n overflow-x: auto;\n}\n\n[data-gr-timeline][data-orientation='horizontal'] [data-gr-timeline-item] {\n grid-template-columns: 1fr;\n min-width: var(--gr-timeline-item-min-width, 12rem);\n padding-inline-end: var(--gr-timeline-gap, 0.75rem);\n}\n\n[data-gr-timeline][data-orientation='horizontal'] [data-gr-timeline-content] {\n padding-bottom: 0;\n}\n\n[data-gr-timeline][data-orientation='horizontal'] [data-gr-timeline-rail] {\n flex-direction: row;\n align-items: center;\n align-self: auto;\n padding-top: 0;\n padding-bottom: 0.25rem;\n}\n\n[data-gr-timeline][data-orientation='horizontal'] [data-gr-timeline-line] {\n width: auto;\n height: var(--gr-timeline-axis-width, 2px);\n min-width: var(--gr-timeline-line-min, 0.75rem);\n min-height: 0;\n margin-top: 0;\n margin-inline-start: 0.25rem;\n}\n\n[data-gr-timeline][data-orientation='horizontal'] [data-gr-timeline-item]:has(+ [data-gr-timeline-item][data-pending]) [data-gr-timeline-line],\n[data-gr-timeline][data-orientation='horizontal'] [data-gr-timeline-item][data-pending] [data-gr-timeline-line] {\n background-image: repeating-linear-gradient(\n to right,\n var(--gr-timeline-axis-color, var(--gr-brd)) 0 var(--gr-timeline-dash, 4px),\n transparent var(--gr-timeline-dash, 4px) calc(var(--gr-timeline-dash, 4px) * 2)\n );\n}\n</style>\n","<script setup lang=\"ts\" generic=\"T = unknown\">\nimport { computed, provide, useSlots, watch } from 'vue'\n\nimport GrSkeleton from '../GrSkeleton/GrSkeleton.vue'\nimport { useGrComponentProp } from '../GrConfigProvider/context'\nimport { hasMeaningfulSlotContent } from '../shared/slotNodes'\nimport { useGranularityTranslations } from '../../internal/granularityI18n'\n\nimport { GR_TIMELINE_CONTEXT, type GrTimelineHeadingLevel } from './grTimelineContext'\nimport {\n emptyClass,\n groupTitleClass,\n loadingRowClass,\n type GrTimelineDensity,\n type GrTimelineLayout,\n type GrTimelineOrientation,\n} from './grTimelineStyles'\nimport { groupTimelineItems, type GrTimelineGroupBy } from './timelineGroups'\n\nexport type {\n GrTimelineDensity,\n GrTimelineLayout,\n GrTimelineOrientation,\n} from './grTimelineStyles'\nexport type { GrTimelineGroupBy } from './timelineGroups'\n\nexport interface GrTimelineProps<TItem = unknown> {\n /**\n * Данные ленты. С ними пункты рисует слот `#item` — и только так лента знает\n * состав набора, то есть может его группировать.\n */\n items?: TItem[]\n /** Ключ пункта для `v-for`: имя поля или функция. Без него — индекс. */\n itemKey?: string | ((item: TItem, index: number) => string | number)\n /** Группировка: имя поля или функция от пункта. Заголовок группы — слот `#group`. */\n groupBy?: GrTimelineGroupBy<TItem>\n /** Уровень заголовка группы: лента обязана вписаться в структуру заголовков страницы. */\n groupHeadingLevel?: GrTimelineHeadingLevel\n /** Раскладка: одна ось, колонка времени слева или чередование сторон. */\n layout?: GrTimelineLayout\n /** Направление оси. Горизонтальная лента — скроллер. */\n orientation?: GrTimelineOrientation\n /** Плотность вертикальных отступов пункта. */\n density?: GrTimelineDensity\n /** Идёт загрузка: вместо пунктов — заглушки, контейнер помечен `aria-busy`. */\n loading?: boolean\n /** Сколько строк-заглушек показать при `loading`. */\n loadingRows?: number\n /**\n * Лента пуста. По умолчанию определяется сама — по данным или по слоту; проп\n * нужен там, где потребитель знает лучше.\n */\n empty?: boolean\n /** Текст пустого состояния. Слот `#empty` сильнее. */\n emptyText?: string\n}\n\nconst props = withDefaults(defineProps<GrTimelineProps<T>>(), {\n items: undefined,\n itemKey: undefined,\n groupBy: undefined,\n // Настоящие дефолты живут в резолверах `useGrComponentProp`: объявленный здесь\n // дефолт неотличим от значения, переданного потребителем, и перебивал бы конфиг.\n groupHeadingLevel: undefined,\n layout: undefined,\n orientation: undefined,\n density: undefined,\n loading: false,\n loadingRows: 3,\n empty: undefined,\n emptyText: undefined,\n})\n\ndefineSlots<{\n /** Пункты ленты (`GrTimelineItem`), когда данные не переданы пропом. */\n default?: () => any\n /** Пункт в data-режиме. */\n item?: (props: { item: T, index: number }) => any\n /** Заголовок группы. По умолчанию — сам ключ. */\n group?: (props: { group: string, items: T[] }) => any\n /** Содержимое пустого состояния вместо текста по умолчанию. */\n empty?: () => any\n /** Заглушки загрузки вместо строк по умолчанию. */\n loading?: () => any\n}>()\n\nconst slots = useSlots()\nconst { t } = useGranularityTranslations()\n\nconst density = useGrComponentProp('GrTimeline', 'density', () => props.density, 'regular')\nconst orientation = useGrComponentProp('GrTimeline', 'orientation', () => props.orientation, 'vertical')\nconst headingLevel = useGrComponentProp('GrTimeline', 'groupHeadingLevel', () => props.groupHeadingLevel, 3)\nconst requestedLayout = useGrComponentProp('GrTimeline', 'layout', () => props.layout, 'stacked')\n\n/**\n * Горизонтальная лента знает одну раскладку: колонка времени и чередование\n * сторон — это вертикальные приёмы, у горизонтальной оси сторон нет.\n */\nconst layout = computed<GrTimelineLayout>(() => (\n orientation.value === 'horizontal' ? 'stacked' : requestedLayout.value\n))\n\nconst headingTag = computed(() => `h${headingLevel.value}`)\n\nconst dataMode = computed(() => props.items !== undefined)\n\nconst grouped = computed(() => dataMode.value && props.groupBy !== undefined)\n\nconst groups = computed(() => groupTimelineItems(props.items ?? [], props.groupBy))\n\n/** Единственная группа плоской ленты: тот же набор, что и в data-режиме без группировки. */\nconst entries = computed(() => groups.value[0]?.entries ?? [])\n\nconst resolvedEmptyText = computed(() => props.emptyText ?? t('gr.timeline.empty', 'Nothing here yet'))\n\nconst isEmpty = computed(() => {\n if (props.empty !== undefined) return props.empty\n\n if (dataMode.value) return props.items!.length === 0\n\n // `v-for` по пустому массиву оставляет фрагмент без узлов, `v-if` — комментарий,\n // и ни то ни другое пунктом ленты не является.\n return !hasMeaningfulSlotContent(slots.default?.() ?? [])\n})\n\nconst loadingRowCount = computed(() => Math.max(1, Math.trunc(props.loadingRows)))\n\nfunction keyOf(item: T, index: number): string | number {\n const key = props.itemKey\n if (typeof key === 'function') return key(item, index)\n if (typeof key === 'string') return (item as Record<string, unknown>)[key] as string | number\n\n return index\n}\n\nfunction itemsOf(group: { entries: { item: T }[] }): T[] {\n return group.entries.map(entry => entry.item)\n}\n\nprovide(GR_TIMELINE_CONTEXT, { layout, orientation, density })\n\nif (import.meta.env?.DEV) {\n watch(\n () => [dataMode.value, Boolean(slots.item)] as const,\n ([hasItems, hasSlot]) => {\n if (hasItems && !hasSlot) {\n console.warn(\n '[granularity] GrTimeline: с `items` пункты рисует слот `#item` — без него лента пуста.',\n )\n }\n },\n { immediate: true },\n )\n\n watch(\n () => [dataMode.value, props.groupBy !== undefined] as const,\n ([hasItems, hasGroupBy]) => {\n if (hasGroupBy && !hasItems) {\n console.warn(\n '[granularity] GrTimeline: `groupBy` работает только с `items` — пункты из слота по '\n + 'умолчанию лента не разбирает и сгруппировать их ей не из чего.',\n )\n }\n },\n { immediate: true },\n )\n\n watch(\n () => [orientation.value, requestedLayout.value] as const,\n ([axis, requested]) => {\n if (axis === 'horizontal' && requested !== 'stacked') {\n console.warn(\n `[granularity] GrTimeline: layout=\"${requested}\" — вертикальная раскладка, `\n + 'в горизонтальной ленте она игнорируется.',\n )\n }\n },\n { immediate: true },\n )\n}\n</script>\n\n<template>\n <div\n data-gr-timeline\n :data-layout=\"layout\"\n :data-orientation=\"orientation\"\n :aria-busy=\"loading ? 'true' : undefined\"\n >\n <template v-if=\"loading\">\n <slot name=\"loading\">\n <div\n v-for=\"row in loadingRowCount\"\n :key=\"row\"\n data-gr-timeline-loading-row\n :class=\"loadingRowClass\"\n >\n <GrSkeleton variant=\"circle\" width=\"var(--gr-timeline-marker-size, 10px)\" />\n <GrSkeleton />\n </div>\n </slot>\n </template>\n\n <div\n v-else-if=\"isEmpty\"\n data-gr-timeline-empty\n :class=\"emptyClass\"\n >\n <slot name=\"empty\">\n {{ resolvedEmptyText }}\n </slot>\n </div>\n\n <template v-else-if=\"grouped\">\n <!--\n Группа — секция с заголовком, а не пункт-заголовок внутри списка:\n `<li>` с датой попал бы в набор событий и был бы объявлен как одно из них.\n -->\n <section\n v-for=\"group in groups\"\n :key=\"group.key\"\n data-gr-timeline-group\n >\n <div\n v-if=\"group.key\"\n data-gr-timeline-group-header\n >\n <div data-gr-timeline-rail aria-hidden=\"true\">\n <span data-gr-timeline-line />\n </div>\n\n <component\n :is=\"headingTag\"\n data-gr-timeline-group-title\n :class=\"groupTitleClass\"\n >\n <slot name=\"group\" :group=\"group.key\" :items=\"itemsOf(group)\">\n {{ group.key }}\n </slot>\n </component>\n </div>\n\n <ol\n data-gr-timeline-list\n :tabindex=\"orientation === 'horizontal' ? 0 : undefined\"\n >\n <template\n v-for=\"entry in group.entries\"\n :key=\"keyOf(entry.item, entry.index)\"\n >\n <slot name=\"item\" :item=\"entry.item\" :index=\"entry.index\" />\n </template>\n </ol>\n </section>\n </template>\n\n <ol\n v-else\n data-gr-timeline-list\n :tabindex=\"orientation === 'horizontal' ? 0 : undefined\"\n >\n <template v-if=\"dataMode\">\n <template\n v-for=\"entry in entries\"\n :key=\"keyOf(entry.item, entry.index)\"\n >\n <slot name=\"item\" :item=\"entry.item\" :index=\"entry.index\" />\n </template>\n </template>\n\n <slot v-else />\n </ol>\n </div>\n</template>\n\n<style>\n/*\n * Геометрия ленты живёт здесь, а не в утилитах, по одной причине: сторона\n * пункта в `alternate` — это `nth-child`, а обрыв оси — `last-child`, и оба\n * вопроса утилитами не выражаются. Альтернатива — регистрация пунктов в\n * контексте на `onMounted` — дала бы порядок, зависящий от порядка монтирования,\n * и разъезжалась бы на `v-if` посреди ленты.\n */\n\n[data-gr-timeline] {\n --gr-timeline-columns: auto 1fr;\n}\n\n[data-gr-timeline][data-layout='time'] {\n --gr-timeline-columns: var(--gr-timeline-time-width, 5.5rem) auto 1fr;\n}\n\n[data-gr-timeline][data-layout='alternate'] {\n --gr-timeline-columns: 1fr auto 1fr;\n}\n\n[data-gr-timeline-list] {\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n[data-gr-timeline-item],\n[data-gr-timeline-group-header] {\n display: grid;\n grid-template-columns: var(--gr-timeline-columns);\n column-gap: var(--gr-timeline-gap, 0.75rem);\n align-items: start;\n}\n\n[data-gr-timeline-aside] {\n text-align: end;\n}\n\n/*\n * Ось — отрезок у каждого пункта, а не одна длинная линия: соседние отрезки\n * смыкаются сами, и мерить высоту списка не приходится.\n */\n[data-gr-timeline-rail] {\n display: flex;\n flex-direction: column;\n align-items: center;\n align-self: stretch;\n padding-top: var(--gr-timeline-marker-top, 0.35rem);\n}\n\n[data-gr-timeline-rail] > :first-child {\n flex: none;\n}\n\n[data-gr-timeline-marker] {\n box-sizing: border-box;\n width: var(--gr-timeline-marker-size, 10px);\n height: var(--gr-timeline-marker-size, 10px);\n border-width: var(--gr-timeline-marker-ring, 2px);\n border-style: solid;\n border-color: transparent;\n}\n\n[data-gr-timeline-line] {\n flex: 1 1 auto;\n width: var(--gr-timeline-axis-width, 2px);\n min-height: var(--gr-timeline-line-min, 0.75rem);\n margin-top: 0.25rem;\n /* Ровно на столько следующая точка отступает от верха своей строки: без этого\n отрезок не доходит до неё, и ось выглядит пунктиром из длинных штрихов. */\n margin-bottom: calc(-1 * var(--gr-timeline-marker-top, 0.35rem));\n background-color: var(--gr-timeline-axis-color, var(--gr-brd));\n}\n\n/*\n * Пунктиром идёт участок, ведущий **к** незавершённому событию, и всё, что за\n * ним: непройденный путь. Отрезок после точки для этого не годится — обычно\n * незавершённое событие последнее, и его отрезка не видно вовсе.\n */\n[data-gr-timeline-item]:has(+ [data-gr-timeline-item][data-pending]) [data-gr-timeline-line],\n[data-gr-timeline-item][data-pending] [data-gr-timeline-line] {\n background-color: transparent;\n background-image: repeating-linear-gradient(\n to bottom,\n var(--gr-timeline-axis-color, var(--gr-brd)) 0 var(--gr-timeline-dash, 4px),\n transparent var(--gr-timeline-dash, 4px) calc(var(--gr-timeline-dash, 4px) * 2)\n );\n}\n\n/* Хвост после последнего события — линия в никуда. */\n[data-gr-timeline-item]:last-child [data-gr-timeline-line] {\n visibility: hidden;\n}\n\n/* Между группами ось не рвётся: разрыв читался бы как две разные ленты. */\n[data-gr-timeline-group]:not(:last-of-type) [data-gr-timeline-item]:last-child [data-gr-timeline-line] {\n visibility: visible;\n}\n\n[data-gr-timeline-group-header] [data-gr-timeline-rail] {\n padding-top: 0;\n}\n\n/* Воздух перед заголовком — отступом строки, а не полем: поле разорвало бы ось. */\n[data-gr-timeline-group] + [data-gr-timeline-group] [data-gr-timeline-group-header] {\n padding-top: 0.5rem;\n}\n\n[data-gr-timeline-group-header] [data-gr-timeline-line] {\n margin-top: 0;\n}\n\n/* Над первым заголовком оси ещё нет — линия висела бы в воздухе. */\n[data-gr-timeline-group]:first-of-type [data-gr-timeline-group-header] [data-gr-timeline-line] {\n visibility: hidden;\n}\n\n[data-gr-timeline][data-layout='time'] [data-gr-timeline-group-header] [data-gr-timeline-rail],\n[data-gr-timeline][data-layout='alternate'] [data-gr-timeline-group-header] [data-gr-timeline-rail] {\n grid-column: 2;\n}\n\n[data-gr-timeline][data-layout='time'] [data-gr-timeline-group-title],\n[data-gr-timeline][data-layout='alternate'] [data-gr-timeline-group-title] {\n grid-column: 3;\n}\n\n[data-gr-timeline][data-layout='alternate'] [data-gr-timeline-rail] {\n grid-column: 2;\n}\n\n[data-gr-timeline][data-layout='alternate'] [data-gr-timeline-content] {\n grid-column: 3;\n}\n\n[data-gr-timeline][data-layout='alternate'] [data-gr-timeline-item]:nth-child(even) [data-gr-timeline-content] {\n grid-column: 1;\n grid-row: 1;\n text-align: end;\n}\n\n/* Двухсторонняя лента в узкой колонке нечитаема — там она односторонняя. */\n@media (max-width: 640px) {\n [data-gr-timeline][data-layout='alternate'] {\n --gr-timeline-columns: auto 1fr;\n }\n\n [data-gr-timeline][data-layout='alternate'] [data-gr-timeline-rail],\n [data-gr-timeline][data-layout='alternate'] [data-gr-timeline-group-header] [data-gr-timeline-rail] {\n grid-column: 1;\n }\n\n [data-gr-timeline][data-layout='alternate'] [data-gr-timeline-content],\n [data-gr-timeline][data-layout='alternate'] [data-gr-timeline-item]:nth-child(even) [data-gr-timeline-content],\n [data-gr-timeline][data-layout='alternate'] [data-gr-timeline-group-title] {\n grid-column: 2;\n text-align: start;\n }\n}\n\n[data-gr-timeline][data-orientation='horizontal'] [data-gr-timeline-list] {\n display: flex;\n flex-direction: row;\n overflow-x: auto;\n}\n\n[data-gr-timeline][data-orientation='horizontal'] [data-gr-timeline-item] {\n grid-template-columns: 1fr;\n min-width: var(--gr-timeline-item-min-width, 12rem);\n padding-inline-end: var(--gr-timeline-gap, 0.75rem);\n}\n\n[data-gr-timeline][data-orientation='horizontal'] [data-gr-timeline-content] {\n padding-bottom: 0;\n}\n\n[data-gr-timeline][data-orientation='horizontal'] [data-gr-timeline-rail] {\n flex-direction: row;\n align-items: center;\n align-self: auto;\n padding-top: 0;\n padding-bottom: 0.25rem;\n}\n\n[data-gr-timeline][data-orientation='horizontal'] [data-gr-timeline-line] {\n width: auto;\n height: var(--gr-timeline-axis-width, 2px);\n min-width: var(--gr-timeline-line-min, 0.75rem);\n min-height: 0;\n margin-top: 0;\n margin-inline-start: 0.25rem;\n}\n\n[data-gr-timeline][data-orientation='horizontal'] [data-gr-timeline-item]:has(+ [data-gr-timeline-item][data-pending]) [data-gr-timeline-line],\n[data-gr-timeline][data-orientation='horizontal'] [data-gr-timeline-item][data-pending] [data-gr-timeline-line] {\n background-image: repeating-linear-gradient(\n to right,\n var(--gr-timeline-axis-color, var(--gr-brd)) 0 var(--gr-timeline-dash, 4px),\n transparent var(--gr-timeline-dash, 4px) calc(var(--gr-timeline-dash, 4px) * 2)\n );\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed, inject, useSlots } from 'vue'\n\nimport { GR_TIMELINE_CONTEXT } from './grTimelineContext'\nimport {\n descriptionClass,\n grTimelineDensityClass,\n grTimelineMarkerClass,\n timeClass,\n titleClass,\n type GrTimelineMarkerVariant,\n type GrTimelineTone,\n} from './grTimelineStyles'\n\nexport type { GrTimelineMarkerVariant, GrTimelineTone } from './grTimelineStyles'\n\nexport interface GrTimelineItemProps {\n /** Метка времени. Слот `#time` сильнее. */\n time?: string\n /** Машиночитаемое значение метки: попадает в `datetime` тега `<time>`. */\n datetime?: string\n /** Заголовок события. Слот `#title` сильнее. */\n title?: string\n /** Пояснение под заголовком. Слот `#description` сильнее. */\n description?: string\n /** Цвет маркера из палитры пакета. */\n tone?: GrTimelineTone\n /** Заполненная точка — событие случилось, полая — запланировано. */\n variant?: GrTimelineMarkerVariant\n /**\n * Событие ещё не произошло: точка полая, а отрезок оси **после** неё —\n * пунктирный. Перебивает `variant`.\n */\n pending?: boolean\n}\n\nconst props = withDefaults(defineProps<GrTimelineItemProps>(), {\n time: undefined,\n datetime: undefined,\n title: undefined,\n description: undefined,\n tone: 'neutral',\n variant: 'filled',\n pending: false,\n})\n\ndefineSlots<{\n /** Содержимое события под заголовком и описанием. */\n default?: () => any\n /** Маркер вместо точки: иконка статуса, аватар автора, номер шага. */\n marker?: () => any\n /** Метка времени. */\n time?: () => any\n /** Заголовок события. */\n title?: () => any\n /** Пояснение под заголовком. */\n description?: () => any\n}>()\n\nconst slots = useSlots()\n\n/**\n * Раскладку пункт читает из контейнера. Вне `GrTimeline` — дефолты: пункт\n * остаётся рабочей строкой, а не падает.\n */\nconst timeline = inject(GR_TIMELINE_CONTEXT, null)\n\nconst layout = computed(() => timeline?.layout.value ?? 'stacked')\nconst density = computed(() => timeline?.density.value ?? 'regular')\n\nconst markerClass = computed(() => grTimelineMarkerClass(\n props.tone,\n props.pending ? 'outlined' : props.variant,\n))\n\nconst hasTime = computed(() => !!slots.time || !!props.time)\nconst hasTitle = computed(() => !!slots.title || !!props.title)\nconst hasDescription = computed(() => !!slots.description || !!props.description)\n\n/** В `layout=\"time\"` метка уезжает в свою колонку, во всех остальных — в содержимое. */\nconst timeInAside = computed(() => layout.value === 'time')\n</script>\n\n<template>\n <li\n data-gr-timeline-item\n :data-tone=\"tone\"\n :data-pending=\"pending ? '' : undefined\"\n >\n <div\n v-if=\"timeInAside\"\n data-gr-timeline-aside\n >\n <time\n v-if=\"hasTime\"\n :datetime=\"datetime\"\n :class=\"timeClass\"\n >\n <slot name=\"time\">{{ time }}</slot>\n </time>\n </div>\n\n <!-- Ось и точка декоративны: смысл события несёт текст рядом. -->\n <div\n data-gr-timeline-rail\n aria-hidden=\"true\"\n >\n <slot name=\"marker\">\n <span data-gr-timeline-marker :class=\"markerClass\" />\n </slot>\n <span data-gr-timeline-line />\n </div>\n\n <!--\n Вертикальный отступ живёт на содержимом, а не на строке: ось растянута по\n строке грид-ячейкой, и её поля в высоту ячейки не входят — линия обрывалась\n бы, не доходя до следующей точки.\n -->\n <div data-gr-timeline-content :class=\"grTimelineDensityClass(density)\">\n <time\n v-if=\"hasTime && !timeInAside\"\n data-gr-timeline-time\n :datetime=\"datetime\"\n :class=\"timeClass\"\n >\n <slot name=\"time\">{{ time }}</slot>\n </time>\n\n <div v-if=\"hasTitle\" data-gr-timeline-title :class=\"titleClass\">\n <slot name=\"title\">\n{{ title }}\n</slot>\n </div>\n\n <div v-if=\"hasDescription\" :class=\"descriptionClass\">\n <slot name=\"description\">\n{{ description }}\n</slot>\n </div>\n\n <div v-if=\"$slots.default\" data-gr-timeline-body>\n <slot />\n </div>\n </div>\n </li>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, inject, useSlots } from 'vue'\n\nimport { GR_TIMELINE_CONTEXT } from './grTimelineContext'\nimport {\n descriptionClass,\n grTimelineDensityClass,\n grTimelineMarkerClass,\n timeClass,\n titleClass,\n type GrTimelineMarkerVariant,\n type GrTimelineTone,\n} from './grTimelineStyles'\n\nexport type { GrTimelineMarkerVariant, GrTimelineTone } from './grTimelineStyles'\n\nexport interface GrTimelineItemProps {\n /** Метка времени. Слот `#time` сильнее. */\n time?: string\n /** Машиночитаемое значение метки: попадает в `datetime` тега `<time>`. */\n datetime?: string\n /** Заголовок события. Слот `#title` сильнее. */\n title?: string\n /** Пояснение под заголовком. Слот `#description` сильнее. */\n description?: string\n /** Цвет маркера из палитры пакета. */\n tone?: GrTimelineTone\n /** Заполненная точка — событие случилось, полая — запланировано. */\n variant?: GrTimelineMarkerVariant\n /**\n * Событие ещё не произошло: точка полая, а отрезок оси **после** неё —\n * пунктирный. Перебивает `variant`.\n */\n pending?: boolean\n}\n\nconst props = withDefaults(defineProps<GrTimelineItemProps>(), {\n time: undefined,\n datetime: undefined,\n title: undefined,\n description: undefined,\n tone: 'neutral',\n variant: 'filled',\n pending: false,\n})\n\ndefineSlots<{\n /** Содержимое события под заголовком и описанием. */\n default?: () => any\n /** Маркер вместо точки: иконка статуса, аватар автора, номер шага. */\n marker?: () => any\n /** Метка времени. */\n time?: () => any\n /** Заголовок события. */\n title?: () => any\n /** Пояснение под заголовком. */\n description?: () => any\n}>()\n\nconst slots = useSlots()\n\n/**\n * Раскладку пункт читает из контейнера. Вне `GrTimeline` — дефолты: пункт\n * остаётся рабочей строкой, а не падает.\n */\nconst timeline = inject(GR_TIMELINE_CONTEXT, null)\n\nconst layout = computed(() => timeline?.layout.value ?? 'stacked')\nconst density = computed(() => timeline?.density.value ?? 'regular')\n\nconst markerClass = computed(() => grTimelineMarkerClass(\n props.tone,\n props.pending ? 'outlined' : props.variant,\n))\n\nconst hasTime = computed(() => !!slots.time || !!props.time)\nconst hasTitle = computed(() => !!slots.title || !!props.title)\nconst hasDescription = computed(() => !!slots.description || !!props.description)\n\n/** В `layout=\"time\"` метка уезжает в свою колонку, во всех остальных — в содержимое. */\nconst timeInAside = computed(() => layout.value === 'time')\n</script>\n\n<template>\n <li\n data-gr-timeline-item\n :data-tone=\"tone\"\n :data-pending=\"pending ? '' : undefined\"\n >\n <div\n v-if=\"timeInAside\"\n data-gr-timeline-aside\n >\n <time\n v-if=\"hasTime\"\n :datetime=\"datetime\"\n :class=\"timeClass\"\n >\n <slot name=\"time\">{{ time }}</slot>\n </time>\n </div>\n\n <!-- Ось и точка декоративны: смысл события несёт текст рядом. -->\n <div\n data-gr-timeline-rail\n aria-hidden=\"true\"\n >\n <slot name=\"marker\">\n <span data-gr-timeline-marker :class=\"markerClass\" />\n </slot>\n <span data-gr-timeline-line />\n </div>\n\n <!--\n Вертикальный отступ живёт на содержимом, а не на строке: ось растянута по\n строке грид-ячейкой, и её поля в высоту ячейки не входят — линия обрывалась\n бы, не доходя до следующей точки.\n -->\n <div data-gr-timeline-content :class=\"grTimelineDensityClass(density)\">\n <time\n v-if=\"hasTime && !timeInAside\"\n data-gr-timeline-time\n :datetime=\"datetime\"\n :class=\"timeClass\"\n >\n <slot name=\"time\">{{ time }}</slot>\n </time>\n\n <div v-if=\"hasTitle\" data-gr-timeline-title :class=\"titleClass\">\n <slot name=\"title\">\n{{ title }}\n</slot>\n </div>\n\n <div v-if=\"hasDescription\" :class=\"descriptionClass\">\n <slot name=\"description\">\n{{ description }}\n</slot>\n </div>\n\n <div v-if=\"$slots.default\" data-gr-timeline-body>\n <slot />\n </div>\n </div>\n </li>\n</template>\n"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { i as GR_TIMELINE_HEADING_LEVELS, n as GrTimeline_default, r as groupTimelineItems, t as GrTimelineItem_default } from "./chunks/GrTimeline-CE9b3s18.js";
2
+ import { n as grTimelineSafelist, t as grTimelineConfig } from "../../chunks/config-Cw6TDzWv2.js";
3
+ export { GR_TIMELINE_HEADING_LEVELS, GrTimeline_default as GrTimeline, GrTimeline_default as default, GrTimelineItem_default as GrTimelineItem, grTimelineConfig, grTimelineSafelist, groupTimelineItems };
@@ -0,0 +1 @@
1
+ [data-gr-timeline]{--gr-timeline-columns:auto 1fr}[data-gr-timeline][data-layout=time]{--gr-timeline-columns:var(--gr-timeline-time-width,5.5rem) auto 1fr}[data-gr-timeline][data-layout=alternate]{--gr-timeline-columns:1fr auto 1fr}[data-gr-timeline-list]{margin:0;padding:0;list-style:none}[data-gr-timeline-item],[data-gr-timeline-group-header]{grid-template-columns:var(--gr-timeline-columns);column-gap:var(--gr-timeline-gap,.75rem);align-items:start;display:grid}[data-gr-timeline-aside]{text-align:end}[data-gr-timeline-rail]{padding-top:var(--gr-timeline-marker-top,.35rem);flex-direction:column;align-self:stretch;align-items:center;display:flex}[data-gr-timeline-rail]>:first-child{flex:none}[data-gr-timeline-marker]{box-sizing:border-box;width:var(--gr-timeline-marker-size,10px);height:var(--gr-timeline-marker-size,10px);border-width:var(--gr-timeline-marker-ring,2px);border-style:solid;border-color:#0000}[data-gr-timeline-line]{width:var(--gr-timeline-axis-width,2px);min-height:var(--gr-timeline-line-min,.75rem);margin-top:.25rem;margin-bottom:calc(-1 * var(--gr-timeline-marker-top,.35rem));background-color:var(--gr-timeline-axis-color,var(--gr-brd));flex:auto}[data-gr-timeline-item]:has(+[data-gr-timeline-item][data-pending]) [data-gr-timeline-line],[data-gr-timeline-item][data-pending] [data-gr-timeline-line]{background-color:#0000;background-image:repeating-linear-gradient(to bottom, var(--gr-timeline-axis-color,var(--gr-brd)) 0 var(--gr-timeline-dash,4px), transparent var(--gr-timeline-dash,4px) calc(var(--gr-timeline-dash,4px) * 2))}[data-gr-timeline-item]:last-child [data-gr-timeline-line]{visibility:hidden}[data-gr-timeline-group]:not(:last-of-type) [data-gr-timeline-item]:last-child [data-gr-timeline-line]{visibility:visible}[data-gr-timeline-group-header] [data-gr-timeline-rail]{padding-top:0}[data-gr-timeline-group]+[data-gr-timeline-group] [data-gr-timeline-group-header]{padding-top:.5rem}[data-gr-timeline-group-header] [data-gr-timeline-line]{margin-top:0}[data-gr-timeline-group]:first-of-type [data-gr-timeline-group-header] [data-gr-timeline-line]{visibility:hidden}[data-gr-timeline][data-layout=time] [data-gr-timeline-group-header] [data-gr-timeline-rail],[data-gr-timeline][data-layout=alternate] [data-gr-timeline-group-header] [data-gr-timeline-rail]{grid-column:2}[data-gr-timeline][data-layout=time] [data-gr-timeline-group-title],[data-gr-timeline][data-layout=alternate] [data-gr-timeline-group-title]{grid-column:3}[data-gr-timeline][data-layout=alternate] [data-gr-timeline-rail]{grid-column:2}[data-gr-timeline][data-layout=alternate] [data-gr-timeline-content]{grid-column:3}[data-gr-timeline][data-layout=alternate] [data-gr-timeline-item]:nth-child(2n) [data-gr-timeline-content]{text-align:end;grid-area:1/1}@media (width<=640px){[data-gr-timeline][data-layout=alternate]{--gr-timeline-columns:auto 1fr}[data-gr-timeline][data-layout=alternate] [data-gr-timeline-rail],[data-gr-timeline][data-layout=alternate] [data-gr-timeline-group-header] [data-gr-timeline-rail]{grid-column:1}[data-gr-timeline][data-layout=alternate] [data-gr-timeline-content],[data-gr-timeline][data-layout=alternate] [data-gr-timeline-item]:nth-child(2n) [data-gr-timeline-content],[data-gr-timeline][data-layout=alternate] [data-gr-timeline-group-title]{text-align:start;grid-column:2}}[data-gr-timeline][data-orientation=horizontal] [data-gr-timeline-list]{flex-direction:row;display:flex;overflow-x:auto}[data-gr-timeline][data-orientation=horizontal] [data-gr-timeline-item]{min-width:var(--gr-timeline-item-min-width,12rem);grid-template-columns:1fr;padding-inline-end:var(--gr-timeline-gap,.75rem)}[data-gr-timeline][data-orientation=horizontal] [data-gr-timeline-content]{padding-bottom:0}[data-gr-timeline][data-orientation=horizontal] [data-gr-timeline-rail]{flex-direction:row;align-self:auto;align-items:center;padding-top:0;padding-bottom:.25rem}[data-gr-timeline][data-orientation=horizontal] [data-gr-timeline-line]{width:auto;height:var(--gr-timeline-axis-width,2px);min-width:var(--gr-timeline-line-min,.75rem);margin-top:0;min-height:0;margin-inline-start:.25rem}[data-gr-timeline][data-orientation=horizontal] [data-gr-timeline-item]:has(+[data-gr-timeline-item][data-pending]) [data-gr-timeline-line],[data-gr-timeline][data-orientation=horizontal] [data-gr-timeline-item][data-pending] [data-gr-timeline-line]{background-image:repeating-linear-gradient(to right, var(--gr-timeline-axis-color,var(--gr-brd)) 0 var(--gr-timeline-dash,4px), transparent var(--gr-timeline-dash,4px) calc(var(--gr-timeline-dash,4px) * 2))}