Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 47 additions & 0 deletions submissions/examples/project-roadmap-timeline/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Project Roadmap Timeline Component

## 1. What does this do?
Provides a highly responsive, interactive, and visually polished project roadmap timeline component that tracks progress milestones (Completed, In Progress, Upcoming) with glassmorphic cards and spring-bounce animations.

---

## 2. How is it used?
Construct a timeline using the following semantic classes. No JavaScript required.

```html
<!-- Main timeline container (renders horizontal on desktop, vertical on mobile) -->
<div class="rt-timeline" role="list" aria-label="Roadmap milestones">

<!-- Individual item (can be: rt-item--completed, rt-item--active, or rt-item--upcoming) -->
<article class="rt-item rt-item--active" role="listitem">

<!-- Milestone progress dot -->
<div class="rt-marker">
<span class="rt-dot rt-dot--pulse">
<span class="rt-dot-inner"></span>
</span>
</div>

<!-- Detailed information card -->
<div class="rt-card">
<span class="rt-badge rt-badge--active">In Progress</span>
<h2 class="rt-title">Core Development</h2>
<p class="rt-desc">Milestone details go here.</p>
<time class="rt-date" datetime="2026-06">Jun 2026</time>
</div>

</article>

</div>
```

---

## 3. Why is it useful?
Roadmaps and progress stepper components are standard for landing pages, product pages, and developer dashboards, but they are difficult to code responsively.

This component features:
- **Responsive Layout Shifting:** Automatically lays out steps horizontally on desktop viewports (>768px) and switches to vertical layouts on tablets and mobile screens using fluid grid metrics and no JavaScript.
- **High-fidelity Micro-interactions:** Applies a bouncy spring curve (`cubic-bezier(0.34, 1.56, 0.64, 1)`) on card-lifts and dot scaling to match EaseMotion's snappy feel.
- **State-aware Connecting Connectors:** The timeline connecting bar transitions dynamically between states (green for completed, blue-to-gray gradient for in-progress, dark gray for upcoming).
- **Accessibility Audit Compliant:** Employs explicit ARIA role list/listitem annotations, semantic layout tags, keyboard-friendly outline hints, and complete `@media (prefers-reduced-motion: reduce)` resets.
111 changes: 111 additions & 0 deletions submissions/examples/project-roadmap-timeline/demo.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Project Roadmap Timeline – A visual milestone tracker built with EaseMotion CSS.">
<title>Project Roadmap Timeline | EaseMotion CSS</title>

<!-- Font Integrations -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">

<!-- Local Stylesheet -->
<link rel="stylesheet" href="style.css">
</head>
<body>

<main class="rt-preview">
<section class="rt-section" aria-label="Project Roadmap">

<!-- Header Section -->
<header class="rt-header">
<span class="rt-subheading">DEVELOPMENT PLAN &bull; 2026</span>
<h1 class="rt-heading">Project Roadmap</h1>
</header>

<!-- Roadmap Timeline Container -->
<div class="rt-timeline" role="list" aria-label="Roadmap milestones">

<!-- Phase 1 — Completed -->
<article class="rt-item rt-item--completed" role="listitem">
<div class="rt-marker">
<span class="rt-dot" aria-label="Completed Milestone">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
<polyline points="20 6 9 17 4 12"/>
</svg>
</span>
</div>
<div class="rt-card">
<span class="rt-badge rt-badge--completed">Completed</span>
<h2 class="rt-title">Research &amp; Discovery</h2>
<p class="rt-desc">Conducted comprehensive market analysis, user interviews, and competitive audits to outline core requirements.</p>
<time class="rt-date" datetime="2026-01">Jan 2026</time>
</div>
</article>

<!-- Phase 2 — Completed -->
<article class="rt-item rt-item--completed" role="listitem">
<div class="rt-marker">
<span class="rt-dot" aria-label="Completed Milestone">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
<polyline points="20 6 9 17 4 12"/>
</svg>
</span>
</div>
<div class="rt-card">
<span class="rt-badge rt-badge--completed">Completed</span>
<h2 class="rt-title">Design System</h2>
<p class="rt-desc">Designed design tokens, built component library, and defined interaction guidelines for consistent experiences.</p>
<time class="rt-date" datetime="2026-03">Mar 2026</time>
</div>
</article>

<!-- Phase 3 — In Progress (Active) -->
<article class="rt-item rt-item--active" role="listitem">
<div class="rt-marker">
<span class="rt-dot rt-dot--pulse" aria-label="Current Milestone (In Progress)">
<span class="rt-dot-inner" aria-hidden="true"></span>
</span>
</div>
<div class="rt-card">
<span class="rt-badge rt-badge--active">In Progress</span>
<h2 class="rt-title">Core Development</h2>
<p class="rt-desc">Coding core APIs, state management pipelines, backend integrations, and responsive components.</p>
<time class="rt-date" datetime="2026-06">Jun 2026</time>
</div>
</article>

<!-- Phase 4 — Upcoming -->
<article class="rt-item rt-item--upcoming" role="listitem">
<div class="rt-marker">
<span class="rt-dot" aria-label="Upcoming Milestone"></span>
</div>
<div class="rt-card">
<span class="rt-badge rt-badge--upcoming">Upcoming</span>
<h2 class="rt-title">Beta Launch</h2>
<p class="rt-desc">Release closed beta testing to early adopters for feedback collection and load stability tuning.</p>
<time class="rt-date" datetime="2026-09">Sep 2026</time>
</div>
</article>

<!-- Phase 5 — Upcoming -->
<article class="rt-item rt-item--upcoming" role="listitem">
<div class="rt-marker">
<span class="rt-dot" aria-label="Upcoming Milestone"></span>
</div>
<div class="rt-card">
<span class="rt-badge rt-badge--upcoming">Upcoming</span>
<h2 class="rt-title">Public Launch</h2>
<p class="rt-desc">Production deployment, global scale-up, user onboarding tutorial modules, and marketing push.</p>
<time class="rt-date" datetime="2026-12">Dec 2026</time>
</div>
</article>

</div>
</section>
</main>

</body>
</html>
Loading
Loading