import { useState } from 'react';
import Switch from './Switch';
import { formatNumber } from '../../lib/utils';
import type { CatalogResource } from '../../hooks/usePermissionCatalog';
const ChevronDown = ({ open }: { open: boolean }) => (
);
/**
* فهرست آکاردئونیِ مجوزها — یک بخش به ازای هر منبعِ کاتالوگ.
*
* آکاردئون و نه جدول: تعداد منابع با هر صفحهٔ تازه رشد میکند و در ۳۹۰px یک جدولِ
* ۶ ستونه اسکرول افقی میخواهد. همه بسته شروع میشوند تا ارتفاع اولیه ثابت بماند
* و کاربر خودش سراغ بخشِ موردنظرش برود.
*/
export default function PermissionAccordions({
permissions,
onChange,
disabled,
isClinic,
resources,
}: {
permissions: Record>;
onChange: (section: string, item: string, value: boolean) => void;
disabled?: boolean;
isClinic: boolean;
resources: CatalogResource[];
}) {
const [openKeys, setOpenKeys] = useState>(new Set());
const toggleOpen = (key: string) => {
setOpenKeys((prev) => {
const next = new Set(prev);
next.has(key) ? next.delete(key) : next.add(key);
return next;
});
};
// منابع clinic_only (مثل مدیریت پزشکان کلینیک) فقط برای مالکِ کلینیک دیده میشوند.
const sections = resources.filter((r) => !r.clinic_only || isClinic);
/** شمارِ روشنها روی هدر: بدون بازکردن هم معلوم است این بخش چه وضعی دارد. */
const grantedCount = (section: CatalogResource) =>
section.actions.filter((a) => permissions[section.key]?.[a.key]).length;
return (