Licence
SEE LICENSE IN LICENSE
Version
1.3.0
Deps
0
Size
1.7 MB
Vulns
0
Weekly
0
@tempis/timeline
The core typescript-based canvas-rendered timeline library.
Zero dependencies. Smooth at 5,000+ items. Under 18 KB gzipped.
Install
npm install @tempis/timelineOr via CDN:
<script src="https://unpkg.com/@tempis/timeline/dist/tempis_timeline.min.js"></script>Quick Start
import { TempisTimeline } from '@tempis/timeline';
const timeline = new TempisTimeline('#canvas', {
responsive: true,
items: [
{ id: 1, label: 'Design', start: '2026-01-05', end: '2026-01-15', grouping: 'Frontend' },
{ id: 2, label: 'Build', start: '2026-01-12', end: '2026-01-28', grouping: 'Frontend' },
{ id: 3, label: 'Launch', start: '2026-01-30', grouping: 'Frontend' },
{ id: 4, label: 'API', start: '2026-01-08', end: '2026-01-25', grouping: 'Backend' },
],
range: { start: '2026-01-01', end: '2026-02-01', position: 'bottom' }
});Script tag usage:
<script>
new tempis_timeline.TempisTimeline('#canvas', { /* ... */ });
</script>Features
- Canvas rendering — no DOM nodes per item
- Range and point-in-time items with automatic stacking
- Categories with interactive legend (filter on click, highlight on hover)
- Item groupings with custom sort and collapsible headers
- Timeline bands (range markers, point markers, lines)
- Item dependencies with automatic connector routing and RTL support
- Per-item style overrides (colors, borders, dash patterns, radius, padding)
- Progress indicator on range items
- Tooltips with custom templates, delay, and overflow handling
- Selection modes: none, single, multi
- Animated focus with configurable easing
- Zoom, pan, touch pinch, keyboard navigation
- Vertical fill modes: content, fill-canvas, grow-canvas
- Stack modes: compact, stable
- RTL layout
- Responsive resize
- Image export (PNG, JPEG, WebP) with DPR and background color
- Pluggable date adapters (native, Luxon, Day.js, etc.)
- Global color palette API
- Configurable scrollbar styling
- Minimap overview bar with click/drag navigation
- Accessibility: keyboard navigation, ARIA attributes, reduced motion support
- 100% TypeScript with full declarations
API
Constructor
new TempisTimeline(context: string | HTMLCanvasElement, options: TempisTimelineOptions)Methods
| Method | Description |
|---|---|
setItems(items) |
Replace all items and redraw |
getItems() |
Get current item definitions |
setCategories(categories) |
Replace all categories and redraw |
getCategories() |
Get current category definitions |
setBands(bands) |
Replace all bands and redraw |
setDependencies(deps) |
Replace all dependencies and redraw |
setGroupCollapsed(group, collapsed?) |
Set or toggle a group's collapsed state |
isGroupCollapsed(group) |
Check if a group is collapsed |
focus(options?) |
Navigate to an item, date, or range with animation |
getRange() |
Current visible range as { start, end } |
setSelection(ids) |
Programmatically select items by ID |
getSelection() |
Array of selected item IDs |
clearSelection() |
Deselect all items |
toImage(options?) |
Export as image Blob |
redraw() |
Force a redraw |
destroy() |
Clean up all listeners and resources |
Callbacks
| Callback | Signature |
|---|---|
onItemClick |
(id: string | number) => void |
onItemDoubleClick |
(id: string | number) => void |
onItemContextClick |
(id: string | number, position: { x: number; y: number }) => void |
onItemHover |
(id: string | number | null) => void |
onSelectionChange |
(changes: SelectionChangeEvent[]) => void |
onRangeChange |
(start: Date, end: Date) => void |
onGroupToggle |
(group: string, collapsed: boolean) => void |
Browser Support
Chrome, Edge, Firefox, Safari, Opera (latest versions).
Documentation
Full API documentation and guides are available at tempis.dev/api/core/getting-started.
Browse interactive examples at tempis.dev/examples.
Licence
Free for personal projects, education, and evaluation. A paid licence is required for commercial use where revenue is generated. See LICENSE for full terms.
Part of the Tempis monorepo.