@salutejs/plasma-new-hope 0.193.0 → 0.194.0-canary.1558.11852073996.0
Sign up to get free protection for your applications and to get access to all the features.
- package/cjs/components/Modal/Modal.css +6 -0
- package/cjs/components/Modal/Modal.js +27 -13
- package/cjs/components/Modal/Modal.js.map +1 -1
- package/cjs/components/Modal/Modal.styles.js +27 -0
- package/cjs/components/Modal/Modal.styles.js.map +1 -0
- package/cjs/components/Modal/Modal.styles_tqsxxy.css +3 -0
- package/cjs/components/Modal/Modal.tokens.js +7 -1
- package/cjs/components/Modal/Modal.tokens.js.map +1 -1
- package/cjs/index.css +4 -0
- package/emotion/cjs/components/Modal/Modal.js +26 -12
- package/emotion/cjs/components/Modal/Modal.styles.js +27 -0
- package/emotion/cjs/components/Modal/Modal.template-doc.mdx +47 -0
- package/emotion/cjs/components/Modal/Modal.tokens.js +7 -1
- package/emotion/cjs/examples/plasma_b2c/components/Modal/Modal.config.js +1 -1
- package/emotion/cjs/examples/plasma_b2c/components/Modal/Modal.stories.tsx +90 -1
- package/emotion/cjs/examples/plasma_web/components/Modal/Modal.config.js +1 -1
- package/emotion/cjs/examples/plasma_web/components/Modal/Modal.stories.tsx +90 -1
- package/emotion/es/components/Modal/Modal.js +26 -12
- package/emotion/es/components/Modal/Modal.styles.js +20 -0
- package/emotion/es/components/Modal/Modal.template-doc.mdx +47 -0
- package/emotion/es/components/Modal/Modal.tokens.js +7 -1
- package/emotion/es/examples/plasma_b2c/components/Modal/Modal.config.js +1 -1
- package/emotion/es/examples/plasma_b2c/components/Modal/Modal.stories.tsx +90 -1
- package/emotion/es/examples/plasma_web/components/Modal/Modal.config.js +1 -1
- package/emotion/es/examples/plasma_web/components/Modal/Modal.stories.tsx +90 -1
- package/es/components/Modal/Modal.css +6 -0
- package/es/components/Modal/Modal.js +27 -13
- package/es/components/Modal/Modal.js.map +1 -1
- package/es/components/Modal/Modal.styles.js +21 -0
- package/es/components/Modal/Modal.styles.js.map +1 -0
- package/es/components/Modal/Modal.styles_tqsxxy.css +3 -0
- package/es/components/Modal/Modal.tokens.js +7 -1
- package/es/components/Modal/Modal.tokens.js.map +1 -1
- package/es/index.css +4 -0
- package/package.json +2 -2
- package/styled-components/cjs/components/Modal/Modal.js +26 -12
- package/styled-components/cjs/components/Modal/Modal.styles.js +24 -0
- package/styled-components/cjs/components/Modal/Modal.template-doc.mdx +47 -0
- package/styled-components/cjs/components/Modal/Modal.tokens.js +7 -1
- package/styled-components/cjs/examples/plasma_b2c/components/Modal/Modal.config.js +1 -1
- package/styled-components/cjs/examples/plasma_b2c/components/Modal/Modal.stories.tsx +90 -1
- package/styled-components/cjs/examples/plasma_web/components/Modal/Modal.config.js +1 -1
- package/styled-components/cjs/examples/plasma_web/components/Modal/Modal.stories.tsx +90 -1
- package/styled-components/es/components/Modal/Modal.js +26 -12
- package/styled-components/es/components/Modal/Modal.styles.js +17 -0
- package/styled-components/es/components/Modal/Modal.template-doc.mdx +47 -0
- package/styled-components/es/components/Modal/Modal.tokens.js +7 -1
- package/styled-components/es/examples/plasma_b2c/components/Modal/Modal.config.js +1 -1
- package/styled-components/es/examples/plasma_b2c/components/Modal/Modal.stories.tsx +90 -1
- package/styled-components/es/examples/plasma_web/components/Modal/Modal.config.js +1 -1
- package/styled-components/es/examples/plasma_web/components/Modal/Modal.stories.tsx +90 -1
- package/types/components/Modal/Modal.d.ts.map +1 -1
- package/types/components/Modal/Modal.styles.d.ts +5 -0
- package/types/components/Modal/Modal.styles.d.ts.map +1 -0
- package/types/components/Modal/Modal.tokens.d.ts +6 -0
- package/types/components/Modal/Modal.tokens.d.ts.map +1 -1
- package/types/components/Modal/Modal.types.d.ts +21 -1
- package/types/components/Modal/Modal.types.d.ts.map +1 -1
- package/types/components/Modal/index.d.ts +1 -1
- package/types/components/Modal/index.d.ts.map +1 -1
- package/types/examples/plasma_b2c/components/Modal/Modal.config.d.ts.map +1 -1
- package/types/examples/plasma_b2c/components/Modal/Modal.d.ts +7 -1
- package/types/examples/plasma_b2c/components/Modal/Modal.d.ts.map +1 -1
- package/types/examples/plasma_web/components/Modal/Modal.config.d.ts.map +1 -1
- package/types/examples/plasma_web/components/Modal/Modal.d.ts +7 -1
- package/types/examples/plasma_web/components/Modal/Modal.d.ts.map +1 -1
@@ -4,3 +4,9 @@
|
|
4
4
|
.Popup_styles_gq4luz_p1f40oul__bb610b96{position:var(--p1f40oul-0);z-index:var(--p1f40oul-1);left:var(--p1f40oul-2);right:var(--p1f40oul-3);top:var(--p1f40oul-4);bottom:var(--p1f40oul-5);-webkit-transform:var(--p1f40oul-6);-ms-transform:var(--p1f40oul-6);transform:var(--p1f40oul-6);}
|
5
5
|
|
6
6
|
.Overlay_styles_cxej3y_s1afr8la__70d4dd9a{position:fixed;inset:0;z-index:var(--s1afr8la-0);--plasma_private-overlay-background-color:var(--s1afr8la-1);--plasma_private-overlay-backdrop-filter:var(--s1afr8la-2);background:var(--s1afr8la-3);-webkit-backdrop-filter:var(--s1afr8la-4);backdrop-filter:var(--s1afr8la-4);cursor:var(--s1afr8la-5);}
|
7
|
+
|
8
|
+
.IconRoot_7pl7ig_svvlqhf__32c458a1{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;width:var(--svvlqhf-0);height:var(--svvlqhf-0);-webkit-flex:0 0 var(--svvlqhf-0);-ms-flex:0 0 var(--svvlqhf-0);flex:0 0 var(--svvlqhf-0);}
|
9
|
+
|
10
|
+
.Modal_styles_tqsxxy_m7npn1w__53552e6a{border-radius:var(--plasma-modal-body-border-radius);padding:var(--plasma-modal-body-padding);background:var(--plasma-modal-body-background);box-shadow:var(--shadow-down-soft-l);}
|
11
|
+
.Modal_styles_tqsxxy_m16phoaz__53552e6a{position:relative;padding:var(--plasma-modal-content-padding);}
|
12
|
+
.Modal_styles_tqsxxy_c5bx5hr__53552e6a{top:0;right:0;width:1.5rem;height:1.5rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;border:none;border-radius:var(--plasma-modal-close-button-radius);padding:0;margin:0;outline:none;cursor:pointer;background:transparent;position:relative;position:absolute;}.Modal_styles_tqsxxy_c5bx5hr__53552e6a::before{content:'';position:absolute;top:-0.125rem;left:-0.125rem;right:-0.125rem;bottom:-0.125rem;z-index:1;display:block;box-sizing:content-box;border:0.063rem solid transparent;border-radius:calc(var(--plasma-modal-close-button-radius) + 0.063rem);-webkit-transition:box-shadow 0.2s ease-in-out;transition:box-shadow 0.2s ease-in-out;pointer-events:none;}.Modal_styles_tqsxxy_c5bx5hr__53552e6a.Modal_styles_tqsxxy_focusVisible__53552e6a:focus::before,.Modal_styles_tqsxxy_c5bx5hr__53552e6a[data-focus-visible-added]::before{outline:none;box-shadow:0 0 0 0.063rem var(--plasma-modal-outline-focus-color);}
|
@@ -6,17 +6,20 @@ var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelper
|
|
6
6
|
var React = require('react');
|
7
7
|
var plasmaCore = require('@salutejs/plasma-core');
|
8
8
|
var index = require('../Popup/utils/index.js');
|
9
|
+
var IconClose = require('../_Icon/Icons/IconClose.js');
|
9
10
|
var Modal_tokens = require('./Modal.tokens.js');
|
10
11
|
var base = require('./variations/_view/base.js');
|
11
12
|
var ModalContext = require('./ModalContext.js');
|
13
|
+
var Modal_styles = require('./Modal.styles.js');
|
12
14
|
var useFocusTrap = require('../../hooks/useFocusTrap.js');
|
13
15
|
var PopupContext = require('../Popup/PopupContext.js');
|
14
16
|
var useModal = require('./hooks/useModal.js');
|
15
|
-
var Overlay = require('../Overlay/Overlay.js');
|
16
17
|
var common = require('../../engines/common.js');
|
17
18
|
var Popup$1 = require('../Popup/Popup.js');
|
19
|
+
var Overlay = require('../Overlay/Overlay.js');
|
18
20
|
|
19
|
-
var
|
21
|
+
var _IconClose;
|
22
|
+
var _excluded = ["id", "withAnimation", "onClose", "onOverlayClick", "onEscKeyDown", "closeOnEsc", "closeOnOverlayClick", "withBlur", "initialFocusRef", "focusAfterRef", "zIndex", "popupInfo", "children", "view", "opened", "isOpen", "hasBody", "hasClose"];
|
20
23
|
|
21
24
|
// issue #823
|
22
25
|
var Popup = /*#__PURE__*/common.component(Popup$1.popupConfig);
|
@@ -45,8 +48,11 @@ var modalRoot = function modalRoot(Root) {
|
|
45
48
|
view = _ref.view,
|
46
49
|
opened = _ref.opened,
|
47
50
|
isOpen = _ref.isOpen,
|
51
|
+
hasBody = _ref.hasBody,
|
52
|
+
hasClose = _ref.hasClose,
|
48
53
|
rest = _rollupPluginBabelHelpers.objectWithoutProperties(_ref, _excluded);
|
49
54
|
var innerIsOpen = Boolean(isOpen || opened);
|
55
|
+
var innerHasClose = hasClose === undefined && hasBody || hasClose;
|
50
56
|
var trapRef = useFocusTrap.useFocusTrap(true, initialFocusRef, focusAfterRef, true);
|
51
57
|
var popupController = PopupContext.usePopupContext();
|
52
58
|
var innerRef = plasmaCore.useForkRef(trapRef, outerRootRef);
|
@@ -74,6 +80,15 @@ var modalRoot = function modalRoot(Root) {
|
|
74
80
|
onClose();
|
75
81
|
}
|
76
82
|
}, [closeOnOverlayClick, onOverlayClick, onClose]);
|
83
|
+
var overlayNode = /*#__PURE__*/React.createElement(Overlay.Overlay, {
|
84
|
+
className: Modal_tokens.classes.overlay,
|
85
|
+
zIndex: zIndex || index.DEFAULT_Z_INDEX,
|
86
|
+
backgroundColorProperty: overlayBackgroundToken,
|
87
|
+
withBlur: withBlur,
|
88
|
+
transparent: transparent,
|
89
|
+
isClickable: closeOnOverlayClick,
|
90
|
+
onOverlayClick: onModalOverlayKeyDown
|
91
|
+
});
|
77
92
|
return /*#__PURE__*/React.createElement(Popup, _rollupPluginBabelHelpers.extends({
|
78
93
|
id: innerId,
|
79
94
|
opened: innerIsOpen,
|
@@ -81,18 +96,17 @@ var modalRoot = function modalRoot(Root) {
|
|
81
96
|
popupInfo: modalInfo,
|
82
97
|
withAnimation: withAnimation,
|
83
98
|
zIndex: zIndex,
|
84
|
-
overlay: /*#__PURE__*/React.createElement(Root, {
|
99
|
+
overlay: hasBody ? overlayNode : /*#__PURE__*/React.createElement(Root, {
|
85
100
|
view: view
|
86
|
-
},
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
}, rest), children);
|
101
|
+
}, overlayNode)
|
102
|
+
}, rest), hasBody ? /*#__PURE__*/React.createElement(Root, {
|
103
|
+
view: view
|
104
|
+
}, /*#__PURE__*/React.createElement(Modal_styles.ModalBody, null, /*#__PURE__*/React.createElement(Modal_styles.ModalContent, null, innerHasClose && /*#__PURE__*/React.createElement(Modal_styles.CloseButton, {
|
105
|
+
onClick: onClose,
|
106
|
+
"data-test": "modal-close"
|
107
|
+
}, _IconClose || (_IconClose = /*#__PURE__*/React.createElement(IconClose.IconClose, {
|
108
|
+
size: "s"
|
109
|
+
}))), children))) : /*#__PURE__*/React.createElement(React.Fragment, null, children));
|
96
110
|
});
|
97
111
|
};
|
98
112
|
var modalConfig = {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Modal.js","sources":["../../../src/components/Modal/Modal.tsx"],"sourcesContent":["import React, { forwardRef, useCallback, useMemo } from 'react';\nimport { useForkRef, safeUseId } from '@salutejs/plasma-core';\n\nimport { RootProps, component } from '../../engines';\nimport { popupConfig, usePopupContext } from '../Popup';\nimport { Overlay } from '../Overlay';\nimport { DEFAULT_Z_INDEX } from '../Popup/utils';\nimport { useFocusTrap } from '../../hooks';\n\nimport { classes, tokens } from './Modal.tokens';\nimport { ModalProps } from './Modal.types';\nimport { useModal } from './hooks';\nimport { base as viewCSS } from './variations/_view/base';\nimport { getIdLastModal } from './ModalContext';\n\n// issue #823\nconst Popup = component(popupConfig);\n\n/**\n * Modal.\n * Управляет показом/скрытием, подложкой и анимацией визуальной части модального окна.\n */\nexport const modalRoot = (Root: RootProps<HTMLDivElement, ModalProps>) =>\n forwardRef<HTMLDivElement, ModalProps>(\n (\n {\n id,\n withAnimation,\n onClose,\n onOverlayClick,\n onEscKeyDown,\n closeOnEsc = true,\n closeOnOverlayClick = true,\n withBlur,\n initialFocusRef,\n focusAfterRef,\n zIndex,\n popupInfo,\n children,\n view,\n opened,\n isOpen,\n ...rest\n },\n outerRootRef,\n ) => {\n const innerIsOpen = Boolean(isOpen || opened);\n const trapRef = useFocusTrap(true, initialFocusRef, focusAfterRef, true);\n const popupController = usePopupContext();\n\n const innerRef = useForkRef<HTMLDivElement>(trapRef, outerRootRef);\n\n const uniqId = safeUseId();\n const innerId = id || uniqId;\n const overlayBackgroundToken = withBlur\n ? `var(${tokens.modalOverlayWithBlurColor})`\n : `var(${tokens.modalOverlayColor})`;\n\n const { modalInfo } = useModal({\n id: innerId,\n isOpen: innerIsOpen,\n closeOnEsc,\n onEscKeyDown,\n onClose,\n popupInfo,\n });\n\n const transparent = useMemo(() => getIdLastModal(popupController.items) !== innerId, [\n innerId,\n popupController.items,\n ]);\n\n const onModalOverlayKeyDown = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n if (onOverlayClick) {\n onOverlayClick(event);\n return;\n }\n\n if (onClose) {\n onClose();\n }\n },\n [closeOnOverlayClick, onOverlayClick, onClose],\n );\n\n return (\n <Popup\n id={innerId}\n opened={innerIsOpen}\n ref={innerRef}\n popupInfo={modalInfo}\n withAnimation={withAnimation}\n zIndex={zIndex}\n overlay={\n <Root view={view}>\n <Overlay\n className={classes.overlay}\n zIndex={zIndex || DEFAULT_Z_INDEX}\n backgroundColorProperty={overlayBackgroundToken}\n withBlur={withBlur}\n transparent={transparent}\n isClickable={closeOnOverlayClick}\n onOverlayClick={onModalOverlayKeyDown}\n />\n </Root>\n }\n {...rest}\n >\n {children}\n </Popup>\n );\n },\n );\n\nexport const modalConfig = {\n name: 'Modal',\n tag: 'div',\n layout: modalRoot,\n base: '',\n variations: {\n view: {\n css: viewCSS,\n },\n },\n defaults: {\n view: 'default',\n },\n};\n"],"names":["Popup","component","popupConfig","modalRoot","Root","forwardRef","_ref","outerRootRef","id","withAnimation","onClose","onOverlayClick","onEscKeyDown","_ref$closeOnEsc","closeOnEsc","_ref$closeOnOverlayCl","closeOnOverlayClick","withBlur","initialFocusRef","focusAfterRef","zIndex","popupInfo","children","view","opened","isOpen","rest","_objectWithoutProperties","_excluded","innerIsOpen","Boolean","trapRef","useFocusTrap","popupController","usePopupContext","innerRef","useForkRef","uniqId","safeUseId","innerId","overlayBackgroundToken","concat","tokens","modalOverlayWithBlurColor","modalOverlayColor","_useModal","useModal","modalInfo","transparent","useMemo","getIdLastModal","items","onModalOverlayKeyDown","useCallback","event","React","createElement","_extends","ref","overlay","Overlay","className","classes","DEFAULT_Z_INDEX","backgroundColorProperty","isClickable","modalConfig","name","tag","layout","base","variations","css","viewCSS","defaults"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"Modal.js","sources":["../../../src/components/Modal/Modal.tsx"],"sourcesContent":["import React, { forwardRef, useCallback, useMemo } from 'react';\nimport { useForkRef, safeUseId } from '@salutejs/plasma-core';\n\nimport { RootProps, component } from '../../engines';\nimport { popupConfig, usePopupContext } from '../Popup';\nimport { Overlay } from '../Overlay';\nimport { DEFAULT_Z_INDEX } from '../Popup/utils';\nimport { useFocusTrap } from '../../hooks';\nimport { IconClose } from '../_Icon/Icons/IconClose';\n\nimport { classes, tokens } from './Modal.tokens';\nimport { ModalProps } from './Modal.types';\nimport { useModal } from './hooks';\nimport { base as viewCSS } from './variations/_view/base';\nimport { getIdLastModal } from './ModalContext';\nimport { CloseButton, ModalBody, ModalContent } from './Modal.styles';\n\n// issue #823\nconst Popup = component(popupConfig);\n\n/**\n * Modal.\n * Управляет показом/скрытием, подложкой и анимацией визуальной части модального окна.\n */\nexport const modalRoot = (Root: RootProps<HTMLDivElement, ModalProps>) =>\n forwardRef<HTMLDivElement, ModalProps>(\n (\n {\n id,\n withAnimation,\n onClose,\n onOverlayClick,\n onEscKeyDown,\n closeOnEsc = true,\n closeOnOverlayClick = true,\n withBlur,\n initialFocusRef,\n focusAfterRef,\n zIndex,\n popupInfo,\n children,\n view,\n opened,\n isOpen,\n hasBody,\n hasClose,\n ...rest\n },\n outerRootRef,\n ) => {\n const innerIsOpen = Boolean(isOpen || opened);\n const innerHasClose = (hasClose === undefined && hasBody) || hasClose;\n const trapRef = useFocusTrap(true, initialFocusRef, focusAfterRef, true);\n const popupController = usePopupContext();\n\n const innerRef = useForkRef<HTMLDivElement>(trapRef, outerRootRef);\n\n const uniqId = safeUseId();\n const innerId = id || uniqId;\n const overlayBackgroundToken = withBlur\n ? `var(${tokens.modalOverlayWithBlurColor})`\n : `var(${tokens.modalOverlayColor})`;\n\n const { modalInfo } = useModal({\n id: innerId,\n isOpen: innerIsOpen,\n closeOnEsc,\n onEscKeyDown,\n onClose,\n popupInfo,\n });\n\n const transparent = useMemo(() => getIdLastModal(popupController.items) !== innerId, [\n innerId,\n popupController.items,\n ]);\n\n const onModalOverlayKeyDown = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n if (onOverlayClick) {\n onOverlayClick(event);\n return;\n }\n\n if (onClose) {\n onClose();\n }\n },\n [closeOnOverlayClick, onOverlayClick, onClose],\n );\n\n const overlayNode = (\n <Overlay\n className={classes.overlay}\n zIndex={zIndex || DEFAULT_Z_INDEX}\n backgroundColorProperty={overlayBackgroundToken}\n withBlur={withBlur}\n transparent={transparent}\n isClickable={closeOnOverlayClick}\n onOverlayClick={onModalOverlayKeyDown}\n />\n );\n\n return (\n <Popup\n id={innerId}\n opened={innerIsOpen}\n ref={innerRef}\n popupInfo={modalInfo}\n withAnimation={withAnimation}\n zIndex={zIndex}\n overlay={hasBody ? overlayNode : <Root view={view}>{overlayNode}</Root>}\n {...rest}\n >\n {hasBody ? (\n <Root view={view}>\n <ModalBody>\n <ModalContent>\n {innerHasClose && (\n <CloseButton onClick={onClose} data-test=\"modal-close\">\n <IconClose size=\"s\" />\n </CloseButton>\n )}\n {children}\n </ModalContent>\n </ModalBody>\n </Root>\n ) : (\n <>{children}</>\n )}\n </Popup>\n );\n },\n );\n\nexport const modalConfig = {\n name: 'Modal',\n tag: 'div',\n layout: modalRoot,\n base: '',\n variations: {\n view: {\n css: viewCSS,\n },\n },\n defaults: {\n view: 'default',\n },\n};\n"],"names":["Popup","component","popupConfig","modalRoot","Root","forwardRef","_ref","outerRootRef","id","withAnimation","onClose","onOverlayClick","onEscKeyDown","_ref$closeOnEsc","closeOnEsc","_ref$closeOnOverlayCl","closeOnOverlayClick","withBlur","initialFocusRef","focusAfterRef","zIndex","popupInfo","children","view","opened","isOpen","hasBody","hasClose","rest","_objectWithoutProperties","_excluded","innerIsOpen","Boolean","innerHasClose","undefined","trapRef","useFocusTrap","popupController","usePopupContext","innerRef","useForkRef","uniqId","safeUseId","innerId","overlayBackgroundToken","concat","tokens","modalOverlayWithBlurColor","modalOverlayColor","_useModal","useModal","modalInfo","transparent","useMemo","getIdLastModal","items","onModalOverlayKeyDown","useCallback","event","overlayNode","React","createElement","Overlay","className","classes","overlay","DEFAULT_Z_INDEX","backgroundColorProperty","isClickable","_extends","ref","ModalBody","ModalContent","CloseButton","onClick","_IconClose","IconClose","size","Fragment","modalConfig","name","tag","layout","base","variations","css","viewCSS","defaults"],"mappings":"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"}
|
@@ -0,0 +1,27 @@
|
|
1
|
+
import './Modal.styles_tqsxxy.css';
|
2
|
+
'use strict';
|
3
|
+
|
4
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
5
|
+
|
6
|
+
var react = require('@linaria/react');
|
7
|
+
|
8
|
+
var ModalBody = /*#__PURE__*/react.styled('div')({
|
9
|
+
name: "ModalBody",
|
10
|
+
"class": "m7npn1w",
|
11
|
+
propsAsIs: false
|
12
|
+
});
|
13
|
+
var ModalContent = /*#__PURE__*/react.styled('div')({
|
14
|
+
name: "ModalContent",
|
15
|
+
"class": "m16phoaz",
|
16
|
+
propsAsIs: false
|
17
|
+
});
|
18
|
+
var CloseButton = /*#__PURE__*/react.styled('button')({
|
19
|
+
name: "CloseButton",
|
20
|
+
"class": "c5bx5hr",
|
21
|
+
propsAsIs: false
|
22
|
+
});
|
23
|
+
|
24
|
+
exports.CloseButton = CloseButton;
|
25
|
+
exports.ModalBody = ModalBody;
|
26
|
+
exports.ModalContent = ModalContent;
|
27
|
+
//# sourceMappingURL=Modal.styles.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Modal.styles.js","sources":["../../../src/components/Modal/Modal.styles.ts"],"sourcesContent":["import { styled } from '@linaria/react';\n\nimport { addFocus } from '../../mixins';\n\nimport { tokens } from './Modal.tokens';\n\nexport const ModalBody = styled.div`\n border-radius: var(${tokens.modalBodyBorderRadius});\n padding: var(${tokens.modalBodyPadding});\n background: var(${tokens.modalBodyBackground});\n box-shadow: var(--shadow-down-soft-l);\n`;\n\nexport const ModalContent = styled.div`\n position: relative;\n padding: var(${tokens.modalContentPadding});\n`;\n\nexport const CloseButton = styled.button`\n top: 0;\n right: 0;\n\n width: 1.5rem;\n height: 1.5rem;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n border: none;\n border-radius: var(${tokens.modalCloseButtonRadius});\n\n padding: 0;\n margin: 0;\n outline: none;\n\n cursor: pointer;\n\n background: transparent;\n\n ${addFocus({\n outlineSize: '0.063rem',\n outlineOffset: '-0.125rem',\n outlineColor: `var(${tokens.modalOutlineFocusColor})`,\n outlineRadius: `calc(var(${tokens.modalCloseButtonRadius}) + 0.063rem)`,\n })};\n\n position: absolute;\n`;\n"],"names":["ModalBody","styled","name","class","propsAsIs","ModalContent","CloseButton"],"mappings":";;;;;;AAMO,IAAMA,SAAS,gBAAGC,YAAM,CAAA,KAAA,CAAA,CAAA;AAAAC,EAAAA,IAAA,EAAA,WAAA;AAAAC,EAAAA,OAAAA,EAAA,SAAA;AAAAC,EAAAA,SAAA,EAAA,KAAA;AAAA,CAK9B,EAAA;AAEM,IAAMC,YAAY,gBAAGJ,YAAM,CAAA,KAAA,CAAA,CAAA;AAAAC,EAAAA,IAAA,EAAA,cAAA;AAAAC,EAAAA,OAAAA,EAAA,UAAA;AAAAC,EAAAA,SAAA,EAAA,KAAA;AAAA,CAGjC,EAAA;AAEM,IAAME,WAAW,gBAAGL,YAAM,CAAA,QAAA,CAAA,CAAA;AAAAC,EAAAA,IAAA,EAAA,aAAA;AAAAC,EAAAA,OAAAA,EAAA,SAAA;AAAAC,EAAAA,SAAA,EAAA,KAAA;AAAA,CA8BhC;;;;;;"}
|
@@ -0,0 +1,3 @@
|
|
1
|
+
.m7npn1w{border-radius:var(--plasma-modal-body-border-radius);padding:var(--plasma-modal-body-padding);background:var(--plasma-modal-body-background);box-shadow:var(--shadow-down-soft-l);}
|
2
|
+
.m16phoaz{position:relative;padding:var(--plasma-modal-content-padding);}
|
3
|
+
.c5bx5hr{top:0;right:0;width:1.5rem;height:1.5rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;border:none;border-radius:var(--plasma-modal-close-button-radius);padding:0;margin:0;outline:none;cursor:pointer;background:transparent;position:relative;position:absolute;}.c5bx5hr::before{content:'';position:absolute;top:-0.125rem;left:-0.125rem;right:-0.125rem;bottom:-0.125rem;z-index:1;display:block;box-sizing:content-box;border:0.063rem solid transparent;border-radius:calc(var(--plasma-modal-close-button-radius) + 0.063rem);-webkit-transition:box-shadow 0.2s ease-in-out;transition:box-shadow 0.2s ease-in-out;pointer-events:none;}.c5bx5hr.focus-visible:focus::before,.c5bx5hr[data-focus-visible-added]::before{outline:none;box-shadow:0 0 0 0.063rem var(--plasma-modal-outline-focus-color);}
|
@@ -10,7 +10,13 @@ var classes = {
|
|
10
10
|
};
|
11
11
|
var tokens = {
|
12
12
|
modalOverlayWithBlurColor: '--plasma-modal-overlay-with-blur-color',
|
13
|
-
modalOverlayColor: '--plasma-modal-overlay-color'
|
13
|
+
modalOverlayColor: '--plasma-modal-overlay-color',
|
14
|
+
modalBodyBackground: '--plasma-modal-body-background',
|
15
|
+
modalBodyBorderRadius: '--plasma-modal-body-border-radius',
|
16
|
+
modalBodyPadding: '--plasma-modal-body-padding',
|
17
|
+
modalContentPadding: '--plasma-modal-content-padding',
|
18
|
+
modalOutlineFocusColor: '--plasma-modal-outline-focus-color',
|
19
|
+
modalCloseButtonRadius: '--plasma-modal-close-button-radius'
|
14
20
|
};
|
15
21
|
|
16
22
|
exports.classes = classes;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Modal.tokens.js","sources":["../../../src/components/Modal/Modal.tokens.ts"],"sourcesContent":["export const classes = {\n /*\n * Класс компонента ModalOverlay\n */\n overlay: 'modal-overlay',\n};\n\nexport const tokens = {\n modalOverlayWithBlurColor: '--plasma-modal-overlay-with-blur-color',\n modalOverlayColor: '--plasma-modal-overlay-color',\n};\n"],"names":["classes","overlay","tokens","modalOverlayWithBlurColor","modalOverlayColor"],"mappings":";;;;AAAO,IAAMA,OAAO,GAAG;AACnB;AACJ;AACA;AACIC,EAAAA,OAAO,EAAE,eAAA;AACb,EAAC;AAEM,IAAMC,MAAM,GAAG;AAClBC,EAAAA,yBAAyB,EAAE,wCAAwC;AACnEC,EAAAA,iBAAiB,EAAE,
|
1
|
+
{"version":3,"file":"Modal.tokens.js","sources":["../../../src/components/Modal/Modal.tokens.ts"],"sourcesContent":["export const classes = {\n /*\n * Класс компонента ModalOverlay\n */\n overlay: 'modal-overlay',\n};\n\nexport const tokens = {\n modalOverlayWithBlurColor: '--plasma-modal-overlay-with-blur-color',\n modalOverlayColor: '--plasma-modal-overlay-color',\n modalBodyBackground: '--plasma-modal-body-background',\n modalBodyBorderRadius: '--plasma-modal-body-border-radius',\n modalBodyPadding: '--plasma-modal-body-padding',\n modalContentPadding: '--plasma-modal-content-padding',\n modalOutlineFocusColor: '--plasma-modal-outline-focus-color',\n modalCloseButtonRadius: '--plasma-modal-close-button-radius',\n};\n"],"names":["classes","overlay","tokens","modalOverlayWithBlurColor","modalOverlayColor","modalBodyBackground","modalBodyBorderRadius","modalBodyPadding","modalContentPadding","modalOutlineFocusColor","modalCloseButtonRadius"],"mappings":";;;;AAAO,IAAMA,OAAO,GAAG;AACnB;AACJ;AACA;AACIC,EAAAA,OAAO,EAAE,eAAA;AACb,EAAC;AAEM,IAAMC,MAAM,GAAG;AAClBC,EAAAA,yBAAyB,EAAE,wCAAwC;AACnEC,EAAAA,iBAAiB,EAAE,8BAA8B;AACjDC,EAAAA,mBAAmB,EAAE,gCAAgC;AACrDC,EAAAA,qBAAqB,EAAE,mCAAmC;AAC1DC,EAAAA,gBAAgB,EAAE,6BAA6B;AAC/CC,EAAAA,mBAAmB,EAAE,gCAAgC;AACrDC,EAAAA,sBAAsB,EAAE,oCAAoC;AAC5DC,EAAAA,sBAAsB,EAAE,oCAAA;AAC5B;;;;;"}
|
package/cjs/index.css
CHANGED
@@ -336,6 +336,10 @@
|
|
336
336
|
.Popup_styles_gq4luz_p5u7tqa__bb610b96{position:relative;max-width:100%;pointer-events:all;}
|
337
337
|
.Popup_styles_gq4luz_p1f40oul__bb610b96{position:var(--p1f40oul-0);z-index:var(--p1f40oul-1);left:var(--p1f40oul-2);right:var(--p1f40oul-3);top:var(--p1f40oul-4);bottom:var(--p1f40oul-5);-webkit-transform:var(--p1f40oul-6);-ms-transform:var(--p1f40oul-6);transform:var(--p1f40oul-6);}
|
338
338
|
|
339
|
+
.Modal_styles_tqsxxy_m7npn1w__53552e6a{border-radius:var(--plasma-modal-body-border-radius);padding:var(--plasma-modal-body-padding);background:var(--plasma-modal-body-background);box-shadow:var(--shadow-down-soft-l);}
|
340
|
+
.Modal_styles_tqsxxy_m16phoaz__53552e6a{position:relative;padding:var(--plasma-modal-content-padding);}
|
341
|
+
.Modal_styles_tqsxxy_c5bx5hr__53552e6a{top:0;right:0;width:1.5rem;height:1.5rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;border:none;border-radius:var(--plasma-modal-close-button-radius);padding:0;margin:0;outline:none;cursor:pointer;background:transparent;position:relative;position:absolute;}.Modal_styles_tqsxxy_c5bx5hr__53552e6a::before{content:'';position:absolute;top:-0.125rem;left:-0.125rem;right:-0.125rem;bottom:-0.125rem;z-index:1;display:block;box-sizing:content-box;border:0.063rem solid transparent;border-radius:calc(var(--plasma-modal-close-button-radius) + 0.063rem);-webkit-transition:box-shadow 0.2s ease-in-out;transition:box-shadow 0.2s ease-in-out;pointer-events:none;}.Modal_styles_tqsxxy_c5bx5hr__53552e6a.Modal_styles_tqsxxy_focusVisible__53552e6a:focus::before,.Modal_styles_tqsxxy_c5bx5hr__53552e6a[data-focus-visible-added]::before{outline:none;box-shadow:0 0 0 0.063rem var(--plasma-modal-outline-focus-color);}
|
342
|
+
|
339
343
|
.NotificationsPortal_6417q6_s19gbs9t__4166aeb6 > .NotificationsPortal_6417q6_popupBaseRoot__4166aeb6{overflow:hidden;}
|
340
344
|
|
341
345
|
.base_qkc3i4_bg3tssa__4791b7ea .base_qkc3i4_notificationWrapper__4791b7ea{width:var(--plasma-notification-width);padding:var(--plasma-notification-padding);}.base_qkc3i4_bg3tssa__4791b7ea .base_qkc3i4_notificationWrapper__4791b7ea.base_qkc3i4_notificationLayoutHorizontal__4791b7ea{padding:var(--plasma-notification-horizontal-layout-padding);}.base_qkc3i4_bg3tssa__4791b7ea .base_qkc3i4_notificationWrapper__4791b7ea.base_qkc3i4_notificationLayoutHorizontal__4791b7ea.base_qkc3i4_notificationWithoutCloseIcon__4791b7ea{padding-right:var(--plasma-notification-horizontal-layout-right-padding-without-close-icon);}.base_qkc3i4_bg3tssa__4791b7ea .base_qkc3i4_notificationWrapper__4791b7ea.base_qkc3i4_notificationLayoutHorizontal__4791b7ea.base_qkc3i4_notificationOneLineTextbox__4791b7ea{padding:var(--plasma-notification-padding-one-line-textbox);}
|
@@ -12,11 +12,14 @@ var _Popup = /*#__PURE__*/require("../Popup");
|
|
12
12
|
var _Overlay = /*#__PURE__*/require("../Overlay");
|
13
13
|
var _utils = /*#__PURE__*/require("../Popup/utils");
|
14
14
|
var _hooks = /*#__PURE__*/require("../../hooks");
|
15
|
+
var _IconClose2 = /*#__PURE__*/require("../_Icon/Icons/IconClose");
|
15
16
|
var _Modal = /*#__PURE__*/require("./Modal.tokens");
|
16
17
|
var _hooks2 = /*#__PURE__*/require("./hooks");
|
17
18
|
var _base = /*#__PURE__*/require("./variations/_view/base");
|
18
19
|
var _ModalContext = /*#__PURE__*/require("./ModalContext");
|
19
|
-
var
|
20
|
+
var _Modal2 = /*#__PURE__*/require("./Modal.styles");
|
21
|
+
var _IconClose;
|
22
|
+
var _excluded = ["id", "withAnimation", "onClose", "onOverlayClick", "onEscKeyDown", "closeOnEsc", "closeOnOverlayClick", "withBlur", "initialFocusRef", "focusAfterRef", "zIndex", "popupInfo", "children", "view", "opened", "isOpen", "hasBody", "hasClose"];
|
20
23
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
21
24
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
22
25
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
@@ -49,8 +52,11 @@ var modalRoot = exports.modalRoot = function modalRoot(Root) {
|
|
49
52
|
view = _ref.view,
|
50
53
|
opened = _ref.opened,
|
51
54
|
isOpen = _ref.isOpen,
|
55
|
+
hasBody = _ref.hasBody,
|
56
|
+
hasClose = _ref.hasClose,
|
52
57
|
rest = _objectWithoutProperties(_ref, _excluded);
|
53
58
|
var innerIsOpen = Boolean(isOpen || opened);
|
59
|
+
var innerHasClose = hasClose === undefined && hasBody || hasClose;
|
54
60
|
var trapRef = (0, _hooks.useFocusTrap)(true, initialFocusRef, focusAfterRef, true);
|
55
61
|
var popupController = (0, _Popup.usePopupContext)();
|
56
62
|
var innerRef = (0, _plasmaCore.useForkRef)(trapRef, outerRootRef);
|
@@ -78,6 +84,15 @@ var modalRoot = exports.modalRoot = function modalRoot(Root) {
|
|
78
84
|
onClose();
|
79
85
|
}
|
80
86
|
}, [closeOnOverlayClick, onOverlayClick, onClose]);
|
87
|
+
var overlayNode = /*#__PURE__*/_react["default"].createElement(_Overlay.Overlay, {
|
88
|
+
className: _Modal.classes.overlay,
|
89
|
+
zIndex: zIndex || _utils.DEFAULT_Z_INDEX,
|
90
|
+
backgroundColorProperty: overlayBackgroundToken,
|
91
|
+
withBlur: withBlur,
|
92
|
+
transparent: transparent,
|
93
|
+
isClickable: closeOnOverlayClick,
|
94
|
+
onOverlayClick: onModalOverlayKeyDown
|
95
|
+
});
|
81
96
|
return /*#__PURE__*/_react["default"].createElement(Popup, _extends({
|
82
97
|
id: innerId,
|
83
98
|
opened: innerIsOpen,
|
@@ -85,18 +100,17 @@ var modalRoot = exports.modalRoot = function modalRoot(Root) {
|
|
85
100
|
popupInfo: modalInfo,
|
86
101
|
withAnimation: withAnimation,
|
87
102
|
zIndex: zIndex,
|
88
|
-
overlay: /*#__PURE__*/_react["default"].createElement(Root, {
|
103
|
+
overlay: hasBody ? overlayNode : /*#__PURE__*/_react["default"].createElement(Root, {
|
89
104
|
view: view
|
90
|
-
},
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
}, rest), children);
|
105
|
+
}, overlayNode)
|
106
|
+
}, rest), hasBody ? /*#__PURE__*/_react["default"].createElement(Root, {
|
107
|
+
view: view
|
108
|
+
}, /*#__PURE__*/_react["default"].createElement(_Modal2.ModalBody, null, /*#__PURE__*/_react["default"].createElement(_Modal2.ModalContent, null, innerHasClose && /*#__PURE__*/_react["default"].createElement(_Modal2.CloseButton, {
|
109
|
+
onClick: onClose,
|
110
|
+
"data-test": "modal-close"
|
111
|
+
}, _IconClose || (_IconClose = /*#__PURE__*/_react["default"].createElement(_IconClose2.IconClose, {
|
112
|
+
size: "s"
|
113
|
+
}))), children))) : /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, children));
|
100
114
|
});
|
101
115
|
};
|
102
116
|
var modalConfig = exports.modalConfig = {
|
@@ -0,0 +1,27 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.ModalContent = exports.ModalBody = exports.CloseButton = void 0;
|
7
|
+
var _base = /*#__PURE__*/_interopRequireDefault( /*#__PURE__*/require("@emotion/styled/base"));
|
8
|
+
var _mixins = /*#__PURE__*/require("../../mixins");
|
9
|
+
var _Modal = /*#__PURE__*/require("./Modal.tokens");
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
11
|
+
var ModalBody = exports.ModalBody = /*#__PURE__*/(0, _base["default"])("div", {
|
12
|
+
target: "e1gvpqag2",
|
13
|
+
label: "plasma-new-hope__ModalBody"
|
14
|
+
})("border-radius:var(", _Modal.tokens.modalBodyBorderRadius, ");padding:var(", _Modal.tokens.modalBodyPadding, ");background:var(", _Modal.tokens.modalBodyBackground, ");box-shadow:var(--shadow-down-soft-l);" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy1lbW90aW9uL2NvbXBvbmVudHMvTW9kYWwvTW9kYWwuc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1tQyIsImZpbGUiOiIuLi8uLi8uLi8uLi9zcmMtZW1vdGlvbi9jb21wb25lbnRzL01vZGFsL01vZGFsLnN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcblxuaW1wb3J0IHsgYWRkRm9jdXMgfSBmcm9tICcuLi8uLi9taXhpbnMnO1xuXG5pbXBvcnQgeyB0b2tlbnMgfSBmcm9tICcuL01vZGFsLnRva2Vucyc7XG5cbmV4cG9ydCBjb25zdCBNb2RhbEJvZHkgPSBzdHlsZWQuZGl2YFxuICAgIGJvcmRlci1yYWRpdXM6IHZhcigke3Rva2Vucy5tb2RhbEJvZHlCb3JkZXJSYWRpdXN9KTtcbiAgICBwYWRkaW5nOiB2YXIoJHt0b2tlbnMubW9kYWxCb2R5UGFkZGluZ30pO1xuICAgIGJhY2tncm91bmQ6IHZhcigke3Rva2Vucy5tb2RhbEJvZHlCYWNrZ3JvdW5kfSk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWRvd24tc29mdC1sKTtcbmA7XG5cbmV4cG9ydCBjb25zdCBNb2RhbENvbnRlbnQgPSBzdHlsZWQuZGl2YFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBwYWRkaW5nOiB2YXIoJHt0b2tlbnMubW9kYWxDb250ZW50UGFkZGluZ30pO1xuYDtcblxuZXhwb3J0IGNvbnN0IENsb3NlQnV0dG9uID0gc3R5bGVkLmJ1dHRvbmBcbiAgICB0b3A6IDA7XG4gICAgcmlnaHQ6IDA7XG5cbiAgICB3aWR0aDogMS41cmVtO1xuICAgIGhlaWdodDogMS41cmVtO1xuXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigke3Rva2Vucy5tb2RhbENsb3NlQnV0dG9uUmFkaXVzfSk7XG5cbiAgICBwYWRkaW5nOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBvdXRsaW5lOiBub25lO1xuXG4gICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG5cbiAgICAke2FkZEZvY3VzKHtcbiAgICAgICAgb3V0bGluZVNpemU6ICcwLjA2M3JlbScsXG4gICAgICAgIG91dGxpbmVPZmZzZXQ6ICctMC4xMjVyZW0nLFxuICAgICAgICBvdXRsaW5lQ29sb3I6IGB2YXIoJHt0b2tlbnMubW9kYWxPdXRsaW5lRm9jdXNDb2xvcn0pYCxcbiAgICAgICAgb3V0bGluZVJhZGl1czogYGNhbGModmFyKCR7dG9rZW5zLm1vZGFsQ2xvc2VCdXR0b25SYWRpdXN9KSArIDAuMDYzcmVtKWAsXG4gICAgfSl9O1xuXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuYDtcbiJdfQ== */"));
|
15
|
+
var ModalContent = exports.ModalContent = /*#__PURE__*/(0, _base["default"])("div", {
|
16
|
+
target: "e1gvpqag1",
|
17
|
+
label: "plasma-new-hope__ModalContent"
|
18
|
+
})("position:relative;padding:var(", _Modal.tokens.modalContentPadding, ");" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy1lbW90aW9uL2NvbXBvbmVudHMvTW9kYWwvTW9kYWwuc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWFzQyIsImZpbGUiOiIuLi8uLi8uLi8uLi9zcmMtZW1vdGlvbi9jb21wb25lbnRzL01vZGFsL01vZGFsLnN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcblxuaW1wb3J0IHsgYWRkRm9jdXMgfSBmcm9tICcuLi8uLi9taXhpbnMnO1xuXG5pbXBvcnQgeyB0b2tlbnMgfSBmcm9tICcuL01vZGFsLnRva2Vucyc7XG5cbmV4cG9ydCBjb25zdCBNb2RhbEJvZHkgPSBzdHlsZWQuZGl2YFxuICAgIGJvcmRlci1yYWRpdXM6IHZhcigke3Rva2Vucy5tb2RhbEJvZHlCb3JkZXJSYWRpdXN9KTtcbiAgICBwYWRkaW5nOiB2YXIoJHt0b2tlbnMubW9kYWxCb2R5UGFkZGluZ30pO1xuICAgIGJhY2tncm91bmQ6IHZhcigke3Rva2Vucy5tb2RhbEJvZHlCYWNrZ3JvdW5kfSk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWRvd24tc29mdC1sKTtcbmA7XG5cbmV4cG9ydCBjb25zdCBNb2RhbENvbnRlbnQgPSBzdHlsZWQuZGl2YFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBwYWRkaW5nOiB2YXIoJHt0b2tlbnMubW9kYWxDb250ZW50UGFkZGluZ30pO1xuYDtcblxuZXhwb3J0IGNvbnN0IENsb3NlQnV0dG9uID0gc3R5bGVkLmJ1dHRvbmBcbiAgICB0b3A6IDA7XG4gICAgcmlnaHQ6IDA7XG5cbiAgICB3aWR0aDogMS41cmVtO1xuICAgIGhlaWdodDogMS41cmVtO1xuXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigke3Rva2Vucy5tb2RhbENsb3NlQnV0dG9uUmFkaXVzfSk7XG5cbiAgICBwYWRkaW5nOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBvdXRsaW5lOiBub25lO1xuXG4gICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG5cbiAgICAke2FkZEZvY3VzKHtcbiAgICAgICAgb3V0bGluZVNpemU6ICcwLjA2M3JlbScsXG4gICAgICAgIG91dGxpbmVPZmZzZXQ6ICctMC4xMjVyZW0nLFxuICAgICAgICBvdXRsaW5lQ29sb3I6IGB2YXIoJHt0b2tlbnMubW9kYWxPdXRsaW5lRm9jdXNDb2xvcn0pYCxcbiAgICAgICAgb3V0bGluZVJhZGl1czogYGNhbGModmFyKCR7dG9rZW5zLm1vZGFsQ2xvc2VCdXR0b25SYWRpdXN9KSArIDAuMDYzcmVtKWAsXG4gICAgfSl9O1xuXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuYDtcbiJdfQ== */"));
|
19
|
+
var CloseButton = exports.CloseButton = /*#__PURE__*/(0, _base["default"])("button", {
|
20
|
+
target: "e1gvpqag0",
|
21
|
+
label: "plasma-new-hope__CloseButton"
|
22
|
+
})("top:0;right:0;width:1.5rem;height:1.5rem;display:flex;align-items:center;justify-content:center;border:none;border-radius:var(", _Modal.tokens.modalCloseButtonRadius, ");padding:0;margin:0;outline:none;cursor:pointer;background:transparent;", /*#__PURE__*/(0, _mixins.addFocus)({
|
23
|
+
outlineSize: '0.063rem',
|
24
|
+
outlineOffset: '-0.125rem',
|
25
|
+
outlineColor: /*#__PURE__*/"var(".concat(_Modal.tokens.modalOutlineFocusColor, ")"),
|
26
|
+
outlineRadius: /*#__PURE__*/"calc(var(".concat(_Modal.tokens.modalCloseButtonRadius, ") + 0.063rem)")
|
27
|
+
}), ";position:absolute;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy1lbW90aW9uL2NvbXBvbmVudHMvTW9kYWwvTW9kYWwuc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWtCd0MiLCJmaWxlIjoiLi4vLi4vLi4vLi4vc3JjLWVtb3Rpb24vY29tcG9uZW50cy9Nb2RhbC9Nb2RhbC5zdHlsZXMudHMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5cbmltcG9ydCB7IGFkZEZvY3VzIH0gZnJvbSAnLi4vLi4vbWl4aW5zJztcblxuaW1wb3J0IHsgdG9rZW5zIH0gZnJvbSAnLi9Nb2RhbC50b2tlbnMnO1xuXG5leHBvcnQgY29uc3QgTW9kYWxCb2R5ID0gc3R5bGVkLmRpdmBcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoJHt0b2tlbnMubW9kYWxCb2R5Qm9yZGVyUmFkaXVzfSk7XG4gICAgcGFkZGluZzogdmFyKCR7dG9rZW5zLm1vZGFsQm9keVBhZGRpbmd9KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoJHt0b2tlbnMubW9kYWxCb2R5QmFja2dyb3VuZH0pO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1kb3duLXNvZnQtbCk7XG5gO1xuXG5leHBvcnQgY29uc3QgTW9kYWxDb250ZW50ID0gc3R5bGVkLmRpdmBcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZzogdmFyKCR7dG9rZW5zLm1vZGFsQ29udGVudFBhZGRpbmd9KTtcbmA7XG5cbmV4cG9ydCBjb25zdCBDbG9zZUJ1dHRvbiA9IHN0eWxlZC5idXR0b25gXG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuXG4gICAgd2lkdGg6IDEuNXJlbTtcbiAgICBoZWlnaHQ6IDEuNXJlbTtcblxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoJHt0b2tlbnMubW9kYWxDbG9zZUJ1dHRvblJhZGl1c30pO1xuXG4gICAgcGFkZGluZzogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgb3V0bGluZTogbm9uZTtcblxuICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuXG4gICAgJHthZGRGb2N1cyh7XG4gICAgICAgIG91dGxpbmVTaXplOiAnMC4wNjNyZW0nLFxuICAgICAgICBvdXRsaW5lT2Zmc2V0OiAnLTAuMTI1cmVtJyxcbiAgICAgICAgb3V0bGluZUNvbG9yOiBgdmFyKCR7dG9rZW5zLm1vZGFsT3V0bGluZUZvY3VzQ29sb3J9KWAsXG4gICAgICAgIG91dGxpbmVSYWRpdXM6IGBjYWxjKHZhcigke3Rva2Vucy5tb2RhbENsb3NlQnV0dG9uUmFkaXVzfSkgKyAwLjA2M3JlbSlgLFxuICAgIH0pfTtcblxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbmA7XG4iXX0= */"));
|
@@ -62,6 +62,53 @@ export function App() {
|
|
62
62
|
}
|
63
63
|
```
|
64
64
|
|
65
|
+
## Использование стилизованной обертки
|
66
|
+
|
67
|
+
Для использования стилизованного мобального окна с отступами и крестиком для закрытия, добавьте свойство `hasBody`.
|
68
|
+
```tsx live
|
69
|
+
import React, { useState } from 'react';
|
70
|
+
import { SSRProvider, Button, Modal, PopupProvider } from '@salutejs/{{ package }}';
|
71
|
+
|
72
|
+
export function App() {
|
73
|
+
const [isOpenA, setIsOpenA] = useState(false);
|
74
|
+
const [isOpenB, setIsOpenB] = useState(false);
|
75
|
+
|
76
|
+
return (
|
77
|
+
<SSRProvider>
|
78
|
+
<PopupProvider>
|
79
|
+
<div style=\{{ height: "300px" }}>
|
80
|
+
<div style=\{{ display: 'flex', flexDirection: 'column' }}>
|
81
|
+
<Button text="Открыть A" onClick={() => setIsOpenA(true)} />
|
82
|
+
</div>
|
83
|
+
<Modal
|
84
|
+
id="modalA"
|
85
|
+
onClose={() => setIsOpenA(false)}
|
86
|
+
opened={isOpenA}
|
87
|
+
placement="center"
|
88
|
+
offset={[0, 0]}
|
89
|
+
hasBody
|
90
|
+
>
|
91
|
+
<Button onClick={() => setIsOpenA(false)}>Close</Button>
|
92
|
+
<Button text="Открыть B" onClick={() => setIsOpenB(true)} />
|
93
|
+
Content
|
94
|
+
<Modal
|
95
|
+
id="modalB"
|
96
|
+
onClose={() => setIsOpenB(false)}
|
97
|
+
opened={isOpenB}
|
98
|
+
placement="right"
|
99
|
+
offset={[0, 0]}
|
100
|
+
>
|
101
|
+
<Button onClick={() => setIsOpenB(false)}>Close</Button>
|
102
|
+
Content
|
103
|
+
</Modal>
|
104
|
+
</Modal>
|
105
|
+
</div>
|
106
|
+
</PopupProvider>
|
107
|
+
</SSRProvider>
|
108
|
+
);
|
109
|
+
}
|
110
|
+
```
|
111
|
+
|
65
112
|
## Подключение анимации
|
66
113
|
Подключение анимации аналогично тому, как это происходит в `Popup` - через свойство `withAnimation`(управление через `popupClasses`, `modalClasses`).
|
67
114
|
Для добавления анимации в оверлей необходимо использовать класс `.modal-overlay` через переменную `modalClasses.overlay` из пакета.
|
@@ -12,5 +12,11 @@ var classes = exports.classes = {
|
|
12
12
|
};
|
13
13
|
var tokens = exports.tokens = {
|
14
14
|
modalOverlayWithBlurColor: '--plasma-modal-overlay-with-blur-color',
|
15
|
-
modalOverlayColor: '--plasma-modal-overlay-color'
|
15
|
+
modalOverlayColor: '--plasma-modal-overlay-color',
|
16
|
+
modalBodyBackground: '--plasma-modal-body-background',
|
17
|
+
modalBodyBorderRadius: '--plasma-modal-body-border-radius',
|
18
|
+
modalBodyPadding: '--plasma-modal-body-padding',
|
19
|
+
modalContentPadding: '--plasma-modal-content-padding',
|
20
|
+
modalOutlineFocusColor: '--plasma-modal-outline-focus-color',
|
21
|
+
modalCloseButtonRadius: '--plasma-modal-close-button-radius'
|
16
22
|
};
|
@@ -12,7 +12,7 @@ var config = exports.config = {
|
|
12
12
|
},
|
13
13
|
variations: {
|
14
14
|
view: {
|
15
|
-
"default": /*#__PURE__*/(0, _react.css)(_Modal.modalTokens.modalOverlayWithBlurColor, ":var(--overlay-blur);", _Modal.modalTokens.modalOverlayColor, ":var(--overlay-soft);;label:plasma-new-hope__default;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
15
|
+
"default": /*#__PURE__*/(0, _react.css)(_Modal.modalTokens.modalOverlayWithBlurColor, ":var(--overlay-blur);", _Modal.modalTokens.modalOverlayColor, ":var(--overlay-soft);", _Modal.modalTokens.modalBodyBackground, ":var(--surface-solid-card);", _Modal.modalTokens.modalBodyBorderRadius, ":1.25rem;", _Modal.modalTokens.modalBodyPadding, ":2rem;", _Modal.modalTokens.modalContentPadding, ":0.625rem;", _Modal.modalTokens.modalCloseButtonRadius, ":0.375rem;", _Modal.modalTokens.modalOutlineFocusColor, ":var(--surface-accent);;label:plasma-new-hope__default;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy1lbW90aW9uL2V4YW1wbGVzL3BsYXNtYV9iMmMvY29tcG9uZW50cy9Nb2RhbC9Nb2RhbC5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVXdCIiwiZmlsZSI6Ii4uLy4uLy4uLy4uLy4uLy4uL3NyYy1lbW90aW9uL2V4YW1wbGVzL3BsYXNtYV9iMmMvY29tcG9uZW50cy9Nb2RhbC9Nb2RhbC5jb25maWcudHMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5cbmltcG9ydCB7IG1vZGFsVG9rZW5zIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tcG9uZW50cy9Nb2RhbCc7XG5cbmV4cG9ydCBjb25zdCBjb25maWcgPSB7XG4gICAgZGVmYXVsdHM6IHtcbiAgICAgICAgdmlldzogJ2RlZmF1bHQnLFxuICAgIH0sXG4gICAgdmFyaWF0aW9uczoge1xuICAgICAgICB2aWV3OiB7XG4gICAgICAgICAgICBkZWZhdWx0OiBjc3NgXG4gICAgICAgICAgICAgICAgJHttb2RhbFRva2Vucy5tb2RhbE92ZXJsYXlXaXRoQmx1ckNvbG9yfTogdmFyKC0tb3ZlcmxheS1ibHVyKTtcbiAgICAgICAgICAgICAgICAke21vZGFsVG9rZW5zLm1vZGFsT3ZlcmxheUNvbG9yfTogdmFyKC0tb3ZlcmxheS1zb2Z0KTtcbiAgICAgICAgICAgICAgICAke21vZGFsVG9rZW5zLm1vZGFsQm9keUJhY2tncm91bmR9OiB2YXIoLS1zdXJmYWNlLXNvbGlkLWNhcmQpO1xuICAgICAgICAgICAgICAgICR7bW9kYWxUb2tlbnMubW9kYWxCb2R5Qm9yZGVyUmFkaXVzfTogMS4yNXJlbTtcbiAgICAgICAgICAgICAgICAke21vZGFsVG9rZW5zLm1vZGFsQm9keVBhZGRpbmd9OiAycmVtO1xuICAgICAgICAgICAgICAgICR7bW9kYWxUb2tlbnMubW9kYWxDb250ZW50UGFkZGluZ306IDAuNjI1cmVtO1xuICAgICAgICAgICAgICAgICR7bW9kYWxUb2tlbnMubW9kYWxDbG9zZUJ1dHRvblJhZGl1c306IDAuMzc1cmVtO1xuICAgICAgICAgICAgICAgICR7bW9kYWxUb2tlbnMubW9kYWxPdXRsaW5lRm9jdXNDb2xvcn06IHZhcigtLXN1cmZhY2UtYWNjZW50KTtcbiAgICAgICAgICAgIGAsXG4gICAgICAgIH0sXG4gICAgfSxcbn07XG4iXX0= */"))
|
16
16
|
}
|
17
17
|
}
|
18
18
|
};
|
@@ -3,6 +3,7 @@ import styled from '@emotion/styled';
|
|
3
3
|
import type { ComponentProps } from 'react';
|
4
4
|
import type { StoryObj, Meta } from '@storybook/react';
|
5
5
|
import { SSRProvider } from '@salutejs/plasma-core';
|
6
|
+
import { disableProps } from '@salutejs/plasma-sb-utils';
|
6
7
|
|
7
8
|
import { PopupProvider, popupClasses } from '../Popup/Popup';
|
8
9
|
import { Button } from '../Button/Button';
|
@@ -18,6 +19,7 @@ export default {
|
|
18
19
|
docs: { story: { inline: false, iframeHeight: '30rem' } },
|
19
20
|
},
|
20
21
|
argTypes: {
|
22
|
+
...disableProps(['hasBody']),
|
21
23
|
placement: {
|
22
24
|
options: [
|
23
25
|
'center',
|
@@ -75,6 +77,7 @@ type StoryModalProps = ComponentProps<typeof Modal> & {
|
|
75
77
|
closeOnEsc: boolean;
|
76
78
|
closeOnOverlayClick: boolean;
|
77
79
|
withBlur: boolean;
|
80
|
+
hasClose?: boolean;
|
78
81
|
};
|
79
82
|
|
80
83
|
const StyledButton = styled(Button)`
|
@@ -135,6 +138,72 @@ const StoryModalDemo = ({ placement, offsetX, offsetY, ...rest }: StoryModalProp
|
|
135
138
|
const [isOpenB, setIsOpenB] = useState(false);
|
136
139
|
const [isOpenC, setIsOpenC] = useState(false);
|
137
140
|
|
141
|
+
return (
|
142
|
+
<SSRProvider>
|
143
|
+
<StyledWrapper>
|
144
|
+
<PopupProvider>
|
145
|
+
<ButtonWrapper>
|
146
|
+
<StyledButton text="Открыть A" onClick={() => setIsOpenA(true)} />
|
147
|
+
</ButtonWrapper>
|
148
|
+
<StyledModal
|
149
|
+
id="modalA"
|
150
|
+
frame="theme-root"
|
151
|
+
withAnimation
|
152
|
+
onClose={() => setIsOpenA(false)}
|
153
|
+
opened={isOpenA}
|
154
|
+
placement={placement}
|
155
|
+
offset={[offsetX, offsetY]}
|
156
|
+
hasBody
|
157
|
+
{...rest}
|
158
|
+
>
|
159
|
+
<Button onClick={() => setIsOpenA(false)}>Close</Button>
|
160
|
+
<ButtonWrapper>
|
161
|
+
<StyledButton text="Открыть B" onClick={() => setIsOpenB(true)} />
|
162
|
+
</ButtonWrapper>
|
163
|
+
<Modal
|
164
|
+
id="modalB"
|
165
|
+
frame="theme-root"
|
166
|
+
onClose={() => setIsOpenB(false)}
|
167
|
+
opened={isOpenB}
|
168
|
+
placement="left"
|
169
|
+
offset={[offsetX, offsetY]}
|
170
|
+
hasBody
|
171
|
+
{...rest}
|
172
|
+
>
|
173
|
+
<Button style={{ marginRight: '1rem' }} onClick={() => setIsOpenB(false)}>
|
174
|
+
Close
|
175
|
+
</Button>
|
176
|
+
<ButtonWrapper>
|
177
|
+
<StyledButton text="Открыть C" onClick={() => setIsOpenC(true)} />
|
178
|
+
</ButtonWrapper>
|
179
|
+
<Modal
|
180
|
+
id="modalC"
|
181
|
+
frame="theme-root"
|
182
|
+
onClose={() => setIsOpenC(false)}
|
183
|
+
opened={isOpenC}
|
184
|
+
placement="top"
|
185
|
+
offset={[offsetX, offsetY]}
|
186
|
+
hasBody
|
187
|
+
{...rest}
|
188
|
+
>
|
189
|
+
<Button style={{ marginRight: '1rem' }} onClick={() => setIsOpenC(false)}>
|
190
|
+
Close
|
191
|
+
</Button>
|
192
|
+
<>Content</>
|
193
|
+
</Modal>
|
194
|
+
</Modal>
|
195
|
+
</StyledModal>
|
196
|
+
</PopupProvider>
|
197
|
+
</StyledWrapper>
|
198
|
+
</SSRProvider>
|
199
|
+
);
|
200
|
+
};
|
201
|
+
|
202
|
+
const StoryCustomModalDemo = ({ placement, offsetX, offsetY, ...rest }: StoryModalProps) => {
|
203
|
+
const [isOpenA, setIsOpenA] = useState(false);
|
204
|
+
const [isOpenB, setIsOpenB] = useState(false);
|
205
|
+
const [isOpenC, setIsOpenC] = useState(false);
|
206
|
+
|
138
207
|
return (
|
139
208
|
<SSRProvider>
|
140
209
|
<StyledWrapper>
|
@@ -199,7 +268,7 @@ const StoryModalDemo = ({ placement, offsetX, offsetY, ...rest }: StoryModalProp
|
|
199
268
|
);
|
200
269
|
};
|
201
270
|
|
202
|
-
export const
|
271
|
+
export const Default: StoryObj<StoryModalProps> = {
|
203
272
|
args: {
|
204
273
|
placement: 'center',
|
205
274
|
withBlur: false,
|
@@ -207,10 +276,30 @@ export const ModalDemo: StoryObj<StoryModalProps> = {
|
|
207
276
|
closeOnOverlayClick: true,
|
208
277
|
offsetX: 0,
|
209
278
|
offsetY: 0,
|
279
|
+
hasClose: true,
|
280
|
+
},
|
281
|
+
argTypes: {
|
282
|
+
hasClose: {
|
283
|
+
control: {
|
284
|
+
type: 'boolean',
|
285
|
+
},
|
286
|
+
},
|
210
287
|
},
|
211
288
|
render: (args) => <StoryModalDemo {...args} />,
|
212
289
|
};
|
213
290
|
|
291
|
+
export const CustomModalDemo: StoryObj<StoryModalProps> = {
|
292
|
+
args: {
|
293
|
+
placement: 'center',
|
294
|
+
withBlur: false,
|
295
|
+
closeOnEsc: true,
|
296
|
+
closeOnOverlayClick: true,
|
297
|
+
offsetX: 0,
|
298
|
+
offsetY: 0,
|
299
|
+
},
|
300
|
+
render: (args) => <StoryCustomModalDemo {...args} />,
|
301
|
+
};
|
302
|
+
|
214
303
|
const StyledModalAnimation = styled(Modal)`
|
215
304
|
/* stylelint-disable */
|
216
305
|
&& .${popupClasses.root} {
|
@@ -12,7 +12,7 @@ var config = exports.config = {
|
|
12
12
|
},
|
13
13
|
variations: {
|
14
14
|
view: {
|
15
|
-
"default": /*#__PURE__*/(0, _react.css)(_Modal.modalTokens.modalOverlayWithBlurColor, ":var(--overlay-blur);", _Modal.modalTokens.modalOverlayColor, ":var(--overlay-soft);;label:plasma-new-hope__default;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
15
|
+
"default": /*#__PURE__*/(0, _react.css)(_Modal.modalTokens.modalOverlayWithBlurColor, ":var(--overlay-blur);", _Modal.modalTokens.modalOverlayColor, ":var(--overlay-soft);", _Modal.modalTokens.modalBodyBackground, ":var(--surface-solid-card);", _Modal.modalTokens.modalBodyBorderRadius, ":1.25rem;", _Modal.modalTokens.modalBodyPadding, ":2rem;", _Modal.modalTokens.modalContentPadding, ":0.625rem;", _Modal.modalTokens.modalCloseButtonRadius, ":0.375rem;", _Modal.modalTokens.modalOutlineFocusColor, ":var(--surface-accent);;label:plasma-new-hope__default;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy1lbW90aW9uL2V4YW1wbGVzL3BsYXNtYV93ZWIvY29tcG9uZW50cy9Nb2RhbC9Nb2RhbC5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVXdCIiwiZmlsZSI6Ii4uLy4uLy4uLy4uLy4uLy4uL3NyYy1lbW90aW9uL2V4YW1wbGVzL3BsYXNtYV93ZWIvY29tcG9uZW50cy9Nb2RhbC9Nb2RhbC5jb25maWcudHMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5cbmltcG9ydCB7IG1vZGFsVG9rZW5zIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tcG9uZW50cy9Nb2RhbCc7XG5cbmV4cG9ydCBjb25zdCBjb25maWcgPSB7XG4gICAgZGVmYXVsdHM6IHtcbiAgICAgICAgdmlldzogJ2RlZmF1bHQnLFxuICAgIH0sXG4gICAgdmFyaWF0aW9uczoge1xuICAgICAgICB2aWV3OiB7XG4gICAgICAgICAgICBkZWZhdWx0OiBjc3NgXG4gICAgICAgICAgICAgICAgJHttb2RhbFRva2Vucy5tb2RhbE92ZXJsYXlXaXRoQmx1ckNvbG9yfTogdmFyKC0tb3ZlcmxheS1ibHVyKTtcbiAgICAgICAgICAgICAgICAke21vZGFsVG9rZW5zLm1vZGFsT3ZlcmxheUNvbG9yfTogdmFyKC0tb3ZlcmxheS1zb2Z0KTtcbiAgICAgICAgICAgICAgICAke21vZGFsVG9rZW5zLm1vZGFsQm9keUJhY2tncm91bmR9OiB2YXIoLS1zdXJmYWNlLXNvbGlkLWNhcmQpO1xuICAgICAgICAgICAgICAgICR7bW9kYWxUb2tlbnMubW9kYWxCb2R5Qm9yZGVyUmFkaXVzfTogMS4yNXJlbTtcbiAgICAgICAgICAgICAgICAke21vZGFsVG9rZW5zLm1vZGFsQm9keVBhZGRpbmd9OiAycmVtO1xuICAgICAgICAgICAgICAgICR7bW9kYWxUb2tlbnMubW9kYWxDb250ZW50UGFkZGluZ306IDAuNjI1cmVtO1xuICAgICAgICAgICAgICAgICR7bW9kYWxUb2tlbnMubW9kYWxDbG9zZUJ1dHRvblJhZGl1c306IDAuMzc1cmVtO1xuICAgICAgICAgICAgICAgICR7bW9kYWxUb2tlbnMubW9kYWxPdXRsaW5lRm9jdXNDb2xvcn06IHZhcigtLXN1cmZhY2UtYWNjZW50KTtcbiAgICAgICAgICAgIGAsXG4gICAgICAgIH0sXG4gICAgfSxcbn07XG4iXX0= */"))
|
16
16
|
}
|
17
17
|
}
|
18
18
|
};
|