Sensitive Input
@cloudflare/kumo
Click or press Enter to reveal.Value hidden
import { SensitiveInput } from "@cloudflare/kumo";

export function SensitiveInputDemo() {
  return (
    <div className="w-80">
      <SensitiveInput label="API Key" defaultValue="sk_live_abc123xyz789" />
    </div>
  );
}

安装

桶式导出

import { SensitiveInput } from "@cloudflare/kumo";

细粒度导入

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

用法

import { SensitiveInput } from "@cloudflare/kumo";

export default function Example() {
  return <SensitiveInput label="Secret" defaultValue="my-secret-key" />;
}

尺寸

SensitiveInput 支持多种尺寸,以适应不同使用场景。

xs
Click or press Enter to reveal.Value hidden
sm
Click or press Enter to reveal.Value hidden
base
Click or press Enter to reveal.Value hidden
lg
Click or press Enter to reveal.Value hidden
import { SensitiveInput } from "@cloudflare/kumo";

export function SensitiveInputSizesDemo() {
  const sizes = ["xs", "sm", "base", "lg"] as const;
  return (
    <div className="flex flex-col gap-4">
      {sizes.map((size) => (
        <div key={size} className="flex items-center gap-2">
          <span className="w-12 text-sm text-kumo-subtle">{size}</span>
          <SensitiveInput
            label={`${size} size`}
            size={size}
            defaultValue="secret-api-key-123"
          />
        </div>
      ))}
    </div>
  );
}

受控模式

使用受控模式可完全控制输入值。

Click or press Enter to reveal.Value hidden
Current value: my-secret-value
import { useState } from "react";
import { SensitiveInput, Button } from "@cloudflare/kumo";

export function SensitiveInputControlledDemo() {
  const [value, setValue] = useState("my-secret-value");

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

状态

各种输入状态,包括错误、禁用、只读, 以及带描述。

Click or press Enter to reveal.Value hidden
This API key is not valid
Click or press Enter to reveal.Value hidden
Click or press Enter to reveal.Value hidden
Click or press Enter to reveal.Value hidden

Keep this value secure and don't share it

import { SensitiveInput } from "@cloudflare/kumo";

export function SensitiveInputStatesDemo() {
  return (
    <div className="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 参考

PropTypeDefaultDescription
altstring--
autoCompleteReact.HTMLInputAutoCompleteAttribute--
checkedboolean--
disabledboolean--
heightnumber | string--
liststring--
namestring--
placeholderstring--
readOnlyboolean--
requiredboolean--
widthnumber | string--
classNamestring--
idstring--
langstring--
titlestring--
childrenReactNode--
valuestring-

受控值

size"xs" | "sm" | "base" | "lg""base"

输入框的大小。

  • "xs" — 适用于紧凑 UI 的额外小尺寸
  • "sm" — 适用于次要字段的小尺寸
  • "base" — 默认输入框大小
  • "lg" — 适用于突出字段的大尺寸
variant"default" | "error""default"

输入的样式变体。

  • "default" — 默认输入外观
  • "error" — 验证失败的错误状态
labelReactNode-

输入框的标签内容(启用 Field 包装器并设置掩码状态标签)— 可以是字符串或任意 React 节点。

labelTooltipReactNode-

通过信息图标显示在标签旁边的 Tooltip 内容。

descriptionReactNode-

显示在输入框下方的帮助文本

errorstring | object-

错误消息或验证错误对象