colpali-vespa-visual-retrieval / src /tailwind.config.js
andreer's picture
Upload folder using huggingface_hub
2f08c82 verified
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")},
);
},
],
};