feat: GeoScene frontend POC + Docker deploy for remote host

Migrate maps to @geoscene/core, polish monitoring/alerts UX, fix timeline
basemap flicker and district alert regions, and ship compose/nginx Docker
deploy assets with CBPOA_ROOT data mounts.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-24 03:28:29 +08:00
parent fe8bed58f5
commit e22b004f9e
77 changed files with 3421 additions and 3589 deletions

View File

@@ -8,41 +8,73 @@ export default {
extend: {
colors: {
primary: {
DEFAULT: '#2563EB',
light: '#3B82F6',
muted: '#DBEAFE',
DEFAULT: '#0F766E',
light: '#14B8A6',
muted: '#CCFBF1',
deep: '#0D5C56',
},
mist: {
DEFAULT: '#5B8FA8',
light: '#E8F2F6',
deep: '#3D6B82',
},
success: {
DEFAULT: '#059669',
light: '#D1FAE5',
DEFAULT: '#0D9488',
light: '#CCFBF1',
},
warning: {
DEFAULT: '#D97706',
DEFAULT: '#C27803',
light: '#FEF3C7',
},
danger: {
DEFAULT: '#DC2626',
light: '#FEE2E2',
DEFAULT: '#C2410C',
light: '#FFEDD5',
},
bg: {
page: '#F8FAFC',
page: '#F0F4F6',
card: '#FFFFFF',
hover: '#F1F5F9',
active: '#E2E8F0',
hover: '#E8EEF1',
active: '#D8E4E9',
elevated: '#FAFCFD',
},
text: {
primary: '#1E293B',
secondary: '#64748B',
muted: '#94A3B8',
primary: '#1A2B33',
secondary: '#5A6F7A',
muted: '#8A9BA5',
},
border: {
DEFAULT: '#E2E8F0',
light: '#F1F5F9',
DEFAULT: '#D4DEE4',
light: '#E8EEF1',
},
},
fontFamily: {
sans: ['Inter', 'Noto Sans SC', 'system-ui', 'sans-serif'],
display: ['Source Sans Pro', 'sans-serif'],
sans: ['"Noto Sans SC"', '"Outfit"', 'sans-serif'],
display: ['"Outfit"', '"Noto Sans SC"', 'sans-serif'],
mono: ['"IBM Plex Mono"', 'ui-monospace', 'monospace'],
},
boxShadow: {
soft: '0 1px 2px rgba(26, 43, 51, 0.04), 0 4px 16px rgba(26, 43, 51, 0.05)',
lift: '0 2px 8px rgba(15, 118, 110, 0.08), 0 8px 24px rgba(26, 43, 51, 0.06)',
brand: '0 8px 32px rgba(15, 118, 110, 0.18)',
},
keyframes: {
'fade-up': {
'0%': { opacity: '0', transform: 'translateY(10px)' },
'100%': { opacity: '1', transform: 'translateY(0)' },
},
'fade-in': {
'0%': { opacity: '0' },
'100%': { opacity: '1' },
},
'breath': {
'0%, 100%': { opacity: '0.35' },
'50%': { opacity: '0.55' },
},
},
animation: {
'fade-up': 'fade-up 0.5s ease-out both',
'fade-in': 'fade-in 0.4s ease-out both',
breath: 'breath 8s ease-in-out infinite',
},
},
},