feat: travel service with 2GIS routing, POI, hotels + finance providers + UI overhaul
- Add travel-svc microservice (Amadeus, TravelPayouts, 2GIS, OpenRouteService) - Add travel orchestrator with parallel collectors (events, POI, hotels, flights) - Add 2GIS road routing with transport cost calculation (car/bus/taxi) - Add TravelMap (2GIS MapGL) and TravelWidgets components - Add useTravelChat hook for streaming travel agent responses - Add finance heatmap providers refactor - Add SearXNG settings, API proxy routes, Docker compose updates - Update Dockerfiles, config, types, and all UI pages for consistency Made-with: Cursor
This commit is contained in:
@@ -7,19 +7,16 @@ const config: Config = {
|
||||
theme: {
|
||||
extend: {
|
||||
colors: {
|
||||
/* Cursor IDE 2026 Color Palette */
|
||||
base: 'hsl(var(--bg-base))',
|
||||
elevated: 'hsl(var(--bg-elevated))',
|
||||
surface: 'hsl(var(--bg-surface))',
|
||||
overlay: 'hsl(var(--bg-overlay))',
|
||||
|
||||
/* Text colors */
|
||||
primary: 'hsl(var(--text-primary))',
|
||||
secondary: 'hsl(var(--text-secondary))',
|
||||
muted: 'hsl(var(--text-muted))',
|
||||
faint: 'hsl(var(--text-faint))',
|
||||
|
||||
/* Accent colors */
|
||||
accent: {
|
||||
DEFAULT: 'hsl(var(--accent))',
|
||||
hover: 'hsl(var(--accent-hover))',
|
||||
@@ -33,7 +30,6 @@ const config: Config = {
|
||||
muted: 'hsl(var(--accent-secondary-muted))',
|
||||
},
|
||||
|
||||
/* Semantic colors */
|
||||
success: {
|
||||
DEFAULT: 'hsl(var(--success))',
|
||||
muted: 'hsl(var(--success-muted))',
|
||||
@@ -47,14 +43,12 @@ const config: Config = {
|
||||
muted: 'hsl(var(--error-muted))',
|
||||
},
|
||||
|
||||
/* Border colors */
|
||||
border: {
|
||||
DEFAULT: 'hsl(var(--border))',
|
||||
hover: 'hsl(var(--border-hover))',
|
||||
focus: 'hsl(var(--border-focus))',
|
||||
},
|
||||
|
||||
/* Legacy mappings */
|
||||
background: 'hsl(var(--background))',
|
||||
foreground: 'hsl(var(--foreground))',
|
||||
card: {
|
||||
@@ -100,13 +94,13 @@ const config: Config = {
|
||||
xs: '2px',
|
||||
},
|
||||
boxShadow: {
|
||||
'glow-sm': '0 0 10px hsl(239 84% 67% / 0.1)',
|
||||
'glow-md': '0 0 20px hsl(239 84% 67% / 0.15)',
|
||||
'glow-lg': '0 0 40px hsl(239 84% 67% / 0.2)',
|
||||
'inner-glow': 'inset 0 0 20px hsl(240 6% 12% / 0.5)',
|
||||
'elevated': '0 4px 20px hsl(240 6% 4% / 0.4), 0 0 1px hsl(240 5% 20% / 0.5)',
|
||||
'card': '0 2px 8px hsl(240 6% 4% / 0.3)',
|
||||
'dropdown': '0 8px 32px hsl(240 6% 4% / 0.5), 0 0 1px hsl(240 5% 20% / 0.5)',
|
||||
'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': {
|
||||
@@ -138,12 +132,12 @@ const config: Config = {
|
||||
'100%': { backgroundPosition: '200% 0' },
|
||||
},
|
||||
'glow-pulse': {
|
||||
'0%, 100%': { boxShadow: '0 0 20px hsl(239 84% 67% / 0.15)' },
|
||||
'50%': { boxShadow: '0 0 30px hsl(239 84% 67% / 0.25)' },
|
||||
'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(239 84% 67% / 0.3)' },
|
||||
'50%': { borderColor: 'hsl(239 84% 67% / 0.5)' },
|
||||
'0%, 100%': { borderColor: 'hsl(224 64% 48% / 0.2)' },
|
||||
'50%': { borderColor: 'hsl(224 64% 48% / 0.35)' },
|
||||
},
|
||||
},
|
||||
animation: {
|
||||
|
||||
Reference in New Issue
Block a user