p-stream/tailwind.config.ts
2025-11-07 16:50:35 -07:00

72 lines
2.1 KiB
TypeScript

import { allThemes, defaultTheme, safeThemeList } from "./themes";
import type { Config } from "tailwindcss";
import plugin from "tailwindcss/plugin";
const themer = require("tailwindcss-themer");
const config: Config = {
content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"],
safelist: safeThemeList,
theme: {
extend: {
/* breakpoints */
screens: {
xs: "350px",
ssm: "400px",
"2xl": "1921px", // Custom breakpoint for screens at least 1920px wide
"3xl": "2650px", // Custom breakpoint for screens at least 2650px wide
"4xl": "3840px", // Custom breakpoint for screens at least 4096px wide
},
/* fonts */
fontFamily: {
main: "'DM Sans'", // "main": "'Open Sans'",
},
/* animations */
keyframes: {
"loading-pin": {
"0%, 40%, 100%": { height: "0.5em", "background-color": "#282336" },
"20%": { height: "1em", "background-color": "white" },
},
"fade-in": {
"0%": { opacity: "0" },
"100%": { opacity: "1" },
},
"seek-left": {
"0%": { transform: "translateX(0) scale(1)", opacity: "1" },
"100%": { transform: "translateX(-50px) scale(1.2)", opacity: "0" },
},
"seek-right": {
"0%": { transform: "translateX(0) scale(1)", opacity: "1" },
"100%": { transform: "translateX(50px) scale(1.2)", opacity: "0" },
},
},
animation: {
"loading-pin": "loading-pin 1.8s ease-in-out infinite",
"fade-in": "fade-in 200ms ease-out forwards",
"seek-left": "seek-left 0.5s cubic-bezier(0, 0, 0.2, 1) forwards",
"seek-right": "seek-right 0.5s cubic-bezier(0, 0, 0.2, 1) forwards",
},
},
},
plugins: [
require("tailwind-scrollbar"),
themer({
defaultTheme: defaultTheme,
themes: [
{
name: "default",
selectors: [".theme-default"],
...defaultTheme,
},
...allThemes,
],
}),
plugin(({ addVariant }) => {
addVariant("dir-neutral", "[dir] &");
}),
],
};
export default config;