{
  "name": "AIDC Developer · 界面 SDK",
  "version": "1.4.1",
  "stylesheet": "https://www.ai-dc.ai/developer/sdk/v1/ui.css",
  "module": {
    "url": "https://www.ai-dc.ai/developer/sdk/v1/aidc.js",
    "export": "ui",
    "functions": [
      "confirm",
      "dialogHtml",
      "ensureStyles",
      "loader",
      "loaderHtml",
      "logo",
      "logoHtml",
      "prompt",
      "stylesheetUrl",
      "tabs",
      "theme.get",
      "theme.set",
      "toast",
      "toastHtml"
    ]
  },
  "docs": "https://www.ai-dc.ai/developer/docs/ui",
  "gallery": "https://www.ai-dc.ai/developer/ui",
  "react": {
    "site": "https://www.ai-dc.ai/asset/ui",
    "registry": "https://www.ai-dc.ai/asset/ui/r/aidc/{name}.json"
  },
  "themes": [
    "aidc",
    "signal"
  ],
  "modes": [
    "light",
    "dark",
    "system"
  ],
  "loaders": [
    "dial",
    "cadence",
    "sequence",
    "sweep",
    "march",
    "pulse",
    "breathe",
    "track"
  ],
  "radius": "0.375rem",
  "fonts": {
    "sans": "\"Archivo\", -apple-system, BlinkMacSystemFont, \"PingFang SC\", \"Hiragino Sans GB\", \"Microsoft YaHei\", \"Segoe UI\", system-ui, sans-serif",
    "mono": "\"IBM Plex Mono\", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace"
  },
  "tokens": {
    "light": {
      "background": "#ffffff",
      "foreground": "#171717",
      "card": "#ffffff",
      "card-foreground": "#171717",
      "popover": "#ffffff",
      "popover-foreground": "#171717",
      "primary": "#171717",
      "primary-foreground": "#ffffff",
      "secondary": "#f2f2f2",
      "secondary-foreground": "#171717",
      "muted": "#f2f2f2",
      "muted-foreground": "#666666",
      "accent": "#f2f2f2",
      "accent-foreground": "#171717",
      "destructive": "#d8001b",
      "destructive-foreground": "#ffffff",
      "success": "#0f7a3d",
      "warning": "#a15c00",
      "border": "rgba(0, 0, 0, 0.09)",
      "input": "rgba(0, 0, 0, 0.12)",
      "ring": "#006bff",
      "signal": "#e34400",
      "signal-foreground": "#ffffff",
      "chart-1": "#ffc2a3",
      "chart-2": "#ff8a4c",
      "chart-3": "#ff4d00",
      "chart-4": "#e34400",
      "chart-5": "#a83200"
    },
    "dark": {
      "background": "#0a0a0a",
      "foreground": "#ededed",
      "card": "#111111",
      "card-foreground": "#ededed",
      "popover": "#111111",
      "popover-foreground": "#ededed",
      "primary": "#ededed",
      "primary-foreground": "#0a0a0a",
      "secondary": "#1a1a1a",
      "secondary-foreground": "#ededed",
      "muted": "#1a1a1a",
      "muted-foreground": "#a1a1a1",
      "accent": "#1f1f1f",
      "accent-foreground": "#ededed",
      "destructive": "#ff4d5e",
      "destructive-foreground": "#0a0a0a",
      "success": "#3fb96b",
      "warning": "#e5a44b",
      "border": "rgba(255, 255, 255, 0.11)",
      "input": "rgba(255, 255, 255, 0.15)",
      "ring": "#006bff",
      "signal": "#ff4d00",
      "signal-foreground": "#ffffff",
      "chart-1": "#ffc2a3",
      "chart-2": "#ff8a4c",
      "chart-3": "#ff6b2e",
      "chart-4": "#ff4d00",
      "chart-5": "#e34400"
    },
    "themes": {
      "aidc": {
        "light": {},
        "dark": {}
      },
      "signal": {
        "light": {
          "primary": "#e34400",
          "primary-foreground": "#ffffff",
          "ring": "#e34400"
        },
        "dark": {
          "primary": "#ff4d00",
          "primary-foreground": "#ffffff",
          "ring": "#ff4d00"
        }
      }
    }
  },
  "components": [
    {
      "id": "appbar",
      "title": "顶栏",
      "group": "页面",
      "summary": "应用最上面一条：标识、应用名、右侧操作。吸顶、半透明毛玻璃。",
      "classes": [
        "aidc-appbar",
        "aidc-appbar__title",
        "aidc-appbar__actions"
      ],
      "html": "<header class=\"aidc-appbar\">\n  <span class=\"aidc-logo\"><svg class=\"aidc-mark\" viewBox=\"0 0 40 40\" fill=\"currentColor\" aria-hidden=\"true\"><g transform=\"translate(20 20) skewX(-18)\"><rect x=\"-9.6\" y=\"-15\" width=\"6.6\" height=\"30\"/><rect x=\"3\" y=\"-15\" width=\"6.6\" height=\"30\"/></g></svg><span>AIDC</span></span>\n  <span class=\"aidc-appbar__title\">瑕疵检测</span>\n  <div class=\"aidc-appbar__actions\">\n    <span class=\"aidc-badge aidc-badge--signal\">测试版</span>\n    <button type=\"button\" class=\"aidc-btn aidc-btn--ghost aidc-btn--sm\">反馈</button>\n  </div>\n</header>"
    },
    {
      "id": "layout",
      "title": "版面",
      "group": "页面",
      "summary": "页面容器（最大宽度 + 留白）、竖排 / 横排间距、次要文字。不用 Tailwind 也能排版。",
      "classes": [
        "aidc-page",
        "aidc-page--narrow",
        "aidc-stack",
        "aidc-row",
        "aidc-muted"
      ],
      "html": "<main class=\"aidc-page aidc-page--narrow\">\n  <div class=\"aidc-stack\">\n    <h1>今日产线</h1>\n    <p class=\"aidc-muted\">数据每 30 秒同步一次。</p>\n    <div class=\"aidc-row\">\n      <button type=\"button\" class=\"aidc-btn\">开始检测</button>\n      <button type=\"button\" class=\"aidc-btn aidc-btn--outline\">导出</button>\n    </div>\n  </div>\n</main>"
    },
    {
      "id": "button",
      "title": "按钮",
      "group": "操作",
      "summary": "主按钮是实心黑（signal 主题下是信号橙）；次要、描边、幽灵、危险、链接五种变体，三种尺寸与图标按钮。",
      "classes": [
        "aidc-btn",
        "aidc-btn--secondary",
        "aidc-btn--outline",
        "aidc-btn--ghost",
        "aidc-btn--destructive",
        "aidc-btn--link",
        "aidc-btn--sm",
        "aidc-btn--lg",
        "aidc-btn--icon",
        "aidc-btn--block"
      ],
      "html": "<div class=\"aidc-row\">\n  <button type=\"button\" class=\"aidc-btn\">发布</button>\n  <button type=\"button\" class=\"aidc-btn aidc-btn--secondary\">保存草稿</button>\n  <button type=\"button\" class=\"aidc-btn aidc-btn--outline\">预览</button>\n  <button type=\"button\" class=\"aidc-btn aidc-btn--ghost\">取消</button>\n  <button type=\"button\" class=\"aidc-btn aidc-btn--destructive\">删除</button>\n  <a class=\"aidc-btn aidc-btn--link\" href=\"#\">查看说明</a>\n</div>\n<div class=\"aidc-row\">\n  <button type=\"button\" class=\"aidc-btn aidc-btn--sm\">小</button>\n  <button type=\"button\" class=\"aidc-btn\">默认</button>\n  <button type=\"button\" class=\"aidc-btn aidc-btn--lg\">大</button>\n  <button type=\"button\" class=\"aidc-btn aidc-btn--outline aidc-btn--icon\" aria-label=\"刷新\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21 12a9 9 0 1 1-3-6.7L21 8\"/><path d=\"M21 3v5h-5\"/></svg></button>\n  <button type=\"button\" class=\"aidc-btn\" disabled><span class=\"aidc-loader\" data-variant=\"dial\" role=\"status\" aria-label=\"Loading\"><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i></span>提交中</button>\n</div>"
    },
    {
      "id": "tabs",
      "title": "标签页",
      "group": "操作",
      "summary": "同一块区域里切换几组内容。标记写好后调 ui.tabs(容器) 接管点击与方向键。",
      "classes": [
        "aidc-tabs",
        "aidc-tabs__list",
        "aidc-tabs__trigger",
        "aidc-tabs__panel"
      ],
      "html": "<div class=\"aidc-tabs\" id=\"orderTabs\">\n  <div class=\"aidc-tabs__list\" role=\"tablist\" aria-label=\"订单\">\n    <button type=\"button\" class=\"aidc-tabs__trigger\" role=\"tab\" id=\"tab-open\" aria-controls=\"panel-open\" aria-selected=\"true\">进行中</button>\n    <button type=\"button\" class=\"aidc-tabs__trigger\" role=\"tab\" id=\"tab-done\" aria-controls=\"panel-done\" aria-selected=\"false\">已完成</button>\n  </div>\n  <div class=\"aidc-tabs__panel\" role=\"tabpanel\" id=\"panel-open\" aria-labelledby=\"tab-open\">3 张工单进行中。</div>\n  <div class=\"aidc-tabs__panel\" role=\"tabpanel\" id=\"panel-done\" aria-labelledby=\"tab-done\" hidden>本周完成 18 张。</div>\n</div>",
      "js": "ui.tabs(\"#orderTabs\", { onChange: (panelId) => console.log(panelId) });"
    },
    {
      "id": "dialog",
      "title": "对话框",
      "group": "操作",
      "summary": "原生 <dialog>。确认与输入用 ui.confirm / ui.prompt（代替 window.confirm / prompt），复杂内容自己写标记后 showModal()。",
      "classes": [
        "aidc-dialog",
        "aidc-dialog__header",
        "aidc-dialog__title",
        "aidc-dialog__description",
        "aidc-dialog__footer"
      ],
      "html": "<div class=\"aidc-row\">\n  <button type=\"button\" class=\"aidc-btn aidc-btn--destructive\" data-demo=\"confirm\">删除工单</button>\n  <button type=\"button\" class=\"aidc-btn aidc-btn--outline\" data-demo=\"prompt\">标记问题</button>\n  <button type=\"button\" class=\"aidc-btn aidc-btn--outline\" data-demo=\"custom-dialog\">自定义对话框</button>\n</div>\n<dialog class=\"aidc-dialog\" id=\"custom\">\n  <form method=\"dialog\" class=\"aidc-stack\">\n    <div class=\"aidc-dialog__header\">\n      <h2 class=\"aidc-dialog__title\">发布到 Nexus</h2>\n      <p class=\"aidc-dialog__description\">发布后全公司成员都能打开这个版本。</p>\n    </div>\n    <div class=\"aidc-dialog__footer\">\n      <button type=\"submit\" value=\"cancel\" class=\"aidc-btn aidc-btn--outline\">取消</button>\n      <button type=\"submit\" value=\"confirm\" class=\"aidc-btn\">发布</button>\n    </div>\n  </form>\n</dialog>",
      "js": "if (await ui.confirm({ title: \"删除这张工单？\", description: \"删除后不能恢复。\", confirmText: \"删除\", destructive: true })) { /* … */ }\nconst reason = await ui.prompt({ title: \"标记问题\", label: \"问题描述\", placeholder: \"例如：布面污渍\", required: true });\ndocument.querySelector(\"#custom\").showModal();"
    },
    {
      "id": "input",
      "title": "输入框",
      "group": "表单",
      "summary": "单行输入；手机上字号 16px（iOS 不会自动放大）。出错时加 aria-invalid=\"true\"。",
      "classes": [
        "aidc-input"
      ],
      "html": "<input class=\"aidc-input\" type=\"text\" placeholder=\"批次号，例如 B-2026-0926\" />\n<input class=\"aidc-input\" type=\"email\" placeholder=\"错误示例\" aria-invalid=\"true\" value=\"not-an-email\" />\n<input class=\"aidc-input\" type=\"file\" />"
    },
    {
      "id": "textarea",
      "title": "多行输入",
      "group": "表单",
      "summary": "多行文本，可纵向拉伸。",
      "classes": [
        "aidc-textarea"
      ],
      "html": "<textarea class=\"aidc-textarea\" rows=\"3\" placeholder=\"写下这次检查的备注…\"></textarea>"
    },
    {
      "id": "select",
      "title": "下拉选择",
      "group": "表单",
      "summary": "原生 <select>，弹出层由系统负责（手机上是系统选择器）。",
      "classes": [
        "aidc-select"
      ],
      "html": "<select class=\"aidc-select\">\n  <option>一号产线</option>\n  <option>二号产线</option>\n  <option>三号产线</option>\n</select>"
    },
    {
      "id": "checkbox",
      "title": "复选框",
      "group": "表单",
      "summary": "原生 <input type=\"checkbox\">，外观与 shadcn 一致。",
      "classes": [
        "aidc-checkbox"
      ],
      "html": "<label class=\"aidc-label\"><input type=\"checkbox\" class=\"aidc-checkbox\" checked /> 发布后通知全员</label>"
    },
    {
      "id": "radio",
      "title": "单选框",
      "group": "表单",
      "summary": "原生 <input type=\"radio\">。",
      "classes": [
        "aidc-radio"
      ],
      "html": "<div class=\"aidc-stack\" style=\"gap: 0.75rem\">\n  <label class=\"aidc-label\"><input type=\"radio\" class=\"aidc-radio\" name=\"shift\" checked /> 白班</label>\n  <label class=\"aidc-label\"><input type=\"radio\" class=\"aidc-radio\" name=\"shift\" /> 夜班</label>\n</div>"
    },
    {
      "id": "switch",
      "title": "开关",
      "group": "表单",
      "summary": "原生复选框加 role=\"switch\"：开 / 关一项设置。",
      "classes": [
        "aidc-switch"
      ],
      "html": "<label class=\"aidc-label\"><input type=\"checkbox\" role=\"switch\" class=\"aidc-switch\" checked /> 实时同步</label>"
    },
    {
      "id": "label",
      "title": "标签",
      "group": "表单",
      "summary": "表单项的文字标签；包住复选框 / 单选框 / 开关时自动横排对齐。",
      "classes": [
        "aidc-label"
      ],
      "html": "<label class=\"aidc-label\" for=\"qty\">数量</label>"
    },
    {
      "id": "field",
      "title": "表单项",
      "group": "表单",
      "summary": "标签 + 控件 + 说明 / 错误提示的一组。",
      "classes": [
        "aidc-field",
        "aidc-field__description",
        "aidc-field__error"
      ],
      "html": "<div class=\"aidc-field\">\n  <label class=\"aidc-label\" for=\"batch\">批次号</label>\n  <input class=\"aidc-input\" id=\"batch\" aria-invalid=\"true\" aria-describedby=\"batch-error\" />\n  <p class=\"aidc-field__description\">印在料盒侧面，以 B- 开头。</p>\n  <p class=\"aidc-field__error\" id=\"batch-error\">批次号不能为空。</p>\n</div>"
    },
    {
      "id": "card",
      "title": "卡片",
      "group": "展示",
      "summary": "一组相关内容的容器：标题、说明、右上角操作、正文、底部操作。",
      "classes": [
        "aidc-card",
        "aidc-card__header",
        "aidc-card__title",
        "aidc-card__description",
        "aidc-card__action",
        "aidc-card__content",
        "aidc-card__footer"
      ],
      "html": "<div class=\"aidc-card\" style=\"max-width: 24rem\">\n  <div class=\"aidc-card__header\">\n    <h3 class=\"aidc-card__title\">今日良率</h3>\n    <p class=\"aidc-card__description\">一号产线 · 截至 14:30</p>\n    <span class=\"aidc-card__action aidc-badge aidc-badge--success\">+1.2%</span>\n  </div>\n  <div class=\"aidc-card__content\"><strong style=\"font-size: 2rem\">98.4%</strong></div>\n  <div class=\"aidc-card__footer\">\n    <button type=\"button\" class=\"aidc-btn aidc-btn--outline aidc-btn--sm\">明细</button>\n  </div>\n</div>"
    },
    {
      "id": "badge",
      "title": "徽章",
      "group": "展示",
      "summary": "状态与标签。信号橙只用于需要注意的状态。",
      "classes": [
        "aidc-badge",
        "aidc-badge--secondary",
        "aidc-badge--outline",
        "aidc-badge--destructive",
        "aidc-badge--signal",
        "aidc-badge--success"
      ],
      "html": "<div class=\"aidc-row\">\n  <span class=\"aidc-badge\">已发布</span>\n  <span class=\"aidc-badge aidc-badge--secondary\">草稿</span>\n  <span class=\"aidc-badge aidc-badge--outline\">v1.2.0</span>\n  <span class=\"aidc-badge aidc-badge--success\">合格</span>\n  <span class=\"aidc-badge aidc-badge--signal\">待复核</span>\n  <span class=\"aidc-badge aidc-badge--destructive\">不合格</span>\n</div>"
    },
    {
      "id": "table",
      "title": "表格",
      "group": "展示",
      "summary": "数据表：外面包一层 .aidc-table-wrap 就能横向滚动；数字列加 .aidc-num 右对齐、等宽数字。",
      "classes": [
        "aidc-table-wrap",
        "aidc-table",
        "aidc-table--wrap",
        "aidc-num"
      ],
      "html": "<div class=\"aidc-table-wrap\">\n  <table class=\"aidc-table\">\n    <thead><tr><th>工单</th><th>产线</th><th>状态</th><th class=\"aidc-num\">数量</th></tr></thead>\n    <tbody>\n      <tr><td>WO-1041</td><td>一号</td><td><span class=\"aidc-badge aidc-badge--success\">完成</span></td><td class=\"aidc-num\">1,200</td></tr>\n      <tr><td>WO-1042</td><td>二号</td><td><span class=\"aidc-badge aidc-badge--signal\">待复核</span></td><td class=\"aidc-num\">860</td></tr>\n      <tr><td>WO-1043</td><td>三号</td><td><span class=\"aidc-badge aidc-badge--secondary\">排产</span></td><td class=\"aidc-num\">2,400</td></tr>\n    </tbody>\n    <tfoot><tr><td colspan=\"3\">合计</td><td class=\"aidc-num\">4,460</td></tr></tfoot>\n  </table>\n</div>"
    },
    {
      "id": "avatar",
      "title": "头像",
      "group": "展示",
      "summary": "圆形头像；没有图片时放姓氏或缩写。",
      "classes": [
        "aidc-avatar"
      ],
      "html": "<div class=\"aidc-row\"><span class=\"aidc-avatar\">郭</span><span class=\"aidc-avatar\">李</span><span class=\"aidc-avatar\">AI</span></div>"
    },
    {
      "id": "kbd",
      "title": "按键",
      "group": "展示",
      "summary": "快捷键提示。",
      "classes": [
        "aidc-kbd"
      ],
      "html": "<span class=\"aidc-muted\">按 <kbd class=\"aidc-kbd\">⌘</kbd> <kbd class=\"aidc-kbd\">K</kbd> 搜索</span>"
    },
    {
      "id": "separator",
      "title": "分隔线",
      "group": "展示",
      "summary": "横向用 <hr>；在横排里用竖向变体。",
      "classes": [
        "aidc-separator",
        "aidc-separator--vertical"
      ],
      "html": "<div class=\"aidc-stack\">\n  <span>上半部分</span>\n  <hr class=\"aidc-separator\" />\n  <div class=\"aidc-row\" style=\"height: 1.25rem\">\n    <span>产线</span><span class=\"aidc-separator aidc-separator--vertical\"></span><span>班次</span>\n  </div>\n</div>"
    },
    {
      "id": "logo",
      "title": "标识",
      "group": "展示",
      "summary": "AIDC 标识（棱角版双斜杠，logo 橙 #FF4D00）与字标。除了标识本身，界面里不要再用 // 做装饰。",
      "classes": [
        "aidc-logo",
        "aidc-mark"
      ],
      "html": "<span class=\"aidc-logo\" style=\"font-size: 1.5rem\"><svg class=\"aidc-mark\" viewBox=\"0 0 40 40\" fill=\"currentColor\" aria-hidden=\"true\"><g transform=\"translate(20 20) skewX(-18)\"><rect x=\"-9.6\" y=\"-15\" width=\"6.6\" height=\"30\"/><rect x=\"3\" y=\"-15\" width=\"6.6\" height=\"30\"/></g></svg><span>AIDC</span></span>",
      "js": "document.querySelector(\"header\").prepend(ui.logo());   // ui.logo({ wordmark: false }) 只要标识"
    },
    {
      "id": "empty",
      "title": "空状态",
      "group": "展示",
      "summary": "没有数据时告诉用户为什么、下一步做什么。",
      "classes": [
        "aidc-empty",
        "aidc-empty__media",
        "aidc-empty__title",
        "aidc-empty__description"
      ],
      "html": "<div class=\"aidc-empty\">\n  <div class=\"aidc-empty__media\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M3 7h18M3 12h18M3 17h18\"/></svg></div>\n  <h3 class=\"aidc-empty__title\">还没有工单</h3>\n  <p class=\"aidc-empty__description\">ERP 同步过来的工单会出现在这里。</p>\n  <button type=\"button\" class=\"aidc-btn aidc-btn--outline aidc-btn--sm\">立即同步</button>\n</div>"
    },
    {
      "id": "alert",
      "title": "提示条",
      "group": "反馈",
      "summary": "页面里的常驻提示；出错用 destructive。",
      "classes": [
        "aidc-alert",
        "aidc-alert__title",
        "aidc-alert__description",
        "aidc-alert--destructive"
      ],
      "html": "<div class=\"aidc-alert\" role=\"status\">\n  <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"M12 16v-4M12 8h.01\"/></svg>\n  <div class=\"aidc-alert__title\">数据源在线</div>\n  <div class=\"aidc-alert__description\">ERP 发布端 2 分钟前心跳正常。</div>\n</div>\n<div class=\"aidc-alert aidc-alert--destructive\" role=\"alert\">\n  <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"M12 8v4M12 16h.01\"/></svg>\n  <div class=\"aidc-alert__title\">连不上数据源</div>\n  <div class=\"aidc-alert__description\">发布端已 10 分钟没有心跳，页面上的数据可能不是最新的。</div>\n</div>"
    },
    {
      "id": "toast",
      "title": "Toast",
      "group": "反馈",
      "summary": "操作结果的轻提示，几秒后自动消失（悬停暂停）。只用 ui.toast()，不用手写标记。",
      "classes": [
        "aidc-toaster",
        "aidc-toast",
        "aidc-toast__body",
        "aidc-toast__title",
        "aidc-toast__description",
        "aidc-toast__action"
      ],
      "html": "<div class=\"aidc-row\">\n  <button type=\"button\" class=\"aidc-btn aidc-btn--outline\" data-demo=\"toast\">已保存</button>\n  <button type=\"button\" class=\"aidc-btn aidc-btn--outline\" data-demo=\"toast-error\">保存失败</button>\n  <button type=\"button\" class=\"aidc-btn aidc-btn--outline\" data-demo=\"toast-action\">带撤销</button>\n</div>",
      "js": "ui.toast(\"已保存\", { variant: \"success\" });\nui.toast(\"保存失败\", { variant: \"error\", description: \"网络断开，稍后重试。\" });\nui.toast(\"已删除 1 条记录\", { action: { label: \"撤销\", onClick: undo } });"
    },
    {
      "id": "loader",
      "title": "加载动效",
      "group": "反馈",
      "summary": "八种等待态都以品牌斜杆 // 为母题（dial 刻度轮、cadence 节拍、sequence 递进、sweep 掠光、march 行进、pulse 韵律、breathe 呼吸、track 轨道），按场景选、同一界面不混用；大小跟字号，颜色跟 --signal。",
      "classes": [
        "aidc-loader"
      ],
      "html": "<div class=\"aidc-row\" style=\"gap: 1.5rem; font-size: 1.5rem\">\n  <span class=\"aidc-loader\" data-variant=\"dial\" role=\"status\" aria-label=\"Loading\"><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i></span>\n  <span class=\"aidc-loader\" data-variant=\"cadence\" role=\"status\" aria-label=\"Loading\"><i></i><i></i></span>\n  <span class=\"aidc-loader\" data-variant=\"sequence\" role=\"status\" aria-label=\"Loading\"><i></i><i></i></span>\n  <span class=\"aidc-loader\" data-variant=\"sweep\" role=\"status\" aria-label=\"Loading\"><i></i><i></i></span>\n  <span class=\"aidc-loader\" data-variant=\"march\" role=\"status\" aria-label=\"Loading\"><span data-slot=\"train\"><i></i><i></i><i></i><i></i><i></i></span></span>\n  <span class=\"aidc-loader\" data-variant=\"pulse\" role=\"status\" aria-label=\"Loading\"><i></i><i></i></span>\n  <span class=\"aidc-loader\" data-variant=\"breathe\" role=\"status\" aria-label=\"Loading\"><i></i><i></i></span>\n  <span style=\"font-size: 1rem\"><span class=\"aidc-loader\" data-variant=\"track\" role=\"status\" aria-label=\"Loading\"><span data-slot=\"lane\"><span data-slot=\"runner\"><i></i><i></i></span></span></span></span>\n</div>",
      "js": "button.prepend(ui.loader(\"dial\"));              // 刻度轮\npanel.append(ui.loader(\"cadence\", { label: \"加载订单\" }));"
    },
    {
      "id": "skeleton",
      "title": "骨架屏",
      "group": "反馈",
      "summary": "内容加载前的占位形状。",
      "classes": [
        "aidc-skeleton"
      ],
      "html": "<div class=\"aidc-row\" style=\"gap: 0.75rem\">\n  <div class=\"aidc-skeleton\" style=\"width: 2.5rem; height: 2.5rem; border-radius: 9999px\"></div>\n  <div class=\"aidc-stack\" style=\"gap: 0.5rem\">\n    <div class=\"aidc-skeleton\" style=\"width: 12rem; height: 1rem\"></div>\n    <div class=\"aidc-skeleton\" style=\"width: 8rem; height: 1rem\"></div>\n  </div>\n</div>"
    },
    {
      "id": "progress",
      "title": "进度条",
      "group": "反馈",
      "summary": "原生 <progress>：有明确进度的等待。",
      "classes": [
        "aidc-progress"
      ],
      "html": "<progress class=\"aidc-progress\" value=\"62\" max=\"100\">62%</progress>"
    }
  ]
}
