@vkontakte/vkui 4.25.2 → 4.26.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/.cache/.eslintcache +1 -1
- package/.cache/.stylelintcache +1 -1
- package/.cache/.tsbuildinfo +89 -55
- package/.cache/ts/src/components/ActionSheetItem/ActionSheetItem.d.ts +2 -2
- package/.cache/ts/src/components/AdaptivityProvider/AdaptivityProvider.d.ts +1 -1
- package/.cache/ts/src/components/Alert/Alert.d.ts +2 -2
- package/.cache/ts/src/components/AppRoot/AppRoot.d.ts +0 -1
- package/.cache/ts/src/components/CardScroll/CardScroll.d.ts +9 -2
- package/.cache/ts/src/components/ConfigProvider/ConfigProviderContext.d.ts +1 -1
- package/.cache/ts/src/components/HorizontalScroll/HorizontalScroll.d.ts +1 -1
- package/.cache/ts/src/index.d.ts +3 -3
- package/.cache/ts/src/lib/platform.d.ts +1 -1
- package/.cache/ts/src/tokenized/{tokenized.d.ts → index.d.ts} +0 -0
- package/VKUI_TOKENS_MIGRATION_GUIDE.md +76 -0
- package/dist/cjs/components/ActionSheetItem/ActionSheetItem.d.ts +2 -2
- package/dist/cjs/components/ActionSheetItem/ActionSheetItem.js +5 -9
- package/dist/cjs/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
- package/dist/cjs/components/AdaptivityProvider/AdaptivityProvider.d.ts +1 -1
- package/dist/cjs/components/AdaptivityProvider/AdaptivityProvider.js +4 -6
- package/dist/cjs/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
- package/dist/cjs/components/Alert/Alert.d.ts +2 -2
- package/dist/cjs/components/Alert/Alert.js +4 -7
- package/dist/cjs/components/Alert/Alert.js.map +1 -1
- package/dist/cjs/components/AppRoot/AppRoot.d.ts +0 -1
- package/dist/cjs/components/AppRoot/AppRoot.js +2 -5
- package/dist/cjs/components/AppRoot/AppRoot.js.map +1 -1
- package/dist/cjs/components/AppearanceProvider/AppearanceProvider.js +1 -1
- package/dist/cjs/components/AppearanceProvider/AppearanceProvider.js.map +1 -1
- package/dist/cjs/components/Button/Button.js +1 -3
- package/dist/cjs/components/Button/Button.js.map +1 -1
- package/dist/cjs/components/CardScroll/CardScroll.d.ts +9 -2
- package/dist/cjs/components/CardScroll/CardScroll.js +10 -4
- package/dist/cjs/components/CardScroll/CardScroll.js.map +1 -1
- package/dist/cjs/components/ConfigProvider/ConfigProvider.js +40 -6
- package/dist/cjs/components/ConfigProvider/ConfigProvider.js.map +1 -1
- package/dist/cjs/components/ConfigProvider/ConfigProviderContext.d.ts +1 -1
- package/dist/cjs/components/ContentCard/ContentCard.js +8 -0
- package/dist/cjs/components/ContentCard/ContentCard.js.map +1 -1
- package/dist/cjs/components/CustomSelectOption/CustomSelectOption.js +1 -1
- package/dist/cjs/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
- package/dist/cjs/components/HorizontalScroll/HorizontalScroll.d.ts +1 -1
- package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js +5 -1
- package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
- package/dist/cjs/components/IconButton/IconButton.js +8 -0
- package/dist/cjs/components/IconButton/IconButton.js.map +1 -1
- package/dist/cjs/components/PanelHeaderButton/PanelHeaderButton.js +14 -5
- package/dist/cjs/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
- package/dist/cjs/components/PromoBanner/PromoBanner.js +7 -0
- package/dist/cjs/components/PromoBanner/PromoBanner.js.map +1 -1
- package/dist/cjs/components/Root/Root.js +5 -0
- package/dist/cjs/components/Root/Root.js.map +1 -1
- package/dist/cjs/components/TabbarItem/TabbarItem.js +8 -1
- package/dist/cjs/components/TabbarItem/TabbarItem.js.map +1 -1
- package/dist/cjs/components/View/View.js +29 -18
- package/dist/cjs/components/View/View.js.map +1 -1
- package/dist/cjs/index.d.ts +3 -3
- package/dist/cjs/index.js +6 -6
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/lib/platform.d.ts +1 -1
- package/dist/cjs/lib/platform.js.map +1 -1
- package/dist/cjs/tokenized/{tokenized.d.ts → index.d.ts} +0 -0
- package/dist/cjs/tokenized/{tokenized.js → index.js} +1 -1
- package/dist/cjs/tokenized/index.js.map +1 -0
- package/dist/components/ActionSheetItem/ActionSheetItem.d.ts +2 -2
- package/dist/components/ActionSheetItem/ActionSheetItem.js +4 -6
- package/dist/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
- package/dist/components/AdaptivityProvider/AdaptivityProvider.d.ts +1 -1
- package/dist/components/AdaptivityProvider/AdaptivityProvider.js +2 -3
- package/dist/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
- package/dist/components/Alert/Alert.d.ts +2 -2
- package/dist/components/Alert/Alert.js +3 -3
- package/dist/components/Alert/Alert.js.map +1 -1
- package/dist/components/AppRoot/AppRoot.d.ts +0 -1
- package/dist/components/AppRoot/AppRoot.js +1 -3
- package/dist/components/AppRoot/AppRoot.js.map +1 -1
- package/dist/components/AppearanceProvider/AppearanceProvider.js +2 -2
- package/dist/components/AppearanceProvider/AppearanceProvider.js.map +1 -1
- package/dist/components/Button/Button.js +1 -2
- package/dist/components/Button/Button.js.map +1 -1
- package/dist/components/CardScroll/CardScroll.d.ts +9 -2
- package/dist/components/CardScroll/CardScroll.js +8 -3
- package/dist/components/CardScroll/CardScroll.js.map +1 -1
- package/dist/components/ConfigProvider/ConfigProvider.js +39 -6
- package/dist/components/ConfigProvider/ConfigProvider.js.map +1 -1
- package/dist/components/ConfigProvider/ConfigProviderContext.d.ts +1 -1
- package/dist/components/ContentCard/ContentCard.js +7 -0
- package/dist/components/ContentCard/ContentCard.js.map +1 -1
- package/dist/components/CustomSelectOption/CustomSelectOption.js +1 -1
- package/dist/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
- package/dist/components/HorizontalScroll/HorizontalScroll.d.ts +1 -1
- package/dist/components/HorizontalScroll/HorizontalScroll.js +3 -1
- package/dist/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
- package/dist/components/IconButton/IconButton.js +7 -0
- package/dist/components/IconButton/IconButton.js.map +1 -1
- package/dist/components/PanelHeaderButton/PanelHeaderButton.js +13 -6
- package/dist/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
- package/dist/components/PromoBanner/PromoBanner.js +6 -0
- package/dist/components/PromoBanner/PromoBanner.js.map +1 -1
- package/dist/components/Root/Root.js +5 -0
- package/dist/components/Root/Root.js.map +1 -1
- package/dist/components/TabbarItem/TabbarItem.js +7 -1
- package/dist/components/TabbarItem/TabbarItem.js.map +1 -1
- package/dist/components/View/View.js +29 -18
- package/dist/components/View/View.js.map +1 -1
- package/dist/components.css +14 -11
- package/dist/components.css.map +1 -1
- package/dist/cssm/components/ActionSheetItem/ActionSheetItem.js +4 -6
- package/dist/cssm/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
- package/dist/cssm/components/AdaptivityProvider/AdaptivityProvider.js +2 -3
- package/dist/cssm/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
- package/dist/cssm/components/Alert/Alert.js +3 -3
- package/dist/cssm/components/Alert/Alert.js.map +1 -1
- package/dist/cssm/components/AppRoot/AppRoot.js +1 -3
- package/dist/cssm/components/AppRoot/AppRoot.js.map +1 -1
- package/dist/cssm/components/AppearanceProvider/AppearanceProvider.js +2 -2
- package/dist/cssm/components/AppearanceProvider/AppearanceProvider.js.map +1 -1
- package/dist/cssm/components/Button/Button.css +9 -11
- package/dist/cssm/components/Button/Button.js +1 -2
- package/dist/cssm/components/Button/Button.js.map +1 -1
- package/dist/cssm/components/Card/Card.css +6 -1
- package/dist/cssm/components/CardScroll/CardScroll.css +1 -1
- package/dist/cssm/components/CardScroll/CardScroll.js +8 -3
- package/dist/cssm/components/CardScroll/CardScroll.js.map +1 -1
- package/dist/cssm/components/ConfigProvider/ConfigProvider.js +39 -6
- package/dist/cssm/components/ConfigProvider/ConfigProvider.js.map +1 -1
- package/dist/cssm/components/ContentCard/ContentCard.js +7 -0
- package/dist/cssm/components/ContentCard/ContentCard.js.map +1 -1
- package/dist/cssm/components/CustomSelectOption/CustomSelectOption.js +1 -1
- package/dist/cssm/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
- package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js +3 -1
- package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
- package/dist/cssm/components/HorizontalScroll/HorizontalScrollArrow.css +1 -1
- package/dist/cssm/components/IconButton/IconButton.js +7 -0
- package/dist/cssm/components/IconButton/IconButton.js.map +1 -1
- package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.js +13 -6
- package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
- package/dist/cssm/components/PromoBanner/PromoBanner.js +6 -0
- package/dist/cssm/components/PromoBanner/PromoBanner.js.map +1 -1
- package/dist/cssm/components/Root/Root.js +5 -0
- package/dist/cssm/components/Root/Root.js.map +1 -1
- package/dist/cssm/components/TabbarItem/TabbarItem.js +7 -1
- package/dist/cssm/components/TabbarItem/TabbarItem.js.map +1 -1
- package/dist/cssm/components/View/View.js +29 -18
- package/dist/cssm/components/View/View.js.map +1 -1
- package/dist/cssm/index.js +3 -3
- package/dist/cssm/index.js.map +1 -1
- package/dist/cssm/lib/platform.js.map +1 -1
- package/dist/cssm/styles/components.css +14 -11
- package/dist/cssm/styles/themes.css +1 -1
- package/dist/{tokenized/tokenized.js → cssm/tokenized/index.js} +1 -1
- package/dist/cssm/tokenized/index.js.map +1 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/lib/platform.d.ts +1 -1
- package/dist/lib/platform.js.map +1 -1
- package/dist/tokenized/{tokenized.d.ts → index.d.ts} +0 -0
- package/dist/{cssm/tokenized/tokenized.js → tokenized/index.js} +1 -1
- package/dist/tokenized/index.js.map +1 -0
- package/dist/vkui.css +15 -12
- package/dist/vkui.css.map +1 -1
- package/package.json +3 -3
- package/postcss.config.js +10 -1
- package/src/components/ActionSheetItem/ActionSheetItem.tsx +5 -6
- package/src/components/AdaptivityProvider/AdaptivityProvider.tsx +1 -2
- package/src/components/Alert/Alert.tsx +3 -2
- package/src/components/AppRoot/AppRoot.tsx +0 -3
- package/src/components/AppearanceProvider/AppearanceProvider.tsx +2 -2
- package/src/components/Button/Button.css +9 -39
- package/src/components/Button/Button.tsx +3 -4
- package/src/components/Card/Card.css +14 -22
- package/src/components/CardScroll/CardScroll.css +10 -23
- package/src/components/CardScroll/CardScroll.tsx +15 -4
- package/src/components/ConfigProvider/ConfigProvider.tsx +43 -7
- package/src/components/ContentCard/ContentCard.tsx +6 -0
- package/src/components/CustomSelectOption/CustomSelectOption.tsx +1 -1
- package/src/components/HorizontalScroll/HorizontalScroll.tsx +8 -2
- package/src/components/HorizontalScroll/HorizontalScrollArrow.css +3 -1
- package/src/components/IconButton/IconButton.tsx +8 -0
- package/src/components/PanelHeaderButton/PanelHeaderButton.tsx +19 -7
- package/src/components/PromoBanner/PromoBanner.tsx +8 -0
- package/src/components/Root/Root.tsx +12 -2
- package/src/components/TabbarItem/TabbarItem.tsx +8 -1
- package/src/components/View/View.tsx +15 -2
- package/src/index.ts +3 -3
- package/src/lib/platform.ts +5 -1
- package/src/styles/themes.css +6 -0
- package/src/testing/utils.tsx +1 -1
- package/src/tokenized/{tokenized.ts → index.ts} +0 -0
- package/dist/cjs/tokenized/tokenized.js.map +0 -1
- package/dist/cssm/tokenized/tokenized.js.map +0 -1
- package/dist/tokenized/tokenized.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vkontakte/vkui",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.26.0",
|
|
4
4
|
"main": "dist/cjs/index.js",
|
|
5
5
|
"module": "dist/index.js",
|
|
6
6
|
"typings": "dist/index.d.ts",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"@vkontakte/eslint-config": "2.5.0",
|
|
48
48
|
"@vkontakte/icons": "^1.136.0",
|
|
49
49
|
"@vkontakte/vk-bridge": "^2.1.3",
|
|
50
|
-
"@vkontakte/vkui-tokens": "4.
|
|
50
|
+
"@vkontakte/vkui-tokens": "4.2.0",
|
|
51
51
|
"autoprefixer": "^10.4.2",
|
|
52
52
|
"babel-jest": "^26.6.3",
|
|
53
53
|
"babel-loader": "^8.2.3",
|
|
@@ -147,7 +147,7 @@
|
|
|
147
147
|
"size": "yarn clear && concurrently 'yarn:babel' 'yarn:postcss' && size-limit",
|
|
148
148
|
"size:ci": "yarn install --frozen-lockfile --ignore-scripts && yarn build:no-types",
|
|
149
149
|
"styleguide": "cross-env NODE_ENV=development styleguidist server --config=styleguide/config.js",
|
|
150
|
-
"styleguide:props": "
|
|
150
|
+
"styleguide:props": "VKUI_STYLEGUIDE_PROPSPARSER=1 yarn styleguide",
|
|
151
151
|
"styleguide:build": "cross-env NODE_ENV=production styleguidist build --config=styleguide/config.js",
|
|
152
152
|
"dev": "yarn clear && concurrently \"yarn:tsc-dev\" \"yarn:babel-dev\" \"yarn:postcss-dev\"",
|
|
153
153
|
"dev-cjs": "yarn clear && concurrently \"yarn:tsc-cjs-dev\" \"yarn:babel-cjs-dev\" \"yarn:postcss-dev\"",
|
package/postcss.config.js
CHANGED
|
@@ -10,6 +10,10 @@ const { defaultSchemeId } = require("./package.json");
|
|
|
10
10
|
|
|
11
11
|
const animationsSource = path.join(__dirname, "src/styles/animations.css");
|
|
12
12
|
const cssPropSources = [
|
|
13
|
+
path.join(
|
|
14
|
+
__dirname,
|
|
15
|
+
"node_modules/@vkontakte/vkui-tokens/themes/vkBase/cssVars/declarations/onlyVariables.css"
|
|
16
|
+
),
|
|
13
17
|
path.join(__dirname, "src/styles/bright_light.css"),
|
|
14
18
|
path.join(__dirname, "src/styles/constants.css"),
|
|
15
19
|
animationsSource,
|
|
@@ -27,7 +31,12 @@ let plugins = [
|
|
|
27
31
|
// postcss-custom-properties only works with :root
|
|
28
32
|
scopeRoot({
|
|
29
33
|
customPropRoot: ".vkui__root, .vkui__portal-root",
|
|
30
|
-
except:
|
|
34
|
+
except: [
|
|
35
|
+
path.resolve(`./src/styles/${defaultSchemeId}.css`),
|
|
36
|
+
path.resolve(
|
|
37
|
+
"./node_modules/@vkontakte/vkui-tokens/themes/vkBase/cssVars/declarations/onlyVariables.css"
|
|
38
|
+
),
|
|
39
|
+
],
|
|
31
40
|
}),
|
|
32
41
|
autoprefixer(),
|
|
33
42
|
cssModules({
|
|
@@ -48,7 +48,7 @@ export interface ActionSheetItemProps
|
|
|
48
48
|
const ActionSheetItem: React.FC<ActionSheetItemProps> = ({
|
|
49
49
|
children,
|
|
50
50
|
autoclose,
|
|
51
|
-
mode,
|
|
51
|
+
mode = "default",
|
|
52
52
|
meta,
|
|
53
53
|
subtitle,
|
|
54
54
|
before,
|
|
@@ -181,9 +181,8 @@ const ActionSheetItem: React.FC<ActionSheetItemProps> = ({
|
|
|
181
181
|
);
|
|
182
182
|
};
|
|
183
183
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
};
|
|
184
|
+
const ActionSheetItemWithAdaptivity = withAdaptivity(ActionSheetItem, {
|
|
185
|
+
sizeY: true,
|
|
186
|
+
});
|
|
187
187
|
|
|
188
|
-
|
|
189
|
-
export default withAdaptivity(ActionSheetItem, { sizeY: true });
|
|
188
|
+
export { ActionSheetItemWithAdaptivity as ActionSheetItem };
|
|
@@ -285,9 +285,10 @@ class Alert extends React.Component<TAlertProps, AlertState> {
|
|
|
285
285
|
}
|
|
286
286
|
}
|
|
287
287
|
|
|
288
|
-
|
|
289
|
-
export default withPlatform(
|
|
288
|
+
const AlertWithPlatformAndAdaptivity = withPlatform(
|
|
290
289
|
withAdaptivity(Alert, {
|
|
291
290
|
viewWidth: true,
|
|
292
291
|
})
|
|
293
292
|
);
|
|
293
|
+
|
|
294
|
+
export { AlertWithPlatformAndAdaptivity as Alert };
|
|
@@ -2,7 +2,7 @@ import * as React from "react";
|
|
|
2
2
|
import { AppearanceType } from "@vkontakte/vk-bridge";
|
|
3
3
|
import { AppearanceProviderContext } from "./AppearanceProviderContext";
|
|
4
4
|
import { getScheme } from "../../helpers/getScheme";
|
|
5
|
-
import {
|
|
5
|
+
import { classNamesString } from "../../lib/classNames";
|
|
6
6
|
import { usePlatform } from "../../hooks/usePlatform";
|
|
7
7
|
|
|
8
8
|
export interface AppearanceProviderProps {
|
|
@@ -31,7 +31,7 @@ export const AppearanceProvider: React.FC<AppearanceProviderProps> = ({
|
|
|
31
31
|
{React.Children.map(children, (child) => {
|
|
32
32
|
if (React.isValidElement(child)) {
|
|
33
33
|
return React.cloneElement(child, {
|
|
34
|
-
className:
|
|
34
|
+
className: classNamesString(
|
|
35
35
|
child.props.className,
|
|
36
36
|
`vkui${appearanceContext.scheme}`
|
|
37
37
|
),
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
box-sizing: border-box;
|
|
5
5
|
text-decoration: none;
|
|
6
6
|
border: none;
|
|
7
|
-
min-height: var(--vkui--size_button_small_height--
|
|
7
|
+
min-height: var(--vkui--size_button_small_height--compact);
|
|
8
8
|
margin: 0;
|
|
9
9
|
padding: 0;
|
|
10
10
|
user-select: none;
|
|
11
|
-
border-radius: var(--vkui--size_border_radius--regular
|
|
11
|
+
border-radius: var(--vkui--size_border_radius--regular);
|
|
12
12
|
max-width: 100%;
|
|
13
13
|
}
|
|
14
14
|
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
.Button[disabled] {
|
|
44
|
-
opacity: var(--vkui--opacity_disable
|
|
44
|
+
opacity: var(--vkui--opacity_disable);
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
.Button--lvl-primary[disabled]:not(.Button--clr-overlay):not(.Button--clr-negative):not(.Button--clr-positive),
|
|
@@ -163,15 +163,7 @@
|
|
|
163
163
|
/* Mode = Secondary */
|
|
164
164
|
.Button--lvl-secondary {
|
|
165
165
|
background-color: var(
|
|
166
|
-
--
|
|
167
|
-
var(--vkui--color_background_secondary)
|
|
168
|
-
);
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
/* Only for VKCOM */
|
|
172
|
-
.Button--vkcom.Button--lvl-secondary {
|
|
173
|
-
background-color: var(
|
|
174
|
-
--control_background,
|
|
166
|
+
--button_secondary_background,
|
|
175
167
|
var(--vkui--color_background_secondary)
|
|
176
168
|
);
|
|
177
169
|
}
|
|
@@ -490,52 +482,30 @@
|
|
|
490
482
|
transform: translateY(-1px);
|
|
491
483
|
}
|
|
492
484
|
|
|
493
|
-
/**
|
|
494
|
-
* iOS
|
|
495
|
-
*/
|
|
496
|
-
.Button--ios {
|
|
497
|
-
min-height: 26px;
|
|
498
|
-
border-radius: 10px;
|
|
499
|
-
}
|
|
500
|
-
|
|
501
|
-
/**
|
|
502
|
-
* VKCOM
|
|
503
|
-
*/
|
|
504
|
-
.Button--vkcom {
|
|
505
|
-
min-height: 26px;
|
|
506
|
-
border-radius: 4px;
|
|
507
|
-
}
|
|
508
|
-
|
|
509
|
-
.Button--vkcom.Button--lvl-secondary .Icon,
|
|
510
|
-
.Button--vkcom.Button--lvl-tertiary .Icon,
|
|
511
|
-
.Button--vkcom.Button--lvl-outline .Icon {
|
|
512
|
-
opacity: 0.72;
|
|
513
|
-
}
|
|
514
|
-
|
|
515
485
|
/**
|
|
516
486
|
* sizeY COMPACT
|
|
517
487
|
*/
|
|
518
488
|
.Button--sz-m {
|
|
519
|
-
min-height: var(--vkui--size_button_medium_height--compact
|
|
489
|
+
min-height: var(--vkui--size_button_medium_height--compact);
|
|
520
490
|
}
|
|
521
491
|
|
|
522
492
|
.Button--sz-l {
|
|
523
|
-
min-height: var(--vkui--size_button_large_height--compact
|
|
493
|
+
min-height: var(--vkui--size_button_large_height--compact);
|
|
524
494
|
}
|
|
525
495
|
|
|
526
496
|
/**
|
|
527
497
|
* sizeY REGULAR
|
|
528
498
|
*/
|
|
529
499
|
.Button--sizeY-regular {
|
|
530
|
-
min-height: var(--vkui--size_button_small_height--regular
|
|
500
|
+
min-height: var(--vkui--size_button_small_height--regular);
|
|
531
501
|
}
|
|
532
502
|
|
|
533
503
|
.Button--sizeY-regular.Button--sz-m {
|
|
534
|
-
min-height: var(--vkui--size_button_medium_height--regular
|
|
504
|
+
min-height: var(--vkui--size_button_medium_height--regular);
|
|
535
505
|
}
|
|
536
506
|
|
|
537
507
|
.Button--sizeY-regular.Button--sz-l {
|
|
538
|
-
min-height: var(--vkui--size_button_large_height--regular
|
|
508
|
+
min-height: var(--vkui--size_button_large_height--regular);
|
|
539
509
|
}
|
|
540
510
|
|
|
541
511
|
/**
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import { getClassName } from "../../helpers/getClassName";
|
|
3
2
|
import { classNames } from "../../lib/classNames";
|
|
4
3
|
import { ConfigProviderContext } from "../ConfigProvider/ConfigProviderContext";
|
|
5
4
|
import Tappable, { TappableProps } from "../Tappable/Tappable";
|
|
@@ -14,7 +13,7 @@ import {
|
|
|
14
13
|
SizeType,
|
|
15
14
|
withAdaptivity,
|
|
16
15
|
} from "../../hoc/withAdaptivity";
|
|
17
|
-
import {
|
|
16
|
+
import { IOS, VKCOM, PlatformType } from "../../lib/platform";
|
|
18
17
|
import Spinner from "../Spinner/Spinner";
|
|
19
18
|
import "./Button.css";
|
|
20
19
|
|
|
@@ -46,7 +45,7 @@ export interface ButtonProps
|
|
|
46
45
|
|
|
47
46
|
interface ButtonTypographyProps extends HasComponent {
|
|
48
47
|
size: ButtonProps["size"];
|
|
49
|
-
platform:
|
|
48
|
+
platform: PlatformType | undefined;
|
|
50
49
|
sizeY: AdaptivityProps["sizeY"];
|
|
51
50
|
children?: ButtonProps["children"];
|
|
52
51
|
}
|
|
@@ -174,7 +173,7 @@ const Button: React.FC<ButtonProps> = (props: ButtonProps) => {
|
|
|
174
173
|
onClick={loading ? undefined : onClick}
|
|
175
174
|
focusVisibleMode="outside"
|
|
176
175
|
vkuiClass={classNames(
|
|
177
|
-
|
|
176
|
+
"Button",
|
|
178
177
|
`Button--sz-${size}`,
|
|
179
178
|
`Button--lvl-${resolvedMode}`,
|
|
180
179
|
`Button--clr-${resolvedAppearance}`,
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
.Card {
|
|
2
2
|
position: relative;
|
|
3
|
-
background: var(
|
|
3
|
+
background: var(
|
|
4
|
+
--content_tint_background,
|
|
5
|
+
var(--vkui--color_background_secondary)
|
|
6
|
+
);
|
|
7
|
+
border-radius: var(--vkui--size_card_border_radius--regular);
|
|
4
8
|
}
|
|
5
9
|
|
|
6
10
|
.Card__in {
|
|
@@ -10,12 +14,16 @@
|
|
|
10
14
|
}
|
|
11
15
|
|
|
12
16
|
.Card--md-shadow {
|
|
13
|
-
box-shadow:
|
|
14
|
-
|
|
17
|
+
box-shadow: var(
|
|
18
|
+
--vkui--elevation3,
|
|
19
|
+
0 2px 24px 0 rgba(0, 0, 0, 0.08),
|
|
20
|
+
0 0 2px 0 rgba(0, 0, 0, 0.08)
|
|
21
|
+
);
|
|
22
|
+
background: var(--modal_card_background, var(--vkui--color_background_modal));
|
|
15
23
|
}
|
|
16
24
|
|
|
17
25
|
.Card--md-outline {
|
|
18
|
-
background: var(--modal_card_background);
|
|
26
|
+
background: var(--modal_card_background, var(--vkui--color_background_modal));
|
|
19
27
|
}
|
|
20
28
|
|
|
21
29
|
.Card--md-outline::before {
|
|
@@ -26,25 +34,9 @@
|
|
|
26
34
|
height: 100%;
|
|
27
35
|
content: "";
|
|
28
36
|
display: block;
|
|
29
|
-
border: var(--thin-border) solid
|
|
37
|
+
border: var(--thin-border) solid
|
|
38
|
+
var(--input_border, var(--vkui--color_image_border_alpha));
|
|
30
39
|
z-index: 1;
|
|
31
40
|
box-sizing: border-box;
|
|
32
41
|
border-radius: inherit;
|
|
33
42
|
}
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* iOS
|
|
37
|
-
*/
|
|
38
|
-
|
|
39
|
-
.Card--ios {
|
|
40
|
-
border-radius: 10px;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Android, VKCOM
|
|
45
|
-
*/
|
|
46
|
-
|
|
47
|
-
.Card--android,
|
|
48
|
-
.Card--vkcom {
|
|
49
|
-
border-radius: 8px;
|
|
50
|
-
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
}
|
|
5
5
|
|
|
6
6
|
.CardScroll .Card {
|
|
7
|
-
margin-right:
|
|
7
|
+
margin-right: var(--vkui--size_cardgrid_padding--regular);
|
|
8
8
|
flex-shrink: 0;
|
|
9
9
|
}
|
|
10
10
|
|
|
@@ -33,33 +33,20 @@
|
|
|
33
33
|
width: 100%;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
*/
|
|
39
|
-
|
|
40
|
-
.CardScroll--ios .CardScroll__gap {
|
|
41
|
-
width: 12px;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* Android & VKCOM
|
|
46
|
-
*/
|
|
47
|
-
|
|
48
|
-
.CardScroll--android .CardScroll__gap,
|
|
49
|
-
.CardScroll--vkcom .CardScroll__gap {
|
|
50
|
-
width: 16px;
|
|
36
|
+
.CardScroll--withSpaces .CardScroll__gap {
|
|
37
|
+
width: var(--vkui--size_base_padding_horizontal--regular);
|
|
51
38
|
}
|
|
52
39
|
|
|
53
40
|
/**
|
|
54
41
|
* SplitCol
|
|
55
42
|
*/
|
|
56
43
|
|
|
57
|
-
.SplitCol--spaced .CardScroll {
|
|
44
|
+
.SplitCol--spaced .CardScroll--withSpaces .CardScroll {
|
|
58
45
|
margin-left: -16px;
|
|
59
46
|
margin-right: -16px;
|
|
60
47
|
}
|
|
61
48
|
|
|
62
|
-
.SplitCol--spaced .CardScroll__gap {
|
|
49
|
+
.SplitCol--spaced .CardScroll--withSpaces .CardScroll__gap {
|
|
63
50
|
width: 16px;
|
|
64
51
|
}
|
|
65
52
|
|
|
@@ -75,7 +62,7 @@
|
|
|
75
62
|
* Group
|
|
76
63
|
*/
|
|
77
64
|
|
|
78
|
-
.Group--card .CardScroll {
|
|
65
|
+
.Group--card .CardScroll--withSpaces {
|
|
79
66
|
margin-left: -8px;
|
|
80
67
|
margin-right: -8px;
|
|
81
68
|
}
|
|
@@ -88,10 +75,10 @@
|
|
|
88
75
|
margin-right: 16px;
|
|
89
76
|
}
|
|
90
77
|
|
|
91
|
-
.Group--card .CardScroll:first-child {
|
|
92
|
-
padding-top:
|
|
78
|
+
.Group--card .CardScroll--withSpaces:first-child {
|
|
79
|
+
padding-top: var(--vkui--size_cardgrid_padding_vertical--regular);
|
|
93
80
|
}
|
|
94
81
|
|
|
95
|
-
.Group--card .CardScroll:last-child {
|
|
96
|
-
padding-bottom:
|
|
82
|
+
.Group--card .CardScroll--withSpaces:last-child {
|
|
83
|
+
padding-bottom: var(--vkui--size_cardgrid_padding_vertical--regular);
|
|
97
84
|
}
|
|
@@ -2,7 +2,9 @@ import * as React from "react";
|
|
|
2
2
|
import { classNames } from "../../lib/classNames";
|
|
3
3
|
import { getClassName } from "../../helpers/getClassName";
|
|
4
4
|
import { usePlatform } from "../../hooks/usePlatform";
|
|
5
|
-
import HorizontalScroll
|
|
5
|
+
import HorizontalScroll, {
|
|
6
|
+
HorizontalScrollProps,
|
|
7
|
+
} from "../HorizontalScroll/HorizontalScroll";
|
|
6
8
|
import { withAdaptivity, AdaptivityProps } from "../../hoc/withAdaptivity";
|
|
7
9
|
import { useDOM } from "../../lib/dom";
|
|
8
10
|
import "./CardScroll.css";
|
|
@@ -10,13 +12,21 @@ import "./CardScroll.css";
|
|
|
10
12
|
export interface CardScrollProps
|
|
11
13
|
extends React.HTMLAttributes<HTMLDivElement>,
|
|
12
14
|
AdaptivityProps {
|
|
13
|
-
|
|
15
|
+
/**
|
|
16
|
+
* При size = "s", "m", "l" у Card будет явно задана ширина в %
|
|
17
|
+
* При size = false ширина Card будет регулироваться контентом внутри
|
|
18
|
+
*/
|
|
19
|
+
size?: "s" | "m" | "l" | false;
|
|
20
|
+
showArrows?: HorizontalScrollProps["showArrows"];
|
|
21
|
+
withSpaces: boolean;
|
|
14
22
|
}
|
|
15
23
|
|
|
16
24
|
const CardScroll: React.FC<CardScrollProps> = ({
|
|
17
25
|
children,
|
|
18
26
|
size,
|
|
27
|
+
showArrows = true,
|
|
19
28
|
sizeX,
|
|
29
|
+
withSpaces = true,
|
|
20
30
|
...restProps
|
|
21
31
|
}: CardScrollProps) => {
|
|
22
32
|
const platform = usePlatform();
|
|
@@ -88,14 +98,15 @@ const CardScroll: React.FC<CardScrollProps> = ({
|
|
|
88
98
|
{...restProps}
|
|
89
99
|
vkuiClass={classNames(
|
|
90
100
|
getClassName("CardScroll", platform),
|
|
101
|
+
`CardScroll--sizeX-${sizeX}`,
|
|
91
102
|
`CardScroll--${size}`,
|
|
92
|
-
|
|
103
|
+
{ ["CardScroll--withSpaces"]: withSpaces }
|
|
93
104
|
)}
|
|
94
105
|
>
|
|
95
106
|
<HorizontalScroll
|
|
96
107
|
getScrollToLeft={getScrollToLeft}
|
|
97
108
|
getScrollToRight={getScrollToRight}
|
|
98
|
-
showArrows={
|
|
109
|
+
showArrows={showArrows}
|
|
99
110
|
>
|
|
100
111
|
<div vkuiClass="CardScroll__in" ref={refContainer}>
|
|
101
112
|
<span vkuiClass="CardScroll__gap" ref={gapRef} />
|
|
@@ -16,6 +16,7 @@ import {
|
|
|
16
16
|
Scheme,
|
|
17
17
|
} from "../../helpers/scheme";
|
|
18
18
|
import { AppearanceProvider } from "../AppearanceProvider/AppearanceProvider";
|
|
19
|
+
import { Platform } from "../../lib/platform";
|
|
19
20
|
|
|
20
21
|
export interface ConfigProviderProps extends ConfigProviderContextInterface {
|
|
21
22
|
/**
|
|
@@ -58,21 +59,41 @@ const deriveAppearance = (scheme: Scheme | undefined): AppearanceType =>
|
|
|
58
59
|
? "dark"
|
|
59
60
|
: "light";
|
|
60
61
|
|
|
62
|
+
const generateVKUITokensClassName = (
|
|
63
|
+
platform: string,
|
|
64
|
+
appearance: string
|
|
65
|
+
): string => {
|
|
66
|
+
let tokensPlatform;
|
|
67
|
+
switch (platform) {
|
|
68
|
+
case Platform.ANDROID:
|
|
69
|
+
tokensPlatform = "vkBase";
|
|
70
|
+
break;
|
|
71
|
+
case Platform.IOS:
|
|
72
|
+
tokensPlatform = "vkIOS";
|
|
73
|
+
break;
|
|
74
|
+
case Platform.VKCOM:
|
|
75
|
+
tokensPlatform = "vkCom";
|
|
76
|
+
break;
|
|
77
|
+
default:
|
|
78
|
+
tokensPlatform = platform;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
return `vkui--${tokensPlatform}--${appearance}`;
|
|
82
|
+
};
|
|
83
|
+
|
|
61
84
|
const ConfigProvider: React.FC<ConfigProviderProps> = ({
|
|
62
85
|
children,
|
|
63
|
-
schemeTarget,
|
|
64
86
|
...props
|
|
65
|
-
}: React.PropsWithChildren<ConfigProviderProps> & {
|
|
66
|
-
schemeTarget?: HTMLElement;
|
|
67
87
|
}) => {
|
|
68
88
|
const config = { ...defaultConfigProviderProps, ...props };
|
|
89
|
+
const { platform, appearance } = config;
|
|
69
90
|
const scheme = normalizeScheme({
|
|
70
91
|
scheme: config.scheme,
|
|
71
|
-
platform:
|
|
72
|
-
appearance:
|
|
92
|
+
platform: platform,
|
|
93
|
+
appearance: appearance,
|
|
73
94
|
});
|
|
74
95
|
const { document } = useDOM();
|
|
75
|
-
const target =
|
|
96
|
+
const target = document?.body;
|
|
76
97
|
|
|
77
98
|
useIsomorphicLayoutEffect(() => {
|
|
78
99
|
if (scheme === "inherit") {
|
|
@@ -91,8 +112,23 @@ const ConfigProvider: React.FC<ConfigProviderProps> = ({
|
|
|
91
112
|
}, [scheme]);
|
|
92
113
|
|
|
93
114
|
const realScheme = useSchemeDetector(target, scheme);
|
|
115
|
+
const derivedAppearance = deriveAppearance(realScheme);
|
|
116
|
+
|
|
117
|
+
useIsomorphicLayoutEffect(() => {
|
|
118
|
+
const VKUITokensClassName = generateVKUITokensClassName(
|
|
119
|
+
platform,
|
|
120
|
+
derivedAppearance
|
|
121
|
+
);
|
|
122
|
+
|
|
123
|
+
target?.classList.add(VKUITokensClassName);
|
|
124
|
+
|
|
125
|
+
return () => {
|
|
126
|
+
target?.classList.remove(VKUITokensClassName);
|
|
127
|
+
};
|
|
128
|
+
}, [platform, derivedAppearance]);
|
|
129
|
+
|
|
94
130
|
const configContext = useObjectMemo({
|
|
95
|
-
appearance:
|
|
131
|
+
appearance: derivedAppearance,
|
|
96
132
|
...config,
|
|
97
133
|
});
|
|
98
134
|
|
|
@@ -7,6 +7,7 @@ import Tappable, { TappableProps } from "../Tappable/Tappable";
|
|
|
7
7
|
import { getClassName } from "../../helpers/getClassName";
|
|
8
8
|
import { usePlatform } from "../../hooks/usePlatform";
|
|
9
9
|
import { hasReactNode } from "../../lib/utils";
|
|
10
|
+
import { warnOnce } from "../../lib/warnOnce";
|
|
10
11
|
import { HasRef, HasRootRef } from "../../types";
|
|
11
12
|
import { classNames } from "../../lib/classNames";
|
|
12
13
|
import "./ContentCard.css";
|
|
@@ -46,6 +47,7 @@ export interface ContentCardProps
|
|
|
46
47
|
mode?: CardProps["mode"];
|
|
47
48
|
}
|
|
48
49
|
|
|
50
|
+
const warn = warnOnce("ContentCard");
|
|
49
51
|
const ContentCard: React.FC<ContentCardProps> = (props: ContentCardProps) => {
|
|
50
52
|
const {
|
|
51
53
|
subtitle,
|
|
@@ -78,6 +80,10 @@ const ContentCard: React.FC<ContentCardProps> = (props: ContentCardProps) => {
|
|
|
78
80
|
|
|
79
81
|
const source = image || src;
|
|
80
82
|
|
|
83
|
+
if (image && process.env.NODE_ENV === "development") {
|
|
84
|
+
warn("Свойство image устарело и будет удалено в 5.0.0. Используйте src");
|
|
85
|
+
}
|
|
86
|
+
|
|
81
87
|
return (
|
|
82
88
|
<Card
|
|
83
89
|
mode={mode}
|
|
@@ -39,7 +39,7 @@ const CustomSelectOption: React.FC<CustomSelectOptionProps> = ({
|
|
|
39
39
|
const { sizeY } = useAdaptivity();
|
|
40
40
|
|
|
41
41
|
if (!!option && process.env.NODE_ENV === "development") {
|
|
42
|
-
warn("Свойство option было добавлено по ошибке будет
|
|
42
|
+
warn("Свойство option было добавлено по ошибке и будет удалено в 5.0.0.");
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
return (
|
|
@@ -7,6 +7,7 @@ import { easeInOutSine } from "../../lib/fx";
|
|
|
7
7
|
import { useEventListener } from "../../hooks/useEventListener";
|
|
8
8
|
import { useExternRef } from "../../hooks/useExternRef";
|
|
9
9
|
import { HasRef } from "../../types";
|
|
10
|
+
import { classNames } from "../../lib/classNames";
|
|
10
11
|
import "./HorizontalScroll.css";
|
|
11
12
|
|
|
12
13
|
interface ScrollContext {
|
|
@@ -38,7 +39,7 @@ export interface HorizontalScrollProps
|
|
|
38
39
|
* Функция для расчета величины прокрутки при клике на правую стрелку.
|
|
39
40
|
*/
|
|
40
41
|
getScrollToRight?: ScrollPositionHandler;
|
|
41
|
-
showArrows?: boolean;
|
|
42
|
+
showArrows?: boolean | "always";
|
|
42
43
|
scrollAnimationDuration?: number;
|
|
43
44
|
}
|
|
44
45
|
|
|
@@ -181,7 +182,12 @@ const HorizontalScroll: React.FC<HorizontalScrollProps> = ({
|
|
|
181
182
|
React.useEffect(onscroll, [scrollerRef, children, onscroll]);
|
|
182
183
|
|
|
183
184
|
return (
|
|
184
|
-
<div
|
|
185
|
+
<div
|
|
186
|
+
{...restProps}
|
|
187
|
+
vkuiClass={classNames(getClassName("HorizontalScroll", platform), {
|
|
188
|
+
["HorizontalScroll--withConstArrows"]: showArrows === "always",
|
|
189
|
+
})}
|
|
190
|
+
>
|
|
185
191
|
{showArrows && hasMouse && canScrollLeft && (
|
|
186
192
|
<HorizontalScrollArrow
|
|
187
193
|
direction="left"
|
|
@@ -22,7 +22,9 @@
|
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
.HorizontalScroll:hover .HorizontalScrollArrow:hover,
|
|
25
|
-
.Gallery:hover .HorizontalScrollArrow:hover
|
|
25
|
+
.Gallery:hover .HorizontalScrollArrow:hover,
|
|
26
|
+
.HorizontalScroll--withConstArrows .HorizontalScrollArrow,
|
|
27
|
+
.HorizontalScroll--withConstArrows:hover .HorizontalScrollArrow {
|
|
26
28
|
opacity: 1;
|
|
27
29
|
}
|
|
28
30
|
|
|
@@ -5,6 +5,7 @@ import { classNames } from "../../lib/classNames";
|
|
|
5
5
|
import { usePlatform } from "../../hooks/usePlatform";
|
|
6
6
|
import { withAdaptivity } from "../../hoc/withAdaptivity";
|
|
7
7
|
import { IOS } from "../../lib/platform";
|
|
8
|
+
import { warnOnce } from "../../lib/warnOnce";
|
|
8
9
|
import "./IconButton.css";
|
|
9
10
|
|
|
10
11
|
export interface IconButtonProps extends TappableProps {
|
|
@@ -14,6 +15,7 @@ export interface IconButtonProps extends TappableProps {
|
|
|
14
15
|
icon?: React.ReactNode;
|
|
15
16
|
}
|
|
16
17
|
|
|
18
|
+
const warn = warnOnce("IconButton");
|
|
17
19
|
const IconButton: React.FC<IconButtonProps> = ({
|
|
18
20
|
icon,
|
|
19
21
|
sizeY,
|
|
@@ -23,6 +25,12 @@ const IconButton: React.FC<IconButtonProps> = ({
|
|
|
23
25
|
}: IconButtonProps) => {
|
|
24
26
|
const platform = usePlatform();
|
|
25
27
|
|
|
28
|
+
if (icon && process.env.NODE_ENV === "development") {
|
|
29
|
+
warn(
|
|
30
|
+
"Свойство icon устарело и будет удалено в 5.0.0. Используйте children"
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
|
|
26
34
|
return (
|
|
27
35
|
<Tappable
|
|
28
36
|
{...restProps}
|
|
@@ -2,8 +2,9 @@ import * as React from "react";
|
|
|
2
2
|
import Tappable, { TappableProps } from "../Tappable/Tappable";
|
|
3
3
|
import { getClassName } from "../../helpers/getClassName";
|
|
4
4
|
import { classNames } from "../../lib/classNames";
|
|
5
|
+
import { warnOnce } from "../../lib/warnOnce";
|
|
5
6
|
import { usePlatform } from "../../hooks/usePlatform";
|
|
6
|
-
import { isPrimitiveReactNode } from "../../lib/utils";
|
|
7
|
+
import { getTitleFromChildren, isPrimitiveReactNode } from "../../lib/utils";
|
|
7
8
|
import { IOS, VKCOM, ANDROID } from "../../lib/platform";
|
|
8
9
|
import Text from "../Typography/Text/Text";
|
|
9
10
|
import Title from "../Typography/Title/Title";
|
|
@@ -41,9 +42,10 @@ const ButtonTypography: React.FC<ButtonTypographyProps> = ({
|
|
|
41
42
|
);
|
|
42
43
|
};
|
|
43
44
|
|
|
45
|
+
const warn = warnOnce("PanelHeaderButton");
|
|
44
46
|
export const PanelHeaderButton: React.FC<PanelHeaderButtonProps> = ({
|
|
45
47
|
children,
|
|
46
|
-
primary,
|
|
48
|
+
primary = false,
|
|
47
49
|
label,
|
|
48
50
|
...restProps
|
|
49
51
|
}: PanelHeaderButtonProps) => {
|
|
@@ -68,6 +70,21 @@ export const PanelHeaderButton: React.FC<PanelHeaderButtonProps> = ({
|
|
|
68
70
|
activeMode = "PanelHeaderButton--active";
|
|
69
71
|
}
|
|
70
72
|
|
|
73
|
+
if (process.env.NODE_ENV === "development") {
|
|
74
|
+
const hasAccessibleName = Boolean(
|
|
75
|
+
getTitleFromChildren(children) ||
|
|
76
|
+
getTitleFromChildren(label) ||
|
|
77
|
+
restProps["aria-label"] ||
|
|
78
|
+
restProps["aria-labelledby"]
|
|
79
|
+
);
|
|
80
|
+
|
|
81
|
+
if (!hasAccessibleName) {
|
|
82
|
+
warn(
|
|
83
|
+
"a11y: У кнопки нет названия, которое может прочитать скринридер, и она недоступна для части пользователей. Замените содержимое на текст или добавьте описание действия с помощью пропа aria-label."
|
|
84
|
+
);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
71
88
|
return (
|
|
72
89
|
<Tappable
|
|
73
90
|
{...restProps}
|
|
@@ -94,8 +111,3 @@ export const PanelHeaderButton: React.FC<PanelHeaderButtonProps> = ({
|
|
|
94
111
|
</Tappable>
|
|
95
112
|
);
|
|
96
113
|
};
|
|
97
|
-
|
|
98
|
-
PanelHeaderButton.defaultProps = {
|
|
99
|
-
primary: false,
|
|
100
|
-
"aria-label": "Закрыть",
|
|
101
|
-
};
|