跳转到内容
Page

Chip

紧凑的标签或筛选项,可设为可移除,也以 Tag 导出。

DefaultFilledSmall outlineTag alias
astroreacttokens
import { Chip, Tag } from "@pelagornis/page/components";

上方预览渲染的就是这个文件。把它复制到 src/components/ 即可开始使用。

src/components/ChipExample.tsx
import { useState } from "react";
import { Chip, Stack, Tag } from "@pelagornis/page/components";
export default function ChipDemo() {
const [filters, setFilters] = useState(["astro", "react", "tokens"]);
return (
<Stack gap="sizeMedium">
<Stack direction="row" gap="sizeSmall" wrap>
<Chip>Default</Chip>
<Chip variant="filled">Filled</Chip>
<Chip variant="outline" size="sm">
Small outline
</Chip>
<Tag variant="outline">Tag alias</Tag>
</Stack>
<Stack direction="row" gap="sizeSmall" wrap>
{filters.map((filter) => (
<Chip key={filter} onRemove={() => setFilters((current) => current.filter((item) => item !== filter))}>
{filter}
</Chip>
))}
</Stack>
</Stack>
);
}

Chip 可以直接写在 .mdx 页面中。在 frontmatter 下方导入即可。它在服务器端渲染,不需要 client 指令。

src/content/docs/example.mdx
---
title: Example
---
import { Chip } from "@pelagornis/page/components";
<Chip variant="filled">Astro</Chip>
<Chip variant="outline" size="sm">React</Chip>

pageMarkdoc() 会为这个组件注册 chip 标签。在 markdoc.config.mjs 中添加一次预设(见在 Markdoc 中使用),就能在任意 .mdoc 页面中使用该标签。

src/content/docs/example.mdoc
{% chip variant="filled" %}Astro{% /chip %}

属性的名称和取值与 React props 相同。

每个 variant prop 可接受的取值。

Prop取值
variantdefault outline filled
sizesm md lg

组件的组成部分,以及每个部分渲染的 data-refineui 角色。

部件角色
rootchip
removechip-remove

组件会设置样式的状态。组件状态通过 data 属性暴露。

类型状态
伪类focus-visible

组件获得焦点时处理的按键。

按键动作
Enteractivate
Spaceactivate