Kumo Svelte
  • Home
  • Installation
  • Colors
  • Accessibility
  • Changelog
  • Autocomplete
  • Badge
  • Banner
  • Breadcrumbs
  • Button
  • Checkbox
  • Clipboard Text
  • Cloudflare Logo
  • CodeHighlighted
  • Collapsible
  • Combobox
  • Command Palette
  • Date Picker
  • Dialog
  • Dropdown
  • Empty
  • Flow
  • Grid
  • Input
  • InputArea
  • InputGroup
  • Label
  • Layer Card
  • Link
  • Loader
  • MenuBar
  • Meter
  • Pagination
  • Popover
  • Radio
  • Select
  • Sensitive Input
  • Sidebar
  • Skeleton Line
  • Switch
  • Table
  • Table of Contents
  • Tabs
  • Text
  • Toast
  • Toolbar
  • Tooltip
  • Charts
  • Colors
  • Timeseries
  • Maps
  • Sankey
  • Custom Chart
  • Page Header
  • Resource List
  • Delete Resource
Delete Resource
kumo-svelte

Delete Resource

A confirmation dialog for safely deleting resources, requiring users to type the resource name to confirm.

<script lang="ts">
  import { Button } from "kumo-svelte/components/button";
  import { DeleteResource } from "kumo-svelte/blocks/delete-resource";
  let open = $state(false);
  let isDeleting = $state(false);

  async function handleDelete() {
    isDeleting = true;
    await new Promise((resolve) => setTimeout(resolve, 1000));
    isDeleting = false;
    open = false;
  }
</script>

<Button variant="destructive" onclick={() => (open = true)}>Delete Zone</Button>
<DeleteResource
  bind:open
  resourceType="Zone"
  resourceName="example.com"
  onDelete={handleDelete}
  {isDeleting}
/>

Import

DeleteResource is a block: a component you own and can customize. The Svelte package currently exports the block directly.

import { DeleteResource } from "kumo-svelte/blocks/delete-resource";

Usage

<script lang="ts">
  import { Button } from "kumo-svelte/components/button";
  import { DeleteResource } from "kumo-svelte/blocks/delete-resource";
  let open = $state(false);
  let isDeleting = $state(false);

  async function handleDelete() {
    isDeleting = true;
    try {
      await deleteZone("example.com");
      open = false;
    } finally {
      isDeleting = false;
    }
  }
</script>

<Button variant="destructive" onclick={() => (open = true)}>Delete Zone</Button>
<DeleteResource
  bind:open
  resourceType="Zone"
  resourceName="example.com"
  onDelete={handleDelete}
  {isDeleting}
/>

Examples

Worker Deletion

Works with any resource type — just change resourceType and resourceName.

<script lang="ts">
  import { Button } from "kumo-svelte/components/button";
  import { DeleteResource } from "kumo-svelte/blocks/delete-resource";
  let open = $state(false);
  let isDeleting = $state(false);

  async function handleDelete() {
    isDeleting = true;
    await new Promise((resolve) => setTimeout(resolve, 1000));
    isDeleting = false;
    open = false;
  }
</script>

<Button variant="destructive" onclick={() => (open = true)}>Delete Worker</Button>
<DeleteResource
  bind:open
  resourceType="Worker"
  resourceName="api-gateway-worker"
  onDelete={handleDelete}
  {isDeleting}
/>

Error State

Use the errorMessage prop to show an error message.

<script lang="ts">
  import { Button } from "kumo-svelte/components/button";
  import { DeleteResource } from "kumo-svelte/blocks/delete-resource";
  let open = $state(false);
  let isDeleting = $state(false);
  let errorMessage = $state("");

  async function handleDelete() {
    errorMessage = "";
    isDeleting = true;
    await new Promise((resolve) => setTimeout(resolve, 1000));
    isDeleting = false;
    errorMessage = "Something went wrong";
  }
</script>

<Button variant="destructive" onclick={() => (open = true)}>Delete Zone</Button>
<DeleteResource
  bind:open
  resourceType="Zone"
  resourceName="example.com"
  onDelete={handleDelete}
  {isDeleting}
  {errorMessage}
/>

API Reference

PropTypeDefaultDescription
openbooleanfalseControlled open state; supports bind:open.
onOpenChange(open: boolean) => void—Called when the dialog opens or closes.
resourceTypestringrequiredHuman-readable resource type, such as Zone or Worker.
resourceNamestringrequiredExact resource name the user must type.
onDelete() => void \| Promise<void>requiredCalled after the user confirms deletion.
isDeletingbooleanfalseDisables controls and shows loading while deletion is running.
errorMessagestring—Error banner content.
deleteButtonTextstringDelete ${resourceType}Custom destructive button label.
caseSensitivebooleantrueWhether confirmation text comparison is case-sensitive.
sizeKumoDeleteResourceSizedefaultDialog size variant.
classstring—Additional dialog classes.

Usage Notes

Use bind:open to control the dialog. Clipboard copy inside the dialog uses the browser Clipboard API, so headless or restricted browsers may deny copy permission.

On this page

  • Import
  • Usage
  • Examples
    • Worker Deletion
    • Error State
  • API Reference
  • Usage Notes