diff --git a/assets/admin/App.tsx b/assets/admin/App.tsx index 2fa05149..c5456448 100644 --- a/assets/admin/App.tsx +++ b/assets/admin/App.tsx @@ -51,6 +51,7 @@ import ClinicFormPage from './pages/ClinicFormPage'; import PreRegistrationsPage from './pages/PreRegistrationsPage'; import StaffPage from './pages/StaffPage'; import SubscriptionPage from './pages/SubscriptionPage'; +import DiscountsPage from './pages/DiscountsPage'; import ClinicServicesPage from './pages/ClinicServicesPage'; import SmsWalletPage from './pages/SmsWalletPage'; import MySecretariesPage from './pages/MySecretariesPage'; @@ -225,6 +226,7 @@ export default function App() { } /> } /> } /> + } /> } /> } /> } /> diff --git a/assets/admin/components/layout/SettingsLayout.tsx b/assets/admin/components/layout/SettingsLayout.tsx index c7c26f61..117c2770 100644 --- a/assets/admin/components/layout/SettingsLayout.tsx +++ b/assets/admin/components/layout/SettingsLayout.tsx @@ -2,7 +2,7 @@ import React from 'react'; import { CreditCardIcon, UserIcon, CalendarDaysIcon, BuildingOffice2Icon, BanknotesIcon, UsersIcon, ShieldCheckIcon, - TagIcon, ChatBubbleLeftRightIcon, UserCircleIcon, UserPlusIcon, + TagIcon, ChatBubbleLeftRightIcon, UserCircleIcon, UserPlusIcon, ReceiptPercentIcon, } from '@heroicons/react/24/outline'; import PurchaseSubscriptionSidebar from './PurchaseSubscriptionSidebar'; @@ -28,6 +28,7 @@ export const SETTINGS_MENU: SettingsMenuItem[] = [ { key: 'secretary', label: 'مدیریت منشی', icon: UsersIcon, to: '/admin/my-secretaries' }, { key: 'staff', label: 'پرسنل', icon: UserPlusIcon, to: '/admin/staff' }, { key: 'insurance', label: 'مدیریت بیمه', icon: ShieldCheckIcon, to: '/admin/insurance-pricing' }, + { key: 'discounts', label: 'مدیریت تخفیف‌ها', icon: ReceiptPercentIcon, to: '/admin/discounts', roles: ['doctor', 'clinic'] }, { key: 'tags', label: 'برچسب‌ها', icon: TagIcon, to: '/admin/tags-settings' }, { key: 'sms', label: 'پیامک‌ها', icon: ChatBubbleLeftRightIcon, to: '/admin/sms-wallet' }, { key: 'account', label: 'حساب کاربری', icon: UserCircleIcon, to: '/admin/account-settings' }, diff --git a/assets/admin/pages/DiscountsPage.tsx b/assets/admin/pages/DiscountsPage.tsx new file mode 100644 index 00000000..ffe0da1f --- /dev/null +++ b/assets/admin/pages/DiscountsPage.tsx @@ -0,0 +1,17 @@ +import SettingsLayout from '../components/layout/SettingsLayout'; +import DiscountTab from '../components/DiscountTab'; + +/** مدیریت تخفیف‌ها — بخش تنظیمات برای تعریف قوانین تخفیف عمومی (owner-scoped). */ +export default function DiscountsPage() { + return ( + +
+

مدیریت تخفیف‌ها

+ +
+
+ ); +} diff --git a/assets/admin/pages/SubscriptionPage.tsx b/assets/admin/pages/SubscriptionPage.tsx index 4d03ff69..4ba11c44 100644 --- a/assets/admin/pages/SubscriptionPage.tsx +++ b/assets/admin/pages/SubscriptionPage.tsx @@ -10,7 +10,6 @@ import { usePaymentConfig } from '../hooks/usePaymentConfig'; import { formatRial, formatNumber } from '../lib/utils'; import Modal from '../components/ui/Modal'; import SettingsLayout from '../components/layout/SettingsLayout'; -import DiscountTab from '../components/DiscountTab'; import { SparkleIcon, PlanCardPerson, CloseCircleFilled, GiftIcon, InfoCircleRedFilled, } from './subscriptionIcons'; @@ -56,7 +55,6 @@ export const planMetaOf = (name: string) => PLAN_META[name] ?? PLAN_META.free; export default function SubscriptionPage() { const qc = useQueryClient(); - const [tab, setTab] = useState<'plans' | 'discounts'>('plans'); const [purchaseTarget, setPurchaseTarget] = useState<{ period: SubscriptionPeriod; planName: string } | null>(null); const [selectedGateway, setSelectedGateway] = useState(''); @@ -124,14 +122,6 @@ export default function SubscriptionPage() { style={{ background: 'var(--surface)', minWidth: 0 }} className="px-4 py-4 md:px-6 md:py-6 rounded-[var(--r-lg)]" > -
- - -
- - {tab === 'discounts' ? ( - - ) : (
{/* ── Header: current plan (left) + title (right) ── */}
@@ -173,7 +163,6 @@ export default function SubscriptionPage() {
)}
- )}