import { createPreset } from "fumadocs-ui/tailwind-plugin"; import defaultTheme from "tailwindcss/defaultTheme"; const colors = require("tailwindcss/colors"); const { default: flattenColorPalette, } = require("tailwindcss/lib/util/flattenColorPalette"); const svgToDataUri = require("mini-svg-data-uri"); /** @type {import('tailwindcss').Config} */ export default { darkMode: ["class"], content: [ "./components/**/*.{ts,tsx}", "./app/**/*.{ts,tsx}", "./content/**/*.{md,mdx}", "../node_modules/fumadocs-ui/dist/**/*.js", '../node_modules/fumadocs-openapi/dist/**/*.js', ], presets: [ createPreset({ preset: "dusk", }), ], plugins: [ require("tailwindcss-animate"), addVariablesForColors, function ({ matchUtilities, theme }) { matchUtilities( { "bg-grid": (value) => ({ backgroundImage: `url("${svgToDataUri( ``, )}")`, }), "bg-grid-small": (value) => ({ backgroundImage: `url("${svgToDataUri( ``, )}")`, }), "bg-dot": (value) => ({ backgroundImage: `url("${svgToDataUri( ``, )}")`, }), }, { values: flattenColorPalette(theme("backgroundColor")), type: "color", }, ); }, ], theme: { extend: { fontFamily: { sans: ["var(--font-geist-sans)"], mono: ["var(--font-geist-mono)"], display: [...defaultTheme.fontFamily.sans], }, borderRadius: { lg: "var(--radius)", md: "calc(var(--radius) - 2px)", sm: "calc(var(--radius) - 4px)", }, colors: { 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))", chart: { 1: "hsl(var(--chart-1))", 2: "hsl(var(--chart-2))", 3: "hsl(var(--chart-3))", 4: "hsl(var(--chart-4))", 5: "hsl(var(--chart-5))", }, }, keyframes: { marquee: { from: { transform: "translateX(0)" }, to: { transform: "translateX(calc(-100% - var(--gap)))" }, }, "marquee-vertical": { from: { transform: "translateY(0)" }, to: { transform: "translateY(calc(-100% - var(--gap)))" }, }, "hrtl-scroll": { from: { transform: "translateX(0)" }, to: { transform: "translateX(calc(-95%))" }, }, "hrtl-scroll-reverse": { from: { transform: "translateX(calc(-95%))" }, to: { transform: "translateX(0)" }, }, ripple: { "0% , 100%": { transform: "translate(-50% , -50%) scale(1)", }, "50%": { transform: "translate(-50% , -50%) scale(0.9)", }, }, "accordion-down": { from: { height: "0", }, to: { height: "var(--radix-accordion-content-height)", }, }, "accordion-up": { from: { height: "var(--radix-accordion-content-height)", }, to: { height: "0", }, }, scroll: { to: { transform: "translate(calc(-50% - 0.5rem))", }, }, }, animation: { "accordion-down": "accordion-down 0.2s ease-out", "accordion-up": "accordion-up 0.2s ease-out", ripple: "ripple var(--duration,2s) ease calc(var(--i, 0)*.2s) infinite", scroll: "scroll var(--animation-duration, 40s) var(--animation-direction, forwards) linear infinite", "hrtl-scroll": "hrtl-scroll var(--anime-duration,10s) linear infinite", "hrtl-scroll-reverse": "hrtl-scroll-reverse var(--anime-duration,10s) linear infinite", }, }, }, }; function addVariablesForColors({ addBase, theme }) { let allColors = flattenColorPalette(theme("colors")); let newVars = Object.fromEntries( Object.entries(allColors).map(([key, val]) => [`--${key}`, val]), ); addBase({ ":root": newVars, }); }