# BacklinkMonitor

> Backlink monitoring: new, lost and toxic links, a gained and lost chart, referring domains, and disavow or mark-safe actions.

Source: https://docs.nasaqui.com/components/backlink-monitor

## Install

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

BacklinkMonitor shows who links to you and how that changes. Summary tiles count links, referring domains, new this week, lost and toxic. A chart plots links gained and lost per day. The table can be filtered by status (new, active, lost, toxic), and toxic links can be disavowed in bulk or marked safe one by one.

## When to use

- The link profile part of an SEO dashboard.
- Alerting a team that a valuable link was lost or a spammy one appeared.

## When not to use

- Ranking positions: use [`KeywordTracker`](https://docs.nasaqui.com/components/keyword-tracker).

## Import

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

## Quick start

```tsx
import { type Backlink, BacklinkMonitor } from "@fadymondy/nasaq/web";

export function Links({ links }: { links: Backlink[] }) {
  return <BacklinkMonitor links={links} onDisavow={async (ids) => { await api.disavow(ids); }} onMarkSafe={async (id) => { await api.safe(id); }} />;
}
```

## Anatomy

```
BacklinkMonitor        data-slot="backlink-monitor"
  MetricTiles          links, domains, new, lost, toxic
  TimeSeriesPanel      gained and lost per day
  DataTable            source, anchor, target, DR, spam score, first seen, status
                       status facet, bulk Disavow
```

## API

### BacklinkMonitor

| Prop | Type | Default | Description |
| --- | --- | --- | --- |
| `links` | `Backlink[]` | required | All links, including lost ones. |
| `onDisavow` | `(ids: string[]) => Promise<void \| { error?: string }>` | none | Shows the Disavow action. |
| `onMarkSafe` | `(id: string) => Promise<...>` | none | Shows Mark safe on flagged links. |
| `now` | `number` | `Date.now()` | Reference time. Pass a fixed value in demos and tests. |
| `days` | `number` | `30` | Days on the chart. |
| `title / description` | `ReactNode` | built-in | Header. |
| `pageSize` | `number` | `8` | Rows per page. |
| `loading / error / onRetry` | | none | States. |
| `className / labels` | | none | Classes; `Partial<BacklinkMonitorLabels>` strings. |

### Backlink

`{ id, sourceUrl, targetUrl, anchor, domainRating, spamScore, firstSeen, lostAt?, followed?, disavowed? }`. Dates are ISO strings.

### Helpers

- `backlinkStatus(link, now)` gives `lost`, `new` (first seen within `NEW_LINK_DAYS`, 7) or `active`; lost wins over new.
- `isToxic(link)` is true from `TOXIC_SPAM_SCORE` (60) upward, unless disavowed.
- `summarizeBacklinks(links, now)`, `referringDomains(links)` (live domains counted once, `www.` ignored), `domainOf(url)`, `dailyLinkSeries(links, days, now)` and `diffBacklinks(before, after)`.

## Examples

Only the counts:

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

const { total, toxic, lost } = summarizeBacklinks(links, Date.now());
```

Read only:

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

<BacklinkMonitor links={links} days={14} />;
```

## Accessibility

| Key | Action |
| --- | --- |
| Tab | Move through the filters, table and actions. |
| Space | Select a row for the bulk action. |
| Enter | Run the focused action. |

Status is a word, not only a colour. The chart has a visually hidden data table through TimeSeriesPanel.

## RTL & i18n

URLs and anchors that are Latin stay left-to-right; Arabic anchors use `dir="auto"`. Dates go through `DateTime`. Built-in English and Arabic strings.

## Styling & tokens

New, lost and toxic use the info, warning and danger tokens. Chart series use `--nq-chart-*`.

## Do / Don't

- Do confirm in your own flow before disavowing: this screen has no undo.
- Do review toxic links before disavowing; a high spam score is a hint, not a verdict.
- Don't pass `Date.now()` inside a render loop for `now`; pass a stable value.

## Related

- [KeywordTracker](https://docs.nasaqui.com/components/keyword-tracker)
- [TimeSeriesPanel](https://docs.nasaqui.com/components/time-series-panel)

## Lab

https://docs.nasaqui.com/?path=/docs/components-seo-backlink-monitor--docs

## Code

### React

```tsx
import { type Backlink, BacklinkMonitor } from "@fadymondy/nasaq/web";

export function Links({ links }: { links: Backlink[] }) {
  return <BacklinkMonitor links={links} onDisavow={async (ids) => { await api.disavow(ids); }} onMarkSafe={async (id) => { await api.safe(id); }} />;
}
```

### shadcn

```tsx
import { type Backlink, BacklinkMonitor } from "@/components/ui/backlink-monitor";

export function Links({ links }: { links: Backlink[] }) {
  return <BacklinkMonitor links={links} onDisavow={async (ids) => { await api.disavow(ids); }} onMarkSafe={async (id) => { await api.safe(id); }} />;
}
```

### Vue

```vue
<script setup lang="ts">
import { NqBacklinkMonitor, type Backlink } from "@fadymondy/nasaq/vue";

const now = Date.parse("2026-09-29T09:00:00Z");
const links: Backlink[] = [
  { id: "l1", sourceUrl: "https://www.designweekly.com/news/rtl-systems", targetUrl: "/", anchor: "Nasaq design system", domainRating: 71, spamScore: 8, firstSeen: "2026-09-27" },
  { id: "l2", sourceUrl: "https://blog.arabicdev.net/tools", targetUrl: "/components", anchor: "RTL components", domainRating: 54, spamScore: 12, firstSeen: "2026-08-10" },
  { id: "l3", sourceUrl: "https://old-directory.org/listing/42", targetUrl: "/", anchor: "", domainRating: 33, spamScore: 21, firstSeen: "2026-07-01", lostAt: "2026-09-20" },
  { id: "l4", sourceUrl: "https://cheap-pills-casino.biz/links", targetUrl: "/", anchor: "buy now", domainRating: 4, spamScore: 82, firstSeen: "2026-08-01" },
  { id: "l5", sourceUrl: "https://spammy-seo.example/farm", targetUrl: "/pricing", anchor: "best seo", domainRating: 6, spamScore: 90, firstSeen: "2026-07-15", disavowed: true },
  { id: "l6", sourceUrl: "https://forum.webdesign.dev/t/259", targetUrl: "/docs", anchor: "docs", domainRating: 62, spamScore: 5, firstSeen: "2026-09-25", followed: false },
];
async function onDisavow() {}
async function onMarkSafe() {}
</script>

<template>
  <NqBacklinkMonitor :links="links" :now="now" :on-disavow="onDisavow" :on-mark-safe="onMarkSafe" />
</template>
```

### Blade

```blade
@php
    $links = [
        ['id' => 'l1', 'sourceUrl' => 'https://www.designweekly.com/news/rtl-systems', 'targetUrl' => '/', 'anchor' => 'Nasaq design system', 'domainRating' => 71, 'spamScore' => 8, 'firstSeen' => '2026-09-27'],
        ['id' => 'l2', 'sourceUrl' => 'https://blog.arabicdev.net/tools', 'targetUrl' => '/components', 'anchor' => 'RTL components', 'domainRating' => 54, 'spamScore' => 12, 'firstSeen' => '2026-08-10'],
        ['id' => 'l3', 'sourceUrl' => 'https://old-directory.org/listing/42', 'targetUrl' => '/', 'anchor' => '', 'domainRating' => 33, 'spamScore' => 21, 'firstSeen' => '2026-07-01', 'lostAt' => '2026-09-20'],
        ['id' => 'l4', 'sourceUrl' => 'https://cheap-pills-casino.biz/links', 'targetUrl' => '/', 'anchor' => 'buy now', 'domainRating' => 4, 'spamScore' => 82, 'firstSeen' => '2026-08-01'],
        ['id' => 'l5', 'sourceUrl' => 'https://spammy-seo.example/farm', 'targetUrl' => '/pricing', 'anchor' => 'best seo', 'domainRating' => 6, 'spamScore' => 90, 'firstSeen' => '2026-07-15', 'disavowed' => true],
        ['id' => 'l6', 'sourceUrl' => 'https://forum.webdesign.dev/t/259', 'targetUrl' => '/docs', 'anchor' => 'docs', 'domainRating' => 62, 'spamScore' => 5, 'firstSeen' => '2026-09-25', 'followed' => false],
    ];
@endphp
<x-nq::backlink-monitor :links="$links" :now="'2026-09-29T09:00:00Z'"
    x-on:disavow="$event.detail.wait(Promise.resolve())"
    x-on:mark-safe="$event.detail.wait(Promise.resolve())" />
```

### HTML + Alpine

```html
<div data-slot="backlink-monitor" x-data="nqBacklinkMonitor(JSON.parse('{\u0022links\u0022:[{\u0022id\u0022:\u0022l1\u0022,\u0022sourceUrl\u0022:\u0022https:\\\/\\\/www.designweekly.com\\\/news\\\/rtl-systems\u0022,\u0022targetUrl\u0022:\u0022\\\/\u0022,\u0022anchor\u0022:\u0022Nasaq design system\u0022,\u0022domainRating\u0022:71,\u0022spamScore\u0022:8,\u0022firstSeen\u0022:\u00222026-09-27\u0022},{\u0022id\u0022:\u0022l2\u0022,\u0022sourceUrl\u0022:\u0022https:\\\/\\\/blog.arabicdev.net\\\/tools\u0022,\u0022targetUrl\u0022:\u0022\\\/components\u0022,\u0022anchor\u0022:\u0022RTL components\u0022,\u0022domainRating\u0022:54,\u0022spamScore\u0022:12,\u0022firstSeen\u0022:\u00222026-08-10\u0022},{\u0022id\u0022:\u0022l3\u0022,\u0022sourceUrl\u0022:\u0022https:\\\/\\\/old-directory.org\\\/listing\\\/42\u0022,\u0022targetUrl\u0022:\u0022\\\/\u0022,\u0022anchor\u0022:\u0022\u0022,\u0022domainRating\u0022:33,\u0022spamScore\u0022:21,\u0022firstSeen\u0022:\u00222026-07-01\u0022,\u0022lostAt\u0022:\u00222026-09-20\u0022},{\u0022id\u0022:\u0022l4\u0022,\u0022sourceUrl\u0022:\u0022https:\\\/\\\/cheap-pills-casino.biz\\\/links\u0022,\u0022targetUrl\u0022:\u0022\\\/\u0022,\u0022anchor\u0022:\u0022buy now\u0022,\u0022domainRating\u0022:4,\u0022spamScore\u0022:82,\u0022firstSeen\u0022:\u00222026-08-01\u0022},{\u0022id\u0022:\u0022l5\u0022,\u0022sourceUrl\u0022:\u0022https:\\\/\\\/spammy-seo.example\\\/farm\u0022,\u0022targetUrl\u0022:\u0022\\\/pricing\u0022,\u0022anchor\u0022:\u0022best seo\u0022,\u0022domainRating\u0022:6,\u0022spamScore\u0022:90,\u0022firstSeen\u0022:\u00222026-07-15\u0022,\u0022disavowed\u0022:true},{\u0022id\u0022:\u0022l6\u0022,\u0022sourceUrl\u0022:\u0022https:\\\/\\\/forum.webdesign.dev\\\/t\\\/259\u0022,\u0022targetUrl\u0022:\u0022\\\/docs\u0022,\u0022anchor\u0022:\u0022docs\u0022,\u0022domainRating\u0022:62,\u0022spamScore\u0022:5,\u0022firstSeen\u0022:\u00222026-09-25\u0022,\u0022followed\u0022:false}],\u0022now\u0022:1790672400000,\u0022words\u0022:{\u0022locale\u0022:\u0022en\u0022,\u0022statusNew\u0022:\u0022New\u0022,\u0022statusLost\u0022:\u0022Lost\u0022,\u0022statusActive\u0022:\u0022Live\u0022,\u0022toxic\u0022:\u0022Toxic\u0022,\u0022disavowed\u0022:\u0022Disavowed\u0022,\u0022nofollow\u0022:\u0022Nofollow\u0022,\u0022failed\u0022:\u0022Could not save this. Try again.\u0022,\u0022noAnchor\u0022:\u0022(no anchor)\u0022}}'))" x-on:nq-data-table-action="onAction($event)"
    x-on:disavow="$event.detail.wait(Promise.resolve())" x-on:mark-safe="$event.detail.wait(Promise.resolve())" class="flex w-full flex-col gap-6">
    <div data-slot="metric-tiles" role="group" aria-label="Key metrics" class="grid grid-cols-[repeat(auto-fit,minmax(min(100%,14rem),1fr))] gap-3"><div data-slot="stat-card"   data-metric="domains" class="flex flex-col gap-3 rounded-card border border-border bg-card px-4 py-4 text-card-foreground">
            <div class="flex items-center gap-2">
                        <div data-slot="stat-card-label" class="min-w-0 truncate text-body-sm text-muted-foreground">Referring domains</div>
        </div>
        <div class="flex items-end justify-between gap-3">
            <div class="flex min-w-0 flex-col gap-1">
                <div data-slot="stat-card-value" class="text-h2 leading-tight text-foreground tabular-nums">
                                            <bdi data-slot="num" data-numeric class="tabular-nums" x-text="num(summary.domains)">5</bdi>
                                    </div>
                            </div>
                    </div>
    </div>
                    <div data-slot="stat-card"   data-metric="active" class="flex flex-col gap-3 rounded-card border border-border bg-card px-4 py-4 text-card-foreground">
            <div class="flex items-center gap-2">
                        <div data-slot="stat-card-label" class="min-w-0 truncate text-body-sm text-muted-foreground">Live links</div>
        </div>
        <div class="flex items-end justify-between gap-3">
            <div class="flex min-w-0 flex-col gap-1">
                <div data-slot="stat-card-value" class="text-h2 leading-tight text-foreground tabular-nums">
                                            <bdi data-slot="num" data-numeric class="tabular-nums" x-text="num(summary.active)">5</bdi>
                                    </div>
                            </div>
                    </div>
    </div>
                    <div data-slot="stat-card"   data-metric="new" class="flex flex-col gap-3 rounded-card border border-border bg-card px-4 py-4 text-card-foreground">
            <div class="flex items-center gap-2">
                        <div data-slot="stat-card-label" class="min-w-0 truncate text-body-sm text-muted-foreground">New this week</div>
        </div>
        <div class="flex items-end justify-between gap-3">
            <div class="flex min-w-0 flex-col gap-1">
                <div data-slot="stat-card-value" class="text-h2 leading-tight text-foreground tabular-nums">
                                            <bdi data-slot="num" data-numeric class="tabular-nums" x-text="num(summary.new)">2</bdi>
                                    </div>
                            </div>
                    </div>
    </div>
                    <div data-slot="stat-card"   data-metric="lost" class="flex flex-col gap-3 rounded-card border border-border bg-card px-4 py-4 text-card-foreground">
            <div class="flex items-center gap-2">
                        <div data-slot="stat-card-label" class="min-w-0 truncate text-body-sm text-muted-foreground">Lost links</div>
        </div>
        <div class="flex items-end justify-between gap-3">
            <div class="flex min-w-0 flex-col gap-1">
                <div data-slot="stat-card-value" class="text-h2 leading-tight text-foreground tabular-nums">
                                            <bdi data-slot="num" data-numeric class="tabular-nums" x-text="num(summary.lost)">1</bdi>
                                    </div>
                            </div>
                    </div>
    </div>
                    <div data-slot="stat-card"   data-metric="toxic" class="flex flex-col gap-3 rounded-card border border-border bg-card px-4 py-4 text-card-foreground">
            <div class="flex items-center gap-2">
                        <div data-slot="stat-card-label" class="min-w-0 truncate text-body-sm text-muted-foreground">Toxic links</div>
        </div>
        <div class="flex items-end justify-between gap-3">
            <div class="flex min-w-0 flex-col gap-1">
                <div data-slot="stat-card-value" class="text-h2 leading-tight text-foreground tabular-nums">
                                            <bdi data-slot="num" data-numeric class="tabular-nums" x-text="num(summary.toxic)">1</bdi>
                                    </div>
                            </div>
                    </div>
    </div></div>
    <div data-slot="time-series-panel"  x-data="nqTimeSeriesPanel('gained', false)"
    class="flex flex-col gap-4 rounded-card border border-border bg-card py-4 text-card-foreground">
    <div data-slot="card-header" class="grid auto-rows-min items-start gap-1 px-4 has-data-[slot=card-action]:grid-cols-[1fr_auto]"><h3 data-slot="card-title" class="text-label text-foreground">Links gained and lost</h3></div>
    <div data-slot="card-content" class="px-4 flex flex-col gap-4"><div class="flex flex-wrap items-center justify-between gap-3">
                            <div class="max-w-full overflow-x-auto">
                    <div role="group" data-slot="toggle-group" data-variant="segmented" data-orientation="horizontal"
    x-data="nqToggleGroup(JSON.parse('[\u0022gained\u0022]'), false)" x-modelable="value" x-bind="root"
            aria-label="Metric" x-model="pressed" class="flex w-fit max-w-full gap-0.5 rounded-control bg-secondary p-0.5">
    <button type="button" data-slot="toggle" aria-pressed="true"
     x-bind="toggle('gained')"      data-pressed         class="inline-flex h-7 shrink-0 items-center justify-center gap-1.5 whitespace-nowrap px-3 text-label text-muted-foreground outline-none transition-colors duration-150 ease-nq hover:text-foreground [&_svg]:size-4 [&_svg]:shrink-0 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-nq-focus data-disabled:pointer-events-none data-disabled:opacity-50 rounded-[calc(var(--radius-control)-2px)] data-pressed:bg-card data-pressed:text-foreground data-pressed:shadow-xs">Gained</button>
                                                    <button type="button" data-slot="toggle" aria-pressed="false"
     x-bind="toggle('lost')"             class="inline-flex h-7 shrink-0 items-center justify-center gap-1.5 whitespace-nowrap px-3 text-label text-muted-foreground outline-none transition-colors duration-150 ease-nq hover:text-foreground [&_svg]:size-4 [&_svg]:shrink-0 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-nq-focus data-disabled:pointer-events-none data-disabled:opacity-50 rounded-[calc(var(--radius-control)-2px)] data-pressed:bg-card data-pressed:text-foreground data-pressed:shadow-xs">Lost</button>
</div>
                </div>
                                </div>
                                                    <div class="contents" data-metric="gained" x-show="metric === 'gained'" >
                    <div data-slot="time-series-total" class="flex flex-wrap items-baseline gap-x-3 gap-y-1">
                        <span class="text-caption text-muted-foreground">Total</span>
                        <span class="text-h2 text-foreground tabular-nums">
                            <bdi data-slot="num" data-numeric="" class="tabular-nums">2</bdi>
                        </span>
                                            </div>
                    <div data-slot="chart"  role="img" aria-label="Gained, Aug 31 to Sep 29"   style="--color-current: var(--nq-success); --color-previous: var(--muted-foreground)"     class="flex w-full text-caption [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line]:stroke-border [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-dot]:stroke-card [&_.recharts-layer]:outline-hidden [&_.recharts-sector]:outline-hidden [&_.recharts-sector]:stroke-card [&_.recharts-surface]:outline-hidden aspect-auto flex-col justify-start gap-2 h-48">
    <div class="flex min-h-0 flex-1 gap-2">
                            <div aria-hidden="true" class="relative w-11 shrink-0 text-end text-muted-foreground">
                                                                    <span class="absolute inset-x-0 -translate-y-1/2 truncate" style="top: 100%">
                                                                                    <bdi data-slot="num" data-numeric="" class="tabular-nums">0</bdi>
                                                                            </span>
                                                                    <span class="absolute inset-x-0 -translate-y-1/2 truncate" style="top: 50%">
                                                                                    <bdi data-slot="num" data-numeric="" class="tabular-nums">0.5</bdi>
                                                                            </span>
                                                                    <span class="absolute inset-x-0 -translate-y-1/2 truncate" style="top: 0%">
                                                                                    <bdi data-slot="num" data-numeric="" class="tabular-nums">1</bdi>
                                                                            </span>
                                                            </div>
                            <div data-slot="time-series-plot" class="relative min-w-0 flex-1" x-data="nqTimeSeriesChart(JSON.parse('[{\u0022x\u0022:0,\u0022y\u0022:100,\u0022date\u0022:\u0022Aug 31\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Gained\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:3.45,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 1\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Gained\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:6.9,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 2\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Gained\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:10.34,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 3\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Gained\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:13.79,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 4\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Gained\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:17.24,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 5\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Gained\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:20.69,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 6\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Gained\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:24.14,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 7\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Gained\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:27.59,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 8\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Gained\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:31.03,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 9\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Gained\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:34.48,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 10\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Gained\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:37.93,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 11\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Gained\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:41.38,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 12\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Gained\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:44.83,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 13\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Gained\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:48.28,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 14\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Gained\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:51.72,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 15\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Gained\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:55.17,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 16\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Gained\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:58.62,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 17\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Gained\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:62.07,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 18\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Gained\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:65.52,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 19\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Gained\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:68.97,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 20\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Gained\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:72.41,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 21\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Gained\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:75.86,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 22\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Gained\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:79.31,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 23\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Gained\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:82.76,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 24\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Gained\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:86.21,\u0022y\u0022:0,\u0022date\u0022:\u0022Sep 25\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Gained\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00221\u0022}]},{\u0022x\u0022:89.66,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 26\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Gained\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:93.1,\u0022y\u0022:0,\u0022date\u0022:\u0022Sep 27\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Gained\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00221\u0022}]},{\u0022x\u0022:96.55,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 28\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Gained\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:100,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 29\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Gained\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]}]'))" x-on:pointermove="move($event)" x-on:pointerleave="leave()">
                                                                    <span aria-hidden="true" class="absolute inset-x-0 border-t border-border" style="top: 100%"></span>
                                                                    <span aria-hidden="true" class="absolute inset-x-0 border-t border-border" style="top: 50%"></span>
                                                                    <span aria-hidden="true" class="absolute inset-x-0 border-t border-border" style="top: 0%"></span>
                                                                <svg viewBox="0 0 100 100" preserveAspectRatio="none" aria-hidden="true" focusable="false" class="absolute inset-0 size-full overflow-visible rtl:-scale-x-100">
                                    <defs>
                                        <linearGradient id="nq-ts-42f45ec5" x1="0" y1="0" x2="0" y2="1">
                                            <stop offset="0%" style="stop-color: var(--color-current); stop-opacity: 0.28" />
                                            <stop offset="100%" style="stop-color: var(--color-current); stop-opacity: 0.02" />
                                        </linearGradient>
                                    </defs>
                                                                                                            <path d="M0,100C1.15,100,2.3,100,3.45,100C4.6,100,5.75,100,6.9,100C8.05,100,9.19,100,10.34,100C11.49,100,12.64,100,13.79,100C14.94,100,16.09,100,17.24,100C18.39,100,19.54,100,20.69,100C21.84,100,22.99,100,24.14,100C25.29,100,26.44,100,27.59,100C28.74,100,29.88,100,31.03,100C32.18,100,33.33,100,34.48,100C35.63,100,36.78,100,37.93,100C39.08,100,40.23,100,41.38,100C42.53,100,43.68,100,44.83,100C45.98,100,47.13,100,48.28,100C49.43,100,50.57,100,51.72,100C52.87,100,54.02,100,55.17,100C56.32,100,57.47,100,58.62,100C59.77,100,60.92,100,62.07,100C63.22,100,64.37,100,65.52,100C66.67,100,67.82,100,68.97,100C70.12,100,71.26,100,72.41,100C73.56,100,74.71,100,75.86,100C77.01,100,78.16,100,79.31,100C80.46,100,81.61,100,82.76,100C83.91,100,85.06,0,86.21,0C87.36,0,88.51,100,89.66,100C90.81,100,91.95,0,93.1,0C94.25,0,95.4,100,96.55,100C97.7,100,98.85,100,100,100L100,100L0,100Z" fill="url(#nq-ts-42f45ec5)" stroke="none" />
                                    <path data-slot="time-series-current" d="M0,100C1.15,100,2.3,100,3.45,100C4.6,100,5.75,100,6.9,100C8.05,100,9.19,100,10.34,100C11.49,100,12.64,100,13.79,100C14.94,100,16.09,100,17.24,100C18.39,100,19.54,100,20.69,100C21.84,100,22.99,100,24.14,100C25.29,100,26.44,100,27.59,100C28.74,100,29.88,100,31.03,100C32.18,100,33.33,100,34.48,100C35.63,100,36.78,100,37.93,100C39.08,100,40.23,100,41.38,100C42.53,100,43.68,100,44.83,100C45.98,100,47.13,100,48.28,100C49.43,100,50.57,100,51.72,100C52.87,100,54.02,100,55.17,100C56.32,100,57.47,100,58.62,100C59.77,100,60.92,100,62.07,100C63.22,100,64.37,100,65.52,100C66.67,100,67.82,100,68.97,100C70.12,100,71.26,100,72.41,100C73.56,100,74.71,100,75.86,100C77.01,100,78.16,100,79.31,100C80.46,100,81.61,100,82.76,100C83.91,100,85.06,0,86.21,0C87.36,0,88.51,100,89.66,100C90.81,100,91.95,0,93.1,0C94.25,0,95.4,100,96.55,100C97.7,100,98.85,100,100,100" fill="none" stroke="var(--color-current)" stroke-width="2" vector-effect="non-scaling-stroke" stroke-linejoin="round" stroke-linecap="round" />
                                </svg>
                                                                <div class="contents" x-show="hover !== null" style="display: none">
                                    <span aria-hidden="true" class="pointer-events-none absolute inset-y-0 w-px bg-border" x-bind:style="lineStyle"></span>
                                    <span aria-hidden="true" data-slot="chart-dot" class="pointer-events-none absolute size-2 -translate-y-1/2 rounded-full bg-[var(--color-current)] ltr:-translate-x-1/2 rtl:translate-x-1/2" x-bind:style="dotStyle"></span>
                                    <div class="pointer-events-none absolute top-0 z-10 ltr:-translate-x-1/2 rtl:translate-x-1/2" x-bind:style="tipStyle">
                                        <div data-slot="chart-tooltip" dir="ltr" class="grid min-w-32 gap-1.5 rounded-control border border-border bg-popover px-2.5 py-1.5 text-caption text-popover-foreground shadow-md">
                                            <div class="text-label" x-text="tip.date"></div>
                                            <div class="grid gap-1">
                                                <template x-for="row in tip.rows" x-bind:key="row.k">
                                                    <div class="flex items-center gap-2" x-show="row.k === 'current' || compare">
                                                        <span aria-hidden="true" class="size-2.5 shrink-0 rounded-[2px]" x-bind:style="{ backgroundColor: row.color }"></span>
                                                        <span class="text-muted-foreground" x-text="row.label"></span>
                                                        <span class="ms-auto ps-3 text-label tabular-nums" x-text="row.text"></span>
                                                    </div>
                                                </template>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                        <div aria-hidden="true" class="relative h-4 ms-[3.25rem]">
                                                                                            <span class="absolute top-0 whitespace-nowrap start-0"
                                    >Aug 31</span>
                                                                                            <span class="absolute top-0 whitespace-nowrap ltr:-translate-x-1/2 rtl:translate-x-1/2"
                                     style="inset-inline-start: 20.69%" >Sep 6</span>
                                                                                            <span class="absolute top-0 whitespace-nowrap ltr:-translate-x-1/2 rtl:translate-x-1/2"
                                     style="inset-inline-start: 41.38%" >Sep 12</span>
                                                                                            <span class="absolute top-0 whitespace-nowrap ltr:-translate-x-1/2 rtl:translate-x-1/2"
                                     style="inset-inline-start: 58.62%" >Sep 17</span>
                                                                                            <span class="absolute top-0 whitespace-nowrap ltr:-translate-x-1/2 rtl:translate-x-1/2"
                                     style="inset-inline-start: 79.31%" >Sep 23</span>
                                                                                            <span class="absolute top-0 whitespace-nowrap end-0"
                                    >Sep 29</span>
                                                    </div>
</div>
                </div>
                                            <div class="contents" data-metric="lost" x-show="metric === 'lost'"  style="display: none" >
                    <div data-slot="time-series-total" class="flex flex-wrap items-baseline gap-x-3 gap-y-1">
                        <span class="text-caption text-muted-foreground">Total</span>
                        <span class="text-h2 text-foreground tabular-nums">
                            <bdi data-slot="num" data-numeric="" class="tabular-nums">1</bdi>
                        </span>
                                            </div>
                    <div data-slot="chart"  role="img" aria-label="Lost, Aug 31 to Sep 29"   style="--color-current: var(--nq-danger); --color-previous: var(--muted-foreground)"     class="flex w-full text-caption [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line]:stroke-border [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-dot]:stroke-card [&_.recharts-layer]:outline-hidden [&_.recharts-sector]:outline-hidden [&_.recharts-sector]:stroke-card [&_.recharts-surface]:outline-hidden aspect-auto flex-col justify-start gap-2 h-48">
    <div class="flex min-h-0 flex-1 gap-2">
                            <div aria-hidden="true" class="relative w-11 shrink-0 text-end text-muted-foreground">
                                                                    <span class="absolute inset-x-0 -translate-y-1/2 truncate" style="top: 100%">
                                                                                    <bdi data-slot="num" data-numeric="" class="tabular-nums">0</bdi>
                                                                            </span>
                                                                    <span class="absolute inset-x-0 -translate-y-1/2 truncate" style="top: 50%">
                                                                                    <bdi data-slot="num" data-numeric="" class="tabular-nums">0.5</bdi>
                                                                            </span>
                                                                    <span class="absolute inset-x-0 -translate-y-1/2 truncate" style="top: 0%">
                                                                                    <bdi data-slot="num" data-numeric="" class="tabular-nums">1</bdi>
                                                                            </span>
                                                            </div>
                            <div data-slot="time-series-plot" class="relative min-w-0 flex-1" x-data="nqTimeSeriesChart(JSON.parse('[{\u0022x\u0022:0,\u0022y\u0022:100,\u0022date\u0022:\u0022Aug 31\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Lost\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:3.45,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 1\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Lost\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:6.9,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 2\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Lost\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:10.34,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 3\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Lost\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:13.79,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 4\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Lost\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:17.24,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 5\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Lost\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:20.69,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 6\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Lost\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:24.14,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 7\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Lost\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:27.59,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 8\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Lost\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:31.03,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 9\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Lost\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:34.48,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 10\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Lost\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:37.93,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 11\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Lost\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:41.38,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 12\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Lost\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:44.83,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 13\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Lost\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:48.28,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 14\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Lost\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:51.72,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 15\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Lost\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:55.17,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 16\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Lost\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:58.62,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 17\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Lost\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:62.07,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 18\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Lost\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:65.52,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 19\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Lost\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:68.97,\u0022y\u0022:0,\u0022date\u0022:\u0022Sep 20\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Lost\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00221\u0022}]},{\u0022x\u0022:72.41,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 21\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Lost\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:75.86,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 22\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Lost\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:79.31,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 23\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Lost\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:82.76,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 24\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Lost\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:86.21,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 25\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Lost\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:89.66,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 26\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Lost\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:93.1,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 27\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Lost\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:96.55,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 28\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Lost\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]},{\u0022x\u0022:100,\u0022y\u0022:100,\u0022date\u0022:\u0022Sep 29\u0022,\u0022rows\u0022:[{\u0022k\u0022:\u0022current\u0022,\u0022label\u0022:\u0022Lost\u0022,\u0022color\u0022:\u0022var(--color-current)\u0022,\u0022text\u0022:\u00220\u0022}]}]'))" x-on:pointermove="move($event)" x-on:pointerleave="leave()">
                                                                    <span aria-hidden="true" class="absolute inset-x-0 border-t border-border" style="top: 100%"></span>
                                                                    <span aria-hidden="true" class="absolute inset-x-0 border-t border-border" style="top: 50%"></span>
                                                                    <span aria-hidden="true" class="absolute inset-x-0 border-t border-border" style="top: 0%"></span>
                                                                <svg viewBox="0 0 100 100" preserveAspectRatio="none" aria-hidden="true" focusable="false" class="absolute inset-0 size-full overflow-visible rtl:-scale-x-100">
                                    <defs>
                                        <linearGradient id="nq-ts-d9bf41bc" x1="0" y1="0" x2="0" y2="1">
                                            <stop offset="0%" style="stop-color: var(--color-current); stop-opacity: 0.28" />
                                            <stop offset="100%" style="stop-color: var(--color-current); stop-opacity: 0.02" />
                                        </linearGradient>
                                    </defs>
                                                                                                            <path d="M0,100C1.15,100,2.3,100,3.45,100C4.6,100,5.75,100,6.9,100C8.05,100,9.19,100,10.34,100C11.49,100,12.64,100,13.79,100C14.94,100,16.09,100,17.24,100C18.39,100,19.54,100,20.69,100C21.84,100,22.99,100,24.14,100C25.29,100,26.44,100,27.59,100C28.74,100,29.88,100,31.03,100C32.18,100,33.33,100,34.48,100C35.63,100,36.78,100,37.93,100C39.08,100,40.23,100,41.38,100C42.53,100,43.68,100,44.83,100C45.98,100,47.13,100,48.28,100C49.43,100,50.57,100,51.72,100C52.87,100,54.02,100,55.17,100C56.32,100,57.47,100,58.62,100C59.77,100,60.92,100,62.07,100C63.22,100,64.37,100,65.52,100C66.67,100,67.82,0,68.97,0C70.12,0,71.26,100,72.41,100C73.56,100,74.71,100,75.86,100C77.01,100,78.16,100,79.31,100C80.46,100,81.61,100,82.76,100C83.91,100,85.06,100,86.21,100C87.36,100,88.51,100,89.66,100C90.81,100,91.95,100,93.1,100C94.25,100,95.4,100,96.55,100C97.7,100,98.85,100,100,100L100,100L0,100Z" fill="url(#nq-ts-d9bf41bc)" stroke="none" />
                                    <path data-slot="time-series-current" d="M0,100C1.15,100,2.3,100,3.45,100C4.6,100,5.75,100,6.9,100C8.05,100,9.19,100,10.34,100C11.49,100,12.64,100,13.79,100C14.94,100,16.09,100,17.24,100C18.39,100,19.54,100,20.69,100C21.84,100,22.99,100,24.14,100C25.29,100,26.44,100,27.59,100C28.74,100,29.88,100,31.03,100C32.18,100,33.33,100,34.48,100C35.63,100,36.78,100,37.93,100C39.08,100,40.23,100,41.38,100C42.53,100,43.68,100,44.83,100C45.98,100,47.13,100,48.28,100C49.43,100,50.57,100,51.72,100C52.87,100,54.02,100,55.17,100C56.32,100,57.47,100,58.62,100C59.77,100,60.92,100,62.07,100C63.22,100,64.37,100,65.52,100C66.67,100,67.82,0,68.97,0C70.12,0,71.26,100,72.41,100C73.56,100,74.71,100,75.86,100C77.01,100,78.16,100,79.31,100C80.46,100,81.61,100,82.76,100C83.91,100,85.06,100,86.21,100C87.36,100,88.51,100,89.66,100C90.81,100,91.95,100,93.1,100C94.25,100,95.4,100,96.55,100C97.7,100,98.85,100,100,100" fill="none" stroke="var(--color-current)" stroke-width="2" vector-effect="non-scaling-stroke" stroke-linejoin="round" stroke-linecap="round" />
                                </svg>
                                                                <div class="contents" x-show="hover !== null" style="display: none">
                                    <span aria-hidden="true" class="pointer-events-none absolute inset-y-0 w-px bg-border" x-bind:style="lineStyle"></span>
                                    <span aria-hidden="true" data-slot="chart-dot" class="pointer-events-none absolute size-2 -translate-y-1/2 rounded-full bg-[var(--color-current)] ltr:-translate-x-1/2 rtl:translate-x-1/2" x-bind:style="dotStyle"></span>
                                    <div class="pointer-events-none absolute top-0 z-10 ltr:-translate-x-1/2 rtl:translate-x-1/2" x-bind:style="tipStyle">
                                        <div data-slot="chart-tooltip" dir="ltr" class="grid min-w-32 gap-1.5 rounded-control border border-border bg-popover px-2.5 py-1.5 text-caption text-popover-foreground shadow-md">
                                            <div class="text-label" x-text="tip.date"></div>
                                            <div class="grid gap-1">
                                                <template x-for="row in tip.rows" x-bind:key="row.k">
                                                    <div class="flex items-center gap-2" x-show="row.k === 'current' || compare">
                                                        <span aria-hidden="true" class="size-2.5 shrink-0 rounded-[2px]" x-bind:style="{ backgroundColor: row.color }"></span>
                                                        <span class="text-muted-foreground" x-text="row.label"></span>
                                                        <span class="ms-auto ps-3 text-label tabular-nums" x-text="row.text"></span>
                                                    </div>
                                                </template>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                        <div aria-hidden="true" class="relative h-4 ms-[3.25rem]">
                                                                                            <span class="absolute top-0 whitespace-nowrap start-0"
                                    >Aug 31</span>
                                                                                            <span class="absolute top-0 whitespace-nowrap ltr:-translate-x-1/2 rtl:translate-x-1/2"
                                     style="inset-inline-start: 20.69%" >Sep 6</span>
                                                                                            <span class="absolute top-0 whitespace-nowrap ltr:-translate-x-1/2 rtl:translate-x-1/2"
                                     style="inset-inline-start: 41.38%" >Sep 12</span>
                                                                                            <span class="absolute top-0 whitespace-nowrap ltr:-translate-x-1/2 rtl:translate-x-1/2"
                                     style="inset-inline-start: 58.62%" >Sep 17</span>
                                                                                            <span class="absolute top-0 whitespace-nowrap ltr:-translate-x-1/2 rtl:translate-x-1/2"
                                     style="inset-inline-start: 79.31%" >Sep 23</span>
                                                                                            <span class="absolute top-0 whitespace-nowrap end-0"
                                    >Sep 29</span>
                                                    </div>
</div>
                </div></div>
</div>
    <div data-slot="card" class="flex flex-col gap-4 rounded-card border border-border bg-card py-4 text-card-foreground"><div data-slot="card-header" class="grid auto-rows-min items-start gap-1 px-4 has-data-[slot=card-action]:grid-cols-[1fr_auto]"><h3 data-slot="card-title" class="text-label text-foreground">Backlink monitor</h3>
            <div data-slot="card-description" class="text-body-sm text-muted-foreground">Links pointing at your site: what arrived, what disappeared and what looks harmful.</div></div>
        <div data-slot="card-content" class="px-4 flex flex-col gap-3"><span data-slot="status" data-tone="danger" role="alert" x-show="failed" style="display: none" class="inline-flex min-w-0 items-center gap-1.5 text-body-sm text-foreground">
            <svg aria-hidden="true" class="size-3.5 shrink-0 text-nq-danger-text" 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"/>
  <path d="m15 9-6 6"/>
  <path d="m9 9 6 6"/>
</svg>        <span class="truncate" ><span x-text="failed"></span></span>
</span>
            <div data-slot="data-table" x-data="nqDataTable([], JSON.parse('[{\u0022id\u0022:\u0022source\u0022,\u0022header\u0022:\u0022Linking page\u0022,\u0022sortable\u0022:true,\u0022searchable\u0022:true,\u0022hideable\u0022:false,\u0022type\u0022:\u0022text\u0022},{\u0022id\u0022:\u0022anchor\u0022,\u0022header\u0022:\u0022Anchor\u0022,\u0022sortable\u0022:true,\u0022searchable\u0022:true,\u0022type\u0022:\u0022text\u0022},{\u0022id\u0022:\u0022target\u0022,\u0022header\u0022:\u0022Your page\u0022,\u0022sortable\u0022:true,\u0022searchable\u0022:true,\u0022type\u0022:\u0022text\u0022},{\u0022id\u0022:\u0022rating\u0022,\u0022header\u0022:\u0022Domain rating\u0022,\u0022type\u0022:\u0022number\u0022,\u0022sortable\u0022:true,\u0022align\u0022:\u0022end\u0022},{\u0022id\u0022:\u0022spam\u0022,\u0022header\u0022:\u0022Spam score\u0022,\u0022type\u0022:\u0022number\u0022,\u0022sortable\u0022:true,\u0022align\u0022:\u0022end\u0022},{\u0022id\u0022:\u0022seen\u0022,\u0022header\u0022:\u0022First seen\u0022,\u0022type\u0022:\u0022date\u0022,\u0022sortable\u0022:true},{\u0022id\u0022:\u0022status\u0022,\u0022header\u0022:\u0022Status\u0022,\u0022sortable\u0022:true,\u0022filter\u0022:true,\u0022options\u0022:[{\u0022value\u0022:\u0022new\u0022,\u0022label\u0022:\u0022New\u0022},{\u0022value\u0022:\u0022active\u0022,\u0022label\u0022:\u0022Live\u0022},{\u0022value\u0022:\u0022lost\u0022,\u0022label\u0022:\u0022Lost\u0022},{\u0022value\u0022:\u0022toxic\u0022,\u0022label\u0022:\u0022Toxic\u0022}],\u0022type\u0022:\u0022text\u0022}]'), JSON.parse('{\u0022nameKey\u0022:\u0022domain\u0022,\u0022locale\u0022:\u0022en\u0022,\u0022actions\u0022:[{\u0022id\u0022:\u0022disavow\u0022},{\u0022id\u0022:\u0022safe\u0022}],\u0022actionsKey\u0022:\u0022actions\u0022,\u0022labels\u0022:{\u0022selectRow\u0022:\u0022Select {name}\u0022,\u0022rowActions\u0022:\u0022Actions for {name}\u0022,\u0022selected\u0022:\u0022{n} selected\u0022,\u0022range\u0022:\u0022{from}\\u2013{to} of {total}\u0022,\u0022editCell\u0022:\u0022{column}, {row}\u0022,\u0022invalidNumber\u0022:\u0022Enter a number\u0022,\u0022invalidDate\u0022:\u0022Enter a date\u0022,\u0022saving\u0022:\u0022Saving\\u2026\u0022,\u0022saved\u0022:\u0022Saved\u0022,\u0022saveFailed\u0022:\u0022Couldn\\u0027t save the change\u0022,\u0022saveFailedFor\u0022:\u0022Couldn\\u0027t save: {message}\u0022,\u0022expandRow\u0022:\u0022Show details for {name}\u0022,\u0022details\u0022:\u0022Details for {name}\u0022,\u0022ascending\u0022:\u0022ascending\u0022,\u0022descending\u0022:\u0022descending\u0022,\u0022rangeAtLeast\u0022:\u0022\\u2265 {v}\u0022,\u0022rangeAtMost\u0022:\u0022\\u2264 {v}\u0022,\u0022sortPriority\u0022:\u0022sort {n}, {dir}\u0022}}'))" x-modelable="rows"
    x-model="tableRows" class="flex min-w-0 flex-col gap-3">
            <div data-slot="data-table-toolbar" class="flex flex-wrap items-center gap-2">
                            <div data-slot="data-table-search" class="relative w-full sm:w-64">
                    <svg aria-hidden="true" class="pointer-events-none absolute start-2.5 top-1/2 size-4 -translate-y-1/2 text-muted-foreground" 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="m21 21-4.34-4.34"/>
  <circle cx="11" cy="11" r="8"/>
</svg>                    <input data-slot="input" type="search"
                    x-model="query" x-on:keydown.escape="if (query) { $event.preventDefault(); query = &#039;&#039; }" placeholder="Filter by domain, anchor or page…" aria-label="Filter by domain, anchor or page…" class="w-full min-w-0 rounded-control border border-input bg-card px-3 text-foreground min-h-[var(--nq-touch-min,0px)] transition-colors duration-150 ease-nq outline-none placeholder:text-muted-foreground focus-visible:border-nq-focus focus-visible:outline-1 focus-visible:outline-nq-focus data-invalid:border-nq-danger aria-invalid:border-nq-danger disabled:cursor-not-allowed disabled:opacity-50 pointer-coarse:text-[16px] h-control-sm ps-8 pe-8 text-body-sm [&::-webkit-search-cancel-button]:hidden">
                    <button type="button" x-show="query" aria-label="Clear search" x-on:click="query = ''" style="display: none"
                        class="absolute end-1.5 top-1/2 inline-flex size-5 -translate-y-1/2 items-center justify-center rounded-full text-muted-foreground outline-none hover:bg-nq-hover hover:text-foreground focus-visible:outline-2 focus-visible:outline-nq-focus">
                        <svg aria-hidden="true" class="size-3.5" 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="M18 6 6 18"/>
  <path d="m6 6 12 12"/>
</svg>                    </button>
                </div>
                            <div data-slot="dropdown-menu" x-data="nqDropdownMenu(false)" x-modelable="open" class="contents"><button data-slot="dropdown-menu-trigger"
     type="button"                         x-bind="trigger" x-ref="trigger" x-bind:class="facetCount(&#039;status&#039;) ? &#039;&#039; : &#039;border-dashed text-muted-foreground&#039;" data-facet="status" class="inline-flex shrink-0 select-none items-center justify-center gap-2 whitespace-nowrap rounded-control border font-sans text-label transition-colors duration-150 ease-nq min-h-[var(--nq-touch-min,0px)] outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-nq-focus disabled:pointer-events-none disabled:opacity-50 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 border-border bg-card text-foreground hover:bg-nq-hover h-control-sm px-2.5">
        <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="M2 5h20"/>
  <path d="M6 12h12"/>
  <path d="M9 19h6"/>
</svg>                        Status
                        <span data-slot="badge" x-show="facetCount('status')" x-text="facetSummary('status')" style="display: none"
                            class="-me-1 inline-flex h-5 shrink-0 items-center gap-1 whitespace-nowrap rounded-[4px] border border-border px-1.5 text-caption font-medium tabular-nums text-muted-foreground"></span></button>
                    <template x-teleport="body">
    <div data-slot="dropdown-menu-content" x-bind="popup" x-init="popupEl = $el" x-nq-presence="open" x-anchor.bottom-start.offset.4="$refs.trigger"
        class="z-50 overflow-hidden rounded-floating border border-border bg-popover p-1.5 text-popover-foreground shadow-floating outline-none max-h-[var(--available-height)] overflow-y-auto transition-opacity duration-150 ease-nq data-starting-style:opacity-0 data-ending-style:opacity-0 min-w-48"><div data-slot="dropdown-menu-group" role="group" ><div data-slot="dropdown-menu-checkbox-item" role="menuitemcheckbox" x-data="{ checked: false }" x-modelable="checked" x-bind="item"
    x-on:click="if (! $el.hasAttribute('data-disabled')) checked = ! checked"
    x-bind:aria-checked="checked ? 'true' : 'false'" x-bind:data-checked="checked ? '' : undefined" x-bind:data-unchecked="checked ? undefined : ''"
     data-keep-open         x-model="facet[&#039;status|new&#039;]" class="relative flex h-nav-row min-h-[var(--nq-touch-min,0px)] cursor-default select-none items-center gap-2.5 rounded-control px-2.5 text-body-sm text-foreground outline-none data-highlighted:bg-nq-selected data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:size-4 [&_svg]:shrink-0 [&_svg]:text-muted-foreground ps-8">
    <span aria-hidden="true" class="absolute start-2.5 inline-flex size-4 items-center justify-center">
        <span x-show="checked" class="contents"  style="display:none" ><svg 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="M20 6 9 17l-5-5"/>
</svg></span>
    </span>
    New
</div>
                                                            <div data-slot="dropdown-menu-checkbox-item" role="menuitemcheckbox" x-data="{ checked: false }" x-modelable="checked" x-bind="item"
    x-on:click="if (! $el.hasAttribute('data-disabled')) checked = ! checked"
    x-bind:aria-checked="checked ? 'true' : 'false'" x-bind:data-checked="checked ? '' : undefined" x-bind:data-unchecked="checked ? undefined : ''"
     data-keep-open         x-model="facet[&#039;status|active&#039;]" class="relative flex h-nav-row min-h-[var(--nq-touch-min,0px)] cursor-default select-none items-center gap-2.5 rounded-control px-2.5 text-body-sm text-foreground outline-none data-highlighted:bg-nq-selected data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:size-4 [&_svg]:shrink-0 [&_svg]:text-muted-foreground ps-8">
    <span aria-hidden="true" class="absolute start-2.5 inline-flex size-4 items-center justify-center">
        <span x-show="checked" class="contents"  style="display:none" ><svg 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="M20 6 9 17l-5-5"/>
</svg></span>
    </span>
    Live
</div>
                                                            <div data-slot="dropdown-menu-checkbox-item" role="menuitemcheckbox" x-data="{ checked: false }" x-modelable="checked" x-bind="item"
    x-on:click="if (! $el.hasAttribute('data-disabled')) checked = ! checked"
    x-bind:aria-checked="checked ? 'true' : 'false'" x-bind:data-checked="checked ? '' : undefined" x-bind:data-unchecked="checked ? undefined : ''"
     data-keep-open         x-model="facet[&#039;status|lost&#039;]" class="relative flex h-nav-row min-h-[var(--nq-touch-min,0px)] cursor-default select-none items-center gap-2.5 rounded-control px-2.5 text-body-sm text-foreground outline-none data-highlighted:bg-nq-selected data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:size-4 [&_svg]:shrink-0 [&_svg]:text-muted-foreground ps-8">
    <span aria-hidden="true" class="absolute start-2.5 inline-flex size-4 items-center justify-center">
        <span x-show="checked" class="contents"  style="display:none" ><svg 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="M20 6 9 17l-5-5"/>
</svg></span>
    </span>
    Lost
</div>
                                                            <div data-slot="dropdown-menu-checkbox-item" role="menuitemcheckbox" x-data="{ checked: false }" x-modelable="checked" x-bind="item"
    x-on:click="if (! $el.hasAttribute('data-disabled')) checked = ! checked"
    x-bind:aria-checked="checked ? 'true' : 'false'" x-bind:data-checked="checked ? '' : undefined" x-bind:data-unchecked="checked ? undefined : ''"
     data-keep-open         x-model="facet[&#039;status|toxic&#039;]" class="relative flex h-nav-row min-h-[var(--nq-touch-min,0px)] cursor-default select-none items-center gap-2.5 rounded-control px-2.5 text-body-sm text-foreground outline-none data-highlighted:bg-nq-selected data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:size-4 [&_svg]:shrink-0 [&_svg]:text-muted-foreground ps-8">
    <span aria-hidden="true" class="absolute start-2.5 inline-flex size-4 items-center justify-center">
        <span x-show="checked" class="contents"  style="display:none" ><svg 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="M20 6 9 17l-5-5"/>
</svg></span>
    </span>
    Toxic
</div></div>
                        <div x-show="facetCount('status')" style="display: none">
                            <div data-slot="dropdown-menu-separator" role="separator" aria-orientation="horizontal" class="-mx-1.5 my-1.5 h-px bg-border"></div>
                            <div data-slot="dropdown-menu-item" role="menuitem" data-variant="default" x-bind="item"
        x-on:click="resetFacet(&#039;status&#039;)" class="relative flex h-nav-row min-h-[var(--nq-touch-min,0px)] cursor-default select-none items-center gap-2.5 rounded-control px-2.5 text-body-sm text-foreground outline-none data-highlighted:bg-nq-selected data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:size-4 [&_svg]:shrink-0 [&_svg]:text-muted-foreground">Reset</div>
                        </div></div>
</template></div>
                    </div>
    <div data-slot="table-container" role="region" tabindex="0" aria-label="Backlinks"                 class="relative w-full overflow-x-auto outline-none focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-nq-focus">
        <div data-slot="table" role="table" aria-label="Backlinks"  x-bind:style="'grid-template-columns: repeat(' + (shownCount() + 1) + ', auto)'"  x-bind:data-density="density"               class="grid w-full min-w-max text-body-sm">
            <div data-slot="table-header" role="rowgroup" class="contents">
                <div role="row" data-slot="table-row" class="col-span-full grid grid-cols-subgrid border-b border-border">
                                                                                                            <div role="columnheader" data-slot="table-head" data-col="source" x-show="shown['source']"  x-bind:class="pad"  x-bind:aria-sort="ariaSort('source')"                             class="flex items-center h-row text-start align-middle text-caption font-medium whitespace-nowrap text-muted-foreground">
                                                            <button type="button"  x-on:click="toggleSort('source', $event.shiftKey)"
                                    x-bind:class="sortOf('source') ? 'text-foreground' : ''"
                                    class="-mx-1.5 inline-flex h-7 max-w-full items-center gap-1 rounded-control px-1.5 outline-none transition-colors duration-150 ease-nq hover:bg-nq-hover hover:text-foreground focus-visible:outline-2 focus-visible:outline-nq-focus ">
                                    <span >Linking page</span>
                                    <svg aria-hidden="true" x-show="! sortOf('source')" class="size-3.5 shrink-0 opacity-40" 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="m7 15 5 5 5-5"/>
  <path d="m7 9 5-5 5 5"/>
</svg>                                    <x-lucide-arrow-up aria-hidden="true" class="size-3.5 shrink-0" x-show="sortOf('source') === 'asc'" style="display: none" />
                                    <x-lucide-arrow-down aria-hidden="true" class="size-3.5 shrink-0" x-show="sortOf('source') === 'desc'" style="display: none" />
                                                                    </button>
                                                                                </div>
                                                                    <div role="columnheader" data-slot="table-head" data-col="anchor" x-show="shown['anchor']"  x-bind:class="pad"  x-bind:aria-sort="ariaSort('anchor')"                             class="flex items-center h-row text-start align-middle text-caption font-medium whitespace-nowrap text-muted-foreground">
                                                            <button type="button"  x-on:click="toggleSort('anchor', $event.shiftKey)"
                                    x-bind:class="sortOf('anchor') ? 'text-foreground' : ''"
                                    class="-mx-1.5 inline-flex h-7 max-w-full items-center gap-1 rounded-control px-1.5 outline-none transition-colors duration-150 ease-nq hover:bg-nq-hover hover:text-foreground focus-visible:outline-2 focus-visible:outline-nq-focus ">
                                    <span >Anchor</span>
                                    <svg aria-hidden="true" x-show="! sortOf('anchor')" class="size-3.5 shrink-0 opacity-40" 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="m7 15 5 5 5-5"/>
  <path d="m7 9 5-5 5 5"/>
</svg>                                    <x-lucide-arrow-up aria-hidden="true" class="size-3.5 shrink-0" x-show="sortOf('anchor') === 'asc'" style="display: none" />
                                    <x-lucide-arrow-down aria-hidden="true" class="size-3.5 shrink-0" x-show="sortOf('anchor') === 'desc'" style="display: none" />
                                                                    </button>
                                                                                </div>
                                                                    <div role="columnheader" data-slot="table-head" data-col="target" x-show="shown['target']"  x-bind:class="pad"  x-bind:aria-sort="ariaSort('target')"                             class="flex items-center h-row text-start align-middle text-caption font-medium whitespace-nowrap text-muted-foreground">
                                                            <button type="button"  x-on:click="toggleSort('target', $event.shiftKey)"
                                    x-bind:class="sortOf('target') ? 'text-foreground' : ''"
                                    class="-mx-1.5 inline-flex h-7 max-w-full items-center gap-1 rounded-control px-1.5 outline-none transition-colors duration-150 ease-nq hover:bg-nq-hover hover:text-foreground focus-visible:outline-2 focus-visible:outline-nq-focus ">
                                    <span >Your page</span>
                                    <svg aria-hidden="true" x-show="! sortOf('target')" class="size-3.5 shrink-0 opacity-40" 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="m7 15 5 5 5-5"/>
  <path d="m7 9 5-5 5 5"/>
</svg>                                    <x-lucide-arrow-up aria-hidden="true" class="size-3.5 shrink-0" x-show="sortOf('target') === 'asc'" style="display: none" />
                                    <x-lucide-arrow-down aria-hidden="true" class="size-3.5 shrink-0" x-show="sortOf('target') === 'desc'" style="display: none" />
                                                                    </button>
                                                                                </div>
                                                                    <div role="columnheader" data-slot="table-head" data-col="rating" x-show="shown['rating']"  x-bind:class="pad"  x-bind:aria-sort="ariaSort('rating')"                             class="flex items-center h-row text-end justify-end align-middle text-caption font-medium whitespace-nowrap text-muted-foreground">
                                                            <button type="button"  x-on:click="toggleSort('rating', $event.shiftKey)"
                                    x-bind:class="sortOf('rating') ? 'text-foreground' : ''"
                                    class="-mx-1.5 inline-flex h-7 max-w-full items-center gap-1 rounded-control px-1.5 outline-none transition-colors duration-150 ease-nq hover:bg-nq-hover hover:text-foreground focus-visible:outline-2 focus-visible:outline-nq-focus flex-row-reverse">
                                    <span >Domain rating</span>
                                    <svg aria-hidden="true" x-show="! sortOf('rating')" class="size-3.5 shrink-0 opacity-40" 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="m7 15 5 5 5-5"/>
  <path d="m7 9 5-5 5 5"/>
</svg>                                    <x-lucide-arrow-up aria-hidden="true" class="size-3.5 shrink-0" x-show="sortOf('rating') === 'asc'" style="display: none" />
                                    <x-lucide-arrow-down aria-hidden="true" class="size-3.5 shrink-0" x-show="sortOf('rating') === 'desc'" style="display: none" />
                                                                    </button>
                                                                                </div>
                                                                    <div role="columnheader" data-slot="table-head" data-col="spam" x-show="shown['spam']"  x-bind:class="pad"  x-bind:aria-sort="ariaSort('spam')"                             class="flex items-center h-row text-end justify-end align-middle text-caption font-medium whitespace-nowrap text-muted-foreground">
                                                            <button type="button"  x-on:click="toggleSort('spam', $event.shiftKey)"
                                    x-bind:class="sortOf('spam') ? 'text-foreground' : ''"
                                    class="-mx-1.5 inline-flex h-7 max-w-full items-center gap-1 rounded-control px-1.5 outline-none transition-colors duration-150 ease-nq hover:bg-nq-hover hover:text-foreground focus-visible:outline-2 focus-visible:outline-nq-focus flex-row-reverse">
                                    <span >Spam score</span>
                                    <svg aria-hidden="true" x-show="! sortOf('spam')" class="size-3.5 shrink-0 opacity-40" 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="m7 15 5 5 5-5"/>
  <path d="m7 9 5-5 5 5"/>
</svg>                                    <x-lucide-arrow-up aria-hidden="true" class="size-3.5 shrink-0" x-show="sortOf('spam') === 'asc'" style="display: none" />
                                    <x-lucide-arrow-down aria-hidden="true" class="size-3.5 shrink-0" x-show="sortOf('spam') === 'desc'" style="display: none" />
                                                                    </button>
                                                                                </div>
                                                                    <div role="columnheader" data-slot="table-head" data-col="seen" x-show="shown['seen']"  x-bind:class="pad"  x-bind:aria-sort="ariaSort('seen')"                             class="flex items-center h-row text-start align-middle text-caption font-medium whitespace-nowrap text-muted-foreground">
                                                            <button type="button"  x-on:click="toggleSort('seen', $event.shiftKey)"
                                    x-bind:class="sortOf('seen') ? 'text-foreground' : ''"
                                    class="-mx-1.5 inline-flex h-7 max-w-full items-center gap-1 rounded-control px-1.5 outline-none transition-colors duration-150 ease-nq hover:bg-nq-hover hover:text-foreground focus-visible:outline-2 focus-visible:outline-nq-focus ">
                                    <span >First seen</span>
                                    <svg aria-hidden="true" x-show="! sortOf('seen')" class="size-3.5 shrink-0 opacity-40" 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="m7 15 5 5 5-5"/>
  <path d="m7 9 5-5 5 5"/>
</svg>                                    <x-lucide-arrow-up aria-hidden="true" class="size-3.5 shrink-0" x-show="sortOf('seen') === 'asc'" style="display: none" />
                                    <x-lucide-arrow-down aria-hidden="true" class="size-3.5 shrink-0" x-show="sortOf('seen') === 'desc'" style="display: none" />
                                                                    </button>
                                                                                </div>
                                                                    <div role="columnheader" data-slot="table-head" data-col="status" x-show="shown['status']"  x-bind:class="pad"  x-bind:aria-sort="ariaSort('status')"                             class="flex items-center h-row text-start align-middle text-caption font-medium whitespace-nowrap text-muted-foreground">
                                                            <button type="button"  x-on:click="toggleSort('status', $event.shiftKey)"
                                    x-bind:class="sortOf('status') ? 'text-foreground' : ''"
                                    class="-mx-1.5 inline-flex h-7 max-w-full items-center gap-1 rounded-control px-1.5 outline-none transition-colors duration-150 ease-nq hover:bg-nq-hover hover:text-foreground focus-visible:outline-2 focus-visible:outline-nq-focus ">
                                    <span >Status</span>
                                    <svg aria-hidden="true" x-show="! sortOf('status')" class="size-3.5 shrink-0 opacity-40" 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="m7 15 5 5 5-5"/>
  <path d="m7 9 5-5 5 5"/>
</svg>                                    <x-lucide-arrow-up aria-hidden="true" class="size-3.5 shrink-0" x-show="sortOf('status') === 'asc'" style="display: none" />
                                    <x-lucide-arrow-down aria-hidden="true" class="size-3.5 shrink-0" x-show="sortOf('status') === 'desc'" style="display: none" />
                                                                    </button>
                                                                                </div>
                                                                <div role="columnheader" data-slot="table-head"  x-bind:class="pad" class="flex items-center h-row w-12 text-start align-middle text-caption font-medium whitespace-nowrap text-muted-foreground"><span class="sr-only">Actions</span></div>
                                    </div>
            </div>
                            <div role="rowgroup" class="contents" data-slot="table-body" x-show="rowCount === 0" style="display: none">
                    <div role="row" data-slot="table-row" class="col-span-full grid grid-cols-subgrid border-0">
                        <div role="cell" data-slot="table-cell" class="col-span-full h-auto p-0 whitespace-normal">
                            <div x-show="isFiltered" style="display: none">
                                <div data-slot="empty-state" class="flex flex-col items-center justify-center gap-3 border-dashed border-border px-6 py-12 text-center rounded-card border-0">
            <span data-slot="state-icon" class="inline-flex size-10 items-center justify-center rounded-control border border-border bg-card [&amp;_svg]:size-5 text-muted-foreground">
            <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="m21 21-4.34-4.34"/>
  <circle cx="11" cy="11" r="8"/>
</svg>        </span>
        <div class="flex max-w-sm flex-col gap-1">
        <p class="text-label text-foreground">No matching results</p>
                    <p class="text-body-sm text-muted-foreground">Try a different search or clear the filters.</p>
            </div>
    <button type="button" x-on:click="resetFilters()" class="inline-flex shrink-0 select-none items-center justify-center gap-2 whitespace-nowrap rounded-control border border-border bg-card text-foreground font-sans text-label transition-colors duration-150 ease-nq min-h-[var(--nq-touch-min,0px)] outline-none hover:bg-nq-hover focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-nq-focus [&amp;_svg]:pointer-events-none [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 h-control-sm px-2.5">Clear filters</button>
    </div>
                            </div>
                            <div x-show="! isFiltered" style="display: none">
                                <div data-slot="empty-state" class="flex flex-col items-center justify-center gap-3 border-dashed border-border px-6 py-12 text-center rounded-card border-0">
            <span data-slot="state-icon" class="inline-flex size-10 items-center justify-center rounded-control border border-border bg-card [&amp;_svg]:size-5 text-muted-foreground">
            <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">
  <polyline points="22 12 16 12 14 15 10 15 8 12 2 12"/>
  <path d="M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z"/>
</svg>        </span>
        <div class="flex max-w-sm flex-col gap-1">
        <p class="text-label text-foreground">No backlinks found yet</p>
            </div>
    </div>
                            </div>
                        </div>
                    </div>
                </div>
                <template x-for="(row, index) in pageRows" x-bind:key="rid(row)">
                    <div role="rowgroup" class="contents" data-slot="table-body">
                        <div role="row" data-slot="table-row" data-row tabindex="-1" x-bind:tabindex="index === Math.min(active, pageRows.length - 1) ? 0 : -1"
                            x-bind:data-state="isSelected(row) ? 'selected' : null" x-bind:aria-selected="isSelected(row) ? 'true' : null"
                            x-bind:aria-expanded="canExpand(row) ? String(isOpen(row)) : null" x-on:focus="if ($event.target === $event.currentTarget) active = index"
                            x-on:keydown="rowKey($event, row, index, false)"
                             x-on:contextmenu="rowContext(row, $event)" x-on:touchstart.passive="rowTouch(row, $event)" x-on:touchmove.passive="rowTouchEnd()" x-on:touchend="rowTouchEnd()" x-on:touchcancel="rowTouchEnd()"                                                         x-bind:class="(isOpen(row) ? 'border-b-0 ' : '') + (ctxOpen && ctxRow === row ? 'bg-nq-hover' : '')"
                            class="col-span-full grid grid-cols-subgrid group/row border-b border-border outline-none transition-colors duration-150 ease-nq focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-nq-focus data-[state=selected]:bg-nq-selected hover:bg-nq-hover ">
                                                                                            <div role="cell" data-slot="table-cell" data-cell-col="source" x-show="shown['source']"  x-bind:class="pad"
                                                                        class="flex items-center relative h-row align-middle whitespace-nowrap  ">
                                                                                                                    <span  class="flex min-w-0 items-center gap-1.5 " >
                                                                                            <span class="flex min-w-0 flex-col">
                        <bdi dir="ltr" class="block max-w-[26ch] truncate text-label text-foreground" x-text="row.domain"></bdi>
                        <bdi dir="ltr" class="block max-w-[26ch] truncate text-caption text-muted-foreground" x-text="row.path"></bdi>
                    </span>
                                                                                                                                </span>
                                                                    </div>
                                                                                            <div role="cell" data-slot="table-cell" data-cell-col="anchor" x-show="shown['anchor']"  x-bind:class="pad"
                                                                        class="flex items-center relative h-row align-middle whitespace-nowrap  ">
                                                                                                                    <span  class="flex min-w-0 items-center gap-1.5 " >
                                                                                            <span dir="auto" class="block max-w-[18ch] truncate text-body-sm" x-text="row.anchor"></span>
                                                                                                                                </span>
                                                                    </div>
                                                                                            <div role="cell" data-slot="table-cell" data-cell-col="target" x-show="shown['target']"  x-bind:class="pad"
                                                                        class="flex items-center relative h-row align-middle whitespace-nowrap  ">
                                                                                                                    <span  class="flex min-w-0 items-center gap-1.5 " >
                                                                                            <bdi dir="ltr" class="block max-w-[18ch] truncate text-caption text-muted-foreground" x-text="row.target"></bdi>
                                                                                                                                </span>
                                                                    </div>
                                                                                            <div role="cell" data-slot="table-cell" data-cell-col="rating" x-show="shown['rating']"  x-bind:class="pad"
                                                                        class="flex items-center relative h-row align-middle whitespace-nowrap text-end justify-end ">
                                                                                                                    <span  class="flex min-w-0 items-center gap-1.5 justify-end" >
                                                                                            <span class="min-w-0 flex-1  tabular-nums" x-text="shownText(row, col(&#039;rating&#039;))"></span>
                                                                                                                                </span>
                                                                    </div>
                                                                                            <div role="cell" data-slot="table-cell" data-cell-col="spam" x-show="shown['spam']"  x-bind:class="pad"
                                                                        class="flex items-center relative h-row align-middle whitespace-nowrap text-end justify-end ">
                                                                                                                    <span  class="flex min-w-0 items-center gap-1.5 justify-end" >
                                                                                            <span class="min-w-0 flex-1  tabular-nums" x-text="shownText(row, col(&#039;spam&#039;))"></span>
                                                                                                                                </span>
                                                                    </div>
                                                                                            <div role="cell" data-slot="table-cell" data-cell-col="seen" x-show="shown['seen']"  x-bind:class="pad"
                                                                        class="flex items-center relative h-row align-middle whitespace-nowrap  ">
                                                                                                                    <span  class="flex min-w-0 items-center gap-1.5 " >
                                                                                            <span class="min-w-0 flex-1  " x-text="shownText(row, col(&#039;seen&#039;))"></span>
                                                                                                                                </span>
                                                                    </div>
                                                                                            <div role="cell" data-slot="table-cell" data-cell-col="status" x-show="shown['status']"  x-bind:class="pad"
                                                                        class="flex items-center relative h-row align-middle whitespace-nowrap  ">
                                                                                                                    <span  class="flex min-w-0 items-center gap-1.5 " >
                                                                                            <span class="flex flex-wrap items-center gap-1">
                        <span data-slot="status" data-tone="danger" x-show="row.tone === &#039;danger&#039;" style="display: none" class="inline-flex min-w-0 items-center gap-1.5 text-body-sm text-foreground">
            <svg aria-hidden="true" class="size-3.5 shrink-0 text-nq-danger-text" 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"/>
  <path d="m15 9-6 6"/>
  <path d="m9 9 6 6"/>
</svg>        <span class="truncate" ><span x-text="row.statusLabel"></span></span>
</span>
                        <span data-slot="status" data-tone="success" x-show="row.tone === &#039;success&#039;" style="display: none" class="inline-flex min-w-0 items-center gap-1.5 text-body-sm text-foreground">
            <svg aria-hidden="true" class="size-3.5 shrink-0 text-nq-success-text" 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"/>
  <path d="m9 12 2 2 4-4"/>
</svg>        <span class="truncate" ><span x-text="row.statusLabel"></span></span>
</span>
                        <span data-slot="status" data-tone="neutral" x-show="row.tone === &#039;neutral&#039;" style="display: none" class="inline-flex min-w-0 items-center gap-1.5 text-body-sm text-foreground">
            <svg aria-hidden="true" class="size-3.5 shrink-0 text-muted-foreground" 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"/>
</svg>        <span class="truncate" ><span x-text="row.statusLabel"></span></span>
</span>
                        <span data-slot="badge"  style="display: none"     x-show="row.badge === &#039;disavowed&#039;" 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-border text-muted-foreground"><span x-text="row.badgeLabel"></span></span>
                        <span data-slot="badge"  style="display: none"     x-show="row.badge === &#039;toxic&#039;" 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"><span x-text="row.badgeLabel"></span></span>
                        <span data-slot="badge"  style="display: none"     x-show="row.nofollow" 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-border text-muted-foreground"><span x-text="row.nofollowLabel"></span></span>
                    </span>
                                                                                                                                </span>
                                                                    </div>
                                                            <div role="cell" data-slot="table-cell"  x-bind:class="pad" class="flex items-center h-row w-12 pe-2 text-end align-middle whitespace-nowrap">
                                    <div data-slot="dropdown-menu" x-data="nqDropdownMenu(false)" x-modelable="open" class="contents"><button data-slot="data-table-row-actions"
     type="button"                         x-bind="trigger" x-ref="trigger" x-bind:aria-label="say(&#039;rowActions&#039;, row)" x-show="hasActions(row)" x-bind:tabindex="index === Math.min(active, pageRows.length - 1) ? 0 : -1" class="inline-flex shrink-0 select-none items-center justify-center gap-2 whitespace-nowrap rounded-control border border-transparent font-sans text-label transition-colors duration-150 ease-nq min-h-[var(--nq-touch-min,0px)] outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-nq-focus disabled:pointer-events-none disabled:opacity-50 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 hover:bg-nq-hover size-control-sm p-0 text-muted-foreground opacity-0 group-hover/row:opacity-100 group-focus-within/row:opacity-100 group-data-[state=selected]/row:opacity-100 data-popup-open:opacity-100 pointer-coarse:opacity-100">
        <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">
  <circle cx="12" cy="12" r="1"/>
  <circle cx="19" cy="12" r="1"/>
  <circle cx="5" cy="12" r="1"/>
</svg></button>
                                        <template x-teleport="body">
    <div data-slot="dropdown-menu-content" x-bind="popup" x-init="popupEl = $el" x-nq-presence="open" x-anchor.bottom-end.offset.4="$refs.trigger"
        class="z-50 overflow-hidden rounded-floating border border-border bg-popover p-1.5 text-popover-foreground shadow-floating outline-none max-h-[var(--available-height)] overflow-y-auto transition-opacity duration-150 ease-nq data-starting-style:opacity-0 data-ending-style:opacity-0 min-w-44"><div data-slot="dropdown-menu-group" role="group" ><template x-if="actionOn(row, 0)">
                                                        <div role="none" class="contents">
                                                                                                                        <div data-slot="dropdown-menu-item" role="menuitem" data-variant="danger" x-bind="item"
        x-on:click="act(&#039;disavow&#039;, row)" x-bind:data-disabled="actionOff(row, 0) ? &#039;&#039; : null" x-bind:aria-disabled="actionOff(row, 0) ? &#039;true&#039; : null" class="relative flex h-nav-row min-h-[var(--nq-touch-min,0px)] cursor-default select-none items-center gap-2.5 rounded-control px-2.5 text-body-sm outline-none data-highlighted:bg-nq-selected data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:size-4 [&_svg]:shrink-0 text-nq-danger-text [&_svg]:text-current"><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="m2 2 20 20"/>
  <path d="M5 5a1 1 0 0 0-1 1v7c0 5 3.5 7.5 7.67 8.94a1 1 0 0 0 .67.01c2.35-.82 4.48-1.97 5.9-3.71"/>
  <path d="M9.309 3.652A12.252 12.252 0 0 0 11.24 2.28a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1v7a9.784 9.784 0 0 1-.08 1.264"/>
</svg>                                                                Disavow</div>
                                                        </div>
                                                    </template>
                                                                                                    <template x-if="actionOn(row, 1)">
                                                        <div role="none" class="contents">
                                                            <template x-if="sepBefore(row, 1)"><div data-slot="dropdown-menu-separator" role="separator" aria-orientation="horizontal" class="-mx-1.5 my-1.5 h-px bg-border"></div>
</template>                                                            <div data-slot="dropdown-menu-item" role="menuitem" data-variant="default" x-bind="item"
        x-on:click="act(&#039;safe&#039;, row)" x-bind:data-disabled="actionOff(row, 1) ? &#039;&#039; : null" x-bind:aria-disabled="actionOff(row, 1) ? &#039;true&#039; : null" class="relative flex h-nav-row min-h-[var(--nq-touch-min,0px)] cursor-default select-none items-center gap-2.5 rounded-control px-2.5 text-body-sm text-foreground outline-none data-highlighted:bg-nq-selected data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:size-4 [&_svg]:shrink-0 [&_svg]:text-muted-foreground"><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="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"/>
  <path d="m9 12 2 2 4-4"/>
</svg>                                                                Mark as safe</div>
                                                        </div>
                                                    </template></div></div>
</template></div>
                                </div>
                                                    </div>
                                            </div>
                </template>
                    </div>
    </div>
                <div data-slot="data-table-context-menu" x-data="nqContextMenu()" x-effect="menuClosed(open)" class="contents">
            <template x-teleport="body">
    <div data-slot="context-menu-content" x-bind="popup" x-init="popupEl = $el" x-nq-presence="open"
        class="fixed z-50 overflow-hidden rounded-floating border border-border bg-popover p-1.5 text-popover-foreground shadow-floating outline-none max-h-[var(--available-height)] overflow-y-auto transition-opacity duration-150 ease-nq data-starting-style:opacity-0 data-ending-style:opacity-0 min-w-44"><template x-if="ctxRow && actionOn(ctxRow, 0)">
                        <div role="none" class="contents">
                                                        <div data-slot="context-menu-item" role="menuitem" data-variant="danger" x-bind="item"
        x-on:click="act(&#039;disavow&#039;, ctxRow)" x-bind:data-disabled="actionOff(ctxRow, 0) ? &#039;&#039; : null" x-bind:aria-disabled="actionOff(ctxRow, 0) ? &#039;true&#039; : null" class="relative flex h-nav-row min-h-[var(--nq-touch-min,0px)] cursor-default select-none items-center gap-2.5 rounded-control px-2.5 text-body-sm outline-none data-highlighted:bg-nq-selected data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:size-4 [&_svg]:shrink-0 text-nq-danger-text [&_svg]:text-current"><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="m2 2 20 20"/>
  <path d="M5 5a1 1 0 0 0-1 1v7c0 5 3.5 7.5 7.67 8.94a1 1 0 0 0 .67.01c2.35-.82 4.48-1.97 5.9-3.71"/>
  <path d="M9.309 3.652A12.252 12.252 0 0 0 11.24 2.28a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1v7a9.784 9.784 0 0 1-.08 1.264"/>
</svg>                                Disavow</div>
                        </div>
                    </template>
                                    <template x-if="ctxRow && actionOn(ctxRow, 1)">
                        <div role="none" class="contents">
                            <template x-if="sepBefore(ctxRow, 1)"><div data-slot="context-menu-separator" role="separator" aria-orientation="horizontal" class="-mx-1.5 my-1.5 h-px bg-border"></div>
</template>                            <div data-slot="context-menu-item" role="menuitem" data-variant="default" x-bind="item"
        x-on:click="act(&#039;safe&#039;, ctxRow)" x-bind:data-disabled="actionOff(ctxRow, 1) ? &#039;&#039; : null" x-bind:aria-disabled="actionOff(ctxRow, 1) ? &#039;true&#039; : null" class="relative flex h-nav-row min-h-[var(--nq-touch-min,0px)] cursor-default select-none items-center gap-2.5 rounded-control px-2.5 text-body-sm text-foreground outline-none data-highlighted:bg-nq-selected data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:size-4 [&_svg]:shrink-0 [&_svg]:text-muted-foreground"><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="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"/>
  <path d="m9 12 2 2 4-4"/>
</svg>                                Mark as safe</div>
                        </div>
                    </template></div>
</template>
        </div>
        <span role="status" aria-live="polite" class="sr-only" x-text="announce"></span>
</div></div></div>
</div>
```
