@atom-learning/components 2.68.0 → 2.69.1

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.
Files changed (35) hide show
  1. package/CHANGELOG.md +3 -3
  2. package/dist/components/data-table/DataTableHead.d.ts +2 -2
  3. package/dist/components/data-table/DataTableHead.js +1 -1
  4. package/dist/components/data-table/DataTableHead.js.map +1 -1
  5. package/dist/components/data-table/DataTableTable.d.ts +3 -1
  6. package/dist/components/data-table/DataTableTable.js +1 -1
  7. package/dist/components/data-table/DataTableTable.js.map +1 -1
  8. package/dist/components/index.d.ts +2 -1
  9. package/dist/components/pagination/PaginationPopover.js +1 -1
  10. package/dist/components/pagination/PaginationPopover.js.map +1 -1
  11. package/dist/components/spacer/Spacer.d.ts +5 -0
  12. package/dist/components/spacer/Spacer.js +2 -0
  13. package/dist/components/spacer/Spacer.js.map +1 -0
  14. package/dist/components/spacer/index.d.ts +1 -0
  15. package/dist/components/table/TableHeader.d.ts +1 -1
  16. package/dist/components/table/TableHeader.js +1 -1
  17. package/dist/components/table/TableHeader.js.map +1 -1
  18. package/dist/components/toast/Toast.d.ts +676 -11
  19. package/dist/components/toast/Toast.js +1 -1
  20. package/dist/components/toast/Toast.js.map +1 -1
  21. package/dist/components/toast/ToastCloseButton.d.ts +7 -0
  22. package/dist/components/toast/ToastCloseButton.js +2 -0
  23. package/dist/components/toast/ToastCloseButton.js.map +1 -0
  24. package/dist/components/toast/ToastIcon.d.ts +3 -0
  25. package/dist/components/toast/ToastIcon.js +2 -0
  26. package/dist/components/toast/ToastIcon.js.map +1 -0
  27. package/dist/components/toast/ToastProvider.d.ts +6 -1
  28. package/dist/components/toast/ToastProvider.js +1 -1
  29. package/dist/components/toast/ToastProvider.js.map +1 -1
  30. package/dist/components/toast/index.d.ts +1 -0
  31. package/dist/docgen.json +1 -1
  32. package/dist/index.cjs.js +1 -1
  33. package/dist/index.cjs.js.map +1 -1
  34. package/dist/index.js +1 -1
  35. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
- import{Error as g,Close as $}from"@atom-learning/icons";import*as e from"react";import{toast as h}from"react-hot-toast";import{keyframes as a,styled as i}from"../../stitches.js";import{ActionIcon as v}from"../action-icon/ActionIcon.js";import{Icon as s}from"../icon/Icon.js";import{Loader as y}from"../loader/Loader.js";import{Text as w}from"../text/Text.js";const n=400,x=a({"0%":{transform:"translate3d(0,-100%,0)",opacity:0},"100%":{transform:"translate3d(0,0,0)",opacity:1}}),E=a({"0%":{transform:"translate3d(0,0,0)",opacity:1},"100%":{transform:"translate3d(0,-100%,0)",opacity:0}}),k=i("div",{position:"absolute",width:"100%",variants:{visible:{true:{"@allowMotion":{animation:`${x} 250ms cubic-bezier(0.22, 1, 0.36, 1)`}},false:{opacity:0,"@allowMotion":{animation:`${E} 250ms cubic-bezier(0.22, 1, 0.36, 1)`}}}}}),I=i("div",{pointerEvents:"auto",alignItems:"center",borderRadius:"$0",boxShadow:"$1",boxSizing:"border-box",color:"white",display:"flex",minHeight:"$5",pl:"$4",position:"relative",pr:"$6",py:"$4",transition:"background-color 50ms ease-out",width:"100%","@sm":{width:n},"@allowMotion":{transition:"background-color 50ms ease-out, transform 150ms ease-out"},variants:{status:{blank:{bg:"$primary"},error:{bg:"$danger"},loading:{bg:"$primary"},success:{bg:"$success"}}}}),T=e.memo(({ariaLive:l,height:m,id:t,message:c,role:p,type:o="blank",visible:d,calculateOffset:u,updateHeight:b})=>{const f=u(t,{reverseOrder:!0,margin:8});return e.createElement(k,{visible:d},e.createElement(I,{ref:r=>{r&&m===void 0&&b(t,r.getBoundingClientRect().height)},status:o,role:p,"aria-live":l,style:{transform:`translateY(${f}px)`}},o==="error"&&e.createElement(s,{size:"sm",css:{mr:"$3",flex:"0 0 auto"},is:g}),e.createElement(w,null,c),o==="loading"?e.createElement(y,{css:{flex:"0 0 auto",ml:"auto"}}):e.createElement(v,{css:{position:"absolute",top:"$2",right:"$2",color:"white","&:hover,&:focus":{color:"white",opacity:.5}},label:"Close alert",onClick:()=>h.dismiss(t)},e.createElement(s,{is:$}))))});export{n as TOAST_WIDTH,T as Toast};
1
+ import*as s from"react";import{styled as a}from"../../stitches.js";import{Flex as n}from"../flex/Flex.js";import{ToastCloseButton as i}from"./ToastCloseButton.js";import{ToastIcon as m}from"./ToastIcon.js";import{useToastContext as p}from"./ToastProvider.js";const c={blank:{bg:"$primary"},error:{bg:"$danger"},loading:{bg:"$primary"},success:{bg:"$success"}},r=a(n,{pointerEvents:"auto",borderRadius:"$0",boxShadow:"$1",boxSizing:"border-box",color:"white",minHeight:"$5",position:"relative",px:"$4",py:"$1",transition:"background-color 50ms ease-out","@allowMotion":{transition:"background-color 50ms ease-out, transform 150ms ease-out"},variants:{type:c}}),o=t=>{const{type:e}=p();return s.createElement(r,{align:"center",type:t.type||e,...t})};o.Icon=m,o.Close=i;export{r as StyledToast,o as Toast};
2
2
  //# sourceMappingURL=Toast.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Toast.js","sources":["../../../src/components/toast/Toast.tsx"],"sourcesContent":["import { Close, Error } from '@atom-learning/icons'\nimport * as React from 'react'\nimport { toast } from 'react-hot-toast'\nimport type { Toast as ToastInterface } from 'react-hot-toast/dist/core/types'\n\nimport { keyframes, styled } from '~/stitches'\n\nimport { ActionIcon } from '../action-icon/ActionIcon'\nimport { Icon } from '../icon/Icon'\nimport { Loader } from '../loader/Loader'\nimport { Text } from '../text/Text'\n\nexport const TOAST_WIDTH = 400\n\nconst slideIn = keyframes({\n '0%': { transform: `translate3d(0,-100%,0)`, opacity: 0 },\n '100%': { transform: `translate3d(0,0,0)`, opacity: 1 }\n})\nconst slideOut = keyframes({\n '0%': { transform: `translate3d(0,0,0)`, opacity: 1 },\n '100%': { transform: `translate3d(0,-100%,0)`, opacity: 0 }\n})\n\nconst ToastContainer = styled('div', {\n position: 'absolute',\n width: '100%',\n variants: {\n visible: {\n true: {\n '@allowMotion': {\n animation: `${slideIn} 250ms cubic-bezier(0.22, 1, 0.36, 1)`\n }\n },\n false: {\n opacity: 0,\n '@allowMotion': {\n animation: `${slideOut} 250ms cubic-bezier(0.22, 1, 0.36, 1)`\n }\n }\n }\n }\n})\n\nconst StyledToast = styled('div', {\n pointerEvents: 'auto',\n alignItems: 'center',\n borderRadius: '$0',\n boxShadow: '$1',\n boxSizing: 'border-box',\n color: 'white',\n display: 'flex',\n minHeight: '$5',\n pl: '$4',\n position: 'relative',\n pr: '$6',\n py: '$4',\n transition: 'background-color 50ms ease-out',\n width: '100%',\n '@sm': {\n width: TOAST_WIDTH\n },\n '@allowMotion': {\n transition: 'background-color 50ms ease-out, transform 150ms ease-out'\n },\n variants: {\n status: {\n blank: { bg: '$primary' },\n error: { bg: '$danger' },\n loading: { bg: '$primary' },\n success: { bg: '$success' }\n }\n }\n})\n\ntype ToastProps = React.ComponentProps<typeof StyledToast> &\n ToastInterface & {\n calculateOffset: (\n id: string,\n options?: {\n reverseOrder?: boolean\n margin?: number\n }\n ) => number\n updateHeight: (toastId: string, height: number) => void\n }\n\nexport const Toast: React.FC<ToastProps> = React.memo(\n ({\n ariaLive,\n height,\n id,\n message,\n role,\n type = 'blank',\n visible,\n calculateOffset,\n updateHeight\n }) => {\n const offset = calculateOffset(id, {\n reverseOrder: true,\n margin: 8\n })\n\n const ref = (el) => {\n if (el && height === undefined) {\n updateHeight(id, el.getBoundingClientRect().height)\n }\n }\n\n return (\n <ToastContainer visible={visible}>\n <StyledToast\n ref={ref}\n status={type}\n role={role}\n aria-live={ariaLive}\n style={{ transform: `translateY(${offset}px)` }}\n >\n {type === 'error' && (\n <Icon size=\"sm\" css={{ mr: '$3', flex: '0 0 auto' }} is={Error} />\n )}\n <Text>{message}</Text>\n {type === 'loading' ? (\n <Loader css={{ flex: '0 0 auto', ml: 'auto' }} />\n ) : (\n <ActionIcon\n css={{\n position: 'absolute',\n top: '$2',\n right: '$2',\n color: 'white',\n '&:hover,&:focus': { color: 'white', opacity: 0.5 }\n }}\n label=\"Close alert\"\n onClick={() => toast.dismiss(id)}\n >\n <Icon is={Close} />\n </ActionIcon>\n )}\n </StyledToast>\n </ToastContainer>\n )\n }\n)\n"],"names":["TOAST_WIDTH","slideIn","keyframes","slideOut","ToastContainer","styled","StyledToast","Toast","React","ariaLive","height","id","message","role","type","visible","calculateOffset","updateHeight","offset","el","Icon","Error","Text","Loader","ActionIcon","toast","Close"],"mappings":"6WAYaA,EAAc,IAErBC,EAAUC,EAAU,CACxB,KAAM,CAAE,UAAW,yBAA0B,QAAS,CAAE,EACxD,OAAQ,CAAE,UAAW,qBAAsB,QAAS,CAAE,CACxD,CAAC,EACKC,EAAWD,EAAU,CACzB,KAAM,CAAE,UAAW,qBAAsB,QAAS,CAAE,EACpD,OAAQ,CAAE,UAAW,yBAA0B,QAAS,CAAE,CAC5D,CAAC,EAEKE,EAAiBC,EAAO,MAAO,CACnC,SAAU,WACV,MAAO,OACP,SAAU,CACR,QAAS,CACP,KAAM,CACJ,eAAgB,CACd,UAAW,GAAGJ,wCAChB,CACF,EACA,MAAO,CACL,QAAS,EACT,eAAgB,CACd,UAAW,GAAGE,wCAChB,CACF,CACF,CACF,CACF,CAAC,EAEKG,EAAcD,EAAO,MAAO,CAChC,cAAe,OACf,WAAY,SACZ,aAAc,KACd,UAAW,KACX,UAAW,aACX,MAAO,QACP,QAAS,OACT,UAAW,KACX,GAAI,KACJ,SAAU,WACV,GAAI,KACJ,GAAI,KACJ,WAAY,iCACZ,MAAO,OACP,MAAO,CACL,MAAOL,CACT,EACA,eAAgB,CACd,WAAY,0DACd,EACA,SAAU,CACR,OAAQ,CACN,MAAO,CAAE,GAAI,UAAW,EACxB,MAAO,CAAE,GAAI,SAAU,EACvB,QAAS,CAAE,GAAI,UAAW,EAC1B,QAAS,CAAE,GAAI,UAAW,CAC5B,CACF,CACF,CAAC,EAcYO,EAA8BC,EAAM,KAC/C,CAAC,CACC,SAAAC,EACA,OAAAC,EACA,GAAAC,EACA,QAAAC,EACA,KAAAC,EACA,KAAAC,EAAO,QACP,QAAAC,EACA,gBAAAC,EACA,aAAAC,CACF,IAAM,CACJ,MAAMC,EAASF,EAAgBL,EAAI,CACjC,aAAc,GACd,OAAQ,CACV,CAAC,EAQD,OACEH,EAAA,cAACJ,EAAA,CAAe,QAASW,CAAAA,EACvBP,EAAA,cAACF,EAAA,CACC,IATOa,GAAO,CACdA,GAAMT,IAAW,QACnBO,EAAaN,EAAIQ,EAAG,sBAAA,EAAwB,MAAM,CAEtD,EAMM,OAAQL,EACR,KAAMD,EACN,YAAWJ,EACX,MAAO,CAAE,UAAW,cAAcS,MAAY,CAAA,EAE7CJ,IAAS,SACRN,EAAA,cAACY,EAAA,CAAK,KAAK,KAAK,IAAK,CAAE,GAAI,KAAM,KAAM,UAAW,EAAG,GAAIC,CAAO,CAAA,EAElEb,EAAA,cAACc,EAAA,KAAMV,CAAQ,EACdE,IAAS,UACRN,EAAA,cAACe,EAAA,CAAO,IAAK,CAAE,KAAM,WAAY,GAAI,MAAO,CAAA,CAAG,EAE/Cf,EAAA,cAACgB,EAAA,CACC,IAAK,CACH,SAAU,WACV,IAAK,KACL,MAAO,KACP,MAAO,QACP,kBAAmB,CAAE,MAAO,QAAS,QAAS,EAAI,CACpD,EACA,MAAM,cACN,QAAS,IAAMC,EAAM,QAAQd,CAAE,CAE/BH,EAAAA,EAAA,cAACY,EAAA,CAAK,GAAIM,CAAAA,CAAO,CACnB,CAEJ,CACF,CAEJ,CACF"}
1
+ {"version":3,"file":"Toast.js","sources":["../../../src/components/toast/Toast.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport { styled } from '~/stitches'\n\nimport { Flex } from '../flex'\nimport { ToastCloseButton } from './ToastCloseButton'\nimport { ToastIcon } from './ToastIcon'\nimport { useToastContext } from './ToastProvider'\n\nconst toastVariants = {\n blank: { bg: '$primary' },\n error: { bg: '$danger' },\n loading: { bg: '$primary' },\n success: { bg: '$success' }\n} as const\n\nexport const StyledToast = styled(Flex, {\n pointerEvents: 'auto',\n borderRadius: '$0',\n boxShadow: '$1',\n boxSizing: 'border-box',\n color: 'white',\n minHeight: '$5',\n position: 'relative',\n px: '$4',\n py: '$1',\n transition: 'background-color 50ms ease-out',\n '@allowMotion': {\n transition: 'background-color 50ms ease-out, transform 150ms ease-out'\n },\n variants: {\n type: toastVariants\n }\n})\n\ntype ToastProps = Omit<React.ComponentProps<typeof StyledToast>, 'type'> & {\n type?: keyof typeof toastVariants\n}\n\nexport const Toast = (props: ToastProps): JSX.Element => {\n const { type } = useToastContext()\n return <StyledToast align=\"center\" type={props.type || type} {...props} />\n}\n\nToast.Icon = ToastIcon\nToast.Close = ToastCloseButton\n"],"names":["toastVariants","StyledToast","styled","Flex","Toast","props","type","useToastContext","React","ToastIcon","ToastCloseButton"],"mappings":"mQASA,MAAMA,EAAgB,CACpB,MAAO,CAAE,GAAI,UAAW,EACxB,MAAO,CAAE,GAAI,SAAU,EACvB,QAAS,CAAE,GAAI,UAAW,EAC1B,QAAS,CAAE,GAAI,UAAW,CAC5B,EAEaC,EAAcC,EAAOC,EAAM,CACtC,cAAe,OACf,aAAc,KACd,UAAW,KACX,UAAW,aACX,MAAO,QACP,UAAW,KACX,SAAU,WACV,GAAI,KACJ,GAAI,KACJ,WAAY,iCACZ,eAAgB,CACd,WAAY,0DACd,EACA,SAAU,CACR,KAAMH,CACR,CACF,CAAC,EAMYI,EAASC,GAAmC,CACvD,KAAM,CAAE,KAAAC,CAAK,EAAIC,EACjB,EAAA,OAAOC,EAAA,cAACP,EAAY,CAAA,MAAM,SAAS,KAAMI,EAAM,MAAQC,EAAO,GAAGD,CAAAA,CAAO,CAC1E,EAEAD,EAAM,KAAOK,EACbL,EAAM,MAAQM"}
@@ -0,0 +1,7 @@
1
+ import * as React from 'react';
2
+ import { ActionIcon } from '../action-icon/ActionIcon';
3
+ export interface ToastCloseButtonProps extends Omit<React.ComponentProps<typeof ActionIcon>, 'label' | 'children'> {
4
+ onDismiss?: () => void;
5
+ label?: string;
6
+ }
7
+ export declare const ToastCloseButton: ({ onDismiss, label, ...rest }: ToastCloseButtonProps) => JSX.Element;
@@ -0,0 +1,2 @@
1
+ import{Close as i}from"@atom-learning/icons";import*as t from"react";import{toast as m}from"react-hot-toast";import{ActionIcon as l}from"../action-icon/ActionIcon.js";import{Icon as c}from"../icon/Icon.js";import{useToastContext as n}from"./ToastProvider.js";const a=({onDismiss:o,label:e="Close alert",...r})=>{const{id:s}=n();return t.createElement(l,{css:{color:"white",mr:"-$2","&:hover,&:focus":{color:"white",opacity:.8}},label:e,onClick:()=>{m.dismiss(s),o==null||o()},...r},t.createElement(c,{is:i}))};export{a as ToastCloseButton};
2
+ //# sourceMappingURL=ToastCloseButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToastCloseButton.js","sources":["../../../src/components/toast/ToastCloseButton.tsx"],"sourcesContent":["import { Close } from '@atom-learning/icons'\nimport * as React from 'react'\nimport { toast } from 'react-hot-toast'\nimport type { Toast } from 'react-hot-toast/dist/core/types'\n\nimport { ActionIcon } from '../action-icon/ActionIcon'\nimport { Icon } from '../icon/Icon'\nimport { useToastContext } from './ToastProvider'\n\nexport interface ToastCloseButtonProps\n extends Omit<React.ComponentProps<typeof ActionIcon>, 'label' | 'children'> {\n onDismiss?: () => void\n label?: string\n}\n\nexport const ToastCloseButton = ({\n onDismiss,\n label = 'Close alert',\n ...rest\n}: ToastCloseButtonProps): JSX.Element => {\n const { id } = useToastContext()\n\n return (\n <ActionIcon\n css={{\n color: 'white',\n mr: '-$2',\n '&:hover,&:focus': { color: 'white', opacity: 0.8 }\n }}\n label={label}\n onClick={() => {\n toast.dismiss(id)\n onDismiss?.()\n }}\n {...rest}\n >\n <Icon is={Close} />\n </ActionIcon>\n )\n}\n"],"names":["ToastCloseButton","onDismiss","label","rest","id","useToastContext","React","ActionIcon","toast","Icon","Close"],"mappings":"mQAea,MAAAA,EAAmB,CAAC,CAC/B,UAAAC,EACA,MAAAC,EAAQ,iBACLC,CACL,IAA0C,CACxC,KAAM,CAAE,GAAAC,CAAG,EAAIC,IAEf,OACEC,EAAA,cAACC,EAAA,CACC,IAAK,CACH,MAAO,QACP,GAAI,MACJ,kBAAmB,CAAE,MAAO,QAAS,QAAS,EAAI,CACpD,EACA,MAAOL,EACP,QAAS,IAAM,CACbM,EAAM,QAAQJ,CAAE,EAChBH,GAAA,MAAAA,EACF,CAAA,EACC,GAAGE,CAAAA,EAEJG,EAAA,cAACG,EAAA,CAAK,GAAIC,CAAAA,CAAO,CACnB,CAEJ"}
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ import { Icon } from '../icon';
3
+ export declare const ToastIcon: (props: React.ComponentProps<typeof Icon>) => JSX.Element;
@@ -0,0 +1,2 @@
1
+ import e from"react";import{Icon as t}from"../icon/Icon.js";const m=o=>e.createElement(t,{size:"sm",css:{mr:"$3",flex:"0 0 auto"},...o});export{m as ToastIcon};
2
+ //# sourceMappingURL=ToastIcon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToastIcon.js","sources":["../../../src/components/toast/ToastIcon.tsx"],"sourcesContent":["import React from 'react'\n\nimport { Icon } from '../icon'\n\nexport const ToastIcon = (\n props: React.ComponentProps<typeof Icon>\n): JSX.Element => (\n <Icon size=\"sm\" css={{ mr: '$3', flex: '0 0 auto' }} {...props} />\n)\n"],"names":["ToastIcon","props","React","Icon"],"mappings":"4DAIO,MAAMA,EACXC,GAEAC,EAAA,cAACC,EAAA,CAAK,KAAK,KAAK,IAAK,CAAE,GAAI,KAAM,KAAM,UAAW,EAAI,GAAGF,CAAO,CAAA"}
@@ -1,3 +1,8 @@
1
1
  import * as React from 'react';
2
+ import { CSS } from '../../stitches';
2
3
  export { default as toast } from 'react-hot-toast';
3
- export declare const ToastProvider: React.FC;
4
+ import type { Toast as ToastType } from 'react-hot-toast/dist/core/types';
5
+ export declare const ToastProvider: React.FC<{
6
+ css?: CSS;
7
+ }>;
8
+ export declare const useToastContext: () => Pick<ToastType, "id" | "type" | "message">;
@@ -1,2 +1,2 @@
1
- import*as e from"react";import{useToaster as p}from"react-hot-toast";import{default as P}from"react-hot-toast";import{styled as c}from"../../stitches.js";import{TOAST_WIDTH as d,Toast as f}from"./Toast.js";import{MAX_Z_INDEX as u}from"../../constants/zIndices.js";const T=c("div",{left:"$2",position:"fixed",top:"$2",right:"$2",zIndex:u,"@sm":{top:"$3",right:"auto",left:`calc(50% - ${d/2}px)`}}),o=({children:a})=>{const{toasts:r,handlers:s}=p(),{startPause:i,endPause:m,calculateOffset:n,updateHeight:l}=s;return e.createElement(e.Fragment,null,e.createElement(T,{onMouseEnter:i,onMouseLeave:m},r.map(t=>e.createElement(f,{key:t.id,calculateOffset:n,updateHeight:l,...t}))),a)};o.displayName="ToastProvider";export{o as ToastProvider,P as toast};
1
+ import{Error as n}from"@atom-learning/icons";import*as e from"react";import{useToaster as h}from"react-hot-toast";import{default as j}from"react-hot-toast";import{styled as s,keyframes as l}from"../../stitches.js";import{MAX_Z_INDEX as g}from"../../constants/zIndices.js";import{Spacer as T}from"../spacer/Spacer.js";import{Text as w}from"../text/Text.js";import{Toast as a}from"./Toast.js";const C="$2",P=400,M=s("div",{position:"fixed",zIndex:g,inset:C,pointerEvents:"none","@sm":{top:"$3"}}),$=l({"0%":{transform:"translateY(-100%)",opacity:0},"100%":{transform:"translateY(0)",opacity:1}}),I=l({"0%":{transform:"translateY(0)",opacity:1},"100%":{transform:"translateY(-100%)",opacity:0}}),z=s("div",{position:"absolute",width:"100%",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:"$0",boxSizing:"border-box",minHeight:"$5",variants:{visible:{true:{"@allowMotion":{animation:`${$} 250ms cubic-bezier(0.22, 1, 0.36, 1)`}},false:{opacity:0,"@allowMotion":{animation:`${I} 250ms cubic-bezier(0.22, 1, 0.36, 1)`}}}}}),m=e.createContext(null),c=({children:o,css:u})=>{const{toasts:d,handlers:p}=h(),{startPause:f,endPause:v,calculateOffset:E,updateHeight:y}=p;return e.createElement(e.Fragment,null,e.createElement(M,{onMouseEnter:f,onMouseLeave:v,css:u},d.map(t=>{const{message:r}=t,b=E(t.id,{reverseOrder:!0,margin:8}),x=i=>{i&&t.height===void 0&&y(t.id,i.getBoundingClientRect().height)};return e.createElement(z,{key:t.id,ref:x,visible:t.visible,role:t.role,"aria-live":t.ariaLive,css:{top:b}},e.createElement(m.Provider,{value:t},typeof r=="function"?r(t):e.isValidElement(r)?r:e.createElement(a,{css:{width:P}},t.type==="error"&&e.createElement(a.Icon,{is:n}),e.createElement(w,null,r),e.createElement(T,null),e.createElement(a.Close,null))))})),o)},Y=()=>{const o=e.useContext(m);if(!o)throw new n("useToastContext must be used within a ToastProvider");return o};c.displayName="ToastProvider";export{c as ToastProvider,j as toast,Y as useToastContext};
2
2
  //# sourceMappingURL=ToastProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ToastProvider.js","sources":["../../../src/components/toast/ToastProvider.tsx"],"sourcesContent":["import * as React from 'react'\nimport { useToaster } from 'react-hot-toast'\n\nimport { styled } from '~/stitches'\n\nimport { Toast, TOAST_WIDTH } from './Toast'\n\nexport { default as toast } from 'react-hot-toast'\nimport { MAX_Z_INDEX } from '~/constants/zIndices'\n\nconst Container = styled('div', {\n left: '$2',\n position: 'fixed',\n top: '$2',\n right: '$2',\n zIndex: MAX_Z_INDEX,\n '@sm': {\n top: '$3',\n right: 'auto',\n left: `calc(50% - ${TOAST_WIDTH / 2}px)`\n }\n})\n\nexport const ToastProvider: React.FC = ({ children }) => {\n const { toasts, handlers } = useToaster()\n const { startPause, endPause, calculateOffset, updateHeight } = handlers\n\n return (\n <>\n <Container onMouseEnter={startPause} onMouseLeave={endPause}>\n {toasts.map((toast) => (\n <Toast\n key={toast.id}\n calculateOffset={calculateOffset}\n updateHeight={updateHeight}\n {...toast}\n />\n ))}\n </Container>\n {children}\n </>\n )\n}\n\nToastProvider.displayName = 'ToastProvider'\n"],"names":["Container","styled","MAX_Z_INDEX","TOAST_WIDTH","ToastProvider","children","toasts","handlers","useToaster","startPause","endPause","calculateOffset","updateHeight","React","toast","Toast"],"mappings":"wQAUA,MAAMA,EAAYC,EAAO,MAAO,CAC9B,KAAM,KACN,SAAU,QACV,IAAK,KACL,MAAO,KACP,OAAQC,EACR,MAAO,CACL,IAAK,KACL,MAAO,OACP,KAAM,cAAcC,EAAc,MACpC,CACF,CAAC,EAEYC,EAA0B,CAAC,CAAE,SAAAC,CAAS,IAAM,CACvD,KAAM,CAAE,OAAAC,EAAQ,SAAAC,CAAS,EAAIC,EAAW,EAClC,CAAE,WAAAC,EAAY,SAAAC,EAAU,gBAAAC,EAAiB,aAAAC,CAAa,EAAIL,EAEhE,OACEM,EAAA,cAAAA,EAAA,SACEA,KAAAA,EAAA,cAACb,EAAA,CAAU,aAAcS,EAAY,aAAcC,CAAAA,EAChDJ,EAAO,IAAKQ,GACXD,EAAA,cAACE,EAAA,CACC,IAAKD,EAAM,GACX,gBAAiBH,EACjB,aAAcC,EACb,GAAGE,CACN,CAAA,CACD,CACH,EACCT,CACH,CAEJ,EAEAD,EAAc,YAAc"}
1
+ {"version":3,"file":"ToastProvider.js","sources":["../../../src/components/toast/ToastProvider.tsx"],"sourcesContent":["import { Error } from '@atom-learning/icons'\nimport * as React from 'react'\nimport { useToaster } from 'react-hot-toast'\n\nimport { CSS, keyframes, styled } from '~/stitches'\nexport { default as toast } from 'react-hot-toast'\nimport type { Toast as ToastType } from 'react-hot-toast/dist/core/types'\n\nimport { MAX_Z_INDEX } from '~/constants/zIndices'\n\nimport { Flex } from '../flex'\nimport { Spacer } from '../spacer'\nimport { Text } from '../text'\nimport { Toast } from './Toast'\n\nconst DEFAULT_OFFSET = '$2'\nconst TOAST_WIDTH = 400\n\nconst ToastProviderBase = styled('div', {\n position: 'fixed',\n zIndex: MAX_Z_INDEX,\n inset: DEFAULT_OFFSET,\n pointerEvents: 'none',\n '@sm': {\n top: '$3'\n }\n})\n\nconst slideIn = keyframes({\n '0%': { transform: 'translateY(-100%)', opacity: 0 },\n '100%': { transform: `translateY(0)`, opacity: 1 }\n})\n\nconst slideOut = keyframes({\n '0%': { transform: `translateY(0)`, opacity: 1 },\n '100%': { transform: `translateY(-100%)`, opacity: 0 }\n})\n\nconst ToastWrapper = styled('div', {\n position: 'absolute',\n width: '100%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: '$0',\n boxSizing: 'border-box',\n minHeight: '$5',\n variants: {\n visible: {\n true: {\n '@allowMotion': {\n animation: `${slideIn} 250ms cubic-bezier(0.22, 1, 0.36, 1)`\n }\n },\n false: {\n opacity: 0,\n '@allowMotion': {\n animation: `${slideOut} 250ms cubic-bezier(0.22, 1, 0.36, 1)`\n }\n }\n }\n }\n})\n\nconst ToastContext = React.createContext<Pick<\n ToastType,\n 'type' | 'id' | 'message'\n> | null>(null)\n\nexport const ToastProvider: React.FC<{ css?: CSS }> = ({ children, css }) => {\n const { toasts, handlers } = useToaster()\n const { startPause, endPause, calculateOffset, updateHeight } = handlers\n\n return (\n <>\n <ToastProviderBase\n onMouseEnter={startPause}\n onMouseLeave={endPause}\n css={css}\n >\n {toasts.map((toast) => {\n const { message: children } = toast\n\n const offset = calculateOffset(toast.id, {\n reverseOrder: true,\n margin: 8\n })\n\n const ref = (el: HTMLDivElement | null) => {\n if (el && toast.height === undefined) {\n updateHeight(toast.id, el.getBoundingClientRect().height)\n }\n }\n\n return (\n <ToastWrapper\n key={toast.id}\n ref={ref}\n visible={toast.visible}\n role={toast.role}\n aria-live={toast.ariaLive}\n css={{ top: offset }}\n >\n <ToastContext.Provider value={toast}>\n {typeof children === 'function' ? (\n children(toast)\n ) : React.isValidElement(children) ? (\n children\n ) : (\n <Toast css={{ width: TOAST_WIDTH }}>\n {toast.type === 'error' && <Toast.Icon is={Error} />}\n <Text>{children}</Text>\n <Spacer />\n <Toast.Close />\n </Toast>\n )}\n </ToastContext.Provider>\n </ToastWrapper>\n )\n })}\n </ToastProviderBase>\n {children}\n </>\n )\n}\n\nexport const useToastContext = () => {\n const context = React.useContext(ToastContext)\n\n if (!context) {\n throw new Error('useToastContext must be used within a ToastProvider')\n }\n\n return context\n}\n\nToastProvider.displayName = 'ToastProvider'\n"],"names":["DEFAULT_OFFSET","TOAST_WIDTH","ToastProviderBase","styled","MAX_Z_INDEX","slideIn","keyframes","slideOut","ToastWrapper","ToastContext","React","ToastProvider","children","css","toasts","handlers","useToaster","startPause","endPause","calculateOffset","updateHeight","toast","offset","ref","el","Toast","Error","Text","Spacer","useToastContext","context"],"mappings":"uYAeA,MAAMA,EAAiB,KACjBC,EAAc,IAEdC,EAAoBC,EAAO,MAAO,CACtC,SAAU,QACV,OAAQC,EACR,MAAOJ,EACP,cAAe,OACf,MAAO,CACL,IAAK,IACP,CACF,CAAC,EAEKK,EAAUC,EAAU,CACxB,KAAM,CAAE,UAAW,oBAAqB,QAAS,CAAE,EACnD,OAAQ,CAAE,UAAW,gBAAiB,QAAS,CAAE,CACnD,CAAC,EAEKC,EAAWD,EAAU,CACzB,KAAM,CAAE,UAAW,gBAAiB,QAAS,CAAE,EAC/C,OAAQ,CAAE,UAAW,oBAAqB,QAAS,CAAE,CACvD,CAAC,EAEKE,EAAeL,EAAO,MAAO,CACjC,SAAU,WACV,MAAO,OACP,QAAS,OACT,eAAgB,SAChB,WAAY,SACZ,aAAc,KACd,UAAW,aACX,UAAW,KACX,SAAU,CACR,QAAS,CACP,KAAM,CACJ,eAAgB,CACd,UAAW,GAAGE,wCAChB,CACF,EACA,MAAO,CACL,QAAS,EACT,eAAgB,CACd,UAAW,GAAGE,wCAChB,CACF,CACF,CACF,CACF,CAAC,EAEKE,EAAeC,EAAM,cAGjB,IAAI,EAEDC,EAAyC,CAAC,CAAE,SAAAC,EAAU,IAAAC,CAAI,IAAM,CAC3E,KAAM,CAAE,OAAAC,EAAQ,SAAAC,CAAS,EAAIC,EAAAA,EACvB,CAAE,WAAAC,EAAY,SAAAC,EAAU,gBAAAC,EAAiB,aAAAC,CAAa,EAAIL,EAEhE,OACEL,EAAA,cAAAA,EAAA,SACEA,KAAAA,EAAA,cAACR,EAAA,CACC,aAAce,EACd,aAAcC,EACd,IAAKL,GAEJC,EAAO,IAAKO,GAAU,CACrB,KAAM,CAAE,QAAST,CAAS,EAAIS,EAExBC,EAASH,EAAgBE,EAAM,GAAI,CACvC,aAAc,GACd,OAAQ,CACV,CAAC,EAEKE,EAAOC,GAA8B,CACrCA,GAAMH,EAAM,SAAW,QACzBD,EAAaC,EAAM,GAAIG,EAAG,sBAAsB,EAAE,MAAM,CAE5D,EAEA,OACEd,EAAA,cAACF,EAAA,CACC,IAAKa,EAAM,GACX,IAAKE,EACL,QAASF,EAAM,QACf,KAAMA,EAAM,KACZ,YAAWA,EAAM,SACjB,IAAK,CAAE,IAAKC,CAAO,CAEnBZ,EAAAA,EAAA,cAACD,EAAa,SAAb,CAAsB,MAAOY,CAC3B,EAAA,OAAOT,GAAa,WACnBA,EAASS,CAAK,EACZX,EAAM,eAAeE,CAAQ,EAC/BA,EAEAF,EAAA,cAACe,EAAA,CAAM,IAAK,CAAE,MAAOxB,CAAY,CAAA,EAC9BoB,EAAM,OAAS,SAAWX,EAAA,cAACe,EAAM,KAAN,CAAW,GAAIC,CAAO,CAAA,EAClDhB,EAAA,cAACiB,EAAA,KAAMf,CAAS,EAChBF,EAAA,cAACkB,EAAA,IAAO,EACRlB,EAAA,cAACe,EAAM,MAAN,IAAY,CACf,CAEJ,CACF,CAEJ,CAAC,CACH,EACCb,CACH,CAEJ,EAEaiB,EAAkB,IAAM,CACnC,MAAMC,EAAUpB,EAAM,WAAWD,CAAY,EAE7C,GAAI,CAACqB,EACH,MAAM,IAAIJ,EAAM,qDAAqD,EAGvE,OAAOI,CACT,EAEAnB,EAAc,YAAc"}
@@ -1 +1,2 @@
1
+ export { Toast } from './Toast';
1
2
  export { ToastProvider, toast } from './ToastProvider';