Lumeo

Gantt

A project timeline with draggable task bars, dependencies, and progress tracking. Renders with a custom Lumeo SVG engine — no third-party charting library.

Installation

dotnet add package Lumeo.Gantt

One-time app setup (AddLumeo(), CSS & JS) is covered in the installation guide.

Usage

@using Lumeo

<Gantt />

When to Use

  • Planning a project with ordered phases and cross-task dependencies.
  • Letting stakeholders see "what blocks what" at a glance.
  • Allowing team leads to drag tasks to reschedule, and drag the progress handle to mark completion.

Drag a bar to move it, or drag the right edge to resize. Drag the progress handle (bottom of the bar) to change completion.

Last change
Drag a bar to see it here.
Current tasks
  • research — Research (06/04/2026 00:00:00:d → 06/09/2026 00:00:00:d, 100%)
  • design — Design (06/09/2026 00:00:00:d → 06/16/2026 00:00:00:d, 60%)
  • development — Development (06/16/2026 00:00:00:d → 06/29/2026 00:00:00:d, 30%)
  • testing — Testing (06/26/2026 00:00:00:d → 07/04/2026 00:00:00:d, 0%)
  • launch — Launch (07/04/2026 00:00:00:d → 07/06/2026 00:00:00:d, 0%)

Use the built-in toolbar above the chart to toggle between Day, Week, Month, and Year. Pass GanttViewMode.QuarterDay or GanttViewMode.HalfDay programmatically for hour-granularity views.

Set IsMilestone = true on any task to render it as a diamond at a point in time. Milestones are read-only (drag is suppressed) and can carry dependencies just like regular bars.

Pass a GroupBy function and/or set GroupLabel on each GanttTask. Tasks are sorted by group and a section-header row is injected before the first task of each group.

Use the BarColor delegate to return any CSS colour (hex, rgb, or a CSS variable like var(--color-destructive)) per task. Useful for traffic-light status colouring.

API Reference

Gantt

Prop Type Default Description
TasksIEnumerable<GanttTask>?nullThe tasks to render. Use with @bind-Tasks for two-way binding.
TasksChangedEventCallback<IEnumerable<GanttTask>>Fires with the updated collection after the user drags a bar or changes its progress.
ViewModeGanttViewModeDayTimeline zoom level. Can be changed at runtime via the toolbar.
OnTaskClickEventCallback<GanttTask>Fires when the user clicks a task bar.
OnDateChangeEventCallback<GanttTask>Fires with the updated task after a drag or resize completes.
OnProgressChangeEventCallback<GanttTask>Fires with the updated task after its progress handle is dragged.
Heightstring"500px"CSS height applied to the Gantt canvas (the toolbar sits above it).
ReadonlyboolfalseWhen true the user can no longer drag bars or change progress.
TodayHighlightbooltrueShow/hide the vertical today-line and dot marker on the chart.
BarHeightint?null (22)Override the pixel height of each task bar. Defaults to 22 when null.
ColumnWidthint?nullOverride the pixel width of each date column. Each view mode has its own default; this lets you densify or expand the timeline.
BarColorFunc<GanttTask, string?>?nullPer-task bar colour delegate. Return a CSS colour (hex, rgb, or var(--…)) or null to use the primary theme colour.
GroupByFunc<GanttTask, string>?nullWhen set, tasks are sorted by the returned group key and a section-header row is injected before each group. Works in tandem with GanttTask.GroupLabel.
TrailingContentRenderFragment?nullOptional slot on the right side of the toolbar — typical usage is an "Add task" button.
Classstring?nullAdditional CSS classes applied to the outer wrapper.
AdditionalAttributesDictionary<string, object>?nullAdditional HTML attributes forwarded to the root element.

GanttTask

Field Type Description
IdstringStable identifier used to reconcile drag edits back into the caller's collection.
NamestringThe label rendered on the task bar.
StartDateTimeStart date (inclusive). Frappe Gantt works at day granularity.
EndDateTimeEnd date.
ProgressintCompletion percentage, 0–100. Drives the progress fill inside the bar.
Dependenciesstring[]?Ids of tasks this task depends on. Rendered as arrows in the chart. Read-only; interactive link creation is not supported by the SVG engine.
CustomClassstring?Extra CSS class applied to the bar — use to color-code milestones or delayed work.
IsMilestoneboolWhen true, renders as a diamond at the Start date. End is clamped to Start. Drag is suppressed for milestones.
GroupLabelstring?Optional swim-lane label. When the Gantt's GroupBy parameter is set, tasks carrying the same GroupLabel are clustered together with a section header.

GanttViewMode

Value Description
QuarterDay6-hour columns — useful for hour-scale shift scheduling. Not exposed in the toolbar.
HalfDay12-hour columns. Not exposed in the toolbar.
DayOne column per day — the default.
WeekOne column per week.
MonthOne column per month — best for multi-quarter plans.
YearOne column per year — best for roadmap-style views.
  • Scheduler — calendar-style event grid when you care about time-of-day rather than project phases.
  • Data Grid — tabular view of the same task data when a timeline isn't needed.