@aria-ui/elements

中文文档
0.2.0发布于 2026/10/21MITTypeScriptES Module构建来源已验证近 30 天下载 11.1万

未命名的光- DOM- 只有Web 组件

中文使用文档
文档目录12 节
  1. 特征
  2. 构成部分
  3. 安装
  4. 快开始
  5. 列表框示例
  6. 菜单示例
  7. 可动摇树的子路径导入
  8. 设置道具
  9. 样式
  10. 活动
  11. 与框架一起使用
  12. 许可证

@aria-ui/要素

一组无风格,可访问 光- DOM- 只有网络组件 用于构建用户界面。 被Radix UI和Ark UI所启发,但作为本地自定义元素被运出,在任何框架——或平面HTML中工作.

播放场 : https://aria-ui.pages.dev/ (中文(简体) )

特征

  • 只有轻度DOM. 没有Shadow DOM,所以你的全局风格表,Tailwind课,和选择者喜欢 [aria-selected="true"] 或者说 [data-active] 直接应用到您放入页面的元素.
  • 设计上没有风格. 每一个组件舰只0 CSS. 国家通过标准ARIA属性和 data-* 属性可以任意样式.
  • 建于WAI-ARIA APG上. 键盘交互、焦点管理和ARIA作用 WAI-ARIA 授权做法指南 模式.
  • 可编组部件. 每个组成部分分为重点定制要素(*-root, (中文(简体) ), *-trigger, (中文(简体) ), *-popup, (中文(简体) ), *-positioner, (中文(简体) ), *-item通过共享商店进行交流.
  • 框架-不可知论. 直接使用 HTML 中的元素,或以 @aria-ui/cli 用于反应,Vue,Solid,Preact,和斯维尔特.

构成部分

构成部分自定义元素
列表框aria-ui-listbox-root, (中文(简体) ), aria-ui-listbox-item, (中文(简体) ), aria-ui-listbox-empty
菜单aria-ui-menu-root, (中文(简体) ), aria-ui-menu-trigger, (中文(简体) ), aria-ui-menu-positioner, (中文(简体) ), aria-ui-menu-popup, (中文(简体) ), aria-ui-menu-item, (中文(简体) ), aria-ui-menu-submenu-root, (中文(简体) ), aria-ui-menu-submenu-trigger
过量aria-ui-popover-root, (中文(简体) ), aria-ui-popover-trigger, (中文(简体) ), aria-ui-popover-positioner, (中文(简体) ), aria-ui-popover-popup
工具提示aria-ui-tooltip-root, (中文(简体) ), aria-ui-tooltip-trigger, (中文(简体) ), aria-ui-tooltip-positioner, (中文(简体) ), aria-ui-tooltip-popup

安装

npm install @aria-ui/elements
# or
pnpm add @aria-ui/elements

快开始

登记每个组件,单调:

import { registerElements } from '@aria-ui/elements'

registerElements()

然后在 HTML 中任意使用元素 :

<aria-ui-popover-root>
  <aria-ui-popover-trigger tabindex="0">Open popover</aria-ui-popover-trigger>
  <aria-ui-popover-positioner>
    <aria-ui-popover-popup>
      <p>Hello from a popover!</p>
    </aria-ui-popover-popup>
  </aria-ui-popover-positioner>
</aria-ui-popover-root>

列表框示例

<aria-ui-listbox-root>
  <aria-ui-listbox-item value="apple">Apple</aria-ui-listbox-item>
  <aria-ui-listbox-item value="banana">Banana</aria-ui-listbox-item>
  <aria-ui-listbox-item value="cherry">Cherry</aria-ui-listbox-item>
</aria-ui-listbox-root>
const listbox = document.querySelector('aria-ui-listbox-root')!
listbox.addEventListener('valueChange', (event) => {
  console.log('Selected:', event.detail)
})

菜单示例

<aria-ui-menu-root>
  <aria-ui-menu-trigger tabindex="0">Actions</aria-ui-menu-trigger>
  <aria-ui-menu-positioner>
    <aria-ui-menu-popup>
      <aria-ui-menu-item value="cut">Cut</aria-ui-menu-item>
      <aria-ui-menu-item value="copy">Copy</aria-ui-menu-item>
      <aria-ui-menu-item value="paste">Paste</aria-ui-menu-item>
    </aria-ui-menu-popup>
  </aria-ui-menu-positioner>
</aria-ui-menu-root>

可动摇树的子路径导入

每个组件也会在自己的子路径下被发布,因此您只能注册您需要的部件:

import { registerListboxRootElement, registerListboxItemElement } from '@aria-ui/elements/listbox'

registerListboxRootElement()
registerListboxItemElement()

可用的切入点 :

  • @aria-ui/elements - 完全捆绑加起来 registerElements()
  • @aria-ui/elements/listbox
  • @aria-ui/elements/menu
  • @aria-ui/elements/popover
  • @aria-ui/elements/tooltip
  • @aria-ui/elements/overlay ——共享覆盖原始

设置道具

每个道具都可以同时作为HTML属性和JS属性提供. 复杂值(阵列、对象、, null)作为JSON存储:

<!-- Via attributes -->
<aria-ui-listbox-root multiple values='["apple","banana"]'>
  <aria-ui-listbox-item value="apple">Apple</aria-ui-listbox-item>
  <aria-ui-listbox-item value="banana">Banana</aria-ui-listbox-item>
</aria-ui-listbox-root>
// Via JS properties
const listbox = document.querySelector('aria-ui-listbox-root')!
listbox.multiple = true
listbox.values = ['apple', 'banana']

样式

部件通过标准无障碍属性和少数特性暴露其状态 data-* 属性 :

属性用于含义
aria-selected="true"列表框项目选择此选项
aria-expanded="true"弹出/菜单/工具提示触发器封面打开
aria-disabled="true"任何元素该元素已禁用
data-active列表框项目,菜单项目要点是目前突出的选项(aria-activedescendant(中文(简体) )
data-state="open" | "closed"覆盖弹出重叠打开状态, 用于过渡

有 Tailwind 的示例 :

<aria-ui-listbox-item
  value="apple"
  class="block px-3 py-2 cursor-pointer hover:bg-blue-50 aria-selected:bg-blue-100 data-active:outline-2 data-active:outline-blue-500"
>
  Apple
</aria-ui-listbox-item>

活动

组件发送标准DOM事件,其有效载荷在 detail 属性 :

活动由detail
valueChange列表框( 单一选择)string
valuesChange列表框(多选择)string[]
openChange弹出、菜单、工具提示boolean
select菜单项目,列表框项目(无有效载荷)

valueChange 编号 : valuesChange 可取消——拨打 event.preventDefault() 以控制模式运行列表框.

与框架一起使用

对于回放、Vue、Solid、Preact和Svelte,您可以使用 @aria-ui/cli,它处理属性/属性映射,并将 DOM 事件转换为平面框架回调.

许可证

麻省理工学院

版本与发布记录

@aria-ui/elements 共发布 28 个版本,首次发布于 2026/03/29;过去 12 个月发布了 28 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.2.0latest2026/10/2117 天前
0.1.142026/10/2117 天前
0.1.132026/08/122 个月前
0.1.122026/07/044 个月前
0.1.112026/06/304 个月前
0.1.102026/05/155 个月前

关于 @aria-ui/elements 的常见问题

@aria-ui/elements 是什么?

未命名的光- DOM- 只有Web 组件

如何安装 @aria-ui/elements?

在项目目录运行 npm install @aria-ui/elements,或使用 pnpm add / yarn add / bun add。

@aria-ui/elements 支持 TypeScript 吗?

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

@aria-ui/elements 支持 ESM 还是 CommonJS?

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

@aria-ui/elements 可以商用吗?

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

@aria-ui/elements 的下载量有多少?

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

@aria-ui/elements 还在维护吗?

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