diff --git a/src/components/layout/Sidebar.tsx b/src/components/layout/Sidebar.tsx
index da376fe..770dfb3 100644
--- a/src/components/layout/Sidebar.tsx
+++ b/src/components/layout/Sidebar.tsx
@@ -117,34 +117,6 @@ const tenantAdminPlatformMenu: MenuItem[] = [
];
const tenantAdminPlatformServiceMenu: MenuItem[] = [
- {
- icon: Bot,
- label: "AI Services",
- isGroup: true,
- children: [
- {
- label: "Completion History",
- path: "/tenant/ai/completions",
- requiredPermission: { resource: "ai" },
- },
- {
- label: "Prompt Management",
- path: "/tenant/ai/prompts",
- requiredPermission: { resource: "ai" },
- },
- {
- label: "Tenant Config",
- path: "/tenant/ai/config",
- requiredPermission: { resource: "ai" },
- },
- {
- label: "Knowledge (RAG)",
- path: "/tenant/ai/knowledge",
- requiredPermission: { resource: "ai" },
- },
- ],
- requiredPermission: { resource: "ai" },
- },
{
icon: Paperclip,
label: "File Attachments",
@@ -209,6 +181,34 @@ const tenantAdminPlatformServiceMenu: MenuItem[] = [
],
requiredPermission: { resource: "document" },
},
+ {
+ icon: Bot,
+ label: "AI Services",
+ isGroup: true,
+ children: [
+ {
+ label: "Completion History",
+ path: "/tenant/ai/completions",
+ requiredPermission: { resource: "ai" },
+ },
+ {
+ label: "Prompt Management",
+ path: "/tenant/ai/prompts",
+ requiredPermission: { resource: "ai" },
+ },
+ {
+ label: "Tenant Config",
+ path: "/tenant/ai/config",
+ requiredPermission: { resource: "ai" },
+ },
+ {
+ label: "Knowledge (RAG)",
+ path: "/tenant/ai/knowledge",
+ requiredPermission: { resource: "ai" },
+ },
+ ],
+ requiredPermission: { resource: "ai" },
+ },
{ icon: Package, label: "Modules", path: "/tenant/modules" },
];
@@ -248,7 +248,7 @@ const tenantAdminSystemMenu: MenuItem[] = [
{
label: "Failed Emails",
path: "/tenant/settings/failed-emails",
- }
+ },
],
requiredPermission: { resource: "tenants" },
},
@@ -624,7 +624,7 @@ export const Sidebar = ({ isOpen, onClose }: SidebarProps) => {
{roleName}
@@ -685,7 +685,7 @@ export const Sidebar = ({ isOpen, onClose }: SidebarProps) => {
alt="Logo"
className="h-9 w-auto max-w-[180px] object-contain"
fallback={
-
@@ -711,7 +711,7 @@ export const Sidebar = ({ isOpen, onClose }: SidebarProps) => {
{roleName}
@@ -728,7 +728,10 @@ export const Sidebar = ({ isOpen, onClose }: SidebarProps) => {
)}
{platformServiceMenu.length > 0 && (
-
+
)}
{/* System Menu */}
diff --git a/src/components/shared/FailedEmailsTable.tsx b/src/components/shared/FailedEmailsTable.tsx
index 4c696b8..f3531b6 100644
--- a/src/components/shared/FailedEmailsTable.tsx
+++ b/src/components/shared/FailedEmailsTable.tsx
@@ -15,6 +15,7 @@ export const FailedEmailsTable: React.FC = () => {
const [total, setTotal] = useState(0);
const [currentPage, setCurrentPage] = useState(1);
const [limit, setLimit] = useState(50);
+ const [error, setError] = useState
(null);
const [selectedEmail, setSelectedEmail] = useState(null);
const [isModalVisible, setIsModalVisible] = useState(false);
@@ -30,9 +31,9 @@ export const FailedEmailsTable: React.FC = () => {
setTotal(res.total || 0);
setCurrentPage(page);
} catch (error: any) {
- toast.error('Error fetching failed emails', {
- description: error.message
- });
+ setError(
+ error?.response?.data?.error?.message || "Failed to load failed emails",
+ );
} finally {
setLoading(false);
}
@@ -181,6 +182,7 @@ export const FailedEmailsTable: React.FC = () => {
keyExtractor={(item) => item.id}
isLoading={loading}
emptyMessage="No failed emails found"
+ error={error}
/>
{total > limit && (
diff --git a/src/components/shared/MultiselectPaginatedSelect.tsx b/src/components/shared/MultiselectPaginatedSelect.tsx
index f4062b0..12d1658 100644
--- a/src/components/shared/MultiselectPaginatedSelect.tsx
+++ b/src/components/shared/MultiselectPaginatedSelect.tsx
@@ -249,7 +249,7 @@ export const MultiselectPaginatedSelect = ({
className="flex items-center gap-1.5 text-[13px] font-medium text-[#0e1b2a]"
>
{label}
- {required && *}
+ {required && *}