Files
codeaashu-claude-code/web/tailwind.config.ts
ashutoshpythoncs@gmail.com b564857c0b claude-code
2026-03-31 18:58:05 +05:30

203 lines
5.9 KiB
TypeScript

import type { Config } from "tailwindcss";
const config: Config = {
// Dark is the default; light mode activates when `.light` is NOT absent (i.e. dark when no `.light` class)
darkMode: ["selector", ":root:not(.light)"],
content: [
"./pages/**/*.{js,ts,jsx,tsx,mdx}",
"./components/**/*.{js,ts,jsx,tsx,mdx}",
"./app/**/*.{js,ts,jsx,tsx,mdx}",
"./lib/**/*.{js,ts,jsx,tsx}",
],
theme: {
extend: {
colors: {
// Semantic tokens — reference CSS custom properties
background: "hsl(var(--background))",
foreground: "hsl(var(--foreground))",
card: {
DEFAULT: "hsl(var(--card))",
foreground: "hsl(var(--card-foreground))",
},
popover: {
DEFAULT: "hsl(var(--popover))",
foreground: "hsl(var(--popover-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))",
},
border: "hsl(var(--border))",
input: "hsl(var(--input))",
ring: "hsl(var(--ring))",
// Direct CSS var tokens (non-HSL)
canvas: {
DEFAULT: "var(--color-bg-primary)",
secondary: "var(--color-bg-secondary)",
elevated: "var(--color-bg-elevated)",
},
ink: {
DEFAULT: "var(--color-text-primary)",
secondary: "var(--color-text-secondary)",
muted: "var(--color-text-muted)",
},
"brand-accent": {
DEFAULT: "var(--color-accent)",
hover: "var(--color-accent-hover)",
active: "var(--color-accent-active)",
fg: "var(--color-accent-foreground)",
},
edge: {
DEFAULT: "var(--color-border)",
hover: "var(--color-border-hover)",
},
success: {
DEFAULT: "var(--color-success)",
bg: "var(--color-success-bg)",
},
warning: {
DEFAULT: "var(--color-warning)",
bg: "var(--color-warning-bg)",
},
error: {
DEFAULT: "var(--color-error)",
bg: "var(--color-error-bg)",
},
info: {
DEFAULT: "var(--color-info)",
bg: "var(--color-info-bg)",
},
"code-surface": {
DEFAULT: "var(--color-code-bg)",
text: "var(--color-code-text)",
},
// Brand palette
brand: {
50: "#f5f3ff",
100: "#ede9fe",
200: "#ddd6fe",
300: "#c4b5fd",
400: "#a78bfa",
500: "#8b5cf6",
600: "#7c3aed",
700: "#6d28d9",
800: "#5b21b6",
900: "#4c1d95",
950: "#2e1065",
},
// Surface (neutral) palette
surface: {
50: "#fafafa",
100: "#f4f4f5",
200: "#e4e4e7",
300: "#d4d4d8",
400: "#a1a1aa",
500: "#71717a",
600: "#52525b",
700: "#3f3f46",
800: "#27272a",
850: "#1f1f23",
900: "#18181b",
950: "#09090b",
},
},
fontFamily: {
sans: ["var(--font-inter)", "system-ui", "sans-serif"],
mono: ["var(--font-jetbrains-mono)", "ui-monospace", "monospace"],
},
borderRadius: {
lg: "var(--radius)",
md: "calc(var(--radius) - 2px)",
sm: "calc(var(--radius) - 4px)",
},
transitionDuration: {
fast: "100ms",
normal: "200ms",
slow: "300ms",
},
animation: {
"fade-in": "fadeIn 200ms ease forwards",
"fade-out": "fadeOut 200ms ease forwards",
"slide-up": "slideUp 300ms ease forwards",
"slide-down": "slideDown 300ms ease forwards",
"slide-down-out": "slideDownOut 300ms ease forwards",
"scale-in": "scaleIn 200ms ease forwards",
"scale-out": "scaleOut 200ms ease forwards",
shimmer: "shimmer 2s linear infinite",
spin: "spin 1s linear infinite",
"pulse-soft": "pulseSoft 2s cubic-bezier(0.4, 0, 0.6, 1) infinite",
"progress-bar": "progress linear forwards",
},
keyframes: {
fadeIn: {
"0%": { opacity: "0" },
"100%": { opacity: "1" },
},
fadeOut: {
"0%": { opacity: "1" },
"100%": { opacity: "0" },
},
slideUp: {
"0%": { transform: "translateY(8px)", opacity: "0" },
"100%": { transform: "translateY(0)", opacity: "1" },
},
slideDown: {
"0%": { transform: "translateY(-8px)", opacity: "0" },
"100%": { transform: "translateY(0)", opacity: "1" },
},
slideDownOut: {
"0%": { transform: "translateY(0)", opacity: "1" },
"100%": { transform: "translateY(8px)", opacity: "0" },
},
scaleIn: {
"0%": { transform: "scale(0.95)", opacity: "0" },
"100%": { transform: "scale(1)", opacity: "1" },
},
scaleOut: {
"0%": { transform: "scale(1)", opacity: "1" },
"100%": { transform: "scale(0.95)", opacity: "0" },
},
shimmer: {
"0%": { backgroundPosition: "-200% 0" },
"100%": { backgroundPosition: "200% 0" },
},
pulseSoft: {
"0%, 100%": { opacity: "1" },
"50%": { opacity: "0.5" },
},
progress: {
from: { transform: "scaleX(1)" },
to: { transform: "scaleX(0)" },
},
},
},
},
plugins: [],
};
export default config;