@skbkontur/react-ui 6.4.7-25ce4.0 → 6.4.7-9ac75.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/Input/Input.css.js +2 -2
- package/lib/theming/themeVars.d.ts +3 -3
- package/lib/theming/themeVars.js +20 -5
- package/lib/theming/themeVars.js.map +1 -1
- package/package.json +1 -1
- package/react-ui.css +600 -600
|
@@ -3,7 +3,7 @@ export var borderless = 'react-ui-Input__borderless';
|
|
|
3
3
|
export var disabled = 'react-ui-Input__disabled';
|
|
4
4
|
export var error = 'react-ui-Input__error';
|
|
5
5
|
export var focus = 'react-ui-Input__focus';
|
|
6
|
-
export var focusRule = {backgroundColor:'var(--k-inputFocusedBg, var(--k-color-shape-other-field, #ffffff))',borderColor:'var(--k-inputBorderColorFocus, var(--k-color-line-accent-bold, #484848))',boxShadow:'var(--k-inputFocusShadow, 0 0 0 calc(2px - 1px) var(--k-color-line-accent-bold, #484848))',outline:'none',zIndex:2};
|
|
6
|
+
export var focusRule = {backgroundColor:'var(--k-inputFocusedBg, var(--k-inputBg, var(--k-color-shape-other-field, #ffffff)))',borderColor:'var(--k-inputBorderColorFocus, var(--k-borderColorFocus, var(--k-color-line-accent-bold, #484848)))',boxShadow:'var(--k-inputFocusShadow, 0 0 0 var(--k-inputOutlineWidth, calc(var(--k-controlOutlineWidth, 2px) - 1px)) var(--k-borderColorFocus, var(--k-color-line-accent-bold, #484848)))',outline:'none',zIndex:2};
|
|
7
7
|
export var hideBlinkingCursor = 'react-ui-Input__hideBlinkingCursor';
|
|
8
8
|
export var hovering = 'react-ui-Input__hovering';
|
|
9
9
|
export var input = 'react-ui-Input__input';
|
|
@@ -13,7 +13,7 @@ export var placeholder = 'react-ui-Input__placeholder';
|
|
|
13
13
|
export var placeholderDisabled = 'react-ui-Input__placeholderDisabled';
|
|
14
14
|
export var placeholderFocus = 'react-ui-Input__placeholderFocus';
|
|
15
15
|
export var root = 'react-ui-Input__root';
|
|
16
|
-
export var rootRule = {letterSpacing:'normal',lineHeight:'normal',fontFamily:'inherit',fontWeight:'normal',fontStyle:'normal',fontVariant:'normal',fontStretch:'normal',textAlign:'initial',textTransform:'none',textShadow:'none',alignItems:'center',backgroundClip:'var(--k-inputBackgroundClip, padding-box)',backgroundColor:'var(--k-inputBg, var(--k-color-shape-other-field, #ffffff))',border:'var(--k-inputBorderWidth, 1px) solid var(--k-inputBorderColor, var(--k-color-line-neutral-pale, rgba(0, 0, 0, 0.16)))',borderTopColor:'var(--k-inputBorderTopColor, var(--k-color-line-neutral-pale, rgba(0, 0, 0, 0.16)))',transition:'border-color var(--k-transitionDuration, 100ms) var(--k-transitionTimingFunction, cubic-bezier(0.5, 1, 0.89, 1))',boxShadow:'var(--k-inputShadow, none)',boxSizing:'border-box',color:'var(--k-inputColor, inherit)',cursor:'text',display:'inline-flex',outline:'none',position:'relative',width:'var(--k-inputWidth, 200px)'};
|
|
16
|
+
export var rootRule = {letterSpacing:'normal',lineHeight:'normal',fontFamily:'inherit',fontWeight:'normal',fontStyle:'normal',fontVariant:'normal',fontStretch:'normal',textAlign:'initial',textTransform:'none',textShadow:'none',alignItems:'center',backgroundClip:'var(--k-inputBackgroundClip, padding-box)',backgroundColor:'var(--k-inputBg, var(--k-color-shape-other-field, #ffffff))',border:'var(--k-inputBorderWidth, var(--k-controlBorderWidth, 1px)) solid var(--k-inputBorderColor, var(--k-color-line-neutral-pale, rgba(0, 0, 0, 0.16)))',borderTopColor:'var(--k-inputBorderTopColor, var(--k-inputBorderColor, var(--k-color-line-neutral-pale, rgba(0, 0, 0, 0.16))))',transition:'border-color var(--k-transitionDuration, 100ms) var(--k-transitionTimingFunction, cubic-bezier(0.5, 1, 0.89, 1))',boxShadow:'var(--k-inputShadow, none)',boxSizing:'border-box',color:'var(--k-inputColor, inherit)',cursor:'text',display:'inline-flex',outline:'none',position:'relative',width:'var(--k-inputWidth, 200px)'};
|
|
17
17
|
export var sizeLarge = 'react-ui-Input__sizeLarge';
|
|
18
18
|
export var sizeMedium = 'react-ui-Input__sizeMedium';
|
|
19
19
|
export var sizeSmall = 'react-ui-Input__sizeSmall';
|
|
@@ -25,9 +25,9 @@ export declare const getThemeVars: (theme: Theme, parent?: Theme | null) => Reac
|
|
|
25
25
|
*/
|
|
26
26
|
export declare const getServerThemeVarsAttr: (vars: React.CSSProperties) => string | undefined;
|
|
27
27
|
/**
|
|
28
|
-
* Значение токена по умолчанию:
|
|
29
|
-
*
|
|
30
|
-
* Для условий в стилях, которые вычисляются при сборке.
|
|
28
|
+
* Значение токена по умолчанию: раскрывает обёртки `var(--k-<токен>, <значение>)` (и вложенные цепочки производных
|
|
29
|
+
* токенов) до значения без переопределений. Палитру `var(--k-color-..., #fff)` не раскрываем: master сравнивал
|
|
30
|
+
* именно эти строки. Для условий в стилях, которые вычисляются при сборке.
|
|
31
31
|
*/
|
|
32
32
|
export declare const tokenDefault: (value: string) => string;
|
|
33
33
|
/**
|
package/lib/theming/themeVars.js
CHANGED
|
@@ -88,13 +88,28 @@ export var getServerThemeVarsAttr = function (vars) {
|
|
|
88
88
|
return attr || undefined;
|
|
89
89
|
};
|
|
90
90
|
/**
|
|
91
|
-
* Значение токена по умолчанию:
|
|
92
|
-
*
|
|
93
|
-
* Для условий в стилях, которые вычисляются при сборке.
|
|
91
|
+
* Значение токена по умолчанию: раскрывает обёртки `var(--k-<токен>, <значение>)` (и вложенные цепочки производных
|
|
92
|
+
* токенов) до значения без переопределений. Палитру `var(--k-color-..., #fff)` не раскрываем: master сравнивал
|
|
93
|
+
* именно эти строки. Для условий в стилях, которые вычисляются при сборке.
|
|
94
94
|
*/
|
|
95
95
|
export var tokenDefault = function (value) {
|
|
96
|
-
var
|
|
97
|
-
|
|
96
|
+
var open = /var\(--k-[A-Za-z0-9]+,\s*/g;
|
|
97
|
+
var result = value.trim();
|
|
98
|
+
for (var match = open.exec(result); match; match = open.exec(result)) {
|
|
99
|
+
var depth = 1;
|
|
100
|
+
var end = open.lastIndex;
|
|
101
|
+
for (; end < result.length && depth > 0; end++) {
|
|
102
|
+
if (result[end] === '(') {
|
|
103
|
+
depth++;
|
|
104
|
+
}
|
|
105
|
+
else if (result[end] === ')') {
|
|
106
|
+
depth--;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
result = result.slice(0, match.index) + result.slice(open.lastIndex, end - 1) + result.slice(end);
|
|
110
|
+
open.lastIndex = match.index;
|
|
111
|
+
}
|
|
112
|
+
return result;
|
|
98
113
|
};
|
|
99
114
|
var setTokensCache = new WeakMap();
|
|
100
115
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"themeVars.js","sourceRoot":"","sources":["themeVars.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"themeVars.js","sourceRoot":"","sources":["themeVars.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAGtC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,iGAAiG;AACjG,OAAO,uBAAuB,CAAC;AAE/B,IAAM,gBAAgB,GAAG,MAAM,CAAC;AAEhC,MAAM,CAAC,IAAM,YAAY,GAAG,UAAC,KAAa,IAAa,OAAA,UAAG,gBAAgB,SAAG,KAAK,CAAE,EAA7B,CAA6B,CAAC;AAErF,IAAM,KAAK,GAAG,IAAI,OAAO,EAA8C,CAAC;AAExE,IAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;AACxC,KAAK,IAAM,GAAG,IAAI,WAAW,EAAE,CAAC;IAC9B,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;AACvC,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,IAAM,aAAa,GAAG,UAAC,KAAsC;IAClE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAM,IAAI,GAA4B,EAAE,CAAC;IACzC,KAAkB,UAAkB,EAAlB,KAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAlB,cAAkB,EAAlB,IAAkB,EAAE,CAAC;QAAlC,IAAM,GAAG,SAAA;QACZ,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAgC,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IACD,OAAO,IAA2B,CAAC;AACrC,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,IAAM,mBAAmB,GAAG,aAAa,CAAe,IAAI,CAAC,CAAC;AACrE,mBAAmB,CAAC,WAAW,GAAG,qBAAqB,CAAC;AAExD;;;;GAIG;AACH,MAAM,CAAC,IAAM,YAAY,GAAG,UAAC,KAAY,EAAE,MAA2B;IAA3B,uBAAA,EAAA,aAA2B;IACpE,IAAM,SAAS,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,WAAW,CAAC;IACxC,IAAI,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,QAAQ,GAAG,IAAI,OAAO,EAAE,CAAC;QACzB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC7B,CAAC;IACD,IAAI,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACnC,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,GAAG,EAAE,CAAC;IACV,IAAI,KAAK,KAAK,WAAW,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,WAAW,CAAC,EAAE,CAAC;QAChE,KAAK,IAAM,GAAG,IAAI,KAAK,EAAE,CAAC;YACxB,IAAM,KAAK,GAAI,KAA4C,CAAC,GAAG,CAAC,CAAC;YACjE,IAAM,IAAI,GAAI,WAAkD,CAAC,GAAG,CAAC,CAAC;YACtE,IAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAE,MAA6C,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACtF,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACrD,6GAA6G;gBAC7G,kBAAkB;gBACjB,IAA+B,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;YAC3G,CAAC;QACH,CAAC;IACH,CAAC;IACD,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC9B,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,IAAM,aAAa,GAAG,IAAI,OAAO,EAA+B,CAAC;AAEjE;;;GAGG;AACH,MAAM,CAAC,IAAM,sBAAsB,GAAG,UAAC,IAAyB;IAC9D,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;QACpC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;aACxB,GAAG,CAAC,UAAC,EAAa;gBAAZ,IAAI,QAAA,EAAE,KAAK,QAAA;YAAM,OAAA,UAAG,IAAI,cAAI,KAAK,CAAE;QAAlB,CAAkB,CAAC;aAC1C,IAAI,CAAC,GAAG,CAAC,CAAC;QACb,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,IAAI,IAAI,SAAS,CAAC;AAC3B,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,IAAM,YAAY,GAAG,UAAC,KAAa;IACxC,IAAM,IAAI,GAAG,4BAA4B,CAAC;IAC1C,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC1B,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACrE,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;QACzB,OAAO,GAAG,GAAG,MAAM,CAAC,MAAM,IAAI,KAAK,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;YAC/C,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC;gBACxB,KAAK,EAAE,CAAC;YACV,CAAC;iBAAM,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC;gBAC/B,KAAK,EAAE,CAAC;YACV,CAAC;QACH,CAAC;QACD,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAClG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;IAC/B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,IAAM,cAAc,GAAG,IAAI,OAAO,EAAiB,CAAC;AAEpD;;;GAGG;AACH,MAAM,CAAC,IAAM,iBAAiB,GAAG,UAAC,KAAY;IAC5C,IAAI,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,IAAM,GAAG,GAAa,EAAE,CAAC;QACzB,KAAK,IAAM,GAAG,IAAI,KAAK,EAAE,CAAC;YACxB,IAAM,KAAK,GAAI,KAA4C,CAAC,GAAG,CAAC,CAAC;YACjE,IACG,WAAkD,CAAC,GAAG,CAAC,KAAK,EAAE;gBAC/D,OAAO,KAAK,KAAK,QAAQ;gBACzB,KAAK,KAAK,EAAE,EACZ,CAAC;gBACD,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC;QACH,CAAC;QACD,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvB,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC","sourcesContent":["import type React from 'react';\nimport { createContext } from 'react';\n\nimport type { Theme } from './Theme.js';\nimport { LIGHT_THEME } from './themes/LightTheme.js';\n// переносит тему из серверного HTML под строгим CSP до гидрации; модуль грузят все носители темы\nimport '../../theme-loader.js';\n\nconst THEME_VAR_PREFIX = '--k-';\n\nexport const themeVarName = (token: string): string => `${THEME_VAR_PREFIX}${token}`;\n\nconst cache = new WeakMap<Theme, WeakMap<Theme, React.CSSProperties>>();\n\nconst themeVarNames = new Set<string>();\nfor (const key in LIGHT_THEME) {\n themeVarNames.add(themeVarName(key));\n}\n\n/**\n * Стили без переменных темы. Носитель кладёт их ребёнку в `props.style`, и если ребёнок — компонент,\n * они доезжают до вложенного носителя: там они уже посчитаны заново, а старые значения мешали бы\n * вложенной теме вернуть токен к значению по умолчанию. Чужие `--k-color-*` из палитры не трогаем.\n */\nexport const omitThemeVars = (style: React.CSSProperties | undefined): React.CSSProperties => {\n if (!style) {\n return {};\n }\n const rest: Record<string, unknown> = {};\n for (const key of Object.keys(style)) {\n if (!themeVarNames.has(key)) {\n rest[key] = style[key as keyof React.CSSProperties];\n }\n }\n return rest as React.CSSProperties;\n};\n\n/**\n * Тема, которую применил ближайший носитель выше по DOM (CommonWrapper, контейнер портала). Нужна, чтобы\n * вложенная тема могла вернуть токен к значению по умолчанию: переменная предка иначе наследуется.\n */\nexport const ThemeCarrierContext = createContext<Theme | null>(null);\nThemeCarrierContext.displayName = 'ThemeCarrierContext';\n\n/**\n * Переменные, которыми тема отличается от темы носителя выше (без носителя — от темы по умолчанию: её значения\n * уже зашиты в CSS запасными значениями `var(--k-x, <значение>)`). Токен, вернувшийся к значению по умолчанию,\n * сбрасывается в `initial`: иначе наследовалась бы переменная предка.\n */\nexport const getThemeVars = (theme: Theme, parent: Theme | null = null): React.CSSProperties => {\n const parentKey = parent ?? LIGHT_THEME;\n let byParent = cache.get(theme);\n if (!byParent) {\n byParent = new WeakMap();\n cache.set(theme, byParent);\n }\n let vars = byParent.get(parentKey);\n if (vars) {\n return vars;\n }\n vars = {};\n if (theme !== LIGHT_THEME || (parent && parent !== LIGHT_THEME)) {\n for (const key in theme) {\n const value = (theme as unknown as Record<string, unknown>)[key];\n const base = (LIGHT_THEME as unknown as Record<string, unknown>)[key];\n const inherited = parent ? (parent as unknown as Record<string, unknown>)[key] : base;\n if (typeof value === 'string' && value !== inherited) {\n // `initial` делает переменную недействительной — срабатывает запасное значение из var(); `inherit` вернул бы\n // значение предка\n (vars as Record<string, string>)[themeVarName(key)] = value === base || value === '' ? 'initial' : value;\n }\n }\n }\n byParent.set(parentKey, vars);\n return vars;\n};\n\nconst varsAttrCache = new WeakMap<React.CSSProperties, string>();\n\n/**\n * Копия переменных темы для theme-loader.js: в серверном HTML атрибут `style` блокирует строгий CSP. Только на\n * сервере — на клиенте React ставит style через CSSOM, а лишний атрибут помешал бы гидрации.\n */\nexport const getServerThemeVarsAttr = (vars: React.CSSProperties): string | undefined => {\n if (typeof document !== 'undefined') {\n return undefined;\n }\n let attr = varsAttrCache.get(vars);\n if (attr === undefined) {\n attr = Object.entries(vars)\n .map(([name, value]) => `${name}:${value}`)\n .join(';');\n varsAttrCache.set(vars, attr);\n }\n return attr || undefined;\n};\n\n/**\n * Значение токена по умолчанию: раскрывает обёртки `var(--k-<токен>, <значение>)` (и вложенные цепочки производных\n * токенов) до значения без переопределений. Палитру `var(--k-color-..., #fff)` не раскрываем: master сравнивал\n * именно эти строки. Для условий в стилях, которые вычисляются при сборке.\n */\nexport const tokenDefault = (value: string): string => {\n const open = /var\\(--k-[A-Za-z0-9]+,\\s*/g;\n let result = value.trim();\n for (let match = open.exec(result); match; match = open.exec(result)) {\n let depth = 1;\n let end = open.lastIndex;\n for (; end < result.length && depth > 0; end++) {\n if (result[end] === '(') {\n depth++;\n } else if (result[end] === ')') {\n depth--;\n }\n }\n result = result.slice(0, match.index) + result.slice(open.lastIndex, end - 1) + result.slice(end);\n open.lastIndex = match.index;\n }\n return result;\n};\n\nconst setTokensCache = new WeakMap<Theme, string>();\n\n/**\n * Пустые по умолчанию токены, которые тема задала. Их объявления в CSS стоят под\n * `@scope ([data-k-set~=\"<токен>\"])` (см. whenThemeSets в vanilla.ts), чтобы без темы отбрасываться, как раньше.\n */\nexport const getThemeSetTokens = (theme: Theme): string => {\n let tokens = setTokensCache.get(theme);\n if (tokens === undefined) {\n const set: string[] = [];\n for (const key in theme) {\n const value = (theme as unknown as Record<string, unknown>)[key];\n if (\n (LIGHT_THEME as unknown as Record<string, unknown>)[key] === '' &&\n typeof value === 'string' &&\n value !== ''\n ) {\n set.push(key);\n }\n }\n tokens = set.join(' ');\n setTokensCache.set(theme, tokens);\n }\n return tokens;\n};\n"]}
|