Apply the Phase 2 warm-premium base additively (no existing page changes): - tailwind.config.ts: add fontSize roles (display, h1, h2, h3, title, body-lg, body, small, caption, overline) with line-height/tracking/weight; add fontFamily (sans/latin = Museo, arabic = Dubai); add section-sm/section-lg spacing rhythm. - globals.css: add Arabic-safe .eyebrow utility (uppercase + tracking on Latin, neutralised for html[lang="ar"]). Colors and fonts unchanged. Verified: tsc clean, eslint clean, tailwind build generates the new utilities with correct values.
139 lines
4.8 KiB
TypeScript
139 lines
4.8 KiB
TypeScript
import type { Config } from "tailwindcss";
|
|
import animate from "tailwindcss-animate";
|
|
|
|
const config: Config = {
|
|
darkMode: ["class"],
|
|
content: [
|
|
"./pages/**/*.{js,ts,jsx,tsx,mdx}",
|
|
"./src/**/*.{js,ts,jsx,tsx,mdx}",
|
|
"./components/**/*.{js,ts,jsx,tsx,mdx}",
|
|
"./app/**/*.{js,ts,jsx,tsx,mdx}",
|
|
],
|
|
theme: {
|
|
extend: {
|
|
colors: {
|
|
border: "hsl(var(--border))",
|
|
"border-strong": "hsl(var(--border-strong))",
|
|
input: "hsl(var(--input))",
|
|
ring: "hsl(var(--ring))",
|
|
background: "hsl(var(--background))",
|
|
foreground: "hsl(var(--foreground))",
|
|
surface: {
|
|
1: "hsl(var(--surface-1))",
|
|
2: "hsl(var(--surface-2))",
|
|
3: "hsl(var(--surface-3))",
|
|
inverse: "hsl(var(--surface-inverse))",
|
|
"inverse-foreground": "hsl(var(--surface-inverse-foreground))",
|
|
},
|
|
primary: {
|
|
DEFAULT: "hsl(var(--primary))",
|
|
foreground: "hsl(var(--primary-foreground))",
|
|
},
|
|
secondary: {
|
|
DEFAULT: "hsl(var(--secondary))",
|
|
foreground: "hsl(var(--secondary-foreground))",
|
|
},
|
|
muted: {
|
|
DEFAULT: "hsl(var(--muted))",
|
|
foreground: "hsl(var(--muted-foreground))",
|
|
},
|
|
accent: {
|
|
DEFAULT: "hsl(var(--accent))",
|
|
foreground: "hsl(var(--accent-foreground))",
|
|
},
|
|
destructive: {
|
|
DEFAULT: "hsl(var(--destructive))",
|
|
foreground: "hsl(var(--destructive-foreground))",
|
|
},
|
|
card: {
|
|
DEFAULT: "hsl(var(--card))",
|
|
foreground: "hsl(var(--card-foreground))",
|
|
},
|
|
popover: {
|
|
DEFAULT: "hsl(var(--popover))",
|
|
foreground: "hsl(var(--popover-foreground))",
|
|
},
|
|
brand: {
|
|
primary: "hsl(var(--brand-primary))",
|
|
secondary: "hsl(var(--brand-secondary))",
|
|
},
|
|
status: {
|
|
success: "hsl(var(--status-success))",
|
|
"success-soft": "hsl(var(--status-success-soft))",
|
|
warning: "hsl(var(--status-warning))",
|
|
"warning-soft": "hsl(var(--status-warning-soft))",
|
|
},
|
|
sidebar: {
|
|
DEFAULT: "hsl(var(--sidebar-background))",
|
|
foreground: "hsl(var(--sidebar-foreground))",
|
|
primary: "hsl(var(--sidebar-primary))",
|
|
"primary-foreground": "hsl(var(--sidebar-primary-foreground))",
|
|
accent: "hsl(var(--sidebar-accent))",
|
|
"accent-foreground": "hsl(var(--sidebar-accent-foreground))",
|
|
border: "hsl(var(--sidebar-border))",
|
|
ring: "hsl(var(--sidebar-ring))",
|
|
},
|
|
},
|
|
fontFamily: {
|
|
sans: ["var(--font-museo)", "Arial", "Helvetica", "sans-serif"],
|
|
latin: ["var(--font-museo)", "Arial", "Helvetica", "sans-serif"],
|
|
arabic: ["var(--font-dubai)", "Tahoma", "Arial", "sans-serif"],
|
|
},
|
|
fontSize: {
|
|
display: ["clamp(2.75rem, 8vw, 5.5rem)", { lineHeight: "0.95", letterSpacing: "-0.03em", fontWeight: "900" }],
|
|
h1: ["clamp(2.25rem, 5vw, 3.5rem)", { lineHeight: "1.05", letterSpacing: "-0.02em", fontWeight: "700" }],
|
|
h2: ["clamp(1.75rem, 3.5vw, 2.5rem)", { lineHeight: "1.1", letterSpacing: "-0.015em", fontWeight: "700" }],
|
|
h3: ["1.375rem", { lineHeight: "1.2", letterSpacing: "-0.01em", fontWeight: "700" }],
|
|
title: ["1.125rem", { lineHeight: "1.3", fontWeight: "500" }],
|
|
"body-lg": ["1.125rem", { lineHeight: "1.7", fontWeight: "400" }],
|
|
body: ["1rem", { lineHeight: "1.7", fontWeight: "400" }],
|
|
small: ["0.875rem", { lineHeight: "1.6" }],
|
|
caption: ["0.8125rem", { lineHeight: "1.5", fontWeight: "500" }],
|
|
overline: ["0.75rem", { lineHeight: "1.4", letterSpacing: "0.14em", fontWeight: "500" }],
|
|
},
|
|
borderRadius: {
|
|
sm: "var(--radius-nested)",
|
|
md: "var(--radius-nested)",
|
|
lg: "var(--radius-surface)",
|
|
xl: "var(--radius-surface)",
|
|
surface: "var(--radius-surface)",
|
|
nested: "var(--radius-nested)",
|
|
pill: "var(--radius-pill)",
|
|
},
|
|
boxShadow: {
|
|
xs: "var(--shadow-xs)",
|
|
sm: "var(--shadow-sm)",
|
|
md: "var(--shadow-md)",
|
|
lg: "var(--shadow-lg)",
|
|
card: "var(--shadow-card)",
|
|
panel: "var(--shadow-panel)",
|
|
sidebar: "var(--shadow-sidebar)",
|
|
},
|
|
maxWidth: {
|
|
narrow: "var(--container-narrow)",
|
|
layout: "var(--container-default)",
|
|
wide: "var(--container-wide)",
|
|
admin: "var(--container-admin)",
|
|
},
|
|
height: {
|
|
header: "var(--header-height)",
|
|
},
|
|
minHeight: {
|
|
header: "var(--header-height)",
|
|
},
|
|
spacing: {
|
|
section: "var(--section-space)",
|
|
"section-sm": "3rem",
|
|
"section-lg": "8rem",
|
|
content: "var(--content-space)",
|
|
},
|
|
backdropBlur: {
|
|
chrome: "18px",
|
|
},
|
|
},
|
|
},
|
|
plugins: [animate],
|
|
};
|
|
|
|
export default config;
|