React/TypeScript/Vite/Tailwind prototype from the design session (login, dashboard, photos, backups, settings views with mocked API layer). Infra work (Rust services, Ansible, OpenTofu) follows in subsequent commits. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
59 lines
1.7 KiB
JavaScript
59 lines
1.7 KiB
JavaScript
/**
|
|
* Design tokens for Tripoli Cloud, centralized here so components never
|
|
* hardcode colors, radii or spacing inline. Values mirror the validated
|
|
* Claude Design prototype (`project/Tripoli Cloud.dc.html`).
|
|
*
|
|
* Surface/text colors resolve through CSS variables (see src/index.css) so
|
|
* the same class (e.g. `bg-panel`) renders correctly in both themes without
|
|
* a `dark:` variant on every element. Theme switching itself still goes
|
|
* through Tailwind's `dark` class strategy on <html>.
|
|
* @type {import('tailwindcss').Config}
|
|
*/
|
|
export default {
|
|
darkMode: 'class',
|
|
content: ['./index.html', './src/**/*.{js,ts,jsx,tsx}'],
|
|
theme: {
|
|
extend: {
|
|
fontFamily: {
|
|
sans: ['Manrope', 'system-ui', 'sans-serif'],
|
|
},
|
|
colors: {
|
|
brand: {
|
|
from: '#5b8cff',
|
|
to: '#7c5cff',
|
|
DEFAULT: '#5b8cff',
|
|
soft: '#7ba4ff',
|
|
},
|
|
success: '#4ade80',
|
|
danger: '#ff8f7a',
|
|
violet: '#b39dff',
|
|
bg: 'var(--tc-bg)',
|
|
panel: 'var(--tc-panel)',
|
|
panel2: 'var(--tc-panel-2)',
|
|
line: 'var(--tc-line)',
|
|
field: 'var(--tc-field)',
|
|
selected: 'var(--tc-selected)',
|
|
ink: {
|
|
DEFAULT: 'var(--tc-ink)',
|
|
soft: 'var(--tc-ink-2)',
|
|
},
|
|
},
|
|
backgroundImage: {
|
|
'brand-gradient': 'linear-gradient(135deg, #5b8cff 0%, #7c5cff 100%)',
|
|
},
|
|
borderRadius: {
|
|
card: '16px',
|
|
panel: '18px',
|
|
modal: '14px',
|
|
},
|
|
boxShadow: {
|
|
tc: 'var(--tc-shadow)',
|
|
},
|
|
screens: {
|
|
// Explicit alias for the prototype's documented breakpoint.
|
|
mobile: { max: '767px' },
|
|
},
|
|
},
|
|
},
|
|
plugins: [],
|
|
}
|