@feugene/granularity 0.23.0 → 0.24.1

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 (100) hide show
  1. package/dist/chunks/config-BFJIxE8b.js +62 -0
  2. package/dist/chunks/config-BFJIxE8b.js.map +1 -0
  3. package/dist/chunks/{config-DBQQT-WP.js → config-BIa3ilQm.js} +18 -3
  4. package/dist/chunks/config-BIa3ilQm.js.map +1 -0
  5. package/dist/chunks/config-BSyiFlbi2.js.map +1 -0
  6. package/dist/chunks/config-BViooYNv2.js.map +1 -0
  7. package/dist/chunks/config-BoNR7_PD.js.map +1 -0
  8. package/dist/chunks/{config-Be9k9bOf.js → config-C8tVRv8i.js} +16 -2
  9. package/dist/chunks/config-C8tVRv8i.js.map +1 -0
  10. package/dist/chunks/{config-Bm_Sovla.js → config-DYgfMrIF.js} +14 -2
  11. package/dist/chunks/config-DYgfMrIF.js.map +1 -0
  12. package/dist/chunks/{config-DCwQBMmJ.js → config-rkcKArZQ2.js} +27 -8
  13. package/dist/chunks/config-rkcKArZQ2.js.map +1 -0
  14. package/dist/chunks/config-vSji8w902.js.map +1 -0
  15. package/dist/chunks/{generated-CiCrGDQO.js → generated-1WEi10KK.js} +89 -6
  16. package/dist/chunks/{generated-CiCrGDQO.js.map → generated-1WEi10KK.js.map} +1 -1
  17. package/dist/chunks/{granular-provider-CQKhl5C_.js → granular-provider-Dr2PKgl1.js} +13 -11
  18. package/dist/chunks/granular-provider-Dr2PKgl1.js.map +1 -0
  19. package/dist/components/GrCard/chunks/{GrCard-Bc7nRfbe.js → GrCard-gI2wA8ZZ.js} +8 -2
  20. package/dist/components/GrCard/chunks/GrCard-gI2wA8ZZ.js.map +1 -0
  21. package/dist/components/GrCard/index.js +2 -2
  22. package/dist/components/GrCollapse/chunks/{GrCollapse-C1rCfbc0.js → GrCollapse-DIHEiTju.js} +1 -1
  23. package/dist/components/GrCollapse/chunks/{GrCollapse-C1rCfbc0.js.map → GrCollapse-DIHEiTju.js.map} +1 -1
  24. package/dist/components/GrCollapse/index.js +1 -1
  25. package/dist/components/GrDelta/chunks/{GrDelta-DFvxNpmN.js → GrDelta-NE5HhXoo.js} +0 -0
  26. package/dist/components/GrDelta/chunks/GrDelta-NE5HhXoo.js.map +1 -0
  27. package/dist/components/GrDelta/index.js +2 -2
  28. package/dist/components/GrDescriptionList/chunks/{GrDescriptionList-2zFXzX83.js → GrDescriptionList-C6Pxjjbh.js} +8 -4
  29. package/dist/components/GrDescriptionList/chunks/GrDescriptionList-C6Pxjjbh.js.map +1 -0
  30. package/dist/components/GrDescriptionList/index.js +2 -2
  31. package/dist/components/GrDropdown/index.js +1 -1
  32. package/dist/components/GrEmptyState/chunks/{GrEmptyState-CS9do8eM.js → GrEmptyState-BGUX8O0U.js} +1 -1
  33. package/dist/components/GrEmptyState/chunks/{GrEmptyState-CS9do8eM.js.map → GrEmptyState-BGUX8O0U.js.map} +1 -1
  34. package/dist/components/GrEmptyState/index.js +2 -2
  35. package/dist/components/GrList/chunks/{GrList-BRYhpqIe.js → GrList-DAtzVIHh.js} +1 -1
  36. package/dist/components/GrList/chunks/{GrList-BRYhpqIe.js.map → GrList-DAtzVIHh.js.map} +1 -1
  37. package/dist/components/GrList/index.js +1 -1
  38. package/dist/components/GrLoading/chunks/{GrLoading-C3DZSSuh.js → GrLoading-DeBFTvFX.js} +1 -1
  39. package/dist/components/GrLoading/chunks/GrLoading-DeBFTvFX.js.map +1 -0
  40. package/dist/components/GrLoading/index.js +1 -1
  41. package/dist/components/GrPopover/index.js +1 -1
  42. package/dist/components/GrSegmented/chunks/{GrSegmented-D1mjxF_O.js → GrSegmented-DKpo3cnC.js} +30 -5
  43. package/dist/components/GrSegmented/chunks/GrSegmented-DKpo3cnC.js.map +1 -0
  44. package/dist/components/GrSegmented/index.js +1 -1
  45. package/dist/components/GrSortableList/chunks/{GrSortableList-DPjxilmN.js → GrSortableList-BmcUVAMb.js} +1 -1
  46. package/dist/components/GrSortableList/chunks/{GrSortableList-DPjxilmN.js.map → GrSortableList-BmcUVAMb.js.map} +1 -1
  47. package/dist/components/GrSortableList/index.js +1 -1
  48. package/dist/components/GrStatistic/chunks/{GrStatistic-C7wQECeS.js → GrStatistic-BJQv5aOS.js} +41 -26
  49. package/dist/components/GrStatistic/chunks/GrStatistic-BJQv5aOS.js.map +1 -0
  50. package/dist/components/GrStatistic/index.js +2 -2
  51. package/dist/components/GrSwitch/chunks/{GrSwitch-x_vQQ6ao.js → GrSwitch-CHiIj9GT.js} +1 -1
  52. package/dist/components/GrSwitch/chunks/{GrSwitch-x_vQQ6ao.js.map → GrSwitch-CHiIj9GT.js.map} +1 -1
  53. package/dist/components/GrSwitch/index.js +2 -2
  54. package/dist/components/GrValue/chunks/GrValue-CZsuZ4x-.js +38 -0
  55. package/dist/components/GrValue/chunks/GrValue-CZsuZ4x-.js.map +1 -0
  56. package/dist/components/GrValue/index.js +3 -0
  57. package/dist/directives/loading.js +1 -1
  58. package/dist/granular-provider-node.js +1 -1
  59. package/dist/granular-provider.js +1 -1
  60. package/dist/index.js +22 -20
  61. package/dist/styles/themes/dark.css +11 -6
  62. package/dist/styles/themes/light.css +5 -0
  63. package/dist/theme.js +1 -1
  64. package/dist/tokens.js +1 -1
  65. package/dist/types/components/GrCard/grCardStyles.d.ts +11 -0
  66. package/dist/types/components/GrDelta/grDeltaStyles.d.ts +13 -1
  67. package/dist/types/components/GrDescriptionList/grDescriptionListStyles.d.ts +29 -1
  68. package/dist/types/components/GrStatistic/GrStatistic.vue.d.ts +5 -5
  69. package/dist/types/components/GrStatistic/grStatisticStyles.d.ts +9 -0
  70. package/dist/types/components/GrValue/GrValue.vue.d.ts +51 -0
  71. package/dist/types/components/GrValue/config.d.ts +1 -0
  72. package/dist/types/components/GrValue/grValueStyles.d.ts +34 -0
  73. package/dist/types/components/GrValue/index.d.ts +5 -0
  74. package/dist/types/components/GrValue/safelist.d.ts +1 -0
  75. package/dist/types/components/shared/truncationTitle.d.ts +16 -0
  76. package/dist/types/granular-provider/shared.d.ts +1 -0
  77. package/dist/types/index.d.ts +2 -0
  78. package/dist/web-types.json +56 -1
  79. package/package.json +5 -1
  80. package/tokens/themes/dark.json +26 -6
  81. package/tokens/themes/light.json +20 -0
  82. package/dist/chunks/config-BSyiFlbi.js.map +0 -1
  83. package/dist/chunks/config-BViooYNv.js.map +0 -1
  84. package/dist/chunks/config-Be9k9bOf.js.map +0 -1
  85. package/dist/chunks/config-Bm_Sovla.js.map +0 -1
  86. package/dist/chunks/config-BoNR7_PD2.js.map +0 -1
  87. package/dist/chunks/config-DBQQT-WP.js.map +0 -1
  88. package/dist/chunks/config-DCwQBMmJ.js.map +0 -1
  89. package/dist/chunks/config-vSji8w90.js.map +0 -1
  90. package/dist/chunks/granular-provider-CQKhl5C_.js.map +0 -1
  91. package/dist/components/GrCard/chunks/GrCard-Bc7nRfbe.js.map +0 -1
  92. package/dist/components/GrDelta/chunks/GrDelta-DFvxNpmN.js.map +0 -1
  93. package/dist/components/GrDescriptionList/chunks/GrDescriptionList-2zFXzX83.js.map +0 -1
  94. package/dist/components/GrLoading/chunks/GrLoading-C3DZSSuh.js.map +0 -1
  95. package/dist/components/GrSegmented/chunks/GrSegmented-D1mjxF_O.js.map +0 -1
  96. package/dist/components/GrStatistic/chunks/GrStatistic-C7wQECeS.js.map +0 -1
  97. /package/dist/chunks/{config-BSyiFlbi.js → config-BSyiFlbi2.js} +0 -0
  98. /package/dist/chunks/{config-BViooYNv.js → config-BViooYNv2.js} +0 -0
  99. /package/dist/chunks/{config-BoNR7_PD2.js → config-BoNR7_PD.js} +0 -0
  100. /package/dist/chunks/{config-vSji8w90.js → config-vSji8w902.js} +0 -0
@@ -1,3 +1,3 @@
1
- import { n as formatStatisticValue, t as GrStatistic_default } from "./chunks/GrStatistic-C7wQECeS.js";
2
- import { n as grStatisticSafelist, t as grStatisticConfig } from "../../chunks/config-Be9k9bOf.js";
1
+ import { n as formatStatisticValue, t as GrStatistic_default } from "./chunks/GrStatistic-BJQv5aOS.js";
2
+ import { n as grStatisticSafelist, t as grStatisticConfig } from "../../chunks/config-C8tVRv8i.js";
3
3
  export { GrStatistic_default as GrStatistic, GrStatistic_default as default, formatStatisticValue, grStatisticConfig, grStatisticSafelist };
@@ -3,7 +3,7 @@ import { n as useGranularityTranslations } from "../../../chunks/granularityI18n
3
3
  import { t as loader_circle_default } from "../../../chunks/loader-circle-CfVLz7lb.js";
4
4
  import { n as useGrFormFieldContext } from "../../../chunks/context-DdNIxa1w.js";
5
5
  import { useGrFormControl } from "../../../composables/useGrFormControl.js";
6
- import { a as grSwitchSpinnerClass, i as grSwitchRootClass, o as grSwitchThumbClass, r as grSwitchLabelClass, s as grSwitchTrackClass } from "../../../chunks/config-BoNR7_PD2.js";
6
+ import { a as grSwitchSpinnerClass, i as grSwitchRootClass, o as grSwitchThumbClass, r as grSwitchLabelClass, s as grSwitchTrackClass } from "../../../chunks/config-BoNR7_PD.js";
7
7
  import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, defineComponent, mergeProps, normalizeClass, normalizeStyle, openBlock, ref, renderSlot, toDisplayString, unref } from "vue";
8
8
  //#region src/components/GrSwitch/GrSwitch.vue?vue&type=script&setup=true&lang.ts
9
9
  var _hoisted_1 = [
@@ -1 +1 @@
1
- {"version":3,"file":"GrSwitch-x_vQQ6ao.js","names":["$attrs","$slots"],"sources":["../../../../src/components/GrSwitch/GrSwitch.vue","../../../../src/components/GrSwitch/GrSwitch.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport IconLoader from '~icons/lucide/loader-circle'\n\nimport { useGrComponentSize } from '../GrConfigProvider/context'\nimport { useGrFormFieldContext } from '../GrFormField/context'\nimport { useGrFormControl } from '../../composables/useGrFormControl'\nimport { useGranularityTranslations } from '../../internal/granularityI18n'\n\nimport {\n grSwitchLabelClass,\n grSwitchRootClass,\n grSwitchSpinnerClass,\n grSwitchThumbClass,\n grSwitchTrackClass,\n type GrSwitchLabelPosition,\n type GrSwitchSize,\n} from './grSwitchStyles'\n\nexport type { GrSwitchLabelPosition, GrSwitchSize } from './grSwitchStyles'\n\n/**\n * Пропсы публичного GR-примитива «Switch».\n */\nexport interface GrSwitchProps {\n modelValue: boolean\n disabled?: boolean\n /** Только для чтения: состояние видно, но не переключается. */\n readonly?: boolean\n /** Визуальное и ARIA-состояние ошибки. */\n invalid?: boolean\n /** Обязательное поле (`aria-required`). */\n required?: boolean\n ariaLabel?: string\n size?: GrSwitchSize\n /** Сторона подписи относительно дорожки. */\n labelPosition?: GrSwitchLabelPosition\n /** Идёт сохранение: бегунок показывает спиннер, переключение заблокировано. */\n loading?: boolean\n /** i18n: что именно грузится. `aria-busy` сам по себе часть AT не объявляет. */\n loadingText?: string\n /** Имя поля для нативной отправки формы. Без него скрытое поле не рендерится. */\n name?: string\n /** Значение, уходящее в форму во включённом состоянии. */\n value?: string\n /** `id` формы, если переключатель лежит вне неё. */\n form?: string\n /** Кастомный цвет фона в активном состоянии. Если не задан — `var(--gr-primary)`. */\n activeBackgroundColor?: string\n /** Кастомный цвет фона в неактивном состоянии. Если не задан — `var(--gr-muted)`. */\n inactiveBackgroundColor?: string\n}\n\nexport interface GrSwitchEmits {\n (e: 'update:modelValue', value: boolean): void\n (e: 'change', value: boolean): void\n (e: 'focus', event: FocusEvent): void\n (e: 'blur', event: FocusEvent): void\n}\n\nconst getCustomColor = (value?: string) => value?.trim() || undefined\n\n// Скрытое поле — сосед кнопки, а не её потомок: интерактивный контент внутри\n// `<button>` невалиден. Из-за этого корень компонента — фрагмент, и атрибуты\n// потребителя надо донести до кнопки руками.\ndefineOptions({ inheritAttrs: false })\n\nconst props = withDefaults(\n defineProps<GrSwitchProps>(),\n {\n disabled: false,\n readonly: false,\n invalid: false,\n required: false,\n ariaLabel: undefined,\n size: undefined,\n labelPosition: 'end',\n loading: false,\n loadingText: undefined,\n name: undefined,\n value: 'on',\n form: undefined,\n activeBackgroundColor: undefined,\n inactiveBackgroundColor: undefined,\n },\n)\n\n// Контекст `GrFormField`: id для `<label for>`, описание ошибкой, невалидность.\n// `<button>` — labelable-элемент, поэтому клик по подписи фокусирует переключатель.\nconst field = useGrFormFieldContext()\nconst fieldId = computed(() => field?.id.value)\nconst describedBy = computed(() => field?.describedById.value)\nconst {\n disabled: isDisabled,\n invalid: isInvalid,\n required: isRequired,\n readonly: isReadonly,\n} = useGrFormControl(() => props)\n\nconst { t } = useGranularityTranslations()\n\nconst rootEl = ref<HTMLButtonElement | null>(null)\n\nfunction focus(): void {\n rootEl.value?.focus()\n}\n\nfunction blur(): void {\n rootEl.value?.blur()\n}\n\ndefineExpose({ focus, blur })\n\n// Эффективный размер: локальный проп → `GrConfigProvider` → дефолт компонента.\nconst resolvedSize = useGrComponentSize(() => props.size, {\n component: 'GrSwitch',\n supported: ['xs', 'sm', 'md', 'lg'],\n})\n\nconst emit = defineEmits<GrSwitchEmits>()\ndefineSlots<{\n /** Подпись переключателя. */\n default?: () => any\n}>()\n\n\nconst rootClass = computed(() => grSwitchRootClass(props.labelPosition))\n\nconst trackClass = computed(() => grSwitchTrackClass(resolvedSize.value))\n\nconst trackStyle = computed(() => {\n const isChecked = props.modelValue\n const defaultBackgroundColor = isChecked ? 'var(--gr-primary)' : 'var(--gr-muted)'\n const customBackgroundColor = getCustomColor(\n isChecked ? props.activeBackgroundColor : props.inactiveBackgroundColor,\n )\n // Недоступность гасится токеном и перебивает кастомный цвет: иначе выключенный\n // переключатель остался бы таким же ярким, как рабочий.\n const backgroundColor = isDisabled.value\n ? 'var(--gr-disabled-bg)'\n : customBackgroundColor ?? defaultBackgroundColor\n\n return {\n '--gr-switch-track-bg': backgroundColor,\n '--gr-switch-track-brd': isDisabled.value\n ? 'var(--gr-disabled-brd)'\n : customBackgroundColor\n ? backgroundColor\n : isChecked\n ? 'var(--gr-primary)'\n : 'var(--gr-brd)',\n backgroundColor: 'var(--gr-switch-track-bg)',\n }\n})\n\nconst thumbClass = computed(() => grSwitchThumbClass({size: resolvedSize.value, checked: props.modelValue}))\n\nconst spinnerClass = computed(() => grSwitchSpinnerClass(resolvedSize.value))\n\nconst labelClass = computed(() => grSwitchLabelClass(resolvedSize.value, isDisabled.value))\n\nconst resolvedLoadingText = computed(() => props.loadingText ?? t('gr.switch.loading', 'Saving…'))\n\n// Выключенный переключатель не отправляется вовсе — так устроен чекбокс в HTML,\n// и сервер отличает «выкл» по отсутствию ключа.\nconst submitsValue = computed(\n () => props.modelValue && !isDisabled.value && Boolean(props.name),\n)\n\nfunction toggle(): void {\n if (isDisabled.value || isReadonly.value || props.loading) {\n return\n }\n\n const next = !props.modelValue\n emit('update:modelValue', next)\n emit('change', next)\n}\n</script>\n\n<template>\n <input\n v-if=\"submitsValue\"\n type=\"hidden\"\n :name=\"name\"\n :value=\"value\"\n :form=\"form\"\n >\n\n <button\n :id=\"fieldId\"\n ref=\"rootEl\"\n v-bind=\"$attrs\"\n type=\"button\"\n role=\"switch\"\n data-gr-switch\n :aria-checked=\"modelValue ? 'true' : 'false'\"\n :aria-label=\"ariaLabel\"\n :aria-describedby=\"describedBy\"\n :aria-invalid=\"isInvalid ? 'true' : undefined\"\n :aria-required=\"isRequired ? 'true' : undefined\"\n :aria-readonly=\"isReadonly ? 'true' : undefined\"\n :aria-busy=\"loading ? 'true' : undefined\"\n :disabled=\"isDisabled\"\n :class=\"rootClass\"\n @click=\"toggle\"\n @focus=\"emit('focus', $event)\"\n @blur=\"emit('blur', $event)\"\n >\n <span\n data-testid=\"gr-switch-track\"\n data-gr-switch-track\n :class=\"trackClass\"\n :style=\"trackStyle\"\n >\n <span\n data-testid=\"gr-switch-thumb\"\n data-gr-switch-thumb\n :class=\"thumbClass\"\n aria-hidden=\"true\"\n >\n <IconLoader v-if=\"loading\" data-gr-switch-spinner :class=\"spinnerClass\" />\n </span>\n </span>\n <span\n v-if=\"$slots.default\"\n data-gr-switch-label\n :class=\"labelClass\"\n >\n <slot />\n </span>\n <span v-if=\"loading\" data-gr-switch-loading-text class=\"sr-only\">{{ resolvedLoadingText }}</span>\n </button>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport IconLoader from '~icons/lucide/loader-circle'\n\nimport { useGrComponentSize } from '../GrConfigProvider/context'\nimport { useGrFormFieldContext } from '../GrFormField/context'\nimport { useGrFormControl } from '../../composables/useGrFormControl'\nimport { useGranularityTranslations } from '../../internal/granularityI18n'\n\nimport {\n grSwitchLabelClass,\n grSwitchRootClass,\n grSwitchSpinnerClass,\n grSwitchThumbClass,\n grSwitchTrackClass,\n type GrSwitchLabelPosition,\n type GrSwitchSize,\n} from './grSwitchStyles'\n\nexport type { GrSwitchLabelPosition, GrSwitchSize } from './grSwitchStyles'\n\n/**\n * Пропсы публичного GR-примитива «Switch».\n */\nexport interface GrSwitchProps {\n modelValue: boolean\n disabled?: boolean\n /** Только для чтения: состояние видно, но не переключается. */\n readonly?: boolean\n /** Визуальное и ARIA-состояние ошибки. */\n invalid?: boolean\n /** Обязательное поле (`aria-required`). */\n required?: boolean\n ariaLabel?: string\n size?: GrSwitchSize\n /** Сторона подписи относительно дорожки. */\n labelPosition?: GrSwitchLabelPosition\n /** Идёт сохранение: бегунок показывает спиннер, переключение заблокировано. */\n loading?: boolean\n /** i18n: что именно грузится. `aria-busy` сам по себе часть AT не объявляет. */\n loadingText?: string\n /** Имя поля для нативной отправки формы. Без него скрытое поле не рендерится. */\n name?: string\n /** Значение, уходящее в форму во включённом состоянии. */\n value?: string\n /** `id` формы, если переключатель лежит вне неё. */\n form?: string\n /** Кастомный цвет фона в активном состоянии. Если не задан — `var(--gr-primary)`. */\n activeBackgroundColor?: string\n /** Кастомный цвет фона в неактивном состоянии. Если не задан — `var(--gr-muted)`. */\n inactiveBackgroundColor?: string\n}\n\nexport interface GrSwitchEmits {\n (e: 'update:modelValue', value: boolean): void\n (e: 'change', value: boolean): void\n (e: 'focus', event: FocusEvent): void\n (e: 'blur', event: FocusEvent): void\n}\n\nconst getCustomColor = (value?: string) => value?.trim() || undefined\n\n// Скрытое поле — сосед кнопки, а не её потомок: интерактивный контент внутри\n// `<button>` невалиден. Из-за этого корень компонента — фрагмент, и атрибуты\n// потребителя надо донести до кнопки руками.\ndefineOptions({ inheritAttrs: false })\n\nconst props = withDefaults(\n defineProps<GrSwitchProps>(),\n {\n disabled: false,\n readonly: false,\n invalid: false,\n required: false,\n ariaLabel: undefined,\n size: undefined,\n labelPosition: 'end',\n loading: false,\n loadingText: undefined,\n name: undefined,\n value: 'on',\n form: undefined,\n activeBackgroundColor: undefined,\n inactiveBackgroundColor: undefined,\n },\n)\n\n// Контекст `GrFormField`: id для `<label for>`, описание ошибкой, невалидность.\n// `<button>` — labelable-элемент, поэтому клик по подписи фокусирует переключатель.\nconst field = useGrFormFieldContext()\nconst fieldId = computed(() => field?.id.value)\nconst describedBy = computed(() => field?.describedById.value)\nconst {\n disabled: isDisabled,\n invalid: isInvalid,\n required: isRequired,\n readonly: isReadonly,\n} = useGrFormControl(() => props)\n\nconst { t } = useGranularityTranslations()\n\nconst rootEl = ref<HTMLButtonElement | null>(null)\n\nfunction focus(): void {\n rootEl.value?.focus()\n}\n\nfunction blur(): void {\n rootEl.value?.blur()\n}\n\ndefineExpose({ focus, blur })\n\n// Эффективный размер: локальный проп → `GrConfigProvider` → дефолт компонента.\nconst resolvedSize = useGrComponentSize(() => props.size, {\n component: 'GrSwitch',\n supported: ['xs', 'sm', 'md', 'lg'],\n})\n\nconst emit = defineEmits<GrSwitchEmits>()\ndefineSlots<{\n /** Подпись переключателя. */\n default?: () => any\n}>()\n\n\nconst rootClass = computed(() => grSwitchRootClass(props.labelPosition))\n\nconst trackClass = computed(() => grSwitchTrackClass(resolvedSize.value))\n\nconst trackStyle = computed(() => {\n const isChecked = props.modelValue\n const defaultBackgroundColor = isChecked ? 'var(--gr-primary)' : 'var(--gr-muted)'\n const customBackgroundColor = getCustomColor(\n isChecked ? props.activeBackgroundColor : props.inactiveBackgroundColor,\n )\n // Недоступность гасится токеном и перебивает кастомный цвет: иначе выключенный\n // переключатель остался бы таким же ярким, как рабочий.\n const backgroundColor = isDisabled.value\n ? 'var(--gr-disabled-bg)'\n : customBackgroundColor ?? defaultBackgroundColor\n\n return {\n '--gr-switch-track-bg': backgroundColor,\n '--gr-switch-track-brd': isDisabled.value\n ? 'var(--gr-disabled-brd)'\n : customBackgroundColor\n ? backgroundColor\n : isChecked\n ? 'var(--gr-primary)'\n : 'var(--gr-brd)',\n backgroundColor: 'var(--gr-switch-track-bg)',\n }\n})\n\nconst thumbClass = computed(() => grSwitchThumbClass({size: resolvedSize.value, checked: props.modelValue}))\n\nconst spinnerClass = computed(() => grSwitchSpinnerClass(resolvedSize.value))\n\nconst labelClass = computed(() => grSwitchLabelClass(resolvedSize.value, isDisabled.value))\n\nconst resolvedLoadingText = computed(() => props.loadingText ?? t('gr.switch.loading', 'Saving…'))\n\n// Выключенный переключатель не отправляется вовсе — так устроен чекбокс в HTML,\n// и сервер отличает «выкл» по отсутствию ключа.\nconst submitsValue = computed(\n () => props.modelValue && !isDisabled.value && Boolean(props.name),\n)\n\nfunction toggle(): void {\n if (isDisabled.value || isReadonly.value || props.loading) {\n return\n }\n\n const next = !props.modelValue\n emit('update:modelValue', next)\n emit('change', next)\n}\n</script>\n\n<template>\n <input\n v-if=\"submitsValue\"\n type=\"hidden\"\n :name=\"name\"\n :value=\"value\"\n :form=\"form\"\n >\n\n <button\n :id=\"fieldId\"\n ref=\"rootEl\"\n v-bind=\"$attrs\"\n type=\"button\"\n role=\"switch\"\n data-gr-switch\n :aria-checked=\"modelValue ? 'true' : 'false'\"\n :aria-label=\"ariaLabel\"\n :aria-describedby=\"describedBy\"\n :aria-invalid=\"isInvalid ? 'true' : undefined\"\n :aria-required=\"isRequired ? 'true' : undefined\"\n :aria-readonly=\"isReadonly ? 'true' : undefined\"\n :aria-busy=\"loading ? 'true' : undefined\"\n :disabled=\"isDisabled\"\n :class=\"rootClass\"\n @click=\"toggle\"\n @focus=\"emit('focus', $event)\"\n @blur=\"emit('blur', $event)\"\n >\n <span\n data-testid=\"gr-switch-track\"\n data-gr-switch-track\n :class=\"trackClass\"\n :style=\"trackStyle\"\n >\n <span\n data-testid=\"gr-switch-thumb\"\n data-gr-switch-thumb\n :class=\"thumbClass\"\n aria-hidden=\"true\"\n >\n <IconLoader v-if=\"loading\" data-gr-switch-spinner :class=\"spinnerClass\" />\n </span>\n </span>\n <span\n v-if=\"$slots.default\"\n data-gr-switch-label\n :class=\"labelClass\"\n >\n <slot />\n </span>\n <span v-if=\"loading\" data-gr-switch-loading-text class=\"sr-only\">{{ resolvedLoadingText }}</span>\n </button>\n</template>\n"],"mappings":"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"}
1
+ {"version":3,"file":"GrSwitch-CHiIj9GT.js","names":["$attrs","$slots"],"sources":["../../../../src/components/GrSwitch/GrSwitch.vue","../../../../src/components/GrSwitch/GrSwitch.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport IconLoader from '~icons/lucide/loader-circle'\n\nimport { useGrComponentSize } from '../GrConfigProvider/context'\nimport { useGrFormFieldContext } from '../GrFormField/context'\nimport { useGrFormControl } from '../../composables/useGrFormControl'\nimport { useGranularityTranslations } from '../../internal/granularityI18n'\n\nimport {\n grSwitchLabelClass,\n grSwitchRootClass,\n grSwitchSpinnerClass,\n grSwitchThumbClass,\n grSwitchTrackClass,\n type GrSwitchLabelPosition,\n type GrSwitchSize,\n} from './grSwitchStyles'\n\nexport type { GrSwitchLabelPosition, GrSwitchSize } from './grSwitchStyles'\n\n/**\n * Пропсы публичного GR-примитива «Switch».\n */\nexport interface GrSwitchProps {\n modelValue: boolean\n disabled?: boolean\n /** Только для чтения: состояние видно, но не переключается. */\n readonly?: boolean\n /** Визуальное и ARIA-состояние ошибки. */\n invalid?: boolean\n /** Обязательное поле (`aria-required`). */\n required?: boolean\n ariaLabel?: string\n size?: GrSwitchSize\n /** Сторона подписи относительно дорожки. */\n labelPosition?: GrSwitchLabelPosition\n /** Идёт сохранение: бегунок показывает спиннер, переключение заблокировано. */\n loading?: boolean\n /** i18n: что именно грузится. `aria-busy` сам по себе часть AT не объявляет. */\n loadingText?: string\n /** Имя поля для нативной отправки формы. Без него скрытое поле не рендерится. */\n name?: string\n /** Значение, уходящее в форму во включённом состоянии. */\n value?: string\n /** `id` формы, если переключатель лежит вне неё. */\n form?: string\n /** Кастомный цвет фона в активном состоянии. Если не задан — `var(--gr-primary)`. */\n activeBackgroundColor?: string\n /** Кастомный цвет фона в неактивном состоянии. Если не задан — `var(--gr-muted)`. */\n inactiveBackgroundColor?: string\n}\n\nexport interface GrSwitchEmits {\n (e: 'update:modelValue', value: boolean): void\n (e: 'change', value: boolean): void\n (e: 'focus', event: FocusEvent): void\n (e: 'blur', event: FocusEvent): void\n}\n\nconst getCustomColor = (value?: string) => value?.trim() || undefined\n\n// Скрытое поле — сосед кнопки, а не её потомок: интерактивный контент внутри\n// `<button>` невалиден. Из-за этого корень компонента — фрагмент, и атрибуты\n// потребителя надо донести до кнопки руками.\ndefineOptions({ inheritAttrs: false })\n\nconst props = withDefaults(\n defineProps<GrSwitchProps>(),\n {\n disabled: false,\n readonly: false,\n invalid: false,\n required: false,\n ariaLabel: undefined,\n size: undefined,\n labelPosition: 'end',\n loading: false,\n loadingText: undefined,\n name: undefined,\n value: 'on',\n form: undefined,\n activeBackgroundColor: undefined,\n inactiveBackgroundColor: undefined,\n },\n)\n\n// Контекст `GrFormField`: id для `<label for>`, описание ошибкой, невалидность.\n// `<button>` — labelable-элемент, поэтому клик по подписи фокусирует переключатель.\nconst field = useGrFormFieldContext()\nconst fieldId = computed(() => field?.id.value)\nconst describedBy = computed(() => field?.describedById.value)\nconst {\n disabled: isDisabled,\n invalid: isInvalid,\n required: isRequired,\n readonly: isReadonly,\n} = useGrFormControl(() => props)\n\nconst { t } = useGranularityTranslations()\n\nconst rootEl = ref<HTMLButtonElement | null>(null)\n\nfunction focus(): void {\n rootEl.value?.focus()\n}\n\nfunction blur(): void {\n rootEl.value?.blur()\n}\n\ndefineExpose({ focus, blur })\n\n// Эффективный размер: локальный проп → `GrConfigProvider` → дефолт компонента.\nconst resolvedSize = useGrComponentSize(() => props.size, {\n component: 'GrSwitch',\n supported: ['xs', 'sm', 'md', 'lg'],\n})\n\nconst emit = defineEmits<GrSwitchEmits>()\ndefineSlots<{\n /** Подпись переключателя. */\n default?: () => any\n}>()\n\n\nconst rootClass = computed(() => grSwitchRootClass(props.labelPosition))\n\nconst trackClass = computed(() => grSwitchTrackClass(resolvedSize.value))\n\nconst trackStyle = computed(() => {\n const isChecked = props.modelValue\n const defaultBackgroundColor = isChecked ? 'var(--gr-primary)' : 'var(--gr-muted)'\n const customBackgroundColor = getCustomColor(\n isChecked ? props.activeBackgroundColor : props.inactiveBackgroundColor,\n )\n // Недоступность гасится токеном и перебивает кастомный цвет: иначе выключенный\n // переключатель остался бы таким же ярким, как рабочий.\n const backgroundColor = isDisabled.value\n ? 'var(--gr-disabled-bg)'\n : customBackgroundColor ?? defaultBackgroundColor\n\n return {\n '--gr-switch-track-bg': backgroundColor,\n '--gr-switch-track-brd': isDisabled.value\n ? 'var(--gr-disabled-brd)'\n : customBackgroundColor\n ? backgroundColor\n : isChecked\n ? 'var(--gr-primary)'\n : 'var(--gr-brd)',\n backgroundColor: 'var(--gr-switch-track-bg)',\n }\n})\n\nconst thumbClass = computed(() => grSwitchThumbClass({size: resolvedSize.value, checked: props.modelValue}))\n\nconst spinnerClass = computed(() => grSwitchSpinnerClass(resolvedSize.value))\n\nconst labelClass = computed(() => grSwitchLabelClass(resolvedSize.value, isDisabled.value))\n\nconst resolvedLoadingText = computed(() => props.loadingText ?? t('gr.switch.loading', 'Saving…'))\n\n// Выключенный переключатель не отправляется вовсе — так устроен чекбокс в HTML,\n// и сервер отличает «выкл» по отсутствию ключа.\nconst submitsValue = computed(\n () => props.modelValue && !isDisabled.value && Boolean(props.name),\n)\n\nfunction toggle(): void {\n if (isDisabled.value || isReadonly.value || props.loading) {\n return\n }\n\n const next = !props.modelValue\n emit('update:modelValue', next)\n emit('change', next)\n}\n</script>\n\n<template>\n <input\n v-if=\"submitsValue\"\n type=\"hidden\"\n :name=\"name\"\n :value=\"value\"\n :form=\"form\"\n >\n\n <button\n :id=\"fieldId\"\n ref=\"rootEl\"\n v-bind=\"$attrs\"\n type=\"button\"\n role=\"switch\"\n data-gr-switch\n :aria-checked=\"modelValue ? 'true' : 'false'\"\n :aria-label=\"ariaLabel\"\n :aria-describedby=\"describedBy\"\n :aria-invalid=\"isInvalid ? 'true' : undefined\"\n :aria-required=\"isRequired ? 'true' : undefined\"\n :aria-readonly=\"isReadonly ? 'true' : undefined\"\n :aria-busy=\"loading ? 'true' : undefined\"\n :disabled=\"isDisabled\"\n :class=\"rootClass\"\n @click=\"toggle\"\n @focus=\"emit('focus', $event)\"\n @blur=\"emit('blur', $event)\"\n >\n <span\n data-testid=\"gr-switch-track\"\n data-gr-switch-track\n :class=\"trackClass\"\n :style=\"trackStyle\"\n >\n <span\n data-testid=\"gr-switch-thumb\"\n data-gr-switch-thumb\n :class=\"thumbClass\"\n aria-hidden=\"true\"\n >\n <IconLoader v-if=\"loading\" data-gr-switch-spinner :class=\"spinnerClass\" />\n </span>\n </span>\n <span\n v-if=\"$slots.default\"\n data-gr-switch-label\n :class=\"labelClass\"\n >\n <slot />\n </span>\n <span v-if=\"loading\" data-gr-switch-loading-text class=\"sr-only\">{{ resolvedLoadingText }}</span>\n </button>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport IconLoader from '~icons/lucide/loader-circle'\n\nimport { useGrComponentSize } from '../GrConfigProvider/context'\nimport { useGrFormFieldContext } from '../GrFormField/context'\nimport { useGrFormControl } from '../../composables/useGrFormControl'\nimport { useGranularityTranslations } from '../../internal/granularityI18n'\n\nimport {\n grSwitchLabelClass,\n grSwitchRootClass,\n grSwitchSpinnerClass,\n grSwitchThumbClass,\n grSwitchTrackClass,\n type GrSwitchLabelPosition,\n type GrSwitchSize,\n} from './grSwitchStyles'\n\nexport type { GrSwitchLabelPosition, GrSwitchSize } from './grSwitchStyles'\n\n/**\n * Пропсы публичного GR-примитива «Switch».\n */\nexport interface GrSwitchProps {\n modelValue: boolean\n disabled?: boolean\n /** Только для чтения: состояние видно, но не переключается. */\n readonly?: boolean\n /** Визуальное и ARIA-состояние ошибки. */\n invalid?: boolean\n /** Обязательное поле (`aria-required`). */\n required?: boolean\n ariaLabel?: string\n size?: GrSwitchSize\n /** Сторона подписи относительно дорожки. */\n labelPosition?: GrSwitchLabelPosition\n /** Идёт сохранение: бегунок показывает спиннер, переключение заблокировано. */\n loading?: boolean\n /** i18n: что именно грузится. `aria-busy` сам по себе часть AT не объявляет. */\n loadingText?: string\n /** Имя поля для нативной отправки формы. Без него скрытое поле не рендерится. */\n name?: string\n /** Значение, уходящее в форму во включённом состоянии. */\n value?: string\n /** `id` формы, если переключатель лежит вне неё. */\n form?: string\n /** Кастомный цвет фона в активном состоянии. Если не задан — `var(--gr-primary)`. */\n activeBackgroundColor?: string\n /** Кастомный цвет фона в неактивном состоянии. Если не задан — `var(--gr-muted)`. */\n inactiveBackgroundColor?: string\n}\n\nexport interface GrSwitchEmits {\n (e: 'update:modelValue', value: boolean): void\n (e: 'change', value: boolean): void\n (e: 'focus', event: FocusEvent): void\n (e: 'blur', event: FocusEvent): void\n}\n\nconst getCustomColor = (value?: string) => value?.trim() || undefined\n\n// Скрытое поле — сосед кнопки, а не её потомок: интерактивный контент внутри\n// `<button>` невалиден. Из-за этого корень компонента — фрагмент, и атрибуты\n// потребителя надо донести до кнопки руками.\ndefineOptions({ inheritAttrs: false })\n\nconst props = withDefaults(\n defineProps<GrSwitchProps>(),\n {\n disabled: false,\n readonly: false,\n invalid: false,\n required: false,\n ariaLabel: undefined,\n size: undefined,\n labelPosition: 'end',\n loading: false,\n loadingText: undefined,\n name: undefined,\n value: 'on',\n form: undefined,\n activeBackgroundColor: undefined,\n inactiveBackgroundColor: undefined,\n },\n)\n\n// Контекст `GrFormField`: id для `<label for>`, описание ошибкой, невалидность.\n// `<button>` — labelable-элемент, поэтому клик по подписи фокусирует переключатель.\nconst field = useGrFormFieldContext()\nconst fieldId = computed(() => field?.id.value)\nconst describedBy = computed(() => field?.describedById.value)\nconst {\n disabled: isDisabled,\n invalid: isInvalid,\n required: isRequired,\n readonly: isReadonly,\n} = useGrFormControl(() => props)\n\nconst { t } = useGranularityTranslations()\n\nconst rootEl = ref<HTMLButtonElement | null>(null)\n\nfunction focus(): void {\n rootEl.value?.focus()\n}\n\nfunction blur(): void {\n rootEl.value?.blur()\n}\n\ndefineExpose({ focus, blur })\n\n// Эффективный размер: локальный проп → `GrConfigProvider` → дефолт компонента.\nconst resolvedSize = useGrComponentSize(() => props.size, {\n component: 'GrSwitch',\n supported: ['xs', 'sm', 'md', 'lg'],\n})\n\nconst emit = defineEmits<GrSwitchEmits>()\ndefineSlots<{\n /** Подпись переключателя. */\n default?: () => any\n}>()\n\n\nconst rootClass = computed(() => grSwitchRootClass(props.labelPosition))\n\nconst trackClass = computed(() => grSwitchTrackClass(resolvedSize.value))\n\nconst trackStyle = computed(() => {\n const isChecked = props.modelValue\n const defaultBackgroundColor = isChecked ? 'var(--gr-primary)' : 'var(--gr-muted)'\n const customBackgroundColor = getCustomColor(\n isChecked ? props.activeBackgroundColor : props.inactiveBackgroundColor,\n )\n // Недоступность гасится токеном и перебивает кастомный цвет: иначе выключенный\n // переключатель остался бы таким же ярким, как рабочий.\n const backgroundColor = isDisabled.value\n ? 'var(--gr-disabled-bg)'\n : customBackgroundColor ?? defaultBackgroundColor\n\n return {\n '--gr-switch-track-bg': backgroundColor,\n '--gr-switch-track-brd': isDisabled.value\n ? 'var(--gr-disabled-brd)'\n : customBackgroundColor\n ? backgroundColor\n : isChecked\n ? 'var(--gr-primary)'\n : 'var(--gr-brd)',\n backgroundColor: 'var(--gr-switch-track-bg)',\n }\n})\n\nconst thumbClass = computed(() => grSwitchThumbClass({size: resolvedSize.value, checked: props.modelValue}))\n\nconst spinnerClass = computed(() => grSwitchSpinnerClass(resolvedSize.value))\n\nconst labelClass = computed(() => grSwitchLabelClass(resolvedSize.value, isDisabled.value))\n\nconst resolvedLoadingText = computed(() => props.loadingText ?? t('gr.switch.loading', 'Saving…'))\n\n// Выключенный переключатель не отправляется вовсе — так устроен чекбокс в HTML,\n// и сервер отличает «выкл» по отсутствию ключа.\nconst submitsValue = computed(\n () => props.modelValue && !isDisabled.value && Boolean(props.name),\n)\n\nfunction toggle(): void {\n if (isDisabled.value || isReadonly.value || props.loading) {\n return\n }\n\n const next = !props.modelValue\n emit('update:modelValue', next)\n emit('change', next)\n}\n</script>\n\n<template>\n <input\n v-if=\"submitsValue\"\n type=\"hidden\"\n :name=\"name\"\n :value=\"value\"\n :form=\"form\"\n >\n\n <button\n :id=\"fieldId\"\n ref=\"rootEl\"\n v-bind=\"$attrs\"\n type=\"button\"\n role=\"switch\"\n data-gr-switch\n :aria-checked=\"modelValue ? 'true' : 'false'\"\n :aria-label=\"ariaLabel\"\n :aria-describedby=\"describedBy\"\n :aria-invalid=\"isInvalid ? 'true' : undefined\"\n :aria-required=\"isRequired ? 'true' : undefined\"\n :aria-readonly=\"isReadonly ? 'true' : undefined\"\n :aria-busy=\"loading ? 'true' : undefined\"\n :disabled=\"isDisabled\"\n :class=\"rootClass\"\n @click=\"toggle\"\n @focus=\"emit('focus', $event)\"\n @blur=\"emit('blur', $event)\"\n >\n <span\n data-testid=\"gr-switch-track\"\n data-gr-switch-track\n :class=\"trackClass\"\n :style=\"trackStyle\"\n >\n <span\n data-testid=\"gr-switch-thumb\"\n data-gr-switch-thumb\n :class=\"thumbClass\"\n aria-hidden=\"true\"\n >\n <IconLoader v-if=\"loading\" data-gr-switch-spinner :class=\"spinnerClass\" />\n </span>\n </span>\n <span\n v-if=\"$slots.default\"\n data-gr-switch-label\n :class=\"labelClass\"\n >\n <slot />\n </span>\n <span v-if=\"loading\" data-gr-switch-loading-text class=\"sr-only\">{{ resolvedLoadingText }}</span>\n </button>\n</template>\n"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import { n as grSwitchSafelist, t as grSwitchConfig } from "../../chunks/config-BoNR7_PD2.js";
2
- import { t as GrSwitch_default } from "./chunks/GrSwitch-x_vQQ6ao.js";
1
+ import { n as grSwitchSafelist, t as grSwitchConfig } from "../../chunks/config-BoNR7_PD.js";
2
+ import { t as GrSwitch_default } from "./chunks/GrSwitch-CHiIj9GT.js";
3
3
  export { GrSwitch_default as GrSwitch, GrSwitch_default as default, grSwitchConfig, grSwitchSafelist };
@@ -0,0 +1,38 @@
1
+ import { a as valueSuffixClass, i as valueRootClass, r as valuePrefixClass } from "../../../chunks/config-BFJIxE8b.js";
2
+ import { createCommentVNode, createElementBlock, createElementVNode, createTextVNode, defineComponent, normalizeClass, openBlock, renderSlot, toDisplayString, unref } from "vue";
3
+ //#region src/components/GrValue/GrValue.vue?vue&type=script&setup=true&lang.ts
4
+ var _hoisted_1 = { "data-gr-value-number": "" };
5
+ //#endregion
6
+ //#region src/components/GrValue/GrValue.vue
7
+ var GrValue_default = /* @__PURE__ */ defineComponent({
8
+ __name: "GrValue",
9
+ props: {
10
+ value: {},
11
+ prefix: {},
12
+ suffix: {}
13
+ },
14
+ setup(__props) {
15
+ return (_ctx, _cache) => {
16
+ return openBlock(), createElementBlock("span", {
17
+ "data-gr-value": "",
18
+ class: normalizeClass(unref(valueRootClass))
19
+ }, [
20
+ renderSlot(_ctx.$slots, "lead"),
21
+ __props.prefix || _ctx.$slots.prefix ? (openBlock(), createElementBlock("span", {
22
+ key: 0,
23
+ "data-gr-value-prefix": "",
24
+ class: normalizeClass(unref(valuePrefixClass))
25
+ }, [renderSlot(_ctx.$slots, "prefix", {}, () => [createTextVNode(toDisplayString(__props.prefix), 1)])], 2)) : createCommentVNode("", true),
26
+ createElementVNode("span", _hoisted_1, [renderSlot(_ctx.$slots, "default", {}, () => [createTextVNode(toDisplayString(__props.value), 1)])]),
27
+ renderSlot(_ctx.$slots, "trail"),
28
+ __props.suffix || _ctx.$slots.suffix ? (openBlock(), createElementBlock("span", {
29
+ key: 1,
30
+ "data-gr-value-suffix": "",
31
+ class: normalizeClass(unref(valueSuffixClass))
32
+ }, [renderSlot(_ctx.$slots, "suffix", {}, () => [createTextVNode(toDisplayString(__props.suffix), 1)])], 2)) : createCommentVNode("", true)
33
+ ], 2);
34
+ };
35
+ }
36
+ });
37
+ //#endregion
38
+ export { GrValue_default as t };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GrValue-CZsuZ4x-.js","names":["$slots"],"sources":["../../../../src/components/GrValue/GrValue.vue","../../../../src/components/GrValue/GrValue.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { valuePrefixClass, valueRootClass, valueSuffixClass } from './grValueStyles'\n\n/**\n * Величина с приписками: префикс, значение, суффикс — и ничего больше.\n *\n * Примитив, на котором стоят `GrDelta` (величина со знаком и тоном) и\n * `GrStatistic` (величина плиткой с подписью). Сам он не форматирует число, не\n * знает про тон и не имеет своей шкалы размеров: значение приходит готовым, а\n * кегль и цвет наследуются от места, где величина стоит.\n *\n * Чем является приписка — валютой, единицей измерения или пометкой — компонент\n * не решает: оформление обеих задаётся токенами `--gr-value-*`.\n */\nexport interface GrValueProps {\n /** Готовое к показу значение. Не форматируется: «2 ч 15 мин» и «—» тоже величины. */\n value?: string | number | null\n /** Приписка перед значением: валюта, знак приближения. */\n prefix?: string\n /** Приписка после значения: единица измерения, валюта справа. */\n suffix?: string\n}\n\ndefineProps<GrValueProps>()\n\ndefineSlots<{\n /** Значение вместо пропа. */\n default?: () => unknown\n /** Приписка перед значением. */\n prefix?: () => unknown\n /** Приписка после значения. */\n suffix?: () => unknown\n /**\n * Перед префиксом: знак величины у `GrDelta`, стрелка направления.\n * Слотом, а не пропом, — разметка там принадлежит потребителю.\n */\n lead?: () => unknown\n /** После значения: скрытый узел для диктора у `GrStatistic`. */\n trail?: () => unknown\n}>()\n</script>\n\n<template>\n <span data-gr-value :class=\"valueRootClass\">\n <slot name=\"lead\" />\n\n <span v-if=\"prefix || $slots.prefix\" data-gr-value-prefix :class=\"valuePrefixClass\">\n <slot name=\"prefix\">{{ prefix }}</slot>\n </span>\n\n <span data-gr-value-number>\n <slot>{{ value }}</slot>\n </span>\n\n <slot name=\"trail\" />\n\n <span v-if=\"suffix || $slots.suffix\" data-gr-value-suffix :class=\"valueSuffixClass\">\n <slot name=\"suffix\">{{ suffix }}</slot>\n </span>\n </span>\n</template>\n","<script setup lang=\"ts\">\nimport { valuePrefixClass, valueRootClass, valueSuffixClass } from './grValueStyles'\n\n/**\n * Величина с приписками: префикс, значение, суффикс — и ничего больше.\n *\n * Примитив, на котором стоят `GrDelta` (величина со знаком и тоном) и\n * `GrStatistic` (величина плиткой с подписью). Сам он не форматирует число, не\n * знает про тон и не имеет своей шкалы размеров: значение приходит готовым, а\n * кегль и цвет наследуются от места, где величина стоит.\n *\n * Чем является приписка — валютой, единицей измерения или пометкой — компонент\n * не решает: оформление обеих задаётся токенами `--gr-value-*`.\n */\nexport interface GrValueProps {\n /** Готовое к показу значение. Не форматируется: «2 ч 15 мин» и «—» тоже величины. */\n value?: string | number | null\n /** Приписка перед значением: валюта, знак приближения. */\n prefix?: string\n /** Приписка после значения: единица измерения, валюта справа. */\n suffix?: string\n}\n\ndefineProps<GrValueProps>()\n\ndefineSlots<{\n /** Значение вместо пропа. */\n default?: () => unknown\n /** Приписка перед значением. */\n prefix?: () => unknown\n /** Приписка после значения. */\n suffix?: () => unknown\n /**\n * Перед префиксом: знак величины у `GrDelta`, стрелка направления.\n * Слотом, а не пропом, — разметка там принадлежит потребителю.\n */\n lead?: () => unknown\n /** После значения: скрытый узел для диктора у `GrStatistic`. */\n trail?: () => unknown\n}>()\n</script>\n\n<template>\n <span data-gr-value :class=\"valueRootClass\">\n <slot name=\"lead\" />\n\n <span v-if=\"prefix || $slots.prefix\" data-gr-value-prefix :class=\"valuePrefixClass\">\n <slot name=\"prefix\">{{ prefix }}</slot>\n </span>\n\n <span data-gr-value-number>\n <slot>{{ value }}</slot>\n </span>\n\n <slot name=\"trail\" />\n\n <span v-if=\"suffix || $slots.suffix\" data-gr-value-suffix :class=\"valueSuffixClass\">\n <slot name=\"suffix\">{{ suffix }}</slot>\n </span>\n </span>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;uBA2CE,mBAgBO,QAAA;IAhBD,iBAAA;IAAe,OAAK,eAAE,MAAA,cAAA,CAAc;;IACxC,WAAoB,KAAA,QAAA,MAAA;IAER,QAAA,UAAUA,KAAAA,OAAO,UAAA,UAAA,GAA7B,mBAEO,QAAA;;KAF8B,wBAAA;KAAsB,OAAK,eAAE,MAAA,gBAAA,CAAgB;QAChF,WAAuC,KAAA,QAAA,UAAA,CAAA,SAAA,CAAA,gBAAA,gBAAhB,QAAA,MAAM,GAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,KAAA,mBAAA,IAAA,IAAA;IAG/B,mBAEO,QAFP,YAEO,CADL,WAAwB,KAAA,QAAA,WAAA,CAAA,SAAA,CAAA,gBAAA,gBAAf,QAAA,KAAK,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IAGhB,WAAqB,KAAA,QAAA,OAAA;IAET,QAAA,UAAUA,KAAAA,OAAO,UAAA,UAAA,GAA7B,mBAEO,QAAA;;KAF8B,wBAAA;KAAsB,OAAK,eAAE,MAAA,gBAAA,CAAgB;QAChF,WAAuC,KAAA,QAAA,UAAA,CAAA,SAAA,CAAA,gBAAA,gBAAhB,QAAA,MAAM,GAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,KAAA,mBAAA,IAAA,IAAA"}
@@ -0,0 +1,3 @@
1
+ import { n as grValueSafelist, t as grValueConfig } from "../../chunks/config-BFJIxE8b.js";
2
+ import { t as GrValue_default } from "./chunks/GrValue-CZsuZ4x-.js";
3
+ export { GrValue_default as GrValue, GrValue_default as default, grValueConfig, grValueSafelist };
@@ -1,6 +1,6 @@
1
1
  import { t as ensurePortalRoot } from "../chunks/portalRoot-CVhCgdG6.js";
2
2
  import { n as markInert, t as inertableOutside } from "../chunks/inert-DIHCCn_1.js";
3
- import { t as GrLoading_default } from "../components/GrLoading/chunks/GrLoading-C3DZSSuh.js";
3
+ import { t as GrLoading_default } from "../components/GrLoading/chunks/GrLoading-DeBFTvFX.js";
4
4
  import { createVNode, render } from "vue";
5
5
  //#region src/directives/loading.ts
6
6
  function isHTMLElement(value) {
@@ -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-CQKhl5C_.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-Dr2PKgl1.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-CQKhl5C_.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-Dr2PKgl1.js";
2
2
  export { GRANULARITY_PROVIDER_ID, createGranularityProvider, granularityProvider as default, granularityProvider, granularityComponentConfigs, granularityDefaultThemes, granularityThemeNames };
package/dist/index.js CHANGED
@@ -11,7 +11,7 @@ import { p as FileValidationError } from "./chunks/fileValidation-D5TFBhbv.js";
11
11
  import { vDropzone } from "./directives/dropzone.js";
12
12
  import { vHotkey } from "./directives/hotkey.js";
13
13
  import { t as GrIcon_default } from "./components/GrIcon/chunks/GrIcon-bQwtZtYT.js";
14
- import { t as GrLoading_default } from "./components/GrLoading/chunks/GrLoading-C3DZSSuh.js";
14
+ import { t as GrLoading_default } from "./components/GrLoading/chunks/GrLoading-DeBFTvFX.js";
15
15
  import { createLoading, vLoading } from "./directives/loading.js";
16
16
  import { useFloating } from "./composables/useFloating.js";
17
17
  import { useOverlayLayer } from "./composables/useOverlayLayer.js";
@@ -42,8 +42,8 @@ import { t as grButtonConfig } from "./chunks/config-B84z1aos.js";
42
42
  import { t as GrButtonGroup_default } from "./components/GrButtonGroup/chunks/GrButtonGroup-CKyiAV8K.js";
43
43
  import { t as grButtonGroupConfig } from "./chunks/config-DBmdgoVf.js";
44
44
  import "./components/GrButtonGroup/index.js";
45
- import { n as grCardSafelist, t as grCardConfig } from "./chunks/config-Bm_Sovla.js";
46
- import { t as GrCard_default } from "./components/GrCard/chunks/GrCard-Bc7nRfbe.js";
45
+ import { n as grCardSafelist, t as grCardConfig } from "./chunks/config-DYgfMrIF.js";
46
+ import { t as GrCard_default } from "./components/GrCard/chunks/GrCard-gI2wA8ZZ.js";
47
47
  import { t as GrCheckbox_default } from "./components/GrCheckbox/chunks/GrCheckbox-CEcHIsXM.js";
48
48
  import { n as grCheckboxSafelist, t as grCheckboxConfig } from "./chunks/config-esdviAPL.js";
49
49
  import "./components/GrCheckbox/index.js";
@@ -53,7 +53,7 @@ import { useAnnouncer } from "./composables/useAnnouncer.js";
53
53
  import { t as GrCodeBlock_default } from "./components/GrCodeBlock/chunks/GrCodeBlock-BmXCLgLS.js";
54
54
  import { n as grCodeBlockSafelist, t as grCodeBlockConfig } from "./chunks/config-B_qi4Fma.js";
55
55
  import { n as grCollapseSafelist, t as grCollapseConfig } from "./chunks/config-DU2DNSRx.js";
56
- import { n as GrCollapse_default, t as GrCollapseItem_default } from "./components/GrCollapse/chunks/GrCollapse-C1rCfbc0.js";
56
+ import { n as GrCollapse_default, t as GrCollapseItem_default } from "./components/GrCollapse/chunks/GrCollapse-DIHEiTju.js";
57
57
  import { n as grIconSafelist, t as grIconConfig } from "./chunks/config-Cp0DE0GH.js";
58
58
  import { t as GrInput_default } from "./components/GrInput/chunks/GrInput-Bb_pxqpT.js";
59
59
  import { useFocusTrap } from "./composables/useFocusTrap.js";
@@ -78,11 +78,13 @@ import { t as useDragSort } from "./chunks/useDragSort-0l47h4yb.js";
78
78
  import { useRovingFocus } from "./composables/useRovingFocus.js";
79
79
  import { t as GrDataTable_default } from "./components/GrDataTable/chunks/GrDataTable-B5MmZFUg.js";
80
80
  import { n as grDataTableSafelist, t as grDataTableConfig } from "./chunks/config-BC8d_smz.js";
81
- import { t as GrDelta_default } from "./components/GrDelta/chunks/GrDelta-DFvxNpmN.js";
81
+ import { t as GrDelta_default } from "./components/GrDelta/chunks/GrDelta-NE5HhXoo.js";
82
+ import { n as grValueSafelist, t as grValueConfig } from "./chunks/config-BFJIxE8b.js";
83
+ import { t as GrValue_default } from "./components/GrValue/chunks/GrValue-CZsuZ4x-.js";
82
84
  import { n as deltaTone, t as deltaDirection } from "./chunks/deltaTone-B5OoS1vo.js";
83
- import { n as grDeltaSafelist, t as grDeltaConfig } from "./chunks/config-DBQQT-WP.js";
84
- import { n as grDescriptionListSafelist, t as grDescriptionListConfig } from "./chunks/config-DCwQBMmJ.js";
85
- import { t as GrDescriptionList_default } from "./components/GrDescriptionList/chunks/GrDescriptionList-2zFXzX83.js";
85
+ import { n as grDeltaSafelist, t as grDeltaConfig } from "./chunks/config-BIa3ilQm.js";
86
+ import { n as grDescriptionListSafelist, t as grDescriptionListConfig } from "./chunks/config-rkcKArZQ2.js";
87
+ import { t as GrDescriptionList_default } from "./components/GrDescriptionList/chunks/GrDescriptionList-C6Pxjjbh.js";
86
88
  import { t as grDialogSafelist } from "./chunks/safelist-CkF4v7DC.js";
87
89
  import "./components/GrDialog/index.js";
88
90
  import { n as useGrFormContext } from "./chunks/context-Bfrgsluh.js";
@@ -97,12 +99,12 @@ import { t as GrDivider_default } from "./components/GrDivider/chunks/GrDivider-
97
99
  import { n as grDrawerSafelist, t as grDrawerConfig } from "./chunks/config-D94Z9po5.js";
98
100
  import { t as GrDrawer_default } from "./components/GrDrawer/chunks/GrDrawer-C3zAg2tG.js";
99
101
  import { t as GrDropdown_default } from "./components/GrDropdown/chunks/GrDropdown-BSfFOcDx.js";
100
- import { n as grDropdownSafelist, t as grDropdownConfig } from "./chunks/config-BViooYNv.js";
102
+ import { n as grDropdownSafelist, t as grDropdownConfig } from "./chunks/config-BViooYNv2.js";
101
103
  import "./components/GrDropdown/index.js";
102
104
  import { n as grDropdownMenuSafelist, t as grDropdownMenuConfig } from "./chunks/config-C5mO5DYZ.js";
103
105
  import { a as GrDropdownMenuItem_default, c as GrDropdownMenuDivider_default, i as GrDropdownMenuList_default, n as GrDropdownMenuColumn_default, o as GrDropdownMenuGroup_default, r as GrDropdownMenu_default, s as GrDropdownMenuHeader_default, t as GrDropdownMenuColumns_default } from "./components/GrDropdownMenu/chunks/GrDropdownMenu-DyS6dWDp.js";
104
- import { t as GrEmptyState_default } from "./components/GrEmptyState/chunks/GrEmptyState-CS9do8eM.js";
105
- import { n as grEmptyStateSafelist, t as grEmptyStateConfig } from "./chunks/config-vSji8w90.js";
106
+ import { t as GrEmptyState_default } from "./components/GrEmptyState/chunks/GrEmptyState-BGUX8O0U.js";
107
+ import { n as grEmptyStateSafelist, t as grEmptyStateConfig } from "./chunks/config-vSji8w902.js";
106
108
  import { n as fileKindOf, r as isPreviewableKind, t as GrFilePreview_default } from "./components/GrFilePreview/chunks/GrFilePreview-D0Bt-0nn.js";
107
109
  import { n as grFilePreviewSafelist, t as grFilePreviewConfig } from "./chunks/config-QJ54_fcM.js";
108
110
  import { t as GrProgressBar_default } from "./components/GrProgressBar/chunks/GrProgressBar-hszUOC8f.js";
@@ -130,7 +132,7 @@ import "./components/GrKbd/index.js";
130
132
  import { n as grLinkSafelist, t as grLinkConfig } from "./chunks/config-Cl4ST6Qd.js";
131
133
  import "./components/GrLink/index.js";
132
134
  import { n as grListSafelist, t as grListConfig } from "./chunks/config-CKULiuvc.js";
133
- import { n as GrList_default, t as GrListItem_default } from "./components/GrList/chunks/GrList-BRYhpqIe.js";
135
+ import { n as GrList_default, t as GrListItem_default } from "./components/GrList/chunks/GrList-DAtzVIHh.js";
134
136
  import { n as grLoadingSafelist, t as grLoadingConfig } from "./chunks/config-CjnbevbD.js";
135
137
  import "./components/GrLoading/index.js";
136
138
  import { n as grModalSafelist, t as grModalConfig } from "./chunks/config-BtXRpAtq.js";
@@ -142,7 +144,7 @@ import { t as GrNumberInput_default } from "./components/GrNumberInput/chunks/Gr
142
144
  import { t as GrSelect_default } from "./components/GrSelect/chunks/GrSelect-CaGuyvtb.js";
143
145
  import { n as grPaginationSafelist, t as grPaginationConfig } from "./chunks/config-DSJY6aEl.js";
144
146
  import { t as GrPagination_default } from "./components/GrPagination/chunks/GrPagination-GtGtSMJG.js";
145
- import { n as grPopoverSafelist, t as grPopoverConfig } from "./chunks/config-BSyiFlbi.js";
147
+ import { n as grPopoverSafelist, t as grPopoverConfig } from "./chunks/config-BSyiFlbi2.js";
146
148
  import "./components/GrPopover/index.js";
147
149
  import { n as grProgressBarSafelist, r as GR_TONES, t as grProgressBarConfig } from "./chunks/config-CQzGyi1C.js";
148
150
  import "./components/GrProgressBar/index.js";
@@ -158,8 +160,8 @@ import { t as grRadioGroupConfig } from "./chunks/config-QaIc_gRa.js";
158
160
  import { n as grRatingSafelist, t as grRatingConfig } from "./chunks/config-Baj7Wvx-.js";
159
161
  import { t as GrRating_default } from "./components/GrRating/chunks/GrRating-BSEtaibx.js";
160
162
  import { n as GrFormErrorBanner_default, r as GrUploadErrorBanner_default, t as useResponseError } from "./components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-CgfAwlg3.js";
163
+ import { n as titleWhenTruncated, t as GrSegmented_default } from "./components/GrSegmented/chunks/GrSegmented-DKpo3cnC.js";
161
164
  import { n as grSegmentedSafelist, t as grSegmentedConfig } from "./chunks/config-BEVBsvni2.js";
162
- import { t as GrSegmented_default } from "./components/GrSegmented/chunks/GrSegmented-D1mjxF_O.js";
163
165
  import { n as grSelectSafelist, t as grSelectConfig } from "./chunks/config-Cwd3yjRw.js";
164
166
  import "./components/GrSelect/index.js";
165
167
  import { n as grSidebarSafelist, t as grSidebarConfig } from "./chunks/config-BfsBepkH2.js";
@@ -169,13 +171,13 @@ import "./components/GrSkeleton/index.js";
169
171
  import { n as grSliderSafelist, t as grSliderConfig } from "./chunks/config-T3qdQBgU2.js";
170
172
  import "./components/GrSlider/index.js";
171
173
  import { n as grSortableListSafelist, t as grSortableListConfig } from "./chunks/config-DAX8Deh12.js";
172
- import { t as GrSortableList_default } from "./components/GrSortableList/chunks/GrSortableList-DPjxilmN.js";
174
+ import { t as GrSortableList_default } from "./components/GrSortableList/chunks/GrSortableList-BmcUVAMb.js";
173
175
  import { n as grSplitterSafelist, t as grSplitterConfig } from "./chunks/config-BE6n20np.js";
174
176
  import { n as sizeFromPointer, t as GrSplitter_default } from "./components/GrSplitter/chunks/GrSplitter-B9_JrT7q.js";
175
- import { n as formatStatisticValue, t as GrStatistic_default } from "./components/GrStatistic/chunks/GrStatistic-C7wQECeS.js";
176
- import { n as grStatisticSafelist, t as grStatisticConfig } from "./chunks/config-Be9k9bOf.js";
177
- import { n as grSwitchSafelist, t as grSwitchConfig } from "./chunks/config-BoNR7_PD2.js";
178
- import { t as GrSwitch_default } from "./components/GrSwitch/chunks/GrSwitch-x_vQQ6ao.js";
177
+ import { n as formatStatisticValue, t as GrStatistic_default } from "./components/GrStatistic/chunks/GrStatistic-BJQv5aOS.js";
178
+ import { n as grStatisticSafelist, t as grStatisticConfig } from "./chunks/config-C8tVRv8i.js";
179
+ import { n as grSwitchSafelist, t as grSwitchConfig } from "./chunks/config-BoNR7_PD.js";
180
+ import { t as GrSwitch_default } from "./components/GrSwitch/chunks/GrSwitch-CHiIj9GT.js";
179
181
  import { n as grTableSafelist, t as grTableConfig } from "./chunks/config-WTNhdh6T.js";
180
182
  import "./components/GrTable/index.js";
181
183
  import { n as GrTabPanels_default, t as GrTabPanel_default } from "./components/GrTabPanels/chunks/GrTabPanels-AJt1w1XC.js";
@@ -197,4 +199,4 @@ import { t as GrTreeSelect_default } from "./components/GrTreeSelect/chunks/GrTr
197
199
  import "./composables/useGrComponentConfig.js";
198
200
  import "./composables/useGranularityTranslations.js";
199
201
  import { GRANULARITY_THEME_STATE, granularityThemePlugin, initThemeEarly, useTheme } from "./composables/useTheme.js";
200
- export { FileValidationError, GRANULARITY_THEME_STATE, GRANULARITY_TOAST_STATE, GR_KBD_TOKENS, GR_TONES, GrAlert_default as GrAlert, GrAutocomplete_default as GrAutocomplete, GrAvatar_default as GrAvatar, GrAvatarGroup_default as GrAvatarGroup, GrBadge_default as GrBadge, GrBadgeWrap_default as GrBadgeWrap, GrBottomNav_default as GrBottomNav, GrBreadcrumbs_default as GrBreadcrumbs, GrButton_default as GrButton, GrButtonGroup_default as GrButtonGroup, GrCard_default as GrCard, GrCheckbox_default as GrCheckbox, GrCheckboxGroup_default as GrCheckboxGroup, GrCodeBlock_default as GrCodeBlock, GrCollapse_default as GrCollapse, GrCollapseItem_default as GrCollapseItem, GrColorPicker_default as GrColorPicker, GrCommandPalette_default as GrCommandPalette, GrConfigProvider_default as GrConfigProvider, GrConfirmDialog_default as GrConfirmDialog, GrDataTable_default as GrDataTable, GrDelta_default as GrDelta, GrDescriptionList_default as GrDescriptionList, GrDialog_default as GrDialog, GrDialogCloseButton_default as GrDialogCloseButton, GrDialogFooter_default as GrDialogFooter, GrDialogHeader_default as GrDialogHeader, GrDialogServiceHost_default as GrDialogServiceHost, GrDivider_default as GrDivider, GrDrawer_default as GrDrawer, GrDropdown_default as GrDropdown, GrDropdownMenu_default as GrDropdownMenu, GrDropdownMenuColumn_default as GrDropdownMenuColumn, GrDropdownMenuColumns_default as GrDropdownMenuColumns, GrDropdownMenuDivider_default as GrDropdownMenuDivider, GrDropdownMenuGroup_default as GrDropdownMenuGroup, GrDropdownMenuHeader_default as GrDropdownMenuHeader, GrDropdownMenuItem_default as GrDropdownMenuItem, GrDropdownMenuList_default as GrDropdownMenuList, GrEmptyState_default as GrEmptyState, GrFilePreview_default as GrFilePreview, GrFileUpload_default as GrFileUpload, GrForm_default as GrForm, GrFormErrorBanner_default as GrFormErrorBanner, GrFormField_default as GrFormField, GrFormFile_default as GrFormFile, GrFormSection_default as GrFormSection, GrIcon_default as GrIcon, GrImageViewer_default as GrImageViewer, GrInput_default as GrInput, GrInputTag_default as GrInputTag, GrJsonViewer_default as GrJsonViewer, GrKbd_default as GrKbd, GrLink_default as GrLink, GrList_default as GrList, GrListItem_default as GrListItem, GrLoading_default as GrLoading, GrModal_default as GrModal, GrNavbar_default as GrNavbar, GrNumberInput_default as GrNumberInput, GrPagination_default as GrPagination, GrPopover_default as GrPopover, GrProgressBar_default as GrProgressBar, GrProgressCircle_default as GrProgressCircle, GrPromptDialog_default as GrPromptDialog, GrRadio_default as GrRadio, GrRadioGroup_default as GrRadioGroup, GrRating_default as GrRating, GrResponseErrorBanner_default as GrResponseErrorBanner, GrSegmented_default as GrSegmented, GrSelect_default as GrSelect, GrSidebar_default as GrSidebar, GrSidebarGroup_default as GrSidebarGroup, GrSidebarItem_default as GrSidebarItem, GrSkeleton_default as GrSkeleton, GrSlider_default as GrSlider, GrSortableList_default as GrSortableList, GrSplitter_default as GrSplitter, GrStatistic_default as GrStatistic, GrSwitch_default as GrSwitch, GrTabPanel_default as GrTabPanel, GrTabPanels_default as GrTabPanels, GrTable_default as GrTable, GrTabs_default as GrTabs, GrTextarea_default as GrTextarea, GrTimeline_default as GrTimeline, GrTimelineItem_default as GrTimelineItem, GrToaster_default as GrToaster, GrTooltip_default as GrTooltip, GrTree_default as GrTree, GrTreeSelect_default as GrTreeSelect, GrUploadAbortError, GrUploadErrorBanner_default as GrUploadErrorBanner, GrUploadHttpError, coreResponseErrorParsers, createGrFormMessageResolver, createLoading, createResponseErrorClassifier, deltaDirection, deltaTone, dialogService, extendDefaultParsers, fileKindOf, findKbdToken, formatBadgeValue, formatStatisticValue, grAlertConfig, grAutocompleteConfig, grAutocompleteSafelist, grAvatarConfig, grAvatarSafelist, grBadgeConfig, grBadgeSafelist, grBadgeWrapConfig, grBadgeWrapSafelist, grBottomNavConfig, grBottomNavSafelist, grBreadcrumbsConfig, grBreadcrumbsSafelist, grButtonConfig, grButtonGroupConfig, grButtonSafelist, grCardConfig, grCardSafelist, grCheckboxConfig, grCheckboxGroupConfig, grCheckboxSafelist, grCodeBlockConfig, grCodeBlockSafelist, grCollapseConfig, grCollapseSafelist, grColorPickerConfig, grColorPickerSafelist, grCommandPaletteConfig, grCommandPaletteSafelist, grConfigProviderConfig, grConfirmDialogConfig, grDataTableConfig, grDataTableSafelist, grDeltaConfig, grDeltaSafelist, grDescriptionListConfig, grDescriptionListSafelist, grDialogSafelist, grDialogServiceConfig, grDividerConfig, grDividerSafelist, grDrawerConfig, grDrawerSafelist, grDropdownConfig, grDropdownMenuConfig, grDropdownMenuSafelist, grDropdownSafelist, grEmptyStateConfig, grEmptyStateSafelist, grFilePreviewConfig, grFilePreviewSafelist, grFileUploadConfig, grFileUploadSafelist, grFormConfig, grFormFieldConfig, grFormFieldSafelist, grFormFileConfig, grFormFileSafelist, grFormSectionConfig, grFormSectionSafelist, grIconConfig, grIconSafelist, grImageViewerConfig, grImageViewerSafelist, grInputConfig, grInputSafelist, grInputTagConfig, grInputTagSafelist, grJsonViewerConfig, grJsonViewerSafelist, grKbdConfig, grKbdSafelist, grLinkConfig, grLinkSafelist, grListConfig, grListSafelist, grLoadingConfig, grLoadingSafelist, grModalConfig, grModalSafelist, grNavbarConfig, grNavbarSafelist, grNumberInputConfig, grNumberInputSafelist, grPaginationConfig, grPaginationSafelist, grPopoverConfig, grPopoverSafelist, grProgressBarConfig, grProgressBarSafelist, grProgressCircleConfig, grProgressCircleSafelist, grPromptDialogConfig, grRadioConfig, grRadioGroupConfig, grRadioSafelist, grRatingConfig, grRatingSafelist, grSegmentedConfig, grSegmentedSafelist, grSelectConfig, grSelectSafelist, grSidebarConfig, grSidebarSafelist, grSkeletonConfig, grSliderConfig, grSliderSafelist, grSortableListConfig, grSortableListSafelist, grSplitterConfig, grSplitterSafelist, grStatisticConfig, grStatisticSafelist, grSwitchConfig, grSwitchSafelist, grTabPanelsConfig, grTableConfig, grTableSafelist, grTabsConfig, grTabsSafelist, grTextareaConfig, grTextareaSafelist, grTimelineConfig, grTimelineSafelist, grToasterConfig, grToasterSafelist, grTooltipConfig, grTooltipSafelist, grTreeConfig, grTreeSafelist, grTreeSelectConfig, grTreeSelectSafelist, granularityDialogServicePlugin, granularityThemePlugin, granularityToastPlugin, initThemeEarly, initialsFrom, isPreviewableKind, normalizeError, resolveBreadcrumbsFit, resolveBreadcrumbsLayout, resolveGrConfig, runFieldRules, sizeFromPointer, teardownDialogService, useAnnouncer, useComboboxNavigation, useDialogService, useDismissible, useDragGesture, useDragSort, useFloating, useFocusTrap, useGrButtonGroup, useGrComponentDefaults, useGrComponentProp, useGrComponentSize, useGrConfig, useGrFormContext, useGrFormControl, useGrFormFieldContext, useGrThemeAttrs, useGranularityTranslations, useOverlayLayer, usePortalTarget, useResponseError, useRovingFocus, useTheme, useToast, useVirtualList, vAutofocus, vAutosize, vClickOutside, vDropzone, vHotkey, vLoading };
202
+ export { FileValidationError, GRANULARITY_THEME_STATE, GRANULARITY_TOAST_STATE, GR_KBD_TOKENS, GR_TONES, GrAlert_default as GrAlert, GrAutocomplete_default as GrAutocomplete, GrAvatar_default as GrAvatar, GrAvatarGroup_default as GrAvatarGroup, GrBadge_default as GrBadge, GrBadgeWrap_default as GrBadgeWrap, GrBottomNav_default as GrBottomNav, GrBreadcrumbs_default as GrBreadcrumbs, GrButton_default as GrButton, GrButtonGroup_default as GrButtonGroup, GrCard_default as GrCard, GrCheckbox_default as GrCheckbox, GrCheckboxGroup_default as GrCheckboxGroup, GrCodeBlock_default as GrCodeBlock, GrCollapse_default as GrCollapse, GrCollapseItem_default as GrCollapseItem, GrColorPicker_default as GrColorPicker, GrCommandPalette_default as GrCommandPalette, GrConfigProvider_default as GrConfigProvider, GrConfirmDialog_default as GrConfirmDialog, GrDataTable_default as GrDataTable, GrDelta_default as GrDelta, GrDescriptionList_default as GrDescriptionList, GrDialog_default as GrDialog, GrDialogCloseButton_default as GrDialogCloseButton, GrDialogFooter_default as GrDialogFooter, GrDialogHeader_default as GrDialogHeader, GrDialogServiceHost_default as GrDialogServiceHost, GrDivider_default as GrDivider, GrDrawer_default as GrDrawer, GrDropdown_default as GrDropdown, GrDropdownMenu_default as GrDropdownMenu, GrDropdownMenuColumn_default as GrDropdownMenuColumn, GrDropdownMenuColumns_default as GrDropdownMenuColumns, GrDropdownMenuDivider_default as GrDropdownMenuDivider, GrDropdownMenuGroup_default as GrDropdownMenuGroup, GrDropdownMenuHeader_default as GrDropdownMenuHeader, GrDropdownMenuItem_default as GrDropdownMenuItem, GrDropdownMenuList_default as GrDropdownMenuList, GrEmptyState_default as GrEmptyState, GrFilePreview_default as GrFilePreview, GrFileUpload_default as GrFileUpload, GrForm_default as GrForm, GrFormErrorBanner_default as GrFormErrorBanner, GrFormField_default as GrFormField, GrFormFile_default as GrFormFile, GrFormSection_default as GrFormSection, GrIcon_default as GrIcon, GrImageViewer_default as GrImageViewer, GrInput_default as GrInput, GrInputTag_default as GrInputTag, GrJsonViewer_default as GrJsonViewer, GrKbd_default as GrKbd, GrLink_default as GrLink, GrList_default as GrList, GrListItem_default as GrListItem, GrLoading_default as GrLoading, GrModal_default as GrModal, GrNavbar_default as GrNavbar, GrNumberInput_default as GrNumberInput, GrPagination_default as GrPagination, GrPopover_default as GrPopover, GrProgressBar_default as GrProgressBar, GrProgressCircle_default as GrProgressCircle, GrPromptDialog_default as GrPromptDialog, GrRadio_default as GrRadio, GrRadioGroup_default as GrRadioGroup, GrRating_default as GrRating, GrResponseErrorBanner_default as GrResponseErrorBanner, GrSegmented_default as GrSegmented, GrSelect_default as GrSelect, GrSidebar_default as GrSidebar, GrSidebarGroup_default as GrSidebarGroup, GrSidebarItem_default as GrSidebarItem, GrSkeleton_default as GrSkeleton, GrSlider_default as GrSlider, GrSortableList_default as GrSortableList, GrSplitter_default as GrSplitter, GrStatistic_default as GrStatistic, GrSwitch_default as GrSwitch, GrTabPanel_default as GrTabPanel, GrTabPanels_default as GrTabPanels, GrTable_default as GrTable, GrTabs_default as GrTabs, GrTextarea_default as GrTextarea, GrTimeline_default as GrTimeline, GrTimelineItem_default as GrTimelineItem, GrToaster_default as GrToaster, GrTooltip_default as GrTooltip, GrTree_default as GrTree, GrTreeSelect_default as GrTreeSelect, GrUploadAbortError, GrUploadErrorBanner_default as GrUploadErrorBanner, GrUploadHttpError, GrValue_default as GrValue, coreResponseErrorParsers, createGrFormMessageResolver, createLoading, createResponseErrorClassifier, deltaDirection, deltaTone, dialogService, extendDefaultParsers, fileKindOf, findKbdToken, formatBadgeValue, formatStatisticValue, grAlertConfig, grAutocompleteConfig, grAutocompleteSafelist, grAvatarConfig, grAvatarSafelist, grBadgeConfig, grBadgeSafelist, grBadgeWrapConfig, grBadgeWrapSafelist, grBottomNavConfig, grBottomNavSafelist, grBreadcrumbsConfig, grBreadcrumbsSafelist, grButtonConfig, grButtonGroupConfig, grButtonSafelist, grCardConfig, grCardSafelist, grCheckboxConfig, grCheckboxGroupConfig, grCheckboxSafelist, grCodeBlockConfig, grCodeBlockSafelist, grCollapseConfig, grCollapseSafelist, grColorPickerConfig, grColorPickerSafelist, grCommandPaletteConfig, grCommandPaletteSafelist, grConfigProviderConfig, grConfirmDialogConfig, grDataTableConfig, grDataTableSafelist, grDeltaConfig, grDeltaSafelist, grDescriptionListConfig, grDescriptionListSafelist, grDialogSafelist, grDialogServiceConfig, grDividerConfig, grDividerSafelist, grDrawerConfig, grDrawerSafelist, grDropdownConfig, grDropdownMenuConfig, grDropdownMenuSafelist, grDropdownSafelist, grEmptyStateConfig, grEmptyStateSafelist, grFilePreviewConfig, grFilePreviewSafelist, grFileUploadConfig, grFileUploadSafelist, grFormConfig, grFormFieldConfig, grFormFieldSafelist, grFormFileConfig, grFormFileSafelist, grFormSectionConfig, grFormSectionSafelist, grIconConfig, grIconSafelist, grImageViewerConfig, grImageViewerSafelist, grInputConfig, grInputSafelist, grInputTagConfig, grInputTagSafelist, grJsonViewerConfig, grJsonViewerSafelist, grKbdConfig, grKbdSafelist, grLinkConfig, grLinkSafelist, grListConfig, grListSafelist, grLoadingConfig, grLoadingSafelist, grModalConfig, grModalSafelist, grNavbarConfig, grNavbarSafelist, grNumberInputConfig, grNumberInputSafelist, grPaginationConfig, grPaginationSafelist, grPopoverConfig, grPopoverSafelist, grProgressBarConfig, grProgressBarSafelist, grProgressCircleConfig, grProgressCircleSafelist, grPromptDialogConfig, grRadioConfig, grRadioGroupConfig, grRadioSafelist, grRatingConfig, grRatingSafelist, grSegmentedConfig, grSegmentedSafelist, grSelectConfig, grSelectSafelist, grSidebarConfig, grSidebarSafelist, grSkeletonConfig, grSliderConfig, grSliderSafelist, grSortableListConfig, grSortableListSafelist, grSplitterConfig, grSplitterSafelist, grStatisticConfig, grStatisticSafelist, grSwitchConfig, grSwitchSafelist, grTabPanelsConfig, grTableConfig, grTableSafelist, grTabsConfig, grTabsSafelist, grTextareaConfig, grTextareaSafelist, grTimelineConfig, grTimelineSafelist, grToasterConfig, grToasterSafelist, grTooltipConfig, grTooltipSafelist, grTreeConfig, grTreeSafelist, grTreeSelectConfig, grTreeSelectSafelist, grValueConfig, grValueSafelist, granularityDialogServicePlugin, granularityThemePlugin, granularityToastPlugin, initThemeEarly, initialsFrom, isPreviewableKind, normalizeError, resolveBreadcrumbsFit, resolveBreadcrumbsLayout, resolveGrConfig, runFieldRules, sizeFromPointer, teardownDialogService, titleWhenTruncated, useAnnouncer, useComboboxNavigation, useDialogService, useDismissible, useDragGesture, useDragSort, useFloating, useFocusTrap, useGrButtonGroup, useGrComponentDefaults, useGrComponentProp, useGrComponentSize, useGrConfig, useGrFormContext, useGrFormControl, useGrFormFieldContext, useGrThemeAttrs, useGranularityTranslations, useOverlayLayer, usePortalTarget, useResponseError, useRovingFocus, useTheme, useToast, useVirtualList, vAutofocus, vAutosize, vClickOutside, vDropzone, vHotkey, vLoading };
@@ -62,28 +62,28 @@
62
62
 
63
63
  /* Status roles */
64
64
  --gr-success: #34d399;
65
- --gr-success-light: #064e3b;
65
+ --gr-success-light: #194536;
66
66
  --gr-success-fg: #0f172a;
67
67
  --gr-primary-text: #c7d2fe;
68
68
  --gr-success-text: #6ee7b7;
69
69
  --gr-warning: #fb923c;
70
- --gr-warning-light: #7c2d12;
70
+ --gr-warning-light: #672e1c;
71
71
  --gr-warning-fg: #0f172a;
72
72
  --gr-warning-text: #fdba74;
73
73
  --gr-danger: #f87171;
74
- --gr-danger-light: #7f1d1d;
74
+ --gr-danger-light: #6a2522;
75
75
  --gr-danger-fg: #0f172a;
76
76
  --gr-danger-text: #fca5a5;
77
77
  --gr-info: #60a5fa;
78
- --gr-info-light: #1e3a8a;
78
+ --gr-info-light: #213771;
79
79
  --gr-info-fg: #0f172a;
80
80
  --gr-info-text: #bfdbfe;
81
81
  --gr-slate: #94a3b8;
82
- --gr-slate-light: #334155;
82
+ --gr-slate-light: #313b4a;
83
83
  --gr-slate-fg: #0f172a;
84
84
  --gr-slate-text: #cbd5e1;
85
85
  --gr-azure: #38bdf8;
86
- --gr-azure-light: #0c4a6e;
86
+ --gr-azure-light: #1b425c;
87
87
  --gr-azure-fg: #0f172a;
88
88
  --gr-azure-text: #bae6fd;
89
89
 
@@ -149,6 +149,11 @@
149
149
  --gr-sidebar-accent-fg: #f1f5f9;
150
150
  --gr-sidebar-brd: #334155;
151
151
  --gr-sidebar-ring: #818cf8;
152
+
153
+ /* Elevation */
154
+ --gr-shadow-1: 0 1px 2px rgba(0, 0, 0, 0.45);
155
+ --gr-shadow-2: 0 8px 24px rgba(0, 0, 0, 0.55);
156
+ --gr-shadow-3: 0 16px 48px rgba(0, 0, 0, 0.65);
152
157
  }
153
158
 
154
159
  @supports not (color: color-mix(in srgb, #000 50%, #fff)) {
@@ -165,6 +165,11 @@
165
165
  --gr-sidebar-accent-fg: #1e293b;
166
166
  --gr-sidebar-brd: #e2e8f0;
167
167
  --gr-sidebar-ring: #6366f1;
168
+
169
+ /* Elevation */
170
+ --gr-shadow-1: 0 1px 2px rgba(15, 23, 42, 0.08);
171
+ --gr-shadow-2: 0 8px 24px rgba(15, 23, 42, 0.14);
172
+ --gr-shadow-3: 0 16px 48px rgba(15, 23, 42, 0.20);
168
173
  }
169
174
 
170
175
  @supports not (color: color-mix(in srgb, #000 50%, #fff)) {
package/dist/theme.js CHANGED
@@ -1,4 +1,4 @@
1
- import { a as grThemeTokens, n as grDerivedTokens, t as grComponentTokens } from "./chunks/generated-CiCrGDQO.js";
1
+ import { a as grThemeTokens, n as grDerivedTokens, t as grComponentTokens } from "./chunks/generated-1WEi10KK.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-CiCrGDQO.js";
1
+ import { a as grThemeTokens, i as grThemeNames, n as grDerivedTokens, r as grFoundationTokens, t as grComponentTokens } from "./chunks/generated-1WEi10KK.js";
2
2
  export { grComponentTokens, grDerivedTokens, grFoundationTokens, grThemeNames, grThemeTokens };
@@ -12,6 +12,17 @@ export declare const variantClass: Record<GrCardVariant, string>;
12
12
  export declare const paddingClass: Record<GrCardPadding, string>;
13
13
  export declare const sectionDividerTopClass = "border-t border-[var(--gr-brd)]";
14
14
  export declare const sectionDividerBottomClass = "border-b border-[var(--gr-brd)]";
15
+ /**
16
+ * Отступ шапки, которую карточка рисует сама из `title`.
17
+ *
18
+ * Не берётся из `padding`: тот описывает **содержимое**, и дефолт `none` у него
19
+ * осмыслен — на `GrCard` стоят `GrCollapse` и `GrList`, а карточка с таблицей
20
+ * хочет её край в край. Заголовок же принадлежит самой карточке, и прижатым к
21
+ * рамке вместе с разделителем он выглядеть не должен ни при каком `padding`.
22
+ *
23
+ * По вертикали отступ меньше горизонтального: шапка — строка, а не блок.
24
+ */
25
+ export declare const ownHeaderPaddingClass = "px-4 py-3";
15
26
  /**
16
27
  * Уровень заголовка карточки. `h1` намеренно нет: его задаёт страница, а
17
28
  * карточка — блок внутри уже существующей структуры.
@@ -14,8 +14,20 @@ import type { GrDeltaTone } from './deltaTone';
14
14
  * читается как опечатка. Отбивку получают только стрелка и суффикс.
15
15
  */
16
16
  export declare const deltaRootClass = "inline-flex items-baseline tabular-nums";
17
+ /**
18
+ * Величина стоит **в строке текста**, и приписка при ней приглушения не
19
+ * получает: «−15 %» набирается кеглем и цветом строки целиком, иначе процент
20
+ * оказывается мельче окружающих слов.
21
+ *
22
+ * Дефолт `GrValue` рассчитан на плитку, где величина крупная и приписке есть
23
+ * куда уменьшаться. Здесь он переопределяется — ровно теми же токенами, что
24
+ * доступны потребителю.
25
+ *
26
+ * `currentColor` и `1em`, а не `inherit`: у пользовательского свойства
27
+ * `inherit` значит «наследовать саму переменную», то есть ничего.
28
+ */
29
+ export declare const deltaValueStyle: Record<string, string>;
17
30
  /** Суффикс — единица измерения, и от числа он отбивается: «−15 %», «120 мс». */
18
- export declare const deltaSuffixClass = "ml-1";
19
31
  /**
20
32
  * Стрелка выравнивается по строке, а не по базовой линии: у svg её нет.
21
33
  *
@@ -18,7 +18,35 @@ export declare const descriptionRootClass = "m-0 gap-x-4 [row-gap:var(--gr-descr
18
18
  /** Сетка колонок — раскладки `inline` и `stacked`. */
19
19
  export declare const descriptionRootGridClass = "grid";
20
20
  export declare const descriptionRootFlowClass = "flex flex-wrap items-baseline";
21
- export declare const descriptionColumnsClass: Record<GrDescriptionColumns, string>;
21
+ /** Одна колонка обычный класс: считать там нечего. */
22
+ export declare const descriptionSingleColumnClass = "grid-cols-1";
23
+ /**
24
+ * Колонки по ширине **контейнера**, а не вьюпорта.
25
+ *
26
+ * Медиазапрос меряет экран, а список живёт в карточке: на широком мониторе в
27
+ * колонке 290px включались две колонки, подпись фиксированной ширины съедала
28
+ * почти всё место, и значение переносилось посимвольно — «30» печаталось как
29
+ * «3» и «0» на двух строках. Показанное число становилось неверным.
30
+ *
31
+ * `auto-fit` решает это без медиазапросов, без JS и без замеров, то есть
32
+ * одинаково на сервере и на клиенте. `columns` при этом становится **потолком**:
33
+ * трек не уже `column-min`, но и не уже доли, на которую делится контейнер при
34
+ * N колонках, — поэтому шире N штук не встанет никогда.
35
+ *
36
+ * `min(100%, …)` спасает совсем узкий контейнер: без него трек шириной с
37
+ * `column-min` вылезал бы за край.
38
+ *
39
+ * Инлайновым стилем, а не классом: выражение зависит от N, и шкалы утилит для
40
+ * него не существует — тот же довод, что записан у сетки `GrDashboard`.
41
+ */
42
+ export declare function descriptionColumnsStyle(columns: GrDescriptionColumns,
43
+ /**
44
+ * Ширина колонки подписей при `inline`. В этой раскладке подпись и значение
45
+ * стоят **рядом**, поэтому минимум колонки складывается из них двоих: колонка
46
+ * шириной с одну подпись оставляет значению несколько пикселей, и оно
47
+ * переносится посимвольно — тот же дефект, только в других числах.
48
+ */
49
+ labelWidth?: string): Record<string, string>;
22
50
  export declare const descriptionPairInlineClass = "flex min-w-0 items-baseline gap-2";
23
51
  export declare const descriptionPairStackedClass = "min-w-0";
24
52
  export declare const descriptionPairFlowClass = "flex min-w-0 items-baseline gap-1";
@@ -71,19 +71,19 @@ export interface GrStatisticProps {
71
71
  export interface GrStatisticEmits {
72
72
  (e: 'click', event: MouseEvent): void;
73
73
  }
74
- declare var __VLS_10: {}, __VLS_23: {}, __VLS_42: {}, __VLS_44: {}, __VLS_46: {}, __VLS_48: {};
74
+ declare var __VLS_10: {}, __VLS_23: {}, __VLS_49: {}, __VLS_51: {}, __VLS_55: {}, __VLS_57: {};
75
75
  type __VLS_Slots = {} & {
76
76
  icon?: (props: typeof __VLS_10) => any;
77
77
  } & {
78
78
  title?: (props: typeof __VLS_23) => any;
79
79
  } & {
80
- prefix?: (props: typeof __VLS_42) => any;
80
+ prefix?: (props: typeof __VLS_49) => any;
81
81
  } & {
82
- default?: (props: typeof __VLS_44) => any;
82
+ default?: (props: typeof __VLS_51) => any;
83
83
  } & {
84
- suffix?: (props: typeof __VLS_46) => any;
84
+ suffix?: (props: typeof __VLS_55) => any;
85
85
  } & {
86
- trend?: (props: typeof __VLS_48) => any;
86
+ trend?: (props: typeof __VLS_57) => any;
87
87
  };
88
88
  declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<GrStatisticProps>, {
89
89
  title: undefined;
@@ -13,6 +13,15 @@ export type GrStatisticTrend = 'up' | 'down' | 'flat';
13
13
  export declare const statisticTitleSizeBySize: Record<GrStatisticSize, string>;
14
14
  export declare const statisticValueSizeBySize: Record<GrStatisticSize, string>;
15
15
  export declare const statisticAffixSizeBySize: Record<GrStatisticSize, string>;
16
+ /**
17
+ * Кегль приписки — значением токена, а не классом: он уезжает в
18
+ * `--gr-value-suffix-size`, которым `GrValue` и набирает суффикс.
19
+ *
20
+ * Ступень шкалы, а не доля от величины: у плитки шкала размеров своя, и на
21
+ * ступени `md` число крупное (`--gr-text-3xl`), а приписка при нём обязана
22
+ * остаться подписью. Доля дала бы её вровень с числом.
23
+ */
24
+ export declare const statisticAffixSizeVarBySize: Record<GrStatisticSize, string>;
16
25
  export declare const statisticPlaceholderHeightBySize: Record<GrStatisticSize, string>;
17
26
  export declare const statisticTrendSizeBySize: Record<GrStatisticSize, string>;
18
27
  export declare const statisticValueClassByTone: Record<GrStatisticTone, string>;