Stepkit/Orbital timeline
Motion & effects · Adapted

Orbital timeline

A radial project timeline adapted from Jatin Yadav's MIT-labelled 21st.dev component.

Download ZIP
Live preview

Try it in context

Customize preview
Source delivery

Usage & source

v0.3.0
React
"use client";

import type { CSSProperties } from "react";
import { OrbitalTimeline } from "./components/stepkit/OrbitalTimeline";
import "./components/stepkit/styles.css";
import "./components/stepkit/adapted-showcase.css";

const themeStyle = {"--stepkit-bg":"#111217","--stepkit-surface":"#1b1c24","--stepkit-surface-muted":"#22232d","--stepkit-fg":"#f6f5fb","--stepkit-muted":"#a4a6b4","--stepkit-border":"#343641","--stepkit-border-strong":"#565866","--stepkit-code":"#20212a","--stepkit-shadow":"0 24px 70px rgba(0, 0, 0, .34)","--stepkit-accent":"#2563eb","--stepkit-accent-strong":"#1d4ed8","--stepkit-accent-soft":"#1f356b","--stepkit-accent-on-soft":"#a9c4ff","--stepkit-accent-text":"#ffffff","--stepkit-error":"#ff9ba9","--stepkit-placeholder":"#b8bac6","--stepkit-radius":"16px","--stepkit-space":"16px","--stepkit-control-height":"44px","--stepkit-font-sans":"Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif"} as CSSProperties;

const timelineData: import("./components/stepkit/OrbitalTimeline").TimelineItem[] = [{ id: 1, title: "Research", date: "Mar 04", content: "Turn the first signal into a useful direction.", category: "Research", relatedIds: [2], status: "completed", energy: 86 }, { id: 2, title: "Design", date: "Mar 11", content: "Make the idea legible before it becomes large.", category: "Design", relatedIds: [1, 3], status: "in-progress", energy: 68 }, { id: 3, title: "Build", date: "Mar 18", content: "Carry the shape into a working surface.", category: "Build", relatedIds: [2, 4], status: "in-progress", energy: 54 }, { id: 4, title: "Test", date: "Mar 25", content: "Check the details that make the experience hold together.", category: "Testing", relatedIds: [3, 5], status: "pending", energy: 35 }, { id: 5, title: "Release", date: "Apr 01", content: "Give the finished idea a clear path into the world.", category: "Release", relatedIds: [4], status: "pending", energy: 20 }];

export default function Example() {
  return (
    <div className="stepkit-theme" data-stepkit-preset="modern" style={themeStyle}>
      <OrbitalTimeline
      timelineData={timelineData}
      title={"Project orbit"}
      paused={false}
      />
    </div>
  );
}

Dependencies

[email protected]
[email protected]
Add to your project

Install

Use the registry command or download the complete source archive.

npx [email protected] add https://vstepanov.com/stepkit/r/orbital-timeline.json
Assistant handoff

Integration prompt

Prompt
Install Stepkit Orbital timeline 0.3.0 from the registry and preserve the included MIT notice.
npx [email protected] add https://vstepanov.com/stepkit/v0.3.0/r/orbital-timeline.json
Install the tested runtime dependencies exactly: npm install [email protected] [email protected]
Keep the component source, shared styles, NOTICE.md, and provenance files together. Apply the theme tokens on a wrapper rather than passing theme keys as component props.

Usage:
```tsx
"use client";

import type { CSSProperties } from "react";
import { OrbitalTimeline } from "./components/stepkit/OrbitalTimeline";
import "./components/stepkit/styles.css";
import "./components/stepkit/adapted-showcase.css";

const themeStyle = {"--stepkit-bg":"#f7f7f8","--stepkit-surface":"#ffffff","--stepkit-surface-muted":"#f0f0f3","--stepkit-fg":"#17181c","--stepkit-muted":"#626572","--stepkit-border":"#e3e4e9","--stepkit-border-strong":"#c8cad3","--stepkit-code":"#f1f1f4","--stepkit-shadow":"0 20px 60px rgba(31, 26, 64, .10)","--stepkit-accent":"#6950df","--stepkit-accent-strong":"#5137c7","--stepkit-accent-soft":"#eeeafd","--stepkit-accent-on-soft":"#5137c7","--stepkit-accent-text":"#ffffff","--stepkit-error":"#b43145","--stepkit-placeholder":"#626572","--stepkit-radius":"16px","--stepkit-space":"16px","--stepkit-control-height":"44px","--stepkit-font-sans":"Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif"} as CSSProperties;

const timelineData: import("./components/stepkit/OrbitalTimeline").TimelineItem[] = [{ id: 1, title: "Research", date: "Mar 04", content: "Turn the first signal into a useful direction.", category: "Research", relatedIds: [2], status: "completed", energy: 86 }, { id: 2, title: "Design", date: "Mar 11", content: "Make the idea legible before it becomes large.", category: "Design", relatedIds: [1, 3], status: "in-progress", energy: 68 }, { id: 3, title: "Build", date: "Mar 18", content: "Carry the shape into a working surface.", category: "Build", relatedIds: [2, 4], status: "in-progress", energy: 54 }, { id: 4, title: "Test", date: "Mar 25", content: "Check the details that make the experience hold together.", category: "Testing", relatedIds: [3, 5], status: "pending", energy: 35 }, { id: 5, title: "Release", date: "Apr 01", content: "Give the finished idea a clear path into the world.", category: "Release", relatedIds: [4], status: "pending", energy: 20 }];

export default function Example() {
  return (
    <div className="stepkit-theme" data-stepkit-preset="modern" style={themeStyle}>
      <OrbitalTimeline
      timelineData={timelineData}
      title={"Project orbit"}
      paused={false}
      />
    </div>
  );
}
```

Selected bounded settings: {"title":"Project orbit","paused":false}.
Selected theme: {"mode":"light","accent":"violet","radius":"soft","density":"comfortable","preset":"modern"}.
API

Props

NameTypeDefaultDescription
timelineDataTimelineItem[]requiredTimeline phases positioned around the orbit.
titlestring"Project orbit"Accessible section heading.
pausedbooleanfalseStops rotation and pulse motion.
classNamestring""Additional class name.
Quality

Accessibility & limits

  • Every phase is a native button with an expanded details panel.
  • Reduced-motion and paused states stop rotation and pulse motion.
  • Status, date, content, energy and related phases remain available as text.

Limitations

  • Pass a stable timelineData array with unique numeric ids and relatedIds that refer to other phases.
Source record

Provenance

Adapted source under the MIT licence.

Upstream: Jatin Yadav Radial Orbital Timeline

Required notices: NOTICE.md, PROVENANCE-stepkit-orbital-timeline.md, NOTICE-21ST-JATIN-YADAV.md