تصميم داشبورد باستخدام React يمنحك القوة والمرونة لخلق تجربة تفاعلية مذهلة وسهلة الاستخدام. تخيل لوحة تحكم ديناميكية تتيح لك مراقبة وتحليل البيانات في الوقت الفعلي، مع رسومات بيانية أنيقة، وجداول بيانات مُنظمة، وتنبيهات فورية تظهر لك كل جديد. باستخدام مكتبات مثل Material-UI و Recharts، يمكنك إنشاء واجهة مستخدم حديثة وجذابة تعمل بسلاسة على جميع الأجهزة. بالإضافة إلى ذلك، سهولة استخدام React في إعادة استخدام المكونات والتحديثات التلقائية تجعل تطوير الداشبورد ممتعًا وفعالاً، مما يوفر تجربة مميزة للمستخدمين مع سرعة استجابة وانسيابية لا مثيل لها.
داشبورد باستخدام رياكت dashboard by react
المتطلبات
تثبيت React
نقوم بانشاء مشروع جديد باسم dashboard-app باستخدام الكود التالي
				
					npx create-react-app dashboard-app 
				
			
				
					cd dashboard-app 
				
			المكتبات المستخدمة
سنقوم باضافة مكتبة Material-UI و مكتبة @mui/x-data-grid الي المشروع باستخدام الكودين التاليين
				
					npm install @mui/material @emotion/react @emotion/styled
 
				
			
				
					npm install @mui/x-data-grid
 
				
			لتحقيق وظائف مثل الرسوم البيانية، يمكنك اضافة مكتبات مثل Recharts الي المشروع باستخدام الكود التالي
				
					npm install recharts
 
				
			يمكنك إضافة FontAwesome لتحسين الأيقونات. باستخدام الكود التالي
				
					npm install @fortawesome/react-fontawesome @fortawesome/free-solid-svg-icons @fortawesome/fontawesome-svg-core
 
				
			المكونات الاساسية
سنقوم بانشاء الملفات الاساسية لتنفيذ dashboard والمكونة من sidebar , navbar و content
Sidebar.js
				
					import React from 'react';
import { List, ListItem, ListItemText } from '@mui/material';
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import { faChartLine, faUsers, faCog } from '@fortawesome/free-solid-svg-icons';
function Sidebar() {
  return (
    
      
        
           
        
           
        
           
      
);
}
export default Sidebar; 
				
			الشــــــــرح
- يتم استيراد Reactلبناء مكون React.
- يتم استيراد عناصر List,ListItem, وListItemTextمن مكتبة Material-UI لتصميم القائمة.
- يتم استيراد FontAwesomeIconمن مكتبة FontAwesome لإضافة أيقونات.
- الأيقونات المستوردة:- faChartLine: أيقونة الخط البياني (Dashboard).
- faUsers: أيقونة المستخدمين (Users).
- faCog: أيقونة الترس (Settings).
 
- div : العنصر الجذر الذي يحتوي على القائمة الجانبية. يتم تحديد العرض - 250px، والخلفية بلون فاتح- #f4f4f4، وارتفاع- 100vhلجعل القائمة تمتد على كامل الشاشة الرأسية.
- List : العنصر الذي يمثل القائمة. 
- ListItem : كل عنصر في القائمة يكون قابلاً للضغط ( - button). كل عنصر يحتوي على:- أيقونة من FontAwesome يتم وضعها بجانب النص، مع مسافة 10pxبينها وبين النص.
- نص يعبر عن اسم القسم (مثل “Dashboard”, “Users”, “Settings”) باستخدام مكون ListItemText.
 
- أيقونة من FontAwesome يتم وضعها بجانب النص، مع مسافة 
Navbar.js
				
					import React from 'react';
import { AppBar, Toolbar, Typography } from '@mui/material';
function Navbar() {
  return (
    
      
        
          Dashboard
         
       
     
  );
}
export default Navbar;
 
				
			الشــــــــرح
- يتم استيراد Reactلبناء مكون React.
- يتم استيراد العناصر AppBar,Toolbar, وTypographyمن مكتبة Material-UI. هذه العناصر تُستخدم لتصميم شريط التنقل.
- AppBar : يمثل شريط التطبيق أو شريط التنقل (Navbar) في الأعلى. يتم تحديد الموضع الخاص به ليكون - static، مما يعني أن شريط التنقل لن يتحرك أثناء التمرير في الصفحة.
- Toolbar : عنصر يحتوي على المكونات الداخلية لشريط التنقل، ويُستخدم لترتيب المحتوى داخل - AppBarبشكل جيد.
- Typography : عنصر يُستخدم لعرض النص “Dashboard” داخل شريط التنقل. يتم تحديد المتغير - variant="h6"لعرض النص بحجم وشكل العنوان الرئيسي السادس (h6)، وهو تنسيق مُعتمد من Material-UI لتنسيق النصوص بشكل جاهز.
Content.js
				
					import React from 'react';
import Chart from './Chart';
import DataTable from './DataTable';
import StatsCard from './StatsCard';
import Notifications from './Notifications';
function Content() {
  return (
    
      Welcome to the Dashboard!
      Users Table
       
				
			الشــــــــرح
- يتم استيراد Reactلبناء مكون React.
- يتم استيراد المكونات الفرعية:- Chart: مكون لعرض الرسم البياني.
- DataTable: مكون لعرض جدول المستخدمين.
- StatsCard: مكون لعرض بطاقات الإحصائيات.
- Notifications: مكون لعرض الإشعارات.
 
- div (الأول) : يحتوي على جميع المحتويات الخاصة بالمكون. يتم تطبيق padding بقيمة 20px لجعل المحتوى بعيدًا قليلاً عن حواف الصفحة. 
- h1 : يعرض عنوان الترحيب “Welcome to the Dashboard!”. 
- Notifications : يعرض إشعارات للمستخدم داخل لوحة التحكم. يتم استدعاؤه مباشرة بعد العنوان الرئيسي. 
- div (الثاني) : يتم استخدامه لتنسيق بطاقات الإحصائيات ( - StatsCard). يحتوي هذا- divعلى 3 مكونات- StatsCardوالتي تعرض الإحصائيات التالية:- Total Users: عدد المستخدمين الإجمالي (1200).
- Active Sessions: عدد الجلسات النشطة (250).
- Revenue: الإيرادات المحققة ($12,000).
- يتم استخدام display: flexلترتيب البطاقات بشكل أفقي، وjustifyContent: 'space-around'لتوزيع البطاقات بالتساوي.
 
- Chart : مكون لعرض الرسم البياني داخل لوحة التحكم. 
- h2 : يعرض عنوان “Users Table” للإشارة إلى الجدول الذي يحتوي على بيانات المستخدمين. 
- DataTable : يعرض جدول المستخدمين. 
المكونات الاضافية
Chart.js
				
					import React from 'react';
import { LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip, Legend, ResponsiveContainer } from 'recharts';
const data = [
  { name: 'Jan', uv: 4000, pv: 2400, amt: 2400 },
  { name: 'Feb', uv: 3000, pv: 1398, amt: 2210 },
  { name: 'Mar', uv: 2000, pv: 9800, amt: 2290 },
];
function DashboardChart() {
  return (
    
      
         
     
  );
}
export default DashboardChart;
 
				
			الهدف من الكود
الكود يُنشئ رسمًا بيانيًا خطيًا باستخدام مكتبة recharts لعرض بيانات بسيطة لعدة شهور (يناير، فبراير، مارس). يتم رسم خطين بيانيين يعرضان البيانات uv و pv بشكل متجاوب مع حجم الشاشة، مع ميزات إضافية مثل الشبكة الديكارتية، الإرشادات (Tooltip)، والأسطورة (Legend) لتسهيل فهم البيانات.
DataTable.js
				
					import React from 'react';
import { DataGrid } from '@mui/x-data-grid';
const columns = [
  { field: 'id', headerName: 'ID', width: 90 },
  { field: 'name', headerName: 'Name', width: 150 },
  { field: 'email', headerName: 'Email', width: 150 },
  { field: 'age', headerName: 'Age', width: 110 },
];
const rows = [
  { id: 1, name: 'Ahmed', email: 'ahmed@example.com', age: 35 },
  { id: 2, name: 'Mohamed Ghareb', email: 'mohamed@example.com', age: 42 },
  { id: 3, name: 'Ali Johnson', email: 'ali@example.com', age: 28 },
];
function DataTable() {
  return (
    
       
				
			الهدف من الكود
الكود يُنشئ جدول بيانات تفاعلي باستخدام مكتبة @mui/x-data-grid. يعرض الجدول 3 صفوف و 4 أعمدة (ID, Name, Email, Age) مع ميزات مثل تحديد الصفوف باستخدام مربعات اختيار (checkboxes) والتحكم في عدد الصفوف المعروضة في الصفحة (pageSize). الجدول يتميز بواجهة مستخدم سهلة التعامل ومتكاملة مع التصميم العصري الخاص بـ Material-UI.
StatsCard.js
				
					import React from 'react';
import { Card, CardContent, Typography } from '@mui/material';
function StatsCard({ title, value }) {
  return (
    
      
        
          {value}
         
        
          {title}
         
       
     
  );
}
export default StatsCard;
 
				
			الهدف من الكود
الكود يُنشئ بطاقة إحصائيات يمكن استخدامها لعرض قيم مثل عدد المستخدمين أو الإيرادات. البطاقة تحتوي على عنصرين رئيسيين: القيمة و العنوان، مع تنسيق بسيط باستخدام مكتبة Material-UI. يتم تخصيص البطاقة بألوان وخطوط مميزة لجعلها تتماشى مع تصميم واجهة المستخدم.
Notifications.js
				
					import React, { useState } from 'react';
import { Snackbar, Button } from '@mui/material';
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import { faBell } from '@fortawesome/free-solid-svg-icons';
function Notifications() {
  const [open, setOpen] = useState(false);
  const handleClick = () => {
    setOpen(true);
  };
  const handleClose = () => {
    setOpen(false);
  };
  return (
    
      
       
				
			الهدف من الكود
الكود يُنشئ مكون إشعارات بسيط باستخدام Snackbar و Button من مكتبة Material-UI. عندما يضغط المستخدم على الزر الذي يحتوي على أيقونة الجرس، يظهر إشعار في أسفل الشاشة لمدة 6 ثوانٍ ثم يختفي تلقائيًا. كما يمكن إغلاق الإشعار يدويًا بالنقر عليه أو خارجه.
دمج المكونات
App.js
				
					import React from 'react';
import Sidebar from './Sidebar';
import Navbar from './Navbar';
import Content from './Content';
function App() {
  return (
    
       
				
			الشــــــــــــرح
- يتم استيراد مكتبة React.
- يتم استيراد المكونات الثلاثة الرئيسية:- Sidebar: الشريط الجانبي للتطبيق.
- Navbar: شريط التنقل في أعلى الصفحة.
- Content: المحتوى الرئيسي الذي يظهر في الصفحة بعد شريط التنقل.
 
 
- div الخارجي:
- يحتوي على مكونات التطبيق ويتم تطبيق نمط display: 'flex'لجعل المحتويات تظهر بشكل أفقي.
 
- يحتوي على مكونات التطبيق ويتم تطبيق نمط 
- Sidebar:- يتم عرض مكون الشريط الجانبي، والذي يشغل مساحة ثابتة إلى اليسار.
 
- div الداخلي:- يحتوي على مكونات NavbarوContent.
- خاصية flexGrow: 1تعني أن هذا الجزء سيأخذ المساحة المتبقية المتاحة من الشاشة بعد تخصيص المساحة للشريط الجانبي.
 
- يحتوي على مكونات 
- Navbar:- مكون شريط التنقل الذي يظهر في أعلى الصفحة.
 
- Content:- مكون المحتوى الرئيسي الذي يحتوي على البيانات أو الرسومات أو أي محتوى آخر يظهر أسفل شريط التنقل.
 
 
بذلك نكون صممنا داشبورد باستخدام رياكت بالصورة الاخيرة لة
Sharing to


 
								 
								 
								 
								




