2026-05-03 19:51:57 -05:00
|
|
|
/** @type {import('tailwindcss').Config} */
|
|
|
|
|
module.exports = {
|
|
|
|
|
darkMode: ['class'],
|
|
|
|
|
content: ['./index.html', './client/**/*.{js,jsx}'],
|
|
|
|
|
theme: {
|
|
|
|
|
container: { center: true, padding: '2rem', screens: { '2xl': '1400px' } },
|
|
|
|
|
extend: {
|
|
|
|
|
colors: {
|
|
|
|
|
border: 'oklch(var(--border) / <alpha-value>)',
|
|
|
|
|
input: 'oklch(var(--input) / <alpha-value>)',
|
|
|
|
|
ring: 'oklch(var(--ring) / <alpha-value>)',
|
|
|
|
|
background: 'oklch(var(--background) / <alpha-value>)',
|
|
|
|
|
foreground: 'oklch(var(--foreground) / <alpha-value>)',
|
|
|
|
|
primary: {
|
|
|
|
|
DEFAULT: 'oklch(var(--primary) / <alpha-value>)',
|
|
|
|
|
foreground: 'oklch(var(--primary-foreground) / <alpha-value>)',
|
|
|
|
|
},
|
|
|
|
|
secondary: {
|
|
|
|
|
DEFAULT: 'oklch(var(--secondary) / <alpha-value>)',
|
|
|
|
|
foreground: 'oklch(var(--secondary-foreground) / <alpha-value>)',
|
|
|
|
|
},
|
|
|
|
|
destructive: {
|
|
|
|
|
DEFAULT: 'oklch(var(--destructive) / <alpha-value>)',
|
|
|
|
|
foreground: 'oklch(var(--destructive-foreground) / <alpha-value>)',
|
|
|
|
|
},
|
|
|
|
|
muted: {
|
|
|
|
|
DEFAULT: 'oklch(var(--muted) / <alpha-value>)',
|
|
|
|
|
foreground: 'oklch(var(--muted-foreground) / <alpha-value>)',
|
|
|
|
|
},
|
|
|
|
|
accent: {
|
|
|
|
|
DEFAULT: 'oklch(var(--accent) / <alpha-value>)',
|
|
|
|
|
foreground: 'oklch(var(--accent-foreground) / <alpha-value>)',
|
|
|
|
|
},
|
|
|
|
|
popover: {
|
|
|
|
|
DEFAULT: 'oklch(var(--popover) / <alpha-value>)',
|
|
|
|
|
foreground: 'oklch(var(--popover-foreground) / <alpha-value>)',
|
|
|
|
|
},
|
|
|
|
|
card: {
|
|
|
|
|
DEFAULT: 'oklch(var(--card) / <alpha-value>)',
|
|
|
|
|
foreground: 'oklch(var(--card-foreground) / <alpha-value>)',
|
|
|
|
|
},
|
|
|
|
|
sidebar: {
|
|
|
|
|
DEFAULT: 'oklch(var(--sidebar) / <alpha-value>)',
|
|
|
|
|
foreground: 'oklch(var(--sidebar-foreground) / <alpha-value>)',
|
|
|
|
|
primary: 'oklch(var(--sidebar-primary) / <alpha-value>)',
|
|
|
|
|
accent: 'oklch(var(--sidebar-accent) / <alpha-value>)',
|
|
|
|
|
border: 'oklch(var(--sidebar-border) / <alpha-value>)',
|
|
|
|
|
ring: 'oklch(var(--sidebar-ring) / <alpha-value>)',
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
fontFamily: {
|
|
|
|
|
sans: ['var(--font-sans)', 'ui-sans-serif', 'system-ui', 'sans-serif'],
|
|
|
|
|
serif: ['var(--font-serif)', 'ui-serif', 'Georgia', 'serif'],
|
|
|
|
|
mono: ['var(--font-mono)', 'ui-monospace', 'SFMono-Regular', 'monospace'],
|
|
|
|
|
},
|
|
|
|
|
borderRadius: {
|
|
|
|
|
lg: 'var(--radius)',
|
|
|
|
|
md: 'calc(var(--radius) - 2px)',
|
|
|
|
|
sm: 'calc(var(--radius) - 4px)',
|
|
|
|
|
},
|
|
|
|
|
keyframes: {
|
|
|
|
|
'accordion-down': { from: { height: '0' }, to: { height: 'var(--radix-accordion-content-height)' } },
|
|
|
|
|
'accordion-up': { from: { height: 'var(--radix-accordion-content-height)' }, to: { height: '0' } },
|
v0.25.0: roadmap redesign, import CSRF fix, AdminDashboard removed
- RoadmapPage: kanban-style priority lanes, shadcn Collapsible/Tabs,
lazy-loaded activity log, admin-only /api/about/roadmap + /dev-log endpoints
- Import CSRF fix: added x-csrf-token header to importAdminBackup,
previewSpreadsheetImport, previewUserDbImport raw fetch() calls
- Removed AdminDashboard.jsx, replaced by RoadmapPage
- Added @radix-ui/react-collapsible + collapsible shadcn component
- Security audit by Private_Hudson: PASS (CSRF fix verified,
admin endpoints gated, path traversal mitigated, XSS safe)
2026-05-11 21:42:36 -05:00
|
|
|
'collapsible-down': { from: { height: '0' }, to: { height: 'var(--radix-collapsible-content-height)' } },
|
|
|
|
|
'collapsible-up': { from: { height: 'var(--radix-collapsible-content-height)' }, to: { height: '0' } },
|
2026-05-03 19:51:57 -05:00
|
|
|
},
|
|
|
|
|
animation: {
|
|
|
|
|
'accordion-down': 'accordion-down 0.2s ease-out',
|
|
|
|
|
'accordion-up': 'accordion-up 0.2s ease-out',
|
v0.25.0: roadmap redesign, import CSRF fix, AdminDashboard removed
- RoadmapPage: kanban-style priority lanes, shadcn Collapsible/Tabs,
lazy-loaded activity log, admin-only /api/about/roadmap + /dev-log endpoints
- Import CSRF fix: added x-csrf-token header to importAdminBackup,
previewSpreadsheetImport, previewUserDbImport raw fetch() calls
- Removed AdminDashboard.jsx, replaced by RoadmapPage
- Added @radix-ui/react-collapsible + collapsible shadcn component
- Security audit by Private_Hudson: PASS (CSRF fix verified,
admin endpoints gated, path traversal mitigated, XSS safe)
2026-05-11 21:42:36 -05:00
|
|
|
'collapsible-down': 'collapsible-down 0.2s ease-out',
|
|
|
|
|
'collapsible-up': 'collapsible-up 0.2s ease-out',
|
2026-05-03 19:51:57 -05:00
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
plugins: [require('tailwindcss-animate')],
|
|
|
|
|
};
|