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
Sensitive Input
kumo-svelte

Sensitive Input

A masked input for sensitive values like API keys and passwords. Click to reveal.

•••••••• Click to reveal
Click or press Enter to reveal. Value hidden
<script lang="ts">
  import { SensitiveInput } from "kumo-svelte/components/sensitive-input";
</script>

<div class="w-80">
  <SensitiveInput label="API Key" defaultValue="sk_live_abc123xyz789" />
</div>

Import

import { SensitiveInput } from "kumo-svelte/components/sensitive-input";

Usage

<script lang="ts">
  import { SensitiveInput } from "kumo-svelte/components/sensitive-input";
</script>

<SensitiveInput label="Secret" defaultValue="my-secret-key" />

Sizes

SensitiveInput supports multiple sizes to fit different contexts.

xs
•••••••• Click to reveal
Click or press Enter to reveal. Value hidden
sm
•••••••• Click to reveal
Click or press Enter to reveal. Value hidden
base
•••••••• Click to reveal
Click or press Enter to reveal. Value hidden
lg
•••••••• Click to reveal
Click or press Enter to reveal. Value hidden
<script lang="ts">
  import { SensitiveInput } from "kumo-svelte/components/sensitive-input";
  const sizes = ["xs", "sm", "base", "lg"] as const;
</script>

<div class="flex flex-col gap-4">
  {#each sizes as size}
    <div class="flex items-center gap-2">
      <span class="w-12 text-sm text-kumo-subtle">{size}</span>
      <SensitiveInput label={`${size} size`} {size} defaultValue="secret-api-key-123" />
    </div>
  {/each}
</div>

Controlled

Use controlled mode for full control over the input value.

•••••••• Click to reveal
Click or press Enter to reveal. Value hidden
Current value: my-secret-value
<script lang="ts">
  import { Button } from "kumo-svelte/components/button";
  import { SensitiveInput } from "kumo-svelte/components/sensitive-input";
  let value = $state("my-secret-value");
</script>

<div class="flex w-80 flex-col gap-4">
  <SensitiveInput label="Controlled Secret" {value} onValueChange={(next) => (value = next)} />
  <div class="text-sm text-kumo-subtle">
    Current value: <code class="text-kumo-default">{value}</code>
  </div>
  <div class="flex gap-2">
    <Button onclick={() => (value = `new-secret-${Date.now()}`)} variant="primary" size="sm">Change value</Button>
    <Button onclick={() => (value = "")} variant="secondary" size="sm">Clear</Button>
  </div>
</div>

States

Various input states including error, disabled, read-only, and with description.

•••••••• Click to reveal
Click or press Enter to reveal. Value hidden

This API key is not valid

••••••••
Click or press Enter to reveal. Value hidden
•••••••• Click to reveal
Click or press Enter to reveal. Value hidden
•••••••• Click to reveal
Click or press Enter to reveal. Value hidden

Keep this value secure and don't share it

<script lang="ts">
  import { SensitiveInput } from "kumo-svelte/components/sensitive-input";
</script>

<div class="flex w-80 flex-col gap-4">
  <SensitiveInput label="Error State" variant="error" defaultValue="invalid-key" error="This API key is not valid" />
  <SensitiveInput label="Disabled" defaultValue="cannot-edit" disabled />
  <SensitiveInput label="Read-only" defaultValue="view-only-secret-key" readonly />
  <SensitiveInput
    label="With Description"
    defaultValue="my-secret-value"
    description="Keep this value secure and don't share it"
  />
</div>

API Reference

SensitiveInput

PropTypeDefault
classstring—
defaultValuestring""
descriptionSnippet | string—
errorstring | { message: Snippet | string; match: FieldErrorMatch }—
labelSnippet | string—
labelTooltipSnippet—
onCopy() => void—
onValueChange(value: string) => void—
readonlyboolean | null—
sizeKumoSensitiveInputSizeKUMO_SENSITIVE_INPUT_DEFAULT_VARIANTS.size
valuestringdefaultValue
variantKumoSensitiveInputVariant—

On this page

  • Import
  • Usage
  • Sizes
  • Controlled
  • States
  • API Reference
    • SensitiveInput