@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-DPJ3jtiB.js","names":[],"sources":["../../src/components/GrDataTable/grDataTableStyles.ts","../../src/components/GrDataTable/safelist.ts","../../src/components/GrDataTable/config.ts"],"sourcesContent":["import type { GrCheckboxSize } from '../GrCheckbox/grCheckboxStyles'\nimport type { GrComponentSize } from '../shared/sizes'\n\nexport type GrDataTableSize = GrComponentSize\n\n/** Паддинг ячейки — и в шапке, и в теле: колонки обязаны совпадать по сетке. */\nexport const cellPaddings: Record<GrDataTableSize, string> = {\n xs: 'px-2 py-1.5',\n sm: 'px-3 py-2',\n md: 'px-4 py-3',\n lg: 'px-5 py-4',\n}\n\n/**\n * Оценка высоты строки по размеру: два вертикальных отступа ячейки плюс строка\n * текста и рамка. Виртуализация уточняет её замером — точное число здесь знать\n * неоткуда, содержимое ячейки задаёт потребитель.\n */\nexport const rowHeightEstimates: Record<GrDataTableSize, number> = {\n xs: 33,\n sm: 41,\n md: 49,\n lg: 57,\n}\n\n/** Заглушки loading/empty: по горизонтали как ячейка, по вертикали просторнее. */\nexport const placeholderPaddings: Record<GrDataTableSize, string> = {\n xs: 'px-2 py-3',\n sm: 'px-3 py-4',\n md: 'px-4 py-6',\n lg: 'px-5 py-8',\n}\n\n/**\n * Ручка перестановки колонки. Появляется по наведению на заголовок и по\n * фокусу: постоянная сетка ручек в шапке из десяти колонок читается как рябь,\n * а не как управление.\n */\nexport const columnHandleClass = 'inline-flex shrink-0 cursor-grab items-center text-[var(--gr-datatable-drag-handle,var(--gr-muted-fg))] opacity-0 [touch-action:none] transition-opacity duration-[var(--gr-duration-fast)] focus:outline-none focus-visible:opacity-100 focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)] rounded-[var(--gr-radius-sm)] group-hover:opacity-100'\n\nexport const columnHandleActiveClass = 'opacity-100'\n\n/**\n * Кнопка меню колонки. Как и ручка переноса, в покое не видна: три значка в\n * каждом заголовке — шум, а нужны они по случаю.\n *\n * Открытое меню держит кнопку видимой само (`aria-expanded`), иначе она гасла\n * бы ровно в тот момент, когда указатель уходит с заголовка на её же панель.\n */\nexport const columnMenuTriggerClass = 'absolute end-1 top-1/2 -translate-y-1/2 inline-flex shrink-0 items-center rounded-[var(--gr-radius-sm)] text-[var(--gr-muted-fg)] opacity-0 transition-opacity duration-[var(--gr-duration-fast)] hover:text-[var(--gr-fg)] focus:outline-none focus-visible:opacity-100 focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)] group-hover:opacity-100 [&[aria-expanded=true]]:opacity-100 disabled:cursor-not-allowed disabled:text-[var(--gr-disabled-fg)]'\n\n/** Переносимая колонка гасится, чтобы было видно, что она «поднята». */\nexport const columnDraggingClass = 'bg-[var(--gr-muted)]'\n\n/**\n * Место вставки — полоса по краю ячейки заголовка. Псевдоэлемент, а не свой\n * узел: `<th>` не терпит посторонних детей в раскладке таблицы.\n */\nexport const columnDropBeforeClass = 'before:absolute before:inset-y-0 before:left-0 before:w-[var(--gr-datatable-drag-indicator-width,2px)] before:bg-[var(--gr-datatable-drag-indicator,var(--gr-primary))] before:content-empty'\n\nexport const columnDropAfterClass = 'after:absolute after:inset-y-0 after:right-0 after:w-[var(--gr-datatable-drag-indicator-width,2px)] after:bg-[var(--gr-datatable-drag-indicator,var(--gr-primary))] after:content-empty'\n\n/**\n * Подсветка выбранной строки. Живёт здесь, потому что закреплённой ячейке её\n * приходится повторять: у ячейки свой непрозрачный фон, и подсветка строки\n * сквозь него не видна.\n */\nexport const rowSelectedClass = 'bg-[color-mix(in_srgb,var(--gr-primary)_8%,transparent)]'\n\n/**\n * Итоговая строка. Отбивка та же, что между строками тела, плюс вес: итог —\n * вывод из набора, а не ещё одна его запись, и читатель должен видеть это до\n * того, как разберёт цифры. Тон оставлен потребителю: «возвраты» и «прибыль» —\n * разные сообщения, и выбирать за него компонент не должен.\n */\nexport const summaryRowClass = 'border-t border-[var(--gr-brd)] font-600'\n\n/**\n * Ручка ширины — полоса у правого края заголовка. Видима она узкой линией, а\n * ловится широкой зоной: попасть в двухпиксельную границу мышью тяжело.\n */\nexport const columnResizerClass = 'absolute inset-y-0 right-0 z-[1] flex w-3 translate-x-1/2 cursor-col-resize items-stretch justify-center [touch-action:none] focus:outline-none'\n\nexport const columnResizerLineClass = 'w-[var(--gr-datatable-resizer-width,2px)] bg-transparent transition-colors duration-[var(--gr-duration-fast)]'\n\n/** Полоса подсвечивается только когда её ведут или на неё встал фокус. */\nexport const columnResizerLineActiveClass = 'bg-[var(--gr-datatable-resizer,var(--gr-primary))]'\n\nexport const columnResizerHoverClass = 'hover:bg-[var(--gr-datatable-resizer,var(--gr-primary))] focus-visible:bg-[var(--gr-datatable-resizer,var(--gr-primary))]'\n\n/**\n * Закреплённая колонка липнет к краю прокрутки. Фон обязателен: без него\n * уезжающие под неё ячейки просвечивают насквозь.\n */\nexport const columnPinnedClass = 'sticky z-[2] bg-[var(--gr-card)]'\n\n/** Граница группы закреплённых колонок — тень, а не рамка: рамка сдвигает сетку. */\nexport const columnPinnedLeftEdgeClass = 'shadow-[var(--gr-datatable-pinned-shadow,4px_0_6px_-4px_rgba(0,0,0,0.25))]'\n\nexport const columnPinnedRightEdgeClass = 'shadow-[var(--gr-datatable-pinned-shadow-end,-4px_0_6px_-4px_rgba(0,0,0,0.25))]'\n\n/** Подпись колонки набирается мельче тела таблицы — она не данные, а навигация. */\nexport const headerTextSizes: Record<GrDataTableSize, string> = {\n xs: 'text-[length:var(--gr-control-text-3xs)] leading-[var(--gr-control-leading-3xs)]',\n sm: 'text-[length:var(--gr-control-text-2xs)] leading-[var(--gr-control-leading-2xs)]',\n md: 'text-[length:var(--gr-control-text-xs)] leading-[var(--gr-leading-xs)]',\n lg: 'text-[length:var(--gr-control-text-md)] leading-[var(--gr-leading-sm)]',\n}\n\n/**\n * Размер `GrCheckbox` в колонке выбора. Здесь не классы, а ступень шкалы:\n * коробку рисует сам чекбокс — он же держит `indeterminate`, disabled без\n * `opacity` и фокус-кольцо.\n */\nexport const selectCheckboxSizes: Record<GrDataTableSize, GrCheckboxSize> = {\n xs: 'xs',\n sm: 'sm',\n md: 'md',\n lg: 'lg',\n}\n\n/** Ширина колонки выбора: коробка чекбокса плюс горизонтальный паддинг ячейки. */\nexport const selectColumnWidths: Record<GrDataTableSize, string> = {\n xs: 'w-7',\n sm: 'w-8',\n md: 'w-10',\n lg: 'w-12',\n}\n\n/** Зазор между подписью колонки и стрелкой сортировки. */\nexport const headerGaps: Record<GrDataTableSize, string> = {\n xs: 'gap-1',\n sm: 'gap-1.5',\n md: 'gap-2',\n lg: 'gap-2',\n}\n\n/** Спиннер в строке загрузки — тем же кеглем, что иконка сортировки рядом. */\nexport const spinnerSizes: Record<GrDataTableSize, string> = {\n xs: 'h-3 w-3',\n sm: 'h-3.5 w-3.5',\n md: 'h-4 w-4',\n lg: 'h-5 w-5',\n}\n\n/** Стрелка сортировки берёт размер из шкалы `GrIcon` (`xs…lg` → `14…20px`). */\nexport const sortIconSizes: Record<GrDataTableSize, GrComponentSize> = {\n xs: 'xs',\n sm: 'xs',\n md: 'sm',\n lg: 'md',\n}\n\n/**\n * Второй ярус строки: подробности под ней.\n *\n * Фон мягче строки набора, а не ярче: подробности обязаны читаться как\n * вложенное в строку, а не как следующая строка. Акцентная полоса слева\n * связывает деталь с её строкой, когда между ними уже прокрутили.\n */\nexport const detailRowClass = 'bg-[var(--gr-datatable-detail-bg,color-mix(in_srgb,var(--gr-muted)_45%,transparent))]'\n\nexport const detailCellClass = 'border-t border-[var(--gr-brd)] border-l-2 border-l-[var(--gr-datatable-detail-accent,var(--gr-primary))]'\n\n/** Содержимое липнет к левому краю: иначе при горизонтальной прокрутке его не видно. */\nexport const detailContentClass = 'sticky left-0'\n\nexport const detailPaddings: Record<GrDataTableSize, string> = {\n xs: 'px-2 py-2',\n sm: 'px-3 py-2.5',\n md: 'px-4 py-3',\n lg: 'px-5 py-4',\n}\n\n/** Колонка кнопки раскрытия — той же ширины, что колонка выбора: шапка не должна съезжать. */\nexport const expandColumnWidths = selectColumnWidths\n\nexport const expandButtonClass = 'inline-flex items-center justify-center rounded-[var(--gr-radius-sm)] text-[var(--gr-muted-fg)] transition-colors hover:bg-[var(--gr-muted)] hover:text-[var(--gr-fg)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]'\n\n/**\n * Поворот шеврона. Своего `motion-reduce:` здесь нет намеренно: движение пакет\n * гасит одним глобальным блоком в `base.css`, а под `presetMini` этот вариант\n * вдобавок не генерирует CSS вовсе (`docs/motion.md`).\n */\nexport const expandIconClass = 'h-4 w-4 transition-transform duration-[var(--gr-duration-fast)]'\n\nexport const expandIconOpenClass = 'rotate-90'\n\nexport const detailErrorClass = 'flex flex-wrap items-center gap-2 text-[var(--gr-invalid-text)]'\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n cellPaddings,\n columnDraggingClass,\n detailCellClass,\n detailContentClass,\n detailErrorClass,\n detailPaddings,\n detailRowClass,\n expandButtonClass,\n expandIconClass,\n expandIconOpenClass,\n columnDropAfterClass,\n columnDropBeforeClass,\n columnHandleActiveClass,\n columnHandleClass,\n columnMenuTriggerClass,\n columnPinnedClass,\n columnPinnedLeftEdgeClass,\n columnPinnedRightEdgeClass,\n columnResizerClass,\n columnResizerHoverClass,\n columnResizerLineActiveClass,\n columnResizerLineClass,\n headerGaps,\n headerTextSizes,\n placeholderPaddings,\n rowSelectedClass,\n selectColumnWidths,\n spinnerSizes,\n summaryRowClass,\n} from './grDataTableStyles'\n\nexport const grDataTableSafelist = [...new Set([\n ...Object.values(cellPaddings).flatMap(splitClassTokens),\n ...Object.values(placeholderPaddings).flatMap(splitClassTokens),\n ...Object.values(headerTextSizes).flatMap(splitClassTokens),\n ...Object.values(selectColumnWidths).flatMap(splitClassTokens),\n ...Object.values(headerGaps).flatMap(splitClassTokens),\n ...Object.values(spinnerSizes).flatMap(splitClassTokens),\n ...splitClassTokens(columnHandleClass),\n ...splitClassTokens(columnMenuTriggerClass),\n ...splitClassTokens(columnHandleActiveClass),\n ...splitClassTokens(columnDraggingClass),\n ...splitClassTokens(columnDropBeforeClass),\n ...splitClassTokens(columnDropAfterClass),\n ...splitClassTokens(columnResizerClass),\n ...splitClassTokens(columnResizerLineClass),\n ...splitClassTokens(columnResizerLineActiveClass),\n ...splitClassTokens(columnResizerHoverClass),\n ...splitClassTokens(columnPinnedClass),\n ...splitClassTokens(columnPinnedLeftEdgeClass),\n ...splitClassTokens(columnPinnedRightEdgeClass),\n ...splitClassTokens(rowSelectedClass),\n ...splitClassTokens(summaryRowClass),\n // Второй ярус строки: классы приходят из `.ts`-хелпера, а такие литералы\n // пресет не видит.\n ...splitClassTokens(detailRowClass),\n ...splitClassTokens(detailCellClass),\n ...splitClassTokens(detailContentClass),\n ...splitClassTokens(detailErrorClass),\n ...Object.values(detailPaddings).flatMap(splitClassTokens),\n ...splitClassTokens(expandButtonClass),\n ...splitClassTokens(expandIconClass),\n ...splitClassTokens(expandIconOpenClass),\n ...splitClassTokens('h-5 w-5 h-6 w-6'),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grDataTableSafelist } from './safelist'\n\nexport const grDataTableConfig = defineGranularComponent(import.meta.url, {\n name: 'GrDataTable',\n dependencies: ['GrTable', 'GrIcon', 'GrCheckbox', 'GrButton', 'GrSkeleton', 'GrDropdownMenu'],\n safelist: grDataTableSafelist,\n // Только светлая: обе роли ссылаются на токены, которые сами меняются с темой.\n tokenDefinitionsRef: {\n light: { url: './themes/light.css', selector: ':root' },\n },\n})\n"],"mappings":"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"}
@@ -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, i as popoverPanelBaseClass, n as panelSizes, r as panelSizesFlush } from "./grPopoverStyles-CYAeO3Ov.js";
2
+ import { t as panelPopTransition } from "./overlayTransition-C0FDMx7Q.js";
3
+ import { a as overlayOriginClassByPlacement, i as popoverPanelBaseClass, n as panelSizes, r as panelSizesFlush } from "./grPopoverStyles-CncEkiPu.js";
4
4
  import { defineGranularComponent } from "@feugene/unocss-preset-granular/contract";
5
5
  //#region src/components/GrPopover/safelist.ts
6
6
  var grPopoverSafelist = [.../* @__PURE__ */ new Set([
@@ -1 +1 @@
1
- {"version":3,"file":"config-tNqtapcT.js","names":[],"sources":["../../src/components/GrPopover/safelist.ts","../../src/components/GrPopover/config.ts"],"sourcesContent":["import { flattenTransitionTokens, splitClassTokens } from '../shared/classTokens'\nimport { panelPopTransition } from '../shared/overlayTransition'\nimport { overlayOriginClassByPlacement } from '../shared/overlayOrigin'\nimport { panelSizes, panelSizesFlush, popoverPanelBaseClass } from './grPopoverStyles'\n\nexport const grPopoverSafelist = [...new Set([\n ...Object.values(panelSizes).flatMap(splitClassTokens),\n ...Object.values(panelSizesFlush).flatMap(splitClassTokens),\n ...Object.values(overlayOriginClassByPlacement).flatMap(splitClassTokens),\n // Базовый класс живёт литералом в `grPopoverStyles.ts`, а такой хелпер на\n // сборке уезжает в общий чанк, которого скан не видит (см. gotchas.md §2).\n ...splitClassTokens(popoverPanelBaseClass),\n // Обёртка триггера: две взаимоисключающие раскладки. Обе объявлены, потому\n // что в разметке они приезжают тернарником, а не отдельными литералами.\n ...splitClassTokens('inline-block max-w-full block w-full'),\n // Набор перехода панели общий на пять компонентов и живёт безадресным\n // модулем в `shared/`: в `dist` он лежит в общем чанке, который пресет не\n // сканирует, поэтому объявить его обязан каждый потребитель.\n ...flattenTransitionTokens(panelPopTransition),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grPopoverSafelist } from './safelist'\n\nexport const grPopoverConfig = defineGranularComponent(import.meta.url, {\n name: 'GrPopover',\n /**\n * Слои задают `useFloating` и `useModalOverlay` через `overlayStack.ts`:\n * имя приходит параметром, а `var()` собирается в рантайме. В исходниках\n * `var(--gr-z-*)` не встречается — статический скан их не видит.\n */\n dynamicTokens: ['gr-z-dropdown', 'gr-z-modal'],\n safelist: grPopoverSafelist,\n})\n"],"mappings":";;;;;AAKA,IAAa,oBAAoB,CAAC,mBAAG,IAAI,IAAI;CAC3C,GAAG,OAAO,OAAO,UAAU,CAAC,CAAC,QAAQ,gBAAgB;CACrD,GAAG,OAAO,OAAO,eAAe,CAAC,CAAC,QAAQ,gBAAgB;CAC1D,GAAG,OAAO,OAAO,6BAA6B,CAAC,CAAC,QAAQ,gBAAgB;CAGxE,GAAG,iBAAiB,qBAAqB;CAGzC,GAAG,iBAAiB,sCAAsC;CAI1D,GAAG,wBAAwB,kBAAkB;AAC/C,CAAC,CAAC;;;ACfF,IAAa,kBAAkB,wBAAwB,YAAY,KAAK;CACtE,MAAM;;;;;;CAMN,eAAe,CAAC,iBAAiB,YAAY;CAC7C,UAAU;AACZ,CAAC"}
1
+ {"version":3,"file":"config-DpqjlCfB.js","names":[],"sources":["../../src/components/GrPopover/safelist.ts","../../src/components/GrPopover/config.ts"],"sourcesContent":["import { flattenTransitionTokens, splitClassTokens } from '../shared/classTokens'\nimport { panelPopTransition } from '../shared/overlayTransition'\nimport { overlayOriginClassByPlacement } from '../shared/overlayOrigin'\nimport { panelSizes, panelSizesFlush, popoverPanelBaseClass } from './grPopoverStyles'\n\nexport const grPopoverSafelist = [...new Set([\n ...Object.values(panelSizes).flatMap(splitClassTokens),\n ...Object.values(panelSizesFlush).flatMap(splitClassTokens),\n ...Object.values(overlayOriginClassByPlacement).flatMap(splitClassTokens),\n // Базовый класс живёт литералом в `grPopoverStyles.ts`, а такой хелпер на\n // сборке уезжает в общий чанк, которого скан не видит (см. gotchas.md §2).\n ...splitClassTokens(popoverPanelBaseClass),\n // Обёртка триггера: две взаимоисключающие раскладки. Обе объявлены, потому\n // что в разметке они приезжают тернарником, а не отдельными литералами.\n ...splitClassTokens('inline-block max-w-full block w-full'),\n // Набор перехода панели общий на пять компонентов и живёт безадресным\n // модулем в `shared/`: в `dist` он лежит в общем чанке, который пресет не\n // сканирует, поэтому объявить его обязан каждый потребитель.\n ...flattenTransitionTokens(panelPopTransition),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grPopoverSafelist } from './safelist'\n\nexport const grPopoverConfig = defineGranularComponent(import.meta.url, {\n name: 'GrPopover',\n /**\n * Слои задают `useFloating` и `useModalOverlay` через `overlayStack.ts`:\n * имя приходит параметром, а `var()` собирается в рантайме. В исходниках\n * `var(--gr-z-*)` не встречается — статический скан их не видит.\n */\n dynamicTokens: ['gr-z-dropdown', 'gr-z-modal'],\n safelist: grPopoverSafelist,\n})\n"],"mappings":";;;;;AAKA,IAAa,oBAAoB,CAAC,mBAAG,IAAI,IAAI;CAC3C,GAAG,OAAO,OAAO,UAAU,CAAC,CAAC,QAAQ,gBAAgB;CACrD,GAAG,OAAO,OAAO,eAAe,CAAC,CAAC,QAAQ,gBAAgB;CAC1D,GAAG,OAAO,OAAO,6BAA6B,CAAC,CAAC,QAAQ,gBAAgB;CAGxE,GAAG,iBAAiB,qBAAqB;CAGzC,GAAG,iBAAiB,sCAAsC;CAI1D,GAAG,wBAAwB,kBAAkB;AAC/C,CAAC,CAAC;;;ACfF,IAAa,kBAAkB,wBAAwB,YAAY,KAAK;CACtE,MAAM;;;;;;CAMN,eAAe,CAAC,iBAAiB,YAAY;CAC7C,UAAU;AACZ,CAAC"}
@@ -52,6 +52,47 @@ function grSidebarItemClass(options) {
52
52
  options.disabled ? itemDisabledClass : options.active ? itemActiveClass : itemIdleClass
53
53
  ].join(" ");
54
54
  }
55
+ /**
56
+ * Гнездо вложенного пункта: сам пункт плюс поддерево под ним. Обёртка нужна
57
+ * потому, что двух корней у компонента быть не может — при них ломается проброс
58
+ * атрибутов.
59
+ */
60
+ var itemNestClass = "flex flex-col";
61
+ /** Поддерево подпунктов. Отступ уровня задаётся строкам, а не контейнеру. */
62
+ var itemChildrenClass = "flex flex-col";
63
+ /**
64
+ * Шеврон раскрытия. Поворотом показывает состояние, но смысла не несёт: его
65
+ * сообщает `aria-expanded` на самом пункте, поэтому от диктора шеврон скрыт.
66
+ */
67
+ var itemChevronClass = "ml-auto h-4 w-4 shrink-0 text-[var(--gr-muted-fg)] transition-transform duration-[var(--gr-duration-fast)]";
68
+ var itemChevronExpandedClass = "rotate-90";
69
+ /**
70
+ * Отступ уровня вложенности. Считается от базового `px-3` пункта: своим
71
+ * `padding` строка отодвигается целиком, вместе с подсветкой и кольцом фокуса,
72
+ * — сдвинь мы только текст, активный фон уезжал бы под соседний уровень.
73
+ */
74
+ function itemNestIndent(level) {
75
+ if (level <= 0) return void 0;
76
+ return `calc(0.75rem + ${level} * var(--gr-sidebar-nest-indent, 1rem))`;
77
+ }
78
+ /**
79
+ * Корень модального слоя. В обычном режиме обёртка остаётся в разметке, но
80
+ * `display: contents` убирает её из раскладки — так панель и её шапка описаны
81
+ * один раз на оба режима, а не продублированы.
82
+ */
83
+ var layerRootClass = "fixed inset-0";
84
+ var layerPassThroughClass = "contents";
85
+ var layerBackdropClass = "fixed inset-0 bg-[var(--gr-overlay-bg)]";
86
+ /** Панель слоя прижата к своему краю и тянется на всю высоту экрана. */
87
+ var layerPanelPositions = {
88
+ left: "fixed inset-y-0 left-0 max-w-[85vw]",
89
+ right: "fixed inset-y-0 right-0 max-w-[85vw]"
90
+ };
91
+ /** Откуда выезжает панель: из-за своего края, а не из глубины экрана. */
92
+ var layerPanelEnterFrom = {
93
+ left: "-translate-x-full",
94
+ right: "translate-x-full"
95
+ };
55
96
  //#endregion
56
97
  //#region src/components/GrSidebar/safelist.ts
57
98
  var grSidebarSafelist = [.../* @__PURE__ */ new Set([
@@ -69,6 +110,15 @@ var grSidebarSafelist = [.../* @__PURE__ */ new Set([
69
110
  ...splitClassTokens(itemIdleClass),
70
111
  ...splitClassTokens(itemLetterClass),
71
112
  ...splitClassTokens(itemBadgeClass),
113
+ ...splitClassTokens(itemNestClass),
114
+ ...splitClassTokens(itemChildrenClass),
115
+ ...splitClassTokens(itemChevronClass),
116
+ ...splitClassTokens(itemChevronExpandedClass),
117
+ ...splitClassTokens(layerRootClass),
118
+ ...splitClassTokens(layerPassThroughClass),
119
+ ...splitClassTokens(layerBackdropClass),
120
+ ...Object.values(layerPanelPositions).flatMap(splitClassTokens),
121
+ ...Object.values(layerPanelEnterFrom).flatMap(splitClassTokens),
72
122
  ...splitClassTokens(groupLabelClass),
73
123
  ...splitClassTokens(groupCollapsedClass)
74
124
  ])];
@@ -76,8 +126,20 @@ var grSidebarSafelist = [.../* @__PURE__ */ new Set([
76
126
  //#region src/components/GrSidebar/config.ts
77
127
  var grSidebarConfig = defineGranularComponent(import.meta.url, {
78
128
  name: "GrSidebar",
79
- dependencies: ["GrButton", "GrIcon"],
129
+ /**
130
+ * Высоту модального слоя задаёт `useModalOverlay` → `modalLayerZIndex`: имя
131
+ * приходит параметром, а `var()` собирается в рантайме, и статический скан
132
+ * такое не видит. Без объявления обрезка токенов у потребителя сняла бы
133
+ * объявление молча — `z-index` разрешился бы в `unset`, и панель уехала бы
134
+ * под соседний слой.
135
+ */
136
+ dynamicTokens: ["gr-z-modal"],
137
+ dependencies: [
138
+ "GrButton",
139
+ "GrIcon",
140
+ "GrTooltip"
141
+ ],
80
142
  safelist: grSidebarSafelist
81
143
  });
82
144
  //#endregion
83
- export { grSidebarItemClass as a, groupLabelClass as c, itemLetterClass as d, subtitleClass as f, grSidebarCollapseDirection as i, headerBase as l, grSidebarSafelist as n, grSidebarRootClass as o, titleClass as p, contentBase as r, groupCollapsedClass as s, grSidebarConfig as t, itemBadgeClass as u };
145
+ export { titleClass as C, subtitleClass as S, layerBackdropClass as _, grSidebarItemClass as a, layerPassThroughClass as b, groupLabelClass as c, itemChevronClass as d, itemChevronExpandedClass as f, itemNestIndent as g, itemNestClass as h, grSidebarCollapseDirection as i, headerBase as l, itemLetterClass as m, grSidebarSafelist as n, grSidebarRootClass as o, itemChildrenClass as p, contentBase as r, groupCollapsedClass as s, grSidebarConfig as t, itemBadgeClass as u, layerPanelEnterFrom as v, layerRootClass as x, layerPanelPositions as y };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-DpzFoSIh.js","names":[],"sources":["../../src/components/GrSidebar/grSidebarStyles.ts","../../src/components/GrSidebar/safelist.ts","../../src/components/GrSidebar/config.ts"],"sourcesContent":["/** Сторона экрана, к которой прижата панель. */\nexport const GR_SIDEBAR_POSITIONS = ['left', 'right'] as const\nexport type GrSidebarPosition = typeof GR_SIDEBAR_POSITIONS[number]\n\n/** Лендмарк корня: навигация или дополняющий блок (фильтры, справка). */\nexport const GR_SIDEBAR_LANDMARKS = ['complementary', 'navigation'] as const\nexport type GrSidebarLandmark = typeof GR_SIDEBAR_LANDMARKS[number]\n\nexport const rootBase = 'flex flex-col bg-[var(--gr-sidebar)] text-[var(--gr-sidebar-fg)] transition-[width] duration-[var(--gr-duration-base)] ease-[var(--gr-ease-out)]'\n\n/** Граница отделяет панель от контента, поэтому уезжает на внутреннюю сторону. */\nexport const rootPositions: Record<GrSidebarPosition, string> = {\n left: 'border-r border-[var(--gr-sidebar-brd)]',\n right: 'border-l border-[var(--gr-sidebar-brd)]',\n}\n\nexport const headerBase = 'flex items-center gap-2 border-b border-[var(--gr-sidebar-brd)] px-3 py-4'\n\nexport const titleClass = 'truncate text-[length:var(--gr-text-lg)] leading-[var(--gr-leading-lg)] font-700'\nexport const subtitleClass = 'truncate text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)] text-[var(--gr-muted-fg)]'\n\n/**\n * Скроллящийся блок обязан быть достижим с клавиатуры, поэтому он остановка\n * `Tab` с видимым кольцом: без него панель с текстовым содержимым не\n * проскроллить вовсе.\n */\nexport const contentBase = 'flex-1 overflow-y-auto focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-[var(--gr-ring)]'\n\nexport const itemBase = 'relative flex w-full items-center rounded-[var(--gr-radius-md)] text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)] transition-colors duration-[var(--gr-duration-fast)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]'\n\nexport const itemCollapsedClass = 'justify-center px-0 py-2'\nexport const itemExpandedClass = 'gap-3 px-3 py-2'\n\n/**\n * Недоступный пункт гасится токеном, а не `opacity`: прозрачность разбавляет\n * выверенные на AA токены текста.\n */\nexport const itemDisabledClass = 'cursor-not-allowed text-[var(--gr-disabled-fg)]'\nexport const itemActiveClass = 'bg-[var(--gr-muted)] font-600 text-[var(--gr-fg)]'\nexport const itemIdleClass = 'text-[var(--gr-sidebar-fg)] hover:bg-[color-mix(in_srgb,var(--gr-sidebar-fg)_8%,transparent)]'\n\nexport const itemLetterClass = 'text-[length:var(--gr-text-xs)] font-700 leading-none'\nexport const itemBadgeClass = 'shrink-0 rounded-[var(--gr-radius-full)] bg-[color-mix(in_srgb,var(--gr-sidebar-fg)_12%,transparent)] px-1.5 py-0.5 text-[length:var(--gr-text-2xs)] leading-[var(--gr-leading-2xs)] font-600'\n\nexport const groupLabelClass = 'px-3 pb-1 pt-3 text-[length:var(--gr-text-2xs)] leading-[var(--gr-leading-2xs)] font-700 [text-transform:uppercase] tracking-wide text-[var(--gr-muted-fg)]'\n\n/**\n * В свёрнутой панели заголовка секции нет — иначе он не помещается. Границы\n * между группами берёт на себя линия: без неё иконки соседних секций сливаются\n * в один столбец.\n */\nexport const groupCollapsedClass = 'mt-2 border-t border-[var(--gr-sidebar-brd)] pt-2'\n\nexport function grSidebarRootClass(position: GrSidebarPosition): string {\n return [rootBase, rootPositions[position]].join(' ')\n}\n\n/**\n * Куда указывает шеврон кнопки тогла: всегда в ту сторону, куда уедет панель.\n * У правой панели «свернуть» — это стрелка вправо.\n */\nexport function grSidebarCollapseDirection(\n position: GrSidebarPosition,\n collapsed: boolean,\n): GrSidebarPosition {\n const toRight = (position === 'right') !== collapsed\n return toRight ? 'right' : 'left'\n}\n\nexport function grSidebarItemClass(options: {\n collapsed: boolean\n disabled: boolean\n active: boolean\n}): string {\n return [\n itemBase,\n options.collapsed ? itemCollapsedClass : itemExpandedClass,\n options.disabled ? itemDisabledClass : options.active ? itemActiveClass : itemIdleClass,\n ].join(' ')\n}\n\n/**\n * Гнездо вложенного пункта: сам пункт плюс поддерево под ним. Обёртка нужна\n * потому, что двух корней у компонента быть не может — при них ломается проброс\n * атрибутов.\n */\nexport const itemNestClass = 'flex flex-col'\n\n/** Поддерево подпунктов. Отступ уровня задаётся строкам, а не контейнеру. */\nexport const itemChildrenClass = 'flex flex-col'\n\n/**\n * Шеврон раскрытия. Поворотом показывает состояние, но смысла не несёт: его\n * сообщает `aria-expanded` на самом пункте, поэтому от диктора шеврон скрыт.\n */\nexport const itemChevronClass = 'ml-auto h-4 w-4 shrink-0 text-[var(--gr-muted-fg)] transition-transform duration-[var(--gr-duration-fast)]'\n\nexport const itemChevronExpandedClass = 'rotate-90'\n\n/**\n * Отступ уровня вложенности. Считается от базового `px-3` пункта: своим\n * `padding` строка отодвигается целиком, вместе с подсветкой и кольцом фокуса,\n * — сдвинь мы только текст, активный фон уезжал бы под соседний уровень.\n */\nexport function itemNestIndent(level: number): string | undefined {\n if (level <= 0)\n return undefined\n\n return `calc(0.75rem + ${level} * var(--gr-sidebar-nest-indent, 1rem))`\n}\n\n/**\n * Корень модального слоя. В обычном режиме обёртка остаётся в разметке, но\n * `display: contents` убирает её из раскладки — так панель и её шапка описаны\n * один раз на оба режима, а не продублированы.\n */\nexport const layerRootClass = 'fixed inset-0'\nexport const layerPassThroughClass = 'contents'\n\nexport const layerBackdropClass = 'fixed inset-0 bg-[var(--gr-overlay-bg)]'\n\n/** Панель слоя прижата к своему краю и тянется на всю высоту экрана. */\nexport const layerPanelPositions: Record<GrSidebarPosition, string> = {\n left: 'fixed inset-y-0 left-0 max-w-[85vw]',\n right: 'fixed inset-y-0 right-0 max-w-[85vw]',\n}\n\n/** Откуда выезжает панель: из-за своего края, а не из глубины экрана. */\nexport const layerPanelEnterFrom: Record<GrSidebarPosition, string> = {\n left: '-translate-x-full',\n right: 'translate-x-full',\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n contentBase,\n groupCollapsedClass,\n groupLabelClass,\n headerBase,\n itemActiveClass,\n itemBadgeClass,\n itemBase,\n itemChevronClass,\n itemChevronExpandedClass,\n itemChildrenClass,\n itemCollapsedClass,\n itemDisabledClass,\n itemExpandedClass,\n itemIdleClass,\n itemLetterClass,\n itemNestClass,\n layerBackdropClass,\n layerPanelEnterFrom,\n layerPanelPositions,\n layerPassThroughClass,\n layerRootClass,\n rootBase,\n rootPositions,\n subtitleClass,\n titleClass,\n} from './grSidebarStyles'\n\nexport const grSidebarSafelist = [...new Set([\n ...splitClassTokens(rootBase),\n ...Object.values(rootPositions).flatMap(splitClassTokens),\n ...splitClassTokens(headerBase),\n ...splitClassTokens(titleClass),\n ...splitClassTokens(subtitleClass),\n ...splitClassTokens(contentBase),\n ...splitClassTokens(itemBase),\n ...splitClassTokens(itemCollapsedClass),\n ...splitClassTokens(itemExpandedClass),\n ...splitClassTokens(itemDisabledClass),\n ...splitClassTokens(itemActiveClass),\n ...splitClassTokens(itemIdleClass),\n ...splitClassTokens(itemLetterClass),\n ...splitClassTokens(itemBadgeClass),\n ...splitClassTokens(itemNestClass),\n ...splitClassTokens(itemChildrenClass),\n ...splitClassTokens(itemChevronClass),\n ...splitClassTokens(itemChevronExpandedClass),\n ...splitClassTokens(layerRootClass),\n ...splitClassTokens(layerPassThroughClass),\n ...splitClassTokens(layerBackdropClass),\n ...Object.values(layerPanelPositions).flatMap(splitClassTokens),\n ...Object.values(layerPanelEnterFrom).flatMap(splitClassTokens),\n ...splitClassTokens(groupLabelClass),\n ...splitClassTokens(groupCollapsedClass),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grSidebarSafelist } from './safelist'\n\nexport const grSidebarConfig = defineGranularComponent(import.meta.url, {\n name: 'GrSidebar',\n /**\n * Высоту модального слоя задаёт `useModalOverlay` → `modalLayerZIndex`: имя\n * приходит параметром, а `var()` собирается в рантайме, и статический скан\n * такое не видит. Без объявления обрезка токенов у потребителя сняла бы\n * объявление молча — `z-index` разрешился бы в `unset`, и панель уехала бы\n * под соседний слой.\n */\n dynamicTokens: ['gr-z-modal'],\n dependencies: ['GrButton', 'GrIcon', 'GrTooltip'],\n safelist: grSidebarSafelist,\n})\n"],"mappings":";;;AAQA,IAAa,WAAW;;AAGxB,IAAa,gBAAmD;CAC9D,MAAM;CACN,OAAO;AACT;AAEA,IAAa,aAAa;AAE1B,IAAa,aAAa;AAC1B,IAAa,gBAAgB;;;;;;AAO7B,IAAa,cAAc;AAE3B,IAAa,WAAW;AAExB,IAAa,qBAAqB;AAClC,IAAa,oBAAoB;;;;;AAMjC,IAAa,oBAAoB;AACjC,IAAa,kBAAkB;AAC/B,IAAa,gBAAgB;AAE7B,IAAa,kBAAkB;AAC/B,IAAa,iBAAiB;AAE9B,IAAa,kBAAkB;;;;;;AAO/B,IAAa,sBAAsB;AAEnC,SAAgB,mBAAmB,UAAqC;CACtE,OAAO,CAAC,UAAU,cAAc,SAAS,CAAC,CAAC,KAAK,GAAG;AACrD;;;;;AAMA,SAAgB,2BACd,UACA,WACmB;CAEnB,OADiB,aAAa,YAAa,YAC1B,UAAU;AAC7B;AAEA,SAAgB,mBAAmB,SAIxB;CACT,OAAO;EACL;EACA,QAAQ,YAAY,qBAAqB;EACzC,QAAQ,WAAW,oBAAoB,QAAQ,SAAS,kBAAkB;CAC5E,CAAC,CAAC,KAAK,GAAG;AACZ;;;;;;AAOA,IAAa,gBAAgB;;AAG7B,IAAa,oBAAoB;;;;;AAMjC,IAAa,mBAAmB;AAEhC,IAAa,2BAA2B;;;;;;AAOxC,SAAgB,eAAe,OAAmC;CAChE,IAAI,SAAS,GACX,OAAO,KAAA;CAET,OAAO,kBAAkB,MAAM;AACjC;;;;;;AAOA,IAAa,iBAAiB;AAC9B,IAAa,wBAAwB;AAErC,IAAa,qBAAqB;;AAGlC,IAAa,sBAAyD;CACpE,MAAM;CACN,OAAO;AACT;;AAGA,IAAa,sBAAyD;CACpE,MAAM;CACN,OAAO;AACT;;;ACtGA,IAAa,oBAAoB,CAAC,mBAAG,IAAI,IAAI;CAC3C,GAAG,iBAAiB,QAAQ;CAC5B,GAAG,OAAO,OAAO,aAAa,CAAC,CAAC,QAAQ,gBAAgB;CACxD,GAAG,iBAAiB,UAAU;CAC9B,GAAG,iBAAiB,UAAU;CAC9B,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,WAAW;CAC/B,GAAG,iBAAiB,QAAQ;CAC5B,GAAG,iBAAiB,kBAAkB;CACtC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,iBAAiB,wBAAwB;CAC5C,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,qBAAqB;CACzC,GAAG,iBAAiB,kBAAkB;CACtC,GAAG,OAAO,OAAO,mBAAmB,CAAC,CAAC,QAAQ,gBAAgB;CAC9D,GAAG,OAAO,OAAO,mBAAmB,CAAC,CAAC,QAAQ,gBAAgB;CAC9D,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,mBAAmB;AACzC,CAAC,CAAC;;;ACnDF,IAAa,kBAAkB,wBAAwB,YAAY,KAAK;CACtE,MAAM;;;;;;;;CAQN,eAAe,CAAC,YAAY;CAC5B,cAAc;EAAC;EAAY;EAAU;CAAW;CAChD,UAAU;AACZ,CAAC"}
@@ -0,0 +1,267 @@
1
+ import { n as splitClassTokens } from "./classTokens-8v2XC74x.js";
2
+ import { defineGranularComponent } from "@feugene/unocss-preset-granular/contract";
3
+ //#region src/components/GrSwitch/grSwitchStyles.ts
4
+ var rootBase = "inline-flex items-center gap-2 select-none disabled:cursor-not-allowed";
5
+ /** `start` разворачивает ряд, а не меняет порядок узлов: DOM-порядок читает диктор. */
6
+ var rootLabelPositions = {
7
+ start: "flex-row-reverse",
8
+ end: ""
9
+ };
10
+ var trackBase = "relative inline-flex shrink-0 items-center rounded-[var(--gr-radius-full)] border border-[var(--gr-switch-track-brd)] transition-colors duration-[var(--gr-duration-fast)]";
11
+ var trackSizes = {
12
+ xs: "h-4 w-7",
13
+ sm: "h-5 w-9",
14
+ md: "h-6 w-11",
15
+ lg: "h-7 w-14"
16
+ };
17
+ /**
18
+ * Дорожка в режиме `autoWidth`: та же ступень становится **нижней границей**,
19
+ * а ширину берёт подпись. Высота остаётся фиксированной — тянется только строка.
20
+ */
21
+ var trackAutoSizes = {
22
+ xs: "h-4 min-w-7",
23
+ sm: "h-5 min-w-9",
24
+ md: "h-6 min-w-11",
25
+ lg: "h-7 min-w-14"
26
+ };
27
+ var thumbBase = "absolute top-[1px] inline-flex shrink-0 items-center justify-center rounded-[var(--gr-radius-full)] bg-[var(--gr-card)] shadow-[var(--gr-shadow-1)] transition-[left,transform] duration-[var(--gr-duration-fast)]";
28
+ var thumbSizes = {
29
+ xs: "h-3 w-3",
30
+ sm: "h-4 w-4",
31
+ md: "h-5 w-5",
32
+ lg: "h-6 w-6"
33
+ };
34
+ /**
35
+ * Содержимое бегунка — спиннер загрузки или иконка действия — мельче его на
36
+ * ступень: иначе знак упирается в края круга и теряет форму.
37
+ */
38
+ var thumbContentSizes = {
39
+ xs: "h-2 w-2",
40
+ sm: "h-2.5 w-2.5",
41
+ md: "h-3 w-3",
42
+ lg: "h-4 w-4"
43
+ };
44
+ /**
45
+ * Цвет содержимого бегунка — один на спиннер и иконку.
46
+ *
47
+ * Хук с фолбэком в самом классе, а не инлайн-значение: инлайн победил бы CSS
48
+ * потребителя, и переопределить цвет было бы нечем.
49
+ *
50
+ * По состоянию цвет не ветвится и в `disabled` не тускнеет: гасится дорожка, а
51
+ * бегунок остаётся `--gr-card` в любом состоянии — содержимое, меняющее цвет,
52
+ * разошлось бы со своей же подложкой.
53
+ */
54
+ var thumbContentColorClass = "text-[var(--gr-switch-thumb-fg,var(--gr-muted-fg))]";
55
+ var thumbSpinnerBase = `animate-spin ${thumbContentColorClass}`;
56
+ /** Обёртка иконки держит размер, содержимое слота тянется до неё `h-full w-full`. */
57
+ var thumbIconBase = `inline-flex shrink-0 items-center justify-center ${thumbContentColorClass}`;
58
+ /**
59
+ * Положение бегунка — **без единого числа, зависящего от ширины дорожки**.
60
+ *
61
+ * Крайнее положение выражено парой `left: calc(100% − зазор)` и
62
+ * `translateX(-100%)`: процент в `left` считается от padding-box дорожки,
63
+ * процент в `transform` — от самого бегунка. В сумме левый край встаёт на
64
+ * `ширина − бегунок − зазор`, какой бы ширина ни была.
65
+ *
66
+ * Обе величины анимируются, и композиция даёт строго линейный ход: в момент `t`
67
+ * смещение равно `t · (ширина − бегунок)`. Поэтому режим `autoWidth` не требует
68
+ * ни измерений, ни ResizeObserver — только эти два класса.
69
+ */
70
+ var thumbPositions = {
71
+ checked: "left-[calc(100%_-_1px)] -translate-x-full",
72
+ unchecked: "left-[1px] translate-x-0"
73
+ };
74
+ var labelBase = "text-[var(--gr-muted-fg)]";
75
+ /**
76
+ * Недоступность гасится токеном, а не `opacity`: прозрачность разбавляет
77
+ * выверенные на AA токены текста и роняет контраст подписи.
78
+ */
79
+ var labelDisabledClass = "text-[var(--gr-disabled-fg)]";
80
+ var labelSizes = {
81
+ xs: "text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)]",
82
+ sm: "text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)]",
83
+ md: "text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)]",
84
+ lg: "text-[length:var(--gr-text-base)] leading-[var(--gr-leading-base)]"
85
+ };
86
+ function grSwitchRootClass(labelPosition) {
87
+ return [rootBase, rootLabelPositions[labelPosition]].filter(Boolean).join(" ");
88
+ }
89
+ function grSwitchTrackClass(size, autoWidth = false) {
90
+ return [trackBase, (autoWidth ? trackAutoSizes : trackSizes)[size]].join(" ");
91
+ }
92
+ function grSwitchThumbClass(options) {
93
+ return [
94
+ thumbBase,
95
+ thumbSizes[options.size],
96
+ thumbPositions[options.checked ? "checked" : "unchecked"]
97
+ ].join(" ");
98
+ }
99
+ function grSwitchSpinnerClass(size) {
100
+ return [thumbSpinnerBase, thumbContentSizes[size]].join(" ");
101
+ }
102
+ function grSwitchThumbIconClass(size) {
103
+ return [thumbIconBase, thumbContentSizes[size]].join(" ");
104
+ }
105
+ function grSwitchLabelClass(size, disabled = false) {
106
+ return [disabled ? labelDisabledClass : labelBase, labelSizes[size]].join(" ");
107
+ }
108
+ /**
109
+ * Ступени, на которых подпись состояния помещается внутрь дорожки.
110
+ *
111
+ * Свободное место рядом с бегунком — `content − (бегунок + зазор)`, то есть
112
+ * 13 / 17 / 21 / 29px на `xs` / `sm` / `md` / `lg`. Минимальная ступень
113
+ * типографики пакета — `--gr-text-xs` (12px), и «OFF» на ней занимает ~25px;
114
+ * собственные 10px дают ~20px. В 13 и 17 не встаёт и это, а ужимать шрифт
115
+ * дальше значит сделать подпись нечитаемой ради того, чтобы она была.
116
+ */
117
+ var GR_SWITCH_STATE_TEXT_SIZES = ["md", "lg"];
118
+ /** Свободное место в дорожке рядом с бегунком, px. Считается гейтом заново. */
119
+ var stateTextRoom = {
120
+ xs: 13,
121
+ sm: 17,
122
+ md: 21,
123
+ lg: 29
124
+ };
125
+ function isGrSwitchStateTextSize(size) {
126
+ return GR_SWITCH_STATE_TEXT_SIZES.includes(size);
127
+ }
128
+ /**
129
+ * Ячейка подписи. Грид, а не флекс, ради второго режима: в `autoWidth` в ту же
130
+ * клетку кладётся невидимый дубль противоположного текста, и ширина ячейки
131
+ * становится максимумом из двух — иначе дорожка дёргалась бы на каждом щелчке
132
+ * («ON» 15.6px против «OFF» 19.9px).
133
+ */
134
+ var stateTextBase = "pointer-events-none grid items-center justify-items-center overflow-hidden font-semibold uppercase leading-none";
135
+ /**
136
+ * Где ячейка живёт. При фиксированной ширине она накрывает дорожку и на её
137
+ * размер не влияет; в `autoWidth` встаёт в поток и ширину как раз задаёт.
138
+ */
139
+ var stateTextLayouts = {
140
+ fixed: "absolute inset-0",
141
+ auto: ""
142
+ };
143
+ /** Оба текста ложатся в одну клетку грида — отсюда максимум по ширине. */
144
+ var stateTextStackClass = "col-start-1 row-start-1";
145
+ /** Дубль занимает место, но не рисуется: `visibility`, а не `display`. */
146
+ var stateTextGhostClass = `${stateTextStackClass} invisible`;
147
+ /**
148
+ * Кегль подписи — свой, а не ступень шкалы пакета: минимальный `--gr-text-xs`
149
+ * это 12px, и трёхбуквенное слово на нём занимает ~24px при 21px места.
150
+ *
151
+ * Значения меряны, а не выведены (Inter 600, uppercase). На `md` в 21px:
152
+ * «OFF» 17.9, «НЕТ» 18.8, «ВКЛ» 19.4 — то есть 9px берёт трёхбуквенные слова
153
+ * во всех трёх локалях с запасом; 10px оставлял «НЕТ» 0.1px до обреза.
154
+ * На `lg` места 29px, и 11px там читается лучше, не рискуя ничем.
155
+ *
156
+ * Четырёхбуквенное «ВЫКЛ» не встаёт ни на одной ступени и ни при каком кегле
157
+ * (31px на 10px кегля) — поэтому русский дефолт «ДА»/«НЕТ», а не «ВКЛ»/«ВЫКЛ».
158
+ */
159
+ var stateTextSizes = {
160
+ md: "text-[length:var(--gr-switch-state-text-size,9px)]",
161
+ lg: "text-[length:var(--gr-switch-state-text-size,11px)]"
162
+ };
163
+ /** Отступ со стороны бегунка — `бегунок + зазор`; остаток и есть место подписи. */
164
+ var stateTextPaddings = {
165
+ md: {
166
+ checked: "pr-[21px]",
167
+ unchecked: "pl-[21px]"
168
+ },
169
+ lg: {
170
+ checked: "pr-[25px]",
171
+ unchecked: "pl-[25px]"
172
+ }
173
+ };
174
+ /**
175
+ * Отступы в `autoWidth` — те же, плюс воздух с **обеих** сторон.
176
+ *
177
+ * При фиксированной ширине текст центруется в остатке и сам ни во что не
178
+ * упирается. Здесь остатка нет: ширину задаёт сам текст, и без воздуха он
179
+ * прилипает к бегунку с одной стороны и к закруглению с другой — проверено
180
+ * глазами, «ОНЛАЙН» вплотную к бегунку читается как дефект вёрстки.
181
+ *
182
+ * Поэтому со стороны бегунка отступ равен `бегунок + зазор + воздух`, а со
183
+ * свободной — просто воздуху. Воздух: 8px на `md`, 10px на `lg`.
184
+ */
185
+ var stateTextAutoPaddings = {
186
+ md: {
187
+ checked: "pl-[8px] pr-[29px]",
188
+ unchecked: "pl-[29px] pr-[8px]"
189
+ },
190
+ lg: {
191
+ checked: "pl-[10px] pr-[35px]",
192
+ unchecked: "pl-[35px] pr-[10px]"
193
+ }
194
+ };
195
+ /**
196
+ * Цвет подписи — роль `-fg` той заливки, на которой она лежит.
197
+ *
198
+ * Хук стоит фолбэком в самом классе, а не инлайн-значением: инлайн победил бы
199
+ * CSS потребителя, и переопределить токен было бы нечем. Заливку дорожки задают
200
+ * произвольным цветом (`activeBackgroundColor`), и безопасный цвет текста на
201
+ * ней библиотека не вычислит — его называет тот же, кто задал фон.
202
+ */
203
+ var stateTextColors = {
204
+ checked: "text-[var(--gr-switch-state-text-fg,var(--gr-primary-fg))]",
205
+ unchecked: "text-[var(--gr-switch-state-text-fg,var(--gr-muted-fg))]",
206
+ disabled: "text-[var(--gr-switch-state-text-fg,var(--gr-disabled-fg))]"
207
+ };
208
+ function grSwitchStateTextClass(options) {
209
+ const state = options.disabled ? "disabled" : options.checked ? "checked" : "unchecked";
210
+ const side = options.checked ? "checked" : "unchecked";
211
+ const paddings = options.autoWidth ? stateTextAutoPaddings : stateTextPaddings;
212
+ return [
213
+ stateTextBase,
214
+ stateTextLayouts[options.autoWidth ? "auto" : "fixed"],
215
+ stateTextSizes[options.size],
216
+ stateTextColors[state],
217
+ paddings[options.size][side]
218
+ ].filter(Boolean).join(" ");
219
+ }
220
+ //#endregion
221
+ //#region src/components/GrSwitch/safelist.ts
222
+ var grSwitchClassTokens = {
223
+ rootBase: splitClassTokens(rootBase),
224
+ rootLabelPositions: Object.values(rootLabelPositions).flatMap(splitClassTokens),
225
+ trackBase: splitClassTokens(trackBase),
226
+ trackSizes: [...Object.values(trackSizes).flatMap(splitClassTokens), ...Object.values(trackAutoSizes).flatMap(splitClassTokens)],
227
+ thumbBase: splitClassTokens(thumbBase),
228
+ thumbSizes: Object.values(thumbSizes).flatMap(splitClassTokens),
229
+ thumbContent: [
230
+ ...splitClassTokens(thumbSpinnerBase),
231
+ ...splitClassTokens(thumbIconBase),
232
+ ...Object.values(thumbContentSizes).flatMap(splitClassTokens)
233
+ ],
234
+ thumbPositions: Object.values(thumbPositions).flatMap(splitClassTokens),
235
+ labelBase: [...splitClassTokens(labelBase), ...splitClassTokens(labelDisabledClass)],
236
+ labelSizes: Object.values(labelSizes).flatMap(splitClassTokens),
237
+ stateText: [
238
+ ...splitClassTokens(stateTextBase),
239
+ ...splitClassTokens(stateTextStackClass),
240
+ ...splitClassTokens(stateTextGhostClass),
241
+ ...Object.values(stateTextLayouts).flatMap(splitClassTokens),
242
+ ...Object.values(stateTextSizes).flatMap(splitClassTokens),
243
+ ...Object.values(stateTextColors).flatMap(splitClassTokens),
244
+ ...[stateTextPaddings, stateTextAutoPaddings].flatMap((map) => Object.values(map).flatMap(({ checked, unchecked }) => [...splitClassTokens(checked), ...splitClassTokens(unchecked)]))
245
+ ]
246
+ };
247
+ var grSwitchSafelist = [.../* @__PURE__ */ new Set([
248
+ ...grSwitchClassTokens.rootBase,
249
+ ...grSwitchClassTokens.rootLabelPositions,
250
+ ...grSwitchClassTokens.trackBase,
251
+ ...grSwitchClassTokens.trackSizes,
252
+ ...grSwitchClassTokens.thumbBase,
253
+ ...grSwitchClassTokens.thumbSizes,
254
+ ...grSwitchClassTokens.thumbContent,
255
+ ...grSwitchClassTokens.thumbPositions,
256
+ ...grSwitchClassTokens.labelBase,
257
+ ...grSwitchClassTokens.labelSizes,
258
+ ...grSwitchClassTokens.stateText
259
+ ])];
260
+ //#endregion
261
+ //#region src/components/GrSwitch/config.ts
262
+ var grSwitchConfig = defineGranularComponent(import.meta.url, {
263
+ name: "GrSwitch",
264
+ safelist: grSwitchSafelist
265
+ });
266
+ //#endregion
267
+ export { grSwitchSpinnerClass as a, grSwitchThumbIconClass as c, stateTextGhostClass as d, stateTextRoom as f, grSwitchRootClass as i, grSwitchTrackClass as l, grSwitchSafelist as n, grSwitchStateTextClass as o, stateTextStackClass as p, grSwitchLabelClass as r, grSwitchThumbClass as s, grSwitchConfig as t, isGrSwitchStateTextSize as u };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-MUkhktTP.js","names":[],"sources":["../../src/components/GrSwitch/grSwitchStyles.ts","../../src/components/GrSwitch/safelist.ts","../../src/components/GrSwitch/config.ts"],"sourcesContent":["import type { GrComponentSize } from '../shared/sizes'\n\nexport type GrSwitchSize = GrComponentSize\n\n/** Сторона подписи относительно дорожки — логическая, не физическая (RTL). */\nexport const GR_SWITCH_LABEL_POSITIONS = ['start', 'end'] as const\nexport type GrSwitchLabelPosition = typeof GR_SWITCH_LABEL_POSITIONS[number]\n\ntype GrSwitchThumbClassOptions = {\n checked: boolean\n size: GrSwitchSize\n}\n\nexport const rootBase = 'inline-flex items-center gap-2 select-none disabled:cursor-not-allowed'\n\n/** `start` разворачивает ряд, а не меняет порядок узлов: DOM-порядок читает диктор. */\nexport const rootLabelPositions: Record<GrSwitchLabelPosition, string> = {\n start: 'flex-row-reverse',\n end: '',\n}\n\nexport const trackBase\n = 'relative inline-flex shrink-0 items-center rounded-[var(--gr-radius-full)] border border-[var(--gr-switch-track-brd)] transition-colors duration-[var(--gr-duration-fast)]'\n\nexport const trackSizes: Record<GrSwitchSize, string> = {\n xs: 'h-4 w-7',\n sm: 'h-5 w-9',\n md: 'h-6 w-11',\n lg: 'h-7 w-14',\n}\n\n/**\n * Дорожка в режиме `autoWidth`: та же ступень становится **нижней границей**,\n * а ширину берёт подпись. Высота остаётся фиксированной — тянется только строка.\n */\nexport const trackAutoSizes: Record<GrSwitchSize, string> = {\n xs: 'h-4 min-w-7',\n sm: 'h-5 min-w-9',\n md: 'h-6 min-w-11',\n lg: 'h-7 min-w-14',\n}\n\nexport const thumbBase\n = 'absolute top-[1px] inline-flex shrink-0 items-center justify-center rounded-[var(--gr-radius-full)] bg-[var(--gr-card)] shadow-[var(--gr-shadow-1)] transition-[left,transform] duration-[var(--gr-duration-fast)]'\n\nexport const thumbSizes: Record<GrSwitchSize, string> = {\n xs: 'h-3 w-3',\n sm: 'h-4 w-4',\n md: 'h-5 w-5',\n lg: 'h-6 w-6',\n}\n\n/**\n * Содержимое бегунка — спиннер загрузки или иконка действия — мельче его на\n * ступень: иначе знак упирается в края круга и теряет форму.\n */\nexport const thumbContentSizes: Record<GrSwitchSize, string> = {\n xs: 'h-2 w-2',\n sm: 'h-2.5 w-2.5',\n md: 'h-3 w-3',\n lg: 'h-4 w-4',\n}\n\n/**\n * Цвет содержимого бегунка — один на спиннер и иконку.\n *\n * Хук с фолбэком в самом классе, а не инлайн-значение: инлайн победил бы CSS\n * потребителя, и переопределить цвет было бы нечем.\n *\n * По состоянию цвет не ветвится и в `disabled` не тускнеет: гасится дорожка, а\n * бегунок остаётся `--gr-card` в любом состоянии — содержимое, меняющее цвет,\n * разошлось бы со своей же подложкой.\n */\nexport const thumbContentColorClass = 'text-[var(--gr-switch-thumb-fg,var(--gr-muted-fg))]'\n\nexport const thumbSpinnerBase = `animate-spin ${thumbContentColorClass}`\n\n/** Обёртка иконки держит размер, содержимое слота тянется до неё `h-full w-full`. */\nexport const thumbIconBase = `inline-flex shrink-0 items-center justify-center ${thumbContentColorClass}`\n\n/**\n * Зазор бегунка со всех сторон, px.\n *\n * Дорожка — `border-box` с рамкой 1px, и по вертикали зазор задан геометрией:\n * `(content-height − thumb) / 2` даёт ровно 1 на всех ступенях. Значит и по\n * горизонтали он обязан быть тем же: иначе бегунок в покое выглядит вдавленным\n * внутрь, а в крайнем положении прижатым к краю — именно так и было, зазоры\n * расходились на 1–2px у `xs`, `sm` и `lg`.\n *\n * Гейт живёт в `__tests__/GrSwitch.test.ts` и считает вертикаль заново из\n * `trackSizes`/`thumbSizes`, поэтому смена любой ступени размера сразу покажет\n * разъехавшийся зазор.\n */\nexport const SWITCH_THUMB_GAP = 1\n\n/**\n * Положение бегунка — **без единого числа, зависящего от ширины дорожки**.\n *\n * Крайнее положение выражено парой `left: calc(100% − зазор)` и\n * `translateX(-100%)`: процент в `left` считается от padding-box дорожки,\n * процент в `transform` — от самого бегунка. В сумме левый край встаёт на\n * `ширина − бегунок − зазор`, какой бы ширина ни была.\n *\n * Обе величины анимируются, и композиция даёт строго линейный ход: в момент `t`\n * смещение равно `t · (ширина − бегунок)`. Поэтому режим `autoWidth` не требует\n * ни измерений, ни ResizeObserver — только эти два класса.\n */\nexport const thumbPositions: Record<'checked' | 'unchecked', string> = {\n checked: 'left-[calc(100%_-_1px)] -translate-x-full',\n unchecked: 'left-[1px] translate-x-0',\n}\n\nexport const labelBase = 'text-[var(--gr-muted-fg)]'\n\n/**\n * Недоступность гасится токеном, а не `opacity`: прозрачность разбавляет\n * выверенные на AA токены текста и роняет контраст подписи.\n */\nexport const labelDisabledClass = 'text-[var(--gr-disabled-fg)]'\n\nexport const labelSizes: Record<GrSwitchSize, string> = {\n xs: 'text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)]',\n sm: 'text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)]',\n md: 'text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)]',\n lg: 'text-[length:var(--gr-text-base)] leading-[var(--gr-leading-base)]',\n}\n\nexport function grSwitchRootClass(labelPosition: GrSwitchLabelPosition): string {\n return [rootBase, rootLabelPositions[labelPosition]].filter(Boolean).join(' ')\n}\n\nexport function grSwitchTrackClass(size: GrSwitchSize, autoWidth = false): string {\n return [trackBase, (autoWidth ? trackAutoSizes : trackSizes)[size]].join(' ')\n}\n\nexport function grSwitchThumbClass(options: GrSwitchThumbClassOptions): string {\n return [\n thumbBase,\n thumbSizes[options.size],\n thumbPositions[options.checked ? 'checked' : 'unchecked'],\n ].join(' ')\n}\n\nexport function grSwitchSpinnerClass(size: GrSwitchSize): string {\n return [thumbSpinnerBase, thumbContentSizes[size]].join(' ')\n}\n\nexport function grSwitchThumbIconClass(size: GrSwitchSize): string {\n return [thumbIconBase, thumbContentSizes[size]].join(' ')\n}\n\nexport function grSwitchLabelClass(size: GrSwitchSize, disabled = false): string {\n return [disabled ? labelDisabledClass : labelBase, labelSizes[size]].join(' ')\n}\n\n/**\n * Ступени, на которых подпись состояния помещается внутрь дорожки.\n *\n * Свободное место рядом с бегунком — `content − (бегунок + зазор)`, то есть\n * 13 / 17 / 21 / 29px на `xs` / `sm` / `md` / `lg`. Минимальная ступень\n * типографики пакета — `--gr-text-xs` (12px), и «OFF» на ней занимает ~25px;\n * собственные 10px дают ~20px. В 13 и 17 не встаёт и это, а ужимать шрифт\n * дальше значит сделать подпись нечитаемой ради того, чтобы она была.\n */\nexport const GR_SWITCH_STATE_TEXT_SIZES = ['md', 'lg'] as const\nexport type GrSwitchStateTextSize = typeof GR_SWITCH_STATE_TEXT_SIZES[number]\n\n/** Свободное место в дорожке рядом с бегунком, px. Считается гейтом заново. */\nexport const stateTextRoom: Record<GrSwitchSize, number> = {\n xs: 13,\n sm: 17,\n md: 21,\n lg: 29,\n}\n\nexport function isGrSwitchStateTextSize(size: GrSwitchSize): size is GrSwitchStateTextSize {\n return (GR_SWITCH_STATE_TEXT_SIZES as readonly GrSwitchSize[]).includes(size)\n}\n\n/**\n * Ячейка подписи. Грид, а не флекс, ради второго режима: в `autoWidth` в ту же\n * клетку кладётся невидимый дубль противоположного текста, и ширина ячейки\n * становится максимумом из двух — иначе дорожка дёргалась бы на каждом щелчке\n * («ON» 15.6px против «OFF» 19.9px).\n */\nexport const stateTextBase\n = 'pointer-events-none grid items-center justify-items-center overflow-hidden font-semibold uppercase leading-none'\n\n/**\n * Где ячейка живёт. При фиксированной ширине она накрывает дорожку и на её\n * размер не влияет; в `autoWidth` встаёт в поток и ширину как раз задаёт.\n */\nexport const stateTextLayouts: Record<'fixed' | 'auto', string> = {\n fixed: 'absolute inset-0',\n auto: '',\n}\n\n/** Оба текста ложатся в одну клетку грида — отсюда максимум по ширине. */\nexport const stateTextStackClass = 'col-start-1 row-start-1'\n\n/** Дубль занимает место, но не рисуется: `visibility`, а не `display`. */\nexport const stateTextGhostClass = `${stateTextStackClass} invisible`\n\n/**\n * Кегль подписи — свой, а не ступень шкалы пакета: минимальный `--gr-text-xs`\n * это 12px, и трёхбуквенное слово на нём занимает ~24px при 21px места.\n *\n * Значения меряны, а не выведены (Inter 600, uppercase). На `md` в 21px:\n * «OFF» 17.9, «НЕТ» 18.8, «ВКЛ» 19.4 — то есть 9px берёт трёхбуквенные слова\n * во всех трёх локалях с запасом; 10px оставлял «НЕТ» 0.1px до обреза.\n * На `lg` места 29px, и 11px там читается лучше, не рискуя ничем.\n *\n * Четырёхбуквенное «ВЫКЛ» не встаёт ни на одной ступени и ни при каком кегле\n * (31px на 10px кегля) — поэтому русский дефолт «ДА»/«НЕТ», а не «ВКЛ»/«ВЫКЛ».\n */\nexport const stateTextSizes: Record<GrSwitchStateTextSize, string> = {\n md: 'text-[length:var(--gr-switch-state-text-size,9px)]',\n lg: 'text-[length:var(--gr-switch-state-text-size,11px)]',\n}\n\n/** Отступ со стороны бегунка — `бегунок + зазор`; остаток и есть место подписи. */\nexport const stateTextPaddings: Record<GrSwitchStateTextSize, { checked: string, unchecked: string }> = {\n md: {\n checked: 'pr-[21px]',\n unchecked: 'pl-[21px]',\n },\n lg: {\n checked: 'pr-[25px]',\n unchecked: 'pl-[25px]',\n },\n}\n\n/**\n * Отступы в `autoWidth` — те же, плюс воздух с **обеих** сторон.\n *\n * При фиксированной ширине текст центруется в остатке и сам ни во что не\n * упирается. Здесь остатка нет: ширину задаёт сам текст, и без воздуха он\n * прилипает к бегунку с одной стороны и к закруглению с другой — проверено\n * глазами, «ОНЛАЙН» вплотную к бегунку читается как дефект вёрстки.\n *\n * Поэтому со стороны бегунка отступ равен `бегунок + зазор + воздух`, а со\n * свободной — просто воздуху. Воздух: 8px на `md`, 10px на `lg`.\n */\nexport const stateTextAutoPaddings: Record<GrSwitchStateTextSize, { checked: string, unchecked: string }> = {\n md: {\n checked: 'pl-[8px] pr-[29px]',\n unchecked: 'pl-[29px] pr-[8px]',\n },\n lg: {\n checked: 'pl-[10px] pr-[35px]',\n unchecked: 'pl-[35px] pr-[10px]',\n },\n}\n\n/**\n * Цвет подписи — роль `-fg` той заливки, на которой она лежит.\n *\n * Хук стоит фолбэком в самом классе, а не инлайн-значением: инлайн победил бы\n * CSS потребителя, и переопределить токен было бы нечем. Заливку дорожки задают\n * произвольным цветом (`activeBackgroundColor`), и безопасный цвет текста на\n * ней библиотека не вычислит — его называет тот же, кто задал фон.\n */\nexport const stateTextColors = {\n checked: 'text-[var(--gr-switch-state-text-fg,var(--gr-primary-fg))]',\n unchecked: 'text-[var(--gr-switch-state-text-fg,var(--gr-muted-fg))]',\n disabled: 'text-[var(--gr-switch-state-text-fg,var(--gr-disabled-fg))]',\n} as const\n\ntype GrSwitchStateTextClassOptions = {\n size: GrSwitchStateTextSize\n checked: boolean\n disabled: boolean\n autoWidth: boolean\n}\n\nexport function grSwitchStateTextClass(options: GrSwitchStateTextClassOptions): string {\n const state = options.disabled\n ? 'disabled'\n : options.checked ? 'checked' : 'unchecked'\n\n const side = options.checked ? 'checked' : 'unchecked'\n const paddings = options.autoWidth ? stateTextAutoPaddings : stateTextPaddings\n\n return [\n stateTextBase,\n stateTextLayouts[options.autoWidth ? 'auto' : 'fixed'],\n stateTextSizes[options.size],\n stateTextColors[state],\n paddings[options.size][side],\n ].filter(Boolean).join(' ')\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n labelBase,\n labelDisabledClass,\n labelSizes,\n rootBase,\n rootLabelPositions,\n stateTextAutoPaddings,\n stateTextBase,\n stateTextColors,\n stateTextGhostClass,\n stateTextLayouts,\n stateTextPaddings,\n stateTextSizes,\n stateTextStackClass,\n thumbBase,\n thumbSizes,\n thumbContentSizes,\n thumbIconBase,\n thumbSpinnerBase,\n thumbPositions,\n trackAutoSizes,\n trackBase,\n trackSizes,\n} from './grSwitchStyles'\n\nexport const grSwitchClassTokens = {\n rootBase: splitClassTokens(rootBase),\n rootLabelPositions: Object.values(rootLabelPositions).flatMap(splitClassTokens),\n trackBase: splitClassTokens(trackBase),\n trackSizes: [\n ...Object.values(trackSizes).flatMap(splitClassTokens),\n ...Object.values(trackAutoSizes).flatMap(splitClassTokens),\n ],\n thumbBase: splitClassTokens(thumbBase),\n thumbSizes: Object.values(thumbSizes).flatMap(splitClassTokens),\n thumbContent: [\n ...splitClassTokens(thumbSpinnerBase),\n ...splitClassTokens(thumbIconBase),\n ...Object.values(thumbContentSizes).flatMap(splitClassTokens),\n ],\n thumbPositions: Object.values(thumbPositions).flatMap(splitClassTokens),\n labelBase: [...splitClassTokens(labelBase), ...splitClassTokens(labelDisabledClass)],\n labelSizes: Object.values(labelSizes).flatMap(splitClassTokens),\n stateText: [\n ...splitClassTokens(stateTextBase),\n ...splitClassTokens(stateTextStackClass),\n ...splitClassTokens(stateTextGhostClass),\n ...Object.values(stateTextLayouts).flatMap(splitClassTokens),\n ...Object.values(stateTextSizes).flatMap(splitClassTokens),\n ...Object.values(stateTextColors).flatMap(splitClassTokens),\n ...[stateTextPaddings, stateTextAutoPaddings].flatMap(map => (\n Object.values(map).flatMap(({ checked, unchecked }) => [\n ...splitClassTokens(checked),\n ...splitClassTokens(unchecked),\n ])\n )),\n ],\n} as const\n\nexport const grSwitchSafelist = [...new Set([\n ...grSwitchClassTokens.rootBase,\n ...grSwitchClassTokens.rootLabelPositions,\n ...grSwitchClassTokens.trackBase,\n ...grSwitchClassTokens.trackSizes,\n ...grSwitchClassTokens.thumbBase,\n ...grSwitchClassTokens.thumbSizes,\n ...grSwitchClassTokens.thumbContent,\n ...grSwitchClassTokens.thumbPositions,\n ...grSwitchClassTokens.labelBase,\n ...grSwitchClassTokens.labelSizes,\n ...grSwitchClassTokens.stateText,\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grSwitchSafelist } from './safelist'\n\nexport const grSwitchConfig = defineGranularComponent(import.meta.url, {\n name: 'GrSwitch',\n safelist: grSwitchSafelist,\n})\n"],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { n as splitClassTokens } from "./classTokens-8v2XC74x.js";
2
+ import { C as tablistVerticalVariants, S as tablistVariants, _ as tablistBase, b as tablistScrollClass, c as tabBase, d as tabCloseSizes, f as tabContentClass, g as tabVariantBase, h as tabStateClasses, l as tabCloseBase, m as tabSizes, o as tabBadgeBase, p as tabIconClass, s as tabBadgeSizes, u as tabCloseIconSizes, v as tablistColumnClass, w as tabsEmptyBase, x as tablistSizes, y as tablistLineSizes } from "./grTabsStyles-DIz2VdIm.js";
3
+ import { defineGranularComponent } from "@feugene/unocss-preset-granular/contract";
4
+ //#region src/components/GrTabs/safelist.ts
5
+ var grTabsSafelist = [.../* @__PURE__ */ new Set([
6
+ ...Object.values(tabSizes).flatMap(splitClassTokens),
7
+ ...Object.values(tabBadgeSizes).flatMap(splitClassTokens),
8
+ ...Object.values(tabCloseSizes).flatMap(splitClassTokens),
9
+ ...Object.values(tabCloseIconSizes).flatMap(splitClassTokens),
10
+ ...Object.values(tablistSizes).flatMap(splitClassTokens),
11
+ ...Object.values(tablistLineSizes).flatMap(splitClassTokens),
12
+ ...Object.values(tablistVariants).flatMap(splitClassTokens),
13
+ ...Object.values(tablistVerticalVariants).flatMap(splitClassTokens),
14
+ ...Object.values(tabVariantBase).flatMap(splitClassTokens),
15
+ ...Object.values(tabStateClasses).flatMap((state) => [
16
+ ...splitClassTokens(state.active),
17
+ ...splitClassTokens(state.idle),
18
+ ...splitClassTokens(state.disabled)
19
+ ]),
20
+ ...splitClassTokens(tablistBase),
21
+ ...splitClassTokens(tablistScrollClass),
22
+ ...splitClassTokens(tablistColumnClass),
23
+ ...splitClassTokens(tabBase),
24
+ ...splitClassTokens(tabBadgeBase),
25
+ ...splitClassTokens(tabContentClass),
26
+ ...splitClassTokens(tabIconClass),
27
+ ...splitClassTokens(tabCloseBase),
28
+ ...splitClassTokens(tabsEmptyBase)
29
+ ])];
30
+ //#endregion
31
+ //#region src/components/GrTabs/config.ts
32
+ var grTabsConfig = defineGranularComponent(import.meta.url, {
33
+ name: "GrTabs",
34
+ safelist: grTabsSafelist
35
+ });
36
+ //#endregion
37
+ export { grTabsSafelist as n, grTabsConfig as t };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-SPugeaHT.js","names":[],"sources":["../../src/components/GrTabs/safelist.ts","../../src/components/GrTabs/config.ts"],"sourcesContent":["import { splitClassTokens } from '../shared/classTokens'\nimport {\n tabBadgeBase,\n tabBadgeSizes,\n tabBase,\n tabCloseBase,\n tabCloseIconSizes,\n tabCloseSizes,\n tabContentClass,\n tabIconClass,\n tablistBase,\n tablistColumnClass,\n tablistLineSizes,\n tablistScrollClass,\n tablistSizes,\n tablistVariants,\n tablistVerticalVariants,\n tabsEmptyBase,\n tabSizes,\n tabStateClasses,\n tabVariantBase,\n} from './grTabsStyles'\n\nexport const grTabsSafelist = [...new Set([\n ...Object.values(tabSizes).flatMap(splitClassTokens),\n ...Object.values(tabBadgeSizes).flatMap(splitClassTokens),\n ...Object.values(tabCloseSizes).flatMap(splitClassTokens),\n ...Object.values(tabCloseIconSizes).flatMap(splitClassTokens),\n ...Object.values(tablistSizes).flatMap(splitClassTokens),\n ...Object.values(tablistLineSizes).flatMap(splitClassTokens),\n ...Object.values(tablistVariants).flatMap(splitClassTokens),\n ...Object.values(tablistVerticalVariants).flatMap(splitClassTokens),\n ...Object.values(tabVariantBase).flatMap(splitClassTokens),\n ...Object.values(tabStateClasses).flatMap(state => [\n ...splitClassTokens(state.active),\n ...splitClassTokens(state.idle),\n ...splitClassTokens(state.disabled),\n ]),\n ...splitClassTokens(tablistBase),\n ...splitClassTokens(tablistScrollClass),\n ...splitClassTokens(tablistColumnClass),\n ...splitClassTokens(tabBase),\n ...splitClassTokens(tabBadgeBase),\n ...splitClassTokens(tabContentClass),\n ...splitClassTokens(tabIconClass),\n ...splitClassTokens(tabCloseBase),\n ...splitClassTokens(tabsEmptyBase),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grTabsSafelist } from './safelist'\n\nexport const grTabsConfig = defineGranularComponent(import.meta.url, {\n name: 'GrTabs',\n safelist: grTabsSafelist,\n})\n"],"mappings":";;;;AAuBA,IAAa,iBAAiB,CAAC,mBAAG,IAAI,IAAI;CACxC,GAAG,OAAO,OAAO,QAAQ,CAAC,CAAC,QAAQ,gBAAgB;CACnD,GAAG,OAAO,OAAO,aAAa,CAAC,CAAC,QAAQ,gBAAgB;CACxD,GAAG,OAAO,OAAO,aAAa,CAAC,CAAC,QAAQ,gBAAgB;CACxD,GAAG,OAAO,OAAO,iBAAiB,CAAC,CAAC,QAAQ,gBAAgB;CAC5D,GAAG,OAAO,OAAO,YAAY,CAAC,CAAC,QAAQ,gBAAgB;CACvD,GAAG,OAAO,OAAO,gBAAgB,CAAC,CAAC,QAAQ,gBAAgB;CAC3D,GAAG,OAAO,OAAO,eAAe,CAAC,CAAC,QAAQ,gBAAgB;CAC1D,GAAG,OAAO,OAAO,uBAAuB,CAAC,CAAC,QAAQ,gBAAgB;CAClE,GAAG,OAAO,OAAO,cAAc,CAAC,CAAC,QAAQ,gBAAgB;CACzD,GAAG,OAAO,OAAO,eAAe,CAAC,CAAC,SAAQ,UAAS;EACjD,GAAG,iBAAiB,MAAM,MAAM;EAChC,GAAG,iBAAiB,MAAM,IAAI;EAC9B,GAAG,iBAAiB,MAAM,QAAQ;CACpC,CAAC;CACD,GAAG,iBAAiB,WAAW;CAC/B,GAAG,iBAAiB,kBAAkB;CACtC,GAAG,iBAAiB,kBAAkB;CACtC,GAAG,iBAAiB,OAAO;CAC3B,GAAG,iBAAiB,YAAY;CAChC,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,YAAY;CAChC,GAAG,iBAAiB,YAAY;CAChC,GAAG,iBAAiB,aAAa;AACnC,CAAC,CAAC;;;AC3CF,IAAa,eAAe,wBAAwB,YAAY,KAAK;CACnE,MAAM;CACN,UAAU;AACZ,CAAC"}
@@ -15,7 +15,8 @@ var transfer = {
15
15
  "moved": "{count} moved to {list}",
16
16
  "reordered": "Position {position} of {count}",
17
17
  "reorderFiltered": "Reordering is off while a search is active",
18
- "cancelled": "Move cancelled"
18
+ "cancelled": "Move cancelled",
19
+ "loading": "Loading…"
19
20
  };
20
21
  var carousel = {
21
22
  "roledescription": "carousel",
@@ -51,7 +52,8 @@ var steps = {
51
52
  var treeSelect = {
52
53
  "filterPlaceholder": "Search…",
53
54
  "empty": "No data",
54
- "loading": "Loading…"
55
+ "loading": "Loading…",
56
+ "removeTag": "Remove {label}"
55
57
  };
56
58
  var badgeWrap = { "count": "{count} new" };
57
59
  var avatar = {
@@ -98,7 +100,14 @@ var dataTable = {
98
100
  "detailRetry": "Retry",
99
101
  "detailExpanded": "Row details shown",
100
102
  "detailCollapsed": "Row details hidden",
101
- "detailReady": "Row details loaded"
103
+ "detailReady": "Row details loaded",
104
+ "columnMenu": "Options for column {label}",
105
+ "pinLeft": "Pin to the left",
106
+ "pinRight": "Pin to the right",
107
+ "unpin": "Unpin",
108
+ "columnPinnedLeft": "Column {label} pinned to the left",
109
+ "columnPinnedRight": "Column {label} pinned to the right",
110
+ "columnUnpinned": "Column {label} unpinned"
102
111
  };
103
112
  var breadcrumbs = {
104
113
  "label": "Breadcrumb",
@@ -209,7 +218,9 @@ var inputTag = {
209
218
  "addedMany": "{count} tags added",
210
219
  "removed": "Tag removed: {tag}",
211
220
  "cleared": "All tags removed",
212
- "limitReached": "Tag limit reached"
221
+ "limitReached": "Tag limit reached",
222
+ "editTag": "Edit tag {tag}",
223
+ "edited": "Tag changed: {tag}"
213
224
  };
214
225
  var fileUpload = {
215
226
  "placeholder": "Drag files here or click to select",
@@ -325,7 +336,9 @@ var colorPicker = {
325
336
  "opacity": "Opacity",
326
337
  "hexLabel": "Hex value",
327
338
  "presetsLabel": "Color presets",
328
- "swatchLabel": "Color {color}"
339
+ "swatchLabel": "Color {color}",
340
+ "area": "Saturation and lightness",
341
+ "eyedropper": "Pick a colour from the screen"
329
342
  };
330
343
  var collapse = { "empty": "Nothing here yet" };
331
344
  var list = { "empty": "Nothing here yet" };
@@ -340,7 +353,10 @@ var bottomNav = {
340
353
  "label": "Bottom navigation",
341
354
  "badge": "{count} new"
342
355
  };
343
- var emptyState = { "title": "Nothing here yet" };
356
+ var emptyState = {
357
+ "title": "Nothing here yet",
358
+ "searchTitle": "Nothing found"
359
+ };
344
360
  var sortable = {
345
361
  "label": "Sortable list",
346
362
  "handle": "Reorder",
@@ -377,7 +393,11 @@ var en_default = {
377
393
  autocomplete,
378
394
  form,
379
395
  dialog,
380
- "switch": { "loading": "Saving…" },
396
+ "switch": {
397
+ "loading": "Saving…",
398
+ "on": "ON",
399
+ "off": "OFF"
400
+ },
381
401
  slider,
382
402
  sidebar,
383
403
  splitter,