@elcrm/form 0.1.1 → 0.1.3
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.
- package/README.md +162 -203
- package/dist/assets/styles/Check.module.css +1 -0
- package/dist/assets/styles/Code.module.css +1 -0
- package/dist/assets/styles/Color.module.css +1 -1
- package/dist/assets/styles/Drag.module.css +1 -0
- package/dist/assets/styles/Field.module.css +1 -1
- package/dist/assets/styles/FieldGroup.module.css +1 -0
- package/dist/assets/styles/File.module.css +1 -0
- package/dist/assets/styles/Form.module.css +1 -1
- package/dist/assets/styles/Radio.module.css +1 -0
- package/dist/assets/styles/Rating.module.css +1 -0
- package/dist/assets/styles/Rich.module.css +1 -0
- package/dist/assets/styles/Select.module.css +1 -1
- package/dist/assets/styles/Tabs.module.css +1 -0
- package/dist/assets/styles/Tags.module.css +1 -0
- package/dist/assets/styles/Time.module.css +1 -0
- package/dist/core/Field.d.ts +26 -10
- package/dist/core/Field.js +2 -2
- package/dist/dark.css +38 -11
- package/dist/fields/Card.d.ts +12 -0
- package/dist/fields/Card.js +1 -0
- package/dist/fields/Check.d.ts +6 -2
- package/dist/fields/Check.js +1 -1
- package/dist/fields/Code.d.ts +13 -4
- package/dist/fields/Code.js +1 -1
- package/dist/fields/Color.d.ts +8 -13
- package/dist/fields/Color.js +1 -1
- package/dist/fields/ColorPanel.d.ts +16 -0
- package/dist/fields/ColorPanel.js +1 -0
- package/dist/fields/Date.d.ts +3 -1
- package/dist/fields/Date.js +1 -1
- package/dist/fields/DateCalendar.d.ts +16 -0
- package/dist/fields/DateCalendar.js +1 -0
- package/dist/fields/Display.d.ts +8 -5
- package/dist/fields/Display.js +2 -1
- package/dist/fields/DragDrop.d.ts +13 -3
- package/dist/fields/DragDrop.js +1 -1
- package/dist/fields/Email.d.ts +6 -3
- package/dist/fields/Email.js +1 -1
- package/dist/fields/FieldGroup.d.ts +107 -0
- package/dist/fields/FieldGroup.js +1 -0
- package/dist/fields/File.js +1 -1
- package/dist/fields/Hidden.js +1 -1
- package/dist/fields/Input.js +1 -1
- package/dist/fields/Mask.d.ts +2 -1
- package/dist/fields/Mask.js +1 -1
- package/dist/fields/Modal.js +1 -1
- package/dist/fields/Money.d.ts +2 -1
- package/dist/fields/Money.js +1 -1
- package/dist/fields/NativeTextField.js +1 -1
- package/dist/fields/Numeric.d.ts +2 -1
- package/dist/fields/Numeric.js +1 -1
- package/dist/fields/Options.js +1 -1
- package/dist/fields/Password.js +1 -1
- package/dist/fields/Percent.js +1 -1
- package/dist/fields/Phone.js +1 -1
- package/dist/fields/Radio.d.ts +3 -1
- package/dist/fields/Radio.js +1 -1
- package/dist/fields/Range.d.ts +9 -6
- package/dist/fields/Range.js +1 -1
- package/dist/fields/Rating.js +1 -1
- package/dist/fields/RichText.js +1 -1
- package/dist/fields/Select.js +1 -1
- package/dist/fields/Tabs.d.ts +30 -0
- package/dist/fields/Tabs.js +1 -0
- package/dist/fields/Tags.js +1 -1
- package/dist/fields/Textarea.js +1 -1
- package/dist/fields/Time.js +1 -1
- package/dist/fields/TimePicker.d.ts +15 -0
- package/dist/fields/TimePicker.js +1 -0
- package/dist/fields/cardUtils.d.ts +37 -0
- package/dist/fields/cardUtils.js +1 -0
- package/dist/fields/colorUtils.d.ts +29 -0
- package/dist/fields/colorUtils.js +1 -0
- package/dist/fields/dateUtils.d.ts +32 -0
- package/dist/fields/dateUtils.js +1 -0
- package/dist/fields/emailUtils.d.ts +4 -0
- package/dist/fields/emailUtils.js +1 -0
- package/dist/fields/timeUtils.d.ts +23 -0
- package/dist/fields/timeUtils.js +1 -0
- package/dist/fields/type.d.ts +4 -3
- package/dist/hooks/use.d.ts +12 -7
- package/dist/index.d.ts +19 -9
- package/dist/index.js +2 -2
- package/dist/index.umd.js +3 -2
- package/dist/light.css +39 -12
- package/dist/package.js +1 -1
- package/dist/style.css +26 -4
- package/dist/styles/Check.module.js +1 -0
- package/dist/styles/Code.module.js +1 -0
- package/dist/styles/Color.module.js +1 -1
- package/dist/styles/Drag.module.js +1 -0
- package/dist/styles/Field.module.js +1 -1
- package/dist/styles/FieldGroup.module.js +1 -0
- package/dist/styles/File.module.js +1 -0
- package/dist/styles/Form.module.js +1 -1
- package/dist/styles/Radio.module.js +1 -0
- package/dist/styles/Rating.module.js +1 -0
- package/dist/styles/Rich.module.js +1 -0
- package/dist/styles/Select.module.js +1 -1
- package/dist/styles/Tabs.module.js +1 -0
- package/dist/styles/Tags.module.js +1 -0
- package/dist/styles/Time.module.js +1 -0
- package/package.json +5 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@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}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@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}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@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}}
|
package/dist/core/Field.d.ts
CHANGED
|
@@ -9,14 +9,30 @@ export type FieldA11y = {
|
|
|
9
9
|
};
|
|
10
10
|
/** Хук: id и aria-связи текущего Field (внутри обёртки поля) */
|
|
11
11
|
export declare function useFieldA11y(): FieldA11y | null;
|
|
12
|
+
/** Классы корневого блока поля (`data-field`) */
|
|
13
|
+
export type FieldBlokProps = {
|
|
14
|
+
className?: string[];
|
|
15
|
+
};
|
|
16
|
+
/** Классы и DOM-пропы капсулы контрола */
|
|
17
|
+
export type FieldControlProps = {
|
|
18
|
+
className?: string[];
|
|
19
|
+
props?: Record<string, unknown>;
|
|
20
|
+
};
|
|
12
21
|
interface Input {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
22
|
+
/**
|
|
23
|
+
* Классы корневого блока.
|
|
24
|
+
* @deprecated используйте `blok` (алиас оставлен для совместимости)
|
|
25
|
+
*/
|
|
26
|
+
element_blok?: FieldBlokProps;
|
|
27
|
+
/** Классы корневого блока (`data-field`) */
|
|
28
|
+
blok?: FieldBlokProps;
|
|
29
|
+
/**
|
|
30
|
+
* Капсула контрола.
|
|
31
|
+
* @deprecated используйте `control`
|
|
32
|
+
*/
|
|
33
|
+
element_input?: FieldControlProps;
|
|
34
|
+
/** Капсула контрола (border / focus) */
|
|
35
|
+
control?: FieldControlProps;
|
|
20
36
|
/** Текст подписи поля */
|
|
21
37
|
label?: string;
|
|
22
38
|
/** id контрола (htmlFor у label); иначе генерируется */
|
|
@@ -26,8 +42,8 @@ interface Input {
|
|
|
26
42
|
after?: ReactNode;
|
|
27
43
|
children?: ReactNode;
|
|
28
44
|
error?: string;
|
|
29
|
-
/**
|
|
30
|
-
size?: "sm" | "md";
|
|
45
|
+
/** s | m | l — высота как у кнопки/поиска (`sm`/`md` — алиасы) */
|
|
46
|
+
size?: "s" | "m" | "l" | "sm" | "md";
|
|
31
47
|
}
|
|
32
|
-
declare const Field: ({ element_blok, element_input, type, label, id: idProp, error, before, after, children, size, }: Input) => import("react/jsx-runtime").JSX.Element;
|
|
48
|
+
declare const Field: ({ element_blok, blok, element_input, control, type, label, id: idProp, error, before, after, children, size, }: Input) => import("react/jsx-runtime").JSX.Element;
|
|
33
49
|
export default Field;
|
package/dist/core/Field.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 = "._l_2ps0c_4{min-width:var(--field-width);gap:var(--field-block-gap,0);flex-direction:column;margin:0;padding:0;display:flex;position:relative}._l_2ps0c_4[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}._l_2ps0c_4>._t_2ps0c_22,._l_2ps0c_4>._f_2ps0c_22,._l_2ps0c_4>._m_2ps0c_22{margin:0}._l_2ps0c_4[data-field=group] ._f_2ps0c_22>div{cursor:pointer;border-bottom:var(--field-border);padding:var(--field-padding);margin:0}._l_2ps0c_4[data-field=group] ._f_2ps0c_22>div:last-child{border-bottom:0}._l_2ps0c_4 [placeholder]:empty:before{content:attr(placeholder);color:var(--field-placeholder);opacity:1;pointer-events:none;font-style:normal;font-weight:400;display:block}._l_2ps0c_4 [placeholder]:focus:before{display:none}._f_2ps0c_22{box-sizing:border-box;align-items:center;gap:var(--field-icon-gap,10px);border:var(--field-border);border-radius:var(--field-radius);background:var(--field-background);color:var(--field-color);padding:var(--control-inner-padding,0 var(--field-side-padding,14px));transition:border-color .16s,box-shadow .16s,background-color .16s,opacity .16s;display:flex;overflow:hidden}._f_2ps0c_22:hover{border-color:var(--field-border-hover,var(--field-border))}._f_2ps0c_22:focus-within{border-color:var(--field-border-focus,var(--field-border));box-shadow:var(--field-focus-shadow,0 0 0 3px var(--field-focus-ring,#0000));background:var(--field-background-focus,var(--field-background))}._f_2ps0c_22._e_2ps0c_78:focus-within{background:var(--field-error-background);color:var(--field-error-color)}._f_2ps0c_22[data-disabled=true]{background:var(--field-background-disabled,var(--field-background));border-color:var(--field-border-disabled,var(--field-border));color:var(--field-color-disabled,var(--field-placeholder));cursor:not-allowed;opacity:.85}._f_2ps0c_22[data-disabled=true]>*{cursor:not-allowed}._f_2ps0c_22>div{min-height:var(--field-height);line-height:calc(var(--field-height) - 2px);font-size:var(--control-font-size,14px);text-wrap:pretty;outline:0;flex:1;margin:0;padding:0}._f_2ps0c_22>div::selection{background:var(--field-selection-bg,#b3d4fc);color:var(--field-selection-color,inherit)}._f_2ps0c_22>: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,var(--field-placeholder));flex:none;justify-content:center;align-self:center;align-items:center;display:inline-flex}._f_2ps0c_22>:not(div) svg{width:var(--field-icon-size,20px);height:var(--field-icon-size,20px);flex-shrink:0;display:block}._f_2ps0c_22 input::placeholder,._f_2ps0c_22 textarea::placeholder{color:var(--field-placeholder);opacity:1;font-weight:400}._f_2ps0c_22 input::-webkit-input-placeholder{color:var(--field-placeholder);opacity:1;font-weight:400}._f_2ps0c_22 textarea::-webkit-input-placeholder{color:var(--field-placeholder);opacity:1;font-weight:400}._f_2ps0c_22 input::-moz-placeholder{color:var(--field-placeholder);opacity:1;font-weight:400}._f_2ps0c_22 textarea::-moz-placeholder{color:var(--field-placeholder);opacity:1;font-weight:400}._f_2ps0c_22 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}._f_2ps0c_22 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}._f_2ps0c_22 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}._f_2ps0c_22 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}._f_2ps0c_22 input:-webkit-autofill{-webkit-background-clip:text!important;background-clip:text!important}._f_2ps0c_22 [contenteditable=true],._f_2ps0c_22 [contenteditable=plaintext-only],._f_2ps0c_22>div{scrollbar-width:none;-ms-overflow-style:none}._f_2ps0c_22 [contenteditable=true]::-webkit-scrollbar{background:0 0;width:0;height:0;display:none}._f_2ps0c_22 [contenteditable=plaintext-only]::-webkit-scrollbar{background:0 0;width:0;height:0;display:none}._f_2ps0c_22>div::-webkit-scrollbar{background:0 0;width:0;height:0;display:none}._n_2ps0c_199>div{min-height:var(--field-note-height);line-height:var(--field-note-line-height);padding-top:var(--field-note-padding,var(--field-note-padding-top,8px));padding-bottom:var(--field-note-padding,var(--field-note-padding-top,8px));scrollbar-width:none;-ms-overflow-style:none;overflow:hidden auto}._n_2ps0c_199>div::-webkit-scrollbar{background:0 0;width:0;height:0;display:none}._w_2ps0c_216>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}._w_2ps0c_216>div::-webkit-scrollbar{background:0 0;width:0;height:0;display:none}._w_2ps0c_216>div input{box-sizing:border-box;height:100%;min-height:0;max-height:100%;line-height:normal}._time_2ps0c_243>div{text-wrap:nowrap;align-items:center;min-width:0;display:flex;overflow:visible}._time_2ps0c_243 ._timeInner_2ps0c_250{justify-content:flex-start;align-items:center;gap:4px;width:100%;min-width:0;display:flex}._time_2ps0c_243._timeAlignCenter_2ps0c_261 ._timeInner_2ps0c_250{justify-content:center}._time_2ps0c_243 ._timeSep_2ps0c_264{opacity:.65;-webkit-user-select:none;user-select:none;flex:none;padding:0 2px;font-weight:500;transform:translateY(-1px)}._time_2ps0c_243 ._timePickerBtn_2ps0c_272{color:var(--field-icon-color,var(--field-placeholder));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}._time_2ps0c_243 ._timePickerBtn_2ps0c_272:hover:not(:disabled){color:var(--field-color)}._time_2ps0c_243 ._timePickerBtn_2ps0c_272:focus-visible{box-shadow:var(--field-focus-shadow,0 0 0 3px var(--field-focus-ring,#0000));border-radius:6px}._time_2ps0c_243 ._timePickerBtn_2ps0c_272:disabled{cursor:not-allowed;opacity:.5}._time_2ps0c_243 ._timePart_2ps0c_300{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}._time_2ps0c_243 ._timePart_2ps0c_300::-webkit-scrollbar{background:0 0;width:0;height:0;display:none}._time_2ps0c_243 ._timePart_2ps0c_300[contenteditable=false]{cursor:not-allowed;opacity:.7}._time_2ps0c_243 ._timePart_2ps0c_300:empty:before{content:attr(placeholder);color:var(--field-placeholder);opacity:1;font-weight:400}._time_2ps0c_243 ._timePart_2ps0c_300:focus:empty:before{content:none}._time_2ps0c_243 ._timePart_2ps0c_300:focus-visible{background:0 0}._time_2ps0c_243._timeAlignCenter_2ps0c_261 ._timePart_2ps0c_300{text-align:center}._t_2ps0c_22{color:var(--field-label-color);font-size:var(--field-label-size);padding-bottom:var(--field-label-gap,10px);cursor:default;display:block}._nativeWrap_2ps0c_361{flex:1;align-items:center;min-width:0;display:flex}._nativeInput_2ps0c_368{box-sizing:border-box;width:100%;font:inherit;color:inherit;background:0 0;border:none;outline:none;margin:0;padding:0}._nativeInput_2ps0c_368:-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}._nativeInput_2ps0c_368:-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}._nativeInput_2ps0c_368:-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}._nativeInput_2ps0c_368:-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}._affix_2ps0c_393{box-sizing:border-box;height:var(--field-height);min-height:var(--field-height);max-height:var(--field-height);color:var(--field-icon-color,var(--field-placeholder));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}._affix_2ps0c_393:disabled{cursor:not-allowed;opacity:.6}._affix_2ps0c_393 svg{width:var(--field-icon-size,20px);height:var(--field-icon-size,20px);flex-shrink:0;display:block}._g_2ps0c_426{flex-direction:column}._range_2ps0c_430>div{box-sizing:border-box;min-width:0;min-height:var(--field-height);flex:1;align-items:center;line-height:normal;display:flex}._range_2ps0c_430 ._rangeTrack_2ps0c_439{box-sizing:border-box;width:100%;height:var(--field-range-bar-height,14px);background:var(--field-range-track,#e0e0e0);cursor:pointer;touch-action:none;border-radius:999px;outline:none;flex-shrink:0;position:relative;overflow:hidden}._range_2ps0c_430 ._rangeTrack_2ps0c_439:focus-visible{box-shadow:var(--field-focus-shadow,0 0 0 3px var(--field-focus-ring,#0000))}._range_2ps0c_430 ._rangeTrack_2ps0c_439[data-disabled=true]{cursor:not-allowed;opacity:.55;pointer-events:none}._range_2ps0c_430 ._rangeFill_2ps0c_460{background:var(--field-range-fill,#00b5ad);pointer-events:none;border-radius:999px 0 0 999px;width:0;min-width:0;height:100%}._range_2ps0c_430 ._rangeFillFull_2ps0c_471{border-radius:999px}._checkbox_2ps0c_475>div{min-height:var(--field-height);align-items:flex-start;width:100%;padding:0;line-height:normal;display:flex}._checkbox_2ps0c_475[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}._checkbox_2ps0c_475[data-variant=plain]:hover,._checkbox_2ps0c_475[data-variant=plain]:focus-within{box-shadow:none!important;background:0 0!important;border:none!important}._checkbox_2ps0c_475[data-size=sm]>div{align-items:center;min-height:0}._checkPlainBlok_2ps0c_502{width:100%;min-width:0}._checkControl_2ps0c_507{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}._checkControl_2ps0c_507:focus-visible{box-shadow:var(--field-focus-shadow,0 0 0 3px var(--field-focus-ring,#0000));border-radius:calc(var(--field-radius) - 2px)}._checkControl_2ps0c_507[data-focus-ring=false]:focus-visible{box-shadow:none}._checkControl_2ps0c_507[aria-disabled=true]{cursor:not-allowed}._checkControl_2ps0c_507[data-size=sm]{border-radius:8px;align-items:center;gap:10px;min-height:0;padding:7px 8px}._checkControl_2ps0c_507[data-size=sm] ._checkBox_2ps0c_540{border-radius:5px;width:18px;height:18px}._checkControl_2ps0c_507[data-size=sm] ._checkMark_2ps0c_545{width:9px;height:5px}._checkControl_2ps0c_507[data-size=sm] ._checkText_2ps0c_549{padding-top:0;font-size:13px;line-height:1.2}._checkControl_2ps0c_507[data-size=sm][data-variant=plain]:hover:not([aria-disabled=true]){background:var(--field-background-focus,#ffffff0f)}._checkBox_2ps0c_540{width:var(--field-check-size,22px);height:var(--field-check-size,22px);border:var(--field-check-box-border,var(--field-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}._checkMark_2ps0c_545{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)}._checkText_2ps0c_549{min-width:0;color:inherit;font-size:var(--control-font-size,14px);flex:auto;padding-top:2px;line-height:1.25}._checkControl_2ps0c_507[aria-checked=true] ._checkBox_2ps0c_540{background:var(--field-background-active)}._e_2ps0c_78{border-color:var(--field-error-border);background:var(--field-error-background);color:var(--field-error-color)}._m_2ps0c_22{color:var(--field-error-color);font-size:var(--field-error-size,12px);margin-top:var(--field-error-gap,6px);font-style:normal}._display_2ps0c_607>div{color:inherit;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}._displayEmpty_2ps0c_614{color:var(--field-placeholder)}._radio_2ps0c_619>div{width:100%;min-height:var(--field-height);flex-direction:column;align-items:stretch;gap:4px;padding:6px 0;line-height:normal;display:flex}._radioInline_2ps0c_630>div{flex-flow:wrap;align-items:center;gap:8px 16px}._radioItem_2ps0c_637{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}._radioItem_2ps0c_637:focus-visible{box-shadow:var(--field-focus-shadow,0 0 0 3px var(--field-focus-ring,#0000));border-radius:6px}._radioItem_2ps0c_637[aria-disabled=true]{cursor:not-allowed;opacity:.7}._radioDot_2ps0c_660{width:var(--field-radio-size,20px);height:var(--field-radio-size,20px);border:var(--field-check-box-border,var(--field-border));border-radius:50%;flex:none;justify-content:center;align-items:center;display:inline-flex}._radioDotFill_2ps0c_671{background:var(--field-background-active);border-radius:50%;width:10px;height:10px}._radioText_2ps0c_678{font-size:var(--control-font-size,14px);line-height:1.25}._tags_2ps0c_684>div,._tags_2ps0c_684 ._tagsInner_2ps0c_685{width:100%;min-height:var(--field-height);flex-wrap:wrap;align-items:center;gap:4px;padding:0;line-height:normal;display:flex;overflow:visible}._tagsInner_2ps0c_685{flex:1;min-width:0}._tagChip_2ps0c_702{background:var(--field-background-focus,#0000000f);border-radius:999px;align-items:center;gap:2px;max-width:100%;padding:0 6px;line-height:1.35;display:inline-flex}._tagLabel_2ps0c_713{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}._tagRemove_2ps0c_719{color:inherit;cursor:pointer;opacity:.65;background:0 0;border:0;padding:0 2px;font-size:16px;line-height:1}._tagRemove_2ps0c_719:hover{opacity:1}._tagInput_2ps0c_733{min-width:80px;color:inherit;font:inherit;background:0 0;border:0;outline:none;flex:80px;margin:0;padding:0}._rating_2ps0c_746>div{width:100%;min-height:var(--field-height);outline:none;align-items:center;gap:2px;line-height:normal;display:flex}._ratingStar_2ps0c_756{color:var(--field-placeholder);cursor:pointer;font-size:var(--field-rating-size,22px);background:0 0;border:0;outline:none;padding:0 2px;line-height:1}._ratingStar_2ps0c_756:disabled{cursor:not-allowed;opacity:.6}._ratingStar_2ps0c_756:focus-visible{box-shadow:var(--field-focus-shadow,0 0 0 3px var(--field-focus-ring,#0000));border-radius:4px}._ratingStarOn_2ps0c_775{color:var(--field-range-fill,#34c759)}._code_2ps0c_780>div,._code_2ps0c_780 ._codeInner_2ps0c_781{width:100%;min-height:var(--field-height);align-items:center;gap:8px;line-height:normal;display:flex;overflow:visible}._codeInner_2ps0c_781{flex:1;min-width:0}._codeCell_2ps0c_796{box-sizing:border-box;width:var(--field-code-cell-size,36px);height:calc(var(--field-height) - 12px);border:var(--field-border);border-radius:calc(var(--field-radius) - 2px);background:var(--field-background-focus,#0000000a);min-height:32px;color:inherit;font:inherit;font-variant-numeric:tabular-nums;text-align:center;outline:none;padding:0}._codeCell_2ps0c_796:focus{border-color:var(--field-border-focus,var(--field-border));box-shadow:var(--field-focus-shadow,0 0 0 3px var(--field-focus-ring,#0000))}._codeCell_2ps0c_796:disabled{opacity:.6;cursor:not-allowed}._file_2ps0c_821>div,._file_2ps0c_821 ._fileInner_2ps0c_822{width:100%;min-height:var(--field-height);align-items:center;gap:10px;line-height:normal;display:flex;overflow:visible}._fileInner_2ps0c_822{flex:1;min-width:0;position:relative}._fileInput_2ps0c_838{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}._fileButton_2ps0c_846{background:var(--field-background-focus,#0000000f);color:inherit;font:inherit;cursor:pointer;white-space:nowrap;border:0;border-radius:8px;flex:none;padding:6px 10px;font-size:13px}._fileButton_2ps0c_846:disabled{cursor:not-allowed;opacity:.6}._fileList_2ps0c_863{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex;overflow:hidden}._fileEmpty_2ps0c_872{color:var(--field-placeholder);font-size:13px}._fileItem_2ps0c_877{align-items:baseline;gap:8px;min-width:0;display:flex}._fileName_2ps0c_884{text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}._fileSize_2ps0c_891{color:var(--field-placeholder);font-size:var(--field-error-size,12px);flex:none}._fileClear_2ps0c_897{color:inherit;cursor:pointer;opacity:.65;background:0 0;border:0;flex:none;padding:0 2px;font-size:18px;line-height:1}._fileClear_2ps0c_897:hover{opacity:1}._rich_2ps0c_913{align-items:stretch}._rich_2ps0c_913>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}._richWrap_2ps0c_926{flex-direction:column;align-items:flex-start;width:100%;min-width:0;display:flex}._richToolbar_2ps0c_934{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}._richBtn_2ps0c_948{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}._richBtn_2ps0c_948:hover:not(:disabled){background:var(--field-background-focus,#0000000f)}._richBtn_2ps0c_948:disabled{opacity:.5;cursor:not-allowed}._richEditor_2ps0c_977{box-sizing:border-box;width:100%;min-height:calc(var(--field-note-height) - 36px);padding:var(--field-note-padding,8px) 0;overflow-wrap:anywhere;line-height:var(--field-note-line-height);scrollbar-width:none;-ms-overflow-style:none;outline:none;overflow:hidden auto}._richEditor_2ps0c_977::-webkit-scrollbar{background:0 0;width:0;height:0;display:none}._richEditor_2ps0c_977:empty:before{content:attr(placeholder);color:var(--field-placeholder);pointer-events:none}._richEditor_2ps0c_977 ul,._richEditor_2ps0c_977 ol{margin:.25em 0;padding-left:1.25em}._dragDrop_2ps0c_1008{align-items:stretch;overflow:visible;box-shadow:none!important;background:0 0!important;border:0!important;padding:0!important}._dragDrop_2ps0c_1008>div{min-height:auto;padding:0;line-height:normal;display:block;overflow:visible}._dragDrop_2ps0c_1008[data-dragging=true]{background:0 0!important}._dragDropInner_2ps0c_1027{flex-direction:column;gap:16px;width:100%;min-width:0;display:flex;position:relative}._dragDropZone_2ps0c_1036{box-sizing:border-box;width:100%;min-height:var(--field-drag-min-height,88px);border:var(--field-drag-border,2px dashed #c7c7cc);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}._dragDropZone_2ps0c_1036:hover:not(:disabled){border-color:var(--field-drag-border-hover,#8e8e93);background:var(--field-background-focus,#00000008)}._dragDropZone_2ps0c_1036[data-dragging=true]{border-color:var(--field-range-fill,#34c759);background:color-mix(in srgb, var(--field-range-fill,#34c759) 10%, transparent);border-style:solid}._dragDropZone_2ps0c_1036:focus-visible{box-shadow:var(--field-focus-shadow,0 0 0 3px var(--field-focus-ring,#0000))}._dragDropZone_2ps0c_1036:disabled{cursor:not-allowed;opacity:.65}._dragDropHint_2ps0c_1074{font-size:var(--control-font-size,14px);color:inherit;line-height:1.35}._dragDropAccept_2ps0c_1080{font-size:var(--field-error-size,12px);color:var(--field-placeholder);letter-spacing:.01em}._dragDropList_2ps0c_1086{flex-direction:column;gap:6px;margin:4px 0 0;padding:0;list-style:none;display:flex}._dragDropItem_2ps0c_1095{background:var(--field-background-focus,#0000000a);border-radius:10px;align-items:center;gap:10px;min-width:0;padding:8px 10px;display:flex}._dragDropMeta_2ps0c_1105{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}._dragDropName_2ps0c_1113{text-overflow:ellipsis;white-space:nowrap;font-size:var(--control-font-size,14px);color:inherit;line-height:1.3;overflow:hidden}._dragDropSize_2ps0c_1122{font-size:var(--field-error-size,12px);color:var(--field-placeholder);line-height:1.2}._dragDropRemove_2ps0c_1128{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}._dragDropRemove_2ps0c_1128:hover{color:var(--field-error-color,#d70015);background:color-mix(in srgb, var(--field-error-color,#d70015) 10%, transparent)}._dragDropClearAll_2ps0c_1149{color:var(--field-placeholder);font:inherit;font-size:var(--field-error-size,12px);cursor:pointer;background:0 0;border:0;align-self:flex-start;margin-top:2px;padding:2px 0}._dragDropClearAll_2ps0c_1149:hover{color:var(--field-error-color,#d70015)}\n\n._o_5zbqt_4{z-index:var(--elcrm-z-popover,1000);background:0 0;position:fixed;inset:0}._c_5zbqt_15{box-shadow:var(--date-popup-shadow,5px 7px 18px 0 #000000a8);padding:var(--date-popup-padding,10px 12px 12px);background:var(--select-background);z-index:var(--elcrm-z-popover-front,1001);border-radius:var(--date-popup-radius,10px);scrollbar-width:none;-ms-overflow-style:none;max-height:min(92vh,480px);margin:0;display:block;position:fixed;overflow:hidden auto}._c_5zbqt_15::-webkit-scrollbar{background:0 0;width:0;height:0;display:none}._c_5zbqt_15{color:var(--select-color,#333);box-sizing:border-box;min-width:var(--date-popup-min-width,259px)}._c_5zbqt_15 [grid-calendar]{grid-template-columns:repeat(7,1fr);grid-auto-rows:var(--date-popup-row-height,34px);gap:2px;display:grid}._c_5zbqt_15 [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}._c_5zbqt_15 [grid-month]{grid-template-columns:1fr 1fr 1fr 1fr;width:250px;display:grid}._c_5zbqt_15 b{border-radius:var(--date-popup-cell-radius,5px);cursor:pointer;text-align:center;padding:8px 5px;font-weight:400;display:block}._c_5zbqt_15 b:hover{background:var(--select-li-hover-bg)}._c_5zbqt_15 p{color:var(--field-placeholder);text-align:center;cursor:default;pointer-events:none;padding:0}._c_5zbqt_15 i{text-align:center;cursor:pointer;border-radius:var(--date-popup-cell-radius,5px);flex:0 30px;padding:9px}._c_5zbqt_15 i:hover{background:var(--select-li-hover-bg)}._c_5zbqt_15 i:before{cursor:pointer;display:block}._c_5zbqt_15 s{align-items:center;gap:4px;padding-bottom:6px;font-style:normal;text-decoration:none;display:flex}._c_5zbqt_15 s h2{text-align:center;min-width:0;color:var(--select-color,#333);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}._c_5zbqt_15 ._dateHeaderMonth_5zbqt_128,._c_5zbqt_15 ._dateHeaderYear_5zbqt_128{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;border-radius:6px;padding:2px 8px}._c_5zbqt_15 ._dateHeaderMonth_5zbqt_128:hover,._c_5zbqt_15 ._dateHeaderYear_5zbqt_128:hover{background:var(--select-li-hover-bg)}._c_5zbqt_15 ._dateHeaderDisabled_5zbqt_138{cursor:not-allowed;opacity:.45;pointer-events:none}._c_5zbqt_15 ._dateHeaderDisabled_5zbqt_138[data-active=true],._c_5zbqt_15 ._dateHeaderDisabled_5zbqt_138[data-current=true]{opacity:.45}._c_5zbqt_15 [grid-calendar] b[data-current=true],._c_5zbqt_15 [grid-month] b[data-current=true]{background:color-mix(in srgb, var(--field-background-active) 52%, transparent);font-weight:600}._c_5zbqt_15 [grid-calendar] b[data-active=true]:not([data-current=true]),._c_5zbqt_15 [grid-month] b[data-active=true]:not([data-current=true]){outline:2px solid var(--field-background-active);outline-offset:-2px}._c_5zbqt_15 [grid-calendar] b[data-active=true][data-current=true],._c_5zbqt_15 [grid-month] b[data-active=true][data-current=true]{box-shadow:inset 0 0 0 2px var(--field-background-active)}._c_5zbqt_15 [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,5px);font-weight:600}._c_5zbqt_15 [grid-calendar] p[data-active=true]:not([data-current=true]){outline:2px solid var(--field-background-active);outline-offset:-2px;opacity:.85}._c_5zbqt_15 [grid-calendar] p[data-active=true][data-current=true]{box-shadow:inset 0 0 0 2px var(--field-background-active)}._c_5zbqt_15 span{text-align:center;padding:2px}._c_5zbqt_15 span p{color:var(--field-placeholder);padding:8px 5px}._c_5zbqt_15 [grid-calendar]>span{box-sizing:border-box;justify-content:stretch;align-items:stretch;min-height:0;padding:0;display:flex}._c_5zbqt_15 [grid-calendar]>span>b,._c_5zbqt_15 [grid-calendar]>span>p{box-sizing:border-box;border-radius:var(--date-popup-cell-radius,5px);flex:auto;justify-content:center;align-items:center;width:100%;min-height:0;margin:0;padding:0;display:flex}._c_5zbqt_15 ._as_5zbqt_205{cursor:ns-resize}._c_5zbqt_15 ._ap_5zbqt_208{cursor:pointer}\n\n: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}._o_ogta0_19{z-index:var(--elcrm-z-popover,1000);background:var(--select-overlay,transparent);position:fixed;inset:0}._l_ogta0_29{background:var(--select-background,#fff);z-index:var(--elcrm-z-popover-front,1001);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}._l_ogta0_29::-webkit-scrollbar{background:0 0;width:0;height:0;display:none}._l_ogta0_29 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}._l_ogta0_29 ul::-webkit-scrollbar{background:0 0;width:0;height:0;display:none}._l_ogta0_29 li{border-bottom:var(--select-separator,1px solid #c6c6c8);cursor:pointer;color:var(--select-color,#000);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}._l_ogta0_29 li[aria-selected=true]{background:var(--select-li-selected-bg,var(--select-li-hover-bg,#f2f2f7))}._l_ogta0_29 li:hover{background:var(--select-li-hover-bg,#f2f2f7)}._l_ogta0_29 li[data-focus=true]{background:var(--select-li-focus-bg,#e5e5ea)}._l_ogta0_29 li:last-child{border-bottom:0}._i_ogta0_105{width:var(--select-icon);height:var(--select-icon);color:var(--field-color);right:var(--select-icon-padding);top:var(--select-icon-padding);position:absolute}._placeholderValue_ogta0_115{color:var(--field-placeholder);font-weight:400}._f_ogta0_120{cursor:pointer}._f_ogta0_120[aria-disabled=true]{cursor:not-allowed}\n\n: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}._o_1i8zo_14{z-index:var(--elcrm-z-popover,1000);background:var(--select-overlay,transparent);position:fixed;inset:0}._panel_1i8zo_21{z-index:var(--elcrm-z-popover-front,1001);box-sizing:border-box;width:var(--color-picker-width);padding:var(--color-picker-pad);background:var(--select-background,#2c2c2e);color:var(--select-color,#fff);border-radius:var(--color-picker-radius);flex-direction:column;gap:8px;display:flex;position:fixed;box-shadow:0 8px 28px #00000059}._sv_1i8zo_37{aspect-ratio:1/.55;cursor:crosshair;touch-action:none;border-radius:8px;width:100%;max-height:140px;position:relative;overflow:hidden}._svWhite_1i8zo_48{background:linear-gradient(90deg,#fff,#0000);position:absolute;inset:0}._svBlack_1i8zo_54{background:linear-gradient(#0000,#000);position:absolute;inset:0}._handle_1i8zo_60{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}._slidersRow_1i8zo_72{align-items:center;gap:8px;display:flex}._eyedropper_1i8zo_78{border-radius:var(--color-picker-input-radius);background:var(--field-background,#1c1c1e);width:26px;height:26px;color:var(--field-icon-color,#8e8e93);cursor:pointer;border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}._eyedropper_1i8zo_78:hover{color:var(--field-color,#fff)}._sliders_1i8zo_72{flex-direction:column;flex:1;gap:8px;min-width:0;display:flex}._slider_1i8zo_72{cursor:pointer;touch-action:none;border-radius:999px;height:10px;position:relative}._sliderHue_1i8zo_113{background:linear-gradient(90deg,red 0%,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%)}._sliderAlpha_1i8zo_117{background-image:linear-gradient(to right, transparent, var(--alpha-color,#fff)), 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}._sliderHandle_1i8zo_125{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}._inputs_1i8zo_139{align-items:center;gap:6px;display:flex}._format_1i8zo_145{color:var(--field-placeholder,#8e8e93);flex:none;padding:0 2px;font-size:12px}._input_1i8zo_139{box-sizing:border-box;border-radius:var(--color-picker-input-radius);background:var(--field-background,#1c1c1e);min-width:0;height:28px;color:var(--field-color,#fff);font:inherit;border:none;outline:none;flex:1;padding:0 8px;font-size:13px}._input_1i8zo_139:focus{box-shadow:0 0 0 2px var(--field-focus-ring,#fff3)}._inputAlpha_1i8zo_171{text-align:center;flex:0 0 56px}._palette_1i8zo_176{grid-template-columns:repeat(8,1fr);place-items:center;gap:4px;padding:0;display:grid}._swatchBtn_1i8zo_185{width:var(--color-picker-swatch);height:var(--color-picker-swatch);cursor:pointer;background:var(--swatch,#888);border:none;border-radius:50%;padding:0;transition:transform .12s;box-shadow:inset 0 0 0 1px #0000001f}._swatchBtn_1i8zo_185[aria-checked=true]{z-index:1;box-shadow:inset 0 0 0 1px #00000026, 0 0 0 2px var(--select-background,#2c2c2e), 0 0 0 3px #ffffff59;transform:scale(1.35)}._swatchBtn_1i8zo_185:disabled{cursor:not-allowed;opacity:.5}._trigger_1i8zo_210{cursor:pointer;align-items:center;gap:var(--field-icon-gap,10px);min-width:0;height:var(--field-height,44px);flex:1;display:flex}._trigger_1i8zo_210[aria-disabled=true]{cursor:not-allowed}._preview_1i8zo_224{background-color:var(--preview-color,transparent);background-image:linear-gradient(var(--preview-color,transparent), var(--preview-color,transparent)), 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}._hexText_1i8zo_237{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:var(--control-font-size,17px);flex:1;overflow:hidden}._placeholder_1i8zo_246{color:var(--field-placeholder,#8e8e93);font-weight:400}\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"../styles/Field.module.js";import{createContext as t,useContext as n,useId as r,useMemo as i}from"react";import{jsx as a,jsxs as o}from"react/jsx-runtime";var s=t(null);function c(){return n(s)}var l=({element_blok:t
|
|
12
|
+
import e from"../styles/Field.module.js";import{createContext as t,useContext as n,useId as r,useMemo as i}from"react";import{jsx as a,jsxs as o}from"react/jsx-runtime";var s=t(null);function c(){return n(s)}var l=({element_blok:t,blok:n,element_input:c,control:l,type:u=`input`,label:d,id:f,error:p,before:m,after:h,children:g,size:_=`m`})=>{let v=n??t??{className:[]},y=l??c??{className:[],props:{}},b=_===`s`||_===`sm`?`s`:_===`l`?`l`:`m`,x=r(),S=f||`elcrm-field-${x.replace(/:/g,``)}`,C=`${S}-label`,w=!!(p&&p.length>0),T=w?`${S}-error`:void 0,E=i(()=>({controlId:S,labelId:C,errorId:T,describedBy:T}),[S,C,T]),D=i(()=>[e.l,...v.className||[]].filter(e=>e!==void 0).join(` `),[v.className?.join(` `)]),O=i(()=>[e.f,...y.className||[],w?e.e:``].join(` `),[y.className?.join(` `),w]),k=y.props||{},A=k[`data-disabled`]===`true`,j=k.onMouseDown,M=k.onPointerDown,N=k.onFocus;return a(s.Provider,{value:E,children:o(`div`,{"data-field":u,"data-size":b,className:D,children:[d?a(`label`,{htmlFor:A?void 0:S,id:C,className:e.t,children:d}):null,m,a(`div`,{className:O,...k,...A?{inert:``,"aria-disabled":!0,...d?{"aria-labelledby":C}:{},onMouseDown:e=>{e.preventDefault(),j?.(e)},onPointerDown:e=>{e.preventDefault(),M?.(e)},onFocus:e=>{e.currentTarget.blur(),N?.(e)}}:{},children:g}),w?a(`div`,{id:T,className:e.m,role:`alert`,children:p}):null,h]})})};export{l as default,c as useFieldA11y};
|
package/dist/dark.css
CHANGED
|
@@ -2,27 +2,34 @@
|
|
|
2
2
|
Токены: --control-* (размеры), --field-* (контейнер), --field-selection-* (выделение текста)
|
|
3
3
|
Тёмная тема: фокус и выделение — нейтральные серые (без синего), в духе системного серого UI.
|
|
4
4
|
Фокус: 0px border + --field-focus-ring + --field-background-focus
|
|
5
|
+
|
|
6
|
+
Отступы капсулы: один --field-padding (block + inline), масштабируется от --field-height / size.
|
|
5
7
|
*/
|
|
6
8
|
[data-theme="dark"] {
|
|
7
9
|
--control-height: 44px;
|
|
10
|
+
--control-height-s: 32px;
|
|
11
|
+
--control-height-l: 48px;
|
|
8
12
|
--control-radius: 12px;
|
|
9
|
-
--control-side-padding: 14px;
|
|
10
|
-
--control-inner-padding: 0px 15px;
|
|
11
13
|
--control-font-size: 17px;
|
|
12
14
|
|
|
13
15
|
--field-height: var(--control-height);
|
|
14
16
|
--field-width: 100%;
|
|
15
|
-
--field-
|
|
17
|
+
/* Единый padding капсулы; size s|m|l меняет --field-height → отступы пересчитаются */
|
|
18
|
+
--field-padding-block: calc(var(--field-height) * 0.18);
|
|
19
|
+
--field-padding-inline: calc(var(--field-height) * 0.32);
|
|
20
|
+
--field-padding: var(--field-padding-block) var(--field-padding-inline);
|
|
21
|
+
|
|
16
22
|
--field-border: 0px solid #38383a;
|
|
17
|
-
|
|
18
|
-
--field-border-
|
|
23
|
+
/* hover/focus/disabled — только цвет (в CSS: border-color) */
|
|
24
|
+
--field-border-hover: #48484a;
|
|
25
|
+
--field-border-focus: #636366;
|
|
19
26
|
--field-focus-ring: rgba(235, 235, 245, 0.22);
|
|
20
27
|
--field-focus-shadow: 0 0 0 3px var(--field-focus-ring);
|
|
21
28
|
--field-radius: var(--control-radius);
|
|
22
29
|
--field-background: #1c1c1e;
|
|
23
30
|
--field-background-focus: rgba(255, 255, 255, 0.06);
|
|
24
31
|
--field-background-disabled: #2c2c2e;
|
|
25
|
-
--field-border-disabled:
|
|
32
|
+
--field-border-disabled: #48484a;
|
|
26
33
|
--field-color-disabled: #636366;
|
|
27
34
|
--field-color: #ffffff;
|
|
28
35
|
--field-placeholder: #8e8e93;
|
|
@@ -41,12 +48,11 @@
|
|
|
41
48
|
--field-icon-color: #8e8e93;
|
|
42
49
|
--field-icon-gap: 10px;
|
|
43
50
|
--field-icon-size: 20px;
|
|
44
|
-
--field-
|
|
51
|
+
/* gap колонки label / капсула / error; подпись и ошибка — свои --field-label-gap / --field-error-gap */
|
|
45
52
|
--field-block-gap: 0;
|
|
53
|
+
/* Textarea/Rich: только мин. высота и интерлиньяж (padding = --field-padding) */
|
|
46
54
|
--field-note-height: 100px;
|
|
47
55
|
--field-note-line-height: 1.5;
|
|
48
|
-
--field-note-padding: 8px;
|
|
49
|
-
--field-note-padding-top: 8px;
|
|
50
56
|
|
|
51
57
|
--field-selection-bg: rgba(235, 235, 245, 0.18);
|
|
52
58
|
--field-selection-color: #ffffff;
|
|
@@ -55,8 +61,16 @@
|
|
|
55
61
|
--field-range-fill: #30d158;
|
|
56
62
|
--field-range-track: #39393d;
|
|
57
63
|
--field-range-bar-height: 14px;
|
|
64
|
+
--field-range-line-height: 2px;
|
|
65
|
+
--field-range-thumb-size: 12px;
|
|
66
|
+
--field-range-thumb: #e4e4e7;
|
|
58
67
|
|
|
59
|
-
--field-
|
|
68
|
+
--field-group-gap: 12px;
|
|
69
|
+
--field-code-gap: 8px;
|
|
70
|
+
/* размер OTP-ячейки: по умолчанию = высота поля (size s/m/l); можно задать 72px / 5rem */
|
|
71
|
+
--field-code-size: var(--field-height);
|
|
72
|
+
--field-tabs-divider: 1px solid #48484a;
|
|
73
|
+
--field-tabs-active-bg: rgba(255, 255, 255, 0.1);
|
|
60
74
|
--field-rating-size: 22px;
|
|
61
75
|
--field-radio-size: 20px;
|
|
62
76
|
|
|
@@ -64,6 +78,10 @@
|
|
|
64
78
|
--field-drag-border-hover: #8e8e93;
|
|
65
79
|
--field-drag-min-height: 88px;
|
|
66
80
|
|
|
81
|
+
/* Оверлеи (попапы Select / Date / Color); обычно перекрываются inline z-index */
|
|
82
|
+
--elcrm-z-popover: 1000;
|
|
83
|
+
--elcrm-z-popover-front: 1001;
|
|
84
|
+
|
|
67
85
|
/* Списки / календарь: только серые пласты */
|
|
68
86
|
--select-overlay: transparent;
|
|
69
87
|
--select-background: #2c2c2e;
|
|
@@ -72,10 +90,16 @@
|
|
|
72
90
|
--select-li-hover-bg: #3a3a3c;
|
|
73
91
|
--select-li-focus-bg: #48484a;
|
|
74
92
|
--select-li-selected-bg: #48484a;
|
|
93
|
+
--select-height: 52px;
|
|
94
|
+
--select-font-size: var(--control-font-size);
|
|
95
|
+
--select-radius: 20px;
|
|
96
|
+
--select-max-height: 300px;
|
|
97
|
+
|
|
98
|
+
/* Общая тень всплывающих окон (Date / Select / Color / Time) */
|
|
99
|
+
--popup-shadow: 0 6px 24px 0 #00000040;
|
|
75
100
|
|
|
76
101
|
/* Календарь (Date popup) */
|
|
77
102
|
--date-popup-radius: 10px;
|
|
78
|
-
--date-popup-shadow: 5px 7px 18px 0 #000000a8;
|
|
79
103
|
--date-popup-min-width: 259px;
|
|
80
104
|
--date-popup-row-height: 34px;
|
|
81
105
|
--date-popup-cell-radius: 5px;
|
|
@@ -85,4 +109,7 @@
|
|
|
85
109
|
--color-picker-width: 260px;
|
|
86
110
|
--color-picker-radius: 16px;
|
|
87
111
|
--color-picker-input-radius: 5px;
|
|
112
|
+
--color-picker-pad: 10px;
|
|
113
|
+
--color-picker-swatch: 20px;
|
|
114
|
+
--color-picker-handle: 14px;
|
|
88
115
|
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { TInput } from './type';
|
|
3
|
+
export type TCard = TInput & {
|
|
4
|
+
/** Встроенная проверка Луна (по умолчанию true) */
|
|
5
|
+
validate?: boolean;
|
|
6
|
+
};
|
|
7
|
+
declare function CardField({ value, form, onValue, onBlur: onBlurField, name, placeholder, label, error, hidden, disabled, className, after, before, maxLength, autoComplete, id, size, validate, }: TCard): import("react/jsx-runtime").JSX.Element | null;
|
|
8
|
+
declare namespace CardField {
|
|
9
|
+
var displayName: string;
|
|
10
|
+
}
|
|
11
|
+
declare const _default: React.MemoExoticComponent<typeof CardField>;
|
|
12
|
+
export default _default;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import e from"../styles/Field.module.js";import t,{useFieldA11y as n}from"../core/Field.js";import{useFormFieldState as r}from"../hooks/use.js";import{createFieldEmit as i}from"./emit.js";import{isEmptyTextLike as a}from"./visibility.js";import{cardDigits as o,emptyCardBrandLock as s,formatCardNumber as c,stepCardBrand as l,validateCardNumber as u}from"./cardUtils.js";import d from"react";import{jsx as f,jsxs as p}from"react/jsx-runtime";function m({brand:e}){let t=e===`visa`?`Visa`:e===`mastercard`?`Mastercard`:e===`amex`?`Amex`:e===`mir`?`Мир`:e===`unionpay`?`UnionPay`:`Карта`;return f(`span`,{"aria-hidden":!0,title:t,style:{display:`inline-flex`,alignItems:`center`,justifyContent:`center`,minWidth:36,height:24,padding:`0 4px`,borderRadius:4,fontSize:10,fontWeight:700,letterSpacing:`0.02em`,lineHeight:1,color:`var(--field-color)`,background:`var(--field-background-focus)`,userSelect:`none`},children:e===`visa`?`VISA`:e===`mastercard`?`MC`:e===`amex`?`AMEX`:e===`mir`?`МИР`:e===`unionpay`?`UP`:`••••`})}function h(){return f(`span`,{"aria-hidden":!0,style:{display:`inline-flex`,alignItems:`center`,justifyContent:`center`,width:20,height:20,borderRadius:`50%`,background:`var(--field-error-color)`,color:`#fff`,fontSize:12,fontWeight:700,lineHeight:1,flexShrink:0},children:`i`})}function g({value:n=``,form:u,onValue:g,onBlur:v,name:y=``,placeholder:b=`0000 0000 0000 0000`,label:x=``,error:S=``,hidden:C=!1,disabled:w=!1,className:T=``,after:E,before:D,maxLength:O,autoComplete:k=`cc-number`,id:A,size:j=`m`,validate:M=!0}){let{value:N,version:P}=r(u,y,n),F=!w,[I,L]=d.useState(()=>o(N));d.useEffect(()=>{L(o(N))},[N,P]);let R=I,z=c(R),[B,V]=d.useState(()=>l(o(N),s()));d.useEffect(()=>{V(l(o(N),s()))},[N,P]);let H=B.brand,U=d.useRef(null),[W,G]=d.useState(``),K=S||W,q=i(u,y,g);if(d.useEffect(()=>{let e=U.current;if(!e)return;let t=c(R);e.value!==t&&(e.value=t)},[R,P]),C&&a(R))return null;let J=D!=null&&D!==``?D:f(m,{brand:H}),Y=E!=null&&E!==``?E:K?f(h,{}):null;return p(t,{type:`card`,label:x,error:K,id:A,size:j,element_blok:{className:[T||``]},element_input:{className:[e.w],props:{"data-disabled":w||!F?`true`:void 0,"data-brand":H}},children:[f(`span`,{className:e.a,children:J}),f(_,{inputRef:U,name:y,display:z,placeholder:b,maxLength:O,disabled:w,editable:F,autoComplete:k,label:x,validate:M,emit:q,setDraftDigits:e=>{L(e),V(t=>l(e,t))},setLocalError:G,onBlurField:v}),Y?f(`span`,{className:e.a,children:Y}):null]})}function _({inputRef:t,name:r,display:i,placeholder:a,maxLength:s,disabled:l,editable:d,autoComplete:p,label:m,validate:h,emit:g,setDraftDigits:_,setLocalError:v,onBlurField:y}){let b=n(),x=(e,t)=>{let n=t.value,r=t.selectionStart??n.length,i=o(n.slice(0,r)).length,a=o(e),s=c(a);t.value=s;let l=s.length,u=0;for(let e=0;e<s.length;e++)if(/\d/.test(s[e])&&(u++,u>=i)){l=e+1;break}return t.setSelectionRange(l,l),a};return f(`div`,{className:e.x,children:f(`input`,{id:b?.controlId,ref:t,className:e.y,type:`text`,name:r||void 0,defaultValue:i,placeholder:a,maxLength:s??23,disabled:l,readOnly:!d,autoComplete:p,inputMode:`numeric`,spellCheck:!1,"aria-label":m?void 0:a||`Номер карты`,"aria-describedby":b?.describedBy,"aria-invalid":b?.errorId?!0:void 0,onChange:e=>{let t=x(e.target.value,e.target);_(t),h&&v(``),g(t)},onBlur:e=>{let t=o(e.target.value);e.target.value=c(t),_(t),g(t,!0),h&&v(u(t)),y?.({value:t,name:r})},onKeyDown:e=>{e.key===`Enter`&&e.preventDefault()}})})}g.displayName=`CardField`;var v=d.memo(g);export{v as default};
|
package/dist/fields/Check.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { TInput } from './type';
|
|
2
|
-
export type TCheckSize = "sm" | "md";
|
|
2
|
+
export type TCheckSize = "s" | "m" | "l" | "sm" | "md";
|
|
3
3
|
export type TCheckVariant = "field" | "plain";
|
|
4
|
+
/** Выравнивание квадрата относительно текста (многострочный label) */
|
|
5
|
+
export type TCheckAlign = "top" | "center" | "bottom";
|
|
4
6
|
export type TCheck = TInput & {
|
|
5
7
|
/**
|
|
6
8
|
* Плотность: `md` — как поле формы (по умолчанию),
|
|
@@ -17,8 +19,10 @@ export type TCheck = TInput & {
|
|
|
17
19
|
* В popover/меню обычно `false`.
|
|
18
20
|
*/
|
|
19
21
|
showFocusRing?: boolean;
|
|
22
|
+
/** Квадрат: top | center | bottom относительно текста. По умолчанию center */
|
|
23
|
+
align?: TCheckAlign;
|
|
20
24
|
};
|
|
21
|
-
declare function CheckField({ value, form, onValue, onBlur: onBlurField, name, placeholder, label, error, hidden, disabled, className, after, before, size, variant, showFocusRing, }: TCheck): import("react/jsx-runtime").JSX.Element | null;
|
|
25
|
+
declare function CheckField({ value, form, onValue, onBlur: onBlurField, name, placeholder, label, error, hidden, disabled, className, after, before, size, variant, showFocusRing, align, }: TCheck): import("react/jsx-runtime").JSX.Element | null;
|
|
22
26
|
declare namespace CheckField {
|
|
23
27
|
var displayName: string;
|
|
24
28
|
}
|
package/dist/fields/Check.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"../styles/Field.module.js";import t,{useFieldA11y as n}from"../core/Field.js";import{useFormFieldState as r}from"../hooks/use.js";import i from"react";import{jsx as
|
|
1
|
+
import e from"../styles/Field.module.js";import t,{useFieldA11y as n}from"../core/Field.js";import{useFormFieldState as r}from"../hooks/use.js";import{createFieldEmit as i}from"./emit.js";import a from"../styles/Check.module.js";import o from"react";import{jsx as s,jsxs as c}from"react/jsx-runtime";function l(e){if(e===!0||e===1)return!0;if(typeof e==`string`){let t=e.trim().toLowerCase();return t===`1`||t===`true`||t===`on`||t===`yes`}return!1}function u({value:n=!1,form:u,onValue:f,onBlur:p,name:m=``,placeholder:h=``,label:g=``,error:_=``,hidden:v=!1,disabled:y=!1,className:b=``,after:x=``,before:S=``,size:C=`m`,variant:w=`field`,showFocusRing:T=!0,align:E=`center`}){let{value:D}=r(u,m,n),O=l(D),k=!y,A=h||``,j=o.useCallback(e=>{i(u,m,f)(e,!0)},[u,m,f]),M=()=>{k&&j(!O)},N=e=>{k&&(e.key===` `||e.key===`Enter`)&&(e.preventDefault(),M())},P=()=>{!p||!m||p({value:l(u&&m?u.getValue(m,O):O),name:m})};return v&&!O?null:c(t,{type:`checkbox`,label:g,error:_,element_blok:{className:[b||``,w===`plain`?a.p:``].filter(Boolean)},element_input:{className:[a.r],props:{"data-disabled":y||!k?`true`:void 0,"data-size":C,"data-variant":w}},children:[S?s(`span`,{className:e.a,children:S}):null,s(`div`,{children:s(d,{checked:O,label:g,text:A,disabled:y,editable:k,size:C,variant:w,showFocusRing:T,align:E,toggle:M,onKeyDown:N,onBlur:P})}),x?s(`span`,{className:e.a,children:x}):null]})}u.displayName=`CheckField`;function d({checked:e,label:t,text:r,disabled:i,editable:o,size:l,variant:u,showFocusRing:d,align:f,toggle:p,onKeyDown:m,onBlur:h}){let g=n();return c(`button`,{type:`button`,id:g?.controlId,className:a.c,role:`checkbox`,"aria-checked":e,"aria-label":t?void 0:r||`Чекбокс`,"aria-describedby":g?.describedBy,"aria-invalid":g?.errorId?!0:void 0,"aria-disabled":i||!o?!0:void 0,disabled:i||!o,"data-size":l,"data-variant":u,"data-align":f,"data-focus-ring":d?`true`:`false`,onClick:p,onKeyDown:m,onBlur:h,children:[s(`span`,{className:a.b,"aria-hidden":!0,children:e?s(`span`,{className:a.m}):null}),r?s(`span`,{className:a.t,children:r}):null]})}export{u as default};
|
package/dist/fields/Code.d.ts
CHANGED
|
@@ -1,14 +1,23 @@
|
|
|
1
1
|
import { TInput } from './type';
|
|
2
|
-
/** CodeField / OTP —
|
|
2
|
+
/** CodeField / OTP — ряд отдельных ячеек. Значение: строка. */
|
|
3
3
|
export type TCode = TInput & {
|
|
4
4
|
length?: number;
|
|
5
5
|
/** Только цифры (по умолчанию) */
|
|
6
6
|
numeric?: boolean;
|
|
7
|
+
/**
|
|
8
|
+
* Разбить ячейки на группы через «-».
|
|
9
|
+
* Например `group={3}` при `length={6}` → □□□ - □□□.
|
|
10
|
+
*/
|
|
11
|
+
group?: number;
|
|
12
|
+
/**
|
|
13
|
+
* Сторона квадратной ячейки (переопределяет `--field-code-size`).
|
|
14
|
+
* По умолчанию ячейка = высота поля (`size` → `--field-height`).
|
|
15
|
+
* Число → px; строка — любое CSS-значение (`"4.5rem"`, `"96px"`).
|
|
16
|
+
*/
|
|
17
|
+
cellSize?: number | string;
|
|
7
18
|
};
|
|
8
|
-
declare function CodeField({ value, form, onValue, onBlur: onBlurField, name, placeholder, label, error, hidden, disabled, className, after, before, length, numeric, autoComplete, }: TCode): import("react/jsx-runtime").JSX.Element | null;
|
|
19
|
+
declare function CodeField({ value, form, onValue, onBlur: onBlurField, name, placeholder, label, error, hidden, disabled, className, after, before, size, length, numeric, group, cellSize, autoComplete, }: TCode): import("react/jsx-runtime").JSX.Element | null;
|
|
9
20
|
declare namespace CodeField {
|
|
10
21
|
var displayName: string;
|
|
11
22
|
}
|
|
12
|
-
/** Алиас OTP */
|
|
13
|
-
export { CodeField as OtpField };
|
|
14
23
|
export default CodeField;
|
package/dist/fields/Code.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"../styles/Field.module.js";import t from"../core/Field.js";import{useFormFieldState as n}from"../hooks/use.js";import{
|
|
1
|
+
import e from"../styles/Field.module.js";import t from"../core/Field.js";import{useFormFieldState as n}from"../hooks/use.js";import{createFieldEmit as r}from"./emit.js";import{isEmptyTextLike as i}from"./visibility.js";import a from"../styles/Code.module.js";import o from"react";import{jsx as s,jsxs as c}from"react/jsx-runtime";function l(e,t){return e?e.length===1?e:e[t]||`0`:`0`}function u({value:u=``,form:d,onValue:f,onBlur:p,name:m=``,placeholder:h=``,label:g=``,error:_=``,hidden:v=!1,disabled:y=!1,className:b=``,after:x=``,before:S=``,size:C=`m`,length:w=6,numeric:T=!0,group:E,cellSize:D,autoComplete:O=`one-time-code`}){let{value:k,version:A}=n(d,m,u),j=!y,M=(T?String(k??``).replace(/\D/g,``):String(k??``)).slice(0,w),N=o.useRef([]),P=E&&E>0?E:w===6?3:0,F=o.useMemo(()=>{if(D!=null)return{"--field-code-size":typeof D==`number`?`${D}px`:D}},[D]);o.useEffect(()=>{},[A]);let I=r(d,m,f),L=(e,t)=>{let n=M.padEnd(w,` `).split(``);n[e]=t;let r=n.join(``).replace(/ /g,``).slice(0,w);return I(r,!0),r},R=(e,t)=>{let n=T?t.replace(/\D/g,``):t;if(!n){L(e,``);return}if(n.length>1){let e=n.slice(0,w);I(e,!0);let t=Math.min(e.length,w-1);N.current[t]?.focus();return}L(e,n),e<w-1&&N.current[e+1]?.focus()};if(v&&i(M))return null;let z=[];for(let e=0;e<w;e++)P>0&&e>0&&e%P===0&&z.push(s(`span`,{className:a.s,"aria-hidden":!0,children:`-`},`sep-${e}`)),z.push(s(`input`,{ref:t=>{N.current[e]=t},className:a.c,type:`text`,inputMode:T?`numeric`:`text`,autoComplete:e===0?O:`off`,maxLength:1,disabled:y||!j,value:M[e]||``,placeholder:l(h,e),"aria-label":`${e+1} из ${w}`,onChange:t=>R(e,t.target.value),onKeyDown:t=>{t.key===`Backspace`&&!M[e]&&e>0&&(t.preventDefault(),L(e-1,``),N.current[e-1]?.focus()),t.key===`ArrowLeft`&&e>0&&(t.preventDefault(),N.current[e-1]?.focus()),t.key===`ArrowRight`&&e<w-1&&(t.preventDefault(),N.current[e+1]?.focus())},onBlur:()=>{let e=document.activeElement;N.current.some(t=>t===e)||p?.({value:M,name:m})},onPaste:e=>{e.preventDefault();let t=e.clipboardData.getData(`text`)||``,n=(T?t.replace(/\D/g,``):t).slice(0,w);I(n,!0),N.current[Math.min(n.length,w-1)]?.focus()}},e));return c(t,{type:`code`,label:g,error:_,size:C,element_blok:{className:[b||``]},element_input:{className:[a.r],props:{"data-disabled":y||!j?`true`:void 0}},children:[S?s(`span`,{className:e.a,children:S}):null,s(`div`,{className:a.i,role:`group`,"aria-label":g||h||`Код`,style:F,children:z}),x?s(`span`,{className:e.a,children:x}):null]})}u.displayName=`CodeField`;export{u as default};
|
package/dist/fields/Color.d.ts
CHANGED
|
@@ -1,23 +1,18 @@
|
|
|
1
1
|
import { TInput } from './type';
|
|
2
|
-
|
|
3
|
-
export
|
|
4
|
-
type Hsva = {
|
|
5
|
-
h: number;
|
|
6
|
-
s: number;
|
|
7
|
-
v: number;
|
|
8
|
-
a: number;
|
|
9
|
-
};
|
|
10
|
-
/** #RGB / #RRGGBB / #RRGGBBAA → hsva */
|
|
11
|
-
export declare function parseHexColor(input: unknown): Hsva | null;
|
|
12
|
-
/** hsva → #RRGGBB или #RRGGBBAA (alpha < 1) */
|
|
13
|
-
export declare function formatHexColor(hsva: Hsva, withAlpha: boolean): string;
|
|
2
|
+
export { DEFAULT_COLOR_PALETTE, parseHexColor, formatHexColor } from './colorUtils';
|
|
3
|
+
export type { Hsva } from './colorUtils';
|
|
14
4
|
export type TColor = TInput & {
|
|
15
5
|
/** Свои пресеты; иначе встроенная палитра */
|
|
16
6
|
colors?: string[];
|
|
17
7
|
/** Показывать слайдер opacity (по умолчанию true) */
|
|
18
8
|
alpha?: boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Палитра сразу в поле (справа от hex).
|
|
11
|
+
* В попапе пресеты скрываются — там остаётся пикер SV/hue/hex.
|
|
12
|
+
*/
|
|
13
|
+
inlinePalette?: boolean;
|
|
19
14
|
};
|
|
20
|
-
declare function ColorField({ value, form, onValue, onBlur: onBlurField, name, placeholder, label, error, hidden, disabled, className, after, before, colors, alpha, }: TColor): import("react/jsx-runtime").JSX.Element | null;
|
|
15
|
+
declare function ColorField({ value, form, onValue, onBlur: onBlurField, name, placeholder, label, error, hidden, disabled, className, after, before, colors, alpha, inlinePalette, }: TColor): import("react/jsx-runtime").JSX.Element | null;
|
|
21
16
|
declare namespace ColorField {
|
|
22
17
|
var displayName: string;
|
|
23
18
|
}
|
package/dist/fields/Color.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"../styles/Field.module.js";import t from"../core/Field.js";import{useFormFieldState as n}from"../hooks/use.js";import{
|
|
1
|
+
import e from"../styles/Field.module.js";import t from"../core/Field.js";import{useFormFieldState as n}from"../hooks/use.js";import{createFieldEmit as r}from"./emit.js";import i from"../styles/Color.module.js";import{DEFAULT_COLOR_PALETTE as a,formatHexColor as o,isEditablePasteTarget as s,isEmptyColor as c,normalizeHexCompare as l,parseClipboardColor as ee,parseHexColor as u}from"./colorUtils.js";import te from"./ColorPanel.js";import d from"react";import{Fragment as ne,jsx as f,jsxs as p}from"react/jsx-runtime";import{createPortal as re}from"react-dom";var m={h:0,s:1,v:.76,a:1};function h({value:h=``,form:g,onValue:_,onBlur:ie,name:v=``,placeholder:y=`#000000`,label:b=``,error:x=``,hidden:S=!1,disabled:C=!1,className:ae=``,after:w=``,before:T=``,colors:E,alpha:D=!0,inlinePalette:O=!1}){let{value:k}=n(g,v,h),A=typeof k==`string`?k:k==null?``:String(k),[j,M]=d.useState(!1),[oe,N]=d.useState(null),P=d.useRef(null),[F,I]=d.useState(()=>u(A)??{...m}),[L,R]=d.useState(()=>o(u(A)??m,D)),z=d.useCallback(()=>{let e=P.current;if(!e)return;let t=e.getBoundingClientRect();N(e=>e&&e.top===t.top&&e.left===t.left&&e.width===t.width&&e.height===t.height&&e.bottom===t.bottom?e:t)},[]);d.useEffect(()=>{if(!j)return;z();let e=()=>z();return window.addEventListener(`scroll`,e,!0),window.addEventListener(`resize`,e),()=>{window.removeEventListener(`scroll`,e,!0),window.removeEventListener(`resize`,e)}},[j,z]);let B=E?.length?E:a,V=u(A),H=V??(c(A)?u(y):null),U=V?o(V,D):``,W=H?o(H,D):`transparent`;d.useEffect(()=>{let e=u(A);e&&(I(e),R(o(e,D)))},[A,D]);let G=d.useCallback((e,t)=>{let n=o(e,D);r(g,v,_)(n,t===`commit`),R(n)},[D,g,v,_]),[K,q]=d.useState(null),[se,J]=d.useState(!1),Y=d.useRef(null),X=d.useRef(null);d.useEffect(()=>()=>{Y.current&&clearTimeout(Y.current),X.current&&clearTimeout(X.current)},[]);let ce=e=>{if(C)return;let t=u(e);if(!t)return;let n={...t,a:D?t.a:1};I(n),G(n,`commit`)},le=e=>{if(C||K)return;let t=l(e);Z&&t===Z||(q(e),Y.current&&clearTimeout(Y.current),Y.current=setTimeout(()=>{ce(e),q(null),J(!0),X.current&&clearTimeout(X.current),X.current=setTimeout(()=>{J(!1)},280)},220))},Z=V?l(o(V,D)):``,ue=d.useMemo(()=>{if(!O)return[];let e=K?l(K):``;return B.filter(t=>{let n=l(t);return e&&n===e?!0:!(Z&&n===Z)})},[O,B,Z,K]),Q=e=>{if(C)return;let t=u(A)??{...F};I(t),R(o(t,D)),N(e.getBoundingClientRect()),M(!0)},$=()=>{M(!1),ie?.({value:o(F,D),name:v||``})};d.useEffect(()=>{if(!j||C)return;let e=``,t=t=>{let n=ee(t);if(!n)return!1;let r={...n,a:D?n.a:1},i=o(r,D);return i===e?!0:(e=i,I(r),G(r,`commit`),!0)},n=e=>{s(e.target)||t(e.clipboardData?.getData(`text/plain`)??``)&&(e.preventDefault(),e.stopPropagation())},r=e=>{(e.ctrlKey||e.metaKey)&&(e.key!==`v`&&e.key!==`V`||s(e.target)||navigator.clipboard?.readText&&(e.preventDefault(),navigator.clipboard.readText().then(e=>{t(e)})))};return document.addEventListener(`paste`,n,!0),window.addEventListener(`keydown`,r,!0),()=>{document.removeEventListener(`paste`,n,!0),window.removeEventListener(`keydown`,r,!0)}},[j,C,D,G]);let de=e=>{if(!C){if(!j&&(e.key===`Enter`||e.key===` `||e.key===`ArrowDown`)){e.preventDefault(),Q(e.currentTarget);return}j&&e.key===`Escape`&&(e.preventDefault(),$())}};return S&&c(A)?null:p(ne,{children:[p(t,{type:`color`,label:b,error:x,element_blok:{className:[ae||``]},element_input:{className:[e.w,i.q],props:{"data-disabled":C?`true`:void 0}},children:[T?f(`span`,{className:e.a,children:T}):null,p(`div`,{ref:P,className:i.t,role:`combobox`,tabIndex:C?-1:0,"aria-expanded":j,"aria-haspopup":`dialog`,"aria-disabled":C,"aria-label":b||`Цвет`,onClick:e=>Q(e.currentTarget),onKeyDown:de,children:[f(`span`,{className:i.c,"data-enter":se?`true`:void 0,style:{"--preview-color":W}}),f(`span`,{className:[i.g,U?``:i.m].filter(Boolean).join(` `),children:U||y})]}),O?f(`div`,{className:i.j,role:`listbox`,"aria-label":`Палитра`,onClick:e=>e.stopPropagation(),onMouseDown:e=>e.stopPropagation(),children:ue.map(e=>{let t=K!=null&&l(e)===l(K);return f(`button`,{type:`button`,role:`option`,"aria-label":e,disabled:C||!!K,className:i.k,"data-exit":t?`true`:void 0,style:{"--swatch":e},onClick:t=>{t.stopPropagation(),le(e)}},e)})}):null,w?f(`span`,{className:e.a,children:w}):null]}),j&&re(f(te,{parent:oe||void 0,hsva:F,setHsva:I,hexDraft:L,setHexDraft:R,alpha:D,palette:B,showPalette:!O,onLive:e=>G(e,`live`),onCommit:e=>G(e,`commit`),onClose:$}),document.body)]})}h.displayName=`ColorField`;export{h as default};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { Hsva } from './colorUtils';
|
|
3
|
+
export default function ColorPanel({ parent, hsva, setHsva, hexDraft, setHexDraft, alpha, palette, showPalette, onLive, onCommit, onClose, }: {
|
|
4
|
+
parent?: DOMRect;
|
|
5
|
+
hsva: Hsva;
|
|
6
|
+
setHsva: React.Dispatch<React.SetStateAction<Hsva>>;
|
|
7
|
+
hexDraft: string;
|
|
8
|
+
setHexDraft: React.Dispatch<React.SetStateAction<string>>;
|
|
9
|
+
alpha: boolean;
|
|
10
|
+
palette: string[];
|
|
11
|
+
/** false — пресеты уже в поле, в попапе не дублируем */
|
|
12
|
+
showPalette?: boolean;
|
|
13
|
+
onLive: (next: Hsva) => void;
|
|
14
|
+
onCommit: (next: Hsva) => void;
|
|
15
|
+
onClose: () => void;
|
|
16
|
+
}): import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{acquireOverlayZIndex as e,releaseOverlayZIndex as t}from"../overlayZ.js";import n from"../styles/Color.module.js";import{clamp as r,cssColor as i,formatHexColor as a,hasEyeDropper as o,hueCss as s,normalizeHexCompare as c,parseHexColor as l}from"./colorUtils.js";import u from"react";import{Fragment as d,jsx as f,jsxs as p}from"react/jsx-runtime";function m({parent:s,hsva:m,setHsva:v,hexDraft:b,setHexDraft:x,alpha:S,palette:C,showPalette:w=!0,onLive:T,onCommit:E,onClose:D}){let[O]=u.useState(()=>e());if(u.useEffect(()=>()=>t(O),[O]),!s)return null;let k=(S?340:300)-(w?0:90),A=window.innerHeight-s.bottom<k+8?s.top-k-8:s.bottom+8;A=Math.min(A,window.innerHeight-k-8),A=Math.max(8,A);let j=Math.min(Math.max(8,s.left),window.innerWidth-260-8),M=i({...m,a:1}),N=c(a(m,S)),P=(e,t)=>{v(e),t===`live`?T(e):E(e)},F=()=>{let e=l(b);if(!e){x(a(m,S));return}P(e,`commit`)},I=e=>{let t=e.replace(/[^\d]/g,``),n=r(Number(t||0),0,100);P({...m,a:n/100},`commit`)},L=async()=>{if(o())try{let e=window.EyeDropper,t=l((await new e().open()).sRGBHex);t&&P({...t,a:m.a},`commit`)}catch{}};return p(d,{children:[f(`div`,{className:n.o,style:{zIndex:O},onClick:D,"aria-hidden":!0}),p(`div`,{className:n.p,role:`dialog`,"aria-label":`Выбор цвета`,style:{top:A,left:j,width:260,zIndex:O+1},children:[f(h,{hsva:m,onChange:(e,t,n)=>P({...m,s:e,v:t},n)}),p(`div`,{className:n.r,children:[o()?f(`button`,{type:`button`,className:n.e,"aria-label":`Пипетка`,onClick:L,children:f(y,{})}):null,p(`div`,{className:n.s,children:[f(g,{h:m.h,onChange:(e,t)=>P({...m,h:e},t)}),S?f(_,{a:m.a,color:M,onChange:(e,t)=>P({...m,a:e},t)}):null]})]}),p(`div`,{className:n.i,children:[f(`span`,{className:n.f,children:`Hex`}),f(`input`,{className:n.n,value:b.replace(/^#/,``),spellCheck:!1,"aria-label":`Hex`,onChange:e=>{let t=e.target.value.replace(/[^0-9a-fA-F]/g,``);x(t?`#${t}`:``)},onBlur:F,onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),e.target.blur())}}),S?f(`input`,{className:`${n.n} ${n.x}`,value:`${Math.round(m.a*100)} %`,"aria-label":`Прозрачность`,onChange:e=>I(e.target.value),onFocus:e=>e.target.select()}):null]}),w?f(`div`,{className:n.y,role:`listbox`,"aria-label":`Палитра`,children:C.map(e=>{let t=c(e)===N;return f(`button`,{type:`button`,role:`option`,"aria-checked":t,"aria-label":e,className:n.z,style:{"--swatch":e},onClick:()=>{let t=l(e);t&&P({...t,a:S?t.a:1},`commit`)}},e)})}):null]})]})}function h({hsva:e,onChange:t}){let a=u.useRef(null),o=u.useRef(!1),c=u.useRef(t);c.current=t;let l=(t,n)=>{let i=a.current;if(!i)return{s:e.s,v:e.v};let o=i.getBoundingClientRect();return{s:r((t-o.left)/o.width,0,1),v:r(1-(n-o.top)/o.height,0,1)}};return u.useEffect(()=>{let e=e=>{if(!o.current)return;let{s:t,v:n}=l(e.clientX,e.clientY);c.current(t,n,`live`)},t=e=>{if(!o.current)return;o.current=!1;let{s:t,v:n}=l(e.clientX,e.clientY);c.current(t,n,`commit`)};return window.addEventListener(`pointermove`,e),window.addEventListener(`pointerup`,t),()=>{window.removeEventListener(`pointermove`,e),window.removeEventListener(`pointerup`,t)}},[]),p(`div`,{ref:a,className:n.v,style:{background:s(e.h)},onPointerDown:e=>{o.current=!0;let{s:t,v:n}=l(e.clientX,e.clientY);c.current(t,n,`live`)},children:[f(`div`,{className:n.w}),f(`div`,{className:n.b}),f(`div`,{className:n.h,style:{left:`${e.s*100}%`,top:`${(1-e.v)*100}%`,background:i({...e,a:1})}})]})}function g({h:e,onChange:t}){return f(v,{className:`${n.l} ${n.u}`,ratio:e/360,onRatio:(e,n)=>t(e*360,n),handleColor:s(e)})}function _({a:e,color:t,onChange:r}){return f(v,{className:`${n.l} ${n.a}`,style:{"--alpha-color":t},ratio:e,onRatio:r,handleColor:t})}function v({className:e,style:t,ratio:i,onRatio:a,handleColor:o}){let s=u.useRef(null),c=u.useRef(!1),l=(e,t)=>{let n=s.current;if(!n)return;let i=n.getBoundingClientRect();a(r((e-i.left)/i.width,0,1),t)};return u.useEffect(()=>{let e=e=>{c.current&&l(e.clientX,`live`)},t=e=>{c.current&&(c.current=!1,l(e.clientX,`commit`))};return window.addEventListener(`pointermove`,e),window.addEventListener(`pointerup`,t),()=>{window.removeEventListener(`pointermove`,e),window.removeEventListener(`pointerup`,t)}},[a]),f(`div`,{ref:s,className:e,style:t,onPointerDown:e=>{c.current=!0,l(e.clientX,`live`)},children:f(`div`,{className:n.d,style:{left:`${r(i,0,1)*100}%`,background:o}})})}function y(){return p(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":!0,children:[f(`path`,{d:`m2 22 1-1h3l9-9`}),f(`path`,{d:`M3 21v-3l9-9`}),f(`path`,{d:`m15 5 3 3`}),f(`path`,{d:`M17.5 2.5a2.12 2.12 0 0 1 3 3L12 14l-4 1 1-4Z`})]})}export{m as default};
|