@agilek/cli-loaders

中文文档
1.1.0发布于 2026/03/22MITTypeScriptESM + CJS零依赖近 30 天下载 4.3万

盲文单码自旋器作为回放装饰组件

中文使用文档
文档目录24 节
  1. 特征
  2. 为什么要装货?
  3. 安装
  4. 快开始
  5. 构成部分
  6. <Spinner>
  7. <SpinnerInline>
  8. <SpinnerText>
  9. <SpinnerBadge>
  10. <SpinnerTrail>
  11. <SpinnerButton>
  12. <SpinnerOverlay>
  13. <SpinnerProvider>
  14. useSpinner 钩子
  15. useSpinnerFrames
  16. 可用的旋转器
  17. 无障碍
  18. 财务问题
  19. 常见模式
  20. 提交装入状态的表格
  21. 全屏加载覆盖
  22. 带有形状定制的内嵌状态消息
  23. 捐款
  24. 许可证

用于反应的 cli- 装载器

动画盲文-glyph装入回放自旋器. 19个独特的动画,零依赖性,完全可以访问. 现场演示 • 妇女 GitHub – (英语)

braille orbit breathe braillewave dna waverows helix fillsweep diagswipe scanline line cascade scan rain pulse snake sparkle columns checkerboard

cli-loaders 给您19个动画盲文-glyph自旋器作为一组可堆肥,可访问的回放组件. 超过React本身的零运行时间依赖性.

特征

  • 19个旋转动画 具有独有的盲文 Unicode 模式
  • 零运行时间依赖关系 ——纯回放,无外部库
  • 完全无障碍 - WCAG 2.1 AA, prefers-reduced-motion 支持, 语义 HTML
  • 先输入脚本 完整的类型定义, DotShape 导出用于自定义渲染
  • 可编曲 - 用于任何用途的7个部件+2个钩子
  • 小捆绑 — ~ 15KB gzipped (lib) + 可选 SVG 渲染
  • 形状定制 以圆形、正方形或方形( SVG 模式) 渲染

为什么要装货?

vs. 反应-平分器 : 更小的捆绑,类似终端美学的盲文Unicode艺术,全球默认的上下文API,形状定制(circles/squares/diamonds)

vs. 反应加载 : 零依赖性,全面无障碍测试,19+独有动画,SVG渲染模式

对自定义 CSS : 没有要维护的@ keyframes, 出框的减动支持, 语义 HTML, 默认可访问

安装

npm install @agilek/cli-loaders
# or
pnpm add @agilek/cli-loaders
# or
yarn add @agilek/cli-loaders

需要18号反应.

快开始

import { Spinner } from '@agilek/cli-loaders';

// Minimal — defaults to the "braille" spinner
<Spinner />

// Named + coloured
<Spinner name="helix" color="#7c3aed" size="1.5rem" />

// With custom dot shape (renders as SVG instead of braille text)
<Spinner name="scan" color="#00ff99" shape="square" size="2rem" />

构成部分

<Spinner>

基础动画"格来克". 显示为内线 <span> 所以它自然会掉入任何一行文字中.

Prop类型默认说明
nameSpinnerName"braille"要使用的旋转动画
colorstringcurrentColorCSS 颜色值
sizestring | numberundefinedGlyph 字体大小, 例如 . "1.5rem" 或者说 24
speednumber1回放乘数—— 2 =两倍的速度
pausedbooleanfalse停止动画
ignoreReducedMotionbooleanfalse覆盖 prefers-reduced-motion 总是动静
shape"circle" | "square" | "diamond"undefined作为 SVG 形状而非盲文的发光点
labelstring"Loading"屏幕阅读器宣布的可访问标签
classNamestring—— 说适用于外部 <span>
styleCSSProperties—— 说外部内置样式 <span>
refRef<HTMLSpanElement>—— 说传至外道 <span>

任何额外的HTML跨度属性都会被转发.


<SpinnerInline>

Spinner + 灵活行中的孩子——方便内置状态信息.

<SpinnerInline name="braille" color="#00ff99">
  Fetching data…
</SpinnerInline>

接受全部 Spinner 道具外加:

Prop类型默认说明
gapstring | number"0.4em"旋转者与儿童之间的差距
childrenReactNode—— 说旋转后的内容

<SpinnerText>

装饰有自旋器的文本字符串——支持书端模式,每端镜像一个.

<SpinnerText text="Deploying" color="#f59e0b" bookend />
// ⠿ Deploying ⠿
Prop类型默认说明
textstring所需经费装饰文字
bookendbooleanfalse在两边放置旋转器
gapstring | number"0.4em"旋转器和文本之间的间隔

加起来 Spinner 道具来.


<SpinnerBadge>

带有自旋器的有色药丸徽章——适合活状态指标.

<SpinnerBadge label="Live"     color="#ef4444" />
<SpinnerBadge label="Syncing"  color="#38bdf8" />
<SpinnerBadge label="Building" color="#f59e0b" />
Prop类型默认说明
labelstring所需经费徽章文本( 也用作 a11y 标签)
paddingYstring"0.4em"垂直粘贴
paddingXstring"0.8em"水平基底粘贴
balanceRationumber0.3光学平衡额外的右加分
borderRadiusstring | number"999px"边界半径
gapstring | number"0.35em"格言和标签之间的间隔

加起来 Spinner 道具来.


<SpinnerTrail>

使最近帧的滑动窗口减少不透明度——产生幽灵/运动-blur跟踪效应.

<SpinnerTrail name="helix" color="#7c3aed" size="2rem" trailLength={6} />
Prop类型默认说明
trailLengthnumber4鬼框数(包括当前)
minOpacitynumber0.1最古老的鬼框不透明
reversebooleanfalse翻转不透明梯度( 右下右下右下右下右下)

加起来 Spinner 道具来.


<SpinnerButton>

A 类 <button> 装入状态 禁用自身并显示旋转器 loading 这是真的。 完全转发参考.

<SpinnerButton
  loading={isSaving}
  onClick={handleSave}
  spinnerProps={{ name: 'braille', color: '#00ff99' }}
>
  Save changes
</SpinnerButton>
Prop类型默认说明
loadingbooleanfalse显示旋转并禁用按钮
spinnerPosition"left" | "right""left"旋转器出现在哪一边
spinnerGapstring | number"0.45em"旋转器和按钮标签之间的间隔
spinnerPropsOmit<BaseSpinnerProps, "size">—— 说转发给内部的道具 <Spinner>

所有标准 <button> 属性被转发.


<SpinnerOverlay>

环绕任何内容并让一个居中旋转器在 active使用本地 inert 属性以阻断键盘/指针对下面内容的访问.

<SpinnerOverlay
  active={isLoading}
  name="orbit"
  color="#7c3aed"
  size="2.5rem"
  backdrop="rgba(0,0,0,0.4)"
>
  <YourContent />
</SpinnerOverlay>
Prop类型默认说明
activebooleantrue显示封面
backdropstring"rgba(0,0,0,0.35)"背景介绍
sizestring | number"2rem"旋转格子大小
containerStyleCSSProperties—— 说适用于外包装的样式 <div>
containerClassNamestring—— 说适用于外包装的类别 <div>
childrenReactNode—— 说覆盖的内容

加起来 Spinner 道具来.


<SpinnerProvider>

为每集设定全局默认值 Spinner- 树下的家庭成分 单个道具覆盖上下文值.

<SpinnerProvider
  defaultName="orbit"
  defaultColor="#7c3aed"
  defaultSpeed={1.2}
  respectReducedMotion={true}
>
  <App />
</SpinnerProvider>

// Inside: no props needed — picks up context defaults
<Spinner />
<SpinnerBadge label="Live" />
Prop类型默认说明
defaultNameSpinnerName"braille"默认自旋器名称
defaultColorstringundefined默认颜色
defaultSizestring | numberundefined默认格子大小
defaultSpeednumber1默认速度乘数
defaultShape"circle" | "square" | "diamond"undefined默认点形状
respectReducedMotionbooleantrue当操作系统出现时暂停动画 prefers-reduced-motion: reduce

useSpinner 钩子

为完全自定义渲染而驱动任何带有生框字符串的元素 .

import { useSpinner } from 'cli-loaders';

function MyComponent() {
  const frame = useSpinner('helix', 1.5);

  return (
    <h1 style={{ fontFamily: 'monospace', color: '#00ff99' }}>
      {frame}
    </h1>
  );
}
useSpinner(
  name: SpinnerName,
  speed?: number,           // default 1
  paused?: boolean,         // default false
  ignoreReducedMotion?: boolean  // default false
): string

useSpinnerFrames

返回最后一个滑动窗口 length 框架——后面的原始 SpinnerTrail。 。 。 .

useSpinnerFrames(
  name: SpinnerName,
  length?: number,          // default 3
  speed?: number,
  paused?: boolean,
  ignoreReducedMotion?: boolean
): string[]

可用的旋转器

所有19个名字都作为 SpinnerName 工会类型.

import { spinnerNames } from 'cli-loaders';
// ['braille', 'braillewave', 'dna', ...]

无障碍

  • 动画格言被包裹在 aria-hidden="true" ——屏幕阅读器是看不见的.
  • 一个隐藏的视觉 <span role="status" aria-live="polite"> 公布 label 道具( 默认 ): "Loading") (中文(简体) ).
  • SpinnerButton 套装 aria-busy 财务报告和审定财务报表 aria-disabled 自动打开按钮元素.
  • SpinnerOverlay 套装 aria-busy 在容器上使用原生的 inert 属性来防止键盘/AT访问模糊内容.
  • 默认情况下,所有动画都尊重 prefers-reduced-motion: reduce覆盖每个组件 ignoreReducedMotion 或全球通过 <SpinnerProvider respectReducedMotion={false}>。 。 。 .


财务问题

我可以用这个和Next.js一起吗? 对 在 App 路由器中同时作为客户端和服务器组件工作.

我如何定制旋转动画? 使用 useSpinner 钩来驱动任何自定义渲染 。 见 使用 Spinner 钩头 用于实例.

这对 TypeScript 有用吗 ? 完全类型支持. 所有组件道具和 DotShape 类型为类型安全导出.

我如何改变形状(圆圈、方块、钻石)? 使用 shape 道具 : <Spinner shape="square" />。见 旋转道具 详细情况.

这种支持是否减少了运动偏好? 是的,默认的。 动画暂停当 prefers-reduced-motion: reduce 已经设定。 覆盖 ignoreReducedMotion={true}。 。 。 .

捆绑大小是多少? ~ 15KB 为核心库提供gzipped. SVG渲染模式增加了~1KB.


常见模式

提交装入状态的表格

const [loading, setLoading] = useState(false);

async function handleSubmit() {
  setLoading(true);
  try {
    await api.post('/submit', data);
  } finally {
    setLoading(false);
  }
}

return (
  <SpinnerButton
    loading={loading}
    onClick={handleSubmit}
    spinnerProps={{ name: 'helix', color: '#00ff99' }}
  >
    {loading ? 'Submitting...' : 'Submit'}
  </SpinnerButton>
);

全屏加载覆盖

const [fetching, setFetching] = useState(false);

return (
  <SpinnerOverlay
    active={fetching}
    name="orbit"
    size="2rem"
    backdrop="rgba(0,0,0,0.5)"
  >
    <Dashboard data={data} />
  </SpinnerOverlay>
);

带有形状定制的内嵌状态消息

return (
  <SpinnerInline
    name="scan"
    shape="diamond"
    color="#7c3aed"
  >
    Syncing your data...
  </SpinnerInline>
);

捐款

欢迎虫子报告和拉出请求 请在提交大修改前打开一个问题 .

# Install dependencies
npm install

# Start the interactive demo
npm run dev

# Build the library
npm run build

许可证

麻省理工学院

版本与发布记录

@agilek/cli-loaders 共发布 4 个版本,首次发布于 2026/03/21;过去 12 个月发布了 4 个版本。

版本发布日期距今
1.1.0latest2026/03/227 个月前
1.0.22026/03/217 个月前
1.0.12026/03/217 个月前
1.0.02026/03/217 个月前

关于 @agilek/cli-loaders 的常见问题

@agilek/cli-loaders 是什么?

盲文单码自旋器作为回放装饰组件

如何安装 @agilek/cli-loaders?

在项目目录运行 npm install @agilek/cli-loaders,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react(>=18.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@agilek/cli-loaders 支持 TypeScript 吗?

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

@agilek/cli-loaders 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@agilek/cli-loaders 可以商用吗?

@agilek/cli-loaders 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@agilek/cli-loaders 的下载量有多少?

根据 npm 官方下载统计,@agilek/cli-loaders 在 2026/10/05 – 2026/11/03 这 30 天内被下载 43,061 次,日均约 1,435 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@agilek/cli-loaders 还在维护吗?

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