@veracity/vui
Version:
Veracity UI is a React component library crafted for use within Veracity applications and pages. Based on Styled Components and @xstyled.
175 lines (174 loc) • 5.63 kB
JavaScript
//#region src/tag/theme.ts
/** Token references per semantic color. Tag-only; kept local per design decision. */
const colorTokens = {
blue: {
solid: "var(--vui-action-brand-solid)",
solidHover: "var(--vui-action-brand-solid-hover)",
solidPressed: "var(--vui-action-brand-solid-pressed)",
solidInverse: "var(--vui-action-brand-solid-inverse)",
subtle: "var(--vui-action-brand-subtle)",
subtleHover: "var(--vui-action-brand-subtle-hover)",
subtlePressed: "var(--vui-action-brand-subtle-pressed)",
subtleInverse: "var(--vui-action-brand-subtle-inverse)"
},
green: {
solid: "var(--vui-action-success-solid)",
solidHover: "var(--vui-action-success-solid-hover)",
solidPressed: "var(--vui-action-success-solid-pressed)",
solidInverse: "var(--vui-action-success-solid-inverse)",
subtle: "var(--vui-action-success-subtle)",
subtleHover: "var(--vui-action-success-subtle-hover)",
subtlePressed: "var(--vui-action-success-subtle-pressed)",
subtleInverse: "var(--vui-action-success-subtle-inverse)"
},
red: {
solid: "var(--vui-action-danger-solid)",
solidHover: "var(--vui-action-danger-solid-hover)",
solidPressed: "var(--vui-action-danger-solid-pressed)",
solidInverse: "var(--vui-action-danger-solid-inverse)",
subtle: "var(--vui-action-danger-subtle)",
subtleHover: "var(--vui-action-danger-subtle-hover)",
subtlePressed: "var(--vui-action-danger-subtle-pressed)",
subtleInverse: "var(--vui-action-danger-subtle-inverse)"
},
lavender: {
solid: "var(--vui-action-lavender-solid)",
solidHover: "var(--vui-action-lavender-solid-hover)",
solidPressed: "var(--vui-action-lavender-solid-pressed)",
solidInverse: "var(--vui-action-lavender-solid-inverse)",
subtle: "var(--vui-action-lavender-subtle)",
subtleHover: "var(--vui-action-lavender-subtle-hover)",
subtlePressed: "var(--vui-action-lavender-subtle-pressed)",
subtleInverse: "var(--vui-action-lavender-subtle-inverse)"
},
eucalyptus: {
solid: "var(--vui-action-eucalyptus-solid)",
solidHover: "var(--vui-action-eucalyptus-solid-hover)",
solidPressed: "var(--vui-action-eucalyptus-solid-pressed)",
solidInverse: "var(--vui-action-eucalyptus-solid-inverse)",
subtle: "var(--vui-action-eucalyptus-subtle)",
subtleHover: "var(--vui-action-eucalyptus-subtle-hover)",
subtlePressed: "var(--vui-action-eucalyptus-subtle-pressed)",
subtleInverse: "var(--vui-action-eucalyptus-subtle-inverse)"
},
terracotta: {
solid: "var(--vui-action-terracotta-solid)",
solidHover: "var(--vui-action-terracotta-solid-hover)",
solidPressed: "var(--vui-action-terracotta-solid-pressed)",
solidInverse: "var(--vui-action-terracotta-solid-inverse)",
subtle: "var(--vui-action-terracotta-subtle)",
subtleHover: "var(--vui-action-terracotta-subtle-hover)",
subtlePressed: "var(--vui-action-terracotta-subtle-pressed)",
subtleInverse: "var(--vui-action-terracotta-subtle-inverse)"
},
grey: {
solid: "var(--vui-action-grey-solid)",
solidHover: "var(--vui-action-grey-solid-hover)",
solidPressed: "var(--vui-action-grey-solid-pressed)",
solidInverse: "var(--vui-action-grey-solid-inverse)",
subtle: "var(--vui-action-grey-subtle)",
subtleHover: "var(--vui-action-grey-subtle-hover)",
subtlePressed: "var(--vui-action-grey-subtle-pressed)",
subtleInverse: "var(--vui-action-grey-subtle-inverse)"
},
yellow: {
solid: "var(--vui-action-yellow-solid)",
solidHover: "var(--vui-action-yellow-solid-hover)",
solidPressed: "var(--vui-action-yellow-solid-pressed)",
solidInverse: "var(--vui-action-yellow-solid-inverse)",
subtle: "var(--vui-action-yellow-subtle)",
subtleHover: "var(--vui-action-yellow-subtle-hover)",
subtlePressed: "var(--vui-action-yellow-subtle-pressed)",
subtleInverse: "var(--vui-action-yellow-subtle-inverse)"
}
};
/** Container styles per visual hierarchy, composed from color tokens. */
const hierarchyRules = {
subtle: (t) => ({
bg: t.subtle,
color: t.subtleInverse,
bgHover: t.subtleHover,
bgPressed: t.subtlePressed
}),
solid: (t) => ({
bg: t.solid,
color: t.solidInverse,
bgHover: t.solidHover,
bgPressed: t.solidPressed
})
};
const baseStyle = {};
const defaultProps = {
size: "md",
variant: "subtleBrand",
fontWeight: "medium"
};
const parts = [
"container",
"icon",
"dismiss"
];
const sizes = {
xs: {
container: {
fontSize: "sm",
h: 20,
paddingX: 4,
paddingY: 2,
gapX: 4,
borderRadius: 6
},
icon: { fontSize: "12px" },
dismiss: { size: "xs" }
},
sm: {
container: {
fontSize: "sm",
h: 24,
paddingX: 6,
paddingY: 4,
gapX: 6,
borderRadius: 6
},
icon: { fontSize: "16px" },
dismiss: { size: "sm" }
},
md: {
container: {
fontSize: "sm",
h: 32,
paddingX: 8,
paddingY: 6,
gapX: 8,
borderRadius: 6
},
icon: { fontSize: "16px" },
dismiss: { size: "sm" }
},
lg: {
container: {
fontSize: "md",
h: 40,
paddingX: 12,
paddingY: 8,
gapX: 10,
borderRadius: 6
},
icon: { fontSize: "18px" },
dismiss: { size: "sm" }
}
};
const capitalize = (s) => s.charAt(0).toUpperCase() + s.slice(1);
/** 16 canonical variants: `${hierarchy}${Color}` (e.g. `subtleBrand`, `solidGrey`). */
const variants = Object.fromEntries(Object.entries(colorTokens).flatMap(([colorKey, tokens]) => Object.entries(hierarchyRules).map(([hierarchyKey, buildContainer]) => [`${hierarchyKey}${capitalize(colorKey)}`, { container: buildContainer(tokens) }])));
var theme_default = {
baseStyle,
defaultProps,
parts,
sizes,
variants
};
//#endregion
export { theme_default as default };
globalThis.__vuiVersion__ = "5.3.1"
//# sourceMappingURL=theme.js.map