ARIA · table fallbackAccessibility
Canvas ARIA metadata is paired with a text summary and table fallback.
Graflume · Alpha
Compare the start and end of tasks or events on one time axis. These tabs come from Graflume's public catalog. Every mode owns runnable data, options, a Quick API, and source-backed feature claims.
Chart family · Default families
Compare the start and end of tasks or events on one time axis.
timeline()graflumetimelineChart-specific features
These tabs come from Graflume's public catalog. Every mode owns runnable data, options, a Quick API, and source-backed feature claims.
Gantt chart uses runnable data and options to demonstrate interval and x-range; basic dependencies.
StatusLoading
ganttinterval and x-rangebasic dependenciesclipping and durationLoading
Row data and zero-copy TypedArray columns share one data contract.
starttemporal | taskordinal | idordinal | endtemporal | progressquantitative |
|---|---|---|---|---|
| 2026-01-01 | Research | research | 2026-01-09 | 100 |
| 2026-01-05 | Data design | data | 2026-01-16 | 100 |
| 2026-01-12 | Prototype | prototype | 2026-01-25 | 86 |
| 2026-01-19 | Accessibility | accessibility | 2026-02-02 | 72 |
| 2026-01-27 | Validation | validation | 2026-02-10 | 48 |
| 2026-02-09 | Release | release | 2026-02-14 | 20 |
Browser API
const data = [
{
"end": "2026-01-09",
"id": "research",
"progress": 100,
"start": "2026-01-01",
"task": "Research"
},
{
"end": "2026-01-16",
"id": "data",
"progress": 100,
"start": "2026-01-05",
"task": "Data design"
},
{
"end": "2026-01-25",
"id": "prototype",
"progress": 86,
"start": "2026-01-12",
"task": "Prototype"
},
{
"end": "2026-02-02",
"id": "accessibility",
"progress": 72,
"start": "2026-01-19",
"task": "Accessibility"
},
{
"end": "2026-02-10",
"id": "validation",
"progress": 48,
"start": "2026-01-27",
"task": "Validation"
},
{
"end": "2026-02-14",
"id": "release",
"progress": 20,
"start": "2026-02-09",
"task": "Release"
}
];
const options = {
"accessibility": {
"description": "Zoom and pan inspect the rendered surface without changing data axes or values. When playback controls are available, they move through real steps in the order each unique value first appears in the source data.",
"label": "Timeline / Range example"
},
"axes": {
"x": {
"format": {
"dateStyle": "medium",
"timeZone": "UTC",
"type": "date"
},
"ticks": {
"count": 5,
"spacing": 10
}
},
"y": {
"labels": {
"maxLength": 22,
"orientation": "horizontal",
"padding": 12
},
"title": {
"padding": 86,
"text": "Workstream"
}
}
},
"height": 620,
"interaction": {
"controls": {
"annotations": false,
"export": true,
"fullscreen": true,
"labels": {
"controls": "Chart controls",
"enterFullscreen": "Enter fullscreen",
"exitFullscreen": "Exit fullscreen",
"exportPng": "Download PNG",
"hideAnnotations": "Hide callouts",
"loop": "Loop playback",
"nextFrame": "Next frame",
"pause": "Pause",
"play": "Play",
"previousFrame": "Previous frame",
"reset": "Reset view",
"seek": "Playback position",
"showAnnotations": "Show callouts",
"speed": "Playback speed",
"zoomIn": "Zoom in",
"zoomOut": "Zoom out"
},
"playback": false,
"reset": true,
"zoom": true
},
"hover": true,
"navigation": {
"drag": true,
"keyboard": true,
"maxZoom": 6,
"minZoom": 1,
"pinch": true,
"wheel": "modifier"
},
"tooltip": {
"axis": "y",
"fields": [
{
"dateStyle": "long",
"field": "start",
"format": "date",
"label": "Start",
"timeZone": "UTC"
},
{
"field": "task",
"format": "auto",
"label": "Task"
},
{
"field": "id",
"format": "auto",
"label": "Id"
},
{
"dateStyle": "long",
"field": "end",
"format": "date",
"label": "End",
"timeZone": "UTC"
},
{
"field": "progress",
"format": "number",
"label": "Progress"
}
],
"title": "Timeline / Range",
"trigger": "axis"
}
},
"locale": "en",
"mark": {
"fields": {
"end": "end",
"id": "id",
"progress": "progress"
}
},
"padding": {
"bottom": 64,
"left": 132,
"right": 30,
"top": 52
},
"theme": "graflume-light",
"title": {
"subtitle": "Gantt chart uses runnable data and options to demonstrate interval and x-range; basic dependencies.",
"text": "Timeline / Range"
},
"width": "container",
"x": {
"field": "start",
"title": "Schedule",
"type": "temporal"
},
"y": {
"field": "task",
"title": "Workstream",
"type": "ordinal"
}
};
Graflume.gantt('#chart', data, options);Portable schema
{
"accessibility": {
"description": "Zoom and pan inspect the rendered surface without changing data axes or values. When playback controls are available, they move through real steps in the order each unique value first appears in the source data.",
"label": "Timeline / Range example"
},
"axes": {
"x": {
"format": {
"dateStyle": "medium",
"timeZone": "UTC",
"type": "date"
},
"ticks": {
"count": 5,
"spacing": 10
}
},
"y": {
"labels": {
"maxLength": 22,
"orientation": "horizontal",
"padding": 12
},
"title": {
"padding": 86,
"text": "Workstream"
}
}
},
"height": 620,
"interaction": {
"controls": {
"annotations": false,
"export": true,
"fullscreen": true,
"labels": {
"controls": "Chart controls",
"enterFullscreen": "Enter fullscreen",
"exitFullscreen": "Exit fullscreen",
"exportPng": "Download PNG",
"hideAnnotations": "Hide callouts",
"loop": "Loop playback",
"nextFrame": "Next frame",
"pause": "Pause",
"play": "Play",
"previousFrame": "Previous frame",
"reset": "Reset view",
"seek": "Playback position",
"showAnnotations": "Show callouts",
"speed": "Playback speed",
"zoomIn": "Zoom in",
"zoomOut": "Zoom out"
},
"playback": false,
"reset": true,
"zoom": true
},
"hover": true,
"navigation": {
"drag": true,
"keyboard": true,
"maxZoom": 6,
"minZoom": 1,
"pinch": true,
"wheel": "modifier"
},
"tooltip": {
"axis": "y",
"fields": [
{
"dateStyle": "long",
"field": "start",
"format": "date",
"label": "Start",
"timeZone": "UTC"
},
{
"field": "task",
"format": "auto",
"label": "Task"
},
{
"field": "id",
"format": "auto",
"label": "Id"
},
{
"dateStyle": "long",
"field": "end",
"format": "date",
"label": "End",
"timeZone": "UTC"
},
{
"field": "progress",
"format": "number",
"label": "Progress"
}
],
"title": "Timeline / Range",
"trigger": "axis"
}
},
"locale": "en",
"mark": {
"fields": {
"end": "end",
"id": "id",
"progress": "progress"
}
},
"padding": {
"bottom": 64,
"left": 132,
"right": 30,
"top": 52
},
"theme": "graflume-light",
"title": {
"subtitle": "Gantt chart uses runnable data and options to demonstrate interval and x-range; basic dependencies.",
"text": "Timeline / Range"
},
"width": "container",
"x": {
"field": "start",
"title": "Schedule",
"type": "temporal"
},
"y": {
"field": "task",
"title": "Workstream",
"type": "ordinal"
}
}Timeline uses runnable data and options to demonstrate Gantt; lane packing and grouping.
StatusLoading
timelineGanttlane packing and groupingnavigatorLoading
Row data and zero-copy TypedArray columns share one data contract.
starttemporal | categoryordinal | endtemporal |
|---|---|---|
| 2026-01-01 | Research | 2026-01-09 |
| 2026-01-05 | Data design | 2026-01-16 |
| 2026-01-12 | Prototype | 2026-01-25 |
| 2026-01-19 | Accessibility | 2026-02-02 |
| 2026-01-27 | Validation | 2026-02-10 |
| 2026-02-09 | Release | 2026-02-14 |
Browser API
const data = [
{
"category": "Research",
"end": "2026-01-09",
"start": "2026-01-01"
},
{
"category": "Data design",
"end": "2026-01-16",
"start": "2026-01-05"
},
{
"category": "Prototype",
"end": "2026-01-25",
"start": "2026-01-12"
},
{
"category": "Accessibility",
"end": "2026-02-02",
"start": "2026-01-19"
},
{
"category": "Validation",
"end": "2026-02-10",
"start": "2026-01-27"
},
{
"category": "Release",
"end": "2026-02-14",
"start": "2026-02-09"
}
];
const options = {
"accessibility": {
"description": "Zoom and pan inspect the rendered surface without changing data axes or values. When playback controls are available, they move through real steps in the order each unique value first appears in the source data.",
"label": "Timeline / Range · Timeline example"
},
"axes": {
"x": {
"format": {
"dateStyle": "medium",
"timeZone": "UTC",
"type": "date"
},
"ticks": {
"count": 5,
"spacing": 10
}
},
"y": {
"labels": {
"maxLength": 22,
"orientation": "horizontal",
"padding": 12
},
"title": {
"padding": 86,
"text": "Workstream"
}
}
},
"height": 620,
"interaction": {
"controls": {
"annotations": false,
"export": true,
"fullscreen": true,
"labels": {
"controls": "Chart controls",
"enterFullscreen": "Enter fullscreen",
"exitFullscreen": "Exit fullscreen",
"exportPng": "Download PNG",
"hideAnnotations": "Hide callouts",
"loop": "Loop playback",
"nextFrame": "Next frame",
"pause": "Pause",
"play": "Play",
"previousFrame": "Previous frame",
"reset": "Reset view",
"seek": "Playback position",
"showAnnotations": "Show callouts",
"speed": "Playback speed",
"zoomIn": "Zoom in",
"zoomOut": "Zoom out"
},
"playback": false,
"reset": true,
"zoom": true
},
"hover": true,
"navigation": {
"drag": true,
"keyboard": true,
"maxZoom": 6,
"minZoom": 1,
"pinch": true,
"wheel": "modifier"
},
"tooltip": {
"axis": "y",
"fields": [
{
"dateStyle": "long",
"field": "start",
"format": "date",
"label": "Start",
"timeZone": "UTC"
},
{
"field": "category",
"format": "auto",
"label": "Category"
},
{
"dateStyle": "long",
"field": "end",
"format": "date",
"label": "End",
"timeZone": "UTC"
}
],
"title": "Timeline / Range · Timeline",
"trigger": "axis"
}
},
"locale": "en",
"mark": {
"fields": {
"end": "end"
}
},
"padding": {
"bottom": 64,
"left": 132,
"right": 30,
"top": 52
},
"theme": "graflume-light",
"title": {
"subtitle": "Timeline uses runnable data and options to demonstrate Gantt; lane packing and grouping.",
"text": "Timeline / Range · Timeline"
},
"width": "container",
"x": {
"field": "start",
"title": "Schedule",
"type": "temporal"
},
"y": {
"field": "category",
"title": "Workstream",
"type": "ordinal"
}
};
Graflume.timeline('#chart', data, options);Portable schema
{
"accessibility": {
"description": "Zoom and pan inspect the rendered surface without changing data axes or values. When playback controls are available, they move through real steps in the order each unique value first appears in the source data.",
"label": "Timeline / Range · Timeline example"
},
"axes": {
"x": {
"format": {
"dateStyle": "medium",
"timeZone": "UTC",
"type": "date"
},
"ticks": {
"count": 5,
"spacing": 10
}
},
"y": {
"labels": {
"maxLength": 22,
"orientation": "horizontal",
"padding": 12
},
"title": {
"padding": 86,
"text": "Workstream"
}
}
},
"height": 620,
"interaction": {
"controls": {
"annotations": false,
"export": true,
"fullscreen": true,
"labels": {
"controls": "Chart controls",
"enterFullscreen": "Enter fullscreen",
"exitFullscreen": "Exit fullscreen",
"exportPng": "Download PNG",
"hideAnnotations": "Hide callouts",
"loop": "Loop playback",
"nextFrame": "Next frame",
"pause": "Pause",
"play": "Play",
"previousFrame": "Previous frame",
"reset": "Reset view",
"seek": "Playback position",
"showAnnotations": "Show callouts",
"speed": "Playback speed",
"zoomIn": "Zoom in",
"zoomOut": "Zoom out"
},
"playback": false,
"reset": true,
"zoom": true
},
"hover": true,
"navigation": {
"drag": true,
"keyboard": true,
"maxZoom": 6,
"minZoom": 1,
"pinch": true,
"wheel": "modifier"
},
"tooltip": {
"axis": "y",
"fields": [
{
"dateStyle": "long",
"field": "start",
"format": "date",
"label": "Start",
"timeZone": "UTC"
},
{
"field": "category",
"format": "auto",
"label": "Category"
},
{
"dateStyle": "long",
"field": "end",
"format": "date",
"label": "End",
"timeZone": "UTC"
}
],
"title": "Timeline / Range · Timeline",
"trigger": "axis"
}
},
"locale": "en",
"mark": {
"fields": {
"end": "end"
}
},
"padding": {
"bottom": 64,
"left": 132,
"right": 30,
"top": 52
},
"theme": "graflume-light",
"title": {
"subtitle": "Timeline uses runnable data and options to demonstrate Gantt; lane packing and grouping.",
"text": "Timeline / Range · Timeline"
},
"width": "container",
"x": {
"field": "start",
"title": "Schedule",
"type": "temporal"
},
"y": {
"field": "category",
"title": "Workstream",
"type": "ordinal"
}
}Horizontal range chart uses runnable data and options to demonstrate progress bars; milestones.
StatusLoading
x-rangeprogress barsmilestonesLoading
Row data and zero-copy TypedArray columns share one data contract.
starttemporal | categoryordinal | endtemporal |
|---|---|---|
| 2026-01-01 | Research | 2026-01-09 |
| 2026-01-05 | Data design | 2026-01-16 |
| 2026-01-12 | Prototype | 2026-01-25 |
| 2026-01-19 | Accessibility | 2026-02-02 |
| 2026-01-27 | Validation | 2026-02-10 |
| 2026-02-09 | Release | 2026-02-14 |
Browser API
const data = [
{
"category": "Research",
"end": "2026-01-09",
"start": "2026-01-01"
},
{
"category": "Data design",
"end": "2026-01-16",
"start": "2026-01-05"
},
{
"category": "Prototype",
"end": "2026-01-25",
"start": "2026-01-12"
},
{
"category": "Accessibility",
"end": "2026-02-02",
"start": "2026-01-19"
},
{
"category": "Validation",
"end": "2026-02-10",
"start": "2026-01-27"
},
{
"category": "Release",
"end": "2026-02-14",
"start": "2026-02-09"
}
];
const options = {
"accessibility": {
"description": "Zoom and pan inspect the rendered surface without changing data axes or values. When playback controls are available, they move through real steps in the order each unique value first appears in the source data.",
"label": "Timeline / Range · Horizontal range chart example"
},
"axes": {
"x": {
"format": {
"dateStyle": "medium",
"timeZone": "UTC",
"type": "date"
},
"ticks": {
"count": 5,
"spacing": 10
}
},
"y": {
"labels": {
"maxLength": 22,
"orientation": "horizontal",
"padding": 12
},
"title": {
"padding": 86,
"text": "Workstream"
}
}
},
"height": 620,
"interaction": {
"controls": {
"annotations": false,
"export": true,
"fullscreen": true,
"labels": {
"controls": "Chart controls",
"enterFullscreen": "Enter fullscreen",
"exitFullscreen": "Exit fullscreen",
"exportPng": "Download PNG",
"hideAnnotations": "Hide callouts",
"loop": "Loop playback",
"nextFrame": "Next frame",
"pause": "Pause",
"play": "Play",
"previousFrame": "Previous frame",
"reset": "Reset view",
"seek": "Playback position",
"showAnnotations": "Show callouts",
"speed": "Playback speed",
"zoomIn": "Zoom in",
"zoomOut": "Zoom out"
},
"playback": false,
"reset": true,
"zoom": true
},
"hover": true,
"navigation": {
"drag": true,
"keyboard": true,
"maxZoom": 6,
"minZoom": 1,
"pinch": true,
"wheel": "modifier"
},
"tooltip": {
"axis": "y",
"fields": [
{
"dateStyle": "long",
"field": "start",
"format": "date",
"label": "Start",
"timeZone": "UTC"
},
{
"field": "category",
"format": "auto",
"label": "Category"
},
{
"dateStyle": "long",
"field": "end",
"format": "date",
"label": "End",
"timeZone": "UTC"
}
],
"title": "Timeline / Range · Horizontal range chart",
"trigger": "axis"
}
},
"locale": "en",
"mark": {
"fields": {
"end": "end"
}
},
"padding": {
"bottom": 64,
"left": 132,
"right": 30,
"top": 52
},
"theme": "graflume-light",
"title": {
"subtitle": "Horizontal range chart uses runnable data and options to demonstrate progress bars; milestones.",
"text": "Timeline / Range · Horizontal range chart"
},
"width": "container",
"x": {
"field": "start",
"title": "Schedule",
"type": "temporal"
},
"y": {
"field": "category",
"title": "Workstream",
"type": "ordinal"
}
};
Graflume.xRange('#chart', data, options);Portable schema
{
"accessibility": {
"description": "Zoom and pan inspect the rendered surface without changing data axes or values. When playback controls are available, they move through real steps in the order each unique value first appears in the source data.",
"label": "Timeline / Range · Horizontal range chart example"
},
"axes": {
"x": {
"format": {
"dateStyle": "medium",
"timeZone": "UTC",
"type": "date"
},
"ticks": {
"count": 5,
"spacing": 10
}
},
"y": {
"labels": {
"maxLength": 22,
"orientation": "horizontal",
"padding": 12
},
"title": {
"padding": 86,
"text": "Workstream"
}
}
},
"height": 620,
"interaction": {
"controls": {
"annotations": false,
"export": true,
"fullscreen": true,
"labels": {
"controls": "Chart controls",
"enterFullscreen": "Enter fullscreen",
"exitFullscreen": "Exit fullscreen",
"exportPng": "Download PNG",
"hideAnnotations": "Hide callouts",
"loop": "Loop playback",
"nextFrame": "Next frame",
"pause": "Pause",
"play": "Play",
"previousFrame": "Previous frame",
"reset": "Reset view",
"seek": "Playback position",
"showAnnotations": "Show callouts",
"speed": "Playback speed",
"zoomIn": "Zoom in",
"zoomOut": "Zoom out"
},
"playback": false,
"reset": true,
"zoom": true
},
"hover": true,
"navigation": {
"drag": true,
"keyboard": true,
"maxZoom": 6,
"minZoom": 1,
"pinch": true,
"wheel": "modifier"
},
"tooltip": {
"axis": "y",
"fields": [
{
"dateStyle": "long",
"field": "start",
"format": "date",
"label": "Start",
"timeZone": "UTC"
},
{
"field": "category",
"format": "auto",
"label": "Category"
},
{
"dateStyle": "long",
"field": "end",
"format": "date",
"label": "End",
"timeZone": "UTC"
}
],
"title": "Timeline / Range · Horizontal range chart",
"trigger": "axis"
}
},
"locale": "en",
"mark": {
"fields": {
"end": "end"
}
},
"padding": {
"bottom": 64,
"left": 132,
"right": 30,
"top": 52
},
"theme": "graflume-light",
"title": {
"subtitle": "Horizontal range chart uses runnable data and options to demonstrate progress bars; milestones.",
"text": "Timeline / Range · Horizontal range chart"
},
"width": "container",
"x": {
"field": "start",
"title": "Schedule",
"type": "temporal"
},
"y": {
"field": "category",
"title": "Workstream",
"type": "ordinal"
}
}Catalog
The source-controlled catalog maps callable modes in this family and compatibility identifiers to their canonical modes. This table contains executable entries only.
3 modes · 3 compatibility identifiers
| ID | Name | Quick API | mode | mark | renderer |
|---|---|---|---|---|---|
gantt | Gantt chart | gantt() | gantt | gantt | canvas |
timeline | Timeline | timeline() | default | timeline | canvas |
x-range | Horizontal range chart | xRange() | x-range | timeline | canvas |
| Identifier | Canonical mode ID |
|---|---|
gantt | gantt |
timeline | timeline |
xrange | x-range |
Manual
ARIA · table fallbackCanvas ARIA metadata is paired with a text summary and table fallback.
standard · large · ultraStandard, large, and ultra profiles bound rendering work.