From 942634c98e61806a56023dde5ee34fd8c86046ff Mon Sep 17 00:00:00 2001 From: hamed <15238-genius.ha@users.noreply.drupalcode.org> Date: Wed, 10 Jun 2026 12:30:14 +0330 Subject: [PATCH] refactor: update UI components for consistency and dark mode support - Refactored PaymentsPage, RatingsPage, RepresentationDetailPage, RepresentationsPage, SecretariesPage, SettlementsPage, SmsPage, UserDetailPage, and UsersPage to use consistent class names for styling. - Updated button styles to use new utility classes for primary, secondary, and danger buttons. - Enhanced dark mode support across various components by adjusting text and background colors. - Introduced new utility classes for form inputs, labels, and info rows to standardize styling. - Implemented Zustand for persistent UI state management, including dark mode toggle functionality. - Updated CSS to include new styles for skeleton loading and animations. - Added optional dependencies for improved compatibility with different platforms. --- .../admin/components/layout/AdminLayout.tsx | 15 +- assets/admin/components/layout/Sidebar.tsx | 112 +++--- assets/admin/components/layout/Topbar.tsx | 74 ++-- assets/admin/components/ui/ConfirmDialog.tsx | 36 +- assets/admin/components/ui/DataTable.tsx | 77 ++-- assets/admin/components/ui/Modal.tsx | 43 ++- assets/admin/components/ui/PageHeader.tsx | 23 +- assets/admin/components/ui/Pagination.tsx | 25 +- assets/admin/components/ui/StatusBadge.tsx | 80 ++--- assets/admin/pages/AppointmentDetailPage.tsx | 18 +- assets/admin/pages/AppointmentsPage.tsx | 8 +- assets/admin/pages/BlogFormPage.tsx | 26 +- assets/admin/pages/BlogsPage.tsx | 12 +- assets/admin/pages/CategoriesPage.tsx | 34 +- assets/admin/pages/ClinicDetailPage.tsx | 12 +- assets/admin/pages/ClinicsPage.tsx | 10 +- assets/admin/pages/CommentsPage.tsx | 8 +- assets/admin/pages/DashboardPage.tsx | 336 ++++++++++++------ assets/admin/pages/DoctorDetailPage.tsx | 12 +- assets/admin/pages/DoctorsPage.tsx | 14 +- assets/admin/pages/LoginPage.tsx | 187 +++++++--- assets/admin/pages/PaymentDetailPage.tsx | 12 +- assets/admin/pages/PaymentsPage.tsx | 8 +- assets/admin/pages/RatingsPage.tsx | 4 +- .../admin/pages/RepresentationDetailPage.tsx | 30 +- assets/admin/pages/RepresentationsPage.tsx | 30 +- assets/admin/pages/SecretariesPage.tsx | 14 +- assets/admin/pages/SettlementsPage.tsx | 16 +- assets/admin/pages/SmsPage.tsx | 32 +- assets/admin/pages/UserDetailPage.tsx | 12 +- assets/admin/pages/UsersPage.tsx | 12 +- assets/admin/stores/uiStore.ts | 31 +- assets/admin/styles.css | 136 ++++++- package-lock.json | 11 +- package.json | 6 + 35 files changed, 967 insertions(+), 549 deletions(-) diff --git a/assets/admin/components/layout/AdminLayout.tsx b/assets/admin/components/layout/AdminLayout.tsx index fe7e5e1b..0d76c445 100644 --- a/assets/admin/components/layout/AdminLayout.tsx +++ b/assets/admin/components/layout/AdminLayout.tsx @@ -1,15 +1,22 @@ -import React from 'react'; +import React, { useEffect } from 'react'; import { Outlet } from 'react-router-dom'; import Sidebar from './Sidebar'; import Topbar from './Topbar'; +import { useUiStore } from '../../stores/uiStore'; export default function AdminLayout() { + const darkMode = useUiStore((s) => s.darkMode); + + useEffect(() => { + document.documentElement.classList.toggle('dark', darkMode); + }, [darkMode]); + return ( -
+
-
+
-
+
diff --git a/assets/admin/components/layout/Sidebar.tsx b/assets/admin/components/layout/Sidebar.tsx index 71de9acc..6010d5ec 100644 --- a/assets/admin/components/layout/Sidebar.tsx +++ b/assets/admin/components/layout/Sidebar.tsx @@ -15,9 +15,7 @@ import { TagIcon, DocumentTextIcon, KeyIcon, - ChevronRightIcon, - ChevronLeftIcon, - MagnifyingGlassIcon, + Bars3Icon, ArrowLeftOnRectangleIcon, } from '@heroicons/react/24/outline'; import { useUiStore } from '../../stores/uiStore'; @@ -66,96 +64,100 @@ export default function Sidebar() { const logout = useAuthStore((s) => s.logout); const navigate = useNavigate(); - const handleLogout = () => { - logout(); - navigate('/admin/login'); - }; - return (