diff --git a/RestroHub-FrontEnd/src/components/admin/EmptyState.jsx b/RestroHub-FrontEnd/src/components/admin/EmptyState.jsx new file mode 100644 index 0000000..1c8e538 --- /dev/null +++ b/RestroHub-FrontEnd/src/components/admin/EmptyState.jsx @@ -0,0 +1,33 @@ +const EmptyState = ({ + icon: Icon, + title, + description, + actionLabel, + onAction, + className = "", +}) => ( +
+ {Icon ? ( +
+ +
+ ) : null} +

{title}

+ {description ? ( +

{description}

+ ) : null} + {actionLabel && onAction ? ( + + ) : null} +
+); + +export default EmptyState; diff --git a/RestroHub-FrontEnd/src/components/admin/menu/menuCard/FoodItemsGrid.jsx b/RestroHub-FrontEnd/src/components/admin/menu/menuCard/FoodItemsGrid.jsx index 8e57f14..69c1dfd 100644 --- a/RestroHub-FrontEnd/src/components/admin/menu/menuCard/FoodItemsGrid.jsx +++ b/RestroHub-FrontEnd/src/components/admin/menu/menuCard/FoodItemsGrid.jsx @@ -1,6 +1,7 @@ import { useState, useEffect, forwardRef, useImperativeHandle } from 'react'; import { Search, RefreshCw, AlertCircle, UtensilsCrossed } from 'lucide-react'; import MenuItemCard from './FoodItemCard'; +import EmptyState from '../../EmptyState'; import api from "@services/common/api"; @@ -258,40 +259,15 @@ const MenuItemsGrid = forwardRef(({ selectedCategory, onEditItem }, ref) => { ) : filteredItems.length === 0 ? ( - // ------------------------------------ - // EMPTY STATE - Responsive - // ------------------------------------ -
- -

- No items found -

-

- {searchQuery + -

+ : 'Add your first menu item to get started.' + } + /> ) : ( // ------------------------------------ diff --git a/RestroHub-FrontEnd/src/components/admin/menu/menuCard/MenusGrid.jsx b/RestroHub-FrontEnd/src/components/admin/menu/menuCard/MenusGrid.jsx index f5e726c..191ed7b 100644 --- a/RestroHub-FrontEnd/src/components/admin/menu/menuCard/MenusGrid.jsx +++ b/RestroHub-FrontEnd/src/components/admin/menu/menuCard/MenusGrid.jsx @@ -32,6 +32,7 @@ import { BadgePercent, } from 'lucide-react'; import { Dialog } from '@headlessui/react'; +import EmptyState from '../../EmptyState'; import api from "@services/common/api"; // ============================================ @@ -1143,28 +1144,17 @@ const MenusGrid = forwardRef(({ onEditMenu, onCreateMenu }, ref) => { ) : filteredMenus.length === 0 ? ( -
-
- -
-

- {searchQuery ? 'No menus found' : 'No menus yet'} -

-

- {searchQuery + - {!searchQuery && ( - - )} -

+ : 'Create your first menu to organize your food items.' + } + actionLabel={!searchQuery ? 'Create Your First Menu' : undefined} + onAction={!searchQuery ? onCreateMenu : undefined} + /> ) : (
{filteredMenus.map((menu) => ( diff --git a/RestroHub-FrontEnd/src/components/admin/orders/orderComponents/OrdersGrid.jsx b/RestroHub-FrontEnd/src/components/admin/orders/orderComponents/OrdersGrid.jsx index cbb7a0e..7233210 100644 --- a/RestroHub-FrontEnd/src/components/admin/orders/orderComponents/OrdersGrid.jsx +++ b/RestroHub-FrontEnd/src/components/admin/orders/orderComponents/OrdersGrid.jsx @@ -1,6 +1,7 @@ import { useState, useEffect } from 'react'; import { RefreshCw, AlertCircle, ClipboardList } from 'lucide-react'; import OrderCard from './OrderCard'; +import EmptyState from '../../EmptyState'; import api from "@services/common/api"; // ============================================ @@ -203,17 +204,17 @@ const OrdersGrid = ({ activeFilter, searchQuery, onOrdersChange }) => { if (filteredOrders.length === 0) { return ( -
- -

No orders found

-

- {searchQuery + -

+ : 'New orders will appear here once customers place them.' + } + /> ); }