@join-x5/react-snackbar 1.1.1 → 1.2.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/dist/Actions/index.es.js.map +1 -1
- package/dist/ActionsBottom/index.es.js.map +1 -1
- package/dist/ActionsTop/index.es.js.map +1 -1
- package/dist/MessageComponent/index.es.js.map +1 -1
- package/dist/MessageContent/index.es.js.map +1 -1
- package/dist/MessageIcon/index.es.js.map +1 -1
- package/dist/SnackbarProvider.es.js.map +1 -1
- package/dist/hook.es.js +8 -8
- package/dist/hook.es.js.map +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/types.es.js.map +1 -1
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../../src/Actions/index.tsx"],"sourcesContent":["import {SizeTokenValue} from '@join-x5/react-theme';\nimport {Link, Button, ButtonVariant} from '@join-x5/react';\n\nimport type {SnackbarAction} from '../types';\n\nexport const getAction = (action: SnackbarAction, index: number) => {\n if (action && typeof action === 'object') {\n if ('isButton' in action) {\n return <Button key={index} variant={ButtonVariant.InnerSnackbar} size={SizeTokenValue.Small} {...action} />;\n }\n\n if ('isLink' in action) {\n return <Link key={index} {...action} />;\n }\n }\n\n return action;\n};\n"],"names":["getAction","action","index","jsx","Button","ButtonVariant","InnerSnackbar","SizeTokenValue","Small","Link"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../../src/Actions/index.tsx"],"sourcesContent":["import {SizeTokenValue} from '@join-x5/react-theme';\nimport {Link, Button, ButtonVariant} from '@join-x5/react';\n\nimport type {SnackbarAction} from '../types';\n\nexport const getAction = (action: SnackbarAction, index: number) => {\n if (action && typeof action === 'object') {\n if ('isButton' in action) {\n return <Button key={index} variant={ButtonVariant.InnerSnackbar} size={SizeTokenValue.Small} {...action} />;\n }\n\n if ('isLink' in action) {\n return <Link key={index} {...action} />;\n }\n }\n\n return action;\n};\n"],"names":["getAction","action","index","jsx","Button","ButtonVariant","InnerSnackbar","SizeTokenValue","Small","Link"],"mappings":";;;AAKO,MAAMA,IAAYA,CAACC,GAAwBC,MAAkB;AAClE,MAAID,KAAU,OAAOA,KAAW,UAAU;AACxC,QAAI,cAAcA;AAChB,aAAO,gBAAAE,EAACC,GAAA,EAAmB,SAASC,EAAcC,eAAe,MAAMC,EAAeC,OAAO,GAAIP,EAAAA,GAA7EC,CAAoF;AAG1G,QAAI,YAAYD;AACd,aAAO,gBAAAE,EAACM,GAAA,EAAiB,GAAIR,EAAAA,GAAXC,CAAkB;AAAA,EAExC;AAEA,SAAOD;AACT;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../../src/ActionsBottom/index.tsx"],"sourcesContent":["import styled from '@emotion/styled';\n\nimport {getAction} from '../Actions';\n\nimport type {SnackbarContentProps} from '../types';\nimport type {RequiredQA} from '@join-x5/react-theme';\n\nconst Container = styled.div`\n display: flex;\n align-items: center;\n justify-content: flex-end;\n padding-top: 4px;\n gap: 8px;\n`;\n\nexport const ActionsBottom: React.FC<SnackbarContentProps & RequiredQA> = props => {\n const {actionsBottom = []} = props.message;\n\n const child = actionsBottom.map(getAction).filter(Boolean);\n\n if (!child.length) {\n return null;\n }\n\n return <Container data-qa={`${props.qa}-actions-bottom`}>{child}</Container>;\n};\n"],"names":["Container","_styled","process","env","NODE_ENV","target","label","name","styles","toString","_EMOTION_STRINGIFIED_CSS_ERROR__","ActionsBottom","props","actionsBottom","message","child","map","getAction","filter","Boolean","length","qa"],"mappings":";;;;;;AAOA,MAAMA,
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../../src/ActionsBottom/index.tsx"],"sourcesContent":["import styled from '@emotion/styled';\n\nimport {getAction} from '../Actions';\n\nimport type {SnackbarContentProps} from '../types';\nimport type {RequiredQA} from '@join-x5/react-theme';\n\nconst Container = styled.div`\n display: flex;\n align-items: center;\n justify-content: flex-end;\n padding-top: 4px;\n gap: 8px;\n`;\n\nexport const ActionsBottom: React.FC<SnackbarContentProps & RequiredQA> = props => {\n const {actionsBottom = []} = props.message;\n\n const child = actionsBottom.map(getAction).filter(Boolean);\n\n if (!child.length) {\n return null;\n }\n\n return <Container data-qa={`${props.qa}-actions-bottom`}>{child}</Container>;\n};\n"],"names":["Container","_styled","process","env","NODE_ENV","target","label","name","styles","toString","_EMOTION_STRINGIFIED_CSS_ERROR__","ActionsBottom","props","actionsBottom","message","child","map","getAction","filter","Boolean","length","qa"],"mappings":";;;;;;AAOA,MAAMA,IAASC,gBAAAA,EAAA,OAAAC,QAAAC,IAAAC,aAAA,eAAA;AAAA,EAAAC,QAAA;AAAA,IAAA;AAAA,EAAAA,QAAA;AAAA,EAAAC,OAAA;AAAA,CAAA,EAAAJ,QAAAC,IAAAC,aAAA,eAAA;AAAA,EAAAG,MAAA;AAAA,EAAAC,QAAA;AAAA,IAAA;AAAA,EAAAD,MAAA;AAAA,EAAAC,QAAA;AAAA,EAAAC,UAAAC;AAAA,CAAA,GAQFC,IAA6DC,CAAAA,MAAS;AACjF,QAAM;AAAA,IAACC,eAAAA,IAAgB,CAAA;AAAA,EAAA,IAAMD,EAAME,SAE7BC,IAAQF,EAAcG,IAAIC,CAAS,EAAEC,OAAOC,OAAO;AAEzD,SAAKJ,EAAMK,2BAIHpB,GAAA,EAAU,WAAS,GAAGY,EAAMS,EAAE,mBAAoBN,UAAAA,EAAAA,CAAM,IAHvD;AAIX;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../../src/ActionsTop/index.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport {closeSnackbar} from 'notistack';\n\nimport {SizeTokenValue} from '@join-x5/react-theme';\nimport {CloseIcon} from '@join-x5/react-icons';\nimport {ButtonVariant, IconButton} from '@join-x5/react';\n\nimport {getAction} from '../Actions';\n\nimport type {RequiredQA} from '@join-x5/react-theme';\nimport type {SnackbarContentProps} from '../types';\n\nconst Container = styled.div`\n display: flex;\n align-items: flex-start;\n`;\n\nexport const ActionsTop: React.FC<SnackbarContentProps & RequiredQA> = ({qa, message}) => {\n const {key, closable, actionsTop = []} = message;\n\n const child = actionsTop.map(getAction).filter(Boolean);\n\n if (closable) {\n const onClose = () => closeSnackbar(key);\n\n child.push(\n <IconButton\n key=\"closebutton\"\n qa={`${qa}-close`}\n size={SizeTokenValue.Small}\n variant={ButtonVariant.Inner}\n onClick={onClose}\n >\n <CloseIcon size={SizeTokenValue.Small} />\n </IconButton>\n );\n }\n\n if (!child.length) {\n return null;\n }\n\n return <Container data-qa={`${qa}-actions-top`}>{child}</Container>;\n};\n"],"names":["Container","_styled","process","env","NODE_ENV","target","label","name","styles","toString","_EMOTION_STRINGIFIED_CSS_ERROR__","ActionsTop","qa","message","key","closable","actionsTop","child","map","getAction","filter","Boolean","onClose","closeSnackbar","push","IconButton","SizeTokenValue","Small","ButtonVariant","Inner","jsx","CloseIcon","length"],"mappings":";;;;;;;;;;AAYA,MAAMA,
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../../src/ActionsTop/index.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport {closeSnackbar} from 'notistack';\n\nimport {SizeTokenValue} from '@join-x5/react-theme';\nimport {CloseIcon} from '@join-x5/react-icons';\nimport {ButtonVariant, IconButton} from '@join-x5/react';\n\nimport {getAction} from '../Actions';\n\nimport type {RequiredQA} from '@join-x5/react-theme';\nimport type {SnackbarContentProps} from '../types';\n\nconst Container = styled.div`\n display: flex;\n align-items: flex-start;\n`;\n\nexport const ActionsTop: React.FC<SnackbarContentProps & RequiredQA> = ({qa, message}) => {\n const {key, closable, actionsTop = []} = message;\n\n const child = actionsTop.map(getAction).filter(Boolean);\n\n if (closable) {\n const onClose = () => closeSnackbar(key);\n\n child.push(\n <IconButton\n key=\"closebutton\"\n qa={`${qa}-close`}\n size={SizeTokenValue.Small}\n variant={ButtonVariant.Inner}\n onClick={onClose}\n >\n <CloseIcon size={SizeTokenValue.Small} />\n </IconButton>\n );\n }\n\n if (!child.length) {\n return null;\n }\n\n return <Container data-qa={`${qa}-actions-top`}>{child}</Container>;\n};\n"],"names":["Container","_styled","process","env","NODE_ENV","target","label","name","styles","toString","_EMOTION_STRINGIFIED_CSS_ERROR__","ActionsTop","qa","message","key","closable","actionsTop","child","map","getAction","filter","Boolean","onClose","closeSnackbar","push","IconButton","SizeTokenValue","Small","ButtonVariant","Inner","jsx","CloseIcon","length"],"mappings":";;;;;;;;;;AAYA,MAAMA,IAASC,gBAAAA,EAAA,OAAAC,QAAAC,IAAAC,aAAA,eAAA;AAAA,EAAAC,QAAA;AAAA,IAAA;AAAA,EAAAA,QAAA;AAAA,EAAAC,OAAA;AAAA,CAAA,EAAAJ,QAAAC,IAAAC,aAAA,eAAA;AAAA,EAAAG,MAAA;AAAA,EAAAC,QAAA;AAAA,IAAA;AAAA,EAAAD,MAAA;AAAA,EAAAC,QAAA;AAAA,EAAAC,UAAAC;AAAA,CAAA,GAKFC,IAA0DA,CAAC;AAAA,EAACC,IAAAA;AAAAA,EAAIC,SAAAA;AAAO,MAAM;AACxF,QAAM;AAAA,IAACC,KAAAA;AAAAA,IAAKC,UAAAA;AAAAA,IAAUC,YAAAA,IAAa,CAAA;AAAA,EAAA,IAAMH,GAEnCI,IAAQD,EAAWE,IAAIC,CAAS,EAAEC,OAAOC,OAAO;AAEtD,MAAIN,GAAU;AACZ,UAAMO,IAAUA,MAAMC,EAAcT,CAAG;AAEvCG,IAAAA,EAAMO,uBACHC,GAAA,EAEC,IAAI,GAAGb,CAAE,UACT,MAAMc,EAAeC,OACrB,SAASC,EAAcC,OACvB,SAASP,GAET,UAAA,gBAAAQ,EAACC,GAAA,EAAU,MAAML,EAAeC,MAAAA,CAAM,EAAA,GANlC,aAON,CACF;AAAA,EACF;AAEA,SAAKV,EAAMe,2BAIHhC,GAAA,EAAU,WAAS,GAAGY,CAAE,gBAAiBK,UAAAA,GAAM,IAH9C;AAIX;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../../src/MessageComponent/index.tsx"],"sourcesContent":["import styled from '@emotion/styled';\n\nimport {ActionsTop} from '../ActionsTop';\nimport {ActionsBottom} from '../ActionsBottom';\nimport {MessageContent} from '../MessageContent';\nimport {MessageIcon} from '../MessageIcon';\n\nimport {SnackbarVariant} from '../types';\n\nimport type {CSSProperties} from '@join-x5/react-theme';\nimport type {SnackbarContentProps, SnackbarMessageInner} from '../types';\n\nconst Container = styled.div<Pick<SnackbarMessageInner, 'variant'>>`\n display: flex;\n align-items: flex-start;\n padding: 8px;\n border-radius: 4px;\n box-sizing: border-box;\n\n ${props => {\n let boxShadow: CSSProperties['boxShadow'];\n\n switch (props.variant) {\n case SnackbarVariant.Success:\n boxShadow = `-4px 0px 0px 0px ${props.theme.colors.additional.green[50]}`;\n break;\n case SnackbarVariant.Warning:\n boxShadow = `-4px 0px 0px 0px ${props.theme.colors.additional.yellow[50]}`;\n break;\n case SnackbarVariant.Error:\n boxShadow = `-4px 0px 0px 0px ${props.theme.colors.additional.red[50]}`;\n break;\n }\n\n return {\n boxShadow,\n backgroundColor: props.theme.colors.grey[90],\n };\n }}\n`;\n\nconst Content = styled.div`\n flex-grow: 1;\n`;\n\nconst Top = styled.div`\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 16px;\n`;\n\nexport const MessageComponent: React.FC<SnackbarContentProps> = props => {\n const {variant, maxWidth, className, style, qa = 'snackbar-message'} = props.message;\n\n const resultProps = {...props, qa};\n\n const containerProps = {\n variant,\n className,\n\n 'data-qa': qa,\n\n style: {maxWidth, ...style},\n };\n\n return (\n <Container {...containerProps}>\n <MessageIcon {...resultProps} />\n\n <Content>\n <Top>\n <MessageContent {...resultProps} />\n <ActionsTop {...resultProps} />\n </Top>\n\n <ActionsBottom {...resultProps} />\n </Content>\n </Container>\n );\n};\n"],"names":["Container","_styled","process","env","NODE_ENV","target","label","props","boxShadow","variant","SnackbarVariant","Success","theme","colors","additional","green","Warning","yellow","Error","red","backgroundColor","grey","Content","name","styles","toString","_EMOTION_STRINGIFIED_CSS_ERROR__","Top","MessageComponent","maxWidth","className","style","qa","message","resultProps","containerProps","jsxs","jsx","MessageIcon","MessageContent","ActionsTop","ActionsBottom"],"mappings":";;;;;;;;;;AAYA,MAAMA,
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../../src/MessageComponent/index.tsx"],"sourcesContent":["import styled from '@emotion/styled';\n\nimport {ActionsTop} from '../ActionsTop';\nimport {ActionsBottom} from '../ActionsBottom';\nimport {MessageContent} from '../MessageContent';\nimport {MessageIcon} from '../MessageIcon';\n\nimport {SnackbarVariant} from '../types';\n\nimport type {CSSProperties} from '@join-x5/react-theme';\nimport type {SnackbarContentProps, SnackbarMessageInner} from '../types';\n\nconst Container = styled.div<Pick<SnackbarMessageInner, 'variant'>>`\n display: flex;\n align-items: flex-start;\n padding: 8px;\n border-radius: 4px;\n box-sizing: border-box;\n\n ${props => {\n let boxShadow: CSSProperties['boxShadow'];\n\n switch (props.variant) {\n case SnackbarVariant.Success:\n boxShadow = `-4px 0px 0px 0px ${props.theme.colors.additional.green[50]}`;\n break;\n case SnackbarVariant.Warning:\n boxShadow = `-4px 0px 0px 0px ${props.theme.colors.additional.yellow[50]}`;\n break;\n case SnackbarVariant.Error:\n boxShadow = `-4px 0px 0px 0px ${props.theme.colors.additional.red[50]}`;\n break;\n }\n\n return {\n boxShadow,\n backgroundColor: props.theme.colors.grey[90],\n };\n }}\n`;\n\nconst Content = styled.div`\n flex-grow: 1;\n`;\n\nconst Top = styled.div`\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 16px;\n`;\n\nexport const MessageComponent: React.FC<SnackbarContentProps> = props => {\n const {variant, maxWidth, className, style, qa = 'snackbar-message'} = props.message;\n\n const resultProps = {...props, qa};\n\n const containerProps = {\n variant,\n className,\n\n 'data-qa': qa,\n\n style: {maxWidth, ...style},\n };\n\n return (\n <Container {...containerProps}>\n <MessageIcon {...resultProps} />\n\n <Content>\n <Top>\n <MessageContent {...resultProps} />\n <ActionsTop {...resultProps} />\n </Top>\n\n <ActionsBottom {...resultProps} />\n </Content>\n </Container>\n );\n};\n"],"names":["Container","_styled","process","env","NODE_ENV","target","label","props","boxShadow","variant","SnackbarVariant","Success","theme","colors","additional","green","Warning","yellow","Error","red","backgroundColor","grey","Content","name","styles","toString","_EMOTION_STRINGIFIED_CSS_ERROR__","Top","MessageComponent","maxWidth","className","style","qa","message","resultProps","containerProps","jsxs","jsx","MessageIcon","MessageContent","ActionsTop","ActionsBottom"],"mappings":";;;;;;;;;;AAYA,MAAMA,IAASC,gBAAAA,EAAA,OAAAC,QAAAC,IAAAC,aAAA,eAAA;AAAA,EAAAC,QAAA;AAAA,IAAA;AAAA,EAAAA,QAAA;AAAA,EAAAC,OAAA;AAAA,CAAA,EAAA,4FAOXC,CAAAA,MAAS;AACT,MAAIC;AAEJ,UAAQD,EAAME,SAAAA;AAAAA,IACZ,KAAKC,EAAgBC;AACnBH,MAAAA,IAAY,oBAAoBD,EAAMK,MAAMC,OAAOC,WAAWC,MAAM,EAAE,CAAC;AACvE;AAAA,IACF,KAAKL,EAAgBM;AACnBR,MAAAA,IAAY,oBAAoBD,EAAMK,MAAMC,OAAOC,WAAWG,OAAO,EAAE,CAAC;AACxE;AAAA,IACF,KAAKP,EAAgBQ;AACnBV,MAAAA,IAAY,oBAAoBD,EAAMK,MAAMC,OAAOC,WAAWK,IAAI,EAAE,CAAC;AACrE;AAAA,EAAA;AAGJ,SAAO;AAAA,IACLX,WAAAA;AAAAA,IACAY,iBAAiBb,EAAMK,MAAMC,OAAOQ,KAAK,EAAE;AAAA,EAAA;AAE/C,UAACnB,QAAAC,IAAAC,aAAA,eAAA,KAAA,siGAAA,GAGGkB,IAAOrB,gBAAAA,EAAA,OAAAC,QAAAC,IAAAC,aAAA,eAAA;AAAA,EAAAC,QAAA;AAAA,IAAA;AAAA,EAAAA,QAAA;AAAA,EAAAC,OAAA;AAAA,CAAA,EAAAJ,QAAAC,IAAAC,aAAA,eAAA;AAAA,EAAAmB,MAAA;AAAA,EAAAC,QAAA;AAAA,IAAA;AAAA,EAAAD,MAAA;AAAA,EAAAC,QAAA;AAAA,EAAAC,UAAAC;AAAA,CAAA,GAIPC,IAAG1B,gBAAAA,EAAA,OAAAC,QAAAC,IAAAC,aAAA,eAAA;AAAA,EAAAC,QAAA;AAAA,IAAA;AAAA,EAAAA,QAAA;AAAA,EAAAC,OAAA;AAAA,CAAA,EAAAJ,QAAAC,IAAAC,aAAA,eAAA;AAAA,EAAAmB,MAAA;AAAA,EAAAC,QAAA;AAAA,IAAA;AAAA,EAAAD,MAAA;AAAA,EAAAC,QAAA;AAAA,EAAAC,UAAAC;AAAA,CAAA,GAOIE,IAAmDrB,CAAAA,MAAS;AACvE,QAAM;AAAA,IAACE,SAAAA;AAAAA,IAASoB,UAAAA;AAAAA,IAAUC,WAAAA;AAAAA,IAAWC,OAAAA;AAAAA,IAAOC,IAAAA,IAAK;AAAA,EAAA,IAAsBzB,EAAM0B,SAEvEC,IAAc;AAAA,IAAC,GAAG3B;AAAAA,IAAOyB,IAAAA;AAAAA,EAAAA,GAEzBG,IAAiB;AAAA,IACrB1B,SAAAA;AAAAA,IACAqB,WAAAA;AAAAA,IAEA,WAAWE;AAAAA,IAEXD,OAAO;AAAA,MAACF,UAAAA;AAAAA,MAAU,GAAGE;AAAAA,IAAAA;AAAAA,EAAK;AAG5B,SACE,gBAAAK,EAACpC,GAAA,EAAU,GAAImC,GACb,UAAA;AAAA,IAAA,gBAAAE,EAACC,GAAA,EAAY,GAAIJ,GAAY;AAAA,sBAE5BZ,GAAA,EACC,UAAA;AAAA,MAAA,gBAAAc,EAACT,GAAA,EACC,UAAA;AAAA,QAAA,gBAAAU,EAACE,GAAA,EAAe,GAAIL,GAAY;AAAA,QAChC,gBAAAG,EAACG,GAAA,EAAW,GAAIN,EAAAA,CAAY;AAAA,MAAA,GAC9B;AAAA,MAEA,gBAAAG,EAACI,GAAA,EAAc,GAAIP,EAAAA,CAAY;AAAA,IAAA,EAAA,CACjC;AAAA,EAAA,GACF;AAEJ;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../../src/MessageContent/index.tsx"],"sourcesContent":["import styled from '@emotion/styled';\n\nimport {SnackbarVariant} from '../types';\n\nimport type {Theme} from '@emotion/react';\nimport type {RequiredQA} from '@join-x5/react-theme';\nimport type {SnackbarContentProps, SnackbarMessageInner} from '../types';\n\nconst variantColor = (theme: Theme): Record<SnackbarVariant, string> => ({\n [SnackbarVariant.Default]: theme.colors.white,\n [SnackbarVariant.Success]: theme.colors.additional.green[50],\n [SnackbarVariant.Warning]: theme.colors.additional.yellow[50],\n [SnackbarVariant.Error]: theme.colors.additional.red[50],\n});\n\nconst Container = styled.div`\n padding: 6px 8px 6px 4px;\n`;\n\nconst TitleComponent = styled.div<Pick<SnackbarMessageInner, 'variant'>>`\n padding-bottom: 2px;\n\n ${props => ({\n ...props.theme.typography.h4,\n\n color: variantColor(props.theme)[props.variant],\n })}\n`;\n\nconst ContentComponent = styled.div(props => ({\n ...props.theme.typography.p1compact,\n\n color: props.theme.colors.white,\n}));\n\nexport const MessageContent: React.FC<SnackbarContentProps & RequiredQA> = ({message, qa}) => {\n const {title, content, variant, whiteSpace} = message;\n\n return (\n <Container data-qa={`${qa}-message`}>\n {title && <TitleComponent variant={variant}>{title}</TitleComponent>}\n <ContentComponent style={{whiteSpace}}>{content}</ContentComponent>\n </Container>\n );\n};\n"],"names":["variantColor","theme","SnackbarVariant","Default","colors","white","Success","additional","green","Warning","yellow","Error","red","Container","_styled","process","env","NODE_ENV","target","label","name","styles","toString","_EMOTION_STRINGIFIED_CSS_ERROR__","TitleComponent","props","typography","h4","color","variant","ContentComponent","p1compact","MessageContent","message","qa","title","content","whiteSpace","jsxs","jsx"],"mappings":";;;;;;AAQA,MAAMA,IAAeA,CAACC,OAAmD;AAAA,EACvE,CAACC,EAAgBC,OAAO,GAAGF,EAAMG,OAAOC;AAAAA,EACxC,CAACH,EAAgBI,OAAO,GAAGL,EAAMG,OAAOG,WAAWC,MAAM,EAAE;AAAA,EAC3D,CAACN,EAAgBO,OAAO,GAAGR,EAAMG,OAAOG,WAAWG,OAAO,EAAE;AAAA,EAC5D,CAACR,EAAgBS,KAAK,GAAGV,EAAMG,OAAOG,WAAWK,IAAI,EAAE;AACzD,IAEMC,
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../../src/MessageContent/index.tsx"],"sourcesContent":["import styled from '@emotion/styled';\n\nimport {SnackbarVariant} from '../types';\n\nimport type {Theme} from '@emotion/react';\nimport type {RequiredQA} from '@join-x5/react-theme';\nimport type {SnackbarContentProps, SnackbarMessageInner} from '../types';\n\nconst variantColor = (theme: Theme): Record<SnackbarVariant, string> => ({\n [SnackbarVariant.Default]: theme.colors.white,\n [SnackbarVariant.Success]: theme.colors.additional.green[50],\n [SnackbarVariant.Warning]: theme.colors.additional.yellow[50],\n [SnackbarVariant.Error]: theme.colors.additional.red[50],\n});\n\nconst Container = styled.div`\n padding: 6px 8px 6px 4px;\n`;\n\nconst TitleComponent = styled.div<Pick<SnackbarMessageInner, 'variant'>>`\n padding-bottom: 2px;\n\n ${props => ({\n ...props.theme.typography.h4,\n\n color: variantColor(props.theme)[props.variant],\n })}\n`;\n\nconst ContentComponent = styled.div(props => ({\n ...props.theme.typography.p1compact,\n\n color: props.theme.colors.white,\n}));\n\nexport const MessageContent: React.FC<SnackbarContentProps & RequiredQA> = ({message, qa}) => {\n const {title, content, variant, whiteSpace} = message;\n\n return (\n <Container data-qa={`${qa}-message`}>\n {title && <TitleComponent variant={variant}>{title}</TitleComponent>}\n <ContentComponent style={{whiteSpace}}>{content}</ContentComponent>\n </Container>\n );\n};\n"],"names":["variantColor","theme","SnackbarVariant","Default","colors","white","Success","additional","green","Warning","yellow","Error","red","Container","_styled","process","env","NODE_ENV","target","label","name","styles","toString","_EMOTION_STRINGIFIED_CSS_ERROR__","TitleComponent","props","typography","h4","color","variant","ContentComponent","p1compact","MessageContent","message","qa","title","content","whiteSpace","jsxs","jsx"],"mappings":";;;;;;AAQA,MAAMA,IAAeA,CAACC,OAAmD;AAAA,EACvE,CAACC,EAAgBC,OAAO,GAAGF,EAAMG,OAAOC;AAAAA,EACxC,CAACH,EAAgBI,OAAO,GAAGL,EAAMG,OAAOG,WAAWC,MAAM,EAAE;AAAA,EAC3D,CAACN,EAAgBO,OAAO,GAAGR,EAAMG,OAAOG,WAAWG,OAAO,EAAE;AAAA,EAC5D,CAACR,EAAgBS,KAAK,GAAGV,EAAMG,OAAOG,WAAWK,IAAI,EAAE;AACzD,IAEMC,IAASC,gBAAAA,EAAA,OAAAC,QAAAC,IAAAC,aAAA,eAAA;AAAA,EAAAC,QAAA;AAAA,IAAA;AAAA,EAAAA,QAAA;AAAA,EAAAC,OAAA;AAAA,CAAA,EAAAJ,QAAAC,IAAAC,aAAA,eAAA;AAAA,EAAAG,MAAA;AAAA,EAAAC,QAAA;AAAA,IAAA;AAAA,EAAAD,MAAA;AAAA,EAAAC,QAAA;AAAA,EAAAC,UAAAC;AAAA,CAAA,GAITC,IAAcV,gBAAAA,EAAA,OAAAC,QAAAC,IAAAC,aAAA,eAAA;AAAA,EAAAC,QAAA;AAAA,IAAA;AAAA,EAAAA,QAAA;AAAA,EAAAC,OAAA;AAAA,CAAA,EAAA,uBAGhBM,CAAAA,OAAU;AAAA,EACV,GAAGA,EAAMxB,MAAMyB,WAAWC;AAAAA,EAE1BC,OAAO5B,EAAayB,EAAMxB,KAAK,EAAEwB,EAAMI,OAAO;AAChD,IAAE,OAAAd,QAAAC,IAAAC,aAAA,eAAA,KAAA,0sEAAA,GAGEa,IAAmBhB,gBAAAA,EAAA,OAAAC,QAAAC,IAAAC,aAAA,eAAA;AAAA,EAAAC,QAAA;AAAA,IAAA;AAAA,EAAAA,QAAA;AAAA,EAAAC,OAAA;AAAA,CAAA,EAAWM,CAAAA,OAAU;AAAA,EAC5C,GAAGA,EAAMxB,MAAMyB,WAAWK;AAAAA,EAE1BH,OAAOH,EAAMxB,MAAMG,OAAOC;AAC5B,IAAEU,QAAAC,IAAAC,aAAA,eAAA,KAAA,ysEAAA,GAEWe,IAA8DA,CAAC;AAAA,EAACC,SAAAA;AAAAA,EAASC,IAAAA;AAAE,MAAM;AAC5F,QAAM;AAAA,IAACC,OAAAA;AAAAA,IAAOC,SAAAA;AAAAA,IAASP,SAAAA;AAAAA,IAASQ,YAAAA;AAAAA,EAAAA,IAAcJ;AAE9C,SACE,gBAAAK,EAACzB,GAAA,EAAU,WAAS,GAAGqB,CAAE,YACtBC,UAAAA;AAAAA,IAAAA,KAAS,gBAAAI,EAACf,GAAA,EAAe,SAAAK,GAAmBM,UAAAA,GAAM;AAAA,IACnD,gBAAAI,EAACT,KAAiB,OAAO;AAAA,MAACO,YAAAA;AAAAA,IAAAA,GAAcD,UAAAA,EAAAA,CAAQ;AAAA,EAAA,GAClD;AAEJ;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../../src/MessageIcon/index.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport {useTheme} from '@emotion/react';\n\nimport {SizeTokenValue} from '@join-x5/react-theme';\n\nimport {DoneIcon, ErrorIcon, WarningIcon} from '@join-x5/react-icons';\n\nimport {SnackbarVariant} from '../types';\n\nimport type {Theme} from '@emotion/react';\nimport type {RequiredQA} from '@join-x5/react-theme';\nimport type {IconComponent} from '@join-x5/react-icons';\nimport type {SnackbarContentProps} from '../types';\n\nconst variantIcon: Record<SnackbarVariant, IconComponent | null> = {\n [SnackbarVariant.Default]: null,\n [SnackbarVariant.Success]: DoneIcon,\n [SnackbarVariant.Warning]: WarningIcon,\n [SnackbarVariant.Error]: ErrorIcon,\n};\n\nconst variantColor = (theme: Theme): Record<SnackbarVariant, string> => ({\n [SnackbarVariant.Default]: theme.colors.white,\n [SnackbarVariant.Success]: theme.colors.additional.green[50],\n [SnackbarVariant.Warning]: theme.colors.additional.yellow[50],\n [SnackbarVariant.Error]: theme.colors.additional.red[50],\n});\n\nconst Container = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n min-height: 32px;\n padding: 4px;\n box-sizing: border-box;\n\n ${props => props.theme.typography.h4}\n`;\n\nexport const MessageIcon: React.FC<SnackbarContentProps & RequiredQA> = ({qa, message: {icon, variant}}) => {\n const theme = useTheme();\n\n if (typeof icon !== 'undefined' && icon !== true) {\n return icon;\n }\n\n const Component = variantIcon[variant];\n if (!Component) {\n return null;\n }\n\n return (\n <Container data-qa={`${qa}-icon`}>\n <Component size={SizeTokenValue.Medium} color={variantColor(theme)[variant]} />\n </Container>\n );\n};\n"],"names":["variantIcon","SnackbarVariant","Default","Success","DoneIcon","Warning","WarningIcon","Error","ErrorIcon","variantColor","theme","colors","white","additional","green","yellow","red","Container","_styled","process","env","NODE_ENV","target","label","props","typography","h4","MessageIcon","qa","message","icon","variant","useTheme","Component","jsx","SizeTokenValue","Medium"],"mappings":";;;;;;AAcA,MAAMA,IAA6D;AAAA,EACjE,CAACC,EAAgBC,OAAO,GAAG;AAAA,EAC3B,CAACD,EAAgBE,OAAO,GAAGC;AAAAA,EAC3B,CAACH,EAAgBI,OAAO,GAAGC;AAAAA,EAC3B,CAACL,EAAgBM,KAAK,GAAGC;AAC3B,GAEMC,IAAeA,CAACC,OAAmD;AAAA,EACvE,CAACT,EAAgBC,OAAO,GAAGQ,EAAMC,OAAOC;AAAAA,EACxC,CAACX,EAAgBE,OAAO,GAAGO,EAAMC,OAAOE,WAAWC,MAAM,EAAE;AAAA,EAC3D,CAACb,EAAgBI,OAAO,GAAGK,EAAMC,OAAOE,WAAWE,OAAO,EAAE;AAAA,EAC5D,CAACd,EAAgBM,KAAK,GAAGG,EAAMC,OAAOE,WAAWG,IAAI,EAAE;AACzD,IAEMC,
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../../src/MessageIcon/index.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport {useTheme} from '@emotion/react';\n\nimport {SizeTokenValue} from '@join-x5/react-theme';\n\nimport {DoneIcon, ErrorIcon, WarningIcon} from '@join-x5/react-icons';\n\nimport {SnackbarVariant} from '../types';\n\nimport type {Theme} from '@emotion/react';\nimport type {RequiredQA} from '@join-x5/react-theme';\nimport type {IconComponent} from '@join-x5/react-icons';\nimport type {SnackbarContentProps} from '../types';\n\nconst variantIcon: Record<SnackbarVariant, IconComponent | null> = {\n [SnackbarVariant.Default]: null,\n [SnackbarVariant.Success]: DoneIcon,\n [SnackbarVariant.Warning]: WarningIcon,\n [SnackbarVariant.Error]: ErrorIcon,\n};\n\nconst variantColor = (theme: Theme): Record<SnackbarVariant, string> => ({\n [SnackbarVariant.Default]: theme.colors.white,\n [SnackbarVariant.Success]: theme.colors.additional.green[50],\n [SnackbarVariant.Warning]: theme.colors.additional.yellow[50],\n [SnackbarVariant.Error]: theme.colors.additional.red[50],\n});\n\nconst Container = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n min-height: 32px;\n padding: 4px;\n box-sizing: border-box;\n\n ${props => props.theme.typography.h4}\n`;\n\nexport const MessageIcon: React.FC<SnackbarContentProps & RequiredQA> = ({qa, message: {icon, variant}}) => {\n const theme = useTheme();\n\n if (typeof icon !== 'undefined' && icon !== true) {\n return icon;\n }\n\n const Component = variantIcon[variant];\n if (!Component) {\n return null;\n }\n\n return (\n <Container data-qa={`${qa}-icon`}>\n <Component size={SizeTokenValue.Medium} color={variantColor(theme)[variant]} />\n </Container>\n );\n};\n"],"names":["variantIcon","SnackbarVariant","Default","Success","DoneIcon","Warning","WarningIcon","Error","ErrorIcon","variantColor","theme","colors","white","additional","green","yellow","red","Container","_styled","process","env","NODE_ENV","target","label","props","typography","h4","MessageIcon","qa","message","icon","variant","useTheme","Component","jsx","SizeTokenValue","Medium"],"mappings":";;;;;;AAcA,MAAMA,IAA6D;AAAA,EACjE,CAACC,EAAgBC,OAAO,GAAG;AAAA,EAC3B,CAACD,EAAgBE,OAAO,GAAGC;AAAAA,EAC3B,CAACH,EAAgBI,OAAO,GAAGC;AAAAA,EAC3B,CAACL,EAAgBM,KAAK,GAAGC;AAC3B,GAEMC,IAAeA,CAACC,OAAmD;AAAA,EACvE,CAACT,EAAgBC,OAAO,GAAGQ,EAAMC,OAAOC;AAAAA,EACxC,CAACX,EAAgBE,OAAO,GAAGO,EAAMC,OAAOE,WAAWC,MAAM,EAAE;AAAA,EAC3D,CAACb,EAAgBI,OAAO,GAAGK,EAAMC,OAAOE,WAAWE,OAAO,EAAE;AAAA,EAC5D,CAACd,EAAgBM,KAAK,GAAGG,EAAMC,OAAOE,WAAWG,IAAI,EAAE;AACzD,IAEMC,IAASC,gBAAAA,EAAA,OAAAC,QAAAC,IAAAC,aAAA,eAAA;AAAA,EAAAC,QAAA;AAAA,IAAA;AAAA,EAAAA,QAAA;AAAA,EAAAC,OAAA;AAAA,CAAA,EAAA,wHASXC,CAAAA,MAASA,EAAMd,MAAMe,WAAWC,WAAEP,QAAAC,IAAAC,aAAA,eAAA,KAAA,koFAAA,GAGzBM,IAA2DA,CAAC;AAAA,EAACC,IAAAA;AAAAA,EAAIC,SAAS;AAAA,IAACC,MAAAA;AAAAA,IAAMC,SAAAA;AAAAA,EAAAA;AAAQ,MAAM;AAC1G,QAAMrB,IAAQsB,EAAAA;AAEd,MAAI,OAAOF,IAAS,OAAeA,MAAS;AAC1C,WAAOA;AAGT,QAAMG,IAAYjC,EAAY+B,CAAO;AACrC,SAAKE,sBAKFhB,GAAA,EAAU,WAAS,GAAGW,CAAE,SACvB,UAAA,gBAAAM,EAACD,GAAA,EAAU,MAAME,EAAeC,QAAQ,OAAO3B,EAAaC,CAAK,EAAEqB,CAAO,GAAE,GAC9E,IANO;AAQX;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SnackbarProvider.es.js","sources":["../src/SnackbarProvider.tsx"],"sourcesContent":["import {forwardRef} from '@join-x5/react-theme';\n\nimport {SnackbarProvider as BaseSnackbarProvider} from 'notistack';\n\nimport type {SnackbarProviderProps, CustomContentProps} from 'notistack';\nimport type {FRC} from '@join-x5/react-theme';\n\nexport const SnackbarContainer: FRC<HTMLDivElement, CustomContentProps> = forwardRef(({message, style}, ref) => (\n <div ref={ref} style={style}>\n {message}\n </div>\n));\n\nconst Components: SnackbarProviderProps['Components'] = {\n default: SnackbarContainer,\n success: SnackbarContainer,\n warning: SnackbarContainer,\n error: SnackbarContainer,\n info: SnackbarContainer,\n};\n\nexport const SnackbarProvider: React.FC<SnackbarProviderProps> = ({children, ...props}) => (\n <>\n <BaseSnackbarProvider Components={Components} {...props} />\n {children}\n </>\n);\n"],"names":["SnackbarContainer","forwardRef","message","style","ref","jsx","Components","default","success","warning","error","info","SnackbarProvider","children","props","jsxs","Fragment","BaseSnackbarProvider"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"SnackbarProvider.es.js","sources":["../src/SnackbarProvider.tsx"],"sourcesContent":["import {forwardRef} from '@join-x5/react-theme';\n\nimport {SnackbarProvider as BaseSnackbarProvider} from 'notistack';\n\nimport type {SnackbarProviderProps, CustomContentProps} from 'notistack';\nimport type {FRC} from '@join-x5/react-theme';\n\nexport const SnackbarContainer: FRC<HTMLDivElement, CustomContentProps> = forwardRef(({message, style}, ref) => (\n <div ref={ref} style={style}>\n {message}\n </div>\n));\n\nconst Components: SnackbarProviderProps['Components'] = {\n default: SnackbarContainer,\n success: SnackbarContainer,\n warning: SnackbarContainer,\n error: SnackbarContainer,\n info: SnackbarContainer,\n};\n\nexport const SnackbarProvider: React.FC<SnackbarProviderProps> = ({children, ...props}) => (\n <>\n <BaseSnackbarProvider Components={Components} {...props} />\n {children}\n </>\n);\n"],"names":["SnackbarContainer","forwardRef","message","style","ref","jsx","Components","default","success","warning","error","info","SnackbarProvider","children","props","jsxs","Fragment","BaseSnackbarProvider"],"mappings":";;;AAOO,MAAMA,IAA6DC,EAAW,CAAC;AAAA,EAACC,SAAAA;AAAAA,EAASC,OAAAA;AAAK,GAAGC,MACtG,gBAAAC,EAAC,OAAA,EAAI,KAAAD,GAAU,OAAAD,GACZD,aACH,CACD,GAEKI,IAAkD;AAAA,EACtDC,SAASP;AAAAA,EACTQ,SAASR;AAAAA,EACTS,SAAST;AAAAA,EACTU,OAAOV;AAAAA,EACPW,MAAMX;AACR,GAEaY,IAAoDA,CAAC;AAAA,EAACC,UAAAA;AAAAA,EAAU,GAAGC;AAAK,MACnF,gBAAAC,EAAAC,GAAA,EACE,UAAA;AAAA,EAAA,gBAAAX,EAACY,GAAA,EAAqB,YAAAX,GAAwB,GAAIQ,EAAAA,CAAM;AAAA,EACvDD;AAAAA,EAAAA,CACH;"}
|
package/dist/hook.es.js
CHANGED
|
@@ -3,15 +3,15 @@ import { enqueueSnackbar as r } from "notistack";
|
|
|
3
3
|
import { closeSnackbar as S } from "notistack";
|
|
4
4
|
import { MessageComponent as t } from "./MessageComponent/index.es.js";
|
|
5
5
|
import { SnackbarVariant as e } from "./types.es.js";
|
|
6
|
-
const p = (
|
|
7
|
-
const
|
|
8
|
-
...n,
|
|
9
|
-
key: n.key ?? String(Math.random() * 1e4),
|
|
10
|
-
variant: n.variant ?? e.Default
|
|
11
|
-
};
|
|
12
|
-
r(/* @__PURE__ */ a(t, { message: o }), {
|
|
13
|
-
autoHideDuration: n.actionsTop || n.actionsBottom ? 7e3 : 3e3,
|
|
6
|
+
const p = (o) => {
|
|
7
|
+
const n = {
|
|
14
8
|
...o,
|
|
9
|
+
key: o.key ?? String(Math.random() * 1e4),
|
|
10
|
+
variant: o.variant ?? e.Default
|
|
11
|
+
};
|
|
12
|
+
r(/* @__PURE__ */ a(t, { message: n }), {
|
|
13
|
+
autoHideDuration: o.actionsTop || o.actionsBottom ? 7e3 : 3e3,
|
|
14
|
+
...n,
|
|
15
15
|
content: void 0
|
|
16
16
|
});
|
|
17
17
|
};
|
package/dist/hook.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.es.js","sources":["../src/hook.tsx"],"sourcesContent":["import {closeSnackbar, enqueueSnackbar as baseEnqueueSnackbar} from 'notistack';\n\nimport {MessageComponent} from './MessageComponent';\n\nimport {SnackbarVariant} from './types';\n\nimport type {SnackbarMessage, SnackbarMessageInner} from './types';\n\nconst enqueueSnackbar = (message: SnackbarMessage) => {\n const innerMessage: SnackbarMessageInner = {\n ...message,\n\n key: message.key ?? String(Math.random() * 10_000),\n variant: message.variant ?? SnackbarVariant.Default,\n };\n\n baseEnqueueSnackbar(<MessageComponent message={innerMessage} />, {\n autoHideDuration: message.actionsTop || message.actionsBottom ? 7_000 : 3_000,\n\n ...innerMessage,\n\n content: undefined,\n });\n};\n\nexport {enqueueSnackbar, closeSnackbar};\n"],"names":["enqueueSnackbar","message","innerMessage","key","String","Math","random","variant","SnackbarVariant","Default","baseEnqueueSnackbar","jsx","MessageComponent","autoHideDuration","actionsTop","actionsBottom","content","undefined"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"hook.es.js","sources":["../src/hook.tsx"],"sourcesContent":["import {closeSnackbar, enqueueSnackbar as baseEnqueueSnackbar} from 'notistack';\n\nimport {MessageComponent} from './MessageComponent';\n\nimport {SnackbarVariant} from './types';\n\nimport type {SnackbarMessage, SnackbarMessageInner} from './types';\n\nconst enqueueSnackbar = (message: SnackbarMessage) => {\n const innerMessage: SnackbarMessageInner = {\n ...message,\n\n key: message.key ?? String(Math.random() * 10_000),\n variant: message.variant ?? SnackbarVariant.Default,\n };\n\n baseEnqueueSnackbar(<MessageComponent message={innerMessage} />, {\n autoHideDuration: message.actionsTop || message.actionsBottom ? 7_000 : 3_000,\n\n ...innerMessage,\n\n content: undefined,\n });\n};\n\nexport {enqueueSnackbar, closeSnackbar};\n"],"names":["enqueueSnackbar","message","innerMessage","key","String","Math","random","variant","SnackbarVariant","Default","baseEnqueueSnackbar","jsx","MessageComponent","autoHideDuration","actionsTop","actionsBottom","content","undefined"],"mappings":";;;;;AAQA,MAAMA,IAAkBA,CAACC,MAA6B;AACpD,QAAMC,IAAqC;AAAA,IACzC,GAAGD;AAAAA,IAEHE,KAAKF,EAAQE,OAAOC,OAAOC,KAAKC,OAAAA,IAAW,GAAM;AAAA,IACjDC,SAASN,EAAQM,WAAWC,EAAgBC;AAAAA,EAAAA;AAG9CC,EAAAA,EAAoB,gBAAAC,EAACC,GAAA,EAAiB,SAASV,EAAAA,CAAa,GAAK;AAAA,IAC/DW,kBAAkBZ,EAAQa,cAAcb,EAAQc,gBAAgB,MAAQ;AAAA,IAExE,GAAGb;AAAAA,IAEHc,SAASC;AAAAA,EAAAA,CACV;AACH;"}
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/SnackbarProvider.tsx","../src/Actions/index.tsx","../src/ActionsTop/index.tsx","../src/ActionsBottom/index.tsx","../src/types.ts","../src/MessageContent/index.tsx","../src/MessageIcon/index.tsx","../src/MessageComponent/index.tsx","../src/hook.tsx"],"sourcesContent":["import {forwardRef} from '@join-x5/react-theme';\n\nimport {SnackbarProvider as BaseSnackbarProvider} from 'notistack';\n\nimport type {SnackbarProviderProps, CustomContentProps} from 'notistack';\nimport type {FRC} from '@join-x5/react-theme';\n\nexport const SnackbarContainer: FRC<HTMLDivElement, CustomContentProps> = forwardRef(({message, style}, ref) => (\n <div ref={ref} style={style}>\n {message}\n </div>\n));\n\nconst Components: SnackbarProviderProps['Components'] = {\n default: SnackbarContainer,\n success: SnackbarContainer,\n warning: SnackbarContainer,\n error: SnackbarContainer,\n info: SnackbarContainer,\n};\n\nexport const SnackbarProvider: React.FC<SnackbarProviderProps> = ({children, ...props}) => (\n <>\n <BaseSnackbarProvider Components={Components} {...props} />\n {children}\n </>\n);\n","import {SizeTokenValue} from '@join-x5/react-theme';\nimport {Link, Button, ButtonVariant} from '@join-x5/react';\n\nimport type {SnackbarAction} from '../types';\n\nexport const getAction = (action: SnackbarAction, index: number) => {\n if (action && typeof action === 'object') {\n if ('isButton' in action) {\n return <Button key={index} variant={ButtonVariant.InnerSnackbar} size={SizeTokenValue.Small} {...action} />;\n }\n\n if ('isLink' in action) {\n return <Link key={index} {...action} />;\n }\n }\n\n return action;\n};\n","import styled from '@emotion/styled';\nimport {closeSnackbar} from 'notistack';\n\nimport {SizeTokenValue} from '@join-x5/react-theme';\nimport {CloseIcon} from '@join-x5/react-icons';\nimport {ButtonVariant, IconButton} from '@join-x5/react';\n\nimport {getAction} from '../Actions';\n\nimport type {RequiredQA} from '@join-x5/react-theme';\nimport type {SnackbarContentProps} from '../types';\n\nconst Container = styled.div`\n display: flex;\n align-items: flex-start;\n`;\n\nexport const ActionsTop: React.FC<SnackbarContentProps & RequiredQA> = ({qa, message}) => {\n const {key, closable, actionsTop = []} = message;\n\n const child = actionsTop.map(getAction).filter(Boolean);\n\n if (closable) {\n const onClose = () => closeSnackbar(key);\n\n child.push(\n <IconButton\n key=\"closebutton\"\n qa={`${qa}-close`}\n size={SizeTokenValue.Small}\n variant={ButtonVariant.Inner}\n onClick={onClose}\n >\n <CloseIcon size={SizeTokenValue.Small} />\n </IconButton>\n );\n }\n\n if (!child.length) {\n return null;\n }\n\n return <Container data-qa={`${qa}-actions-top`}>{child}</Container>;\n};\n","import styled from '@emotion/styled';\n\nimport {getAction} from '../Actions';\n\nimport type {SnackbarContentProps} from '../types';\nimport type {RequiredQA} from '@join-x5/react-theme';\n\nconst Container = styled.div`\n display: flex;\n align-items: center;\n justify-content: flex-end;\n padding-top: 4px;\n gap: 8px;\n`;\n\nexport const ActionsBottom: React.FC<SnackbarContentProps & RequiredQA> = props => {\n const {actionsBottom = []} = props.message;\n\n const child = actionsBottom.map(getAction).filter(Boolean);\n\n if (!child.length) {\n return null;\n }\n\n return <Container data-qa={`${props.qa}-actions-bottom`}>{child}</Container>;\n};\n","import type {CSSProperties, HTMLAttributes, ReactNode} from 'react';\nimport type {SnackbarProviderProps as BaseSnackbarProviderProps, OptionsObject} from 'notistack';\n\nimport type {QA} from '@join-x5/react-theme';\nimport type {ButtonProps, LinkProps} from '@join-x5/react';\n\n/** Пропсы провайдера notistack */\nexport type SnackbarProviderProps = BaseSnackbarProviderProps;\n\n/** Вариант дизайна Snackbar */\nexport enum SnackbarVariant {\n /** Без границы и иконки */\n Default = 'default',\n /** Зеленая граница и иконка */\n Success = 'success',\n /** Желтая граница и иконка */\n Warning = 'warning',\n /** Красная граница и иконка */\n Error = 'error',\n}\n\n/** Кнопки в сообщении\n *\n * Передаются кнопки(isButton), ссылки(isLink), или кастомный элемент\n */\nexport type SnackbarAction = ({isButton: true} & ButtonProps) | ({isLink: true} & LinkProps) | ReactNode;\n\n/** Всплывающее сообщение */\nexport type SnackbarMessage = {\n /** Контент */\n content: ReactNode;\n /** Заголовок */\n title?: ReactNode;\n /** Кастомная иконка */\n icon?: ReactNode;\n /** Вариант */\n variant?: SnackbarVariant;\n\n /** С возможностью закрытия (показывать крестик) */\n closable?: boolean;\n\n /** Кнопки сверху справа */\n actionsTop?: SnackbarAction[];\n /** Кнопки снизу */\n actionsBottom?: SnackbarAction[];\n} & QA &\n Omit<OptionsObject, 'variant'> &\n Pick<CSSProperties, 'maxWidth' | 'whiteSpace'> &\n Pick<HTMLAttributes<HTMLDivElement>, 'style' | 'className'>;\n\nexport type SnackbarMessageInner = Omit<SnackbarMessage, 'key'> & Required<Pick<SnackbarMessage, 'key' | 'variant'>>;\n\nexport type SnackbarContentProps = {\n message: SnackbarMessageInner;\n};\n","import styled from '@emotion/styled';\n\nimport {SnackbarVariant} from '../types';\n\nimport type {Theme} from '@emotion/react';\nimport type {RequiredQA} from '@join-x5/react-theme';\nimport type {SnackbarContentProps, SnackbarMessageInner} from '../types';\n\nconst variantColor = (theme: Theme): Record<SnackbarVariant, string> => ({\n [SnackbarVariant.Default]: theme.colors.white,\n [SnackbarVariant.Success]: theme.colors.additional.green[50],\n [SnackbarVariant.Warning]: theme.colors.additional.yellow[50],\n [SnackbarVariant.Error]: theme.colors.additional.red[50],\n});\n\nconst Container = styled.div`\n padding: 6px 8px 6px 4px;\n`;\n\nconst TitleComponent = styled.div<Pick<SnackbarMessageInner, 'variant'>>`\n padding-bottom: 2px;\n\n ${props => ({\n ...props.theme.typography.h4,\n\n color: variantColor(props.theme)[props.variant],\n })}\n`;\n\nconst ContentComponent = styled.div(props => ({\n ...props.theme.typography.p1compact,\n\n color: props.theme.colors.white,\n}));\n\nexport const MessageContent: React.FC<SnackbarContentProps & RequiredQA> = ({message, qa}) => {\n const {title, content, variant, whiteSpace} = message;\n\n return (\n <Container data-qa={`${qa}-message`}>\n {title && <TitleComponent variant={variant}>{title}</TitleComponent>}\n <ContentComponent style={{whiteSpace}}>{content}</ContentComponent>\n </Container>\n );\n};\n","import styled from '@emotion/styled';\nimport {useTheme} from '@emotion/react';\n\nimport {SizeTokenValue} from '@join-x5/react-theme';\n\nimport {DoneIcon, ErrorIcon, WarningIcon} from '@join-x5/react-icons';\n\nimport {SnackbarVariant} from '../types';\n\nimport type {Theme} from '@emotion/react';\nimport type {RequiredQA} from '@join-x5/react-theme';\nimport type {IconComponent} from '@join-x5/react-icons';\nimport type {SnackbarContentProps} from '../types';\n\nconst variantIcon: Record<SnackbarVariant, IconComponent | null> = {\n [SnackbarVariant.Default]: null,\n [SnackbarVariant.Success]: DoneIcon,\n [SnackbarVariant.Warning]: WarningIcon,\n [SnackbarVariant.Error]: ErrorIcon,\n};\n\nconst variantColor = (theme: Theme): Record<SnackbarVariant, string> => ({\n [SnackbarVariant.Default]: theme.colors.white,\n [SnackbarVariant.Success]: theme.colors.additional.green[50],\n [SnackbarVariant.Warning]: theme.colors.additional.yellow[50],\n [SnackbarVariant.Error]: theme.colors.additional.red[50],\n});\n\nconst Container = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n min-height: 32px;\n padding: 4px;\n box-sizing: border-box;\n\n ${props => props.theme.typography.h4}\n`;\n\nexport const MessageIcon: React.FC<SnackbarContentProps & RequiredQA> = ({qa, message: {icon, variant}}) => {\n const theme = useTheme();\n\n if (typeof icon !== 'undefined' && icon !== true) {\n return icon;\n }\n\n const Component = variantIcon[variant];\n if (!Component) {\n return null;\n }\n\n return (\n <Container data-qa={`${qa}-icon`}>\n <Component size={SizeTokenValue.Medium} color={variantColor(theme)[variant]} />\n </Container>\n );\n};\n","import styled from '@emotion/styled';\n\nimport {ActionsTop} from '../ActionsTop';\nimport {ActionsBottom} from '../ActionsBottom';\nimport {MessageContent} from '../MessageContent';\nimport {MessageIcon} from '../MessageIcon';\n\nimport {SnackbarVariant} from '../types';\n\nimport type {CSSProperties} from '@join-x5/react-theme';\nimport type {SnackbarContentProps, SnackbarMessageInner} from '../types';\n\nconst Container = styled.div<Pick<SnackbarMessageInner, 'variant'>>`\n display: flex;\n align-items: flex-start;\n padding: 8px;\n border-radius: 4px;\n box-sizing: border-box;\n\n ${props => {\n let boxShadow: CSSProperties['boxShadow'];\n\n switch (props.variant) {\n case SnackbarVariant.Success:\n boxShadow = `-4px 0px 0px 0px ${props.theme.colors.additional.green[50]}`;\n break;\n case SnackbarVariant.Warning:\n boxShadow = `-4px 0px 0px 0px ${props.theme.colors.additional.yellow[50]}`;\n break;\n case SnackbarVariant.Error:\n boxShadow = `-4px 0px 0px 0px ${props.theme.colors.additional.red[50]}`;\n break;\n }\n\n return {\n boxShadow,\n backgroundColor: props.theme.colors.grey[90],\n };\n }}\n`;\n\nconst Content = styled.div`\n flex-grow: 1;\n`;\n\nconst Top = styled.div`\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 16px;\n`;\n\nexport const MessageComponent: React.FC<SnackbarContentProps> = props => {\n const {variant, maxWidth, className, style, qa = 'snackbar-message'} = props.message;\n\n const resultProps = {...props, qa};\n\n const containerProps = {\n variant,\n className,\n\n 'data-qa': qa,\n\n style: {maxWidth, ...style},\n };\n\n return (\n <Container {...containerProps}>\n <MessageIcon {...resultProps} />\n\n <Content>\n <Top>\n <MessageContent {...resultProps} />\n <ActionsTop {...resultProps} />\n </Top>\n\n <ActionsBottom {...resultProps} />\n </Content>\n </Container>\n );\n};\n","import {closeSnackbar, enqueueSnackbar as baseEnqueueSnackbar} from 'notistack';\n\nimport {MessageComponent} from './MessageComponent';\n\nimport {SnackbarVariant} from './types';\n\nimport type {SnackbarMessage, SnackbarMessageInner} from './types';\n\nconst enqueueSnackbar = (message: SnackbarMessage) => {\n const innerMessage: SnackbarMessageInner = {\n ...message,\n\n key: message.key ?? String(Math.random() * 10_000),\n variant: message.variant ?? SnackbarVariant.Default,\n };\n\n baseEnqueueSnackbar(<MessageComponent message={innerMessage} />, {\n autoHideDuration: message.actionsTop || message.actionsBottom ? 7_000 : 3_000,\n\n ...innerMessage,\n\n content: undefined,\n });\n};\n\nexport {enqueueSnackbar, closeSnackbar};\n"],"names":["SnackbarContainer","forwardRef","message","style","ref","jsx","Components","default","success","warning","error","info","SnackbarProvider","children","props","jsxs","Fragment","BaseSnackbarProvider","getAction","action","index","Button","ButtonVariant","InnerSnackbar","SizeTokenValue","Small","Link","Container","_styled","process","env","NODE_ENV","target","label","name","styles","toString","_EMOTION_STRINGIFIED_CSS_ERROR__","ActionsTop","qa","key","closable","actionsTop","child","map","filter","Boolean","onClose","closeSnackbar","push","IconButton","Inner","CloseIcon","length","ActionsBottom","actionsBottom","SnackbarVariant","Default","Success","Warning","Error","variantColor","theme","colors","white","additional","green","yellow","red","TitleComponent","typography","h4","color","variant","ContentComponent","p1compact","MessageContent","title","content","whiteSpace","variantIcon","DoneIcon","WarningIcon","ErrorIcon","MessageIcon","icon","useTheme","Component","Medium","boxShadow","backgroundColor","grey","Content","Top","MessageComponent","maxWidth","className","resultProps","containerProps","enqueueSnackbar","innerMessage","String","Math","random","baseEnqueueSnackbar","autoHideDuration","undefined"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/SnackbarProvider.tsx","../src/Actions/index.tsx","../src/ActionsTop/index.tsx","../src/ActionsBottom/index.tsx","../src/types.ts","../src/MessageContent/index.tsx","../src/MessageIcon/index.tsx","../src/MessageComponent/index.tsx","../src/hook.tsx"],"sourcesContent":["import {forwardRef} from '@join-x5/react-theme';\n\nimport {SnackbarProvider as BaseSnackbarProvider} from 'notistack';\n\nimport type {SnackbarProviderProps, CustomContentProps} from 'notistack';\nimport type {FRC} from '@join-x5/react-theme';\n\nexport const SnackbarContainer: FRC<HTMLDivElement, CustomContentProps> = forwardRef(({message, style}, ref) => (\n <div ref={ref} style={style}>\n {message}\n </div>\n));\n\nconst Components: SnackbarProviderProps['Components'] = {\n default: SnackbarContainer,\n success: SnackbarContainer,\n warning: SnackbarContainer,\n error: SnackbarContainer,\n info: SnackbarContainer,\n};\n\nexport const SnackbarProvider: React.FC<SnackbarProviderProps> = ({children, ...props}) => (\n <>\n <BaseSnackbarProvider Components={Components} {...props} />\n {children}\n </>\n);\n","import {SizeTokenValue} from '@join-x5/react-theme';\nimport {Link, Button, ButtonVariant} from '@join-x5/react';\n\nimport type {SnackbarAction} from '../types';\n\nexport const getAction = (action: SnackbarAction, index: number) => {\n if (action && typeof action === 'object') {\n if ('isButton' in action) {\n return <Button key={index} variant={ButtonVariant.InnerSnackbar} size={SizeTokenValue.Small} {...action} />;\n }\n\n if ('isLink' in action) {\n return <Link key={index} {...action} />;\n }\n }\n\n return action;\n};\n","import styled from '@emotion/styled';\nimport {closeSnackbar} from 'notistack';\n\nimport {SizeTokenValue} from '@join-x5/react-theme';\nimport {CloseIcon} from '@join-x5/react-icons';\nimport {ButtonVariant, IconButton} from '@join-x5/react';\n\nimport {getAction} from '../Actions';\n\nimport type {RequiredQA} from '@join-x5/react-theme';\nimport type {SnackbarContentProps} from '../types';\n\nconst Container = styled.div`\n display: flex;\n align-items: flex-start;\n`;\n\nexport const ActionsTop: React.FC<SnackbarContentProps & RequiredQA> = ({qa, message}) => {\n const {key, closable, actionsTop = []} = message;\n\n const child = actionsTop.map(getAction).filter(Boolean);\n\n if (closable) {\n const onClose = () => closeSnackbar(key);\n\n child.push(\n <IconButton\n key=\"closebutton\"\n qa={`${qa}-close`}\n size={SizeTokenValue.Small}\n variant={ButtonVariant.Inner}\n onClick={onClose}\n >\n <CloseIcon size={SizeTokenValue.Small} />\n </IconButton>\n );\n }\n\n if (!child.length) {\n return null;\n }\n\n return <Container data-qa={`${qa}-actions-top`}>{child}</Container>;\n};\n","import styled from '@emotion/styled';\n\nimport {getAction} from '../Actions';\n\nimport type {SnackbarContentProps} from '../types';\nimport type {RequiredQA} from '@join-x5/react-theme';\n\nconst Container = styled.div`\n display: flex;\n align-items: center;\n justify-content: flex-end;\n padding-top: 4px;\n gap: 8px;\n`;\n\nexport const ActionsBottom: React.FC<SnackbarContentProps & RequiredQA> = props => {\n const {actionsBottom = []} = props.message;\n\n const child = actionsBottom.map(getAction).filter(Boolean);\n\n if (!child.length) {\n return null;\n }\n\n return <Container data-qa={`${props.qa}-actions-bottom`}>{child}</Container>;\n};\n","import type {CSSProperties, HTMLAttributes, ReactNode} from 'react';\nimport type {SnackbarProviderProps as BaseSnackbarProviderProps, OptionsObject} from 'notistack';\n\nimport type {QA} from '@join-x5/react-theme';\nimport type {ButtonProps, LinkProps} from '@join-x5/react';\n\n/** Пропсы провайдера notistack */\nexport type SnackbarProviderProps = BaseSnackbarProviderProps;\n\n/** Вариант дизайна Snackbar */\nexport enum SnackbarVariant {\n /** Без границы и иконки */\n Default = 'default',\n /** Зеленая граница и иконка */\n Success = 'success',\n /** Желтая граница и иконка */\n Warning = 'warning',\n /** Красная граница и иконка */\n Error = 'error',\n}\n\n/** Кнопки в сообщении\n *\n * Передаются кнопки(isButton), ссылки(isLink), или кастомный элемент\n */\nexport type SnackbarAction = ({isButton: true} & ButtonProps) | ({isLink: true} & LinkProps) | ReactNode;\n\n/** Всплывающее сообщение */\nexport type SnackbarMessage = {\n /** Контент */\n content: ReactNode;\n /** Заголовок */\n title?: ReactNode;\n /** Кастомная иконка */\n icon?: ReactNode;\n /** Вариант */\n variant?: SnackbarVariant;\n\n /** С возможностью закрытия (показывать крестик) */\n closable?: boolean;\n\n /** Кнопки сверху справа */\n actionsTop?: SnackbarAction[];\n /** Кнопки снизу */\n actionsBottom?: SnackbarAction[];\n} & QA &\n Omit<OptionsObject, 'variant'> &\n Pick<CSSProperties, 'maxWidth' | 'whiteSpace'> &\n Pick<HTMLAttributes<HTMLDivElement>, 'style' | 'className'>;\n\nexport type SnackbarMessageInner = Omit<SnackbarMessage, 'key'> & Required<Pick<SnackbarMessage, 'key' | 'variant'>>;\n\nexport type SnackbarContentProps = {\n message: SnackbarMessageInner;\n};\n","import styled from '@emotion/styled';\n\nimport {SnackbarVariant} from '../types';\n\nimport type {Theme} from '@emotion/react';\nimport type {RequiredQA} from '@join-x5/react-theme';\nimport type {SnackbarContentProps, SnackbarMessageInner} from '../types';\n\nconst variantColor = (theme: Theme): Record<SnackbarVariant, string> => ({\n [SnackbarVariant.Default]: theme.colors.white,\n [SnackbarVariant.Success]: theme.colors.additional.green[50],\n [SnackbarVariant.Warning]: theme.colors.additional.yellow[50],\n [SnackbarVariant.Error]: theme.colors.additional.red[50],\n});\n\nconst Container = styled.div`\n padding: 6px 8px 6px 4px;\n`;\n\nconst TitleComponent = styled.div<Pick<SnackbarMessageInner, 'variant'>>`\n padding-bottom: 2px;\n\n ${props => ({\n ...props.theme.typography.h4,\n\n color: variantColor(props.theme)[props.variant],\n })}\n`;\n\nconst ContentComponent = styled.div(props => ({\n ...props.theme.typography.p1compact,\n\n color: props.theme.colors.white,\n}));\n\nexport const MessageContent: React.FC<SnackbarContentProps & RequiredQA> = ({message, qa}) => {\n const {title, content, variant, whiteSpace} = message;\n\n return (\n <Container data-qa={`${qa}-message`}>\n {title && <TitleComponent variant={variant}>{title}</TitleComponent>}\n <ContentComponent style={{whiteSpace}}>{content}</ContentComponent>\n </Container>\n );\n};\n","import styled from '@emotion/styled';\nimport {useTheme} from '@emotion/react';\n\nimport {SizeTokenValue} from '@join-x5/react-theme';\n\nimport {DoneIcon, ErrorIcon, WarningIcon} from '@join-x5/react-icons';\n\nimport {SnackbarVariant} from '../types';\n\nimport type {Theme} from '@emotion/react';\nimport type {RequiredQA} from '@join-x5/react-theme';\nimport type {IconComponent} from '@join-x5/react-icons';\nimport type {SnackbarContentProps} from '../types';\n\nconst variantIcon: Record<SnackbarVariant, IconComponent | null> = {\n [SnackbarVariant.Default]: null,\n [SnackbarVariant.Success]: DoneIcon,\n [SnackbarVariant.Warning]: WarningIcon,\n [SnackbarVariant.Error]: ErrorIcon,\n};\n\nconst variantColor = (theme: Theme): Record<SnackbarVariant, string> => ({\n [SnackbarVariant.Default]: theme.colors.white,\n [SnackbarVariant.Success]: theme.colors.additional.green[50],\n [SnackbarVariant.Warning]: theme.colors.additional.yellow[50],\n [SnackbarVariant.Error]: theme.colors.additional.red[50],\n});\n\nconst Container = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n min-height: 32px;\n padding: 4px;\n box-sizing: border-box;\n\n ${props => props.theme.typography.h4}\n`;\n\nexport const MessageIcon: React.FC<SnackbarContentProps & RequiredQA> = ({qa, message: {icon, variant}}) => {\n const theme = useTheme();\n\n if (typeof icon !== 'undefined' && icon !== true) {\n return icon;\n }\n\n const Component = variantIcon[variant];\n if (!Component) {\n return null;\n }\n\n return (\n <Container data-qa={`${qa}-icon`}>\n <Component size={SizeTokenValue.Medium} color={variantColor(theme)[variant]} />\n </Container>\n );\n};\n","import styled from '@emotion/styled';\n\nimport {ActionsTop} from '../ActionsTop';\nimport {ActionsBottom} from '../ActionsBottom';\nimport {MessageContent} from '../MessageContent';\nimport {MessageIcon} from '../MessageIcon';\n\nimport {SnackbarVariant} from '../types';\n\nimport type {CSSProperties} from '@join-x5/react-theme';\nimport type {SnackbarContentProps, SnackbarMessageInner} from '../types';\n\nconst Container = styled.div<Pick<SnackbarMessageInner, 'variant'>>`\n display: flex;\n align-items: flex-start;\n padding: 8px;\n border-radius: 4px;\n box-sizing: border-box;\n\n ${props => {\n let boxShadow: CSSProperties['boxShadow'];\n\n switch (props.variant) {\n case SnackbarVariant.Success:\n boxShadow = `-4px 0px 0px 0px ${props.theme.colors.additional.green[50]}`;\n break;\n case SnackbarVariant.Warning:\n boxShadow = `-4px 0px 0px 0px ${props.theme.colors.additional.yellow[50]}`;\n break;\n case SnackbarVariant.Error:\n boxShadow = `-4px 0px 0px 0px ${props.theme.colors.additional.red[50]}`;\n break;\n }\n\n return {\n boxShadow,\n backgroundColor: props.theme.colors.grey[90],\n };\n }}\n`;\n\nconst Content = styled.div`\n flex-grow: 1;\n`;\n\nconst Top = styled.div`\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 16px;\n`;\n\nexport const MessageComponent: React.FC<SnackbarContentProps> = props => {\n const {variant, maxWidth, className, style, qa = 'snackbar-message'} = props.message;\n\n const resultProps = {...props, qa};\n\n const containerProps = {\n variant,\n className,\n\n 'data-qa': qa,\n\n style: {maxWidth, ...style},\n };\n\n return (\n <Container {...containerProps}>\n <MessageIcon {...resultProps} />\n\n <Content>\n <Top>\n <MessageContent {...resultProps} />\n <ActionsTop {...resultProps} />\n </Top>\n\n <ActionsBottom {...resultProps} />\n </Content>\n </Container>\n );\n};\n","import {closeSnackbar, enqueueSnackbar as baseEnqueueSnackbar} from 'notistack';\n\nimport {MessageComponent} from './MessageComponent';\n\nimport {SnackbarVariant} from './types';\n\nimport type {SnackbarMessage, SnackbarMessageInner} from './types';\n\nconst enqueueSnackbar = (message: SnackbarMessage) => {\n const innerMessage: SnackbarMessageInner = {\n ...message,\n\n key: message.key ?? String(Math.random() * 10_000),\n variant: message.variant ?? SnackbarVariant.Default,\n };\n\n baseEnqueueSnackbar(<MessageComponent message={innerMessage} />, {\n autoHideDuration: message.actionsTop || message.actionsBottom ? 7_000 : 3_000,\n\n ...innerMessage,\n\n content: undefined,\n });\n};\n\nexport {enqueueSnackbar, closeSnackbar};\n"],"names":["SnackbarContainer","forwardRef","message","style","ref","jsx","Components","default","success","warning","error","info","SnackbarProvider","children","props","jsxs","Fragment","BaseSnackbarProvider","getAction","action","index","Button","ButtonVariant","InnerSnackbar","SizeTokenValue","Small","Link","Container","_styled","process","env","NODE_ENV","target","label","name","styles","toString","_EMOTION_STRINGIFIED_CSS_ERROR__","ActionsTop","qa","key","closable","actionsTop","child","map","filter","Boolean","onClose","closeSnackbar","push","IconButton","Inner","CloseIcon","length","ActionsBottom","actionsBottom","SnackbarVariant","Default","Success","Warning","Error","variantColor","theme","colors","white","additional","green","yellow","red","TitleComponent","typography","h4","color","variant","ContentComponent","p1compact","MessageContent","title","content","whiteSpace","variantIcon","DoneIcon","WarningIcon","ErrorIcon","MessageIcon","icon","useTheme","Component","Medium","boxShadow","backgroundColor","grey","Content","Top","MessageComponent","maxWidth","className","resultProps","containerProps","enqueueSnackbar","innerMessage","String","Math","random","baseEnqueueSnackbar","autoHideDuration","undefined"],"mappings":"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"}
|
package/dist/types.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.es.js","sources":["../src/types.ts"],"sourcesContent":["import type {CSSProperties, HTMLAttributes, ReactNode} from 'react';\nimport type {SnackbarProviderProps as BaseSnackbarProviderProps, OptionsObject} from 'notistack';\n\nimport type {QA} from '@join-x5/react-theme';\nimport type {ButtonProps, LinkProps} from '@join-x5/react';\n\n/** Пропсы провайдера notistack */\nexport type SnackbarProviderProps = BaseSnackbarProviderProps;\n\n/** Вариант дизайна Snackbar */\nexport enum SnackbarVariant {\n /** Без границы и иконки */\n Default = 'default',\n /** Зеленая граница и иконка */\n Success = 'success',\n /** Желтая граница и иконка */\n Warning = 'warning',\n /** Красная граница и иконка */\n Error = 'error',\n}\n\n/** Кнопки в сообщении\n *\n * Передаются кнопки(isButton), ссылки(isLink), или кастомный элемент\n */\nexport type SnackbarAction = ({isButton: true} & ButtonProps) | ({isLink: true} & LinkProps) | ReactNode;\n\n/** Всплывающее сообщение */\nexport type SnackbarMessage = {\n /** Контент */\n content: ReactNode;\n /** Заголовок */\n title?: ReactNode;\n /** Кастомная иконка */\n icon?: ReactNode;\n /** Вариант */\n variant?: SnackbarVariant;\n\n /** С возможностью закрытия (показывать крестик) */\n closable?: boolean;\n\n /** Кнопки сверху справа */\n actionsTop?: SnackbarAction[];\n /** Кнопки снизу */\n actionsBottom?: SnackbarAction[];\n} & QA &\n Omit<OptionsObject, 'variant'> &\n Pick<CSSProperties, 'maxWidth' | 'whiteSpace'> &\n Pick<HTMLAttributes<HTMLDivElement>, 'style' | 'className'>;\n\nexport type SnackbarMessageInner = Omit<SnackbarMessage, 'key'> & Required<Pick<SnackbarMessage, 'key' | 'variant'>>;\n\nexport type SnackbarContentProps = {\n message: SnackbarMessageInner;\n};\n"],"names":["SnackbarVariant","Default","Success","Warning","Error"],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.es.js","sources":["../src/types.ts"],"sourcesContent":["import type {CSSProperties, HTMLAttributes, ReactNode} from 'react';\nimport type {SnackbarProviderProps as BaseSnackbarProviderProps, OptionsObject} from 'notistack';\n\nimport type {QA} from '@join-x5/react-theme';\nimport type {ButtonProps, LinkProps} from '@join-x5/react';\n\n/** Пропсы провайдера notistack */\nexport type SnackbarProviderProps = BaseSnackbarProviderProps;\n\n/** Вариант дизайна Snackbar */\nexport enum SnackbarVariant {\n /** Без границы и иконки */\n Default = 'default',\n /** Зеленая граница и иконка */\n Success = 'success',\n /** Желтая граница и иконка */\n Warning = 'warning',\n /** Красная граница и иконка */\n Error = 'error',\n}\n\n/** Кнопки в сообщении\n *\n * Передаются кнопки(isButton), ссылки(isLink), или кастомный элемент\n */\nexport type SnackbarAction = ({isButton: true} & ButtonProps) | ({isLink: true} & LinkProps) | ReactNode;\n\n/** Всплывающее сообщение */\nexport type SnackbarMessage = {\n /** Контент */\n content: ReactNode;\n /** Заголовок */\n title?: ReactNode;\n /** Кастомная иконка */\n icon?: ReactNode;\n /** Вариант */\n variant?: SnackbarVariant;\n\n /** С возможностью закрытия (показывать крестик) */\n closable?: boolean;\n\n /** Кнопки сверху справа */\n actionsTop?: SnackbarAction[];\n /** Кнопки снизу */\n actionsBottom?: SnackbarAction[];\n} & QA &\n Omit<OptionsObject, 'variant'> &\n Pick<CSSProperties, 'maxWidth' | 'whiteSpace'> &\n Pick<HTMLAttributes<HTMLDivElement>, 'style' | 'className'>;\n\nexport type SnackbarMessageInner = Omit<SnackbarMessage, 'key'> & Required<Pick<SnackbarMessage, 'key' | 'variant'>>;\n\nexport type SnackbarContentProps = {\n message: SnackbarMessageInner;\n};\n"],"names":["SnackbarVariant","Default","Success","Warning","Error"],"mappings":"AAUO,IAAKA,sBAAAA,OAEVC,EAAAA,UAAU,WAEVC,EAAAA,UAAU,WAEVC,EAAAA,UAAU,WAEVC,EAAAA,QAAQ,SAREJ,IAAAA,KAAAA,CAAAA,CAAAA;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@join-x5/react-snackbar",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.cjs",
|
|
@@ -45,17 +45,17 @@
|
|
|
45
45
|
"dependencies": {
|
|
46
46
|
"@emotion/react": "^11.14.0",
|
|
47
47
|
"@emotion/styled": "^11.14.0",
|
|
48
|
-
"@join-x5/react": "1.
|
|
49
|
-
"@join-x5/react-icons": "1.
|
|
50
|
-
"@join-x5/react-theme": "1.
|
|
48
|
+
"@join-x5/react": "1.2.0",
|
|
49
|
+
"@join-x5/react-icons": "1.2.0",
|
|
50
|
+
"@join-x5/react-theme": "1.2.0",
|
|
51
51
|
"notistack": "^3.0.1"
|
|
52
52
|
},
|
|
53
53
|
"peerDependencies": {
|
|
54
54
|
"@emotion/react": "^11.14.0",
|
|
55
55
|
"@emotion/styled": "^11.14.0",
|
|
56
|
-
"@join-x5/react": "1.
|
|
57
|
-
"@join-x5/react-icons": "1.
|
|
58
|
-
"@join-x5/react-theme": "1.
|
|
56
|
+
"@join-x5/react": "1.2.0",
|
|
57
|
+
"@join-x5/react-icons": "1.2.0",
|
|
58
|
+
"@join-x5/react-theme": "1.2.0",
|
|
59
59
|
"notistack": "^3.0.1",
|
|
60
60
|
"react": ">=17.0.0",
|
|
61
61
|
"react-dom": ">=17.0.0"
|