From beecbb3b869dc3b13b51bf2b88b6ad872df755ec Mon Sep 17 00:00:00 2001 From: valitovgaziz Date: Thu, 30 Oct 2025 00:22:00 +0500 Subject: [PATCH] modified: main_dc/yalarba/easySite/easySite/app/assets/css/components.css modified: main_dc/yalarba/easySite/easySite/app/assets/css/main.css modified: main_dc/yalarba/easySite/easySite/app/assets/css/travel.css modified: main_dc/yalarba/easySite/easySite/app/assets/css/typography.css modified: main_dc/yalarba/easySite/easySite/app/assets/css/variables.css modified: main_dc/yalarba/easySite/easySite/app/components/layout/Footer.vue modified: main_dc/yalarba/easySite/easySite/app/components/layout/Header.vue new file: main_dc/yalarba/easySite/easySite/app/composables/useTheme.ts modified: main_dc/yalarba/easySite/easySite/app/pages/index.vue new file: main_dc/yalarba/easySite/easySite/app/plugins/theme.client.ts add dark theme for easysite --- .../easySite/app/assets/css/components.css | 33 +++++ .../easySite/easySite/app/assets/css/main.css | 29 +++-- .../easySite/app/assets/css/travel.css | 26 +++- .../easySite/app/assets/css/typography.css | 41 ++++++ .../easySite/app/assets/css/variables.css | 123 ++++++++++++++++-- .../easySite/app/components/layout/Footer.vue | 56 +++++--- .../easySite/app/components/layout/Header.vue | 94 ++++++++++++- .../easySite/app/composables/useTheme.ts | 30 +++++ .../easySite/easySite/app/pages/index.vue | 12 +- .../easySite/app/plugins/theme.client.ts | 20 +++ 10 files changed, 413 insertions(+), 51 deletions(-) create mode 100644 main_dc/yalarba/easySite/easySite/app/composables/useTheme.ts create mode 100644 main_dc/yalarba/easySite/easySite/app/plugins/theme.client.ts diff --git a/main_dc/yalarba/easySite/easySite/app/assets/css/components.css b/main_dc/yalarba/easySite/easySite/app/assets/css/components.css index ac33599..41d776b 100644 --- a/main_dc/yalarba/easySite/easySite/app/assets/css/components.css +++ b/main_dc/yalarba/easySite/easySite/app/assets/css/components.css @@ -166,3 +166,36 @@ color: var(--primary-600); background: var(--primary-50); } + +/* Дополнения для темной темы */ +.form-input, +.form-select { + background: var(--bg-primary); + border-color: var(--border-medium); + color: var(--text-primary); + transition: all 0.3s ease; +} + +.form-input:focus, +.form-select:focus { + border-color: var(--primary-500); + box-shadow: 0 0 0 3px rgb(14 165 233 / 0.1); +} + +.card { + background: var(--bg-primary); + border-color: var(--border-light); + transition: all 0.3s ease; +} + +.btn-outline { + background: transparent; + border: 1px solid var(--border-medium); + color: var(--text-secondary); +} + +.btn-outline:hover { + background: var(--bg-secondary); + border-color: var(--primary-500); + color: var(--primary-500); +} diff --git a/main_dc/yalarba/easySite/easySite/app/assets/css/main.css b/main_dc/yalarba/easySite/easySite/app/assets/css/main.css index caadb09..1de6518 100644 --- a/main_dc/yalarba/easySite/easySite/app/assets/css/main.css +++ b/main_dc/yalarba/easySite/easySite/app/assets/css/main.css @@ -8,27 +8,33 @@ --gray-800: #1f2937; --gray-900: #111827; --white: #ffffff; + transition: color 0.3s ease, background-color 0.3s ease, + border-color 0.3s ease; } * { margin: 0; padding: 0; box-sizing: border-box; + transition: color 0.3s ease, background-color 0.3s ease, + border-color 0.3s ease; } body { - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; line-height: 1.6; - color: var(--gray-900); + color: var(--text-primary); + background: var(--bg-primary); + transition: color 0.3s ease, background-color 0.3s ease; } +/* Обновляем остальные стили для поддержки темы */ .container { max-width: 1200px; margin: 0 auto; padding: 0 1rem; } -/* Базовые компоненты */ .btn { display: inline-block; padding: 0.75rem 1.5rem; @@ -37,21 +43,24 @@ body { text-decoration: none; font-weight: 500; cursor: pointer; - transition: all 0.2s; + transition: all 0.3s ease; } .btn-primary { - background: var(--primary); - color: var(--white); + background: var(--primary-500); + color: var(--text-inverse); } .btn-primary:hover { - background: var(--primary-dark); + background: var(--primary-600); + transform: translateY(-1px); } .card { - background: var(--white); + background: var(--bg-primary); border-radius: 0.5rem; - box-shadow: 0 1px 3px rgba(0,0,0,0.1); + box-shadow: var(--shadow-sm); padding: 1.5rem; -} \ No newline at end of file + border: 1px solid var(--border-light); + transition: all 0.3s ease; +} diff --git a/main_dc/yalarba/easySite/easySite/app/assets/css/travel.css b/main_dc/yalarba/easySite/easySite/app/assets/css/travel.css index 55df4fc..d13f6e3 100644 --- a/main_dc/yalarba/easySite/easySite/app/assets/css/travel.css +++ b/main_dc/yalarba/easySite/easySite/app/assets/css/travel.css @@ -1,14 +1,18 @@ /* assets/css/travel.css */ /* Герой-секция с фоном */ .hero-section { - background: linear-gradient(135deg, var(--primary-500) 0%, var(--primary-700) 100%); + background: linear-gradient( + 135deg, + var(--primary-500) 0%, + var(--primary-700) 100% + ); color: var(--text-inverse); position: relative; overflow: hidden; } .hero-section::before { - content: ''; + content: ""; position: absolute; top: 0; left: 0; @@ -116,4 +120,20 @@ font-weight: 600; color: var(--text-primary); margin-left: var(--space-xs); -} \ No newline at end of file +} + +/* Дополнения для темной темы */ +.search-filters { + background: var(--bg-secondary); + border-color: var(--border-light); +} + +.category-card { + background: var(--bg-primary); + border-color: var(--border-light); +} + +.category-card:hover { + border-color: var(--primary-300); + background: var(--bg-secondary); +} diff --git a/main_dc/yalarba/easySite/easySite/app/assets/css/typography.css b/main_dc/yalarba/easySite/easySite/app/assets/css/typography.css index 118256b..0804071 100644 --- a/main_dc/yalarba/easySite/easySite/app/assets/css/typography.css +++ b/main_dc/yalarba/easySite/easySite/app/assets/css/typography.css @@ -211,3 +211,44 @@ li { .text-success { color: var(--success-600); } + +/* Дополнения для темной темы */ +body { + color: var(--text-primary); + background: var(--bg-primary); +} + +h1, +.h1, +h2, +.h2, +h3, +.h3, +h4, +.h4, +h5, +.h5, +h6, +.h6 { + color: var(--text-primary); +} + +p { + color: var(--text-secondary); +} + +.lead { + color: var(--text-secondary); +} + +.small { + color: var(--text-tertiary); +} + +a { + color: var(--primary-500); +} + +a:hover { + color: var(--primary-400); +} diff --git a/main_dc/yalarba/easySite/easySite/app/assets/css/variables.css b/main_dc/yalarba/easySite/easySite/app/assets/css/variables.css index e6053f4..a3692af 100644 --- a/main_dc/yalarba/easySite/easySite/app/assets/css/variables.css +++ b/main_dc/yalarba/easySite/easySite/app/assets/css/variables.css @@ -6,7 +6,7 @@ --primary-200: #bae6fd; --primary-300: #7dd3fc; --primary-400: #38bdf8; - --primary-500: #0ea5e9; /* Основной синий - небо/вода */ + --primary-500: #0ea5e9; /* Основной синий - небо/вода */ --primary-600: #0284c7; --primary-700: #0369a1; --primary-800: #075985; @@ -17,7 +17,7 @@ --secondary-100: #fef9c3; --secondary-200: #fef08a; --secondary-300: #fde047; - --secondary-400: #facc15; /* Золотой - солнце/песок */ + --secondary-400: #facc15; /* Золотой - солнце/песок */ --secondary-500: #eab308; --secondary-600: #ca8a04; --secondary-700: #a16207; @@ -29,7 +29,7 @@ --accent-100: #dcfce7; --accent-200: #bbf7d0; --accent-300: #86efac; - --accent-400: #4ade80; /* Зеленый - природа/растения */ + --accent-400: #4ade80; /* Зеленый - природа/растения */ --accent-500: #22c55e; --accent-600: #16a34a; --accent-700: #15803d; @@ -52,15 +52,15 @@ --success-50: #f0fdf4; --success-500: #22c55e; --success-600: #16a34a; - + --warning-50: #fffbeb; --warning-500: #f59e0b; --warning-600: #d97706; - + --error-50: #fef2f2; --error-500: #ef4444; --error-600: #dc2626; - + --info-50: #eff6ff; --info-500: #3b82f6; --info-600: #2563eb; @@ -69,7 +69,7 @@ --bg-primary: #ffffff; --bg-secondary: #f8fafc; --bg-tertiary: #f1f5f9; - + /* Текстовые цвета */ --text-primary: #0f172a; --text-secondary: #475569; @@ -84,7 +84,8 @@ /* Тени */ --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05); --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); - --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1); + --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), + 0 4px 6px -4px rgb(0 0 0 / 0.1); /* Радиусы */ --radius-sm: 0.375rem; @@ -99,4 +100,108 @@ --space-lg: 1.5rem; --space-xl: 2rem; --space-2xl: 3rem; -} \ No newline at end of file + + &[data-theme="dark"] { + /* Основные цвета - темная тема */ + --primary-50: #0c4a6e; + --primary-100: #075985; + --primary-200: #0369a1; + --primary-300: #0284c7; + --primary-400: #0ea5e9; + --primary-500: #38bdf8; + --primary-600: #7dd3fc; + --primary-700: #bae6fd; + --primary-800: #e0f2fe; + --primary-900: #f0f9ff; + + /* Вторичные цвета - темная тема */ + --secondary-50: #713f12; + --secondary-100: #854d0e; + --secondary-200: #a16207; + --secondary-300: #ca8a04; + --secondary-400: #eab308; + --secondary-500: #facc15; + --secondary-600: #fde047; + --secondary-700: #fef08a; + --secondary-800: #fef9c3; + --secondary-900: #fefce8; + + /* Акцентные цвета - темная тема */ + --accent-50: #14532d; + --accent-100: #166534; + --accent-200: #15803d; + --accent-300: #16a34a; + --accent-400: #22c55e; + --accent-500: #4ade80; + --accent-600: #86efac; + --accent-700: #bbf7d0; + --accent-800: #dcfce7; + --accent-900: #f0fdf4; + + /* Нейтральные цвета - темная тема */ + --gray-50: #0f172a; + --gray-100: #1e293b; + --gray-200: #334155; + --gray-300: #475569; + --gray-400: #64748b; + --gray-500: #94a3b8; + --gray-600: #cbd5e1; + --gray-700: #e2e8f0; + --gray-800: #f1f5f9; + --gray-900: #f8fafc; + + /* Семантические цвета - темная тема */ + --success-50: #14532d; + --success-500: #4ade80; + --success-600: #86efac; + + --warning-50: #713f12; + --warning-500: #facc15; + --warning-600: #fde047; + + --error-50: #7f1d1d; + --error-500: #f87171; + --error-600: #fca5a5; + + --info-50: #1e3a8a; + --info-500: #60a5fa; + --info-600: #93c5fd; + + /* Фоновые цвета - темная тема */ + --bg-primary: #0f172a; + --bg-secondary: #1e293b; + --bg-tertiary: #334155; + + /* Текстовые цвета - темная тема */ + --text-primary: #f8fafc; + --text-secondary: #e2e8f0; + --text-tertiary: #cbd5e1; + --text-inverse: #0f172a; + + /* Границы - темная тема */ + --border-light: #334155; + --border-medium: #475569; + --border-dark: #64748b; + + /* Тени - темная тема */ + --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.4); + --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.3), + 0 2px 4px -2px rgb(0 0 0 / 0.3); + --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.3), + 0 4px 6px -4px rgb(0 0 0 / 0.3); + } + + /* Градиенты для hero-секции */ + --hero-gradient: linear-gradient( + 135deg, + var(--primary-500) 0%, + var(--primary-700) 100% + ); + --hero-pattern: url('data:image/svg+xml,'); + + /* Темная тема */ + &[data-theme="dark"] { + --hero-gradient: linear-gradient(135deg, #1e293b 0%, #0f172a 100%); + --hero-pattern: url('data:image/svg+xml,'); + } +} diff --git a/main_dc/yalarba/easySite/easySite/app/components/layout/Footer.vue b/main_dc/yalarba/easySite/easySite/app/components/layout/Footer.vue index 3652b3c..df40c10 100644 --- a/main_dc/yalarba/easySite/easySite/app/components/layout/Footer.vue +++ b/main_dc/yalarba/easySite/easySite/app/components/layout/Footer.vue @@ -118,9 +118,11 @@