@feugene/granularity 0.48.0 → 0.50.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (418) hide show
  1. package/README.md +3 -3
  2. package/dist/chunks/chevron-up-BhW6hi8L.js +23 -0
  3. package/dist/chunks/chevron-up-BhW6hi8L.js.map +1 -0
  4. package/dist/chunks/{config-E1cTyRVV.js → config-8n1VR0ju.js} +1 -1
  5. package/dist/chunks/{config-E1cTyRVV.js.map → config-8n1VR0ju.js.map} +1 -1
  6. package/dist/chunks/{config-2vrOFn2f.js → config-AKpLyIGD.js} +2 -2
  7. package/dist/chunks/{config-2vrOFn2f.js.map → config-AKpLyIGD.js.map} +1 -1
  8. package/dist/chunks/{config-DIDz_E5m.js → config-B34mkd53.js} +66 -1
  9. package/dist/chunks/config-B34mkd53.js.map +1 -0
  10. package/dist/chunks/{config-B5SBUa6u.js → config-B7qZqiUB.js} +28 -1
  11. package/dist/chunks/config-B7qZqiUB.js.map +1 -0
  12. package/dist/chunks/config-BBrPUEye.js +8 -0
  13. package/dist/chunks/config-BBrPUEye.js.map +1 -0
  14. package/dist/chunks/config-BBtBQE3s.js +108 -0
  15. package/dist/chunks/config-BBtBQE3s.js.map +1 -0
  16. package/dist/chunks/{config-CT4lP6S4.js → config-BOCzHqWh.js} +2 -2
  17. package/dist/chunks/{config-CT4lP6S4.js.map → config-BOCzHqWh.js.map} +1 -1
  18. package/dist/chunks/{config-iemgzS4x.js → config-BP1ktzwh.js} +2 -24
  19. package/dist/chunks/config-BP1ktzwh.js.map +1 -0
  20. package/dist/chunks/config-BTxmdRzT.js +28 -0
  21. package/dist/chunks/config-BTxmdRzT.js.map +1 -0
  22. package/dist/chunks/{config-CjWOTgLL.js → config-Bk52xd5l.js} +12 -5
  23. package/dist/chunks/config-Bk52xd5l.js.map +1 -0
  24. package/dist/chunks/{config-D3HOuHDe.js → config-C3SqBqSQ.js} +3 -1
  25. package/dist/chunks/config-C3SqBqSQ.js.map +1 -0
  26. package/dist/chunks/{config-2ZHRsdOc.js → config-C3uqd-sW.js} +1 -1
  27. package/dist/chunks/config-C3uqd-sW.js.map +1 -0
  28. package/dist/chunks/{config-BXRmsn3t.js → config-CPhcZzHi.js} +72 -10
  29. package/dist/chunks/config-CPhcZzHi.js.map +1 -0
  30. package/dist/chunks/config-CWtfxkM9.js.map +1 -1
  31. package/dist/chunks/{config--t2dxj0t.js → config-CmLTCmY9.js} +2 -2
  32. package/dist/chunks/{config--t2dxj0t.js.map → config-CmLTCmY9.js.map} +1 -1
  33. package/dist/chunks/{config-BAse0laT.js → config-CvtqB4ki.js} +8 -3
  34. package/dist/chunks/config-CvtqB4ki.js.map +1 -0
  35. package/dist/chunks/{config-BcXX7S7B.js → config-D-JgqV0J.js} +5 -1
  36. package/dist/chunks/{config-BcXX7S7B.js.map → config-D-JgqV0J.js.map} +1 -1
  37. package/dist/chunks/{config-BHLMTJaR.js → config-D1oVht-E.js} +8 -3
  38. package/dist/chunks/config-D1oVht-E.js.map +1 -0
  39. package/dist/chunks/{config-BscVxZR3.js → config-DF1ezU6y.js} +1 -1
  40. package/dist/chunks/{config-BscVxZR3.js.map → config-DF1ezU6y.js.map} +1 -1
  41. package/dist/chunks/{config-B42iJ48O.js → config-DG41PD9i.js} +13 -1
  42. package/dist/chunks/config-DG41PD9i.js.map +1 -0
  43. package/dist/chunks/{config-Bs1HwUcx.js → config-DPJ3jtiB.js} +12 -2
  44. package/dist/chunks/config-DPJ3jtiB.js.map +1 -0
  45. package/dist/chunks/{config-tNqtapcT.js → config-DpqjlCfB.js} +2 -2
  46. package/dist/chunks/{config-tNqtapcT.js.map → config-DpqjlCfB.js.map} +1 -1
  47. package/dist/chunks/{config-DNDgp9bB.js → config-DpzFoSIh.js} +64 -2
  48. package/dist/chunks/config-DpzFoSIh.js.map +1 -0
  49. package/dist/chunks/config-MUkhktTP.js +267 -0
  50. package/dist/chunks/config-MUkhktTP.js.map +1 -0
  51. package/dist/chunks/config-SPugeaHT.js +37 -0
  52. package/dist/chunks/config-SPugeaHT.js.map +1 -0
  53. package/dist/chunks/{en-Bxyn5lW7.js → en-mIFywnV2.js} +27 -7
  54. package/dist/chunks/en-mIFywnV2.js.map +1 -0
  55. package/dist/chunks/{es-Dtl-a7ui.js → es-CvthYwtB.js} +27 -7
  56. package/dist/chunks/es-CvthYwtB.js.map +1 -0
  57. package/dist/chunks/{es-Bj_vc18Z.js → es-DlGd6Mrj.js} +3 -3
  58. package/dist/chunks/{es-Bj_vc18Z.js.map → es-DlGd6Mrj.js.map} +1 -1
  59. package/dist/chunks/{generated-hELWB0gZ.js → generated-Cx4C7GRN.js} +126 -0
  60. package/dist/chunks/{generated-hELWB0gZ.js.map → generated-Cx4C7GRN.js.map} +1 -1
  61. package/dist/chunks/{grBadgeStyles-DV0DrAew.js → grBadgeStyles-D51AXbj5.js} +57 -1
  62. package/dist/chunks/grBadgeStyles-D51AXbj5.js.map +1 -0
  63. package/dist/chunks/{grChipStyles-DcDyxAL0.js → grChipStyles-CA9Wj1_E.js} +1 -1
  64. package/dist/chunks/{grChipStyles-DcDyxAL0.js.map → grChipStyles-CA9Wj1_E.js.map} +1 -1
  65. package/dist/chunks/{grPopoverStyles-CYAeO3Ov.js → grPopoverStyles-CncEkiPu.js} +1 -1
  66. package/dist/chunks/{grPopoverStyles-CYAeO3Ov.js.map → grPopoverStyles-CncEkiPu.js.map} +1 -1
  67. package/dist/chunks/{grSelectStyles-D9EQ-pgK.js → grSelectStyles-Cam-IG9s.js} +3 -2
  68. package/dist/chunks/grSelectStyles-Cam-IG9s.js.map +1 -0
  69. package/dist/chunks/{grSliderStyles-kaz6VXZ3.js → grSliderStyles-CqzV0hll.js} +1 -1
  70. package/dist/chunks/grSliderStyles-CqzV0hll.js.map +1 -0
  71. package/dist/chunks/{config-CbEbLyDE.js → grSortableListStyles-CxieDmpe.js} +1 -27
  72. package/dist/chunks/grSortableListStyles-CxieDmpe.js.map +1 -0
  73. package/dist/chunks/grTableStyles-CPSxDTOW.js +66 -0
  74. package/dist/chunks/grTableStyles-CPSxDTOW.js.map +1 -0
  75. package/dist/chunks/{config-CMNfZO7S.js → grTabsStyles-DIz2VdIm.js} +1 -36
  76. package/dist/chunks/grTabsStyles-DIz2VdIm.js.map +1 -0
  77. package/dist/chunks/grTooltipStyles-CtbGEEGV.js +24 -0
  78. package/dist/chunks/grTooltipStyles-CtbGEEGV.js.map +1 -0
  79. package/dist/chunks/{granular-provider-BOQp7N5o.js → granular-provider-cv5vaM1a.js} +26 -22
  80. package/dist/chunks/granular-provider-cv5vaM1a.js.map +1 -0
  81. package/dist/chunks/hotkeySequence-BTHIM_5A.js +46 -0
  82. package/dist/chunks/hotkeySequence-BTHIM_5A.js.map +1 -0
  83. package/dist/chunks/{keyboard-DE2yhz_b.js → keyboard-BiFSgWLt.js} +70 -1
  84. package/dist/chunks/keyboard-BiFSgWLt.js.map +1 -0
  85. package/dist/chunks/optionPanel-DvY7Tv_4.js +182 -0
  86. package/dist/chunks/optionPanel-DvY7Tv_4.js.map +1 -0
  87. package/dist/chunks/overlayListPanel-D91jBCHU.js +21 -0
  88. package/dist/chunks/overlayListPanel-D91jBCHU.js.map +1 -0
  89. package/dist/chunks/{overlayStack-DH4Z7am1.js → overlayStack-DCkCgXZP.js} +1 -1
  90. package/dist/chunks/{overlayStack-DH4Z7am1.js.map → overlayStack-DCkCgXZP.js.map} +1 -1
  91. package/dist/chunks/{overlayPanelSurface-BKeMhRx4.js → overlayTransition-C0FDMx7Q.js} +24 -24
  92. package/dist/chunks/overlayTransition-C0FDMx7Q.js.map +1 -0
  93. package/dist/chunks/{ru-hrB4I1u_.js → ru-CQKDR-kD.js} +27 -7
  94. package/dist/chunks/ru-CQKDR-kD.js.map +1 -0
  95. package/dist/chunks/{safelist-x8USecK8.js → safelist-CSfynUC1.js} +5 -1
  96. package/dist/chunks/safelist-CSfynUC1.js.map +1 -0
  97. package/dist/chunks/{useMenuItemsFocus-B7Bl_aFA.js → useMenuItemsFocus-C031blYS.js} +1 -1
  98. package/dist/chunks/{useMenuItemsFocus-B7Bl_aFA.js.map → useMenuItemsFocus-C031blYS.js.map} +1 -1
  99. package/dist/chunks/{useModalOverlay-ACRkflzx.js → useModalOverlay-CKCQkGdB.js} +1 -1
  100. package/dist/chunks/{useModalOverlay-ACRkflzx.js.map → useModalOverlay-CKCQkGdB.js.map} +1 -1
  101. package/dist/components/GrAutocomplete/chunks/{GrAutocomplete-C-uovdv8.js → GrAutocomplete-Cyr1-ENw.js} +183 -125
  102. package/dist/components/GrAutocomplete/chunks/GrAutocomplete-Cyr1-ENw.js.map +1 -0
  103. package/dist/components/GrAutocomplete/index.js +2 -2
  104. package/dist/components/GrAutocomplete/styles.css +1 -1
  105. package/dist/components/GrBadge/chunks/GrBadge-C42KLyUD.js +71 -0
  106. package/dist/components/GrBadge/chunks/GrBadge-C42KLyUD.js.map +1 -0
  107. package/dist/components/GrBadge/index.js +3 -3
  108. package/dist/components/GrBadge/styles.css +1 -1
  109. package/dist/components/GrCarousel/chunks/{GrCarousel-ByuughtI.js → GrCarousel-CBj-PEPB.js} +186 -37
  110. package/dist/components/GrCarousel/chunks/GrCarousel-CBj-PEPB.js.map +1 -0
  111. package/dist/components/GrCarousel/index.js +2 -2
  112. package/dist/components/GrCarousel/styles.css +1 -1
  113. package/dist/components/GrCheckbox/chunks/{GrCheckbox-Dp201frb.js → GrCheckbox-B4NJc7Ur.js} +2 -1
  114. package/dist/components/GrCheckbox/chunks/GrCheckbox-B4NJc7Ur.js.map +1 -0
  115. package/dist/components/GrCheckbox/index.js +1 -1
  116. package/dist/components/GrCheckboxGroup/chunks/{GrCheckboxGroup-IpqG5qwm.js → GrCheckboxGroup-qZHpNFCX.js} +1 -1
  117. package/dist/components/GrCheckboxGroup/chunks/{GrCheckboxGroup-IpqG5qwm.js.map → GrCheckboxGroup-qZHpNFCX.js.map} +1 -1
  118. package/dist/components/GrCheckboxGroup/index.js +1 -1
  119. package/dist/components/GrChip/chunks/{GrChip-CKqyzYcv.js → GrChip-DoyS1Dr4.js} +1 -1
  120. package/dist/components/GrChip/chunks/{GrChip-CKqyzYcv.js.map → GrChip-DoyS1Dr4.js.map} +1 -1
  121. package/dist/components/GrChip/index.js +2 -2
  122. package/dist/components/GrColorPicker/chunks/{GrColorPicker-BRM_4lyI.js → GrColorPicker-vGSgpUV9.js} +353 -38
  123. package/dist/components/GrColorPicker/chunks/GrColorPicker-vGSgpUV9.js.map +1 -0
  124. package/dist/components/GrColorPicker/index.js +2 -2
  125. package/dist/components/GrColorPicker/styles.css +1 -1
  126. package/dist/components/GrCommandPalette/chunks/{GrCommandPalette-BJHmkDQv.js → GrCommandPalette-CAHgj0Aa.js} +23 -7
  127. package/dist/components/GrCommandPalette/chunks/GrCommandPalette-CAHgj0Aa.js.map +1 -0
  128. package/dist/components/GrCommandPalette/index.js +1 -1
  129. package/dist/components/GrCommandPalette/styles.css +1 -1
  130. package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-BzUQwbec.js → GrConfirmDialog-dg021BMd.js} +1 -1
  131. package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-BzUQwbec.js.map → GrConfirmDialog-dg021BMd.js.map} +1 -1
  132. package/dist/components/GrConfirmDialog/index.js +1 -1
  133. package/dist/components/GrContextMenu/chunks/{GrContextMenu-RpxMHQXH.js → GrContextMenu-bQ1Vvy2c.js} +3 -3
  134. package/dist/components/GrContextMenu/chunks/{GrContextMenu-RpxMHQXH.js.map → GrContextMenu-bQ1Vvy2c.js.map} +1 -1
  135. package/dist/components/GrContextMenu/index.js +1 -1
  136. package/dist/components/GrDataTable/chunks/{GrDataTable-DQxYYgQk.js → GrDataTable-Bb2jWnRG.js} +576 -136
  137. package/dist/components/GrDataTable/chunks/GrDataTable-Bb2jWnRG.js.map +1 -0
  138. package/dist/components/GrDataTable/index.js +2 -2
  139. package/dist/components/GrDelta/chunks/{GrDelta-CgTvfoIN.js → GrDelta-BSv1KdMy.js} +0 -0
  140. package/dist/components/GrDelta/chunks/{GrDelta-CgTvfoIN.js.map → GrDelta-BSv1KdMy.js.map} +1 -1
  141. package/dist/components/GrDelta/index.js +2 -2
  142. package/dist/components/GrDialog/chunks/{GrDialog-DDz_OEhk.js → GrDialog-C9Zu72jB.js} +1 -1
  143. package/dist/components/GrDialog/chunks/{GrDialog-DDz_OEhk.js.map → GrDialog-C9Zu72jB.js.map} +1 -1
  144. package/dist/components/GrDialog/index.js +1 -1
  145. package/dist/components/GrDialogService/chunks/{GrDialogService-Dtq0ZCN5.js → GrDialogService-DLBifO61.js} +2 -2
  146. package/dist/components/GrDialogService/chunks/{GrDialogService-Dtq0ZCN5.js.map → GrDialogService-DLBifO61.js.map} +1 -1
  147. package/dist/components/GrDialogService/index.js +1 -1
  148. package/dist/components/GrDrawer/chunks/{GrDrawer-CNpSMuN-.js → GrDrawer-DOcRTE8G.js} +1 -1
  149. package/dist/components/GrDrawer/chunks/{GrDrawer-CNpSMuN-.js.map → GrDrawer-DOcRTE8G.js.map} +1 -1
  150. package/dist/components/GrDrawer/index.js +1 -1
  151. package/dist/components/GrDropdown/chunks/{GrDropdown-cLZuZMEY.js → GrDropdown-kxwmgfSe.js} +2 -2
  152. package/dist/components/GrDropdown/chunks/{GrDropdown-cLZuZMEY.js.map → GrDropdown-kxwmgfSe.js.map} +1 -1
  153. package/dist/components/GrDropdown/index.js +2 -2
  154. package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu-Dxkz_ry4.js → GrDropdownMenu--VoK3VY0.js} +3 -34
  155. package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu--VoK3VY0.js.map +1 -0
  156. package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-CkM3BFPL.js +34 -0
  157. package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-CkM3BFPL.js.map +1 -0
  158. package/dist/components/GrDropdownMenu/index.js +2 -1
  159. package/dist/components/GrEmptyState/chunks/{GrEmptyState-BbvwE-E0.js → GrEmptyState-Bz6-_ED4.js} +42 -6
  160. package/dist/components/GrEmptyState/chunks/GrEmptyState-Bz6-_ED4.js.map +1 -0
  161. package/dist/components/GrEmptyState/index.js +1 -1
  162. package/dist/components/GrFileUpload/chunks/{GrFileUpload-BwMR71zN.js → GrFileUpload-Bgdfnkd8.js} +5 -2
  163. package/dist/components/GrFileUpload/chunks/GrFileUpload-Bgdfnkd8.js.map +1 -0
  164. package/dist/components/GrFileUpload/index.js +1 -1
  165. package/dist/components/GrFormFile/chunks/{GrFormFile-Dlxx-9zi.js → GrFormFile-Ctq1isz-.js} +78 -11
  166. package/dist/components/GrFormFile/chunks/GrFormFile-Ctq1isz-.js.map +1 -0
  167. package/dist/components/GrFormFile/index.js +2 -2
  168. package/dist/components/GrFormFile/styles.css +1 -1
  169. package/dist/components/GrImageViewer/chunks/{GrImageViewer-DK-iVHHC.js → GrImageViewer-Bnql_dNP.js} +1 -1
  170. package/dist/components/GrImageViewer/chunks/{GrImageViewer-DK-iVHHC.js.map → GrImageViewer-Bnql_dNP.js.map} +1 -1
  171. package/dist/components/GrImageViewer/index.js +1 -1
  172. package/dist/components/GrInput/chunks/{GrInput-DV4gMWPR.js → GrInput-CoaFLpaU.js} +43 -22
  173. package/dist/components/GrInput/chunks/GrInput-CoaFLpaU.js.map +1 -0
  174. package/dist/components/GrInput/index.js +1 -1
  175. package/dist/components/GrInputTag/chunks/{GrInputTag-CO0YU-ok.js → GrInputTag-BzzNRBe3.js} +247 -20
  176. package/dist/components/GrInputTag/chunks/GrInputTag-BzzNRBe3.js.map +1 -0
  177. package/dist/components/GrInputTag/index.js +2 -2
  178. package/dist/components/GrJsonViewer/chunks/{GrJsonViewer-D7CyWzhT.js → GrJsonViewer-B6ZJ3GFH.js} +2 -2
  179. package/dist/components/GrJsonViewer/chunks/{GrJsonViewer-D7CyWzhT.js.map → GrJsonViewer-B6ZJ3GFH.js.map} +1 -1
  180. package/dist/components/GrJsonViewer/index.js +1 -1
  181. package/dist/components/GrKbd/chunks/{GrKbd-BNMeoaLV.js → GrKbd-D2rHDkQv.js} +42 -37
  182. package/dist/components/GrKbd/chunks/GrKbd-D2rHDkQv.js.map +1 -0
  183. package/dist/components/GrKbd/index.js +1 -1
  184. package/dist/components/GrModal/chunks/{GrModal-Cm0mtSXk.js → GrModal-SHb1U2qx.js} +1 -1
  185. package/dist/components/GrModal/chunks/{GrModal-Cm0mtSXk.js.map → GrModal-SHb1U2qx.js.map} +1 -1
  186. package/dist/components/GrModal/index.js +1 -1
  187. package/dist/components/GrNavbar/chunks/{GrNavbar-BRGuksiy.js → GrNavbar-IEIHC5Vt.js} +10 -4
  188. package/dist/components/GrNavbar/chunks/GrNavbar-IEIHC5Vt.js.map +1 -0
  189. package/dist/components/GrNavbar/index.js +2 -2
  190. package/dist/components/GrNumberInput/chunks/{GrNumberInput-BI6-vkcs.js → GrNumberInput-CmnUDaKi.js} +2 -22
  191. package/dist/components/GrNumberInput/chunks/{GrNumberInput-BI6-vkcs.js.map → GrNumberInput-CmnUDaKi.js.map} +1 -1
  192. package/dist/components/GrNumberInput/index.js +1 -1
  193. package/dist/components/GrOtpInput/chunks/GrOtpInput-B_Q-RDLw.js +419 -0
  194. package/dist/components/GrOtpInput/chunks/GrOtpInput-B_Q-RDLw.js.map +1 -0
  195. package/dist/components/GrOtpInput/index.js +3 -0
  196. package/dist/components/GrOtpInput/styles.css +1 -0
  197. package/dist/components/GrPagination/chunks/{GrPagination-BbaF5eXk.js → GrPagination-AMbn5D8I.js} +1 -1
  198. package/dist/components/GrPagination/chunks/{GrPagination-BbaF5eXk.js.map → GrPagination-AMbn5D8I.js.map} +1 -1
  199. package/dist/components/GrPagination/index.js +1 -1
  200. package/dist/components/GrPopover/chunks/{GrPopover-CcWvr1ZA.js → GrPopover-DjVxt8bf.js} +3 -3
  201. package/dist/components/GrPopover/chunks/{GrPopover-CcWvr1ZA.js.map → GrPopover-DjVxt8bf.js.map} +1 -1
  202. package/dist/components/GrPopover/index.js +2 -2
  203. package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-BEL-QgwE.js → GrPromptDialog-BhbIZP1f.js} +3 -3
  204. package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-BEL-QgwE.js.map → GrPromptDialog-BhbIZP1f.js.map} +1 -1
  205. package/dist/components/GrPromptDialog/index.js +1 -1
  206. package/dist/components/GrSelect/chunks/{GrSelect-0iI4wdR_.js → GrSelect-B-ykrHpL.js} +26 -182
  207. package/dist/components/GrSelect/chunks/GrSelect-B-ykrHpL.js.map +1 -0
  208. package/dist/components/GrSelect/index.js +2 -2
  209. package/dist/components/GrSelect/styles.css +1 -1
  210. package/dist/components/GrSidebar/chunks/GrSidebar-jVvoLGDO.js +543 -0
  211. package/dist/components/GrSidebar/chunks/GrSidebar-jVvoLGDO.js.map +1 -0
  212. package/dist/components/GrSidebar/index.js +2 -2
  213. package/dist/components/GrSlider/chunks/{GrSlider-CO8N9SF6.js → GrSlider-DF2Cq0rV.js} +29 -4
  214. package/dist/components/GrSlider/chunks/GrSlider-DF2Cq0rV.js.map +1 -0
  215. package/dist/components/GrSlider/index.js +2 -2
  216. package/dist/components/GrSortableList/chunks/{GrSortableList-NKriuGm_.js → GrSortableList-ChH9nQBv.js} +1 -1
  217. package/dist/components/GrSortableList/chunks/{GrSortableList-NKriuGm_.js.map → GrSortableList-ChH9nQBv.js.map} +1 -1
  218. package/dist/components/GrSortableList/index.js +2 -2
  219. package/dist/components/GrSwitch/chunks/{GrSwitch-CriHWT2A.js → GrSwitch-D7X42uIA.js} +61 -7
  220. package/dist/components/GrSwitch/chunks/GrSwitch-D7X42uIA.js.map +1 -0
  221. package/dist/components/GrSwitch/index.js +2 -2
  222. package/dist/components/GrTabPanels/chunks/GrTabPanels-BDt5oVdd.js +30 -0
  223. package/dist/components/GrTabPanels/chunks/GrTabPanels-BDt5oVdd.js.map +1 -0
  224. package/dist/components/GrTabPanels/chunks/GrTabPanels-BJvAflnA.js +83 -0
  225. package/dist/components/GrTabPanels/chunks/GrTabPanels-BJvAflnA.js.map +1 -0
  226. package/dist/components/GrTabPanels/index.js +2 -1
  227. package/dist/components/GrTable/chunks/{GrTable-CKJ-HrsN.js → GrTable-BQitSDep.js} +52 -16
  228. package/dist/components/GrTable/chunks/GrTable-BQitSDep.js.map +1 -0
  229. package/dist/components/GrTable/index.js +2 -2
  230. package/dist/components/GrTabs/chunks/{GrTabs-s9RzC1WX.js → GrTabs-DVC6nfWB.js} +1 -1
  231. package/dist/components/GrTabs/chunks/{GrTabs-s9RzC1WX.js.map → GrTabs-DVC6nfWB.js.map} +1 -1
  232. package/dist/components/GrTabs/index.js +2 -2
  233. package/dist/components/GrTabsWithPanels/chunks/GrTabsWithPanels-BYtuzouj.js +98 -0
  234. package/dist/components/GrTabsWithPanels/chunks/GrTabsWithPanels-BYtuzouj.js.map +1 -0
  235. package/dist/components/GrTabsWithPanels/index.js +3 -0
  236. package/dist/components/GrTextarea/chunks/{GrTextarea-Bfgc0DD2.js → GrTextarea-BFwyqcHB.js} +22 -5
  237. package/dist/components/GrTextarea/chunks/GrTextarea-BFwyqcHB.js.map +1 -0
  238. package/dist/components/GrTextarea/index.js +1 -1
  239. package/dist/components/GrToaster/chunks/{GrToaster-CZixNk0l.js → GrToaster-OzT1VKcp.js} +163 -32
  240. package/dist/components/GrToaster/chunks/GrToaster-OzT1VKcp.js.map +1 -0
  241. package/dist/components/GrToaster/index.js +2 -2
  242. package/dist/components/GrToaster/styles.css +1 -1
  243. package/dist/components/GrTooltip/chunks/{GrTooltip-DkMMM0uq.js → GrTooltip-BDcFycvW.js} +26 -13
  244. package/dist/components/GrTooltip/chunks/GrTooltip-BDcFycvW.js.map +1 -0
  245. package/dist/components/GrTooltip/index.js +2 -2
  246. package/dist/components/GrTransfer/chunks/{GrTransfer-DdfBUf35.js → GrTransfer-CV7BL5UK.js} +114 -12
  247. package/dist/components/GrTransfer/chunks/GrTransfer-CV7BL5UK.js.map +1 -0
  248. package/dist/components/GrTransfer/index.js +1 -1
  249. package/dist/components/GrTransfer/styles.css +1 -1
  250. package/dist/components/GrTree/chunks/{GrTree-6yZrncJE.js → GrTree-DpgaP8hk.js} +39 -1
  251. package/dist/components/GrTree/chunks/GrTree-DpgaP8hk.js.map +1 -0
  252. package/dist/components/GrTree/index.js +1 -1
  253. package/dist/components/GrTree/styles.css +1 -1
  254. package/dist/components/GrTreeSections/chunks/{GrTreeSections-DcmDcLwj.js → GrTreeSections-BeOj__44.js} +1 -1
  255. package/dist/components/GrTreeSections/chunks/{GrTreeSections-DcmDcLwj.js.map → GrTreeSections-BeOj__44.js.map} +1 -1
  256. package/dist/components/GrTreeSections/index.js +1 -1
  257. package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-B6KoDYiZ.js → GrTreeSelect-BHq-T8wH.js} +113 -14
  258. package/dist/components/GrTreeSelect/chunks/GrTreeSelect-BHq-T8wH.js.map +1 -0
  259. package/dist/components/GrTreeSelect/index.js +2 -2
  260. package/dist/composables/useFloating.js +1 -1
  261. package/dist/composables/useHotkeys.js +89 -0
  262. package/dist/composables/useHotkeys.js.map +1 -0
  263. package/dist/composables/useOverlayLayer.js +1 -1
  264. package/dist/directives/hotkey.js +19 -46
  265. package/dist/directives/hotkey.js.map +1 -1
  266. package/dist/granular-provider-node.js +1 -1
  267. package/dist/granular-provider.js +1 -1
  268. package/dist/i18n/all.js +1 -1
  269. package/dist/i18n/index.js +1 -1
  270. package/dist/index.js +80 -71
  271. package/dist/theme.js +1 -1
  272. package/dist/tokens.js +1 -1
  273. package/dist/types/components/GrAutocomplete/GrAutocomplete.vue.d.ts +4 -4
  274. package/dist/types/components/GrAutocomplete/composables/useAutocompleteNavigation.d.ts +12 -3
  275. package/dist/types/components/GrAutocomplete/composables/useAutocompletePanel.d.ts +12 -2
  276. package/dist/types/components/GrAutocomplete/composables/useAutocompleteValues.d.ts +7 -4
  277. package/dist/types/components/GrAutocomplete/composables/useRemoteOptions.d.ts +4 -4
  278. package/dist/types/components/GrAutocomplete/grAutocompleteStyles.d.ts +15 -1
  279. package/dist/types/components/GrAutocomplete/index.d.ts +1 -1
  280. package/dist/types/components/GrBadge/GrBadge.vue.d.ts +15 -1
  281. package/dist/types/components/GrBadge/grBadgeStyles.d.ts +57 -0
  282. package/dist/types/components/GrBadge/index.d.ts +1 -1
  283. package/dist/types/components/GrCarousel/GrCarousel.vue.d.ts +29 -1
  284. package/dist/types/components/GrCarousel/composables/useCarouselSwipe.d.ts +5 -0
  285. package/dist/types/components/GrCarousel/grCarouselContext.d.ts +21 -0
  286. package/dist/types/components/GrCarousel/grCarouselStyles.d.ts +39 -9
  287. package/dist/types/components/GrCheckbox/GrCheckbox.vue.d.ts +13 -0
  288. package/dist/types/components/GrColorPicker/GrColorPicker.vue.d.ts +18 -2
  289. package/dist/types/components/GrColorPicker/color.d.ts +13 -1
  290. package/dist/types/components/GrColorPicker/colorArea.d.ts +59 -0
  291. package/dist/types/components/GrColorPicker/defaults.d.ts +3 -1
  292. package/dist/types/components/GrColorPicker/eyeDropper.d.ts +21 -0
  293. package/dist/types/components/GrColorPicker/grColorPickerStyles.d.ts +42 -0
  294. package/dist/types/components/GrCommandPalette/GrCommandPalette.vue.d.ts +10 -1
  295. package/dist/types/components/GrDataTable/GrDataTable.vue.d.ts +41 -1
  296. package/dist/types/components/GrDataTable/composables/useDataTableGridNavigation.d.ts +53 -0
  297. package/dist/types/components/GrDataTable/grDataTableStyles.d.ts +8 -0
  298. package/dist/types/components/GrDataTable/index.d.ts +1 -1
  299. package/dist/types/components/GrDelta/grDeltaStyles.d.ts +10 -3
  300. package/dist/types/components/GrEmptyState/GrEmptyState.vue.d.ts +11 -2
  301. package/dist/types/components/GrEmptyState/grEmptyStateStyles.d.ts +10 -0
  302. package/dist/types/components/GrEmptyState/index.d.ts +1 -1
  303. package/dist/types/components/GrFileUpload/GrFileUpload.vue.d.ts +2 -1
  304. package/dist/types/components/GrFormFile/GrFormFile.vue.d.ts +10 -0
  305. package/dist/types/components/GrInput/GrInput.vue.d.ts +15 -0
  306. package/dist/types/components/GrInputTag/GrInputTag.vue.d.ts +16 -0
  307. package/dist/types/components/GrInputTag/grInputTagStyles.d.ts +11 -0
  308. package/dist/types/components/GrKbd/GrKbd.vue.d.ts +14 -0
  309. package/dist/types/components/GrNavbar/GrNavbar.vue.d.ts +18 -0
  310. package/dist/types/components/GrNavbar/grNavbarStyles.d.ts +10 -1
  311. package/dist/types/components/GrNavbar/index.d.ts +1 -0
  312. package/dist/types/components/GrOtpInput/GrOtpInput.vue.d.ts +164 -0
  313. package/dist/types/components/GrOtpInput/config.d.ts +1 -0
  314. package/dist/types/components/GrOtpInput/defaults.d.ts +15 -0
  315. package/dist/types/components/GrOtpInput/grOtpInputStyles.d.ts +62 -0
  316. package/dist/types/components/GrOtpInput/index.d.ts +9 -0
  317. package/dist/types/components/GrOtpInput/otpValue.d.ts +71 -0
  318. package/dist/types/components/GrOtpInput/safelist.d.ts +7 -0
  319. package/dist/types/components/GrSelect/composables/useSelectPanelItems.d.ts +8 -34
  320. package/dist/types/components/GrSelect/composables/useSelectVirtualization.d.ts +7 -0
  321. package/dist/types/components/GrSelect/grSelectStyles.d.ts +1 -1
  322. package/dist/types/components/GrSidebar/GrSidebar.vue.d.ts +20 -0
  323. package/dist/types/components/GrSidebar/GrSidebarItem.vue.d.ts +39 -5
  324. package/dist/types/components/GrSidebar/grSidebarStyles.d.ts +32 -0
  325. package/dist/types/components/GrSidebar/index.d.ts +1 -1
  326. package/dist/types/components/GrSidebar/sidebarContext.d.ts +23 -1
  327. package/dist/types/components/GrSlider/GrSlider.vue.d.ts +39 -1
  328. package/dist/types/components/GrSlider/grSliderStyles.d.ts +1 -1
  329. package/dist/types/components/GrSwitch/GrSwitch.vue.d.ts +42 -4
  330. package/dist/types/components/GrSwitch/defaults.d.ts +2 -0
  331. package/dist/types/components/GrSwitch/grSwitchStyles.d.ts +129 -25
  332. package/dist/types/components/GrSwitch/index.d.ts +1 -1
  333. package/dist/types/components/GrSwitch/safelist.d.ts +4 -3
  334. package/dist/types/components/GrTabPanels/context.d.ts +6 -0
  335. package/dist/types/components/GrTable/GrTable.vue.d.ts +37 -0
  336. package/dist/types/components/GrTable/grTableStyles.d.ts +16 -7
  337. package/dist/types/components/GrTabsWithPanels/GrTabsWithPanels.vue.d.ts +77 -0
  338. package/dist/types/components/GrTabsWithPanels/config.d.ts +1 -0
  339. package/dist/types/components/GrTabsWithPanels/index.d.ts +4 -0
  340. package/dist/types/components/GrTextarea/GrTextarea.vue.d.ts +19 -1
  341. package/dist/types/components/GrToaster/GrToaster.vue.d.ts +12 -0
  342. package/dist/types/components/GrToaster/grToasterStyles.d.ts +26 -0
  343. package/dist/types/components/GrTooltip/GrTooltip.vue.d.ts +22 -0
  344. package/dist/types/components/GrTransfer/GrTransfer.vue.d.ts +23 -0
  345. package/dist/types/components/GrTreeSelect/grTreeSelectStyles.d.ts +1 -1
  346. package/dist/types/components/GrTreeSelect/grTreeSelectTypes.d.ts +20 -0
  347. package/dist/types/components/shared/hotkey.d.ts +8 -9
  348. package/dist/types/components/shared/optionPanel.d.ts +100 -0
  349. package/dist/types/components/shared/overlayListPanel.d.ts +18 -0
  350. package/dist/types/composables/useHotkeys.d.ts +43 -0
  351. package/dist/types/granular-provider/shared.d.ts +2 -0
  352. package/dist/types/i18n/messages/en.d.ts +32 -0
  353. package/dist/types/i18n/messages/es.d.ts +32 -0
  354. package/dist/types/i18n/messages/ru.d.ts +32 -0
  355. package/dist/types/index.d.ts +4 -0
  356. package/dist/types/internal/hotkeySequence.d.ts +22 -0
  357. package/dist/types/internal/keyboard.d.ts +45 -0
  358. package/dist/web-types.json +784 -101
  359. package/package.json +13 -1
  360. package/dist/chunks/config-2ZHRsdOc.js.map +0 -1
  361. package/dist/chunks/config-B42iJ48O.js.map +0 -1
  362. package/dist/chunks/config-B5SBUa6u.js.map +0 -1
  363. package/dist/chunks/config-BAse0laT.js.map +0 -1
  364. package/dist/chunks/config-BHLMTJaR.js.map +0 -1
  365. package/dist/chunks/config-BXRmsn3t.js.map +0 -1
  366. package/dist/chunks/config-Bs1HwUcx.js.map +0 -1
  367. package/dist/chunks/config-CMNfZO7S.js.map +0 -1
  368. package/dist/chunks/config-CbEbLyDE.js.map +0 -1
  369. package/dist/chunks/config-CjWOTgLL.js.map +0 -1
  370. package/dist/chunks/config-D3HOuHDe.js.map +0 -1
  371. package/dist/chunks/config-DIDz_E5m.js.map +0 -1
  372. package/dist/chunks/config-DNDgp9bB.js.map +0 -1
  373. package/dist/chunks/config-Yy67uWHY.js +0 -140
  374. package/dist/chunks/config-Yy67uWHY.js.map +0 -1
  375. package/dist/chunks/config-iemgzS4x.js.map +0 -1
  376. package/dist/chunks/en-Bxyn5lW7.js.map +0 -1
  377. package/dist/chunks/es-Dtl-a7ui.js.map +0 -1
  378. package/dist/chunks/grBadgeStyles-DV0DrAew.js.map +0 -1
  379. package/dist/chunks/grSelectStyles-D9EQ-pgK.js.map +0 -1
  380. package/dist/chunks/grSliderStyles-kaz6VXZ3.js.map +0 -1
  381. package/dist/chunks/grTableStyles-DkQPMfx9.js +0 -39
  382. package/dist/chunks/grTableStyles-DkQPMfx9.js.map +0 -1
  383. package/dist/chunks/granular-provider-BOQp7N5o.js.map +0 -1
  384. package/dist/chunks/keyboard-DE2yhz_b.js.map +0 -1
  385. package/dist/chunks/overlayPanelSurface-BKeMhRx4.js.map +0 -1
  386. package/dist/chunks/ru-hrB4I1u_.js.map +0 -1
  387. package/dist/chunks/safelist-x8USecK8.js.map +0 -1
  388. package/dist/components/GrAutocomplete/chunks/GrAutocomplete-C-uovdv8.js.map +0 -1
  389. package/dist/components/GrBadge/chunks/GrBadge-DBeQXEir.js +0 -47
  390. package/dist/components/GrBadge/chunks/GrBadge-DBeQXEir.js.map +0 -1
  391. package/dist/components/GrCarousel/chunks/GrCarousel-ByuughtI.js.map +0 -1
  392. package/dist/components/GrCheckbox/chunks/GrCheckbox-Dp201frb.js.map +0 -1
  393. package/dist/components/GrColorPicker/chunks/GrColorPicker-BRM_4lyI.js.map +0 -1
  394. package/dist/components/GrCommandPalette/chunks/GrCommandPalette-BJHmkDQv.js.map +0 -1
  395. package/dist/components/GrDataTable/chunks/GrDataTable-DQxYYgQk.js.map +0 -1
  396. package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-Dxkz_ry4.js.map +0 -1
  397. package/dist/components/GrEmptyState/chunks/GrEmptyState-BbvwE-E0.js.map +0 -1
  398. package/dist/components/GrFileUpload/chunks/GrFileUpload-BwMR71zN.js.map +0 -1
  399. package/dist/components/GrFormFile/chunks/GrFormFile-Dlxx-9zi.js.map +0 -1
  400. package/dist/components/GrInput/chunks/GrInput-DV4gMWPR.js.map +0 -1
  401. package/dist/components/GrInputTag/chunks/GrInputTag-CO0YU-ok.js.map +0 -1
  402. package/dist/components/GrKbd/chunks/GrKbd-BNMeoaLV.js.map +0 -1
  403. package/dist/components/GrNavbar/chunks/GrNavbar-BRGuksiy.js.map +0 -1
  404. package/dist/components/GrSelect/chunks/GrSelect-0iI4wdR_.js.map +0 -1
  405. package/dist/components/GrSidebar/chunks/GrSidebar-DoKLlHSw.js +0 -264
  406. package/dist/components/GrSidebar/chunks/GrSidebar-DoKLlHSw.js.map +0 -1
  407. package/dist/components/GrSlider/chunks/GrSlider-CO8N9SF6.js.map +0 -1
  408. package/dist/components/GrSwitch/chunks/GrSwitch-CriHWT2A.js.map +0 -1
  409. package/dist/components/GrTabPanels/chunks/GrTabPanels-5zsbqS1v.js +0 -92
  410. package/dist/components/GrTabPanels/chunks/GrTabPanels-5zsbqS1v.js.map +0 -1
  411. package/dist/components/GrTable/chunks/GrTable-CKJ-HrsN.js.map +0 -1
  412. package/dist/components/GrTextarea/chunks/GrTextarea-Bfgc0DD2.js.map +0 -1
  413. package/dist/components/GrToaster/chunks/GrToaster-CZixNk0l.js.map +0 -1
  414. package/dist/components/GrTooltip/chunks/GrTooltip-DkMMM0uq.js.map +0 -1
  415. package/dist/components/GrTransfer/chunks/GrTransfer-DdfBUf35.js.map +0 -1
  416. package/dist/components/GrTree/chunks/GrTree-6yZrncJE.js.map +0 -1
  417. package/dist/components/GrTreeSelect/chunks/GrTreeSelect-B6KoDYiZ.js.map +0 -1
  418. package/dist/types/components/GrAutocomplete/composables/useAutocompleteVirtual.d.ts +0 -33
package/README.md CHANGED
@@ -91,10 +91,10 @@ from its own chunk, so a granular import already brings everything it needs.
91
91
  <!-- entry-sizes:generated:start lang=en -->
92
92
  | What you import | gzip | of the barrel |
93
93
  | --- | ---: | ---: |
94
- | the whole package from the root | 606.8 kB | 100 % |
94
+ | the whole package from the root | 660.6 kB | 100 % |
95
95
  | the lightest component — `GrButtonGroup` | 1.8 kB | < 1 % |
96
- | the median component — `GrChip` | 15.4 kB | 3 % |
97
- | the 5 heaviest together | 177.4 kB | 29 % |
96
+ | the median component — `GrKbd` | 16.2 kB | 2 % |
97
+ | the 5 heaviest together | 241.5 kB | 37 % |
98
98
 
99
99
  These numbers **do not add up**: shared code is counted again in every row but paid for once, which is why
100
100
  the set is shown as a union rather than a sum. They are an upper bound — the gzip of everything a subpath
@@ -0,0 +1,23 @@
1
+ import { createElementBlock, createElementVNode, markRaw, openBlock } from "vue";
2
+ //#region ~icons/lucide/chevron-up
3
+ var _hoisted_1 = {
4
+ viewBox: "0 0 24 24",
5
+ width: "1.2em",
6
+ height: "1.2em"
7
+ };
8
+ function render$1(_ctx, _cache) {
9
+ return openBlock(), createElementBlock("svg", _hoisted_1, [..._cache[0] || (_cache[0] = [createElementVNode("path", {
10
+ fill: "none",
11
+ stroke: "currentColor",
12
+ "stroke-linecap": "round",
13
+ "stroke-linejoin": "round",
14
+ "stroke-width": "2",
15
+ d: "m18 15l-6-6l-6 6"
16
+ }, null, -1)])]);
17
+ }
18
+ var chevron_up_default = markRaw({
19
+ name: "lucide-chevron-up",
20
+ render: render$1
21
+ });
22
+ //#endregion
23
+ export { chevron_up_default as t };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chevron-up-BhW6hi8L.js","names":[],"sources":[],"mappings":""}
@@ -1,5 +1,5 @@
1
1
  import { n as splitClassTokens } from "./classTokens-8v2XC74x.js";
2
- import { A as sliderTrackVerticalLengthClass, C as sliderThumbEnabledClass, E as sliderTooltipBaseClass, O as sliderTooltipOrientationClass, S as sliderThumbDisabledClass, T as sliderThumbSizeBySize, _ as sliderRootBaseClass, a as sliderFillOrientationClass, b as sliderThumbBaseClass, c as sliderMarkLabelDisabledClass, d as sliderMarkTickBaseClass, g as sliderRailClass, h as sliderPaddingVerticalBySize, i as sliderFillEnabledClass, j as sliderTrackWidthBySize, k as sliderTrackHeightBySize, l as sliderMarkLabelHorizontalClass, m as sliderPaddingBySize, o as sliderMarkLabelClass, p as sliderMarkTickOrientationClass, r as sliderFillDisabledClass, t as sliderFillBaseClass, u as sliderMarkLabelVerticalClass, w as sliderThumbOrientationClass, y as sliderRootOrientationClass } from "./grSliderStyles-kaz6VXZ3.js";
2
+ import { A as sliderTrackVerticalLengthClass, C as sliderThumbEnabledClass, E as sliderTooltipBaseClass, O as sliderTooltipOrientationClass, S as sliderThumbDisabledClass, T as sliderThumbSizeBySize, _ as sliderRootBaseClass, a as sliderFillOrientationClass, b as sliderThumbBaseClass, c as sliderMarkLabelDisabledClass, d as sliderMarkTickBaseClass, g as sliderRailClass, h as sliderPaddingVerticalBySize, i as sliderFillEnabledClass, j as sliderTrackWidthBySize, k as sliderTrackHeightBySize, l as sliderMarkLabelHorizontalClass, m as sliderPaddingBySize, o as sliderMarkLabelClass, p as sliderMarkTickOrientationClass, r as sliderFillDisabledClass, t as sliderFillBaseClass, u as sliderMarkLabelVerticalClass, w as sliderThumbOrientationClass, y as sliderRootOrientationClass } from "./grSliderStyles-CqzV0hll.js";
3
3
  import { defineGranularComponent } from "@feugene/unocss-preset-granular/contract";
4
4
  //#region src/components/GrSlider/safelist.ts
5
5
  var grSliderSafelist = [.../* @__PURE__ */ new Set([
@@ -1 +1 @@
1
- {"version":3,"file":"config-E1cTyRVV.js","names":[],"sources":["../../src/components/GrSlider/safelist.ts","../../src/components/GrSlider/config.ts"],"sourcesContent":["import { splitClassTokens } from '../shared/classTokens'\nimport {\n sliderFillBaseClass,\n sliderFillDisabledClass,\n sliderFillEnabledClass,\n sliderFillOrientationClass,\n sliderMarkLabelClass,\n sliderMarkLabelDisabledClass,\n sliderMarkLabelHorizontalClass,\n sliderMarkLabelVerticalClass,\n sliderMarkTickBaseClass,\n sliderMarkTickOrientationClass,\n sliderPaddingBySize,\n sliderPaddingVerticalBySize,\n sliderRailClass,\n sliderRootBaseClass,\n sliderRootOrientationClass,\n sliderThumbBaseClass,\n sliderThumbDisabledClass,\n sliderThumbEnabledClass,\n sliderThumbOrientationClass,\n sliderThumbSizeBySize,\n sliderTooltipBaseClass,\n sliderTooltipOrientationClass,\n sliderTrackHeightBySize,\n sliderTrackVerticalLengthClass,\n sliderTrackWidthBySize,\n} from './grSliderStyles'\n\n// Всё, что живёт в `grSliderStyles.ts`: и вычисляемые мапы, и строковые литералы\n// дорожки, бегунка, тултипа и меток. Хелпер уезжает в общий `dist/chunks/`, вне\n// области скана компонента — гейт `src/__tests__/safelist.test.ts`.\nexport const grSliderSafelist = [...new Set([\n ...Object.values(sliderTrackHeightBySize).flatMap(splitClassTokens),\n ...Object.values(sliderTrackWidthBySize).flatMap(splitClassTokens),\n ...Object.values(sliderThumbSizeBySize).flatMap(splitClassTokens),\n ...Object.values(sliderPaddingBySize).flatMap(splitClassTokens),\n ...Object.values(sliderPaddingVerticalBySize).flatMap(splitClassTokens),\n ...Object.values(sliderRootOrientationClass).flatMap(splitClassTokens),\n ...Object.values(sliderFillOrientationClass).flatMap(splitClassTokens),\n ...Object.values(sliderThumbOrientationClass).flatMap(splitClassTokens),\n ...Object.values(sliderTooltipOrientationClass).flatMap(splitClassTokens),\n ...Object.values(sliderMarkTickOrientationClass).flatMap(splitClassTokens),\n ...splitClassTokens(sliderRootBaseClass),\n ...splitClassTokens(sliderRailClass),\n ...splitClassTokens(sliderFillBaseClass),\n ...splitClassTokens(sliderFillEnabledClass),\n ...splitClassTokens(sliderFillDisabledClass),\n ...splitClassTokens(sliderTrackVerticalLengthClass),\n ...splitClassTokens(sliderThumbBaseClass),\n ...splitClassTokens(sliderThumbEnabledClass),\n ...splitClassTokens(sliderThumbDisabledClass),\n ...splitClassTokens(sliderTooltipBaseClass),\n ...splitClassTokens(sliderMarkTickBaseClass),\n ...splitClassTokens(sliderMarkLabelClass),\n ...splitClassTokens(sliderMarkLabelHorizontalClass),\n ...splitClassTokens(sliderMarkLabelVerticalClass),\n ...splitClassTokens(sliderMarkLabelDisabledClass),\n // Резерв места под подписи меток и их выравнивание: центр / к левому / к правому краю.\n ...splitClassTokens('mb-7 mr-10 translate-x-0 -translate-x-1/2 -translate-x-full'),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grSliderSafelist } from './safelist'\n\nexport const grSliderConfig = defineGranularComponent(import.meta.url, {\n name: 'GrSlider',\n safelist: grSliderSafelist,\n})\n"],"mappings":";;;;AAgCA,IAAa,mBAAmB,CAAC,mBAAG,IAAI,IAAI;CAC1C,GAAG,OAAO,OAAO,uBAAuB,CAAC,CAAC,QAAQ,gBAAgB;CAClE,GAAG,OAAO,OAAO,sBAAsB,CAAC,CAAC,QAAQ,gBAAgB;CACjE,GAAG,OAAO,OAAO,qBAAqB,CAAC,CAAC,QAAQ,gBAAgB;CAChE,GAAG,OAAO,OAAO,mBAAmB,CAAC,CAAC,QAAQ,gBAAgB;CAC9D,GAAG,OAAO,OAAO,2BAA2B,CAAC,CAAC,QAAQ,gBAAgB;CACtE,GAAG,OAAO,OAAO,0BAA0B,CAAC,CAAC,QAAQ,gBAAgB;CACrE,GAAG,OAAO,OAAO,0BAA0B,CAAC,CAAC,QAAQ,gBAAgB;CACrE,GAAG,OAAO,OAAO,2BAA2B,CAAC,CAAC,QAAQ,gBAAgB;CACtE,GAAG,OAAO,OAAO,6BAA6B,CAAC,CAAC,QAAQ,gBAAgB;CACxE,GAAG,OAAO,OAAO,8BAA8B,CAAC,CAAC,QAAQ,gBAAgB;CACzE,GAAG,iBAAiB,mBAAmB;CACvC,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,mBAAmB;CACvC,GAAG,iBAAiB,sBAAsB;CAC1C,GAAG,iBAAiB,uBAAuB;CAC3C,GAAG,iBAAiB,8BAA8B;CAClD,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,iBAAiB,uBAAuB;CAC3C,GAAG,iBAAiB,wBAAwB;CAC5C,GAAG,iBAAiB,sBAAsB;CAC1C,GAAG,iBAAiB,uBAAuB;CAC3C,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,iBAAiB,8BAA8B;CAClD,GAAG,iBAAiB,4BAA4B;CAChD,GAAG,iBAAiB,4BAA4B;CAEhD,GAAG,iBAAiB,6DAA6D;AACnF,CAAC,CAAC;;;ACxDF,IAAa,iBAAiB,wBAAwB,YAAY,KAAK;CACrE,MAAM;CACN,UAAU;AACZ,CAAC"}
1
+ {"version":3,"file":"config-8n1VR0ju.js","names":[],"sources":["../../src/components/GrSlider/safelist.ts","../../src/components/GrSlider/config.ts"],"sourcesContent":["import { splitClassTokens } from '../shared/classTokens'\nimport {\n sliderFillBaseClass,\n sliderFillDisabledClass,\n sliderFillEnabledClass,\n sliderFillOrientationClass,\n sliderMarkLabelClass,\n sliderMarkLabelDisabledClass,\n sliderMarkLabelHorizontalClass,\n sliderMarkLabelVerticalClass,\n sliderMarkTickBaseClass,\n sliderMarkTickOrientationClass,\n sliderPaddingBySize,\n sliderPaddingVerticalBySize,\n sliderRailClass,\n sliderRootBaseClass,\n sliderRootOrientationClass,\n sliderThumbBaseClass,\n sliderThumbDisabledClass,\n sliderThumbEnabledClass,\n sliderThumbOrientationClass,\n sliderThumbSizeBySize,\n sliderTooltipBaseClass,\n sliderTooltipOrientationClass,\n sliderTrackHeightBySize,\n sliderTrackVerticalLengthClass,\n sliderTrackWidthBySize,\n} from './grSliderStyles'\n\n// Всё, что живёт в `grSliderStyles.ts`: и вычисляемые мапы, и строковые литералы\n// дорожки, бегунка, тултипа и меток. Хелпер уезжает в общий `dist/chunks/`, вне\n// области скана компонента — гейт `src/__tests__/safelist.test.ts`.\nexport const grSliderSafelist = [...new Set([\n ...Object.values(sliderTrackHeightBySize).flatMap(splitClassTokens),\n ...Object.values(sliderTrackWidthBySize).flatMap(splitClassTokens),\n ...Object.values(sliderThumbSizeBySize).flatMap(splitClassTokens),\n ...Object.values(sliderPaddingBySize).flatMap(splitClassTokens),\n ...Object.values(sliderPaddingVerticalBySize).flatMap(splitClassTokens),\n ...Object.values(sliderRootOrientationClass).flatMap(splitClassTokens),\n ...Object.values(sliderFillOrientationClass).flatMap(splitClassTokens),\n ...Object.values(sliderThumbOrientationClass).flatMap(splitClassTokens),\n ...Object.values(sliderTooltipOrientationClass).flatMap(splitClassTokens),\n ...Object.values(sliderMarkTickOrientationClass).flatMap(splitClassTokens),\n ...splitClassTokens(sliderRootBaseClass),\n ...splitClassTokens(sliderRailClass),\n ...splitClassTokens(sliderFillBaseClass),\n ...splitClassTokens(sliderFillEnabledClass),\n ...splitClassTokens(sliderFillDisabledClass),\n ...splitClassTokens(sliderTrackVerticalLengthClass),\n ...splitClassTokens(sliderThumbBaseClass),\n ...splitClassTokens(sliderThumbEnabledClass),\n ...splitClassTokens(sliderThumbDisabledClass),\n ...splitClassTokens(sliderTooltipBaseClass),\n ...splitClassTokens(sliderMarkTickBaseClass),\n ...splitClassTokens(sliderMarkLabelClass),\n ...splitClassTokens(sliderMarkLabelHorizontalClass),\n ...splitClassTokens(sliderMarkLabelVerticalClass),\n ...splitClassTokens(sliderMarkLabelDisabledClass),\n // Резерв места под подписи меток и их выравнивание: центр / к левому / к правому краю.\n ...splitClassTokens('mb-7 mr-10 translate-x-0 -translate-x-1/2 -translate-x-full'),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grSliderSafelist } from './safelist'\n\nexport const grSliderConfig = defineGranularComponent(import.meta.url, {\n name: 'GrSlider',\n safelist: grSliderSafelist,\n})\n"],"mappings":";;;;AAgCA,IAAa,mBAAmB,CAAC,mBAAG,IAAI,IAAI;CAC1C,GAAG,OAAO,OAAO,uBAAuB,CAAC,CAAC,QAAQ,gBAAgB;CAClE,GAAG,OAAO,OAAO,sBAAsB,CAAC,CAAC,QAAQ,gBAAgB;CACjE,GAAG,OAAO,OAAO,qBAAqB,CAAC,CAAC,QAAQ,gBAAgB;CAChE,GAAG,OAAO,OAAO,mBAAmB,CAAC,CAAC,QAAQ,gBAAgB;CAC9D,GAAG,OAAO,OAAO,2BAA2B,CAAC,CAAC,QAAQ,gBAAgB;CACtE,GAAG,OAAO,OAAO,0BAA0B,CAAC,CAAC,QAAQ,gBAAgB;CACrE,GAAG,OAAO,OAAO,0BAA0B,CAAC,CAAC,QAAQ,gBAAgB;CACrE,GAAG,OAAO,OAAO,2BAA2B,CAAC,CAAC,QAAQ,gBAAgB;CACtE,GAAG,OAAO,OAAO,6BAA6B,CAAC,CAAC,QAAQ,gBAAgB;CACxE,GAAG,OAAO,OAAO,8BAA8B,CAAC,CAAC,QAAQ,gBAAgB;CACzE,GAAG,iBAAiB,mBAAmB;CACvC,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,mBAAmB;CACvC,GAAG,iBAAiB,sBAAsB;CAC1C,GAAG,iBAAiB,uBAAuB;CAC3C,GAAG,iBAAiB,8BAA8B;CAClD,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,iBAAiB,uBAAuB;CAC3C,GAAG,iBAAiB,wBAAwB;CAC5C,GAAG,iBAAiB,sBAAsB;CAC1C,GAAG,iBAAiB,uBAAuB;CAC3C,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,iBAAiB,8BAA8B;CAClD,GAAG,iBAAiB,4BAA4B;CAChD,GAAG,iBAAiB,4BAA4B;CAEhD,GAAG,iBAAiB,6DAA6D;AACnF,CAAC,CAAC;;;ACxDF,IAAa,iBAAiB,wBAAwB,YAAY,KAAK;CACrE,MAAM;CACN,UAAU;AACZ,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { n as splitClassTokens } from "./classTokens-8v2XC74x.js";
2
- import { a as chipIconSizeClassBySize, c as chipRootClass, i as chipIconClass, l as chipSelectedClass, n as chipCloseClass, o as chipInteractiveClass, r as chipDisabledClass, s as chipLabelClass, t as chipCloseButtonClass, u as chipSizeClassBySize } from "./grChipStyles-DcDyxAL0.js";
3
- import { t as grBadgeSafelist } from "./safelist-x8USecK8.js";
2
+ import { a as chipIconSizeClassBySize, c as chipRootClass, i as chipIconClass, l as chipSelectedClass, n as chipCloseClass, o as chipInteractiveClass, r as chipDisabledClass, s as chipLabelClass, t as chipCloseButtonClass, u as chipSizeClassBySize } from "./grChipStyles-CA9Wj1_E.js";
3
+ import { t as grBadgeSafelist } from "./safelist-CSfynUC1.js";
4
4
  import { defineGranularComponent } from "@feugene/unocss-preset-granular/contract";
5
5
  //#region src/components/GrChip/safelist.ts
6
6
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"config-2vrOFn2f.js","names":[],"sources":["../../src/components/GrChip/safelist.ts","../../src/components/GrChip/config.ts"],"sourcesContent":["import { grBadgeSafelist } from '../GrBadge/safelist'\nimport { splitClassTokens } from '../shared/classTokens'\n\nimport {\n chipCloseButtonClass,\n chipCloseClass,\n chipDisabledClass,\n chipIconClass,\n chipIconSizeClassBySize,\n chipInteractiveClass,\n chipLabelClass,\n chipRootClass,\n chipSelectedClass,\n chipSizeClassBySize,\n} from './grChipStyles'\n\n/**\n * Тона и радиусы приходят из `grBadgeStyles.ts`, поэтому их safelist берётся\n * ссылкой, а не копией: копия разошлась бы с оригиналом молча. Ребро\n * `GrChip → GrBadge` объявлено в `config.ts` — без него пресет не подмешает\n * стили бейджа при гранулярной селекции, и чип придёт бесцветным.\n */\nexport const grChipSafelist = [...new Set([\n ...grBadgeSafelist,\n ...Object.values(chipSizeClassBySize).flatMap(splitClassTokens),\n ...Object.values(chipIconSizeClassBySize).flatMap(splitClassTokens),\n ...splitClassTokens(chipRootClass),\n ...splitClassTokens(chipLabelClass),\n ...splitClassTokens(chipInteractiveClass),\n ...splitClassTokens(chipDisabledClass),\n ...splitClassTokens(chipSelectedClass),\n ...splitClassTokens(chipCloseClass),\n ...splitClassTokens(chipCloseButtonClass),\n ...splitClassTokens(chipIconClass),\n 'h-full',\n 'w-full',\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grChipSafelist } from './safelist'\n\nexport const grChipConfig = defineGranularComponent(import.meta.url, {\n name: 'GrChip',\n // `GrBadge` — импорт его класс-мап и safelist; `GrIcon` не рендерится,\n // крестик — прямой `~icons`-компонент, поэтому его в зависимостях нет.\n dependencies: ['GrBadge'],\n safelist: grChipSafelist,\n})\n"],"mappings":";;;;;;;;;;;AAsBA,IAAa,iBAAiB,CAAC,mBAAG,IAAI,IAAI;CACxC,GAAG;CACH,GAAG,OAAO,OAAO,mBAAmB,CAAC,CAAC,QAAQ,gBAAgB;CAC9D,GAAG,OAAO,OAAO,uBAAuB,CAAC,CAAC,QAAQ,gBAAgB;CAClE,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,iBAAiB,aAAa;CACjC;CACA;AACF,CAAC,CAAC;;;AChCF,IAAa,eAAe,wBAAwB,YAAY,KAAK;CACnE,MAAM;CAGN,cAAc,CAAC,SAAS;CACxB,UAAU;AACZ,CAAC"}
1
+ {"version":3,"file":"config-AKpLyIGD.js","names":[],"sources":["../../src/components/GrChip/safelist.ts","../../src/components/GrChip/config.ts"],"sourcesContent":["import { grBadgeSafelist } from '../GrBadge/safelist'\nimport { splitClassTokens } from '../shared/classTokens'\n\nimport {\n chipCloseButtonClass,\n chipCloseClass,\n chipDisabledClass,\n chipIconClass,\n chipIconSizeClassBySize,\n chipInteractiveClass,\n chipLabelClass,\n chipRootClass,\n chipSelectedClass,\n chipSizeClassBySize,\n} from './grChipStyles'\n\n/**\n * Тона и радиусы приходят из `grBadgeStyles.ts`, поэтому их safelist берётся\n * ссылкой, а не копией: копия разошлась бы с оригиналом молча. Ребро\n * `GrChip → GrBadge` объявлено в `config.ts` — без него пресет не подмешает\n * стили бейджа при гранулярной селекции, и чип придёт бесцветным.\n */\nexport const grChipSafelist = [...new Set([\n ...grBadgeSafelist,\n ...Object.values(chipSizeClassBySize).flatMap(splitClassTokens),\n ...Object.values(chipIconSizeClassBySize).flatMap(splitClassTokens),\n ...splitClassTokens(chipRootClass),\n ...splitClassTokens(chipLabelClass),\n ...splitClassTokens(chipInteractiveClass),\n ...splitClassTokens(chipDisabledClass),\n ...splitClassTokens(chipSelectedClass),\n ...splitClassTokens(chipCloseClass),\n ...splitClassTokens(chipCloseButtonClass),\n ...splitClassTokens(chipIconClass),\n 'h-full',\n 'w-full',\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grChipSafelist } from './safelist'\n\nexport const grChipConfig = defineGranularComponent(import.meta.url, {\n name: 'GrChip',\n // `GrBadge` — импорт его класс-мап и safelist; `GrIcon` не рендерится,\n // крестик — прямой `~icons`-компонент, поэтому его в зависимостях нет.\n dependencies: ['GrBadge'],\n safelist: grChipSafelist,\n})\n"],"mappings":";;;;;;;;;;;AAsBA,IAAa,iBAAiB,CAAC,mBAAG,IAAI,IAAI;CACxC,GAAG;CACH,GAAG,OAAO,OAAO,mBAAmB,CAAC,CAAC,QAAQ,gBAAgB;CAC9D,GAAG,OAAO,OAAO,uBAAuB,CAAC,CAAC,QAAQ,gBAAgB;CAClE,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,iBAAiB,aAAa;CACjC;CACA;AACF,CAAC,CAAC;;;AChCF,IAAa,eAAe,wBAAwB,YAAY,KAAK;CACnE,MAAM;CAGN,cAAc,CAAC,SAAS;CACxB,UAAU;AACZ,CAAC"}
@@ -40,6 +40,50 @@ var swatchBaseClass = "relative shrink-0 overflow-hidden rounded-[var(--gr-radiu
40
40
  var swatchFillClass = "absolute inset-0";
41
41
  var panelBaseClass = "grid";
42
42
  var previewClass = "relative h-10 w-full overflow-hidden rounded-[var(--gr-radius-md)] border border-[color-mix(in_srgb,var(--gr-fg)_18%,transparent)]";
43
+ /**
44
+ * Высота области. Ширину задаёт панель, поэтому квадрат тут не буквальный:
45
+ * на узкой ступени доля высоты крупнее, иначе область вырождается в полоску.
46
+ */
47
+ var areaHeightBySize = {
48
+ xs: "h-28",
49
+ sm: "h-32",
50
+ md: "h-36",
51
+ lg: "h-44"
52
+ };
53
+ /**
54
+ * Область насыщенности и светлоты.
55
+ *
56
+ * Кольцо фокуса живёт на обёртке через `focus-within`: фокус получают скрытые
57
+ * `input[type=range]` внутри, и своё кольцо у них было бы шириной в пиксель.
58
+ */
59
+ var areaBaseClass = "relative w-full overflow-hidden rounded-[var(--gr-radius-md)] border border-[color-mix(in_srgb,var(--gr-fg)_18%,transparent)] [touch-action:none] focus-within:outline-none focus-within:ring-2 focus-within:ring-[var(--gr-ring)]";
60
+ var areaEnabledClass = "cursor-crosshair";
61
+ var areaDisabledClass = "cursor-not-allowed";
62
+ /**
63
+ * Ручка области.
64
+ *
65
+ * Обвода два, светлый и тёмный: ручка лежит поверх произвольного цвета, и
66
+ * одиночный пропадал бы на своём конце шкалы — белый в углу белого, тёмный в
67
+ * углу чёрного.
68
+ *
69
+ * Оба независимы от темы намеренно: под ручкой не подложка компонента, а
70
+ * выбираемый цвет, и `--gr-fg` спорил бы с ним, а не с фоном страницы.
71
+ */
72
+ var areaThumbClass = "pointer-events-none absolute h-[var(--gr-color-picker-area-thumb-size,0.875rem)] w-[var(--gr-color-picker-area-thumb-size,0.875rem)] -translate-x-1/2 -translate-y-1/2 rounded-[var(--gr-radius-full)] border-2 border-[var(--gr-color-picker-area-thumb-border,#fff)] shadow-[0_0_0_1px_var(--gr-color-picker-area-thumb-ring,rgba(0,0,0,0.45))]";
73
+ /** Оба поля осей: доступны диктору и клавиатуре, но не видны. */
74
+ var areaInputClass = "sr-only";
75
+ /** Пипетка стоит в одном ряду с полем hex и повторяет его высоту. */
76
+ var eyedropperClass = "inline-flex shrink-0 items-center justify-center rounded-[var(--gr-radius-control)] border border-[var(--gr-brd)] bg-[var(--gr-bg)] text-[var(--gr-fg)] transition-colors duration-[var(--gr-duration-fast)] hover:border-[var(--gr-primary)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)] disabled:cursor-not-allowed disabled:border-[var(--gr-brd)] disabled:bg-[var(--gr-muted)] disabled:text-[var(--gr-disabled-fg)]";
77
+ var eyedropperSizeBySize = {
78
+ xs: "h-7 w-7",
79
+ sm: "h-8 w-8",
80
+ md: "h-10 w-10",
81
+ lg: "h-11 w-11"
82
+ };
83
+ var eyedropperIconClass = "h-4 w-4 shrink-0";
84
+ /** Поле hex и пипетка стоят рядом: поле тянется, кнопка держит свою ширину. */
85
+ var hexRowClass = "flex items-center gap-2";
86
+ var hexFieldClass = "min-w-0 flex-1";
43
87
  var rowClass = "grid grid-cols-[1.25rem_minmax(0,1fr)_2.75rem] items-center gap-2";
44
88
  var rowLabelClass = "text-[var(--gr-muted-fg)]";
45
89
  var rowValueClass = "text-right text-[var(--gr-muted-fg)] tabular-nums";
@@ -60,12 +104,24 @@ function grColorPickerPanelClass(size) {
60
104
  function grColorPickerPresetClass(selected) {
61
105
  return [presetBaseClass, selected ? presetSelectedClass : ""].filter(Boolean).join(" ");
62
106
  }
107
+ function grColorPickerAreaClass(options) {
108
+ return [
109
+ areaBaseClass,
110
+ areaHeightBySize[options.size],
111
+ options.locked ? areaDisabledClass : areaEnabledClass
112
+ ].join(" ");
113
+ }
114
+ function grColorPickerEyedropperClass(size) {
115
+ return [eyedropperClass, eyedropperSizeBySize[size]].join(" ");
116
+ }
63
117
  //#endregion
64
118
  //#region src/components/GrColorPicker/safelist.ts
65
119
  var grColorPickerSafelist = [.../* @__PURE__ */ new Set([
66
120
  ...Object.values(triggerSizeClassBySize).flatMap(splitClassTokens),
67
121
  ...Object.values(triggerSwatchSizeBySize).flatMap(splitClassTokens),
68
122
  ...Object.values(panelSizeClassBySize).flatMap(splitClassTokens),
123
+ ...Object.values(areaHeightBySize).flatMap(splitClassTokens),
124
+ ...Object.values(eyedropperSizeBySize).flatMap(splitClassTokens),
69
125
  ...splitClassTokens(triggerBaseClass),
70
126
  ...splitClassTokens(triggerDisabledClass),
71
127
  ...splitClassTokens(triggerEnabledClass),
@@ -75,6 +131,15 @@ var grColorPickerSafelist = [.../* @__PURE__ */ new Set([
75
131
  ...splitClassTokens(swatchFillClass),
76
132
  ...splitClassTokens(panelBaseClass),
77
133
  ...splitClassTokens(previewClass),
134
+ ...splitClassTokens(areaBaseClass),
135
+ ...splitClassTokens(areaEnabledClass),
136
+ ...splitClassTokens(areaDisabledClass),
137
+ ...splitClassTokens(areaThumbClass),
138
+ ...splitClassTokens(areaInputClass),
139
+ ...splitClassTokens(eyedropperClass),
140
+ ...splitClassTokens(eyedropperIconClass),
141
+ ...splitClassTokens(hexRowClass),
142
+ ...splitClassTokens(hexFieldClass),
78
143
  ...splitClassTokens(rowClass),
79
144
  ...splitClassTokens(rowLabelClass),
80
145
  ...splitClassTokens(rowValueClass),
@@ -94,4 +159,4 @@ var grColorPickerConfig = defineGranularComponent(import.meta.url, {
94
159
  safelist: grColorPickerSafelist
95
160
  });
96
161
  //#endregion
97
- export { grColorPickerPresetClass as a, previewClass as c, rowValueClass as d, swatchBaseClass as f, triggerValueClass as h, grColorPickerPanelClass as i, rowClass as l, triggerSwatchSizeBySize as m, grColorPickerSafelist as n, grColorPickerTriggerClass as o, swatchFillClass as p, checkerClass as r, presetsGridClass as s, grColorPickerConfig as t, rowLabelClass as u };
162
+ export { triggerValueClass as S, rowLabelClass as _, checkerClass as a, swatchFillClass as b, grColorPickerEyedropperClass as c, grColorPickerTriggerClass as d, hexFieldClass as f, rowClass as g, previewClass as h, areaThumbClass as i, grColorPickerPanelClass as l, presetsGridClass as m, grColorPickerSafelist as n, eyedropperIconClass as o, hexRowClass as p, areaInputClass as r, grColorPickerAreaClass as s, grColorPickerConfig as t, grColorPickerPresetClass as u, rowValueClass as v, triggerSwatchSizeBySize as x, swatchBaseClass as y };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-B34mkd53.js","names":[],"sources":["../../src/components/GrColorPicker/grColorPickerStyles.ts","../../src/components/GrColorPicker/safelist.ts","../../src/components/GrColorPicker/config.ts"],"sourcesContent":["import type { GrComponentSize } from '../shared/sizes'\n\nexport type GrColorPickerSize = GrComponentSize\n\n/**\n * Триггер повторяет геометрию поля ввода: пикер чаще всего стоит в форме рядом\n * с `GrInput`, и своя лестница высот выдала бы его из ряда.\n */\nexport const triggerSizeClassBySize: Record<GrColorPickerSize, string> = {\n xs: 'h-7 px-2 gap-1.5 text-[length:var(--gr-control-text-xs)] leading-[var(--gr-control-leading-xs)]',\n sm: 'h-8 px-2.5 gap-2 text-[length:var(--gr-control-text-sm)] leading-[var(--gr-control-leading-sm)]',\n md: 'h-10 px-3 gap-2 text-[length:var(--gr-control-text-md)] leading-[var(--gr-control-leading-md)]',\n lg: 'h-11 px-4 gap-2.5 text-[length:var(--gr-control-text-lg)] leading-[var(--gr-control-leading-lg)]',\n}\n\n/** Образец в триггере: квадрат со стороной чуть меньше высоты поля. */\nexport const triggerSwatchSizeBySize: Record<GrColorPickerSize, string> = {\n xs: 'h-3.5 w-3.5',\n sm: 'h-4 w-4',\n md: 'h-5 w-5',\n lg: 'h-6 w-6',\n}\n\nexport const panelSizeClassBySize: Record<GrColorPickerSize, string> = {\n xs: 'w-56 gap-2 text-[length:var(--gr-control-text-xs)] leading-[var(--gr-control-leading-xs)]',\n sm: 'w-60 gap-2.5 text-[length:var(--gr-control-text-sm)] leading-[var(--gr-control-leading-sm)]',\n md: 'w-64 gap-3 text-[length:var(--gr-control-text-md)] leading-[var(--gr-control-leading-md)]',\n lg: 'w-72 gap-3 text-[length:var(--gr-control-text-lg)] leading-[var(--gr-control-leading-lg)]',\n}\n\nexport const triggerBaseClass = 'inline-flex w-full min-w-0 items-center rounded-[var(--gr-radius-control)] border border-[var(--gr-brd)] bg-[var(--gr-bg)] text-[var(--gr-fg)] transition-colors duration-[var(--gr-duration-fast)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]'\n\n/** Недоступное поле гасится токенами, а не `opacity`: прозрачность роняет контраст подписи. */\nexport const triggerDisabledClass = 'cursor-not-allowed border-[var(--gr-brd)] bg-[var(--gr-muted)] text-[var(--gr-disabled-fg)]'\nexport const triggerEnabledClass = 'cursor-pointer hover:border-[var(--gr-primary)]'\nexport const triggerInvalidClass = 'border-[var(--gr-invalid-brd)] focus-visible:ring-[var(--gr-invalid-ring)]'\n\nexport const triggerValueClass = 'min-w-0 flex-1 truncate text-left tabular-nums'\n\n/**\n * Шахматка под прозрачным цветом. Живёт классом-маркером, а сами клетки рисует\n * `<style>` компонента: два `conic-gradient` в утилите не выражаются.\n */\nexport const checkerClass = 'gr-color-picker-checker'\n\nexport const swatchBaseClass = 'relative shrink-0 overflow-hidden rounded-[var(--gr-radius-sm)] border border-[color-mix(in_srgb,var(--gr-fg)_18%,transparent)]'\n\n/** Заливка образца лежит поверх шахматки отдельным слоем. */\nexport const swatchFillClass = 'absolute inset-0'\n\nexport const panelBaseClass = 'grid'\n\nexport const previewClass = 'relative h-10 w-full overflow-hidden rounded-[var(--gr-radius-md)] border border-[color-mix(in_srgb,var(--gr-fg)_18%,transparent)]'\n\n/** Вид панели: лестница каналов или квадрат насыщенность × светлота. */\nexport const GR_COLOR_PICKER_VIEWS = ['sliders', 'area'] as const\nexport type GrColorPickerView = typeof GR_COLOR_PICKER_VIEWS[number]\n\n/**\n * Высота области. Ширину задаёт панель, поэтому квадрат тут не буквальный:\n * на узкой ступени доля высоты крупнее, иначе область вырождается в полоску.\n */\nexport const areaHeightBySize: Record<GrColorPickerSize, string> = {\n xs: 'h-28',\n sm: 'h-32',\n md: 'h-36',\n lg: 'h-44',\n}\n\n/**\n * Область насыщенности и светлоты.\n *\n * Кольцо фокуса живёт на обёртке через `focus-within`: фокус получают скрытые\n * `input[type=range]` внутри, и своё кольцо у них было бы шириной в пиксель.\n */\nexport const areaBaseClass = 'relative w-full overflow-hidden rounded-[var(--gr-radius-md)] border border-[color-mix(in_srgb,var(--gr-fg)_18%,transparent)] [touch-action:none] focus-within:outline-none focus-within:ring-2 focus-within:ring-[var(--gr-ring)]'\n\nexport const areaEnabledClass = 'cursor-crosshair'\nexport const areaDisabledClass = 'cursor-not-allowed'\n\n/**\n * Ручка области.\n *\n * Обвода два, светлый и тёмный: ручка лежит поверх произвольного цвета, и\n * одиночный пропадал бы на своём конце шкалы — белый в углу белого, тёмный в\n * углу чёрного.\n *\n * Оба независимы от темы намеренно: под ручкой не подложка компонента, а\n * выбираемый цвет, и `--gr-fg` спорил бы с ним, а не с фоном страницы.\n */\nexport const areaThumbClass = 'pointer-events-none absolute h-[var(--gr-color-picker-area-thumb-size,0.875rem)] w-[var(--gr-color-picker-area-thumb-size,0.875rem)] -translate-x-1/2 -translate-y-1/2 rounded-[var(--gr-radius-full)] border-2 border-[var(--gr-color-picker-area-thumb-border,#fff)] shadow-[0_0_0_1px_var(--gr-color-picker-area-thumb-ring,rgba(0,0,0,0.45))]'\n\n/** Оба поля осей: доступны диктору и клавиатуре, но не видны. */\nexport const areaInputClass = 'sr-only'\n\n/** Пипетка стоит в одном ряду с полем hex и повторяет его высоту. */\nexport const eyedropperClass = 'inline-flex shrink-0 items-center justify-center rounded-[var(--gr-radius-control)] border border-[var(--gr-brd)] bg-[var(--gr-bg)] text-[var(--gr-fg)] transition-colors duration-[var(--gr-duration-fast)] hover:border-[var(--gr-primary)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)] disabled:cursor-not-allowed disabled:border-[var(--gr-brd)] disabled:bg-[var(--gr-muted)] disabled:text-[var(--gr-disabled-fg)]'\n\nexport const eyedropperSizeBySize: Record<GrColorPickerSize, string> = {\n xs: 'h-7 w-7',\n sm: 'h-8 w-8',\n md: 'h-10 w-10',\n lg: 'h-11 w-11',\n}\n\nexport const eyedropperIconClass = 'h-4 w-4 shrink-0'\n\n/** Поле hex и пипетка стоят рядом: поле тянется, кнопка держит свою ширину. */\nexport const hexRowClass = 'flex items-center gap-2'\nexport const hexFieldClass = 'min-w-0 flex-1'\n\nexport const rowClass = 'grid grid-cols-[1.25rem_minmax(0,1fr)_2.75rem] items-center gap-2'\nexport const rowLabelClass = 'text-[var(--gr-muted-fg)]'\nexport const rowValueClass = 'text-right text-[var(--gr-muted-fg)] tabular-nums'\n\nexport const presetsGridClass = 'flex flex-wrap gap-1.5'\nexport const presetBaseClass = 'relative h-5 w-5 shrink-0 overflow-hidden rounded-[var(--gr-radius-sm)] border border-[color-mix(in_srgb,var(--gr-fg)_18%,transparent)] transition-shadow duration-[var(--gr-duration-fast)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]'\nexport const presetSelectedClass = 'ring-2 ring-[var(--gr-primary)] ring-offset-1 ring-offset-[var(--gr-popover)]'\n\nexport function grColorPickerTriggerClass(options: {\n size: GrColorPickerSize\n disabled: boolean\n invalid: boolean\n}): string {\n return [\n triggerBaseClass,\n triggerSizeClassBySize[options.size],\n options.disabled ? triggerDisabledClass : triggerEnabledClass,\n options.invalid ? triggerInvalidClass : '',\n ].filter(Boolean).join(' ')\n}\n\nexport function grColorPickerPanelClass(size: GrColorPickerSize): string {\n return [panelBaseClass, panelSizeClassBySize[size]].join(' ')\n}\n\nexport function grColorPickerPresetClass(selected: boolean): string {\n return [presetBaseClass, selected ? presetSelectedClass : ''].filter(Boolean).join(' ')\n}\n\nexport function grColorPickerAreaClass(options: {\n size: GrColorPickerSize\n locked: boolean\n}): string {\n return [\n areaBaseClass,\n areaHeightBySize[options.size],\n options.locked ? areaDisabledClass : areaEnabledClass,\n ].join(' ')\n}\n\nexport function grColorPickerEyedropperClass(size: GrColorPickerSize): string {\n return [eyedropperClass, eyedropperSizeBySize[size]].join(' ')\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n areaBaseClass,\n areaHeightBySize,\n areaDisabledClass,\n areaEnabledClass,\n areaInputClass,\n areaThumbClass,\n eyedropperClass,\n eyedropperIconClass,\n eyedropperSizeBySize,\n hexFieldClass,\n hexRowClass,\n panelBaseClass,\n panelSizeClassBySize,\n presetBaseClass,\n presetSelectedClass,\n presetsGridClass,\n previewClass,\n rowClass,\n rowLabelClass,\n rowValueClass,\n swatchBaseClass,\n swatchFillClass,\n triggerBaseClass,\n triggerDisabledClass,\n triggerEnabledClass,\n triggerInvalidClass,\n triggerSizeClassBySize,\n triggerSwatchSizeBySize,\n triggerValueClass,\n} from './grColorPickerStyles'\n\n// Классы из вычисляемых мап и литералов `.ts`-хелпера UnoCSS сканом не находит.\n//\n// `checkerClass` сюда не входит намеренно: это класс-маркер под собственный\n// `<style>` компонента, а не утилита — CSS из него не генерируется, и гейт\n// `documentedConfig` справедливо на такой записи падает.\nexport const grColorPickerSafelist = [...new Set([\n ...Object.values(triggerSizeClassBySize).flatMap(splitClassTokens),\n ...Object.values(triggerSwatchSizeBySize).flatMap(splitClassTokens),\n ...Object.values(panelSizeClassBySize).flatMap(splitClassTokens),\n ...Object.values(areaHeightBySize).flatMap(splitClassTokens),\n ...Object.values(eyedropperSizeBySize).flatMap(splitClassTokens),\n ...splitClassTokens(triggerBaseClass),\n ...splitClassTokens(triggerDisabledClass),\n ...splitClassTokens(triggerEnabledClass),\n ...splitClassTokens(triggerInvalidClass),\n ...splitClassTokens(triggerValueClass),\n ...splitClassTokens(swatchBaseClass),\n ...splitClassTokens(swatchFillClass),\n ...splitClassTokens(panelBaseClass),\n ...splitClassTokens(previewClass),\n ...splitClassTokens(areaBaseClass),\n ...splitClassTokens(areaEnabledClass),\n ...splitClassTokens(areaDisabledClass),\n ...splitClassTokens(areaThumbClass),\n ...splitClassTokens(areaInputClass),\n ...splitClassTokens(eyedropperClass),\n ...splitClassTokens(eyedropperIconClass),\n ...splitClassTokens(hexRowClass),\n ...splitClassTokens(hexFieldClass),\n ...splitClassTokens(rowClass),\n ...splitClassTokens(rowLabelClass),\n ...splitClassTokens(rowValueClass),\n ...splitClassTokens(presetsGridClass),\n ...splitClassTokens(presetBaseClass),\n ...splitClassTokens(presetSelectedClass),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grColorPickerSafelist } from './safelist'\n\nexport const grColorPickerConfig = defineGranularComponent(import.meta.url, {\n name: 'GrColorPicker',\n // Панель, слайдеры и поле рендерятся этим компонентом, поэтому их safelist\n // обязан приехать вместе с ним: иначе у гранулярного импорта панель встанет\n // без стилей, а сборка останется зелёной.\n dependencies: ['GrPopover', 'GrSlider', 'GrInput'],\n safelist: grColorPickerSafelist,\n})\n"],"mappings":";;;;;;;AAQA,IAAa,yBAA4D;CACvE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;AAGA,IAAa,0BAA6D;CACxE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,uBAA0D;CACrE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,mBAAmB;;AAGhC,IAAa,uBAAuB;AACpC,IAAa,sBAAsB;AACnC,IAAa,sBAAsB;AAEnC,IAAa,oBAAoB;;;;;AAMjC,IAAa,eAAe;AAE5B,IAAa,kBAAkB;;AAG/B,IAAa,kBAAkB;AAE/B,IAAa,iBAAiB;AAE9B,IAAa,eAAe;;;;;AAU5B,IAAa,mBAAsD;CACjE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;;;;;;AAQA,IAAa,gBAAgB;AAE7B,IAAa,mBAAmB;AAChC,IAAa,oBAAoB;;;;;;;;;;;AAYjC,IAAa,iBAAiB;;AAG9B,IAAa,iBAAiB;;AAG9B,IAAa,kBAAkB;AAE/B,IAAa,uBAA0D;CACrE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,sBAAsB;;AAGnC,IAAa,cAAc;AAC3B,IAAa,gBAAgB;AAE7B,IAAa,WAAW;AACxB,IAAa,gBAAgB;AAC7B,IAAa,gBAAgB;AAE7B,IAAa,mBAAmB;AAChC,IAAa,kBAAkB;AAC/B,IAAa,sBAAsB;AAEnC,SAAgB,0BAA0B,SAI/B;CACT,OAAO;EACL;EACA,uBAAuB,QAAQ;EAC/B,QAAQ,WAAW,uBAAuB;EAC1C,QAAQ,UAAU,sBAAsB;CAC1C,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;AAC5B;AAEA,SAAgB,wBAAwB,MAAiC;CACvE,OAAO,CAAC,gBAAgB,qBAAqB,KAAK,CAAC,CAAC,KAAK,GAAG;AAC9D;AAEA,SAAgB,yBAAyB,UAA2B;CAClE,OAAO,CAAC,iBAAiB,WAAW,sBAAsB,EAAE,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;AACxF;AAEA,SAAgB,uBAAuB,SAG5B;CACT,OAAO;EACL;EACA,iBAAiB,QAAQ;EACzB,QAAQ,SAAS,oBAAoB;CACvC,CAAC,CAAC,KAAK,GAAG;AACZ;AAEA,SAAgB,6BAA6B,MAAiC;CAC5E,OAAO,CAAC,iBAAiB,qBAAqB,KAAK,CAAC,CAAC,KAAK,GAAG;AAC/D;;;ACnHA,IAAa,wBAAwB,CAAC,mBAAG,IAAI,IAAI;CAC/C,GAAG,OAAO,OAAO,sBAAsB,CAAC,CAAC,QAAQ,gBAAgB;CACjE,GAAG,OAAO,OAAO,uBAAuB,CAAC,CAAC,QAAQ,gBAAgB;CAClE,GAAG,OAAO,OAAO,oBAAoB,CAAC,CAAC,QAAQ,gBAAgB;CAC/D,GAAG,OAAO,OAAO,gBAAgB,CAAC,CAAC,QAAQ,gBAAgB;CAC3D,GAAG,OAAO,OAAO,oBAAoB,CAAC,CAAC,QAAQ,gBAAgB;CAC/D,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,iBAAiB,mBAAmB;CACvC,GAAG,iBAAiB,mBAAmB;CACvC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,YAAY;CAChC,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,mBAAmB;CACvC,GAAG,iBAAiB,WAAW;CAC/B,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,QAAQ;CAC5B,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,mBAAmB;AACzC,CAAC,CAAC;;;AChEF,IAAa,sBAAsB,wBAAwB,YAAY,KAAK;CAC1E,MAAM;CAIN,cAAc;EAAC;EAAa;EAAY;CAAS;CACjD,UAAU;AACZ,CAAC"}
@@ -28,6 +28,33 @@ var SWIPE_THRESHOLD_RATIO = .25;
28
28
  function swipeOpacity(offset, threshold) {
29
29
  return Math.max(0, 1 - Math.abs(offset) / (threshold * 2));
30
30
  }
31
+ /**
32
+ * Куда растёт свёрнутая стопка: от своего угла вглубь экрана. У верхних углов
33
+ * карточки уходят вниз, у нижних — вверх. Иначе стопка вылезала бы за край.
34
+ */
35
+ var STACK_DIRECTION = {
36
+ "top-right": 1,
37
+ "top-left": 1,
38
+ "bottom-right": -1,
39
+ "bottom-left": -1
40
+ };
41
+ /**
42
+ * Насколько глубоко карточка лежит в стопке: `0` — передняя.
43
+ *
44
+ * Передняя всегда ближайшая к своему углу, а колонка отрисовывается сверху
45
+ * вниз: у верхних углов край держит первый тост, у нижних — последний.
46
+ */
47
+ function stackDepth(index, count, placement) {
48
+ return STACK_DIRECTION[placement] === 1 ? index : count - 1 - index;
49
+ }
50
+ /**
51
+ * Трансформ свёрнутой карточки. Считается в CSS, а не в JS, чтобы шаг стопки
52
+ * оставался настраиваемым темой: значения приходят из токенов, а арифметику
53
+ * делает `calc`.
54
+ */
55
+ function collapsedTransform(depth, placement) {
56
+ return `translateY(calc(var(--gr-toaster-stack-peek, 12px) * ${depth * STACK_DIRECTION[placement]})) scale(calc(1 - var(--gr-toaster-stack-scale, 0.05) * ${depth}))`;
57
+ }
31
58
  //#endregion
32
59
  //#region src/components/GrToaster/safelist.ts
33
60
  var grToasterSafelist = [...new Set(Object.values(PLACEMENT_CLASS).flatMap(splitClassTokens))];
@@ -39,4 +66,4 @@ var grToasterConfig = defineGranularComponent(import.meta.url, {
39
66
  safelist: grToasterSafelist
40
67
  });
41
68
  //#endregion
42
- export { SWIPE_THRESHOLD_RATIO as a, SWIPE_DIRECTION as i, grToasterSafelist as n, swipeOpacity as o, PLACEMENT_CLASS as r, grToasterConfig as t };
69
+ export { SWIPE_THRESHOLD_RATIO as a, swipeOpacity as c, SWIPE_DIRECTION as i, grToasterSafelist as n, collapsedTransform as o, PLACEMENT_CLASS as r, stackDepth as s, grToasterConfig as t };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-B7qZqiUB.js","names":[],"sources":["../../src/components/GrToaster/grToasterStyles.ts","../../src/components/GrToaster/safelist.ts","../../src/components/GrToaster/config.ts"],"sourcesContent":["export type GrToasterPlacement = 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left'\n\n// Классы позиционирования контейнера по углам экрана.\n// Вынесены в отдельный модуль, чтобы быть единственным источником истины\n// для шаблона `GrToaster.vue` и для safelist.\nexport const PLACEMENT_CLASS: Record<GrToasterPlacement, string> = {\n 'top-right': 'right-4 top-4',\n 'top-left': 'left-4 top-4',\n 'bottom-right': 'right-4 bottom-4',\n 'bottom-left': 'left-4 bottom-4',\n}\n\n/**\n * Куда смахивается тост: к своему краю экрана. Стек у правого края уходит\n * вправо, у левого — влево; смахивание «вглубь экрана» читалось бы как попытка\n * достать что-то из-под тоста, а не выбросить его.\n */\nexport const SWIPE_DIRECTION: Record<GrToasterPlacement, 1 | -1> = {\n 'top-right': 1,\n 'bottom-right': 1,\n 'top-left': -1,\n 'bottom-left': -1,\n}\n\n/** Доля ширины тоста, после которой отпускание закрывает, а не возвращает. */\nexport const SWIPE_THRESHOLD_RATIO = 0.25\n\n/** Нижняя граница порога: на узком стеке четверть ширины слишком мала. */\nexport const SWIPE_THRESHOLD_MIN_PX = 56\n\n/**\n * Сопротивление движению не в свою сторону. Жест остаётся живым — тост едет за\n * пальцем, — но закрыть его «наоборот» нельзя: это была бы вторая, неочевидная\n * дорога к тому же действию.\n */\nexport const SWIPE_RESISTANCE = 4\n\n/**\n * Куда уезжает отпущенный тост. Заведомо дальше своей ширины: он должен уйти\n * за край экрана, а не остановиться на полпути.\n */\nexport const SWIPE_FLY_OUT_PX = 600\n\n/**\n * Смещение, на котором тост становится полностью прозрачным, — вдвое дальше\n * порога. К моменту закрытия он уже наполовину растворён, и уход не выглядит\n * мгновенным исчезновением.\n */\nexport function swipeOpacity(offset: number, threshold: number): number {\n return Math.max(0, 1 - Math.abs(offset) / (threshold * 2))\n}\n\n/**\n * Куда растёт свёрнутая стопка: от своего угла вглубь экрана. У верхних углов\n * карточки уходят вниз, у нижних — вверх. Иначе стопка вылезала бы за край.\n */\nexport const STACK_DIRECTION: Record<GrToasterPlacement, 1 | -1> = {\n 'top-right': 1,\n 'top-left': 1,\n 'bottom-right': -1,\n 'bottom-left': -1,\n}\n\n/** Зазор между тостами в развёрнутой колонке; парен классу `gap-3` в шаблоне. */\nexport const STACK_GAP_PX = 12\n\n/**\n * Сколько карточек выглядывает из-под передней. Дальние держатся в DOM ради\n * скринридера, но не показываются: четвёртый край в стопке уже не читается как\n * глубина, а выглядит грязью у кромки.\n */\nexport const STACK_PEEK_DEPTH = 2\n\n/**\n * Насколько глубоко карточка лежит в стопке: `0` — передняя.\n *\n * Передняя всегда ближайшая к своему углу, а колонка отрисовывается сверху\n * вниз: у верхних углов край держит первый тост, у нижних — последний.\n */\nexport function stackDepth(index: number, count: number, placement: GrToasterPlacement): number {\n return STACK_DIRECTION[placement] === 1 ? index : count - 1 - index\n}\n\n/**\n * Трансформ свёрнутой карточки. Считается в CSS, а не в JS, чтобы шаг стопки\n * оставался настраиваемым темой: значения приходят из токенов, а арифметику\n * делает `calc`.\n */\nexport function collapsedTransform(depth: number, placement: GrToasterPlacement): string {\n const shift = depth * STACK_DIRECTION[placement]\n\n return `translateY(calc(var(--gr-toaster-stack-peek, 12px) * ${shift})) `\n + `scale(calc(1 - var(--gr-toaster-stack-scale, 0.05) * ${depth}))`\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport { PLACEMENT_CLASS } from './grToasterStyles'\n\n// В safelist попадают только те классы, которые приходят в шаблон динамически\n// (через `:class`/`PLACEMENT_CLASS`). Литералы из шаблона (`class=\"...\"`)\n// UnoCSS находит статическим сканом и дублировать их здесь не нужно.\nexport const grToasterSafelist = [...new Set(\n Object.values(PLACEMENT_CLASS).flatMap(splitClassTokens),\n)]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grToasterSafelist } from './safelist'\n\nexport const grToasterConfig = defineGranularComponent(import.meta.url, {\n name: 'GrToaster',\n dependencies: ['GrButton', 'GrIcon'],\n safelist: grToasterSafelist,\n})\n"],"mappings":";;;AAKA,IAAa,kBAAsD;CACjE,aAAa;CACb,YAAY;CACZ,gBAAgB;CAChB,eAAe;AACjB;;;;;;AAOA,IAAa,kBAAsD;CACjE,aAAa;CACb,gBAAgB;CAChB,YAAY;CACZ,eAAe;AACjB;;AAGA,IAAa,wBAAwB;;;;;;AAuBrC,SAAgB,aAAa,QAAgB,WAA2B;CACtE,OAAO,KAAK,IAAI,GAAG,IAAI,KAAK,IAAI,MAAM,KAAK,YAAY,EAAE;AAC3D;;;;;AAMA,IAAa,kBAAsD;CACjE,aAAa;CACb,YAAY;CACZ,gBAAgB;CAChB,eAAe;AACjB;;;;;;;AAkBA,SAAgB,WAAW,OAAe,OAAe,WAAuC;CAC9F,OAAO,gBAAgB,eAAe,IAAI,QAAQ,QAAQ,IAAI;AAChE;;;;;;AAOA,SAAgB,mBAAmB,OAAe,WAAuC;CAGvF,OAAO,wDAFO,QAAQ,gBAAgB,WAE+B,0DACT,MAAM;AACpE;;;ACvFA,IAAa,oBAAoB,CAAC,GAAG,IAAI,IACvC,OAAO,OAAO,eAAe,CAAC,CAAC,QAAQ,gBAAgB,CACzD,CAAC;;;ACJD,IAAa,kBAAkB,wBAAwB,YAAY,KAAK;CACtE,MAAM;CACN,cAAc,CAAC,YAAY,QAAQ;CACnC,UAAU;AACZ,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { defineGranularComponent } from "@feugene/unocss-preset-granular/contract";
2
+ //#region src/components/GrTabsWithPanels/config.ts
3
+ var grTabsWithPanelsConfig = defineGranularComponent(import.meta.url, {
4
+ name: "GrTabsWithPanels",
5
+ dependencies: ["GrTabPanels", "GrTabs"]
6
+ });
7
+ //#endregion
8
+ export { grTabsWithPanelsConfig as t };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-BBrPUEye.js","names":[],"sources":["../../src/components/GrTabsWithPanels/config.ts"],"sourcesContent":["import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nexport const grTabsWithPanelsConfig = defineGranularComponent(import.meta.url, {\n name: 'GrTabsWithPanels',\n dependencies: ['GrTabPanels', 'GrTabs'],\n})\n"],"mappings":";;AAEA,IAAa,yBAAyB,wBAAwB,YAAY,KAAK;CAC7E,MAAM;CACN,cAAc,CAAC,eAAe,QAAQ;AACxC,CAAC"}
@@ -0,0 +1,108 @@
1
+ import { n as splitClassTokens } from "./classTokens-8v2XC74x.js";
2
+ import { defineGranularComponent } from "@feugene/unocss-preset-granular/contract";
3
+ //#region src/components/GrOtpInput/grOtpInputStyles.ts
4
+ /**
5
+ * `w-fit` тут не украшение. Гридовый или флексовый родитель **блокифицирует**
6
+ * `inline-flex`, и ряд растягивался на всю колонку: сами ячейки оставались на
7
+ * месте, а невидимое поле поверх них ловило клики далеко справа от кода.
8
+ */
9
+ var rootBaseClass = "relative inline-flex w-fit items-center";
10
+ var rootGaps = {
11
+ xs: "gap-1",
12
+ sm: "gap-1.5",
13
+ md: "gap-2",
14
+ lg: "gap-2"
15
+ };
16
+ /**
17
+ * Настоящее поле лежит **поверх** ряда ячеек и невидимо: текст, каретка и
18
+ * подсветка выделения прозрачны, всё видимое рисуют ячейки.
19
+ *
20
+ * Оно остаётся полноценным `<input>`, и потому даром достаются вставка,
21
+ * автозаполнение кода из SMS, отмена, выделение и вся каретка со стрелками —
22
+ * см. `docs/components/GrOtpInput.md`.
23
+ *
24
+ * `z-index` не нужен: поле позиционировано, ячейки — нет, а позиционированный
25
+ * элемент и так красится поверх статичных соседей. Литерал слоя тут был бы
26
+ * лишней записью в шкале `docs/z-index.md`.
27
+ */
28
+ var fieldClass = "absolute inset-0 w-full cursor-text bg-transparent text-transparent [caret-color:transparent] outline-none selection:bg-transparent disabled:cursor-not-allowed";
29
+ var cellBaseClass = "relative inline-flex shrink-0 items-center justify-center rounded-[var(--gr-radius-control)] border [font-variant-numeric:tabular-nums] transition-colors duration-[var(--gr-duration-fast)]";
30
+ /**
31
+ * Сторона ячейки повторяет высоту `GrInput` на той же ступени: код стоит в
32
+ * форме рядом с полями, и ряд обязан садиться с ними в одну линию.
33
+ *
34
+ * Через хук, а не классом-числом: квадратная ячейка — решение оформления, и
35
+ * макет вправе сделать её шире.
36
+ */
37
+ var cellSizes = {
38
+ xs: "h-[var(--gr-otp-input-cell-size,1.75rem)] w-[var(--gr-otp-input-cell-size,1.75rem)] text-[length:var(--gr-control-text-xs)] leading-[var(--gr-control-leading-xs)]",
39
+ sm: "h-[var(--gr-otp-input-cell-size,2rem)] w-[var(--gr-otp-input-cell-size,2rem)] text-[length:var(--gr-control-text-sm)] leading-[var(--gr-control-leading-sm)]",
40
+ md: "h-[var(--gr-otp-input-cell-size,2.5rem)] w-[var(--gr-otp-input-cell-size,2.5rem)] text-[length:var(--gr-control-text-md)] leading-[var(--gr-control-leading-md)]",
41
+ lg: "h-[var(--gr-otp-input-cell-size,2.75rem)] w-[var(--gr-otp-input-cell-size,2.75rem)] text-[length:var(--gr-control-text-lg)] leading-[var(--gr-control-leading-lg)]"
42
+ };
43
+ var cellIdleClass = "border-[var(--gr-brd)] bg-[var(--gr-bg)] text-[var(--gr-fg)]";
44
+ /** Активная ячейка — та, в которой стоит каретка, и только пока поле в фокусе. */
45
+ var cellActiveClass = "border-[var(--gr-otp-input-active-brd,var(--gr-primary))] ring-2 ring-[var(--gr-ring)]";
46
+ /**
47
+ * Вердикт валидации красится своей ролью, а не декоративным `danger`: тема
48
+ * вправе развести подсветку по решению разработчика и ошибку формы.
49
+ */
50
+ var cellInvalidClass = "border-[var(--gr-invalid-brd)] bg-[var(--gr-bg)] text-[var(--gr-fg)]";
51
+ var cellInvalidActiveClass = "ring-2 ring-[var(--gr-invalid-ring)]";
52
+ /**
53
+ * Недоступность гасится фоном, а не `opacity`: прозрачность разбавляет
54
+ * выверенные на AA токены текста и роняет контраст кода.
55
+ */
56
+ var cellDisabledClass = "border-[var(--gr-disabled-brd)] bg-[var(--gr-disabled-bg)] text-[var(--gr-disabled-fg)]";
57
+ var placeholderClass = "text-[var(--gr-muted-fg)]";
58
+ /**
59
+ * Каретка рисуется своей, потому что настоящая скрыта вместе с текстом.
60
+ * Мигание — CSS-анимация, значит подчиняется глобальному клампу движения
61
+ * пакета (`docs/motion.md`), а не собственному таймеру.
62
+ */
63
+ var caretClass = "pointer-events-none absolute h-[1em] w-px bg-[var(--gr-otp-input-caret,var(--gr-primary))]";
64
+ var separatorClass = "select-none px-0.5 text-[var(--gr-muted-fg)]";
65
+ function grOtpInputRootClass(size) {
66
+ return [rootBaseClass, rootGaps[size]].join(" ");
67
+ }
68
+ function grOtpInputCellClass(options) {
69
+ const tokens = [cellBaseClass, cellSizes[options.size]];
70
+ if (options.disabled) tokens.push(cellDisabledClass);
71
+ else if (options.invalid) tokens.push(cellInvalidClass, options.active ? cellInvalidActiveClass : "");
72
+ else tokens.push(cellIdleClass, options.active ? cellActiveClass : "");
73
+ return tokens.filter(Boolean).join(" ");
74
+ }
75
+ //#endregion
76
+ //#region src/components/GrOtpInput/safelist.ts
77
+ var grOtpInputClassTokens = {
78
+ root: [...splitClassTokens(rootBaseClass), ...Object.values(rootGaps).flatMap(splitClassTokens)],
79
+ field: splitClassTokens(fieldClass),
80
+ cell: [
81
+ ...splitClassTokens(cellBaseClass),
82
+ ...Object.values(cellSizes).flatMap(splitClassTokens),
83
+ ...splitClassTokens(cellIdleClass),
84
+ ...splitClassTokens(cellActiveClass),
85
+ ...splitClassTokens(cellInvalidClass),
86
+ ...splitClassTokens(cellInvalidActiveClass),
87
+ ...splitClassTokens(cellDisabledClass)
88
+ ],
89
+ decoration: [
90
+ ...splitClassTokens(placeholderClass),
91
+ ...splitClassTokens(caretClass),
92
+ ...splitClassTokens(separatorClass)
93
+ ]
94
+ };
95
+ var grOtpInputSafelist = [.../* @__PURE__ */ new Set([
96
+ ...grOtpInputClassTokens.root,
97
+ ...grOtpInputClassTokens.field,
98
+ ...grOtpInputClassTokens.cell,
99
+ ...grOtpInputClassTokens.decoration
100
+ ])];
101
+ //#endregion
102
+ //#region src/components/GrOtpInput/config.ts
103
+ var grOtpInputConfig = defineGranularComponent(import.meta.url, {
104
+ name: "GrOtpInput",
105
+ safelist: grOtpInputSafelist
106
+ });
107
+ //#endregion
108
+ export { grOtpInputCellClass as a, separatorClass as c, fieldClass as i, grOtpInputSafelist as n, grOtpInputRootClass as o, caretClass as r, placeholderClass as s, grOtpInputConfig as t };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-BBtBQE3s.js","names":[],"sources":["../../src/components/GrOtpInput/grOtpInputStyles.ts","../../src/components/GrOtpInput/safelist.ts","../../src/components/GrOtpInput/config.ts"],"sourcesContent":["import type { GrComponentSize } from '../shared/sizes'\n\nexport type GrOtpInputSize = GrComponentSize\n\n/**\n * `w-fit` тут не украшение. Гридовый или флексовый родитель **блокифицирует**\n * `inline-flex`, и ряд растягивался на всю колонку: сами ячейки оставались на\n * месте, а невидимое поле поверх них ловило клики далеко справа от кода.\n */\nexport const rootBaseClass = 'relative inline-flex w-fit items-center'\n\nexport const rootGaps: Record<GrOtpInputSize, string> = {\n xs: 'gap-1',\n sm: 'gap-1.5',\n md: 'gap-2',\n lg: 'gap-2',\n}\n\n/**\n * Настоящее поле лежит **поверх** ряда ячеек и невидимо: текст, каретка и\n * подсветка выделения прозрачны, всё видимое рисуют ячейки.\n *\n * Оно остаётся полноценным `<input>`, и потому даром достаются вставка,\n * автозаполнение кода из SMS, отмена, выделение и вся каретка со стрелками —\n * см. `docs/components/GrOtpInput.md`.\n *\n * `z-index` не нужен: поле позиционировано, ячейки — нет, а позиционированный\n * элемент и так красится поверх статичных соседей. Литерал слоя тут был бы\n * лишней записью в шкале `docs/z-index.md`.\n */\nexport const fieldClass = 'absolute inset-0 w-full cursor-text bg-transparent text-transparent [caret-color:transparent] outline-none selection:bg-transparent disabled:cursor-not-allowed'\n\nexport const cellBaseClass = 'relative inline-flex shrink-0 items-center justify-center rounded-[var(--gr-radius-control)] border [font-variant-numeric:tabular-nums] transition-colors duration-[var(--gr-duration-fast)]'\n\n/**\n * Сторона ячейки повторяет высоту `GrInput` на той же ступени: код стоит в\n * форме рядом с полями, и ряд обязан садиться с ними в одну линию.\n *\n * Через хук, а не классом-числом: квадратная ячейка — решение оформления, и\n * макет вправе сделать её шире.\n */\nexport const cellSizes: Record<GrOtpInputSize, string> = {\n xs: 'h-[var(--gr-otp-input-cell-size,1.75rem)] w-[var(--gr-otp-input-cell-size,1.75rem)] text-[length:var(--gr-control-text-xs)] leading-[var(--gr-control-leading-xs)]',\n sm: 'h-[var(--gr-otp-input-cell-size,2rem)] w-[var(--gr-otp-input-cell-size,2rem)] text-[length:var(--gr-control-text-sm)] leading-[var(--gr-control-leading-sm)]',\n md: 'h-[var(--gr-otp-input-cell-size,2.5rem)] w-[var(--gr-otp-input-cell-size,2.5rem)] text-[length:var(--gr-control-text-md)] leading-[var(--gr-control-leading-md)]',\n lg: 'h-[var(--gr-otp-input-cell-size,2.75rem)] w-[var(--gr-otp-input-cell-size,2.75rem)] text-[length:var(--gr-control-text-lg)] leading-[var(--gr-control-leading-lg)]',\n}\n\nexport const cellIdleClass = 'border-[var(--gr-brd)] bg-[var(--gr-bg)] text-[var(--gr-fg)]'\n\n/** Активная ячейка — та, в которой стоит каретка, и только пока поле в фокусе. */\nexport const cellActiveClass = 'border-[var(--gr-otp-input-active-brd,var(--gr-primary))] ring-2 ring-[var(--gr-ring)]'\n\n/**\n * Вердикт валидации красится своей ролью, а не декоративным `danger`: тема\n * вправе развести подсветку по решению разработчика и ошибку формы.\n */\nexport const cellInvalidClass = 'border-[var(--gr-invalid-brd)] bg-[var(--gr-bg)] text-[var(--gr-fg)]'\n\nexport const cellInvalidActiveClass = 'ring-2 ring-[var(--gr-invalid-ring)]'\n\n/**\n * Недоступность гасится фоном, а не `opacity`: прозрачность разбавляет\n * выверенные на AA токены текста и роняет контраст кода.\n */\nexport const cellDisabledClass = 'border-[var(--gr-disabled-brd)] bg-[var(--gr-disabled-bg)] text-[var(--gr-disabled-fg)]'\n\nexport const placeholderClass = 'text-[var(--gr-muted-fg)]'\n\n/**\n * Каретка рисуется своей, потому что настоящая скрыта вместе с текстом.\n * Мигание — CSS-анимация, значит подчиняется глобальному клампу движения\n * пакета (`docs/motion.md`), а не собственному таймеру.\n */\nexport const caretClass = 'pointer-events-none absolute h-[1em] w-px bg-[var(--gr-otp-input-caret,var(--gr-primary))]'\n\nexport const separatorClass = 'select-none px-0.5 text-[var(--gr-muted-fg)]'\n\nexport function grOtpInputRootClass(size: GrOtpInputSize): string {\n return [rootBaseClass, rootGaps[size]].join(' ')\n}\n\ntype GrOtpInputCellClassOptions = {\n size: GrOtpInputSize\n active: boolean\n invalid: boolean\n disabled: boolean\n}\n\nexport function grOtpInputCellClass(options: GrOtpInputCellClassOptions): string {\n const tokens = [cellBaseClass, cellSizes[options.size]]\n\n if (options.disabled)\n tokens.push(cellDisabledClass)\n else if (options.invalid)\n tokens.push(cellInvalidClass, options.active ? cellInvalidActiveClass : '')\n else\n tokens.push(cellIdleClass, options.active ? cellActiveClass : '')\n\n return tokens.filter(Boolean).join(' ')\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n caretClass,\n cellActiveClass,\n cellBaseClass,\n cellDisabledClass,\n cellIdleClass,\n cellInvalidActiveClass,\n cellInvalidClass,\n cellSizes,\n fieldClass,\n placeholderClass,\n rootBaseClass,\n rootGaps,\n separatorClass,\n} from './grOtpInputStyles'\n\nexport const grOtpInputClassTokens = {\n root: [...splitClassTokens(rootBaseClass), ...Object.values(rootGaps).flatMap(splitClassTokens)],\n field: splitClassTokens(fieldClass),\n cell: [\n ...splitClassTokens(cellBaseClass),\n ...Object.values(cellSizes).flatMap(splitClassTokens),\n ...splitClassTokens(cellIdleClass),\n ...splitClassTokens(cellActiveClass),\n ...splitClassTokens(cellInvalidClass),\n ...splitClassTokens(cellInvalidActiveClass),\n ...splitClassTokens(cellDisabledClass),\n ],\n decoration: [\n ...splitClassTokens(placeholderClass),\n ...splitClassTokens(caretClass),\n ...splitClassTokens(separatorClass),\n ],\n} as const\n\nexport const grOtpInputSafelist = [...new Set([\n ...grOtpInputClassTokens.root,\n ...grOtpInputClassTokens.field,\n ...grOtpInputClassTokens.cell,\n ...grOtpInputClassTokens.decoration,\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grOtpInputSafelist } from './safelist'\n\nexport const grOtpInputConfig = defineGranularComponent(import.meta.url, {\n name: 'GrOtpInput',\n safelist: grOtpInputSafelist,\n})\n"],"mappings":";;;;;;;;AASA,IAAa,gBAAgB;AAE7B,IAAa,WAA2C;CACtD,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;;;;;;;;;;;;AAcA,IAAa,aAAa;AAE1B,IAAa,gBAAgB;;;;;;;;AAS7B,IAAa,YAA4C;CACvD,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,gBAAgB;;AAG7B,IAAa,kBAAkB;;;;;AAM/B,IAAa,mBAAmB;AAEhC,IAAa,yBAAyB;;;;;AAMtC,IAAa,oBAAoB;AAEjC,IAAa,mBAAmB;;;;;;AAOhC,IAAa,aAAa;AAE1B,IAAa,iBAAiB;AAE9B,SAAgB,oBAAoB,MAA8B;CAChE,OAAO,CAAC,eAAe,SAAS,KAAK,CAAC,CAAC,KAAK,GAAG;AACjD;AASA,SAAgB,oBAAoB,SAA6C;CAC/E,MAAM,SAAS,CAAC,eAAe,UAAU,QAAQ,KAAK;CAEtD,IAAI,QAAQ,UACV,OAAO,KAAK,iBAAiB;MAC1B,IAAI,QAAQ,SACf,OAAO,KAAK,kBAAkB,QAAQ,SAAS,yBAAyB,EAAE;MAE1E,OAAO,KAAK,eAAe,QAAQ,SAAS,kBAAkB,EAAE;CAElE,OAAO,OAAO,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;AACxC;;;ACnFA,IAAa,wBAAwB;CACnC,MAAM,CAAC,GAAG,iBAAiB,aAAa,GAAG,GAAG,OAAO,OAAO,QAAQ,CAAC,CAAC,QAAQ,gBAAgB,CAAC;CAC/F,OAAO,iBAAiB,UAAU;CAClC,MAAM;EACJ,GAAG,iBAAiB,aAAa;EACjC,GAAG,OAAO,OAAO,SAAS,CAAC,CAAC,QAAQ,gBAAgB;EACpD,GAAG,iBAAiB,aAAa;EACjC,GAAG,iBAAiB,eAAe;EACnC,GAAG,iBAAiB,gBAAgB;EACpC,GAAG,iBAAiB,sBAAsB;EAC1C,GAAG,iBAAiB,iBAAiB;CACvC;CACA,YAAY;EACV,GAAG,iBAAiB,gBAAgB;EACpC,GAAG,iBAAiB,UAAU;EAC9B,GAAG,iBAAiB,cAAc;CACpC;AACF;AAEA,IAAa,qBAAqB,CAAC,mBAAG,IAAI,IAAI;CAC5C,GAAG,sBAAsB;CACzB,GAAG,sBAAsB;CACzB,GAAG,sBAAsB;CACzB,GAAG,sBAAsB;AAC3B,CAAC,CAAC;;;ACrCF,IAAa,mBAAmB,wBAAwB,YAAY,KAAK;CACvE,MAAM;CACN,UAAU;AACZ,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { n as splitClassTokens, t as flattenTransitionTokens } from "./classTokens-8v2XC74x.js";
2
- import { n as panelPopTransition } from "./overlayPanelSurface-BKeMhRx4.js";
3
- import { a as overlayOriginClassByPlacement } from "./grPopoverStyles-CYAeO3Ov.js";
2
+ import { t as panelPopTransition } from "./overlayTransition-C0FDMx7Q.js";
3
+ import { a as overlayOriginClassByPlacement } from "./grPopoverStyles-CncEkiPu.js";
4
4
  import { defineGranularComponent } from "@feugene/unocss-preset-granular/contract";
5
5
  //#region src/components/GrDropdown/safelist.ts
6
6
  var grDropdownSafelist = [.../* @__PURE__ */ new Set([
@@ -1 +1 @@
1
- {"version":3,"file":"config-CT4lP6S4.js","names":[],"sources":["../../src/components/GrDropdown/safelist.ts","../../src/components/GrDropdown/config.ts"],"sourcesContent":["import { flattenTransitionTokens, splitClassTokens } from '../shared/classTokens'\nimport { overlayOriginClassByPlacement } from '../shared/overlayOrigin'\nimport { panelPopTransition } from '../shared/overlayTransition'\nimport {\n dropdownContentBaseClass,\n} from './grDropdownStyles'\n\n// И динамические токены (`resolvedPlacement`), и литералы отделки панели:\n// `grDropdownStyles.ts` уезжает в общий `dist/chunks/`, вне области скана\n// компонента — гейт `src/__tests__/safelist.test.ts`.\nexport const grDropdownSafelist = [...new Set([\n ...Object.values(overlayOriginClassByPlacement).flatMap(splitClassTokens),\n ...splitClassTokens(dropdownContentBaseClass),\n // Набор перехода панели общий на пять компонентов и живёт безадресным\n // модулем в `shared/`: в `dist` он лежит в общем чанке, который пресет не\n // сканирует, поэтому объявить его обязан каждый потребитель.\n ...flattenTransitionTokens(panelPopTransition),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grDropdownSafelist } from './safelist'\n\nexport const grDropdownConfig = defineGranularComponent(import.meta.url, {\n name: 'GrDropdown',\n safelist: grDropdownSafelist,\n // Панель, слой и портал рисует `GrPopover`: без ребра графа потребитель,\n // выбравший одно меню, получил бы панель без поверхности и без фона.\n dependencies: ['GrPopover'],\n})\n"],"mappings":";;;;;AAUA,IAAa,qBAAqB,CAAC,mBAAG,IAAI,IAAI;CAC5C,GAAG,OAAO,OAAO,6BAA6B,CAAC,CAAC,QAAQ,gBAAgB;CACxE,GAAG,iBAAA,KAAyC;CAI5C,GAAG,wBAAwB,kBAAkB;AAC/C,CAAC,CAAC;;;ACbF,IAAa,mBAAmB,wBAAwB,YAAY,KAAK;CACvE,MAAM;CACN,UAAU;CAGV,cAAc,CAAC,WAAW;AAC5B,CAAC"}
1
+ {"version":3,"file":"config-BOCzHqWh.js","names":[],"sources":["../../src/components/GrDropdown/safelist.ts","../../src/components/GrDropdown/config.ts"],"sourcesContent":["import { flattenTransitionTokens, splitClassTokens } from '../shared/classTokens'\nimport { overlayOriginClassByPlacement } from '../shared/overlayOrigin'\nimport { panelPopTransition } from '../shared/overlayTransition'\nimport {\n dropdownContentBaseClass,\n} from './grDropdownStyles'\n\n// И динамические токены (`resolvedPlacement`), и литералы отделки панели:\n// `grDropdownStyles.ts` уезжает в общий `dist/chunks/`, вне области скана\n// компонента — гейт `src/__tests__/safelist.test.ts`.\nexport const grDropdownSafelist = [...new Set([\n ...Object.values(overlayOriginClassByPlacement).flatMap(splitClassTokens),\n ...splitClassTokens(dropdownContentBaseClass),\n // Набор перехода панели общий на пять компонентов и живёт безадресным\n // модулем в `shared/`: в `dist` он лежит в общем чанке, который пресет не\n // сканирует, поэтому объявить его обязан каждый потребитель.\n ...flattenTransitionTokens(panelPopTransition),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grDropdownSafelist } from './safelist'\n\nexport const grDropdownConfig = defineGranularComponent(import.meta.url, {\n name: 'GrDropdown',\n safelist: grDropdownSafelist,\n // Панель, слой и портал рисует `GrPopover`: без ребра графа потребитель,\n // выбравший одно меню, получил бы панель без поверхности и без фона.\n dependencies: ['GrPopover'],\n})\n"],"mappings":";;;;;AAUA,IAAa,qBAAqB,CAAC,mBAAG,IAAI,IAAI;CAC5C,GAAG,OAAO,OAAO,6BAA6B,CAAC,CAAC,QAAQ,gBAAgB;CACxE,GAAG,iBAAA,KAAyC;CAI5C,GAAG,wBAAwB,kBAAkB;AAC/C,CAAC,CAAC;;;ACbF,IAAa,mBAAmB,wBAAwB,YAAY,KAAK;CACvE,MAAM;CACN,UAAU;CAGV,cAAc,CAAC,WAAW;AAC5B,CAAC"}
@@ -1,28 +1,6 @@
1
1
  import { n as splitClassTokens } from "./classTokens-8v2XC74x.js";
2
+ import { n as panelWidths, t as panelSizes } from "./grTooltipStyles-CtbGEEGV.js";
2
3
  import { defineGranularComponent } from "@feugene/unocss-preset-granular/contract";
3
- //#region src/components/GrTooltip/grTooltipStyles.ts
4
- /** Панель подсказки: кегль и внутренние поля. */
5
- var panelSizes = {
6
- xs: "px-1.5 py-0.5 text-[length:var(--gr-control-text-3xs)] leading-[var(--gr-control-leading-3xs)]",
7
- sm: "px-2 py-1 text-[length:var(--gr-control-text-2xs)] leading-[var(--gr-control-leading-2xs)]",
8
- md: "px-2 py-1 text-[length:var(--gr-control-text-xs)] leading-[var(--gr-control-leading-xs)]",
9
- lg: "px-3 py-1.5 text-[length:var(--gr-control-text-md)] leading-[var(--gr-control-leading-md)]"
10
- };
11
- /** Ширина панели растёт вместе с кеглем — иначе на `lg` строка рвётся втрое. */
12
- var panelWidths = {
13
- xs: "max-w-[220px]",
14
- sm: "max-w-[260px]",
15
- md: "max-w-[280px]",
16
- lg: "max-w-[340px]"
17
- };
18
- /** Дефолтный триггер — иконка info из шкалы `GrIcon` (`xs…lg` → `14…20px`). */
19
- var triggerIconSizes = {
20
- xs: "xs",
21
- sm: "xs",
22
- md: "sm",
23
- lg: "md"
24
- };
25
- //#endregion
26
4
  //#region src/components/GrTooltip/safelist.ts
27
5
  var grTooltipSafelist = [.../* @__PURE__ */ new Set([...Object.values(panelSizes).flatMap(splitClassTokens), ...Object.values(panelWidths).flatMap(splitClassTokens)])];
28
6
  //#endregion
@@ -42,4 +20,4 @@ var grTooltipConfig = defineGranularComponent(import.meta.url, {
42
20
  safelist: grTooltipSafelist
43
21
  });
44
22
  //#endregion
45
- export { triggerIconSizes as a, panelWidths as i, grTooltipSafelist as n, panelSizes as r, grTooltipConfig as t };
23
+ export { grTooltipSafelist as n, grTooltipConfig as t };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-BP1ktzwh.js","names":[],"sources":["../../src/components/GrTooltip/safelist.ts","../../src/components/GrTooltip/config.ts"],"sourcesContent":["import { splitClassTokens } from '../shared/classTokens'\nimport { panelSizes, panelWidths } from './grTooltipStyles'\n\nexport const grTooltipSafelist = [...new Set([\n ...Object.values(panelSizes).flatMap(splitClassTokens),\n ...Object.values(panelWidths).flatMap(splitClassTokens),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grTooltipSafelist } from './safelist'\n\nexport const grTooltipConfig = defineGranularComponent(import.meta.url, {\n name: 'GrTooltip',\n /**\n * Слой панели задаёт `useFloating` → `floatingLayerZIndex`: имя приходит\n * параметром, а `var()` собирается в рантайме (`overlayStack.ts`). В\n * исходниках `var(--gr-z-*)` не встречается, статический скан их не видит.\n *\n * `gr-z-modal` — из ветки `calc(var(--gr-z-modal) + N)`: панель, открытая\n * внутри модалки, встаёт над ней.\n */\n dynamicTokens: ['gr-z-tooltip', 'gr-z-modal'],\n dependencies: ['GrIcon'],\n safelist: grTooltipSafelist,\n})\n"],"mappings":";;;;AAGA,IAAa,oBAAoB,CAAC,mBAAG,IAAI,IAAI,CAC3C,GAAG,OAAO,OAAO,UAAU,CAAC,CAAC,QAAQ,gBAAgB,GACrD,GAAG,OAAO,OAAO,WAAW,CAAC,CAAC,QAAQ,gBAAgB,CACxD,CAAC,CAAC;;;ACFF,IAAa,kBAAkB,wBAAwB,YAAY,KAAK;CACtE,MAAM;;;;;;;;;CASN,eAAe,CAAC,gBAAgB,YAAY;CAC5C,cAAc,CAAC,QAAQ;CACvB,UAAU;AACZ,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { n as splitClassTokens } from "./classTokens-8v2XC74x.js";
2
+ import { a as handleDisabledClass, c as listClass, d as rowFocusClass, f as rowGrabbedClass, i as handleClass, l as rowDisabledClass, n as dividedClass, o as indicatorAfterClass, p as rowLayoutClass, r as emptyClass, s as indicatorBeforeClass, t as contentClass, u as rowDraggingClass } from "./grSortableListStyles-CxieDmpe.js";
3
+ import { defineGranularComponent } from "@feugene/unocss-preset-granular/contract";
4
+ //#region src/components/GrSortableList/safelist.ts
5
+ var grSortableListSafelist = [.../* @__PURE__ */ new Set([
6
+ ...Object.values(listClass).flatMap(splitClassTokens),
7
+ ...splitClassTokens(rowLayoutClass),
8
+ ...splitClassTokens(rowFocusClass),
9
+ ...splitClassTokens(rowDraggingClass),
10
+ ...splitClassTokens(rowGrabbedClass),
11
+ ...splitClassTokens(rowDisabledClass),
12
+ ...splitClassTokens(dividedClass),
13
+ ...splitClassTokens(emptyClass),
14
+ ...splitClassTokens(handleClass),
15
+ ...splitClassTokens(handleDisabledClass),
16
+ ...splitClassTokens(contentClass),
17
+ ...splitClassTokens(indicatorBeforeClass),
18
+ ...splitClassTokens(indicatorAfterClass)
19
+ ])];
20
+ //#endregion
21
+ //#region src/components/GrSortableList/config.ts
22
+ var grSortableListConfig = defineGranularComponent(import.meta.url, {
23
+ name: "GrSortableList",
24
+ safelist: grSortableListSafelist,
25
+ dependencies: ["GrCard"]
26
+ });
27
+ //#endregion
28
+ export { grSortableListSafelist as n, grSortableListConfig as t };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-BTxmdRzT.js","names":[],"sources":["../../src/components/GrSortableList/safelist.ts","../../src/components/GrSortableList/config.ts"],"sourcesContent":["import { splitClassTokens } from '../shared/classTokens'\nimport {\n contentClass,\n dividedClass,\n emptyClass,\n handleClass,\n handleDisabledClass,\n indicatorAfterClass,\n indicatorBeforeClass,\n listClass,\n rowDisabledClass,\n rowDraggingClass,\n rowFocusClass,\n rowGrabbedClass,\n rowLayoutClass,\n} from './grSortableListStyles'\n\nexport const grSortableListSafelist = [...new Set([\n ...Object.values(listClass).flatMap(splitClassTokens),\n ...splitClassTokens(rowLayoutClass),\n ...splitClassTokens(rowFocusClass),\n ...splitClassTokens(rowDraggingClass),\n ...splitClassTokens(rowGrabbedClass),\n ...splitClassTokens(rowDisabledClass),\n ...splitClassTokens(dividedClass),\n ...splitClassTokens(emptyClass),\n ...splitClassTokens(handleClass),\n ...splitClassTokens(handleDisabledClass),\n ...splitClassTokens(contentClass),\n ...splitClassTokens(indicatorBeforeClass),\n ...splitClassTokens(indicatorAfterClass),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grSortableListSafelist } from './safelist'\n\nexport const grSortableListConfig = defineGranularComponent(import.meta.url, {\n name: 'GrSortableList',\n safelist: grSortableListSafelist,\n dependencies: ['GrCard'],\n})\n"],"mappings":";;;;AAiBA,IAAa,yBAAyB,CAAC,mBAAG,IAAI,IAAI;CAChD,GAAG,OAAO,OAAO,SAAS,CAAC,CAAC,QAAQ,gBAAgB;CACpD,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,iBAAiB,YAAY;CAChC,GAAG,iBAAiB,UAAU;CAC9B,GAAG,iBAAiB,WAAW;CAC/B,GAAG,iBAAiB,mBAAmB;CACvC,GAAG,iBAAiB,YAAY;CAChC,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,iBAAiB,mBAAmB;AACzC,CAAC,CAAC;;;AC3BF,IAAa,uBAAuB,wBAAwB,YAAY,KAAK;CAC3E,MAAM;CACN,UAAU;CACV,cAAc,CAAC,QAAQ;AACzB,CAAC"}
@@ -21,15 +21,19 @@ var deltaRootClass = "inline-flex items-baseline tabular-nums";
21
21
  * оказывается мельче окружающих слов.
22
22
  *
23
23
  * Дефолт `GrValue` рассчитан на плитку, где величина крупная и приписке есть
24
- * куда уменьшаться. Здесь он переопределяется — ровно теми же токенами, что
25
- * доступны потребителю.
24
+ * куда уменьшаться. Здесь он переопределяется.
25
+ *
26
+ * **Переопределение ссылается на свои хуки, а не задаёт значение.** Стиль
27
+ * применяется инлайном, а инлайн бьёт любой CSS потребителя: напиши тут
28
+ * `currentColor` — и вернуть приглушённый суффикс у дельты стало бы нечем.
29
+ * Ссылка на `--gr-delta-suffix-*` оставляет решение за тем, кто его задал.
26
30
  *
27
31
  * `currentColor` и `1em`, а не `inherit`: у пользовательского свойства
28
32
  * `inherit` значит «наследовать саму переменную», то есть ничего.
29
33
  */
30
34
  var deltaValueStyle = {
31
- "--gr-value-suffix-color": "currentColor",
32
- "--gr-value-suffix-size": "1em"
35
+ "--gr-value-suffix-color": "var(--gr-delta-suffix-color, currentColor)",
36
+ "--gr-value-suffix-size": "var(--gr-delta-suffix-size, 1em)"
33
37
  };
34
38
  /** Суффикс — единица измерения, и от числа он отбивается: «−15 %», «120 мс». */
35
39
  /**
@@ -39,8 +43,11 @@ var deltaValueStyle = {
39
43
  * пиксельная лестница оставила бы стрелку 14-пиксельной внутри заголовка.
40
44
  * Чуть меньше единицы: стрелка декоративна, и равный вес спорил бы с самим
41
45
  * числом.
46
+ *
47
+ * Отбивка **логическая** (`me-`), как у приписок `GrValue`: физический
48
+ * `margin-right` в RTL поставил бы стрелку зазором не с той стороны.
42
49
  */
43
- var deltaArrowClass = "mr-0.5 self-center shrink-0 h-[0.875em] w-[0.875em]";
50
+ var deltaArrowClass = "me-[var(--gr-delta-arrow-gap,0.125rem)] self-center shrink-0 h-[var(--gr-delta-arrow-size,0.875em)] w-[var(--gr-delta-arrow-size,0.875em)]";
44
51
  var deltaToneClass = {
45
52
  success: "text-[var(--gr-success-text)]",
46
53
  danger: "text-[var(--gr-danger-text)]",
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-Bk52xd5l.js","names":[],"sources":["../../src/components/GrDelta/grDeltaStyles.ts","../../src/components/GrDelta/safelist.ts","../../src/components/GrDelta/config.ts"],"sourcesContent":["import type { GrComponentSize } from '../shared/sizes'\n\nimport type { GrDeltaTone } from './deltaTone'\n\n/**\n * Классы `GrDelta`.\n *\n * Тон перечислен целиком по одному литералу на ветку: UnoCSS сканирует исходный\n * текст файла, и собранное шаблонной строкой имя (`text-[var(--gr-${tone}-text)]`)\n * уехало бы в CSS литералом.\n */\n\n/**\n * Величина стоит в строке текста, поэтому наследует её кегль и выравнивание.\n *\n * Общего `gap` нет намеренно: префикс — это валюта, и «$ 12,50» с зазором\n * читается как опечатка. Отбивку получают только стрелка и суффикс.\n */\nexport const deltaRootClass = 'inline-flex items-baseline tabular-nums'\n\n/**\n * Величина стоит **в строке текста**, и приписка при ней приглушения не\n * получает: «−15 %» набирается кеглем и цветом строки целиком, иначе процент\n * оказывается мельче окружающих слов.\n *\n * Дефолт `GrValue` рассчитан на плитку, где величина крупная и приписке есть\n * куда уменьшаться. Здесь он переопределяется.\n *\n * **Переопределение ссылается на свои хуки, а не задаёт значение.** Стиль\n * применяется инлайном, а инлайн бьёт любой CSS потребителя: напиши тут\n * `currentColor` — и вернуть приглушённый суффикс у дельты стало бы нечем.\n * Ссылка на `--gr-delta-suffix-*` оставляет решение за тем, кто его задал.\n *\n * `currentColor` и `1em`, а не `inherit`: у пользовательского свойства\n * `inherit` значит «наследовать саму переменную», то есть ничего.\n */\nexport const deltaValueStyle: Record<string, string> = {\n '--gr-value-suffix-color': 'var(--gr-delta-suffix-color, currentColor)',\n '--gr-value-suffix-size': 'var(--gr-delta-suffix-size, 1em)',\n}\n\n/** Суффикс — единица измерения, и от числа он отбивается: «−15 %», «120 мс». */\n\n/**\n * Стрелка выравнивается по строке, а не по базовой линии: у svg её нет.\n *\n * Размер — в `em`, потому что на ступени `md` кегля у величины нет вовсе:\n * пиксельная лестница оставила бы стрелку 14-пиксельной внутри заголовка.\n * Чуть меньше единицы: стрелка декоративна, и равный вес спорил бы с самим\n * числом.\n *\n * Отбивка **логическая** (`me-`), как у приписок `GrValue`: физический\n * `margin-right` в RTL поставил бы стрелку зазором не с той стороны.\n */\nexport const deltaArrowClass = 'me-[var(--gr-delta-arrow-gap,0.125rem)] self-center shrink-0 h-[var(--gr-delta-arrow-size,0.875em)] w-[var(--gr-delta-arrow-size,0.875em)]'\n\nexport const deltaToneClass: Record<GrDeltaTone, string> = {\n success: 'text-[var(--gr-success-text)]',\n danger: 'text-[var(--gr-danger-text)]',\n neutral: 'text-[var(--gr-muted-fg)]',\n}\n\n/** Прочерк вместо величины: тона у него нет, но и цвет основного текста ему не нужен. */\nexport const deltaEmptyClass = 'text-[var(--gr-muted-fg)]'\n\n/**\n * `md` пуст намеренно: на ступени по умолчанию величина набирается кеглем той\n * строки, в которой стоит. Фиксированные 13 px разъезжаются и вверх, и вниз —\n * внутри заголовка величина оставалась бы мелкой, в подписи под графиком\n * крупной. Ступени по краям остаются явными: они нужны, когда величина стоит\n * не в предложении, а в ряду с контролами.\n */\nexport const deltaSizeClass: Record<GrComponentSize, string> = {\n xs: 'text-[length:var(--gr-control-text-xs)] leading-[var(--gr-control-leading-xs)]',\n sm: 'text-[length:var(--gr-control-text-sm)] leading-[var(--gr-control-leading-sm)]',\n md: '',\n lg: 'text-[length:var(--gr-control-text-lg)] leading-[var(--gr-control-leading-lg)]',\n}\n","import { splitClassTokens } from '../shared/classTokens'\n\nimport {\n deltaArrowClass,\n deltaEmptyClass,\n deltaRootClass,\n deltaSizeClass,\n deltaToneClass,\n} from './grDeltaStyles'\n\n// Классы из вычисляемых мап (тон, размер) UnoCSS сканом не находит — только\n// safelist. Литералы хелпера туда же: на сборке он уезжает в общий чанк.\nexport const grDeltaSafelist = [...new Set([\n ...splitClassTokens(deltaRootClass),\n ...splitClassTokens(deltaEmptyClass),\n ...splitClassTokens(deltaArrowClass),\n ...Object.values(deltaToneClass).flatMap(splitClassTokens),\n ...Object.values(deltaSizeClass).flatMap(splitClassTokens),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grDeltaSafelist } from './safelist'\n\nexport const grDeltaConfig = defineGranularComponent(import.meta.url, {\n name: 'GrDelta',\n dependencies: ['GrValue'],\n safelist: grDeltaSafelist,\n})\n"],"mappings":";;;;;;;;;;;;;;;;AAkBA,IAAa,iBAAiB;;;;;;;;;;;;;;;;;AAkB9B,IAAa,kBAA0C;CACrD,2BAA2B;CAC3B,0BAA0B;AAC5B;;;;;;;;;;;;;AAeA,IAAa,kBAAkB;AAE/B,IAAa,iBAA8C;CACzD,SAAS;CACT,QAAQ;CACR,SAAS;AACX;;AAGA,IAAa,kBAAkB;;;;;;;;AAS/B,IAAa,iBAAkD;CAC7D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;;ACjEA,IAAa,kBAAkB,CAAC,mBAAG,IAAI,IAAI;CACzC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,eAAe;CACnC,GAAG,OAAO,OAAO,cAAc,CAAC,CAAC,QAAQ,gBAAgB;CACzD,GAAG,OAAO,OAAO,cAAc,CAAC,CAAC,QAAQ,gBAAgB;AAC3D,CAAC,CAAC;;;ACdF,IAAa,gBAAgB,wBAAwB,YAAY,KAAK;CACpE,MAAM;CACN,cAAc,CAAC,SAAS;CACxB,UAAU;AACZ,CAAC"}