diff --git a/src/assets/icons/logout.svg b/src/assets/icons/logout.svg
new file mode 100644
index 0000000..710c9e7
--- /dev/null
+++ b/src/assets/icons/logout.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/components/Icon/icons.ts b/src/components/Icon/icons.ts
index a99a3e7..f82b00b 100644
--- a/src/components/Icon/icons.ts
+++ b/src/components/Icon/icons.ts
@@ -6,6 +6,7 @@
// icons are ever imported, so an icon that no call site uses never makes it into a chunk.
import ArrowRight from '../../assets/icons/arrow-right.svg?react'
import Copy from '../../assets/icons/copy.svg?react'
+import Logout from '../../assets/icons/logout.svg?react'
import Book from '../../assets/icons/book.svg?react'
import Calendar from '../../assets/icons/calendar.svg?react'
import Call from '../../assets/icons/call.svg?react'
@@ -30,6 +31,7 @@ import Success from '../../assets/icons/success.svg?react'
export const icons = {
arrowRight: ArrowRight,
copy: Copy,
+ logout: Logout,
book: Book,
calendar: Calendar,
call: Call,
diff --git a/src/components/LogoutModal.tsx b/src/components/LogoutModal.tsx
new file mode 100644
index 0000000..3aadf4b
--- /dev/null
+++ b/src/components/LogoutModal.tsx
@@ -0,0 +1,29 @@
+import { createPortal } from 'react-dom'
+
+export default function LogoutModal({ onConfirm, onCancel }: { onConfirm: () => void; onCancel: () => void }) {
+ return createPortal(
+ <>
+
+
+
میخواهید از حساب کاربری خود خارج شوید؟
+
+
+
+
+
+ >,
+ document.body,
+ )
+}
diff --git a/src/pages/CafeOwnerPanel.tsx b/src/pages/CafeOwnerPanel.tsx
index f7a6500..5077729 100644
--- a/src/pages/CafeOwnerPanel.tsx
+++ b/src/pages/CafeOwnerPanel.tsx
@@ -1,81 +1,136 @@
-import { ReactNode, useEffect, useState } from 'react'
-import { useNavigate } from 'react-router-dom'
-import Icon from '../components/Icon'
-import SupportButton from '../components/SupportButton'
-import { useNow } from '../hooks/useNow'
-import { CafeSchedule, fetchCafeSchedules } from '../services/campaignApi'
-import { getCafeUuid } from '../utils/cafe'
-import HostBanner from '../assets/images/banners/Host-banner.jpg'
-import { formatPersianNumber } from '../utils/formatNumber'
-import { formatMatchLabel } from '../utils/matchCountdown'
+import { ReactNode, useEffect, useState } from "react";
+import { useNavigate } from "react-router-dom";
+import Icon from "../components/Icon";
+import SupportButton from "../components/SupportButton";
+import LogoutModal from "../components/LogoutModal";
+import { logout } from "../utils/logout";
+import { useNow } from "../hooks/useNow";
+import { CafeSchedule, fetchCafeSchedules } from "../services/campaignApi";
+import { getCafeUuid } from "../utils/cafe";
+import HostBanner from "../assets/images/banners/Host-banner.jpg";
+import { formatPersianNumber } from "../utils/formatNumber";
+import { formatMatchLabel } from "../utils/matchCountdown";
-function PanelRow({ icon, label, onClick }: { icon: ReactNode; label: string; onClick?: () => void }) {
+function PanelRow({
+ icon,
+ label,
+ onClick,
+}: {
+ icon: ReactNode;
+ label: string;
+ onClick?: () => void;
+}) {
return (
-