trailbase/crates/assets/js/admin/tailwind.config.ts
2025-08-07 10:02:32 +02:00

133 lines
3.6 KiB
TypeScript

import animate from "tailwindcss-animate";
import typography from "@tailwindcss/typography";
import type { Config } from "tailwindcss";
import { fontFamily } from "tailwindcss/defaultTheme";
const solidUiPreset = {
darkMode: ["class", '[data-kb-theme="dark"]'],
theme: {
container: {
center: true,
padding: "2rem",
screens: {
"2xl": "1400px",
},
},
extend: {
colors: {
border: "hsl(var(--border))",
input: "hsl(var(--input))",
ring: "hsl(var(--ring))",
background: "hsl(var(--background))",
foreground: "hsl(var(--foreground))",
primary: {
DEFAULT: "hsl(var(--primary))",
foreground: "hsl(var(--primary-foreground))",
},
secondary: {
DEFAULT: "hsl(var(--secondary))",
foreground: "hsl(var(--secondary-foreground))",
},
destructive: {
DEFAULT: "hsl(var(--destructive))",
foreground: "hsl(var(--destructive-foreground))",
},
info: {
DEFAULT: "hsl(var(--info))",
foreground: "hsl(var(--info-foreground))",
},
success: {
DEFAULT: "hsl(var(--success))",
foreground: "hsl(var(--success-foreground))",
},
warning: {
DEFAULT: "hsl(var(--warning))",
foreground: "hsl(var(--warning-foreground))",
},
error: {
DEFAULT: "hsl(var(--error))",
foreground: "hsl(var(--error-foreground))",
},
muted: {
DEFAULT: "hsl(var(--muted))",
foreground: "hsl(var(--muted-foreground))",
},
accent: {
DEFAULT: "hsl(var(--accent))",
foreground: "hsl(var(--accent-foreground))",
},
popover: {
DEFAULT: "hsl(var(--popover))",
foreground: "hsl(var(--popover-foreground))",
},
card: {
DEFAULT: "hsl(var(--card))",
foreground: "hsl(var(--card-foreground))",
},
},
borderRadius: {
xl: "calc(var(--radius) + 4px)",
lg: "var(--radius)",
md: "calc(var(--radius) - 2px)",
sm: "calc(var(--radius) - 4px)",
},
fontFamily: {
sans: ["Inter", ...fontFamily.sans],
},
keyframes: {
"accordion-down": {
from: { height: "0" },
to: { height: "var(--kb-accordion-content-height)" },
},
"accordion-up": {
from: { height: "var(--kb-accordion-content-height)" },
to: { height: "0" },
},
"content-show": {
from: { opacity: "0", transform: "scale(0.96)" },
to: { opacity: "1", transform: "scale(1)" },
},
"content-hide": {
from: { opacity: "1", transform: "scale(1)" },
to: { opacity: "0", transform: "scale(0.96)" },
},
},
animation: {
"accordion-down": "accordion-down 0.2s ease-out",
"accordion-up": "accordion-up 0.2s ease-out",
"content-show": "content-show 0.2s ease-out",
"content-hide": "content-hide 0.2s ease-out",
},
},
},
} satisfies Partial<Config>;
// Colors from starlight.
const accent = {
200: "#92d1fe",
600: "#0073aa",
900: "#003653",
950: "#00273d",
};
const gray = {
100: "#f3f7f9",
200: "#e7eff2",
300: "#bac4c8",
400: "#7b8f96",
500: "#495c62",
700: "#2a3b41",
800: "#182a2f",
900: "#121a1c",
};
export default {
content: ["./src/**/*.{astro,html,js,jsx,md,mdx,ts,tsx}"],
presets: [solidUiPreset],
theme: {
extend: {
colors: { accent, gray },
},
},
plugins: [animate, typography],
} satisfies Config;