feat(web): add Auto review shield-A permission icon

This commit is contained in:
Turtle committed 2026-10-09 15:40:16 +08:00
1 parent e9292ba398
commit 29b89df1b8
7 files changed
+35 -6

No files matched your search

@@ -2,7 +2,7 @@ import { useEffect, useState } from 'react'
import type { ReactNode } from 'react'
import clsx from 'clsx'
import {
IconChevronDownOutlineRegular, Menu, PermissionIconFullAccessRegular,
IconChevronDownOutlineRegular, Menu, PermissionIconAutoReviewRegular, PermissionIconFullAccessRegular,
PermissionIconReadOnlyRegular, PermissionIconWorkspaceWriteRegular, RiskConfirmation,
} from '@deepseek-ai/dsh-client-ui-primitives'
import type { MenuEntry } from '@deepseek-ai/dsh-client-ui-primitives'
@@ -29,7 +29,7 @@ const permissionGlyphs = new Map<string, ReactNode>([
['read-only', <PermissionIconReadOnlyRegular />],
['workspace-write', <PermissionIconWorkspaceWriteRegular />],
[FULL_ACCESS, <PermissionIconFullAccessRegular />],
[AUTO_REVIEW, <PermissionIconFullAccessRegular />],
[AUTO_REVIEW, <PermissionIconAutoReviewRegular />],
])
/** Glyph for a permission option value; host-configured names outside the design set get none. */
@@ -18,8 +18,8 @@
en: 7bae72c97d0449f5
zh: 4589ecc2b216edc5
/deepseek-ai-dsh-client-ui-primitives/use-this-package/component-catalog:
en: b9ef1bec616d1038
zh: 51db8274f3a432fc
en: eb1d57b0d5851435
zh: 2789bf9b1e478905
/deepseek-ai-dsh-client-ui-primitives/use-this-package/controls-and-icons:
en: f0e54915b896af5a
zh: 2047520fd321be90
+1 -1
View File
@@ -69,7 +69,7 @@ Check this table before writing a control in a feature package. A plugin cannot
| `CommandText` | Selectable command or argument text; only horizontal overflow adds a named keyboard focus target. |
| `TerminalBlock`, `ReadBlock`, `DiffBlock`, `SearchBlock`, `WebBlock` | The agent-output card matching each tool-result intent. |
| `icons/*`, `FishLogo`, `BrandWordmark`, `ReferenceIconRegular`/`ReferenceIconMedium`, `LinkIconRegular`/`LinkIconMedium` | Glyphs and brand marks. The thinking glyph keeps an inset orbit within its 16px view box. Use `LinkIconMedium` for 14px clickable-link categories and known-site marks. |
| `PermissionIconReadOnlyRegular`/`Medium`, `PermissionIconWorkspaceWriteRegular`/`Medium`, `PermissionIconFullAccessRegular`/`Medium` | Permission-mode glyphs for read-only, workspace-write, and full-access choices. |
| `PermissionIconReadOnlyRegular`/`Medium`, `PermissionIconWorkspaceWriteRegular`/`Medium`, `PermissionIconFullAccessRegular`/`Medium`, `PermissionIconAutoReviewRegular`/`Medium` | Permission-mode glyphs for read-only, workspace-write, full-access, and auto-review choices. |
| `PluginArtworkTerminal`/`Loop`/`Subagent`/`Search`/`Default` | Fixed-palette 36×36 plugin artwork; `Terminal` supplies the light-blue prompt in plugin cards and sidebar guide entries. `Default` marks plugins without artwork of their own. Def ids are per-instance, so the same artwork repeats safely on one page. |
| `GuideArtworkBrowser`/`Files` | Fixed-palette 36×36 browser and folder artwork for sidebar guide entries. |
| `FileTypeIcon`, `classifyFileType`, `fileExtension` | A category-colored 28px file or folder glyph and the shared case-insensitive filename mapping behind it. Code and configuration files use detailed full-color technology glyphs; use `LinkIconMedium` for link-leading glyphs and image previews for image content. |
+1 -1
View File
@@ -69,7 +69,7 @@ kind: "package-library"
| `CommandText` | 可选中的命令或参数文本;仅横向溢出时添加具名的键盘聚焦目标。 |
| `TerminalBlock`、`ReadBlock`、`DiffBlock`、`SearchBlock`、`WebBlock` | 与各类工具结果意图对应的 agent 输出卡片。 |
| `icons/*`、`FishLogo`、`BrandWordmark`、`ReferenceIconRegular`/`ReferenceIconMedium`、`LinkIconRegular`/`LinkIconMedium` | 字形与品牌标识。思考图标的轨道在 16px 视口内保留内边距。`LinkIconMedium` 用于 14px 的可点击链接分类及已知站点标记。 |
| `PermissionIconReadOnlyRegular`/`Medium`、`PermissionIconWorkspaceWriteRegular`/`Medium`、`PermissionIconFullAccessRegular`/`Medium` | 只读、工作区写入与完全访问选项使用的权限模式图形。 |
| `PermissionIconReadOnlyRegular`/`Medium`、`PermissionIconWorkspaceWriteRegular`/`Medium`、`PermissionIconFullAccessRegular`/`Medium`、`PermissionIconAutoReviewRegular`/`Medium` | 只读、工作区写入、完全访问与自动审查选项使用的权限模式图形。 |
| `PluginArtworkTerminal`/`Loop`/`Subagent`/`Search`/`Default` | 固定配色的 36×36 插件插画;`Terminal` 为插件卡片和侧边栏开始页入口提供浅蓝色提示符。`Default` 用于没有自有插画的插件。def id 按实例生成,同一插画可在一页中安全重复。 |
| `GuideArtworkBrowser`/`Files` | 固定配色的 36×36 浏览器与文件夹插画,用于侧栏引导入口。 |
| `FileTypeIcon`、`classifyFileType`、`fileExtension` | 按类别着色的 28px 文件或文件夹图形,以及它背后共享的不区分大小写文件名映射。代码与配置文件使用细分的全彩技术图形;链接前置图形使用 `LinkIconMedium`,图片内容使用图片预览。 |
@@ -37,6 +37,15 @@ function FullAccessArtwork({ size = 16, className, strokeWidth }: PermissionIcon
)
}
function AutoReviewArtwork({ size = 16, className, strokeWidth }: PermissionIconArtworkProps): ReactNode {
return (
<svg width={size} height={size} className={className} viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" strokeWidth={strokeWidth}>
<path d="M6.59624 2.14853C7.50155 1.80917 8.49914 1.80919 9.40444 2.14859L13.9245 3.84317V7.11961C13.9245 11.6089 10.5565 13.5975 8.00035 14.5779C5.44423 13.5975 2.07544 11.6089 2.07544 7.11961V3.84317L6.59624 2.14853Z" stroke="currentColor" strokeLinejoin="round" />
<path d="M5.75 9.9L8 4.7L10.25 9.9M6.43 8.34H9.57" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
</svg>
)
}
/**
* Render the read-only permission icon with a one-pixel stroke.
* @param props - Size and optional class.
@@ -90,3 +99,21 @@ export function PermissionIconFullAccessRegular(props: IconProps): ReactNode {
export function PermissionIconFullAccessMedium(props: IconProps): ReactNode {
return <FullAccessArtwork {...props} strokeWidth={ICON_MEDIUM_STROKE} />
}
/**
* Render the auto-review permission icon with a one-pixel stroke.
* @param props - Size and optional class.
* @returns The regular decorative permission glyph.
*/
export function PermissionIconAutoReviewRegular(props: IconProps): ReactNode {
return <AutoReviewArtwork {...props} strokeWidth={ICON_REGULAR_STROKE} />
}
/**
* Render the auto-review permission icon with a 1.3px stroke.
* @param props - Size and optional class.
* @returns The medium decorative permission glyph.
*/
export function PermissionIconAutoReviewMedium(props: IconProps): ReactNode {
return <AutoReviewArtwork {...props} strokeWidth={ICON_MEDIUM_STROKE} />
}
@@ -46,6 +46,7 @@ export { FishLogo, FISH_LOGO_PATH, FISH_LOGO_VIEWBOX } from './FishLogo.tsx'
export { BrandWordmark } from './BrandWordmark.tsx'
export type { BrandWordmarkProps } from './BrandWordmark.tsx'
export {
PermissionIconAutoReviewMedium, PermissionIconAutoReviewRegular,
PermissionIconFullAccessMedium, PermissionIconFullAccessRegular,
PermissionIconReadOnlyMedium, PermissionIconReadOnlyRegular,
PermissionIconWorkspaceWriteMedium, PermissionIconWorkspaceWriteRegular,
@@ -82,6 +82,7 @@ describe('product icon set', () => {
[primitives.PermissionIconReadOnlyRegular, primitives.PermissionIconReadOnlyMedium],
[primitives.PermissionIconWorkspaceWriteRegular, primitives.PermissionIconWorkspaceWriteMedium],
[primitives.PermissionIconFullAccessRegular, primitives.PermissionIconFullAccessMedium],
[primitives.PermissionIconAutoReviewRegular, primitives.PermissionIconAutoReviewMedium],
] as const
for (const [Regular, Medium] of pairs) {
const regular = render(<Regular />)