@indiekit/frontend
Version:
Frontend components for Indiekit
212 lines (184 loc) • 7.72 kB
CSS
html {
/* Neutral palette */
--color-neutral99: hsl(var(--tint-neutral) 99%);
--color-neutral95: hsl(var(--tint-neutral) 95%);
--color-neutral90: hsl(var(--tint-neutral) 90%);
--color-neutral80: hsl(var(--tint-neutral) 80%);
--color-neutral70: hsl(var(--tint-neutral) 70%);
--color-neutral60: hsl(var(--tint-neutral) 60%);
--color-neutral50: hsl(var(--tint-neutral) 50%);
--color-neutral30: hsl(var(--tint-neutral) 30%);
--color-neutral20: hsl(var(--tint-neutral) 20%);
--color-neutral10: hsl(var(--tint-neutral) 10%);
/* Red palette */
--tint-red: 8 100%;
--color-red90: hsl(var(--tint-red) 90%);
--color-red80: hsl(var(--tint-red) 80%);
--color-red45: hsl(var(--tint-red) 45%);
--color-red30: hsl(var(--tint-red) 30%);
--color-red10: hsl(var(--tint-red) 10%);
/* Purple palette */
--tint-purple: 270 100%;
--color-purple90: hsl(var(--tint-purple) 90%);
--color-purple45: hsl(var(--tint-purple) 45%);
--color-purple10: hsl(var(--tint-purple) 10%);
/* Green palette */
--tint-green: 144 100%;
--color-green90: hsl(var(--tint-green) 90%);
--color-green50: hsl(var(--tint-green) 50%);
--color-green30: hsl(var(--tint-green) 30%);
--color-green10: hsl(var(--tint-green) 10%);
/* Yellow palette */
--tint-yellow: 44 100%;
--color-yellow90: hsl(var(--tint-yellow) 90%);
--color-yellow50: hsl(var(--tint-yellow) 50%);
--color-yellow10: hsl(var(--tint-yellow) 10%);
}
:root {
--color-background: var(--color-neutral99);
--color-on-background: var(--color-neutral10);
--color-offset: var(--color-neutral95);
--color-offset-variant: var(--color-neutral90);
--color-offset-variant-darker: var(--color-neutral80);
--color-on-offset: var(--color-neutral30);
--color-outline: var(--color-neutral80);
--color-outline-variant: var(--color-neutral60);
--color-primary-on-background: var(--color-primary-on-background-light);
/* Common color assignments */
--color-error: var(--color-red45);
--color-error-variant: var(--color-red30);
--color-on-error: var(--color-neutral99);
--color-success: var(--color-green50);
--color-success-variant: var(--color-green30);
--color-on-success: var(--color-green10);
--color-notification: var(--color-purple45);
--color-on-notification: var(--color-neutral99);
--color-focus: var(--color-yellow50);
--color-on-focus: var(--color-on-background);
--color-selection: hsl(var(--tint-yellow) 50% / 30%);
--color-shadow: hsl(var(--tint-neutral) 10% / 0.15);
/* Syntax highlighting */
--color-token-comment: var(--color-on-offset);
--color-token-operator: var(--color-on-background);
--color-token-function: #900;
--color-token-keyword: #069;
--color-token-selector: #009;
--color-token-string: #c06;
--color-token-variable: #399;
/* Fluid type scale */
/* clamp(min=320, preferred, max=960) */
--font-size-xs: clamp(0.75rem, 0.6875rem + 0.3125vw, 0.875rem); /* 12 → 14 */
--font-size-s: clamp(0.875rem, 0.8125rem + 0.3125vw, 1rem); /* 14 → 16 */
--font-size-m: clamp(1rem, 0.9375rem + 0.3125vw, 1.125rem); /* 16 → 18 */
--font-size-l: clamp(1.125rem, 1.0313rem + 0.4688vw, 1.3125rem); /* 18 → 21 */
--font-size-xl: clamp(1.25rem, 1rem + 1.25vw, 1.75rem); /* 21 → 28 */
--font-size-2xl: clamp(1.5rem, 1rem + 2.5vw, 2.5rem); /* 24 → 40 */
/* Typography */
--font-family-system: system-ui;
--font-family-sans: system-ui, sans-serif;
--font-family-monospace:
ui-monospace, sfmono-regular, sf mono, menlo, consolas, liberation mono,
monospace;
--line-height-solid: 1;
--line-height-tight: 1.25;
--line-height-loose: 1.5;
--line-height-prose: 1.75;
--line-measure: 45rem;
--text-thickness: 0.0625em;
/* Font styles */
--font-title: 750 expanded var(--font-size-2xl) / var(--line-height-tight)
var(--font-family-sans);
--font-heading: 600 var(--font-size-xl) / var(--line-height-tight)
var(--font-family-sans);
--font-subhead: 550 var(--font-size-l) / var(--line-height-tight)
var(--font-family-sans);
--font-body: 425 var(--font-size-m) / var(--line-height-loose)
var(--font-family-sans);
--font-label: 600 var(--font-size-m) / var(--line-height-tight)
var(--font-family-sans);
--font-fieldset-label: 400 var(--font-size-m) / var(--line-height-solid)
var(--font-family-sans);
--font-caption: 400 var(--font-size-s) / var(--line-height-loose)
var(--font-family-sans);
--font-code: 400 var(--font-size-s) / var(--line-height-loose)
var(--font-family-monospace);
/* Borders */
--border-radius-small: 0.25rem;
--border-radius-large: 0.5rem;
--border-width-hairline: 0.5px;
--border-width-thin: 1px;
--border-width-thick: 2px;
--border-width-thickest: 4px;
/* Border styles */
--border-hairline: var(--border-width-hairline) solid var(--color-shadow);
/* Input borders */
--input-border-width: var(--border-width-thick);
--input-border-width-focus: var(--border-width-thickest);
--input-border-width-focus-offset: 2px;
/* Box shadows */
--focus-width: 0.25rem;
/* Fluid space scale */
/* clamp(min=320, preferred, max=960) */
--space-2xs: 0.25rem; /* 4 */
--space-xs: 0.5rem; /* 8 */
--space-s: clamp(0.5rem, 0.375rem + 0.625vw, 0.75rem); /* 8 → 12 */
--space-m: clamp(0.75rem, 0.625rem + 0.625vw, 1rem); /* 12 → 16 */
--space-l: clamp(1rem, 0.75rem + 1.25vw, 1.5rem); /* 16 → 24 */
--space-xl: clamp(1.5rem, 1.25rem + 1.25vw, 2rem); /* 24 → 32 */
--space-2xl: clamp(2rem, 1.5rem + 2vw, 4rem); /* 32 → 64 */
/* Layout */
--container-padding-inline: var(--space-l);
--container-inline-size: min(100vw, var(--container-max-inline-size));
--container-max-inline-size: 75rem;
/* Glass */
--glass-background-color: hsl(var(--tint-neutral) 95% / 0.9);
color-scheme: light dark;
}
@media (prefers-color-scheme: dark) {
:root:not([data-color-scheme]) {
--color-on-background: var(--color-neutral99);
--color-background: var(--color-neutral10);
--color-offset: var(--color-neutral20);
--color-offset-variant: var(--color-neutral30);
--color-offset-variant-darker: var(--color-neutral20);
--color-on-offset: var(--color-neutral95);
--color-outline: var(--color-neutral50);
--color-outline-variant: var(--color-neutral70);
--color-primary-on-background: var(--color-primary-on-background-dark);
/* Common color assignments */
--color-error: var(--color-red80);
--color-error-variant: var(--color-red90);
--color-on-error: var(--color-neutral10);
/* Syntax highlighting */
--color-token-function: #f99;
--color-token-keyword: #0cf;
--color-token-selector: #99f;
--color-token-string: #f6f;
--color-token-variable: #9ff;
/* Glass */
--glass-background-color: hsl(var(--tint-neutral) 20% / 0.9);
}
}
[data-color-scheme="dark"] {
--color-on-background: var(--color-neutral99);
--color-background: var(--color-neutral10);
--color-offset: var(--color-neutral20);
--color-offset-variant: var(--color-neutral30);
--color-offset-variant-darker: var(--color-neutral20);
--color-on-offset: var(--color-neutral95);
--color-outline: var(--color-neutral50);
--color-outline-variant: var(--color-neutral70);
--color-primary-on-background: var(--color-primary-on-background-dark);
/* Common color assignments */
--color-error: var(--color-red80);
--color-error-variant: var(--color-red90);
--color-on-error: var(--color-neutral10);
/* Syntax highlighting */
--color-token-function: #f99;
--color-token-keyword: #0cf;
--color-token-selector: #99f;
--color-token-string: #f6f;
--color-token-variable: #9ff;
/* Glass */
--glass-background-color: hsl(var(--tint-neutral) 20% / 0.9);
}