UNPKG

@coveord/plasma-mantine

Version:

A Plasma flavoured Mantine theme

103 lines (102 loc) 2.96 kB
import { jsx as _jsx } from "react/jsx-runtime"; import { Box, createVarsResolver, getSize, polymorphicFactory, useProps, useStyles } from '@mantine/core'; import Circle from './icons/circle.svg?raw'; import Ring from './icons/ring.svg?raw'; import Square from './icons/square.svg?raw'; import Triangle from './icons/triangle.svg?raw'; import Info from './icons/info.svg?raw'; import classes from './StatusToken.module.css'; const defaultProps = { size: 'lg', variant: 'info' }; const resolveThemeColorFromVariant = (variant, theme)=>{ switch(variant){ case 'success': return theme.colors.green[4]; case 'caution': return theme.colors.yellow[4]; case 'error': return theme.colors.red[5]; case 'disabled': case 'waiting': return theme.colors.gray[5]; case 'edited': case 'new': return 'var(--mantine-primary-color-filled)'; case 'info': return theme.colors.gray[3]; default: return theme.colors.navy[5]; } }; const resolveSize = (size)=>size === 'sm' ? 8 : 12; const resolveIconSrcFromVariant = (variant)=>{ switch(variant){ case 'caution': return Triangle; case 'error': return Square; case 'disabled': return Ring; case 'info': return Info; case 'success': case 'waiting': case 'edited': case 'new': default: return Circle; } }; const varsResolver = createVarsResolver((theme, { variant, size })=>{ const color = resolveThemeColorFromVariant(variant, theme); return { root: { '--status-token-color': color, '--status-token-size': getSize(resolveSize(size), 'status-token-size') } }; }); const statusTokenLabels = { info: 'Info', success: 'Success', caution: 'Caution', error: 'Error', disabled: 'Disabled', waiting: 'Waiting', edited: 'Edited', new: 'New' }; export const StatusToken = polymorphicFactory((props, ref)=>{ const { variant, vars, size, className, style, unstyled, styles, classNames, ...others } = useProps('StatusToken', defaultProps, props); const getStyles = useStyles({ name: 'StatusToken', classes, className, props, style, styles, unstyled, vars, varsResolver }); return /*#__PURE__*/ _jsx(Box, { ref: ref, variant: variant, role: "img", "aria-label": statusTokenLabels[variant], ...getStyles('root', { className, style, styles, classNames }), dangerouslySetInnerHTML: { __html: resolveIconSrcFromVariant(variant) }, ...others }); }); StatusToken.displayName = 'StatusToken'; //# sourceMappingURL=StatusToken.js.map