Study Streak Tracker
Gamified progress card showing a learner's current and longest study streaks as large stat numbers, plus a 7-cell Mon-Sun weekly activity calendar with filled cells for completed days.
Docs
Installation
A real shadcn registry command, not a copy-paste stand-in: it fetches this block plus its badge dependencies and any missing npm packages, and installs them straight into your project.
npx shadcn add https://staaarter.com/r/study-streak-tracker.jsonPrefer not to use the CLI? Copy the source from the Code toggle above into src/components/blocks/education/education10.tsx instead.
Usage
The file also exports education10Demo, the exact props behind the preview above. Spread it to get a working section in one line, then replace it with your own data.
import { Education10, education10Demo } from "@/components/blocks/education/education10"; export default function Page() { return <Education10 {...education10Demo} />; }
Props
| Prop | Type | Default | Description |
|---|---|---|---|
| badge | { label: string; variant?: BadgeVariant } | none | Pill above the heading; only rendered when badge is truthy. |
| heading | ReactNode | none | Section heading. |
| description | string | undefined | Supporting copy under the heading. |
| currentStreak | number | none | Current streak length, rendered as a large stat number. |
| longestStreak | number | none | Longest streak ever reached, rendered as a large stat number. |
| streakLabel | string | "day streak" | Unit label under both streak numbers. |
| week | WeekDayActivity[] | none | Exactly 7 entries (Mon-Sun) driving the weekly activity calendar cells. |
| className | string | none | Extra classes for the outer section element. |
Types
type WeekDayActivity = { day: string; completed: boolean; };
Behavior notes
- Purely illustrative: the weekly calendar is 7 fixed cells rendered from the `week` array's `completed` booleans, there is no real date logic, no `new Date()`, and no client state.
- A completed cell fills solid with a flame icon; an incomplete cell renders as an empty dashed outline.
- The current and longest streak numbers are static props, not computed from `week`; a real integration would need to keep both in sync itself.
- The component expects `week` to have 7 entries (Mon-Sun) to fill the grid evenly, but doesn't enforce that length at runtime.
More Education Blocks
View all →academy-course-cards
Academy Course Cards
Academy section with an eyebrow, a two-column heading, and three course cards that float a lesson checklist above a category label, title, and lesson count.
institutional-quick-facts
Institutional Quick Facts
Quick facts grid displaying key institutional statistics with a large value, label, and short description per tile.
global-partnerships-grid
Global Partnerships Grid
Global partnerships section showcasing partner institutions with location details and yearly exchange statistics.
mission-and-vision-statement
Mission and Vision Statement
Side-by-side mission and vision text blocks with an inspirational leadership quote below.
social-media-links-grid
Social Media Links Grid
Social media connection section with platform cards showing handle and follower count.
education-social-proof
Education Social Proof
Social proof section pairing key stats (rating, enrollment, completion rate) with a featured student testimonial.