UNPKG

@primer/primitives

Version:

Typography, spacing, and color primitives for Primer design system

15 lines (14 loc) 624 B
import { z } from 'zod'; import { schemaErrorMessage } from '../utilities/index.js'; const colorHex3RegEx = '^#[0-9a-f]{3}$'; const colorHex6RegEx = '^#[0-9a-f]{6}$'; const colorHex8RegEx = '^#[0-9a-f]{8}$'; const colorHexRegex = new RegExp(`(${colorHex3RegEx})|(${colorHex6RegEx})|(${colorHex8RegEx})`, 'i'); export const colorHexValue = z.string().superRefine((color, ctx) => { if (!colorHexRegex.test(color)) { ctx.addIssue({ code: 'custom', message: schemaErrorMessage(`Invalid color: "${color}"`, 'Color must be a hex string or a reference to a color token.'), }); } });