@alga-psa/ui-kit

中文文档
0.2.0发布于 2026/02/25TypeScriptES Module近 30 天下载 1.9万

用于 Alga 扩展的零依赖性 React 组件库 。 所有组件都使用CSS自定义属性用于主题,并在扩展iframes内部无缝工作.

中文使用文档
文档目录13 节
  1. 安装
  2. 主题键
  3. 构成部分
  4. 核心
  5. 表单
  6. 数据显示
  7. 导航
  8. 版式
  9. 反馈
  10. 钩子
  11. useTheme()
  12. applyThemeVars(vars)
  13. 扩展主题桥

@alga-psa/ ii- kit

用于 Alga 扩展的零依赖性 React 组件库 。 所有组件都使用CSS自定义属性用于主题,并在扩展iframes内部无缝工作.

见 显示扩展名 (单位:千美元)ee/extensions/showcase用于每个组件的交互式演示.

安装

在您的应用程序根部导入主题样式表 :

import '@alga-psa/ui-kit/theme.css';

主题键

Tokens作为CSS变量被曝光. 在扩展框内运行时,主机将自动注入 :root。 。 。 .

变量光线阴暗目的
--alga-bg#ffffff#0b0f14背景情况
--alga-fg#111111#e5e7eb前景/ 文本
--alga-muted#f5f5f7#0f1720静音背景
--alga-muted-fg#4b5563#9ca3af静音文本
--alga-primary#9855ee#8a4dea小学(布尔)
--alga-primary-foreground#ffffff#ffffff关于小学的案文
--alga-secondary#53d7fa#40cff9中学(蓝色)
--alga-secondary-foreground#111111#0b0f14关于中学的案文
--alga-border#e5e7eb#1f2937边框
--alga-radius8px8px边界半径
--alga-danger#dc2626#ef4444危险/ 错误
--alga-warning#d97706#f59e0b3⁄4 ̄ ̧漯B
--alga-success#16a34a#22c55e成绩

您也可以在程序上访问符号 :

import { tokens } from '@alga-psa/ui-kit';

tokens.primary   // 'var(--alga-primary)'
tokens.bg        // 'var(--alga-bg)'

构成部分

核心

Button

有多个变体和大小的Themed按钮.

Prop类型默认说明
variant'primary' | 'secondary' | 'destructive' | 'outline' | 'ghost' | 'link' | 'soft' | 'dashed''primary'视觉风格
size'xs' | 'sm' | 'md' | 'lg' | 'icon''md'控制粘贴和字体大小
<Button variant="secondary" size="sm">Save</Button>

Text

有大小、音调和重量预置的打字组件.

Prop类型默认说明
as'span' | 'p' | 'label' | 'strong''span'要渲染的 HTML 元素
size'xs' | 'sm' | 'md' | 'lg''md'字体大小预设
tone'default' | 'muted' | 'danger' | 'warning' | 'success''default'文本颜色
weight400 | 500 | 600 | 700400字体重量
<Text as="p" size="lg" tone="muted" weight={600}>Hello</Text>

Card

相接的容器有背景,阴影和圆角. 扩展标准 <div> 属性.

<Card style={{ padding: 24 }}>Content here</Card>

Badge

小丸形标签,用于状态指标.

Prop类型默认说明
tone'default' | 'info' | 'success' | 'warning' | 'danger''default'颜色方案
<Badge tone="success">Active</Badge>

Alert, (中文(简体) ), AlertTitle, (中文(简体) ), AlertDescription

带有可选图标的上下文提醒旗.

Prop类型默认说明
tone'info' | 'success' | 'warning' | 'danger''info'视觉音色
showIconbooleantrue显示特定音色图标
<Alert tone="warning">
  <AlertTitle>Heads up</AlertTitle>
  <AlertDescription>This action cannot be undone.</AlertDescription>
</Alert>

Separator

区分内容的细分线 .

Prop类型默认说明
orientation'horizontal' | 'vertical''horizontal'线路方向
styleCSSProperties—— 说其他内线样式

表单

Input

带有错误状态支持的文本输入 .

Prop类型默认说明
errorboolean—— 说显示出错的样式
errorMessagestring—— 说输入下显示出错消息
<Input placeholder="Email" error={!!err} errorMessage={err} />

TextArea

多行文字输入. 扩展 <textarea> 属性.

Prop类型默认说明
errorboolean—— 说显示出错边框
errorMessagestring—— 说字段以下出错文本
resize'none' | 'vertical' | 'horizontal' | 'both''vertical'调整行为大小

CustomSelect

随搜索过滤而下降 .

Prop类型默认说明
optionsSelectOption[]—— 说可用选项
valuestring—— 说选中值
onChange(value: string) => void—— 说更改回调
placeholderstring—— 说占位符文本
searchablebooleantrue启用搜索过滤
disabledbooleanfalse禁用选中内容

SearchInput

输入内置搜索图标和可选调出.

Prop类型默认说明
onSearch(value: string) => void—— 说跳出搜索回调
debounceMsnumber300省略延迟 ms
size'sm' | 'md''md'输入大小

Checkbox

带有标签的Themed复选框.

Prop类型默认说明
labelstring—— 说标签文本
size'sm' | 'md' | 'lg''md'大小预设

RadioGroup

一组相互排斥的无线电按钮.

Prop类型默认说明
optionsRadioOption[]—— 说可用选项
valuestring—— 说选中值
onChange(value: string) => void—— 说更改回调
namestring自动HTML 名称属性
disabledbooleanfalse禁用所有选项
orientation'horizontal' | 'vertical''vertical'布局方向
size'sm' | 'md' | 'lg''md'大小预设

RadioOption数字 : { value: string; label: string; disabled?: boolean }

<RadioGroup
  options={[{ value: 'a', label: 'Alpha' }, { value: 'b', label: 'Beta' }]}
  value={selected}
  onChange={setSelected}
/>

Switch

切换布尔值切换 .

Prop类型默认说明
checkedboolean—— 说控制状态
onChange(checked: boolean) => void—— 说更改回调
size'sm' | 'md' | 'lg''md'大小预设
disabledbooleanfalse禁用开关
labelstring—— 说标签文本

Label

样式 <label> 键.

Prop类型默认说明
requiredboolean—— 说显示需要的指标
disabledboolean—— 说应用变形器

数据显示

DataTable

配有排序、搜索和自定义单元格渲染的平面表.

Prop类型默认说明
dataRow[]—— 说行对象矩阵
columnsColumn<Row>[]—— 说栏定义
initialSortKeystring—— 说初始排序栏
searchablebooleanfalse显示搜索输入
pageSizenumber10每页行数

Column<Row>数字 : { key: string; header: string; width?: number; sortable?: boolean; render?: (row) => ReactNode }

<DataTable
  data={items}
  columns={[
    { key: 'name', header: 'Name', sortable: true },
    { key: 'status', header: 'Status', render: (row) => <Badge>{row.status}</Badge> },
  ]}
/>

导航

Tabs

水平标签栏 .

Prop类型默认说明
tabsTabItem[]—— 说标签定义
activeTabstring—— 说当前活动的标签 ID
onChange(id: string) => void—— 说标签更改回调

TabItem数字 : { id: string; label: string; icon?: ComponentType; disabled?: boolean }

<Tabs
  tabs={[{ id: 'one', label: 'Tab 1' }, { id: 'two', label: 'Tab 2' }]}
  activeTab={tab}
  onChange={setTab}
/>

ViewSwitcher

在视图间切换的分块按钮组 .

Prop类型默认说明
currentViewT—— 说活动视图值
onChange(view: T) => void—— 说查看更改回调
optionsViewSwitcherOption<T>[]—— 说现有意见

ViewSwitcherOption<T>数字 : { value: T; label: string; icon?: ComponentType }

<ViewSwitcher
  currentView={view}
  onChange={setView}
  options={[{ value: 'list', label: 'List' }, { value: 'grid', label: 'Grid' }]}
/>

Breadcrumbs

水平面包屑导航道.

Prop类型默认说明
itemsBreadcrumbItem[]—— 说面包屑片段
separatorReactNode'/'自定义分隔符

BreadcrumbItem数字 : { label: ReactNode; href?: string; onClick?: () => void }

<Breadcrumbs items={[
  { label: 'Home', href: '/' },
  { label: 'Settings', onClick: goSettings },
  { label: 'Profile' },
]} />

DropdownMenu

由按钮触发的弹出式菜单 .

Prop类型默认说明
triggerReactNode—— 说触发元素
itemsDropdownMenuItem[]—— 说菜单项目

DropdownMenuItem数字 : { label: string; onClick?: () => void; icon?: ComponentType; danger?: boolean; disabled?: boolean; separator?: boolean }


版式

Stack

Flexbox 排版帮助器,用于堆放具有一致间隔的孩子.

Prop类型默认说明
direction'row' | 'column''column'弹性方向
gapnumber | string8儿童之间的差距(数目=px)
align'stretch' | 'flex-start' | 'center' | 'flex-end' | 'baseline'—— 说横轴对齐
justify'flex-start' | 'center' | 'flex-end' | 'space-between' | 'space-around' | 'space-evenly'—— 说主轴对齐
<Stack direction="row" gap={12} align="center">
  <Text>Left</Text>
  <Button>Right</Button>
</Stack>

Drawer

滑入面板从右边缘取出,并带有焦点陷阱和覆盖.

Prop类型默认说明
openboolean—— 说抽屉是否打开
onClose() => void—— 说关闭回调
widthstring'fit-content'CSS 宽度
maxWidthstring'60vw'最大宽度
titleReactNode—— 说绘图标题
overlaybooleantrue显示背景覆盖
closeOnOverlayClickbooleantrue关闭覆盖点击
closeOnEscapebooleantrue关闭退出密钥

Dialog 编号 : ConfirmDialog

模块对话框 .

对话框 所有权和儿童的基本模式.

Prop类型默认说明
isOpenboolean—— 说打开状态
onClose() => void—— 说关闭回调
titlestring—— 说对话框标题

确认拨号 - 确认/取消模式.

Prop类型默认说明
isOpenboolean—— 说打开状态
titlestring—— 说标题
messagestring—— 说文本正文
variant'default' | 'danger''default'视觉音色
onConfirm() => void—— 说确认回调
onCancel() => void—— 说取消回调
<ConfirmDialog
  isOpen={open}
  title="Delete Item"
  message="Are you sure?"
  variant="danger"
  onConfirm={handleDelete}
  onCancel={() => setOpen(false)}
/>

Popover

定位内容弹出到触发元素中 .

Prop类型默认说明
triggerReactNode—— 说触发元素
openboolean—— 说控制开放状态
onOpenChange(open: boolean) => void—— 说打开状态回调
placement'top' | 'bottom' | 'left' | 'right''bottom'弹出后安置

反馈

Spinner 编号 : LoadingIndicator

旋转器 ——动画循环装入指标.

Prop类型默认说明
size'button' | 'xs' | 'sm' | 'md' | 'lg''md'数字预设
variant'default' | 'inverted''default'使用 'inverted' 颜色背景

装入指标 带有任择文本的旋转器.

Prop类型默认说明
size与斯宾纳相同'md'旋转器大小
textstring—— 说旋转器旁边的标签
layout'inline' | 'stacked''inline'文本位置
<Spinner size="sm" />
<LoadingIndicator text="Loading..." layout="stacked" />

Tooltip

寄托在孩子们身上.

Prop类型默认说明
contentReactNode—— 说工具提示内容
placement'top' | 'bottom' | 'left' | 'right''top'职位
delaynumber200显示延迟 MS
<Tooltip content="More info">
  <Button variant="ghost">?</Button>
</Tooltip>

Progress

水平进度栏 .

Prop类型默认说明
valuenumber—— 说现值( 0- 100)
maxnumber100最大值
size'sm' | 'md' | 'lg''md'栏高
tone'primary' | 'success' | 'warning' | 'danger''primary'边框颜色
<Progress value={75} tone="success" />

Skeleton 编号 : SkeletonText 编号 : SkeletonCircle 编号 : SkeletonRectangle

占位符加载形状 .

Prop类型默认说明
widthstring | number'100%'宽度
heightstring | number'1em'高度
variant'text' | 'circular' | 'rectangular''text'形状
animation'pulse' | 'wave' | 'none''pulse'动画类型
linesnumber3行数( 文本变体)
<SkeletonText lines={3} />
<SkeletonCircle width={40} height={40} />

钩子

useTheme()

回返 { setMode, getMode } 用于读取和设置当前主题模式( e)'light' | 'dark') (中文(简体) ).

import { useTheme } from '@alga-psa/ui-kit';

const { setMode, getMode } = useTheme();
setMode('dark');

applyThemeVars(vars)

应用 a Record<string, string> cSS 自定义属性值到文档根.

import { applyThemeVars } from '@alga-psa/ui-kit';

applyThemeVars({ 'alga-primary': '#ff6600' });

扩展主题桥

对于在 iframes 中运行的扩展,请使用内置主题桥接收主机主题变量 :

import { applyThemeVars } from '@alga-psa/ui-kit';

window.addEventListener('message', (ev) => {
  const data = ev.data;
  if (data?.alga === true && data?.version === '1' && data?.type === 'theme') {
    applyThemeVars(data.payload || {});
  }
});

// Signal readiness to the host
window.parent.postMessage({ alga: true, version: '1', type: 'ready' }, '*');

版本与发布记录

@alga-psa/ui-kit 共发布 2 个版本,首次发布于 2025/09/02;过去 12 个月发布了 1 个版本。

版本发布日期距今
0.2.0latest2026/02/258 个月前
0.1.02025/09/021.2 年前

关于 @alga-psa/ui-kit 的常见问题

@alga-psa/ui-kit 是什么?

用于 Alga 扩展的零依赖性 React 组件库 。 所有组件都使用CSS自定义属性用于主题,并在扩展iframes内部无缝工作.

如何安装 @alga-psa/ui-kit?

在项目目录运行 npm install @alga-psa/ui-kit,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react(^18 || ^19)、react-dom(^18 || ^19)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@alga-psa/ui-kit 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@alga-psa/ui-kit 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@alga-psa/ui-kit 可以商用吗?

@alga-psa/ui-kit 使用 未声明 许可。package.json 没有声明许可证。没有许可证的代码默认保留全部权利,商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括,不构成法律意见,请以许可原文为准。

@alga-psa/ui-kit 的下载量有多少?

根据 npm 官方下载统计,@alga-psa/ui-kit 在 2026/10/06 – 2026/11/04 这 30 天内被下载 18,673 次,日均约 622 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@alga-psa/ui-kit 还在维护吗?

最新版本 0.2.0 发布于 2026/02/25(8 个月前);至今共发布 2 个版本,其中过去 12 个月发布了 1 个;首次发布于 2025/09/02。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。