{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "status-types",
  "title": "Status Types",
  "description": "TypeScript type definitions for status components",
  "files": [
    {
      "path": "src/components/blocks/status.types.ts",
      "content": "export type StatusType = \"success\" | \"degraded\" | \"error\" | \"info\" | \"empty\";\nexport type StatusEventType = \"incident\" | \"report\" | \"maintenance\";\nexport type StatusReportUpdateType =\n  | \"investigating\"\n  | \"identified\"\n  | \"monitoring\"\n  | \"resolved\";\n\n// mirrors openstatus's `pageComponentImpact` taxonomy (this package doesn't depend on the db)\nexport type StatusReportImpact =\n  | \"operational\"\n  | \"degraded_performance\"\n  | \"partial_outage\"\n  | \"major_outage\";\n\nexport const THEME_VALUES = [\"light\", \"dark\", \"system\"] as const;\nexport type ThemeValue = (typeof THEME_VALUES)[number];\n\nexport interface StatusReportUpdate {\n  date: Date;\n  message: string;\n  status: StatusReportUpdateType;\n  /** Per-component impact changes this update set. */\n  impactChanges?: { name: string; impact: StatusReportImpact }[];\n}\n\nexport interface StatusReport {\n  id: number;\n  title: string;\n  affected: string[];\n  updates: StatusReportUpdate[];\n}\n\nexport interface Maintenance {\n  id: number;\n  title: string;\n  affected: string[];\n  message: string;\n  from: Date;\n  to: Date;\n}\n\n// Discriminated union for status events\nexport type StatusEventData =\n  | { type: \"report\"; data: StatusReport }\n  | { type: \"maintenance\"; data: Maintenance };\n\nexport type StatusBarData = {\n  day: string;\n  bar: {\n    status: StatusType;\n    // NOTE: is in percentage! should sum up to 100%\n    height: number;\n  }[];\n  card: {\n    status: StatusType;\n    value: string;\n    /** Worst report impact of the day — refines the generic status label. */\n    impact?: StatusReportImpact;\n  }[];\n  events: {\n    id: number | string;\n    name: string;\n    type: StatusEventType;\n    from: Date | null;\n    to: Date | null;\n    isAggregated?: boolean;\n    /** Overrides the type-derived dot color (e.g. the day's worst report impact). */\n    status?: Exclude<StatusType, \"empty\">;\n    /** External link for the event (e.g. an upstream incident page). */\n    shortlink?: string;\n  }[];\n};\n",
      "type": "registry:lib",
      "target": "components/blocks/status.types.ts"
    }
  ],
  "type": "registry:lib"
}