Files
shelfless/tailwind.config.js
Scarriffle 83d8b7b99d Initial commit: Shelfless – alternative Audiobookshelf frontend
React + Vite + TypeScript SPA covering the full ABS feature set (library
browsing, item detail, metadata/cover editing, podcasts, player with session
sync, admin: users/libraries/scanner/server settings). Dev uses a dynamic
CORS proxy; production is served by server/index.mjs (static + reverse proxy
to ABS_URL). Includes systemd unit and installer under deploy/.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-02 20:23:04 +02:00

54 lines
1.6 KiB
JavaScript

/** @type {import('tailwindcss').Config} */
export default {
content: ['./index.html', './src/**/*.{ts,tsx}'],
theme: {
extend: {
colors: {
bg: 'var(--bg)',
surface: 'var(--surface)',
'surface-2': 'var(--surface-2)',
border: 'var(--border)',
text: 'var(--text)',
'text-muted': 'var(--text-muted)',
accent: 'var(--accent)',
'accent-soft': 'var(--accent-soft)',
'on-accent': 'var(--on-accent)',
destructive: 'var(--destructive)',
success: 'var(--success)',
},
fontFamily: {
heading: ['"Fraunces Variable"', 'Fraunces', 'ui-serif', 'Georgia', 'serif'],
sans: ['"Hanken Grotesk Variable"', '"Hanken Grotesk"', 'ui-sans-serif', 'system-ui', 'sans-serif'],
},
borderRadius: {
DEFAULT: 'var(--radius)',
lg: 'calc(var(--radius) + 4px)',
xl: 'calc(var(--radius) + 8px)',
},
boxShadow: {
card: '0 1px 2px rgba(0,0,0,0.4), 0 8px 24px -12px rgba(0,0,0,0.6)',
lift: '0 12px 32px -8px rgba(0,0,0,0.7)',
bar: '0 -8px 24px -12px rgba(0,0,0,0.8)',
},
keyframes: {
'slide-up': {
from: { transform: 'translateY(100%)', opacity: '0' },
to: { transform: 'translateY(0)', opacity: '1' },
},
'fade-in': {
from: { opacity: '0' },
to: { opacity: '1' },
},
shimmer: {
'100%': { transform: 'translateX(100%)' },
},
},
animation: {
'slide-up': 'slide-up 280ms cubic-bezier(0.16, 1, 0.3, 1)',
'fade-in': 'fade-in 200ms ease-out',
},
},
},
plugins: [],
}