dsh-plugin-core 0.1.4 → 0.2.1

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 (118) hide show
  1. package/README.md +6 -8
  2. package/dist/design/index.d.ts +1 -1
  3. package/dist/design/index.d.ts.map +1 -1
  4. package/dist/design/index.js +1 -1
  5. package/dist/design/index.js.map +1 -1
  6. package/dist/design/style-kit.d.ts +4 -9
  7. package/dist/design/style-kit.d.ts.map +1 -1
  8. package/dist/design/style-kit.js +11 -24
  9. package/dist/design/style-kit.js.map +1 -1
  10. package/dist/design/tokens-css.d.ts +1 -1
  11. package/dist/design/tokens-css.d.ts.map +1 -1
  12. package/dist/design/tokens-css.js +162 -132
  13. package/dist/design/tokens-css.js.map +1 -1
  14. package/dist/explorer/ExplorerPanel.js +14 -14
  15. package/dist/explorer/ExplorerPanel.js.map +1 -1
  16. package/dist/explorer/explorer-css.d.ts +1 -1
  17. package/dist/explorer/explorer-css.d.ts.map +1 -1
  18. package/dist/explorer/explorer-css.js +23 -23
  19. package/dist/explorer/explorer-css.js.map +1 -1
  20. package/dist/explorer/preview/index.js +4 -4
  21. package/dist/explorer/preview/index.js.map +1 -1
  22. package/dist/session/index.js +9 -9
  23. package/dist/session/index.js.map +1 -1
  24. package/dist/session/session-css.d.ts +1 -1
  25. package/dist/session/session-css.js +14 -14
  26. package/dist/session/session-css.js.map +1 -1
  27. package/dist/ui/BackToTop.d.ts +1 -1
  28. package/dist/ui/BackToTop.d.ts.map +1 -1
  29. package/dist/ui/BackToTop.js +5 -5
  30. package/dist/ui/BackToTop.js.map +1 -1
  31. package/dist/ui/Button.d.ts +16 -5
  32. package/dist/ui/Button.d.ts.map +1 -1
  33. package/dist/ui/Button.js +53 -14
  34. package/dist/ui/Button.js.map +1 -1
  35. package/dist/ui/Card.js +8 -8
  36. package/dist/ui/Card.js.map +1 -1
  37. package/dist/ui/Checkbox.d.ts +2 -2
  38. package/dist/ui/Checkbox.d.ts.map +1 -1
  39. package/dist/ui/Checkbox.js +4 -4
  40. package/dist/ui/Checkbox.js.map +1 -1
  41. package/dist/ui/Chip.d.ts +1 -1
  42. package/dist/ui/Chip.d.ts.map +1 -1
  43. package/dist/ui/Chip.js +2 -2
  44. package/dist/ui/Chip.js.map +1 -1
  45. package/dist/ui/EmptyState.js +1 -1
  46. package/dist/ui/EmptyState.js.map +1 -1
  47. package/dist/ui/ErrorBoundary.js +1 -1
  48. package/dist/ui/ErrorBoundary.js.map +1 -1
  49. package/dist/ui/Field.d.ts +1 -1
  50. package/dist/ui/Field.d.ts.map +1 -1
  51. package/dist/ui/Field.js +19 -19
  52. package/dist/ui/Field.js.map +1 -1
  53. package/dist/ui/FieldHint.js +2 -2
  54. package/dist/ui/FieldHint.js.map +1 -1
  55. package/dist/ui/Loading.d.ts +1 -1
  56. package/dist/ui/Loading.d.ts.map +1 -1
  57. package/dist/ui/Loading.js +9 -9
  58. package/dist/ui/Loading.js.map +1 -1
  59. package/dist/ui/MarqueeText.d.ts +3 -3
  60. package/dist/ui/MarqueeText.js +5 -5
  61. package/dist/ui/MarqueeText.js.map +1 -1
  62. package/dist/ui/Modal.js +5 -5
  63. package/dist/ui/Modal.js.map +1 -1
  64. package/dist/ui/ModelPicker.js +1 -1
  65. package/dist/ui/ModelPicker.js.map +1 -1
  66. package/dist/ui/Picker.js +16 -16
  67. package/dist/ui/Picker.js.map +1 -1
  68. package/dist/ui/SectionHead.d.ts +1 -1
  69. package/dist/ui/SectionHead.js +4 -4
  70. package/dist/ui/SectionHead.js.map +1 -1
  71. package/dist/ui/Segmented.js +5 -5
  72. package/dist/ui/Segmented.js.map +1 -1
  73. package/dist/ui/Textarea.d.ts +2 -2
  74. package/dist/ui/Textarea.js +3 -3
  75. package/dist/ui/Textarea.js.map +1 -1
  76. package/dist/ui/Toast.js +3 -3
  77. package/dist/ui/Toast.js.map +1 -1
  78. package/dist/ui/card-css.d.ts +1 -1
  79. package/dist/ui/card-css.d.ts.map +1 -1
  80. package/dist/ui/card-css.js +22 -22
  81. package/dist/ui/card-css.js.map +1 -1
  82. package/dist/ui/chip-css.d.ts +1 -1
  83. package/dist/ui/chip-css.d.ts.map +1 -1
  84. package/dist/ui/chip-css.js +10 -10
  85. package/dist/ui/chip-css.js.map +1 -1
  86. package/dist/ui/controls-css.d.ts +8 -8
  87. package/dist/ui/controls-css.d.ts.map +1 -1
  88. package/dist/ui/controls-css.js +261 -203
  89. package/dist/ui/controls-css.js.map +1 -1
  90. package/dist/ui/css.d.ts +0 -11
  91. package/dist/ui/css.d.ts.map +1 -1
  92. package/dist/ui/css.js +3 -16
  93. package/dist/ui/css.js.map +1 -1
  94. package/dist/ui/feedback-css.d.ts +1 -1
  95. package/dist/ui/feedback-css.d.ts.map +1 -1
  96. package/dist/ui/feedback-css.js +30 -31
  97. package/dist/ui/feedback-css.js.map +1 -1
  98. package/dist/ui/index.d.ts +1 -1
  99. package/dist/ui/index.d.ts.map +1 -1
  100. package/dist/ui/index.js +2 -2
  101. package/dist/ui/index.js.map +1 -1
  102. package/dist/ui/picker-css.d.ts +1 -1
  103. package/dist/ui/picker-css.d.ts.map +1 -1
  104. package/dist/ui/picker-css.js +32 -33
  105. package/dist/ui/picker-css.js.map +1 -1
  106. package/dist/ui/resizer.d.ts +1 -1
  107. package/dist/ui/resizer.d.ts.map +1 -1
  108. package/dist/ui/resizer.js +1 -1
  109. package/dist/ui/resizer.js.map +1 -1
  110. package/docs/design/architecture.md +3 -3
  111. package/docs/design/features/design.md +5 -7
  112. package/docs/design/features/ui.md +27 -9
  113. package/docs/design/features.md +1 -1
  114. package/docs/design/structure.md +1 -1
  115. package/docs/design/style.md +34 -17
  116. package/docs/examples/integration.md +3 -5
  117. package/docs/requirements.md +8 -12
  118. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"controls-css.js","sourceRoot":"","sources":["../../src/ui/controls-css.ts"],"names":[],"mappings":"AAAA,mGAAmG;AACnG,mDAAmD;AACnD,2CAA2C;AAE3C,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgE5B,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiEzB,CAAA;AAED,MAAM,CAAC,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2DxB,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6C3B,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;CAmBzB,CAAA;AAED,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;CAQ1B,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+B9B,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;CAkBvB,CAAA"}
1
+ {"version":3,"file":"controls-css.js","sourceRoot":"","sources":["../../src/ui/controls-css.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAE3B,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuE5B,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsHzB,CAAA;AAED,MAAM,CAAC,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2DxB,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6C3B,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;CAmBzB,CAAA;AAED,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;CAQ1B,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+B9B,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;CAkBvB,CAAA"}
package/dist/ui/css.d.ts CHANGED
@@ -1,16 +1,5 @@
1
1
  import { type StyleKit } from '../design/index.js';
2
2
  export declare const CONTROLS_DOMAIN = "controls";
3
- /**
4
- * 把 CSS 模板里的 **变量前缀** `--tdt-` 换成当前插件的。
5
- *
6
- * ⚠️ 类名 `dsh-tdt-` **故意不换**:搬来的控件里 className 是硬编码的 `dsh-tdt-btn` 这类字面量
7
- * (模板字符串里也拼接了),只换 CSS 侧会让选择器与 className 对不上、样式整片失效。
8
- * 要连类名一起隔离,必须同步改造每个控件的 className —— 那是另一个任务。
9
- *
10
- * 已知限制:两个插件若引的 core 版本不同,`.dsh-tdt-*` 规则会互相覆盖(内容相同时无害)。
11
- * 主防线是 style 标签 id(`createStyleKit({ id })`)与变量前缀隔离。
12
- */
13
- export declare function buildCss(template: string, prefix: string): string;
14
3
  export declare function setStyleKit(kit: StyleKit): void;
15
4
  export declare function getStyleKit(): StyleKit;
16
5
  /** 登记 token + 控件样式并确保挂载(幂等)。 */
@@ -1 +1 @@
1
- {"version":3,"file":"css.d.ts","sourceRoot":"","sources":["../../src/ui/css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAkBlE,eAAO,MAAM,eAAe,aAAa,CAAA;AAEzC;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEjE;AA4BD,wBAAgB,WAAW,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI,CAE/C;AAED,wBAAgB,WAAW,IAAI,QAAQ,CAEtC;AAED,gCAAgC;AAChC,wBAAgB,cAAc,CAAC,GAAG,GAAE,QAAkB,GAAG,IAAI,CAG5D"}
1
+ {"version":3,"file":"css.d.ts","sourceRoot":"","sources":["../../src/ui/css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAkBlE,eAAO,MAAM,eAAe,aAAa,CAAA;AA4BzC,wBAAgB,WAAW,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI,CAE/C;AAED,wBAAgB,WAAW,IAAI,QAAQ,CAEtC;AAED,gCAAgC;AAChC,wBAAgB,cAAc,CAAC,GAAG,GAAE,QAAkB,GAAG,IAAI,CAG5D"}
package/dist/ui/css.js CHANGED
@@ -7,19 +7,6 @@ import { CHIP_CSS } from './chip-css.js';
7
7
  import { EXPLORER_CSS } from '../explorer/explorer-css.js';
8
8
  import { SESSION_CSS } from '../session/session-css.js';
9
9
  export const CONTROLS_DOMAIN = 'controls';
10
- /**
11
- * 把 CSS 模板里的 **变量前缀** `--tdt-` 换成当前插件的。
12
- *
13
- * ⚠️ 类名 `dsh-tdt-` **故意不换**:搬来的控件里 className 是硬编码的 `dsh-tdt-btn` 这类字面量
14
- * (模板字符串里也拼接了),只换 CSS 侧会让选择器与 className 对不上、样式整片失效。
15
- * 要连类名一起隔离,必须同步改造每个控件的 className —— 那是另一个任务。
16
- *
17
- * 已知限制:两个插件若引的 core 版本不同,`.dsh-tdt-*` 规则会互相覆盖(内容相同时无害)。
18
- * 主防线是 style 标签 id(`createStyleKit({ id })`)与变量前缀隔离。
19
- */
20
- export function buildCss(template, prefix) {
21
- return template.split('--tdt-').join(`--${prefix}-`);
22
- }
23
10
  const CONTROLS_CSS = [
24
11
  SEGMENTED_CSS,
25
12
  BUTTON_CSS,
@@ -41,9 +28,9 @@ const CONTROLS_CSS = [
41
28
  *
42
29
  * 为什么是模块级而不是 React Context:core 会被**内联进每个插件各自的 bundle**,
43
30
  * 模块级变量天然按插件隔离(不像共享运行时那样会互相踩)。
44
- * 插件启动时 `setStyleKit(createStyleKit({ id, prefix }))` 一次即可;不设就走默认 kit。
31
+ * 插件启动时 `setStyleKit(createStyleKit({ id }))` 一次即可;不设就走默认 kit。
45
32
  */
46
- let current = createStyleKit({ id: 'dsh-plugin-core-ui', prefix: 'dshpc' });
33
+ let current = createStyleKit({ id: 'dsh-plugin-core-ui' });
47
34
  export function setStyleKit(kit) {
48
35
  current = kit;
49
36
  }
@@ -53,6 +40,6 @@ export function getStyleKit() {
53
40
  /** 登记 token + 控件样式并确保挂载(幂等)。 */
54
41
  export function ensureControls(kit = current) {
55
42
  kit.registerStyle('tokens', kit.tokensCss);
56
- kit.applyStyle(CONTROLS_DOMAIN, buildCss(CONTROLS_CSS, kit.prefix));
43
+ kit.applyStyle(CONTROLS_DOMAIN, CONTROLS_CSS);
57
44
  }
58
45
  //# sourceMappingURL=css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"css.js","sourceRoot":"","sources":["../../src/ui/css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAiB,MAAM,oBAAoB,CAAA;AAClE,OAAO,EACL,eAAe,EACf,UAAU,EACV,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,WAAW,EACX,aAAa,EACb,UAAU,GACX,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAEvD,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAAA;AAEzC;;;;;;;;;GASG;AACH,MAAM,UAAU,QAAQ,CAAC,QAAgB,EAAE,MAAc;IACvD,OAAO,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,MAAM,GAAG,CAAC,CAAA;AACtD,CAAC;AAED,MAAM,YAAY,GAAG;IACnB,aAAa;IACb,UAAU;IACV,SAAS;IACT,YAAY;IACZ,UAAU;IACV,WAAW;IACX,eAAe;IACf,QAAQ;IACR,UAAU;IACV,YAAY;IACZ,YAAY;IACZ,WAAW;IACX,QAAQ;IACR,QAAQ;CACT,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAEZ;;;;;;GAMG;AACH,IAAI,OAAO,GAAa,cAAc,CAAC,EAAE,EAAE,EAAE,oBAAoB,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;AAErF,MAAM,UAAU,WAAW,CAAC,GAAa;IACvC,OAAO,GAAG,GAAG,CAAA;AACf,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,gCAAgC;AAChC,MAAM,UAAU,cAAc,CAAC,MAAgB,OAAO;IACpD,GAAG,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,SAAS,CAAC,CAAA;IAC1C,GAAG,CAAC,UAAU,CAAC,eAAe,EAAE,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;AACrE,CAAC"}
1
+ {"version":3,"file":"css.js","sourceRoot":"","sources":["../../src/ui/css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAiB,MAAM,oBAAoB,CAAA;AAClE,OAAO,EACL,eAAe,EACf,UAAU,EACV,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,WAAW,EACX,aAAa,EACb,UAAU,GACX,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAEvD,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAAA;AAEzC,MAAM,YAAY,GAAG;IACnB,aAAa;IACb,UAAU;IACV,SAAS;IACT,YAAY;IACZ,UAAU;IACV,WAAW;IACX,eAAe;IACf,QAAQ;IACR,UAAU;IACV,YAAY;IACZ,YAAY;IACZ,WAAW;IACX,QAAQ;IACR,QAAQ;CACT,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAEZ;;;;;;GAMG;AACH,IAAI,OAAO,GAAa,cAAc,CAAC,EAAE,EAAE,EAAE,oBAAoB,EAAE,CAAC,CAAA;AAEpE,MAAM,UAAU,WAAW,CAAC,GAAa;IACvC,OAAO,GAAG,GAAG,CAAA;AACf,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,gCAAgC;AAChC,MAAM,UAAU,cAAc,CAAC,MAAgB,OAAO;IACpD,GAAG,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,SAAS,CAAC,CAAA;IAC1C,GAAG,CAAC,UAAU,CAAC,eAAe,EAAE,YAAY,CAAC,CAAA;AAC/C,CAAC"}
@@ -1,2 +1,2 @@
1
- export declare const FEEDBACK_CSS = "\n.dsh-tdt-modal-mask{\n position:fixed;inset:0;z-index:1070;display:flex;align-items:center;justify-content:center;\n background:rgba(15,23,42,.45);\n}\n.dsh-tdt-modal{\n display:flex;flex-direction:column;max-width:min(960px,92vw);max-height:86vh;\n background:var(--tdt-surface-base);border:1px solid var(--tdt-border);\n border-radius:10px;box-shadow:0 16px 48px rgba(15,23,42,.24);overflow:hidden;\n}\n.dsh-tdt-modal__head{\n display:flex;align-items:center;gap:8px;padding:12px 14px;\n border-bottom:1px solid var(--tdt-border-faint);color:var(--tdt-fg);font-size:14px;\n}\n.dsh-tdt-modal__title{flex:1;min-width:0}\n/* \u5173\u95ED\u6309\u94AE\uFF1A24\u00D724 \u65B9\u89D2\u56FE\u6807\u4F4D\uFF0C\u4E0D\u501F\u7528 Picker \u7684\u89E6\u53D1\u5668\u76AE\u80A4\uFF08\u90A3\u4EFD\u5E26 min-width:120px\uFF09\u3002 */\n.dsh-tdt-modal__close{\n display:inline-flex;align-items:center;justify-content:center;flex:none;\n width:24px;height:24px;padding:0;border:none;border-radius:var(--tdt-radius-sm);\n background:transparent;color:var(--tdt-fg-3);font-family:inherit;font-size:12px;line-height:1;cursor:pointer;\n transition:background-color var(--tdt-dur-fast) var(--tdt-ease),color var(--tdt-dur-fast) var(--tdt-ease);\n}\n.dsh-tdt-modal__close:hover{background:var(--tdt-hover);color:var(--tdt-fg)}\n.dsh-tdt-modal__close:focus-visible{outline:2px solid var(--tdt-focus);outline-offset:1px}\n.dsh-tdt-modal__body{flex:1;min-height:0;overflow:auto;padding:12px 14px}\n.dsh-tdt-modal__foot{\n display:flex;justify-content:flex-end;gap:8px;padding:10px 14px;\n border-top:1px solid var(--tdt-border-faint);\n}\n.dsh-tdt-toast-host{\n position:fixed;z-index:1090;left:50%;bottom:32px;transform:translateX(-50%);\n display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none;\n}\n.dsh-tdt-toast{\n padding:8px 14px;border-radius:8px;font-size:13px;color:var(--tdt-fg);\n background:var(--tdt-surface-menu);border:1px solid var(--tdt-border);\n box-shadow:0 8px 24px rgba(15,23,42,.16);\n}\n.dsh-tdt-toast--success{color:var(--tdt-success);border-color:color-mix(in srgb,var(--tdt-success) 40%,transparent)}\n.dsh-tdt-toast--error{color:var(--tdt-danger);border-color:color-mix(in srgb,var(--tdt-danger) 40%,transparent)}\n.dsh-tdt-empty{\n display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;\n padding:24px;color:var(--tdt-fg-3);font-size:13px;text-align:center;\n}\n.dsh-tdt-error{\n padding:12px 14px;border-radius:8px;font-size:13px;\n color:var(--tdt-danger);background:color-mix(in srgb,var(--tdt-danger) 10%,transparent);\n border:1px solid color-mix(in srgb,var(--tdt-danger) 30%,transparent);\n}\n.dsh-tdt-error__retry{\n margin-top:8px;color:var(--tdt-link);cursor:pointer;background:none;border:none;padding:0;\n}\n";
1
+ export declare const FEEDBACK_CSS = "\n.dshpc-modal-mask{\n position:fixed;inset:0;z-index:1070;display:flex;align-items:center;justify-content:center;\n background:rgba(15,23,42,.45);\n}\n.dshpc-modal{\n display:flex;flex-direction:column;max-width:min(960px,92vw);max-height:86vh;\n background:var(--dshpc-surface-base);border:1px solid var(--dshpc-border);\n border-radius:10px;box-shadow:0 16px 48px rgba(15,23,42,.24);overflow:hidden;\n}\n.dshpc-modal__head{\n display:flex;align-items:center;gap:8px;padding:12px 14px;\n border-bottom:1px solid var(--dshpc-border-faint);color:var(--dshpc-fg);font-size:14px;\n}\n.dshpc-modal__title{flex:1;min-width:0}\n/* \u5173\u95ED\u6309\u94AE\uFF1A24\u00D724 \u65B9\u89D2\u56FE\u6807\u4F4D\uFF0C\u4E0D\u501F\u7528 Picker \u7684\u89E6\u53D1\u5668\u76AE\u80A4\uFF08\u90A3\u4EFD\u5E26 min-width:120px\uFF09\u3002 */\n.dshpc-modal__close{\n display:inline-flex;align-items:center;justify-content:center;flex:none;\n width:24px;height:24px;padding:0;border:none;border-radius:var(--dshpc-radius-sm);\n background:transparent;color:var(--dshpc-fg-3);font-family:inherit;font-size:12px;line-height:1;cursor:pointer;\n transition:background-color var(--dshpc-dur-fast) var(--dshpc-ease),color var(--dshpc-dur-fast) var(--dshpc-ease);\n}\n.dshpc-modal__close:hover{background:var(--dshpc-hover);color:var(--dshpc-fg)}\n.dshpc-modal__close:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:1px}\n.dshpc-modal__body{flex:1;min-height:0;overflow:auto;padding:12px 14px}\n.dshpc-modal__foot{\n display:flex;justify-content:flex-end;gap:8px;padding:10px 14px;\n border-top:1px solid var(--dshpc-border-faint);\n}\n.dshpc-toast-host{\n position:fixed;z-index:1090;left:50%;bottom:32px;transform:translateX(-50%);\n display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none;\n}\n.dshpc-toast{\n padding:8px 14px;border-radius:8px;font-size:13px;color:var(--dshpc-fg);\n background:var(--dshpc-surface-menu);border:1px solid var(--dshpc-border);\n box-shadow:0 8px 24px rgba(15,23,42,.16);\n}\n.dshpc-toast--success{color:var(--dshpc-success);border-color:color-mix(in srgb,var(--dshpc-success) 40%,transparent)}\n.dshpc-toast--error{color:var(--dshpc-danger);border-color:color-mix(in srgb,var(--dshpc-danger) 40%,transparent)}\n.dshpc-empty{\n display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;\n padding:24px;color:var(--dshpc-fg-3);font-size:13px;text-align:center;\n}\n.dshpc-error{\n padding:12px 14px;border-radius:8px;font-size:13px;\n color:var(--dshpc-danger);background:color-mix(in srgb,var(--dshpc-danger) 10%,transparent);\n border:1px solid color-mix(in srgb,var(--dshpc-danger) 30%,transparent);\n}\n.dshpc-error__retry{\n margin-top:8px;color:var(--dshpc-link);cursor:pointer;background:none;border:none;padding:0;\n}\n";
2
2
  //# sourceMappingURL=feedback-css.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"feedback-css.d.ts","sourceRoot":"","sources":["../../src/ui/feedback-css.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,YAAY,2vFAoDxB,CAAA"}
1
+ {"version":3,"file":"feedback-css.d.ts","sourceRoot":"","sources":["../../src/ui/feedback-css.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY,+wFAoDxB,CAAA"}
@@ -1,57 +1,56 @@
1
1
  // 反馈件(Modal / toast / 空态 / 错误边界)样式。
2
- // 类名固定 `dsh-tdt-*`(与组件硬编码 className 对齐,见 css.ts 的 buildCss 说明);
3
- // 颜色尺寸吃 token 变量(--tdt-*),运行时按插件前缀替换。
2
+ // 类名与 token 变量统一 dshpc 前缀。
4
3
  export const FEEDBACK_CSS = `
5
- .dsh-tdt-modal-mask{
4
+ .dshpc-modal-mask{
6
5
  position:fixed;inset:0;z-index:1070;display:flex;align-items:center;justify-content:center;
7
6
  background:rgba(15,23,42,.45);
8
7
  }
9
- .dsh-tdt-modal{
8
+ .dshpc-modal{
10
9
  display:flex;flex-direction:column;max-width:min(960px,92vw);max-height:86vh;
11
- background:var(--tdt-surface-base);border:1px solid var(--tdt-border);
10
+ background:var(--dshpc-surface-base);border:1px solid var(--dshpc-border);
12
11
  border-radius:10px;box-shadow:0 16px 48px rgba(15,23,42,.24);overflow:hidden;
13
12
  }
14
- .dsh-tdt-modal__head{
13
+ .dshpc-modal__head{
15
14
  display:flex;align-items:center;gap:8px;padding:12px 14px;
16
- border-bottom:1px solid var(--tdt-border-faint);color:var(--tdt-fg);font-size:14px;
15
+ border-bottom:1px solid var(--dshpc-border-faint);color:var(--dshpc-fg);font-size:14px;
17
16
  }
18
- .dsh-tdt-modal__title{flex:1;min-width:0}
17
+ .dshpc-modal__title{flex:1;min-width:0}
19
18
  /* 关闭按钮:24×24 方角图标位,不借用 Picker 的触发器皮肤(那份带 min-width:120px)。 */
20
- .dsh-tdt-modal__close{
19
+ .dshpc-modal__close{
21
20
  display:inline-flex;align-items:center;justify-content:center;flex:none;
22
- width:24px;height:24px;padding:0;border:none;border-radius:var(--tdt-radius-sm);
23
- background:transparent;color:var(--tdt-fg-3);font-family:inherit;font-size:12px;line-height:1;cursor:pointer;
24
- transition:background-color var(--tdt-dur-fast) var(--tdt-ease),color var(--tdt-dur-fast) var(--tdt-ease);
25
- }
26
- .dsh-tdt-modal__close:hover{background:var(--tdt-hover);color:var(--tdt-fg)}
27
- .dsh-tdt-modal__close:focus-visible{outline:2px solid var(--tdt-focus);outline-offset:1px}
28
- .dsh-tdt-modal__body{flex:1;min-height:0;overflow:auto;padding:12px 14px}
29
- .dsh-tdt-modal__foot{
21
+ width:24px;height:24px;padding:0;border:none;border-radius:var(--dshpc-radius-sm);
22
+ background:transparent;color:var(--dshpc-fg-3);font-family:inherit;font-size:12px;line-height:1;cursor:pointer;
23
+ transition:background-color var(--dshpc-dur-fast) var(--dshpc-ease),color var(--dshpc-dur-fast) var(--dshpc-ease);
24
+ }
25
+ .dshpc-modal__close:hover{background:var(--dshpc-hover);color:var(--dshpc-fg)}
26
+ .dshpc-modal__close:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:1px}
27
+ .dshpc-modal__body{flex:1;min-height:0;overflow:auto;padding:12px 14px}
28
+ .dshpc-modal__foot{
30
29
  display:flex;justify-content:flex-end;gap:8px;padding:10px 14px;
31
- border-top:1px solid var(--tdt-border-faint);
30
+ border-top:1px solid var(--dshpc-border-faint);
32
31
  }
33
- .dsh-tdt-toast-host{
32
+ .dshpc-toast-host{
34
33
  position:fixed;z-index:1090;left:50%;bottom:32px;transform:translateX(-50%);
35
34
  display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none;
36
35
  }
37
- .dsh-tdt-toast{
38
- padding:8px 14px;border-radius:8px;font-size:13px;color:var(--tdt-fg);
39
- background:var(--tdt-surface-menu);border:1px solid var(--tdt-border);
36
+ .dshpc-toast{
37
+ padding:8px 14px;border-radius:8px;font-size:13px;color:var(--dshpc-fg);
38
+ background:var(--dshpc-surface-menu);border:1px solid var(--dshpc-border);
40
39
  box-shadow:0 8px 24px rgba(15,23,42,.16);
41
40
  }
42
- .dsh-tdt-toast--success{color:var(--tdt-success);border-color:color-mix(in srgb,var(--tdt-success) 40%,transparent)}
43
- .dsh-tdt-toast--error{color:var(--tdt-danger);border-color:color-mix(in srgb,var(--tdt-danger) 40%,transparent)}
44
- .dsh-tdt-empty{
41
+ .dshpc-toast--success{color:var(--dshpc-success);border-color:color-mix(in srgb,var(--dshpc-success) 40%,transparent)}
42
+ .dshpc-toast--error{color:var(--dshpc-danger);border-color:color-mix(in srgb,var(--dshpc-danger) 40%,transparent)}
43
+ .dshpc-empty{
45
44
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;
46
- padding:24px;color:var(--tdt-fg-3);font-size:13px;text-align:center;
45
+ padding:24px;color:var(--dshpc-fg-3);font-size:13px;text-align:center;
47
46
  }
48
- .dsh-tdt-error{
47
+ .dshpc-error{
49
48
  padding:12px 14px;border-radius:8px;font-size:13px;
50
- color:var(--tdt-danger);background:color-mix(in srgb,var(--tdt-danger) 10%,transparent);
51
- border:1px solid color-mix(in srgb,var(--tdt-danger) 30%,transparent);
49
+ color:var(--dshpc-danger);background:color-mix(in srgb,var(--dshpc-danger) 10%,transparent);
50
+ border:1px solid color-mix(in srgb,var(--dshpc-danger) 30%,transparent);
52
51
  }
53
- .dsh-tdt-error__retry{
54
- margin-top:8px;color:var(--tdt-link);cursor:pointer;background:none;border:none;padding:0;
52
+ .dshpc-error__retry{
53
+ margin-top:8px;color:var(--dshpc-link);cursor:pointer;background:none;border:none;padding:0;
55
54
  }
56
55
  `;
57
56
  //# sourceMappingURL=feedback-css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"feedback-css.js","sourceRoot":"","sources":["../../src/ui/feedback-css.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,gEAAgE;AAChE,sCAAsC;AACtC,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoD3B,CAAA"}
1
+ {"version":3,"file":"feedback-css.js","sourceRoot":"","sources":["../../src/ui/feedback-css.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,2BAA2B;AAC3B,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoD3B,CAAA"}
@@ -1,4 +1,4 @@
1
- export { CONTROLS_DOMAIN, buildCss, ensureControls, getStyleKit, setStyleKit } from './css.js';
1
+ export { CONTROLS_DOMAIN, ensureControls, getStyleKit, setStyleKit } from './css.js';
2
2
  export { filterGroups, flattenOptions, groupOf, labelsOf, toGroups, toggleValue, type PickerGroup, type PickerOption, } from './picker-logic.js';
3
3
  export { Picker, type PickerProps, type PickerSize } from './Picker.js';
4
4
  export { ModelPicker, type ModelPickerProps, type ModelPickerVariant } from './ModelPicker.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAC9F,OAAO,EACL,YAAY,EACZ,cAAc,EACd,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,KAAK,WAAW,EAChB,KAAK,YAAY,GAClB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAA;AACvE,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAC9F,OAAO,EACL,UAAU,EACV,eAAe,EACf,KAAK,eAAe,EACpB,KAAK,oBAAoB,GAC1B,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAA;AACnD,OAAO,EACL,YAAY,EACZ,IAAI,EACJ,SAAS,EACT,KAAK,UAAU,EACf,KAAK,eAAe,GACrB,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,EAAE,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAClE,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAE3E,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7H,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/D,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/D,OAAO,EAAE,sBAAsB,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAA;AACzE,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,KAAK,EACL,WAAW,EACX,aAAa,EACb,cAAc,EACd,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,GACxB,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACpF,OAAO,EACL,YAAY,EACZ,cAAc,EACd,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,KAAK,WAAW,EAChB,KAAK,YAAY,GAClB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAA;AACvE,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAC9F,OAAO,EACL,UAAU,EACV,eAAe,EACf,KAAK,eAAe,EACpB,KAAK,oBAAoB,GAC1B,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAA;AACnD,OAAO,EACL,YAAY,EACZ,IAAI,EACJ,SAAS,EACT,KAAK,UAAU,EACf,KAAK,eAAe,GACrB,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,EAAE,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAClE,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAE3E,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7H,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/D,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/D,OAAO,EAAE,sBAAsB,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAA;AACzE,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,KAAK,EACL,WAAW,EACX,aAAa,EACb,cAAc,EACd,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,GACxB,MAAM,YAAY,CAAA"}
package/dist/ui/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  // ui —— 基础控件(依赖 design)。
2
- // 使用前:插件启动时 `setStyleKit(createStyleKit({ id, prefix }))` 一次,
2
+ // 使用前:插件启动时 `setStyleKit(createStyleKit({ id }))` 一次,
3
3
  // 再调一次 `ensureControls()` 把 token + 控件样式挂上(幂等)。
4
- export { CONTROLS_DOMAIN, buildCss, ensureControls, getStyleKit, setStyleKit } from './css.js';
4
+ export { CONTROLS_DOMAIN, ensureControls, getStyleKit, setStyleKit } from './css.js';
5
5
  export { filterGroups, flattenOptions, groupOf, labelsOf, toGroups, toggleValue, } from './picker-logic.js';
6
6
  export { Picker } from './Picker.js';
7
7
  export { ModelPicker } from './ModelPicker.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,8DAA8D;AAC9D,gDAAgD;AAChD,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAC9F,OAAO,EACL,YAAY,EACZ,cAAc,EACd,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,WAAW,GAGZ,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,MAAM,EAAqC,MAAM,aAAa,CAAA;AACvE,OAAO,EAAE,WAAW,EAAkD,MAAM,kBAAkB,CAAA;AAC9F,OAAO,EACL,UAAU,EACV,eAAe,GAGhB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,KAAK,EAAmB,MAAM,YAAY,CAAA;AACnD,OAAO,EACL,YAAY,EACZ,IAAI,EACJ,SAAS,GAGV,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,IAAI,EAAkB,MAAM,WAAW,CAAA;AAChD,OAAO,EAAE,SAAS,EAAqB,MAAM,YAAY,CAAA;AACzD,OAAO,EAAE,UAAU,EAAwB,MAAM,iBAAiB,CAAA;AAClE,OAAO,EAAE,aAAa,EAA2B,MAAM,oBAAoB,CAAA;AAE3E,OAAO,EAAE,MAAM,EAAE,UAAU,EAA+E,MAAM,aAAa,CAAA;AAC7H,OAAO,EAAE,SAAS,EAAuB,MAAM,gBAAgB,CAAA;AAC/D,OAAO,EAAE,QAAQ,EAAsB,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,QAAQ,EAAsB,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,aAAa,EAAqB,MAAM,cAAc,CAAA;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAuB,MAAM,gBAAgB,CAAA;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,SAAS,EAAuB,MAAM,gBAAgB,CAAA;AAC/D,OAAO,EAAE,sBAAsB,EAAsB,MAAM,cAAc,CAAA;AACzE,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,KAAK,EACL,WAAW,EACX,aAAa,EACb,cAAc,GAMf,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,sDAAsD;AACtD,gDAAgD;AAChD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACpF,OAAO,EACL,YAAY,EACZ,cAAc,EACd,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,WAAW,GAGZ,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,MAAM,EAAqC,MAAM,aAAa,CAAA;AACvE,OAAO,EAAE,WAAW,EAAkD,MAAM,kBAAkB,CAAA;AAC9F,OAAO,EACL,UAAU,EACV,eAAe,GAGhB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,KAAK,EAAmB,MAAM,YAAY,CAAA;AACnD,OAAO,EACL,YAAY,EACZ,IAAI,EACJ,SAAS,GAGV,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,IAAI,EAAkB,MAAM,WAAW,CAAA;AAChD,OAAO,EAAE,SAAS,EAAqB,MAAM,YAAY,CAAA;AACzD,OAAO,EAAE,UAAU,EAAwB,MAAM,iBAAiB,CAAA;AAClE,OAAO,EAAE,aAAa,EAA2B,MAAM,oBAAoB,CAAA;AAE3E,OAAO,EAAE,MAAM,EAAE,UAAU,EAA+E,MAAM,aAAa,CAAA;AAC7H,OAAO,EAAE,SAAS,EAAuB,MAAM,gBAAgB,CAAA;AAC/D,OAAO,EAAE,QAAQ,EAAsB,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,QAAQ,EAAsB,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,aAAa,EAAqB,MAAM,cAAc,CAAA;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAuB,MAAM,gBAAgB,CAAA;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,SAAS,EAAuB,MAAM,gBAAgB,CAAA;AAC/D,OAAO,EAAE,sBAAsB,EAAsB,MAAM,cAAc,CAAA;AACzE,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,KAAK,EACL,WAAW,EACX,aAAa,EACb,cAAc,GAMf,MAAM,YAAY,CAAA"}
@@ -1,2 +1,2 @@
1
- export declare const PICKER_CSS = "\n.dsh-tdt-picker{position:relative;display:inline-block;font-size:13px;line-height:20px}\n.dsh-tdt-picker__trigger{\n display:inline-flex;align-items:center;justify-content:space-between;gap:6px;\n min-width:120px;max-width:100%;height:28px;padding:0 8px;\n color:var(--tdt-fg);background:var(--tdt-surface-1);\n border:1px solid var(--tdt-border);border-radius:var(--tdt-radius-md);cursor:pointer;\n}\n.dsh-tdt-picker__trigger:disabled{color:var(--tdt-fg-dim);cursor:not-allowed;opacity:.7}\n.dsh-tdt-picker__caret{color:var(--tdt-fg-3);font-size:10px}\n.dsh-tdt-picker__menu{\n position:absolute;z-index:60;top:calc(100% + 4px);left:0;min-width:100%;\n max-height:280px;overflow:auto;padding:4px;\n background:var(--tdt-surface-menu);border:1px solid var(--tdt-border);\n border-radius:var(--tdt-radius-md);box-shadow:0 8px 24px rgba(15,23,42,.12);\n}\n/* \u5411\u4E0A\u5C55\u5F00\uFF08\u89E6\u53D1\u5668\u9760\u8FD1\u89C6\u53E3\u5E95\u90E8\u65F6\u7528 placement=\"up\"\uFF09\u3002 */\n.dsh-tdt-picker__menu--up{top:auto;bottom:calc(100% + 4px)}\n/* \u5C3A\u5BF8\u6863\uFF08\u4E0E Field \u7684 sm/md/lg \u5BF9\u5E94\uFF09\u3002 */\n.dsh-tdt-picker__trigger--sm{height:24px;font-size:12px}\n.dsh-tdt-picker__trigger--lg{height:32px}\n/* \u952E\u76D8\u6E38\u6807\u6240\u5728\u9879\uFF08\u65E0 hover \u4E5F\u8981\u770B\u5F97\u89C1\uFF09\u3002 */\n.dsh-tdt-picker__option[data-active='true']{background:var(--tdt-surface-sunken);outline:1px solid var(--tdt-border)}\n.dsh-tdt-picker__option--clear{color:var(--tdt-fg-3)}\n.dsh-tdt-picker__search{\n width:100%;height:28px;margin-bottom:4px;padding:0 8px;box-sizing:border-box;\n color:var(--tdt-fg);background:var(--tdt-surface-sunken);\n border:1px solid var(--tdt-border-faint);border-radius:var(--tdt-radius-md);outline:none;\n}\n.dsh-tdt-picker__group-label{\n padding:6px 8px 2px;color:var(--tdt-fg-3);font-size:11px;\n}\n.dsh-tdt-picker__option{\n display:flex;align-items:center;gap:6px;padding:6px 8px;border-radius:var(--tdt-radius-sm);cursor:pointer;\n color:var(--tdt-fg);white-space:nowrap;\n}\n.dsh-tdt-picker__option:hover{background:var(--tdt-surface-sunken)}\n.dsh-tdt-picker__option--active{background:var(--tdt-open-bg);color:var(--tdt-business)}\n.dsh-tdt-picker__option--disabled{color:var(--tdt-fg-dim);cursor:not-allowed}\n.dsh-tdt-picker__tick{width:12px;color:var(--tdt-business)}\n.dsh-tdt-picker__empty{padding:8px;color:var(--tdt-fg-3);text-align:center}\n.dsh-tdt-picker__degraded{\n padding:6px 8px;margin-bottom:4px;border-radius:var(--tdt-radius-sm);\n color:var(--tdt-warning-label);background:color-mix(in srgb,var(--tdt-warning) 12%,transparent);\n font-size:11px;\n}\n.dsh-tdt-picker__row{display:flex;align-items:center;gap:8px}\n";
1
+ export declare const PICKER_CSS = "\n.dshpc-picker{position:relative;display:inline-block;font-size:13px;line-height:20px}\n.dshpc-picker__trigger{\n display:inline-flex;align-items:center;justify-content:space-between;gap:6px;\n min-width:120px;max-width:100%;height:28px;padding:0 8px;\n color:var(--dshpc-fg);background:var(--dshpc-surface-1);\n border:1px solid var(--dshpc-border);border-radius:var(--dshpc-radius-md);cursor:pointer;\n}\n.dshpc-picker__trigger:disabled{color:var(--dshpc-fg-dim);cursor:not-allowed;opacity:.7}\n.dshpc-picker__caret{color:var(--dshpc-fg-3);font-size:10px}\n.dshpc-picker__menu{\n position:absolute;z-index:60;top:calc(100% + 4px);left:0;min-width:100%;\n max-height:280px;overflow:auto;padding:4px;\n background:var(--dshpc-surface-menu);border:1px solid var(--dshpc-border);\n border-radius:var(--dshpc-radius-md);box-shadow:0 8px 24px rgba(15,23,42,.12);\n}\n/* \u5411\u4E0A\u5C55\u5F00\uFF08\u89E6\u53D1\u5668\u9760\u8FD1\u89C6\u53E3\u5E95\u90E8\u65F6\u7528 placement=\"up\"\uFF09\u3002 */\n.dshpc-picker__menu--up{top:auto;bottom:calc(100% + 4px)}\n/* \u5C3A\u5BF8\u6863\uFF08\u4E0E Field \u7684 sm/md/lg \u5BF9\u5E94\uFF09\u3002 */\n.dshpc-picker__trigger--sm{height:24px;font-size:12px}\n.dshpc-picker__trigger--lg{height:32px}\n/* \u952E\u76D8\u6E38\u6807\u6240\u5728\u9879\uFF08\u65E0 hover \u4E5F\u8981\u770B\u5F97\u89C1\uFF09\u3002 */\n.dshpc-picker__option[data-active='true']{background:var(--dshpc-surface-sunken);outline:1px solid var(--dshpc-border)}\n.dshpc-picker__option--clear{color:var(--dshpc-fg-3)}\n.dshpc-picker__search{\n width:100%;height:28px;margin-bottom:4px;padding:0 8px;box-sizing:border-box;\n color:var(--dshpc-fg);background:var(--dshpc-surface-sunken);\n border:1px solid var(--dshpc-border-faint);border-radius:var(--dshpc-radius-md);outline:none;\n}\n.dshpc-picker__group-label{\n padding:6px 8px 2px;color:var(--dshpc-fg-3);font-size:11px;\n}\n.dshpc-picker__option{\n display:flex;align-items:center;gap:6px;padding:6px 8px;border-radius:var(--dshpc-radius-sm);cursor:pointer;\n color:var(--dshpc-fg);white-space:nowrap;\n}\n.dshpc-picker__option:hover{background:var(--dshpc-surface-sunken)}\n.dshpc-picker__option--active{background:var(--dshpc-open-bg);color:var(--dshpc-business)}\n.dshpc-picker__option--disabled{color:var(--dshpc-fg-dim);cursor:not-allowed}\n.dshpc-picker__tick{width:12px;color:var(--dshpc-business)}\n.dshpc-picker__empty{padding:8px;color:var(--dshpc-fg-3);text-align:center}\n.dshpc-picker__degraded{\n padding:6px 8px;margin-bottom:4px;border-radius:var(--dshpc-radius-sm);\n color:var(--dshpc-warning-label);background:color-mix(in srgb,var(--dshpc-warning) 12%,transparent);\n font-size:11px;\n}\n.dshpc-picker__row{display:flex;align-items:center;gap:8px}\n";
2
2
  //# sourceMappingURL=picker-css.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"picker-css.d.ts","sourceRoot":"","sources":["../../src/ui/picker-css.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,UAAU,irFA+CtB,CAAA"}
1
+ {"version":3,"file":"picker-css.d.ts","sourceRoot":"","sources":["../../src/ui/picker-css.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,UAAU,isFA+CtB,CAAA"}
@@ -1,52 +1,51 @@
1
1
  // 选择器(Picker / ModelPicker)样式。
2
- // 类名前缀固定 `dsh-tdt-picker`(与组件里硬编码的 className 对齐,见 css.ts 的 buildCss 说明);
3
- // 颜色尺寸一律吃 token 变量(--tdt-*),运行时按插件前缀替换。
2
+ // 类名与 token 变量统一 dshpc 前缀。
4
3
  export const PICKER_CSS = `
5
- .dsh-tdt-picker{position:relative;display:inline-block;font-size:13px;line-height:20px}
6
- .dsh-tdt-picker__trigger{
4
+ .dshpc-picker{position:relative;display:inline-block;font-size:13px;line-height:20px}
5
+ .dshpc-picker__trigger{
7
6
  display:inline-flex;align-items:center;justify-content:space-between;gap:6px;
8
7
  min-width:120px;max-width:100%;height:28px;padding:0 8px;
9
- color:var(--tdt-fg);background:var(--tdt-surface-1);
10
- border:1px solid var(--tdt-border);border-radius:var(--tdt-radius-md);cursor:pointer;
8
+ color:var(--dshpc-fg);background:var(--dshpc-surface-1);
9
+ border:1px solid var(--dshpc-border);border-radius:var(--dshpc-radius-md);cursor:pointer;
11
10
  }
12
- .dsh-tdt-picker__trigger:disabled{color:var(--tdt-fg-dim);cursor:not-allowed;opacity:.7}
13
- .dsh-tdt-picker__caret{color:var(--tdt-fg-3);font-size:10px}
14
- .dsh-tdt-picker__menu{
11
+ .dshpc-picker__trigger:disabled{color:var(--dshpc-fg-dim);cursor:not-allowed;opacity:.7}
12
+ .dshpc-picker__caret{color:var(--dshpc-fg-3);font-size:10px}
13
+ .dshpc-picker__menu{
15
14
  position:absolute;z-index:60;top:calc(100% + 4px);left:0;min-width:100%;
16
15
  max-height:280px;overflow:auto;padding:4px;
17
- background:var(--tdt-surface-menu);border:1px solid var(--tdt-border);
18
- border-radius:var(--tdt-radius-md);box-shadow:0 8px 24px rgba(15,23,42,.12);
16
+ background:var(--dshpc-surface-menu);border:1px solid var(--dshpc-border);
17
+ border-radius:var(--dshpc-radius-md);box-shadow:0 8px 24px rgba(15,23,42,.12);
19
18
  }
20
19
  /* 向上展开(触发器靠近视口底部时用 placement="up")。 */
21
- .dsh-tdt-picker__menu--up{top:auto;bottom:calc(100% + 4px)}
20
+ .dshpc-picker__menu--up{top:auto;bottom:calc(100% + 4px)}
22
21
  /* 尺寸档(与 Field 的 sm/md/lg 对应)。 */
23
- .dsh-tdt-picker__trigger--sm{height:24px;font-size:12px}
24
- .dsh-tdt-picker__trigger--lg{height:32px}
22
+ .dshpc-picker__trigger--sm{height:24px;font-size:12px}
23
+ .dshpc-picker__trigger--lg{height:32px}
25
24
  /* 键盘游标所在项(无 hover 也要看得见)。 */
26
- .dsh-tdt-picker__option[data-active='true']{background:var(--tdt-surface-sunken);outline:1px solid var(--tdt-border)}
27
- .dsh-tdt-picker__option--clear{color:var(--tdt-fg-3)}
28
- .dsh-tdt-picker__search{
25
+ .dshpc-picker__option[data-active='true']{background:var(--dshpc-surface-sunken);outline:1px solid var(--dshpc-border)}
26
+ .dshpc-picker__option--clear{color:var(--dshpc-fg-3)}
27
+ .dshpc-picker__search{
29
28
  width:100%;height:28px;margin-bottom:4px;padding:0 8px;box-sizing:border-box;
30
- color:var(--tdt-fg);background:var(--tdt-surface-sunken);
31
- border:1px solid var(--tdt-border-faint);border-radius:var(--tdt-radius-md);outline:none;
29
+ color:var(--dshpc-fg);background:var(--dshpc-surface-sunken);
30
+ border:1px solid var(--dshpc-border-faint);border-radius:var(--dshpc-radius-md);outline:none;
32
31
  }
33
- .dsh-tdt-picker__group-label{
34
- padding:6px 8px 2px;color:var(--tdt-fg-3);font-size:11px;
32
+ .dshpc-picker__group-label{
33
+ padding:6px 8px 2px;color:var(--dshpc-fg-3);font-size:11px;
35
34
  }
36
- .dsh-tdt-picker__option{
37
- display:flex;align-items:center;gap:6px;padding:6px 8px;border-radius:var(--tdt-radius-sm);cursor:pointer;
38
- color:var(--tdt-fg);white-space:nowrap;
35
+ .dshpc-picker__option{
36
+ display:flex;align-items:center;gap:6px;padding:6px 8px;border-radius:var(--dshpc-radius-sm);cursor:pointer;
37
+ color:var(--dshpc-fg);white-space:nowrap;
39
38
  }
40
- .dsh-tdt-picker__option:hover{background:var(--tdt-surface-sunken)}
41
- .dsh-tdt-picker__option--active{background:var(--tdt-open-bg);color:var(--tdt-business)}
42
- .dsh-tdt-picker__option--disabled{color:var(--tdt-fg-dim);cursor:not-allowed}
43
- .dsh-tdt-picker__tick{width:12px;color:var(--tdt-business)}
44
- .dsh-tdt-picker__empty{padding:8px;color:var(--tdt-fg-3);text-align:center}
45
- .dsh-tdt-picker__degraded{
46
- padding:6px 8px;margin-bottom:4px;border-radius:var(--tdt-radius-sm);
47
- color:var(--tdt-warning-label);background:color-mix(in srgb,var(--tdt-warning) 12%,transparent);
39
+ .dshpc-picker__option:hover{background:var(--dshpc-surface-sunken)}
40
+ .dshpc-picker__option--active{background:var(--dshpc-open-bg);color:var(--dshpc-business)}
41
+ .dshpc-picker__option--disabled{color:var(--dshpc-fg-dim);cursor:not-allowed}
42
+ .dshpc-picker__tick{width:12px;color:var(--dshpc-business)}
43
+ .dshpc-picker__empty{padding:8px;color:var(--dshpc-fg-3);text-align:center}
44
+ .dshpc-picker__degraded{
45
+ padding:6px 8px;margin-bottom:4px;border-radius:var(--dshpc-radius-sm);
46
+ color:var(--dshpc-warning-label);background:color-mix(in srgb,var(--dshpc-warning) 12%,transparent);
48
47
  font-size:11px;
49
48
  }
50
- .dsh-tdt-picker__row{display:flex;align-items:center;gap:8px}
49
+ .dshpc-picker__row{display:flex;align-items:center;gap:8px}
51
50
  `;
52
51
  //# sourceMappingURL=picker-css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"picker-css.js","sourceRoot":"","sources":["../../src/ui/picker-css.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,yEAAyE;AACzE,wCAAwC;AACxC,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+CzB,CAAA"}
1
+ {"version":3,"file":"picker-css.js","sourceRoot":"","sources":["../../src/ui/picker-css.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,2BAA2B;AAC3B,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+CzB,CAAA"}
@@ -17,7 +17,7 @@ export interface ResizeOptions {
17
17
  onMove: (width: number) => void;
18
18
  /** 松手:提交最终宽度(落 state / 持久化)。 */
19
19
  onCommit: (width: number) => void;
20
- /** 拖拽期间挂到 #dsh-tdt-root 的类(如预览 dock 的 `dsh-tdt-resizing` 令 iframe pointer-events:none);松手移除。 */
20
+ /** 拖拽期间挂到 #dshpc-root 的类(如预览 dock 的 `dshpc-resizing` 令 iframe pointer-events:none);松手移除。 */
21
21
  rootClass?: string;
22
22
  /** rAF 节流(预览 dock 用,避免每帧整页重排)。 */
23
23
  rafThrottle?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"resizer.d.ts","sourceRoot":"","sources":["../../src/ui/resizer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,oDAAoD;IACpD,UAAU,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAA;KAAE,CAAA;IAC5D,wEAAwE;IACxE,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAA;IACpC,yCAAyC;IACzC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/B,gCAAgC;IAChC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,gGAAgG;IAChG,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,kCAAkC;IAClC,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED,4DAA4D;AAC5D,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAkChE"}
1
+ {"version":3,"file":"resizer.d.ts","sourceRoot":"","sources":["../../src/ui/resizer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,oDAAoD;IACpD,UAAU,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAA;KAAE,CAAA;IAC5D,wEAAwE;IACxE,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAA;IACpC,yCAAyC;IACzC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/B,gCAAgC;IAChC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,4FAA4F;IAC5F,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,kCAAkC;IAClC,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED,4DAA4D;AAC5D,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAkChE"}
@@ -5,7 +5,7 @@ export function startResizeLayoutWidth(opts) {
5
5
  const prevUserSelect = body.style.userSelect;
6
6
  body.style.userSelect = 'none';
7
7
  window.getSelection()?.removeAllRanges();
8
- const rootEl = document.getElementById('dsh-tdt-root');
8
+ const rootEl = document.getElementById('dshpc-root');
9
9
  if (opts.rootClass !== undefined)
10
10
  rootEl?.classList.add(opts.rootClass);
11
11
  let frame = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"resizer.js","sourceRoot":"","sources":["../../src/ui/resizer.ts"],"names":[],"mappings":"AAsBA,4DAA4D;AAC5D,MAAM,UAAU,sBAAsB,CAAC,IAAmB;IACxD,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,EAAE,CAAA;IAClC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAA;IAC1B,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAA;IAC5C,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAA;IAC9B,MAAM,CAAC,YAAY,EAAE,EAAE,eAAe,EAAE,CAAA;IACxC,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC,CAAA;IACtD,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;QAAE,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACvE,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,MAAM,IAAI,GAAG,CAAC,OAAe,EAAU,EAAE;QACvC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAC/B,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACd,OAAO,CAAC,CAAA;IACV,CAAC,CAAA;IACD,MAAM,MAAM,GAAG,CAAC,KAAmB,EAAQ,EAAE;QAC3C,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;YAC9B,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAA;YACxB,IAAI,KAAK,KAAK,CAAC;gBAAE,OAAM;YACvB,KAAK,GAAG,qBAAqB,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;QACpE,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACrB,CAAC;IACH,CAAC,CAAA;IACD,MAAM,IAAI,GAAG,CAAC,KAAmB,EAAQ,EAAE;QACzC,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;QACjD,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;QAC7C,IAAI,KAAK,KAAK,CAAC;YAAE,oBAAoB,CAAC,KAAK,CAAC,CAAA;QAC5C,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,cAAc,CAAA;QACtC,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;YAAE,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAC1E,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;IAC5C,CAAC,CAAA;IACD,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;IAC9C,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;AAC5C,CAAC"}
1
+ {"version":3,"file":"resizer.js","sourceRoot":"","sources":["../../src/ui/resizer.ts"],"names":[],"mappings":"AAsBA,4DAA4D;AAC5D,MAAM,UAAU,sBAAsB,CAAC,IAAmB;IACxD,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,EAAE,CAAA;IAClC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAA;IAC1B,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAA;IAC5C,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAA;IAC9B,MAAM,CAAC,YAAY,EAAE,EAAE,eAAe,EAAE,CAAA;IACxC,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC,CAAA;IACpD,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;QAAE,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACvE,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,MAAM,IAAI,GAAG,CAAC,OAAe,EAAU,EAAE;QACvC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAC/B,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACd,OAAO,CAAC,CAAA;IACV,CAAC,CAAA;IACD,MAAM,MAAM,GAAG,CAAC,KAAmB,EAAQ,EAAE;QAC3C,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;YAC9B,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAA;YACxB,IAAI,KAAK,KAAK,CAAC;gBAAE,OAAM;YACvB,KAAK,GAAG,qBAAqB,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;QACpE,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACrB,CAAC;IACH,CAAC,CAAA;IACD,MAAM,IAAI,GAAG,CAAC,KAAmB,EAAQ,EAAE;QACzC,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;QACjD,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;QAC7C,IAAI,KAAK,KAAK,CAAC;YAAE,oBAAoB,CAAC,KAAK,CAAC,CAAA;QAC5C,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,cAAc,CAAA;QACtC,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;YAAE,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAC1E,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;IAC5C,CAAC,CAAA;IACD,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;IAC9C,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;AAC5C,CAAC"}
@@ -41,7 +41,7 @@ utils(谁都不依赖,谁都可以用)
41
41
  ## 样式注入(本包最特殊的机制)
42
42
 
43
43
  ```
44
- 插件启动 ──▶ setStyleKit(createStyleKit({ id, prefix }))
44
+ 插件启动 ──▶ setStyleKit(createStyleKit({ id }))
45
45
  │
46
46
  ▼
47
47
  ensureControls() ──▶ 往 <head> 插一个 <style id="{id}">
@@ -51,8 +51,8 @@ utils(谁都不依赖,谁都可以用)
51
51
  为什么必须运行时注入:DSH 客户端产物是 `window.__ModuleLoader__.load({ id, factory })` 的
52
52
  CJS 闭包,`import './x.css'` 只会产出独立 css 资源、**内核不加载它** ⇒ CSS 只能以字符串在运行时注入。
53
53
 
54
- 为什么是工厂而不是模块级单例:单例只有一个固定 style id 与固定变量前缀,多个插件同处一页时会抢同一个
55
- `<style>` 标签、变量互相覆盖。每个插件领一套自己的(`id` + `prefix`)。
54
+ 为什么是工厂而不是模块级单例:单例只有一个固定 style id,多个插件同处一页时会抢同一个 `<style>` 标签、
55
+ 后挂载的覆盖先挂载的。每个插件领一套自己的(`id` 按插件唯一);变量前缀全生态统一 `dshpc`。
56
56
 
57
57
  为什么 core 可以用模块级变量存「当前 kit」:core 会被**内联进每个插件各自的 bundle**(不是共享运行时),
58
58
  模块级变量天然按插件隔离,不像共享模块那样会互相踩。
@@ -9,7 +9,6 @@
9
9
  | 符号 | 说明 |
10
10
  |---|---|
11
11
  | `createStyleKit(options)` | 领一套本插件专属的样式设施(**必调**) |
12
- | `buildTokensCss(prefix)` | 只生成替换过前缀的 token CSS(一般不用直接调) |
13
12
  | `DARK_THEME_SELECTOR` | 明暗判据选择器常量 `body[data-ds-dark-theme]` |
14
13
  | `type StyleKit` / `StyleKitOptions` | 类型 |
15
14
 
@@ -18,13 +17,12 @@
18
17
  | 参数 | 类型 | 必填 | 默认 | 说明 |
19
18
  |---|---|---|---|---|
20
19
  | `id` | `string` | 是 | — | `<style>` 标签 id,**多插件同页靠它互不覆盖**,必须插件内唯一。空串抛错 |
21
- | `prefix` | `string` | 是 | — | CSS 变量前缀,如 `acme` ⇒ `--acme-fg`。必须字母开头、只含字母数字与连字符,否则抛错 |
22
20
 
23
21
  返回的 `StyleKit`:
24
22
 
25
23
  | 成员 | 说明 |
26
24
  |---|---|
27
- | `id` / `prefix` | 回显 |
25
+ | `id` | 回显 |
28
26
  | `tokensCss` | 已替换前缀的 token CSS 文本 |
29
27
  | `cssVar(name)` | 拼变量名:`cssVar('fg')` ⇒ `--acme-fg` |
30
28
  | `registerStyle(domain, css)` | 登记一个域的 CSS;同名重复登记 = 覆盖 |
@@ -37,10 +35,10 @@
37
35
  ```ts
38
36
  import { createStyleKit } from 'dsh-plugin-core/design'
39
37
 
40
- const kit = createStyleKit({ id: 'dsh-task-reminder-ui', prefix: 'reminder' })
38
+ const kit = createStyleKit({ id: 'dsh-task-reminder-ui' })
41
39
  kit.applyStyle('tokens', kit.tokensCss)
42
40
  // 之后自己的样式域:
43
- kit.applyStyle('reminder-widget', '.reminder-widget{color:var(--reminder-fg)}')
41
+ kit.applyStyle('widget', '.widget{color:var(--dshpc-fg)}')
44
42
  ```
45
43
 
46
44
  ## token 口径
@@ -52,6 +50,6 @@ token 来自 `dsh-task-dispatch-table/src/client/ui/tokens.ts` 的整段提取
52
50
 
53
51
  ## 定制边界
54
52
 
55
- - token 的**前缀**可参数化;token 的**内容**(有哪些变量、值是什么)是本包定的审美标准,
56
- 消费方通过覆盖变量值来适配,不要改本包源码。
53
+ - token 的**前缀固定 `dshpc`**(不参数化、不按插件改名);token 的**内容**(有哪些变量、值是什么)
54
+ 是本包定的审美标准,消费方通过覆盖变量值来适配,不要改本包源码。
57
55
  - 要整套换肤:给同一批变量名赋新值即可,不需要 fork。
@@ -10,7 +10,7 @@
10
10
  import { createStyleKit } from 'dsh-plugin-core/design'
11
11
  import { ensureControls, setStyleKit } from 'dsh-plugin-core/ui'
12
12
 
13
- setStyleKit(createStyleKit({ id: 'dsh-task-reminder-ui', prefix: 'reminder' }))
13
+ setStyleKit(createStyleKit({ id: 'dsh-task-reminder-ui' }))
14
14
  ensureControls()
15
15
  ```
16
16
 
@@ -23,15 +23,30 @@ ensureControls()
23
23
 
24
24
  ### Button / IconButton
25
25
 
26
+ 10 档外观(2026-10-19 扩充,对齐主流 UI 框架的分类口径):
27
+
28
+ | 类别 | `variant` 档 |
29
+ |---|---|
30
+ | 实心(语义色底) | `primary`(黑)/ `secondary`(灰)/ `danger`(红)/ `success`(绿)/ `warning`(黄)/ `info`(蓝) |
31
+ | 线框 | `outline`(中性描边)/ `danger-outline`(红字描边,旧别名 `danger-ink` 仍可用) |
32
+ | 无底 | `ghost`(灰字,hover 起底)/ `link`(行内链接) |
33
+
26
34
  | 参数 | 类型 | 默认 | 说明 |
27
35
  |---|---|---|---|
28
- | `variant` | `'primary' \| 'outline' \| 'ghost' \| 'danger'` | `outline` | 外观档 |
29
- | `size` | `'sm' \| 'md' \| 'lg'` | `sm` | 高度档 |
30
- | `icon` | `ReactNode` | — | 前置图标 |
31
- | `children` | `ReactNode` | — | 文案 |
36
+ | `variant` | 上表 10 档 | `outline` | 外观档 |
37
+ | `size` | `'sm' \| 'md' \| 'lg'` | `lg` | 高度档(24 / 28 / 32,有边无边同高) |
38
+ | `icon` | `ReactNode` | — | 前置图标(官方图标组件 / 字符串均可) |
39
+ | `iconRight` | `ReactNode` | — | 后置图标(展开箭头、外链) |
40
+ | `color` | `string` | — | 自定义主色(任意 CSS 色值):实心档作底色,线框 / 无底档作主色 |
41
+ | `loading` | `boolean` | `false` | 文案前显示同色小圈,并自动 `disabled` |
42
+ | `block` | `boolean` | `false` | 撑满父宽 |
43
+ | `children` | `ReactNode` | — | 文案(由调用方按语言给:中文出中文、英文出英文,中英混排也支持) |
32
44
  | `…rest` | 原生 button 属性 | — | `type` / `disabled` / `title` / `aria-*` / `onClick` 原样透传 |
33
45
 
34
- `IconButton`:`variant: 'plain' | 'outline' | 'danger'`(默认 `plain`)、`icon`(必填)、`label`(必填,无障碍名兼 title)。
46
+ hover / active 走 token 派生色(**不用 opacity**),幅度见 `docs/design/style.md` §交互态颜色。
47
+
48
+ `IconButton`:`variant: 'plain' | 'outline' | 'danger'`(默认 `plain`)、`size`(默认 `lg`)、`icon`(必填)、
49
+ `label`(必填,无障碍名兼 title)。
35
50
 
36
51
  ### Segmented
37
52
 
@@ -39,6 +54,9 @@ ensureControls()
39
54
  或多选(`multiple: true` + `value: T[]`)。另有 `size`(默认 `lg`)、`variant: 'default' | 'inset'`、
40
55
  `block`(撑满等分)、`label`(无障碍组名)、`id`、`disabled`。
41
56
 
57
+ 选中片 = `--dshpc-surface-raised`(与兄弟项目同取法)+ 1px 描边 + 浮起阴影:两种主题下都比轨道亮一档,
58
+ 在卡片面上靠描边与阴影分界。未选中项 hover 起浅底(inset 用深一档,避免与轨道同色)。
59
+
42
60
  ### Input 家族(`Field.ts`)
43
61
 
44
62
  | 组件 | 关键参数 | 说明 |
@@ -153,9 +171,9 @@ h(StripCard, {
153
171
  }, h('div', null, '标题 + 元信息'))
154
172
  ```
155
173
 
156
- `Chip`:小标签,token 用现成的 `--tdt-chip-bg`;传 `onClick` 才是可点的。
174
+ `Chip`:小标签,token 用现成的 `--dshpc-chip-bg`;传 `onClick` 才是可点的。
157
175
 
158
- **语义边界**:`Chip` 只管「胶囊标签」这一件事。**只给图标的小按钮请用 `IconButton`**(`.dsh-tdt-iconbtn`),
176
+ **语义边界**:`Chip` 只管「胶囊标签」这一件事。**只给图标的小按钮请用 `IconButton`**(`.dshpc-iconbtn`),
159
177
  不要拿 `Chip` 当图标底板——同一个类名两套皮肤(28px 定宽 vs 胶囊形)会互相覆盖、把文字挤成一列。
160
178
  现在一套皮肤只允许出现一次,由 `test/css-contract.test.mjs` 盯着。
161
179
 
@@ -179,7 +197,7 @@ h(StripCard, {
179
197
  | 组件 / 函数 | 说明 |
180
198
  |---|---|
181
199
  | `showToast(message, opts?)` | **命令式**,不要求挂组件。`opts: { variant?: 'info' \| 'success' \| 'error', durationMs? }`(默认 2600ms)。无 `document` 静默跳过 |
182
- | `Loading({ anchorId? })` | 贴到主内容容器右下角的加载指示;`anchorId` 默认 `dsh-tdt-main` |
200
+ | `Loading({ anchorId? })` | 贴到主内容容器右下角的加载指示;`anchorId` 默认 `dshpc-main` |
183
201
  | `RunningBlocks()` | 运行中的占位块 |
184
202
  | `EmptyState({ text?, icon?, action?, translate? })` | 统一空态 |
185
203
  | `ErrorBoundary({ fallback?, onError?, translate? })` | class 组件;子组件抛错不让整个插件白屏,默认给「出错了 + 重试」 |
@@ -4,7 +4,7 @@
4
4
 
5
5
  | 子路径 | 提供什么 | 详细文档 |
6
6
  |---|---|---|
7
- | `dsh-plugin-core/design` | token 变量表(含深色段)、`createStyleKit` 注入器工厂、`DARK_THEME_SELECTOR`、`buildTokensCss` | [`features/design.md`](features/design.md) |
7
+ | `dsh-plugin-core/design` | token 变量表(含深色段)、`createStyleKit` 注入器工厂、`DARK_THEME_SELECTOR` | [`features/design.md`](features/design.md) |
8
8
  | `dsh-plugin-core/ui` | 控件:Button / IconButton / Segmented / Textarea / Checkbox / Input 家族 / Picker / ModelPicker / WorkspacePicker / FilePicker / **Card** / **StripCard** / **Chip** / Modal / toast / Loading / SectionHead / MarqueeText / LiveText / BackToTop / resizer / EmptyState / ErrorBoundary | [`features/ui.md`](features/ui.md) |
9
9
  | `dsh-plugin-core/utils` | 日期(含相对时间过去/未来)、字符串、字节/计数、时间区间、HTTP 取数、内置中英多语言 | [`features/utils.md`](features/utils.md) |
10
10
  | `dsh-plugin-core/explorer` | `ExplorerPanel`(面包屑 + 目录树 + 预览)、`WorkspaceFilesFace` 契约与路径工具(**不含选择器**——选工作区/选文件在 ui) | [`features/explorer.md`](features/explorer.md) |
@@ -33,7 +33,7 @@ dsh-plugin-core/
33
33
  │
34
34
  ├── design/ ① 设计层 —— 只放「值」和「注入机制」,零 React
35
35
  │ ├── tokens ✅ 颜色 / 字号 / 间距 / 圆角 / 层级(别名官方 --dsw-alias-*)
36
- │ └── style-kit ✅ 运行时注入 <style>,createStyleKit({ id, prefix })
36
+ │ └── style-kit ✅ 运行时注入 <style>,createStyleKit({ id })
37
37
  │
38
38
  ├── ui/ ② 基础控件 —— 纯零件 + 可复用基础能力(依赖 design)
39
39
  │ ├── official.ts ✅ 全仓唯一 import 官方 primitives 的入口(L1)