UNPKG

@workday/canvas-kit-react

Version:

The parent module that contains all Workday Canvas Kit React components

71 lines (70 loc) 2.57 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.errorRing = exports.getErrorColors = void 0; const types_1 = require("../types"); const tokens_1 = require("@workday/canvas-kit-react/tokens"); const chroma_js_1 = __importDefault(require("chroma-js")); const isAccessible = (foreground, background = tokens_1.colors.frenchVanilla100) => { return chroma_js_1.default.contrast(foreground, background) >= 3; }; function getErrorColors(error, theme) { if (error === types_1.ErrorType.Error) { if (theme) { const palette = theme.canvas.palette.error; return { outer: isAccessible(palette.main) ? palette.main : palette.darkest, inner: palette.main, }; } else { return { outer: tokens_1.inputColors.error.border, inner: tokens_1.inputColors.error.border, }; } } else if (error === types_1.ErrorType.Alert) { if (theme) { const palette = theme.canvas.palette.alert; return { outer: isAccessible(palette.main) ? palette.main : palette.darkest, inner: palette.main, }; } else { return { outer: tokens_1.colors.cantaloupe600, inner: tokens_1.inputColors.alert.border, }; } } else { return {}; } } exports.getErrorColors = getErrorColors; function errorRing(error, theme) { if (error !== types_1.ErrorType.Error && error !== types_1.ErrorType.Alert) { return {}; } const errorColors = getErrorColors(error, theme); const errorBoxShadow = `inset 0 0 0 ${errorColors.outer === errorColors.inner ? 1 : 2}px ${errorColors.inner}`; return { borderColor: errorColors.outer, transition: '100ms box-shadow', boxShadow: errorBoxShadow, '&:hover, &:disabled, &.hover, &.disabled': { borderColor: errorColors.outer, }, '&:focus-visible:not([disabled]), &.focus:not([disabled])': { borderColor: errorColors.outer, boxShadow: `${errorBoxShadow}, 0 0 0 2px ${tokens_1.colors.frenchVanilla100}, 0 0 0 4px ${theme ? theme.canvas.palette.common.focusOutline : tokens_1.inputColors.focusBorder}`, }, }; } exports.errorRing = errorRing;