dsh-plugin-core 0.35.2 → 0.35.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/dist/adv/explorer/FileBrowser.js +4 -4
  2. package/dist/adv/explorer/FileBrowser.js.map +1 -1
  3. package/dist/adv/explorer/crumb-nav.js +1 -1
  4. package/dist/adv/explorer/crumb-nav.js.map +1 -1
  5. package/dist/adv/explorer/explorer-css.generated.d.ts +1 -1
  6. package/dist/adv/explorer/explorer-css.generated.d.ts.map +1 -1
  7. package/dist/adv/explorer/explorer-css.generated.js +1 -1
  8. package/dist/adv/explorer/explorer-css.generated.js.map +1 -1
  9. package/dist/adv/explorer/landing.js +1 -1
  10. package/dist/adv/explorer/landing.js.map +1 -1
  11. package/dist/adv/explorer/preview/TextPreview.js +1 -1
  12. package/dist/adv/explorer/preview/TextPreview.js.map +1 -1
  13. package/dist/design/tokens-css.generated.d.ts +1 -1
  14. package/dist/design/tokens-css.generated.d.ts.map +1 -1
  15. package/dist/design/tokens-css.generated.js +1 -1
  16. package/dist/design/tokens-css.generated.js.map +1 -1
  17. package/dist/ui/actions/Button.d.ts +4 -0
  18. package/dist/ui/actions/Button.d.ts.map +1 -1
  19. package/dist/ui/actions/Button.js +7 -5
  20. package/dist/ui/actions/Button.js.map +1 -1
  21. package/dist/ui/actions/button-css.generated.d.ts +1 -1
  22. package/dist/ui/actions/button-css.generated.d.ts.map +1 -1
  23. package/dist/ui/actions/button-css.generated.js +1 -1
  24. package/dist/ui/actions/button-css.generated.js.map +1 -1
  25. package/dist/ui/display/Card.d.ts +4 -0
  26. package/dist/ui/display/Card.d.ts.map +1 -1
  27. package/dist/ui/display/Card.js +2 -0
  28. package/dist/ui/display/Card.js.map +1 -1
  29. package/dist/ui/display/CodeViewer.js +1 -1
  30. package/dist/ui/display/CodeViewer.js.map +1 -1
  31. package/dist/ui/display/ListRow.d.ts +38 -0
  32. package/dist/ui/display/ListRow.d.ts.map +1 -0
  33. package/dist/ui/display/ListRow.js +69 -0
  34. package/dist/ui/display/ListRow.js.map +1 -0
  35. package/dist/ui/display/card-css.generated.d.ts +1 -1
  36. package/dist/ui/display/card-css.generated.d.ts.map +1 -1
  37. package/dist/ui/display/card-css.generated.js +1 -1
  38. package/dist/ui/display/card-css.generated.js.map +1 -1
  39. package/dist/ui/display/code-viewer-css.generated.d.ts +1 -1
  40. package/dist/ui/display/code-viewer-css.generated.d.ts.map +1 -1
  41. package/dist/ui/display/code-viewer-css.generated.js +1 -1
  42. package/dist/ui/display/code-viewer-css.generated.js.map +1 -1
  43. package/dist/ui/display/list-row-css.d.ts +2 -0
  44. package/dist/ui/display/list-row-css.d.ts.map +1 -0
  45. package/dist/ui/display/list-row-css.generated.d.ts +2 -0
  46. package/dist/ui/display/list-row-css.generated.d.ts.map +1 -0
  47. package/dist/ui/display/list-row-css.generated.js +4 -0
  48. package/dist/ui/display/list-row-css.generated.js.map +1 -0
  49. package/dist/ui/display/list-row-css.js +7 -0
  50. package/dist/ui/display/list-row-css.js.map +1 -0
  51. package/dist/ui/feedback/Modal.js +1 -1
  52. package/dist/ui/feedback/Modal.js.map +1 -1
  53. package/dist/ui/feedback/SideSheet.js +1 -1
  54. package/dist/ui/feedback/SideSheet.js.map +1 -1
  55. package/dist/ui/feedback/Toast.d.ts.map +1 -1
  56. package/dist/ui/feedback/Toast.js +15 -8
  57. package/dist/ui/feedback/Toast.js.map +1 -1
  58. package/dist/ui/feedback/feedback-css.generated.d.ts +1 -1
  59. package/dist/ui/feedback/feedback-css.generated.d.ts.map +1 -1
  60. package/dist/ui/feedback/feedback-css.generated.js +1 -1
  61. package/dist/ui/feedback/feedback-css.generated.js.map +1 -1
  62. package/dist/ui/index.d.ts +1 -0
  63. package/dist/ui/index.d.ts.map +1 -1
  64. package/dist/ui/index.js +2 -0
  65. package/dist/ui/index.js.map +1 -1
  66. package/dist/ui/infra/panel-css.generated.d.ts +1 -1
  67. package/dist/ui/infra/panel-css.generated.d.ts.map +1 -1
  68. package/dist/ui/infra/panel-css.generated.js +1 -1
  69. package/dist/ui/infra/panel-css.generated.js.map +1 -1
  70. package/dist/ui/infra/side-panel-css.generated.d.ts +1 -1
  71. package/dist/ui/infra/side-panel-css.generated.d.ts.map +1 -1
  72. package/dist/ui/infra/side-panel-css.generated.js +1 -1
  73. package/dist/ui/infra/side-panel-css.generated.js.map +1 -1
  74. package/dist/ui/inputs/datetime-css.generated.d.ts +1 -1
  75. package/dist/ui/inputs/datetime-css.generated.d.ts.map +1 -1
  76. package/dist/ui/inputs/datetime-css.generated.js +1 -1
  77. package/dist/ui/inputs/datetime-css.generated.js.map +1 -1
  78. package/dist/ui/inputs/picker-css.generated.d.ts +1 -1
  79. package/dist/ui/inputs/picker-css.generated.d.ts.map +1 -1
  80. package/dist/ui/inputs/picker-css.generated.js +1 -1
  81. package/dist/ui/inputs/picker-css.generated.js.map +1 -1
  82. package/dist/ui/layout/PanelDock.js +2 -2
  83. package/dist/ui/layout/PanelDock.js.map +1 -1
  84. package/docs/design/structure.md +3 -3
  85. package/docs/design/style.md +102 -45
  86. package/docs/help/ui.doc.ts +66 -1
  87. package/docs/help/ui.md +61 -1
  88. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
1
  // ⚠️ 生成物,勿手改。真源 = src/design/tokens.css
2
2
  // 由 scripts/gen-css.mjs 生成(`pnpm run gen:css`):改样式请改那个 .css 文件后重新生成。
3
- export const TOKENS_CSS_TEMPLATE = "\n/* ── 文字(宿主 label 四档 + 反色面用字)────────────────────────────── */\nbody{\n --dshpc-fg:var(--dsw-alias-label-primary,#1f2328);\n --dshpc-fg-2:var(--dsw-alias-label-secondary,#5c6370);\n --dshpc-fg-3:var(--dsw-alias-label-tertiary,#767d87);\n --dshpc-fg-4:var(--dsw-alias-label-caption,#9aa1ab);\n --dshpc-fg-dim:var(--dsw-alias-label-dimmed,#b9bfc7);\n /* 反色面上的字(实心钮 / 角标):暗色下是 bluish-1000,故用 -foreground 而非 -inverted */\n --dshpc-fg-inverse:var(--dsw-alias-label-primary-foreground,#fff);\n\n /* ── 面(宿主 bg-layer 三档 + 下沉轨道底)──────────────────────────── */\n --dshpc-surface-1:var(--dsw-alias-bg-layer-1,#fff);\n --dshpc-surface-2:var(--dsw-alias-bg-layer-2,#fff);\n --dshpc-surface-3:var(--dsw-alias-bg-layer-3,#fff);\n /* 「选中亮片」的底盘色(配 --dshpc-shadow-raised 用) */\n --dshpc-surface-raised:var(--dsw-alias-bg-layer-1,#fff);\n /* 轨道 / 下沉底(官方分段控件轨道用的就是这条) */\n --dshpc-surface-sunken:var(--dsw-alias-interactive-bg-hover,rgba(38,49,72,.06));\n /* 整页 / 编辑器底(bg-base) */\n --dshpc-surface-base:var(--dsw-alias-bg-base,#fff);\n /* 自绘浮层 / 菜单卡的不透明底(= base;不要用半透明的 specific-menu) */\n --dshpc-surface-menu:var(--dshpc-surface-base);\n /* markdown 代码块面 / 字体(会话镜像里用到) */\n --dshpc-code-surface:var(--dsw-alias-markdown-code-block,rgba(128,128,128,.10));\n --dshpc-code-font:var(--dsw-font-markdown-code-block-small,12px/18px var(--ds-font-family-code,monospace));\n /* 警告文字色(宿主 state-warn-label) */\n --dshpc-warning-label:var(--dsw-alias-state-warn-label,#f5a623);\n /* 固定中性实面(自绘浮层、深色主题下必须自己变的那几个)——只有它需要暗色覆盖 */\n --dshpc-solid:var(--dsw-static-neutral-00,#fff);\n --dshpc-on-solid:var(--dsw-alias-label-primary,#1f2328);\n /* 交付文件卡那种「浅底盘 + hover 加深」两拍 */\n --dshpc-plate:var(--dsw-static-neutral-50,#fafafa);\n --dshpc-plate-hover:var(--dsw-static-neutral-100,#f5f5f5);\n /* ⚠️ 这些**固定中性面一律用 rgba 字面量**(2026-10-19 真机教训):不要写成\n 「rgba 回退行 + 嵌 --dsw-static-* 的 color-mix 行」两条同名声明——自定义属性**后者恒胜**,\n 哪怕它的值在宿主里算不出来(static 变量 invalid)⇒ 整条 token 作废、rgba 兜底一起被废,\n 0.2.6 里 Segmented 轨道全透明就是这么来的。要跟宿主主题联动的面用 alias token(那些实测有效)。 */\n --dshpc-icon-plate:rgba(255,255,255,.5);\n /* 表头底:浅色主题**偏深**,且必须**比斑马纹(--dshpc-plate)再深一档**——\n 两者不能撞色(用户 2026-10-02:表头跟斑马纹一模一样)。 */\n --dshpc-head-bg:var(--dsw-static-neutral-100,#f5f5f5);\n /* 表格底 / 行 hover(2026-10-30 用户二次定案:表头与通栏**互换**底色):\n 表头默认底 = 通栏原来那层灰(--dshpc-surface-sunken,跟着宿主交互面走);\n 通栏默认底 = 表头原来那色(亮 #f6f8fa / 暗 #151b23,参考图实测,与深色段同源);\n 行 hover 是「一层极淡的黑」≈1.5%(用户:再浅一半,要特别淡)。 */\n --dshpc-table-head-bg:var(--dshpc-surface-sunken);\n --dshpc-table-banner-bg:#f6f8fa;\n --dshpc-table-row-hover:rgba(15,15,15,.015);\n /* 图标小底板(产出物):浅色下要**看得见**(原先取 plate ⇒ 在白底上等于没有);hover 加倍。 */\n --dshpc-chip-bg:rgba(15,15,15,.07);\n --dshpc-chip-bg-hover:rgba(15,15,15,.14);\n /* 展开行:**带透明度的蓝**——不是灰、也不是纯色,透出卡片底色,一眼看出「这是展开的」\n (用户 2026-10-02:灰色跟斑马纹分不出来)。内容区再淡一档,形成「行深 / 内容浅」的区隔。 */\n --dshpc-open-bg:rgba(37,99,235,.10);\n --dshpc-open-bg-soft:rgba(37,99,235,.05);\n --dshpc-card-hover:rgba(37,99,235,.07);\n\n /* ── 描边四档(宿主真值:l1 4% / l2 10% / l3 12% / l4 16%)────────── */\n --dshpc-border-faint:var(--dsw-alias-border-l1,#0000000a);\n --dshpc-border:var(--dsw-alias-border-l2,#0000001a);\n --dshpc-border-strong:var(--dsw-alias-border-l3,#0000001f);\n --dshpc-border-heavy:var(--dsw-alias-border-l4,#00000029);\n\n /* ── 品牌 / 语义色 ────────────────────────────────────────────────── */\n /* 品牌「面」色:明色近黑、暗色近白(官方 Switch 选中态即此),**不是蓝色** */\n --dshpc-accent:var(--dsw-alias-brand-primary,#0f1115);\n /* 蓝色:强调 / 选中 / 焦点,一律走这条 */\n --dshpc-business:var(--dsw-alias-state-business-primary,#3b5bdb);\n --dshpc-success:var(--dsw-alias-state-success-primary,#22c55e);\n /* ⚠️ 是 state-warn(不是 state-warning,后者宿主无此定义) */\n --dshpc-warning:var(--dsw-alias-state-warn-primary,#f59e0b);\n --dshpc-danger:var(--dsw-alias-state-error-primary,#ec1313);\n --dshpc-link:var(--dsw-alias-link,#3b5bdb);\n /* 语义色**实面**上的字(角标 / 实心提示):宿主红绿黄三色都是中调 ⇒ 白字两个主题都可读,\n 故这是一条与主题无关的常量;不要拿 --dshpc-fg-inverse 顶——它在暗色下是近黑,压在红底上看不清。 */\n --dshpc-on-signal:#fff;\n /* 黄底上的字:黄色是中高明度,白字看不清 ⇒ 固定深色(与主题无关)。 */\n --dshpc-on-warning:#1f2328;\n /* 告警严重度的圆点底色(2026-11-03 从 feedback.css 收到这里)。\n 与主题无关的一组常量:这几个色要在任意底色上都认得出来,所以**不跟宿主 state 色走**\n (宿主 state-warn-primary 偏亮,压白 ✕ 看不清)。语义色改动请只改这里。 */\n --dshpc-sev-info:#2563eb;\n --dshpc-sev-success:#16a34a;\n --dshpc-sev-warning:#d97706;\n --dshpc-sev-error:#dc2626;\n\n /* ── 实心按钮的 hover / active 派生态(2026-10-19 用户点名)─────────────────\n 原实现是 :hover 直接压 opacity .9:黑底压 10% 几乎看不出来,用户原话「完全感觉不到颜色变了」。\n ⇒ 改成对底色做**明确的混色**(压 22% / 34%),不用 opacity:\n · 亮色主题:黑底(--dshpc-accent)掺白提亮;红 / 绿 / 黄 / 蓝底掺黑压深;\n · 暗色主题:反过来(暗底掺白、亮底掺黑)。\n 混色对象是**固定中性色字面量**(#fff / #000),不依赖宿主 static-neutral 是否存在;\n 旧内核不认 color-mix 时整条声明作废 ⇒ 回落各档原色(可接受:仍可点,只是没有 hover 反馈)。 */\n --dshpc-accent-hover:color-mix(in srgb,var(--dshpc-accent) 78%,#ffffff);\n --dshpc-accent-active:color-mix(in srgb,var(--dshpc-accent) 64%,#ffffff);\n --dshpc-danger-hover:color-mix(in srgb,var(--dshpc-danger) 78%,#000000);\n --dshpc-danger-active:color-mix(in srgb,var(--dshpc-danger) 64%,#000000);\n --dshpc-success-hover:color-mix(in srgb,var(--dshpc-success) 78%,#000000);\n --dshpc-success-active:color-mix(in srgb,var(--dshpc-success) 64%,#000000);\n --dshpc-warning-hover:color-mix(in srgb,var(--dshpc-warning) 78%,#000000);\n --dshpc-warning-active:color-mix(in srgb,var(--dshpc-warning) 64%,#000000);\n --dshpc-business-hover:color-mix(in srgb,var(--dshpc-business) 78%,#000000);\n --dshpc-business-active:color-mix(in srgb,var(--dshpc-business) 64%,#000000);\n /* 语义色**浅底**:状态色系的「一块底色」——执行记录页每条流水账的块底就是它\n (用户 2026-10-04:正常态给同色系很浅的透明底、失败用红底透出来)。\n 用 「color-mix」 现算而不写死 rgba:状态色本身跟随宿主 alias,主题一换自动成立。\n ⚠️ **深色下要更淡**:用户 2026-10-04「深色风格的绿色和红色好像都有点深」⇒ dark 段\n 把这四条压到 5%(更贴近面板底、存在感更弱);浅色段维持 8%。两端各自给值,不共用一条曲线。\n 命名收在 tokens.ts 单点(本仓硬规矩:业务文件不许自造 --dshpc-*)。 */\n --dshpc-success-soft:color-mix(in srgb,var(--dshpc-success) 8%,transparent);\n --dshpc-warning-soft:color-mix(in srgb,var(--dshpc-warning) 8%,transparent);\n --dshpc-danger-soft:color-mix(in srgb,var(--dshpc-danger) 8%,transparent);\n --dshpc-business-soft:color-mix(in srgb,var(--dshpc-business) 8%,transparent);\n\n /* ── 扩展语义色(2026-10-29 用户拍板:分类 / 图表常用色八支)──────────────\n 宿主无对应 alias ⇒ 写死 hex(不跟随宿主换肤);实心面字色统一走 --dshpc-on-signal(白),\n 因八支明度都低于黄 / 青柠,白字两主题均 ≥4.5:1 可读。每条自带 hover/active/soft 派生;\n 暗色段只覆盖派生(base 写死、两主题同值)。 */\n --dshpc-purple:#9333ea;\n --dshpc-purple-hover:color-mix(in srgb,var(--dshpc-purple) 78%,#000000);\n --dshpc-purple-active:color-mix(in srgb,var(--dshpc-purple) 64%,#000000);\n --dshpc-purple-soft:color-mix(in srgb,var(--dshpc-purple) 8%,transparent);\n --dshpc-pink:#db2777;\n --dshpc-pink-hover:color-mix(in srgb,var(--dshpc-pink) 78%,#000000);\n --dshpc-pink-active:color-mix(in srgb,var(--dshpc-pink) 64%,#000000);\n --dshpc-pink-soft:color-mix(in srgb,var(--dshpc-pink) 8%,transparent);\n --dshpc-cyan:#0e7490;\n --dshpc-cyan-hover:color-mix(in srgb,var(--dshpc-cyan) 78%,#000000);\n --dshpc-cyan-active:color-mix(in srgb,var(--dshpc-cyan) 64%,#000000);\n --dshpc-cyan-soft:color-mix(in srgb,var(--dshpc-cyan) 8%,transparent);\n --dshpc-teal:#0f766e;\n --dshpc-teal-hover:color-mix(in srgb,var(--dshpc-teal) 78%,#000000);\n --dshpc-teal-active:color-mix(in srgb,var(--dshpc-teal) 64%,#000000);\n --dshpc-teal-soft:color-mix(in srgb,var(--dshpc-teal) 8%,transparent);\n --dshpc-orange:#c2410c;\n --dshpc-orange-hover:color-mix(in srgb,var(--dshpc-orange) 78%,#000000);\n --dshpc-orange-active:color-mix(in srgb,var(--dshpc-orange) 64%,#000000);\n --dshpc-orange-soft:color-mix(in srgb,var(--dshpc-orange) 8%,transparent);\n --dshpc-indigo:#4f46e5;\n --dshpc-indigo-hover:color-mix(in srgb,var(--dshpc-indigo) 78%,#000000);\n --dshpc-indigo-active:color-mix(in srgb,var(--dshpc-indigo) 64%,#000000);\n --dshpc-indigo-soft:color-mix(in srgb,var(--dshpc-indigo) 8%,transparent);\n --dshpc-rose:#e11d48;\n --dshpc-rose-hover:color-mix(in srgb,var(--dshpc-rose) 78%,#000000);\n --dshpc-rose-active:color-mix(in srgb,var(--dshpc-rose) 64%,#000000);\n --dshpc-rose-soft:color-mix(in srgb,var(--dshpc-rose) 8%,transparent);\n --dshpc-slate:#475569;\n --dshpc-slate-hover:color-mix(in srgb,var(--dshpc-slate) 78%,#000000);\n --dshpc-slate-active:color-mix(in srgb,var(--dshpc-slate) 64%,#000000);\n --dshpc-slate-soft:color-mix(in srgb,var(--dshpc-slate) 8%,transparent);\n\n /* ⚠️ 2026-10-18 用户拍板:宿主 alias 的 hover(暗色白 8% / 亮色 6%)**太弱**,\n 「移上去要仔细看才看得出来」⇒ 不再委托宿主 hover 别名,改为自掺中性色并加重:\n 亮色掺黑 10%、暗色掺白 14%(active 再加一档)。按钮 / 分段轨道 / 各类 hover 底同时受益。\n ⚠️ 必须保留 rgba 兜底行在前(本文件惯例,见 icon-plate 注释):掺的是**固定中性色**\n (neutral-900=#0f0f0f / neutral-00=#fff),预计算无损;旧内核不认 color-mix 时走兜底,\n 否则整条 background:var(--seg-track) 作废 ⇒ 分段轨道透明(真踩过:预览站轨道消失)。 */\n --dshpc-hover:rgba(15,15,15,.10);\n --dshpc-active:rgba(15,15,15,.18);\n /* 分段控件轨道底:专用 token(rgba 字面量、不借 --dshpc-hover 中转)——\n 2026-10-19 教训:变量链中间任何一环 invalid ⇒ background 整条作废、轨道全透明。\n 亮色:黑 7%(比 hover 的 10% 淡一档,选中白片才跳得出)。 */\n --dshpc-seg-track:rgba(15,15,15,.07);\n --dshpc-mask:var(--dsw-alias-bg-mask-1,#0000003d);\n /* 弹窗锁定态给**自绘控件**的降透明度档(2026-11-05)。放在 token 里是为了让消费方\n 在自己元素上写 --dshpc-lock-dim: 1 就能退出这条效果,不用 !important 打架。 */\n --dshpc-lock-dim:.5;\n /* 「选中面」(2026-10-06,任务日程页首创)= 当前底色**朝更深掺 12% 文字色**:\n 浅色主题下文字色是黑 ⇒ 选中面比常态底色**深一档**。深色分支见 body[data-ds-dark-theme](朝背景色掺)。\n 语义:标记「正在看的东西」,比常态明显、又不许盖住内容(不许用半透明叠状态色)。 */\n --dshpc-selected-bg:color-mix(in srgb,var(--dshpc-surface-1) 88%,var(--dshpc-fg));\n /* 任务日程页本月格默认底(2026-10-06 → 续2):浅色下给**淡蓝**(business 8% 透白底)——\n 参照用户参考稿里未选中日程块 / Tuesday 列的那种蓝、再浅一点点;\n 相邻月补位格仍走 --dshpc-surface-2(更灰),不受影响。\n 深色段维持 #23262e(用户:深色 UI 已差不多,不动)。 */\n --dshpc-cal-cell-bg:color-mix(in srgb,var(--dshpc-business) 8%,var(--dshpc-surface-1));\n /* 任务日程页「点开某天」展开的面板底(2026-10-06 续):浅色下**无限接近白、只带一丁点灰**\n (neutral-50 = #fafafa)——面板里装半透明执行记录列表,底再深整片就发糊发灰;\n 深色段沿用原 selected-bg 暗值,保持不动。 */\n --dshpc-cal-panel-bg:var(--dsw-static-neutral-50,#fafafa);\n /* 任务日程页本月格 hover 底(浅色段,2026-10-06 续3):不再走灰色通用交互底——\n 鼠标移上去应是「更亮一点点的蓝」(与深色段同语义:hover = 提亮的蓝,不是灰下去)。\n 浓度**介于**表头蓝(14%)与未选中格蓝(8%)之间、略偏表头一侧:business 12% 透白底\n (比表头浅一点、比未选中格深一点)。 */\n --dshpc-cal-cell-hover:color-mix(in srgb,var(--dshpc-business) 12%,var(--dshpc-surface-1));\n\n /* ── 投影 / 焦点 ──────────────────────────────────────────────────── */\n --dshpc-shadow-1:var(--dsw-elevation-soft,0 4px 16px 0 #00000008);\n /* 亮片自带的浮起感(选中态用;与 --dshpc-surface-raised 配对) */\n --dshpc-shadow-raised:var(--dsw-elevation-soft,0 4px 16px 0 #00000008);\n --dshpc-shadow-2:var(--dsw-shadow-lv3,0 12px 32px 0 #00000014);\n /* 键盘焦点环。⚠️ 不用宿主 --dsw-focus-ring-color:它默认值是 transparent(兜底不生效、会隐身) */\n --dshpc-focus:var(--dsw-alias-state-business-primary,#3b5bdb);\n\n /* ── 圆角(宿主真值 4 / 8 / 12 / 16 / 20 / 28)─────────────────────── */\n --dshpc-radius-xs:var(--dsw-radius-xs,4px);\n --dshpc-radius-sm:var(--dsw-radius-sm,8px);\n --dshpc-radius-md:var(--dsw-radius-md,12px);\n --dshpc-radius-lg:var(--dsw-radius-lg,16px);\n --dshpc-radius-xl:var(--dsw-radius-xl,20px);\n --dshpc-radius-panel:var(--dsw-radius-panel,28px);\n /* 全圆(胶囊标签):宿主的 radius 档最大只有 28px,撑不满 24px 高的 chip */\n --dshpc-radius-pill:999px;\n\n /* ── 间距四拍(只许用这四档,不许出现 5 / 7 / 9px)────────────────── */\n --dshpc-space-1:4px;\n --dshpc-space-2:8px;\n --dshpc-space-3:12px;\n --dshpc-space-4:16px;\n\n /* ── 控件高度:离散三档(控件用 size=\"sm|md|lg\" 选;调用点不许自定义高度,\n 真不够用才允许在调用点本地覆盖 --dshpc-control-h-*,属例外而非常态)── */\n --dshpc-control-h-sm:24px;\n --dshpc-control-h-md:28px;\n --dshpc-control-h-lg:32px;\n\n /* ── 字号 / 行高:直绑宿主字号族(宿主真值 11 / 12 / 13 / 14 / 16)───── */\n --dshpc-font-xs:var(--dsw-font-xxxs-11-font-size,11px);\n --dshpc-font-sm:var(--dsw-font-xxs-12-font-size,12px);\n --dshpc-font-md:var(--dsw-font-xs-13-font-size,13px);\n --dshpc-font-lg:var(--dsw-font-s-14-font-size,14px);\n --dshpc-font-xl:var(--dsw-font-base-16-font-size,16px);\n --dshpc-line-xs:var(--dsw-font-xxxs-11-line-height,14px);\n --dshpc-line-sm:var(--dsw-font-xxs-12-line-height,18px);\n --dshpc-line-md:var(--dsw-font-xs-13-line-height,20px);\n --dshpc-line-lg:var(--dsw-font-s-14-line-height,22px);\n --dshpc-line-xl:var(--dsw-font-base-16-line-height,24px);\n --dshpc-font-mono:var(--ds-font-family-code,monospace);\n\n /* ── 层级阶梯(业务文件不许再写裸 z-index)───────────────────────── */\n /* 页面级预览分栏 → 抽屉(新建/编辑)→ 弹窗/确认框 → 浮层菜单 → 浮层提示 */\n /* **整条阶梯都必须低于官方浮点 1000 档**(2026-11-06 用户拍板):官方原语\n Modal / ImageLightbox 是 z-index 1000(body portal),Menu / Toast 是 1100。\n 我们只是宿主里的一个页面 ⇒ 宿主浮点恒在我们之上;以后弹窗里再开官方模态/预览,\n 不必逐个场景「临时让位」(此前 1070 压住官方原图预览就是这么踩出来的)。 */\n /* 内容层吸顶(天标签 / 表头这类「跟着滚但压住同层内容」的元素):只压同层兄弟,\n 必须低于下面所有浮层档 —— 所以它不是「开新浮层档」,而是内容层内部的排序位。 */\n --dshpc-z-sticky:10;\n --dshpc-z-dock:900;\n --dshpc-z-drawer:920;\n --dshpc-z-modal:940;\n /* 收起后的耳朵:必须高于弹窗遮罩,否则弹窗一开就点不到它(2026-11-04 用户真机)。\n 只给耳朵用,页面级分栏本体仍是布局成员,不跟着抬高。 */\n --dshpc-z-ear:950;\n --dshpc-z-menu:960;\n --dshpc-z-tip:970;\n /* 语义别名(2026-11-03 面板皮肤统一):业务文件只许用这两个说「我要一层浮层」,\n 不再各自写浮层字面量。\n panel = 浮层面板本体(picker 弹窗、锚定面板);\n popmenu = 叠在面板之上的菜单(▾ 选层、Picker 下拉)与其透明遮罩。 */\n --dshpc-z-panel:var(--dshpc-z-menu);\n --dshpc-z-popmenu:var(--dshpc-z-tip);\n\n /* ── 动效 ─────────────────────────────────────────────────────────── */\n --dshpc-dur:var(--ds-transition-duration,.2s);\n --dshpc-dur-fast:var(--ds-transition-duration-fast,.12s);\n --dshpc-ease:var(--ds-ease-in-out,cubic-bezier(.4,0,.2,1));\n /* 运行中状态的脉动时长(2026-10-06 统一前后两端:任务配置里的绿呼吸 → 蓝、放慢;\n 执行记录里的蓝闪 → 放慢一点。两者用同一个值,动画形状本就一致)。 */\n --dshpc-dur-run:500ms;\n}\n\n/* ── 明暗差异的**唯一**落点 ──────────────────────────────────────────────\n 判据 = body[data-ds-dark-theme](宿主 0.2.0-rc.2 源码核实:启动脚本 toggleAttribute 写入,\n 唯一明暗判据;插件禁止用 prefers-color-scheme —— 它跟的是系统、不是用户在宿主里的选择)。\n 下面只放 alias 表达不了的「固定中性面」;颜色若能靠 alias 自动跟随,一律不要写在这里。 */\nbody[data-ds-dark-theme]{\n /* 深色段的蓝**刻意不跟随宿主 alias**(唯一例外):宿主暗色 alias 给的是 #60a5fa 一档的高亮蓝,\n 实心面(Chip / Button info / 日期选中格)压白字会发糊 —— 用户 2026-10-29 实测反馈。\n ⇒ 深色下改定向浅色状态的蓝(#3b5bdb)靠,只在明度上抬一点点,保证它在暗底上仍看得见:\n #4c6bd8 对白字 ≈4.8:1(原亮蓝只有 ~2.3:1),对日历格底 ≈3.2:1 仍过 UI 件的 3:1 线。\n 代价:宿主换品牌色时深色不再自动跟着变,需要这里手动同步。 */\n --dshpc-business:#4c6bd8;\n --dshpc-solid:var(--dsw-static-neutral-900,#0f0f0f);\n --dshpc-on-solid:var(--dsw-static-neutral-00,#fff);\n /* 实心按钮 hover / active(暗色版):黑底(浅色主题的近黑 → 暗色下的近白)掺黑压深;\n 红 / 绿 / 黄 / 蓝掺白提亮。与亮色段方向相反,保证两种主题下「一眼看出变了」。 */\n --dshpc-accent-hover:color-mix(in srgb,var(--dshpc-accent) 80%,#000000);\n --dshpc-accent-active:color-mix(in srgb,var(--dshpc-accent) 66%,#000000);\n --dshpc-danger-hover:color-mix(in srgb,var(--dshpc-danger) 78%,#ffffff);\n --dshpc-danger-active:color-mix(in srgb,var(--dshpc-danger) 64%,#ffffff);\n --dshpc-success-hover:color-mix(in srgb,var(--dshpc-success) 78%,#ffffff);\n --dshpc-success-active:color-mix(in srgb,var(--dshpc-success) 64%,#ffffff);\n --dshpc-warning-hover:color-mix(in srgb,var(--dshpc-warning) 78%,#ffffff);\n --dshpc-warning-active:color-mix(in srgb,var(--dshpc-warning) 64%,#ffffff);\n /* 同上:掺白比例从 22% / 36% 收到 12% / 22% —— 底色已变深,照旧比例提亮会在 hover 瞬间\n 把白字对比打回 ~3:1(正是用户嫌糊的那一档);收窄后 hover 仍可感知、字仍清晰。 */\n --dshpc-business-hover:color-mix(in srgb,var(--dshpc-business) 88%,#ffffff);\n --dshpc-business-active:color-mix(in srgb,var(--dshpc-business) 78%,#ffffff);\n /* 暗色 hover 掺白 14% / active 24%(对齐上面 2026-10-18 的加重拍板)。rgba 兜底行同上。 */\n --dshpc-hover:rgba(255,255,255,.14);\n --dshpc-active:rgba(255,255,255,.24);\n /* 分段轨道(暗色版):白 10%——比 hover 淡一档,选中亮片才跳得出。 */\n --dshpc-seg-track:rgba(255,255,255,.10);\n --dshpc-plate:var(--dsw-static-neutral-850,#212123);\n --dshpc-plate-hover:var(--dsw-static-neutral-800,#292929);\n --dshpc-icon-plate:rgba(255,255,255,.05);\n /* 暗色主题**反过来**:表头要比卡片面**亮**、比斑马纹再**浅一档**(用户:纯黑背景没法看)。 */\n --dshpc-head-bg:var(--dshpc-surface-2);\n /* 表格(2026-10-30 用户二次定案:与通栏互换底色):通栏底取表头原来那色 #151b23\n (亮色段对应 #f6f8fa);表头默认底沿用亮色段定义的 --dshpc-surface-sunken,不在暗色段重写;\n 行 hover 是「一层极淡的白」≈3% —— 暗底上用黑会越悬越暗,看不出「浅灰」反馈。 */\n --dshpc-table-banner-bg:#151b23;\n --dshpc-table-row-hover:rgba(255,255,255,.03);\n /* 暗色底板**微亮**;hover **更亮**(原先 hover 取 plate-hover 反而更淡 ⇒ 鼠标移上去就没了)。 */\n --dshpc-chip-bg:rgba(255,255,255,.08);\n --dshpc-chip-bg-hover:rgba(255,255,255,.16);\n /* 暗色下蓝色要更亮、透明度略高才压得住深底。 */\n --dshpc-open-bg:rgba(96,165,250,.18);\n --dshpc-open-bg-soft:rgba(96,165,250,.08);\n --dshpc-card-hover:rgba(96,165,250,.13);\n /* 语义色**浅底**(深色版):用户嫌深色的绿 / 红「有点深」⇒ 压到 **5%**(浅色段是 8%),\n 更贴近面板底色、存在感更弱;块底与状态色竖条仍同源(竖条是实色,不受这条影响)。 */\n --dshpc-success-soft:color-mix(in srgb,var(--dshpc-success) 5%,transparent);\n --dshpc-warning-soft:color-mix(in srgb,var(--dshpc-warning) 5%,transparent);\n --dshpc-danger-soft:color-mix(in srgb,var(--dshpc-danger) 5%,transparent);\n --dshpc-business-soft:color-mix(in srgb,var(--dshpc-business) 5%,transparent);\n /* 扩展色深色派生:底色写死、hover 掺白 12%/22%(同 business,防白字发糊),soft 5%。 */\n --dshpc-purple-hover:color-mix(in srgb,var(--dshpc-purple) 88%,#ffffff);\n --dshpc-purple-active:color-mix(in srgb,var(--dshpc-purple) 78%,#ffffff);\n --dshpc-purple-soft:color-mix(in srgb,var(--dshpc-purple) 5%,transparent);\n --dshpc-pink-hover:color-mix(in srgb,var(--dshpc-pink) 88%,#ffffff);\n --dshpc-pink-active:color-mix(in srgb,var(--dshpc-pink) 78%,#ffffff);\n --dshpc-pink-soft:color-mix(in srgb,var(--dshpc-pink) 5%,transparent);\n --dshpc-cyan-hover:color-mix(in srgb,var(--dshpc-cyan) 88%,#ffffff);\n --dshpc-cyan-active:color-mix(in srgb,var(--dshpc-cyan) 78%,#ffffff);\n --dshpc-cyan-soft:color-mix(in srgb,var(--dshpc-cyan) 5%,transparent);\n --dshpc-teal-hover:color-mix(in srgb,var(--dshpc-teal) 88%,#ffffff);\n --dshpc-teal-active:color-mix(in srgb,var(--dshpc-teal) 78%,#ffffff);\n --dshpc-teal-soft:color-mix(in srgb,var(--dshpc-teal) 5%,transparent);\n --dshpc-orange-hover:color-mix(in srgb,var(--dshpc-orange) 88%,#ffffff);\n --dshpc-orange-active:color-mix(in srgb,var(--dshpc-orange) 78%,#ffffff);\n --dshpc-orange-soft:color-mix(in srgb,var(--dshpc-orange) 5%,transparent);\n --dshpc-indigo-hover:color-mix(in srgb,var(--dshpc-indigo) 88%,#ffffff);\n --dshpc-indigo-active:color-mix(in srgb,var(--dshpc-indigo) 78%,#ffffff);\n --dshpc-indigo-soft:color-mix(in srgb,var(--dshpc-indigo) 5%,transparent);\n --dshpc-rose-hover:color-mix(in srgb,var(--dshpc-rose) 88%,#ffffff);\n --dshpc-rose-active:color-mix(in srgb,var(--dshpc-rose) 78%,#ffffff);\n --dshpc-rose-soft:color-mix(in srgb,var(--dshpc-rose) 5%,transparent);\n --dshpc-slate-hover:color-mix(in srgb,var(--dshpc-slate) 88%,#ffffff);\n --dshpc-slate-active:color-mix(in srgb,var(--dshpc-slate) 78%,#ffffff);\n --dshpc-slate-soft:color-mix(in srgb,var(--dshpc-slate) 5%,transparent);\n /* 「选中面」(深色版,2026-10-06):掺 **~40% 背景色**(--dshpc-surface-base)⇒ 无限接近页面背景的黑、\n 只比背景略深一点点(用户:深色下展开区压着任务透明绿会发灰,底色要尽量贴近背景才不显灰)。\n ⚠️ 深色下不能掺文字色 —— 那是白,会变亮,选中反而比本月日期浅。 */\n --dshpc-selected-bg:color-mix(in srgb,var(--dshpc-surface-1) 60%,var(--dshpc-surface-base));\n /* 任务日程页本月格的默认底(深色版,2026-10-06):深的、带点灰蓝的暗色(用户给的参考图 ≈ #23262e),\n 比原来的卡片面更沉、更偏蓝灰;选中格仍走 --dshpc-selected-bg(更暗一档),层级不变。 */\n --dshpc-cal-cell-bg:#23262e;\n /* 任务日程页本月格 hover 底(深色段,2026-10-06):原先走 --dshpc-hover(宿主浅色叠加)在深底上显得\n 「灰发亮」,不好看 ⇒ 换成更贴底的蓝调微亮(与 open-bg-soft 同族),hover 时不刺眼、又有反馈。 */\n --dshpc-cal-cell-hover:rgba(96,165,250,.12);\n /* 任务日程页展开面板底(深色段,2026-10-06 续):与原 selected-bg 暗值一致,深色 UI 不动 */\n --dshpc-cal-panel-bg:color-mix(in srgb,var(--dshpc-surface-1) 60%,var(--dshpc-surface-base));\n}\n";
3
+ export const TOKENS_CSS_TEMPLATE = "\n/* ── 文字(宿主 label 四档 + 反色面用字)────────────────────────────── */\nbody{\n --dshpc-fg:var(--dsw-alias-label-primary,#1f2328);\n --dshpc-fg-2:var(--dsw-alias-label-secondary,#5c6370);\n --dshpc-fg-3:var(--dsw-alias-label-tertiary,#767d87);\n --dshpc-fg-4:var(--dsw-alias-label-caption,#9aa1ab);\n --dshpc-fg-dim:var(--dsw-alias-label-dimmed,#b9bfc7);\n /* 反色面上的字(实心钮 / 角标):暗色下是 bluish-1000,故用 -foreground 而非 -inverted */\n --dshpc-fg-inverse:var(--dsw-alias-label-primary-foreground,#fff);\n\n /* ── 面(宿主 bg-layer 三档 + 下沉轨道底)──────────────────────────── */\n --dshpc-surface-1:var(--dsw-alias-bg-layer-1,#fff);\n --dshpc-surface-2:var(--dsw-alias-bg-layer-2,#fff);\n --dshpc-surface-3:var(--dsw-alias-bg-layer-3,#fff);\n /* 「选中亮片」的底盘色(配 --dshpc-shadow-raised 用) */\n --dshpc-surface-raised:var(--dsw-alias-bg-layer-1,#fff);\n /* 轨道 / 下沉底(官方分段控件轨道用的就是这条) */\n --dshpc-surface-sunken:var(--dsw-alias-interactive-bg-hover,rgba(38,49,72,.06));\n /* 整页 / 编辑器底(bg-base) */\n --dshpc-surface-base:var(--dsw-alias-bg-base,#fff);\n /* 自绘浮层 / 菜单卡的不透明底(= base;不要用半透明的 specific-menu) */\n --dshpc-surface-menu:var(--dshpc-surface-base);\n /* markdown 代码块面 / 字体(会话镜像里用到) */\n --dshpc-code-surface:var(--dsw-alias-markdown-code-block,rgba(128,128,128,.10));\n --dshpc-code-font:var(--dsw-font-markdown-code-block-small,12px/18px var(--ds-font-family-code,monospace));\n /* 警告文字色(宿主 state-warn-label) */\n --dshpc-warning-label:var(--dsw-alias-state-warn-label,#f5a623);\n /* 固定中性实面(自绘浮层、深色主题下必须自己变的那几个)——只有它需要暗色覆盖 */\n --dshpc-solid:var(--dsw-static-neutral-00,#fff);\n --dshpc-on-solid:var(--dsw-alias-label-primary,#1f2328);\n /* 交付文件卡那种「浅底盘 + hover 加深」两拍 */\n --dshpc-plate:var(--dsw-static-neutral-50,#fafafa);\n --dshpc-plate-hover:var(--dsw-static-neutral-100,#f5f5f5);\n /* ⚠️ 这些**固定中性面一律用 rgba 字面量**(2026-10-19 真机教训):不要写成\n 「rgba 回退行 + 嵌 --dsw-static-* 的 color-mix 行」两条同名声明——自定义属性**后者恒胜**,\n 哪怕它的值在宿主里算不出来(static 变量 invalid)⇒ 整条 token 作废、rgba 兜底一起被废,\n 0.2.6 里 Segmented 轨道全透明就是这么来的。要跟宿主主题联动的面用 alias token(那些实测有效)。 */\n --dshpc-icon-plate:rgba(255,255,255,.5);\n /* 表头底:浅色主题**偏深**,且必须**比斑马纹(--dshpc-plate)再深一档**——\n 两者不能撞色(用户 2026-10-02:表头跟斑马纹一模一样)。 */\n --dshpc-head-bg:var(--dsw-static-neutral-100,#f5f5f5);\n /* 表格底 / 行 hover(2026-10-30 用户二次定案:表头与通栏**互换**底色):\n 表头默认底 = 通栏原来那层灰(--dshpc-surface-sunken,跟着宿主交互面走);\n 通栏默认底 = 表头原来那色(亮 #f6f8fa / 暗 #151b23,参考图实测,与深色段同源);\n 行 hover 是「一层极淡的黑」≈1.5%(用户:再浅一半,要特别淡)。 */\n --dshpc-table-head-bg:var(--dshpc-surface-sunken);\n --dshpc-table-banner-bg:#f6f8fa;\n --dshpc-table-row-hover:rgba(15,15,15,.015);\n /* 图标小底板(产出物):浅色下要**看得见**(原先取 plate ⇒ 在白底上等于没有);hover 加倍。 */\n --dshpc-chip-bg:rgba(15,15,15,.07);\n --dshpc-chip-bg-hover:rgba(15,15,15,.14);\n /* 展开行:**带透明度的蓝**——不是灰、也不是纯色,透出卡片底色,一眼看出「这是展开的」\n (用户 2026-10-02:灰色跟斑马纹分不出来)。内容区再淡一档,形成「行深 / 内容浅」的区隔。 */\n --dshpc-open-bg:rgba(37,99,235,.10);\n --dshpc-open-bg-soft:rgba(37,99,235,.05);\n --dshpc-card-hover:rgba(37,99,235,.07);\n\n /* ── 描边四档(宿主真值:l1 4% / l2 10% / l3 12% / l4 16%)────────── */\n --dshpc-border-faint:var(--dsw-alias-border-l1,#0000000a);\n --dshpc-border:var(--dsw-alias-border-l2,#0000001a);\n --dshpc-border-strong:var(--dsw-alias-border-l3,#0000001f);\n --dshpc-border-heavy:var(--dsw-alias-border-l4,#00000029);\n\n /* ── 品牌 / 语义色 ────────────────────────────────────────────────── */\n /* 品牌「面」色:明色近黑、暗色近白(官方 Switch 选中态即此),**不是蓝色** */\n --dshpc-accent:var(--dsw-alias-brand-primary,#0f1115);\n /* 蓝色:强调 / 选中 / 焦点,一律走这条 */\n --dshpc-business:var(--dsw-alias-state-business-primary,#3b5bdb);\n --dshpc-success:var(--dsw-alias-state-success-primary,#22c55e);\n /* ⚠️ 是 state-warn(不是 state-warning,后者宿主无此定义) */\n --dshpc-warning:var(--dsw-alias-state-warn-primary,#f59e0b);\n --dshpc-danger:var(--dsw-alias-state-error-primary,#ec1313);\n --dshpc-link:var(--dsw-alias-link,#3b5bdb);\n /* 语义色**实面**上的字(角标 / 实心提示):宿主红绿黄三色都是中调 ⇒ 白字两个主题都可读,\n 故这是一条与主题无关的常量;不要拿 --dshpc-fg-inverse 顶——它在暗色下是近黑,压在红底上看不清。 */\n --dshpc-on-signal:#fff;\n /* 黄底上的字:黄色是中高明度,白字看不清 ⇒ 固定深色(与主题无关)。 */\n --dshpc-on-warning:#1f2328;\n /* 告警严重度的圆点底色(2026-11-03 从 feedback.css 收到这里)。\n 与主题无关的一组常量:这几个色要在任意底色上都认得出来,所以**不跟宿主 state 色走**\n (宿主 state-warn-primary 偏亮,压白 ✕ 看不清)。语义色改动请只改这里。 */\n --dshpc-sev-info:#2563eb;\n --dshpc-sev-success:#16a34a;\n --dshpc-sev-warning:#d97706;\n --dshpc-sev-error:#dc2626;\n\n /* ── 实心按钮的 hover / active 派生态(2026-10-19 用户点名)─────────────────\n 原实现是 :hover 直接压 opacity .9:黑底压 10% 几乎看不出来,用户原话「完全感觉不到颜色变了」。\n ⇒ 改成对底色做**明确的混色**(压 22% / 34%),不用 opacity:\n · 亮色主题:黑底(--dshpc-accent)掺白提亮;红 / 绿 / 黄 / 蓝底掺黑压深;\n · 暗色主题:反过来(暗底掺白、亮底掺黑)。\n 混色对象是**固定中性色字面量**(#fff / #000),不依赖宿主 static-neutral 是否存在;\n 旧内核不认 color-mix 时整条声明作废 ⇒ 回落各档原色(可接受:仍可点,只是没有 hover 反馈)。 */\n --dshpc-accent-hover:color-mix(in srgb,var(--dshpc-accent) 78%,#ffffff);\n --dshpc-accent-active:color-mix(in srgb,var(--dshpc-accent) 64%,#ffffff);\n --dshpc-danger-hover:color-mix(in srgb,var(--dshpc-danger) 78%,#000000);\n --dshpc-danger-active:color-mix(in srgb,var(--dshpc-danger) 64%,#000000);\n --dshpc-success-hover:color-mix(in srgb,var(--dshpc-success) 78%,#000000);\n --dshpc-success-active:color-mix(in srgb,var(--dshpc-success) 64%,#000000);\n --dshpc-warning-hover:color-mix(in srgb,var(--dshpc-warning) 78%,#000000);\n --dshpc-warning-active:color-mix(in srgb,var(--dshpc-warning) 64%,#000000);\n --dshpc-business-hover:color-mix(in srgb,var(--dshpc-business) 78%,#000000);\n --dshpc-business-active:color-mix(in srgb,var(--dshpc-business) 64%,#000000);\n /* 语义色**浅底**:状态色系的「一块底色」——执行记录页每条流水账的块底就是它\n (用户 2026-10-04:正常态给同色系很浅的透明底、失败用红底透出来)。\n 用 「color-mix」 现算而不写死 rgba:状态色本身跟随宿主 alias,主题一换自动成立。\n ⚠️ **深色下要更淡**:用户 2026-10-04「深色风格的绿色和红色好像都有点深」⇒ dark 段\n 把这四条压到 5%(更贴近面板底、存在感更弱);浅色段维持 8%。两端各自给值,不共用一条曲线。\n 命名收在 tokens.ts 单点(本仓硬规矩:业务文件不许自造 --dshpc-*)。 */\n --dshpc-success-soft:color-mix(in srgb,var(--dshpc-success) 8%,transparent);\n --dshpc-warning-soft:color-mix(in srgb,var(--dshpc-warning) 8%,transparent);\n --dshpc-danger-soft:color-mix(in srgb,var(--dshpc-danger) 8%,transparent);\n --dshpc-business-soft:color-mix(in srgb,var(--dshpc-business) 8%,transparent);\n\n /* ── 扩展语义色(2026-10-29 用户拍板:分类 / 图表常用色八支)──────────────\n 宿主无对应 alias ⇒ 写死 hex(不跟随宿主换肤);实心面字色统一走 --dshpc-on-signal(白),\n 因八支明度都低于黄 / 青柠,白字两主题均 ≥4.5:1 可读。每条自带 hover/active/soft 派生;\n 暗色段只覆盖派生(base 写死、两主题同值)。 */\n --dshpc-purple:#9333ea;\n --dshpc-purple-hover:color-mix(in srgb,var(--dshpc-purple) 78%,#000000);\n --dshpc-purple-active:color-mix(in srgb,var(--dshpc-purple) 64%,#000000);\n --dshpc-purple-soft:color-mix(in srgb,var(--dshpc-purple) 8%,transparent);\n --dshpc-pink:#db2777;\n --dshpc-pink-hover:color-mix(in srgb,var(--dshpc-pink) 78%,#000000);\n --dshpc-pink-active:color-mix(in srgb,var(--dshpc-pink) 64%,#000000);\n --dshpc-pink-soft:color-mix(in srgb,var(--dshpc-pink) 8%,transparent);\n --dshpc-cyan:#0e7490;\n --dshpc-cyan-hover:color-mix(in srgb,var(--dshpc-cyan) 78%,#000000);\n --dshpc-cyan-active:color-mix(in srgb,var(--dshpc-cyan) 64%,#000000);\n --dshpc-cyan-soft:color-mix(in srgb,var(--dshpc-cyan) 8%,transparent);\n --dshpc-teal:#0f766e;\n --dshpc-teal-hover:color-mix(in srgb,var(--dshpc-teal) 78%,#000000);\n --dshpc-teal-active:color-mix(in srgb,var(--dshpc-teal) 64%,#000000);\n --dshpc-teal-soft:color-mix(in srgb,var(--dshpc-teal) 8%,transparent);\n --dshpc-orange:#c2410c;\n --dshpc-orange-hover:color-mix(in srgb,var(--dshpc-orange) 78%,#000000);\n --dshpc-orange-active:color-mix(in srgb,var(--dshpc-orange) 64%,#000000);\n --dshpc-orange-soft:color-mix(in srgb,var(--dshpc-orange) 8%,transparent);\n --dshpc-indigo:#4f46e5;\n --dshpc-indigo-hover:color-mix(in srgb,var(--dshpc-indigo) 78%,#000000);\n --dshpc-indigo-active:color-mix(in srgb,var(--dshpc-indigo) 64%,#000000);\n --dshpc-indigo-soft:color-mix(in srgb,var(--dshpc-indigo) 8%,transparent);\n --dshpc-rose:#e11d48;\n --dshpc-rose-hover:color-mix(in srgb,var(--dshpc-rose) 78%,#000000);\n --dshpc-rose-active:color-mix(in srgb,var(--dshpc-rose) 64%,#000000);\n --dshpc-rose-soft:color-mix(in srgb,var(--dshpc-rose) 8%,transparent);\n --dshpc-slate:#475569;\n --dshpc-slate-hover:color-mix(in srgb,var(--dshpc-slate) 78%,#000000);\n --dshpc-slate-active:color-mix(in srgb,var(--dshpc-slate) 64%,#000000);\n --dshpc-slate-soft:color-mix(in srgb,var(--dshpc-slate) 8%,transparent);\n\n /* ⚠️ 2026-10-18 用户拍板:宿主 alias 的 hover(暗色白 8% / 亮色 6%)**太弱**,\n 「移上去要仔细看才看得出来」⇒ 不再委托宿主 hover 别名,改为自掺中性色并加重:\n 亮色掺黑 10%、暗色掺白 14%(active 再加一档)。按钮 / 分段轨道 / 各类 hover 底同时受益。\n ⚠️ 必须保留 rgba 兜底行在前(本文件惯例,见 icon-plate 注释):掺的是**固定中性色**\n (neutral-900=#0f0f0f / neutral-00=#fff),预计算无损;旧内核不认 color-mix 时走兜底,\n 否则整条 background:var(--seg-track) 作废 ⇒ 分段轨道透明(真踩过:预览站轨道消失)。 */\n --dshpc-hover:rgba(15,15,15,.10);\n --dshpc-active:rgba(15,15,15,.18);\n /* 分段控件轨道底:专用 token(rgba 字面量、不借 --dshpc-hover 中转)——\n 2026-10-19 教训:变量链中间任何一环 invalid ⇒ background 整条作废、轨道全透明。\n 亮色:黑 7%(比 hover 的 10% 淡一档,选中白片才跳得出)。 */\n --dshpc-seg-track:rgba(15,15,15,.07);\n --dshpc-mask:var(--dsw-alias-bg-mask-1,#0000003d);\n /* 弹窗锁定态给**自绘控件**的降透明度档(2026-11-05)。放在 token 里是为了让消费方\n 在自己元素上写 --dshpc-lock-dim: 1 就能退出这条效果,不用 !important 打架。 */\n --dshpc-lock-dim:.5;\n /* 「选中面」(2026-10-06,任务日程页首创)= 当前底色**朝更深掺 12% 文字色**:\n 浅色主题下文字色是黑 ⇒ 选中面比常态底色**深一档**。深色分支见 body[data-ds-dark-theme](朝背景色掺)。\n 语义:标记「正在看的东西」,比常态明显、又不许盖住内容(不许用半透明叠状态色)。 */\n --dshpc-selected-bg:color-mix(in srgb,var(--dshpc-surface-1) 88%,var(--dshpc-fg));\n /* ListRow 选中面(2026-11-07 用户定):slate 的**极浅蓝灰**,不用上面那条通用「选中面」。\n 通用值亮色是掺文字色的中性灰、暗色是两个深色面互掺 ⇒ 深色下选中行发黑(用户实测)。\n 这里从 --dshpc-slate 派生半透明浅色:亮色 14% 叠白 ≈ #e5e7ea,比常态 tone-sunken\n 深一档才看得出「选中」;暗色浓度见 body[data-ds-dark-theme] 段。 */\n --dshpc-listrow-selected-bg:color-mix(in srgb,var(--dshpc-slate) 14%,transparent);\n /* 任务日程页本月格默认底(2026-10-06 → 续2):浅色下给**淡蓝**(business 8% 透白底)——\n 参照用户参考稿里未选中日程块 / Tuesday 列的那种蓝、再浅一点点;\n 相邻月补位格仍走 --dshpc-surface-2(更灰),不受影响。\n 深色段维持 #23262e(用户:深色 UI 已差不多,不动)。 */\n --dshpc-cal-cell-bg:color-mix(in srgb,var(--dshpc-business) 8%,var(--dshpc-surface-1));\n /* 任务日程页「点开某天」展开的面板底(2026-10-06 续):浅色下**无限接近白、只带一丁点灰**\n (neutral-50 = #fafafa)——面板里装半透明执行记录列表,底再深整片就发糊发灰;\n 深色段沿用原 selected-bg 暗值,保持不动。 */\n --dshpc-cal-panel-bg:var(--dsw-static-neutral-50,#fafafa);\n /* 任务日程页本月格 hover 底(浅色段,2026-10-06 续3):不再走灰色通用交互底——\n 鼠标移上去应是「更亮一点点的蓝」(与深色段同语义:hover = 提亮的蓝,不是灰下去)。\n 浓度**介于**表头蓝(14%)与未选中格蓝(8%)之间、略偏表头一侧:business 12% 透白底\n (比表头浅一点、比未选中格深一点)。 */\n --dshpc-cal-cell-hover:color-mix(in srgb,var(--dshpc-business) 12%,var(--dshpc-surface-1));\n\n /* ── 投影 / 焦点 ──────────────────────────────────────────────────── */\n --dshpc-shadow-1:var(--dsw-elevation-soft,0 4px 16px 0 #00000008);\n /* 亮片自带的浮起感(选中态用;与 --dshpc-surface-raised 配对) */\n --dshpc-shadow-raised:var(--dsw-elevation-soft,0 4px 16px 0 #00000008);\n --dshpc-shadow-2:var(--dsw-shadow-lv3,0 12px 32px 0 #00000014);\n /* 键盘焦点环。⚠️ 不用宿主 --dsw-focus-ring-color:它默认值是 transparent(兜底不生效、会隐身) */\n --dshpc-focus:var(--dsw-alias-state-business-primary,#3b5bdb);\n\n /* ── 圆角(宿主真值 4 / 8 / 12 / 16 / 20 / 28)─────────────────────── */\n --dshpc-radius-xs:var(--dsw-radius-xs,4px);\n --dshpc-radius-sm:var(--dsw-radius-sm,8px);\n --dshpc-radius-md:var(--dsw-radius-md,12px);\n --dshpc-radius-lg:var(--dsw-radius-lg,16px);\n --dshpc-radius-xl:var(--dsw-radius-xl,20px);\n --dshpc-radius-panel:var(--dsw-radius-panel,28px);\n /* 全圆(胶囊标签):宿主的 radius 档最大只有 28px,撑不满 24px 高的 chip */\n --dshpc-radius-pill:999px;\n\n /* ── 间距四拍(只许用这四档,不许出现 5 / 7 / 9px)────────────────── */\n --dshpc-space-1:4px;\n --dshpc-space-2:8px;\n --dshpc-space-3:12px;\n --dshpc-space-4:16px;\n\n /* ── 控件高度:离散三档(控件用 size=\"sm|md|lg\" 选;调用点不许自定义高度,\n 真不够用才允许在调用点本地覆盖 --dshpc-control-h-*,属例外而非常态)── */\n --dshpc-control-h-sm:24px;\n --dshpc-control-h-md:28px;\n --dshpc-control-h-lg:32px;\n\n /* ── 字号 / 行高:直绑宿主字号族(宿主真值 11 / 12 / 13 / 14 / 16)───── */\n --dshpc-font-xs:var(--dsw-font-xxxs-11-font-size,11px);\n --dshpc-font-sm:var(--dsw-font-xxs-12-font-size,12px);\n --dshpc-font-md:var(--dsw-font-xs-13-font-size,13px);\n --dshpc-font-lg:var(--dsw-font-s-14-font-size,14px);\n --dshpc-font-xl:var(--dsw-font-base-16-font-size,16px);\n --dshpc-line-xs:var(--dsw-font-xxxs-11-line-height,14px);\n --dshpc-line-sm:var(--dsw-font-xxs-12-line-height,18px);\n --dshpc-line-md:var(--dsw-font-xs-13-line-height,20px);\n --dshpc-line-lg:var(--dsw-font-s-14-line-height,22px);\n --dshpc-line-xl:var(--dsw-font-base-16-line-height,24px);\n --dshpc-font-mono:var(--ds-font-family-code,monospace);\n\n /* ── 细滚动条的让位值(线宽不能放 token,见文件末尾的注释)──────────\n 1px→2px 只改这一行;它用在普通元素上,var() 能正常解析。 */\n --dshpc-scroll-inset:1px;\n\n /* ── 层级阶梯(业务文件不许再写裸 z-index)───────────────────────── */\n /* 页面级预览分栏 → 抽屉(新建/编辑)→ 弹窗/确认框 → 浮层菜单 → 浮层提示 */\n /* **整条阶梯都必须低于官方浮点 1000 档**(2026-11-06 用户拍板):官方原语\n Modal / ImageLightbox 是 z-index 1000(body portal),Menu / Toast 是 1100。\n 我们只是宿主里的一个页面 ⇒ 宿主浮点恒在我们之上;以后弹窗里再开官方模态/预览,\n 不必逐个场景「临时让位」(此前 1070 压住官方原图预览就是这么踩出来的)。 */\n /* 内容层吸顶(天标签 / 表头这类「跟着滚但压住同层内容」的元素):只压同层兄弟,\n 必须低于下面所有浮层档 —— 所以它不是「开新浮层档」,而是内容层内部的排序位。 */\n --dshpc-z-sticky:10;\n --dshpc-z-dock:900;\n --dshpc-z-drawer:920;\n --dshpc-z-modal:940;\n /* 收起后的耳朵:必须高于弹窗遮罩,否则弹窗一开就点不到它(2026-11-04 用户真机)。\n 只给耳朵用,页面级分栏本体仍是布局成员,不跟着抬高。 */\n --dshpc-z-ear:950;\n --dshpc-z-menu:960;\n --dshpc-z-tip:970;\n /* 语义别名(2026-11-03 面板皮肤统一):业务文件只许用这两个说「我要一层浮层」,\n 不再各自写浮层字面量。\n panel = 浮层面板本体(picker 弹窗、锚定面板);\n popmenu = 叠在面板之上的菜单(▾ 选层、Picker 下拉)与其透明遮罩。 */\n --dshpc-z-panel:var(--dshpc-z-menu);\n --dshpc-z-popmenu:var(--dshpc-z-tip);\n\n /* ── 动效 ─────────────────────────────────────────────────────────── */\n --dshpc-dur:var(--ds-transition-duration,.2s);\n --dshpc-dur-fast:var(--ds-transition-duration-fast,.12s);\n --dshpc-ease:var(--ds-ease-in-out,cubic-bezier(.4,0,.2,1));\n /* 运行中状态的脉动时长(2026-10-06 统一前后两端:任务配置里的绿呼吸 → 蓝、放慢;\n 执行记录里的蓝闪 → 放慢一点。两者用同一个值,动画形状本就一致)。 */\n --dshpc-dur-run:500ms;\n}\n\n/* ── 明暗差异的**唯一**落点 ──────────────────────────────────────────────\n 判据 = body[data-ds-dark-theme](宿主 0.2.0-rc.2 源码核实:启动脚本 toggleAttribute 写入,\n 唯一明暗判据;插件禁止用 prefers-color-scheme —— 它跟的是系统、不是用户在宿主里的选择)。\n 下面只放 alias 表达不了的「固定中性面」;颜色若能靠 alias 自动跟随,一律不要写在这里。 */\nbody[data-ds-dark-theme]{\n /* 深色段的蓝**刻意不跟随宿主 alias**(唯一例外):宿主暗色 alias 给的是 #60a5fa 一档的高亮蓝,\n 实心面(Chip / Button info / 日期选中格)压白字会发糊 —— 用户 2026-10-29 实测反馈。\n ⇒ 深色下改定向浅色状态的蓝(#3b5bdb)靠,只在明度上抬一点点,保证它在暗底上仍看得见:\n #4c6bd8 对白字 ≈4.8:1(原亮蓝只有 ~2.3:1),对日历格底 ≈3.2:1 仍过 UI 件的 3:1 线。\n 代价:宿主换品牌色时深色不再自动跟着变,需要这里手动同步。 */\n --dshpc-business:#4c6bd8;\n --dshpc-solid:var(--dsw-static-neutral-900,#0f0f0f);\n --dshpc-on-solid:var(--dsw-static-neutral-00,#fff);\n /* 实心按钮 hover / active(暗色版):黑底(浅色主题的近黑 → 暗色下的近白)掺黑压深;\n 红 / 绿 / 黄 / 蓝掺白提亮。与亮色段方向相反,保证两种主题下「一眼看出变了」。 */\n --dshpc-accent-hover:color-mix(in srgb,var(--dshpc-accent) 80%,#000000);\n --dshpc-accent-active:color-mix(in srgb,var(--dshpc-accent) 66%,#000000);\n --dshpc-danger-hover:color-mix(in srgb,var(--dshpc-danger) 78%,#ffffff);\n --dshpc-danger-active:color-mix(in srgb,var(--dshpc-danger) 64%,#ffffff);\n --dshpc-success-hover:color-mix(in srgb,var(--dshpc-success) 78%,#ffffff);\n --dshpc-success-active:color-mix(in srgb,var(--dshpc-success) 64%,#ffffff);\n --dshpc-warning-hover:color-mix(in srgb,var(--dshpc-warning) 78%,#ffffff);\n --dshpc-warning-active:color-mix(in srgb,var(--dshpc-warning) 64%,#ffffff);\n /* 同上:掺白比例从 22% / 36% 收到 12% / 22% —— 底色已变深,照旧比例提亮会在 hover 瞬间\n 把白字对比打回 ~3:1(正是用户嫌糊的那一档);收窄后 hover 仍可感知、字仍清晰。 */\n --dshpc-business-hover:color-mix(in srgb,var(--dshpc-business) 88%,#ffffff);\n --dshpc-business-active:color-mix(in srgb,var(--dshpc-business) 78%,#ffffff);\n /* 暗色 hover 掺白 14% / active 24%(对齐上面 2026-10-18 的加重拍板)。rgba 兜底行同上。 */\n --dshpc-hover:rgba(255,255,255,.14);\n --dshpc-active:rgba(255,255,255,.24);\n /* 分段轨道(暗色版):白 10%——比 hover 淡一档,选中亮片才跳得出。 */\n --dshpc-seg-track:rgba(255,255,255,.10);\n --dshpc-plate:var(--dsw-static-neutral-850,#212123);\n --dshpc-plate-hover:var(--dsw-static-neutral-800,#292929);\n --dshpc-icon-plate:rgba(255,255,255,.05);\n /* 暗色主题**反过来**:表头要比卡片面**亮**、比斑马纹再**浅一档**(用户:纯黑背景没法看)。 */\n --dshpc-head-bg:var(--dshpc-surface-2);\n /* 表格(2026-10-30 用户二次定案:与通栏互换底色):通栏底取表头原来那色 #151b23\n (亮色段对应 #f6f8fa);表头默认底沿用亮色段定义的 --dshpc-surface-sunken,不在暗色段重写;\n 行 hover 是「一层极淡的白」≈3% —— 暗底上用黑会越悬越暗,看不出「浅灰」反馈。 */\n --dshpc-table-banner-bg:#151b23;\n --dshpc-table-row-hover:rgba(255,255,255,.03);\n /* 暗色底板**微亮**;hover **更亮**(原先 hover 取 plate-hover 反而更淡 ⇒ 鼠标移上去就没了)。 */\n --dshpc-chip-bg:rgba(255,255,255,.08);\n --dshpc-chip-bg-hover:rgba(255,255,255,.16);\n /* 暗色下蓝色要更亮、透明度略高才压得住深底。 */\n --dshpc-open-bg:rgba(96,165,250,.18);\n --dshpc-open-bg-soft:rgba(96,165,250,.08);\n --dshpc-card-hover:rgba(96,165,250,.13);\n /* 语义色**浅底**(深色版):用户嫌深色的绿 / 红「有点深」⇒ 压到 **5%**(浅色段是 8%),\n 更贴近面板底色、存在感更弱;块底与状态色竖条仍同源(竖条是实色,不受这条影响)。 */\n --dshpc-success-soft:color-mix(in srgb,var(--dshpc-success) 5%,transparent);\n --dshpc-warning-soft:color-mix(in srgb,var(--dshpc-warning) 5%,transparent);\n --dshpc-danger-soft:color-mix(in srgb,var(--dshpc-danger) 5%,transparent);\n --dshpc-business-soft:color-mix(in srgb,var(--dshpc-business) 5%,transparent);\n /* 扩展色深色派生:底色写死、hover 掺白 12%/22%(同 business,防白字发糊),soft 5%。 */\n --dshpc-purple-hover:color-mix(in srgb,var(--dshpc-purple) 88%,#ffffff);\n --dshpc-purple-active:color-mix(in srgb,var(--dshpc-purple) 78%,#ffffff);\n --dshpc-purple-soft:color-mix(in srgb,var(--dshpc-purple) 5%,transparent);\n --dshpc-pink-hover:color-mix(in srgb,var(--dshpc-pink) 88%,#ffffff);\n --dshpc-pink-active:color-mix(in srgb,var(--dshpc-pink) 78%,#ffffff);\n --dshpc-pink-soft:color-mix(in srgb,var(--dshpc-pink) 5%,transparent);\n --dshpc-cyan-hover:color-mix(in srgb,var(--dshpc-cyan) 88%,#ffffff);\n --dshpc-cyan-active:color-mix(in srgb,var(--dshpc-cyan) 78%,#ffffff);\n --dshpc-cyan-soft:color-mix(in srgb,var(--dshpc-cyan) 5%,transparent);\n --dshpc-teal-hover:color-mix(in srgb,var(--dshpc-teal) 88%,#ffffff);\n --dshpc-teal-active:color-mix(in srgb,var(--dshpc-teal) 78%,#ffffff);\n --dshpc-teal-soft:color-mix(in srgb,var(--dshpc-teal) 5%,transparent);\n --dshpc-orange-hover:color-mix(in srgb,var(--dshpc-orange) 88%,#ffffff);\n --dshpc-orange-active:color-mix(in srgb,var(--dshpc-orange) 78%,#ffffff);\n --dshpc-orange-soft:color-mix(in srgb,var(--dshpc-orange) 5%,transparent);\n --dshpc-indigo-hover:color-mix(in srgb,var(--dshpc-indigo) 88%,#ffffff);\n --dshpc-indigo-active:color-mix(in srgb,var(--dshpc-indigo) 78%,#ffffff);\n --dshpc-indigo-soft:color-mix(in srgb,var(--dshpc-indigo) 5%,transparent);\n --dshpc-rose-hover:color-mix(in srgb,var(--dshpc-rose) 88%,#ffffff);\n --dshpc-rose-active:color-mix(in srgb,var(--dshpc-rose) 78%,#ffffff);\n --dshpc-rose-soft:color-mix(in srgb,var(--dshpc-rose) 5%,transparent);\n --dshpc-slate-hover:color-mix(in srgb,var(--dshpc-slate) 88%,#ffffff);\n --dshpc-slate-active:color-mix(in srgb,var(--dshpc-slate) 78%,#ffffff);\n --dshpc-slate-soft:color-mix(in srgb,var(--dshpc-slate) 5%,transparent);\n /* 「选中面」(深色版,2026-10-06):掺 **~40% 背景色**(--dshpc-surface-base)⇒ 无限接近页面背景的黑、\n 只比背景略深一点点(用户:深色下展开区压着任务透明绿会发灰,底色要尽量贴近背景才不显灰)。\n ⚠️ 深色下不能掺文字色 —— 那是白,会变亮,选中反而比本月日期浅。 */\n --dshpc-selected-bg:color-mix(in srgb,var(--dshpc-surface-1) 60%,var(--dshpc-surface-base));\n /* ListRow 选中面(暗色版):slate 掺到 26% —— 深底上泛蓝灰,绝不退回接近背景的黑。\n slate 是中明度蓝灰,暗底上要比亮色掺得更浓才看得出(亮色 14% / 暗色 26%)。 */\n --dshpc-listrow-selected-bg:color-mix(in srgb,var(--dshpc-slate) 26%,transparent);\n /* 任务日程页本月格的默认底(深色版,2026-10-06):深的、带点灰蓝的暗色(用户给的参考图 ≈ #23262e),\n 比原来的卡片面更沉、更偏蓝灰;选中格仍走 --dshpc-selected-bg(更暗一档),层级不变。 */\n --dshpc-cal-cell-bg:#23262e;\n /* 任务日程页本月格 hover 底(深色段,2026-10-06):原先走 --dshpc-hover(宿主浅色叠加)在深底上显得\n 「灰发亮」,不好看 ⇒ 换成更贴底的蓝调微亮(与 open-bg-soft 同族),hover 时不刺眼、又有反馈。 */\n --dshpc-cal-cell-hover:rgba(96,165,250,.12);\n /* 任务日程页展开面板底(深色段,2026-10-06 续):与原 selected-bg 暗值一致,深色 UI 不动 */\n --dshpc-cal-panel-bg:color-mix(in srgb,var(--dshpc-surface-1) 60%,var(--dshpc-surface-base));\n}\n\n/* ── 细滚动条 + 离边 1px:全库唯一真源 ─────────────────────────────────\n 放在 tokens 域(ensureComponentStyles 每次必注册、且排在所有控件域之前):\n 任何组件只要给滚动容器挂 .dshpc-scroll-thin 就生效,不必另行注入 panel 域。\n 改线宽 / 让位 / 圆角 / 颜色只改这一处;别在别的 CSS 里再抄一份。\n\n 只用 ::-webkit-scrollbar:一旦写 scrollbar-width,Chrome 会切到规范化滚动条、\n 忽略这里的宽度(2026-11-06 实测:留着 scrollbar-width:thin 时宽度回到 ~10px)。\n 2026-11-06 用户口径:1px 太细 ⇒ 线宽起步 2px、thumb 上下端圆角;现行值见下面三行。\n\n 让位(滚动条与容器可见边缘隔 1px)也由这个类负责:原生滚动条画在 padding box 之外、\n border 之内,只有 border 能把它推离边缘(加 padding 无效)。挂类即自动让位,\n 容器不必自己再写透明边框。方向档(CSS 没有 :scrollable,推不出滚动方向,须显式声明):\n .dshpc-scroll-thin 竖滚(默认):右让位\n .dshpc-scroll-thin--x 横滚:底让位,且不叠右\n .dshpc-scroll-thin--both 双向:右 + 底都让位\n --x / --both 必须与基类同挂(线宽规则只认基类)。\n\n 挂 .dshpc-panel 的容器本身已有实色边框 ⇒ :not(.dshpc-panel) 跳过让位:滚动条贴那条\n 实色线即算让位,无条件叠透明边框会把实色右边框覆盖成透明。\n CodeMirror 的 .cm-scroller 由官方生成、挂不上类 ⇒ 后代选择器一并命中线宽与让位;\n 它只让右不让底:给底会改 scroller 高度,CodeMirror 的测量循环会多算一条横滚条。\n 外层若自己不滚(如 CodeViewer),把 --dshpc-scroll-inset-right 设 0px 关掉自身让位,\n 免得外层与 .cm-scroller 两层各 1px 叠成 2px。 */\n/* ⚠️ 下面三行的线宽 / 圆角**必须是字面量**:WebKit 的 ::-webkit-scrollbar 系列伪元素\n 不解析 var(),带变量的声明会被静默丢弃 ⇒ 宽度整条作废、退回默认值。2026-11-06 把\n width:2px 改成 var(--dshpc-scroll-w) 后真机当场打回(用户发现),故线宽不放 token。\n 改线宽只改这一块的三处数字(三处必须同值);让位仍走 --dshpc-scroll-inset。 */\n.dshpc-scroll-thin::-webkit-scrollbar,\n.dshpc-scroll-thin .cm-scroller::-webkit-scrollbar{width:3px;height:3px}\n.dshpc-scroll-thin::-webkit-scrollbar-thumb,\n.dshpc-scroll-thin .cm-scroller::-webkit-scrollbar-thumb{background:var(--dshpc-border-heavy);border-radius:3px}\n.dshpc-scroll-thin::-webkit-scrollbar-track,\n.dshpc-scroll-thin .cm-scroller::-webkit-scrollbar-track{background:transparent}\n.dshpc-scroll-thin:not(.dshpc-panel){border-right:var(--dshpc-scroll-inset-right,var(--dshpc-scroll-inset)) solid transparent}\n.dshpc-scroll-thin--x:not(.dshpc-panel){border-right:0;border-bottom:var(--dshpc-scroll-inset) solid transparent}\n.dshpc-scroll-thin--both:not(.dshpc-panel){border-bottom:var(--dshpc-scroll-inset) solid transparent}\n.dshpc-scroll-thin .cm-scroller{border-right:var(--dshpc-scroll-inset) solid transparent}\n";
4
4
  //# sourceMappingURL=tokens-css.generated.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tokens-css.generated.js","sourceRoot":"","sources":["../../src/design/tokens-css.generated.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,qEAAqE;AACrE,MAAM,CAAC,MAAM,mBAAmB,GAAG,8omBAA8omB,CAAA"}
1
+ {"version":3,"file":"tokens-css.generated.js","sourceRoot":"","sources":["../../src/design/tokens-css.generated.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,qEAAqE;AACrE,MAAM,CAAC,MAAM,mBAAmB,GAAG,u4rBAAu4rB,CAAA"}
@@ -40,6 +40,8 @@ export interface ButtonProps {
40
40
  onBusyChange?: (busy: boolean) => void;
41
41
  /** 撑满父宽。 */
42
42
  block?: boolean;
43
+ /** 紧凑图标档:高度不变,图标放大、内距收紧(给描边细的文档 / 语言图标用)。 */
44
+ dense?: boolean;
43
45
  /**
44
46
  * 固定宽(px 或任意 CSS 宽度值)。与 `minWidth` / `maxWidth` 互斥:一旦设定,后两者自动失效。
45
47
  */
@@ -64,6 +66,8 @@ export interface IconButtonProps {
64
66
  variant?: 'plain' | 'outline' | 'danger';
65
67
  /** 高度档(默认 lg)。 */
66
68
  size?: ButtonSize;
69
+ /** 紧凑图标档:宽高不变,图标放大、四周留白变小(与 Button.dense 同名同义)。 */
70
+ dense?: boolean;
67
71
  /** 图标(必填)。 */
68
72
  icon: ReactNode;
69
73
  /** 无障碍名(必填;同时作为默认 title)。 */
@@ -1 +1 @@
1
- {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/ui/actions/Button.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/ui/actions/Button.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@
10
10
  * - `size`:`sm`(24) / `md`(28) / `lg`(32) —— 高度一律吃 `--dshpc-control-h-*`,
11
11
  * **有边 / 无边同高**(边框在内部补回)
12
12
  * - `block`:撑满父宽
13
+ * - `dense`:图标放大一档、内距收紧(高度不变),Button / IconButton 同名同义
13
14
  *
14
15
  * 内容轴:`icon`(前置)/ `iconRight`(后置)/ `loading`(前置小圈并自动禁用)。
15
16
  * 颜色轴:任一档都可以再用 `color` 传任意 CSS 色值 —— 只覆盖 `--btn-*` 几个变量,
@@ -58,8 +59,9 @@ function colorVars(variant, color) {
58
59
  };
59
60
  }
60
61
  /** 组装按钮 class(结构一套 + 轴类)。 */
61
- function buttonClass(variant, size, block, hasIcon, extra) {
62
+ function buttonClass(variant, size, block, hasIcon, dense, extra) {
62
63
  return `dshpc-btn dshpc-btn--${variant} dshpc-btn--${size}`
64
+ + `${dense ? ' dshpc-btn--dense' : ''}`
63
65
  + `${block ? ' dshpc-btn--block' : ''}`
64
66
  // 前置图标标记:block 时靠它把文字拉回视觉中心(见 controls-css 的 --icon-start 规则)
65
67
  + `${hasIcon ? ' dshpc-btn--icon-start' : ''}`
@@ -101,7 +103,7 @@ function useAsyncClick(onClick, onBusyChange, onBusyStart) {
101
103
  */
102
104
  export function Button(props) {
103
105
  ensureComponentStyles('button', BUTTON_CSS);
104
- const { variant = 'outline', size = 'lg', icon, iconRight, color, loading: loadingProp = false, loadingText = true, block = false, width, minWidth, maxWidth, className, style, children, onClick, onBusyChange, ...rest } = props;
106
+ const { variant = 'outline', size = 'lg', icon, iconRight, color, loading: loadingProp = false, loadingText = true, block = false, dense = false, width, minWidth, maxWidth, className, style, children, onClick, onBusyChange, ...rest } = props;
105
107
  const btnRef = useRef(null);
106
108
  // 「有文案时的宽度」:只在非 loading 的布局里记,loading 时用它锁宽。
107
109
  const idleWidth = useRef(null);
@@ -174,7 +176,7 @@ export function Button(props) {
174
176
  'aria-busy': loading || undefined,
175
177
  ...(autoLabel !== undefined && rest['aria-label'] === undefined ? { 'aria-label': autoLabel } : {}),
176
178
  onClick: asyncClick.click,
177
- className: buttonClass(variant, size, block, icon !== undefined && icon !== null && !loading, className),
179
+ className: buttonClass(variant, size, block, icon !== undefined && icon !== null && !loading, dense, className),
178
180
  style: { ...colorVars(variant, color), ...widthStyle, ...style },
179
181
  };
180
182
  return h('button', attrs, loading
@@ -201,7 +203,7 @@ export function Button(props) {
201
203
  */
202
204
  export function IconButton(props) {
203
205
  ensureComponentStyles('button', BUTTON_CSS);
204
- const { variant = 'plain', size = 'lg', icon, label, color, background, loading: loadingProp = false, className, style, onClick, onBusyChange, ...rest } = props;
206
+ const { variant = 'plain', size = 'lg', icon, label, color, background, loading: loadingProp = false, dense = false, className, style, onClick, onBusyChange, ...rest } = props;
205
207
  const asyncClick = useAsyncClick(onClick, onBusyChange);
206
208
  const loading = loadingProp || asyncClick.busy;
207
209
  const locked = useOverlayLocked();
@@ -225,7 +227,7 @@ export function IconButton(props) {
225
227
  'aria-busy': loading || undefined,
226
228
  disabled: rest.disabled === true || loading || locked,
227
229
  onClick: asyncClick.click,
228
- className: `dshpc-iconbtn dshpc-iconbtn--${variant} dshpc-iconbtn--${size}${className !== undefined && className !== '' ? ` ${className}` : ''}`,
230
+ className: `dshpc-iconbtn dshpc-iconbtn--${variant} dshpc-iconbtn--${size}${dense ? ' dshpc-iconbtn--dense' : ''}${className !== undefined && className !== '' ? ` ${className}` : ''}`,
229
231
  style: { ...accent, ...style },
230
232
  };
231
233
  return h('button', attrs, loading ? h(Loader, { size: 'xs' }) : icon);
@@ -1 +1 @@
1
- {"version":3,"file":"Button.js","sourceRoot":"","sources":["../../../src/ui/actions/Button.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Button.js","sourceRoot":"","sources":["../../../src/ui/actions/Button.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export declare const BUTTON_CSS = "\n/* \u2500\u2500 \u6309\u94AE / \u56FE\u6807\u94AE P2 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n \u4E0E Segmented \u540C\u4E00\u6761\u9AD8\u5EA6\u7EAA\u5F8B\uFF1A--dshpc-control-h-sm(24) / -md(28) / -lg(32)\uFF0C\n \u6709\u8FB9\u6846\u7684 variant \u7528 1px \u771F\u8FB9\u6846 + \u5185\u90E8 padding \u8865\u56DE\uFF0C**\u6709\u8FB9 / \u65E0\u8FB9\u540C\u9AD8**\u3002\n\n \u4E09\u6761\u53D7\u63A7\u8F74\uFF082026-10-19 \u91CD\u5199\uFF0C\u5BF9\u9F50\u4E3B\u6D41 UI \u6846\u67B6\u7684\u5206\u7C7B\u53E3\u5F84\uFF09\uFF1A\n \u00B7 variant \u2014\u2014 \u5916\u89C2\u6863 = \u5F62\u6001 + \u8BED\u4E49\u8272\uFF0C\u5171 10 \u6863\uFF1A\n primary / secondary / outline / ghost / danger / success / warning / info /\n danger-outline\uFF08\u7EA2\u5B57\u63CF\u8FB9\uFF09/ link\uFF08\u884C\u5185\u94FE\u63A5\uFF09\n \u00B7 size \u2014\u2014 sm / md / lg\n \u00B7 block \u2014\u2014 \u6491\u6EE1\u7236\u5BBD\n \u6BCF\u4E00\u6863**\u53EA\u586B 5 \u4E2A\u5C40\u90E8\u53D8\u91CF**\uFF08--btn-bg / -fg / -border / -bg-hover / -bg-active\uFF09\uFF0C\n \u7ED3\u6784\u4E0E\u4EA4\u4E92\u53EA\u6709\u4E0A\u9762\u8FD9\u4E00\u4EFD\uFF1B\u4EFB\u4F55\u6863\u4F4D\u90FD\u4E0D\u8BB8\u518D\u5199\u4E00\u904D display/height/padding\u3002\n \u81EA\u5B9A\u4E49\u989C\u8272\uFF08Button \u7684 color \u53C2\u6570\uFF09\u540C\u6837\u53EA\u8986\u76D6\u8FD9 5 \u4E2A\u53D8\u91CF\uFF08token \u8986\u76D6\uFF0C\u4E0D\u662F\u65B0\u76AE\u80A4\uFF09\u3002\n\n \u26A0\uFE0F hover \u4E0D\u518D\u7528 opacity \u538B\u4E00\u5C42\uFF08\u7528\u6237 2026-10-19\uFF1A\u300C\u9ED1\u8272\u548C\u7EA2\u8272\u7684\u6309\u94AE\u79FB\u4E0A\u53BB\u53D8\u5316\u592A\u5C0F\uFF0C\n \u5B8C\u5168\u611F\u89C9\u4E0D\u5230\u989C\u8272\u53D8\u4E86\u300D\uFF09\u21D2 \u8D70 --dshpc-*-hover / -active \u7684\u660E\u786E\u6DF7\u8272\uFF0C\u89C1 tokens-css.ts\u3002 */\n.dshpc-btn{--btn-bg:transparent;--btn-fg:var(--dshpc-fg);--btn-border:transparent;--btn-pad:12px;\n --btn-bg-hover:var(--dshpc-hover);--btn-bg-active:var(--dshpc-active);--btn-fg-hover:var(--btn-fg);\n appearance:none;display:inline-flex;align-items:center;justify-content:center;gap:6px;\n box-sizing:border-box;border:1px solid var(--btn-border);border-radius:var(--dshpc-radius-md);\n background-color:var(--btn-bg);color:var(--btn-fg);font-family:inherit;font-weight:500;white-space:nowrap;cursor:pointer;\n transition:background-color var(--dshpc-dur-fast) var(--dshpc-ease),border-color var(--dshpc-dur-fast) var(--dshpc-ease),color var(--dshpc-dur-fast) var(--dshpc-ease),box-shadow var(--dshpc-dur-fast) var(--dshpc-ease),transform var(--dshpc-dur-fast) var(--dshpc-ease);}\n.dshpc-btn--sm{--btn-pad:10px;height:var(--dshpc-control-h-sm);padding:0 var(--btn-pad);font-size:var(--dshpc-font-sm);line-height:1;}\n.dshpc-btn--md{--btn-pad:12px;height:var(--dshpc-control-h-md);padding:0 var(--btn-pad);font-size:var(--dshpc-font-md);line-height:1;}\n.dshpc-btn--lg{--btn-pad:14px;height:var(--dshpc-control-h-lg);padding:0 var(--btn-pad);font-size:var(--dshpc-font-md);line-height:1;}\n/* block\uFF1A\u6491\u6EE1\u7236\u5BBD\uFF08\u8868\u5355\u5E95\u680F / \u62BD\u5C49\u5E95\u90E8\u7684\u4E3B\u64CD\u4F5C\uFF09 */\n.dshpc-btn--block{display:flex;width:100%;}\n/* block + \u524D\u7F6E\u56FE\u6807 \u21D2 \u6587\u5B57\u89C6\u89C9\u5C45\u4E2D\uFF082026-10-19 \u7528\u6237\u70B9\u540D\uFF09\uFF1A\n \u5185\u5BB9\u7EC4 [\u56FE\u6807 + \u95F4\u8DDD + \u6587\u5B57] \u6574\u4F53\u5728\u76D2\u5185\u5C45\u4E2D\u65F6\uFF0C**\u6587\u5B57**\u7684\u4E2D\u5FC3\u4F1A\u88AB\u56FE\u6807\u63A8\u53F3\u534A\u683C\u3002\n \u628A\u53F3\u5185\u8FB9\u8DDD\u8865\u4E0A\u300C\u56FE\u6807\u5BBD + \u95F4\u8DDD\u300D\uFF0C\u53EF\u7528\u76D2\u968F\u4E4B\u5DE6\u79FB\u540C\u91CF \u21D2 \u6587\u5B57\u843D\u56DE\u89C6\u89C9\u4E2D\u5FC3\uFF0C\u56FE\u6807\u8D34\u5DE6\u4FA7\u3002\n \u56FE\u6807\u5BBD\u6309 1.2em \u4F30\uFF08\u5B98\u65B9\u56FE\u6807 14/16px vs \u5B57\u53F7 12/13px\uFF09\uFF0Cem \u968F\u5B57\u53F7\u6863\u81EA\u52A8\u7F29\u653E\u3002 */\n.dshpc-btn--block.dshpc-btn--icon-start{padding-right:calc(var(--btn-pad) + 1.2em + 6px);}\n/* \u56FE\u6807\u6BD4\u540C\u6863\u6587\u5B57\u5C0F\u4E00\u53F7\uFF08\u7528\u6237 2026-11-02\uFF09\uFF1A\u5BB9\u5668\u5403\u6389 0.875em\uFF0C\u5185\u8054 SVG \u4E00\u5F8B\u8DDF\u968F 1em\uFF0C\n \u4E0D\u518D\u7531\u8C03\u7528\u65B9\u7684 size={16} \u8BF4\u4E86\u7B97 \u2014\u2014 \u5168\u7AD9\u6309\u94AE\u56FE\u6807\u5C3A\u5BF8\u53EA\u7531\u8FD9\u4E00\u5904\u51B3\u5B9A\u3002 */\n.dshpc-btn__icon,.dshpc-btn__icon-end{display:inline-flex;align-items:center;justify-content:center;flex:none;line-height:0;font-size:.875em;}\n.dshpc-btn__icon svg,.dshpc-btn__icon-end svg{display:block;margin:0;width:1em;height:1em;}\n/* maxWidth \u5305 MarqueeText \u65F6\uFF1A\u6807\u7B7E\u4F5C\u4E3A flex \u5B50\u9879\u5FC5\u987B\u80FD\u6536\u7F29\u5230\u5185\u5BB9\u4EE5\u4E0B\uFF0C\u5426\u5219\u7701\u7565\u53F7 / \u8DD1\u9A6C\u706F\u6D4B\u4E0D\u51C6 */\n.dshpc-btn .dshpc-btn__label{min-width:0;}\n/* loading\uFF1A\u4E0D\u6362 DOM \u7ED3\u6784\uFF0C\u53EA\u5728\u6587\u6848\u524D\u63D2\u4E00\u679A Loader\uFF08size=xs\uFF0C12px\uFF09\u3002\n \u73AF\u7684\u753B\u6CD5\u4E0E\u52A8\u753B\u7EDF\u4E00\u5728 controls/loader.css\uFF08\u672C\u6587\u4EF6\u4E0D\u518D\u7EF4\u62A4\u7B2C\u4E8C\u4EFD SVG \u5F27 / keyframes\uFF09\u3002 */\n\n/* \u4EA4\u4E92\u6001\uFF1A\u989C\u8272\u53D8\u5316\u5199\u5728\u53D8\u91CF\u4E0A \u21D2 \u6240\u6709\u6863\u4F4D\u4E00\u6B21\u751F\u6548\uFF0C\u4E14\u53D8\u5316\u5E45\u5EA6\u7531 token \u51B3\u5B9A\uFF08\u591F\u660E\u663E\uFF09 */\n.dshpc-btn:hover:not(:disabled){background-color:var(--btn-bg-hover);color:var(--btn-fg-hover);}\n.dshpc-btn:active:not(:disabled){background-color:var(--btn-bg-active);transform:translateY(1px);}\n.dshpc-btn:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:2px;}\n.dshpc-btn:disabled{cursor:default;opacity:.5;}\n\n.dshpc-btn--primary{--btn-bg:var(--dshpc-accent);--btn-fg:var(--dshpc-fg-inverse);\n --btn-bg-hover:var(--dshpc-accent-hover);--btn-bg-active:var(--dshpc-accent-active);}\n/* secondary\uFF1A\u4E2D\u6027\u5B9E\u5FC3\uFF08\u7070\u9762\uFF09\uFF0C\u7528\u4E8E\u300C\u53D6\u6D88 / \u6B21\u8981\u300D\u8FD9\u7C7B\u4E0E\u4E3B\u64CD\u4F5C\u5E76\u6392\u7684\u6309\u94AE */\n.dshpc-btn--secondary{--btn-bg:var(--dshpc-hover);--btn-fg:var(--dshpc-fg);\n --btn-bg-hover:var(--dshpc-active);--btn-bg-active:var(--dshpc-active);}\n.dshpc-btn--outline{--btn-bg:var(--dshpc-surface-1);--btn-border:var(--dshpc-border-strong);\n --btn-bg-hover:var(--dshpc-hover);--btn-bg-active:var(--dshpc-active);}\n.dshpc-btn--ghost{--btn-fg:var(--dshpc-fg-2);--btn-fg-hover:var(--dshpc-fg);\n --btn-bg-hover:var(--dshpc-hover);--btn-bg-active:var(--dshpc-active);}\n.dshpc-btn--danger{--btn-bg:var(--dshpc-danger);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-danger-hover);--btn-bg-active:var(--dshpc-danger-active);}\n.dshpc-btn--success{--btn-bg:var(--dshpc-success);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-success-hover);--btn-bg-active:var(--dshpc-success-active);}\n.dshpc-btn--warning{--btn-bg:var(--dshpc-warning);--btn-fg:var(--dshpc-on-warning);\n --btn-bg-hover:var(--dshpc-warning-hover);--btn-bg-active:var(--dshpc-warning-active);}\n.dshpc-btn--info{--btn-bg:var(--dshpc-business);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-business-hover);--btn-bg-active:var(--dshpc-business-active);}\n/* \u6269\u5C55\u516B\u8272\u5B9E\u5FC3\uFF082026-10-29\uFF09\uFF1A\u767D\u5B57\u4E24\u4E3B\u9898\u5747 \u22654.5:1\uFF1Bhover/active \u8D70\u5404\u81EA token \u6D3E\u751F\u3002 */\n.dshpc-btn--purple{--btn-bg:var(--dshpc-purple);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-purple-hover);--btn-bg-active:var(--dshpc-purple-active);}\n.dshpc-btn--pink{--btn-bg:var(--dshpc-pink);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-pink-hover);--btn-bg-active:var(--dshpc-pink-active);}\n.dshpc-btn--cyan{--btn-bg:var(--dshpc-cyan);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-cyan-hover);--btn-bg-active:var(--dshpc-cyan-active);}\n.dshpc-btn--teal{--btn-bg:var(--dshpc-teal);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-teal-hover);--btn-bg-active:var(--dshpc-teal-active);}\n.dshpc-btn--orange{--btn-bg:var(--dshpc-orange);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-orange-hover);--btn-bg-active:var(--dshpc-orange-active);}\n.dshpc-btn--indigo{--btn-bg:var(--dshpc-indigo);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-indigo-hover);--btn-bg-active:var(--dshpc-indigo-active);}\n.dshpc-btn--rose{--btn-bg:var(--dshpc-rose);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-rose-hover);--btn-bg-active:var(--dshpc-rose-active);}\n.dshpc-btn--slate{--btn-bg:var(--dshpc-slate);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-slate-hover);--btn-bg-active:var(--dshpc-slate-active);}\n/* danger-outline\uFF1A\u7EA2\u5B57\u63CF\u8FB9\uFF08\u7834\u574F\u6027\u6B21\u8981\u64CD\u4F5C\uFF0C\u5982\u5361\u7247\u4E0A\u7684\u300C\u5220\u9664\u300D\uFF09\u3002\n \u26A0\uFE0F \u65E7\u4FEE\u9970\u7C7B danger-ink \u4FDD\u7559\u4E3A\u522B\u540D\uFF08\u6D88\u8D39\u65B9\u53EF\u80FD\u8FD8\u5728\u6302\uFF09\uFF0C\u4E24\u8005\u540C\u4E00\u5957\u76AE\u80A4\u3002 */\n.dshpc-btn--danger-outline,.dshpc-btn--danger-ink{--btn-border:var(--dshpc-danger);--btn-fg:var(--dshpc-danger);\n --btn-fg-hover:var(--dshpc-danger);--btn-bg-hover:var(--dshpc-danger-soft);--btn-bg-active:var(--dshpc-danger-soft);}\n/* link\uFF1A\u884C\u5185\u6587\u5B57\u94FE\u63A5\u578B\uFF08\u4F1A\u8BDD / \u4EA7\u51FA\u6587\u4EF6\u540D\uFF09\uFF0C\u65E0\u5E95\u65E0\u8FB9\u3001\u54C1\u724C\u84DD\u3001hover \u4E0B\u5212\u7EBF */\n.dshpc-btn--link{--btn-fg:var(--dshpc-link);--btn-fg-hover:var(--dshpc-link);\n --btn-bg-hover:transparent;--btn-bg-active:transparent;\n height:auto;padding:0;border:0;background:none;font-weight:400;text-align:left;}\n.dshpc-btn--link:hover:not(:disabled){text-decoration:underline;}\n\n/* \u56FE\u6807\u94AE\uFF1A\u7EAF\u56FE\u6807\uFF0C\u65B9\u5F62\uFF1B\u5C3A\u5BF8\u6863\u7684\u5BBD\u9AD8\u4E0E\u540C\u6863\u6587\u5B57\u6309\u94AE\u7B49\u9AD8\u3001\u5706\u89D2\u7EDF\u4E00\u5403 md\uFF08\u4E0E .dshpc-btn \u540C\u6B3E\uFF0C2026-10-28 \u62CD\u677F\uFF09\n \u5E95\u8272 / \u56FE\u6807\u8272\u5168\u8D70\u5C40\u90E8\u53D8\u91CF\uFF1A\u9ED8\u8BA4**\u65E0\u5E95\u8272**\uFF0C\u6D88\u8D39\u65B9\u53EF\u4F20 color\uFF08\u56FE\u6807\u8272\uFF09/ background\uFF08\u5E95\u8272\uFF09\u8986\u76D6\uFF08\u7528\u6237 2026-11-02\uFF09\u3002 */\n.dshpc-iconbtn{--icb-bg:transparent;--icb-bg-hover:var(--dshpc-hover);--icb-fg:var(--dshpc-fg-2);--icb-fg-hover:var(--dshpc-fg);\n appearance:none;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;\n border:1px solid var(--icb-border,transparent);border-radius:var(--dshpc-radius-md);\n background:var(--icb-bg);color:var(--icb-fg);\n font-family:inherit;cursor:pointer;flex:none;\n transition:background-color var(--dshpc-dur-fast) var(--dshpc-ease),border-color var(--dshpc-dur-fast) var(--dshpc-ease),color var(--dshpc-dur-fast) var(--dshpc-ease),opacity var(--dshpc-dur-fast) var(--dshpc-ease);}\n.dshpc-iconbtn--sm{width:var(--dshpc-control-h-sm);height:var(--dshpc-control-h-sm);font-size:var(--dshpc-font-sm);}\n.dshpc-iconbtn--md{width:var(--dshpc-control-h-md);height:var(--dshpc-control-h-md);font-size:var(--dshpc-font-md);}\n.dshpc-iconbtn--lg{width:var(--dshpc-control-h-lg);height:var(--dshpc-control-h-lg);font-size:var(--dshpc-font-md);}\n/* \u56FE\u6807\u4E0E\u6587\u5B57\u6309\u94AE\u540C\u53E3\u5F84\uFF1A\u5185\u8054 SVG \u4E00\u5F8B\u8DDF\u968F 1em\uFF08\u6BD4 16px \u6863\u5C0F\u4E00\u53F7\uFF09 */\n.dshpc-iconbtn > svg{display:block;width:1em;height:1em;}\n.dshpc-iconbtn--outline{--icb-bg:var(--dshpc-surface-1);--icb-border:var(--dshpc-border);}\n.dshpc-iconbtn--danger{--icb-fg:var(--dshpc-danger);--icb-bg-hover:var(--dshpc-danger-soft);--icb-fg-hover:var(--dshpc-danger);}\n.dshpc-iconbtn:hover:not(:disabled){background:var(--icb-bg-hover);color:var(--icb-fg-hover);}\n.dshpc-iconbtn:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:2px;}\n.dshpc-iconbtn:disabled{cursor:default;opacity:.4;}\n\n/* \u2500\u2500 \u884C\u5F0F\u6587\u4EF6\u6309\u94AE\uFF08\u56FE\u6807 + \u6587\u4EF6\u540D\uFF09P2\uFF1A**\u5168\u7AD9\u552F\u4E00\u5B9E\u73B0**\uFF082026-10-04 \u6536\u7F16\uFF09\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n \u7528\u9014\uFF1A\u300C\u4EA7\u51FA\u7269 / \u9644\u4EF6\u300D\u90A3\u79CD**\u4E00\u884C\u4E00\u4E2A\u6587\u4EF6**\u7684\u6E05\u5355\u9879\uFF08\u57FA\u7840\u4FE1\u606F\u53F3\u680F\u4EA7\u51FA\u7269\u6E05\u5355\u3001\u9644\u4EF6\u533A\u3001\n \u6267\u884C\u8BB0\u5F55\u9875\u7684\u5C55\u5F00\u533A\uFF09\u3002\u5E73\u65F6\u900F\u660E\u3001**\u9F20\u6807\u79FB\u4E0A\u53BB\u624D\u51FA\u6D45\u5E95**\uFF08\u6CBF\u7528\u7528\u6237 2026-10-03 \u5B9A\u7684\u89C2\u611F\uFF09\u3002\n \u4E24\u4E2A\u5F62\u6001\u4FEE\u9970\u7C7B\uFF1A\n --block \u6491\u6EE1\u7236\u5BBD\uFF08\u6E05\u5355\u91CC\u4E00\u9879\u4E00\u884C\uFF09\n --inline \u5185\u5BB9\u5BBD\uFF08\u8DDF\u5728\u6587\u5B57\u540E\u5934\uFF0C\u5982\u9644\u4EF6\u884C\uFF09\n \u6536\u7F16\u539F\u56E0\uFF1A\u8FD9\u4EFD\u76AE\u80A4\u6B64\u524D\u53EA\u5199\u5728 task-list.tsx \u7684 TASK_LIST_CSS \u91CC\uFF08\u65E7\u540D .dshpc-info-out\uFF09\uFF0C\n \u6267\u884C\u8BB0\u5F55\u9875\u5C55\u5F00\u533A\u8981\u7528\u540C\u4E00\u79CD\u89C2\u611F \u21D2 \u4E0A\u63D0\u57FA\u7840\u5C42\uFF0C\u907F\u514D\u518D\u51FA\u73B0\u300C\u5404\u5199\u4E00\u4EFD\u5916\u89C2\u300D\uFF08\u540C\u540D\u4E0D\u540C\u76AE\u7684\u5751\u521A\u8E29\u8FC7\uFF09\u3002 */\n.dshpc-filechip{appearance:none;-webkit-appearance:none;border:0;border-radius:var(--dshpc-radius-xs);\n background:transparent;color:var(--dshpc-fg);font:inherit;text-align:left;cursor:pointer;min-width:0;\n transition:background-color var(--dshpc-dur) var(--dshpc-ease);}\n.dshpc-filechip:hover:not(:disabled){background:var(--dshpc-chip-bg);}\n.dshpc-filechip:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:1px;}\n.dshpc-filechip:disabled{cursor:default;background:transparent;color:var(--dshpc-fg-3);}\n.dshpc-filechip--block{display:flex;align-items:center;gap:6px;width:100%;box-sizing:border-box;\n padding:4px 6px;font-size:var(--dshpc-font-xs);}\n.dshpc-filechip--inline{display:inline-flex;align-items:center;gap:4px;padding:2px 6px;font-size:var(--dshpc-font-sm);}\n\n@media (prefers-reduced-motion: reduce){.dshpc-btn,.dshpc-iconbtn,.dshpc-filechip{transition:none;}}\n";
1
+ export declare const BUTTON_CSS = "\n/* \u2500\u2500 \u6309\u94AE / \u56FE\u6807\u94AE P2 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n \u4E0E Segmented \u540C\u4E00\u6761\u9AD8\u5EA6\u7EAA\u5F8B\uFF1A--dshpc-control-h-sm(24) / -md(28) / -lg(32)\uFF0C\n \u6709\u8FB9\u6846\u7684 variant \u7528 1px \u771F\u8FB9\u6846 + \u5185\u90E8 padding \u8865\u56DE\uFF0C**\u6709\u8FB9 / \u65E0\u8FB9\u540C\u9AD8**\u3002\n\n \u4E09\u6761\u53D7\u63A7\u8F74\uFF082026-10-19 \u91CD\u5199\uFF0C\u5BF9\u9F50\u4E3B\u6D41 UI \u6846\u67B6\u7684\u5206\u7C7B\u53E3\u5F84\uFF09\uFF1A\n \u00B7 variant \u2014\u2014 \u5916\u89C2\u6863 = \u5F62\u6001 + \u8BED\u4E49\u8272\uFF0C\u5171 10 \u6863\uFF1A\n primary / secondary / outline / ghost / danger / success / warning / info /\n danger-outline\uFF08\u7EA2\u5B57\u63CF\u8FB9\uFF09/ link\uFF08\u884C\u5185\u94FE\u63A5\uFF09\n \u00B7 size \u2014\u2014 sm / md / lg\n \u00B7 block \u2014\u2014 \u6491\u6EE1\u7236\u5BBD\n \u6BCF\u4E00\u6863**\u53EA\u586B 5 \u4E2A\u5C40\u90E8\u53D8\u91CF**\uFF08--btn-bg / -fg / -border / -bg-hover / -bg-active\uFF09\uFF0C\n \u7ED3\u6784\u4E0E\u4EA4\u4E92\u53EA\u6709\u4E0A\u9762\u8FD9\u4E00\u4EFD\uFF1B\u4EFB\u4F55\u6863\u4F4D\u90FD\u4E0D\u8BB8\u518D\u5199\u4E00\u904D display/height/padding\u3002\n \u81EA\u5B9A\u4E49\u989C\u8272\uFF08Button \u7684 color \u53C2\u6570\uFF09\u540C\u6837\u53EA\u8986\u76D6\u8FD9 5 \u4E2A\u53D8\u91CF\uFF08token \u8986\u76D6\uFF0C\u4E0D\u662F\u65B0\u76AE\u80A4\uFF09\u3002\n\n \u26A0\uFE0F hover \u4E0D\u518D\u7528 opacity \u538B\u4E00\u5C42\uFF08\u7528\u6237 2026-10-19\uFF1A\u300C\u9ED1\u8272\u548C\u7EA2\u8272\u7684\u6309\u94AE\u79FB\u4E0A\u53BB\u53D8\u5316\u592A\u5C0F\uFF0C\n \u5B8C\u5168\u611F\u89C9\u4E0D\u5230\u989C\u8272\u53D8\u4E86\u300D\uFF09\u21D2 \u8D70 --dshpc-*-hover / -active \u7684\u660E\u786E\u6DF7\u8272\uFF0C\u89C1 tokens-css.ts\u3002 */\n.dshpc-btn{--btn-bg:transparent;--btn-fg:var(--dshpc-fg);--btn-border:transparent;--btn-pad:12px;\n --btn-bg-hover:var(--dshpc-hover);--btn-bg-active:var(--dshpc-active);--btn-fg-hover:var(--btn-fg);\n appearance:none;display:inline-flex;align-items:center;justify-content:center;gap:6px;\n box-sizing:border-box;border:1px solid var(--btn-border);border-radius:var(--dshpc-radius-md);\n background-color:var(--btn-bg);color:var(--btn-fg);font-family:inherit;font-weight:500;white-space:nowrap;cursor:pointer;\n transition:background-color var(--dshpc-dur-fast) var(--dshpc-ease),border-color var(--dshpc-dur-fast) var(--dshpc-ease),color var(--dshpc-dur-fast) var(--dshpc-ease),box-shadow var(--dshpc-dur-fast) var(--dshpc-ease),transform var(--dshpc-dur-fast) var(--dshpc-ease);}\n.dshpc-btn--sm{--btn-pad:10px;height:var(--dshpc-control-h-sm);padding:0 var(--btn-pad);font-size:var(--dshpc-font-sm);line-height:1;}\n.dshpc-btn--md{--btn-pad:12px;height:var(--dshpc-control-h-md);padding:0 var(--btn-pad);font-size:var(--dshpc-font-md);line-height:1;}\n.dshpc-btn--lg{--btn-pad:14px;height:var(--dshpc-control-h-lg);padding:0 var(--btn-pad);font-size:var(--dshpc-font-md);line-height:1;}\n/* block\uFF1A\u6491\u6EE1\u7236\u5BBD\uFF08\u8868\u5355\u5E95\u680F / \u62BD\u5C49\u5E95\u90E8\u7684\u4E3B\u64CD\u4F5C\uFF09 */\n.dshpc-btn--block{display:flex;width:100%;}\n/* block + \u524D\u7F6E\u56FE\u6807 \u21D2 \u6587\u5B57\u89C6\u89C9\u5C45\u4E2D\uFF082026-10-19 \u7528\u6237\u70B9\u540D\uFF09\uFF1A\n \u5185\u5BB9\u7EC4 [\u56FE\u6807 + \u95F4\u8DDD + \u6587\u5B57] \u6574\u4F53\u5728\u76D2\u5185\u5C45\u4E2D\u65F6\uFF0C**\u6587\u5B57**\u7684\u4E2D\u5FC3\u4F1A\u88AB\u56FE\u6807\u63A8\u53F3\u534A\u683C\u3002\n \u628A\u53F3\u5185\u8FB9\u8DDD\u8865\u4E0A\u300C\u56FE\u6807\u5BBD + \u95F4\u8DDD\u300D\uFF0C\u53EF\u7528\u76D2\u968F\u4E4B\u5DE6\u79FB\u540C\u91CF \u21D2 \u6587\u5B57\u843D\u56DE\u89C6\u89C9\u4E2D\u5FC3\uFF0C\u56FE\u6807\u8D34\u5DE6\u4FA7\u3002\n \u56FE\u6807\u5BBD\u6309 1.2em \u4F30\uFF08\u5B98\u65B9\u56FE\u6807 14/16px vs \u5B57\u53F7 12/13px\uFF09\uFF0Cem \u968F\u5B57\u53F7\u6863\u81EA\u52A8\u7F29\u653E\u3002 */\n.dshpc-btn--block.dshpc-btn--icon-start{padding-right:calc(var(--btn-pad) + 1.2em + 6px);}\n/* \u56FE\u6807\u6BD4\u540C\u6863\u6587\u5B57\u5C0F\u4E00\u53F7\uFF08\u7528\u6237 2026-11-02\uFF09\uFF1A\u5BB9\u5668\u5403\u6389 0.875em\uFF0C\u5185\u8054 SVG \u4E00\u5F8B\u8DDF\u968F 1em\uFF0C\n \u4E0D\u518D\u7531\u8C03\u7528\u65B9\u7684 size={16} \u8BF4\u4E86\u7B97 \u2014\u2014 \u5168\u7AD9\u6309\u94AE\u56FE\u6807\u5C3A\u5BF8\u53EA\u7531\u8FD9\u4E00\u5904\u51B3\u5B9A\u3002 */\n.dshpc-btn__icon,.dshpc-btn__icon-end{display:inline-flex;align-items:center;justify-content:center;flex:none;line-height:0;font-size:.875em;}\n.dshpc-btn__icon svg,.dshpc-btn__icon-end svg{display:block;margin:0;width:1em;height:1em;}\n/* maxWidth \u5305 MarqueeText \u65F6\uFF1A\u6807\u7B7E\u4F5C\u4E3A flex \u5B50\u9879\u5FC5\u987B\u80FD\u6536\u7F29\u5230\u5185\u5BB9\u4EE5\u4E0B\uFF0C\u5426\u5219\u7701\u7565\u53F7 / \u8DD1\u9A6C\u706F\u6D4B\u4E0D\u51C6 */\n.dshpc-btn .dshpc-btn__label{min-width:0;}\n/* loading\uFF1A\u4E0D\u6362 DOM \u7ED3\u6784\uFF0C\u53EA\u5728\u6587\u6848\u524D\u63D2\u4E00\u679A Loader\uFF08size=xs\uFF0C12px\uFF09\u3002\n \u73AF\u7684\u753B\u6CD5\u4E0E\u52A8\u753B\u7EDF\u4E00\u5728 controls/loader.css\uFF08\u672C\u6587\u4EF6\u4E0D\u518D\u7EF4\u62A4\u7B2C\u4E8C\u4EFD SVG \u5F27 / keyframes\uFF09\u3002 */\n\n/* \u4EA4\u4E92\u6001\uFF1A\u989C\u8272\u53D8\u5316\u5199\u5728\u53D8\u91CF\u4E0A \u21D2 \u6240\u6709\u6863\u4F4D\u4E00\u6B21\u751F\u6548\uFF0C\u4E14\u53D8\u5316\u5E45\u5EA6\u7531 token \u51B3\u5B9A\uFF08\u591F\u660E\u663E\uFF09 */\n.dshpc-btn:hover:not(:disabled){background-color:var(--btn-bg-hover);color:var(--btn-fg-hover);}\n.dshpc-btn:active:not(:disabled){background-color:var(--btn-bg-active);transform:translateY(1px);}\n.dshpc-btn:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:2px;}\n.dshpc-btn:disabled{cursor:default;opacity:.5;}\n/* dense\uFF1A\u5C3A\u5BF8\u6863 / \u9AD8\u5EA6\u4E00\u5F8B\u4E0D\u53D8\uFF0C\u53EA\u628A\u56FE\u6807\u653E\u5927\u4E00\u6863\u3001\u5185\u8DDD\u6536\u7D27\uFF08\u63CF\u8FB9\u7EC6\u7684\u6587\u4EF6\u7C7B\u578B\u56FE\u6807\u7528\uFF09\u3002\n \u53EA\u8986\u76D6\u5C40\u90E8\u53D8\u91CF\u4E0E\u56FE\u6807\u5B57\u53F7\uFF0C\u4E0D\u53E6\u5199\u4E00\u5957\u76AE\u80A4\uFF1B\u5FC5\u987B\u5199\u5728\u5C3A\u5BF8\u6863\u4E0E\u56FE\u6807\u89C4\u5219\u4E4B\u540E\u624D\u538B\u5F97\u8FC7\u9ED8\u8BA4\u503C\u3002 */\n.dshpc-btn--dense{--btn-pad:6px;}\n.dshpc-btn--dense .dshpc-btn__icon,.dshpc-btn--dense .dshpc-btn__icon-end{font-size:1.25em;}\n\n.dshpc-btn--primary{--btn-bg:var(--dshpc-accent);--btn-fg:var(--dshpc-fg-inverse);\n --btn-bg-hover:var(--dshpc-accent-hover);--btn-bg-active:var(--dshpc-accent-active);}\n/* secondary\uFF1A\u4E2D\u6027\u5B9E\u5FC3\uFF08\u7070\u9762\uFF09\uFF0C\u7528\u4E8E\u300C\u53D6\u6D88 / \u6B21\u8981\u300D\u8FD9\u7C7B\u4E0E\u4E3B\u64CD\u4F5C\u5E76\u6392\u7684\u6309\u94AE */\n.dshpc-btn--secondary{--btn-bg:var(--dshpc-hover);--btn-fg:var(--dshpc-fg);\n --btn-bg-hover:var(--dshpc-active);--btn-bg-active:var(--dshpc-active);}\n.dshpc-btn--outline{--btn-bg:var(--dshpc-surface-1);--btn-border:var(--dshpc-border-strong);\n --btn-bg-hover:var(--dshpc-hover);--btn-bg-active:var(--dshpc-active);}\n.dshpc-btn--ghost{--btn-fg:var(--dshpc-fg-2);--btn-fg-hover:var(--dshpc-fg);\n --btn-bg-hover:var(--dshpc-hover);--btn-bg-active:var(--dshpc-active);}\n.dshpc-btn--danger{--btn-bg:var(--dshpc-danger);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-danger-hover);--btn-bg-active:var(--dshpc-danger-active);}\n.dshpc-btn--success{--btn-bg:var(--dshpc-success);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-success-hover);--btn-bg-active:var(--dshpc-success-active);}\n.dshpc-btn--warning{--btn-bg:var(--dshpc-warning);--btn-fg:var(--dshpc-on-warning);\n --btn-bg-hover:var(--dshpc-warning-hover);--btn-bg-active:var(--dshpc-warning-active);}\n.dshpc-btn--info{--btn-bg:var(--dshpc-business);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-business-hover);--btn-bg-active:var(--dshpc-business-active);}\n/* \u6269\u5C55\u516B\u8272\u5B9E\u5FC3\uFF082026-10-29\uFF09\uFF1A\u767D\u5B57\u4E24\u4E3B\u9898\u5747 \u22654.5:1\uFF1Bhover/active \u8D70\u5404\u81EA token \u6D3E\u751F\u3002 */\n.dshpc-btn--purple{--btn-bg:var(--dshpc-purple);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-purple-hover);--btn-bg-active:var(--dshpc-purple-active);}\n.dshpc-btn--pink{--btn-bg:var(--dshpc-pink);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-pink-hover);--btn-bg-active:var(--dshpc-pink-active);}\n.dshpc-btn--cyan{--btn-bg:var(--dshpc-cyan);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-cyan-hover);--btn-bg-active:var(--dshpc-cyan-active);}\n.dshpc-btn--teal{--btn-bg:var(--dshpc-teal);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-teal-hover);--btn-bg-active:var(--dshpc-teal-active);}\n.dshpc-btn--orange{--btn-bg:var(--dshpc-orange);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-orange-hover);--btn-bg-active:var(--dshpc-orange-active);}\n.dshpc-btn--indigo{--btn-bg:var(--dshpc-indigo);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-indigo-hover);--btn-bg-active:var(--dshpc-indigo-active);}\n.dshpc-btn--rose{--btn-bg:var(--dshpc-rose);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-rose-hover);--btn-bg-active:var(--dshpc-rose-active);}\n.dshpc-btn--slate{--btn-bg:var(--dshpc-slate);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-slate-hover);--btn-bg-active:var(--dshpc-slate-active);}\n/* danger-outline\uFF1A\u7EA2\u5B57\u63CF\u8FB9\uFF08\u7834\u574F\u6027\u6B21\u8981\u64CD\u4F5C\uFF0C\u5982\u5361\u7247\u4E0A\u7684\u300C\u5220\u9664\u300D\uFF09\u3002\n \u26A0\uFE0F \u65E7\u4FEE\u9970\u7C7B danger-ink \u4FDD\u7559\u4E3A\u522B\u540D\uFF08\u6D88\u8D39\u65B9\u53EF\u80FD\u8FD8\u5728\u6302\uFF09\uFF0C\u4E24\u8005\u540C\u4E00\u5957\u76AE\u80A4\u3002 */\n.dshpc-btn--danger-outline,.dshpc-btn--danger-ink{--btn-border:var(--dshpc-danger);--btn-fg:var(--dshpc-danger);\n --btn-fg-hover:var(--dshpc-danger);--btn-bg-hover:var(--dshpc-danger-soft);--btn-bg-active:var(--dshpc-danger-soft);}\n/* link\uFF1A\u884C\u5185\u6587\u5B57\u94FE\u63A5\u578B\uFF08\u4F1A\u8BDD / \u4EA7\u51FA\u6587\u4EF6\u540D\uFF09\uFF0C\u65E0\u5E95\u65E0\u8FB9\u3001\u54C1\u724C\u84DD\u3001hover \u4E0B\u5212\u7EBF */\n.dshpc-btn--link{--btn-fg:var(--dshpc-link);--btn-fg-hover:var(--dshpc-link);\n --btn-bg-hover:transparent;--btn-bg-active:transparent;\n height:auto;padding:0;border:0;background:none;font-weight:400;text-align:left;}\n.dshpc-btn--link:hover:not(:disabled){text-decoration:underline;}\n\n/* \u56FE\u6807\u94AE\uFF1A\u7EAF\u56FE\u6807\uFF0C\u65B9\u5F62\uFF1B\u5C3A\u5BF8\u6863\u7684\u5BBD\u9AD8\u4E0E\u540C\u6863\u6587\u5B57\u6309\u94AE\u7B49\u9AD8\u3001\u5706\u89D2\u7EDF\u4E00\u5403 md\uFF08\u4E0E .dshpc-btn \u540C\u6B3E\uFF0C2026-10-28 \u62CD\u677F\uFF09\n \u5E95\u8272 / \u56FE\u6807\u8272\u5168\u8D70\u5C40\u90E8\u53D8\u91CF\uFF1A\u9ED8\u8BA4**\u65E0\u5E95\u8272**\uFF0C\u6D88\u8D39\u65B9\u53EF\u4F20 color\uFF08\u56FE\u6807\u8272\uFF09/ background\uFF08\u5E95\u8272\uFF09\u8986\u76D6\uFF08\u7528\u6237 2026-11-02\uFF09\u3002 */\n.dshpc-iconbtn{--icb-bg:transparent;--icb-bg-hover:var(--dshpc-hover);--icb-fg:var(--dshpc-fg-2);--icb-fg-hover:var(--dshpc-fg);\n appearance:none;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;padding:0;\n border:1px solid var(--icb-border,transparent);border-radius:var(--dshpc-radius-md);\n background:var(--icb-bg);color:var(--icb-fg);\n font-family:inherit;cursor:pointer;flex:none;\n transition:background-color var(--dshpc-dur-fast) var(--dshpc-ease),border-color var(--dshpc-dur-fast) var(--dshpc-ease),color var(--dshpc-dur-fast) var(--dshpc-ease),opacity var(--dshpc-dur-fast) var(--dshpc-ease);}\n.dshpc-iconbtn--sm{width:var(--dshpc-control-h-sm);height:var(--dshpc-control-h-sm);font-size:var(--dshpc-font-sm);}\n.dshpc-iconbtn--md{width:var(--dshpc-control-h-md);height:var(--dshpc-control-h-md);font-size:var(--dshpc-font-md);}\n.dshpc-iconbtn--lg{width:var(--dshpc-control-h-lg);height:var(--dshpc-control-h-lg);font-size:var(--dshpc-font-md);}\n/* \u56FE\u6807\u4E0E\u6587\u5B57\u6309\u94AE\u540C\u53E3\u5F84\uFF1ASVG \u4E00\u5F8B\u8DDF\u968F 1em\uFF08\u6BD4 16px \u6863\u5C0F\u4E00\u53F7\uFF09\u3002\n \u26A0\uFE0F flex:none \u662F\u786C\u7EA6\u675F\uFF1Asvg \u662F\u6309\u94AE\u7684\u76F4\u63A5 flex item\uFF0C\u9ED8\u8BA4 flex-shrink:1 \u4F1A\u88AB\u6309\u94AE\u5185\u8DDD\n \u6324\u6210 10px \u7A84\u6761\uFF1B\u90A3\u662F\u5E03\u5C40\u6536\u7F29\uFF0C\u4E0D\u662F\u5C42\u53E0\u4F18\u5148\u7EA7 \u2014\u2014 \u6539 width\u3001\u52A0 !important \u90FD\u6551\u4E0D\u56DE\u6765\uFF0C\n \u800C height \u5728\u4EA4\u53C9\u8F74\u4E0D\u53D7\u5F71\u54CD\uFF0C\u4E8E\u662F\u56FE\u6807\u88AB\u538B\u6241\u53D8\u5F62\u3002\u540E\u4EE3\u9009\u62E9\u5668\u517C\u5BB9\u5B98\u65B9\u56FE\u6807\u5916\u7684 wrapper\u3002 */\n.dshpc-iconbtn svg{display:block;width:1em;height:1em;flex:none;}\n/* dense\uFF1A\u53EA\u653E\u5927\u56FE\u6807\u7684 em \u503C\uFF0C\u6B63\u65B9\u5F62\u5BBD\u9AD8\u4E0E\u9AD8\u5EA6\u6863\u90FD\u4E0D\u52A8\uFF1B\n 1.25em \u76F8\u5BF9\u6309\u94AE\u5B57\u53F7 12/13 \u21D2 15/16.25px\uFF0C\u4E0E .dshpc-btn--dense \u4E00\u81F4\u3002 */\n.dshpc-iconbtn.dshpc-iconbtn--dense svg{width:1.25em;height:1.25em;}\n.dshpc-iconbtn--outline{--icb-bg:var(--dshpc-surface-1);--icb-border:var(--dshpc-border);}\n.dshpc-iconbtn--danger{--icb-fg:var(--dshpc-danger);--icb-bg-hover:var(--dshpc-danger-soft);--icb-fg-hover:var(--dshpc-danger);}\n.dshpc-iconbtn:hover:not(:disabled){background:var(--icb-bg-hover);color:var(--icb-fg-hover);}\n.dshpc-iconbtn:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:2px;}\n.dshpc-iconbtn:disabled{cursor:default;opacity:.4;}\n\n/* \u2500\u2500 \u884C\u5F0F\u6587\u4EF6\u6309\u94AE\uFF08\u56FE\u6807 + \u6587\u4EF6\u540D\uFF09P2\uFF1A**\u5168\u7AD9\u552F\u4E00\u5B9E\u73B0**\uFF082026-10-04 \u6536\u7F16\uFF09\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n \u7528\u9014\uFF1A\u300C\u4EA7\u51FA\u7269 / \u9644\u4EF6\u300D\u90A3\u79CD**\u4E00\u884C\u4E00\u4E2A\u6587\u4EF6**\u7684\u6E05\u5355\u9879\uFF08\u57FA\u7840\u4FE1\u606F\u53F3\u680F\u4EA7\u51FA\u7269\u6E05\u5355\u3001\u9644\u4EF6\u533A\u3001\n \u6267\u884C\u8BB0\u5F55\u9875\u7684\u5C55\u5F00\u533A\uFF09\u3002\u5E73\u65F6\u900F\u660E\u3001**\u9F20\u6807\u79FB\u4E0A\u53BB\u624D\u51FA\u6D45\u5E95**\uFF08\u6CBF\u7528\u7528\u6237 2026-10-03 \u5B9A\u7684\u89C2\u611F\uFF09\u3002\n \u4E24\u4E2A\u5F62\u6001\u4FEE\u9970\u7C7B\uFF1A\n --block \u6491\u6EE1\u7236\u5BBD\uFF08\u6E05\u5355\u91CC\u4E00\u9879\u4E00\u884C\uFF09\n --inline \u5185\u5BB9\u5BBD\uFF08\u8DDF\u5728\u6587\u5B57\u540E\u5934\uFF0C\u5982\u9644\u4EF6\u884C\uFF09\n \u6536\u7F16\u539F\u56E0\uFF1A\u8FD9\u4EFD\u76AE\u80A4\u6B64\u524D\u53EA\u5199\u5728 task-list.tsx \u7684 TASK_LIST_CSS \u91CC\uFF08\u65E7\u540D .dshpc-info-out\uFF09\uFF0C\n \u6267\u884C\u8BB0\u5F55\u9875\u5C55\u5F00\u533A\u8981\u7528\u540C\u4E00\u79CD\u89C2\u611F \u21D2 \u4E0A\u63D0\u57FA\u7840\u5C42\uFF0C\u907F\u514D\u518D\u51FA\u73B0\u300C\u5404\u5199\u4E00\u4EFD\u5916\u89C2\u300D\uFF08\u540C\u540D\u4E0D\u540C\u76AE\u7684\u5751\u521A\u8E29\u8FC7\uFF09\u3002 */\n.dshpc-filechip{appearance:none;-webkit-appearance:none;border:0;border-radius:var(--dshpc-radius-xs);\n background:transparent;color:var(--dshpc-fg);font:inherit;text-align:left;cursor:pointer;min-width:0;\n transition:background-color var(--dshpc-dur) var(--dshpc-ease);}\n.dshpc-filechip:hover:not(:disabled){background:var(--dshpc-chip-bg);}\n.dshpc-filechip:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:1px;}\n.dshpc-filechip:disabled{cursor:default;background:transparent;color:var(--dshpc-fg-3);}\n.dshpc-filechip--block{display:flex;align-items:center;gap:6px;width:100%;box-sizing:border-box;\n padding:4px 6px;font-size:var(--dshpc-font-xs);}\n.dshpc-filechip--inline{display:inline-flex;align-items:center;gap:4px;padding:2px 6px;font-size:var(--dshpc-font-sm);}\n\n@media (prefers-reduced-motion: reduce){.dshpc-btn,.dshpc-iconbtn,.dshpc-filechip{transition:none;}}\n";
2
2
  //# sourceMappingURL=button-css.generated.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"button-css.generated.d.ts","sourceRoot":"","sources":["../../../src/ui/actions/button-css.generated.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,UAAU,0idAAmkT,CAAA"}
1
+ {"version":3,"file":"button-css.generated.d.ts","sourceRoot":"","sources":["../../../src/ui/actions/button-css.generated.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,UAAU,0mgBAA2pU,CAAA"}
@@ -1,4 +1,4 @@
1
1
  // ⚠️ 生成物,勿手改。真源 = src/ui/actions/button.css
2
2
  // 由 scripts/gen-css.mjs 生成(`pnpm run gen:css`):改样式请改那个 .css 文件后重新生成。
3
- export const BUTTON_CSS = "\n/* ── 按钮 / 图标钮 P2 ───────────────────────────────────────────────────\n 与 Segmented 同一条高度纪律:--dshpc-control-h-sm(24) / -md(28) / -lg(32),\n 有边框的 variant 用 1px 真边框 + 内部 padding 补回,**有边 / 无边同高**。\n\n 三条受控轴(2026-10-19 重写,对齐主流 UI 框架的分类口径):\n · variant —— 外观档 = 形态 + 语义色,共 10 档:\n primary / secondary / outline / ghost / danger / success / warning / info /\n danger-outline(红字描边)/ link(行内链接)\n · size —— sm / md / lg\n · block —— 撑满父宽\n 每一档**只填 5 个局部变量**(--btn-bg / -fg / -border / -bg-hover / -bg-active),\n 结构与交互只有上面这一份;任何档位都不许再写一遍 display/height/padding。\n 自定义颜色(Button 的 color 参数)同样只覆盖这 5 个变量(token 覆盖,不是新皮肤)。\n\n ⚠️ hover 不再用 opacity 压一层(用户 2026-10-19:「黑色和红色的按钮移上去变化太小,\n 完全感觉不到颜色变了」)⇒ 走 --dshpc-*-hover / -active 的明确混色,见 tokens-css.ts。 */\n.dshpc-btn{--btn-bg:transparent;--btn-fg:var(--dshpc-fg);--btn-border:transparent;--btn-pad:12px;\n --btn-bg-hover:var(--dshpc-hover);--btn-bg-active:var(--dshpc-active);--btn-fg-hover:var(--btn-fg);\n appearance:none;display:inline-flex;align-items:center;justify-content:center;gap:6px;\n box-sizing:border-box;border:1px solid var(--btn-border);border-radius:var(--dshpc-radius-md);\n background-color:var(--btn-bg);color:var(--btn-fg);font-family:inherit;font-weight:500;white-space:nowrap;cursor:pointer;\n transition:background-color var(--dshpc-dur-fast) var(--dshpc-ease),border-color var(--dshpc-dur-fast) var(--dshpc-ease),color var(--dshpc-dur-fast) var(--dshpc-ease),box-shadow var(--dshpc-dur-fast) var(--dshpc-ease),transform var(--dshpc-dur-fast) var(--dshpc-ease);}\n.dshpc-btn--sm{--btn-pad:10px;height:var(--dshpc-control-h-sm);padding:0 var(--btn-pad);font-size:var(--dshpc-font-sm);line-height:1;}\n.dshpc-btn--md{--btn-pad:12px;height:var(--dshpc-control-h-md);padding:0 var(--btn-pad);font-size:var(--dshpc-font-md);line-height:1;}\n.dshpc-btn--lg{--btn-pad:14px;height:var(--dshpc-control-h-lg);padding:0 var(--btn-pad);font-size:var(--dshpc-font-md);line-height:1;}\n/* block:撑满父宽(表单底栏 / 抽屉底部的主操作) */\n.dshpc-btn--block{display:flex;width:100%;}\n/* block + 前置图标 ⇒ 文字视觉居中(2026-10-19 用户点名):\n 内容组 [图标 + 间距 + 文字] 整体在盒内居中时,**文字**的中心会被图标推右半格。\n 把右内边距补上「图标宽 + 间距」,可用盒随之左移同量 ⇒ 文字落回视觉中心,图标贴左侧。\n 图标宽按 1.2em 估(官方图标 14/16px vs 字号 12/13px),em 随字号档自动缩放。 */\n.dshpc-btn--block.dshpc-btn--icon-start{padding-right:calc(var(--btn-pad) + 1.2em + 6px);}\n/* 图标比同档文字小一号(用户 2026-11-02):容器吃掉 0.875em,内联 SVG 一律跟随 1em,\n 不再由调用方的 size={16} 说了算 —— 全站按钮图标尺寸只由这一处决定。 */\n.dshpc-btn__icon,.dshpc-btn__icon-end{display:inline-flex;align-items:center;justify-content:center;flex:none;line-height:0;font-size:.875em;}\n.dshpc-btn__icon svg,.dshpc-btn__icon-end svg{display:block;margin:0;width:1em;height:1em;}\n/* maxWidth 包 MarqueeText 时:标签作为 flex 子项必须能收缩到内容以下,否则省略号 / 跑马灯测不准 */\n.dshpc-btn .dshpc-btn__label{min-width:0;}\n/* loading:不换 DOM 结构,只在文案前插一枚 Loader(size=xs,12px)。\n 环的画法与动画统一在 controls/loader.css(本文件不再维护第二份 SVG 弧 / keyframes)。 */\n\n/* 交互态:颜色变化写在变量上 ⇒ 所有档位一次生效,且变化幅度由 token 决定(够明显) */\n.dshpc-btn:hover:not(:disabled){background-color:var(--btn-bg-hover);color:var(--btn-fg-hover);}\n.dshpc-btn:active:not(:disabled){background-color:var(--btn-bg-active);transform:translateY(1px);}\n.dshpc-btn:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:2px;}\n.dshpc-btn:disabled{cursor:default;opacity:.5;}\n\n.dshpc-btn--primary{--btn-bg:var(--dshpc-accent);--btn-fg:var(--dshpc-fg-inverse);\n --btn-bg-hover:var(--dshpc-accent-hover);--btn-bg-active:var(--dshpc-accent-active);}\n/* secondary:中性实心(灰面),用于「取消 / 次要」这类与主操作并排的按钮 */\n.dshpc-btn--secondary{--btn-bg:var(--dshpc-hover);--btn-fg:var(--dshpc-fg);\n --btn-bg-hover:var(--dshpc-active);--btn-bg-active:var(--dshpc-active);}\n.dshpc-btn--outline{--btn-bg:var(--dshpc-surface-1);--btn-border:var(--dshpc-border-strong);\n --btn-bg-hover:var(--dshpc-hover);--btn-bg-active:var(--dshpc-active);}\n.dshpc-btn--ghost{--btn-fg:var(--dshpc-fg-2);--btn-fg-hover:var(--dshpc-fg);\n --btn-bg-hover:var(--dshpc-hover);--btn-bg-active:var(--dshpc-active);}\n.dshpc-btn--danger{--btn-bg:var(--dshpc-danger);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-danger-hover);--btn-bg-active:var(--dshpc-danger-active);}\n.dshpc-btn--success{--btn-bg:var(--dshpc-success);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-success-hover);--btn-bg-active:var(--dshpc-success-active);}\n.dshpc-btn--warning{--btn-bg:var(--dshpc-warning);--btn-fg:var(--dshpc-on-warning);\n --btn-bg-hover:var(--dshpc-warning-hover);--btn-bg-active:var(--dshpc-warning-active);}\n.dshpc-btn--info{--btn-bg:var(--dshpc-business);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-business-hover);--btn-bg-active:var(--dshpc-business-active);}\n/* 扩展八色实心(2026-10-29):白字两主题均 ≥4.5:1;hover/active 走各自 token 派生。 */\n.dshpc-btn--purple{--btn-bg:var(--dshpc-purple);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-purple-hover);--btn-bg-active:var(--dshpc-purple-active);}\n.dshpc-btn--pink{--btn-bg:var(--dshpc-pink);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-pink-hover);--btn-bg-active:var(--dshpc-pink-active);}\n.dshpc-btn--cyan{--btn-bg:var(--dshpc-cyan);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-cyan-hover);--btn-bg-active:var(--dshpc-cyan-active);}\n.dshpc-btn--teal{--btn-bg:var(--dshpc-teal);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-teal-hover);--btn-bg-active:var(--dshpc-teal-active);}\n.dshpc-btn--orange{--btn-bg:var(--dshpc-orange);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-orange-hover);--btn-bg-active:var(--dshpc-orange-active);}\n.dshpc-btn--indigo{--btn-bg:var(--dshpc-indigo);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-indigo-hover);--btn-bg-active:var(--dshpc-indigo-active);}\n.dshpc-btn--rose{--btn-bg:var(--dshpc-rose);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-rose-hover);--btn-bg-active:var(--dshpc-rose-active);}\n.dshpc-btn--slate{--btn-bg:var(--dshpc-slate);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-slate-hover);--btn-bg-active:var(--dshpc-slate-active);}\n/* danger-outline:红字描边(破坏性次要操作,如卡片上的「删除」)。\n ⚠️ 旧修饰类 danger-ink 保留为别名(消费方可能还在挂),两者同一套皮肤。 */\n.dshpc-btn--danger-outline,.dshpc-btn--danger-ink{--btn-border:var(--dshpc-danger);--btn-fg:var(--dshpc-danger);\n --btn-fg-hover:var(--dshpc-danger);--btn-bg-hover:var(--dshpc-danger-soft);--btn-bg-active:var(--dshpc-danger-soft);}\n/* link:行内文字链接型(会话 / 产出文件名),无底无边、品牌蓝、hover 下划线 */\n.dshpc-btn--link{--btn-fg:var(--dshpc-link);--btn-fg-hover:var(--dshpc-link);\n --btn-bg-hover:transparent;--btn-bg-active:transparent;\n height:auto;padding:0;border:0;background:none;font-weight:400;text-align:left;}\n.dshpc-btn--link:hover:not(:disabled){text-decoration:underline;}\n\n/* 图标钮:纯图标,方形;尺寸档的宽高与同档文字按钮等高、圆角统一吃 md(与 .dshpc-btn 同款,2026-10-28 拍板)\n 底色 / 图标色全走局部变量:默认**无底色**,消费方可传 color(图标色)/ background(底色)覆盖(用户 2026-11-02)。 */\n.dshpc-iconbtn{--icb-bg:transparent;--icb-bg-hover:var(--dshpc-hover);--icb-fg:var(--dshpc-fg-2);--icb-fg-hover:var(--dshpc-fg);\n appearance:none;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;\n border:1px solid var(--icb-border,transparent);border-radius:var(--dshpc-radius-md);\n background:var(--icb-bg);color:var(--icb-fg);\n font-family:inherit;cursor:pointer;flex:none;\n transition:background-color var(--dshpc-dur-fast) var(--dshpc-ease),border-color var(--dshpc-dur-fast) var(--dshpc-ease),color var(--dshpc-dur-fast) var(--dshpc-ease),opacity var(--dshpc-dur-fast) var(--dshpc-ease);}\n.dshpc-iconbtn--sm{width:var(--dshpc-control-h-sm);height:var(--dshpc-control-h-sm);font-size:var(--dshpc-font-sm);}\n.dshpc-iconbtn--md{width:var(--dshpc-control-h-md);height:var(--dshpc-control-h-md);font-size:var(--dshpc-font-md);}\n.dshpc-iconbtn--lg{width:var(--dshpc-control-h-lg);height:var(--dshpc-control-h-lg);font-size:var(--dshpc-font-md);}\n/* 图标与文字按钮同口径:内联 SVG 一律跟随 1em(比 16px 档小一号) */\n.dshpc-iconbtn > svg{display:block;width:1em;height:1em;}\n.dshpc-iconbtn--outline{--icb-bg:var(--dshpc-surface-1);--icb-border:var(--dshpc-border);}\n.dshpc-iconbtn--danger{--icb-fg:var(--dshpc-danger);--icb-bg-hover:var(--dshpc-danger-soft);--icb-fg-hover:var(--dshpc-danger);}\n.dshpc-iconbtn:hover:not(:disabled){background:var(--icb-bg-hover);color:var(--icb-fg-hover);}\n.dshpc-iconbtn:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:2px;}\n.dshpc-iconbtn:disabled{cursor:default;opacity:.4;}\n\n/* ── 行式文件按钮(图标 + 文件名)P2:**全站唯一实现**(2026-10-04 收编)──────────\n 用途:「产出物 / 附件」那种**一行一个文件**的清单项(基础信息右栏产出物清单、附件区、\n 执行记录页的展开区)。平时透明、**鼠标移上去才出浅底**(沿用用户 2026-10-03 定的观感)。\n 两个形态修饰类:\n --block 撑满父宽(清单里一项一行)\n --inline 内容宽(跟在文字后头,如附件行)\n 收编原因:这份皮肤此前只写在 task-list.tsx 的 TASK_LIST_CSS 里(旧名 .dshpc-info-out),\n 执行记录页展开区要用同一种观感 ⇒ 上提基础层,避免再出现「各写一份外观」(同名不同皮的坑刚踩过)。 */\n.dshpc-filechip{appearance:none;-webkit-appearance:none;border:0;border-radius:var(--dshpc-radius-xs);\n background:transparent;color:var(--dshpc-fg);font:inherit;text-align:left;cursor:pointer;min-width:0;\n transition:background-color var(--dshpc-dur) var(--dshpc-ease);}\n.dshpc-filechip:hover:not(:disabled){background:var(--dshpc-chip-bg);}\n.dshpc-filechip:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:1px;}\n.dshpc-filechip:disabled{cursor:default;background:transparent;color:var(--dshpc-fg-3);}\n.dshpc-filechip--block{display:flex;align-items:center;gap:6px;width:100%;box-sizing:border-box;\n padding:4px 6px;font-size:var(--dshpc-font-xs);}\n.dshpc-filechip--inline{display:inline-flex;align-items:center;gap:4px;padding:2px 6px;font-size:var(--dshpc-font-sm);}\n\n@media (prefers-reduced-motion: reduce){.dshpc-btn,.dshpc-iconbtn,.dshpc-filechip{transition:none;}}\n";
3
+ export const BUTTON_CSS = "\n/* ── 按钮 / 图标钮 P2 ───────────────────────────────────────────────────\n 与 Segmented 同一条高度纪律:--dshpc-control-h-sm(24) / -md(28) / -lg(32),\n 有边框的 variant 用 1px 真边框 + 内部 padding 补回,**有边 / 无边同高**。\n\n 三条受控轴(2026-10-19 重写,对齐主流 UI 框架的分类口径):\n · variant —— 外观档 = 形态 + 语义色,共 10 档:\n primary / secondary / outline / ghost / danger / success / warning / info /\n danger-outline(红字描边)/ link(行内链接)\n · size —— sm / md / lg\n · block —— 撑满父宽\n 每一档**只填 5 个局部变量**(--btn-bg / -fg / -border / -bg-hover / -bg-active),\n 结构与交互只有上面这一份;任何档位都不许再写一遍 display/height/padding。\n 自定义颜色(Button 的 color 参数)同样只覆盖这 5 个变量(token 覆盖,不是新皮肤)。\n\n ⚠️ hover 不再用 opacity 压一层(用户 2026-10-19:「黑色和红色的按钮移上去变化太小,\n 完全感觉不到颜色变了」)⇒ 走 --dshpc-*-hover / -active 的明确混色,见 tokens-css.ts。 */\n.dshpc-btn{--btn-bg:transparent;--btn-fg:var(--dshpc-fg);--btn-border:transparent;--btn-pad:12px;\n --btn-bg-hover:var(--dshpc-hover);--btn-bg-active:var(--dshpc-active);--btn-fg-hover:var(--btn-fg);\n appearance:none;display:inline-flex;align-items:center;justify-content:center;gap:6px;\n box-sizing:border-box;border:1px solid var(--btn-border);border-radius:var(--dshpc-radius-md);\n background-color:var(--btn-bg);color:var(--btn-fg);font-family:inherit;font-weight:500;white-space:nowrap;cursor:pointer;\n transition:background-color var(--dshpc-dur-fast) var(--dshpc-ease),border-color var(--dshpc-dur-fast) var(--dshpc-ease),color var(--dshpc-dur-fast) var(--dshpc-ease),box-shadow var(--dshpc-dur-fast) var(--dshpc-ease),transform var(--dshpc-dur-fast) var(--dshpc-ease);}\n.dshpc-btn--sm{--btn-pad:10px;height:var(--dshpc-control-h-sm);padding:0 var(--btn-pad);font-size:var(--dshpc-font-sm);line-height:1;}\n.dshpc-btn--md{--btn-pad:12px;height:var(--dshpc-control-h-md);padding:0 var(--btn-pad);font-size:var(--dshpc-font-md);line-height:1;}\n.dshpc-btn--lg{--btn-pad:14px;height:var(--dshpc-control-h-lg);padding:0 var(--btn-pad);font-size:var(--dshpc-font-md);line-height:1;}\n/* block:撑满父宽(表单底栏 / 抽屉底部的主操作) */\n.dshpc-btn--block{display:flex;width:100%;}\n/* block + 前置图标 ⇒ 文字视觉居中(2026-10-19 用户点名):\n 内容组 [图标 + 间距 + 文字] 整体在盒内居中时,**文字**的中心会被图标推右半格。\n 把右内边距补上「图标宽 + 间距」,可用盒随之左移同量 ⇒ 文字落回视觉中心,图标贴左侧。\n 图标宽按 1.2em 估(官方图标 14/16px vs 字号 12/13px),em 随字号档自动缩放。 */\n.dshpc-btn--block.dshpc-btn--icon-start{padding-right:calc(var(--btn-pad) + 1.2em + 6px);}\n/* 图标比同档文字小一号(用户 2026-11-02):容器吃掉 0.875em,内联 SVG 一律跟随 1em,\n 不再由调用方的 size={16} 说了算 —— 全站按钮图标尺寸只由这一处决定。 */\n.dshpc-btn__icon,.dshpc-btn__icon-end{display:inline-flex;align-items:center;justify-content:center;flex:none;line-height:0;font-size:.875em;}\n.dshpc-btn__icon svg,.dshpc-btn__icon-end svg{display:block;margin:0;width:1em;height:1em;}\n/* maxWidth 包 MarqueeText 时:标签作为 flex 子项必须能收缩到内容以下,否则省略号 / 跑马灯测不准 */\n.dshpc-btn .dshpc-btn__label{min-width:0;}\n/* loading:不换 DOM 结构,只在文案前插一枚 Loader(size=xs,12px)。\n 环的画法与动画统一在 controls/loader.css(本文件不再维护第二份 SVG 弧 / keyframes)。 */\n\n/* 交互态:颜色变化写在变量上 ⇒ 所有档位一次生效,且变化幅度由 token 决定(够明显) */\n.dshpc-btn:hover:not(:disabled){background-color:var(--btn-bg-hover);color:var(--btn-fg-hover);}\n.dshpc-btn:active:not(:disabled){background-color:var(--btn-bg-active);transform:translateY(1px);}\n.dshpc-btn:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:2px;}\n.dshpc-btn:disabled{cursor:default;opacity:.5;}\n/* dense:尺寸档 / 高度一律不变,只把图标放大一档、内距收紧(描边细的文件类型图标用)。\n 只覆盖局部变量与图标字号,不另写一套皮肤;必须写在尺寸档与图标规则之后才压得过默认值。 */\n.dshpc-btn--dense{--btn-pad:6px;}\n.dshpc-btn--dense .dshpc-btn__icon,.dshpc-btn--dense .dshpc-btn__icon-end{font-size:1.25em;}\n\n.dshpc-btn--primary{--btn-bg:var(--dshpc-accent);--btn-fg:var(--dshpc-fg-inverse);\n --btn-bg-hover:var(--dshpc-accent-hover);--btn-bg-active:var(--dshpc-accent-active);}\n/* secondary:中性实心(灰面),用于「取消 / 次要」这类与主操作并排的按钮 */\n.dshpc-btn--secondary{--btn-bg:var(--dshpc-hover);--btn-fg:var(--dshpc-fg);\n --btn-bg-hover:var(--dshpc-active);--btn-bg-active:var(--dshpc-active);}\n.dshpc-btn--outline{--btn-bg:var(--dshpc-surface-1);--btn-border:var(--dshpc-border-strong);\n --btn-bg-hover:var(--dshpc-hover);--btn-bg-active:var(--dshpc-active);}\n.dshpc-btn--ghost{--btn-fg:var(--dshpc-fg-2);--btn-fg-hover:var(--dshpc-fg);\n --btn-bg-hover:var(--dshpc-hover);--btn-bg-active:var(--dshpc-active);}\n.dshpc-btn--danger{--btn-bg:var(--dshpc-danger);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-danger-hover);--btn-bg-active:var(--dshpc-danger-active);}\n.dshpc-btn--success{--btn-bg:var(--dshpc-success);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-success-hover);--btn-bg-active:var(--dshpc-success-active);}\n.dshpc-btn--warning{--btn-bg:var(--dshpc-warning);--btn-fg:var(--dshpc-on-warning);\n --btn-bg-hover:var(--dshpc-warning-hover);--btn-bg-active:var(--dshpc-warning-active);}\n.dshpc-btn--info{--btn-bg:var(--dshpc-business);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-business-hover);--btn-bg-active:var(--dshpc-business-active);}\n/* 扩展八色实心(2026-10-29):白字两主题均 ≥4.5:1;hover/active 走各自 token 派生。 */\n.dshpc-btn--purple{--btn-bg:var(--dshpc-purple);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-purple-hover);--btn-bg-active:var(--dshpc-purple-active);}\n.dshpc-btn--pink{--btn-bg:var(--dshpc-pink);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-pink-hover);--btn-bg-active:var(--dshpc-pink-active);}\n.dshpc-btn--cyan{--btn-bg:var(--dshpc-cyan);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-cyan-hover);--btn-bg-active:var(--dshpc-cyan-active);}\n.dshpc-btn--teal{--btn-bg:var(--dshpc-teal);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-teal-hover);--btn-bg-active:var(--dshpc-teal-active);}\n.dshpc-btn--orange{--btn-bg:var(--dshpc-orange);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-orange-hover);--btn-bg-active:var(--dshpc-orange-active);}\n.dshpc-btn--indigo{--btn-bg:var(--dshpc-indigo);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-indigo-hover);--btn-bg-active:var(--dshpc-indigo-active);}\n.dshpc-btn--rose{--btn-bg:var(--dshpc-rose);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-rose-hover);--btn-bg-active:var(--dshpc-rose-active);}\n.dshpc-btn--slate{--btn-bg:var(--dshpc-slate);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-slate-hover);--btn-bg-active:var(--dshpc-slate-active);}\n/* danger-outline:红字描边(破坏性次要操作,如卡片上的「删除」)。\n ⚠️ 旧修饰类 danger-ink 保留为别名(消费方可能还在挂),两者同一套皮肤。 */\n.dshpc-btn--danger-outline,.dshpc-btn--danger-ink{--btn-border:var(--dshpc-danger);--btn-fg:var(--dshpc-danger);\n --btn-fg-hover:var(--dshpc-danger);--btn-bg-hover:var(--dshpc-danger-soft);--btn-bg-active:var(--dshpc-danger-soft);}\n/* link:行内文字链接型(会话 / 产出文件名),无底无边、品牌蓝、hover 下划线 */\n.dshpc-btn--link{--btn-fg:var(--dshpc-link);--btn-fg-hover:var(--dshpc-link);\n --btn-bg-hover:transparent;--btn-bg-active:transparent;\n height:auto;padding:0;border:0;background:none;font-weight:400;text-align:left;}\n.dshpc-btn--link:hover:not(:disabled){text-decoration:underline;}\n\n/* 图标钮:纯图标,方形;尺寸档的宽高与同档文字按钮等高、圆角统一吃 md(与 .dshpc-btn 同款,2026-10-28 拍板)\n 底色 / 图标色全走局部变量:默认**无底色**,消费方可传 color(图标色)/ background(底色)覆盖(用户 2026-11-02)。 */\n.dshpc-iconbtn{--icb-bg:transparent;--icb-bg-hover:var(--dshpc-hover);--icb-fg:var(--dshpc-fg-2);--icb-fg-hover:var(--dshpc-fg);\n appearance:none;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;padding:0;\n border:1px solid var(--icb-border,transparent);border-radius:var(--dshpc-radius-md);\n background:var(--icb-bg);color:var(--icb-fg);\n font-family:inherit;cursor:pointer;flex:none;\n transition:background-color var(--dshpc-dur-fast) var(--dshpc-ease),border-color var(--dshpc-dur-fast) var(--dshpc-ease),color var(--dshpc-dur-fast) var(--dshpc-ease),opacity var(--dshpc-dur-fast) var(--dshpc-ease);}\n.dshpc-iconbtn--sm{width:var(--dshpc-control-h-sm);height:var(--dshpc-control-h-sm);font-size:var(--dshpc-font-sm);}\n.dshpc-iconbtn--md{width:var(--dshpc-control-h-md);height:var(--dshpc-control-h-md);font-size:var(--dshpc-font-md);}\n.dshpc-iconbtn--lg{width:var(--dshpc-control-h-lg);height:var(--dshpc-control-h-lg);font-size:var(--dshpc-font-md);}\n/* 图标与文字按钮同口径:SVG 一律跟随 1em(比 16px 档小一号)。\n ⚠️ flex:none 是硬约束:svg 是按钮的直接 flex item,默认 flex-shrink:1 会被按钮内距\n 挤成 10px 窄条;那是布局收缩,不是层叠优先级 —— 改 width、加 !important 都救不回来,\n 而 height 在交叉轴不受影响,于是图标被压扁变形。后代选择器兼容官方图标外的 wrapper。 */\n.dshpc-iconbtn svg{display:block;width:1em;height:1em;flex:none;}\n/* dense:只放大图标的 em 值,正方形宽高与高度档都不动;\n 1.25em 相对按钮字号 12/13 ⇒ 15/16.25px,与 .dshpc-btn--dense 一致。 */\n.dshpc-iconbtn.dshpc-iconbtn--dense svg{width:1.25em;height:1.25em;}\n.dshpc-iconbtn--outline{--icb-bg:var(--dshpc-surface-1);--icb-border:var(--dshpc-border);}\n.dshpc-iconbtn--danger{--icb-fg:var(--dshpc-danger);--icb-bg-hover:var(--dshpc-danger-soft);--icb-fg-hover:var(--dshpc-danger);}\n.dshpc-iconbtn:hover:not(:disabled){background:var(--icb-bg-hover);color:var(--icb-fg-hover);}\n.dshpc-iconbtn:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:2px;}\n.dshpc-iconbtn:disabled{cursor:default;opacity:.4;}\n\n/* ── 行式文件按钮(图标 + 文件名)P2:**全站唯一实现**(2026-10-04 收编)──────────\n 用途:「产出物 / 附件」那种**一行一个文件**的清单项(基础信息右栏产出物清单、附件区、\n 执行记录页的展开区)。平时透明、**鼠标移上去才出浅底**(沿用用户 2026-10-03 定的观感)。\n 两个形态修饰类:\n --block 撑满父宽(清单里一项一行)\n --inline 内容宽(跟在文字后头,如附件行)\n 收编原因:这份皮肤此前只写在 task-list.tsx 的 TASK_LIST_CSS 里(旧名 .dshpc-info-out),\n 执行记录页展开区要用同一种观感 ⇒ 上提基础层,避免再出现「各写一份外观」(同名不同皮的坑刚踩过)。 */\n.dshpc-filechip{appearance:none;-webkit-appearance:none;border:0;border-radius:var(--dshpc-radius-xs);\n background:transparent;color:var(--dshpc-fg);font:inherit;text-align:left;cursor:pointer;min-width:0;\n transition:background-color var(--dshpc-dur) var(--dshpc-ease);}\n.dshpc-filechip:hover:not(:disabled){background:var(--dshpc-chip-bg);}\n.dshpc-filechip:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:1px;}\n.dshpc-filechip:disabled{cursor:default;background:transparent;color:var(--dshpc-fg-3);}\n.dshpc-filechip--block{display:flex;align-items:center;gap:6px;width:100%;box-sizing:border-box;\n padding:4px 6px;font-size:var(--dshpc-font-xs);}\n.dshpc-filechip--inline{display:inline-flex;align-items:center;gap:4px;padding:2px 6px;font-size:var(--dshpc-font-sm);}\n\n@media (prefers-reduced-motion: reduce){.dshpc-btn,.dshpc-iconbtn,.dshpc-filechip{transition:none;}}\n";
4
4
  //# sourceMappingURL=button-css.generated.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"button-css.generated.js","sourceRoot":"","sources":["../../../src/ui/actions/button-css.generated.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,qEAAqE;AACrE,MAAM,CAAC,MAAM,UAAU,GAAG,gkTAAgkT,CAAA"}
1
+ {"version":3,"file":"button-css.generated.js","sourceRoot":"","sources":["../../../src/ui/actions/button-css.generated.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,qEAAqE;AACrE,MAAM,CAAC,MAAM,UAAU,GAAG,wpUAAwpU,CAAA"}
@@ -34,6 +34,10 @@ export interface CardSharedProps {
34
34
  className?: string;
35
35
  style?: CSSProperties;
36
36
  translate?: Translate;
37
+ /** 整卡 hover 变色:统一走 --dshpc-card-hover。默认 false,纯新增、不改现有外观。 */
38
+ hoverable?: boolean;
39
+ /** 是否带底色:默认 true(Card = surface-1,StripCard = accent 浅底);false 时底透明、边框仍在。 */
40
+ filled?: boolean;
37
41
  }
38
42
  /**
39
43
  * 卡片(框式):复用 `Surface` 外框(surface 底 + 1px 边框 + 圆角 12),
@@ -1 +1 @@
1
- {"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../../src/ui/display/Card.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,IAAI,CAAC,EAAE,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAE9E,OAAO,EAAK,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAMvD,wDAAwD;AACxD,eAAO,MAAM,YAAY,yIAGf,CAAA;AACV,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAA;AAEtD,6CAA6C;AAC7C,MAAM,WAAW,cAAc;IAC7B,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAA;IAC1C,oBAAoB;IACpB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,yBAAyB;IACzB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACrB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,sCAAsC;IACtC,MAAM,CAAC,EAAE,UAAU,GAAG,MAAM,CAAA;IAC5B,oBAAoB;IACpB,GAAG,CAAC,EAAE,cAAc,CAAA;IACpB,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,2BAA2B;IAC3B,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,uBAAuB;IACvB,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,mBAAmB;IACnB,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB;AA0FD;;;;;;;;;;;;GAYG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,eAAe,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAEjE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,eAAe,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAEtE"}
1
+ {"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../../src/ui/display/Card.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,IAAI,CAAC,EAAE,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAE9E,OAAO,EAAK,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAMvD,wDAAwD;AACxD,eAAO,MAAM,YAAY,yIAGf,CAAA;AACV,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAA;AAEtD,6CAA6C;AAC7C,MAAM,WAAW,cAAc;IAC7B,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAA;IAC1C,oBAAoB;IACpB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,yBAAyB;IACzB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACrB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,sCAAsC;IACtC,MAAM,CAAC,EAAE,UAAU,GAAG,MAAM,CAAA;IAC5B,oBAAoB;IACpB,GAAG,CAAC,EAAE,cAAc,CAAA;IACpB,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,2BAA2B;IAC3B,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,uBAAuB;IACvB,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,mBAAmB;IACnB,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,6EAA6E;IAC7E,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AA4FD;;;;;;;;;;;;GAYG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,eAAe,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAEjE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,eAAe,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAEtE"}
@@ -40,6 +40,8 @@ function CardShell(kind, props) {
40
40
  kind === 'strip' ? 'dshpc-card--strip' : 'dshpc-card--bordered',
41
41
  `dshpc-card--bar-${side}`,
42
42
  isPreset ? `dshpc-card--${accent}` : '',
43
+ props.hoverable === true ? 'dshpc-card--hoverable' : '',
44
+ props.filled === false ? 'dshpc-card--no-fill' : '',
43
45
  props.className ?? '',
44
46
  ]
45
47
  .filter((s) => s !== '')
@@ -1 +1 @@
1
- {"version":3,"file":"Card.js","sourceRoot":"","sources":["../../../src/ui/display/Card.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Card.js","sourceRoot":"","sources":["../../../src/ui/display/Card.ts"],"names":[],"mappings":"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"}
@@ -84,7 +84,7 @@ export function CodeViewer(props) {
84
84
  onClick: copy,
85
85
  }), h(CodeMirror, {
86
86
  value: text,
87
- className: 'dshpc-cv__editor',
87
+ className: 'dshpc-cv__editor dshpc-scroll-thin',
88
88
  theme: 'none',
89
89
  extensions,
90
90
  readOnly: true,
@@ -1 +1 @@
1
- {"version":3,"file":"CodeViewer.js","sourceRoot":"","sources":["../../../src/ui/display/CodeViewer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,aAAa,IAAI,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAyC,MAAM,OAAO,CAAA;AACvH,OAAO,UAAU,MAAM,uBAAuB,CAAA;AAE9C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEhG,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAEtD,iDAAiD;AACjD,MAAM,SAAS,GAAG,oBAAoB,CAAA;AAEtC,SAAS,QAAQ;IACf,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAO,KAAK,CAAA;IACjD,MAAM,IAAI,GAAuB,QAAQ,CAAC,IAAI,CAAA;IAC9C,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;AAC7D,CAAC;AAqBD,MAAM,UAAU,UAAU,CAAC,KAAsB;IAC/C,qBAAqB,CAAC,aAAa,EAAE,eAAe,CAAC,CAAA;IACrD,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,WAAW,GAAG,IAAI,EAAE,GAAG,KAAK,CAAA;IACtF,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC3C,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAU,QAAQ,CAAC,CAAA;IACnD,4CAA4C;IAC5C,MAAM,OAAO,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAA;IAE/C,gFAAgF;IAChF,gCAAgC;IAChC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,OAAO,gBAAgB,KAAK,UAAU;YAAE,OAAM;QACrF,MAAM,IAAI,GAAuB,QAAQ,CAAC,IAAI,CAAA;QAC9C,IAAI,IAAI,KAAK,IAAI;YAAE,OAAM;QACzB,MAAM,IAAI,GAAG,GAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAA,CAAC,CAAC,CAAA;QAClE,IAAI,EAAE,CAAA;QACN,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAA;QAC3C,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,eAAe,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;QACxD,OAAO,GAAG,EAAE,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAA,CAAC,CAAC,CAAA;IACxC,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;IAE7D,MAAM,UAAU,GAAG,OAAO,CAAc,GAAG,EAAE,CAAC;QAC5C,GAAG,eAAe,CAAC,IAAI,CAAC;QACxB,UAAU,CAAC,YAAY,EAAE,gBAAgB;QACzC,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACzC,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAA;IAEpB,MAAM,IAAI,GAAG,GAAS,EAAE;QACtB,KAAK,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAW,EAAE,EAAE;YAC7C,IAAI,EAAE,EAAE,CAAC;gBACP,SAAS,CAAC,IAAI,CAAC,CAAA;gBACf,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAA;YACjD,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAA;IAED,0CAA0C;IAC1C,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAA;QAC5B,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;YAAE,OAAM;QAC1D,IAAI,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK;YAAE,OAAM;QAClD,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAA;IACnH,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAA;IAE3B,OAAO,CAAC,CACN,KAAK,EACL,EAAE,SAAS,EAAE,WAAW,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EACnE,CAAC,CAAC,UAAU,EAAE;QACZ,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC;QACrE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;QAC/C,SAAS,EAAE,gBAAgB;QAC3B,OAAO,EAAE,IAAI;KACd,CAAC,EACF,CAAC,CAAC,UAAU,EAAE;QACZ,KAAK,EAAE,IAAI;QACX,SAAS,EAAE,kBAAkB;QAC7B,KAAK,EAAE,MAAM;QACb,UAAU;QACV,QAAQ,EAAE,IAAI;QACd,MAAM;QACN,cAAc,EAAE,CAAC,IAAgB,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAA,CAAC,CAAC;QAChE,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE;QAC7D,UAAU,EAAE;YACV,WAAW;YACX,UAAU,EAAE,KAAK;YACjB,mBAAmB,EAAE,KAAK;YAC1B,yBAAyB,EAAE,KAAK;YAChC,cAAc,EAAE,KAAK;YACrB,eAAe,EAAE,IAAI;YACrB,aAAa,EAAE,KAAK;YACpB,aAAa,EAAE,KAAK;YACpB,YAAY,EAAE,KAAK;SACpB;KACF,CAAC,CACH,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"CodeViewer.js","sourceRoot":"","sources":["../../../src/ui/display/CodeViewer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { createElement as h, type CSSProperties, type ReactNode } from 'react';
2
+ export interface ListRowProps {
3
+ /** 主内容:图标、名字、标签、左右分区都由调用方自己排。 */
4
+ children?: ReactNode;
5
+ /** 右侧操作槽:核心在此槽外层挡住事件冒泡,点里面的按钮不会连带触发整行。 */
6
+ actions?: ReactNode;
7
+ /** 给了才让整行可点(挂 role=button / tabIndex / Enter·Space)。 */
8
+ onClick?: () => void;
9
+ /** 选中态外观(组件不改状态,由调用方管)。 */
10
+ selected?: boolean;
11
+ /** 带边 / 不带边:无边档仍是 1px 透明占位,两档同高。默认 false。 */
12
+ bordered?: boolean;
13
+ /** hover 提亮开关;默认跟随「整行可点」(可点行开、纯展示行关),显式 true 强制开。 */
14
+ hoverable?: boolean;
15
+ /** 追加 class(只允许补布局,不许覆盖皮肤)。 */
16
+ className?: string;
17
+ style?: CSSProperties;
18
+ }
19
+ /**
20
+ * 一行一条的列表条目:常态带底、整行可点、右侧挂一组小操作。
21
+ *
22
+ * 外框(底 / 边 / 圆角 / 内距)复用 `Surface`,颜色全走 token;本控件只补
23
+ * 「行」独有的:高度档、两槽布局、行级 hover、选中态。
24
+ *
25
+ * 整行刻意**不渲染成 `<button>`**:调用方要在里面放 Button / IconButton,
26
+ * 嵌 button 是非法 HTML。改用 `div[role=button] + tabIndex + Enter/Space`,
27
+ * 与 `src/adv/explorer/landing.ts` 的既有口径一致。
28
+ *
29
+ * ```tsx
30
+ * h(ListRow, {
31
+ * onClick: () => open(file),
32
+ * selected: file.path === current,
33
+ * actions: h(IconButton, { size: 'sm', icon: ..., label: '移除', onClick: () => remove(file) }),
34
+ * }, h('span', null, file.name))
35
+ * ```
36
+ */
37
+ export declare function ListRow(props: ListRowProps): ReturnType<typeof h>;
38
+ //# sourceMappingURL=ListRow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListRow.d.ts","sourceRoot":"","sources":["../../../src/ui/display/ListRow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,IAAI,CAAC,EAAE,KAAK,aAAa,EAAuC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAMnH,MAAM,WAAW,YAAY;IAC3B,iCAAiC;IACjC,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,qDAAqD;IACrD,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,+BAA+B;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,aAAa,CAAA;CACtB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAoDjE"}