Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d5cfed24ca | ||
|
|
f018da21c1 |
@@ -10,6 +10,7 @@ import {
|
|||||||
DeleteOutlined,
|
DeleteOutlined,
|
||||||
CheckCircleOutlined,
|
CheckCircleOutlined,
|
||||||
PlusOutlined,
|
PlusOutlined,
|
||||||
|
FileOutlined,
|
||||||
} from '@ant-design/icons';
|
} from '@ant-design/icons';
|
||||||
|
|
||||||
export default function CampaignsPage() {
|
export default function CampaignsPage() {
|
||||||
@@ -195,7 +196,30 @@ export default function CampaignsPage() {
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{!campaigns || campaigns.length === 0 ? (
|
||||||
|
<div className="bg-white rounded-lg border border-gray-200 p-12 text-center shadow-sm">
|
||||||
|
<div className="max-w-sm mx-auto">
|
||||||
|
<div className="text-gray-400 mb-4">
|
||||||
|
<FileOutlined className="text-[48px] mx-auto" />
|
||||||
|
</div>
|
||||||
|
<h3 className="text-lg font-medium text-gray-900 mb-2">
|
||||||
|
No campaigns yet
|
||||||
|
</h3>
|
||||||
|
<p className="text-gray-500 mb-6">
|
||||||
|
Get started by creating your first QR campaign.
|
||||||
|
</p>
|
||||||
|
<button
|
||||||
|
onClick={() => setShowCreateModal(true)}
|
||||||
|
className="inline-flex items-center gap-2 bg-primary-500 text-white px-4 py-2 rounded-lg hover:bg-primary-600 transition-colors cursor-pointer"
|
||||||
|
>
|
||||||
|
<PlusOutlined />
|
||||||
|
Create Your First Campaign
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
) : (
|
||||||
<DataTable data={campaigns} columns={columns} pageSize={10} />
|
<DataTable data={campaigns} columns={columns} pageSize={10} />
|
||||||
|
)}
|
||||||
|
|
||||||
{/* Create Campaign Modal */}
|
{/* Create Campaign Modal */}
|
||||||
{showCreateModal && (
|
{showCreateModal && (
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { useState, useEffect } from 'react';
|
|||||||
import { ColumnDef } from '@tanstack/react-table';
|
import { ColumnDef } from '@tanstack/react-table';
|
||||||
import { DataTable } from '@imphnen-frontend-service/ui/organisms';
|
import { DataTable } from '@imphnen-frontend-service/ui/organisms';
|
||||||
import { userService, User } from '../../features/admin/api/user.service';
|
import { userService, User } from '../../features/admin/api/user.service';
|
||||||
import { DeleteOutlined, EditOutlined } from '@ant-design/icons';
|
import { DeleteOutlined, EditOutlined, UserOutlined } from '@ant-design/icons';
|
||||||
|
|
||||||
export default function UsersPage() {
|
export default function UsersPage() {
|
||||||
const [users, setUsers] = useState<User[]>([]);
|
const [users, setUsers] = useState<User[]>([]);
|
||||||
@@ -193,7 +193,23 @@ export default function UsersPage() {
|
|||||||
<p className="text-gray-600 mt-1">Manage users and their roles</p>
|
<p className="text-gray-600 mt-1">Manage users and their roles</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{!users || users.length === 0 ? (
|
||||||
|
<div className="bg-white rounded-lg border border-gray-200 p-12 text-center shadown-sm">
|
||||||
|
<div className="max-w-sm mx-auto">
|
||||||
|
<div className="text-gray-400 mb-4">
|
||||||
|
<UserOutlined className="text-[48px]" />
|
||||||
|
</div>
|
||||||
|
<h3 className="text-lg font-medium text-gray-900 mb-2">
|
||||||
|
No users found
|
||||||
|
</h3>
|
||||||
|
<p className="text-gray-500">
|
||||||
|
There are currently no users in the system.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
) : (
|
||||||
<DataTable data={users} columns={columns} pageSize={10} />
|
<DataTable data={users} columns={columns} pageSize={10} />
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user