Spaces:
Running
on
T4
Running
on
T4
function filterDefault(values) { | |
return Object.fromEntries( | |
Object.entries(values).filter(([key]) => key !== "DEFAULT"), | |
); | |
} | |
/** @type {import('tailwindcss').Config} */ | |
export default { | |
darkMode: ["selector"], | |
content: [ | |
"./**/*.py", | |
"./.venv/lib/python3.12/site-packages/shad4fast/**/*.{py,js}", | |
], | |
theme: { | |
container: { | |
center: true, | |
padding: "2rem", | |
screens: { | |
"2xl": "1400px", | |
}, | |
}, | |
extend: { | |
animation: { | |
"accordion-down": "accordion-down 0.2s ease-out", | |
"accordion-up": "accordion-up 0.2s ease-out", | |
}, | |
animationDelay: ({theme}) => ({ | |
...theme("transitionDelay"), | |
}), | |
animationDuration: ({theme}) => ({ | |
0: "0ms", | |
...theme("transitionDuration"), | |
}), | |
animationTimingFunction: ({theme}) => ({ | |
...theme("transitionTimingFunction"), | |
}), | |
animationFillMode: { | |
none: "none", | |
forwards: "forwards", | |
backwards: "backwards", | |
both: "both", | |
}, | |
animationDirection: { | |
normal: "normal", | |
reverse: "reverse", | |
alternate: "alternate", | |
"alternate-reverse": "alternate-reverse", | |
}, | |
animationOpacity: ({theme}) => ({ | |
DEFAULT: 0, | |
...theme("opacity"), | |
}), | |
animationTranslate: ({theme}) => ({ | |
DEFAULT: "100%", | |
...theme("translate"), | |
}), | |
animationScale: ({theme}) => ({ | |
DEFAULT: 0, | |
...theme("scale"), | |
}), | |
animationRotate: ({theme}) => ({ | |
DEFAULT: "30deg", | |
...theme("rotate"), | |
}), | |
animationRepeat: { | |
0: "0", | |
1: "1", | |
infinite: "infinite", | |
}, | |
keyframes: { | |
enter: { | |
from: { | |
opacity: "var(--tw-enter-opacity, 1)", | |
transform: | |
"translate3d(var(--tw-enter-translate-x, 0), var(--tw-enter-translate-y, 0), 0) scale3d(var(--tw-enter-scale, 1), var(--tw-enter-scale, 1), var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0))", | |
}, | |
}, | |
exit: { | |
to: { | |
opacity: "var(--tw-exit-opacity, 1)", | |
transform: | |
"translate3d(var(--tw-exit-translate-x, 0), var(--tw-exit-translate-y, 0), 0) scale3d(var(--tw-exit-scale, 1), var(--tw-exit-scale, 1), var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0))", | |
}, | |
}, | |
}, | |
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))", | |
}, | |
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: { | |
lg: `var(--radius)`, | |
md: `calc(var(--radius) - 2px)`, | |
sm: "calc(var(--radius) - 4px)", | |
}, | |
}, | |
}, | |
plugins: [ | |
function ({addUtilities, matchUtilities, theme}) { | |
addUtilities({ | |
"@keyframes enter": theme("keyframes.enter"), | |
"@keyframes exit": theme("keyframes.exit"), | |
".animate-in": { | |
animationName: "enter", | |
animationDuration: theme("animationDuration.DEFAULT"), | |
"--tw-enter-opacity": "initial", | |
"--tw-enter-scale": "initial", | |
"--tw-enter-rotate": "initial", | |
"--tw-enter-translate-x": "initial", | |
"--tw-enter-translate-y": "initial", | |
}, | |
".animate-out": { | |
animationName: "exit", | |
animationDuration: theme("animationDuration.DEFAULT"), | |
"--tw-exit-opacity": "initial", | |
"--tw-exit-scale": "initial", | |
"--tw-exit-rotate": "initial", | |
"--tw-exit-translate-x": "initial", | |
"--tw-exit-translate-y": "initial", | |
}, | |
}); | |
matchUtilities( | |
{ | |
"fade-in": (value) => ({"--tw-enter-opacity": value}), | |
"fade-out": (value) => ({"--tw-exit-opacity": value}), | |
}, | |
{values: theme("animationOpacity")}, | |
); | |
matchUtilities( | |
{ | |
"zoom-in": (value) => ({"--tw-enter-scale": value}), | |
"zoom-out": (value) => ({"--tw-exit-scale": value}), | |
}, | |
{values: theme("animationScale")}, | |
); | |
matchUtilities( | |
{ | |
"spin-in": (value) => ({"--tw-enter-rotate": value}), | |
"spin-out": (value) => ({"--tw-exit-rotate": value}), | |
}, | |
{values: theme("animationRotate")}, | |
); | |
matchUtilities( | |
{ | |
"slide-in-from-top": (value) => ({ | |
"--tw-enter-translate-y": `-${value}`, | |
}), | |
"slide-in-from-bottom": (value) => ({ | |
"--tw-enter-translate-y": value, | |
}), | |
"slide-in-from-left": (value) => ({ | |
"--tw-enter-translate-x": `-${value}`, | |
}), | |
"slide-in-from-right": (value) => ({ | |
"--tw-enter-translate-x": value, | |
}), | |
"slide-out-to-top": (value) => ({ | |
"--tw-exit-translate-y": `-${value}`, | |
}), | |
"slide-out-to-bottom": (value) => ({ | |
"--tw-exit-translate-y": value, | |
}), | |
"slide-out-to-left": (value) => ({ | |
"--tw-exit-translate-x": `-${value}`, | |
}), | |
"slide-out-to-right": (value) => ({ | |
"--tw-exit-translate-x": value, | |
}), | |
}, | |
{values: theme("animationTranslate")}, | |
); | |
matchUtilities( | |
{duration: (value) => ({animationDuration: value})}, | |
{values: filterDefault(theme("animationDuration"))}, | |
); | |
matchUtilities( | |
{delay: (value) => ({animationDelay: value})}, | |
{values: theme("animationDelay")}, | |
); | |
matchUtilities( | |
{ease: (value) => ({animationTimingFunction: value})}, | |
{values: filterDefault(theme("animationTimingFunction"))}, | |
); | |
addUtilities({ | |
".running": {animationPlayState: "running"}, | |
".paused": {animationPlayState: "paused"}, | |
}); | |
matchUtilities( | |
{"fill-mode": (value) => ({animationFillMode: value})}, | |
{values: theme("animationFillMode")}, | |
); | |
matchUtilities( | |
{direction: (value) => ({animationDirection: value})}, | |
{values: theme("animationDirection")}, | |
); | |
matchUtilities( | |
{repeat: (value) => ({animationIterationCount: value})}, | |
{values: theme("animationRepeat")}, | |
); | |
}, | |
], | |
}; | |