Files
gooseek/backend/webui/tailwind.config.ts
home ab48a0632b
Some checks failed
Build and Deploy GooSeek / build-backend (push) Failing after 1m4s
Build and Deploy GooSeek / build-webui (push) Failing after 1m2s
Build and Deploy GooSeek / deploy (push) Has been skipped
feat: CI/CD pipeline + Learning/Medicine/Travel services
- Add Gitea Actions workflow for automated build & deploy
- Add K8s manifests: webui, travel-svc, medicine-svc, sandbox-svc
- Update kustomization for localhost:5000 registry
- Add ingress for gooseek.ru and api.gooseek.ru
- Learning cabinet with onboarding, courses, sandbox integration
- Medicine service with symptom analysis and doctor matching
- Travel service with itinerary planning
- Server setup scripts (NVIDIA/CUDA, K3s, Gitea runner)

Made-with: Cursor
2026-03-02 20:25:44 +03:00

164 lines
5.6 KiB
TypeScript

import type { Config } from 'tailwindcss';
const config: Config = {
content: [
'./src/**/*.{js,ts,jsx,tsx,mdx}',
],
theme: {
extend: {
colors: {
base: 'hsl(var(--bg-base))',
elevated: 'hsl(var(--bg-elevated))',
surface: 'hsl(var(--bg-surface))',
overlay: 'hsl(var(--bg-overlay))',
primary: 'hsl(var(--text-primary))',
secondary: 'hsl(var(--text-secondary))',
muted: 'hsl(var(--text-muted))',
faint: 'hsl(var(--text-faint))',
accent: {
DEFAULT: 'hsl(var(--accent))',
hover: 'hsl(var(--accent-hover))',
muted: 'hsl(var(--accent-muted))',
subtle: 'hsl(var(--accent-subtle))',
foreground: 'hsl(0 0% 100%)',
},
'accent-secondary': {
DEFAULT: 'hsl(var(--accent-secondary))',
muted: 'hsl(var(--accent-secondary-muted))',
},
success: {
DEFAULT: 'hsl(var(--success))',
muted: 'hsl(var(--success-muted))',
},
warning: {
DEFAULT: 'hsl(var(--warning))',
muted: 'hsl(var(--warning-muted))',
},
error: {
DEFAULT: 'hsl(var(--error))',
muted: 'hsl(var(--error-muted))',
},
border: {
DEFAULT: 'hsl(var(--border))',
hover: 'hsl(var(--border-hover))',
focus: 'hsl(var(--border-focus))',
},
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))',
},
destructive: {
DEFAULT: 'hsl(var(--destructive))',
foreground: 'hsl(var(--destructive-foreground))',
},
input: 'hsl(var(--input))',
ring: 'hsl(var(--ring))',
},
borderRadius: {
'2xl': '1rem',
'3xl': '1.5rem',
lg: 'var(--radius)',
md: 'calc(var(--radius) - 2px)',
sm: 'calc(var(--radius) - 4px)',
},
fontFamily: {
sans: ['Inter', 'system-ui', '-apple-system', 'sans-serif'],
mono: ['JetBrains Mono', 'Fira Code', 'SF Mono', 'Consolas', 'monospace'],
},
fontSize: {
'4xs': ['0.5rem', { lineHeight: '0.625rem' }], // 8px
'3xs': ['0.5625rem', { lineHeight: '0.75rem' }], // 9px
'2xs': ['0.625rem', { lineHeight: '0.875rem' }],
'xs': ['0.75rem', { lineHeight: '1rem' }],
ui: ['0.8125rem', { lineHeight: '1.125rem' }], // 13px
'ui-sm': ['0.6875rem', { lineHeight: '1rem' }], // 11px
'sm': ['0.875rem', { lineHeight: '1.25rem' }],
'base': ['0.9375rem', { lineHeight: '1.5rem' }],
'lg': ['1.0625rem', { lineHeight: '1.625rem' }],
},
spacing: {
'18': '4.5rem',
'22': '5.5rem',
'26': '6.5rem',
'30': '7.5rem',
},
backdropBlur: {
xs: '2px',
},
boxShadow: {
'glow-sm': '0 1px 6px hsl(224 64% 48% / 0.06)',
'glow-md': '0 2px 12px hsl(224 64% 48% / 0.1)',
'glow-lg': '0 4px 24px hsl(224 64% 48% / 0.14)',
'inner-glow': 'inset 0 1px 4px hsl(220 14% 50% / 0.06)',
'elevated': '0 1px 3px hsl(220 14% 50% / 0.06), 0 4px 16px hsl(220 14% 50% / 0.04)',
'card': '0 1px 3px hsl(220 14% 50% / 0.05), 0 1px 2px hsl(220 14% 50% / 0.03)',
'dropdown': '0 4px 24px hsl(220 14% 50% / 0.12), 0 1px 4px hsl(220 14% 50% / 0.06)',
},
keyframes: {
'fade-in': {
'0%': { opacity: '0', transform: 'translateY(4px)' },
'100%': { opacity: '1', transform: 'translateY(0)' },
},
'fade-in-up': {
'0%': { opacity: '0', transform: 'translateY(12px)' },
'100%': { opacity: '1', transform: 'translateY(0)' },
},
'slide-in-right': {
'0%': { opacity: '0', transform: 'translateX(-12px)' },
'100%': { opacity: '1', transform: 'translateX(0)' },
},
'slide-in-left': {
'0%': { opacity: '0', transform: 'translateX(12px)' },
'100%': { opacity: '1', transform: 'translateX(0)' },
},
'scale-in': {
'0%': { opacity: '0', transform: 'scale(0.95)' },
'100%': { opacity: '1', transform: 'scale(1)' },
},
'pulse-soft': {
'0%, 100%': { opacity: '1' },
'50%': { opacity: '0.7' },
},
shimmer: {
'0%': { backgroundPosition: '-200% 0' },
'100%': { backgroundPosition: '200% 0' },
},
'glow-pulse': {
'0%, 100%': { boxShadow: '0 2px 12px hsl(224 64% 48% / 0.08)' },
'50%': { boxShadow: '0 4px 20px hsl(224 64% 48% / 0.14)' },
},
'border-pulse': {
'0%, 100%': { borderColor: 'hsl(224 64% 48% / 0.2)' },
'50%': { borderColor: 'hsl(224 64% 48% / 0.35)' },
},
},
animation: {
'fade-in': 'fade-in 0.2s ease-out forwards',
'fade-in-up': 'fade-in-up 0.3s ease-out forwards',
'slide-in-right': 'slide-in-right 0.25s ease-out forwards',
'slide-in-left': 'slide-in-left 0.25s ease-out forwards',
'scale-in': 'scale-in 0.2s ease-out forwards',
'pulse-soft': 'pulse-soft 2s ease-in-out infinite',
shimmer: 'shimmer 1.5s linear infinite',
'glow-pulse': 'glow-pulse 2s ease-in-out infinite',
'border-pulse': 'border-pulse 2s ease-in-out infinite',
},
},
},
plugins: [],
};
export default config;