# StatusPage

> The public status page - an overall banner, each service with a daily history bar and uptime, active and past incidents with their updates, and scheduled maintenance. No admin controls and no sign-in.

Source: https://docs.nasaqui.com/components/status-page

## Install

```bash
npx shadcn@latest add https://docs.nasaqui.com/r/status-page.json
```

What a customer sees when they check whether you are up. A banner shows the worst thing happening (operational, degraded, partial or major outage, or maintenance in progress); below it are active incidents, every service with a daily history bar and its uptime, scheduled maintenance and past incidents. Give it `services`, `incidents` and `maintenance` from your own data. It draws no logo: pass yours as `logo`. Place it in your own layout; it sets its own max width.

## When to use

- A public status site, on its own domain.
- A status section inside a help centre.

## When not to use

- The admin view with edit controls: use `UptimeMonitors`.
- Choosing what appears here: use `StatusPageManager`.

## Import

```tsx
import { StatusPage } from "@fadymondy/nasaq/web";
// inside this monorepo: "@nasaq/web"
```

## Quick start

```tsx
import { StatusPage, type StatusPageService } from "@fadymondy/nasaq/web";

declare const services: StatusPageService[];

export const Status = () => <StatusPage title="Acme status" services={services} updatedAt={Date.now()} />;
```

## Anatomy

```
StatusPage                   data-slot="status-page"
├─ header                    optional logo, title (h1)
├─ banner                    role="status", overall state
├─ active incidents          IncidentList
├─ services                  name, description, status Badge, UptimeBar, uptime Badge
├─ maintenance               Timeline of upcoming windows
├─ past incidents            IncidentList
└─ footer                    your `footer`, attribution
```

## API

**StatusPage**: every `div` prop except `children` and `title`, plus:

| Prop | Type | Default | Description |
| --- | --- | --- | --- |
| `title` | `ReactNode` | required | Product or company name. |
| `logo` | `ReactNode` | | Your own mark. Nothing is drawn if left out. |
| `services` | `readonly StatusPageService[]` | required | `{ id, name, description?, status, days?, uptime? }`. `days` is the daily result, oldest first (usually 90). |
| `incidents` | `readonly Incident[]` | `[]` | Open ones show first, resolved ones under Past incidents. |
| `maintenance` | `readonly StatusPageMaintenance[]` | `[]` | `{ id, title, startsAt, endsAt, description? }`. A window that is running turns the banner to maintenance. |
| `updatedAt` | `Date \| number \| string` | | Shown in the banner. |
| `footer` | `ReactNode` | | For example a subscribe link. |
| `labels` | `Partial<StatusPageLabels>` | | Override any string. |

## Examples

**With a logo and a link**

```tsx
import { StatusPage } from "@fadymondy/nasaq/web";

export const Branded = () => (
  <StatusPage
    title="Acme status"
    logo={<img src="/acme.svg" alt="" className="size-8" />}
    services={[{ id: "web", name: "Website", status: "up" }]}
    footer={<a href="/subscribe">Subscribe to updates</a>}
  />
);
```

## Accessibility

- One `h1` and `h2` per section. The banner is `role="status"`. Every state is text as well as colour.
- Each history bar has a text alternative and each segment a title.
- Contrast of the banner text is the normal foreground colour: only the icon is tinted.

## RTL & i18n

- English and Arabic strings follow the Nasaq locale. The history bar runs right to left; percentages and dates keep Latin digits inside their own isolate.

## Styling & tokens

- Built on `Badge`, `Timeline`, `UptimeBar` and `--nq-*` tokens. Target `[data-slot="status-page"]`.

## Do / Don't

- Do put incidents above the services while they are open.
- Do give honest dates: use the real start and resolve times.
- Don't show internal names of servers: name services the way customers know them.
- Don't leave the page without `updatedAt`: people want to know it is fresh.

## Related

- [`uptime-monitors`](https://docs.nasaqui.com/components/uptime-monitors)
- [`status-page-manager`](https://docs.nasaqui.com/components/status-page-manager)
- [`timeline`](https://docs.nasaqui.com/components/timeline)

## Lab

https://docs.nasaqui.com/?path=/docs/components-monitoring-status-page--docs

## Code

### React

```tsx
import { StatusPage, type StatusPageService } from "@fadymondy/nasaq/web";

declare const services: StatusPageService[];

export const Status = () => <StatusPage title="Acme status" services={services} updatedAt={Date.now()} />;
```

### shadcn

```tsx
import { StatusPage, type StatusPageService } from "@/components/ui/status-page";

declare const services: StatusPageService[];

export const Status = () => <StatusPage title="Acme status" services={services} updatedAt={Date.now()} />;
```

### Vue

```vue
<script setup lang="ts">
import { NqStatusPage, type CheckResult, type Incident, type StatusPageMaintenance, type StatusPageService } from "@fadymondy/nasaq/vue";

const day = 86_400_000;
const history = (bad: Record<number, CheckResult> = {}): CheckResult[] => Array.from({ length: 90 }, (_, i) => bad[i] ?? "up");

const services: StatusPageService[] = [
  { id: "web", name: "Website", description: "Storefront and checkout", status: "up", days: history({ 40: "degraded" }), uptime: 99.98 },
  { id: "api", name: "API", status: "degraded", days: history({ 70: "down", 71: "degraded", 89: "degraded" }), uptime: 99.41 },
  { id: "mail", name: "Email delivery", status: "up", days: history(), uptime: 100 },
];
const incidents: Incident[] = [
  {
    id: "i1",
    title: "Elevated API latency",
    status: "monitoring",
    impact: "minor",
    startedAt: Date.now() - 2 * 3_600_000,
    services: ["API"],
    updates: [{ at: Date.now() - 3_600_000, status: "monitoring", body: "A fix is out and we are watching the numbers." }],
  },
  { id: "i2", title: "Checkout errors", status: "resolved", impact: "major", startedAt: Date.now() - 20 * day, resolvedAt: Date.now() - 20 * day + 42 * 60_000 },
];
const maintenance: StatusPageMaintenance[] = [{ id: "m1", title: "Database upgrade", description: "Read-only for about ten minutes.", startsAt: Date.now() + 3 * day, endsAt: Date.now() + 3 * day + 3_600_000 }];
</script>

<template>
  <NqStatusPage title="Acme status" :services="services" :incidents="incidents" :maintenance="maintenance" :updated-at="Date.now()">
    <template #footer><a href="#subscribe" class="underline">Subscribe to updates</a></template>
  </NqStatusPage>
</template>
```

### Blade

```blade
@php
    $days = fn (array $bad = []) => collect(range(0, 89))->map(fn ($i) => $bad[$i] ?? 'up')->all();
    $services = [
        ['id' => 'web', 'name' => 'Website', 'description' => 'Storefront and checkout', 'status' => 'up', 'days' => $days([40 => 'degraded']), 'uptime' => 99.98],
        ['id' => 'api', 'name' => 'API', 'status' => 'degraded', 'days' => $days([70 => 'down', 71 => 'degraded', 89 => 'degraded']), 'uptime' => 99.41],
        ['id' => 'mail', 'name' => 'Email delivery', 'status' => 'up', 'days' => $days(), 'uptime' => 100],
    ];
    $incidents = [
        ['id' => 'i1', 'title' => 'Elevated API latency', 'status' => 'monitoring', 'impact' => 'minor', 'startedAt' => '2026-09-29T07:00:00Z', 'services' => ['API'],
            'updates' => [['at' => '2026-09-29T08:00:00Z', 'status' => 'monitoring', 'body' => 'A fix is out and we are watching the numbers.']]],
        ['id' => 'i2', 'title' => 'Checkout errors', 'status' => 'resolved', 'impact' => 'major', 'startedAt' => '2026-09-09T09:00:00Z', 'resolvedAt' => '2026-09-09T09:42:00Z'],
    ];
    $maintenance = [['id' => 'm1', 'title' => 'Database upgrade', 'description' => 'Read-only for about ten minutes.', 'startsAt' => '2026-10-02T09:00:00Z', 'endsAt' => '2026-10-02T10:00:00Z']];
@endphp
<x-nq::status-page title="Acme status" :services="$services" :incidents="$incidents" :maintenance="$maintenance" updated-at="2026-09-29T08:59:00Z">
    <x-slot:footer><a href="#subscribe" class="underline">Subscribe to updates</a></x-slot:footer>
</x-nq::status-page>
```

### HTML + Alpine

```html
<div data-slot="status-page" data-overall="degraded" class="mx-auto grid w-full max-w-3xl gap-8 px-4 py-8 sm:py-12">
    <header class="flex items-center gap-3">
                <h1 class="text-h1 text-foreground" dir="auto">Acme status</h1>
    </header>
    <div role="status" class="flex items-center gap-3 rounded-card border p-4 border-nq-warning/30 bg-nq-warning/10 [&amp;_svg]:text-nq-warning">
        <svg aria-hidden="true" class="size-6 shrink-0" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  <circle cx="12" cy="12" r="10"/>
  <line x1="12" x2="12" y1="8" y2="12"/>
  <line x1="12" x2="12.01" y1="16" y2="16"/>
</svg>        <div class="grid min-w-0 gap-0.5">
            <p class="text-h4 text-foreground">Degraded performance</p>
                            <p class="text-body-sm text-muted-foreground">Updated <time data-slot="date-time" datetime="2026-09-29T08:59:00+00:00" dir="auto"  title="Sep 29, 2026"     class="tabular-nums [unicode-bidi:isolate]">1 minute ago</time>
</p>
                    </div>
    </div>
            <section aria-labelledby="sp-active" class="grid gap-3">
            <h2 id="sp-active" class="text-h3 text-foreground">Active incidents</h2>
            <ul data-slot="incident-list" class="grid gap-3">
                                <li data-slot="incident" data-status="monitoring" class="grid gap-2 rounded-control border border-border bg-card p-3">
                <div class="flex flex-wrap items-center gap-2">
                    <h4 class="min-w-0 flex-1 text-label text-foreground" dir="auto">Elevated API latency</h4>
                    <span data-slot="badge"     class="inline-flex h-5 shrink-0 items-center gap-1 whitespace-nowrap rounded-[4px] border px-1.5 text-caption font-medium [&_svg]:size-3 border-nq-warning/40 bg-nq-warning-soft text-nq-warning-text">Minor</span>
                    <span data-slot="badge"     class="inline-flex h-5 shrink-0 items-center gap-1 whitespace-nowrap rounded-[4px] border px-1.5 text-caption font-medium [&_svg]:size-3 border-nq-warning/40 bg-nq-warning-soft text-nq-warning-text">Monitoring</span>
                </div>
                <p class="flex flex-wrap items-center gap-x-3 gap-y-1 text-body-sm text-muted-foreground">
                    <span>Started <time data-slot="date-time" datetime="2026-09-29T07:00:00+00:00" dir="auto"  title="Sep 29, 2026"     class="tabular-nums [unicode-bidi:isolate]">2 hours ago</time>
</span>
                                                                <span dir="auto">API</span>
                                    </p>
                                    <ol data-slot="timeline" aria-label="Updates" class="m-0 flex list-none flex-col p-0 mt-1"><li data-slot="timeline-item" class="group/timeline grid grid-cols-[2rem_1fr] gap-x-3">
    <div class="flex flex-col items-center">
        <span data-slot="timeline-marker" class="flex size-8 shrink-0 items-center justify-center">
                            <span aria-hidden="true" class="size-2.5 rounded-full border-2 border-nq-line bg-background"></span>
                    </span>
        <span aria-hidden="true" data-slot="timeline-rail" class="my-1 w-px flex-1 bg-border group-last/timeline:hidden"></span>
    </div>
    <div data-slot="timeline-content" class="flex min-w-0 flex-col gap-1 pb-6 pt-1 group-last/timeline:pb-0">
        <div class="flex items-baseline justify-between gap-3">
            <p class="min-w-0 text-body-sm font-medium text-foreground">Monitoring</p>
                            <time data-slot="date-time" datetime="2026-09-29T08:00:00+00:00" dir="auto"  title="Sep 29, 2026"     class="tabular-nums [unicode-bidi:isolate] shrink-0 text-caption text-muted-foreground">1 hour ago</time>
                    </div>
                    <p class="text-body-sm text-muted-foreground">A fix is out and we are watching the numbers.</p>
                    </div>
</li></ol>
                            </li>
            </ul>
        </section>
    <section aria-labelledby="sp-services" class="grid gap-3">
        <h2 id="sp-services" class="text-h3 text-foreground">Services</h2>
        <ul class="divide-y divide-border rounded-card border border-border bg-card">
                                            <li data-slot="status-page-service" class="grid gap-2 p-4">
                    <div class="flex flex-wrap items-center justify-between gap-2">
                        <div class="grid min-w-0">
                            <span class="text-label text-foreground" dir="auto">Website</span>
                                                            <span class="text-body-sm text-muted-foreground" dir="auto">Storefront and checkout</span>
                                                    </div>
                        <span data-slot="badge"     class="inline-flex h-5 shrink-0 items-center gap-1 whitespace-nowrap rounded-[4px] border px-1.5 text-caption font-medium [&_svg]:size-3 border-nq-success/40 bg-nq-success-soft text-nq-success-text">Operational</span>
                    </div>
                                            <div data-slot="uptime-bar" role="img" aria-label="Website, daily status"
    class="flex min-w-24 items-stretch gap-px h-8">
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Slow" class="min-w-px flex-1 rounded-[1px] bg-nq-warning"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
    </div>
                        <div class="flex items-center justify-between text-caption text-muted-foreground">
                            <span>90 days ago</span>
                                                            <x-nq::uptime-monitors.uptime-badge :percent="$s['uptime']" :period="$t::t("{$n}-day uptime", "وقت التشغيل خلال {$n} يومًا")" />
                                                        <span>Today</span>
                        </div>
                                    </li>
                                            <li data-slot="status-page-service" class="grid gap-2 p-4">
                    <div class="flex flex-wrap items-center justify-between gap-2">
                        <div class="grid min-w-0">
                            <span class="text-label text-foreground" dir="auto">API</span>
                                                    </div>
                        <span data-slot="badge"     class="inline-flex h-5 shrink-0 items-center gap-1 whitespace-nowrap rounded-[4px] border px-1.5 text-caption font-medium [&_svg]:size-3 border-nq-warning/40 bg-nq-warning-soft text-nq-warning-text">Degraded</span>
                    </div>
                                            <div data-slot="uptime-bar" role="img" aria-label="API, daily status"
    class="flex min-w-24 items-stretch gap-px h-8">
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Down" class="min-w-px flex-1 rounded-[1px] bg-nq-danger"></span>
            <span title="Slow" class="min-w-px flex-1 rounded-[1px] bg-nq-warning"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Slow" class="min-w-px flex-1 rounded-[1px] bg-nq-warning"></span>
    </div>
                        <div class="flex items-center justify-between text-caption text-muted-foreground">
                            <span>90 days ago</span>
                                                            <x-nq::uptime-monitors.uptime-badge :percent="$s['uptime']" :period="$t::t("{$n}-day uptime", "وقت التشغيل خلال {$n} يومًا")" />
                                                        <span>Today</span>
                        </div>
                                    </li>
                                            <li data-slot="status-page-service" class="grid gap-2 p-4">
                    <div class="flex flex-wrap items-center justify-between gap-2">
                        <div class="grid min-w-0">
                            <span class="text-label text-foreground" dir="auto">Email delivery</span>
                                                    </div>
                        <span data-slot="badge"     class="inline-flex h-5 shrink-0 items-center gap-1 whitespace-nowrap rounded-[4px] border px-1.5 text-caption font-medium [&_svg]:size-3 border-nq-success/40 bg-nq-success-soft text-nq-success-text">Operational</span>
                    </div>
                                            <div data-slot="uptime-bar" role="img" aria-label="Email delivery, daily status"
    class="flex min-w-24 items-stretch gap-px h-8">
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
            <span title="Up" class="min-w-px flex-1 rounded-[1px] bg-nq-success"></span>
    </div>
                        <div class="flex items-center justify-between text-caption text-muted-foreground">
                            <span>90 days ago</span>
                                                            <x-nq::uptime-monitors.uptime-badge :percent="$s['uptime']" :period="$t::t("{$n}-day uptime", "وقت التشغيل خلال {$n} يومًا")" />
                                                        <span>Today</span>
                        </div>
                                    </li>
                    </ul>
    </section>
    <section aria-labelledby="sp-maint" class="grid gap-3">
        <h2 id="sp-maint" class="text-h3 text-foreground">Scheduled maintenance</h2>
                    <ol data-slot="timeline" class="m-0 flex list-none flex-col p-0"><li data-slot="timeline-item" class="group/timeline grid grid-cols-[2rem_1fr] gap-x-3">
    <div class="flex flex-col items-center">
        <span data-slot="timeline-marker" class="flex size-8 shrink-0 items-center justify-center">
                            <span class="flex size-8 items-center justify-center rounded-full border border-border bg-secondary text-muted-foreground [&_svg]:size-4"><svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  <path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z"/>
</svg></span>
                    </span>
        <span aria-hidden="true" data-slot="timeline-rail" class="my-1 w-px flex-1 bg-border group-last/timeline:hidden"></span>
    </div>
    <div data-slot="timeline-content" class="flex min-w-0 flex-col gap-1 pb-6 pt-1 group-last/timeline:pb-0">
        <div class="flex items-baseline justify-between gap-3">
            <p class="min-w-0 text-body-sm font-medium text-foreground">Database upgrade</p>
                            <time data-slot="date-time" datetime="2026-10-02T09:00:00+00:00" dir="auto"  title="Oct 2, 2026"     class="tabular-nums [unicode-bidi:isolate] shrink-0 text-caption text-muted-foreground">3 days from now</time>
                    </div>
                    <p class="text-body-sm text-muted-foreground">Read-only for about ten minutes.</p>
                            <div class="flex flex-wrap items-center gap-2"><p class="text-caption text-muted-foreground">From <time data-slot="date-time" datetime="2026-10-02T09:00:00+00:00" dir="auto"     class="tabular-nums [unicode-bidi:isolate]">Oct 2, 2026, 9:00 AM</time>
 Until <time data-slot="date-time" datetime="2026-10-02T10:00:00+00:00" dir="auto"     class="tabular-nums [unicode-bidi:isolate]">Oct 2, 2026, 10:00 AM</time>
</p></div>
            </div>
</li></ol>
            </section>
    <section aria-labelledby="sp-past" class="grid gap-3">
        <h2 id="sp-past" class="text-h3 text-foreground">Past incidents</h2>
                    <ul data-slot="incident-list" class="grid gap-3">
                                <li data-slot="incident" data-status="resolved" class="grid gap-2 rounded-control border border-border bg-card p-3">
                <div class="flex flex-wrap items-center gap-2">
                    <h4 class="min-w-0 flex-1 text-label text-foreground" dir="auto">Checkout errors</h4>
                    <span data-slot="badge"     class="inline-flex h-5 shrink-0 items-center gap-1 whitespace-nowrap rounded-[4px] border px-1.5 text-caption font-medium [&_svg]:size-3 border-nq-danger/40 bg-nq-danger-soft text-nq-danger-text">Major</span>
                    <span data-slot="badge"     class="inline-flex h-5 shrink-0 items-center gap-1 whitespace-nowrap rounded-[4px] border px-1.5 text-caption font-medium [&_svg]:size-3 border-nq-success/40 bg-nq-success-soft text-nq-success-text">Resolved</span>
                </div>
                <p class="flex flex-wrap items-center gap-x-3 gap-y-1 text-body-sm text-muted-foreground">
                    <span>Started <time data-slot="date-time" datetime="2026-09-09T09:00:00+00:00" dir="auto"  title="Sep 9, 2026"     class="tabular-nums [unicode-bidi:isolate]">2 weeks ago</time>
</span>
                                            <span>Lasted 42 min</span>
                                                        </p>
                            </li>
            </ul>
            </section>
    <footer class="flex flex-wrap items-center justify-between gap-2 border-t border-border pt-4 text-caption text-muted-foreground">
        <a href="#subscribe" class="underline">Subscribe to updates</a>        <span>Powered by Nasaq</span>
    </footer>
</div>
```
