icen.ai 生态的统一设计系统:设计 tokens + 无框架组件 CSS + 行为 JS,所有前端从这里取设计资产。
预设类挂在 html 上:modern 现代(默认)/ dongyun 东韵 / jugou 巨构 / piano 钢琴 / monet 莫奈 / vangogh 梵高;明暗用 data-icen-theme,原语用 data-icen-style="modern|chinese|soviet|pixel",两轴独立。
不可以。组件 CSS 只消费 --icen-token-* 变量,语义色仅绿 / 黄 / 红 + 品牌 accent 四档。
<div class="accordion" data-icen-single> <div class="icen-accordion-item is-open"> <button class="icen-accordion-trigger" type="button" aria-expanded="true"><span>什么是 @icen.ai/ui?</span><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" focusable="false" class="icen-symbol icen-accordion-chevron" aria-hidden="true"><path d="M5.5 7.75 10 12.25l4.5-4.5"></path></svg></button> <div class="icen-accordion-panel"><div class="icen-accordion-panel-inner">icen.ai 生态的统一设计系统:设计 tokens + 无框架组件 CSS + 行为 JS,所有前端从这里取设计资产。</div></div> </div> <div class="icen-accordion-item"> <button class="icen-accordion-trigger" type="button" aria-expanded="false"><span>如何切换色彩预设?</span><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" focusable="false" class="icen-symbol icen-accordion-chevron" aria-hidden="true"><path d="M5.5 7.75 10 12.25l4.5-4.5"></path></svg></button> <div class="icen-accordion-panel"><div class="icen-accordion-panel-inner">预设类挂在 html 上:modern 现代(默认)/ dongyun 东韵 / jugou 巨构 / piano 钢琴 / monet 莫奈 / vangogh 梵高;明暗用 data-icen-theme,原语用 data-icen-style="modern|chinese|soviet|pixel",两轴独立。</div></div> </div> <div class="icen-accordion-item"> <button class="icen-accordion-trigger" type="button" aria-expanded="false"><span>组件可以直接写死颜色吗?</span><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" focusable="false" class="icen-symbol icen-accordion-chevron" aria-hidden="true"><path d="M5.5 7.75 10 12.25l4.5-4.5"></path></svg></button> <div class="icen-accordion-panel"><div class="icen-accordion-panel-inner">不可以。组件 CSS 只消费 --icen-token-* 变量,语义色仅绿 / 黄 / 红 + 品牌 accent 四档。</div></div> </div></div>
特性
- 结构:
icen-accordion-item+icen-accordion-trigger+icen-accordion-panel,chevron 随开合旋转 - 单开:容器挂
data-icen-single,展开一项自动收起其余 - 变体:
icen-accordion--cards卡片分栏外观
接口
- 初始化
initAccordion()(kit 一行入口可直接命名导入)- 导出
-
initAccordion - 事件
-
icen:accordion-toggledetail 契约见IcenEventMap - 类型
dist/behaviors/accordion.d.mts(随 npm 包发布,含全部 JSDoc 约束)
安装
bun add @icen.ai/ui pnpm add @icen.ai/ui npm install @icen.ai/ui yarn add @icen.ai/ui 一行引入该组件(CSS 与 behavior 自动带上,无需关心内部 CSS 文件名):
import { initAccordion } from '@icen.ai/ui/kit/accordion';initAccordion();
也可以用脚手架直接打印引入行:
bunx --bun @icen.ai/ui add accordion
Astro 项目注意:kit 入口里的 CSS import 在页面 <script> 里会被 Astro 的 client bundle 摇掉——请改在布局 frontmatter 里引 CSS(import '@icen.ai/ui/components/content.css';),JS 行为仍可走 kit。Vite SPA / webpack 项目无此问题。
用法
import { initAccordion } from '@icen.ai/ui/behaviors/accordion';initAccordion();// 容器带 data-icen-single 时展开一项会收起其余