/** * @file tailwind.config.js * @description Tailwind CSS configuration — content globs and the dashboard's * dark/light color tokens. Token values live in `src/index.css` as CSS * variables (`:root` = light, `.dark` = dark); this file only wires Tailwind * class names to them. RGB-triplet vars (not hex) so `` keeps * opacity modifiers like `bg-surface-2/70` working under either theme. * @author Nguyễn Ngọc Trí Vĩ */ /** @type {import('tailwindcss').Config} */ export default { darkMode: "class", content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"], theme: { extend: { colors: { surface: { 0: "rgb(var(--surface-0) / )", 1: "rgb(var(--surface-1) / )", 2: "rgb(var(--surface-2) / )", 3: "rgb(var(--surface-3) / )", 4: "rgb(var(--surface-4) / )", 5: "rgb(var(--surface-5) / )", }, border: { DEFAULT: "rgb(var(--border) / )", light: "rgb(var(--border-light) / )", }, accent: { DEFAULT: "rgb(var(--accent) / )", hover: "rgb(var(--accent-hover) / )", muted: "rgb(var(--accent) / 0.15)", }, fg: { primary: "rgb(var(--fg-primary) / )", secondary: "rgb(var(--fg-secondary) / )", muted: "rgb(var(--fg-muted) / )", }, status: { success: "rgb(var(--status-success) / )", danger: "rgb(var(--status-danger) / )", warning: "rgb(var(--status-warning) / )", }, }, fontFamily: { sans: ["Inter", "-apple-system", "BlinkMacSystemFont", "Segoe UI", "sans-serif"], mono: ["JetBrains Mono", "Fira Code", "Consolas", "monospace"], }, animation: { "pulse-slow": "pulse 3s cubic-bezier(0.4, 0, 0.6, 1) infinite", "fade-in": "fadeIn 0.3s ease-out", "slide-up": "slideUp 0.3s ease-out", }, keyframes: { fadeIn: { "0%": { opacity: "0" }, "100%": { opacity: "1" }, }, slideUp: { "0%": { opacity: "0", transform: "translateY(8px)" }, "100%": { opacity: "1", transform: "translateY(0)" }, }, }, }, }, plugins: [], };