For AI agents: the complete documentation index is available at https://ifhover.github.io/leaf-ui/v/0.6.0/llms.txt, the full documentation bundle is available at https://ifhover.github.io/leaf-ui/v/0.6.0/llms-full.txt, and this page is available as Markdown at https://ifhover.github.io/leaf-ui/v/0.6.0/components/color-picker.md.
  • 简体中文
  • ColorPicker 颜色选择器

    选择颜色,为内容和品牌增添个性。

    选择颜色

    点击色块、颜色文字或整行空白区域即可打开选择浮层。

    当前颜色:#20834a
    basic.tsx
    import { ColorPicker, Space, Text } from '@ifhover/leaf-ui';
    
    import { useState } from 'react';
    
    export function ColorPickerBasic() {
      const [color, setColor] = useState('#20834a');
      return (
        <Space direction="vertical" align="start">
          <ColorPicker value={color} onChange={setColor} showText aria-label="品牌颜色" />
          <Text tone="muted">当前颜色:{color}</Text>
        </Space>
      );
    }
    

    颜色格式与透明度

    HEX
    RGB · 半透明
    HSL · 不透明
    formats.tsx
    import { ColorPicker, Flex, Text } from '@ifhover/leaf-ui';
    
    export function ColorPickerFormats() {
      return (
        <Flex gap="md" align="center" wrap justify="center">
          <Flex direction="column" gap="sm" align="start">
            <Text>HEX</Text>
            <ColorPicker defaultValue="#1677ff" showText />
          </Flex>
          <Flex direction="column" gap="sm" align="start">
            <Text>RGB · 半透明</Text>
            <ColorPicker defaultValue="rgba(118, 84, 198, 0.6)" defaultFormat="rgb" showText />
          </Flex>
          <Flex direction="column" gap="sm" align="start">
            <Text>HSL · 不透明</Text>
            <ColorPicker defaultValue="hsl(35, 91%, 55%)" defaultFormat="hsl" disableAlpha showText />
          </Flex>
        </Flex>
      );
    }
    

    预设与状态

    自定义预设 · 可清除
    禁用
    presets.tsx
    import type { ColorPreset } from '@ifhover/leaf-ui';
    
    import { ColorPicker, Flex, Text } from '@ifhover/leaf-ui';
    
    const presets: readonly ColorPreset[] = [
      { label: '品牌颜色', colors: ['#20834a', '#1677ff', '#7654c6', '#f49b23'] },
      { label: '中性色', colors: ['#203329', '#6c7c71', '#dce5de', '#ffffff'] },
    ];
    
    export function ColorPickerPresets() {
      return (
        <Flex gap="md" align="center" wrap justify="center">
          <Flex direction="column" gap="sm" align="start">
            <Text>自定义预设 · 可清除</Text>
            <ColorPicker presets={presets} allowClear showText />
          </Flex>
          <Flex direction="column" gap="sm" align="start">
            <Text>禁用</Text>
            <ColorPicker disabled defaultValue="#1677ff" showText />
          </Flex>
        </Flex>
      );
    }
    

    渐变色

    纯色
    渐变:选择、添加或移除色标
    capabilities.tsx
    import { ColorPicker, Flex, Space, Text } from '@ifhover/leaf-ui';
    
    export function Capabilities() {
      return (
        <Space>
          <Flex direction="column" gap="sm" align="center">
            <Text>{'纯色'}</Text>
            <ColorPicker showText />
          </Flex>
          <Flex direction="column" gap="sm" align="center">
            <Text>
              {'渐变:选择、添加或移除色标'}
            </Text>
            <ColorPicker
              mode="gradient"
              showText
              defaultValue="linear-gradient(90deg, #20834a 0%, #83cf9e 100%)"
            />
          </Flex>
        </Space>
      );
    }
    

    ColorPicker API

    属性类型默认值说明
    popupPlacement'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | 'left-start' | 'left-end' | 'right' | 'right-start' | 'right-end'—浮层相对触发控件的位置。
    popupClassNamestring—浮层的自定义类名。
    popupStyleCSSProperties—浮层的自定义样式。
    popupRender(content: ReactNode) => ReactNode—包装或补充面板内容,保留传入的内容以维持交互。
    getPopupContainer() => Element | DocumentFragment—返回浮层的挂载容器,也可返回 ShadowRoot。
    valuestring'#20834a'受控颜色 / 初始颜色,可使用 HEX、RGB、HSL 或 CSS 命名颜色
    defaultValuestring'#20834a'受控颜色 / 初始颜色,可使用 HEX、RGB、HSL 或 CSS 命名颜色
    onChange(color: string) => void—实时变化 / 一次调色操作结束;清除时返回空字符串
    onChangeComplete(color: string) => void—实时变化 / 一次调色操作结束;清除时返回空字符串
    format'hex' | 'rgb' | 'hsl''hex'颜色文字格式;渐变模式应用于每个色标。
    defaultFormat'hex' | 'rgb' | 'hsl''hex'初始颜色文字格式。
    onFormatChange(format: 'hex' | 'rgb' | 'hsl') => void—颜色文字格式变化时调用。
    disableAlphabooleanfalse隐藏透明度并输出不透明颜色
    showTextboolean | ((color: string) => ReactNode)false展示颜色文字或自定义文字
    allowClearbooleanfalse允许清除颜色
    presetsreadonly ColorPreset[]内置颜色预设的颜色分组。
    size'sm' | 'md' | 'lg''md'触发控件尺寸
    status'error' | 'warning'—校验反馈
    requiredbooleanfalse要求整体值非空,复合控件只校验一次。
    readOnlyboolean—锁定业务值,禁止输入、选择、清除和删除。
    popupWidthnumber | string280浮层宽度
    onOpenChange(open: boolean) => void—展开状态变化
    gradientbooleanfalse启用渐变颜色选择。
    mode'solid' | 'gradient'—选择展示或编辑模式。
    openboolean—控制面板是否展开。
    defaultOpenboolean—面板初始展开状态。
    disabledbooleanfalse禁用交互。
    namestring—原生 FormData 中的字段名。
    formstring—关联的原生表单 ID。

    ColorPreset

    属性类型默认值说明
    labelReactNode—必需。分组标题
    colorsreadonly string[]—必需。该组的颜色值

    类型

    可导入以下类型定义属性、组装数据或处理回调。

    import type { ColorPickerProps, ColorPreset } from '@ifhover/leaf-ui';

    使用说明

    颜色值以字符串传递,开启透明度时 HEX 可能为 8 位。格式切换不会修改已提交值,下一次调色按所选格式输出。拖动时触发 onChange,释放指针、键盘调整、输入提交或选择预设时触发 onChangeComplete。

    调色区域支持方向键,按住 Shift 加大调整幅度;左右调整饱和度,上下调整亮度。颜色输入通过 Enter 或移走焦点提交,无效输入保留错误提示。支持 FormData、必填校验与非受控表单 reset;受控字段需同步重置自己的值。

    ColorGradient

    属性类型默认值说明
    anglenumber—必需。渐变角度,单位为度。
    stopsreadonly ColorGradientStop[]—必需。渐变中的色标。

    ColorGradientStop

    属性类型默认值说明
    keystring—稳定且唯一的标识。
    colorstring—必需。颜色或语义色。
    offsetnumber—必需。偏移量;色标为 0–100 的百分比。