export const PERMISSIONS = {
  DASHBOARD_VIEW: 'dashboard.view',

  // Granular per-widget visibility, layered on top of DASHBOARD_VIEW —
  // gates individual sections/cards so a specific employee's dashboard can
  // be trimmed down via a per-employee deny override without touching
  // their role. Kept as a flat namespace (kpi.* / widget.*) matching the
  // KpiGrid card ids and DashboardPage section names 1:1.
  DASHBOARD_KPI_TODAYS_ORDERS: 'dashboard.kpi.todays-orders',
  DASHBOARD_KPI_PENDING_ORDERS: 'dashboard.kpi.pending-orders',
  DASHBOARD_KPI_COMPLETED_ORDERS: 'dashboard.kpi.completed-orders',
  DASHBOARD_KPI_CANCELLED_ORDERS: 'dashboard.kpi.cancelled-orders',
  DASHBOARD_KPI_DISPATCH_TODAY: 'dashboard.kpi.dispatch-today',
  DASHBOARD_KPI_JO_PENDING: 'dashboard.kpi.jo-pending',
  DASHBOARD_KPI_STAGE_PENDING: 'dashboard.kpi.stage-pending',
  DASHBOARD_KPI_SO_PENDING: 'dashboard.kpi.so-pending',
  DASHBOARD_KPI_STAGE_IDLE: 'dashboard.kpi.stage-idle',
  DASHBOARD_KPI_ORDER_SUMMARY: 'dashboard.kpi.order-summary',
  DASHBOARD_KPI_DISPATCH_SUMMARY: 'dashboard.kpi.dispatch-summary',
  DASHBOARD_KPI_PENDING_DELIVERY: 'dashboard.kpi.pending-delivery',
  DASHBOARD_KPI_WIRE_SIZE_CLUB: 'dashboard.kpi.wire-size-club',
  DASHBOARD_KPI_RETURNED_ITEMS: 'dashboard.kpi.returned-items',

  DASHBOARD_WIDGET_RECENT_ACTIVITIES: 'dashboard.widget.recent-activities',
  DASHBOARD_WIDGET_MONTHLY_ORDERS_CHART: 'dashboard.widget.monthly-orders-chart',
  DASHBOARD_WIDGET_ORDERS_SUMMARY: 'dashboard.widget.orders-summary',
  DASHBOARD_WIDGET_DISPATCH_SUMMARY: 'dashboard.widget.dispatch-summary',
  DASHBOARD_WIDGET_UPCOMING_DELIVERIES: 'dashboard.widget.upcoming-deliveries',
  DASHBOARD_WIDGET_TOP_CUSTOMERS: 'dashboard.widget.top-customers',
  DASHBOARD_WIDGET_MONTHLY_PRODUCTION_CHART: 'dashboard.widget.monthly-production-chart',
  DASHBOARD_WIDGET_DISPATCH_ANALYSIS_CHART: 'dashboard.widget.dispatch-analysis-chart',
  DASHBOARD_WIDGET_CUSTOMER_ORDERS_CHART: 'dashboard.widget.customer-orders-chart',

  ORDERS_VIEW: 'orders.view',
  ORDERS_CREATE: 'orders.create',
  ORDERS_EDIT: 'orders.edit',
  ORDERS_DELETE: 'orders.delete',
  ORDERS_EXPORT: 'orders.export',
  ORDERS_DISPATCH_HISTORY_EDIT: 'orders.dispatch-history.edit',
  ORDERS_DISPATCH_REVERT: 'orders.dispatch-history.revert',
  ORDERS_APPROVE: 'orders.approve',
  ORDERS_STAGE_UPDATE: 'orders.stage.update',
  ORDERS_DISPATCH: 'orders.dispatch',
  ORDERS_JO_NO_EDIT: 'orders.jo-no.edit',

  ORDERS_RETURN_VIEW: 'orders.return.view',
  ORDERS_RETURN_REQUEST: 'orders.return.request',
  ORDERS_RETURN_APPROVE: 'orders.return.approve',
  // Undoes an already-approved return (status 'active', not yet
  // redelivered) — restores the line's dispatched counters and drops the
  // "Returned" badge, putting it back to a normal delivered line. Separate
  // from ORDERS_RETURN_APPROVE so approving and reverting can be granted
  // independently, matching this codebase's existing pattern of splitting
  // sensitive actions into their own permission (see the dispatch
  // permission split, 20260829000003).
  ORDERS_RETURN_REVERT: 'orders.return.revert',

  CLIENTS_VIEW: 'master.clients.view',
  CLIENTS_CREATE: 'master.clients.create',
  CLIENTS_EDIT: 'master.clients.edit',
  CLIENTS_DELETE: 'master.clients.delete',

  ROLES_VIEW: 'master.roles.view',
  ROLES_CREATE: 'master.roles.create',
  ROLES_EDIT: 'master.roles.edit',
  ROLES_DELETE: 'master.roles.delete',

  EMPLOYEES_VIEW: 'master.employees.view',
  EMPLOYEES_CREATE: 'master.employees.create',
  EMPLOYEES_EDIT: 'master.employees.edit',
  EMPLOYEES_DELETE: 'master.employees.delete',

  PRODUCTS_VIEW: 'master.products.view',
  PRODUCTS_CREATE: 'master.products.create',
  PRODUCTS_EDIT: 'master.products.edit',
  PRODUCTS_DELETE: 'master.products.delete',

  STAGES_VIEW: 'master.stages.view',
  STAGES_CREATE: 'master.stages.create',
  STAGES_EDIT: 'master.stages.edit',
  STAGES_DELETE: 'master.stages.delete',

  OFFICE_CALENDAR_VIEW: 'master.office-calendar.view',
  OFFICE_CALENDAR_EDIT: 'master.office-calendar.edit',

  REPORTS_VIEW: 'reports.view',

  LOGS_VIEW: 'logs.view',
} as const;
