Blackwork

小工具

语言切换、搜索、社交链接和排版等小工具。

小工具

按职责组合小工具:语言和主题控件放在页头,搜索组件负责输入查询,ScrollToTop 放在长内容页。路由跳转和搜索索引逻辑仍由应用接入。

语言切换、搜索入口、社交链接和回到顶部是内容站常用的功能。Blackwork 将这些功能做成独立组件,可以按页面需要组合。

例如,LanguageToggle 和 SocialLinks 可以放进 LayoutHeader,ScrollToTop 则放在页面中供长文阅读时使用。

适用场景

  • 页头切换语言
  • 搜索框或命令面板入口
  • GitHub、X、RSS 等品牌图标
  • 字号层级一致的标题和正文

通用图标使用 lucide-react,见 图标。Blackwork 内置的品牌图标通过 SocialLink 使用。

语言切换

options 传入单个选项时显示按钮,传入数组时显示下拉菜单。语言切换后的路由跳转由应用处理,在各选项的 onClick 中配置即可。

语言切换

LanguageToggle

属性类型默认值说明
options必填LanguageToggleOption | LanguageToggleOption[]—传入单个选项时显示按钮,传入数组时显示下拉菜单。
defaultValuestring—当前语言,用于选择触发器图标。
titlestring—触发按钮的提示文字。
ariaLabelstring—无障碍名称,默认使用 title。

搜索输入

SearchInput 提供带搜索图标的输入框样式,查询、提交或过滤逻辑由应用接入。

搜索框

SearchInput

属性类型默认值说明
placeholderstring"Search..."输入框的占位文字。
inputRefRefObject<HTMLInputElement>—内部 input 的 ref。
inputClassNamestring—内部 input 元素的类名。
searchIconClassNamestring—搜索图标的类名。

社交链接

社交链接

SocialLink

属性类型默认值说明
type必填"github" | "x" | "twitter" | "instagram" | "zhihu" | "rss"—内置品牌图标,其他类型不会显示内容。
link必填string—目标 URL,会在新标签页打开。
labelstring—提示文字,默认使用品牌名称。
ariaLabelstring—无障碍名称,默认是 Visit {label} in a new tab。

回到顶部

ScrollToTop 默认固定在视口右下角。使用时设置 ariaLabel,为图标按钮提供无障碍名称。

回到顶部

ScrollToTop

属性类型默认值说明
titlestring—按钮的提示文字。
ariaLabelstring—纯图标按钮的无障碍名称。
variantButton variant"ghost"原样传给 Button。

排版

Heading 的 level 对应 h1–h4。Paragraph 是配套的正文样式。

排版

Section title

Body copy for a content page.

Heading

属性类型默认值说明
level1 | 2 | 3 | 41显示 h1 至 h4,并使用对应的字号层级。

外链

ExternalLink 在新标签页打开链接,并带上 rel="nofollow noopener noreferrer"。

外部链接

快捷搜索

QuickSearchDialog 等组件用于组合搜索对话框,useQuickSearchState 支持通过 ⌘K / Ctrl+K 切换打开状态。本站页头搜索也使用这组组件。下面的预览通过按钮控制打开状态,避免与本站的搜索快捷键冲突。

快速搜索

说明

  • SocialLink 支持的 type 为 github、x、twitter、instagram、zhihu、rss。
  • ScrollToTop 默认使用 position: fixed。需要将其展示在局部预览容器中时,可通过 className 覆盖定位样式。

玻璃外观

玻璃页头中的控件设置 variant="glass";页头材质和快捷搜索弹窗的用法见 液态玻璃。