@feugene/granularity 0.32.0 → 0.34.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 (157) hide show
  1. package/dist/chunks/{config-Dv_r92GL.js → config-2vrOFn2f.js} +2 -2
  2. package/dist/chunks/{config-Dv_r92GL.js.map → config-2vrOFn2f.js.map} +1 -1
  3. package/dist/chunks/{config-g8-JGZ_Y.js → config-BscVxZR3.js} +1 -1
  4. package/dist/chunks/{config-g8-JGZ_Y.js.map → config-BscVxZR3.js.map} +1 -1
  5. package/dist/chunks/{config-vYMJ3Cr1.js → config-CYthTVK2.js} +2 -2
  6. package/dist/chunks/config-CYthTVK2.js.map +1 -0
  7. package/dist/chunks/{config-CPSxM7XE.js → config-CsCUuukB.js} +1 -0
  8. package/dist/chunks/config-CsCUuukB.js.map +1 -0
  9. package/dist/chunks/{config-BTwYMQaz2.js → config-DBXCIb6r2.js} +4 -3
  10. package/dist/chunks/config-DBXCIb6r2.js.map +1 -0
  11. package/dist/chunks/{config-uzUuosv7.js → config-DGGaKf4R.js} +6 -5
  12. package/dist/chunks/config-DGGaKf4R.js.map +1 -0
  13. package/dist/chunks/{config-DnF472Ox.js → config-DOYz_SVK.js} +2 -2
  14. package/dist/chunks/{config-DnF472Ox.js.map → config-DOYz_SVK.js.map} +1 -1
  15. package/dist/chunks/{config-T3-DMXYm.js → config-DUNH02Fg.js} +2 -2
  16. package/dist/chunks/config-DUNH02Fg.js.map +1 -0
  17. package/dist/chunks/{generated-CSyPsWtM.js → generated-Buw6W7Te.js} +7 -0
  18. package/dist/chunks/{generated-CSyPsWtM.js.map → generated-Buw6W7Te.js.map} +1 -1
  19. package/dist/chunks/{grBadgeStyles-D8Mz73B5.js → grBadgeStyles-DV0DrAew.js} +17 -1
  20. package/dist/chunks/grBadgeStyles-DV0DrAew.js.map +1 -0
  21. package/dist/chunks/{grChipStyles-3JZApw03.js → grChipStyles-DcDyxAL0.js} +1 -1
  22. package/dist/chunks/{grChipStyles-3JZApw03.js.map → grChipStyles-DcDyxAL0.js.map} +1 -1
  23. package/dist/chunks/grDropdownStyles-DLToHWMX.js +5 -0
  24. package/dist/chunks/grDropdownStyles-DLToHWMX.js.map +1 -0
  25. package/dist/chunks/grPopoverStyles-DKwigt7b.js +91 -0
  26. package/dist/chunks/grPopoverStyles-DKwigt7b.js.map +1 -0
  27. package/dist/chunks/{grSelectStyles-Cdtd10eY.js → grSelectStyles-D9EQ-pgK.js} +2 -1
  28. package/dist/chunks/grSelectStyles-D9EQ-pgK.js.map +1 -0
  29. package/dist/chunks/{granular-provider-Da2CJO6j.js → granular-provider-3LUawDPh.js} +8 -8
  30. package/dist/chunks/{granular-provider-Da2CJO6j.js.map → granular-provider-3LUawDPh.js.map} +1 -1
  31. package/dist/chunks/{overlayTransition-0Fj5tQbq.js → overlayPanelSurface-BKeMhRx4.js} +24 -1
  32. package/dist/chunks/overlayPanelSurface-BKeMhRx4.js.map +1 -0
  33. package/dist/chunks/{safelist-CtiHPgrj.js → safelist-x8USecK8.js} +3 -1
  34. package/dist/chunks/safelist-x8USecK8.js.map +1 -0
  35. package/dist/chunks/{focusables-BkzK42SQ.js → useFocusTrap-D9bIPNF6.js} +123 -1
  36. package/dist/chunks/useFocusTrap-D9bIPNF6.js.map +1 -0
  37. package/dist/chunks/{useMenuItemsFocus-B6TldmGf.js → useMenuItemsFocus-B7Bl_aFA.js} +1 -1
  38. package/dist/chunks/{useMenuItemsFocus-B6TldmGf.js.map → useMenuItemsFocus-B7Bl_aFA.js.map} +1 -1
  39. package/dist/chunks/{useModalOverlay-D__CqLGn.js → useModalOverlay-BnAGZpcI.js} +1 -1
  40. package/dist/chunks/{useModalOverlay-D__CqLGn.js.map → useModalOverlay-BnAGZpcI.js.map} +1 -1
  41. package/dist/components/GrAutocomplete/chunks/{GrAutocomplete-rYEY15UI.js → GrAutocomplete-BQsSE7sj.js} +4 -4
  42. package/dist/components/GrAutocomplete/chunks/{GrAutocomplete-rYEY15UI.js.map → GrAutocomplete-BQsSE7sj.js.map} +1 -1
  43. package/dist/components/GrAutocomplete/index.js +2 -2
  44. package/dist/components/GrBadge/chunks/{GrBadge-D2MfThPz.js → GrBadge-DpUDXKbq.js} +9 -4
  45. package/dist/components/GrBadge/chunks/GrBadge-DpUDXKbq.js.map +1 -0
  46. package/dist/components/GrBadge/index.js +3 -3
  47. package/dist/components/GrBadge/styles.css +1 -1
  48. package/dist/components/GrChip/chunks/{GrChip-C0vU69tf.js → GrChip-BTivtwff.js} +1 -1
  49. package/dist/components/GrChip/chunks/{GrChip-C0vU69tf.js.map → GrChip-BTivtwff.js.map} +1 -1
  50. package/dist/components/GrChip/index.js +2 -2
  51. package/dist/components/GrColorPicker/chunks/{GrColorPicker-p2XH_8cE.js → GrColorPicker-D1Iis7jf.js} +2 -1
  52. package/dist/components/GrColorPicker/chunks/GrColorPicker-D1Iis7jf.js.map +1 -0
  53. package/dist/components/GrColorPicker/index.js +1 -1
  54. package/dist/components/GrCommandPalette/chunks/{GrCommandPalette-BXbh3q7O.js → GrCommandPalette-BZHUKlux.js} +1 -1
  55. package/dist/components/GrCommandPalette/chunks/{GrCommandPalette-BXbh3q7O.js.map → GrCommandPalette-BZHUKlux.js.map} +1 -1
  56. package/dist/components/GrCommandPalette/index.js +1 -1
  57. package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-CUP43q__.js → GrConfirmDialog-jRDs_E6C.js} +1 -1
  58. package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-CUP43q__.js.map → GrConfirmDialog-jRDs_E6C.js.map} +1 -1
  59. package/dist/components/GrConfirmDialog/index.js +1 -1
  60. package/dist/components/GrContextMenu/chunks/{GrContextMenu-ClkVjdcP.js → GrContextMenu-CWmgrzpi.js} +17 -3
  61. package/dist/components/GrContextMenu/chunks/GrContextMenu-CWmgrzpi.js.map +1 -0
  62. package/dist/components/GrContextMenu/index.js +2 -2
  63. package/dist/components/GrDataTable/chunks/{GrDataTable-CAGgRk27.js → GrDataTable-4JAgOQ-7.js} +1 -1
  64. package/dist/components/GrDataTable/chunks/{GrDataTable-CAGgRk27.js.map → GrDataTable-4JAgOQ-7.js.map} +1 -1
  65. package/dist/components/GrDataTable/index.js +1 -1
  66. package/dist/components/GrDialog/chunks/{GrDialog-BiMJ9_T4.js → GrDialog-C01Hhk6G.js} +1 -1
  67. package/dist/components/GrDialog/chunks/{GrDialog-BiMJ9_T4.js.map → GrDialog-C01Hhk6G.js.map} +1 -1
  68. package/dist/components/GrDialog/index.js +1 -1
  69. package/dist/components/GrDialogService/chunks/{GrDialogService-BxNK6crD.js → GrDialogService-CmsJNUmM.js} +7 -2
  70. package/dist/components/GrDialogService/chunks/{GrDialogService-BxNK6crD.js.map → GrDialogService-CmsJNUmM.js.map} +1 -1
  71. package/dist/components/GrDialogService/index.js +1 -1
  72. package/dist/components/GrDrawer/chunks/{GrDrawer-Ce2l3zaG.js → GrDrawer-xfoy-MCj.js} +1 -1
  73. package/dist/components/GrDrawer/chunks/{GrDrawer-Ce2l3zaG.js.map → GrDrawer-xfoy-MCj.js.map} +1 -1
  74. package/dist/components/GrDrawer/index.js +1 -1
  75. package/dist/components/GrDropdown/chunks/GrDropdown-CDkPkvIJ.js +180 -0
  76. package/dist/components/GrDropdown/chunks/GrDropdown-CDkPkvIJ.js.map +1 -0
  77. package/dist/components/GrDropdown/index.js +2 -2
  78. package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu-GOzuAXsi.js → GrDropdownMenu-DQrZ_yPV.js} +1 -1
  79. package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu-GOzuAXsi.js.map → GrDropdownMenu-DQrZ_yPV.js.map} +1 -1
  80. package/dist/components/GrDropdownMenu/index.js +1 -1
  81. package/dist/components/GrFileUpload/chunks/{GrFileUpload-NsHkRRIa.js → GrFileUpload-LL8RZvC0.js} +10 -0
  82. package/dist/components/GrFileUpload/chunks/GrFileUpload-LL8RZvC0.js.map +1 -0
  83. package/dist/components/GrFileUpload/index.js +1 -1
  84. package/dist/components/GrImageViewer/chunks/{GrImageViewer-CG4vUBg_.js → GrImageViewer--BU8yrfx.js} +1 -1
  85. package/dist/components/GrImageViewer/chunks/{GrImageViewer-CG4vUBg_.js.map → GrImageViewer--BU8yrfx.js.map} +1 -1
  86. package/dist/components/GrImageViewer/index.js +1 -1
  87. package/dist/components/GrInputTag/chunks/{GrInputTag-Cj4A9Xgs.js → GrInputTag-ByD9NugQ.js} +2 -2
  88. package/dist/components/GrInputTag/chunks/{GrInputTag-Cj4A9Xgs.js.map → GrInputTag-ByD9NugQ.js.map} +1 -1
  89. package/dist/components/GrInputTag/index.js +1 -1
  90. package/dist/components/GrModal/chunks/{GrModal-D0mf1SAx.js → GrModal-_JrDhon-.js} +1 -1
  91. package/dist/components/GrModal/chunks/{GrModal-D0mf1SAx.js.map → GrModal-_JrDhon-.js.map} +1 -1
  92. package/dist/components/GrModal/index.js +1 -1
  93. package/dist/components/GrPagination/chunks/{GrPagination-B_kAhoAV.js → GrPagination-gBoWVHk6.js} +1 -1
  94. package/dist/components/GrPagination/chunks/{GrPagination-B_kAhoAV.js.map → GrPagination-gBoWVHk6.js.map} +1 -1
  95. package/dist/components/GrPagination/index.js +1 -1
  96. package/dist/components/GrPopover/chunks/{GrPopover-faJanmGs.js → GrPopover-CzeXMcvh.js} +87 -13
  97. package/dist/components/GrPopover/chunks/GrPopover-CzeXMcvh.js.map +1 -0
  98. package/dist/components/GrPopover/index.js +2 -2
  99. package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-C6QGC7QJ.js → GrPromptDialog-CailXSqW.js} +1 -1
  100. package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-C6QGC7QJ.js.map → GrPromptDialog-CailXSqW.js.map} +1 -1
  101. package/dist/components/GrPromptDialog/index.js +1 -1
  102. package/dist/components/GrSelect/chunks/{GrSelect-gCeRFgQo.js → GrSelect-CZqV1Eg4.js} +4 -4
  103. package/dist/components/GrSelect/chunks/{GrSelect-gCeRFgQo.js.map → GrSelect-CZqV1Eg4.js.map} +1 -1
  104. package/dist/components/GrSelect/index.js +2 -2
  105. package/dist/components/GrTable/chunks/{GrTable-Zcdz2St_.js → GrTable-jhUTczjv.js} +12 -1
  106. package/dist/components/GrTable/chunks/GrTable-jhUTczjv.js.map +1 -0
  107. package/dist/components/GrTable/index.js +1 -1
  108. package/dist/components/GrTabs/chunks/{GrTabs-ugDnkk-2.js → GrTabs-UsO4j8zv.js} +5 -0
  109. package/dist/components/GrTabs/chunks/GrTabs-UsO4j8zv.js.map +1 -0
  110. package/dist/components/GrTabs/index.js +1 -1
  111. package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-BHwgGJcT.js → GrTreeSelect-DOXcpWq2.js} +2 -2
  112. package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-BHwgGJcT.js.map → GrTreeSelect-DOXcpWq2.js.map} +1 -1
  113. package/dist/components/GrTreeSelect/index.js +2 -2
  114. package/dist/composables/useFocusTrap.js +1 -123
  115. package/dist/granular-provider-node.js +1 -1
  116. package/dist/granular-provider.js +1 -1
  117. package/dist/index.js +34 -34
  118. package/dist/theme.js +1 -1
  119. package/dist/tokens.js +1 -1
  120. package/dist/types/components/GrAutocomplete/grAutocompleteStyles.d.ts +1 -1
  121. package/dist/types/components/GrBadge/GrBadge.vue.d.ts +11 -0
  122. package/dist/types/components/GrBadge/grBadgeStyles.d.ts +11 -0
  123. package/dist/types/components/GrDropdown/GrDropdown.vue.d.ts +5 -5
  124. package/dist/types/components/GrDropdown/grDropdownStyles.d.ts +8 -2
  125. package/dist/types/components/GrDropdownMenu/GrDropdownMenu.vue.d.ts +2 -2
  126. package/dist/types/components/GrPopover/GrPopover.vue.d.ts +54 -4
  127. package/dist/types/components/GrPopover/grPopoverStyles.d.ts +19 -11
  128. package/dist/types/components/GrSelect/grSelectStyles.d.ts +1 -1
  129. package/dist/types/components/GrTreeSelect/grTreeSelectStyles.d.ts +1 -1
  130. package/dist/types/components/shared/overlayOrigin.d.ts +22 -0
  131. package/dist/types/components/shared/overlayPanelSurface.d.ts +21 -0
  132. package/dist/web-types.json +44 -4
  133. package/package.json +3 -3
  134. package/dist/chunks/config-BTwYMQaz2.js.map +0 -1
  135. package/dist/chunks/config-CPSxM7XE.js.map +0 -1
  136. package/dist/chunks/config-T3-DMXYm.js.map +0 -1
  137. package/dist/chunks/config-uzUuosv7.js.map +0 -1
  138. package/dist/chunks/config-vYMJ3Cr1.js.map +0 -1
  139. package/dist/chunks/focusables-BkzK42SQ.js.map +0 -1
  140. package/dist/chunks/grBadgeStyles-D8Mz73B5.js.map +0 -1
  141. package/dist/chunks/grDropdownStyles-V7TRiCXn.js +0 -24
  142. package/dist/chunks/grDropdownStyles-V7TRiCXn.js.map +0 -1
  143. package/dist/chunks/grPopoverStyles-Djh5RNhn.js +0 -59
  144. package/dist/chunks/grPopoverStyles-Djh5RNhn.js.map +0 -1
  145. package/dist/chunks/grSelectStyles-Cdtd10eY.js.map +0 -1
  146. package/dist/chunks/overlayTransition-0Fj5tQbq.js.map +0 -1
  147. package/dist/chunks/safelist-CtiHPgrj.js.map +0 -1
  148. package/dist/components/GrBadge/chunks/GrBadge-D2MfThPz.js.map +0 -1
  149. package/dist/components/GrColorPicker/chunks/GrColorPicker-p2XH_8cE.js.map +0 -1
  150. package/dist/components/GrContextMenu/chunks/GrContextMenu-ClkVjdcP.js.map +0 -1
  151. package/dist/components/GrDropdown/chunks/GrDropdown-13Wt9eB_.js +0 -239
  152. package/dist/components/GrDropdown/chunks/GrDropdown-13Wt9eB_.js.map +0 -1
  153. package/dist/components/GrFileUpload/chunks/GrFileUpload-NsHkRRIa.js.map +0 -1
  154. package/dist/components/GrPopover/chunks/GrPopover-faJanmGs.js.map +0 -1
  155. package/dist/components/GrTable/chunks/GrTable-Zcdz2St_.js.map +0 -1
  156. package/dist/components/GrTabs/chunks/GrTabs-ugDnkk-2.js.map +0 -1
  157. package/dist/composables/useFocusTrap.js.map +0 -1
@@ -1,3 +1,3 @@
1
- import { n as grTreeSelectSafelist, t as grTreeSelectConfig } from "../../chunks/config-T3-DMXYm.js";
2
- import { t as GrTreeSelect_default } from "./chunks/GrTreeSelect-BHwgGJcT.js";
1
+ import { n as grTreeSelectSafelist, t as grTreeSelectConfig } from "../../chunks/config-DUNH02Fg.js";
2
+ import { t as GrTreeSelect_default } from "./chunks/GrTreeSelect-DOXcpWq2.js";
3
3
  export { GrTreeSelect_default as GrTreeSelect, GrTreeSelect_default as default, grTreeSelectConfig, grTreeSelectSafelist };
@@ -1,124 +1,2 @@
1
- import { n as getFocusableElementsIn, r as isFocusable } from "../chunks/focusables-BkzK42SQ.js";
2
- import { nextTick, onScopeDispose, watch } from "vue";
3
- //#region src/composables/useFocusTrap.ts
4
- /**
5
- * Ловушка фокуса: пока активна, Tab ходит по кругу внутри слоя, а фокус,
6
- * утёкший наружу, возвращается обратно.
7
- *
8
- * Реализована на `keydown` и `focusin`, **без sentinel-узлов**: распространённый
9
- * подход с двумя focus-guard кнопками по краям кладёт в разметку интерактивные
10
- * элементы, а внутрь контейнера с ARIA-ролью их класть нельзя — роль объявляет
11
- * потомков презентационными (axe: `nested-interactive`).
12
- *
13
- * Слой из ловушки не выводится: порядок окон, Esc и `inert` — забота
14
- * `useOverlayLayer`. Композиция такая:
15
- *
16
- * ```ts
17
- * const layer = useOverlayLayer(open, close, { modal: true, root: panelRef })
18
- * useFocusTrap(panelRef, {
19
- * active: () => open.value && isTopmost.value,
20
- * containers: layer.rootsAbove,
21
- * })
22
- * ```
23
- */
24
- function useFocusTrap(container, options = {}) {
25
- let previouslyFocused = null;
26
- let listening = false;
27
- let lastFocusedInside = null;
28
- function roots() {
29
- const extra = options.containers?.() ?? [];
30
- return [container.value, ...extra].filter((root) => Boolean(root));
31
- }
32
- function contains(target) {
33
- if (!target) return false;
34
- return roots().some((root) => root === target || root.contains(target));
35
- }
36
- function focusables() {
37
- return getFocusableElementsIn(roots());
38
- }
39
- function focusInitial() {
40
- if (contains(document.activeElement)) return;
41
- const requested = options.initialFocus?.();
42
- if (requested && isFocusable(requested)) {
43
- requested.focus();
44
- return;
45
- }
46
- const [first] = focusables();
47
- if (first) {
48
- first.focus();
49
- return;
50
- }
51
- (options.fallbackFocus?.() ?? container.value)?.focus();
52
- }
53
- function onKeydown(event) {
54
- if (event.key !== "Tab") return;
55
- if (!contains(document.activeElement)) return;
56
- const items = focusables();
57
- if (items.length === 0) {
58
- event.preventDefault();
59
- (options.fallbackFocus?.() ?? container.value)?.focus();
60
- return;
61
- }
62
- const first = items[0];
63
- const last = items[items.length - 1];
64
- const active = document.activeElement;
65
- if ((active ? items.indexOf(active) : -1) === -1) {
66
- event.preventDefault();
67
- (event.shiftKey ? last : first).focus();
68
- return;
69
- }
70
- if (event.shiftKey && active === first) {
71
- event.preventDefault();
72
- last.focus();
73
- return;
74
- }
75
- if (!event.shiftKey && active === last) {
76
- event.preventDefault();
77
- first.focus();
78
- }
79
- }
80
- function onFocusIn(event) {
81
- const target = event.target;
82
- if (contains(target)) {
83
- lastFocusedInside = target;
84
- return;
85
- }
86
- if (lastFocusedInside && contains(lastFocusedInside) && isFocusable(lastFocusedInside)) {
87
- lastFocusedInside.focus();
88
- return;
89
- }
90
- focusInitial();
91
- }
92
- function activate() {
93
- if (listening) return;
94
- if (typeof document === "undefined") return;
95
- listening = true;
96
- previouslyFocused = document.activeElement ?? null;
97
- lastFocusedInside = null;
98
- document.addEventListener("keydown", onKeydown, true);
99
- document.addEventListener("focusin", onFocusIn, true);
100
- nextTick(() => {
101
- if (!listening) return;
102
- focusInitial();
103
- });
104
- }
105
- function deactivate() {
106
- if (!listening) return;
107
- listening = false;
108
- document.removeEventListener("keydown", onKeydown, true);
109
- document.removeEventListener("focusin", onFocusIn, true);
110
- const target = previouslyFocused;
111
- previouslyFocused = null;
112
- lastFocusedInside = null;
113
- if (options.restoreFocus === false || !target) return;
114
- if (!target.isConnected) return;
115
- target.focus?.();
116
- }
117
- watch(() => Boolean(options.active?.() ?? true) && Boolean(container.value), (isActive) => {
118
- if (isActive) activate();
119
- else deactivate();
120
- }, { immediate: true });
121
- onScopeDispose(deactivate);
122
- }
123
- //#endregion
1
+ import { t as useFocusTrap } from "../chunks/useFocusTrap-D9bIPNF6.js";
124
2
  export { useFocusTrap };
@@ -1,2 +1,2 @@
1
- import { a as granularityDefaultThemes, i as granularityComponentConfigs, n as GRANULARITY_PROVIDER_ID, o as granularityThemeNames, r as createGranularityProvider, t as granularityProvider } from "./chunks/granular-provider-Da2CJO6j.js";
1
+ import { a as granularityDefaultThemes, i as granularityComponentConfigs, n as GRANULARITY_PROVIDER_ID, o as granularityThemeNames, r as createGranularityProvider, t as granularityProvider } from "./chunks/granular-provider-3LUawDPh.js";
2
2
  export { GRANULARITY_PROVIDER_ID, createGranularityProvider, granularityProvider as default, granularityProvider, granularityComponentConfigs, granularityDefaultThemes, granularityThemeNames };
@@ -1,2 +1,2 @@
1
- import { a as granularityDefaultThemes, i as granularityComponentConfigs, n as GRANULARITY_PROVIDER_ID, o as granularityThemeNames, r as createGranularityProvider, t as granularityProvider } from "./chunks/granular-provider-Da2CJO6j.js";
1
+ import { a as granularityDefaultThemes, i as granularityComponentConfigs, n as GRANULARITY_PROVIDER_ID, o as granularityThemeNames, r as createGranularityProvider, t as granularityProvider } from "./chunks/granular-provider-3LUawDPh.js";
2
2
  export { GRANULARITY_PROVIDER_ID, createGranularityProvider, granularityProvider as default, granularityProvider, granularityComponentConfigs, granularityDefaultThemes, granularityThemeNames };
package/dist/index.js CHANGED
@@ -21,15 +21,15 @@ import { n as useGrFormFieldContext } from "./chunks/context-DdNIxa1w.js";
21
21
  import { useGrFormControl } from "./composables/useGrFormControl.js";
22
22
  import { useComboboxNavigation } from "./composables/useComboboxNavigation.js";
23
23
  import { useRovingFocus } from "./composables/useRovingFocus.js";
24
- import { t as GrChip_default } from "./components/GrChip/chunks/GrChip-C0vU69tf.js";
25
- import { n as grAutocompleteSafelist, t as grAutocompleteConfig } from "./chunks/config-vYMJ3Cr1.js";
26
- import { t as GrAutocomplete_default } from "./components/GrAutocomplete/chunks/GrAutocomplete-rYEY15UI.js";
24
+ import { t as GrChip_default } from "./components/GrChip/chunks/GrChip-BTivtwff.js";
25
+ import { n as grAutocompleteSafelist, t as grAutocompleteConfig } from "./chunks/config-CYthTVK2.js";
26
+ import { t as GrAutocomplete_default } from "./components/GrAutocomplete/chunks/GrAutocomplete-BQsSE7sj.js";
27
27
  import { t as GrSkeleton_default } from "./components/GrSkeleton/chunks/GrSkeleton-CgfXxPQ2.js";
28
28
  import { n as GrAvatar_default, t as GrAvatarGroup_default } from "./components/GrAvatar/chunks/GrAvatar-CNmLmgcr.js";
29
29
  import { c as initialsFrom, n as grAvatarSafelist, t as grAvatarConfig } from "./chunks/config-B3J0alyY.js";
30
- import { t as GrBadge_default } from "./components/GrBadge/chunks/GrBadge-D2MfThPz.js";
31
- import { t as grBadgeSafelist } from "./chunks/safelist-CtiHPgrj.js";
32
- import { t as grBadgeConfig } from "./chunks/config-g8-JGZ_Y.js";
30
+ import { t as GrBadge_default } from "./components/GrBadge/chunks/GrBadge-DpUDXKbq.js";
31
+ import { t as grBadgeSafelist } from "./chunks/safelist-x8USecK8.js";
32
+ import { t as grBadgeConfig } from "./chunks/config-BscVxZR3.js";
33
33
  import { n as grBadgeWrapSafelist, o as formatBadgeValue, t as grBadgeWrapConfig } from "./chunks/config-DwABJHEo.js";
34
34
  import { t as GrBadgeWrap_default } from "./components/GrBadgeWrap/chunks/GrBadgeWrap-B-A3PRkE.js";
35
35
  import { n as grBottomNavSafelist, t as grBottomNavConfig } from "./chunks/config-DM0lsduD.js";
@@ -51,7 +51,7 @@ import { n as grCheckboxSafelist, t as grCheckboxConfig } from "./chunks/config-
51
51
  import "./components/GrCheckbox/index.js";
52
52
  import { t as GrCheckboxGroup_default } from "./components/GrCheckboxGroup/chunks/GrCheckboxGroup-BOwrVcFr.js";
53
53
  import { t as grCheckboxGroupConfig } from "./chunks/config-BuGlNPE9.js";
54
- import { n as grChipSafelist, t as grChipConfig } from "./chunks/config-Dv_r92GL.js";
54
+ import { n as grChipSafelist, t as grChipConfig } from "./chunks/config-2vrOFn2f.js";
55
55
  import "./components/GrChip/index.js";
56
56
  import { n as grChipGroupSafelist, t as grChipGroupConfig } from "./chunks/config-CZPDPJlg.js";
57
57
  import { t as GrChipGroup_default } from "./components/GrChipGroup/chunks/GrChipGroup-C78Vcwos.js";
@@ -62,29 +62,29 @@ import { n as grCollapseSafelist, t as grCollapseConfig } from "./chunks/config-
62
62
  import { n as GrCollapse_default, t as GrCollapseItem_default } from "./components/GrCollapse/chunks/GrCollapse-BlW6ybdL.js";
63
63
  import { n as grIconSafelist, t as grIconConfig } from "./chunks/config-3bQeQvqd.js";
64
64
  import { t as GrInput_default } from "./components/GrInput/chunks/GrInput-BLywRZUN.js";
65
- import { useFocusTrap } from "./composables/useFocusTrap.js";
66
- import { t as GrPopover_default } from "./components/GrPopover/chunks/GrPopover-faJanmGs.js";
65
+ import { t as useFocusTrap } from "./chunks/useFocusTrap-D9bIPNF6.js";
66
+ import { t as GrPopover_default } from "./components/GrPopover/chunks/GrPopover-CzeXMcvh.js";
67
67
  import { useDragGesture } from "./composables/useDragGesture.js";
68
68
  import { t as GrSlider_default } from "./components/GrSlider/chunks/GrSlider-DTTrZTHK.js";
69
- import { t as GrColorPicker_default } from "./components/GrColorPicker/chunks/GrColorPicker-p2XH_8cE.js";
69
+ import { t as GrColorPicker_default } from "./components/GrColorPicker/chunks/GrColorPicker-D1Iis7jf.js";
70
70
  import { n as grColorPickerSafelist, t as grColorPickerConfig } from "./chunks/config-DIDz_E5m.js";
71
71
  import { a as GR_KBD_TOKENS, o as findKbdToken, t as GrKbd_default } from "./components/GrKbd/chunks/GrKbd-D2ga1H9i.js";
72
- import { t as GrModal_default } from "./components/GrModal/chunks/GrModal-D0mf1SAx.js";
73
- import { t as GrCommandPalette_default } from "./components/GrCommandPalette/chunks/GrCommandPalette-BXbh3q7O.js";
72
+ import { t as GrModal_default } from "./components/GrModal/chunks/GrModal-_JrDhon-.js";
73
+ import { t as GrCommandPalette_default } from "./components/GrCommandPalette/chunks/GrCommandPalette-BZHUKlux.js";
74
74
  import { n as grCommandPaletteSafelist, t as grCommandPaletteConfig } from "./chunks/config-D0NzGYaE.js";
75
75
  import { t as GrConfigProvider_default } from "./components/GrConfigProvider/chunks/GrConfigProvider-BF7R3hgg.js";
76
76
  import { t as grConfigProviderConfig } from "./chunks/config-B7W9VlZ7.js";
77
- import { i as GrDialogFooter_default, n as GrDialogHeader_default, r as GrDialogCloseButton_default, t as GrDialog_default } from "./components/GrDialog/chunks/GrDialog-BiMJ9_T4.js";
77
+ import { i as GrDialogFooter_default, n as GrDialogHeader_default, r as GrDialogCloseButton_default, t as GrDialog_default } from "./components/GrDialog/chunks/GrDialog-C01Hhk6G.js";
78
78
  import { a as extendDefaultParsers, n as coreResponseErrorParsers, r as createResponseErrorClassifier, s as normalizeError, t as GrResponseErrorBanner_default } from "./components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-DMeOWlzj.js";
79
- import { t as GrConfirmDialog_default } from "./components/GrConfirmDialog/chunks/GrConfirmDialog-CUP43q__.js";
79
+ import { t as GrConfirmDialog_default } from "./components/GrConfirmDialog/chunks/GrConfirmDialog-jRDs_E6C.js";
80
80
  import { t as grConfirmDialogConfig } from "./chunks/config-A-bBiotF.js";
81
81
  import "./components/GrConfirmDialog/index.js";
82
82
  import { a as GrDropdownMenuItem_default, c as GrDropdownMenuDivider_default, o as GrDropdownMenuGroup_default, s as GrDropdownMenuHeader_default, t as GrDropdownMenuList_default } from "./components/GrDropdownMenu/chunks/GrDropdownMenuList-B33ZzwfB.js";
83
- import { t as GrContextMenu_default } from "./components/GrContextMenu/chunks/GrContextMenu-ClkVjdcP.js";
84
- import { t as grContextMenuConfig } from "./chunks/config-CPSxM7XE.js";
85
- import { t as GrTable_default } from "./components/GrTable/chunks/GrTable-Zcdz2St_.js";
83
+ import { t as GrContextMenu_default } from "./components/GrContextMenu/chunks/GrContextMenu-CWmgrzpi.js";
84
+ import { t as grContextMenuConfig } from "./chunks/config-CsCUuukB.js";
85
+ import { t as GrTable_default } from "./components/GrTable/chunks/GrTable-jhUTczjv.js";
86
86
  import { t as useDragSort } from "./chunks/useDragSort-0l47h4yb.js";
87
- import { t as GrDataTable_default } from "./components/GrDataTable/chunks/GrDataTable-CAGgRk27.js";
87
+ import { t as GrDataTable_default } from "./components/GrDataTable/chunks/GrDataTable-4JAgOQ-7.js";
88
88
  import { n as grDataTableSafelist, t as grDataTableConfig } from "./chunks/config-DeyT9dJl.js";
89
89
  import { t as GrDelta_default } from "./components/GrDelta/chunks/GrDelta-BZwkgQW-.js";
90
90
  import { n as grValueSafelist, t as grValueConfig } from "./chunks/config-Z5LeUXys.js";
@@ -99,24 +99,24 @@ import { n as useGrFormContext } from "./chunks/context-Bfrgsluh.js";
99
99
  import { t as GrFormField_default } from "./components/GrFormField/chunks/GrFormField-DSylU7IU.js";
100
100
  import { t as GrTextarea_default } from "./components/GrTextarea/chunks/GrTextarea-DinXG12-.js";
101
101
  import { n as getByPath, o as runFieldRules, r as isEmpty, s as setByPath, t as createGrFormMessageResolver } from "./chunks/validation-5HhpanPP.js";
102
- import { t as GrPromptDialog_default } from "./components/GrPromptDialog/chunks/GrPromptDialog-C6QGC7QJ.js";
103
- import { a as useDialogService, i as teardownDialogService, n as dialogService, r as granularityDialogServicePlugin, t as GrDialogServiceHost_default } from "./components/GrDialogService/chunks/GrDialogService-BxNK6crD.js";
102
+ import { t as GrPromptDialog_default } from "./components/GrPromptDialog/chunks/GrPromptDialog-CailXSqW.js";
103
+ import { a as useDialogService, i as teardownDialogService, n as dialogService, r as granularityDialogServicePlugin, t as GrDialogServiceHost_default } from "./components/GrDialogService/chunks/GrDialogService-CmsJNUmM.js";
104
104
  import { t as grDialogServiceConfig } from "./chunks/config-CjXjhphs.js";
105
105
  import { n as grDividerSafelist, t as grDividerConfig } from "./chunks/config-D82r782v.js";
106
106
  import { t as GrDivider_default } from "./components/GrDivider/chunks/GrDivider-BXavGcMX.js";
107
107
  import { n as grDrawerSafelist, t as grDrawerConfig } from "./chunks/config-ChPg-BQv.js";
108
- import { t as GrDrawer_default } from "./components/GrDrawer/chunks/GrDrawer-Ce2l3zaG.js";
109
- import { t as GrDropdown_default } from "./components/GrDropdown/chunks/GrDropdown-13Wt9eB_.js";
110
- import { n as grDropdownSafelist, t as grDropdownConfig } from "./chunks/config-uzUuosv7.js";
108
+ import { t as GrDrawer_default } from "./components/GrDrawer/chunks/GrDrawer-xfoy-MCj.js";
109
+ import { t as GrDropdown_default } from "./components/GrDropdown/chunks/GrDropdown-CDkPkvIJ.js";
110
+ import { n as grDropdownSafelist, t as grDropdownConfig } from "./chunks/config-DGGaKf4R.js";
111
111
  import "./components/GrDropdown/index.js";
112
- import { n as GrDropdownMenuColumn_default, r as GrDropdownMenu_default, t as GrDropdownMenuColumns_default } from "./components/GrDropdownMenu/chunks/GrDropdownMenu-GOzuAXsi.js";
112
+ import { n as GrDropdownMenuColumn_default, r as GrDropdownMenu_default, t as GrDropdownMenuColumns_default } from "./components/GrDropdownMenu/chunks/GrDropdownMenu-DQrZ_yPV.js";
113
113
  import { n as grDropdownMenuSafelist, t as grDropdownMenuConfig } from "./chunks/config-_jbgsFpw.js";
114
114
  import { t as GrEmptyState_default } from "./components/GrEmptyState/chunks/GrEmptyState-RqsWvgI9.js";
115
115
  import { n as grEmptyStateSafelist, t as grEmptyStateConfig } from "./chunks/config-CWtfxkM9.js";
116
116
  import { n as fileKindOf, r as isPreviewableKind, t as GrFilePreview_default } from "./components/GrFilePreview/chunks/GrFilePreview-C9Z7hMK8.js";
117
117
  import { n as grFilePreviewSafelist, t as grFilePreviewConfig } from "./chunks/config-BaWANzzB.js";
118
118
  import { t as GrProgressBar_default } from "./components/GrProgressBar/chunks/GrProgressBar-hszUOC8f.js";
119
- import { n as GrUploadAbortError, r as GrUploadHttpError, t as GrFileUpload_default } from "./components/GrFileUpload/chunks/GrFileUpload-NsHkRRIa.js";
119
+ import { n as GrUploadAbortError, r as GrUploadHttpError, t as GrFileUpload_default } from "./components/GrFileUpload/chunks/GrFileUpload-LL8RZvC0.js";
120
120
  import { n as grFileUploadSafelist, t as grFileUploadConfig } from "./chunks/config-BlJa1Mj9.js";
121
121
  import { t as GrForm_default } from "./components/GrForm/chunks/GrForm-CrnfCsgj.js";
122
122
  import { t as grFormConfig } from "./chunks/config-Droqn55j.js";
@@ -126,12 +126,12 @@ import { t as GrFormFile_default } from "./components/GrFormFile/chunks/GrFormFi
126
126
  import { n as grFormFileSafelist, t as grFormFileConfig } from "./chunks/config-BcXX7S7B.js";
127
127
  import { n as grFormSectionSafelist, t as grFormSectionConfig } from "./chunks/config-BEO7brpO.js";
128
128
  import { t as GrFormSection_default } from "./components/GrFormSection/chunks/GrFormSection-ejieOg9H.js";
129
- import { t as GrImageViewer_default } from "./components/GrImageViewer/chunks/GrImageViewer-CG4vUBg_.js";
129
+ import { t as GrImageViewer_default } from "./components/GrImageViewer/chunks/GrImageViewer--BU8yrfx.js";
130
130
  import { n as grImageViewerSafelist, t as grImageViewerConfig } from "./chunks/config-BDSaD-5p.js";
131
131
  import { n as grInputSafelist, t as grInputConfig } from "./chunks/config-CIkdsWUk.js";
132
132
  import "./components/GrInput/index.js";
133
133
  import { n as grInputTagSafelist, t as grInputTagConfig } from "./chunks/config-BqT6PMzO.js";
134
- import { t as GrInputTag_default } from "./components/GrInputTag/chunks/GrInputTag-Cj4A9Xgs.js";
134
+ import { t as GrInputTag_default } from "./components/GrInputTag/chunks/GrInputTag-ByD9NugQ.js";
135
135
  import { t as GrTree_default } from "./components/GrTree/chunks/GrTree-Ci6CZfKR.js";
136
136
  import { t as GrJsonViewer_default } from "./components/GrJsonViewer/chunks/GrJsonViewer-BCZ7lE2k.js";
137
137
  import { n as grJsonViewerSafelist, t as grJsonViewerConfig } from "./chunks/config-DpAYidyY2.js";
@@ -149,10 +149,10 @@ import { t as GrNavbar_default } from "./components/GrNavbar/chunks/GrNavbar-_rt
149
149
  import { n as grNavbarSafelist, t as grNavbarConfig } from "./chunks/config-2ZHRsdOc.js";
150
150
  import { n as grNumberInputSafelist, t as grNumberInputConfig } from "./chunks/config-MmPym-Z72.js";
151
151
  import { t as GrNumberInput_default } from "./components/GrNumberInput/chunks/GrNumberInput-DQ59YICu.js";
152
- import { t as GrSelect_default } from "./components/GrSelect/chunks/GrSelect-gCeRFgQo.js";
152
+ import { t as GrSelect_default } from "./components/GrSelect/chunks/GrSelect-CZqV1Eg4.js";
153
153
  import { n as grPaginationSafelist, t as grPaginationConfig } from "./chunks/config-CjKpUcmy.js";
154
- import { t as GrPagination_default } from "./components/GrPagination/chunks/GrPagination-B_kAhoAV.js";
155
- import { n as grPopoverSafelist, t as grPopoverConfig } from "./chunks/config-BTwYMQaz2.js";
154
+ import { t as GrPagination_default } from "./components/GrPagination/chunks/GrPagination-gBoWVHk6.js";
155
+ import { n as grPopoverSafelist, t as grPopoverConfig } from "./chunks/config-DBXCIb6r2.js";
156
156
  import "./components/GrPopover/index.js";
157
157
  import { n as grProgressBarSafelist, r as GR_TONES, t as grProgressBarConfig } from "./chunks/config-DWL81-aM.js";
158
158
  import "./components/GrProgressBar/index.js";
@@ -170,7 +170,7 @@ import { t as GrRating_default } from "./components/GrRating/chunks/GrRating-IEi
170
170
  import { n as GrFormErrorBanner_default, r as GrUploadErrorBanner_default, t as useResponseError } from "./components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-CBVRpgIG.js";
171
171
  import { n as titleWhenTruncated, t as GrSegmented_default } from "./components/GrSegmented/chunks/GrSegmented-CB-VR-yL.js";
172
172
  import { n as grSegmentedSafelist, t as grSegmentedConfig } from "./chunks/config-rLkc9Zn2.js";
173
- import { n as grSelectSafelist, t as grSelectConfig } from "./chunks/config-DnF472Ox.js";
173
+ import { n as grSelectSafelist, t as grSelectConfig } from "./chunks/config-DOYz_SVK.js";
174
174
  import "./components/GrSelect/index.js";
175
175
  import { n as grSidebarSafelist, t as grSidebarConfig } from "./chunks/config-DNDgp9bB.js";
176
176
  import { n as GrSidebarItem_default, r as GrSidebar_default, t as GrSidebarGroup_default } from "./components/GrSidebar/chunks/GrSidebar-alkwBUzL.js";
@@ -193,7 +193,7 @@ import "./components/GrTable/index.js";
193
193
  import { n as GrTabPanels_default, t as GrTabPanel_default } from "./components/GrTabPanels/chunks/GrTabPanels-BZQS8-JM.js";
194
194
  import { t as grTabPanelsConfig } from "./chunks/config-eXB87DOi.js";
195
195
  import { n as grTabsSafelist, t as grTabsConfig } from "./chunks/config-_QF0O1vq.js";
196
- import { t as GrTabs_default } from "./components/GrTabs/chunks/GrTabs-ugDnkk-2.js";
196
+ import { t as GrTabs_default } from "./components/GrTabs/chunks/GrTabs-UsO4j8zv.js";
197
197
  import { n as grTextareaSafelist, t as grTextareaConfig } from "./chunks/config-BhfNgyWL.js";
198
198
  import "./components/GrTextarea/index.js";
199
199
  import { n as GrTimeline_default, t as GrTimelineItem_default } from "./components/GrTimeline/chunks/GrTimeline-BiHpArsg.js";
@@ -204,8 +204,8 @@ import { t as GrToaster_default } from "./components/GrToaster/chunks/GrToaster-
204
204
  import { n as grTooltipSafelist, t as grTooltipConfig } from "./chunks/config-BTmfQFwi.js";
205
205
  import { t as GrTooltip_default } from "./components/GrTooltip/chunks/GrTooltip-uYETdbCD.js";
206
206
  import { n as grTreeSafelist, t as grTreeConfig } from "./chunks/config-CDat1wXf.js";
207
- import { n as grTreeSelectSafelist, t as grTreeSelectConfig } from "./chunks/config-T3-DMXYm.js";
208
- import { t as GrTreeSelect_default } from "./components/GrTreeSelect/chunks/GrTreeSelect-BHwgGJcT.js";
207
+ import { n as grTreeSelectSafelist, t as grTreeSelectConfig } from "./chunks/config-DUNH02Fg.js";
208
+ import { t as GrTreeSelect_default } from "./components/GrTreeSelect/chunks/GrTreeSelect-DOXcpWq2.js";
209
209
  import "./composables/useGrComponentConfig.js";
210
210
  import "./composables/useGranularityTranslations.js";
211
211
  import { GRANULARITY_THEME_STATE, granularityThemePlugin, initThemeEarly, useTheme } from "./composables/useTheme.js";
package/dist/theme.js CHANGED
@@ -1,4 +1,4 @@
1
- import { a as grThemeTokens, n as grDerivedTokens, t as grComponentTokens } from "./chunks/generated-CSyPsWtM.js";
1
+ import { a as grThemeTokens, n as grDerivedTokens, t as grComponentTokens } from "./chunks/generated-Buw6W7Te.js";
2
2
  //#region src/theme/color.ts
3
3
  function parseHex(value) {
4
4
  const match = value.trim().match(/^#([\da-f]{3}|[\da-f]{6})$/i);
package/dist/tokens.js CHANGED
@@ -1,2 +1,2 @@
1
- import { a as grThemeTokens, i as grThemeNames, n as grDerivedTokens, r as grFoundationTokens, t as grComponentTokens } from "./chunks/generated-CSyPsWtM.js";
1
+ import { a as grThemeTokens, i as grThemeNames, n as grDerivedTokens, r as grFoundationTokens, t as grComponentTokens } from "./chunks/generated-Buw6W7Te.js";
2
2
  export { grComponentTokens, grDerivedTokens, grFoundationTokens, grThemeNames, grThemeTokens };
@@ -60,4 +60,4 @@ export declare const autocompleteStateClass = "flex items-center justify-center
60
60
  * (card + бордер + shadow-2 + скругление). Держим локальную копию строки,
61
61
  * чтобы не тянуть зависимость от `GrSelect` (компоненты гранулярно независимы).
62
62
  */
63
- export declare const autocompletePanelClasses = "rounded-[var(--gr-radius-xl)] border border-[var(--gr-brd)] bg-[var(--gr-card)] text-[var(--gr-card-fg)] shadow-[var(--gr-shadow-2)] overflow-hidden";
63
+ export declare const autocompletePanelClasses = "rounded-[var(--gr-radius-xl)] border border-[var(--gr-brd)] bg-[var(--gr-popover)] text-[var(--gr-popover-fg)] shadow-[var(--gr-shadow-2)] overflow-hidden";
@@ -9,6 +9,17 @@ export interface GrBadgeProps {
9
9
  type __VLS_Slots = {
10
10
  /** Содержимое метки. */
11
11
  default?: () => any;
12
+ /**
13
+ * Иконка перед подписью: статус со спиннером, флаг, значок типа.
14
+ *
15
+ * Размер задаёт обёртка по ступени `size`, поэтому содержимое слота тянется
16
+ * до неё — `class="h-full w-full"`, как у `GrChip`. Вращение спиннера —
17
+ * `animate-spin` на самой иконке.
18
+ *
19
+ * `GrProgressCircle` сюда не кладут: у кругового индикатора шкала виджетная,
20
+ * нижняя ступень — `2rem`, и в строку бейджа он не помещается.
21
+ */
22
+ icon?: () => any;
12
23
  };
13
24
  declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<GrBadgeProps>, {
14
25
  tone: undefined;
@@ -4,6 +4,17 @@ export type GrBadgeTone = GrTone;
4
4
  export type GrBadgeSize = GrComponentSize;
5
5
  export type GrBadgeRadius = 'square' | 'semi' | 'round';
6
6
  export declare const sizeClassBySize: Record<GrBadgeSize, string>;
7
+ /**
8
+ * Иконка перед подписью растёт медленнее кегля: на нижних ступенях плашка
9
+ * узкая, и иконка «один в один с текстом» разгоняла бы её по высоте.
10
+ *
11
+ * Своя карта, а не заимствованная у `GrChip`: у чипа фиксированная высота
12
+ * плитки и своя шкала кегля, и совпадение значений на средних ступенях —
13
+ * совпадение, а не общий контракт.
14
+ */
15
+ export declare const badgeIconSizeClassBySize: Record<GrBadgeSize, string>;
16
+ /** Иконка не жмётся: подпись бейджа не переносится, сжиматься должно нечему. */
17
+ export declare const badgeIconClass = "shrink-0";
7
18
  export declare const semiRadiusClassBySize: Record<GrBadgeSize, string>;
8
19
  export declare const lightToneClassByTone: Record<GrBadgeTone, string>;
9
20
  /**
@@ -1,4 +1,4 @@
1
- import { type UseFloatingPlacement } from '../../composables/useFloating';
1
+ import type { UseFloatingPlacement } from '../../composables/useFloating';
2
2
  import { type GrDropdownWidth } from './grDropdownStyles';
3
3
  export type GrDropdownTrigger = 'click' | 'hover';
4
4
  export interface GrDropdownProps {
@@ -36,13 +36,13 @@ export interface GrDropdownEmits {
36
36
  (e: 'update:open', value: boolean): void;
37
37
  }
38
38
  declare function open(): void;
39
- declare function toggle(): void;
40
39
  declare function close(): void;
40
+ declare function toggle(): void;
41
41
  type __VLS_Slots = {
42
42
  /**
43
43
  * Триггер панели. `triggerProps` обязаны попасть на сам интерактивный
44
44
  * элемент, а не на обёртку вокруг него: `aria-expanded` и `aria-controls`
45
- * читаются с того узла, который получает фокус.
45
+ * читаются с того узла, который получает фокус, а клик приезжает вместе с ними.
46
46
  */
47
47
  trigger?: (props: {
48
48
  open: boolean;
@@ -94,11 +94,11 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
94
94
  open: boolean;
95
95
  disabled: boolean;
96
96
  trigger: GrDropdownTrigger;
97
+ openDelay: number;
98
+ closeDelay: number;
97
99
  closeOnContentClick: boolean;
98
100
  teleportTo: string | HTMLElement;
99
101
  contentClass: string;
100
- openDelay: number;
101
- closeDelay: number;
102
102
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
103
103
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
104
104
  declare const _default: typeof __VLS_export;
@@ -1,7 +1,13 @@
1
1
  import type { Placement } from '@floating-ui/dom';
2
2
  /** Ширина панели: число — пиксели, строка — CSS-длина, `auto` — по контенту. */
3
3
  export type GrDropdownWidth = number | string;
4
- export declare const originClassByPlacement: Record<Placement, string>;
5
4
  export declare function grDropdownOriginClass(placement: Placement): string;
6
- export declare const dropdownContentBaseClass = "rounded-[var(--gr-radius-xl)] border border-[var(--gr-brd)] bg-[var(--gr-card)] text-[var(--gr-card-fg)] shadow-[var(--gr-shadow-2)] p-1";
5
+ /**
6
+ * Поле вокруг пунктов меню.
7
+ *
8
+ * Поверхности здесь больше нет: панель рисует `GrPopover`, на котором меню и
9
+ * стоит. Осталось только поле — пункты не должны прилегать к рамке вплотную, —
10
+ * и классы потребителя.
11
+ */
12
+ export declare const dropdownContentBaseClass = "p-1";
7
13
  export declare function grDropdownContentClass(contentClass?: string): string;
@@ -116,13 +116,13 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
116
116
  disabled: boolean;
117
117
  items: GrDropdownMenuEntry[];
118
118
  trigger: GrDropdownTrigger;
119
+ openDelay: number;
120
+ closeDelay: number;
119
121
  closeOnContentClick: boolean;
120
122
  teleportTo: string | HTMLElement;
121
123
  contentClass: string;
122
124
  dividers: boolean;
123
125
  listClass: string;
124
- openDelay: number;
125
- closeDelay: number;
126
126
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
127
127
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
128
128
  declare const _default: typeof __VLS_export;
@@ -27,10 +27,24 @@ export interface GrPopoverProps {
27
27
  /** `id` видимого заголовка внутри панели — альтернатива `ariaLabel`. */
28
28
  labelledBy?: string;
29
29
  /**
30
- * `manual` открывать только программно (через `v-model:open`). Нужно для
31
- * контекстного меню и подтверждений, где момент открытия решает потребитель.
30
+ * Чем открывается панель.
31
+ *
32
+ * `manual` — только программно (через `v-model:open`): нужно контекстному меню
33
+ * и подтверждениям, где момент открытия решает потребитель. `hover` — по
34
+ * наведению, с задержками из `openDelay` и `closeDelay`; клик и клавиатура в
35
+ * этом режиме продолжают работать.
36
+ */
37
+ trigger?: 'click' | 'manual' | 'hover';
38
+ /**
39
+ * Задержка открытия по наведению, мс.
40
+ *
41
+ * Обе задержки нужны, и каждая по своей причине: без `openDelay` панель
42
+ * выпрыгивает на любое пересечение курсором, без `closeDelay` её не удержать
43
+ * при переходе с триггера на панель — между ними зазор `offsetPx`.
32
44
  */
33
- trigger?: 'click' | 'manual';
45
+ openDelay?: number;
46
+ /** Задержка закрытия после ухода курсора, мс. */
47
+ closeDelay?: number;
34
48
  closeOnEsc?: boolean;
35
49
  closeOnClickOutside?: boolean;
36
50
  /** Закрывать по клику внутри панели — удобно для меню, вредно для формы. */
@@ -61,6 +75,30 @@ export interface GrPopoverProps {
61
75
  anchor?: GrFloatingAnchorRect | null;
62
76
  /** Поле панели. `none` — содержимое рисует своё (меню, список опций). */
63
77
  padding?: GrPopoverPadding;
78
+ /**
79
+ * Брать ширину у триггера: `true` — точно его ширина, `'min'` — не уже его,
80
+ * дальше по содержимому. Панель у поля или у широкой кнопки, оказавшаяся уже
81
+ * своего триггера, читается как ошибка вёрстки.
82
+ *
83
+ * С потолком `--gr-popover-max-width` сочетается, а не спорит: ширину задаёт
84
+ * триггер, потолок её ограничивает — «шириной с триггер, но не шире
85
+ * читаемого». Поэтому это отдельный проп, а не значение одного перечисления
86
+ * вместе с потолком: оси независимы, и сочетание осмысленно.
87
+ */
88
+ matchWidth?: boolean | 'min';
89
+ /**
90
+ * Обёртка триггера занимает всю ширину родителя вместо того, чтобы обжимать
91
+ * содержимое.
92
+ *
93
+ * Нужно форм-контролам: обёртка `inline-block` схлопывается по содержимому, и
94
+ * `w-full` у самого триггера начинает резолвиться относительно неё, а не
95
+ * относительно поля. Контрол, объявивший себя во всю ширину, рисуется по
96
+ * содержимому — рядом с полем ввода это читается как сбитая вёрстка.
97
+ *
98
+ * Имя то же, что у `GrButton` и `GrSegmented`: в ядре это устоявшееся слово
99
+ * для «во всю ширину».
100
+ */
101
+ block?: boolean;
64
102
  }
65
103
  export interface GrPopoverEmits {
66
104
  (e: 'update:open', value: boolean): void;
@@ -95,6 +133,8 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
95
133
  ariaLabel: undefined;
96
134
  labelledBy: undefined;
97
135
  trigger: string;
136
+ openDelay: number;
137
+ closeDelay: number;
98
138
  closeOnEsc: boolean;
99
139
  closeOnClickOutside: boolean;
100
140
  closeOnContentClick: boolean;
@@ -104,6 +144,8 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
104
144
  disabled: boolean;
105
145
  anchor: undefined;
106
146
  padding: string;
147
+ matchWidth: boolean;
148
+ block: boolean;
107
149
  }>>, {
108
150
  open: typeof open;
109
151
  close: typeof close;
@@ -120,6 +162,8 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
120
162
  ariaLabel: undefined;
121
163
  labelledBy: undefined;
122
164
  trigger: string;
165
+ openDelay: number;
166
+ closeDelay: number;
123
167
  closeOnEsc: boolean;
124
168
  closeOnClickOutside: boolean;
125
169
  closeOnContentClick: boolean;
@@ -129,6 +173,8 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
129
173
  disabled: boolean;
130
174
  anchor: undefined;
131
175
  padding: string;
176
+ matchWidth: boolean;
177
+ block: boolean;
132
178
  }>>> & Readonly<{
133
179
  "onUpdate:open"?: ((value: boolean) => any) | undefined;
134
180
  }>, {
@@ -138,12 +184,16 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
138
184
  role: GrPopoverRole;
139
185
  modal: boolean;
140
186
  placement: UseFloatingPlacement;
187
+ block: boolean;
141
188
  open: boolean;
142
189
  disabled: boolean;
143
190
  ariaLabel: string;
191
+ matchWidth: boolean | "min";
144
192
  labelledBy: string;
145
193
  offsetPx: number;
146
- trigger: "click" | "manual";
194
+ trigger: "click" | "manual" | "hover";
195
+ openDelay: number;
196
+ closeDelay: number;
147
197
  closeOnEsc: boolean;
148
198
  closeOnClickOutside: boolean;
149
199
  closeOnContentClick: boolean;
@@ -14,17 +14,25 @@ export type GrPopoverRole = 'dialog' | 'menu' | 'listbox' | 'grid' | 'group' | '
14
14
  export type GrPopoverPadding = 'default' | 'none';
15
15
  export declare const panelSizes: Record<GrPopoverSize, string>;
16
16
  /**
17
- * `transform-origin` для scale-анимации: координаты панели уже посчитал
18
- * `useFloating`, здесь остаётся направление «роста» относительно триггера.
17
+ * Поверхность панели.
19
18
  *
20
- * Ключ — `resolvedPlacement`, то есть положение **после** `flip`: если снизу не
21
- * хватило места и панель перевернуло вверх, origin переворачивается вместе с ней.
22
- */
23
- export declare const originClassByPlacement: Partial<Record<Placement, string>>;
24
- export declare function grPopoverOriginClass(placement: Placement): string;
25
- /**
26
- * Поверхность панели. `max-w-[min(...)]` не даёт поповеру вылезти за узкий
27
- * экран: `useFloating` смещает панель в пределах viewport, но не сужает её.
19
+ * Ширина — `min()` из двух пределов, и они разной природы. Первый, `22rem`, —
20
+ * потолок содержимого: читаемая ширина колонки текста. Он **дефолт**, а не
21
+ * закон, и снимается хуком `--gr-popover-max-width` — примитив объявил, что
22
+ * содержимое панели дело потребителя, и навязывать ему форму не вправе.
23
+ * Тулбар, палитра и сетка шире прозы законно.
24
+ *
25
+ * Второй, `calc(100vw-1rem)`, инвариант слоя: `useFloating` смещает панель в
26
+ * пределах вьюпорта, но не сужает её. Он не настраивается ничем и снаружи не
27
+ * отключается, потому что стоит вторым операндом `min()`: даже
28
+ * `--gr-popover-max-width: 100vw` его не снимает, а лишь уступает ему место.
29
+ *
30
+ * Хуком, а не пропом, — по трём причинам. Спор специфичности не возникает
31
+ * вовсе: кастомное свойство разрешается каскадом на самом элементе, а не
32
+ * порядком правил в сгенерированном CSS (та же ловушка, что описана у
33
+ * `panelSizesFlush`). Потолок можно менять по брейкпоинту и по теме — пропом
34
+ * этого не сделать. И словарь компонента не растёт: значение остаётся
35
+ * значением. Так же устроена высота списка у `GrCommandPalette`.
28
36
  */
29
37
  /**
30
38
  * Кегль без поля.
@@ -34,5 +42,5 @@ export declare function grPopoverOriginClass(placement: Placement): string;
34
42
  * сгенерированном CSS. Меню внутри поповера с `p-3` — визуально не меню.
35
43
  */
36
44
  export declare const panelSizesFlush: Record<GrPopoverSize, string>;
37
- export declare const popoverPanelBaseClass = "rounded-[var(--gr-radius-xl)] border border-[var(--gr-brd)] bg-[var(--gr-popover)] text-[var(--gr-popover-fg)] shadow-[var(--gr-shadow-2)] max-w-[min(22rem,calc(100vw-1rem))] focus:outline-none";
45
+ export declare const popoverPanelBaseClass = "rounded-[var(--gr-radius-xl)] border border-[var(--gr-brd)] bg-[var(--gr-popover)] text-[var(--gr-popover-fg)] shadow-[var(--gr-shadow-2)] max-w-[min(var(--gr-popover-max-width,22rem),calc(100vw-1rem))] focus:outline-none";
38
46
  export declare function grPopoverPanelClass(size: GrPopoverSize, placement: Placement, extra?: string, padding?: GrPopoverPadding): string;
@@ -122,7 +122,7 @@ export declare function grSelectTriggerClass(options: {
122
122
  state?: GrSelectState;
123
123
  invalid?: boolean;
124
124
  }): string;
125
- export declare const grSelectPanelClasses = "rounded-[var(--gr-radius-xl)] border border-[var(--gr-brd)] bg-[var(--gr-card)] text-[var(--gr-card-fg)] shadow-[var(--gr-shadow-2)] overflow-hidden";
125
+ export declare const grSelectPanelClasses = "rounded-[var(--gr-radius-xl)] border border-[var(--gr-brd)] bg-[var(--gr-popover)] text-[var(--gr-popover-fg)] shadow-[var(--gr-shadow-2)] overflow-hidden";
126
126
  export declare const selectOptionBaseClass = "rounded-[var(--gr-radius-md)] px-3 py-2 text-left text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)]";
127
127
  export declare const selectOptionLinkWidthClass = "block min-w-full w-max whitespace-nowrap";
128
128
  export declare const selectOptionWidthClass = "w-full";
@@ -29,7 +29,7 @@ export declare function grTreeSelectClass(options: {
29
29
  invalid: boolean;
30
30
  disabled?: boolean;
31
31
  }): string;
32
- export declare const grTreeSelectPanelClass = "rounded-[var(--gr-radius-xl)] border border-[var(--gr-brd)] bg-[var(--gr-card)] text-[var(--gr-card-fg)] shadow-[var(--gr-shadow-2)] overflow-hidden";
32
+ export declare const grTreeSelectPanelClass = "rounded-[var(--gr-radius-xl)] border border-[var(--gr-brd)] bg-[var(--gr-popover)] text-[var(--gr-popover-fg)] shadow-[var(--gr-shadow-2)] overflow-hidden";
33
33
  /**
34
34
  * Строка состояния панели: загрузка и «нет данных». По центру и с двойным
35
35
  * воздухом — тот же язык, что у `GrSelect`, `GrAutocomplete` и палитры команд.