Resource Allocation
Planning for 2026
Members / Projects
Digital Infrastructure 2026
Brand Identity Reload
Mobile App V2
Sarah Connor
Frontend Lead
40%
60%
John Reese
Backend Engineer
20%
80%
Ellen Ripley
Designer
100%
A specialized widget for visualizing resource allocation across multiple projects and team members.
import { AllocationMatrixWidget } from '@photonix/ultimate';
const projects = [...];
const members = [...];
const allocations = [...];
<AllocationMatrixWidget
title="Staffing Matrix"
projects={projects}
members={members}
allocations={allocations}
/>Prop | Type | Default | Description |
|---|---|---|---|
title | string | - | Header title |
subtitle | string | - | Header subtitle |
projects | MatrixProject[] | [] | Array of project items |
members | MatrixMember[] | [] | Array of member items |
allocations | MatrixAllocation[] | [] | Array of allocation items |
dateRange | AllocationMatrixDateRange | - | Optional date range used to filter or aggregate time-based allocations |
loading | boolean | false | Loading state |
headerExtraContent | React.ReactNode | - | Component to display in the header (e.g., custom filters) |
footer | React.ReactNode | - | Content to display below the matrix |
height | string | number | - | Component height |
onCellClick | ((memberId: string, projectId: string) => void) | - | Click handler for a cell |
appearance | WidgetAppearance | 'outlined' | Widget appearance |
padding | string | number | - | Widget padding (default: 16px) |
className | string | - | Custom class name |
style | React.CSSProperties | - | Custom style |
Use dateRange together with allocations that include startDate and endDate to enable native time filtering.
Selected range: 01/01/2026 - 31/03/2026 • Matching periods: Q1 2026
const [dateRange, setDateRange] = useState<DateRange | undefined>({
start: new Date(2026, 0, 1),
end: new Date(2026, 2, 31),
});
<AllocationMatrixWidget
title="Resource Allocation"
subtitle="Allocation filtered by selected date range"
projects={projects}
members={members}
allocations={timedAllocations}
dateRange={dateRange}
headerExtraContent={
<DateRangePicker
variant="single"
value={dateRange}
onChange={setDateRange}
labelStyle="outside"
placeholder="Select range"
showPresets
fullWidth={false}
/>
}
/>Displays a skeleton preview while data is being fetched.
<AllocationMatrixWidget title="Allocation" projects={[]} members={[]} allocations={[]} loading />Display summary or additional info at the bottom.
Last updated: 5 minutes ago
<AllocationMatrixWidget
title="Resource Summary"
projects={projects}
members={members}
allocations={allocations}
footer="Last updated: 5 minutes ago"
/>