From 28d20b23a0e471c543c100acef9240297545138e Mon Sep 17 00:00:00 2001 From: Tatyana Date: Mon, 4 Aug 2025 16:18:52 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BD=D0=BE=D0=B2=D1=8B=D0=B9=20=D0=B4=D0=B8?= =?UTF-8?q?=D0=B7=D0=B0=D0=B9=D0=BD=5F=D1=83=D1=82=D0=B2=D0=B5=D1=80=D0=B6?= =?UTF-8?q?=D0=B4=D0=B5=D0=BD=D0=BD=D1=8B=D0=B9=20=D0=BF=D0=BE=20=D0=BC?= =?UTF-8?q?=D0=B0=D0=BA=D0=B5=D1=82=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 2 +- src/App.tsx | 5 - src/AppRoutes.tsx | 18 +- src/assets/emblem.png | Bin 0 -> 58322 bytes src/assets/man.svg | 3 + src/components/BottomNavigation.tsx | 114 +++++++ src/components/ExerciseItem.tsx | 154 --------- src/components/Footer.tsx | 176 ---------- src/components/Header.tsx | 40 --- src/index.css | 490 ++++++++++++++++++---------- src/pages/Account.tsx | 69 ---- src/pages/CourseComplete.tsx | 141 ++++++++ src/pages/CourseExercises.tsx | 312 ++++++++++++++++++ src/pages/Courses.tsx | 130 ++++++++ src/pages/Exercise.tsx | 264 +++++++++++++++ src/pages/Exercises.tsx | 239 -------------- src/pages/ForgotPassword.tsx | 125 +++++++ src/pages/Home.tsx | 445 ++++++++++++------------- src/pages/Login.tsx | 206 +++++++----- src/pages/Register.tsx | 335 +++++++++++-------- src/pages/Settings.tsx | 204 ++++++++++++ src/pages/Welcome.tsx | 98 +++++- tailwind.config.js | 54 +-- 23 files changed, 2252 insertions(+), 1372 deletions(-) create mode 100644 src/assets/emblem.png create mode 100644 src/assets/man.svg create mode 100644 src/components/BottomNavigation.tsx delete mode 100644 src/components/ExerciseItem.tsx delete mode 100644 src/components/Footer.tsx delete mode 100644 src/components/Header.tsx delete mode 100644 src/pages/Account.tsx create mode 100644 src/pages/CourseComplete.tsx create mode 100644 src/pages/CourseExercises.tsx create mode 100644 src/pages/Courses.tsx create mode 100644 src/pages/Exercise.tsx delete mode 100644 src/pages/Exercises.tsx create mode 100644 src/pages/ForgotPassword.tsx create mode 100644 src/pages/Settings.tsx diff --git a/index.html b/index.html index f828b81..7cac558 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ - Vite + React + TS + Реабилитация
diff --git a/src/App.tsx b/src/App.tsx index 50c629f..d1f7ff1 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -10,16 +10,11 @@ import "@ionic/react/css/core.css" const App: React.FC = () => ( -
- {/* Контент с отступом равным высоте Header */} -
-
-
) diff --git a/src/AppRoutes.tsx b/src/AppRoutes.tsx index e21aea8..6f4534e 100644 --- a/src/AppRoutes.tsx +++ b/src/AppRoutes.tsx @@ -3,14 +3,26 @@ import Home from "./pages/Home" import Login from "./pages/Login" import Register from "./pages/Register" import Welcome from "./pages/Welcome" +import ForgotPassword from "./pages/ForgotPassword" +import Courses from "./pages/Courses" +import CourseExercises from "./pages/CourseExercises" +import Exercise from "./pages/Exercise" +import Settings from "./pages/Settings" +import CourseComplete from "./pages/CourseComplete" const AppRoutes = () => ( - <> + <> + - -\ + + + + + + + ) diff --git a/src/assets/emblem.png b/src/assets/emblem.png new file mode 100644 index 0000000000000000000000000000000000000000..885f58a9283957029edf945cd6d9ce19bd3270da GIT binary patch literal 58322 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 D?m*Ck literal 0 HcmV?d00001 diff --git a/src/assets/man.svg b/src/assets/man.svg new file mode 100644 index 0000000..2a50475 --- /dev/null +++ b/src/assets/man.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/BottomNavigation.tsx b/src/components/BottomNavigation.tsx new file mode 100644 index 0000000..4384f03 --- /dev/null +++ b/src/components/BottomNavigation.tsx @@ -0,0 +1,114 @@ +"use client" + +import type React from "react" +import { useHistory, useLocation } from "react-router-dom" + +const BottomNavigation: React.FC = () => { + const history = useHistory() + const location = useLocation() + + const HomeIcon = ({ active }: { active: boolean }) => ( + + + + + ) + + const CoursesIcon = ({ active }: { active: boolean }) => ( + + + + + ) + + const ExerciseIcon = ({ active }: { active: boolean }) => ( + + + + + ) + + const SettingsIcon = ({ active }: { active: boolean }) => ( + + + + + ) + + const navItems = [ + { path: "/home", icon: HomeIcon, label: "Домой" }, + { path: "/courses", icon: CoursesIcon, label: "Курсы" }, + { path: "/exercise/1", icon: ExerciseIcon, label: "Заниматься" }, + { path: "/settings", icon: SettingsIcon, label: "Меню" }, + ] + + const isActive = (path: string) => { + if (path === "/exercise/1") return location.pathname.includes("/exercise") + return location.pathname === path + } + + return ( +
+
+ {navItems.map((item) => { + const active = isActive(item.path) + const IconComponent = item.icon + return ( + + ) + })} +
+
+ ) +} + +export default BottomNavigation diff --git a/src/components/ExerciseItem.tsx b/src/components/ExerciseItem.tsx deleted file mode 100644 index 36d415e..0000000 --- a/src/components/ExerciseItem.tsx +++ /dev/null @@ -1,154 +0,0 @@ -"use client" - -import type React from "react" -import { useState } from "react" -import { IonCard, IonCardContent, IonButton, IonIcon, IonBadge } from "@ionic/react" -import { playOutline, videocamOutline, closeCircleOutline } from "ionicons/icons" // Добавлен videocamOutline и closeCircleOutline - -interface Exercise { - id: number - name: string - duration: number // в секундах - description: string - difficulty: "easy" | "medium" | "hard" - completed: boolean - videoUrl?: string // Добавлено поле для URL видео -} - -interface ExerciseItemProps { - exercise: Exercise - onStart: (exercise: Exercise) => void - isCurrent: boolean - isDisabled: boolean - onVideoPlayToggle: (isPlaying: boolean) => void // Добавлено для уведомления родителя -} - -const ExerciseItem: React.FC = ({ exercise, onStart, isCurrent, isDisabled, onVideoPlayToggle }) => { - const [showVideo, setShowVideo] = useState(false) - - const formatTime = (seconds: number) => { - const mins = Math.floor(seconds / 60) - const secs = seconds % 60 - return `${mins.toString().padStart(2, "0")}:${secs.toString().padStart(2, "0")}` - } - - const getDifficultyColor = (difficulty: string) => { - switch (difficulty) { - case "easy": - return "text-emerald-400" - case "medium": - return "text-yellow-400" - case "hard": - return "text-red-400" - default: - return "text-slate-400" - } - } - - const getDifficultyBg = (difficulty: string) => { - switch (difficulty) { - case "easy": - return "bg-emerald-500/20 border-emerald-500/30" - case "medium": - return "bg-yellow-500/20 border-yellow-500/30" - case "hard": - return "bg-red-500/20 border-red-500/30" - default: - return "bg-slate-500/20 border-slate-500/30" - } - } - - const handleVideoToggle = () => { - setShowVideo((prev) => { - onVideoPlayToggle(!prev) // Уведомляем родителя об изменении состояния видео - return !prev - }) - } - - return ( - - -
-
-

- {exercise.name} -

-

{exercise.description}

-
- {exercise.completed && ( - - Выполнено - - )} -
- - {showVideo && exercise.videoUrl && ( -
- - - - -
- )} - -
-
- {formatTime(exercise.duration)} - - {exercise.difficulty === "easy" ? "Легко" : exercise.difficulty === "medium" ? "Средне" : "Сложно"} - -
- -
- {exercise.videoUrl && ( - - - {showVideo ? "Скрыть" : "Видео"} - - )} - - {!exercise.completed && !isCurrent && ( - onStart(exercise)} - className="bg-gradient-to-r from-teal-500 to-cyan-500" - disabled={isDisabled || showVideo} // Отключаем кнопку, если другое упражнение активно или видео проигрывается - > - - Начать - - )} - {isCurrent && ( - - Активно - - )} -
-
-
-
- ) -} - -export default ExerciseItem diff --git a/src/components/Footer.tsx b/src/components/Footer.tsx deleted file mode 100644 index 5d4fa88..0000000 --- a/src/components/Footer.tsx +++ /dev/null @@ -1,176 +0,0 @@ -"use client" - -import { useState } from "react" - -type TabType = "home" | "courses" | "profile" - -interface FooterProps { - onTabChange?: (tab: TabType) => void - activeTab?: TabType -} - -// Строгие и аккуратные SVG иконки -const HomeIcon = ({ filled = false, className = "" }) => ( - - {filled ? ( - - ) : ( - - )} - -) - -const BookIcon = ({ filled = false, className = "" }) => ( - - {filled ? ( - - ) : ( - - )} - -) - -const UserIcon = ({ filled = false, className = "" }) => ( - - {filled ? ( - - ) : ( - - )} - -) - -function Footer({ onTabChange, activeTab: controlledActiveTab }: FooterProps) { - const [internalActiveTab, setInternalActiveTab] = useState("home") - - const activeTab = controlledActiveTab || internalActiveTab - - const handleTabChange = (tab: TabType) => { - if (!controlledActiveTab) { - setInternalActiveTab(tab) - } - onTabChange?.(tab) - } - - const tabs = [ - { - id: "home" as TabType, - label: "Главная", - icon: HomeIcon, - }, - { - id: "courses" as TabType, - label: "Курсы", - icon: BookIcon, - }, - { - id: "profile" as TabType, - label: "Профиль", - icon: UserIcon, - }, - ] - - return ( -
- {/* Основной контейнер */} -
- {/* Фон с размытием */} -
- - {/* Тонкая верхняя линия */} -
- - {/* Контент */} -
-
-
- {tabs.map((tab) => { - const isActive = activeTab === tab.id - const Icon = tab.icon - - return ( - - ) - })} -
-
-
- - {/* Нижний отступ для мобильных устройств */} -
-
-
- ) -} - -export default Footer diff --git a/src/components/Header.tsx b/src/components/Header.tsx deleted file mode 100644 index 7446102..0000000 --- a/src/components/Header.tsx +++ /dev/null @@ -1,40 +0,0 @@ -"use client" - -function Header() { - return ( -
-
- {/* Верхняя граница с градиентом */} -
- - {/* Нижняя граница с градиентом */} -
- - {/* Контент */} -
- {/* Логотип и название */} -
- {/* Иконка с градиентом */} -
- - - -
- {/* Название и описание */} -
-

- МедРеабилитация -

-

Центр восстановления

-
-
-
-
-
- ) -} -export default Header \ No newline at end of file diff --git a/src/index.css b/src/index.css index ccc6f1e..2a68325 100644 --- a/src/index.css +++ b/src/index.css @@ -1,207 +1,361 @@ @import "tailwindcss"; -@keyframes gradient { - 0% { background-position: 0% 50%; } - 50% { background-position: 100% 50%; } - 100% { background-position: 0% 50%; } -} +@custom-variant dark (&:is(.dark *)); -.animate-gradient { - background-size: 300% 300%; - animation: gradient 10s ease infinite; -} - - - -/* Ionic переменные для кастомизации */ :root { - /* Основные цвета приложения */ - --ion-color-primary: #0f766e; - --ion-color-primary-rgb: 15, 118, 110; - --ion-color-primary-contrast: #ffffff; - --ion-color-primary-contrast-rgb: 255, 255, 255; - --ion-color-primary-shade: #0d6660; - --ion-color-primary-tint: #27847e; - - /* Вторичные цвета */ - --ion-color-secondary: #06b6d4; - --ion-color-secondary-rgb: 6, 182, 212; - --ion-color-secondary-contrast: #ffffff; - --ion-color-secondary-contrast-rgb: 255, 255, 255; - --ion-color-secondary-shade: #05a0ba; - --ion-color-secondary-tint: #1fc1d8; - - /* Цвет успеха */ - --ion-color-success: #10b981; - --ion-color-success-rgb: 16, 185, 129; - --ion-color-success-contrast: #ffffff; - --ion-color-success-contrast-rgb: 255, 255, 255; - --ion-color-success-shade: #0ea372; - --ion-color-success-tint: #28c78e; - - /* Цвет предупреждения */ - --ion-color-warning: #f59e0b; - --ion-color-warning-rgb: 245, 158, 11; - --ion-color-warning-contrast: #ffffff; - --ion-color-warning-contrast-rgb: 255, 255, 255; - --ion-color-warning-shade: #d8890a; - --ion-color-warning-tint: #f6a824; - - /* Цвет опасности */ - --ion-color-danger: #ef4444; - --ion-color-danger-rgb: 239, 68, 68; - --ion-color-danger-contrast: #ffffff; - --ion-color-danger-contrast-rgb: 255, 255, 255; - --ion-color-danger-shade: #d23c3c; - --ion-color-danger-tint: #f15757; - - /* Фон приложения */ - --ion-background-color: #f8fafc; - --ion-background-color-rgb: 248, 250, 252; - - /* Цвет текста */ - --ion-text-color: #1e293b; - --ion-text-color-rgb: 30, 41, 59; - - /* Цвета для карточек */ - --ion-card-background: rgba(255, 255, 255, 0.9); - --ion-item-background: rgba(255, 255, 255, 0.8); + --background: oklch(1 0 0); + --foreground: oklch(0.145 0 0); + --card: oklch(1 0 0); + --card-foreground: oklch(0.145 0 0); + --popover: oklch(1 0 0); + --popover-foreground: oklch(0.145 0 0); + --primary: oklch(0.205 0 0); + --primary-foreground: oklch(0.985 0 0); + --secondary: oklch(0.97 0 0); + --secondary-foreground: oklch(0.205 0 0); + --muted: oklch(0.97 0 0); + --muted-foreground: oklch(0.556 0 0); + --accent: oklch(0.97 0 0); + --accent-foreground: oklch(0.205 0 0); + --destructive: oklch(0.577 0.245 27.325); + --destructive-foreground: oklch(0.577 0.245 27.325); + --border: oklch(0.922 0 0); + --input: oklch(0.922 0 0); + --ring: oklch(0.708 0 0); + --chart-1: oklch(0.646 0.222 41.116); + --chart-2: oklch(0.6 0.118 184.704); + --chart-3: oklch(0.398 0.07 227.392); + --chart-4: oklch(0.828 0.189 84.429); + --chart-5: oklch(0.769 0.188 70.08); + --radius: 0.625rem; + --sidebar: oklch(0.985 0 0); + --sidebar-foreground: oklch(0.145 0 0); + --sidebar-primary: oklch(0.205 0 0); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.97 0 0); + --sidebar-accent-foreground: oklch(0.205 0 0); + --sidebar-border: oklch(0.922 0 0); + --sidebar-ring: oklch(0.708 0 0); } -/* Кастомные стили для медицинского приложения */ -.medical-gradient { - background: linear-gradient(135deg, #0f766e 0%, #06b6d4 100%); +.dark { + --background: oklch(0.145 0 0); + --foreground: oklch(0.985 0 0); + --card: oklch(0.145 0 0); + --card-foreground: oklch(0.985 0 0); + --popover: oklch(0.145 0 0); + --popover-foreground: oklch(0.985 0 0); + --primary: oklch(0.985 0 0); + --primary-foreground: oklch(0.205 0 0); + --secondary: oklch(0.269 0 0); + --secondary-foreground: oklch(0.985 0 0); + --muted: oklch(0.269 0 0); + --muted-foreground: oklch(0.708 0 0); + --accent: oklch(0.269 0 0); + --accent-foreground: oklch(0.985 0 0); + --destructive: oklch(0.396 0.141 25.723); + --destructive-foreground: oklch(0.637 0.237 25.331); + --border: oklch(0.269 0 0); + --input: oklch(0.269 0 0); + --ring: oklch(0.439 0 0); + --chart-1: oklch(0.488 0.243 264.376); + --chart-2: oklch(0.696 0.17 162.48); + --chart-3: oklch(0.769 0.188 70.08); + --chart-4: oklch(0.627 0.265 303.9); + --chart-5: oklch(0.645 0.246 16.439); + --sidebar: oklch(0.205 0 0); + --sidebar-foreground: oklch(0.985 0 0); + --sidebar-primary: oklch(0.488 0.243 264.376); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.269 0 0); + --sidebar-accent-foreground: oklch(0.985 0 0); + --sidebar-border: oklch(0.269 0 0); + --sidebar-ring: oklch(0.439 0 0); } -.medical-card { - background: rgba(255, 255, 255, 0.9); - backdrop-filter: blur(10px); - border: 1px solid rgba(15, 118, 110, 0.1); - box-shadow: 0 8px 32px rgba(15, 118, 110, 0.1); +@theme inline { + --color-background: var(--background); + --color-foreground: var(--foreground); + --color-card: var(--card); + --color-card-foreground: var(--card-foreground); + --color-popover: var(--popover); + --color-popover-foreground: var(--popover-foreground); + --color-primary: var(--primary); + --color-primary-foreground: var(--primary-foreground); + --color-secondary: var(--secondary); + --color-secondary-foreground: var(--secondary-foreground); + --color-muted: var(--muted); + --color-muted-foreground: var(--muted-foreground); + --color-accent: var(--accent); + --color-accent-foreground: var(--accent-foreground); + --color-destructive: var(--destructive); + --color-destructive-foreground: var(--destructive-foreground); + --color-border: var(--border); + --color-input: var(--input); + --color-ring: var(--ring); + --color-chart-1: var(--chart-1); + --color-chart-2: var(--chart-2); + --color-chart-3: var(--chart-3); + --color-chart-4: var(--chart-4); + --color-chart-5: var(--chart-5); + --radius-sm: calc(var(--radius) - 4px); + --radius-md: calc(var(--radius) - 2px); + --radius-lg: var(--radius); + --radius-xl: calc(var(--radius) + 4px); + --color-sidebar: var(--sidebar); + --color-sidebar-foreground: var(--sidebar-foreground); + --color-sidebar-primary: var(--sidebar-primary); + --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); + --color-sidebar-accent: var(--sidebar-accent); + --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); + --color-sidebar-border: var(--sidebar-border); + --color-sidebar-ring: var(--sidebar-ring); } -.exercise-timer { - background: linear-gradient(135deg, #0f766e, #06b6d4); - color: white; - border-radius: 16px; - padding: 1rem; +@layer base { + * { + @apply border-border outline-ring/50; + } + body { + @apply bg-background text-foreground; + } } -/* Анимации для таймера */ -@keyframes pulse-medical { +@layer components { + .glass-morphism { + background: rgba(255, 255, 255, 0.25); + backdrop-filter: blur(20px); + -webkit-backdrop-filter: blur(20px); + border: 1px solid rgba(255, 255, 255, 0.3); + box-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.37); + } + + .glass-morphism-dark { + background: rgba(0, 0, 0, 0.15); + backdrop-filter: blur(20px); + -webkit-backdrop-filter: blur(20px); + border: 1px solid rgba(255, 255, 255, 0.1); + box-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.37); + } + + .scrollable-content { + overflow-y: auto; + overflow-x: hidden; + -webkit-overflow-scrolling: touch; + scrollbar-width: thin; + scrollbar-color: rgba(43, 172, 190, 0.3) transparent; + } +} + +@layer utilities { + .animate-float { + animation: float 6s ease-in-out infinite; + } + + .animate-slide-up { + animation: slideUp 0.6s cubic-bezier(0.4, 0, 0.2, 1); + } + + .animate-fade-in { + animation: fadeIn 0.8s ease-out; + } + + .animate-scale-in { + animation: scaleIn 0.5s cubic-bezier(0.4, 0, 0.2, 1); + } + + .animate-bounce-gentle { + animation: bounceGentle 2s ease-in-out infinite; + } + + .animate-glow { + animation: glow 2s ease-in-out infinite alternate; + } +} + +@keyframes float { 0%, 100% { + transform: translateY(0px) rotate(0deg); + } + 33% { + transform: translateY(-10px) rotate(1deg); + } + 66% { + transform: translateY(-5px) rotate(-1deg); + } +} + +@keyframes slideUp { + from { + opacity: 0; + transform: translateY(30px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +@keyframes fadeIn { + from { + opacity: 0; + } + to { + opacity: 1; + } +} + +@keyframes scaleIn { + from { + opacity: 0; + transform: scale(0.9); + } + to { opacity: 1; transform: scale(1); } +} + +@keyframes bounceGentle { + 0%, + 100% { + transform: translateY(0); + } 50% { - opacity: 0.8; - transform: scale(1.05); + transform: translateY(-5px); } } -.timer-pulse { - animation: pulse-medical 2s ease-in-out infinite; -} - -/* Стили для прогресс-бара */ -.progress-medical { - background: linear-gradient(90deg, #10b981, #06b6d4); - border-radius: 8px; - height: 8px; -} - -/* Кастомные стили для Ionic компонентов */ -ion-card.medical-card { - --background: rgba(255, 255, 255, 0.9); - --color: #1e293b; - border: 1px solid rgba(15, 118, 110, 0.1); - box-shadow: 0 8px 32px rgba(15, 118, 110, 0.1); -} - -ion-button.medical-button { - --background: linear-gradient(135deg, #0f766e, #06b6d4); - --color: white; - --border-radius: 12px; - --box-shadow: 0 4px 16px rgba(15, 118, 110, 0.3); -} - -ion-button.medical-button:hover { - --box-shadow: 0 6px 20px rgba(15, 118, 110, 0.4); - transform: translateY(-2px); -} - -/* Стили для header и footer */ -ion-header.medical-header { - --background: rgba(15, 23, 42, 0.95); - --color: white; - backdrop-filter: blur(20px); - border-bottom: 1px solid rgba(15, 118, 110, 0.3); -} - -ion-footer.medical-footer { - --background: rgba(15, 23, 42, 0.95); - --color: white; - backdrop-filter: blur(20px); - border-top: 1px solid rgba(15, 118, 110, 0.3); -} - -/* Адаптивность */ -@media (max-width: 768px) { - .medical-card { - margin: 0.5rem; - border-radius: 12px; +@keyframes glow { + from { + box-shadow: 0 0 20px rgba(43, 172, 190, 0.3); } - - .exercise-timer { - padding: 0.75rem; - border-radius: 12px; + to { + box-shadow: 0 0 30px rgba(43, 172, 190, 0.6); } + } -/* Стили для статусов упражнений */ -.exercise-completed { - background: rgba(16, 185, 129, 0.1); - border: 1px solid rgba(16, 185, 129, 0.2); -} -.exercise-active { - background: rgba(6, 182, 212, 0.1); - border: 1px solid rgba(6, 182, 212, 0.2); - animation: pulse-medical 2s ease-in-out infinite; -} - -.exercise-pending { - background: rgba(148, 163, 184, 0.1); - border: 1px solid rgba(148, 163, 184, 0.2); -} - -/* Улучшенные тени для глубины */ -.shadow-medical { - box-shadow: 0 4px 6px -1px rgba(15, 118, 110, 0.1), 0 2px 4px -1px rgba(15, 118, 110, 0.06); -} - -.shadow-medical-lg { - box-shadow: 0 10px 15px -3px rgba(15, 118, 110, 0.1), 0 4px 6px -2px rgba(15, 118, 110, 0.05); -} - -/* Кастомные скроллбары */ +/* Enhanced scrollbar */ ::-webkit-scrollbar { - width: 6px; + width: 8px; } ::-webkit-scrollbar-track { - background: rgba(148, 163, 184, 0.1); - border-radius: 3px; + background: rgba(255, 255, 255, 0.1); + border-radius: 10px; } ::-webkit-scrollbar-thumb { - background: rgba(15, 118, 110, 0.3); - border-radius: 3px; + background: linear-gradient(45deg, #2bacbe, #5f5c5c); + border-radius: 10px; + border: 2px solid transparent; + background-clip: content-box; } ::-webkit-scrollbar-thumb:hover { - background: rgba(15, 118, 110, 0.5); + background: linear-gradient(45deg, #2bacbe, #2bacbe); + background-clip: content-box; } +/* Smooth transitions for all interactive elements */ +button, +input, +select, +div { + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); +} + +/* Focus styles for accessibility */ +button:focus, +input:focus, +select:focus { + outline: 2px solid #2bacbe; + outline-offset: 2px; +} + +/* Loading animation */ +.loading-spinner { + border: 3px solid rgba(43, 172, 190, 0.1); + border-top: 3px solid #2bacbe; + border-radius: 50%; + width: 24px; + height: 24px; + animation: spin 1s linear infinite; +} + +@keyframes spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} + +/* Backdrop blur support */ +@supports (backdrop-filter: blur(20px)) { + .backdrop-blur-2xl { + backdrop-filter: blur(20px); + -webkit-backdrop-filter: blur(20px); + } +} + +@supports not (backdrop-filter: blur(20px)) { + .backdrop-blur-2xl { + background: rgba(255, 255, 255, 0.8); + } +} + +/* Modern gradient backgrounds */ +.gradient-mesh { + background: linear-gradient(45deg, #667eea 0%, #764ba2 100%); + background-size: 400% 400%; + animation: gradientShift 15s ease infinite; +} + +@keyframes gradientShift { + 0% { + background-position: 0% 50%; + } + 50% { + background-position: 100% 50%; + } + 100% { + background-position: 0% 50%; + } +} + +/* Enhanced card hover effects */ +.card-hover { + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); +} + +.card-hover:hover { + transform: translateY(-4px) scale(1.02); + box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1); +} + +/* Improved button styles */ +.btn-primary { + background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); + border: none; + color: white; + font-weight: 700; + padding: 12px 24px; + border-radius: 16px; + transition: all 0.3s ease; + box-shadow: 0 4px 15px rgba(102, 126, 234, 0.3); +} + +.btn-primary:hover { + transform: translateY(-2px); + box-shadow: 0 8px 25px rgba(102, 126, 234, 0.4); +} + +.btn-primary:active { + transform: translateY(0); +} diff --git a/src/pages/Account.tsx b/src/pages/Account.tsx deleted file mode 100644 index b2af92b..0000000 --- a/src/pages/Account.tsx +++ /dev/null @@ -1,69 +0,0 @@ -import type React from "react" -import { IonPage, IonContent, IonList, IonItem, IonLabel, IonIcon, IonToggle, IonButton } from "@ionic/react" -import { - personCircleOutline, - mailOutline, - lockClosedOutline, - notificationsOutline, - moonOutline, - logOutOutline, -} from "ionicons/icons" -import Header from "../components/Header" -import Footer from "../components/Footer" - -const Account: React.FC = () => { - return ( - -
- -
-
- Profile -

Himanshi Kashyap

-

himanshi.kashyap@example.com

-
- - - - - Edit Profile - - - - Change Email - - - - Change Password - - - - - - - Notifications - - - - - Dark Mode - - - - - - - Log Out - -
-
-