// Admin screens batch 4 — Doctors & labs, Pharmacists/staff, Settings
const Astyles4 = { fontFamily: 'Inter, -apple-system, system-ui, sans-serif' };
// ═════════════════════════════════════════════════════════════
// AD-9) DOCTORS & LABS (partners)
// ═════════════════════════════════════════════════════════════
function AdminDoctors() {
const docs = [
{ name: 'Dr. Priya Mehta', spec: 'General physician', reg: 'KMC-48201', consults: 2140, rating: '4.9', fee: 199, status: 'Online', tone: 'mint', hue: C.blue400 },
{ name: 'Dr. Rohan Iyer', spec: 'Dermatologist', reg: 'KMC-39112', consults: 1612, rating: '4.8', fee: 349, status: 'Online', tone: 'mint', hue: C.rose500 },
{ name: 'Dr. Anjali Rao', spec: 'Pediatrician', reg: 'KMC-51904', consults: 3520, rating: '4.9', fee: 299, status: 'Offline', tone: 'gray', hue: C.mint500 },
{ name: 'Dr. Karan Shah', spec: 'Psychiatrist', reg: 'KMC-44820', consults: 982, rating: '4.7', fee: 499, status: 'On call', tone: 'amber', hue: C.amber500 },
];
const labs = [
{ name: 'PathCare Diagnostics', accred: 'NABL · ISO 15189', tests: 820, tat: '12 hrs', status: 'Active', tone: 'mint' },
{ name: 'MetroLabs', accred: 'NABL', tests: 540, tat: '24 hrs', status: 'Active', tone: 'mint' },
{ name: 'CityHealth Labs', accred: 'NABL', tests: 410, tat: '18 hrs', status: 'Onboarding', tone: 'amber' },
];
return (
Add partner}>
{/* Tabs */}
{[{ l: 'Doctors', c: 512, on: true }, { l: 'Partner labs', c: 14, on: false }, { l: 'Pending approval', c: 3, on: false, urgent: true }].map((t, i) => (
{t.l}
{t.c}
))}
{/* Doctors table */}
{['DOCTOR', 'SPECIALTY', 'REG. NO.', 'CONSULTS', 'RATING', 'FEE', 'STATUS', ''].map((h, i) => (
{h}
))}
{docs.map((d, i) => (
{d.name.split(' ').slice(1).map(s => s[0]).join('')}
{d.name}
{d.spec}
{d.reg}
{d.consults.toLocaleString()}
{d.rating}
₹{d.fee}
))}
{/* Labs */}
Partner labs
{labs.map((l, i) => (
))}
);
}
// ═════════════════════════════════════════════════════════════
// AD-10) PHARMACISTS / STAFF
// ═════════════════════════════════════════════════════════════
function AdminStaff() {
const staff = [
{ name: 'Suresh Verma', role: 'Store admin', init: 'SV', reg: '—', shift: 'Full day', verified: 312, status: 'On shift', tone: 'mint', hue: C.blue400 },
{ name: 'Dr. Kavya Reddy', role: 'Lead pharmacist', init: 'KR', reg: 'KSP-22014', shift: '9 AM – 6 PM', verified: 1240, status: 'On shift', tone: 'mint', hue: C.mint500 },
{ name: 'Manish Gupta', role: 'Pharmacist', init: 'MG', reg: 'KSP-30881', shift: '12 PM – 9 PM', verified: 820, status: 'On shift', tone: 'mint', hue: C.amber500 },
{ name: 'Ritu Singh', role: 'Pharmacist', init: 'RS', reg: 'KSP-41200', shift: 'Off today', verified: 640, status: 'Off duty', tone: 'gray', hue: C.rose500 },
{ name: 'Arjun Pillai', role: 'Packing & dispatch', init: 'AP', reg: '—', shift: '8 AM – 5 PM', verified: 0, status: 'On shift', tone: 'mint', hue: C.navy700 },
];
return (
Invite member}>
{/* Summary */}
{[
{ l: 'Team members', v: '5', Icon: IconUser, hue: 'blue' },
{ l: 'Licensed pharmacists', v: '3', Icon: IconRx, hue: 'mint' },
{ l: 'Rx verified today', v: '46', Icon: IconCheck, hue: 'amber' },
{ l: 'Avg review time', v: '3m 20s', Icon: IconClock, hue: 'rose' },
].map((s, i) => {
const palettes = { blue: { bg: C.blue50, fg: C.blue600 }, mint: { bg: C.mint100, fg: C.mint500 }, amber: { bg: C.amber100, fg: C.amber500 }, rose: { bg: C.rose100, fg: C.rose500 } };
const p = palettes[s.hue];
return (
);
})}
{/* Staff table */}
{['MEMBER', 'ROLE', 'LICENSE', 'SHIFT', 'Rx VERIFIED', 'STATUS', 'PERMISSIONS'].map((h, i) => (
{h}
))}
{staff.map((s, i) => (
{s.role}
{s.reg}
{s.shift}
{s.verified || '—'}
Manage →
))}
);
}
// ═════════════════════════════════════════════════════════════
// AD-11) SETTINGS
// ═════════════════════════════════════════════════════════════
function AdminSettings() {
const Toggle = ({ on }) => (
);
return (
{/* Settings nav */}
{[
{ l: 'Store profile', Icon: IconLoc, on: true },
{ l: 'Delivery zones', Icon: IconTruck },
{ l: 'Payments & payout', Icon: IconCard },
{ l: 'Taxes & invoicing', Icon: IconBox },
{ l: 'Notifications', Icon: IconBell },
{ l: 'Compliance & license', Icon: IconShield },
{ l: 'API & integrations', Icon: IconFilter },
].map((m, i) => (
{m.l}
))}
{/* Settings content */}
{/* Store profile */}
Store profile
Public details shown to customers
{[
{ l: 'STORE NAME', v: 'Janaushadhi · Indiranagar' },
{ l: 'LICENSE NO.', v: 'DL-560038-RX', mono: true },
{ l: 'PHONE', v: '+91 80 4710 2200', mono: true },
{ l: 'GSTIN', v: '29AAACJ1234M1Z9', mono: true },
].map((f, i) => (
))}
ADDRESS
12, 100ft Road, HAL 2nd Stage, Indiranagar, Bengaluru, Karnataka 560038
{/* Operating hours */}
Operations
Delivery and availability controls
{[
{ l: 'Accept new orders', s: 'Store is currently open · 8 AM – 11 PM', on: true },
{ l: 'Express delivery (28 min)', s: 'Within 4 km radius', on: true },
{ l: 'Cash on delivery', s: 'For orders under ₹2,000', on: true },
{ l: 'Auto-assign riders', s: 'Assign nearest available rider on pack', on: true },
{ l: 'Pause Rx-only items', s: 'Hide prescription items when no pharmacist on shift', on: false },
].map((r, i, a) => (
))}
{/* Compliance */}
Compliance & licenses
{[
{ l: 'Drug License (Form 20 & 21)', exp: 'Valid till Mar 2028', tone: 'mint' },
{ l: 'GST registration', exp: 'Active', tone: 'mint' },
{ l: 'Pharmacist registration (KSP)', exp: 'Renew in 42 days', tone: 'amber' },
].map((c, i) => (
))}
Cancel
Save changes
);
}
Object.assign(window, { AdminDoctors, AdminStaff, AdminSettings });