@elcrm/form 0.1.2 → 0.1.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 (111) hide show
  1. package/README.md +162 -204
  2. package/dist/Form.d.ts +21 -3
  3. package/dist/assets/styles/Check.module.css +1 -1
  4. package/dist/assets/styles/Code.module.css +1 -1
  5. package/dist/assets/styles/Color.module.css +1 -1
  6. package/dist/assets/styles/Drag.module.css +1 -1
  7. package/dist/assets/styles/Field.module.css +1 -1
  8. package/dist/assets/styles/FieldGroup.module.css +1 -0
  9. package/dist/assets/styles/File.module.css +1 -1
  10. package/dist/assets/styles/Form.module.css +1 -1
  11. package/dist/assets/styles/Radio.module.css +1 -1
  12. package/dist/assets/styles/Rating.module.css +1 -1
  13. package/dist/assets/styles/Rich.module.css +1 -1
  14. package/dist/assets/styles/Select.module.css +1 -1
  15. package/dist/assets/styles/Tabs.module.css +1 -0
  16. package/dist/assets/styles/Tags.module.css +1 -1
  17. package/dist/assets/styles/Time.module.css +1 -1
  18. package/dist/core/Field.d.ts +38 -10
  19. package/dist/core/Field.js +2 -2
  20. package/dist/dark.css +34 -11
  21. package/dist/fields/Card.d.ts +26 -0
  22. package/dist/fields/Card.js +1 -0
  23. package/dist/fields/Check.d.ts +20 -2
  24. package/dist/fields/Check.js +1 -1
  25. package/dist/fields/Code.d.ts +26 -4
  26. package/dist/fields/Code.js +1 -1
  27. package/dist/fields/Color.d.ts +21 -13
  28. package/dist/fields/Color.js +1 -1
  29. package/dist/fields/ColorPanel.d.ts +20 -0
  30. package/dist/fields/ColorPanel.js +1 -0
  31. package/dist/fields/Date.d.ts +16 -2
  32. package/dist/fields/Date.js +1 -1
  33. package/dist/fields/DateCalendar.d.ts +26 -0
  34. package/dist/fields/DateCalendar.js +1 -0
  35. package/dist/fields/Display.d.ts +15 -5
  36. package/dist/fields/Display.js +2 -1
  37. package/dist/fields/DragDrop.d.ts +27 -4
  38. package/dist/fields/DragDrop.js +1 -1
  39. package/dist/fields/Email.d.ts +18 -3
  40. package/dist/fields/Email.js +1 -1
  41. package/dist/fields/FieldGroup.d.ts +127 -0
  42. package/dist/fields/FieldGroup.js +1 -0
  43. package/dist/fields/File.d.ts +14 -1
  44. package/dist/fields/File.js +1 -1
  45. package/dist/fields/Hidden.d.ts +7 -2
  46. package/dist/fields/Hidden.js +1 -1
  47. package/dist/fields/Input.d.ts +10 -5
  48. package/dist/fields/Input.js +1 -1
  49. package/dist/fields/Mask.d.ts +14 -1
  50. package/dist/fields/Mask.js +1 -1
  51. package/dist/fields/Modal.d.ts +20 -3
  52. package/dist/fields/Modal.js +1 -1
  53. package/dist/fields/Money.d.ts +12 -1
  54. package/dist/fields/Money.js +1 -1
  55. package/dist/fields/NativeTextField.d.ts +9 -5
  56. package/dist/fields/NativeTextField.js +1 -1
  57. package/dist/fields/Numeric.d.ts +10 -8
  58. package/dist/fields/Numeric.js +1 -1
  59. package/dist/fields/Options.d.ts +24 -5
  60. package/dist/fields/Options.js +1 -1
  61. package/dist/fields/Password.d.ts +11 -0
  62. package/dist/fields/Password.js +1 -1
  63. package/dist/fields/Percent.d.ts +10 -6
  64. package/dist/fields/Percent.js +1 -1
  65. package/dist/fields/Phone.d.ts +13 -1
  66. package/dist/fields/Phone.js +1 -1
  67. package/dist/fields/Radio.d.ts +17 -1
  68. package/dist/fields/Radio.js +1 -1
  69. package/dist/fields/Range.d.ts +19 -6
  70. package/dist/fields/Range.js +1 -1
  71. package/dist/fields/Rating.d.ts +13 -1
  72. package/dist/fields/Rating.js +1 -1
  73. package/dist/fields/RichText.d.ts +10 -2
  74. package/dist/fields/RichText.js +1 -1
  75. package/dist/fields/Select.d.ts +21 -0
  76. package/dist/fields/Select.js +1 -1
  77. package/dist/fields/Tabs.d.ts +45 -0
  78. package/dist/fields/Tabs.js +1 -0
  79. package/dist/fields/Tags.d.ts +13 -1
  80. package/dist/fields/Tags.js +1 -1
  81. package/dist/fields/Textarea.d.ts +10 -1
  82. package/dist/fields/Textarea.js +1 -1
  83. package/dist/fields/Time.d.ts +13 -4
  84. package/dist/fields/Time.js +1 -1
  85. package/dist/fields/TimePicker.d.ts +24 -0
  86. package/dist/fields/TimePicker.js +1 -0
  87. package/dist/fields/Url.d.ts +11 -1
  88. package/dist/fields/cardUtils.d.ts +37 -0
  89. package/dist/fields/cardUtils.js +1 -0
  90. package/dist/fields/colorUtils.d.ts +29 -0
  91. package/dist/fields/colorUtils.js +1 -0
  92. package/dist/fields/dateUtils.d.ts +32 -0
  93. package/dist/fields/dateUtils.js +1 -0
  94. package/dist/fields/emailUtils.d.ts +4 -0
  95. package/dist/fields/emailUtils.js +1 -0
  96. package/dist/fields/timeUtils.d.ts +23 -0
  97. package/dist/fields/timeUtils.js +1 -0
  98. package/dist/fields/type.d.ts +97 -26
  99. package/dist/hooks/use.d.ts +32 -13
  100. package/dist/index.d.ts +21 -9
  101. package/dist/index.js +2 -2
  102. package/dist/index.umd.js +3 -2
  103. package/dist/light.css +35 -12
  104. package/dist/package.js +1 -1
  105. package/dist/style.css +17 -13
  106. package/dist/styles/Code.module.js +1 -1
  107. package/dist/styles/Color.module.js +1 -1
  108. package/dist/styles/Field.module.js +1 -1
  109. package/dist/styles/FieldGroup.module.js +1 -0
  110. package/dist/styles/Tabs.module.js +1 -0
  111. package/package.json +1 -1
@@ -1,82 +1,153 @@
1
1
  import { ReactNode } from 'react';
2
2
  import { UseFormApi } from '../hooks/use';
3
- /** Связь с формой и колбэки значения */
3
+ /**
4
+ * Связь поля с `useForm` и колбэки значения.
5
+ *
6
+ * Типичная схема:
7
+ * 1. `form` + `name` — значение живёт в форме (`form.getValue(name)`).
8
+ * 2. `value` — начальное / внешнее значение, если форма ещё не знает ключ.
9
+ * 3. `onValue` — вызывается при каждом изменении `{ value, name }`.
10
+ * 4. `onBlur` — коммит (не нативный `FocusEvent`).
11
+ */
4
12
  export type TFieldFormBindings = {
13
+ /**
14
+ * Значение снаружи (controlled / начальное).
15
+ * Если передан `form` + `name`, источником правды становится форма.
16
+ */
5
17
  value?: unknown;
18
+ /** API `useForm()` — подписка только на это `name`, без ререндера всей формы. */
6
19
  form?: UseFormApi;
20
+ /**
21
+ * Колбэк изменения. Аргумент всегда `{ value, name }`, не DOM-событие.
22
+ * Во время набора часто вызывается без bump версии формы.
23
+ */
7
24
  onValue?: (data: TValue) => void | Promise<void>;
8
- /** Колбэк при потере фокуса (коммит значения), не нативный `FocusEvent` */
25
+ /**
26
+ * Потеря фокуса / коммит.
27
+ * @example onBlur={({ value, name }) => validate(name, value)}
28
+ */
9
29
  onBlur?: (data: TValue) => void | Promise<void>;
30
+ /**
31
+ * Ключ в `form`. Обязателен, если используете `useForm`.
32
+ * По нему поле подписывается и пишет `setValue` / `onValue`.
33
+ */
10
34
  name?: string;
11
35
  };
12
- /** Подпись, доступность, видимость */
36
+ /**
37
+ * Внешний вид и доступность. Рендер у всех `*Field` одинаковый каркас:
38
+ *
39
+ * ```
40
+ * [data-field] — корень (`.l`)
41
+ * label.t — подпись (`label`), htmlFor → контрол
42
+ * капсула .f — рамка, padding `--field-padding`, `data-disabled`
43
+ * before — слот слева (иконка, бейдж карты)
44
+ * контрол — input / contentEditable / combobox / …
45
+ * after — слот справа (глаз пароля, %, ошибка)
46
+ * [role=alert] — текст `error`
47
+ * ```
48
+ */
13
49
  export type TFieldPresentation = {
14
- /** Подпись поля (визуально в `.t`) */
50
+ /** Подпись над капсулой. Связана с контролом через `htmlFor` / `id`. */
15
51
  label?: string;
52
+ /**
53
+ * Подсказка внутри пустого контрола.
54
+ * У Check — текст справа от квадрата (не `label`).
55
+ */
16
56
  placeholder?: string;
17
- /** true — только просмотр, без ввода (аналог нативного disabled) */
57
+ /**
58
+ * Только просмотр: нет фокуса, нет ввода, капсула `data-disabled="true"`.
59
+ * Не путать с `hidden`.
60
+ */
18
61
  disabled?: boolean;
19
62
  /**
20
- * true если значение поля **пустое**, поле не рендерится;
21
- * при непустом значении поле показывается.
63
+ * Не рендерить поле, **только если значение пустое**.
64
+ * Непустое значение всё равно показывается (удобно для «скрытых, пока нет данных»).
22
65
  */
23
66
  hidden?: boolean;
67
+ /** Текст ошибки под капсулой (`role="alert"`). Капсула получает класс ошибки. */
24
68
  error?: string;
69
+ /**
70
+ * Слот **справа** внутри капсулы (иконка, кнопка, `%`).
71
+ * Не путать с кнопкой «Set» снаружи в dev-стенде.
72
+ */
25
73
  after?: ReactNode;
74
+ /** Слот **слева** внутри капсулы (иконка бренда карты, превью цвета). */
26
75
  before?: ReactNode;
76
+ /** Свободный маркер вида (редко используется полями). */
27
77
  view?: string;
78
+ /**
79
+ * id контрола. Если не задан — генерируется.
80
+ * Нужен, чтобы `label htmlFor` указывал на input / contentEditable.
81
+ */
28
82
  id?: string;
83
+ /** Доп. класс на корне `[data-field]`, не на капсуле. */
29
84
  className?: string;
30
85
  /**
31
- * Плотность поля: `md` формы/модалки (по умолчанию),
32
- * `sm` тулбары и плотные модалки.
86
+ * Высота капсулы: `s` | `m` | `l` (как кнопка/поиск).
87
+ * Меняет `--field-height` padding пересчитывается.
88
+ * `sm` / `md` — устаревшие алиасы (`elcrm migrate size-sml`).
89
+ * @default "m"
33
90
  */
34
- size?: "sm" | "md";
91
+ size?: "s" | "m" | "l" | "sm" | "md";
92
+ /** Зарезервировано (копирование); у Phone работает через `Form.Init` / notice. */
35
93
  isCopy?: boolean;
94
+ /** Макс. длина текста / цифр (нативный `maxLength` или логика CE). */
36
95
  maxLength?: number;
37
96
  /**
38
- * Проверка орфографии для **текстового** ввода (`Input`, `Textarea`).
39
- * Для полей только с цифрами в компонентах выставляется **`false`**.
97
+ * Орфография. У цифр/телефона/маски в компонентах обычно `false`.
40
98
  */
41
99
  spellCheck?: boolean;
42
100
  /**
43
- * Подсказка клавиатуры на мобильных (`inputMode`).
44
- * Для **чисел** `numeric`, для **денег** `decimal`, **телефон** `tel` (по умолчанию в полях).
101
+ * `inputMode` мобильной клавиатуры.
102
+ * Number `numeric`, Money `decimal`, Phone `tel`.
45
103
  */
46
104
  inputmode?: "text" | "email" | "none" | "tel" | "url" | "search" | "numeric" | "decimal";
47
105
  /**
48
- * Нативный `<input>` вместо **contentEditable** (`StringField`).
49
- * Нужен для **автозаполнения логина/почты** (менеджеры паролей работают с нативными полями).
50
- * У **`PasswordField`** свой проп **`native`** (см. **`TPasswordField`**).
106
+ * `StringField`: нативный `<input>` вместо contentEditable.
107
+ * Нужен для автозаполнения логина. У `PasswordField` свой смысл `native` — см. {@link TPasswordField}.
51
108
  */
52
109
  native?: boolean;
53
110
  /**
54
- * Атрибут **`autocomplete`** (например **`username`**, **`email`**, **`off`**).
55
- * Осмысленно при **`native`**; у `contentEditable` браузеры почти не применяют автозаполнение.
111
+ * HTML `autocomplete` (`username`, `email`, `off`). Имеет смысл при `native`.
56
112
  */
57
113
  autoComplete?: string;
58
114
  /**
59
- * Тип нативного поля при **`native`** (по умолчанию **`text`**).
60
- * Для почты удобно **`email`** + **`autoComplete="email"`**.
115
+ * `type` нативного input при `native` (`text` | `email` | …).
61
116
  */
62
117
  inputType?: "text" | "email" | "search" | "tel" | "url";
63
118
  };
64
- /** Базовые пропы текстовых и составных полей */
119
+ /**
120
+ * Базовые пропы почти всех `*Field`.
121
+ * Специфичные (`options`, `format`, `min`/`max`) — в типе конкретного поля (`TSelect`, `TDate`, …).
122
+ *
123
+ * @example
124
+ * <StringField name="login" form={form} label="Логин" />
125
+ */
65
126
  export type TInput = TFieldFormBindings & TFieldPresentation;
127
+ /**
128
+ * Полезная нагрузка `onValue` / `onBlur` / `form.setValue`.
129
+ * Это не `ChangeEvent`.
130
+ */
66
131
  export type TValue = {
132
+ /** Новое значение поля (тип зависит от компонента: string, number, boolean, File, …). */
67
133
  value: unknown;
134
+ /** Имя поля (`name`). */
68
135
  name: string;
69
136
  id?: string;
70
137
  };
71
138
  /**
72
- * Поле пароля: **`native`** из `TInput` убран — здесь свой **`native`** = «не рендерить поле».
139
+ * Пропы {@link PasswordField}.
140
+ * `native` здесь **не** «сделать `<input>`», а «не рисовать поле» (пароль снаружи).
73
141
  */
74
142
  export type TPasswordField = Omit<TInput, "native"> & {
75
- /** true — компонент не рендерится (пустая строка), пароль отдаётся нативному `<input>` снаружи */
143
+ /**
144
+ * `true` — компонент не рендерится (пустая строка).
145
+ * Для настоящего `<input type="password">` оставьте `native={false}` (по умолчанию).
146
+ */
76
147
  native?: boolean;
77
148
  /**
78
- * Свои иконки переключателя **[показать пароль, скрыть пароль]** (когда ввод скрыт / виден).
79
- * Если не задано используются встроенные SVG.
149
+ * Свои иконки переключателя видимости: `[показать, скрыть]`.
150
+ * Слот кнопка в `after` капсулы.
80
151
  */
81
152
  eyes?: [React.ReactNode?, React.ReactNode?];
82
153
  };
@@ -6,16 +6,31 @@ type FormChange = {
6
6
  value?: unknown;
7
7
  };
8
8
  type Listener = () => void;
9
- export type UseFormApi = {
10
- valuesRef: React.MutableRefObject<FormValues>;
9
+ /**
10
+ * API {@link useForm}. Поля принимают этот объект в проп `form`.
11
+ *
12
+ * - `onValue` — записать без ререндера (набор символов).
13
+ * - `setValue` — записать и уведомить подписчиков поля (blur / внешний сет).
14
+ * - `getValue` / `getValues` — читать; `getValues()` — копия, не мутировать.
15
+ */
16
+ export type UseFormApi<T extends FormValues = FormValues> = {
17
+ /** Живое хранилище. Снаружи не мутировать — только через onValue/setValue. */
18
+ valuesRef: React.MutableRefObject<T>;
19
+ /** Запись без notify (ввод). Поле само не перерисуется. */
11
20
  onValue: (payload: FormChange) => void;
21
+ /** Запись + bump версии + ререндер подписчиков этого `name`. */
12
22
  setValue: (payload: FormChange) => void;
13
- setValues: (nextValues: FormValues) => void;
14
- /** Неглубокая копия текущих значений (защита от случайной мутации снаружи) */
15
- getValues: () => FormValues;
16
- getValue: (name: string, fallback?: unknown) => unknown;
23
+ /** Несколько ключей сразу (notify только изменившихся). */
24
+ setValues: (nextValues: Partial<T> & FormValues) => void;
25
+ /** Неглубокая копия текущих значений. */
26
+ getValues: () => T;
27
+ /** Одно значение; если ключа нет — `fallback`. */
28
+ getValue: <K extends string>(name: K, fallback?: unknown) => K extends keyof T ? T[K] : unknown;
29
+ /** Версия поля (растёт на `setValue`). */
17
30
  getVersion: (name: string) => number;
18
- reset: (nextValues?: FormValues) => void;
31
+ /** Вернуть к initial или к `nextValues`. */
32
+ reset: (nextValues?: T) => void;
33
+ /** Подписка на одно имя (поля используют внутри). */
19
34
  subscribe: (name: string, listener: Listener) => () => void;
20
35
  };
21
36
  /**
@@ -24,17 +39,21 @@ export type UseFormApi = {
24
39
  * Чтение: form.getValue("name"), form.getValues()
25
40
  * Запись без ререндера: form.onValue({ name, value })
26
41
  * Запись с уведомлением подписчиков поля: form.setValue({ name, value })
42
+ *
43
+ * @example
44
+ * type Values = { login: string; role: number };
45
+ * const form = useForm<Values>({ login: "", role: 0 });
46
+ * form.getValues().login; // string
27
47
  */
28
- export declare function useForm(initialValues?: FormValues): UseFormApi;
29
- /**
30
- * Подписка на одно поле формы: актуальное значение + версия (для key у contentEditable и т.п.).
31
- * Поля используют внутри себя; снаружи обычно достаточно передать form + name.
32
- */
33
- /** Результат хука подписки на поле (значение + версия для key) */
48
+ export declare function useForm<T extends FormValues = FormValues>(initialValues?: T): UseFormApi<T>;
34
49
  export type UseFormFieldStateResult = {
35
50
  value: unknown;
36
51
  version: number;
37
52
  };
53
+ /**
54
+ * Подписка на одно поле формы: значение + версия (bump при `setValue`).
55
+ * Снаружи достаточно передать `form` + `name` в `*Field`.
56
+ */
38
57
  export declare function useFormFieldState(form: UseFormApi | undefined, name: string, fallback: unknown): UseFormFieldStateResult;
39
58
  /** Подписка только на значение (без поля-компонента), например внешняя логика превью */
40
59
  export declare function useFormField(form: UseFormApi, name: string, fallback?: unknown): unknown;
package/dist/index.d.ts CHANGED
@@ -1,6 +1,4 @@
1
1
  export { default as RangeField } from './fields/Range';
2
- /** @deprecated используйте `RangeField` */
3
- export { ProgressField } from './fields/Range';
4
2
  export { default as MoneyField } from './fields/Money';
5
3
  export { default as MaskField } from './fields/Mask';
6
4
  export { default as DateField } from './fields/Date';
@@ -17,36 +15,50 @@ export { default as CheckField } from './fields/Check';
17
15
  export { default as ColorField } from './fields/Color';
18
16
  export { DEFAULT_COLOR_PALETTE } from './fields/Color';
19
17
  export { default as EmailField } from './fields/Email';
18
+ export { default as CardField } from './fields/Card';
20
19
  export { default as UrlField } from './fields/Url';
21
20
  export { default as PercentField } from './fields/Percent';
22
21
  export { default as RadioField } from './fields/Radio';
23
22
  export { default as TagsField } from './fields/Tags';
24
23
  export { default as RatingField } from './fields/Rating';
25
24
  export { default as CodeField } from './fields/Code';
26
- export { OtpField } from './fields/Code';
25
+ export { default as TabsField } from './fields/Tabs';
27
26
  export { default as FileField } from './fields/File';
28
27
  export { default as DragDropField } from './fields/DragDrop';
29
- export { DragonDropField } from './fields/DragDrop';
30
28
  export { default as RichTextField } from './fields/RichText';
31
29
  export { default as HiddenField } from './fields/Hidden';
32
30
  export { default as DisplayField } from './fields/Display';
33
- export { ReadonlyField } from './fields/Display';
31
+ export { default as FieldGroup } from './fields/FieldGroup';
32
+ export type { FieldGroupFieldKind, FieldGroupItem, FieldGroupProps, } from './fields/FieldGroup';
34
33
  export { useForm, useFormField, useFormFieldState } from './hooks/use';
35
- export type TFieldSize = "sm" | "md";
34
+ export type TFieldSize = "s" | "m" | "l" | "sm" | "md";
36
35
  export type { TInput, TValue, TPasswordField, TFieldFormBindings, TFieldPresentation, } from './fields/type';
37
- export type { TRange, TProgress } from './fields/Range';
36
+ export type { TRange, TRangeVariant } from './fields/Range';
38
37
  export type { TTime } from './fields/Time';
39
38
  export type { TCheck } from './fields/Check';
40
39
  export type { TColor } from './fields/Color';
41
40
  export type { TEmail } from './fields/Email';
41
+ export type { TCard } from './fields/Card';
42
42
  export type { TUrl } from './fields/Url';
43
+ export type { TSelect } from './fields/Select';
44
+ export type { TOptions } from './fields/Options';
45
+ export type { TModal } from './fields/Modal';
46
+ export type { TDate } from './fields/Date';
47
+ export type { TMoney } from './fields/Money';
48
+ export type { TMask } from './fields/Mask';
49
+ export type { TNumeric } from './fields/Numeric';
50
+ export { luhnCheck, cardDigits, formatCardNumber, detectCardBrand, stepCardBrand, emptyCardBrandLock, validateCardNumber, } from './fields/cardUtils';
51
+ export type { CardBrand, CardBrandLock } from './fields/cardUtils';
52
+ export { isValidEmail, validateEmail } from './fields/emailUtils';
53
+ export { createFieldEmit } from './fields/emit';
43
54
  export type { TPercent } from './fields/Percent';
44
55
  export type { TRadio } from './fields/Radio';
45
56
  export type { TTags } from './fields/Tags';
46
57
  export type { TRating } from './fields/Rating';
47
58
  export type { TCode } from './fields/Code';
59
+ export type { TTabs } from './fields/Tabs';
48
60
  export type { TFile, TFileMeta } from './fields/File';
49
- export type { TDragDrop } from './fields/DragDrop';
61
+ export type { TDragDrop, TDragDropLayout } from './fields/DragDrop';
50
62
  export type { TRichText } from './fields/RichText';
51
63
  export type { THidden } from './fields/Hidden';
52
64
  export type { TDisplay } from './fields/Display';
@@ -59,4 +71,4 @@ export { useFormInit } from './FormInitContext';
59
71
  export type { FormInitContextValue } from './FormInitContext';
60
72
  /** Общий стек z-index оверлеев (globalThis.elcrm.overlayZ) */
61
73
  export { acquireOverlayZIndex, releaseOverlayZIndex, peekOverlayZIndex, } from './overlayZ';
62
- export type { TCheckSize, TCheckVariant } from './fields/Check';
74
+ export type { TCheckSize, TCheckVariant, TCheckAlign } from './fields/Check';
package/dist/index.js CHANGED
@@ -5,8 +5,8 @@
5
5
  var el = document.createElement("style");
6
6
  el.id = "elcrm-form-base-styles";
7
7
  el.setAttribute("data-elcrm", "form");
8
- el.textContent = "@layer elcrm-form{.ffl{min-width:var(--field-width);gap:var(--field-block-gap);flex-direction:column;margin:0;padding:0;display:flex;position:relative}.ffl[data-size=sm]{--field-height:32px;--control-height:32px;--field-side-padding:10px;--control-side-padding:10px;--control-inner-padding:0 10px;font-size:13px}.ffl>.fft,.ffl>.fff,.ffl>.ffm{margin:0}.ffl[data-field=group] .fff>div{cursor:pointer;border-bottom:var(--field-border);padding:var(--field-padding);margin:0}.ffl[data-field=group] .fff>div:last-child{border-bottom:0}.ffl [placeholder]:empty:before{content:attr(placeholder);color:var(--field-placeholder);opacity:1;pointer-events:none;font-style:normal;font-weight:400;display:block}.ffl [placeholder]:focus:before{display:none}.fff{box-sizing:border-box;align-items:center;gap:var(--field-icon-gap);border:var(--field-border);border-radius:var(--field-radius);background:var(--field-background);color:var(--field-color);padding:var(--control-inner-padding);transition:border-color .16s,box-shadow .16s,background-color .16s,opacity .16s;display:flex;overflow:hidden}.fff:hover{border-color:var(--field-border-hover)}.fff:focus-within{border-color:var(--field-border-focus);box-shadow:var(--field-focus-shadow);background:var(--field-background-focus)}.fff.ffe:focus-within{background:var(--field-error-background);color:var(--field-error-color)}.fff[data-disabled=true]{background:var(--field-background-disabled);border-color:var(--field-border-disabled);color:var(--field-color-disabled);cursor:not-allowed;opacity:.85}.fff[data-disabled=true]>*{cursor:not-allowed}.fff>div{min-height:var(--field-height);line-height:calc(var(--field-height) - 2px);font-size:var(--control-font-size);text-wrap:pretty;outline:0;flex:1;margin:0;padding:0}.fff>div::selection{background:var(--field-selection-bg);color:var(--field-selection-color)}.fff>:not(div){box-sizing:border-box;height:var(--field-height);min-height:var(--field-height);max-height:var(--field-height);color:var(--field-icon-color);flex:none;justify-content:center;align-self:center;align-items:center;display:inline-flex}.fff>:not(div) svg{width:var(--field-icon-size);height:var(--field-icon-size);flex-shrink:0;display:block}.fff input::placeholder,.fff textarea::placeholder{color:var(--field-placeholder);opacity:1;font-weight:400}.fff input::-webkit-input-placeholder{color:var(--field-placeholder);opacity:1;font-weight:400}.fff textarea::-webkit-input-placeholder{color:var(--field-placeholder);opacity:1;font-weight:400}.fff input::-moz-placeholder{color:var(--field-placeholder);opacity:1;font-weight:400}.fff textarea::-moz-placeholder{color:var(--field-placeholder);opacity:1;font-weight:400}.fff input:-webkit-autofill{caret-color:var(--field-color);-webkit-text-fill-color:var(--field-color)!important;color:var(--field-color)!important;-webkit-box-shadow:none!important;box-shadow:none!important;font-size:inherit!important;line-height:inherit!important;background-color:#0000!important;background-image:none!important;transition:background-color 99999s ease-out,background-image 99999s ease-out!important}.fff input:-webkit-autofill:hover{caret-color:var(--field-color);-webkit-text-fill-color:var(--field-color)!important;color:var(--field-color)!important;-webkit-box-shadow:none!important;box-shadow:none!important;font-size:inherit!important;line-height:inherit!important;background-color:#0000!important;background-image:none!important;transition:background-color 99999s ease-out,background-image 99999s ease-out!important}.fff input:-webkit-autofill:focus{caret-color:var(--field-color);-webkit-text-fill-color:var(--field-color)!important;color:var(--field-color)!important;-webkit-box-shadow:none!important;box-shadow:none!important;font-size:inherit!important;line-height:inherit!important;background-color:#0000!important;background-image:none!important;transition:background-color 99999s ease-out,background-image 99999s ease-out!important}.fff input:-webkit-autofill:active{caret-color:var(--field-color);-webkit-text-fill-color:var(--field-color)!important;color:var(--field-color)!important;-webkit-box-shadow:none!important;box-shadow:none!important;font-size:inherit!important;line-height:inherit!important;background-color:#0000!important;background-image:none!important;transition:background-color 99999s ease-out,background-image 99999s ease-out!important}.fff input:-webkit-autofill{-webkit-background-clip:text!important;background-clip:text!important}.fff [contenteditable=true],.fff [contenteditable=plaintext-only],.fff>div{scrollbar-width:none;-ms-overflow-style:none}:is(.fff [contenteditable=true],.fff [contenteditable=plaintext-only],.fff>div)::-webkit-scrollbar{background:0 0;width:0;height:0;display:none}.ffn>div{min-height:var(--field-note-height);line-height:var(--field-note-line-height);padding-top:var(--field-note-padding);padding-bottom:var(--field-note-padding);scrollbar-width:none;-ms-overflow-style:none;overflow:hidden auto}.ffn>div::-webkit-scrollbar{background:0 0;width:0;height:0;display:none}.ffw>div{box-sizing:border-box;height:var(--field-height);min-height:var(--field-height);max-height:var(--field-height);text-wrap:nowrap;scrollbar-width:none;-ms-overflow-style:none;overflow:auto hidden}.ffw>div::-webkit-scrollbar{background:0 0;width:0;height:0;display:none}.ffw>div input{box-sizing:border-box;height:100%;min-height:0;max-height:100%;line-height:normal}.fft{color:var(--field-label-color);font-size:var(--field-label-size);padding-bottom:var(--field-label-gap);cursor:default;display:block}.ffx{flex:1;align-items:center;min-width:0;display:flex}.ffy{box-sizing:border-box;width:100%;font:inherit;color:inherit;background:0 0;border:none;outline:none;margin:0;padding:0}.ffy:-webkit-autofill{caret-color:var(--field-color);-webkit-text-fill-color:var(--field-color)!important;color:var(--field-color)!important;-webkit-box-shadow:none!important;box-shadow:none!important;background-color:#0000!important;background-image:none!important;-webkit-background-clip:text!important;background-clip:text!important;transition:background-color 99999s ease-out,background-image 99999s ease-out!important}.ffy:-webkit-autofill:hover{caret-color:var(--field-color);-webkit-text-fill-color:var(--field-color)!important;color:var(--field-color)!important;-webkit-box-shadow:none!important;box-shadow:none!important;background-color:#0000!important;background-image:none!important;-webkit-background-clip:text!important;background-clip:text!important;transition:background-color 99999s ease-out,background-image 99999s ease-out!important}.ffy:-webkit-autofill:focus{caret-color:var(--field-color);-webkit-text-fill-color:var(--field-color)!important;color:var(--field-color)!important;-webkit-box-shadow:none!important;box-shadow:none!important;background-color:#0000!important;background-image:none!important;-webkit-background-clip:text!important;background-clip:text!important;transition:background-color 99999s ease-out,background-image 99999s ease-out!important}.ffy:-webkit-autofill:active{caret-color:var(--field-color);-webkit-text-fill-color:var(--field-color)!important;color:var(--field-color)!important;-webkit-box-shadow:none!important;box-shadow:none!important;background-color:#0000!important;background-image:none!important;-webkit-background-clip:text!important;background-clip:text!important;transition:background-color 99999s ease-out,background-image 99999s ease-out!important}.ffa{box-sizing:border-box;height:var(--field-height);min-height:var(--field-height);max-height:var(--field-height);color:var(--field-icon-color);font-size:inherit;-webkit-user-select:none;user-select:none;cursor:pointer;background:0 0;border:0;flex:none;justify-content:center;align-self:center;align-items:center;margin:0;padding:0;line-height:1;display:inline-flex}.ffa:disabled{cursor:not-allowed;opacity:.6}.ffa svg{width:var(--field-icon-size);height:var(--field-icon-size);flex-shrink:0;display:block}.ffg{flex-direction:column}.ffr>div{box-sizing:border-box;min-width:0;min-height:var(--field-height);flex:1;align-items:center;line-height:normal;display:flex}.ffr .ffk{box-sizing:border-box;width:100%;height:var(--field-range-bar-height);background:var(--field-range-track);cursor:pointer;touch-action:none;border-radius:999px;outline:none;flex-shrink:0;position:relative;overflow:hidden}.ffr .ffk:focus-visible{box-shadow:var(--field-focus-shadow)}.ffr .ffk[data-disabled=true]{cursor:not-allowed;opacity:.55;pointer-events:none}.ffr .ffu{background:var(--field-range-fill);pointer-events:none;border-radius:999px 0 0 999px;width:0;min-width:0;height:100%}.ffr .ffv{border-radius:999px}.ffe{border-color:var(--field-error-border);background:var(--field-error-background);color:var(--field-error-color)}.ffm{color:var(--field-error-color);font-size:var(--field-error-size);margin-top:var(--field-error-gap);font-style:normal}.ffd>div{color:inherit;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ffz{color:var(--field-placeholder)}}\n\n@layer elcrm-form{.fmo{z-index:var(--elcrm-z-popover);background:0 0;position:fixed;inset:0}.fmc{box-shadow:var(--date-popup-shadow);padding:var(--date-popup-padding);background:var(--select-background);z-index:var(--elcrm-z-popover-front);border-radius:var(--date-popup-radius);scrollbar-width:none;-ms-overflow-style:none;max-height:min(92vh,480px);margin:0;display:block;position:fixed;overflow:hidden auto}.fmc::-webkit-scrollbar{background:0 0;width:0;height:0;display:none}.fmc{color:var(--select-color);box-sizing:border-box;min-width:var(--date-popup-min-width)}.fmc [grid-calendar]{grid-template-columns:repeat(7,1fr);grid-auto-rows:var(--date-popup-row-height);gap:2px;display:grid}.fmc [grid-calendar]>p{color:var(--field-placeholder);box-sizing:border-box;justify-content:center;align-items:center;margin:0;padding:0;font-size:.75rem;font-weight:500;line-height:1;display:flex}.fmc [grid-month]{grid-template-columns:1fr 1fr 1fr 1fr;width:250px;display:grid}.fmc b{border-radius:var(--date-popup-cell-radius);cursor:pointer;text-align:center;padding:8px 5px;font-weight:400;display:block}.fmc b:hover{background:var(--select-li-hover-bg)}.fmc p{color:var(--field-placeholder);text-align:center;cursor:default;pointer-events:none;padding:0}.fmc i{text-align:center;cursor:pointer;border-radius:var(--date-popup-cell-radius);flex:0 30px;padding:9px}.fmc i:hover{background:var(--select-li-hover-bg)}.fmc i:before{cursor:pointer;display:block}.fmc s{align-items:center;gap:4px;padding-bottom:6px;font-style:normal;text-decoration:none;display:flex}.fmc s h2{text-align:center;min-width:0;color:var(--select-color);cursor:default;flex-wrap:nowrap;flex:auto;justify-content:center;align-items:center;gap:8px;margin:0;padding:0;font-size:16px;font-weight:400;line-height:1.25;display:flex}.fmc .fmh,.fmc .fmy{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;border-radius:6px;padding:2px 8px}.fmc .fmh:hover,.fmc .fmy:hover{background:var(--select-li-hover-bg)}.fmc .fmd{cursor:not-allowed;opacity:.45;pointer-events:none}.fmc .fmd[data-active=true],.fmc .fmd[data-current=true]{opacity:.45}.fmc [grid-calendar] b[data-current=true],.fmc [grid-month] b[data-current=true]{background:color-mix(in srgb, var(--field-background-active) 52%, transparent);font-weight:600}.fmc [grid-calendar] b[data-active=true]:not([data-current=true]),.fmc [grid-month] b[data-active=true]:not([data-current=true]){outline:2px solid var(--field-background-active);outline-offset:-2px}.fmc [grid-calendar] b[data-active=true][data-current=true],.fmc [grid-month] b[data-active=true][data-current=true]{box-shadow:inset 0 0 0 2px var(--field-background-active)}.fmc [grid-calendar] p[data-current=true]{background:color-mix(in srgb, var(--field-background-active) 52%, transparent);color:inherit;border-radius:var(--date-popup-cell-radius);font-weight:600}.fmc [grid-calendar] p[data-active=true]:not([data-current=true]){outline:2px solid var(--field-background-active);outline-offset:-2px;opacity:.85}.fmc [grid-calendar] p[data-active=true][data-current=true]{box-shadow:inset 0 0 0 2px var(--field-background-active)}.fmc span{text-align:center;padding:2px}.fmc span p{color:var(--field-placeholder);padding:8px 5px}.fmc [grid-calendar]>span{box-sizing:border-box;justify-content:stretch;align-items:stretch;min-height:0;padding:0;display:flex}.fmc [grid-calendar]>span>b,.fmc [grid-calendar]>span>p{box-sizing:border-box;border-radius:var(--date-popup-cell-radius);flex:auto;justify-content:center;align-items:center;width:100%;min-height:0;margin:0;padding:0;display:flex}.fmc .fms{cursor:ns-resize}.fmc .fmp{cursor:pointer}}\n\n@layer elcrm-form{:root{--select-height:52px;--select-icon:calc(var(--select-height) / 1.5);--select-icon-padding:calc((var(--select-height) - var(--select-icon)) / 2);--select-font-size:17px;--select-radius:20px;--select-max-height:300px}.fso{z-index:var(--elcrm-z-popover);background:var(--select-overlay);position:fixed;inset:0}.fsl{background:var(--select-background);z-index:var(--elcrm-z-popover-front);border-radius:var(--select-radius);max-height:var(--select-max-height);scrollbar-width:none;-ms-overflow-style:none;margin:0;padding:0;display:block;position:fixed;overflow:hidden auto}.fsl::-webkit-scrollbar{background:0 0;width:0;height:0;display:none}.fsl ul{width:100%;max-height:var(--select-max-height);scrollbar-width:none;-ms-overflow-style:none;margin:0;padding:0;list-style:none;display:block;overflow:hidden auto}.fsl ul::-webkit-scrollbar{background:0 0;width:0;height:0;display:none}.fsl li{border-bottom:var(--select-separator);cursor:pointer;color:var(--select-color);height:var(--select-height);line-height:var(--select-height);font-size:var(--select-font-size);white-space:nowrap;text-overflow:ellipsis;opacity:1;margin:0;padding:0 14px;display:block;overflow:hidden;text-align:left!important;border-left:0!important}.fsl li[aria-selected=true]{background:var(--select-li-selected-bg)}.fsl li:hover{background:var(--select-li-hover-bg)}.fsl li[data-focus=true]{background:var(--select-li-focus-bg)}.fsl li:last-child{border-bottom:0}.fsi{width:var(--select-icon);height:var(--select-icon);color:var(--field-color);right:var(--select-icon-padding);top:var(--select-icon-padding);position:absolute}.fsp{color:var(--field-placeholder);font-weight:400}.fsf{cursor:pointer}.fsf[aria-disabled=true]{cursor:not-allowed}}\n\n@layer elcrm-form{:root{--color-picker-width:260px;--color-picker-radius:16px;--color-picker-pad:10px;--color-picker-swatch:20px;--color-picker-input-radius:5px;--color-picker-handle:14px}.fco{z-index:var(--elcrm-z-popover);background:var(--select-overlay);position:fixed;inset:0}.fcp{z-index:var(--elcrm-z-popover-front);box-sizing:border-box;width:var(--color-picker-width);padding:var(--color-picker-pad);background:var(--select-background);color:var(--select-color);border-radius:var(--color-picker-radius);flex-direction:column;gap:8px;display:flex;position:fixed;box-shadow:0 8px 28px #00000059}.fcv{aspect-ratio:1/.55;cursor:crosshair;touch-action:none;border-radius:8px;width:100%;max-height:140px;position:relative;overflow:hidden}.fcw{background:linear-gradient(90deg,#fff,#0000);position:absolute;inset:0}.fcb{background:linear-gradient(#0000,#000);position:absolute;inset:0}.fch{width:var(--color-picker-handle);height:var(--color-picker-handle);margin:calc(var(--color-picker-handle) / -2) 0 0 calc(var(--color-picker-handle) / -2);pointer-events:none;box-sizing:border-box;border:2px solid #fff;border-radius:50%;position:absolute;box-shadow:0 0 0 1px #00000059}.fcr{align-items:center;gap:8px;display:flex}.fce{border-radius:var(--color-picker-input-radius);background:var(--field-background);width:26px;height:26px;color:var(--field-icon-color);cursor:pointer;border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.fce:hover{color:var(--field-color)}.fcs{flex-direction:column;flex:1;gap:8px;min-width:0;display:flex}.fcl{cursor:pointer;touch-action:none;border-radius:999px;height:10px;position:relative}.fcu{background:linear-gradient(90deg,red 0%,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%)}.fca{background-image:linear-gradient(to right, transparent, var(--alpha-color)), linear-gradient(45deg, #777 25%, transparent 25%), linear-gradient(-45deg, #777 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #777 75%), linear-gradient(-45deg, transparent 75%, #777 75%);background-color:#bbb;background-position:0 0,0 0,0 4px,4px -4px,-4px 0;background-size:100% 100%,8px 8px,8px 8px,8px 8px,8px 8px}.fcd{width:var(--color-picker-handle);height:var(--color-picker-handle);margin:calc(var(--color-picker-handle) / -2) 0 0 calc(var(--color-picker-handle) / -2);pointer-events:none;box-sizing:border-box;background:0 0;border:2px solid #fff;border-radius:50%;position:absolute;top:50%;box-shadow:0 0 0 1px #00000059}.fci{align-items:center;gap:6px;display:flex}.fcf{color:var(--field-placeholder);flex:none;padding:0 2px;font-size:12px}.fcn{box-sizing:border-box;border-radius:var(--color-picker-input-radius);background:var(--field-background);min-width:0;height:28px;color:var(--field-color);font:inherit;border:none;outline:none;flex:1;padding:0 8px;font-size:13px}.fcn:focus{box-shadow:0 0 0 2px var(--field-focus-ring)}.fcx{text-align:center;flex:0 0 56px}.fcy{grid-template-columns:repeat(8,1fr);place-items:center;gap:4px;padding:0;display:grid}.fcz{width:var(--color-picker-swatch);height:var(--color-picker-swatch);cursor:pointer;background:var(--swatch);border:none;border-radius:50%;padding:0;transition:transform .12s;box-shadow:inset 0 0 0 1px #0000001f}.fcz[aria-checked=true]{z-index:1;box-shadow:inset 0 0 0 1px #00000026, 0 0 0 2px var(--select-background), 0 0 0 3px #ffffff59;transform:scale(1.35)}.fcz:disabled{cursor:not-allowed;opacity:.5}.fct{cursor:pointer;align-items:center;gap:var(--field-icon-gap);min-width:0;height:var(--field-height);flex:1;display:flex}.fct[aria-disabled=true]{cursor:not-allowed}.fcc{background-color:var(--preview-color);background-image:linear-gradient(var(--preview-color), var(--preview-color)), linear-gradient(45deg, #c6c6c8 25%, transparent 25%), linear-gradient(-45deg, #c6c6c8 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #c6c6c8 75%), linear-gradient(-45deg, transparent 75%, #c6c6c8 75%);background-position:0 0,0 0,0 3px,3px -3px,-3px 0;background-size:100% 100%,6px 6px,6px 6px,6px 6px,6px 6px;border-radius:50%;flex:none;width:22px;height:22px;box-shadow:inset 0 0 0 1px #00000026}.fcg{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:var(--control-font-size);flex:1;overflow:hidden}.fcm{color:var(--field-placeholder);font-weight:400}}\n\n@layer elcrm-form{.fkr>div{min-height:var(--field-height);align-items:flex-start;width:100%;padding:0;line-height:normal;display:flex}.fkr[data-variant=plain]{border-radius:0;overflow:visible;box-shadow:none!important;background:0 0!important;border:none!important;min-height:0!important;padding:0!important}.fkr[data-variant=plain]:hover,.fkr[data-variant=plain]:focus-within{box-shadow:none!important;background:0 0!important;border:none!important}.fkr[data-size=sm]>div{align-items:center;min-height:0}.fkp{width:100%;min-width:0}.fkc{width:100%;min-height:var(--field-height);color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;outline:none;align-items:flex-start;gap:12px;margin:0;padding:10px 0;display:flex}.fkc:focus-visible{box-shadow:var(--field-focus-shadow);border-radius:calc(var(--field-radius) - 2px)}.fkc[data-focus-ring=false]:focus-visible{box-shadow:none}.fkc[aria-disabled=true]{cursor:not-allowed}.fkc[data-size=sm]{border-radius:8px;align-items:center;gap:10px;min-height:0;padding:7px 8px}.fkc[data-size=sm] .fkb{border-radius:5px;width:18px;height:18px}.fkc[data-size=sm] .fkm{width:9px;height:5px}.fkc[data-size=sm] .fkt{padding-top:0;font-size:13px;line-height:1.2}.fkc[data-size=sm][data-variant=plain]:hover:not([aria-disabled=true]){background:var(--field-background-focus)}.fkb{width:var(--field-check-size);height:var(--field-check-size);border:var(--field-check-box-border);background:0 0;border-radius:8px;flex:none;justify-content:center;align-items:center;transition:background-color .16s,border-color .16s,opacity .16s;display:inline-flex}.fkm{border-top:none;border-bottom:2px solid #fcfff4;border-left:2px solid #fcfff4;border-right:none;width:11px;height:6px;transform:translateY(-1px)rotate(-45deg)}.fkt{min-width:0;color:inherit;font-size:var(--control-font-size);flex:auto;padding-top:2px;line-height:1.25}.fkc[aria-checked=true] .fkb{background:var(--field-background-active)}}\n\n@layer elcrm-form{.frd>div{width:100%;min-height:var(--field-height);flex-direction:column;align-items:stretch;gap:4px;padding:6px 0;line-height:normal;display:flex}.fri>div{flex-flow:wrap;align-items:center;gap:8px 16px}.frt{color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;outline:none;align-items:center;gap:10px;margin:0;padding:4px 0;display:inline-flex}.frt:focus-visible{box-shadow:var(--field-focus-shadow);border-radius:6px}.frt[aria-disabled=true]{cursor:not-allowed;opacity:.7}.fro{width:var(--field-radio-size);height:var(--field-radio-size);border:var(--field-check-box-border);border-radius:50%;flex:none;justify-content:center;align-items:center;display:inline-flex}.frf{background:var(--field-background-active);border-radius:50%;width:10px;height:10px}.frx{font-size:var(--control-font-size);line-height:1.25}}\n\n@layer elcrm-form{.ftr>div{text-wrap:nowrap;align-items:center;min-width:0;display:flex;overflow:visible}.ftr .fti{justify-content:flex-start;align-items:center;gap:4px;width:100%;min-width:0;display:flex}.ftr.ftc .fti{justify-content:center}.ftr .fts{opacity:.65;-webkit-user-select:none;user-select:none;flex:none;padding:0 2px;font-weight:500;transform:translateY(-1px)}.ftr .ftb{color:var(--field-icon-color);cursor:pointer;background:0 0;border:0;outline:none;flex:none;justify-content:center;align-items:center;margin:0;padding:0;line-height:0;display:inline-flex}.ftr .ftb:hover:not(:disabled){color:var(--field-color)}.ftr .ftb:focus-visible{box-shadow:var(--field-focus-shadow);border-radius:6px}.ftr .ftb:disabled{cursor:not-allowed;opacity:.5}.ftr .ftp{box-sizing:border-box;width:2.25ch;min-width:2.25ch;color:inherit;font:inherit;font-variant-numeric:tabular-nums;line-height:inherit;text-align:center;min-height:var(--field-height);cursor:text;scrollbar-width:none;-ms-overflow-style:none;background:0 0;border:0;border-radius:6px;outline:none;flex:none;margin:0;padding:0;overflow:hidden}.ftr .ftp::-webkit-scrollbar{background:0 0;width:0;height:0;display:none}.ftr .ftp[contenteditable=false]{cursor:not-allowed;opacity:.7}.ftr .ftp:empty:before{content:attr(placeholder);color:var(--field-placeholder);opacity:1;font-weight:400}.ftr .ftp:focus:empty:before{content:none}.ftr .ftp:focus-visible{background:0 0}.ftr.ftc .ftp{text-align:center}}\n\n@layer elcrm-form{.fir>div,.fir .fin{width:100%;min-height:var(--field-height);align-items:center;gap:10px;line-height:normal;display:flex;overflow:visible}.fin{flex:1;min-width:0;position:relative}.fip{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.fib{background:var(--field-background-focus);color:inherit;font:inherit;cursor:pointer;white-space:nowrap;border:0;border-radius:8px;flex:none;padding:6px 10px;font-size:13px}.fib:disabled{cursor:not-allowed;opacity:.6}.fil{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex;overflow:hidden}.fie{color:var(--field-placeholder);font-size:13px}.fit{align-items:baseline;gap:8px;min-width:0;display:flex}.fim{text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.fiz{color:var(--field-placeholder);font-size:var(--field-error-size);flex:none}.fic{color:inherit;cursor:pointer;opacity:.65;background:0 0;border:0;flex:none;padding:0 2px;font-size:18px;line-height:1}.fic:hover{opacity:1}}\n\n@layer elcrm-form{.fgr>div,.fgr .fgi{width:100%;min-height:var(--field-height);flex-wrap:wrap;align-items:center;gap:4px;padding:0;line-height:normal;display:flex;overflow:visible}.fgi{flex:1;min-width:0}.fgc{background:var(--field-background-focus);border-radius:999px;align-items:center;gap:2px;max-width:100%;padding:0 6px;line-height:1.35;display:inline-flex}.fgl{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fgm{color:inherit;cursor:pointer;opacity:.65;background:0 0;border:0;padding:0 2px;font-size:16px;line-height:1}.fgm:hover{opacity:1}.fgn{min-width:80px;color:inherit;font:inherit;background:0 0;border:0;outline:none;flex:80px;margin:0;padding:0}}\n\n@layer elcrm-form{.fnr>div{width:100%;min-height:var(--field-height);outline:none;align-items:center;gap:2px;line-height:normal;display:flex}.fns{color:var(--field-placeholder);cursor:pointer;font-size:var(--field-rating-size);background:0 0;border:0;outline:none;padding:0 2px;line-height:1}.fns:disabled{cursor:not-allowed;opacity:.6}.fns:focus-visible{box-shadow:var(--field-focus-shadow);border-radius:4px}.fno{color:var(--field-range-fill)}}\n\n@layer elcrm-form{.fdr>div,.fdr .fdi{width:100%;min-height:var(--field-height);align-items:center;gap:8px;line-height:normal;display:flex;overflow:visible}.fdi{flex:1;min-width:0}.fdc{box-sizing:border-box;width:var(--field-code-cell-size);height:calc(var(--field-height) - 12px);border:var(--field-border);border-radius:calc(var(--field-radius) - 2px);background:var(--field-background-focus);min-height:32px;color:inherit;font:inherit;font-variant-numeric:tabular-nums;text-align:center;outline:none;padding:0}.fdc:focus{border-color:var(--field-border-focus);box-shadow:var(--field-focus-shadow)}.fdc:disabled{opacity:.6;cursor:not-allowed}}\n\n@layer elcrm-form{.fhr{align-items:stretch}.fhr>div{min-height:var(--field-note-height);line-height:var(--field-note-line-height);flex-direction:column;align-items:flex-start;padding:0;display:flex;overflow:visible}.fhw{flex-direction:column;align-items:flex-start;width:100%;min-width:0;display:flex}.fht{box-sizing:border-box;border-bottom:1px solid #00000014;flex-wrap:nowrap;justify-content:flex-start;align-items:center;gap:2px;width:100%;max-width:100%;margin:0;padding:4px 0 6px;display:inline-flex}.fhb{box-sizing:border-box;width:28px;min-width:28px;height:28px;color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;border-radius:6px;flex:none;justify-content:center;align-items:center;margin:0;padding:0;font-size:13px;font-weight:600;line-height:1;display:inline-flex}.fhb:hover:not(:disabled){background:var(--field-background-focus)}.fhb:disabled{opacity:.5;cursor:not-allowed}.fhe{box-sizing:border-box;width:100%;min-height:calc(var(--field-note-height) - 36px);padding:var(--field-note-padding) 0;overflow-wrap:anywhere;line-height:var(--field-note-line-height);scrollbar-width:none;-ms-overflow-style:none;outline:none;overflow:hidden auto}.fhe::-webkit-scrollbar{background:0 0;width:0;height:0;display:none}.fhe:empty:before{content:attr(placeholder);color:var(--field-placeholder);pointer-events:none}.fhe ul,.fhe ol{margin:.25em 0;padding-left:1.25em}}\n\n@layer elcrm-form{.fxr{align-items:stretch;overflow:visible;box-shadow:none!important;background:0 0!important;border:0!important;padding:0!important}.fxr>div{min-height:auto;padding:0;line-height:normal;display:block;overflow:visible}.fxr[data-dragging=true]{background:0 0!important}.fxi{flex-direction:column;gap:16px;width:100%;min-width:0;display:flex;position:relative}.fxz{box-sizing:border-box;width:100%;min-height:var(--field-drag-min-height);border:var(--field-drag-border);border-radius:calc(var(--field-radius) - 2px);color:inherit;font:inherit;text-align:center;cursor:pointer;background:0 0;outline:none;flex-direction:column;justify-content:center;align-items:center;gap:6px;margin:0;padding:18px 14px;transition:border-color .16s,background-color .16s,border-style .16s;display:flex}.fxz:hover:not(:disabled){border-color:var(--field-drag-border-hover);background:var(--field-background-focus)}.fxz[data-dragging=true]{border-color:var(--field-range-fill);background:color-mix(in srgb, var(--field-range-fill) 10%, transparent);border-style:solid}.fxz:focus-visible{box-shadow:var(--field-focus-shadow)}.fxz:disabled{cursor:not-allowed;opacity:.65}.fxh{font-size:var(--control-font-size);color:inherit;line-height:1.35}.fxa{font-size:var(--field-error-size);color:var(--field-placeholder);letter-spacing:.01em}.fxl{flex-direction:column;gap:6px;margin:4px 0 0;padding:0;list-style:none;display:flex}.fxt{background:var(--field-background-focus);border-radius:10px;align-items:center;gap:10px;min-width:0;padding:8px 10px;display:flex}.fxm{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.fxn{text-overflow:ellipsis;white-space:nowrap;font-size:var(--control-font-size);color:inherit;line-height:1.3;overflow:hidden}.fxs{font-size:var(--field-error-size);color:var(--field-placeholder);line-height:1.2}.fxd{width:28px;height:28px;color:var(--field-placeholder);cursor:pointer;background:0 0;border:0;border-radius:8px;flex:none;justify-content:center;align-items:center;padding:0;font-size:18px;line-height:1;display:inline-flex}.fxd:hover{color:var(--field-error-color);background:color-mix(in srgb, var(--field-error-color) 10%, transparent)}.fxc{color:var(--field-placeholder);font:inherit;font-size:var(--field-error-size);cursor:pointer;background:0 0;border:0;align-self:flex-start;margin-top:2px;padding:2px 0}.fxc:hover{color:var(--field-error-color)}}\n";
8
+ el.textContent = "@layer elcrm-form{.ffl{min-width:var(--field-width);gap:var(--field-block-gap);flex-direction:column;margin:0;padding:0;display:flex;position:relative}.ffl[data-size=s],.ffl[data-size=sm]{--field-height:var(--control-height-s);--control-height:var(--control-height-s);font-size:13px}.ffl[data-size=l]{--field-height:var(--control-height-l);--control-height:var(--control-height-l)}.ffl>.fft,.ffl>.fff,.ffl>.ffm{margin:0}:is(.ffl[data-field=group],.ffl[data-field=options]) .fff>div{cursor:pointer;border-bottom:var(--field-border);margin:0;padding:0}:is(.ffl[data-field=group],.ffl[data-field=options]) .fff>div:last-child{border-bottom:0}.ffl [placeholder]:empty:before{content:attr(placeholder);color:var(--field-placeholder);opacity:1;pointer-events:none;font-style:normal;font-weight:400;display:block}.ffl [placeholder]:focus:before{display:none}.fff{box-sizing:border-box;align-items:stretch;gap:var(--field-icon-gap);border:var(--field-border);border-radius:var(--field-radius);background:var(--field-background);color:var(--field-color);padding:var(--field-padding);min-height:var(--field-height);transition:border-color .16s,box-shadow .16s,background-color .16s,opacity .16s;display:flex;overflow:hidden}.fff:hover{border-color:var(--field-border-hover)}.fff:focus-within{border-color:var(--field-border-focus);box-shadow:var(--field-focus-shadow);background:var(--field-background-focus)}.fff.ffe:focus-within{background:var(--field-error-background);color:var(--field-error-color)}.fff[data-disabled=true]{background:var(--field-background-disabled);border-color:var(--field-border-disabled);color:var(--field-color-disabled);cursor:not-allowed;opacity:.85;-webkit-user-select:none;user-select:none}.fff[data-disabled=true]>*{cursor:not-allowed;pointer-events:none}.fff[data-disabled=true]:focus-within{border-color:var(--field-border-disabled);box-shadow:none;background:var(--field-background-disabled)}.fff>div{min-width:0;min-height:0;line-height:1.25;font-size:var(--control-font-size);text-wrap:pretty;outline:0;flex:1;margin:0;padding:0}.fff>div::selection{background:var(--field-selection-bg);color:var(--field-selection-color)}.fff>:not(div){box-sizing:border-box;height:auto;min-height:0;max-height:none;color:var(--field-icon-color);flex:none;justify-content:center;align-self:center;align-items:center;display:inline-flex}.fff>:not(div) svg{width:var(--field-icon-size);height:var(--field-icon-size);flex-shrink:0;display:block}.fff input::placeholder,.fff textarea::placeholder{color:var(--field-placeholder);opacity:1;font-weight:400}.fff input::-webkit-input-placeholder{color:var(--field-placeholder);opacity:1;font-weight:400}.fff textarea::-webkit-input-placeholder{color:var(--field-placeholder);opacity:1;font-weight:400}.fff input::-moz-placeholder{color:var(--field-placeholder);opacity:1;font-weight:400}.fff textarea::-moz-placeholder{color:var(--field-placeholder);opacity:1;font-weight:400}.fff input:-webkit-autofill{caret-color:var(--field-color);-webkit-text-fill-color:var(--field-color)!important;color:var(--field-color)!important;-webkit-box-shadow:none!important;box-shadow:none!important;font-size:inherit!important;line-height:inherit!important;background-color:#0000!important;background-image:none!important;transition:background-color 99999s ease-out,background-image 99999s ease-out!important}.fff input:-webkit-autofill:hover{caret-color:var(--field-color);-webkit-text-fill-color:var(--field-color)!important;color:var(--field-color)!important;-webkit-box-shadow:none!important;box-shadow:none!important;font-size:inherit!important;line-height:inherit!important;background-color:#0000!important;background-image:none!important;transition:background-color 99999s ease-out,background-image 99999s ease-out!important}.fff input:-webkit-autofill:focus{caret-color:var(--field-color);-webkit-text-fill-color:var(--field-color)!important;color:var(--field-color)!important;-webkit-box-shadow:none!important;box-shadow:none!important;font-size:inherit!important;line-height:inherit!important;background-color:#0000!important;background-image:none!important;transition:background-color 99999s ease-out,background-image 99999s ease-out!important}.fff input:-webkit-autofill:active{caret-color:var(--field-color);-webkit-text-fill-color:var(--field-color)!important;color:var(--field-color)!important;-webkit-box-shadow:none!important;box-shadow:none!important;font-size:inherit!important;line-height:inherit!important;background-color:#0000!important;background-image:none!important;transition:background-color 99999s ease-out,background-image 99999s ease-out!important}.fff input:-webkit-autofill{-webkit-background-clip:text!important;background-clip:text!important}.fff [contenteditable=true],.fff [contenteditable=plaintext-only],.fff>div{scrollbar-width:none;-ms-overflow-style:none}:is(.fff [contenteditable=true],.fff [contenteditable=plaintext-only],.fff>div)::-webkit-scrollbar{background:0 0;width:0;height:0;display:none}.ffn{min-height:var(--field-note-height);align-items:stretch}.ffn>div{min-height:0;line-height:var(--field-note-line-height);scrollbar-width:none;-ms-overflow-style:none;padding:0;overflow:hidden auto}.ffn>div::-webkit-scrollbar{background:0 0;width:0;height:0;display:none}.ffw>div{box-sizing:border-box;height:auto;min-height:0;max-height:none;line-height:calc(var(--field-height) - 2 * var(--field-padding-block));text-wrap:nowrap;scrollbar-width:none;-ms-overflow-style:none;align-self:stretch;overflow:auto hidden}.ffw>div::-webkit-scrollbar{background:0 0;width:0;height:0;display:none}.ffw>div input{box-sizing:border-box;height:100%;min-height:0;max-height:100%;line-height:normal}.fft{color:var(--field-label-color);font-size:var(--field-label-size);padding-bottom:var(--field-label-gap);cursor:default;display:block}.ffx{flex:1;align-items:center;min-width:0;display:flex}.ffy{box-sizing:border-box;width:100%;font:inherit;color:inherit;background:0 0;border:none;outline:none;margin:0;padding:0}.ffy:-webkit-autofill{caret-color:var(--field-color);-webkit-text-fill-color:var(--field-color)!important;color:var(--field-color)!important;-webkit-box-shadow:none!important;box-shadow:none!important;background-color:#0000!important;background-image:none!important;-webkit-background-clip:text!important;background-clip:text!important;transition:background-color 99999s ease-out,background-image 99999s ease-out!important}.ffy:-webkit-autofill:hover{caret-color:var(--field-color);-webkit-text-fill-color:var(--field-color)!important;color:var(--field-color)!important;-webkit-box-shadow:none!important;box-shadow:none!important;background-color:#0000!important;background-image:none!important;-webkit-background-clip:text!important;background-clip:text!important;transition:background-color 99999s ease-out,background-image 99999s ease-out!important}.ffy:-webkit-autofill:focus{caret-color:var(--field-color);-webkit-text-fill-color:var(--field-color)!important;color:var(--field-color)!important;-webkit-box-shadow:none!important;box-shadow:none!important;background-color:#0000!important;background-image:none!important;-webkit-background-clip:text!important;background-clip:text!important;transition:background-color 99999s ease-out,background-image 99999s ease-out!important}.ffy:-webkit-autofill:active{caret-color:var(--field-color);-webkit-text-fill-color:var(--field-color)!important;color:var(--field-color)!important;-webkit-box-shadow:none!important;box-shadow:none!important;background-color:#0000!important;background-image:none!important;-webkit-background-clip:text!important;background-clip:text!important;transition:background-color 99999s ease-out,background-image 99999s ease-out!important}.ffa{box-sizing:border-box;height:auto;min-height:0;max-height:none;color:var(--field-icon-color);font-size:inherit;-webkit-user-select:none;user-select:none;cursor:pointer;background:0 0;border:0;flex:none;justify-content:center;align-self:center;align-items:center;margin:0;padding:0;line-height:1;display:inline-flex}.ffa:disabled{cursor:not-allowed;opacity:.6}.ffa svg{width:var(--field-icon-size);height:var(--field-icon-size);flex-shrink:0;display:block}.ffg{gap:var(--field-padding-block);flex-direction:column;align-items:stretch}.ffr>div{box-sizing:border-box;flex:1;align-items:center;min-width:0;min-height:0;line-height:normal;display:flex}.ffr .ffk{box-sizing:border-box;width:100%;height:var(--field-range-bar-height);background:var(--field-range-track);cursor:pointer;touch-action:none;border-radius:999px;outline:none;flex-shrink:0;position:relative;overflow:hidden}.ffr .ffk:focus-visible{box-shadow:var(--field-focus-shadow)}.ffr .ffk[data-disabled=true]{cursor:not-allowed;opacity:.55;pointer-events:none}.ffr .ffu{background:var(--field-range-fill);pointer-events:none;border-radius:999px 0 0 999px;width:0;min-width:0;height:100%}.ffr .ffv{border-radius:999px}.ffr[data-variant=line]{border-radius:0;overflow:visible;box-shadow:none!important;background:0 0!important;border:none!important;padding:0!important}.ffr[data-variant=line]:hover,.ffr[data-variant=line]:focus-within{box-shadow:none!important;background:0 0!important;border:none!important}.ffr[data-variant=line]>div{min-height:calc(var(--field-range-thumb-size) + 6px);overflow:visible}.ffr[data-variant=line] .ffk{height:var(--field-range-line-height);background:var(--field-range-track);overflow:visible}.ffr[data-variant=line] .ffu{display:none}.ffr[data-variant=line] .ffh{width:var(--field-range-thumb-size);height:var(--field-range-thumb-size);background:var(--field-range-thumb);pointer-events:none;border-radius:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.ffe{border-color:var(--field-error-border);background:var(--field-error-background);color:var(--field-error-color)}.ffm{color:var(--field-error-color);font-size:var(--field-error-size);margin-top:var(--field-error-gap);font-style:normal}.ffd{cursor:default}.ffd>div{color:inherit;text-overflow:ellipsis;white-space:nowrap;-webkit-user-select:text;user-select:text;overflow:hidden}.ffd[data-multiline=true]>div{white-space:pre-wrap;text-overflow:unset;overflow-wrap:anywhere;overflow-y:auto}.ffz{color:var(--field-placeholder)}}\n\n@layer elcrm-form{.fmo{z-index:var(--elcrm-z-popover);background:0 0;position:fixed;inset:0}.fmc{box-shadow:var(--popup-shadow);padding:var(--date-popup-padding);background:var(--select-background);z-index:var(--elcrm-z-popover-front);border-radius:var(--date-popup-radius);scrollbar-width:none;-ms-overflow-style:none;max-height:min(92vh,480px);margin:0;display:block;position:fixed;overflow:hidden auto}.fmc::-webkit-scrollbar{background:0 0;width:0;height:0;display:none}.fmc{color:var(--select-color);box-sizing:border-box;min-width:var(--date-popup-min-width)}.fmc [grid-calendar]{grid-template-columns:repeat(7,1fr);grid-auto-rows:var(--date-popup-row-height);gap:2px;display:grid}.fmc [grid-calendar]>p{color:var(--field-placeholder);box-sizing:border-box;justify-content:center;align-items:center;margin:0;padding:0;font-size:.75rem;font-weight:500;line-height:1;display:flex}.fmc [grid-month]{grid-template-columns:1fr 1fr 1fr 1fr;width:250px;display:grid}.fmc b{border-radius:var(--date-popup-cell-radius);cursor:pointer;text-align:center;padding:8px 5px;font-weight:400;display:block}.fmc b:hover{background:var(--select-li-hover-bg)}.fmc p{color:var(--field-placeholder);text-align:center;cursor:default;pointer-events:none;padding:0}.fmc i{text-align:center;cursor:pointer;border-radius:var(--date-popup-cell-radius);flex:0 30px;padding:9px}.fmc i:hover{background:var(--select-li-hover-bg)}.fmc i:before{cursor:pointer;display:block}.fmc s{align-items:center;gap:4px;padding-bottom:6px;font-style:normal;text-decoration:none;display:flex}.fmc s h2{text-align:center;min-width:0;color:var(--select-color);cursor:default;flex-wrap:nowrap;flex:auto;justify-content:center;align-items:center;gap:8px;margin:0;padding:0;font-size:16px;font-weight:400;line-height:1.25;display:flex}.fmc .fmh,.fmc .fmy{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;border-radius:6px;padding:2px 8px}.fmc .fmh:hover,.fmc .fmy:hover{background:var(--select-li-hover-bg)}.fmc .fmd{cursor:not-allowed;opacity:.45;pointer-events:none}.fmc .fmd[data-active=true],.fmc .fmd[data-current=true]{opacity:.45}.fmc [grid-calendar] b[data-current=true],.fmc [grid-month] b[data-current=true]{background:color-mix(in srgb, var(--field-background-active) 52%, transparent);font-weight:600}.fmc [grid-calendar] b[data-active=true]:not([data-current=true]),.fmc [grid-month] b[data-active=true]:not([data-current=true]){outline:2px solid var(--field-background-active);outline-offset:-2px}.fmc [grid-calendar] b[data-active=true][data-current=true],.fmc [grid-month] b[data-active=true][data-current=true]{box-shadow:inset 0 0 0 2px var(--field-background-active)}.fmc [grid-calendar] p[data-current=true]{background:color-mix(in srgb, var(--field-background-active) 52%, transparent);color:inherit;border-radius:var(--date-popup-cell-radius);font-weight:600}.fmc [grid-calendar] p[data-active=true]:not([data-current=true]){outline:2px solid var(--field-background-active);outline-offset:-2px;opacity:.85}.fmc [grid-calendar] p[data-active=true][data-current=true]{box-shadow:inset 0 0 0 2px var(--field-background-active)}.fmc span{text-align:center;padding:2px}.fmc span p{color:var(--field-placeholder);padding:8px 5px}.fmc [grid-calendar]>span{box-sizing:border-box;justify-content:stretch;align-items:stretch;min-height:0;padding:0;display:flex}.fmc [grid-calendar]>span>b,.fmc [grid-calendar]>span>p{box-sizing:border-box;border-radius:var(--date-popup-cell-radius);flex:auto;justify-content:center;align-items:center;width:100%;min-height:0;margin:0;padding:0;display:flex}.fmc .fms{cursor:ns-resize}.fmc .fmp{cursor:pointer}}\n\n@layer elcrm-form{.fso{z-index:var(--elcrm-z-popover);background:var(--select-overlay);position:fixed;inset:0}.fsl{--select-icon:calc(var(--select-height,52px) / 1.5);--select-icon-padding:calc((var(--select-height,52px) - var(--select-icon)) / 2);background:var(--select-background);box-shadow:var(--popup-shadow);z-index:var(--elcrm-z-popover-front);border-radius:var(--select-radius,20px);max-height:var(--select-max-height,300px);scrollbar-width:none;-ms-overflow-style:none;margin:0;padding:0;display:block;position:fixed;overflow:hidden auto}.fsl::-webkit-scrollbar{background:0 0;width:0;height:0;display:none}.fsl ul{width:100%;max-height:var(--select-max-height,300px);scrollbar-width:none;-ms-overflow-style:none;margin:0;padding:0;list-style:none;display:block;overflow:hidden auto}.fsl ul::-webkit-scrollbar{background:0 0;width:0;height:0;display:none}.fsl li{border-bottom:var(--select-separator);cursor:pointer;padding:0 var(--field-padding-inline);color:var(--select-color);height:var(--select-height,52px);line-height:var(--select-height,52px);font-size:var(--select-font-size,var(--control-font-size));white-space:nowrap;text-overflow:ellipsis;opacity:1;margin:0;display:block;overflow:hidden;text-align:left!important;border-left:0!important}.fsl li[aria-selected=true]{background:var(--select-li-selected-bg)}.fsl li:hover{background:var(--select-li-hover-bg)}.fsl li[data-focus=true]{background:var(--select-li-focus-bg)}.fsl li:last-child{border-bottom:0}.fsi{width:var(--select-icon);height:var(--select-icon);color:var(--field-color);right:var(--select-icon-padding);top:var(--select-icon-padding);position:absolute}.fsp{color:var(--field-placeholder);font-weight:400}.fsf{cursor:pointer}.fsf[aria-disabled=true]{cursor:not-allowed}}\n\n@layer elcrm-form{.fco{z-index:var(--elcrm-z-popover);background:var(--select-overlay);position:fixed;inset:0}.fcp{z-index:var(--elcrm-z-popover-front);box-sizing:border-box;width:var(--color-picker-width);padding:var(--color-picker-pad);background:var(--select-background);color:var(--select-color);border-radius:var(--color-picker-radius);box-shadow:var(--popup-shadow);flex-direction:column;gap:8px;display:flex;position:fixed}.fcv{aspect-ratio:1/.55;cursor:crosshair;touch-action:none;border-radius:8px;width:100%;max-height:140px;position:relative;overflow:hidden}.fcw{background:linear-gradient(90deg,#fff,#0000);position:absolute;inset:0}.fcb{background:linear-gradient(#0000,#000);position:absolute;inset:0}.fch{width:var(--color-picker-handle);height:var(--color-picker-handle);margin:calc(var(--color-picker-handle) / -2) 0 0 calc(var(--color-picker-handle) / -2);pointer-events:none;box-sizing:border-box;border:2px solid #fff;border-radius:50%;position:absolute;box-shadow:0 0 0 1px #00000059}.fcr{align-items:center;gap:8px;display:flex}.fce{border-radius:var(--color-picker-input-radius);background:var(--field-background);width:26px;height:26px;color:var(--field-icon-color);cursor:pointer;border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.fce:hover{color:var(--field-color)}.fcs{flex-direction:column;flex:1;gap:8px;min-width:0;display:flex}.fcl{cursor:pointer;touch-action:none;border-radius:999px;height:10px;position:relative}.fcu{background:linear-gradient(90deg,red 0%,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%)}.fca{background-image:linear-gradient(to right, transparent, var(--alpha-color)), linear-gradient(45deg, #777 25%, transparent 25%), linear-gradient(-45deg, #777 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #777 75%), linear-gradient(-45deg, transparent 75%, #777 75%);background-color:#bbb;background-position:0 0,0 0,0 4px,4px -4px,-4px 0;background-size:100% 100%,8px 8px,8px 8px,8px 8px,8px 8px}.fcd{width:var(--color-picker-handle);height:var(--color-picker-handle);margin:calc(var(--color-picker-handle) / -2) 0 0 calc(var(--color-picker-handle) / -2);pointer-events:none;box-sizing:border-box;background:0 0;border:2px solid #fff;border-radius:50%;position:absolute;top:50%;box-shadow:0 0 0 1px #00000059}.fci{align-items:center;gap:6px;display:flex}.fcf{color:var(--field-placeholder);flex:none;padding:0 2px;font-size:12px}.fcn{box-sizing:border-box;border-radius:var(--color-picker-input-radius);background:var(--field-background);min-width:0;height:28px;color:var(--field-color);font:inherit;border:none;outline:none;flex:1;padding:0 8px;font-size:13px}.fcn:focus{box-shadow:0 0 0 2px var(--field-focus-ring)}.fcx{text-align:center;flex:0 0 56px}.fcy{grid-template-columns:repeat(8,1fr);place-items:center;gap:4px;padding:0;display:grid}.fcz{width:var(--color-picker-swatch);height:var(--color-picker-swatch);cursor:pointer;background:var(--swatch);border:none;border-radius:50%;padding:0;transition:transform .12s;box-shadow:inset 0 0 0 1px #0000001f}.fcz[aria-checked=true]{z-index:1;box-shadow:inset 0 0 0 1px #00000026, 0 0 0 2px var(--select-background), 0 0 0 3px #ffffff59;transform:scale(1.35)}.fcz:disabled{cursor:not-allowed;opacity:.5}.fct{cursor:pointer;align-items:center;gap:var(--field-icon-gap);flex:1;min-width:0;height:auto;min-height:0;display:flex}.fct[aria-disabled=true]{cursor:not-allowed}.fcq{overflow:hidden}.fcq>div{min-width:0}.fcc{background-color:var(--preview-color);background-image:linear-gradient(var(--preview-color), var(--preview-color)), linear-gradient(45deg, #c6c6c8 25%, transparent 25%), linear-gradient(-45deg, #c6c6c8 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #c6c6c8 75%), linear-gradient(-45deg, transparent 75%, #c6c6c8 75%);background-position:0 0,0 0,0 3px,3px -3px,-3px 0;background-size:100% 100%,6px 6px,6px 6px,6px 6px,6px 6px;border-radius:50%;flex:none;width:22px;height:22px;box-shadow:inset 0 0 0 1px #00000026}.fcg{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:var(--control-font-size);font-variant-numeric:tabular-nums;flex:1;overflow:hidden}.fct:has(+.fcj){flex:none;margin-left:-1px;padding-left:3px}.fct:has(+.fcj) .fcg{flex:none;width:9ch;min-width:9ch;max-width:9ch}.fcm{color:var(--field-placeholder);font-weight:400}.fcj{scrollbar-width:none;-ms-overflow-style:none;flex-wrap:nowrap;flex:1;align-items:center;gap:4px;min-width:0;max-width:100%;margin-left:0;padding:0 2px;display:flex;overflow:auto hidden}.fcj::-webkit-scrollbar{width:0;height:0;display:none}.fck{cursor:pointer;background:var(--swatch);transform-origin:50%;border:none;border-radius:50%;flex:none;width:18px;min-width:18px;height:18px;padding:0;transition:box-shadow .12s;box-shadow:inset 0 0 0 1px #0000001f}.fck[data-exit=true]{pointer-events:none;animation:.22s ease-in forwards fcq0}.fck:disabled{cursor:not-allowed;opacity:.5}@keyframes fcq0{0%{opacity:1;width:18px;min-width:18px;transform:scale(1)}55%{opacity:.7;transform:scale(.55)}to{opacity:0;width:0;min-width:0;box-shadow:none;margin:0;transform:scale(0)}}.fcc[data-enter=true]{animation:.28s cubic-bezier(.22,1,.36,1) fcq1}@keyframes fcq1{0%{opacity:0;transform:scale(.2)}70%{opacity:1;transform:scale(1.06)}to{opacity:1;transform:scale(1)}}}\n\n@layer elcrm-form{.fkr>div{align-items:center;width:100%;min-height:0;padding:0;line-height:normal;display:flex}.fkr[data-variant=plain]{border-radius:0;overflow:visible;box-shadow:none!important;background:0 0!important;border:none!important;min-height:0!important;padding:0!important}.fkr[data-variant=plain]:hover,.fkr[data-variant=plain]:focus-within{box-shadow:none!important;background:0 0!important;border:none!important}.fkr[data-variant=plain]>div{align-items:flex-start}.fkr[data-size=sm]>div,.fkr[data-size=s]>div{align-items:center;min-height:0}.fkp{width:100%;min-width:0}.fkc{width:100%;min-height:0;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;outline:none;align-items:center;gap:12px;margin:0;padding:0;display:flex}.fkc[data-align=top]{align-items:flex-start}.fkc[data-align=bottom]{align-items:flex-end}.fkc[data-align=center]{align-items:center}.fkc[data-align=top] .fkb{margin-top:calc((1.25em - var(--field-check-size)) / 2)}.fkc[data-align=bottom] .fkb{margin-bottom:calc((1.25em - var(--field-check-size)) / 2)}.fkc:focus-visible{box-shadow:var(--field-focus-shadow);border-radius:calc(var(--field-radius) - 2px)}.fkc[data-focus-ring=false]:focus-visible{box-shadow:none}.fkc[aria-disabled=true]{cursor:not-allowed}.fkc[data-size=sm],.fkc[data-size=s]{border-radius:8px;align-items:center;gap:10px;min-height:0;padding:0}:is(.fkc[data-size=sm],.fkc[data-size=s]) .fkb{border-radius:5px;width:18px;height:18px}:is(.fkc[data-size=sm],.fkc[data-size=s]) .fkm{width:9px;height:5px}:is(.fkc[data-size=sm],.fkc[data-size=s]) .fkt{padding-top:0;font-size:13px;line-height:1.2}.fkc[data-size=sm][data-variant=plain]:hover:not([aria-disabled=true]),.fkc[data-size=s][data-variant=plain]:hover:not([aria-disabled=true]){background:var(--field-background-focus)}.fkb{width:var(--field-check-size);height:var(--field-check-size);border:var(--field-check-box-border);background:0 0;border-radius:8px;flex:none;justify-content:center;align-items:center;transition:background-color .16s,border-color .16s,opacity .16s;display:inline-flex}.fkm{border-top:none;border-bottom:2px solid #fcfff4;border-left:2px solid #fcfff4;border-right:none;width:11px;height:6px;transform:translateY(-1px)rotate(-45deg)}.fkt{min-width:0;color:inherit;font-size:var(--control-font-size);flex:auto;padding-top:0;line-height:1.25}.fkc[aria-checked=true] .fkb{background:var(--field-background-active)}}\n\n@layer elcrm-form{.frd>div{flex-direction:column;align-items:stretch;gap:4px;width:100%;min-height:0;padding:0;line-height:normal;display:flex}.fri>div{flex-flow:wrap;align-items:center;gap:8px 16px}.frt{color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;outline:none;align-items:center;gap:10px;margin:0;padding:0;display:inline-flex}.frt[data-align=top]{align-items:flex-start}.frt[data-align=bottom]{align-items:flex-end}.frt[data-align=center]{align-items:center}.frt[data-align=top] .fro{margin-top:calc((1.25em - var(--field-radio-size)) / 2)}.frt[data-align=bottom] .fro{margin-bottom:calc((1.25em - var(--field-radio-size)) / 2)}.frt:focus-visible{box-shadow:var(--field-focus-shadow);border-radius:6px}.frt[aria-disabled=true]{cursor:not-allowed;opacity:.7}.fro{width:var(--field-radio-size);height:var(--field-radio-size);border:var(--field-check-box-border);border-radius:50%;flex:none;justify-content:center;align-items:center;display:inline-flex}.frf{background:var(--field-background-active);border-radius:50%;width:10px;height:10px}.frx{font-size:var(--control-font-size);line-height:1.25}}\n\n@layer elcrm-form{.ftr>div{text-wrap:nowrap;align-items:center;min-width:0;display:flex;overflow:visible}.ftr .fti{justify-content:flex-start;align-items:center;gap:4px;width:100%;min-width:0;display:flex}.ftr.ftc .fti{justify-content:center}.ftr .fts{opacity:.65;-webkit-user-select:none;user-select:none;flex:none;padding:0;font-weight:500;transform:translateY(-1px)}.ftr .ftb{color:var(--field-icon-color);cursor:pointer;background:0 0;border:0;outline:none;flex:none;justify-content:center;align-items:center;margin:0;padding:0;line-height:0;display:inline-flex}.ftr .ftb:hover:not(:disabled){color:var(--field-color)}.ftr .ftb:focus-visible{box-shadow:var(--field-focus-shadow);border-radius:6px}.ftr .ftb:disabled{cursor:not-allowed;opacity:.5}.ftr .ftp{box-sizing:border-box;width:2.25ch;min-width:2.25ch;color:inherit;font:inherit;font-variant-numeric:tabular-nums;line-height:inherit;text-align:center;cursor:text;scrollbar-width:none;-ms-overflow-style:none;background:0 0;border:0;border-radius:6px;outline:none;flex:none;min-height:0;margin:0;padding:0;overflow:hidden}.ftr .ftp::-webkit-scrollbar{background:0 0;width:0;height:0;display:none}.ftr .ftp[contenteditable=false]{cursor:not-allowed;opacity:.7}.ftr .ftp:empty:before{content:attr(placeholder);color:var(--field-placeholder);opacity:1;font-weight:400}.ftr .ftp:focus:empty:before{content:none}.ftr .ftp:focus-visible{background:0 0}.ftr.ftc .ftp{text-align:center}}\n\n@layer elcrm-form{.fir>div,.fir .fin{align-items:center;gap:10px;width:100%;min-height:0;line-height:normal;display:flex;overflow:visible}.fin{flex:1;min-width:0;position:relative}.fip{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.fib{padding:var(--field-padding);background:var(--field-background-focus);color:inherit;font:inherit;cursor:pointer;white-space:nowrap;border:0;border-radius:8px;flex:none;font-size:13px}.fib:disabled{cursor:not-allowed;opacity:.6}.fil{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex;overflow:hidden}.fie{color:var(--field-placeholder);font-size:13px}.fit{align-items:baseline;gap:8px;min-width:0;display:flex}.fim{text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.fiz{color:var(--field-placeholder);font-size:var(--field-error-size);flex:none}.fic{color:inherit;cursor:pointer;opacity:.65;background:0 0;border:0;flex:none;padding:0;font-size:18px;line-height:1}.fic:hover{opacity:1}}\n\n@layer elcrm-form{.fgr>div,.fgr .fgi{flex-wrap:wrap;align-items:center;gap:6px;width:100%;min-height:0;padding:0;line-height:normal;display:flex;overflow:visible}.fgi{flex:1;min-width:0}.fgc{background:var(--field-background-focus);border-radius:999px;align-items:center;gap:2px;max-width:100%;padding:0 6px;line-height:1.35;display:inline-flex}.fgl{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fgm{color:inherit;cursor:pointer;opacity:.65;background:0 0;border:0;padding:0 2px;font-size:16px;line-height:1}.fgm:hover{opacity:1}.fgn{min-width:80px;color:inherit;font:inherit;background:0 0;border:0;outline:none;flex:80px;margin:0;padding:0}}\n\n@layer elcrm-form{.fnr>div{outline:none;align-items:center;gap:2px;width:100%;min-height:0;line-height:normal;display:flex}.fns{color:var(--field-placeholder);cursor:pointer;font-size:var(--field-rating-size);background:0 0;border:0;outline:none;padding:0 2px;line-height:1}.fns:disabled{cursor:not-allowed;opacity:.6}.fns:focus-visible{box-shadow:var(--field-focus-shadow);border-radius:4px}.fno{color:var(--field-range-fill)}}\n\n@layer elcrm-form{.fdr{align-items:stretch;box-shadow:none!important;background:0 0!important;border:0!important;gap:0!important;min-height:0!important;padding:0!important;overflow:visible!important}.fdr:hover,.fdr:focus-within{box-shadow:none!important;background:0 0!important;border:0!important}.fdr[data-disabled=true]{opacity:1;background:0 0!important}.fdr>div{flex:none;min-height:0;padding:0;line-height:normal}.fdi{align-items:center;gap:var(--field-code-gap);width:max-content;max-width:100%;min-height:var(--field-code-size);flex-wrap:nowrap;display:flex}.fdc{box-sizing:border-box;width:var(--field-code-size);height:var(--field-code-size);flex:0 0 var(--field-code-size);border:var(--field-border);border-radius:var(--field-radius);background:var(--field-background);color:var(--field-color);font:inherit;font-size:max(var(--control-font-size), calc(var(--field-code-size) * .42));font-variant-numeric:tabular-nums;line-height:calc(var(--field-code-size) - 2px);text-align:center;outline:none;margin:0;padding:0;transition:border-color .16s,box-shadow .16s,background-color .16s,opacity .16s}.fdc::placeholder{color:var(--field-placeholder);opacity:1;font-weight:400}.fdc:hover:not(:disabled){border-color:var(--field-border-hover)}.fdc:focus{border-color:var(--field-border-focus);box-shadow:var(--field-focus-shadow);background:var(--field-background-focus)}.fdc:disabled{background:var(--field-background-disabled);border-color:var(--field-border-disabled);color:var(--field-color-disabled);cursor:not-allowed;opacity:.85}.fdc::selection{background:var(--field-selection-bg);color:var(--field-selection-color)}.fds{width:.75em;color:var(--field-placeholder);font-size:max(var(--control-font-size), calc(var(--field-code-size) * .35));line-height:var(--field-code-size);text-align:center;-webkit-user-select:none;user-select:none;pointer-events:none;flex:none}}\n\n@layer elcrm-form{.fhr{align-items:stretch}.fhr>div{min-height:var(--field-note-height);line-height:var(--field-note-line-height);flex-direction:column;align-items:flex-start;padding:0;display:flex;overflow:visible}.fhw{flex-direction:column;align-items:flex-start;width:100%;min-width:0;display:flex}.fht{width:100%;max-width:100%;padding:var(--field-padding-block) 0;box-sizing:border-box;border-bottom:1px solid #00000014;flex-wrap:nowrap;justify-content:flex-start;align-items:center;gap:2px;margin:0;display:inline-flex}.fhb{box-sizing:border-box;width:28px;min-width:28px;height:28px;color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;border-radius:6px;flex:none;justify-content:center;align-items:center;margin:0;padding:0;font-size:13px;font-weight:600;line-height:1;display:inline-flex}.fhb:hover:not(:disabled){background:var(--field-background-focus)}.fhb:disabled{opacity:.5;cursor:not-allowed}.fhe{box-sizing:border-box;width:100%;min-height:calc(var(--field-note-height) - 28px - 2 * var(--field-padding-block));overflow-wrap:anywhere;line-height:var(--field-note-line-height);scrollbar-width:none;-ms-overflow-style:none;outline:none;padding:0;overflow:hidden auto}.fhe::-webkit-scrollbar{background:0 0;width:0;height:0;display:none}.fhe:empty:before{content:attr(placeholder);color:var(--field-placeholder);pointer-events:none}.fhe ul,.fhe ol{margin:.25em 0;padding-left:1.25em}}\n\n@layer elcrm-form{.fxr{align-items:stretch;overflow:visible;box-shadow:none!important;background:0 0!important;border:0!important;padding:0!important}.fxr>div{min-height:auto;padding:0;line-height:normal;display:block;overflow:visible}.fxr[data-dragging=true]{background:0 0!important}.fxi{flex-direction:column;gap:16px;width:100%;min-width:0;display:flex;position:relative}.fxi[data-layout=fill],.fxi[data-layout=overlay]{gap:0;height:100%;min-height:0}.fxr[data-layout=fill],.fxr[data-layout=overlay]{width:100%;height:100%}:is(.fxr[data-layout=fill],.fxr[data-layout=overlay])>div{flex-direction:column;align-items:stretch;height:100%;min-height:0;display:flex}.fxz{box-sizing:border-box;width:100%;min-height:var(--field-drag-min-height);padding:var(--field-padding);border:var(--field-drag-border);border-radius:calc(var(--field-radius) - 2px);color:inherit;font:inherit;text-align:center;cursor:pointer;background:0 0;outline:none;flex-direction:column;justify-content:center;align-items:center;gap:6px;margin:0;transition:border-color .16s,background-color .16s,border-style .16s;display:flex}.fxz:hover:not(:disabled){border-color:var(--field-drag-border-hover);background:var(--field-background-focus)}.fxz[data-dragging=true]{border-color:var(--field-range-fill);background:color-mix(in srgb, var(--field-range-fill) 10%, transparent);border-style:solid}.fxz:focus-visible{box-shadow:var(--field-focus-shadow)}.fxz:disabled{cursor:not-allowed;opacity:.65}.fxz[data-layout=fill],.fxz[data-layout=overlay]{flex:auto;height:100%;min-height:100%}.fxz[data-layout=overlay]{padding:var(--field-padding);background:0 0;justify-content:flex-end}.fxz[data-layout=overlay]:hover:not(:disabled){background:var(--field-background-focus)}.fxh{font-size:var(--control-font-size);color:inherit;line-height:1.35}.fxa{font-size:var(--field-error-size);color:var(--field-placeholder);letter-spacing:.01em}.fxl{flex-direction:column;gap:6px;margin:4px 0 0;padding:0;list-style:none;display:flex}.fxt{min-width:0;padding:var(--field-padding);background:var(--field-background-focus);border-radius:10px;align-items:center;gap:10px;display:flex}.fxm{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.fxn{text-overflow:ellipsis;white-space:nowrap;font-size:var(--control-font-size);color:inherit;line-height:1.3;overflow:hidden}.fxs{font-size:var(--field-error-size);color:var(--field-placeholder);line-height:1.2}.fxd{width:28px;height:28px;color:var(--field-placeholder);cursor:pointer;background:0 0;border:0;border-radius:8px;flex:none;justify-content:center;align-items:center;padding:0;font-size:18px;line-height:1;display:inline-flex}.fxd:hover{color:var(--field-error-color);background:color-mix(in srgb, var(--field-error-color) 10%, transparent)}.fxc{color:var(--field-placeholder);font:inherit;font-size:var(--field-error-size);cursor:pointer;padding:var(--field-padding-block) 0;background:0 0;border:0;align-self:flex-start;margin-top:2px}.fxc:hover{color:var(--field-error-color)}}\n\n@layer elcrm-form{.fbr{align-items:stretch;overflow:hidden;gap:0!important;padding:0!important}.fbr:focus-within{background:var(--field-background)!important;border-color:var(--field-border)!important;box-shadow:none!important}.fbr[data-disabled=true]{opacity:.85;cursor:not-allowed}.fbr>div{min-width:0;min-height:var(--field-height);flex:1;padding:0;line-height:normal;overflow:visible}.fbi{width:100%;min-height:var(--field-height);flex-wrap:nowrap;align-items:stretch;display:flex}.fbt{box-sizing:border-box;justify-content:center;align-items:center;gap:var(--field-icon-gap);min-width:0;min-height:var(--field-height);padding:0 var(--field-padding-inline);border:0;border-right:var(--field-tabs-divider);color:var(--field-color);font:inherit;font-size:var(--control-font-size);text-align:center;cursor:pointer;background:0 0;border-radius:0;outline:none;flex:1 1 0;margin:0;font-weight:500;line-height:1.2;transition:background-color .16s,color .16s,opacity .16s;display:inline-flex}.fbt:last-child{border-right:0}.fbt:hover:not(:disabled):not(.fba){background:var(--field-background-focus)}.fbt:focus-visible{box-shadow:inset 0 0 0 2px var(--field-focus-ring);background:var(--field-background-focus);z-index:1;position:relative}.fbt:first-child:focus-visible{border-radius:var(--field-radius) 0 0 var(--field-radius)}.fbt:last-child:focus-visible{border-radius:0 var(--field-radius) var(--field-radius) 0}.fbt:only-child:focus-visible{border-radius:var(--field-radius)}.fbt:disabled{color:var(--field-color-disabled);cursor:not-allowed;opacity:.65}.fba{background:var(--field-tabs-active-bg);color:var(--field-color)}.fba:hover:not(:disabled){background:var(--field-tabs-active-bg)}.fbo{width:var(--field-icon-size);height:var(--field-icon-size);color:var(--field-icon-color);flex:none;justify-content:center;align-items:center;line-height:0;display:inline-flex}.fbo svg{width:var(--field-icon-size);height:var(--field-icon-size);display:block}.fba .fbo{color:var(--field-color)}.fbl{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}}\n\n@layer elcrm-form{.fur{gap:var(--field-group-gap);width:var(--field-width);background:0 0;border:0;flex-direction:column;min-width:0;margin:0;padding:0;display:flex}}\n";
9
9
  document.head.appendChild(el);
10
10
  })();
11
11
 
12
- import e from"./package.js";import{useForm as t,useFormField as n,useFormFieldState as r}from"./hooks/use.js";import i from"./fields/Range.js";import{asEditableClipboard as a}from"./events/onEvent.js";import o from"./fields/Money.js";import s from"./fields/Mask.js";import{acquireOverlayZIndex as c,peekOverlayZIndex as l,releaseOverlayZIndex as u}from"./overlayZ.js";import d from"./fields/Date.js";import f from"./fields/Time.js";import p from"./fields/Textarea.js";import{useFormInit as m}from"./FormInitContext.js";import h from"./fields/Phone.js";import g from"./fields/Input.js";import _ from"./fields/Numeric.js";import v from"./fields/Options.js";import y from"./fields/Select.js";import b from"./fields/Modal.js";import x from"./fields/Password.js";import S from"./fields/Check.js";import C,{DEFAULT_COLOR_PALETTE as w}from"./fields/Color.js";import T from"./fields/Email.js";import E from"./fields/Url.js";import D from"./fields/Percent.js";import O from"./fields/Radio.js";import k from"./fields/Tags.js";import A from"./fields/Rating.js";import j from"./fields/Code.js";import M from"./fields/File.js";import N from"./fields/DragDrop.js";import P from"./fields/RichText.js";import F from"./fields/Hidden.js";import I from"./fields/Display.js";import{Form as L}from"./Form.js";function R(){return typeof globalThis<`u`?globalThis:typeof window<`u`?window:typeof self<`u`?self:{}}var z=R();z.elcrm||={},Object.assign(z.elcrm,{form:e.version});export{S as CheckField,j as CodeField,C as ColorField,w as DEFAULT_COLOR_PALETTE,d as DateField,I as DisplayField,N as DragDropField,N as DragonDropField,T as EmailField,M as FileField,L as Form,F as HiddenField,s as MaskField,b as ModalField,o as MoneyField,_ as NumberField,v as OptionsField,j as OtpField,x as PasswordField,D as PercentField,h as PhoneField,i as ProgressField,O as RadioField,i as RangeField,A as RatingField,I as ReadonlyField,P as RichTextField,y as SelectField,g as StringField,k as TagsField,p as TextareaField,f as TimeField,E as UrlField,c as acquireOverlayZIndex,a as asEditableClipboard,l as peekOverlayZIndex,u as releaseOverlayZIndex,t as useForm,n as useFormField,r as useFormFieldState,m as useFormInit};
12
+ import e from"./package.js";import{useForm as t,useFormField as n,useFormFieldState as r}from"./hooks/use.js";import{createFieldEmit as i}from"./fields/emit.js";import a from"./fields/Range.js";import{asEditableClipboard as o}from"./events/onEvent.js";import s from"./fields/Money.js";import c from"./fields/Mask.js";import{acquireOverlayZIndex as l,peekOverlayZIndex as u,releaseOverlayZIndex as d}from"./overlayZ.js";import f from"./fields/Date.js";import p from"./fields/Time.js";import m from"./fields/Textarea.js";import{useFormInit as h}from"./FormInitContext.js";import g from"./fields/Phone.js";import _ from"./fields/Input.js";import v from"./fields/Numeric.js";import y from"./fields/Options.js";import b from"./fields/Select.js";import x from"./fields/Modal.js";import S from"./fields/Password.js";import C from"./fields/Check.js";import{DEFAULT_COLOR_PALETTE as w}from"./fields/colorUtils.js";import T from"./fields/Color.js";import{isValidEmail as E,validateEmail as D}from"./fields/emailUtils.js";import O from"./fields/Email.js";import{cardDigits as k,detectCardBrand as A,emptyCardBrandLock as j,formatCardNumber as M,luhnCheck as N,stepCardBrand as P,validateCardNumber as F}from"./fields/cardUtils.js";import I from"./fields/Card.js";import L from"./fields/Url.js";import R from"./fields/Percent.js";import z from"./fields/Radio.js";import B from"./fields/Tags.js";import V from"./fields/Rating.js";import H from"./fields/Code.js";import U from"./fields/Tabs.js";import W from"./fields/File.js";import G from"./fields/DragDrop.js";import K from"./fields/RichText.js";import q from"./fields/Hidden.js";import J from"./fields/Display.js";import Y from"./fields/FieldGroup.js";import{Form as X}from"./Form.js";function Z(){return typeof globalThis<`u`?globalThis:typeof window<`u`?window:typeof self<`u`?self:{}}var Q=Z();Q.elcrm||={},Object.assign(Q.elcrm,{form:e.version});export{I as CardField,C as CheckField,H as CodeField,T as ColorField,w as DEFAULT_COLOR_PALETTE,f as DateField,J as DisplayField,G as DragDropField,O as EmailField,Y as FieldGroup,W as FileField,X as Form,q as HiddenField,c as MaskField,x as ModalField,s as MoneyField,v as NumberField,y as OptionsField,S as PasswordField,R as PercentField,g as PhoneField,z as RadioField,a as RangeField,V as RatingField,K as RichTextField,b as SelectField,_ as StringField,U as TabsField,B as TagsField,m as TextareaField,p as TimeField,L as UrlField,l as acquireOverlayZIndex,o as asEditableClipboard,k as cardDigits,i as createFieldEmit,A as detectCardBrand,j as emptyCardBrandLock,M as formatCardNumber,E as isValidEmail,N as luhnCheck,u as peekOverlayZIndex,d as releaseOverlayZIndex,P as stepCardBrand,t as useForm,n as useFormField,r as useFormFieldState,h as useFormInit,F as validateCardNumber,D as validateEmail};