@profitliga/ui 2.0.2 → 2.0.4

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 (121) hide show
  1. package/dist/components/AlertDialog/AlertDialogAction.vue.js +2 -3
  2. package/dist/components/AlertDialog/AlertDialogCancel.vue.js +8 -9
  3. package/dist/components/AlertDialog/AlertDialogTrigger.vue.js +7 -8
  4. package/dist/components/Button/Button.css +1 -1
  5. package/dist/components/Button/Button.vue.js +5 -52
  6. package/dist/components/Button/Button.vue2.js +52 -3
  7. package/dist/components/Calendar/CalendarNext.vue.js +3 -4
  8. package/dist/components/Calendar/CalendarPrev.vue.js +7 -8
  9. package/dist/components/ConfirmDialog/ConfirmDialog.vue2.js +11 -12
  10. package/dist/components/DatePicker/DatePickerNext.vue.js +1 -2
  11. package/dist/components/DatePicker/DatePickerPrev.vue.js +7 -8
  12. package/dist/components/DateRangePicker/DateRangePickerNext.vue.js +6 -7
  13. package/dist/components/DateRangePicker/DateRangePickerPrev.vue.js +7 -8
  14. package/dist/components/RangeCalendar/RangeCalendarNext.vue.js +3 -4
  15. package/dist/components/RangeCalendar/RangeCalendarPrev.vue.js +3 -4
  16. package/dist/components/Schedule/Schedule.vue2.js +38 -39
  17. package/dist/components/index.js +391 -392
  18. package/dist/components/v2/AlertDialog/AlertDialog.css +1 -1
  19. package/dist/components/v2/AlertDialog/AlertDialog.types.d.ts +2 -2
  20. package/dist/components/v2/AlertDialog/AlertDialog.vue.d.ts +2 -2
  21. package/dist/components/v2/AlertDialog/AlertDialog.vue.js +2 -2
  22. package/dist/components/v2/AlertDialog/AlertDialog.vue2.js +29 -29
  23. package/dist/components/v2/Checkbox/Checkbox.css +1 -1
  24. package/dist/components/v2/Checkbox/Checkbox.types.d.ts +11 -0
  25. package/dist/components/v2/Checkbox/Checkbox.vue.d.ts +2 -0
  26. package/dist/components/v2/Checkbox/Checkbox.vue.js +2 -2
  27. package/dist/components/v2/Checkbox/Checkbox.vue2.js +61 -49
  28. package/dist/components/v2/Combobox/Combobox.css +1 -1
  29. package/dist/components/v2/Combobox/Combobox.types.d.ts +28 -2
  30. package/dist/components/v2/Combobox/Combobox.vue.d.ts +3 -2
  31. package/dist/components/v2/Combobox/Combobox.vue.js +1 -1
  32. package/dist/components/v2/Combobox/Combobox.vue2.js +305 -251
  33. package/dist/components/v2/ConfirmDialog/ConfirmDialog.types.d.ts +2 -2
  34. package/dist/components/v2/ConfirmDialog/ConfirmDialog.vue.d.ts +2 -2
  35. package/dist/components/v2/ConfirmDialog/ConfirmDialog.vue.js +6 -6
  36. package/dist/components/v2/DatePicker/DatePicker.css +1 -1
  37. package/dist/components/v2/DatePicker/DatePicker.types.d.ts +2 -2
  38. package/dist/components/v2/DatePicker/DatePicker.vue.d.ts +2 -2
  39. package/dist/components/v2/DatePicker/DatePicker.vue.js +2 -2
  40. package/dist/components/v2/DatePicker/DatePicker.vue2.js +54 -54
  41. package/dist/components/v2/Divider/Divider.css +1 -1
  42. package/dist/components/v2/Divider/Divider.types.d.ts +8 -0
  43. package/dist/components/v2/Divider/Divider.vue.js +2 -2
  44. package/dist/components/v2/DropdownMenu/DropdownMenu.types.d.ts +2 -2
  45. package/dist/components/v2/DropdownMenu/DropdownMenu.vue.d.ts +2 -2
  46. package/dist/components/v2/DropdownMenu/DropdownMenu.vue2.js +6 -6
  47. package/dist/components/v2/FileUpload/FileUpload.css +1 -1
  48. package/dist/components/v2/FileUpload/FileUpload.vue.js +2 -2
  49. package/dist/components/v2/FileUpload/FileUpload.vue2.js +16 -16
  50. package/dist/components/v2/FormField/FormField.css +1 -0
  51. package/dist/components/v2/FormField/FormField.types.d.ts +48 -0
  52. package/dist/components/v2/FormField/FormField.vue.d.ts +25 -0
  53. package/dist/components/v2/FormField/FormField.vue.js +8 -0
  54. package/dist/components/v2/FormField/FormField.vue2.js +54 -0
  55. package/dist/components/v2/FormField/index.d.ts +3 -0
  56. package/dist/components/v2/Image/Image.css +1 -0
  57. package/dist/components/v2/Image/Image.types.d.ts +26 -0
  58. package/dist/components/v2/Image/Image.vue.d.ts +16 -0
  59. package/dist/components/v2/Image/Image.vue.js +8 -0
  60. package/dist/components/v2/Image/Image.vue2.js +91 -0
  61. package/dist/components/v2/Image/ImageList.css +1 -0
  62. package/dist/components/v2/Image/ImageList.types.d.ts +28 -0
  63. package/dist/components/v2/Image/ImageList.vue.d.ts +15 -0
  64. package/dist/components/v2/Image/ImageList.vue.js +8 -0
  65. package/dist/components/v2/Image/ImageList.vue2.js +38 -0
  66. package/dist/components/v2/Image/index.d.ts +5 -0
  67. package/dist/components/v2/Input/Input.css +1 -1
  68. package/dist/components/v2/Input/Input.vue.js +2 -2
  69. package/dist/components/v2/Input/Input.vue2.js +113 -107
  70. package/dist/components/v2/InputNumber/InputNumber.css +1 -1
  71. package/dist/components/v2/InputNumber/InputNumber.vue.js +2 -2
  72. package/dist/components/v2/InputNumber/InputNumber.vue2.js +22 -21
  73. package/dist/components/v2/InputSelect/InputSelect.types.d.ts +2 -2
  74. package/dist/components/v2/InputSelect/InputSelect.vue.d.ts +2 -2
  75. package/dist/components/v2/InputSelect/InputSelect.vue.js +14 -14
  76. package/dist/components/v2/InputSelect/InputSelectChip.css +1 -1
  77. package/dist/components/v2/InputSelect/InputSelectChip.vue.d.ts +3 -3
  78. package/dist/components/v2/InputSelect/InputSelectChip.vue.js +2 -2
  79. package/dist/components/v2/InputSelect/InputSelectChip.vue2.js +17 -17
  80. package/dist/components/v2/Popover/Popover.css +1 -1
  81. package/dist/components/v2/Popover/Popover.types.d.ts +2 -2
  82. package/dist/components/v2/Popover/Popover.vue.d.ts +2 -2
  83. package/dist/components/v2/Popover/Popover.vue.js +2 -2
  84. package/dist/components/v2/Popover/Popover.vue2.js +24 -24
  85. package/dist/components/v2/Radio/Radio.css +1 -1
  86. package/dist/components/v2/Radio/Radio.vue.d.ts +4 -0
  87. package/dist/components/v2/Radio/Radio.vue.js +1 -1
  88. package/dist/components/v2/Radio/Radio.vue2.js +57 -49
  89. package/dist/components/v2/Schedule/Schedule.css +1 -1
  90. package/dist/components/v2/Schedule/Schedule.types.d.ts +2 -2
  91. package/dist/components/v2/Schedule/Schedule.vue.d.ts +2 -2
  92. package/dist/components/v2/Schedule/Schedule.vue.js +3 -3
  93. package/dist/components/v2/Schedule/Schedule.vue2.js +55 -55
  94. package/dist/components/v2/Select/Select.css +1 -1
  95. package/dist/components/v2/Select/Select.types.d.ts +8 -2
  96. package/dist/components/v2/Select/Select.vue.js +3 -3
  97. package/dist/components/v2/Select/Select.vue2.js +143 -127
  98. package/dist/components/v2/Toast/Toast.types.d.ts +2 -2
  99. package/dist/components/v2/Toast/Toaster.css +1 -1
  100. package/dist/components/v2/Toast/Toaster.vue.d.ts +2 -2
  101. package/dist/components/v2/Toast/Toaster.vue.js +1 -1
  102. package/dist/components/v2/Toast/Toaster.vue2.js +17 -17
  103. package/dist/components/v2/Tooltip/Tooltip.css +1 -1
  104. package/dist/components/v2/Tooltip/Tooltip.types.d.ts +2 -2
  105. package/dist/components/v2/Tooltip/Tooltip.vue.d.ts +2 -2
  106. package/dist/components/v2/Tooltip/Tooltip.vue.js +1 -1
  107. package/dist/components/v2/Tooltip/Tooltip.vue2.js +39 -38
  108. package/dist/components/v2/Tooltip/TooltipContent.css +1 -1
  109. package/dist/components/v2/Tooltip/TooltipContent.vue.d.ts +2 -2
  110. package/dist/components/v2/Tooltip/TooltipContent.vue.js +2 -2
  111. package/dist/components/v2/Tooltip/TooltipContent.vue2.js +20 -20
  112. package/dist/components/v2/Tooltip/vTooltip.directive.js +40 -41
  113. package/dist/components/v2/index.d.ts +2 -0
  114. package/dist/components/v2/index.js +82 -76
  115. package/dist/components/v2/shared/isHtmlElement.util.d.ts +15 -0
  116. package/dist/components/v2/shared/isHtmlElement.util.js +10 -0
  117. package/dist/components/v2/shared/useIsMobile.util.d.ts +13 -0
  118. package/dist/components/v2/shared/useIsMobile.util.js +8 -0
  119. package/dist/components/v2/shared/useTriggerAria.util.js +4 -3
  120. package/dist/types/global.types.d.ts +10 -0
  121. package/package.json +3 -1
@@ -1,15 +1,15 @@
1
1
  import { defineComponent as de, useModel as ne, useSlots as se, useId as re, computed as m, ref as p, watch as N, onBeforeUnmount as ue, openBlock as d, createElementBlock as n, mergeProps as r, unref as t, createElementVNode as o, renderSlot as S, createTextVNode as z, toDisplayString as v, createCommentVNode as u, createBlock as B, withCtx as P, createVNode as b, withModifiers as D, Fragment as U, renderList as ce, mergeModels as j } from "vue";
2
2
  import { CircleQuestionMark as fe, CircleAlert as me, ChevronLeft as pe, ChevronRight as ve, Download as be, FileUp as xe, ZoomIn as he } from "@lucide/vue";
3
- import { breakpoints as ke } from "../../../utils/breakpoints.util.js";
4
- import ge from "../File/File.vue.js";
5
- import ye from "../File/FilePreviewDialog.vue.js";
3
+ import ke from "../File/File.vue.js";
4
+ import ge from "../File/FilePreviewDialog.vue.js";
5
+ import { useIsMobile as ye } from "../shared/useIsMobile.util.js";
6
6
  import { useTestId as _e } from "../shared/useTestId.util.js";
7
7
  import we from "../Tooltip/Tooltip.vue.js";
8
8
  import { useFileSelection as Ce } from "./useFileSelection.util.js";
9
9
  const Fe = ["aria-labelledby"], De = {
10
10
  key: 0,
11
11
  class: "file-upload__header"
12
- }, $e = { class: "file-upload__heading" }, Le = ["aria-label"], Te = { class: "file-upload__hint-content" }, Ie = { class: "file-upload__example-label" }, Se = ["src", "alt"], ze = { class: "file-upload__body" }, Be = {
12
+ }, $e = { class: "file-upload__heading" }, Ie = ["aria-label"], Le = { class: "file-upload__hint-content" }, Te = { class: "file-upload__example-label" }, Se = ["src", "alt"], ze = { class: "file-upload__body" }, Be = {
13
13
  key: 0,
14
14
  class: "file-upload__list"
15
15
  }, Ae = { class: "file-upload__drop" }, Me = { class: "file-upload__drop-icon" }, Re = { class: "file-upload__drop-text" }, qe = { class: "file-upload__divider" }, Ve = { class: "file-upload__divider-text" }, Oe = ["disabled"], Ee = ["id", "name", "accept", "multiple", "disabled"], Ne = { class: "file-upload__example-label" }, Pe = ["aria-label"], Ue = ["src", "alt"], je = {
@@ -45,7 +45,7 @@ const Fe = ["aria-labelledby"], De = {
45
45
  }),
46
46
  emits: /* @__PURE__ */ j(["add", "remove", "reject", "preview", "exampleClick"], ["update:modelValue"]),
47
47
  setup(e, { emit: W }) {
48
- const i = e, x = W, f = ne(e, "modelValue"), A = se(), s = _e(() => i.testId), $ = re(), M = `file-upload-title-${$}`, H = m(() => i.id ?? `${$}-file-upload`), g = ke.smaller(i.breakpointMobile), R = p(null), y = p(null), _ = p(!1), w = p(!1), C = p(null), L = p(!1), T = p(!1), I = m(() => !!(i.title || A.title)), q = m(() => !!(i.example || A.example)), Q = m(() => I.value || i.required), { addFiles: V, removeFile: O, isFull: Z } = Ce({
48
+ const i = e, x = W, f = ne(e, "modelValue"), A = se(), s = _e(() => i.testId), $ = re(), M = `file-upload-title-${$}`, H = m(() => i.id ?? `${$}-file-upload`), g = ye(i.breakpointMobile), R = p(null), y = p(null), _ = p(!1), w = p(!1), C = p(null), I = p(!1), L = p(!1), T = m(() => !!(i.title || A.title)), q = m(() => !!(i.example || A.example)), Q = m(() => T.value || i.required), { addFiles: V, removeFile: O, isFull: Z } = Ce({
49
49
  files: () => f.value,
50
50
  setFiles: (l) => {
51
51
  f.value = l;
@@ -108,11 +108,11 @@ const Fe = ["aria-labelledby"], De = {
108
108
  function k() {
109
109
  const l = y.value;
110
110
  if (!l) {
111
- L.value = !1, T.value = !1;
111
+ I.value = !1, L.value = !1;
112
112
  return;
113
113
  }
114
114
  const a = l.scrollWidth - l.clientWidth;
115
- L.value = l.scrollLeft > 1, T.value = l.scrollLeft < a - 1;
115
+ I.value = l.scrollLeft > 1, L.value = l.scrollLeft < a - 1;
116
116
  }
117
117
  let F;
118
118
  return N(y, (l) => {
@@ -131,11 +131,11 @@ const Fe = ["aria-labelledby"], De = {
131
131
  }), (l, a) => (d(), n("div", r({
132
132
  class: J.value,
133
133
  role: "group",
134
- "aria-labelledby": I.value ? M : void 0
134
+ "aria-labelledby": T.value ? M : void 0
135
135
  }, { ...l.$attrs, ...t(s)("root") }), [
136
136
  Q.value ? (d(), n("div", De, [
137
137
  o("div", $e, [
138
- I.value ? (d(), n("span", r({
138
+ T.value ? (d(), n("span", r({
139
139
  key: 0,
140
140
  id: M,
141
141
  class: "file-upload__title"
@@ -157,11 +157,11 @@ const Fe = ["aria-labelledby"], De = {
157
157
  "aria-label": e.exampleLabel
158
158
  }, t(s)("example-hint")), [
159
159
  b(t(fe), { "aria-hidden": "true" })
160
- ], 16, Le)
160
+ ], 16, Ie)
161
161
  ]),
162
162
  default: P(() => [
163
- o("span", Te, [
164
- o("span", Ie, v(e.exampleLabel), 1),
163
+ o("span", Le, [
164
+ o("span", Te, v(e.exampleLabel), 1),
165
165
  S(l.$slots, "example", {}, () => [
166
166
  e.example ? (d(), n("img", {
167
167
  key: 0,
@@ -192,7 +192,7 @@ const Fe = ["aria-labelledby"], De = {
192
192
  onDrop: D(te, ["prevent"])
193
193
  }), [
194
194
  f.value.length ? (d(), n("div", Be, [
195
- !t(g) && L.value ? (d(), n("button", r({
195
+ !t(g) && I.value ? (d(), n("button", r({
196
196
  key: 0,
197
197
  type: "button",
198
198
  class: "file-upload__scroll file-upload__scroll--prev",
@@ -207,7 +207,7 @@ const Fe = ["aria-labelledby"], De = {
207
207
  ref: y,
208
208
  class: "file-upload__track"
209
209
  }, t(s)("track"), { onScroll: k }), [
210
- (d(!0), n(U, null, ce(f.value, (c) => (d(), B(t(ge), {
210
+ (d(!0), n(U, null, ce(f.value, (c) => (d(), B(t(ke), {
211
211
  key: c.id,
212
212
  file: c,
213
213
  disabled: e.disabled,
@@ -216,7 +216,7 @@ const Fe = ["aria-labelledby"], De = {
216
216
  onRemove: (oe) => t(O)(c)
217
217
  }, null, 8, ["file", "disabled", "test-id", "onOpen", "onRemove"]))), 128))
218
218
  ], 16),
219
- !t(g) && T.value ? (d(), n("button", r({
219
+ !t(g) && L.value ? (d(), n("button", r({
220
220
  key: 1,
221
221
  type: "button",
222
222
  class: "file-upload__scroll file-upload__scroll--next",
@@ -286,7 +286,7 @@ const Fe = ["aria-labelledby"], De = {
286
286
  ], 16, Pe)
287
287
  ], 16)) : u("", !0)
288
288
  ]),
289
- e.preview ? (d(), B(t(ye), {
289
+ e.preview ? (d(), B(t(ge), {
290
290
  key: 1,
291
291
  open: w.value,
292
292
  "onUpdate:open": a[3] || (a[3] = (c) => w.value = c),
@@ -0,0 +1 @@
1
+ .form-field-v2[data-v-80b99a34]{flex-direction:column;align-items:flex-start;width:100%;display:flex}.form-field-v2__label[data-v-80b99a34]{width:100%;color:var(--theme-neutral-text-title);overflow-wrap:break-word;cursor:pointer;align-items:center;gap:.125rem;padding:.375rem .6875rem .375rem .5rem;font-size:.875rem;font-weight:400;line-height:1rem;display:flex}.form-field-v2__required[data-v-80b99a34]{color:var(--theme-error-500);flex-shrink:0}.form-field-v2__control[data-v-80b99a34]{width:100%}.form-field-v2__message[data-v-80b99a34]{width:100%;color:var(--theme-neutral-text-caption);overflow-wrap:break-word;padding:.25rem .6875rem 0 .5rem;font-size:.625rem;font-weight:400;line-height:normal}.form-field-v2--error .form-field-v2__label[data-v-80b99a34],.form-field-v2--error .form-field-v2__message[data-v-80b99a34]{color:var(--theme-error-500)}
@@ -0,0 +1,48 @@
1
+ export interface FormFieldProps {
2
+ /**
3
+ * Подпись над контролом. Для подписи сложнее строки есть слот `label` —
4
+ * например «Комментарий» с уточнением мелким шрифтом рядом.
5
+ */
6
+ label?: string;
7
+ /**
8
+ * Обязательное поле: к подписи добавляется красная звёздочка, контрол
9
+ * получает `required` через проп слота. Проверку значения обёртка на себя
10
+ * не берёт — это забота формы.
11
+ */
12
+ required?: boolean;
13
+ /** Состояние ошибки: подпись краснеет, показывается `errorMessage`. */
14
+ error?: boolean;
15
+ /**
16
+ * Текст ошибки под контролом. Показывается только при `error: true`,
17
+ * поэтому проп можно держать заполненным постоянно — так же, как у `Input`.
18
+ */
19
+ errorMessage?: string;
20
+ /** Пояснение под контролом. В состоянии ошибки его место занимает `errorMessage`. */
21
+ supportText?: string;
22
+ /**
23
+ * Свой `id` контрола. По умолчанию генерируется — его нужно прокинуть в
24
+ * контрол из пропов слота, иначе клик по подписи не наведёт фокус.
25
+ */
26
+ id?: string;
27
+ /** Базовый `data-testid`; внутренние части получают суффикс имени части. */
28
+ testId?: string;
29
+ }
30
+ /**
31
+ * Обёртка не знает, что за контрол внутри, поэтому связывающие атрибуты
32
+ * отдаёт наружу: проставить их на нужный элемент может только потребитель.
33
+ */
34
+ export interface FormFieldSlotProps {
35
+ /** `id` для контрола — на него ссылается `for` подписи. */
36
+ id: string;
37
+ /** `id` подписи под контролом; уходит в `aria-describedby` контрола. */
38
+ describedBy: string | undefined;
39
+ /** Дублирует проп `required` — чтобы не передавать его дважды. */
40
+ required: boolean;
41
+ /** Дублирует проп `error` — обычно уходит в `aria-invalid` контрола. */
42
+ error: boolean;
43
+ }
44
+ export interface FormFieldSlots {
45
+ default: (props: FormFieldSlotProps) => unknown;
46
+ /** Подпись целиком — вместо пропа `label`. Звёздочка добавляется сама. */
47
+ label?: () => unknown;
48
+ }
@@ -0,0 +1,25 @@
1
+ import { FormFieldProps, FormFieldSlots } from './FormField.types';
2
+ import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
3
+ declare function __VLS_template(): {
4
+ attrs: Partial<{}>;
5
+ slots: Readonly<FormFieldSlots> & FormFieldSlots;
6
+ refs: {};
7
+ rootEl: any;
8
+ };
9
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
10
+ declare const __VLS_component: DefineComponent<FormFieldProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<FormFieldProps> & Readonly<{}>, {
11
+ label: string;
12
+ required: boolean;
13
+ id: string;
14
+ error: boolean;
15
+ errorMessage: string;
16
+ testId: string;
17
+ supportText: string;
18
+ }, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
19
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
20
+ export default _default;
21
+ type __VLS_WithTemplateSlots<T, S> = T & {
22
+ new (): {
23
+ $slots: S;
24
+ };
25
+ };
@@ -0,0 +1,8 @@
1
+ import './FormField.css';
2
+ import o from "./FormField.vue2.js";
3
+ /* empty css */
4
+ import r from "../../../_virtual/_plugin-vue_export-helper.js";
5
+ const p = /* @__PURE__ */ r(o, [["__scopeId", "data-v-80b99a34"]]);
6
+ export {
7
+ p as default
8
+ };
@@ -0,0 +1,54 @@
1
+ import { defineComponent as q, useSlots as B, useId as T, computed as s, openBlock as a, createElementBlock as d, mergeProps as t, unref as l, renderSlot as v, createTextVNode as $, toDisplayString as p, createCommentVNode as n, createElementVNode as h } from "vue";
2
+ import { useTestId as k } from "../shared/useTestId.util.js";
3
+ const _ = ["for"], S = /* @__PURE__ */ q({
4
+ inheritAttrs: !1,
5
+ __name: "FormField",
6
+ props: {
7
+ label: { default: void 0 },
8
+ required: { type: Boolean, default: !1 },
9
+ error: { type: Boolean, default: !1 },
10
+ errorMessage: { default: void 0 },
11
+ supportText: { default: void 0 },
12
+ id: { default: void 0 },
13
+ testId: { default: void 0 }
14
+ },
15
+ setup(r) {
16
+ const e = r, b = B(), o = k(() => e.testId), i = T(), c = s(() => e.id ?? `${i}-form-field`), g = `${i}-form-field-label`, m = `${i}-form-field-message`, y = s(() => !!(e.label || b.label)), u = s(() => e.error ? e.errorMessage ?? e.supportText : e.supportText), I = s(() => [
17
+ "form-field-v2",
18
+ { "form-field-v2--error": e.error }
19
+ ]);
20
+ return (f, x) => (a(), d("div", t({ class: I.value }, { ...f.$attrs, ...l(o)("root") }), [
21
+ y.value ? (a(), d("label", t({
22
+ key: 0,
23
+ id: g,
24
+ class: "form-field-v2__label",
25
+ for: c.value
26
+ }, l(o)("label")), [
27
+ v(f.$slots, "label", {}, () => [
28
+ $(p(r.label), 1)
29
+ ], !0),
30
+ r.required ? (a(), d("span", t({
31
+ key: 0,
32
+ class: "form-field-v2__required",
33
+ "aria-hidden": "true"
34
+ }, l(o)("required")), "*", 16)) : n("", !0)
35
+ ], 16, _)) : n("", !0),
36
+ h("div", t({ class: "form-field-v2__control" }, l(o)("control")), [
37
+ v(f.$slots, "default", {
38
+ id: c.value,
39
+ describedBy: u.value ? m : void 0,
40
+ required: r.required,
41
+ error: r.error
42
+ }, void 0, !0)
43
+ ], 16),
44
+ u.value ? (a(), d("p", t({
45
+ key: 1,
46
+ id: m,
47
+ class: "form-field-v2__message"
48
+ }, l(o)("message")), p(u.value), 17)) : n("", !0)
49
+ ], 16));
50
+ }
51
+ });
52
+ export {
53
+ S as default
54
+ };
@@ -0,0 +1,3 @@
1
+ import { default as FormField } from './FormField.vue';
2
+ export type { FormFieldProps, FormFieldSlotProps, FormFieldSlots } from './FormField.types';
3
+ export { FormField };
@@ -0,0 +1 @@
1
+ .image-v2[data-v-9056dfcb]{--image-v2-size:3rem;--image-v2-radius:.25rem;width:var(--image-v2-size);height:var(--image-v2-size);flex-shrink:0;position:relative}.image-v2--small[data-v-9056dfcb]{--image-v2-size:2rem;--image-v2-radius:.5rem}.image-v2--medium[data-v-9056dfcb]{--image-v2-size:3rem;--image-v2-radius:.25rem}.image-v2--large[data-v-9056dfcb]{--image-v2-size:6.625rem;--image-v2-radius:.5rem}.image-v2--full[data-v-9056dfcb]{--image-v2-size:100%;--image-v2-radius:0;aspect-ratio:1;height:auto}.image-v2__frame[data-v-9056dfcb]{border-radius:var(--image-v2-radius);background:0 0;border:none;width:100%;height:100%;padding:0;display:block;position:relative;overflow:hidden}.image-v2__picture[data-v-9056dfcb]{object-fit:cover;width:100%;height:100%;display:block}.image-v2__overlay[data-v-9056dfcb]{color:var(--theme-neutral-0);opacity:0;transition:opacity var(--animation-duration-fast) ease-in-out;background-color:#16161666;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.image-v2__overlay-icon[data-v-9056dfcb]{width:1.25rem;height:1.25rem}.image-v2--preview .image-v2__frame[data-v-9056dfcb]{cursor:pointer}.image-v2--preview .image-v2__frame[data-v-9056dfcb]:focus-visible{outline:2px solid var(--theme-primary-500);outline-offset:2px}.image-v2--preview .image-v2__frame:hover .image-v2__overlay[data-v-9056dfcb],.image-v2--preview .image-v2__frame:focus-visible .image-v2__overlay[data-v-9056dfcb]{opacity:1}.image-v2__delete[data-v-9056dfcb]{z-index:1;background-color:var(--theme-secondary-250);width:1.125rem;height:1.125rem;color:var(--theme-neutral-text-title);cursor:pointer;border:none;border-radius:50%;justify-content:center;align-items:center;padding:0;display:flex;position:absolute;top:-.5625rem;right:-.5625rem}.image-v2__delete[data-v-9056dfcb]:focus-visible{outline:2px solid var(--theme-primary-500);outline-offset:2px}.image-v2__delete[data-v-9056dfcb]:hover{background-color:var(--theme-secondary-300)}.image-v2__delete-icon[data-v-9056dfcb]{width:.75rem;height:.75rem}.image-v2__preview[data-v-9056dfcb]{justify-content:center;align-items:center;width:100%;display:flex}.image-v2__preview-picture[data-v-9056dfcb]{object-fit:contain;max-width:100%;max-height:70dvh}
@@ -0,0 +1,26 @@
1
+ /** Размер плитки. `full` растягивает картинку по контейнеру. */
2
+ export type ImageSize = 'small' | 'medium' | 'large' | 'full';
3
+ export interface ImageProps {
4
+ /** Ссылка на картинку. */
5
+ src: string;
6
+ /**
7
+ * Описание картинки. Пустая строка — картинка декоративная и скрывается от
8
+ * скринридера; так же ведёт себя нативный `<img alt="">`.
9
+ */
10
+ alt?: string;
11
+ size?: ImageSize;
12
+ /** Показывать крестик удаления. Нажатие эмитит `delete`, сам ничего не удаляет. */
13
+ deletable?: boolean;
14
+ /** Доступное имя крестика удаления. */
15
+ deleteLabel?: string;
16
+ /** Клик по картинке открывает её на весь экран. */
17
+ preview?: boolean;
18
+ /** Доступное имя плитки, когда она открывает просмотр. */
19
+ previewLabel?: string;
20
+ /** Базовый `data-testid`; внутренние части получают суффикс имени части. */
21
+ testId?: string;
22
+ }
23
+ export interface ImageEmits {
24
+ /** Нажат крестик удаления. */
25
+ delete: [];
26
+ }
@@ -0,0 +1,16 @@
1
+ import { ImageProps, ImageSize } from './Image.types';
2
+ import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
3
+ declare const _default: DefineComponent<ImageProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
4
+ delete: () => any;
5
+ }, string, PublicProps, Readonly<ImageProps> & Readonly<{
6
+ onDelete?: (() => any) | undefined;
7
+ }>, {
8
+ size: ImageSize;
9
+ alt: string;
10
+ testId: string;
11
+ deletable: boolean;
12
+ preview: boolean;
13
+ deleteLabel: string;
14
+ previewLabel: string;
15
+ }, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
16
+ export default _default;
@@ -0,0 +1,8 @@
1
+ import './Image.css';
2
+ import o from "./Image.vue2.js";
3
+ /* empty css */
4
+ import t from "../../../_virtual/_plugin-vue_export-helper.js";
5
+ const f = /* @__PURE__ */ t(o, [["__scopeId", "data-v-9056dfcb"]]);
6
+ export {
7
+ f as default
8
+ };
@@ -0,0 +1,91 @@
1
+ import { defineComponent as C, ref as I, computed as f, openBlock as r, createElementBlock as n, mergeProps as o, unref as t, createVNode as w, createCommentVNode as v, createBlock as b, resolveDynamicComponent as B, withCtx as m, createElementVNode as u, createTextVNode as N, toDisplayString as $ } from "vue";
2
+ import { X as h, Eye as L } from "@lucide/vue";
3
+ import V from "../Dialog/Dialog.vue.js";
4
+ import { useTestId as x } from "../shared/useTestId.util.js";
5
+ const D = ["aria-label"], E = ["src", "alt"], z = {
6
+ key: 0,
7
+ class: "image-v2__overlay",
8
+ "aria-hidden": "true"
9
+ }, A = ["src", "alt"], U = /* @__PURE__ */ C({
10
+ inheritAttrs: !1,
11
+ __name: "Image",
12
+ props: {
13
+ src: {},
14
+ alt: { default: "" },
15
+ size: { default: "medium" },
16
+ deletable: { type: Boolean, default: !1 },
17
+ deleteLabel: { default: "Удалить изображение" },
18
+ preview: { type: Boolean, default: !1 },
19
+ previewLabel: { default: void 0 },
20
+ testId: { default: void 0 }
21
+ },
22
+ emits: ["delete"],
23
+ setup(e, { emit: p }) {
24
+ const l = e, g = p, i = x(() => l.testId), s = I(!1), c = f(
25
+ () => l.previewLabel || l.alt || "Открыть изображение"
26
+ ), y = f(() => [
27
+ "image-v2",
28
+ `image-v2--${l.size}`,
29
+ { "image-v2--preview": l.preview }
30
+ ]);
31
+ return (k, a) => (r(), n("div", o({ class: y.value }, { ...k.$attrs, ...t(i)("root") }), [
32
+ e.deletable ? (r(), n("button", o({
33
+ key: 0,
34
+ type: "button",
35
+ class: "image-v2__delete",
36
+ "aria-label": e.deleteLabel
37
+ }, t(i)("delete"), {
38
+ onClick: a[0] || (a[0] = (d) => g("delete"))
39
+ }), [
40
+ w(t(h), {
41
+ class: "image-v2__delete-icon",
42
+ "aria-hidden": "true"
43
+ })
44
+ ], 16, D)) : v("", !0),
45
+ (r(), b(B(e.preview ? "button" : "div"), o({
46
+ type: e.preview ? "button" : void 0,
47
+ "aria-label": e.preview ? c.value : void 0,
48
+ class: "image-v2__frame"
49
+ }, t(i)("frame"), {
50
+ onClick: a[1] || (a[1] = (d) => e.preview ? s.value = !0 : void 0)
51
+ }), {
52
+ default: m(() => [
53
+ u("img", o({
54
+ class: "image-v2__picture",
55
+ src: e.src,
56
+ alt: e.alt
57
+ }, t(i)("picture")), null, 16, E),
58
+ e.preview ? (r(), n("span", z, [
59
+ w(t(L), { class: "image-v2__overlay-icon" })
60
+ ])) : v("", !0)
61
+ ]),
62
+ _: 1
63
+ }, 16, ["type", "aria-label"])),
64
+ e.preview ? (r(), b(t(V), {
65
+ key: 1,
66
+ open: s.value,
67
+ "onUpdate:open": a[2] || (a[2] = (d) => s.value = d),
68
+ width: 960,
69
+ "close-button": { enabled: !0, label: "Закрыть просмотр" },
70
+ "test-id": e.testId ? `${e.testId}-preview` : void 0
71
+ }, {
72
+ title: m(() => [
73
+ N($(c.value), 1)
74
+ ]),
75
+ default: m(() => [
76
+ u("div", o({ class: "image-v2__preview" }, t(i)("preview")), [
77
+ u("img", {
78
+ class: "image-v2__preview-picture",
79
+ src: e.src,
80
+ alt: e.alt
81
+ }, null, 8, A)
82
+ ], 16)
83
+ ]),
84
+ _: 1
85
+ }, 8, ["open", "test-id"])) : v("", !0)
86
+ ], 16));
87
+ }
88
+ });
89
+ export {
90
+ U as default
91
+ };
@@ -0,0 +1 @@
1
+ .image-list-v2[data-v-2691f19b]{flex-wrap:wrap;gap:1.25rem;display:flex}
@@ -0,0 +1,28 @@
1
+ import { ImageSize } from './Image.types';
2
+ export interface ImageListProps {
3
+ /**
4
+ * Ссылки на картинки. Именно массив строк, а не модель файла: у превью,
5
+ * пришедшего с сервера, нет ни имени, ни размера, ни mime — только адрес.
6
+ * Для файлов с метаданными есть `FileUpload`.
7
+ */
8
+ items: string[];
9
+ size?: ImageSize;
10
+ /** Показывать крестик удаления у каждой плитки. */
11
+ deletable?: boolean;
12
+ /** Клик по плитке открывает картинку на весь экран. */
13
+ preview?: boolean;
14
+ /**
15
+ * Как назвать плитку номер N для скринридера. По умолчанию —
16
+ * «Изображение 1», «Изображение 2» и так далее.
17
+ */
18
+ itemLabel?: (index: number, src: string) => string;
19
+ /** Базовый `data-testid`; внутренние части получают суффикс имени части. */
20
+ testId?: string;
21
+ }
22
+ export interface ImageListEmits {
23
+ /**
24
+ * Нажат крестик на плитке. Список ничего не удаляет сам — правит массив
25
+ * потребитель, как и у остальных полей v2.
26
+ */
27
+ delete: [index: number, src: string];
28
+ }
@@ -0,0 +1,15 @@
1
+ import { ImageListProps } from './ImageList.types';
2
+ import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
3
+ import { ImageSize } from './Image.types';
4
+ declare const _default: DefineComponent<ImageListProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
5
+ delete: (index: number, src: string) => any;
6
+ }, string, PublicProps, Readonly<ImageListProps> & Readonly<{
7
+ onDelete?: ((index: number, src: string) => any) | undefined;
8
+ }>, {
9
+ size: ImageSize;
10
+ testId: string;
11
+ deletable: boolean;
12
+ preview: boolean;
13
+ itemLabel: (index: number, src: string) => string;
14
+ }, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
15
+ export default _default;
@@ -0,0 +1,8 @@
1
+ import './ImageList.css';
2
+ import o from "./ImageList.vue2.js";
3
+ /* empty css */
4
+ import t from "../../../_virtual/_plugin-vue_export-helper.js";
5
+ const f = /* @__PURE__ */ t(o, [["__scopeId", "data-v-2691f19b"]]);
6
+ export {
7
+ f as default
8
+ };
@@ -0,0 +1,38 @@
1
+ import { defineComponent as f, openBlock as i, createElementBlock as r, mergeProps as c, unref as v, Fragment as b, renderList as p, createBlock as I } from "vue";
2
+ import { useTestId as g } from "../shared/useTestId.util.js";
3
+ import B from "./Image.vue.js";
4
+ const y = /* @__PURE__ */ f({
5
+ inheritAttrs: !1,
6
+ __name: "ImageList",
7
+ props: {
8
+ items: {},
9
+ size: { default: "medium" },
10
+ deletable: { type: Boolean, default: !1 },
11
+ preview: { type: Boolean, default: !1 },
12
+ itemLabel: { type: Function, default: void 0 },
13
+ testId: { default: void 0 }
14
+ },
15
+ emits: ["delete"],
16
+ setup(e, { emit: d }) {
17
+ const o = e, m = d, u = g(() => o.testId);
18
+ function n(l, s) {
19
+ return o.itemLabel?.(l, s) ?? `Изображение ${l + 1}`;
20
+ }
21
+ return (l, s) => (i(), r("div", c({ class: "image-list-v2" }, { ...l.$attrs, ...v(u)("root") }), [
22
+ (i(!0), r(b, null, p(e.items, (t, a) => (i(), I(B, {
23
+ key: t,
24
+ src: t,
25
+ alt: n(a, t),
26
+ size: e.size,
27
+ deletable: e.deletable,
28
+ "delete-label": `Удалить ${n(a, t)}`,
29
+ preview: e.preview,
30
+ "test-id": e.testId ? `${e.testId}-item` : void 0,
31
+ onDelete: (L) => m("delete", a, t)
32
+ }, null, 8, ["src", "alt", "size", "deletable", "delete-label", "preview", "test-id", "onDelete"]))), 128))
33
+ ], 16));
34
+ }
35
+ });
36
+ export {
37
+ y as default
38
+ };
@@ -0,0 +1,5 @@
1
+ import { default as Image } from './Image.vue';
2
+ import { default as ImageList } from './ImageList.vue';
3
+ export type { ImageEmits, ImageProps, ImageSize } from './Image.types';
4
+ export type { ImageListEmits, ImageListProps } from './ImageList.types';
5
+ export { Image, ImageList };
@@ -1 +1 @@
1
- .input-field[data-v-1ce017c1]{--field-height:2.5rem;--field-radius:.5rem;--field-padding-x:.5rem;--field-padding-y:.25rem;--field-font-size:.875rem;--field-line-height:1.25rem;--field-label-font-size:.875rem;--field-label-line-height:1rem;--field-icon-size:1rem;--field-chip-padding-x:.75rem;--field-chip-font-size:.875rem;--field-chip-icon-size:1rem;--field-border-color:var(--theme-neutral-border-default);--field-text-color:var(--theme-neutral-text-body);--field-placeholder-color:var(--theme-neutral-550);--field-label-color:var(--theme-neutral-text-title);--field-support-color:var(--theme-neutral-text-caption);--field-icon-color:var(--theme-neutral-icon-caption);flex-direction:column;justify-content:center;align-items:flex-start;width:100%;display:flex;position:relative}.input-field__label[data-v-1ce017c1]{width:100%;font-weight:400;font-size:var(--field-label-font-size);line-height:var(--field-label-line-height);color:var(--field-label-color);overflow-wrap:break-word;align-items:center;gap:.125rem;padding:.375rem .6875rem .375rem .5rem;display:flex}.input-field__required[data-v-1ce017c1]{color:var(--theme-error-500);flex-shrink:0}.input-field__control[data-v-1ce017c1]{width:100%;min-height:var(--field-height);padding:var(--field-padding-y) var(--field-padding-x);background-color:var(--theme-neutral-0);border:.0625rem solid var(--field-border-color);border-radius:var(--field-radius);transition:border-color var(--animation-duration-fast) ease;align-items:center;display:flex}.input-field__field[data-v-1ce017c1]{width:100%;min-width:0;font-family:inherit;font-weight:400;font-size:var(--field-font-size);line-height:var(--field-line-height);color:var(--field-text-color);background-color:#0000;border:none;outline:none;flex:auto}@media (max-width:1009.98px){.input-field__field[data-v-1ce017c1]{font-size:1rem}}.input-field__field[data-v-1ce017c1]::placeholder{color:var(--field-placeholder-color)}.input-field__field[data-v-1ce017c1]:disabled{cursor:not-allowed;-webkit-text-fill-color:var(--field-text-color);opacity:1}.input-field__field--multiline[data-v-1ce017c1]{resize:vertical;min-height:var(--field-line-height);padding:0;display:block;overflow:auto}.input-field__icon[data-v-1ce017c1]{width:1.375rem;height:1.125rem;color:var(--field-icon-color);flex-shrink:0;align-items:center;gap:.25rem;display:flex}.input-field__icon[data-v-1ce017c1] svg{width:var(--field-icon-size);height:var(--field-icon-size)}.input-field__icon--left[data-v-1ce017c1]{justify-content:flex-start}.input-field__icon--right[data-v-1ce017c1]{justify-content:flex-end;width:auto;min-width:1.375rem}.input-field__action[data-v-1ce017c1]{cursor:pointer;color:inherit;transition:color var(--animation-duration-fast) ease;background-color:#0000;border:none;justify-content:center;align-items:center;padding:0;display:flex}.input-field__action[data-v-1ce017c1]:hover:not(:disabled){color:var(--theme-primary-500)}.input-field__action[data-v-1ce017c1]:disabled{cursor:not-allowed}.input-field__action[data-v-1ce017c1]:focus-visible{outline:.125rem solid var(--theme-primary-500);outline-offset:.125rem;border-radius:.25rem}.input-field__footer[data-v-1ce017c1]{pointer-events:none;justify-content:center;align-items:center;gap:.625rem;padding:.25rem .6875rem .25rem .5rem;display:flex;position:absolute;top:100%;left:0;right:0}.input-field__support[data-v-1ce017c1]{min-width:0;color:var(--field-support-color);overflow-wrap:break-word;flex:auto;font-size:.625rem;font-weight:400;line-height:normal}.input-field__counter[data-v-1ce017c1]{text-align:right;white-space:nowrap;color:var(--theme-neutral-550);flex-shrink:0;margin-left:auto;font-size:.625rem;font-weight:400;line-height:normal}.input-field--size-small[data-v-1ce017c1]{--field-height:2.25rem;--field-label-font-size:.75rem;--field-chip-padding-x:.5rem;--field-chip-font-size:.75rem;--field-chip-icon-size:.875rem}.input-field--size-large[data-v-1ce017c1]{--field-height:2.75rem;--field-radius:.75rem;--field-padding-y:.5rem;--field-font-size:1rem;--field-line-height:1.5rem;--field-label-font-size:1rem;--field-label-line-height:1.25rem;--field-icon-size:1.125rem;--field-chip-padding-x:1rem}.input-field--with-control-start[data-v-1ce017c1]{--field-padding-x:.25rem;--field-padding-y:.25rem}.input-field--with-control-start .input-field__control[data-v-1ce017c1]{gap:.5rem;padding-right:.75rem}.input-field--type-limit[data-v-1ce017c1]{--field-padding-y:.5rem}.input-field--type-limit .input-field__control[data-v-1ce017c1]{align-items:stretch}.input-field--type-limit .input-field__icon[data-v-1ce017c1]{align-items:flex-end}.input-field:not(.input-field--error):not(.input-field--disabled) .input-field__control[data-v-1ce017c1]:hover{--field-border-color:var(--theme-primary-300)}.input-field:not(.input-field--error):not(.input-field--disabled) .input-field__control[data-v-1ce017c1]:focus-within{--field-border-color:var(--theme-primary-500)}.input-field--error[data-v-1ce017c1]{--field-border-color:var(--theme-error-500);--field-label-color:var(--theme-error-500);--field-support-color:var(--theme-error-500)}.input-field--disabled[data-v-1ce017c1]{--field-border-color:var(--theme-neutral-border-disabled);--field-text-color:var(--theme-neutral-400);--field-placeholder-color:var(--theme-neutral-400);--field-label-color:var(--theme-neutral-400);--field-support-color:var(--theme-neutral-400);--field-icon-color:var(--theme-neutral-400)}.input-field--disabled .input-field__control[data-v-1ce017c1]{cursor:not-allowed}
1
+ .input-field[data-v-b6defdd2]{--field-height:2.5rem;--field-radius:.5rem;--field-padding-x:.5rem;--field-padding-y:.25rem;--field-font-size:.875rem;--field-line-height:1.25rem;--field-label-font-size:.875rem;--field-label-line-height:1rem;--field-icon-size:1rem;--field-chip-padding-x:.75rem;--field-chip-font-size:.875rem;--field-chip-icon-size:1rem;--field-border-color:var(--theme-neutral-border-default);--field-text-color:var(--theme-neutral-text-body);--field-placeholder-color:var(--theme-neutral-550);--field-label-color:var(--theme-neutral-text-title);--field-support-color:var(--theme-neutral-text-caption);--field-icon-color:var(--theme-neutral-icon-caption);flex-direction:column;justify-content:center;align-items:flex-start;width:100%;display:flex;position:relative}.input-field__label[data-v-b6defdd2]{width:100%;font-weight:400;font-size:var(--field-label-font-size);line-height:var(--field-label-line-height);color:var(--field-label-color);overflow-wrap:break-word;align-items:center;gap:.125rem;padding:.375rem .6875rem .375rem .5rem;display:flex}.input-field__required[data-v-b6defdd2]{color:var(--theme-error-500);flex-shrink:0}.input-field__control[data-v-b6defdd2]{width:100%;min-height:var(--field-height);padding:var(--field-padding-y) var(--field-padding-x);background-color:var(--theme-neutral-0);border:.0625rem solid var(--field-border-color);border-radius:var(--field-radius);transition:border-color var(--animation-duration-fast) ease;align-items:center;display:flex}.input-field__field[data-v-b6defdd2]{width:100%;min-width:0;font-family:inherit;font-weight:400;font-size:var(--field-font-size);line-height:var(--field-line-height);color:var(--field-text-color);background-color:#0000;border:none;outline:none;flex:auto}@media (max-width:1009.98px){.input-field__field[data-v-b6defdd2]{font-size:1rem}}.input-field__field[data-v-b6defdd2]::placeholder{color:var(--field-placeholder-color)}.input-field__field[data-v-b6defdd2]:disabled{cursor:not-allowed;-webkit-text-fill-color:var(--field-text-color);opacity:1}.input-field__field--multiline[data-v-b6defdd2]{resize:vertical;min-height:var(--field-line-height);padding:0;display:block;overflow:auto}.input-field__icon[data-v-b6defdd2]{width:1.375rem;height:1.125rem;color:var(--field-icon-color);flex-shrink:0;align-items:center;gap:.25rem;display:flex}.input-field__icon[data-v-b6defdd2] svg{width:var(--field-icon-size);height:var(--field-icon-size)}.input-field__icon--left[data-v-b6defdd2]{justify-content:flex-start}.input-field__icon--right[data-v-b6defdd2]{justify-content:flex-end;width:auto;min-width:1.375rem}.input-field__action[data-v-b6defdd2]{cursor:pointer;color:inherit;transition:color var(--animation-duration-fast) ease;background-color:#0000;border:none;justify-content:center;align-items:center;padding:0;display:flex}.input-field__action[data-v-b6defdd2]:hover:not(:disabled){color:var(--theme-primary-500)}.input-field__action[data-v-b6defdd2]:disabled{cursor:not-allowed}.input-field__action[data-v-b6defdd2]:focus-visible{outline:.125rem solid var(--theme-primary-500);outline-offset:.125rem;border-radius:.25rem}.input-field__footer[data-v-b6defdd2]{pointer-events:none;justify-content:center;align-items:center;gap:.625rem;padding:.25rem .6875rem .25rem .5rem;display:flex;position:absolute;top:100%;left:0;right:0}.input-field__support[data-v-b6defdd2]{min-width:0;color:var(--field-support-color);overflow-wrap:break-word;flex:auto;font-size:.625rem;font-weight:400;line-height:normal}.input-field__counter[data-v-b6defdd2]{text-align:right;white-space:nowrap;color:var(--theme-neutral-550);flex-shrink:0;margin-left:auto;font-size:.625rem;font-weight:400;line-height:normal}.input-field--size-small[data-v-b6defdd2]{--field-height:2.25rem;--field-label-font-size:.75rem;--field-chip-padding-x:.5rem;--field-chip-font-size:.75rem;--field-chip-icon-size:.875rem}.input-field--size-large[data-v-b6defdd2]{--field-height:2.75rem;--field-radius:.75rem;--field-padding-y:.5rem;--field-font-size:1rem;--field-line-height:1.5rem;--field-label-font-size:1rem;--field-label-line-height:1.25rem;--field-icon-size:1.125rem;--field-chip-padding-x:1rem}.input-field--with-control-start[data-v-b6defdd2]{--field-padding-x:.25rem;--field-padding-y:.25rem}.input-field--with-control-start .input-field__control[data-v-b6defdd2]{gap:.5rem;padding-right:.75rem}.input-field--type-limit[data-v-b6defdd2]{--field-padding-y:.5rem}.input-field--type-limit .input-field__control[data-v-b6defdd2]{align-items:stretch}.input-field--type-limit .input-field__icon[data-v-b6defdd2]{align-items:flex-end}.input-field:not(.input-field--error):not(.input-field--disabled) .input-field__control[data-v-b6defdd2]:hover{--field-border-color:var(--theme-primary-300)}.input-field:not(.input-field--error):not(.input-field--disabled) .input-field__control[data-v-b6defdd2]:focus-within{--field-border-color:var(--theme-primary-500)}.input-field--error[data-v-b6defdd2]{--field-border-color:var(--theme-error-500);--field-label-color:var(--theme-error-500);--field-support-color:var(--theme-error-500)}.input-field--disabled[data-v-b6defdd2]{--field-border-color:var(--theme-neutral-border-disabled);--field-text-color:var(--theme-neutral-400);--field-placeholder-color:var(--theme-neutral-400);--field-label-color:var(--theme-neutral-400);--field-support-color:var(--theme-neutral-400);--field-icon-color:var(--theme-neutral-400)}.input-field--disabled .input-field__control[data-v-b6defdd2]{cursor:not-allowed}
@@ -2,7 +2,7 @@ import './Input.css';
2
2
  import o from "./Input.vue2.js";
3
3
  /* empty css */
4
4
  import t from "../../../_virtual/_plugin-vue_export-helper.js";
5
- const m = /* @__PURE__ */ t(o, [["__scopeId", "data-v-1ce017c1"]]);
5
+ const f = /* @__PURE__ */ t(o, [["__scopeId", "data-v-b6defdd2"]]);
6
6
  export {
7
- m as default
7
+ f as default
8
8
  };