@burdenoff/microfe-theglobalfuel 2026.801.1 → 2026.804.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/theglobalfuel/TheGlobalFuelRoot.d.ts.map +1 -1
  2. package/dist/theglobalfuel/TheGlobalFuelRoot.js +75 -51
  3. package/dist/theglobalfuel/TheGlobalFuelRoot.js.map +1 -1
  4. package/dist/theglobalfuel/TheGlobalFuelRoutes.d.ts.map +1 -1
  5. package/dist/theglobalfuel/TheGlobalFuelRoutes.js +37 -25
  6. package/dist/theglobalfuel/TheGlobalFuelRoutes.js.map +1 -1
  7. package/dist/theglobalfuel/components/StatusBadge.d.ts.map +1 -1
  8. package/dist/theglobalfuel/components/StatusBadge.js +19 -1
  9. package/dist/theglobalfuel/components/StatusBadge.js.map +1 -1
  10. package/dist/theglobalfuel/hooks/useTheGlobalFuelApi.d.ts +33 -1
  11. package/dist/theglobalfuel/hooks/useTheGlobalFuelApi.d.ts.map +1 -1
  12. package/dist/theglobalfuel/hooks/useTheGlobalFuelApi.js +170 -29
  13. package/dist/theglobalfuel/hooks/useTheGlobalFuelApi.js.map +1 -1
  14. package/dist/theglobalfuel/pages/esg-disclosures/EsgDisclosuresPage.d.ts +14 -0
  15. package/dist/theglobalfuel/pages/esg-disclosures/EsgDisclosuresPage.d.ts.map +1 -0
  16. package/dist/theglobalfuel/pages/esg-disclosures/EsgDisclosuresPage.js +496 -0
  17. package/dist/theglobalfuel/pages/esg-disclosures/EsgDisclosuresPage.js.map +1 -0
  18. package/dist/theglobalfuel/pages/safety/IncidentsPage.d.ts +15 -0
  19. package/dist/theglobalfuel/pages/safety/IncidentsPage.d.ts.map +1 -0
  20. package/dist/theglobalfuel/pages/safety/IncidentsPage.js +611 -0
  21. package/dist/theglobalfuel/pages/safety/IncidentsPage.js.map +1 -0
  22. package/dist/theglobalfuel/pages/safety/SafetyDashboardPage.d.ts +12 -0
  23. package/dist/theglobalfuel/pages/safety/SafetyDashboardPage.d.ts.map +1 -0
  24. package/dist/theglobalfuel/pages/safety/SafetyDashboardPage.js +175 -0
  25. package/dist/theglobalfuel/pages/safety/SafetyDashboardPage.js.map +1 -0
  26. package/dist/theglobalfuel/types/index.d.ts +122 -0
  27. package/dist/theglobalfuel/types/index.d.ts.map +1 -1
  28. package/dist/theglobalfuel/utils/pageContext.d.ts.map +1 -1
  29. package/dist/theglobalfuel/utils/pageContext.js +1 -0
  30. package/dist/theglobalfuel/utils/pageContext.js.map +1 -1
  31. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IncidentsPage.js","names":[],"sources":["../../../../src/theglobalfuel/pages/safety/IncidentsPage.tsx"],"sourcesContent":["/**\n * Incidents — process-safety / EHS incident register.\n * @module theglobalfuel/pages/safety\n *\n * Reads `theListSafetyIncidents` (filterable by category, severity, status and\n * asset); writes `theReportSafetyIncident`, `theTransitionSafetyIncident`,\n * `theUpdateIncidentInvestigation`, `theCreateCorrectiveAction` and\n * `theTransitionCorrectiveAction`. The investigation lifecycle (reported →\n * investigating → root cause → corrective action → closed) and the corrective\n * action closure lifecycle (open → in progress → verified → closed) are\n * validated state machines on the backend — the UI only offers the single legal\n * next step. No mock data.\n */\n\nimport { useMemo, useState } from 'react';\nimport { Plus, ShieldAlert, ArrowRight, ClipboardList } from 'lucide-react';\nimport {\n Button,\n Input,\n Label,\n Textarea,\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n ResponsiveDialog,\n ResponsiveDialogContent,\n ResponsiveDialogHeader,\n ResponsiveDialogTitle,\n ResponsiveDialogDescription,\n ResponsiveDialogFooter,\n} from '@burdenoff/fe-libs/ui';\nimport { PageLayout } from '../../components/PageLayout';\nimport { StatusBadge } from '../../components/StatusBadge';\nimport { DataTable, type Column } from '../../components/DataTable';\nimport { FilterTabs, type FilterOption } from '../../components/FilterTabs';\nimport { LoadingView, ErrorView } from '../../components/StateViews';\nimport { EmptyState } from '../../components/EmptyState';\nimport { Pagination } from '../../components/Pagination';\nimport {\n useTheAssets,\n useTheSafetyIncidents,\n useTheReportSafetyIncident,\n useTheTransitionSafetyIncident,\n useTheUpdateIncidentInvestigation,\n useTheCorrectiveActions,\n useTheCreateCorrectiveAction,\n useTheTransitionCorrectiveAction,\n useCursorPager,\n useNotify,\n useThePageView,\n useTheTranslation,\n} from '../../hooks';\nimport { formatDate, formatEnumLabel, toBackendDate } from '../../utils/formatters';\nimport type {\n TheSafetyIncident,\n TheSafetyIncidentCategory,\n TheSafetyIncidentSeverity,\n TheSafetyIncidentStatus,\n TheCorrectiveActionStatus,\n} from '../../types';\n\nconst CATEGORIES: TheSafetyIncidentCategory[] = [\n 'NEAR_MISS',\n 'INJURY',\n 'SPILL',\n 'RELEASE',\n 'EQUIPMENT_FAILURE',\n];\n\nconst SEVERITIES: TheSafetyIncidentSeverity[] = ['LOW', 'MEDIUM', 'HIGH', 'CRITICAL'];\n\nconst STATUS_FILTERS: FilterOption<TheSafetyIncidentStatus | 'ALL'>[] = [\n { value: 'ALL', label: 'All statuses' },\n { value: 'REPORTED', label: 'Reported' },\n { value: 'INVESTIGATING', label: 'Investigating' },\n { value: 'ROOT_CAUSE_IDENTIFIED', label: 'Root cause found' },\n { value: 'CORRECTIVE_ACTION', label: 'Corrective action' },\n { value: 'CLOSED', label: 'Closed' },\n];\n\n/** The single legal next step per incident status (mirrors INCIDENT_TRANSITIONS). */\nconst INCIDENT_NEXT: Partial<Record<TheSafetyIncidentStatus, TheSafetyIncidentStatus>> = {\n REPORTED: 'INVESTIGATING',\n INVESTIGATING: 'ROOT_CAUSE_IDENTIFIED',\n ROOT_CAUSE_IDENTIFIED: 'CORRECTIVE_ACTION',\n CORRECTIVE_ACTION: 'CLOSED',\n};\n\n/** The single legal next step per corrective action status. */\nconst ACTION_NEXT: Partial<Record<TheCorrectiveActionStatus, TheCorrectiveActionStatus>> = {\n OPEN: 'IN_PROGRESS',\n IN_PROGRESS: 'VERIFIED',\n VERIFIED: 'CLOSED',\n};\n\nconst PAGE_SIZE = 25;\n\nconst today = (): string => new Date().toISOString().slice(0, 10);\n\ninterface ReportFormState {\n title: string;\n category: TheSafetyIncidentCategory;\n severity: TheSafetyIncidentSeverity;\n occurredAt: string;\n assetId: string;\n involvedParties: string;\n description: string;\n notes: string;\n}\n\nconst emptyForm = (): ReportFormState => ({\n title: '',\n category: 'NEAR_MISS',\n severity: 'LOW',\n occurredAt: today(),\n assetId: '',\n involvedParties: '',\n description: '',\n notes: '',\n});\n\nexport function IncidentsPage() {\n useThePageView('safety-incidents');\n const t = useTheTranslation();\n const notify = useNotify();\n const [status, setStatus] = useState<TheSafetyIncidentStatus | 'ALL'>('ALL');\n const [category, setCategory] = useState<string>('ALL');\n const [severity, setSeverity] = useState<string>('ALL');\n const pager = useCursorPager();\n const [dialogOpen, setDialogOpen] = useState(false);\n const [form, setForm] = useState<ReportFormState>(emptyForm);\n const [formError, setFormError] = useState<string | null>(null);\n // Incident currently open in the manage dialog.\n const [manageId, setManageId] = useState<string | null>(null);\n const [transitioningId, setTransitioningId] = useState<string | null>(null);\n\n // Assets feed the filter Select, the report picker and the id→name map.\n const assetsQuery = useTheAssets({ pagination: { limit: 100 } });\n const assetMap = useMemo<Record<string, string>>(() => {\n const map: Record<string, string> = {};\n for (const a of assetsQuery.data?.items ?? []) map[a.id] = a.name;\n return map;\n }, [assetsQuery.data]);\n const assetOptions = assetsQuery.data?.items ?? [];\n\n const { data, isLoading, isError, refetch } = useTheSafetyIncidents({\n status: status === 'ALL' ? undefined : status,\n category: category === 'ALL' ? undefined : (category as TheSafetyIncidentCategory),\n severity: severity === 'ALL' ? undefined : (severity as TheSafetyIncidentSeverity),\n pagination: { limit: PAGE_SIZE, offset: pager.page * PAGE_SIZE },\n });\n const reportIncident = useTheReportSafetyIncident();\n const transitionIncident = useTheTransitionSafetyIncident();\n\n const rows = useMemo(() => data?.items ?? [], [data]);\n const managed = useMemo(() => rows.find((r) => r.id === manageId) ?? null, [rows, manageId]);\n\n const columns: Column<TheSafetyIncident>[] = [\n {\n key: 'severity',\n header: 'Severity',\n render: (r) => <StatusBadge status={r.severity} />,\n },\n {\n key: 'title',\n header: 'Incident',\n render: (r) => (\n <div>\n <p className=\"font-medium text-text-primary\">{r.title}</p>\n {r.description && (\n <p className=\"line-clamp-1 text-xs text-text-tertiary\">{r.description}</p>\n )}\n </div>\n ),\n },\n {\n key: 'category',\n header: 'Category',\n hideOnMobile: true,\n render: (r) => <StatusBadge status={r.category} />,\n },\n {\n key: 'asset',\n header: 'Asset',\n hideOnMobile: true,\n render: (r) => (\n <span className=\"text-text-secondary\">\n {r.assetId ? (assetMap[r.assetId] ?? `${r.assetId.slice(0, 8)}…`) : '—'}\n </span>\n ),\n },\n {\n key: 'occurred',\n header: 'Occurred',\n hideOnMobile: true,\n sortValue: (r) => new Date(r.occurredAt).getTime(),\n render: (r) => <span className=\"text-text-secondary\">{formatDate(r.occurredAt)}</span>,\n },\n {\n key: 'status',\n header: 'Status',\n render: (r) => <StatusBadge status={r.status} />,\n },\n {\n key: 'manage',\n header: '',\n align: 'right',\n render: (r) => (\n <Button size=\"sm\" variant=\"outline\" onClick={() => setManageId(r.id)}>\n Manage\n </Button>\n ),\n },\n ];\n\n const openDialog = () => {\n setForm(emptyForm());\n setFormError(null);\n setDialogOpen(true);\n };\n\n const handleReport = async () => {\n if (!form.title.trim()) {\n const message = 'A short incident title is required.';\n setFormError(message);\n notify.error(message);\n return;\n }\n const occurredAt = toBackendDate(form.occurredAt);\n if (!occurredAt) {\n setFormError('The occurrence date is required.');\n return;\n }\n setFormError(null);\n try {\n await reportIncident.mutateAsync({\n title: form.title.trim(),\n category: form.category,\n severity: form.severity,\n occurredAt,\n assetId: form.assetId || null,\n involvedParties: form.involvedParties.trim() || null,\n description: form.description.trim() || null,\n notes: form.notes.trim() || null,\n });\n notify.success('Incident reported');\n setDialogOpen(false);\n setForm(emptyForm());\n } catch (err) {\n notify.fromError(err);\n setFormError(err instanceof Error ? err.message : 'Failed to report incident.');\n }\n };\n\n const handleTransition = (incident: TheSafetyIncident) => {\n const next = INCIDENT_NEXT[incident.status];\n if (!next) return;\n setTransitioningId(incident.id);\n transitionIncident.mutate(\n { id: incident.id, status: next },\n {\n onSuccess: () => notify.success(`Incident moved to ${formatEnumLabel(next)}`),\n onError: (e) => notify.fromError(e),\n onSettled: () => setTransitioningId(null),\n }\n );\n };\n\n return (\n <PageLayout\n title={t('theglobalfuel.pages.incidents.title', 'Safety Incidents')}\n description={t(\n 'theglobalfuel.pages.incidents.description',\n 'Near-miss, injury, spill, release and equipment-failure register with investigation workflow and corrective-action closure.'\n )}\n dataTour=\"theglobalfuel-incidents-page\"\n actions={\n <Button onClick={openDialog}>\n <Plus className=\"mr-1.5 h-4 w-4\" /> Report incident\n </Button>\n }\n >\n {/* Filters */}\n <div className=\"mb-5 flex flex-wrap items-center gap-3\">\n <FilterTabs\n options={STATUS_FILTERS}\n value={status}\n onChange={(v) => {\n setStatus(v);\n pager.reset();\n }}\n />\n <Select\n value={category}\n onValueChange={(v) => {\n setCategory(v);\n pager.reset();\n }}\n >\n <SelectTrigger className=\"w-48\" aria-label=\"Filter by category\">\n <SelectValue placeholder=\"All categories\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"ALL\">All categories</SelectItem>\n {CATEGORIES.map((c) => (\n <SelectItem key={c} value={c}>\n {formatEnumLabel(c)}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <Select\n value={severity}\n onValueChange={(v) => {\n setSeverity(v);\n pager.reset();\n }}\n >\n <SelectTrigger className=\"w-44\" aria-label=\"Filter by severity\">\n <SelectValue placeholder=\"All severities\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"ALL\">All severities</SelectItem>\n {SEVERITIES.map((s) => (\n <SelectItem key={s} value={s}>\n {formatEnumLabel(s)}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n\n {isLoading ? (\n <LoadingView label=\"Loading incidents…\" />\n ) : isError ? (\n <ErrorView message=\"Couldn't load safety incidents.\" onRetry={() => refetch()} />\n ) : rows.length === 0 ? (\n <EmptyState\n illustration=\"empty-data\"\n icon={<ShieldAlert className=\"h-10 w-10\" />}\n title=\"No incidents reported\"\n description={\n status === 'ALL' && category === 'ALL' && severity === 'ALL'\n ? 'Report a near-miss, injury, spill, release or equipment failure to start the investigation workflow.'\n : 'No incidents match these filters.'\n }\n action={\n <Button onClick={openDialog}>\n <Plus className=\"mr-1.5 h-4 w-4\" /> Report incident\n </Button>\n }\n />\n ) : (\n <>\n <DataTable\n columns={columns}\n rows={rows}\n rowKey={(r) => r.id}\n defaultSort={{ key: 'occurred', dir: 'desc' }}\n />\n <Pagination\n page={pager.page}\n pageSize={PAGE_SIZE}\n itemCount={rows.length}\n hasMore={data?.pageInfo?.hasMore ?? false}\n onPageChange={pager.onPageChange}\n />\n </>\n )}\n\n {/* Report incident dialog */}\n <ResponsiveDialog\n open={dialogOpen}\n onOpenChange={(open) => {\n setDialogOpen(open);\n if (!open) {\n setForm(emptyForm());\n setFormError(null);\n }\n }}\n >\n <ResponsiveDialogContent>\n <ResponsiveDialogHeader>\n <ResponsiveDialogTitle>Report safety incident</ResponsiveDialogTitle>\n <ResponsiveDialogDescription>\n Log a near-miss, injury, spill, release or equipment failure to open an investigation.\n </ResponsiveDialogDescription>\n </ResponsiveDialogHeader>\n\n <form\n onSubmit={(e) => {\n e.preventDefault();\n void handleReport();\n }}\n >\n <div className=\"grid gap-4 py-2\">\n <div className=\"grid gap-1.5\">\n <Label htmlFor=\"incTitle\">Title *</Label>\n <Input\n id=\"incTitle\"\n value={form.title}\n onChange={(e) => setForm({ ...form, title: e.target.value })}\n placeholder=\"Valve leak on compressor C-102\"\n />\n </div>\n\n <div className=\"grid gap-2 sm:grid-cols-2\">\n <div className=\"grid gap-1.5\">\n <Label htmlFor=\"incCategory\">Category</Label>\n <Select\n value={form.category}\n onValueChange={(v) =>\n setForm({ ...form, category: v as TheSafetyIncidentCategory })\n }\n >\n <SelectTrigger id=\"incCategory\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {CATEGORIES.map((c) => (\n <SelectItem key={c} value={c}>\n {formatEnumLabel(c)}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n <div className=\"grid gap-1.5\">\n <Label htmlFor=\"incSeverity\">Severity</Label>\n <Select\n value={form.severity}\n onValueChange={(v) =>\n setForm({ ...form, severity: v as TheSafetyIncidentSeverity })\n }\n >\n <SelectTrigger id=\"incSeverity\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {SEVERITIES.map((s) => (\n <SelectItem key={s} value={s}>\n {formatEnumLabel(s)}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n </div>\n\n <div className=\"grid gap-2 sm:grid-cols-2\">\n <div className=\"grid gap-1.5\">\n <Label htmlFor=\"incOccurred\">Occurred on *</Label>\n <Input\n id=\"incOccurred\"\n type=\"date\"\n value={form.occurredAt}\n onChange={(e) => setForm({ ...form, occurredAt: e.target.value })}\n />\n </div>\n <div className=\"grid gap-1.5\">\n <Label htmlFor=\"incAsset\">Asset</Label>\n <Select\n value={form.assetId}\n onValueChange={(v) => setForm({ ...form, assetId: v })}\n >\n <SelectTrigger id=\"incAsset\">\n <SelectValue placeholder=\"Optional — org-wide if unset\" />\n </SelectTrigger>\n <SelectContent>\n {assetOptions.map((a) => (\n <SelectItem key={a.id} value={a.id}>\n {a.name}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n </div>\n\n <div className=\"grid gap-1.5\">\n <Label htmlFor=\"incParties\">Involved parties</Label>\n <Input\n id=\"incParties\"\n value={form.involvedParties}\n onChange={(e) => setForm({ ...form, involvedParties: e.target.value })}\n placeholder=\"Contractor crew, operator on duty…\"\n />\n </div>\n\n <div className=\"grid gap-1.5\">\n <Label htmlFor=\"incDescription\">Description</Label>\n <Textarea\n id=\"incDescription\"\n rows={3}\n value={form.description}\n onChange={(e) => setForm({ ...form, description: e.target.value })}\n placeholder=\"What happened, where, and immediate response taken.\"\n />\n </div>\n\n {formError && <p className=\"text-sm text-status-error-text\">{formError}</p>}\n </div>\n\n <ResponsiveDialogFooter>\n <Button type=\"button\" variant=\"outline\" onClick={() => setDialogOpen(false)}>\n Cancel\n </Button>\n <Button type=\"submit\" disabled={reportIncident.isPending}>\n {reportIncident.isPending ? 'Reporting…' : 'Report incident'}\n </Button>\n </ResponsiveDialogFooter>\n </form>\n </ResponsiveDialogContent>\n </ResponsiveDialog>\n\n {/* Manage incident dialog */}\n {managed && (\n <ManageIncidentDialog\n incident={managed}\n assetName={managed.assetId ? assetMap[managed.assetId] : undefined}\n transitioning={transitioningId === managed.id}\n onTransition={() => handleTransition(managed)}\n onClose={() => setManageId(null)}\n />\n )}\n </PageLayout>\n );\n}\n\n// ============================================================================\n// Manage incident dialog — lifecycle, investigation notes, corrective actions\n// ============================================================================\n\ninterface ManageIncidentDialogProps {\n incident: TheSafetyIncident;\n assetName?: string;\n transitioning: boolean;\n onTransition: () => void;\n onClose: () => void;\n}\n\nfunction ManageIncidentDialog({\n incident,\n assetName,\n transitioning,\n onTransition,\n onClose,\n}: ManageIncidentDialogProps) {\n const notify = useNotify();\n const next = INCIDENT_NEXT[incident.status];\n const [notes, setNotes] = useState(incident.investigationNotes ?? '');\n const [savingNotes, setSavingNotes] = useState(false);\n const updateInvestigation = useTheUpdateIncidentInvestigation();\n const actionsQuery = useTheCorrectiveActions(incident.id);\n const createAction = useTheCreateCorrectiveAction();\n const transitionAction = useTheTransitionCorrectiveAction();\n const [newAction, setNewAction] = useState('');\n const [newActionDue, setNewActionDue] = useState('');\n\n const handleSaveNotes = async () => {\n setSavingNotes(true);\n try {\n await updateInvestigation.mutateAsync({ id: incident.id, investigationNotes: notes });\n notify.success('Investigation notes saved');\n } catch (err) {\n notify.fromError(err);\n } finally {\n setSavingNotes(false);\n }\n };\n\n const handleAddAction = async () => {\n if (!newAction.trim()) {\n notify.error('Describe the corrective action first.');\n return;\n }\n try {\n await createAction.mutateAsync({\n incidentId: incident.id,\n description: newAction.trim(),\n dueDate: toBackendDate(newActionDue) ?? null,\n });\n notify.success('Corrective action added');\n setNewAction('');\n setNewActionDue('');\n } catch (err) {\n notify.fromError(err);\n }\n };\n\n return (\n <ResponsiveDialog open onOpenChange={(open) => !open && onClose()}>\n <ResponsiveDialogContent>\n <ResponsiveDialogHeader>\n <ResponsiveDialogTitle>{incident.title}</ResponsiveDialogTitle>\n <ResponsiveDialogDescription>\n {formatEnumLabel(incident.category)} · {formatEnumLabel(incident.severity)} · occurred{' '}\n {formatDate(incident.occurredAt)}\n {assetName ? ` · ${assetName}` : ''}\n </ResponsiveDialogDescription>\n </ResponsiveDialogHeader>\n\n <div className=\"grid gap-5 py-2\">\n {/* Lifecycle */}\n <div className=\"flex items-center justify-between gap-3 rounded-lg border border-border-subtle bg-bg-sunken p-3\">\n <div className=\"flex items-center gap-2\">\n <StatusBadge status={incident.status} />\n {incident.closedAt && (\n <span className=\"text-xs text-text-tertiary\">\n Closed {formatDate(incident.closedAt)}\n </span>\n )}\n </div>\n {next && (\n <Button size=\"sm\" variant=\"outline\" onClick={onTransition} disabled={transitioning}>\n Advance to {formatEnumLabel(next)}\n <ArrowRight className=\"ml-1.5 h-3.5 w-3.5\" />\n </Button>\n )}\n </div>\n\n {incident.description && (\n <p className=\"text-sm text-text-secondary\">{incident.description}</p>\n )}\n\n {/* Investigation notes */}\n <div className=\"grid gap-1.5\">\n <Label htmlFor=\"incNotes\">Investigation notes</Label>\n <Textarea\n id=\"incNotes\"\n rows={3}\n value={notes}\n onChange={(e) => setNotes(e.target.value)}\n placeholder=\"Root-cause findings, witness statements, evidence references…\"\n />\n <div className=\"flex justify-end\">\n <Button\n size=\"sm\"\n variant=\"outline\"\n onClick={() => void handleSaveNotes()}\n disabled={savingNotes || notes === (incident.investigationNotes ?? '')}\n >\n {savingNotes ? 'Saving…' : 'Save notes'}\n </Button>\n </div>\n </div>\n\n {/* Corrective / preventive actions */}\n <div className=\"grid gap-2\">\n <h4 className=\"inline-flex items-center gap-1.5 text-sm font-semibold text-text-secondary\">\n <ClipboardList className=\"h-4 w-4\" /> Corrective &amp; preventive actions\n </h4>\n {actionsQuery.isLoading ? (\n <p className=\"text-sm text-text-tertiary\">Loading actions…</p>\n ) : (actionsQuery.data?.items ?? []).length === 0 ? (\n <p className=\"text-sm text-text-tertiary\">No corrective actions yet.</p>\n ) : (\n <ul className=\"space-y-2\">\n {(actionsQuery.data?.items ?? []).map((a) => {\n const actionNext = ACTION_NEXT[a.status];\n return (\n <li\n key={a.id}\n className=\"flex flex-wrap items-center justify-between gap-2 rounded-lg border border-border-subtle p-3\"\n >\n <div className=\"min-w-0 flex-1\">\n <p className=\"truncate text-sm text-text-primary\">{a.description}</p>\n <p className=\"text-xs text-text-tertiary\">\n {a.dueDate ? `Due ${formatDate(a.dueDate)}` : 'No due date'}\n </p>\n </div>\n <div className=\"flex items-center gap-2\">\n <StatusBadge status={a.status} />\n {actionNext && (\n <Button\n size=\"sm\"\n variant=\"outline\"\n onClick={() =>\n transitionAction.mutate(\n { id: a.id, status: actionNext },\n {\n onSuccess: () =>\n notify.success(\n `Action moved to ${formatEnumLabel(actionNext)}`\n ),\n onError: (e) => notify.fromError(e),\n }\n )\n }\n >\n {formatEnumLabel(actionNext)}\n </Button>\n )}\n </div>\n </li>\n );\n })}\n </ul>\n )}\n\n {/* Add action */}\n <div className=\"grid gap-2 rounded-lg border border-border-subtle bg-bg-sunken p-3 sm:grid-cols-[1fr_auto_auto]\">\n <Input\n value={newAction}\n onChange={(e) => setNewAction(e.target.value)}\n placeholder=\"New corrective / preventive action…\"\n aria-label=\"New corrective action description\"\n />\n <Input\n type=\"date\"\n value={newActionDue}\n onChange={(e) => setNewActionDue(e.target.value)}\n aria-label=\"New corrective action due date\"\n />\n <Button\n size=\"sm\"\n onClick={() => void handleAddAction()}\n disabled={createAction.isPending}\n >\n <Plus className=\"mr-1 h-4 w-4\" /> Add\n </Button>\n </div>\n </div>\n </div>\n\n <ResponsiveDialogFooter>\n <Button type=\"button\" variant=\"outline\" onClick={onClose}>\n Close\n </Button>\n </ResponsiveDialogFooter>\n </ResponsiveDialogContent>\n </ResponsiveDialog>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AA+DA,IAAM,KAA0C;CAC9C;CACA;CACA;CACA;CACA;CACD,EAEK,IAA0C;CAAC;CAAO;CAAU;CAAQ;CAAW,EAE/E,KAAkE;CACtE;EAAE,OAAO;EAAO,OAAO;EAAgB;CACvC;EAAE,OAAO;EAAY,OAAO;EAAY;CACxC;EAAE,OAAO;EAAiB,OAAO;EAAiB;CAClD;EAAE,OAAO;EAAyB,OAAO;EAAoB;CAC7D;EAAE,OAAO;EAAqB,OAAO;EAAqB;CAC1D;EAAE,OAAO;EAAU,OAAO;EAAU;CACrC,EAGK,IAAmF;CACvF,UAAU;CACV,eAAe;CACf,uBAAuB;CACvB,mBAAmB;CACpB,EAGK,IAAqF;CACzF,MAAM;CACN,aAAa;CACb,UAAU;CACX,EAEK,IAAY,IAEZ,2BAAsB,IAAI,MAAM,EAAC,aAAa,CAAC,MAAM,GAAG,GAAG,EAa3D,WAAoC;CACxC,OAAO;CACP,UAAU;CACV,UAAU;CACV,YAAY,GAAO;CACnB,SAAS;CACT,iBAAiB;CACjB,aAAa;CACb,OAAO;CACR;AAED,SAAgB,IAAgB;AAC9B,GAAe,mBAAmB;CAClC,IAAM,IAAI,IAAmB,EACvB,IAAS,IAAW,EACpB,CAAC,GAAQ,KAAa,EAA0C,MAAM,EACtE,CAAC,GAAU,KAAe,EAAiB,MAAM,EACjD,CAAC,GAAU,KAAe,EAAiB,MAAM,EACjD,IAAQ,GAAgB,EACxB,CAAC,IAAY,KAAiB,EAAS,GAAM,EAC7C,CAAC,GAAM,KAAW,EAA0B,EAAU,EACtD,CAAC,IAAW,KAAgB,EAAwB,KAAK,EAEzD,CAAC,IAAU,MAAe,EAAwB,KAAK,EACvD,CAAC,IAAiB,MAAsB,EAAwB,KAAK,EAGrE,IAAc,EAAa,EAAE,YAAY,EAAE,OAAO,KAAK,EAAE,CAAC,EAC1D,KAAW,QAAsC;EACrD,IAAM,IAA8B,EAAE;AACtC,OAAK,IAAM,KAAK,EAAY,MAAM,SAAS,EAAE,CAAE,GAAI,EAAE,MAAM,EAAE;AAC7D,SAAO;IACN,CAAC,EAAY,KAAK,CAAC,EAChB,KAAe,EAAY,MAAM,SAAS,EAAE,EAE5C,EAAE,SAAM,eAAW,aAAS,gBAAY,EAAsB;EAClE,QAAQ,MAAW,QAAQ,KAAA,IAAY;EACvC,UAAU,MAAa,QAAQ,KAAA,IAAa;EAC5C,UAAU,MAAa,QAAQ,KAAA,IAAa;EAC5C,YAAY;GAAE,OAAO;GAAW,QAAQ,EAAM,OAAO;GAAW;EACjE,CAAC,EACI,IAAiB,GAA4B,EAC7C,KAAqB,IAAgC,EAErD,IAAO,QAAc,GAAM,SAAS,EAAE,EAAE,CAAC,EAAK,CAAC,EAC/C,IAAU,QAAc,EAAK,MAAM,MAAM,EAAE,OAAO,GAAS,IAAI,MAAM,CAAC,GAAM,GAAS,CAAC,EAEtF,KAAuC;EAC3C;GACE,KAAK;GACL,QAAQ;GACR,SAAS,MAAM,kBAAC,GAAD,EAAa,QAAQ,EAAE,UAAY,CAAA;GACnD;EACD;GACE,KAAK;GACL,QAAQ;GACR,SAAS,MACP,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;IAAG,WAAU;cAAiC,EAAE;IAAU,CAAA,EACzD,EAAE,eACD,kBAAC,KAAD;IAAG,WAAU;cAA2C,EAAE;IAAgB,CAAA,CAExE,EAAA,CAAA;GAET;EACD;GACE,KAAK;GACL,QAAQ;GACR,cAAc;GACd,SAAS,MAAM,kBAAC,GAAD,EAAa,QAAQ,EAAE,UAAY,CAAA;GACnD;EACD;GACE,KAAK;GACL,QAAQ;GACR,cAAc;GACd,SAAS,MACP,kBAAC,QAAD;IAAM,WAAU;cACb,EAAE,UAAW,GAAS,EAAE,YAAY,GAAG,EAAE,QAAQ,MAAM,GAAG,EAAE,CAAC,KAAM;IAC/D,CAAA;GAEV;EACD;GACE,KAAK;GACL,QAAQ;GACR,cAAc;GACd,YAAY,MAAM,IAAI,KAAK,EAAE,WAAW,CAAC,SAAS;GAClD,SAAS,MAAM,kBAAC,QAAD;IAAM,WAAU;cAAuB,EAAW,EAAE,WAAW;IAAQ,CAAA;GACvF;EACD;GACE,KAAK;GACL,QAAQ;GACR,SAAS,MAAM,kBAAC,GAAD,EAAa,QAAQ,EAAE,QAAU,CAAA;GACjD;EACD;GACE,KAAK;GACL,QAAQ;GACR,OAAO;GACP,SAAS,MACP,kBAAC,GAAD;IAAQ,MAAK;IAAK,SAAQ;IAAU,eAAe,GAAY,EAAE,GAAG;cAAE;IAE7D,CAAA;GAEZ;EACF,EAEK,WAAmB;AAGvB,EAFA,EAAQ,GAAW,CAAC,EACpB,EAAa,KAAK,EAClB,EAAc,GAAK;IAGf,KAAe,YAAY;AAC/B,MAAI,CAAC,EAAK,MAAM,MAAM,EAAE;GACtB,IAAM,IAAU;AAEhB,GADA,EAAa,EAAQ,EACrB,EAAO,MAAM,EAAQ;AACrB;;EAEF,IAAM,IAAa,EAAc,EAAK,WAAW;AACjD,MAAI,CAAC,GAAY;AACf,KAAa,mCAAmC;AAChD;;AAEF,IAAa,KAAK;AAClB,MAAI;AAaF,GAZA,MAAM,EAAe,YAAY;IAC/B,OAAO,EAAK,MAAM,MAAM;IACxB,UAAU,EAAK;IACf,UAAU,EAAK;IACf;IACA,SAAS,EAAK,WAAW;IACzB,iBAAiB,EAAK,gBAAgB,MAAM,IAAI;IAChD,aAAa,EAAK,YAAY,MAAM,IAAI;IACxC,OAAO,EAAK,MAAM,MAAM,IAAI;IAC7B,CAAC,EACF,EAAO,QAAQ,oBAAoB,EACnC,EAAc,GAAM,EACpB,EAAQ,GAAW,CAAC;WACb,GAAK;AAEZ,GADA,EAAO,UAAU,EAAI,EACrB,EAAa,aAAe,QAAQ,EAAI,UAAU,6BAA6B;;IAI7E,MAAoB,MAAgC;EACxD,IAAM,IAAO,EAAc,EAAS;AAC/B,QACL,GAAmB,EAAS,GAAG,EAC/B,GAAmB,OACjB;GAAE,IAAI,EAAS;GAAI,QAAQ;GAAM,EACjC;GACE,iBAAiB,EAAO,QAAQ,qBAAqB,EAAgB,EAAK,GAAG;GAC7E,UAAU,MAAM,EAAO,UAAU,EAAE;GACnC,iBAAiB,GAAmB,KAAK;GAC1C,CACF;;AAGH,QACE,kBAAC,GAAD;EACE,OAAO,EAAE,uCAAuC,mBAAmB;EACnE,aAAa,EACX,6CACA,8HACD;EACD,UAAS;EACT,SACE,kBAAC,GAAD;GAAQ,SAAS;aAAjB,CACE,kBAAC,GAAD,EAAM,WAAU,kBAAmB,CAAA,EAAA,mBAC5B;;YAVb;GAcE,kBAAC,OAAD;IAAK,WAAU;cAAf;KACE,kBAAC,GAAD;MACE,SAAS;MACT,OAAO;MACP,WAAW,MAAM;AAEf,OADA,EAAU,EAAE,EACZ,EAAM,OAAO;;MAEf,CAAA;KACF,kBAAC,GAAD;MACE,OAAO;MACP,gBAAgB,MAAM;AAEpB,OADA,EAAY,EAAE,EACd,EAAM,OAAO;;gBAJjB,CAOE,kBAAC,GAAD;OAAe,WAAU;OAAO,cAAW;iBACzC,kBAAC,GAAD,EAAa,aAAY,kBAAmB,CAAA;OAC9B,CAAA,EAChB,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD;OAAY,OAAM;iBAAM;OAA2B,CAAA,EAClD,GAAW,KAAK,MACf,kBAAC,GAAD;OAAoB,OAAO;iBACxB,EAAgB,EAAE;OACR,EAFI,EAEJ,CACb,CACY,EAAA,CAAA,CACT;;KACT,kBAAC,GAAD;MACE,OAAO;MACP,gBAAgB,MAAM;AAEpB,OADA,EAAY,EAAE,EACd,EAAM,OAAO;;gBAJjB,CAOE,kBAAC,GAAD;OAAe,WAAU;OAAO,cAAW;iBACzC,kBAAC,GAAD,EAAa,aAAY,kBAAmB,CAAA;OAC9B,CAAA,EAChB,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD;OAAY,OAAM;iBAAM;OAA2B,CAAA,EAClD,EAAW,KAAK,MACf,kBAAC,GAAD;OAAoB,OAAO;iBACxB,EAAgB,EAAE;OACR,EAFI,EAEJ,CACb,CACY,EAAA,CAAA,CACT;;KACL;;GAEL,KACC,kBAAC,IAAD,EAAa,OAAM,sBAAuB,CAAA,GACxC,KACF,kBAAC,GAAD;IAAW,SAAQ;IAAkC,eAAe,IAAS;IAAI,CAAA,GAC/E,EAAK,WAAW,IAClB,kBAAC,GAAD;IACE,cAAa;IACb,MAAM,kBAAC,GAAD,EAAa,WAAU,aAAc,CAAA;IAC3C,OAAM;IACN,aACE,MAAW,SAAS,MAAa,SAAS,MAAa,QACnD,yGACA;IAEN,QACE,kBAAC,GAAD;KAAQ,SAAS;eAAjB,CACE,kBAAC,GAAD,EAAM,WAAU,kBAAmB,CAAA,EAAA,mBAC5B;;IAEX,CAAA,GAEF,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;IACW;IACH;IACN,SAAS,MAAM,EAAE;IACjB,aAAa;KAAE,KAAK;KAAY,KAAK;KAAQ;IAC7C,CAAA,EACF,kBAAC,GAAD;IACE,MAAM,EAAM;IACZ,UAAU;IACV,WAAW,EAAK;IAChB,SAAS,GAAM,UAAU,WAAW;IACpC,cAAc,EAAM;IACpB,CAAA,CACD,EAAA,CAAA;GAIL,kBAAC,IAAD;IACE,MAAM;IACN,eAAe,MAAS;AAEtB,KADA,EAAc,EAAK,EACd,MACH,EAAQ,GAAW,CAAC,EACpB,EAAa,KAAK;;cAItB,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,IAAD,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UAAuB,0BAA8C,CAAA,EACrE,kBAAC,IAAD,EAAA,UAA6B,0FAEC,CAAA,CACP,EAAA,CAAA,EAEzB,kBAAC,QAAD;KACE,WAAW,MAAM;AAEV,MADL,EAAE,gBAAgB,EACb,IAAc;;eAHvB,CAME,kBAAC,OAAD;MAAK,WAAU;gBAAf;OACE,kBAAC,OAAD;QAAK,WAAU;kBAAf,CACE,kBAAC,GAAD;SAAO,SAAQ;mBAAW;SAAe,CAAA,EACzC,kBAAC,GAAD;SACE,IAAG;SACH,OAAO,EAAK;SACZ,WAAW,MAAM,EAAQ;UAAE,GAAG;UAAM,OAAO,EAAE,OAAO;UAAO,CAAC;SAC5D,aAAY;SACZ,CAAA,CACE;;OAEN,kBAAC,OAAD;QAAK,WAAU;kBAAf,CACE,kBAAC,OAAD;SAAK,WAAU;mBAAf,CACE,kBAAC,GAAD;UAAO,SAAQ;oBAAc;UAAgB,CAAA,EAC7C,kBAAC,GAAD;UACE,OAAO,EAAK;UACZ,gBAAgB,MACd,EAAQ;WAAE,GAAG;WAAM,UAAU;WAAgC,CAAC;oBAHlE,CAME,kBAAC,GAAD;WAAe,IAAG;qBAChB,kBAAC,GAAD,EAAe,CAAA;WACD,CAAA,EAChB,kBAAC,GAAD,EAAA,UACG,GAAW,KAAK,MACf,kBAAC,GAAD;WAAoB,OAAO;qBACxB,EAAgB,EAAE;WACR,EAFI,EAEJ,CACb,EACY,CAAA,CACT;YACL;YACN,kBAAC,OAAD;SAAK,WAAU;mBAAf,CACE,kBAAC,GAAD;UAAO,SAAQ;oBAAc;UAAgB,CAAA,EAC7C,kBAAC,GAAD;UACE,OAAO,EAAK;UACZ,gBAAgB,MACd,EAAQ;WAAE,GAAG;WAAM,UAAU;WAAgC,CAAC;oBAHlE,CAME,kBAAC,GAAD;WAAe,IAAG;qBAChB,kBAAC,GAAD,EAAe,CAAA;WACD,CAAA,EAChB,kBAAC,GAAD,EAAA,UACG,EAAW,KAAK,MACf,kBAAC,GAAD;WAAoB,OAAO;qBACxB,EAAgB,EAAE;WACR,EAFI,EAEJ,CACb,EACY,CAAA,CACT;YACL;WACF;;OAEN,kBAAC,OAAD;QAAK,WAAU;kBAAf,CACE,kBAAC,OAAD;SAAK,WAAU;mBAAf,CACE,kBAAC,GAAD;UAAO,SAAQ;oBAAc;UAAqB,CAAA,EAClD,kBAAC,GAAD;UACE,IAAG;UACH,MAAK;UACL,OAAO,EAAK;UACZ,WAAW,MAAM,EAAQ;WAAE,GAAG;WAAM,YAAY,EAAE,OAAO;WAAO,CAAC;UACjE,CAAA,CACE;YACN,kBAAC,OAAD;SAAK,WAAU;mBAAf,CACE,kBAAC,GAAD;UAAO,SAAQ;oBAAW;UAAa,CAAA,EACvC,kBAAC,GAAD;UACE,OAAO,EAAK;UACZ,gBAAgB,MAAM,EAAQ;WAAE,GAAG;WAAM,SAAS;WAAG,CAAC;oBAFxD,CAIE,kBAAC,GAAD;WAAe,IAAG;qBAChB,kBAAC,GAAD,EAAa,aAAY,gCAAiC,CAAA;WAC5C,CAAA,EAChB,kBAAC,GAAD,EAAA,UACG,GAAa,KAAK,MACjB,kBAAC,GAAD;WAAuB,OAAO,EAAE;qBAC7B,EAAE;WACQ,EAFI,EAAE,GAEN,CACb,EACY,CAAA,CACT;YACL;WACF;;OAEN,kBAAC,OAAD;QAAK,WAAU;kBAAf,CACE,kBAAC,GAAD;SAAO,SAAQ;mBAAa;SAAwB,CAAA,EACpD,kBAAC,GAAD;SACE,IAAG;SACH,OAAO,EAAK;SACZ,WAAW,MAAM,EAAQ;UAAE,GAAG;UAAM,iBAAiB,EAAE,OAAO;UAAO,CAAC;SACtE,aAAY;SACZ,CAAA,CACE;;OAEN,kBAAC,OAAD;QAAK,WAAU;kBAAf,CACE,kBAAC,GAAD;SAAO,SAAQ;mBAAiB;SAAmB,CAAA,EACnD,kBAAC,IAAD;SACE,IAAG;SACH,MAAM;SACN,OAAO,EAAK;SACZ,WAAW,MAAM,EAAQ;UAAE,GAAG;UAAM,aAAa,EAAE,OAAO;UAAO,CAAC;SAClE,aAAY;SACZ,CAAA,CACE;;OAEL,MAAa,kBAAC,KAAD;QAAG,WAAU;kBAAkC;QAAc,CAAA;OACvE;SAEN,kBAAC,IAAD,EAAA,UAAA,CACE,kBAAC,GAAD;MAAQ,MAAK;MAAS,SAAQ;MAAU,eAAe,EAAc,GAAM;gBAAE;MAEpE,CAAA,EACT,kBAAC,GAAD;MAAQ,MAAK;MAAS,UAAU,EAAe;gBAC5C,EAAe,YAAY,eAAe;MACpC,CAAA,CACc,EAAA,CAAA,CACpB;OACiB,EAAA,CAAA;IACT,CAAA;GAGlB,KACC,kBAAC,IAAD;IACE,UAAU;IACV,WAAW,EAAQ,UAAU,GAAS,EAAQ,WAAW,KAAA;IACzD,eAAe,OAAoB,EAAQ;IAC3C,oBAAoB,GAAiB,EAAQ;IAC7C,eAAe,GAAY,KAAK;IAChC,CAAA;GAEO;;;AAgBjB,SAAS,GAAqB,EAC5B,aACA,cACA,kBACA,kBACA,cAC4B;CAC5B,IAAM,IAAS,IAAW,EACpB,IAAO,EAAc,EAAS,SAC9B,CAAC,GAAO,MAAY,EAAS,EAAS,sBAAsB,GAAG,EAC/D,CAAC,GAAa,KAAkB,EAAS,GAAM,EAC/C,KAAsB,GAAmC,EACzD,IAAe,EAAwB,EAAS,GAAG,EACnD,IAAe,GAA8B,EAC7C,IAAmB,GAAkC,EACrD,CAAC,GAAW,KAAgB,EAAS,GAAG,EACxC,CAAC,GAAc,KAAmB,EAAS,GAAG,EAE9C,IAAkB,YAAY;AAClC,IAAe,GAAK;AACpB,MAAI;AAEF,GADA,MAAM,GAAoB,YAAY;IAAE,IAAI,EAAS;IAAI,oBAAoB;IAAO,CAAC,EACrF,EAAO,QAAQ,4BAA4B;WACpC,GAAK;AACZ,KAAO,UAAU,EAAI;YACb;AACR,KAAe,GAAM;;IAInB,IAAkB,YAAY;AAClC,MAAI,CAAC,EAAU,MAAM,EAAE;AACrB,KAAO,MAAM,wCAAwC;AACrD;;AAEF,MAAI;AAQF,GAPA,MAAM,EAAa,YAAY;IAC7B,YAAY,EAAS;IACrB,aAAa,EAAU,MAAM;IAC7B,SAAS,EAAc,EAAa,IAAI;IACzC,CAAC,EACF,EAAO,QAAQ,0BAA0B,EACzC,EAAa,GAAG,EAChB,EAAgB,GAAG;WACZ,GAAK;AACZ,KAAO,UAAU,EAAI;;;AAIzB,QACE,kBAAC,IAAD;EAAkB,MAAA;EAAK,eAAe,MAAS,CAAC,KAAQ,GAAS;YAC/D,kBAAC,GAAD,EAAA,UAAA;GACE,kBAAC,IAAD,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UAAwB,EAAS,OAA8B,CAAA,EAC/D,kBAAC,IAAD,EAAA,UAAA;IACG,EAAgB,EAAS,SAAS;IAAC;IAAI,EAAgB,EAAS,SAAS;IAAC;IAAY;IACtF,EAAW,EAAS,WAAW;IAC/B,IAAY,MAAM,MAAc;IACL,EAAA,CAAA,CACP,EAAA,CAAA;GAEzB,kBAAC,OAAD;IAAK,WAAU;cAAf;KAEE,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,kBAAC,GAAD,EAAa,QAAQ,EAAS,QAAU,CAAA,EACvC,EAAS,YACR,kBAAC,QAAD;QAAM,WAAU;kBAAhB,CAA6C,WACnC,EAAW,EAAS,SAAS,CAChC;UAEL;UACL,KACC,kBAAC,GAAD;OAAQ,MAAK;OAAK,SAAQ;OAAU,SAAS;OAAc,UAAU;iBAArE;QAAoF;QACtE,EAAgB,EAAK;QACjC,kBAAC,GAAD,EAAY,WAAU,sBAAuB,CAAA;QACtC;SAEP;;KAEL,EAAS,eACR,kBAAC,KAAD;MAAG,WAAU;gBAA+B,EAAS;MAAgB,CAAA;KAIvE,kBAAC,OAAD;MAAK,WAAU;gBAAf;OACE,kBAAC,GAAD;QAAO,SAAQ;kBAAW;QAA2B,CAAA;OACrD,kBAAC,IAAD;QACE,IAAG;QACH,MAAM;QACN,OAAO;QACP,WAAW,MAAM,GAAS,EAAE,OAAO,MAAM;QACzC,aAAY;QACZ,CAAA;OACF,kBAAC,OAAD;QAAK,WAAU;kBACb,kBAAC,GAAD;SACE,MAAK;SACL,SAAQ;SACR,eAAe,KAAK,GAAiB;SACrC,UAAU,KAAe,OAAW,EAAS,sBAAsB;mBAElE,IAAc,YAAY;SACpB,CAAA;QACL,CAAA;OACF;;KAGN,kBAAC,OAAD;MAAK,WAAU;gBAAf;OACE,kBAAC,MAAD;QAAI,WAAU;kBAAd,CACE,kBAAC,GAAD,EAAe,WAAU,WAAY,CAAA,EAAA,mCAClC;;OACJ,EAAa,YACZ,kBAAC,KAAD;QAAG,WAAU;kBAA6B;QAAoB,CAAA,IAC3D,EAAa,MAAM,SAAS,EAAE,EAAE,WAAW,IAC9C,kBAAC,KAAD;QAAG,WAAU;kBAA6B;QAA8B,CAAA,GAExE,kBAAC,MAAD;QAAI,WAAU;mBACV,EAAa,MAAM,SAAS,EAAE,EAAE,KAAK,MAAM;SAC3C,IAAM,IAAa,EAAY,EAAE;AACjC,gBACE,kBAAC,MAAD;UAEE,WAAU;oBAFZ,CAIE,kBAAC,OAAD;WAAK,WAAU;qBAAf,CACE,kBAAC,KAAD;YAAG,WAAU;sBAAsC,EAAE;YAAgB,CAAA,EACrE,kBAAC,KAAD;YAAG,WAAU;sBACV,EAAE,UAAU,OAAO,EAAW,EAAE,QAAQ,KAAK;YAC5C,CAAA,CACA;cACN,kBAAC,OAAD;WAAK,WAAU;qBAAf,CACE,kBAAC,GAAD,EAAa,QAAQ,EAAE,QAAU,CAAA,EAChC,KACC,kBAAC,GAAD;YACE,MAAK;YACL,SAAQ;YACR,eACE,EAAiB,OACf;aAAE,IAAI,EAAE;aAAI,QAAQ;aAAY,EAChC;aACE,iBACE,EAAO,QACL,mBAAmB,EAAgB,EAAW,GAC/C;aACH,UAAU,MAAM,EAAO,UAAU,EAAE;aACpC,CACF;sBAGF,EAAgB,EAAW;YACrB,CAAA,CAEP;aACH;YAhCE,EAAE,GAgCJ;UAEP;QACC,CAAA;OAIP,kBAAC,OAAD;QAAK,WAAU;kBAAf;SACE,kBAAC,GAAD;UACE,OAAO;UACP,WAAW,MAAM,EAAa,EAAE,OAAO,MAAM;UAC7C,aAAY;UACZ,cAAW;UACX,CAAA;SACF,kBAAC,GAAD;UACE,MAAK;UACL,OAAO;UACP,WAAW,MAAM,EAAgB,EAAE,OAAO,MAAM;UAChD,cAAW;UACX,CAAA;SACF,kBAAC,GAAD;UACE,MAAK;UACL,eAAe,KAAK,GAAiB;UACrC,UAAU,EAAa;oBAHzB,CAKE,kBAAC,GAAD,EAAM,WAAU,gBAAiB,CAAA,EAAA,OAC1B;;SACL;;OACF;;KACF;;GAEN,kBAAC,IAAD,EAAA,UACE,kBAAC,GAAD;IAAQ,MAAK;IAAS,SAAQ;IAAU,SAAS;cAAS;IAEjD,CAAA,EACc,CAAA;GACD,EAAA,CAAA;EACT,CAAA"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Safety Dashboard — process-safety / EHS overview.
3
+ * @module theglobalfuel/pages/safety
4
+ *
5
+ * Reads `theSafetyDashboard`, which computes open-incident counts by category
6
+ * and severity plus open/overdue corrective actions live from current rows in
7
+ * `wspace-theglobalfuel-svc` (no cached/fabricated numbers). Pairs a KPI strip
8
+ * with a severity-breakdown donut and a category breakdown. Every figure comes
9
+ * from the real safety contract — no mock data.
10
+ */
11
+ export declare function SafetyDashboardPage(): import("react").JSX.Element;
12
+ //# sourceMappingURL=SafetyDashboardPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SafetyDashboardPage.d.ts","sourceRoot":"","sources":["../../../../src/theglobalfuel/pages/safety/SafetyDashboardPage.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAkCH,wBAAgB,mBAAmB,gCA8KlC"}
@@ -0,0 +1,175 @@
1
+ import { useTheGlobalFuel as e } from "../../context/TheGlobalFuelContext.js";
2
+ import { PageLayout as t } from "../../components/PageLayout.js";
3
+ import { MetricsCard as n } from "../../components/MetricsCard.js";
4
+ import { formatEnumLabel as r } from "../../utils/formatters.js";
5
+ import { MiniBar as i } from "../../components/MiniBar.js";
6
+ import { ErrorView as a, LoadingView as o } from "../../components/StateViews.js";
7
+ import { DonutChart as s } from "../../components/viz/DonutChart.js";
8
+ import "../../context/index.js";
9
+ import { useTheSafetyDashboard as c } from "../../hooks/useTheGlobalFuelApi.js";
10
+ import { useThePageView as l } from "../../hooks/useThePageView.js";
11
+ import { useTheTranslation as u } from "../../hooks/useTheTranslation.js";
12
+ import "../../hooks/index.js";
13
+ import "../../components/index.js";
14
+ import { useMemo as d } from "react";
15
+ import { AlertTriangle as f, ArrowRight as p, ClipboardList as m, ListChecks as h, ShieldAlert as g } from "lucide-react";
16
+ import { jsx as _, jsxs as v } from "react/jsx-runtime";
17
+ import { Button as y } from "@burdenoff/fe-libs/ui";
18
+ //#region src/theglobalfuel/pages/safety/SafetyDashboardPage.tsx
19
+ var b = [
20
+ "CRITICAL",
21
+ "HIGH",
22
+ "MEDIUM",
23
+ "LOW"
24
+ ], x = {
25
+ CRITICAL: "var(--color-status-error-text)",
26
+ HIGH: "var(--color-status-error-text)",
27
+ MEDIUM: "var(--color-status-warning-text)",
28
+ LOW: "var(--color-accent-blue)"
29
+ };
30
+ function S() {
31
+ l("safety");
32
+ let S = u(), { navigateTo: C } = e(), { data: w, isLoading: T, isError: E, refetch: D } = c(), O = d(() => {
33
+ let e = {
34
+ CRITICAL: 0,
35
+ HIGH: 0,
36
+ MEDIUM: 0,
37
+ LOW: 0
38
+ };
39
+ for (let t of w?.bySeverity ?? []) e[t.severity] = t.count;
40
+ return e;
41
+ }, [w]), k = d(() => b.filter((e) => O[e] > 0).map((e) => ({
42
+ label: r(e),
43
+ value: O[e],
44
+ color: x[e]
45
+ })), [O]), A = d(() => Math.max(1, ...(w?.byCategory ?? []).map((e) => e.count)), [w]);
46
+ return T ? /* @__PURE__ */ _(t, {
47
+ title: S("theglobalfuel.pages.safety.title", "Process Safety"),
48
+ description: S("theglobalfuel.pages.safety.description", "EHS incident tracking, investigation workflow and corrective-action closure."),
49
+ dataTour: "theglobalfuel-safety-page",
50
+ children: /* @__PURE__ */ _(o, { label: "Loading safety dashboard…" })
51
+ }) : E || !w ? /* @__PURE__ */ _(t, {
52
+ title: S("theglobalfuel.pages.safety.title", "Process Safety"),
53
+ description: S("theglobalfuel.pages.safety.description", "EHS incident tracking, investigation workflow and corrective-action closure."),
54
+ dataTour: "theglobalfuel-safety-page",
55
+ children: /* @__PURE__ */ _(a, {
56
+ message: "Couldn't load the safety dashboard.",
57
+ onRetry: () => D()
58
+ })
59
+ }) : /* @__PURE__ */ v(t, {
60
+ title: S("theglobalfuel.pages.safety.title", "Process Safety"),
61
+ description: S("theglobalfuel.pages.safety.description", "EHS incident tracking, investigation workflow and corrective-action closure."),
62
+ dataTour: "theglobalfuel-safety-page",
63
+ actions: /* @__PURE__ */ v(y, {
64
+ onClick: () => C("safety/incidents"),
65
+ children: [/* @__PURE__ */ _(h, { className: "mr-1.5 h-4 w-4" }), " View incidents"]
66
+ }),
67
+ children: [/* @__PURE__ */ v("div", {
68
+ className: "grid grid-cols-1 gap-4 sm:grid-cols-3",
69
+ children: [
70
+ /* @__PURE__ */ _(n, {
71
+ icon: /* @__PURE__ */ _(g, { className: "h-5 w-5" }),
72
+ value: w.openIncidents,
73
+ label: "Open incidents",
74
+ featured: !0,
75
+ footer: /* @__PURE__ */ v("p", {
76
+ className: "text-xs text-text-tertiary",
77
+ children: [
78
+ "Across ",
79
+ w.byCategory.length,
80
+ " categor",
81
+ w.byCategory.length === 1 ? "y" : "ies"
82
+ ]
83
+ })
84
+ }),
85
+ /* @__PURE__ */ _(n, {
86
+ icon: /* @__PURE__ */ _(m, { className: "h-5 w-5" }),
87
+ value: w.openCorrectiveActions,
88
+ label: "Open corrective actions",
89
+ footer: /* @__PURE__ */ _("p", {
90
+ className: "text-xs text-text-tertiary",
91
+ children: "Preventive & corrective items"
92
+ })
93
+ }),
94
+ /* @__PURE__ */ _(n, {
95
+ icon: /* @__PURE__ */ _(f, { className: "h-5 w-5" }),
96
+ value: w.overdueCorrectiveActions,
97
+ label: "Overdue corrective actions",
98
+ accent: w.overdueCorrectiveActions > 0 ? "error" : "success",
99
+ footer: /* @__PURE__ */ _("p", {
100
+ className: "text-xs text-text-tertiary",
101
+ children: w.overdueCorrectiveActions > 0 ? "Needs attention" : "Nothing overdue"
102
+ })
103
+ })
104
+ ]
105
+ }), /* @__PURE__ */ v("div", {
106
+ className: "mt-4 grid grid-cols-1 gap-4 lg:grid-cols-3",
107
+ children: [/* @__PURE__ */ v("div", {
108
+ className: "flex flex-col rounded-[var(--radius-card)] border border-border-subtle bg-bg-surface p-5 shadow-elevation-1",
109
+ children: [/* @__PURE__ */ v("div", {
110
+ className: "mb-1 flex items-center justify-between gap-2",
111
+ children: [/* @__PURE__ */ _("h3", {
112
+ className: "text-sm font-semibold text-text-secondary",
113
+ children: "Open incidents by severity"
114
+ }), /* @__PURE__ */ _(g, {
115
+ className: "h-4 w-4 shrink-0 text-text-muted",
116
+ "aria-hidden": "true"
117
+ })]
118
+ }), k.length > 0 ? /* @__PURE__ */ _(s, {
119
+ className: "mt-3",
120
+ segments: k,
121
+ size: 148,
122
+ thickness: .32,
123
+ centerLabel: String(w.openIncidents),
124
+ centerCaption: "open"
125
+ }) : /* @__PURE__ */ _("p", {
126
+ className: "flex flex-1 items-center py-8 text-sm text-text-tertiary",
127
+ children: "No open incidents."
128
+ })]
129
+ }), /* @__PURE__ */ v("div", {
130
+ className: "rounded-[var(--radius-card)] border border-border-subtle bg-bg-surface p-5 shadow-elevation-1 lg:col-span-2",
131
+ children: [
132
+ /* @__PURE__ */ _("h3", {
133
+ className: "mb-3 text-sm font-semibold text-text-secondary",
134
+ children: "Open incidents by category"
135
+ }),
136
+ w.byCategory.length === 0 ? /* @__PURE__ */ _("p", {
137
+ className: "py-6 text-sm text-text-tertiary",
138
+ children: "No open incidents by category. Report an incident to get started."
139
+ }) : /* @__PURE__ */ _("div", {
140
+ className: "space-y-3",
141
+ children: w.byCategory.map((e) => /* @__PURE__ */ v("div", {
142
+ className: "flex items-center gap-3",
143
+ children: [
144
+ /* @__PURE__ */ _("span", {
145
+ className: "w-40 shrink-0 text-xs font-medium text-text-secondary",
146
+ children: r(e.category)
147
+ }),
148
+ /* @__PURE__ */ _(i, {
149
+ value: e.count / A * 100,
150
+ barClassName: "bg-action-primary-bg",
151
+ height: 6,
152
+ className: "flex-1"
153
+ }),
154
+ /* @__PURE__ */ _("span", {
155
+ className: "w-8 text-right text-xs tabular-nums text-text-primary",
156
+ children: e.count
157
+ })
158
+ ]
159
+ }, e.category))
160
+ }),
161
+ /* @__PURE__ */ v("button", {
162
+ type: "button",
163
+ onClick: () => C("safety/incidents"),
164
+ className: "mt-4 inline-flex items-center gap-1 text-xs font-medium text-text-secondary hover:text-text-primary",
165
+ children: ["Manage incidents ", /* @__PURE__ */ _(p, { className: "h-3.5 w-3.5" })]
166
+ })
167
+ ]
168
+ })]
169
+ })]
170
+ });
171
+ }
172
+ //#endregion
173
+ export { S as SafetyDashboardPage };
174
+
175
+ //# sourceMappingURL=SafetyDashboardPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SafetyDashboardPage.js","names":[],"sources":["../../../../src/theglobalfuel/pages/safety/SafetyDashboardPage.tsx"],"sourcesContent":["/**\n * Safety Dashboard — process-safety / EHS overview.\n * @module theglobalfuel/pages/safety\n *\n * Reads `theSafetyDashboard`, which computes open-incident counts by category\n * and severity plus open/overdue corrective actions live from current rows in\n * `wspace-theglobalfuel-svc` (no cached/fabricated numbers). Pairs a KPI strip\n * with a severity-breakdown donut and a category breakdown. Every figure comes\n * from the real safety contract — no mock data.\n */\n\nimport { useMemo } from 'react';\nimport { ShieldAlert, AlertTriangle, ClipboardList, ListChecks, ArrowRight } from 'lucide-react';\nimport { Button } from '@burdenoff/fe-libs/ui';\nimport { PageLayout } from '../../components/PageLayout';\nimport { MetricsCard } from '../../components/MetricsCard';\nimport { MiniBar } from '../../components/MiniBar';\nimport { LoadingView, ErrorView } from '../../components/StateViews';\nimport { DonutChart, type Segment } from '../../components';\nimport { useTheSafetyDashboard, useThePageView, useTheTranslation } from '../../hooks';\nimport { useTheGlobalFuel } from '../../context';\nimport { formatEnumLabel } from '../../utils/formatters';\nimport type { TheSafetyIncidentSeverity } from '../../types';\n\n/** Severity ordering for a stable breakdown list (worst first). */\nconst SEVERITIES: TheSafetyIncidentSeverity[] = ['CRITICAL', 'HIGH', 'MEDIUM', 'LOW'];\n\n/** Tokenized donut-segment color per severity — all semantic CSS variables. */\nconst SEVERITY_DONUT_COLOR: Record<TheSafetyIncidentSeverity, string> = {\n CRITICAL: 'var(--color-status-error-text)',\n HIGH: 'var(--color-status-error-text)',\n MEDIUM: 'var(--color-status-warning-text)',\n LOW: 'var(--color-accent-blue)',\n};\n\n/** MiniBar fill token per severity — mirrors the StatusBadge severity palette. */\nconst SEVERITY_BAR: Record<TheSafetyIncidentSeverity, string> = {\n CRITICAL: 'bg-status-error-text',\n HIGH: 'bg-status-error-text',\n MEDIUM: 'bg-status-warning-text',\n LOW: 'bg-accent-blue',\n};\n\nexport function SafetyDashboardPage() {\n useThePageView('safety');\n const t = useTheTranslation();\n const { navigateTo } = useTheGlobalFuel();\n\n const { data, isLoading, isError, refetch } = useTheSafetyDashboard();\n\n const severityMap = useMemo(() => {\n const map: Record<TheSafetyIncidentSeverity, number> = {\n CRITICAL: 0,\n HIGH: 0,\n MEDIUM: 0,\n LOW: 0,\n };\n for (const s of data?.bySeverity ?? []) map[s.severity] = s.count;\n return map;\n }, [data]);\n\n const severitySegments = useMemo<Segment[]>(\n () =>\n SEVERITIES.filter((s) => severityMap[s] > 0).map((s) => ({\n label: formatEnumLabel(s),\n value: severityMap[s],\n color: SEVERITY_DONUT_COLOR[s],\n })),\n [severityMap]\n );\n\n const maxCategory = useMemo(\n () => Math.max(1, ...(data?.byCategory ?? []).map((c) => c.count)),\n [data]\n );\n\n if (isLoading) {\n return (\n <PageLayout\n title={t('theglobalfuel.pages.safety.title', 'Process Safety')}\n description={t(\n 'theglobalfuel.pages.safety.description',\n 'EHS incident tracking, investigation workflow and corrective-action closure.'\n )}\n dataTour=\"theglobalfuel-safety-page\"\n >\n <LoadingView label=\"Loading safety dashboard…\" />\n </PageLayout>\n );\n }\n\n if (isError || !data) {\n return (\n <PageLayout\n title={t('theglobalfuel.pages.safety.title', 'Process Safety')}\n description={t(\n 'theglobalfuel.pages.safety.description',\n 'EHS incident tracking, investigation workflow and corrective-action closure.'\n )}\n dataTour=\"theglobalfuel-safety-page\"\n >\n <ErrorView message=\"Couldn't load the safety dashboard.\" onRetry={() => refetch()} />\n </PageLayout>\n );\n }\n\n return (\n <PageLayout\n title={t('theglobalfuel.pages.safety.title', 'Process Safety')}\n description={t(\n 'theglobalfuel.pages.safety.description',\n 'EHS incident tracking, investigation workflow and corrective-action closure.'\n )}\n dataTour=\"theglobalfuel-safety-page\"\n actions={\n <Button onClick={() => navigateTo('safety/incidents')}>\n <ListChecks className=\"mr-1.5 h-4 w-4\" /> View incidents\n </Button>\n }\n >\n {/* KPI strip — live counts straight from theSafetyDashboard. */}\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-3\">\n <MetricsCard\n icon={<ShieldAlert className=\"h-5 w-5\" />}\n value={data.openIncidents}\n label=\"Open incidents\"\n featured\n footer={\n <p className=\"text-xs text-text-tertiary\">\n Across {data.byCategory.length} categor\n {data.byCategory.length === 1 ? 'y' : 'ies'}\n </p>\n }\n />\n <MetricsCard\n icon={<ClipboardList className=\"h-5 w-5\" />}\n value={data.openCorrectiveActions}\n label=\"Open corrective actions\"\n footer={<p className=\"text-xs text-text-tertiary\">Preventive &amp; corrective items</p>}\n />\n <MetricsCard\n icon={<AlertTriangle className=\"h-5 w-5\" />}\n value={data.overdueCorrectiveActions}\n label=\"Overdue corrective actions\"\n accent={data.overdueCorrectiveActions > 0 ? 'error' : 'success'}\n footer={\n <p className=\"text-xs text-text-tertiary\">\n {data.overdueCorrectiveActions > 0 ? 'Needs attention' : 'Nothing overdue'}\n </p>\n }\n />\n </div>\n\n {/* Severity donut beside the category breakdown. */}\n <div className=\"mt-4 grid grid-cols-1 gap-4 lg:grid-cols-3\">\n <div className=\"flex flex-col rounded-[var(--radius-card)] border border-border-subtle bg-bg-surface p-5 shadow-elevation-1\">\n <div className=\"mb-1 flex items-center justify-between gap-2\">\n <h3 className=\"text-sm font-semibold text-text-secondary\">\n Open incidents by severity\n </h3>\n <ShieldAlert className=\"h-4 w-4 shrink-0 text-text-muted\" aria-hidden=\"true\" />\n </div>\n {severitySegments.length > 0 ? (\n <DonutChart\n className=\"mt-3\"\n segments={severitySegments}\n size={148}\n thickness={0.32}\n centerLabel={String(data.openIncidents)}\n centerCaption=\"open\"\n />\n ) : (\n <p className=\"flex flex-1 items-center py-8 text-sm text-text-tertiary\">\n No open incidents.\n </p>\n )}\n </div>\n\n <div className=\"rounded-[var(--radius-card)] border border-border-subtle bg-bg-surface p-5 shadow-elevation-1 lg:col-span-2\">\n <h3 className=\"mb-3 text-sm font-semibold text-text-secondary\">\n Open incidents by category\n </h3>\n {data.byCategory.length === 0 ? (\n <p className=\"py-6 text-sm text-text-tertiary\">\n No open incidents by category. Report an incident to get started.\n </p>\n ) : (\n <div className=\"space-y-3\">\n {data.byCategory.map((c) => (\n <div key={c.category} className=\"flex items-center gap-3\">\n <span className=\"w-40 shrink-0 text-xs font-medium text-text-secondary\">\n {formatEnumLabel(c.category)}\n </span>\n <MiniBar\n value={(c.count / maxCategory) * 100}\n barClassName=\"bg-action-primary-bg\"\n height={6}\n className=\"flex-1\"\n />\n <span className=\"w-8 text-right text-xs tabular-nums text-text-primary\">\n {c.count}\n </span>\n </div>\n ))}\n </div>\n )}\n <button\n type=\"button\"\n onClick={() => navigateTo('safety/incidents')}\n className=\"mt-4 inline-flex items-center gap-1 text-xs font-medium text-text-secondary hover:text-text-primary\"\n >\n Manage incidents <ArrowRight className=\"h-3.5 w-3.5\" />\n </button>\n </div>\n </div>\n </PageLayout>\n );\n}\n"],"mappings":"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"}
@@ -402,4 +402,126 @@ export interface TheCreateComplianceCertInput {
402
402
  evidenceFileId?: string | null;
403
403
  notes?: string | null;
404
404
  }
405
+ export type TheEsgFramework = 'GRI' | 'SASB' | 'CSRD' | 'SEC_CLIMATE' | 'CDP';
406
+ export type TheEsgDisclosureStatus = 'DRAFT' | 'FINAL';
407
+ /**
408
+ * A generated, reporting-period snapshot of ESG datapoints aligned to a named
409
+ * disclosure framework, computed from this workspace's own emission and
410
+ * compliance records at generation time. `datapoints` arrives as a
411
+ * JSON-encoded string — see `TheEsgDatapoints` for the parsed shape.
412
+ */
413
+ export interface TheEsgDisclosure {
414
+ id: string;
415
+ workspaceId: string;
416
+ framework: TheEsgFramework;
417
+ status: TheEsgDisclosureStatus;
418
+ periodStart: string;
419
+ periodEnd: string;
420
+ /** JSON-encoded computed datapoints (`TheEsgDatapoints`). */
421
+ datapoints: string;
422
+ generatedAt: string;
423
+ notes?: string | null;
424
+ createdAt: string;
425
+ updatedAt: string;
426
+ }
427
+ /** Parsed shape of `TheEsgDisclosure.datapoints`. */
428
+ export interface TheEsgDatapoints {
429
+ emissionsByScope: Array<{
430
+ scope: string;
431
+ co2eTonnes: number;
432
+ recordCount: number;
433
+ }>;
434
+ totalCo2eTonnes: number;
435
+ verifiedEmissionRecords: number;
436
+ totalEmissionRecords: number;
437
+ complianceCertsByCategory: Array<{
438
+ category: string;
439
+ count: number;
440
+ }>;
441
+ complianceCertsByStatus: Array<{
442
+ status: string;
443
+ count: number;
444
+ }>;
445
+ generatedFrom: 'live_operational_records';
446
+ }
447
+ export interface TheGenerateEsgDisclosureInput {
448
+ framework: TheEsgFramework;
449
+ periodStart: string;
450
+ periodEnd: string;
451
+ notes?: string | null;
452
+ }
453
+ export type TheSafetyIncidentCategory = 'NEAR_MISS' | 'INJURY' | 'SPILL' | 'RELEASE' | 'EQUIPMENT_FAILURE';
454
+ export type TheSafetyIncidentSeverity = 'LOW' | 'MEDIUM' | 'HIGH' | 'CRITICAL';
455
+ export type TheSafetyIncidentStatus = 'REPORTED' | 'INVESTIGATING' | 'ROOT_CAUSE_IDENTIFIED' | 'CORRECTIVE_ACTION' | 'CLOSED';
456
+ export type TheCorrectiveActionStatus = 'OPEN' | 'IN_PROGRESS' | 'VERIFIED' | 'CLOSED';
457
+ export interface TheSafetyIncident {
458
+ id: string;
459
+ workspaceId: string;
460
+ assetId?: string | null;
461
+ category: TheSafetyIncidentCategory;
462
+ severity: TheSafetyIncidentSeverity;
463
+ status: TheSafetyIncidentStatus;
464
+ title: string;
465
+ description?: string | null;
466
+ occurredAt: string;
467
+ involvedParties?: string | null;
468
+ linkedProductionRecordId?: string | null;
469
+ linkedComplianceCertId?: string | null;
470
+ investigationNotes?: string | null;
471
+ evidence?: {
472
+ id: string;
473
+ } | null;
474
+ closedAt?: string | null;
475
+ notes?: string | null;
476
+ createdAt: string;
477
+ updatedAt: string;
478
+ }
479
+ export interface TheCorrectiveAction {
480
+ id: string;
481
+ workspaceId: string;
482
+ incidentId: string;
483
+ description: string;
484
+ status: TheCorrectiveActionStatus;
485
+ ownerId?: string | null;
486
+ dueDate?: string | null;
487
+ closedAt?: string | null;
488
+ notes?: string | null;
489
+ createdAt: string;
490
+ updatedAt: string;
491
+ }
492
+ export interface TheSafetyCategoryCount {
493
+ category: TheSafetyIncidentCategory;
494
+ count: number;
495
+ }
496
+ export interface TheSafetySeverityCount {
497
+ severity: TheSafetyIncidentSeverity;
498
+ count: number;
499
+ }
500
+ export interface TheSafetyDashboard {
501
+ openIncidents: number;
502
+ byCategory: TheSafetyCategoryCount[];
503
+ bySeverity: TheSafetySeverityCount[];
504
+ openCorrectiveActions: number;
505
+ overdueCorrectiveActions: number;
506
+ }
507
+ export interface TheReportSafetyIncidentInput {
508
+ assetId?: string | null;
509
+ category?: TheSafetyIncidentCategory;
510
+ severity?: TheSafetyIncidentSeverity;
511
+ title: string;
512
+ description?: string | null;
513
+ occurredAt: string;
514
+ involvedParties?: string | null;
515
+ linkedProductionRecordId?: string | null;
516
+ linkedComplianceCertId?: string | null;
517
+ evidenceFileId?: string | null;
518
+ notes?: string | null;
519
+ }
520
+ export interface TheCreateCorrectiveActionInput {
521
+ incidentId: string;
522
+ description: string;
523
+ ownerId?: string | null;
524
+ dueDate?: string | null;
525
+ notes?: string | null;
526
+ }
405
527
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/theglobalfuel/types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/theglobalfuel/types/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pageContext.d.ts","sourceRoot":"","sources":["../../../src/theglobalfuel/utils/pageContext.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,UAAU,wBAAwB;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,WAAW;IAG1B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IAGpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,iBAAiB,IAAI,WAAW,CAoB/C;AAMD,wBAAgB,uCAAuC,CACrD,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,wBAAwB,CA+G1B"}
1
+ {"version":3,"file":"pageContext.d.ts","sourceRoot":"","sources":["../../../src/theglobalfuel/utils/pageContext.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,UAAU,wBAAwB;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,WAAW;IAG1B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IAGpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,iBAAiB,IAAI,WAAW,CAoB/C;AAMD,wBAAgB,uCAAuC,CACrD,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,wBAAwB,CAgH1B"}
@@ -74,6 +74,7 @@ function n(e, n) {
74
74
  [/^(\/theglobalfuel)?\/analytics\/?$/, "THEGLOBALFUEL_ANALYTICS"],
75
75
  [/^(\/theglobalfuel)?\/reports\/?$/, "THEGLOBALFUEL_REPORTS"],
76
76
  [/^(\/theglobalfuel)?\/alerts\/?$/, "THEGLOBALFUEL_ALERTS"],
77
+ [/^(\/theglobalfuel)?\/esg-disclosures\/?$/, "THEGLOBALFUEL_ESG_DISCLOSURE"],
77
78
  [/^\/theglobalfuel\/?$/, "THEGLOBALFUEL_DASHBOARD"]
78
79
  ]) if (t(n, e)) return {
79
80
  entityType: r,
@@ -1 +1 @@
1
- {"version":3,"file":"pageContext.js","names":[],"sources":["../../../src/theglobalfuel/utils/pageContext.ts"],"sourcesContent":["/**\n * Page context gathering — captures the user's current browser context\n * to be sent alongside every assistant prompt for better AI awareness.\n * @module theglobalfuel/utils\n */\n\ninterface ConversationContextShape {\n entityType?: string;\n entityId?: string;\n activeTab?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface PageContext {\n // `currentUrl` (NOT `activeUrl`) — must match the agent's allowed-context-key\n // contract, otherwise the agent filters it out.\n currentUrl: string;\n currentPage: string;\n // The entity the user is currently looking at, resolved from the route. Lets\n // the assistant act on \"this / current / here\" without asking for an id.\n entityType?: string;\n entityId?: string;\n platform: string;\n version: string;\n viewportSize: string;\n userAgent: string;\n timestamp: string;\n}\n\nexport function gatherPageContext(): PageContext {\n const url = window.location.href;\n const pathSegments = window.location.pathname.split('/').filter(Boolean);\n const currentPage = pathSegments.slice(0, 3).join('/') || 'home';\n const entity = resolveTheGlobalFuelConversationContext(\n window.location.pathname,\n window.location.search\n );\n\n return {\n currentUrl: url,\n currentPage,\n entityType: entity.entityType,\n entityId: entity.entityId,\n platform: 'theglobalfuel',\n version: import.meta.env.VITE_APP_VERSION ?? '2026.705.2',\n viewportSize: `${window.innerWidth}x${window.innerHeight}`,\n userAgent: navigator.userAgent,\n timestamp: new Date().toISOString(),\n };\n}\n\nfunction matchPath(pattern: RegExp, pathname: string): RegExpMatchArray | null {\n return pathname.match(pattern);\n}\n\nexport function resolveTheGlobalFuelConversationContext(\n pathname: string,\n search: string\n): ConversationContextShape {\n const params = new URLSearchParams(search);\n\n // TheGlobalFuel routes are mounted under `/theglobalfuel/*` in the host shell.\n // Detail pages carry the entity id as the second-to-last segment.\n const directMatches: Array<[RegExp, string]> = [\n [/^\\/theglobalfuel\\/assets\\/([^/]+)$/, 'THEGLOBALFUEL_ASSET'],\n [/^\\/theglobalfuel\\/contracts\\/([^/]+)$/, 'THEGLOBALFUEL_CONTRACT'],\n [/^\\/theglobalfuel\\/shipments\\/([^/]+)$/, 'THEGLOBALFUEL_SHIPMENT'],\n [/^\\/theglobalfuel\\/inventory\\/([^/]+)$/, 'THEGLOBALFUEL_INVENTORY_LOT'],\n [/^\\/theglobalfuel\\/emissions\\/([^/]+)$/, 'THEGLOBALFUEL_EMISSION_RECORD'],\n [/^\\/theglobalfuel\\/compliance\\/([^/]+)$/, 'THEGLOBALFUEL_COMPLIANCE_CERT'],\n [/^\\/theglobalfuel\\/reserves\\/([^/]+)$/, 'THEGLOBALFUEL_RESERVE_ESTIMATE'],\n ];\n\n for (const [pattern, entityType] of directMatches) {\n const match = matchPath(pattern, pathname);\n if (match) {\n return {\n entityType,\n entityId: match[1],\n metadata: {\n routePattern: pattern.source,\n },\n };\n }\n }\n\n // Standalone dev mode routes (no /theglobalfuel prefix)\n const standaloneMatches: Array<[RegExp, string]> = [\n [/^\\/assets\\/([^/]+)$/, 'THEGLOBALFUEL_ASSET'],\n [/^\\/contracts\\/([^/]+)$/, 'THEGLOBALFUEL_CONTRACT'],\n [/^\\/shipments\\/([^/]+)$/, 'THEGLOBALFUEL_SHIPMENT'],\n [/^\\/inventory\\/([^/]+)$/, 'THEGLOBALFUEL_INVENTORY_LOT'],\n [/^\\/emissions\\/([^/]+)$/, 'THEGLOBALFUEL_EMISSION_RECORD'],\n [/^\\/compliance\\/([^/]+)$/, 'THEGLOBALFUEL_COMPLIANCE_CERT'],\n [/^\\/reserves\\/([^/]+)$/, 'THEGLOBALFUEL_RESERVE_ESTIMATE'],\n ];\n\n for (const [pattern, entityType] of standaloneMatches) {\n const match = matchPath(pattern, pathname);\n if (match) {\n return {\n entityType,\n entityId: match[1],\n metadata: {\n routePattern: pattern.source,\n },\n };\n }\n }\n\n // The Provenance page has no `:id` detail route — the asset under trace is\n // carried in the query string (`?assetId=…`, the same parameter the Share\n // action produces). Resolve it so \"explain this chain of custody\" works from\n // a shared link without the user restating which asset they mean.\n if (/^(\\/theglobalfuel)?\\/provenance\\/?$/.test(pathname)) {\n const assetId = params.get('assetId');\n if (assetId) {\n return {\n entityType: 'THEGLOBALFUEL_ASSET',\n entityId: assetId,\n metadata: { surface: 'provenance', routePattern: '/provenance?assetId' },\n };\n }\n }\n\n // Section (list / overview) routes carry no entity id, but the assistant\n // still needs to know which product surface the user is looking at so it can\n // scope \"show me…\", \"why is this down…\" style questions. Previously only\n // detail routes resolved anything, which left /production, /provenance and\n // the dashboard index with no context at all.\n const sectionMatches: Array<[RegExp, string]> = [\n [/^(\\/theglobalfuel)?\\/assets\\/?$/, 'THEGLOBALFUEL_ASSET'],\n [/^(\\/theglobalfuel)?\\/production\\/?$/, 'THEGLOBALFUEL_PRODUCTION_RECORD'],\n [/^(\\/theglobalfuel)?\\/reserves\\/?$/, 'THEGLOBALFUEL_RESERVE_ESTIMATE'],\n [/^(\\/theglobalfuel)?\\/contracts\\/?$/, 'THEGLOBALFUEL_CONTRACT'],\n [/^(\\/theglobalfuel)?\\/shipments\\/?$/, 'THEGLOBALFUEL_SHIPMENT'],\n [/^(\\/theglobalfuel)?\\/inventory\\/?$/, 'THEGLOBALFUEL_INVENTORY_LOT'],\n [/^(\\/theglobalfuel)?\\/emissions\\/?$/, 'THEGLOBALFUEL_EMISSION_RECORD'],\n [/^(\\/theglobalfuel)?\\/compliance\\/?$/, 'THEGLOBALFUEL_COMPLIANCE_CERT'],\n [/^(\\/theglobalfuel)?\\/provenance\\/?$/, 'THEGLOBALFUEL_PROVENANCE'],\n [/^(\\/theglobalfuel)?\\/analytics\\/?$/, 'THEGLOBALFUEL_ANALYTICS'],\n [/^(\\/theglobalfuel)?\\/reports\\/?$/, 'THEGLOBALFUEL_REPORTS'],\n [/^(\\/theglobalfuel)?\\/alerts\\/?$/, 'THEGLOBALFUEL_ALERTS'],\n // Product root = the portfolio dashboard (the index route).\n [/^\\/theglobalfuel\\/?$/, 'THEGLOBALFUEL_DASHBOARD'],\n ];\n\n for (const [pattern, entityType] of sectionMatches) {\n if (matchPath(pattern, pathname)) {\n return {\n entityType,\n metadata: { surface: 'section', routePattern: pattern.source },\n };\n }\n }\n\n const activeTab =\n params.get('tab') ??\n (() => {\n const segments = pathname.split('/').filter(Boolean);\n return segments.length > 2 ? segments[segments.length - 1] : undefined;\n })();\n\n return {\n activeTab: activeTab ?? undefined,\n metadata: {\n ...(activeTab ? { activeTab } : {}),\n },\n };\n}\n"],"mappings":";AA6BA,SAAgB,IAAiC;CAC/C,IAAM,IAAM,OAAO,SAAS,MAEtB,IADe,OAAO,SAAS,SAAS,MAAM,IAAI,CAAC,OAAO,QAAQ,CACvC,MAAM,GAAG,EAAE,CAAC,KAAK,IAAI,IAAI,QACpD,IAAS,EACb,OAAO,SAAS,UAChB,OAAO,SAAS,OACjB;AAED,QAAO;EACL,YAAY;EACZ;EACA,YAAY,EAAO;EACnB,UAAU,EAAO;EACjB,UAAU;EACV,SAA6C;EAC7C,cAAc,GAAG,OAAO,WAAW,GAAG,OAAO;EAC7C,WAAW,UAAU;EACrB,4BAAW,IAAI,MAAM,EAAC,aAAa;EACpC;;AAGH,SAAS,EAAU,GAAiB,GAA2C;AAC7E,QAAO,EAAS,MAAM,EAAQ;;AAGhC,SAAgB,EACd,GACA,GAC0B;CAC1B,IAAM,IAAS,IAAI,gBAAgB,EAAO;AAc1C,MAAK,IAAM,CAAC,GAAS,MAV0B;EAC7C,CAAC,sCAAsC,sBAAsB;EAC7D,CAAC,yCAAyC,yBAAyB;EACnE,CAAC,yCAAyC,yBAAyB;EACnE,CAAC,yCAAyC,8BAA8B;EACxE,CAAC,yCAAyC,gCAAgC;EAC1E,CAAC,0CAA0C,gCAAgC;EAC3E,CAAC,wCAAwC,iCAAiC;EAC3E,EAEkD;EACjD,IAAM,IAAQ,EAAU,GAAS,EAAS;AAC1C,MAAI,EACF,QAAO;GACL;GACA,UAAU,EAAM;GAChB,UAAU,EACR,cAAc,EAAQ,QACvB;GACF;;AAeL,MAAK,IAAM,CAAC,GAAS,MAV8B;EACjD,CAAC,uBAAuB,sBAAsB;EAC9C,CAAC,0BAA0B,yBAAyB;EACpD,CAAC,0BAA0B,yBAAyB;EACpD,CAAC,0BAA0B,8BAA8B;EACzD,CAAC,0BAA0B,gCAAgC;EAC3D,CAAC,2BAA2B,gCAAgC;EAC5D,CAAC,yBAAyB,iCAAiC;EAC5D,EAEsD;EACrD,IAAM,IAAQ,EAAU,GAAS,EAAS;AAC1C,MAAI,EACF,QAAO;GACL;GACA,UAAU,EAAM;GAChB,UAAU,EACR,cAAc,EAAQ,QACvB;GACF;;AAQL,KAAI,sCAAsC,KAAK,EAAS,EAAE;EACxD,IAAM,IAAU,EAAO,IAAI,UAAU;AACrC,MAAI,EACF,QAAO;GACL,YAAY;GACZ,UAAU;GACV,UAAU;IAAE,SAAS;IAAc,cAAc;IAAuB;GACzE;;AA0BL,MAAK,IAAM,CAAC,GAAS,MAjB2B;EAC9C,CAAC,mCAAmC,sBAAsB;EAC1D,CAAC,uCAAuC,kCAAkC;EAC1E,CAAC,qCAAqC,iCAAiC;EACvE,CAAC,sCAAsC,yBAAyB;EAChE,CAAC,sCAAsC,yBAAyB;EAChE,CAAC,sCAAsC,8BAA8B;EACrE,CAAC,sCAAsC,gCAAgC;EACvE,CAAC,uCAAuC,gCAAgC;EACxE,CAAC,uCAAuC,2BAA2B;EACnE,CAAC,sCAAsC,0BAA0B;EACjE,CAAC,oCAAoC,wBAAwB;EAC7D,CAAC,mCAAmC,uBAAuB;EAE3D,CAAC,wBAAwB,0BAA0B;EACpD,CAGC,KAAI,EAAU,GAAS,EAAS,CAC9B,QAAO;EACL;EACA,UAAU;GAAE,SAAS;GAAW,cAAc,EAAQ;GAAQ;EAC/D;CAIL,IAAM,IACJ,EAAO,IAAI,MAAM,WACV;EACL,IAAM,IAAW,EAAS,MAAM,IAAI,CAAC,OAAO,QAAQ;AACpD,SAAO,EAAS,SAAS,IAAI,EAAS,EAAS,SAAS,KAAK,KAAA;KAC3D;AAEN,QAAO;EACL,WAAW,KAAa,KAAA;EACxB,UAAU,EACR,GAAI,IAAY,EAAE,cAAW,GAAG,EAAE,EACnC;EACF"}
1
+ {"version":3,"file":"pageContext.js","names":[],"sources":["../../../src/theglobalfuel/utils/pageContext.ts"],"sourcesContent":["/**\n * Page context gathering — captures the user's current browser context\n * to be sent alongside every assistant prompt for better AI awareness.\n * @module theglobalfuel/utils\n */\n\ninterface ConversationContextShape {\n entityType?: string;\n entityId?: string;\n activeTab?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface PageContext {\n // `currentUrl` (NOT `activeUrl`) — must match the agent's allowed-context-key\n // contract, otherwise the agent filters it out.\n currentUrl: string;\n currentPage: string;\n // The entity the user is currently looking at, resolved from the route. Lets\n // the assistant act on \"this / current / here\" without asking for an id.\n entityType?: string;\n entityId?: string;\n platform: string;\n version: string;\n viewportSize: string;\n userAgent: string;\n timestamp: string;\n}\n\nexport function gatherPageContext(): PageContext {\n const url = window.location.href;\n const pathSegments = window.location.pathname.split('/').filter(Boolean);\n const currentPage = pathSegments.slice(0, 3).join('/') || 'home';\n const entity = resolveTheGlobalFuelConversationContext(\n window.location.pathname,\n window.location.search\n );\n\n return {\n currentUrl: url,\n currentPage,\n entityType: entity.entityType,\n entityId: entity.entityId,\n platform: 'theglobalfuel',\n version: import.meta.env.VITE_APP_VERSION ?? '2026.705.2',\n viewportSize: `${window.innerWidth}x${window.innerHeight}`,\n userAgent: navigator.userAgent,\n timestamp: new Date().toISOString(),\n };\n}\n\nfunction matchPath(pattern: RegExp, pathname: string): RegExpMatchArray | null {\n return pathname.match(pattern);\n}\n\nexport function resolveTheGlobalFuelConversationContext(\n pathname: string,\n search: string\n): ConversationContextShape {\n const params = new URLSearchParams(search);\n\n // TheGlobalFuel routes are mounted under `/theglobalfuel/*` in the host shell.\n // Detail pages carry the entity id as the second-to-last segment.\n const directMatches: Array<[RegExp, string]> = [\n [/^\\/theglobalfuel\\/assets\\/([^/]+)$/, 'THEGLOBALFUEL_ASSET'],\n [/^\\/theglobalfuel\\/contracts\\/([^/]+)$/, 'THEGLOBALFUEL_CONTRACT'],\n [/^\\/theglobalfuel\\/shipments\\/([^/]+)$/, 'THEGLOBALFUEL_SHIPMENT'],\n [/^\\/theglobalfuel\\/inventory\\/([^/]+)$/, 'THEGLOBALFUEL_INVENTORY_LOT'],\n [/^\\/theglobalfuel\\/emissions\\/([^/]+)$/, 'THEGLOBALFUEL_EMISSION_RECORD'],\n [/^\\/theglobalfuel\\/compliance\\/([^/]+)$/, 'THEGLOBALFUEL_COMPLIANCE_CERT'],\n [/^\\/theglobalfuel\\/reserves\\/([^/]+)$/, 'THEGLOBALFUEL_RESERVE_ESTIMATE'],\n ];\n\n for (const [pattern, entityType] of directMatches) {\n const match = matchPath(pattern, pathname);\n if (match) {\n return {\n entityType,\n entityId: match[1],\n metadata: {\n routePattern: pattern.source,\n },\n };\n }\n }\n\n // Standalone dev mode routes (no /theglobalfuel prefix)\n const standaloneMatches: Array<[RegExp, string]> = [\n [/^\\/assets\\/([^/]+)$/, 'THEGLOBALFUEL_ASSET'],\n [/^\\/contracts\\/([^/]+)$/, 'THEGLOBALFUEL_CONTRACT'],\n [/^\\/shipments\\/([^/]+)$/, 'THEGLOBALFUEL_SHIPMENT'],\n [/^\\/inventory\\/([^/]+)$/, 'THEGLOBALFUEL_INVENTORY_LOT'],\n [/^\\/emissions\\/([^/]+)$/, 'THEGLOBALFUEL_EMISSION_RECORD'],\n [/^\\/compliance\\/([^/]+)$/, 'THEGLOBALFUEL_COMPLIANCE_CERT'],\n [/^\\/reserves\\/([^/]+)$/, 'THEGLOBALFUEL_RESERVE_ESTIMATE'],\n ];\n\n for (const [pattern, entityType] of standaloneMatches) {\n const match = matchPath(pattern, pathname);\n if (match) {\n return {\n entityType,\n entityId: match[1],\n metadata: {\n routePattern: pattern.source,\n },\n };\n }\n }\n\n // The Provenance page has no `:id` detail route — the asset under trace is\n // carried in the query string (`?assetId=…`, the same parameter the Share\n // action produces). Resolve it so \"explain this chain of custody\" works from\n // a shared link without the user restating which asset they mean.\n if (/^(\\/theglobalfuel)?\\/provenance\\/?$/.test(pathname)) {\n const assetId = params.get('assetId');\n if (assetId) {\n return {\n entityType: 'THEGLOBALFUEL_ASSET',\n entityId: assetId,\n metadata: { surface: 'provenance', routePattern: '/provenance?assetId' },\n };\n }\n }\n\n // Section (list / overview) routes carry no entity id, but the assistant\n // still needs to know which product surface the user is looking at so it can\n // scope \"show me…\", \"why is this down…\" style questions. Previously only\n // detail routes resolved anything, which left /production, /provenance and\n // the dashboard index with no context at all.\n const sectionMatches: Array<[RegExp, string]> = [\n [/^(\\/theglobalfuel)?\\/assets\\/?$/, 'THEGLOBALFUEL_ASSET'],\n [/^(\\/theglobalfuel)?\\/production\\/?$/, 'THEGLOBALFUEL_PRODUCTION_RECORD'],\n [/^(\\/theglobalfuel)?\\/reserves\\/?$/, 'THEGLOBALFUEL_RESERVE_ESTIMATE'],\n [/^(\\/theglobalfuel)?\\/contracts\\/?$/, 'THEGLOBALFUEL_CONTRACT'],\n [/^(\\/theglobalfuel)?\\/shipments\\/?$/, 'THEGLOBALFUEL_SHIPMENT'],\n [/^(\\/theglobalfuel)?\\/inventory\\/?$/, 'THEGLOBALFUEL_INVENTORY_LOT'],\n [/^(\\/theglobalfuel)?\\/emissions\\/?$/, 'THEGLOBALFUEL_EMISSION_RECORD'],\n [/^(\\/theglobalfuel)?\\/compliance\\/?$/, 'THEGLOBALFUEL_COMPLIANCE_CERT'],\n [/^(\\/theglobalfuel)?\\/provenance\\/?$/, 'THEGLOBALFUEL_PROVENANCE'],\n [/^(\\/theglobalfuel)?\\/analytics\\/?$/, 'THEGLOBALFUEL_ANALYTICS'],\n [/^(\\/theglobalfuel)?\\/reports\\/?$/, 'THEGLOBALFUEL_REPORTS'],\n [/^(\\/theglobalfuel)?\\/alerts\\/?$/, 'THEGLOBALFUEL_ALERTS'],\n [/^(\\/theglobalfuel)?\\/esg-disclosures\\/?$/, 'THEGLOBALFUEL_ESG_DISCLOSURE'],\n // Product root = the portfolio dashboard (the index route).\n [/^\\/theglobalfuel\\/?$/, 'THEGLOBALFUEL_DASHBOARD'],\n ];\n\n for (const [pattern, entityType] of sectionMatches) {\n if (matchPath(pattern, pathname)) {\n return {\n entityType,\n metadata: { surface: 'section', routePattern: pattern.source },\n };\n }\n }\n\n const activeTab =\n params.get('tab') ??\n (() => {\n const segments = pathname.split('/').filter(Boolean);\n return segments.length > 2 ? segments[segments.length - 1] : undefined;\n })();\n\n return {\n activeTab: activeTab ?? undefined,\n metadata: {\n ...(activeTab ? { activeTab } : {}),\n },\n };\n}\n"],"mappings":";AA6BA,SAAgB,IAAiC;CAC/C,IAAM,IAAM,OAAO,SAAS,MAEtB,IADe,OAAO,SAAS,SAAS,MAAM,IAAI,CAAC,OAAO,QAAQ,CACvC,MAAM,GAAG,EAAE,CAAC,KAAK,IAAI,IAAI,QACpD,IAAS,EACb,OAAO,SAAS,UAChB,OAAO,SAAS,OACjB;AAED,QAAO;EACL,YAAY;EACZ;EACA,YAAY,EAAO;EACnB,UAAU,EAAO;EACjB,UAAU;EACV,SAA6C;EAC7C,cAAc,GAAG,OAAO,WAAW,GAAG,OAAO;EAC7C,WAAW,UAAU;EACrB,4BAAW,IAAI,MAAM,EAAC,aAAa;EACpC;;AAGH,SAAS,EAAU,GAAiB,GAA2C;AAC7E,QAAO,EAAS,MAAM,EAAQ;;AAGhC,SAAgB,EACd,GACA,GAC0B;CAC1B,IAAM,IAAS,IAAI,gBAAgB,EAAO;AAc1C,MAAK,IAAM,CAAC,GAAS,MAV0B;EAC7C,CAAC,sCAAsC,sBAAsB;EAC7D,CAAC,yCAAyC,yBAAyB;EACnE,CAAC,yCAAyC,yBAAyB;EACnE,CAAC,yCAAyC,8BAA8B;EACxE,CAAC,yCAAyC,gCAAgC;EAC1E,CAAC,0CAA0C,gCAAgC;EAC3E,CAAC,wCAAwC,iCAAiC;EAC3E,EAEkD;EACjD,IAAM,IAAQ,EAAU,GAAS,EAAS;AAC1C,MAAI,EACF,QAAO;GACL;GACA,UAAU,EAAM;GAChB,UAAU,EACR,cAAc,EAAQ,QACvB;GACF;;AAeL,MAAK,IAAM,CAAC,GAAS,MAV8B;EACjD,CAAC,uBAAuB,sBAAsB;EAC9C,CAAC,0BAA0B,yBAAyB;EACpD,CAAC,0BAA0B,yBAAyB;EACpD,CAAC,0BAA0B,8BAA8B;EACzD,CAAC,0BAA0B,gCAAgC;EAC3D,CAAC,2BAA2B,gCAAgC;EAC5D,CAAC,yBAAyB,iCAAiC;EAC5D,EAEsD;EACrD,IAAM,IAAQ,EAAU,GAAS,EAAS;AAC1C,MAAI,EACF,QAAO;GACL;GACA,UAAU,EAAM;GAChB,UAAU,EACR,cAAc,EAAQ,QACvB;GACF;;AAQL,KAAI,sCAAsC,KAAK,EAAS,EAAE;EACxD,IAAM,IAAU,EAAO,IAAI,UAAU;AACrC,MAAI,EACF,QAAO;GACL,YAAY;GACZ,UAAU;GACV,UAAU;IAAE,SAAS;IAAc,cAAc;IAAuB;GACzE;;AA2BL,MAAK,IAAM,CAAC,GAAS,MAlB2B;EAC9C,CAAC,mCAAmC,sBAAsB;EAC1D,CAAC,uCAAuC,kCAAkC;EAC1E,CAAC,qCAAqC,iCAAiC;EACvE,CAAC,sCAAsC,yBAAyB;EAChE,CAAC,sCAAsC,yBAAyB;EAChE,CAAC,sCAAsC,8BAA8B;EACrE,CAAC,sCAAsC,gCAAgC;EACvE,CAAC,uCAAuC,gCAAgC;EACxE,CAAC,uCAAuC,2BAA2B;EACnE,CAAC,sCAAsC,0BAA0B;EACjE,CAAC,oCAAoC,wBAAwB;EAC7D,CAAC,mCAAmC,uBAAuB;EAC3D,CAAC,4CAA4C,+BAA+B;EAE5E,CAAC,wBAAwB,0BAA0B;EACpD,CAGC,KAAI,EAAU,GAAS,EAAS,CAC9B,QAAO;EACL;EACA,UAAU;GAAE,SAAS;GAAW,cAAc,EAAQ;GAAQ;EAC/D;CAIL,IAAM,IACJ,EAAO,IAAI,MAAM,WACV;EACL,IAAM,IAAW,EAAS,MAAM,IAAI,CAAC,OAAO,QAAQ;AACpD,SAAO,EAAS,SAAS,IAAI,EAAS,EAAS,SAAS,KAAK,KAAA;KAC3D;AAEN,QAAO;EACL,WAAW,KAAa,KAAA;EACxB,UAAU,EACR,GAAI,IAAY,EAAE,cAAW,GAAG,EAAE,EACnC;EACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@burdenoff/microfe-theglobalfuel",
3
- "version": "2026.801.1",
3
+ "version": "2026.804.2",
4
4
  "description": "Burdenoff TheGlobalFuel Microfrontend — Energy, Mineral & Commodity Resource operating system",
5
5
  "type": "module",
6
6
  "files": [