{"version":3,"file":"Alert.jsx","names":["stylex","memo","useEffect","useRef","color","duration","size","timingFunction","fadeIn","keyframes","from","opacity","to","shake","transform","pop","flash","filter","styles","create","alert","display","alignItems","gap","px4","padding","margin","error","backgroundColor","red400","warning","apricot300","info","blue400","success","apple400","icon","width","px6","height","minWidth","minHeight","mixBlendMode","fadeInStyles","animationName","animationDuration","slow","animationTimingFunction","fast","default","animationFillMode","styleXIconProps","props","ErrorIcon","$","_c","t0","Symbol","for","WarningIcon","InformationIcon","SuccessIcon","iconMap","ariaLiveMap","undefined","Alert","divRef","t1","scrollIntoView","current","behavior","t2","severity","t3","t4","t5","children","t6"],"sources":["../src/Alert.tsx"],"sourcesContent":["import * as stylex from \"@stylexjs/stylex\";\nimport {\n\tCSSProperties,\n\ttype PropsWithChildren,\n\tmemo,\n\tuseEffect,\n\tuseRef,\n} from \"react\";\n\nimport { color, duration, size, timingFunction } from \"./tokens.stylex\";\n\n// This needs styling. The component currently only exists\n// so that we can use it with its API\n\nconst fadeIn = stylex.keyframes({\n\tfrom: {\n\t\topacity: 0,\n\t},\n\tto: {\n\t\topacity: 1,\n\t},\n});\n\nconst shake = stylex.keyframes({\n\t\"0%\": {\n\t\ttransform: \"translateX(0)\",\n\t},\n\t\"25%\": {\n\t\ttransform: \"translateX(-4px)\",\n\t},\n\t\"50%\": {\n\t\ttransform: \"translateX(4px)\",\n\t},\n\t\"75%\": {\n\t\ttransform: \"translateX(-4px)\",\n\t},\n\t\"100%\": {\n\t\ttransform: \"translateX(0)\",\n\t},\n});\n\nconst pop = stylex.keyframes({\n\t\"0%\": {\n\t\ttransform: \"scale(1, 1)\",\n\t},\n\t\"50%\": {\n\t\ttransform: \"scale(1.05, 1.05)\",\n\t},\n\t\"100%\": {\n\t\ttransform: \"scale(1, 1)\",\n\t},\n});\n\nconst flash = stylex.keyframes({\n\t\"0%\": {\n\t\topacity: 0,\n\t\tfilter: \"brightness(1)\",\n\t},\n\t\"50%\": {\n\t\topacity: 1,\n\t\tfilter: \"brightness(1.75)\",\n\t},\n\t\"100%\": {\n\t\tfilter: \"brightness(1)\",\n\t},\n});\n\nconst styles = stylex.create({\n\talert: {\n\t\tdisplay: \"flex\",\n\t\talignItems: \"center\",\n\t\tgap: size.px4,\n\n\t\tpadding: size.px4,\n\t\tmargin: `${size.px4} 0`,\n\t},\n\terror: {\n\t\tbackgroundColor: color.red400,\n\t},\n\twarning: {\n\t\tbackgroundColor: color.apricot300,\n\t},\n\tinfo: {\n\t\tbackgroundColor: color.blue400,\n\t},\n\tsuccess: {\n\t\tbackgroundColor: color.apple400,\n\t},\n\n\ticon: {\n\t\twidth: size.px6,\n\t\theight: size.px6,\n\t\tminWidth: size.px6,\n\t\tminHeight: size.px6,\n\t\tmixBlendMode: \"overlay\",\n\t},\n});\n\nconst fadeInStyles = stylex.create({\n\tinfo: {\n\t\tanimationName: fadeIn,\n\t\tanimationDuration: duration.slow,\n\t\tanimationTimingFunction: timingFunction.fast,\n\t},\n\terror: {\n\t\tanimationName: `${fadeIn}, ${shake}`,\n\t\tanimationDuration: `${duration.slow}, ${duration.default}`,\n\t\tanimationTimingFunction: `${timingFunction.fast}, ${timingFunction.fast}`,\n\t},\n\twarning: {\n\t\tanimationName: flash,\n\t\tanimationDuration: duration.default,\n\t\tanimationTimingFunction: \"ease-in-out\",\n\t\tanimationFillMode: \"both\",\n\t},\n\tsuccess: {\n\t\tanimationName: `${fadeIn}, ${pop}`,\n\t\tanimationDuration: `${duration.default}, ${duration.default}`,\n\t\tanimationTimingFunction: \"ease-in-out, ease-in-out\",\n\t\t// eslint-disable-next-line @stylexjs/valid-styles\n\t\tanimationFillMode: \"both, both\", // TODO: Issue?\n\t},\n});\n\n/**\n * A simple alert banner.\n *\n * Inspired by:\n * https://mui.com/material-ui/react-alert/\n */\nexport interface AlertProps extends PropsWithChildren {\n\tseverity: \"error\" | \"warning\" | \"info\" | \"success\";\n\n\t// TODO: title?: string;\n\ticon?: React.ReactNode;\n\tfadeIn?: boolean;\n\n\t/**\n\t * When true, the alert will scroll into view when it is rendered.\n\t */\n\tscrollIntoView?: boolean;\n}\n\n//#region Icons\n\n// These icons were optimized using SVGOMG and originate from our internal icon set: https://jakearchibald.github.io/svgomg\n\nconst styleXIconProps = stylex.props(styles.icon);\n\nconst ErrorIcon = memo(() => (\n\t// biome-ignore lint/a11y/noSvgWithoutTitle: :nopers:\n\t<svg\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\tviewBox=\"0 0 24 24\"\n\t\twidth=\"1em\"\n\t\t{...styleXIconProps}\n\t>\n\t\t<path\n\t\t\tfill=\"#fff\"\n\t\t\td=\"M12 0a12 12 0 1 0 12 12A12 12 0 0 0 12 0Zm5.49 16.07a1 1 0 0 1-1.41 1.42l-3.9-3.9a.25.25 0 0 0-.36 0l-3.9 3.9a1 1 0 1 1-1.41-1.42l3.9-3.89a.25.25 0 0 0 0-.36l-3.9-3.9a1 1 0 0 1 1.41-1.41l3.9 3.9a.25.25 0 0 0 .36 0l3.9-3.9a1 1 0 0 1 1.41 1.41l-3.9 3.9a.25.25 0 0 0 0 .36Z\"\n\t\t/>\n\t</svg>\n));\nconst WarningIcon = memo(() => (\n\t// biome-ignore lint/a11y/noSvgWithoutTitle: :nopers:\n\t<svg\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\tviewBox=\"0 0 24 24\"\n\t\twidth=\"1em\"\n\t\t{...styleXIconProps}\n\t>\n\t\t<path\n\t\t\tfill=\"#fff\"\n\t\t\td=\"m23.77 20.57-10-19A2 2 0 0 0 12 .5a2 2 0 0 0-1.77 1.07l-10 19a2 2 0 0 0 .06 2A2 2 0 0 0 2 23.5h20a2 2 0 0 0 1.77-2.93ZM11 8.5a1 1 0 0 1 2 0v6a1 1 0 0 1-2 0ZM12.05 20a1.53 1.53 0 0 1-1.52-1.47A1.48 1.48 0 0 1 12 17a1.53 1.53 0 0 1 1.52 1.47A1.48 1.48 0 0 1 12.05 20Z\"\n\t\t/>\n\t</svg>\n));\n\nconst InformationIcon = memo(() => (\n\t// biome-ignore lint/a11y/noSvgWithoutTitle: :nopers:\n\t<svg\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\tviewBox=\"0 0 24 24\"\n\t\t{...styleXIconProps}\n\t>\n\t\t<path\n\t\t\tfill=\"#fff\"\n\t\t\td=\"M12 0a12 12 0 1 0 12 12A12 12 0 0 0 12 0Zm.25 5a1.5 1.5 0 1 1-1.5 1.5 1.5 1.5 0 0 1 1.5-1.5Zm2.25 13.5h-4a1 1 0 0 1 0-2h.75a.25.25 0 0 0 .25-.25v-4.5a.25.25 0 0 0-.25-.25h-.75a1 1 0 0 1 0-2h1a2 2 0 0 1 2 2v4.75a.25.25 0 0 0 .25.25h.75a1 1 0 0 1 0 2Z\"\n\t\t/>\n\t</svg>\n));\n\nconst SuccessIcon = memo(() => (\n\t// biome-ignore lint/a11y/noSvgWithoutTitle: :nopers:\n\t<svg\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\tviewBox=\"0 0 24 24\"\n\t\t{...styleXIconProps}\n\t>\n\t\t<path\n\t\t\tfill=\"#fff\"\n\t\t\td=\"M12 0a12 12 0 1 0 12 12A12 12 0 0 0 12 0Zm6.93 8.2-6.85 9.29a1 1 0 0 1-1.43.19l-4.89-3.91a1 1 0 0 1-.15-1.41A1 1 0 0 1 7 12.21l4.08 3.26L17.32 7a1 1 0 0 1 1.39-.21 1 1 0 0 1 .22 1.41Z\"\n\t\t/>\n\t</svg>\n));\n\n//#endregion\n\nconst iconMap = {\n\terror: <ErrorIcon />,\n\twarning: <WarningIcon />,\n\tinfo: <InformationIcon />,\n\tsuccess: <SuccessIcon />,\n};\nconst ariaLiveMap = {\n\terror: \"assertive\",\n\twarning: \"polite\",\n\tinfo: undefined, // Same as \"off\"\n\tsuccess: undefined, // Same as \"off\"\n} as const;\n\n// TODO: More a11ly according to https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/alert_role\nexport default memo(function Alert(props: AlertProps) {\n\tconst divRef = useRef<HTMLDivElement>(null);\n\n\tuseEffect(() => {\n\t\tif (props.scrollIntoView) {\n\t\t\tdivRef.current?.scrollIntoView({ behavior: \"smooth\" });\n\t\t}\n\t}, [props.scrollIntoView]);\n\n\treturn (\n\t\t<div\n\t\t\t{...stylex.props(\n\t\t\t\tstyles.alert,\n\t\t\t\tstyles[props.severity],\n\t\t\t\tprops.fadeIn && fadeInStyles[props.severity],\n\t\t\t)}\n\t\t\trole=\"alert\"\n\t\t\taria-live={ariaLiveMap[props.severity]}\n\t\t\tref={divRef}\n\t\t>\n\t\t\t{props.icon ?? iconMap[props.severity]}\n\t\t\t<div>{props.children}</div>\n\t\t</div>\n\t);\n});\n"],"mappings":"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","ignoreList":[]}