# What breaks if…
> Simulates stopping one demo service and lists what depends on it hop by hop, plus the proxy routes that go down or lose an upstream.
- Element: `<sv-blast>`
- React: `import { SvBlast } from "@/components/lumesec/sv-blast"`
- Collection: Service Map (https://elements.lumesec.ai/components/service-map)
- Registry item: https://elements.lumesec.ai/r/sv-blast.json
- Page: https://elements.lumesec.ai/components/service-map/blast



Live preview: https://elements.lumesec.ai/view/sv-blast

```html
<sv-blast></sv-blast>
```

## Installation

```bash
npx shadcn@latest add @lumesec/sv-blast
```

First time with the @lumesec registry? Register it once, or install by URL:

```bash
npx shadcn@latest registry add @lumesec=https://elements.lumesec.ai/r/{name}.json
npx shadcn@latest add https://elements.lumesec.ai/r/sv-blast.json
```

## Usage

React:

```tsx
import { SvBlast } from "@/components/lumesec/sv-blast";

export function Example() {
  return (
    <SvBlast />
  );
}
```

HTML:

```html
<script type="module" src="https://elements.lumesec.ai/cdn/sv-blast.js"></script>

<sv-blast></sv-blast>
```

## Behaviour

Stops a service in simulation and lists everything that depends on it, hop by hop, plus the routes that go down or lose an upstream.

## API reference

### Events

Events bubble and cross the shadow boundary unless the description says otherwise.

| Event      | React prop   | Detail                                    | Description                                                                                    |
| ---------- | ------------ | ----------------------------------------- | ---------------------------------------------------------------------------------------------- |
| `simulate` | `onSimulate` | `{ service: string, affected: string[] }` | Fires after each simulation with the stopped service id and the ids of every affected service. |

### Methods

Call them on the element, for example through a React ref.

| Method  | Description                                                                 |
| ------- | --------------------------------------------------------------------------- |
| `run()` | Simulates stopping the service selected in the menu, as Simulate stop does. |

## Accessibility

* The service menu is labelled Service to stop.
* Results are rendered into a polite live region.
* Reduced motion: result chips appear at once instead of fading in one after another, and the count changes without rolling.

## Theming

The element reads your shadcn theme tokens through its shadow root, so light and dark follow your theme. The accent comes from `--lumesec`. See [Theming](/docs/theming).

This component reads `--border`, `--card`, `--destructive`, `--foreground`, `--lumesec-warning` and `--muted-foreground`.

To restyle only LumeSec elements, set the matching `--ui-*` overrides: `--ui-border`, `--ui-danger`, `--ui-fg`, `--ui-mono`, `--ui-muted`, `--ui-surface` and `--ui-warn`.

## Notes

* Built-in choices from `INFRA`: PgBouncer (default), Redis, Identity, AIOP API on app-01, Inference, Directory and Object store. No attribute selects a record.
* The cascade walks the demo edges from provider to consumer, proxy routes included, monitoring scrapes and Internet clients excluded. An AIOP API instance counts as degraded while its twin is still up; a route that keeps one upstream is marked one upstream left.
* Choosing another service clears the previous result.


