Feat: Icons and Typography
This commit is contained in:
@@ -1,6 +1,11 @@
|
||||
/* Path: Frontend/src/styles/base/_fonts.scss */
|
||||
|
||||
:root {
|
||||
--font-family-sans: "Inter", "Geist", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
||||
--font-family-mono: "Geist Mono", "SFMono-Regular", ui-monospace, "Cascadia Code", "Roboto Mono", monospace;
|
||||
--font-family-sans:
|
||||
ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif;
|
||||
--font-family-heading: "Avenir Next", "Segoe UI", "Helvetica Neue", Arial, sans-serif;
|
||||
--font-family-display: "Avenir Next", "Segoe UI", "Helvetica Neue", Arial, sans-serif;
|
||||
--font-family-serif: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;
|
||||
--font-family-mono:
|
||||
ui-monospace, "SF Mono", "SFMono-Regular", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ html {
|
||||
background: var(--color-canvas);
|
||||
color: var(--color-text);
|
||||
font-family: var(--font-family-sans);
|
||||
font-synthesis: none;
|
||||
scroll-behavior: smooth;
|
||||
transition:
|
||||
background-color var(--motion-duration-base) var(--motion-ease-standard),
|
||||
@@ -15,6 +16,8 @@ html {
|
||||
body {
|
||||
background: var(--color-canvas);
|
||||
color: var(--color-text);
|
||||
font-family: var(--font-family-sans);
|
||||
@include text-body;
|
||||
}
|
||||
|
||||
a,
|
||||
@@ -50,30 +53,48 @@ a {
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-family: var(--font-family-display);
|
||||
text-wrap: balance;
|
||||
@include text-display;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-family: var(--font-family-heading);
|
||||
text-wrap: balance;
|
||||
@include text-heading;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-family: var(--font-family-heading);
|
||||
text-wrap: balance;
|
||||
@include text-title;
|
||||
}
|
||||
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
font-family: var(--font-family-heading);
|
||||
text-wrap: balance;
|
||||
@include text-label;
|
||||
}
|
||||
|
||||
p,
|
||||
span,
|
||||
li,
|
||||
blockquote,
|
||||
figcaption {
|
||||
text-wrap: pretty;
|
||||
@include text-body;
|
||||
}
|
||||
|
||||
label,
|
||||
legend {
|
||||
@include text-label;
|
||||
}
|
||||
|
||||
button,
|
||||
input,
|
||||
textarea,
|
||||
label,
|
||||
li {
|
||||
select {
|
||||
@include text-body;
|
||||
}
|
||||
|
||||
@@ -82,6 +103,7 @@ pre,
|
||||
kbd,
|
||||
samp {
|
||||
font-family: var(--font-family-mono);
|
||||
font-size: 0.95em;
|
||||
}
|
||||
|
||||
#app {
|
||||
|
||||
@@ -51,4 +51,35 @@
|
||||
--motion-duration-base: 220ms;
|
||||
--motion-duration-slow: 320ms;
|
||||
--motion-ease-standard: cubic-bezier(0.2, 0.8, 0.2, 1);
|
||||
|
||||
// Typography
|
||||
// ============================
|
||||
|
||||
--font-size-caption: 0.75rem;
|
||||
--font-size-label: 0.875rem;
|
||||
--font-size-body: 1rem;
|
||||
--font-size-title: clamp(1.125rem, 1.05rem + 0.3vw, 1.25rem);
|
||||
--font-size-heading: clamp(1.5rem, 1.2rem + 1vw, 2.125rem);
|
||||
--font-size-display: clamp(2.25rem, 1.7rem + 2.2vw, 3.75rem);
|
||||
|
||||
--line-height-caption: 1.4;
|
||||
--line-height-label: 1.35;
|
||||
--line-height-body: 1.55;
|
||||
--line-height-title: 1.3;
|
||||
--line-height-heading: 1.15;
|
||||
--line-height-display: 1.05;
|
||||
|
||||
--font-weight-caption: 500;
|
||||
--font-weight-label: 600;
|
||||
--font-weight-body: 400;
|
||||
--font-weight-title: 600;
|
||||
--font-weight-heading: 600;
|
||||
--font-weight-display: 700;
|
||||
|
||||
--letter-spacing-caption: 0.01em;
|
||||
--letter-spacing-label: 0.005em;
|
||||
--letter-spacing-body: 0;
|
||||
--letter-spacing-title: -0.01em;
|
||||
--letter-spacing-heading: -0.02em;
|
||||
--letter-spacing-display: -0.03em;
|
||||
}
|
||||
|
||||
@@ -19,37 +19,43 @@
|
||||
}
|
||||
|
||||
@mixin text-caption {
|
||||
font-size: clamp(0.75rem, 0.72rem + 0.12vw, 0.875rem);
|
||||
font-weight: 500;
|
||||
line-height: 1.4;
|
||||
font-size: var(--font-size-caption);
|
||||
font-weight: var(--font-weight-caption);
|
||||
line-height: var(--line-height-caption);
|
||||
letter-spacing: var(--letter-spacing-caption);
|
||||
}
|
||||
|
||||
@mixin text-label {
|
||||
font-size: clamp(0.875rem, 0.84rem + 0.15vw, 1rem);
|
||||
font-weight: 600;
|
||||
line-height: 1.4;
|
||||
font-size: var(--font-size-label);
|
||||
font-weight: var(--font-weight-label);
|
||||
line-height: var(--line-height-label);
|
||||
letter-spacing: var(--letter-spacing-label);
|
||||
}
|
||||
|
||||
@mixin text-body {
|
||||
font-size: clamp(0.95rem, 0.92rem + 0.18vw, 1.05rem);
|
||||
font-weight: 400;
|
||||
line-height: 1.6;
|
||||
font-size: var(--font-size-body);
|
||||
font-weight: var(--font-weight-body);
|
||||
line-height: var(--line-height-body);
|
||||
letter-spacing: var(--letter-spacing-body);
|
||||
}
|
||||
|
||||
@mixin text-title {
|
||||
font-size: clamp(1.1rem, 1rem + 0.4vw, 1.35rem);
|
||||
font-weight: 600;
|
||||
line-height: 1.25;
|
||||
font-size: var(--font-size-title);
|
||||
font-weight: var(--font-weight-title);
|
||||
line-height: var(--line-height-title);
|
||||
letter-spacing: var(--letter-spacing-title);
|
||||
}
|
||||
|
||||
@mixin text-heading {
|
||||
font-size: clamp(1.45rem, 1.2rem + 1vw, 2rem);
|
||||
font-weight: 650;
|
||||
line-height: 1.1;
|
||||
font-size: var(--font-size-heading);
|
||||
font-weight: var(--font-weight-heading);
|
||||
line-height: var(--line-height-heading);
|
||||
letter-spacing: var(--letter-spacing-heading);
|
||||
}
|
||||
|
||||
@mixin text-display {
|
||||
font-size: clamp(2rem, 1.45rem + 2.1vw, 3.5rem);
|
||||
font-weight: 700;
|
||||
line-height: 1;
|
||||
font-size: var(--font-size-display);
|
||||
font-weight: var(--font-weight-display);
|
||||
line-height: var(--line-height-display);
|
||||
letter-spacing: var(--letter-spacing-display);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user