BlockDex

Components

Registries

Free blocks

Method

BlockDex

Components

Registries

Free blocks

Method

Open API

BlockDex

Components

Registries

Free blocks

Method

Open API

Components/openstatus/status-feed

Status Feed

openstatus/status-feed
FreeBlock

Unified feed component combining status reports and maintenance events

Install it

npx shadcn@latest add https://openstatus.dev/r/status-feed.json

Source

src/components/blocks/status-feed.tsxopenstatus.dev/r/status-feed.json · first 6 KB
1"use client";
2import { StatusBlankEvents } from "@/components/blocks/status-blank";
3import {
4 StatusEvent,
5 StatusEventAffected,
6 StatusEventAffectedBadge,
7 StatusEventAside,
8 StatusEventContent,
9 StatusEventDate,
10 StatusEventGroup,
11 StatusEventTimelineMaintenance,
12 StatusEventTimelineReport,
13 StatusEventTitle,
14} from "@/components/blocks/status-events";
15import { useStatusBlocksLabels } from "@/components/blocks/status-i18n";
16import type {
17 StatusReport,
18 Maintenance,
19} from "@/components/blocks/status.types";
20import { useMemo } from "react";
21
22type UnifiedEvent = {
23 id: number;
24 title: string;
25 startDate: Date;
26} & (
27 | { type: "report"; data: StatusReport }
28 | { type: "maintenance"; data: Maintenance }
29);
30
31/**
32 * isStatusReport - Type guard for discriminating status reports
33 *
34 * Type guard function that narrows a UnifiedEvent to a status report event.
35 * Used internally by StatusFeed to distinguish between reports and maintenance.
36 *
37 * @param event - The unified event to check
38 * @returns True if the event is a status report
39 *
40 * @example
41 * ```tsx
42 * if (isStatusReport(event)) {
43 * // TypeScript knows event.data is StatusReport
44 * console.log(event.data.updates);
45 * }
46 * ```
47 */
48function isStatusReport(
49 event: UnifiedEvent,
50): event is UnifiedEvent & { type: "report"; data: StatusReport } {
51 return event.type === "report";
52}
53
54/**
55 * isMaintenance - Type guard for discriminating maintenance events
56 *
57 * Type guard function that narrows a UnifiedEvent to a maintenance event.
58 * Used internally by StatusFeed to distinguish between reports and maintenance.
59 *
60 * @param event - The unified event to check
61 * @returns True if the event is a maintenance
62 *
63 * @example
64 * ```tsx
65 * if (isMaintenance(event)) {
66 * // TypeScript knows event.data is Maintenance
67 * console.log(event.data.from, event.data.to);
68 * }
69 * ```
70 */
71function isMaintenance(
72 event: UnifiedEvent,
73): event is UnifiedEvent & { type: "maintenance"; data: Maintenance } {
74 return event.type === "maintenance";
75}
76
77/**
78 * StatusFeed - Unified feed of incident reports and maintenance events
79 *
80 * Displays a chronological feed combining both status reports (incidents) and
81 * scheduled maintenance, sorted by date from newest to oldest. The component
82 * intelligently merges the two event types and renders them using a discriminated
83 * union pattern for type safety.
84 *
85 * **Key Features**:
86 * - **Unified Timeline**: Combines reports and maintenance in chronological order
87// … truncated

What it pulls in

Other registry items

  • https://openstatus.dev/r/status-blank.json
  • https://openstatus.dev/r/status-events.json
  • https://openstatus.dev/r/status-types.json
  • https://openstatus.dev/r/status-i18n.json

Files it writes

  • src/components/blocks/status-feed.tsx

Facts

Registry
openstatus
Type
registry:block
Access
Free
Files written
1
Licence
AGPL-3.0
First indexed
2026-08-01
Last confirmed
yesterday

Go to the source

openstatus.dev openstatusHQ/openstatus on GitHub Raw registry item This item as JSON

More from openstatus

All 26 items
Same registry, same kind — the ones you would have found next
ComponentRegistryKindAccessInstallsCommand
Status Bannerstatus-banneropenstatusBlocksFreeno deps
Status Barstatus-baropenstatusBlocksFree1 dep
Status Blank Statesstatus-blankopenstatusBlocksFreeno deps
Status Calendarstatus-calendaropenstatusBlocksFree3 deps
Status Page Chromestatus-chromeopenstatusBlocksFreeno deps
Status Page (Complete)status-completeopenstatusBlocksFreeno deps
Status Componentstatus-componentopenstatusBlocksFree2 deps
Status Component Groupstatus-component-groupopenstatusBlocksFreeno deps
BlockDex

Built by

Kynth Studio

Index

Components
Registries
Method
Open API

Guides

shadcn component libraries
Best shadcn registries
Free shadcn blocks

Reference

Corpus counts
Crawl health
hello@kynth.studio
Privacy
Terms

BlockDex

BlockDex

Built by

Kynth Studio

Index

Components
Registries
Method
Open API

Guides

shadcn component libraries
Best shadcn registries
Free shadcn blocks

Reference

Corpus counts
Crawl health
hello@kynth.studio
Privacy
Terms

BlockDex

BlockDex

Built by

Kynth Studio

Index

Components
Registries
Method
Open API

Guides

shadcn component libraries
Best shadcn registries
Free shadcn blocks

Reference

Corpus counts
Crawl health
hello@kynth.studio
Privacy
Terms

BlockDex