dsh-plugin-core-demo 0.1.3 → 0.2.0

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 (3) hide show
  1. package/README.md +2 -2
  2. package/dist/client.js +591 -615
  3. package/package.json +1 -1
package/dist/client.js CHANGED
@@ -32,84 +32,84 @@ var import_react31 = require("react");
32
32
  var TOKENS_CSS_TEMPLATE = `
33
33
  /* \u2500\u2500 \u6587\u5B57\uFF08\u5BBF\u4E3B label \u56DB\u6863 + \u53CD\u8272\u9762\u7528\u5B57\uFF09\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 */
34
34
  body{
35
- --tdt-fg:var(--dsw-alias-label-primary,#1f2328);
36
- --tdt-fg-2:var(--dsw-alias-label-secondary,#5c6370);
37
- --tdt-fg-3:var(--dsw-alias-label-tertiary,#767d87);
38
- --tdt-fg-4:var(--dsw-alias-label-caption,#9aa1ab);
39
- --tdt-fg-dim:var(--dsw-alias-label-dimmed,#b9bfc7);
35
+ --dshpc-fg:var(--dsw-alias-label-primary,#1f2328);
36
+ --dshpc-fg-2:var(--dsw-alias-label-secondary,#5c6370);
37
+ --dshpc-fg-3:var(--dsw-alias-label-tertiary,#767d87);
38
+ --dshpc-fg-4:var(--dsw-alias-label-caption,#9aa1ab);
39
+ --dshpc-fg-dim:var(--dsw-alias-label-dimmed,#b9bfc7);
40
40
  /* \u53CD\u8272\u9762\u4E0A\u7684\u5B57\uFF08\u5B9E\u5FC3\u94AE / \u89D2\u6807\uFF09\uFF1A\u6697\u8272\u4E0B\u662F bluish-1000\uFF0C\u6545\u7528 -foreground \u800C\u975E -inverted */
41
- --tdt-fg-inverse:var(--dsw-alias-label-primary-foreground,#fff);
41
+ --dshpc-fg-inverse:var(--dsw-alias-label-primary-foreground,#fff);
42
42
 
43
43
  /* \u2500\u2500 \u9762\uFF08\u5BBF\u4E3B bg-layer \u4E09\u6863 + \u4E0B\u6C89\u8F68\u9053\u5E95\uFF09\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 */
44
- --tdt-surface-1:var(--dsw-alias-bg-layer-1,#fff);
45
- --tdt-surface-2:var(--dsw-alias-bg-layer-2,#fff);
46
- --tdt-surface-3:var(--dsw-alias-bg-layer-3,#fff);
47
- /* \u300C\u9009\u4E2D\u4EAE\u7247\u300D\u7684\u5E95\u76D8\u8272\uFF08\u914D --tdt-shadow-raised \u7528\uFF09 */
48
- --tdt-surface-raised:var(--dsw-alias-bg-layer-1,#fff);
44
+ --dshpc-surface-1:var(--dsw-alias-bg-layer-1,#fff);
45
+ --dshpc-surface-2:var(--dsw-alias-bg-layer-2,#fff);
46
+ --dshpc-surface-3:var(--dsw-alias-bg-layer-3,#fff);
47
+ /* \u300C\u9009\u4E2D\u4EAE\u7247\u300D\u7684\u5E95\u76D8\u8272\uFF08\u914D --dshpc-shadow-raised \u7528\uFF09 */
48
+ --dshpc-surface-raised:var(--dsw-alias-bg-layer-1,#fff);
49
49
  /* \u8F68\u9053 / \u4E0B\u6C89\u5E95\uFF08\u5B98\u65B9\u5206\u6BB5\u63A7\u4EF6\u8F68\u9053\u7528\u7684\u5C31\u662F\u8FD9\u6761\uFF09 */
50
- --tdt-surface-sunken:var(--dsw-alias-interactive-bg-hover,rgba(38,49,72,.06));
50
+ --dshpc-surface-sunken:var(--dsw-alias-interactive-bg-hover,rgba(38,49,72,.06));
51
51
  /* \u6574\u9875 / \u7F16\u8F91\u5668\u5E95\uFF08bg-base\uFF09 */
52
- --tdt-surface-base:var(--dsw-alias-bg-base,#fff);
52
+ --dshpc-surface-base:var(--dsw-alias-bg-base,#fff);
53
53
  /* \u81EA\u7ED8\u6D6E\u5C42 / \u83DC\u5355\u5361\u7684\u4E0D\u900F\u660E\u5E95\uFF08= base\uFF1B\u4E0D\u8981\u7528\u534A\u900F\u660E\u7684 specific-menu\uFF09 */
54
- --tdt-surface-menu:var(--tdt-surface-base);
54
+ --dshpc-surface-menu:var(--dshpc-surface-base);
55
55
  /* markdown \u4EE3\u7801\u5757\u9762 / \u5B57\u4F53\uFF08\u4F1A\u8BDD\u955C\u50CF\u91CC\u7528\u5230\uFF09 */
56
- --tdt-code-surface:var(--dsw-alias-markdown-code-block,rgba(128,128,128,.10));
57
- --tdt-code-font:var(--dsw-font-markdown-code-block-small,12px/18px var(--ds-font-family-code,monospace));
56
+ --dshpc-code-surface:var(--dsw-alias-markdown-code-block,rgba(128,128,128,.10));
57
+ --dshpc-code-font:var(--dsw-font-markdown-code-block-small,12px/18px var(--ds-font-family-code,monospace));
58
58
  /* \u8B66\u544A\u6587\u5B57\u8272\uFF08\u5BBF\u4E3B state-warn-label\uFF09 */
59
- --tdt-warning-label:var(--dsw-alias-state-warn-label,#f5a623);
59
+ --dshpc-warning-label:var(--dsw-alias-state-warn-label,#f5a623);
60
60
  /* \u56FA\u5B9A\u4E2D\u6027\u5B9E\u9762\uFF08\u81EA\u7ED8\u6D6E\u5C42\u3001\u6DF1\u8272\u4E3B\u9898\u4E0B\u5FC5\u987B\u81EA\u5DF1\u53D8\u7684\u90A3\u51E0\u4E2A\uFF09\u2014\u2014\u53EA\u6709\u5B83\u9700\u8981\u6697\u8272\u8986\u76D6 */
61
- --tdt-solid:var(--dsw-static-neutral-00,#fff);
62
- --tdt-on-solid:var(--dsw-alias-label-primary,#1f2328);
61
+ --dshpc-solid:var(--dsw-static-neutral-00,#fff);
62
+ --dshpc-on-solid:var(--dsw-alias-label-primary,#1f2328);
63
63
  /* \u4EA4\u4ED8\u6587\u4EF6\u5361\u90A3\u79CD\u300C\u6D45\u5E95\u76D8 + hover \u52A0\u6DF1\u300D\u4E24\u62CD */
64
- --tdt-plate:var(--dsw-static-neutral-50,#fafafa);
65
- --tdt-plate-hover:var(--dsw-static-neutral-100,#f5f5f5);
64
+ --dshpc-plate:var(--dsw-static-neutral-50,#fafafa);
65
+ --dshpc-plate-hover:var(--dsw-static-neutral-100,#f5f5f5);
66
66
  /* \u65E7\u5185\u6838\u56DE\u9000\uFF08Chrome <111 \u4E0D\u8BA4 color-mix \u21D2 \u8FD9\u6761\u751F\u6548\uFF1B\u65B0\u5185\u6838\u88AB\u4E0B\u9762\u90A3\u6761\u8986\u76D6\uFF09\u3002
67
67
  \u8FD9\u51E0\u4E2A\u662F**\u56FA\u5B9A\u4E2D\u6027\u9762**\u3001\u4E0D\u9760\u8DDF\u968F\u5BBF\u4E3B\u4E3B\u9898\u8272\uFF0C\u6545\u53EF\u4EE5\u65E0\u635F\u5730\u7ED9\u660E\u6587\u56DE\u9000\u3002 */
68
- --tdt-icon-plate:rgba(255,255,255,.5);
69
- --tdt-icon-plate:color-mix(in srgb,var(--dsw-static-neutral-00,#fff) 50%,transparent);
70
- /* \u8868\u5934\u5E95\uFF1A\u6D45\u8272\u4E3B\u9898**\u504F\u6DF1**\uFF0C\u4E14\u5FC5\u987B**\u6BD4\u6591\u9A6C\u7EB9\uFF08--tdt-plate\uFF09\u518D\u6DF1\u4E00\u6863**\u2014\u2014
68
+ --dshpc-icon-plate:rgba(255,255,255,.5);
69
+ --dshpc-icon-plate:color-mix(in srgb,var(--dsw-static-neutral-00,#fff) 50%,transparent);
70
+ /* \u8868\u5934\u5E95\uFF1A\u6D45\u8272\u4E3B\u9898**\u504F\u6DF1**\uFF0C\u4E14\u5FC5\u987B**\u6BD4\u6591\u9A6C\u7EB9\uFF08--dshpc-plate\uFF09\u518D\u6DF1\u4E00\u6863**\u2014\u2014
71
71
  \u4E24\u8005\u4E0D\u80FD\u649E\u8272\uFF08\u7528\u6237 2026-10-02\uFF1A\u8868\u5934\u8DDF\u6591\u9A6C\u7EB9\u4E00\u6A21\u4E00\u6837\uFF09\u3002 */
72
- --tdt-head-bg:var(--dsw-static-neutral-100,#f5f5f5);
72
+ --dshpc-head-bg:var(--dsw-static-neutral-100,#f5f5f5);
73
73
  /* \u56FE\u6807\u5C0F\u5E95\u677F\uFF08\u4EA7\u51FA\u7269\uFF09\uFF1A\u6D45\u8272\u4E0B\u8981**\u770B\u5F97\u89C1**\uFF08\u539F\u5148\u53D6 plate \u21D2 \u5728\u767D\u5E95\u4E0A\u7B49\u4E8E\u6CA1\u6709\uFF09\uFF1Bhover \u52A0\u500D\u3002 */
74
- --tdt-chip-bg:rgba(15,15,15,.07);
75
- --tdt-chip-bg:color-mix(in srgb,var(--dsw-static-neutral-900,#0f0f0f) 7%,transparent);
76
- --tdt-chip-bg-hover:rgba(15,15,15,.14);
77
- --tdt-chip-bg-hover:color-mix(in srgb,var(--dsw-static-neutral-900,#0f0f0f) 14%,transparent);
74
+ --dshpc-chip-bg:rgba(15,15,15,.07);
75
+ --dshpc-chip-bg:color-mix(in srgb,var(--dsw-static-neutral-900,#0f0f0f) 7%,transparent);
76
+ --dshpc-chip-bg-hover:rgba(15,15,15,.14);
77
+ --dshpc-chip-bg-hover:color-mix(in srgb,var(--dsw-static-neutral-900,#0f0f0f) 14%,transparent);
78
78
  /* \u5C55\u5F00\u884C\uFF1A**\u5E26\u900F\u660E\u5EA6\u7684\u84DD**\u2014\u2014\u4E0D\u662F\u7070\u3001\u4E5F\u4E0D\u662F\u7EAF\u8272\uFF0C\u900F\u51FA\u5361\u7247\u5E95\u8272\uFF0C\u4E00\u773C\u770B\u51FA\u300C\u8FD9\u662F\u5C55\u5F00\u7684\u300D
79
79
  \uFF08\u7528\u6237 2026-10-02\uFF1A\u7070\u8272\u8DDF\u6591\u9A6C\u7EB9\u5206\u4E0D\u51FA\u6765\uFF09\u3002\u5185\u5BB9\u533A\u518D\u6DE1\u4E00\u6863\uFF0C\u5F62\u6210\u300C\u884C\u6DF1 / \u5185\u5BB9\u6D45\u300D\u7684\u533A\u9694\u3002 */
80
- --tdt-open-bg:rgba(37,99,235,.10);
81
- --tdt-open-bg-soft:rgba(37,99,235,.05);
82
- --tdt-card-hover:rgba(37,99,235,.07);
80
+ --dshpc-open-bg:rgba(37,99,235,.10);
81
+ --dshpc-open-bg-soft:rgba(37,99,235,.05);
82
+ --dshpc-card-hover:rgba(37,99,235,.07);
83
83
 
84
84
  /* \u2500\u2500 \u63CF\u8FB9\u56DB\u6863\uFF08\u5BBF\u4E3B\u771F\u503C\uFF1Al1 4% / l2 10% / l3 12% / l4 16%\uFF09\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
85
- --tdt-border-faint:var(--dsw-alias-border-l1,#0000000a);
86
- --tdt-border:var(--dsw-alias-border-l2,#0000001a);
87
- --tdt-border-strong:var(--dsw-alias-border-l3,#0000001f);
88
- --tdt-border-heavy:var(--dsw-alias-border-l4,#00000029);
85
+ --dshpc-border-faint:var(--dsw-alias-border-l1,#0000000a);
86
+ --dshpc-border:var(--dsw-alias-border-l2,#0000001a);
87
+ --dshpc-border-strong:var(--dsw-alias-border-l3,#0000001f);
88
+ --dshpc-border-heavy:var(--dsw-alias-border-l4,#00000029);
89
89
 
90
90
  /* \u2500\u2500 \u54C1\u724C / \u8BED\u4E49\u8272 \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 */
91
91
  /* \u54C1\u724C\u300C\u9762\u300D\u8272\uFF1A\u660E\u8272\u8FD1\u9ED1\u3001\u6697\u8272\u8FD1\u767D\uFF08\u5B98\u65B9 Switch \u9009\u4E2D\u6001\u5373\u6B64\uFF09\uFF0C**\u4E0D\u662F\u84DD\u8272** */
92
- --tdt-accent:var(--dsw-alias-brand-primary,#0f1115);
92
+ --dshpc-accent:var(--dsw-alias-brand-primary,#0f1115);
93
93
  /* \u84DD\u8272\uFF1A\u5F3A\u8C03 / \u9009\u4E2D / \u7126\u70B9\uFF0C\u4E00\u5F8B\u8D70\u8FD9\u6761 */
94
- --tdt-business:var(--dsw-alias-state-business-primary,#3b5bdb);
95
- --tdt-success:var(--dsw-alias-state-success-primary,#22c55e);
94
+ --dshpc-business:var(--dsw-alias-state-business-primary,#3b5bdb);
95
+ --dshpc-success:var(--dsw-alias-state-success-primary,#22c55e);
96
96
  /* \u26A0\uFE0F \u662F state-warn\uFF08\u4E0D\u662F state-warning\uFF0C\u540E\u8005\u5BBF\u4E3B\u65E0\u6B64\u5B9A\u4E49\uFF09 */
97
- --tdt-warning:var(--dsw-alias-state-warn-primary,#f59e0b);
98
- --tdt-danger:var(--dsw-alias-state-error-primary,#ec1313);
99
- --tdt-link:var(--dsw-alias-link,#3b5bdb);
97
+ --dshpc-warning:var(--dsw-alias-state-warn-primary,#f59e0b);
98
+ --dshpc-danger:var(--dsw-alias-state-error-primary,#ec1313);
99
+ --dshpc-link:var(--dsw-alias-link,#3b5bdb);
100
100
  /* \u8BED\u4E49\u8272**\u5B9E\u9762**\u4E0A\u7684\u5B57\uFF08\u89D2\u6807 / \u5B9E\u5FC3\u63D0\u793A\uFF09\uFF1A\u5BBF\u4E3B\u7EA2\u7EFF\u9EC4\u4E09\u8272\u90FD\u662F\u4E2D\u8C03 \u21D2 \u767D\u5B57\u4E24\u4E2A\u4E3B\u9898\u90FD\u53EF\u8BFB\uFF0C
101
- \u6545\u8FD9\u662F\u4E00\u6761\u4E0E\u4E3B\u9898\u65E0\u5173\u7684\u5E38\u91CF\uFF1B\u4E0D\u8981\u62FF --tdt-fg-inverse \u9876\u2014\u2014\u5B83\u5728\u6697\u8272\u4E0B\u662F\u8FD1\u9ED1\uFF0C\u538B\u5728\u7EA2\u5E95\u4E0A\u770B\u4E0D\u6E05\u3002 */
102
- --tdt-on-signal:#fff;
101
+ \u6545\u8FD9\u662F\u4E00\u6761\u4E0E\u4E3B\u9898\u65E0\u5173\u7684\u5E38\u91CF\uFF1B\u4E0D\u8981\u62FF --dshpc-fg-inverse \u9876\u2014\u2014\u5B83\u5728\u6697\u8272\u4E0B\u662F\u8FD1\u9ED1\uFF0C\u538B\u5728\u7EA2\u5E95\u4E0A\u770B\u4E0D\u6E05\u3002 */
102
+ --dshpc-on-signal:#fff;
103
103
  /* \u8BED\u4E49\u8272**\u6D45\u5E95**\uFF1A\u72B6\u6001\u8272\u7CFB\u7684\u300C\u4E00\u5757\u5E95\u8272\u300D\u2014\u2014\u6267\u884C\u8BB0\u5F55\u9875\u6BCF\u6761\u6D41\u6C34\u8D26\u7684\u5757\u5E95\u5C31\u662F\u5B83
104
104
  \uFF08\u7528\u6237 2026-10-04\uFF1A\u6B63\u5E38\u6001\u7ED9\u540C\u8272\u7CFB\u5F88\u6D45\u7684\u900F\u660E\u5E95\u3001\u5931\u8D25\u7528\u7EA2\u5E95\u900F\u51FA\u6765\uFF09\u3002
105
105
  \u7528 \u300Ccolor-mix\u300D \u73B0\u7B97\u800C\u4E0D\u5199\u6B7B rgba\uFF1A\u72B6\u6001\u8272\u672C\u8EAB\u8DDF\u968F\u5BBF\u4E3B alias\uFF0C\u4E3B\u9898\u4E00\u6362\u81EA\u52A8\u6210\u7ACB\u3002
106
106
  \u26A0\uFE0F **\u6DF1\u8272\u4E0B\u8981\u66F4\u6DE1**\uFF1A\u7528\u6237 2026-10-04\u300C\u6DF1\u8272\u98CE\u683C\u7684\u7EFF\u8272\u548C\u7EA2\u8272\u597D\u50CF\u90FD\u6709\u70B9\u6DF1\u300D\u21D2 dark \u6BB5
107
107
  \u628A\u8FD9\u56DB\u6761\u538B\u5230 5%\uFF08\u66F4\u8D34\u8FD1\u9762\u677F\u5E95\u3001\u5B58\u5728\u611F\u66F4\u5F31\uFF09\uFF1B\u6D45\u8272\u6BB5\u7EF4\u6301 8%\u3002\u4E24\u7AEF\u5404\u81EA\u7ED9\u503C\uFF0C\u4E0D\u5171\u7528\u4E00\u6761\u66F2\u7EBF\u3002
108
- \u547D\u540D\u6536\u5728 tokens.ts \u5355\u70B9\uFF08\u672C\u4ED3\u786C\u89C4\u77E9\uFF1A\u4E1A\u52A1\u6587\u4EF6\u4E0D\u8BB8\u81EA\u9020 --tdt-*\uFF09\u3002 */
109
- --tdt-success-soft:color-mix(in srgb,var(--tdt-success) 8%,transparent);
110
- --tdt-warning-soft:color-mix(in srgb,var(--tdt-warning) 8%,transparent);
111
- --tdt-danger-soft:color-mix(in srgb,var(--tdt-danger) 8%,transparent);
112
- --tdt-business-soft:color-mix(in srgb,var(--tdt-business) 8%,transparent);
108
+ \u547D\u540D\u6536\u5728 tokens.ts \u5355\u70B9\uFF08\u672C\u4ED3\u786C\u89C4\u77E9\uFF1A\u4E1A\u52A1\u6587\u4EF6\u4E0D\u8BB8\u81EA\u9020 --dshpc-*\uFF09\u3002 */
109
+ --dshpc-success-soft:color-mix(in srgb,var(--dshpc-success) 8%,transparent);
110
+ --dshpc-warning-soft:color-mix(in srgb,var(--dshpc-warning) 8%,transparent);
111
+ --dshpc-danger-soft:color-mix(in srgb,var(--dshpc-danger) 8%,transparent);
112
+ --dshpc-business-soft:color-mix(in srgb,var(--dshpc-business) 8%,transparent);
113
113
 
114
114
  /* \u26A0\uFE0F 2026-10-18 \u7528\u6237\u62CD\u677F\uFF1A\u5BBF\u4E3B alias \u7684 hover\uFF08\u6697\u8272\u767D 8% / \u4EAE\u8272 6%\uFF09**\u592A\u5F31**\uFF0C
115
115
  \u300C\u79FB\u4E0A\u53BB\u8981\u4ED4\u7EC6\u770B\u624D\u770B\u5F97\u51FA\u6765\u300D\u21D2 \u4E0D\u518D\u59D4\u6258\u5BBF\u4E3B hover \u522B\u540D\uFF0C\u6539\u4E3A\u81EA\u63BA\u4E2D\u6027\u8272\u5E76\u52A0\u91CD\uFF1A
@@ -117,91 +117,91 @@ body{
117
117
  \u26A0\uFE0F \u5FC5\u987B\u4FDD\u7559 rgba \u515C\u5E95\u884C\u5728\u524D\uFF08\u672C\u6587\u4EF6\u60EF\u4F8B\uFF0C\u89C1 icon-plate \u6CE8\u91CA\uFF09\uFF1A\u63BA\u7684\u662F**\u56FA\u5B9A\u4E2D\u6027\u8272**
118
118
  \uFF08neutral-900=#0f0f0f / neutral-00=#fff\uFF09\uFF0C\u9884\u8BA1\u7B97\u65E0\u635F\uFF1B\u65E7\u5185\u6838\u4E0D\u8BA4 color-mix \u65F6\u8D70\u515C\u5E95\uFF0C
119
119
  \u5426\u5219\u6574\u6761 background:var(--seg-track) \u4F5C\u5E9F \u21D2 \u5206\u6BB5\u8F68\u9053\u900F\u660E\uFF08\u771F\u8E29\u8FC7\uFF1A\u9884\u89C8\u7AD9\u8F68\u9053\u6D88\u5931\uFF09\u3002 */
120
- --tdt-hover:rgba(15,15,15,.10);
121
- --tdt-hover:color-mix(in srgb,var(--dsw-static-neutral-900,#0f0f0f) 10%,transparent);
122
- --tdt-active:rgba(15,15,15,.18);
123
- --tdt-active:color-mix(in srgb,var(--dsw-static-neutral-900,#0f0f0f) 18%,transparent);
124
- --tdt-mask:var(--dsw-alias-bg-mask-1,#0000003d);
120
+ --dshpc-hover:rgba(15,15,15,.10);
121
+ --dshpc-hover:color-mix(in srgb,var(--dsw-static-neutral-900,#0f0f0f) 10%,transparent);
122
+ --dshpc-active:rgba(15,15,15,.18);
123
+ --dshpc-active:color-mix(in srgb,var(--dsw-static-neutral-900,#0f0f0f) 18%,transparent);
124
+ --dshpc-mask:var(--dsw-alias-bg-mask-1,#0000003d);
125
125
  /* \u300C\u9009\u4E2D\u9762\u300D\uFF082026-10-06\uFF0C\u4EFB\u52A1\u65E5\u7A0B\u9875\u9996\u521B\uFF09= \u5F53\u524D\u5E95\u8272**\u671D\u66F4\u6DF1\u63BA 12% \u6587\u5B57\u8272**\uFF1A
126
126
  \u6D45\u8272\u4E3B\u9898\u4E0B\u6587\u5B57\u8272\u662F\u9ED1 \u21D2 \u9009\u4E2D\u9762\u6BD4\u5E38\u6001\u5E95\u8272**\u6DF1\u4E00\u6863**\u3002\u6DF1\u8272\u5206\u652F\u89C1 body[data-ds-dark-theme]\uFF08\u671D\u80CC\u666F\u8272\u63BA\uFF09\u3002
127
127
  \u8BED\u4E49\uFF1A\u6807\u8BB0\u300C\u6B63\u5728\u770B\u7684\u4E1C\u897F\u300D\uFF0C\u6BD4\u5E38\u6001\u660E\u663E\u3001\u53C8\u4E0D\u8BB8\u76D6\u4F4F\u5185\u5BB9\uFF08\u4E0D\u8BB8\u7528\u534A\u900F\u660E\u53E0\u72B6\u6001\u8272\uFF09\u3002 */
128
- --tdt-selected-bg:color-mix(in srgb,var(--tdt-surface-1) 88%,var(--tdt-fg));
128
+ --dshpc-selected-bg:color-mix(in srgb,var(--dshpc-surface-1) 88%,var(--dshpc-fg));
129
129
  /* \u4EFB\u52A1\u65E5\u7A0B\u9875\u672C\u6708\u683C\u9ED8\u8BA4\u5E95\uFF082026-10-06 \u2192 \u7EED2\uFF09\uFF1A\u6D45\u8272\u4E0B\u7ED9**\u6DE1\u84DD**\uFF08business 8% \u900F\u767D\u5E95\uFF09\u2014\u2014
130
130
  \u53C2\u7167\u7528\u6237\u53C2\u8003\u7A3F\u91CC\u672A\u9009\u4E2D\u65E5\u7A0B\u5757 / Tuesday \u5217\u7684\u90A3\u79CD\u84DD\u3001\u518D\u6D45\u4E00\u70B9\u70B9\uFF1B
131
- \u76F8\u90BB\u6708\u8865\u4F4D\u683C\u4ECD\u8D70 --tdt-surface-2\uFF08\u66F4\u7070\uFF09\uFF0C\u4E0D\u53D7\u5F71\u54CD\u3002
131
+ \u76F8\u90BB\u6708\u8865\u4F4D\u683C\u4ECD\u8D70 --dshpc-surface-2\uFF08\u66F4\u7070\uFF09\uFF0C\u4E0D\u53D7\u5F71\u54CD\u3002
132
132
  \u6DF1\u8272\u6BB5\u7EF4\u6301 #23262e\uFF08\u7528\u6237\uFF1A\u6DF1\u8272 UI \u5DF2\u5DEE\u4E0D\u591A\uFF0C\u4E0D\u52A8\uFF09\u3002 */
133
- --tdt-cal-cell-bg:color-mix(in srgb,var(--tdt-business) 8%,var(--tdt-surface-1));
133
+ --dshpc-cal-cell-bg:color-mix(in srgb,var(--dshpc-business) 8%,var(--dshpc-surface-1));
134
134
  /* \u4EFB\u52A1\u65E5\u7A0B\u9875\u300C\u70B9\u5F00\u67D0\u5929\u300D\u5C55\u5F00\u7684\u9762\u677F\u5E95\uFF082026-10-06 \u7EED\uFF09\uFF1A\u6D45\u8272\u4E0B**\u65E0\u9650\u63A5\u8FD1\u767D\u3001\u53EA\u5E26\u4E00\u4E01\u70B9\u7070**
135
135
  \uFF08neutral-50 = #fafafa\uFF09\u2014\u2014\u9762\u677F\u91CC\u88C5\u534A\u900F\u660E\u6267\u884C\u8BB0\u5F55\u5217\u8868\uFF0C\u5E95\u518D\u6DF1\u6574\u7247\u5C31\u53D1\u7CCA\u53D1\u7070\uFF1B
136
136
  \u6DF1\u8272\u6BB5\u6CBF\u7528\u539F selected-bg \u6697\u503C\uFF0C\u4FDD\u6301\u4E0D\u52A8\u3002 */
137
- --tdt-cal-panel-bg:var(--dsw-static-neutral-50,#fafafa);
137
+ --dshpc-cal-panel-bg:var(--dsw-static-neutral-50,#fafafa);
138
138
  /* \u4EFB\u52A1\u65E5\u7A0B\u9875\u672C\u6708\u683C hover \u5E95\uFF08\u6D45\u8272\u6BB5\uFF0C2026-10-06 \u7EED3\uFF09\uFF1A\u4E0D\u518D\u8D70\u7070\u8272\u901A\u7528\u4EA4\u4E92\u5E95\u2014\u2014
139
139
  \u9F20\u6807\u79FB\u4E0A\u53BB\u5E94\u662F\u300C\u66F4\u4EAE\u4E00\u70B9\u70B9\u7684\u84DD\u300D\uFF08\u4E0E\u6DF1\u8272\u6BB5\u540C\u8BED\u4E49\uFF1Ahover = \u63D0\u4EAE\u7684\u84DD\uFF0C\u4E0D\u662F\u7070\u4E0B\u53BB\uFF09\u3002
140
140
  \u6D53\u5EA6**\u4ECB\u4E8E**\u8868\u5934\u84DD\uFF0814%\uFF09\u4E0E\u672A\u9009\u4E2D\u683C\u84DD\uFF088%\uFF09\u4E4B\u95F4\u3001\u7565\u504F\u8868\u5934\u4E00\u4FA7\uFF1Abusiness 12% \u900F\u767D\u5E95
141
141
  \uFF08\u6BD4\u8868\u5934\u6D45\u4E00\u70B9\u3001\u6BD4\u672A\u9009\u4E2D\u683C\u6DF1\u4E00\u70B9\uFF09\u3002 */
142
- --tdt-cal-cell-hover:color-mix(in srgb,var(--tdt-business) 12%,var(--tdt-surface-1));
142
+ --dshpc-cal-cell-hover:color-mix(in srgb,var(--dshpc-business) 12%,var(--dshpc-surface-1));
143
143
 
144
144
  /* \u2500\u2500 \u6295\u5F71 / \u7126\u70B9 \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\u2500 */
145
- --tdt-shadow-1:var(--dsw-elevation-soft,0 4px 16px 0 #00000008);
146
- /* \u4EAE\u7247\u81EA\u5E26\u7684\u6D6E\u8D77\u611F\uFF08\u9009\u4E2D\u6001\u7528\uFF1B\u4E0E --tdt-surface-raised \u914D\u5BF9\uFF09 */
147
- --tdt-shadow-raised:var(--dsw-elevation-soft,0 4px 16px 0 #00000008);
148
- --tdt-shadow-2:var(--dsw-shadow-lv3,0 12px 32px 0 #00000014);
145
+ --dshpc-shadow-1:var(--dsw-elevation-soft,0 4px 16px 0 #00000008);
146
+ /* \u4EAE\u7247\u81EA\u5E26\u7684\u6D6E\u8D77\u611F\uFF08\u9009\u4E2D\u6001\u7528\uFF1B\u4E0E --dshpc-surface-raised \u914D\u5BF9\uFF09 */
147
+ --dshpc-shadow-raised:var(--dsw-elevation-soft,0 4px 16px 0 #00000008);
148
+ --dshpc-shadow-2:var(--dsw-shadow-lv3,0 12px 32px 0 #00000014);
149
149
  /* \u952E\u76D8\u7126\u70B9\u73AF\u3002\u26A0\uFE0F \u4E0D\u7528\u5BBF\u4E3B --dsw-focus-ring-color\uFF1A\u5B83\u9ED8\u8BA4\u503C\u662F transparent\uFF08\u515C\u5E95\u4E0D\u751F\u6548\u3001\u4F1A\u9690\u8EAB\uFF09 */
150
- --tdt-focus:var(--dsw-alias-state-business-primary,#3b5bdb);
150
+ --dshpc-focus:var(--dsw-alias-state-business-primary,#3b5bdb);
151
151
 
152
152
  /* \u2500\u2500 \u5706\u89D2\uFF08\u5BBF\u4E3B\u771F\u503C 4 / 8 / 12 / 16 / 20 / 28\uFF09\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
153
- --tdt-radius-xs:var(--dsw-radius-xs,4px);
154
- --tdt-radius-sm:var(--dsw-radius-sm,8px);
155
- --tdt-radius-md:var(--dsw-radius-md,12px);
156
- --tdt-radius-lg:var(--dsw-radius-lg,16px);
157
- --tdt-radius-xl:var(--dsw-radius-xl,20px);
158
- --tdt-radius-panel:var(--dsw-radius-panel,28px);
153
+ --dshpc-radius-xs:var(--dsw-radius-xs,4px);
154
+ --dshpc-radius-sm:var(--dsw-radius-sm,8px);
155
+ --dshpc-radius-md:var(--dsw-radius-md,12px);
156
+ --dshpc-radius-lg:var(--dsw-radius-lg,16px);
157
+ --dshpc-radius-xl:var(--dsw-radius-xl,20px);
158
+ --dshpc-radius-panel:var(--dsw-radius-panel,28px);
159
159
  /* \u5168\u5706\uFF08\u80F6\u56CA\u6807\u7B7E\uFF09\uFF1A\u5BBF\u4E3B\u7684 radius \u6863\u6700\u5927\u53EA\u6709 28px\uFF0C\u6491\u4E0D\u6EE1 24px \u9AD8\u7684 chip */
160
- --tdt-radius-pill:999px;
160
+ --dshpc-radius-pill:999px;
161
161
 
162
162
  /* \u2500\u2500 \u95F4\u8DDD\u56DB\u62CD\uFF08\u53EA\u8BB8\u7528\u8FD9\u56DB\u6863\uFF0C\u4E0D\u8BB8\u51FA\u73B0 5 / 7 / 9px\uFF09\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
163
- --tdt-space-1:4px;
164
- --tdt-space-2:8px;
165
- --tdt-space-3:12px;
166
- --tdt-space-4:16px;
163
+ --dshpc-space-1:4px;
164
+ --dshpc-space-2:8px;
165
+ --dshpc-space-3:12px;
166
+ --dshpc-space-4:16px;
167
167
 
168
168
  /* \u2500\u2500 \u63A7\u4EF6\u9AD8\u5EA6\uFF1A\u79BB\u6563\u4E09\u6863\uFF08\u63A7\u4EF6\u7528 size="sm|md|lg" \u9009\uFF1B\u8C03\u7528\u70B9\u4E0D\u8BB8\u81EA\u5B9A\u4E49\u9AD8\u5EA6\uFF0C
169
- \u771F\u4E0D\u591F\u7528\u624D\u5141\u8BB8\u5728\u8C03\u7528\u70B9\u672C\u5730\u8986\u76D6 --tdt-control-h-*\uFF0C\u5C5E\u4F8B\u5916\u800C\u975E\u5E38\u6001\uFF09\u2500\u2500 */
170
- --tdt-control-h-sm:24px;
171
- --tdt-control-h-md:28px;
172
- --tdt-control-h-lg:32px;
169
+ \u771F\u4E0D\u591F\u7528\u624D\u5141\u8BB8\u5728\u8C03\u7528\u70B9\u672C\u5730\u8986\u76D6 --dshpc-control-h-*\uFF0C\u5C5E\u4F8B\u5916\u800C\u975E\u5E38\u6001\uFF09\u2500\u2500 */
170
+ --dshpc-control-h-sm:24px;
171
+ --dshpc-control-h-md:28px;
172
+ --dshpc-control-h-lg:32px;
173
173
 
174
174
  /* \u2500\u2500 \u5B57\u53F7 / \u884C\u9AD8\uFF1A\u76F4\u7ED1\u5BBF\u4E3B\u5B57\u53F7\u65CF\uFF08\u5BBF\u4E3B\u771F\u503C 11 / 12 / 13 / 14 / 16\uFF09\u2500\u2500\u2500\u2500\u2500 */
175
- --tdt-font-xs:var(--dsw-font-xxxs-11-font-size,11px);
176
- --tdt-font-sm:var(--dsw-font-xxs-12-font-size,12px);
177
- --tdt-font-md:var(--dsw-font-xs-13-font-size,13px);
178
- --tdt-font-lg:var(--dsw-font-s-14-font-size,14px);
179
- --tdt-font-xl:var(--dsw-font-base-16-font-size,16px);
180
- --tdt-line-xs:var(--dsw-font-xxxs-11-line-height,14px);
181
- --tdt-line-sm:var(--dsw-font-xxs-12-line-height,18px);
182
- --tdt-line-md:var(--dsw-font-xs-13-line-height,20px);
183
- --tdt-line-lg:var(--dsw-font-s-14-line-height,22px);
184
- --tdt-line-xl:var(--dsw-font-base-16-line-height,24px);
185
- --tdt-font-mono:var(--ds-font-family-code,monospace);
175
+ --dshpc-font-xs:var(--dsw-font-xxxs-11-font-size,11px);
176
+ --dshpc-font-sm:var(--dsw-font-xxs-12-font-size,12px);
177
+ --dshpc-font-md:var(--dsw-font-xs-13-font-size,13px);
178
+ --dshpc-font-lg:var(--dsw-font-s-14-font-size,14px);
179
+ --dshpc-font-xl:var(--dsw-font-base-16-font-size,16px);
180
+ --dshpc-line-xs:var(--dsw-font-xxxs-11-line-height,14px);
181
+ --dshpc-line-sm:var(--dsw-font-xxs-12-line-height,18px);
182
+ --dshpc-line-md:var(--dsw-font-xs-13-line-height,20px);
183
+ --dshpc-line-lg:var(--dsw-font-s-14-line-height,22px);
184
+ --dshpc-line-xl:var(--dsw-font-base-16-line-height,24px);
185
+ --dshpc-font-mono:var(--ds-font-family-code,monospace);
186
186
 
187
187
  /* \u2500\u2500 \u5C42\u7EA7\u9636\u68AF\uFF08\u4E1A\u52A1\u6587\u4EF6\u4E0D\u8BB8\u518D\u5199\u88F8 z-index\uFF09\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 */
188
188
  /* \u9875\u9762\u7EA7\u9884\u89C8\u5206\u680F \u2192 \u62BD\u5C49\uFF08\u65B0\u5EFA/\u7F16\u8F91\uFF09\u2192 \u5F39\u7A97/\u786E\u8BA4\u6846 \u2192 \u6D6E\u5C42\u83DC\u5355 \u2192 \u6D6E\u5C42\u63D0\u793A */
189
189
  /* \u5185\u5BB9\u5C42\u5438\u9876\uFF08\u5929\u6807\u7B7E / \u8868\u5934\u8FD9\u7C7B\u300C\u8DDF\u7740\u6EDA\u4F46\u538B\u4F4F\u540C\u5C42\u5185\u5BB9\u300D\u7684\u5143\u7D20\uFF09\uFF1A\u53EA\u538B\u540C\u5C42\u5144\u5F1F\uFF0C
190
190
  \u5FC5\u987B\u4F4E\u4E8E\u4E0B\u9762\u6240\u6709\u6D6E\u5C42\u6863 \u2014\u2014 \u6240\u4EE5\u5B83\u4E0D\u662F\u300C\u5F00\u65B0\u6D6E\u5C42\u6863\u300D\uFF0C\u800C\u662F\u5185\u5BB9\u5C42\u5185\u90E8\u7684\u6392\u5E8F\u4F4D\u3002 */
191
- --tdt-z-sticky:10;
192
- --tdt-z-dock:1030;
193
- --tdt-z-drawer:1040;
194
- --tdt-z-modal:1070;
195
- --tdt-z-menu:1100;
196
- --tdt-z-tip:1200;
191
+ --dshpc-z-sticky:10;
192
+ --dshpc-z-dock:1030;
193
+ --dshpc-z-drawer:1040;
194
+ --dshpc-z-modal:1070;
195
+ --dshpc-z-menu:1100;
196
+ --dshpc-z-tip:1200;
197
197
 
198
198
  /* \u2500\u2500 \u52A8\u6548 \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\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
199
- --tdt-dur:var(--ds-transition-duration,.2s);
200
- --tdt-dur-fast:var(--ds-transition-duration-fast,.12s);
201
- --tdt-ease:var(--ds-ease-in-out,cubic-bezier(.4,0,.2,1));
199
+ --dshpc-dur:var(--ds-transition-duration,.2s);
200
+ --dshpc-dur-fast:var(--ds-transition-duration-fast,.12s);
201
+ --dshpc-ease:var(--ds-ease-in-out,cubic-bezier(.4,0,.2,1));
202
202
  /* \u8FD0\u884C\u4E2D\u72B6\u6001\u7684\u8109\u52A8\u65F6\u957F\uFF082026-10-06 \u7EDF\u4E00\u524D\u540E\u4E24\u7AEF\uFF1A\u4EFB\u52A1\u914D\u7F6E\u91CC\u7684\u7EFF\u547C\u5438 \u2192 \u84DD\u3001\u653E\u6162\uFF1B
203
203
  \u6267\u884C\u8BB0\u5F55\u91CC\u7684\u84DD\u95EA \u2192 \u653E\u6162\u4E00\u70B9\u3002\u4E24\u8005\u7528\u540C\u4E00\u4E2A\u503C\uFF0C\u52A8\u753B\u5F62\u72B6\u672C\u5C31\u4E00\u81F4\uFF09\u3002 */
204
- --tdt-dur-run:500ms;
204
+ --dshpc-dur-run:500ms;
205
205
  }
206
206
 
207
207
  /* \u2500\u2500 \u660E\u6697\u5DEE\u5F02\u7684**\u552F\u4E00**\u843D\u70B9 \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
@@ -209,72 +209,61 @@ body{
209
209
  \u552F\u4E00\u660E\u6697\u5224\u636E\uFF1B\u63D2\u4EF6\u7981\u6B62\u7528 prefers-color-scheme \u2014\u2014 \u5B83\u8DDF\u7684\u662F\u7CFB\u7EDF\u3001\u4E0D\u662F\u7528\u6237\u5728\u5BBF\u4E3B\u91CC\u7684\u9009\u62E9\uFF09\u3002
210
210
  \u4E0B\u9762\u53EA\u653E alias \u8868\u8FBE\u4E0D\u4E86\u7684\u300C\u56FA\u5B9A\u4E2D\u6027\u9762\u300D\uFF1B\u989C\u8272\u82E5\u80FD\u9760 alias \u81EA\u52A8\u8DDF\u968F\uFF0C\u4E00\u5F8B\u4E0D\u8981\u5199\u5728\u8FD9\u91CC\u3002 */
211
211
  body[data-ds-dark-theme]{
212
- --tdt-solid:var(--dsw-static-neutral-900,#0f0f0f);
213
- --tdt-on-solid:var(--dsw-static-neutral-00,#fff);
212
+ --dshpc-solid:var(--dsw-static-neutral-900,#0f0f0f);
213
+ --dshpc-on-solid:var(--dsw-static-neutral-00,#fff);
214
214
  /* \u6697\u8272 hover \u63BA\u767D 14% / active 24%\uFF08\u5BF9\u9F50\u4E0A\u9762 2026-10-18 \u7684\u52A0\u91CD\u62CD\u677F\uFF09\u3002rgba \u515C\u5E95\u884C\u540C\u4E0A\u3002 */
215
- --tdt-hover:rgba(255,255,255,.14);
216
- --tdt-hover:color-mix(in srgb,var(--dsw-static-neutral-00,#fff) 14%,transparent);
217
- --tdt-active:rgba(255,255,255,.24);
218
- --tdt-active:color-mix(in srgb,var(--dsw-static-neutral-00,#fff) 24%,transparent);
219
- --tdt-plate:var(--dsw-static-neutral-850,#212123);
220
- --tdt-plate-hover:var(--dsw-static-neutral-800,#292929);
221
- --tdt-icon-plate:rgba(255,255,255,.05);
222
- --tdt-icon-plate:color-mix(in srgb,var(--dsw-static-neutral-00,#fff) 5%,transparent);
215
+ --dshpc-hover:rgba(255,255,255,.14);
216
+ --dshpc-hover:color-mix(in srgb,var(--dsw-static-neutral-00,#fff) 14%,transparent);
217
+ --dshpc-active:rgba(255,255,255,.24);
218
+ --dshpc-active:color-mix(in srgb,var(--dsw-static-neutral-00,#fff) 24%,transparent);
219
+ --dshpc-plate:var(--dsw-static-neutral-850,#212123);
220
+ --dshpc-plate-hover:var(--dsw-static-neutral-800,#292929);
221
+ --dshpc-icon-plate:rgba(255,255,255,.05);
222
+ --dshpc-icon-plate:color-mix(in srgb,var(--dsw-static-neutral-00,#fff) 5%,transparent);
223
223
  /* \u6697\u8272\u4E3B\u9898**\u53CD\u8FC7\u6765**\uFF1A\u8868\u5934\u8981\u6BD4\u5361\u7247\u9762**\u4EAE**\u3001\u6BD4\u6591\u9A6C\u7EB9\u518D**\u6D45\u4E00\u6863**\uFF08\u7528\u6237\uFF1A\u7EAF\u9ED1\u80CC\u666F\u6CA1\u6CD5\u770B\uFF09\u3002 */
224
- --tdt-head-bg:var(--tdt-surface-2);
224
+ --dshpc-head-bg:var(--dshpc-surface-2);
225
225
  /* \u6697\u8272\u5E95\u677F**\u5FAE\u4EAE**\uFF1Bhover **\u66F4\u4EAE**\uFF08\u539F\u5148 hover \u53D6 plate-hover \u53CD\u800C\u66F4\u6DE1 \u21D2 \u9F20\u6807\u79FB\u4E0A\u53BB\u5C31\u6CA1\u4E86\uFF09\u3002 */
226
- --tdt-chip-bg:rgba(255,255,255,.08);
227
- --tdt-chip-bg:color-mix(in srgb,var(--dsw-static-neutral-00,#fff) 8%,transparent);
228
- --tdt-chip-bg-hover:rgba(255,255,255,.16);
229
- --tdt-chip-bg-hover:color-mix(in srgb,var(--dsw-static-neutral-00,#fff) 16%,transparent);
226
+ --dshpc-chip-bg:rgba(255,255,255,.08);
227
+ --dshpc-chip-bg:color-mix(in srgb,var(--dsw-static-neutral-00,#fff) 8%,transparent);
228
+ --dshpc-chip-bg-hover:rgba(255,255,255,.16);
229
+ --dshpc-chip-bg-hover:color-mix(in srgb,var(--dsw-static-neutral-00,#fff) 16%,transparent);
230
230
  /* \u6697\u8272\u4E0B\u84DD\u8272\u8981\u66F4\u4EAE\u3001\u900F\u660E\u5EA6\u7565\u9AD8\u624D\u538B\u5F97\u4F4F\u6DF1\u5E95\u3002 */
231
- --tdt-open-bg:rgba(96,165,250,.18);
232
- --tdt-open-bg-soft:rgba(96,165,250,.08);
233
- --tdt-card-hover:rgba(96,165,250,.13);
231
+ --dshpc-open-bg:rgba(96,165,250,.18);
232
+ --dshpc-open-bg-soft:rgba(96,165,250,.08);
233
+ --dshpc-card-hover:rgba(96,165,250,.13);
234
234
  /* \u8BED\u4E49\u8272**\u6D45\u5E95**\uFF08\u6DF1\u8272\u7248\uFF09\uFF1A\u7528\u6237\u5ACC\u6DF1\u8272\u7684\u7EFF / \u7EA2\u300C\u6709\u70B9\u6DF1\u300D\u21D2 \u538B\u5230 **5%**\uFF08\u6D45\u8272\u6BB5\u662F 8%\uFF09\uFF0C
235
235
  \u66F4\u8D34\u8FD1\u9762\u677F\u5E95\u8272\u3001\u5B58\u5728\u611F\u66F4\u5F31\uFF1B\u5757\u5E95\u4E0E\u72B6\u6001\u8272\u7AD6\u6761\u4ECD\u540C\u6E90\uFF08\u7AD6\u6761\u662F\u5B9E\u8272\uFF0C\u4E0D\u53D7\u8FD9\u6761\u5F71\u54CD\uFF09\u3002 */
236
- --tdt-success-soft:color-mix(in srgb,var(--tdt-success) 5%,transparent);
237
- --tdt-warning-soft:color-mix(in srgb,var(--tdt-warning) 5%,transparent);
238
- --tdt-danger-soft:color-mix(in srgb,var(--tdt-danger) 5%,transparent);
239
- --tdt-business-soft:color-mix(in srgb,var(--tdt-business) 5%,transparent);
240
- /* \u300C\u9009\u4E2D\u9762\u300D\uFF08\u6DF1\u8272\u7248\uFF0C2026-10-06\uFF09\uFF1A\u63BA **~40% \u80CC\u666F\u8272**\uFF08--tdt-surface-base\uFF09\u21D2 \u65E0\u9650\u63A5\u8FD1\u9875\u9762\u80CC\u666F\u7684\u9ED1\u3001
236
+ --dshpc-success-soft:color-mix(in srgb,var(--dshpc-success) 5%,transparent);
237
+ --dshpc-warning-soft:color-mix(in srgb,var(--dshpc-warning) 5%,transparent);
238
+ --dshpc-danger-soft:color-mix(in srgb,var(--dshpc-danger) 5%,transparent);
239
+ --dshpc-business-soft:color-mix(in srgb,var(--dshpc-business) 5%,transparent);
240
+ /* \u300C\u9009\u4E2D\u9762\u300D\uFF08\u6DF1\u8272\u7248\uFF0C2026-10-06\uFF09\uFF1A\u63BA **~40% \u80CC\u666F\u8272**\uFF08--dshpc-surface-base\uFF09\u21D2 \u65E0\u9650\u63A5\u8FD1\u9875\u9762\u80CC\u666F\u7684\u9ED1\u3001
241
241
  \u53EA\u6BD4\u80CC\u666F\u7565\u6DF1\u4E00\u70B9\u70B9\uFF08\u7528\u6237\uFF1A\u6DF1\u8272\u4E0B\u5C55\u5F00\u533A\u538B\u7740\u4EFB\u52A1\u900F\u660E\u7EFF\u4F1A\u53D1\u7070\uFF0C\u5E95\u8272\u8981\u5C3D\u91CF\u8D34\u8FD1\u80CC\u666F\u624D\u4E0D\u663E\u7070\uFF09\u3002
242
242
  \u26A0\uFE0F \u6DF1\u8272\u4E0B\u4E0D\u80FD\u63BA\u6587\u5B57\u8272 \u2014\u2014 \u90A3\u662F\u767D\uFF0C\u4F1A\u53D8\u4EAE\uFF0C\u9009\u4E2D\u53CD\u800C\u6BD4\u672C\u6708\u65E5\u671F\u6D45\u3002 */
243
- --tdt-selected-bg:color-mix(in srgb,var(--tdt-surface-1) 60%,var(--tdt-surface-base));
243
+ --dshpc-selected-bg:color-mix(in srgb,var(--dshpc-surface-1) 60%,var(--dshpc-surface-base));
244
244
  /* \u4EFB\u52A1\u65E5\u7A0B\u9875\u672C\u6708\u683C\u7684\u9ED8\u8BA4\u5E95\uFF08\u6DF1\u8272\u7248\uFF0C2026-10-06\uFF09\uFF1A\u6DF1\u7684\u3001\u5E26\u70B9\u7070\u84DD\u7684\u6697\u8272\uFF08\u7528\u6237\u7ED9\u7684\u53C2\u8003\u56FE \u2248 #23262e\uFF09\uFF0C
245
- \u6BD4\u539F\u6765\u7684\u5361\u7247\u9762\u66F4\u6C89\u3001\u66F4\u504F\u84DD\u7070\uFF1B\u9009\u4E2D\u683C\u4ECD\u8D70 --tdt-selected-bg\uFF08\u66F4\u6697\u4E00\u6863\uFF09\uFF0C\u5C42\u7EA7\u4E0D\u53D8\u3002 */
246
- --tdt-cal-cell-bg:#23262e;
247
- /* \u4EFB\u52A1\u65E5\u7A0B\u9875\u672C\u6708\u683C hover \u5E95\uFF08\u6DF1\u8272\u6BB5\uFF0C2026-10-06\uFF09\uFF1A\u539F\u5148\u8D70 --tdt-hover\uFF08\u5BBF\u4E3B\u6D45\u8272\u53E0\u52A0\uFF09\u5728\u6DF1\u5E95\u4E0A\u663E\u5F97
245
+ \u6BD4\u539F\u6765\u7684\u5361\u7247\u9762\u66F4\u6C89\u3001\u66F4\u504F\u84DD\u7070\uFF1B\u9009\u4E2D\u683C\u4ECD\u8D70 --dshpc-selected-bg\uFF08\u66F4\u6697\u4E00\u6863\uFF09\uFF0C\u5C42\u7EA7\u4E0D\u53D8\u3002 */
246
+ --dshpc-cal-cell-bg:#23262e;
247
+ /* \u4EFB\u52A1\u65E5\u7A0B\u9875\u672C\u6708\u683C hover \u5E95\uFF08\u6DF1\u8272\u6BB5\uFF0C2026-10-06\uFF09\uFF1A\u539F\u5148\u8D70 --dshpc-hover\uFF08\u5BBF\u4E3B\u6D45\u8272\u53E0\u52A0\uFF09\u5728\u6DF1\u5E95\u4E0A\u663E\u5F97
248
248
  \u300C\u7070\u53D1\u4EAE\u300D\uFF0C\u4E0D\u597D\u770B \u21D2 \u6362\u6210\u66F4\u8D34\u5E95\u7684\u84DD\u8C03\u5FAE\u4EAE\uFF08\u4E0E open-bg-soft \u540C\u65CF\uFF09\uFF0Chover \u65F6\u4E0D\u523A\u773C\u3001\u53C8\u6709\u53CD\u9988\u3002 */
249
- --tdt-cal-cell-hover:rgba(96,165,250,.12);
249
+ --dshpc-cal-cell-hover:rgba(96,165,250,.12);
250
250
  /* \u4EFB\u52A1\u65E5\u7A0B\u9875\u5C55\u5F00\u9762\u677F\u5E95\uFF08\u6DF1\u8272\u6BB5\uFF0C2026-10-06 \u7EED\uFF09\uFF1A\u4E0E\u539F selected-bg \u6697\u503C\u4E00\u81F4\uFF0C\u6DF1\u8272 UI \u4E0D\u52A8 */
251
- --tdt-cal-panel-bg:color-mix(in srgb,var(--tdt-surface-1) 60%,var(--tdt-surface-base));
251
+ --dshpc-cal-panel-bg:color-mix(in srgb,var(--dshpc-surface-1) 60%,var(--dshpc-surface-base));
252
252
  }
253
253
  \``;
254
254
 
255
255
  // dist/design/style-kit.js
256
- var SOURCE_PREFIX = "--tdt-";
256
+ var CSS_PREFIX = "dshpc";
257
257
  var TOKENS_DOMAIN = "tokens";
258
- var PREFIX_RE = /^[a-zA-Z][a-zA-Z0-9-]*$/;
259
- function buildTokensCss(prefix) {
260
- assertPrefix(prefix);
261
- return TOKENS_CSS_TEMPLATE.split(SOURCE_PREFIX).join(`--${prefix}-`);
262
- }
263
- function assertPrefix(prefix) {
264
- if (!PREFIX_RE.test(prefix)) {
265
- throw new Error(`dsh-plugin-core/design: prefix \u5FC5\u987B\u662F\u5B57\u6BCD\u5F00\u5934\u3001\u53EA\u542B\u5B57\u6BCD\u6570\u5B57\u4E0E\u8FDE\u5B57\u7B26\uFF0C\u6536\u5230 ${JSON.stringify(prefix)}`);
266
- }
267
- }
268
258
  function createStyleKit(options) {
269
- const { id, prefix } = options;
270
- assertPrefix(prefix);
259
+ const { id } = options;
271
260
  if (id === "")
272
261
  throw new Error("dsh-plugin-core/design: id \u4E0D\u80FD\u4E3A\u7A7A");
273
- const tokensCss = buildTokensCss(prefix);
262
+ const tokensCss = TOKENS_CSS_TEMPLATE;
274
263
  const domains = /* @__PURE__ */ new Map();
275
264
  let tag = null;
276
265
  let dirty = true;
277
- const buildCss2 = () => {
266
+ const composeCss = () => {
278
267
  const entries = [...domains.entries()];
279
268
  entries.sort((a, b) => a[0] === TOKENS_DOMAIN ? -1 : b[0] === TOKENS_DOMAIN ? 1 : 0);
280
269
  return entries.map(([, css]) => css).join("\n");
@@ -282,7 +271,7 @@ function createStyleKit(options) {
282
271
  const flush = () => {
283
272
  if (tag === null)
284
273
  return;
285
- tag.textContent = buildCss2();
274
+ tag.textContent = composeCss();
286
275
  dirty = false;
287
276
  };
288
277
  const ensureStyles = () => {
@@ -311,11 +300,11 @@ function createStyleKit(options) {
311
300
  return;
312
301
  domains.set(domain, css);
313
302
  dirty = true;
314
- if (tag !== null && tag.isConnected)
303
+ if (tag?.isConnected === true)
315
304
  flush();
316
305
  };
317
306
  const dispose = () => {
318
- if (tag !== null && tag.isConnected)
307
+ if (tag?.isConnected === true)
319
308
  tag.remove();
320
309
  tag = null;
321
310
  domains.clear();
@@ -323,9 +312,8 @@ function createStyleKit(options) {
323
312
  };
324
313
  return {
325
314
  id,
326
- prefix,
327
315
  tokensCss,
328
- cssVar: (name) => `--${prefix}-${name}`,
316
+ cssVar: (name) => `--${CSS_PREFIX}-${name}`,
329
317
  registerStyle,
330
318
  ensureStyles,
331
319
  dispose,
@@ -349,104 +337,104 @@ var SEGMENTED_CSS = `
349
337
  \u51E0\u4F55 = \u6BB5\u9AD8 = token \u2212 6px\uFF08\u4E0A\u4E0B\u5404 2px padding + 1px \u8FB9\u6846\uFF09\uFF1Bdefault \u771F\u8FB9\u6846 1px + padding 2px\uFF0C
350
338
  inset \u65E0\u8FB9\u6846\u6545 padding \u6536 3px \u628A\u7F3A\u7684 1px \u8865\u56DE\uFF0C\u4E24\u79CD\u5916\u89C2\u603B\u9AD8\u90FD == token\uFF0824/28/32\uFF09\uFF0C\u4E0D\u518D\u591A +2px\u3002
351
339
  \u4EE5\u540E Button / Input \u7684\u6709\u8FB9 / \u65E0\u8FB9\u540C\u6B64\u89C4\u5219\u3002 */
352
- .dsh-tdt-seg{display:inline-flex;align-items:center;gap:2px;padding:2px;border-radius:var(--tdt-radius-md);background:var(--seg-track);}
353
- /* \u9009\u4E2D\u7247 = --tdt-solid\uFF08\u4EAE=\u767D\u7247 / \u6697=\u9ED1\u7247\uFF0C2026-10-18 \u5BF9\u9F50\u771F\u5B9E\u63D2\u4EF6\u622A\u56FE\uFF09\u3002
340
+ .dshpc-seg{display:inline-flex;align-items:center;gap:2px;padding:2px;border-radius:var(--dshpc-radius-md);background:var(--seg-track);}
341
+ /* \u9009\u4E2D\u7247 = --dshpc-solid\uFF08\u4EAE=\u767D\u7247 / \u6697=\u9ED1\u7247\uFF0C2026-10-18 \u5BF9\u9F50\u771F\u5B9E\u63D2\u4EF6\u622A\u56FE\uFF09\u3002
354
342
  \u539F\u5148\u53D6 surface-raised \u21D2 \u4E0E\u5361\u7247\u5E95\uFF08\u540C\u4E3A bg-layer-1\uFF09\u540C\u8272\uFF0C\u9009\u4E2D\u7247\u5728\u5361\u4E0A\u9690\u5F62\u3001\u53EA\u5269\u9634\u5F71\u5708\u3002 */
355
- .dsh-tdt-seg--default{--seg-track:var(--tdt-surface-2);--seg-thumb:var(--tdt-solid);border:1px solid var(--tdt-border);}
356
- .dsh-tdt-seg--inset{--seg-track:var(--tdt-hover);--seg-thumb:var(--tdt-solid);border:0;padding:3px;}
343
+ .dshpc-seg--default{--seg-track:var(--dshpc-surface-2);--seg-thumb:var(--dshpc-solid);border:1px solid var(--dshpc-border);}
344
+ .dshpc-seg--inset{--seg-track:var(--dshpc-hover);--seg-thumb:var(--dshpc-solid);border:0;padding:3px;}
357
345
 
358
- .dsh-tdt-seg__item{appearance:none;display:inline-flex;align-items:center;gap:4px;box-sizing:border-box;
359
- height:calc(var(--tdt-control-h-sm) - 6px);padding:0 12px;border:0;border-radius:var(--tdt-radius-sm);
360
- background:transparent;color:var(--tdt-fg-2);font-family:inherit;font-size:var(--tdt-font-sm);line-height:var(--tdt-line-sm);
346
+ .dshpc-seg__item{appearance:none;display:inline-flex;align-items:center;gap:4px;box-sizing:border-box;
347
+ height:calc(var(--dshpc-control-h-sm) - 6px);padding:0 12px;border:0;border-radius:var(--dshpc-radius-sm);
348
+ background:transparent;color:var(--dshpc-fg-2);font-family:inherit;font-size:var(--dshpc-font-sm);line-height:var(--dshpc-line-sm);
361
349
  font-weight:400;white-space:nowrap;cursor:pointer;
362
- transition:color var(--tdt-dur-fast) var(--tdt-ease),background-color var(--tdt-dur-fast) var(--tdt-ease),box-shadow var(--tdt-dur-fast) var(--tdt-ease);}
363
- .dsh-tdt-seg--md .dsh-tdt-seg__item{height:calc(var(--tdt-control-h-md) - 6px);}
364
- .dsh-tdt-seg--lg .dsh-tdt-seg__item{height:calc(var(--tdt-control-h-lg) - 6px);}
365
- .dsh-tdt-seg__item:hover:not([aria-pressed='true']):not(:disabled){color:var(--tdt-fg);}
366
- .dsh-tdt-seg__item[aria-pressed='true']{background:var(--seg-thumb);box-shadow:var(--tdt-shadow-raised);color:var(--tdt-fg);font-weight:600;}
367
- .dsh-tdt-seg__item:focus-visible{outline:2px solid var(--tdt-focus);outline-offset:-2px;}
368
- .dsh-tdt-seg__item:disabled{cursor:default;opacity:.4;}
350
+ transition:color var(--dshpc-dur-fast) var(--dshpc-ease),background-color var(--dshpc-dur-fast) var(--dshpc-ease),box-shadow var(--dshpc-dur-fast) var(--dshpc-ease);}
351
+ .dshpc-seg--md .dshpc-seg__item{height:calc(var(--dshpc-control-h-md) - 6px);}
352
+ .dshpc-seg--lg .dshpc-seg__item{height:calc(var(--dshpc-control-h-lg) - 6px);}
353
+ .dshpc-seg__item:hover:not([aria-pressed='true']):not(:disabled){color:var(--dshpc-fg);}
354
+ .dshpc-seg__item[aria-pressed='true']{background:var(--seg-thumb);box-shadow:var(--dshpc-shadow-raised);color:var(--dshpc-fg);font-weight:600;}
355
+ .dshpc-seg__item:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:-2px;}
356
+ .dshpc-seg__item:disabled{cursor:default;opacity:.4;}
369
357
 
370
358
  /* \u6BB5\u5185\u89D2\u6807\uFF08\u5982\u300C\u5F02\u5E38\u300D\u7684\u6570\u91CF\uFF09\uFF1A\u8BED\u4E49\u8272\u5B9E\u9762 + \u53CD\u767D\u5B57\uFF0C0 \u7531\u7EC4\u4EF6\u4FA7\u4E0D\u6E32\u67D3\u3002
371
359
  \u26A0\uFE0F **\u5FC5\u987B\u662F\u6B63\u5706**\uFF08\u7528\u6237 2026-10-03\uFF1A\u300C\u591A\u4F4D\u6570\u7ED9\u5B83\u6491\u5F00\u4E86\uFF0C\u90A3\u4E0D\u662F\u5706\u7684\u5C31\u6CA1\u529E\u6CD5\u4E86\u300D\uFF09\uFF1A
372
360
  \u56FA\u5B9A 16\xD716 + border-radius:50% + padding:0 + overflow:hidden \u21D2 \u4E00\u4F4D\u6570 / \u4E24\u4F4D\u6570\u90FD\u662F\u540C\u4E00\u4E2A\u5706\uFF0C
373
361
  \u6570\u5B57\u7F29\u5230 10px \u585E\u5F97\u4E0B\uFF1B\u4E0D\u518D\u7528 min-width + \u5DE6\u53F3 padding\uFF08\u90A3\u4F1A\u8BA9\u5BBD\u5EA6\u968F\u4F4D\u6570\u589E\u957F\u53D8\u692D\u5706\uFF09\u3002 */
374
- .dsh-tdt-seg__badge{display:inline-flex;align-items:center;justify-content:center;flex:none;
362
+ .dshpc-seg__badge{display:inline-flex;align-items:center;justify-content:center;flex:none;
375
363
  width:16px;height:16px;padding:0;overflow:hidden;
376
- border-radius:50%;background:var(--tdt-danger);color:var(--tdt-on-signal);
364
+ border-radius:50%;background:var(--dshpc-danger);color:var(--dshpc-on-signal);
377
365
  font-size:10px;line-height:16px;font-weight:500;font-variant-numeric:tabular-nums;}
378
366
 
379
367
  /* \u6BB5\u5185\u4E2D\u6027\u8BA1\u6570\uFF08\u5982\u7B5B\u9009\u6761\u300C\u5168\u90E8 11\u300D\uFF09\uFF1A**\u7EAF\u6587\u5B57\uFF0C\u65E0\u5E95\u3001\u65E0\u8FB9\u3001\u65E0\u5706\u89D2**\uFF08\u5BF9\u9F50 task-ledger 2026-10-18
380
368
  \u62CD\u677F\u7684 .dtl-seg__num\uFF1A\u5706\u5708\u53D6\u4E86\u3001\u5B57\u518D\u5C0F\u70B9\uFF09\uFF1B0 \u7531\u7EC4\u4EF6\u4FA7\u4E0D\u6E32\u67D3\u3002danger \u89D2\u6807\u4ECD\u8D70 __badge\u3002 */
381
- .dsh-tdt-seg__count{display:inline;flex:none;margin-left:3px;padding:0;border:0;border-radius:0;
382
- background:none;color:var(--tdt-fg-3);font-size:10px;line-height:1;font-weight:400;font-variant-numeric:tabular-nums;}
369
+ .dshpc-seg__count{display:inline;flex:none;margin-left:3px;padding:0;border:0;border-radius:0;
370
+ background:none;color:var(--dshpc-fg-3);font-size:10px;line-height:1;font-weight:400;font-variant-numeric:tabular-nums;}
383
371
 
384
372
  /* block\uFF1A\u6491\u6EE1\u7236\u5BBD\uFF08\u8868\u5355\u884C\u7528\uFF09\uFF0C\u5404\u6BB5\u7B49\u5206 */
385
- .dsh-tdt-seg--block{display:flex;width:100%;}
386
- .dsh-tdt-seg--block .dsh-tdt-seg__item{flex:1 1 auto;justify-content:center;}
373
+ .dshpc-seg--block{display:flex;width:100%;}
374
+ .dshpc-seg--block .dshpc-seg__item{flex:1 1 auto;justify-content:center;}
387
375
 
388
376
  /* weekday\uFF1A\u661F\u671F\u591A\u9009\u65B9\u5757\uFF08\u4EFB\u52A1\u65B0\u589E / \u7F16\u8F91\u9875\uFF09\u3002\u57FA\u7840\u63D2\u4EF6\u7684\u7279\u6B8A\u5316\u5B9A\u5236\uFF08\u7528\u6237 2026-10-01 \u660E\u786E\u8981\u6C42\uFF1A
389
377
  \u539F WeekdayPicker \u5373\u300C\u84DD\u5E95 + \u8FD1\u4F3C\u65B9\u5F62\u300D\uFF0C\u7EDF\u4E00\u5230 Segmented \u540E\u7531\u8FD9\u4E00\u4FEE\u9970\u7C7B\u8865\u56DE\u4E24\u5904\u5DEE\u5F02\uFF09\uFF1A
390
378
  - \u6BCF\u683C\u505A\u6210\u6B63\u65B9\u5F62\uFF08\u5BBD = \u6BB5\u9AD8\uFF09\uFF1B
391
- - \u9009\u4E2D\u6001\u7528\u54C1\u724C\u84DD\uFF08--tdt-business\uFF09\u3001\u53CD\u767D\u5B57\uFF0C\u8F68\u9053\u7528 hover \u7070\uFF08\u4E0E\u539F\u81EA\u7ED8\u8F68\u9053\u4E00\u81F4\uFF09\u3002
392
- \u76AE\u80A4\u96C6\u4E2D\u5728\u6B64\u3001\u4E0D\u5185\u8054\uFF1B\u8C03\u7528\u70B9\u53EA\u6302 .dsh-tdt-seg--weekday \u4E00\u4E2A\u4FEE\u9970\u7C7B\uFF0C\u7B26\u5408\u300C\u76AE\u80A4\u53EA\u5728 controls-css\u300D\u7684\u89C4\u77E9\u3002 */
379
+ - \u9009\u4E2D\u6001\u7528\u54C1\u724C\u84DD\uFF08--dshpc-business\uFF09\u3001\u53CD\u767D\u5B57\uFF0C\u8F68\u9053\u7528 hover \u7070\uFF08\u4E0E\u539F\u81EA\u7ED8\u8F68\u9053\u4E00\u81F4\uFF09\u3002
380
+ \u76AE\u80A4\u96C6\u4E2D\u5728\u6B64\u3001\u4E0D\u5185\u8054\uFF1B\u8C03\u7528\u70B9\u53EA\u6302 .dshpc-seg--weekday \u4E00\u4E2A\u4FEE\u9970\u7C7B\uFF0C\u7B26\u5408\u300C\u76AE\u80A4\u53EA\u5728 controls-css\u300D\u7684\u89C4\u77E9\u3002 */
393
381
  /* weekday\uFF1A\u661F\u671F\u591A\u9009\u65B9\u5757\uFF08\u4EFB\u52A1\u65B0\u589E / \u7F16\u8F91\u9875\uFF09\u3002\u57FA\u7840\u63D2\u4EF6\u7684\u7279\u6B8A\u5316\u5B9A\u5236\uFF08\u7528\u6237 2026-10-01 \u660E\u786E\u8981\u6C42\uFF1A
394
382
  \u539F WeekdayPicker \u5373\u300C\u84DD\u5E95 + \u8FD1\u4F3C\u65B9\u5F62\u300D\uFF0C\u7EDF\u4E00\u5230 Segmented \u540E\u7531\u8FD9\u4E00\u4FEE\u9970\u7C7B\u8865\u56DE\u4E24\u5904\u5DEE\u5F02\uFF09\uFF1A
395
383
  - \u6BCF\u683C\u505A\u6210\u6B63\u65B9\u5F62\uFF08\u5BBD = \u6BB5\u9AD8\uFF09\uFF1B
396
- - \u9009\u4E2D\u6001\u7528\u54C1\u724C\u84DD\uFF08--tdt-business\uFF09\u3001\u53CD\u767D\u5B57\uFF0C\u8F68\u9053\u7528 hover \u7070\uFF08\u4E0E\u539F\u81EA\u7ED8\u8F68\u9053\u4E00\u81F4\uFF09\u3002
384
+ - \u9009\u4E2D\u6001\u7528\u54C1\u724C\u84DD\uFF08--dshpc-business\uFF09\u3001\u53CD\u767D\u5B57\uFF0C\u8F68\u9053\u7528 hover \u7070\uFF08\u4E0E\u539F\u81EA\u7ED8\u8F68\u9053\u4E00\u81F4\uFF09\u3002
397
385
  2026-10-18 \u7528\u6237\u91CD\u7533\uFF08\u5BF9\u9F50\u771F\u5B9E\u622A\u56FE\uFF09\uFF1A**\u65E0\u5916\u63CF\u8FB9**\uFF08\u4E0D\u7BA1\u6302\u54EA\u4E2A variant\uFF0C\u8FD9\u91CC\u4E00\u5F8B\u64A4\u8FB9\uFF09\uFF0C
398
386
  \u4E14\u65B9\u5757\u4E4B\u95F4\u8981\u6709\u95F4\u8DDD\uFF08gap 6px\uFF0C\u4E0D\u518D 2px \u6324\u6210\u4E00\u5768\uFF09\u3002 */
399
- .dsh-tdt-seg--weekday{--seg-track:var(--tdt-hover);gap:6px;border:0;padding:3px;}
400
- .dsh-tdt-seg--weekday .dsh-tdt-seg__item{width:calc(var(--tdt-control-h-lg) - 6px);padding:0;justify-content:center;}
401
- .dsh-tdt-seg--weekday .dsh-tdt-seg__item[aria-pressed='true']{background:var(--tdt-business);color:var(--tdt-fg-inverse);box-shadow:var(--tdt-shadow-raised);}
387
+ .dshpc-seg--weekday{--seg-track:var(--dshpc-hover);gap:6px;border:0;padding:3px;}
388
+ .dshpc-seg--weekday .dshpc-seg__item{width:calc(var(--dshpc-control-h-lg) - 6px);padding:0;justify-content:center;}
389
+ .dshpc-seg--weekday .dshpc-seg__item[aria-pressed='true']{background:var(--dshpc-business);color:var(--dshpc-fg-inverse);box-shadow:var(--dshpc-shadow-raised);}
402
390
 
403
- @media (prefers-reduced-motion: reduce){.dsh-tdt-seg__item{transition:none;}}
391
+ @media (prefers-reduced-motion: reduce){.dshpc-seg__item{transition:none;}}
404
392
  `;
405
393
  var BUTTON_CSS = `
406
394
  /* \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
407
- \u4E0E Segmented \u540C\u4E00\u6761\u9AD8\u5EA6\u7EAA\u5F8B\uFF1A--tdt-control-h-sm(24) / -md(28) / -lg(32)\uFF0C
395
+ \u4E0E Segmented \u540C\u4E00\u6761\u9AD8\u5EA6\u7EAA\u5F8B\uFF1A--dshpc-control-h-sm(24) / -md(28) / -lg(32)\uFF0C
408
396
  \u6709\u8FB9\u6846\u7684 variant \u7528 1px \u771F\u8FB9\u6846 + \u5185\u90E8 padding \u8865\u56DE\uFF0C**\u6709\u8FB9 / \u65E0\u8FB9\u540C\u9AD8**\u3002
409
397
  variant \u53EA\u6362\u989C\u8272\uFF0C\u7ED3\u6784 / \u5C3A\u5BF8 / \u4EA4\u4E92\u53EA\u6B64\u4E00\u4EFD\u3002 */
410
- .dsh-tdt-btn{appearance:none;display:inline-flex;align-items:center;justify-content:center;gap:var(--tdt-space-1);
411
- box-sizing:border-box;border:1px solid transparent;border-radius:var(--tdt-radius-md);
412
- background:transparent;color:var(--tdt-fg);font-family:inherit;font-weight:500;white-space:nowrap;cursor:pointer;
413
- transition:background-color var(--tdt-dur-fast) var(--tdt-ease),border-color var(--tdt-dur-fast) var(--tdt-ease),color var(--tdt-dur-fast) var(--tdt-ease),opacity var(--tdt-dur-fast) var(--tdt-ease);}
414
- .dsh-tdt-btn--sm{height:var(--tdt-control-h-sm);padding:0 10px;font-size:var(--tdt-font-sm);line-height:var(--tdt-line-sm);}
415
- .dsh-tdt-btn--md{height:var(--tdt-control-h-md);padding:0 12px;font-size:var(--tdt-font-md);line-height:var(--tdt-line-md);}
416
- .dsh-tdt-btn--lg{height:var(--tdt-control-h-lg);padding:0 14px;font-size:var(--tdt-font-md);line-height:var(--tdt-line-md);}
417
- .dsh-tdt-btn__icon{display:inline-flex;align-items:center;flex:none;}
418
-
419
- .dsh-tdt-btn--primary{background:var(--tdt-accent);color:var(--tdt-fg-inverse);}
420
- .dsh-tdt-btn--primary:hover:not(:disabled){opacity:.9;}
421
- .dsh-tdt-btn--outline{background:var(--tdt-surface-1);border-color:var(--tdt-border-strong);color:var(--tdt-fg);}
422
- .dsh-tdt-btn--outline:hover:not(:disabled){background:var(--tdt-hover);}
423
- .dsh-tdt-btn--ghost{color:var(--tdt-fg-2);}
424
- .dsh-tdt-btn--ghost:hover:not(:disabled){background:var(--tdt-hover);color:var(--tdt-fg);}
425
- .dsh-tdt-btn--danger{background:var(--tdt-danger);color:var(--tdt-on-signal);}
426
- .dsh-tdt-btn--danger:hover:not(:disabled){opacity:.9;}
398
+ .dshpc-btn{appearance:none;display:inline-flex;align-items:center;justify-content:center;gap:var(--dshpc-space-1);
399
+ box-sizing:border-box;border:1px solid transparent;border-radius:var(--dshpc-radius-md);
400
+ background:transparent;color:var(--dshpc-fg);font-family:inherit;font-weight:500;white-space:nowrap;cursor:pointer;
401
+ 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);}
402
+ .dshpc-btn--sm{height:var(--dshpc-control-h-sm);padding:0 10px;font-size:var(--dshpc-font-sm);line-height:var(--dshpc-line-sm);}
403
+ .dshpc-btn--md{height:var(--dshpc-control-h-md);padding:0 12px;font-size:var(--dshpc-font-md);line-height:var(--dshpc-line-md);}
404
+ .dshpc-btn--lg{height:var(--dshpc-control-h-lg);padding:0 14px;font-size:var(--dshpc-font-md);line-height:var(--dshpc-line-md);}
405
+ .dshpc-btn__icon{display:inline-flex;align-items:center;flex:none;}
406
+
407
+ .dshpc-btn--primary{background:var(--dshpc-accent);color:var(--dshpc-fg-inverse);}
408
+ .dshpc-btn--primary:hover:not(:disabled){opacity:.9;}
409
+ .dshpc-btn--outline{background:var(--dshpc-surface-1);border-color:var(--dshpc-border-strong);color:var(--dshpc-fg);}
410
+ .dshpc-btn--outline:hover:not(:disabled){background:var(--dshpc-hover);}
411
+ .dshpc-btn--ghost{color:var(--dshpc-fg-2);}
412
+ .dshpc-btn--ghost:hover:not(:disabled){background:var(--dshpc-hover);color:var(--dshpc-fg);}
413
+ .dshpc-btn--danger{background:var(--dshpc-danger);color:var(--dshpc-on-signal);}
414
+ .dshpc-btn--danger:hover:not(:disabled){opacity:.9;}
427
415
  /* danger-ink\uFF1A\u7EA2\u5B57\u63CF\u8FB9\uFF08\u7834\u574F\u6027\u6B21\u8981\u64CD\u4F5C\uFF0C\u5982\u5361\u7247\u4E0A\u7684\u300C\u5220\u9664\u300D\uFF09\uFF0C\u6302\u4E0E outline \u7EC4\u5408\u7684\u4FEE\u9970\u7C7B */
428
- .dsh-tdt-btn--danger-ink{border-color:var(--tdt-danger);color:var(--tdt-danger);}
429
- .dsh-tdt-btn--danger-ink:hover:not(:disabled){background:color-mix(in srgb,var(--tdt-danger) 10%,transparent);color:var(--tdt-danger);}
416
+ .dshpc-btn--danger-ink{border-color:var(--dshpc-danger);color:var(--dshpc-danger);}
417
+ .dshpc-btn--danger-ink:hover:not(:disabled){background:color-mix(in srgb,var(--dshpc-danger) 10%,transparent);color:var(--dshpc-danger);}
430
418
  /* 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 */
431
- .dsh-tdt-btn--link{height:auto;padding:0;border:0;background:none;color:var(--tdt-link);font-weight:400;text-align:left;}
432
- .dsh-tdt-btn--link:hover:not(:disabled){background:none;color:var(--tdt-link);text-decoration:underline;}
433
- .dsh-tdt-btn:focus-visible{outline:2px solid var(--tdt-focus);outline-offset:2px;}
434
- .dsh-tdt-btn:disabled{cursor:default;opacity:.5;}
419
+ .dshpc-btn--link{height:auto;padding:0;border:0;background:none;color:var(--dshpc-link);font-weight:400;text-align:left;}
420
+ .dshpc-btn--link:hover:not(:disabled){background:none;color:var(--dshpc-link);text-decoration:underline;}
421
+ .dshpc-btn:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:2px;}
422
+ .dshpc-btn:disabled{cursor:default;opacity:.5;}
435
423
 
436
- .dsh-tdt-iconbtn{appearance:none;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;
437
- border:1px solid transparent;border-radius:var(--tdt-radius-sm);background:transparent;color:var(--tdt-fg-2);
424
+ .dshpc-iconbtn{appearance:none;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;
425
+ border:1px solid transparent;border-radius:var(--dshpc-radius-sm);background:transparent;color:var(--dshpc-fg-2);
438
426
  font-family:inherit;cursor:pointer;flex:none;
439
- transition:background-color var(--tdt-dur-fast) var(--tdt-ease),border-color var(--tdt-dur-fast) var(--tdt-ease),color var(--tdt-dur-fast) var(--tdt-ease),opacity var(--tdt-dur-fast) var(--tdt-ease);}
440
- .dsh-tdt-iconbtn--sm{width:var(--tdt-control-h-sm);height:var(--tdt-control-h-sm);font-size:var(--tdt-font-sm);}
441
- .dsh-tdt-iconbtn--md{width:var(--tdt-control-h-md);height:var(--tdt-control-h-md);font-size:var(--tdt-font-md);}
442
- .dsh-tdt-iconbtn--lg{width:var(--tdt-control-h-lg);height:var(--tdt-control-h-lg);font-size:var(--tdt-font-md);}
443
- .dsh-tdt-iconbtn--plain{color:var(--tdt-fg-2);}
444
- .dsh-tdt-iconbtn--outline{background:var(--tdt-surface-1);border-color:var(--tdt-border);color:var(--tdt-fg-2);}
445
- .dsh-tdt-iconbtn--danger{color:var(--tdt-danger);}
446
- .dsh-tdt-iconbtn:hover:not(:disabled){background:var(--tdt-hover);color:var(--tdt-fg);}
447
- .dsh-tdt-iconbtn--danger:hover:not(:disabled){background:var(--tdt-hover);color:var(--tdt-danger);}
448
- .dsh-tdt-iconbtn:focus-visible{outline:2px solid var(--tdt-focus);outline-offset:2px;}
449
- .dsh-tdt-iconbtn:disabled{cursor:default;opacity:.4;}
427
+ 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);}
428
+ .dshpc-iconbtn--sm{width:var(--dshpc-control-h-sm);height:var(--dshpc-control-h-sm);font-size:var(--dshpc-font-sm);}
429
+ .dshpc-iconbtn--md{width:var(--dshpc-control-h-md);height:var(--dshpc-control-h-md);font-size:var(--dshpc-font-md);}
430
+ .dshpc-iconbtn--lg{width:var(--dshpc-control-h-lg);height:var(--dshpc-control-h-lg);font-size:var(--dshpc-font-md);}
431
+ .dshpc-iconbtn--plain{color:var(--dshpc-fg-2);}
432
+ .dshpc-iconbtn--outline{background:var(--dshpc-surface-1);border-color:var(--dshpc-border);color:var(--dshpc-fg-2);}
433
+ .dshpc-iconbtn--danger{color:var(--dshpc-danger);}
434
+ .dshpc-iconbtn:hover:not(:disabled){background:var(--dshpc-hover);color:var(--dshpc-fg);}
435
+ .dshpc-iconbtn--danger:hover:not(:disabled){background:var(--dshpc-hover);color:var(--dshpc-danger);}
436
+ .dshpc-iconbtn:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:2px;}
437
+ .dshpc-iconbtn:disabled{cursor:default;opacity:.4;}
450
438
 
451
439
  /* \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
452
440
  \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
@@ -454,425 +442,422 @@ var BUTTON_CSS = `
454
442
  \u4E24\u4E2A\u5F62\u6001\u4FEE\u9970\u7C7B\uFF1A
455
443
  --block \u6491\u6EE1\u7236\u5BBD\uFF08\u6E05\u5355\u91CC\u4E00\u9879\u4E00\u884C\uFF09
456
444
  --inline \u5185\u5BB9\u5BBD\uFF08\u8DDF\u5728\u6587\u5B57\u540E\u5934\uFF0C\u5982\u9644\u4EF6\u884C\uFF09
457
- \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 .dsh-tdt-info-out\uFF09\uFF0C
445
+ \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
458
446
  \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 */
459
- .dsh-tdt-filechip{appearance:none;-webkit-appearance:none;border:0;border-radius:var(--tdt-radius-xs);
460
- background:transparent;color:var(--tdt-fg);font:inherit;text-align:left;cursor:pointer;min-width:0;
461
- transition:background-color var(--tdt-dur) var(--tdt-ease);}
462
- .dsh-tdt-filechip:hover:not(:disabled){background:var(--tdt-chip-bg);}
463
- .dsh-tdt-filechip:focus-visible{outline:2px solid var(--tdt-focus);outline-offset:1px;}
464
- .dsh-tdt-filechip:disabled{cursor:default;background:transparent;color:var(--tdt-fg-3);}
465
- .dsh-tdt-filechip--block{display:flex;align-items:center;gap:6px;width:100%;box-sizing:border-box;
466
- padding:4px 6px;font-size:var(--tdt-font-xs);}
467
- .dsh-tdt-filechip--inline{display:inline-flex;align-items:center;gap:4px;padding:2px 6px;font-size:var(--tdt-font-sm);}
468
-
469
- @media (prefers-reduced-motion: reduce){.dsh-tdt-btn,.dsh-tdt-iconbtn,.dsh-tdt-filechip{transition:none;}}
447
+ .dshpc-filechip{appearance:none;-webkit-appearance:none;border:0;border-radius:var(--dshpc-radius-xs);
448
+ background:transparent;color:var(--dshpc-fg);font:inherit;text-align:left;cursor:pointer;min-width:0;
449
+ transition:background-color var(--dshpc-dur) var(--dshpc-ease);}
450
+ .dshpc-filechip:hover:not(:disabled){background:var(--dshpc-chip-bg);}
451
+ .dshpc-filechip:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:1px;}
452
+ .dshpc-filechip:disabled{cursor:default;background:transparent;color:var(--dshpc-fg-3);}
453
+ .dshpc-filechip--block{display:flex;align-items:center;gap:6px;width:100%;box-sizing:border-box;
454
+ padding:4px 6px;font-size:var(--dshpc-font-xs);}
455
+ .dshpc-filechip--inline{display:inline-flex;align-items:center;gap:4px;padding:2px 6px;font-size:var(--dshpc-font-sm);}
456
+
457
+ @media (prefers-reduced-motion: reduce){.dshpc-btn,.dshpc-iconbtn,.dshpc-filechip{transition:none;}}
470
458
  `;
471
459
  var FIELD_CSS = `
472
460
  /* \u2500\u2500 \u8F93\u5165\u7C7B P3 \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\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
473
- .dsh-tdt-input{box-sizing:border-box;border:1px solid var(--tdt-border);border-radius:var(--tdt-radius-md);
474
- background:var(--tdt-surface-1);color:var(--tdt-fg);font-family:inherit;outline:none;
475
- transition:border-color var(--tdt-dur-fast) var(--tdt-ease),box-shadow var(--tdt-dur-fast) var(--tdt-ease);}
476
- .dsh-tdt-input--sm{height:var(--tdt-control-h-sm);padding:0 8px;font-size:var(--tdt-font-sm);line-height:var(--tdt-line-sm);}
477
- .dsh-tdt-input--md{height:var(--tdt-control-h-md);padding:0 10px;font-size:var(--tdt-font-md);line-height:var(--tdt-line-md);}
478
- .dsh-tdt-input--lg{height:var(--tdt-control-h-lg);padding:0 12px;font-size:var(--tdt-font-md);line-height:var(--tdt-line-md);}
479
- .dsh-tdt-input::placeholder{color:var(--tdt-fg-dim);}
480
- .dsh-tdt-input:focus{border-color:var(--tdt-focus);box-shadow:0 0 0 1px var(--tdt-focus);}
481
- .dsh-tdt-input--error{border-color:var(--tdt-danger);}
482
- .dsh-tdt-input:disabled{cursor:default;opacity:.5;}
483
-
484
- .dsh-tdt-pfx{display:inline-flex;align-items:center;box-sizing:border-box;overflow:hidden;
485
- border:1px solid var(--tdt-border);border-radius:var(--tdt-radius-md);background:var(--tdt-surface-1);color:var(--tdt-fg);}
486
- .dsh-tdt-pfx--sm{height:var(--tdt-control-h-sm);}
487
- .dsh-tdt-pfx--md{height:var(--tdt-control-h-md);}
488
- .dsh-tdt-pfx--lg{height:var(--tdt-control-h-lg);}
461
+ .dshpc-input{box-sizing:border-box;border:1px solid var(--dshpc-border);border-radius:var(--dshpc-radius-md);
462
+ background:var(--dshpc-surface-1);color:var(--dshpc-fg);font-family:inherit;outline:none;
463
+ transition:border-color var(--dshpc-dur-fast) var(--dshpc-ease),box-shadow var(--dshpc-dur-fast) var(--dshpc-ease);}
464
+ .dshpc-input--sm{height:var(--dshpc-control-h-sm);padding:0 8px;font-size:var(--dshpc-font-sm);line-height:var(--dshpc-line-sm);}
465
+ .dshpc-input--md{height:var(--dshpc-control-h-md);padding:0 10px;font-size:var(--dshpc-font-md);line-height:var(--dshpc-line-md);}
466
+ .dshpc-input--lg{height:var(--dshpc-control-h-lg);padding:0 12px;font-size:var(--dshpc-font-md);line-height:var(--dshpc-line-md);}
467
+ .dshpc-input::placeholder{color:var(--dshpc-fg-dim);}
468
+ .dshpc-input:focus{border-color:var(--dshpc-focus);box-shadow:0 0 0 1px var(--dshpc-focus);}
469
+ .dshpc-input--error{border-color:var(--dshpc-danger);}
470
+ .dshpc-input:disabled{cursor:default;opacity:.5;}
471
+
472
+ .dshpc-pfx{display:inline-flex;align-items:center;box-sizing:border-box;overflow:hidden;
473
+ border:1px solid var(--dshpc-border);border-radius:var(--dshpc-radius-md);background:var(--dshpc-surface-1);color:var(--dshpc-fg);}
474
+ .dshpc-pfx--sm{height:var(--dshpc-control-h-sm);}
475
+ .dshpc-pfx--md{height:var(--dshpc-control-h-md);}
476
+ .dshpc-pfx--lg{height:var(--dshpc-control-h-lg);}
489
477
  /* md / lg \u6863\u5B57\u53F7\u8DDF\u6863\u8D70\uFF08\u4E0E\u540C\u6863\u4E0B\u62C9\u540C\u5B57\u53F7\uFF09\uFF1A\u6B64\u524D\u5199\u6B7B sm(12px)\uFF0C\u540C\u6392\u4E0B\u62C9\u662F 13px \u21D2 \u663E\u5F97\u300Cinput \u5B57\u5C0F\u300D\u3002 */
490
- .dsh-tdt-pfx--md .dsh-tdt-pfx__label,.dsh-tdt-pfx--lg .dsh-tdt-pfx__label{font-size:var(--tdt-font-md);line-height:var(--tdt-line-md);}
491
- .dsh-tdt-pfx--md .dsh-tdt-pfx__input,.dsh-tdt-pfx--lg .dsh-tdt-pfx__input{font-size:var(--tdt-font-md);line-height:var(--tdt-line-md);}
492
- .dsh-tdt-pfx--error{border-color:var(--tdt-danger);}
493
- .dsh-tdt-pfx:focus-within{border-color:var(--tdt-focus);box-shadow:0 0 0 1px var(--tdt-focus);}
494
- .dsh-tdt-pfx__label{padding:0 8px;color:var(--tdt-fg-2);font-size:var(--tdt-font-sm);line-height:var(--tdt-line-sm);white-space:nowrap;border-right:1px solid var(--tdt-border);}
495
- .dsh-tdt-pfx__input{flex:1 1 auto;min-width:0;height:100%;padding:0 8px;border:0;background:transparent;color:var(--tdt-fg);
496
- font-family:inherit;font-size:var(--tdt-font-sm);line-height:var(--tdt-line-sm);outline:none;}
497
- .dsh-tdt-pfx__input::placeholder{color:var(--tdt-fg-dim);}
498
-
499
- .dsh-tdt-num{display:inline-flex;align-items:center;justify-content:space-between;box-sizing:border-box;overflow:hidden;
500
- border:1px solid var(--tdt-border);border-radius:var(--tdt-radius-md);background:var(--tdt-surface-1);color:var(--tdt-fg);}
478
+ .dshpc-pfx--md .dshpc-pfx__label,.dshpc-pfx--lg .dshpc-pfx__label{font-size:var(--dshpc-font-md);line-height:var(--dshpc-line-md);}
479
+ .dshpc-pfx--md .dshpc-pfx__input,.dshpc-pfx--lg .dshpc-pfx__input{font-size:var(--dshpc-font-md);line-height:var(--dshpc-line-md);}
480
+ .dshpc-pfx--error{border-color:var(--dshpc-danger);}
481
+ .dshpc-pfx:focus-within{border-color:var(--dshpc-focus);box-shadow:0 0 0 1px var(--dshpc-focus);}
482
+ .dshpc-pfx__label{padding:0 8px;color:var(--dshpc-fg-2);font-size:var(--dshpc-font-sm);line-height:var(--dshpc-line-sm);white-space:nowrap;border-right:1px solid var(--dshpc-border);}
483
+ .dshpc-pfx__input{flex:1 1 auto;min-width:0;height:100%;padding:0 8px;border:0;background:transparent;color:var(--dshpc-fg);
484
+ font-family:inherit;font-size:var(--dshpc-font-sm);line-height:var(--dshpc-line-sm);outline:none;}
485
+ .dshpc-pfx__input::placeholder{color:var(--dshpc-fg-dim);}
486
+
487
+ .dshpc-num{display:inline-flex;align-items:center;justify-content:space-between;box-sizing:border-box;overflow:hidden;
488
+ border:1px solid var(--dshpc-border);border-radius:var(--dshpc-radius-md);background:var(--dshpc-surface-1);color:var(--dshpc-fg);}
501
489
  /* \u4E2D\u6BB5\uFF1A\u6570\u5B57 + \u540E\u7F00\u6210\u7EC4\u5C45\u4E2D\uFF1B\u5BB9\u5668\u88AB\u6D88\u8D39\u7AEF\u62C9\u5BBD\u65F6\u5403\u6389\u5168\u90E8\u4F59\u91CF\uFF0C\u4E24\u7AEF \u2212 / + \u56E0\u6B64\u9489\u6B7B\u5728\u5DE6\u53F3\u8FB9\u7F18\u3002 */
502
- .dsh-tdt-num__mid{display:flex;align-items:center;justify-content:center;flex:1 1 auto;min-width:0;}
503
- .dsh-tdt-num--sm{height:var(--tdt-control-h-sm);}
504
- .dsh-tdt-num--md{height:var(--tdt-control-h-md);}
505
- .dsh-tdt-num--lg{height:var(--tdt-control-h-lg);}
506
- .dsh-tdt-num--md .dsh-tdt-num__input,.dsh-tdt-num--lg .dsh-tdt-num__input{font-size:var(--tdt-font-md);line-height:var(--tdt-line-md);}
507
- .dsh-tdt-num--md .dsh-tdt-num__suffix,.dsh-tdt-num--lg .dsh-tdt-num__suffix{font-size:var(--tdt-font-md);}
508
- .dsh-tdt-num--disabled{opacity:.5;}
509
- .dsh-tdt-num__input{width:36px;height:100%;padding:0 2px;border:0;background:transparent;color:var(--tdt-fg);
510
- font-family:inherit;font-size:var(--tdt-font-sm);line-height:var(--tdt-line-sm);text-align:center;outline:none;}
511
- .dsh-tdt-num__suffix{padding:0 6px;color:var(--tdt-fg-2);font-size:var(--tdt-font-sm);white-space:nowrap;}
512
- .dsh-tdt-num .dsh-tdt-iconbtn{border-radius:0;color:var(--tdt-fg-2);flex:none;}
490
+ .dshpc-num__mid{display:flex;align-items:center;justify-content:center;flex:1 1 auto;min-width:0;}
491
+ .dshpc-num--sm{height:var(--dshpc-control-h-sm);}
492
+ .dshpc-num--md{height:var(--dshpc-control-h-md);}
493
+ .dshpc-num--lg{height:var(--dshpc-control-h-lg);}
494
+ .dshpc-num--md .dshpc-num__input,.dshpc-num--lg .dshpc-num__input{font-size:var(--dshpc-font-md);line-height:var(--dshpc-line-md);}
495
+ .dshpc-num--md .dshpc-num__suffix,.dshpc-num--lg .dshpc-num__suffix{font-size:var(--dshpc-font-md);}
496
+ .dshpc-num--disabled{opacity:.5;}
497
+ .dshpc-num__input{width:36px;height:100%;padding:0 2px;border:0;background:transparent;color:var(--dshpc-fg);
498
+ font-family:inherit;font-size:var(--dshpc-font-sm);line-height:var(--dshpc-line-sm);text-align:center;outline:none;}
499
+ .dshpc-num__suffix{padding:0 6px;color:var(--dshpc-fg-2);font-size:var(--dshpc-font-sm);white-space:nowrap;}
500
+ .dshpc-num .dshpc-iconbtn{border-radius:0;color:var(--dshpc-fg-2);flex:none;}
513
501
 
514
502
  /* \u5B98\u65B9 Switch \u5305\u88C5\u7EDF\u4E00\uFF1A\u9009\u4E2D = success \u7EFF\u3002
515
503
  \uFF08\u5408\u5E76\u539F\u5148 task-editor-css / task-list \u4E24\u5904\u5C31\u5730\u8986\u76D6\uFF1B\u9009\u62E9\u5668\u5E26\u5305\u88C5\u7C7B + role\uFF0C\u7279\u5F02\u6027\u9AD8\u4E8E\u5B98\u65B9\u3002\uFF09 */
516
- .dsh-tdt-switch button[role='switch'][aria-checked='true']{background:var(--tdt-success);}
504
+ .dshpc-switch button[role='switch'][aria-checked='true']{background:var(--dshpc-success);}
517
505
 
518
506
  /* \u591A\u884C\u6587\u672C\u8F93\u5165\uFF08\u63D0\u793A\u8BCD\u7B49\uFF0CP3\uFF09\uFF1A\u5361\u5185\u65E0\u8FB9\u6846\uFF08\u89C6\u89C9\u91CD\u5FC3\u5728\u6574\u5F20\u5361\u4E0A\uFF09\uFF0C\u5360\u4F4D\u8272\u8D70 dimmed\uFF1B\u6821\u9A8C\u4E0D\u901A\u8FC7\u63CF\u7EA2\u76D2\u3002
519
- \uFF08\u4ECE task-editor-css \u7684 .dsh-tdt-ed-prompt \u4E0A\u63D0\u800C\u6765\uFF1B\u4E1A\u52A1\u6587\u4EF6\u4E0D\u518D\u81EA\u5199 textarea \u76AE\u80A4\u3002\uFF09 */
520
- .dsh-tdt-textarea{display:block;width:100%;box-sizing:border-box;min-height:132px;padding:2px;border:none;outline:none;background:0 0;color:var(--tdt-fg);font:inherit;font-size:var(--tdt-font-lg);line-height:1.6;resize:vertical;}
521
- .dsh-tdt-textarea::placeholder{color:var(--tdt-fg-dim);}
522
- .dsh-tdt-textarea--error{box-shadow:0 0 0 1px var(--tdt-danger);}
507
+ \uFF08\u4ECE task-editor-css \u7684 .dshpc-ed-prompt \u4E0A\u63D0\u800C\u6765\uFF1B\u4E1A\u52A1\u6587\u4EF6\u4E0D\u518D\u81EA\u5199 textarea \u76AE\u80A4\u3002\uFF09 */
508
+ .dshpc-textarea{display:block;width:100%;box-sizing:border-box;min-height:132px;padding:2px;border:none;outline:none;background:0 0;color:var(--dshpc-fg);font:inherit;font-size:var(--dshpc-font-lg);line-height:1.6;resize:vertical;}
509
+ .dshpc-textarea::placeholder{color:var(--dshpc-fg-dim);}
510
+ .dshpc-textarea--error{box-shadow:0 0 0 1px var(--dshpc-danger);}
523
511
 
524
512
  /* \u62D6\u62FD\u5206\u9694\u6761\uFF08\u7F16\u8F91\u5206\u680F / \u9884\u89C8 dock \u5171\u7528\uFF0CU20 #3\uFF09\uFF1A6px \u547D\u4E2D\u533A\uFF0Ccol-resize\uFF0C\u4E0D\u753B\u7EBF\uFF0Chover/\u6309\u4E0B\u6D6E\u51FA\u6D45\u5E26\u3002
525
- \u5177\u4F53 z-index \u7531 .dsh-tdt-ed-resizer / .dsh-tdt-sv-resizer \u5404\u81EA\u8865\u3002 */
526
- .dsh-tdt-resizer{position:absolute;top:0;bottom:0;left:0;width:6px;cursor:col-resize;background:0 0;touch-action:none;user-select:none;}
527
- .dsh-tdt-resizer:hover,.dsh-tdt-resizer:active{background:var(--tdt-hover,rgba(38,49,72,.06));}
513
+ \u5177\u4F53 z-index \u7531 .dshpc-ed-resizer / .dshpc-sv-resizer \u5404\u81EA\u8865\u3002 */
514
+ .dshpc-resizer{position:absolute;top:0;bottom:0;left:0;width:6px;cursor:col-resize;background:0 0;touch-action:none;user-select:none;}
515
+ .dshpc-resizer:hover,.dshpc-resizer:active{background:var(--dshpc-hover,rgba(38,49,72,.06));}
528
516
 
529
- @media (prefers-reduced-motion: reduce){.dsh-tdt-input,.dsh-tdt-pfx{transition:none;}}
517
+ @media (prefers-reduced-motion: reduce){.dshpc-input,.dshpc-pfx{transition:none;}}
530
518
  `;
531
519
  var DATETIME_CSS = `
532
520
  /* \u2500\u2500 \u65E5\u671F / \u65F6\u95F4 P4 \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\u2500\u2500 */
533
- .dsh-tdt-dtf-wrap{display:inline-flex;position:relative;min-width:0;}
534
- /* \u26A0\uFE0F \u8FB9\u6846\u7C97\u7EC6 / \u5706\u89D2\u5FC5\u987B\u4E0E\u4E0B\u62C9\u951A\u70B9\uFF08dsh-tdt-ed-field \u7684 fieldButtonStyle\uFF09\u5B8C\u5168\u4E00\u81F4
521
+ .dshpc-dtf-wrap{display:inline-flex;position:relative;min-width:0;}
522
+ /* \u26A0\uFE0F \u8FB9\u6846\u7C97\u7EC6 / \u5706\u89D2\u5FC5\u987B\u4E0E\u4E0B\u62C9\u951A\u70B9\uFF08dshpc-ed-field \u7684 fieldButtonStyle\uFF09\u5B8C\u5168\u4E00\u81F4
535
523
  \uFF08\u7528\u6237 2026-10-02 \u70B9\u540D\uFF1A\u540C\u6392\u7684\u65E5\u671F\u6846\u4E0E\u4E0B\u62C9\u6846\u770B\u7740\u4E0D\u662F\u4E00\u5957\uFF09\u21D2 \u8FD9\u91CC\u4E5F\u662F 0.5px + radius-md\u3002 */
536
- .dsh-tdt-dtf{display:inline-flex;align-items:center;gap:6px;box-sizing:border-box;height:var(--tdt-control-h-lg);
537
- min-width:0;max-width:100%;padding:0 8px;border:0.5px solid var(--tdt-border-heavy);border-radius:var(--tdt-radius-md);
538
- background:var(--tdt-surface-1);color:var(--tdt-fg);font:inherit;font-size:var(--tdt-font-md);line-height:var(--tdt-line-md);
539
- cursor:pointer;transition:background-color var(--tdt-dur-fast) var(--tdt-ease),border-color var(--tdt-dur-fast) var(--tdt-ease);}
524
+ .dshpc-dtf{display:inline-flex;align-items:center;gap:6px;box-sizing:border-box;height:var(--dshpc-control-h-lg);
525
+ min-width:0;max-width:100%;padding:0 8px;border:0.5px solid var(--dshpc-border-heavy);border-radius:var(--dshpc-radius-md);
526
+ background:var(--dshpc-surface-1);color:var(--dshpc-fg);font:inherit;font-size:var(--dshpc-font-md);line-height:var(--dshpc-line-md);
527
+ cursor:pointer;transition:background-color var(--dshpc-dur-fast) var(--dshpc-ease),border-color var(--dshpc-dur-fast) var(--dshpc-ease);}
540
528
  /* \u65E5\u671F / \u65F6\u95F4\u951A\u70B9\uFF1A\u4E09\u6863\u9AD8\u5EA6\uFF08\u9ED8\u8BA4 lg=32\uFF09\u3002base \u5DF2\u542B lg \u9AD8\u5EA6\u4F5C\u515C\u5E95\uFF0C\u4E0B\u9762\u4E09\u6863\u6309 size \u8986\u76D6\u3002 */
541
- .dsh-tdt-dtf--sm{height:var(--tdt-control-h-sm);padding:0 6px;font-size:var(--tdt-font-sm);line-height:var(--tdt-line-sm);}
542
- .dsh-tdt-dtf--md{height:var(--tdt-control-h-md);padding:0 8px;font-size:var(--tdt-font-md);line-height:var(--tdt-line-md);}
543
- .dsh-tdt-dtf--lg{height:var(--tdt-control-h-lg);padding:0 8px;font-size:var(--tdt-font-md);line-height:var(--tdt-line-md);}
544
- .dsh-tdt-dtf:hover:not(:disabled){background:var(--tdt-hover);}
545
- .dsh-tdt-dtf:focus-visible{outline:2px solid var(--tdt-focus);outline-offset:2px;}
546
- .dsh-tdt-dtf:disabled{cursor:not-allowed;opacity:.6;}
547
- .dsh-tdt-dtf__label{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;}
548
- .dsh-tdt-dtf__label--ph{color:var(--tdt-fg-dim);}
549
- .dsh-tdt-dtf__icon{display:inline-flex;width:16px;height:16px;align-items:center;justify-content:center;flex:none;color:var(--tdt-fg-3);}
550
-
551
- .dsh-tdt-layer{position:fixed;z-index:var(--tdt-z-menu);box-sizing:border-box;padding:8px;background:var(--tdt-surface-1);
552
- box-shadow:var(--tdt-shadow-2);border-radius:var(--tdt-radius-md);color:var(--tdt-fg);font-size:var(--tdt-font-md);}
553
-
554
- .dsh-tdt-cal__head{display:flex;align-items:center;justify-content:space-between;gap:4px;margin-bottom:4px;}
555
- .dsh-tdt-cal__title{flex:1 1 auto;text-align:center;font-size:var(--tdt-font-md);font-weight:600;color:var(--tdt-fg);}
556
- .dsh-tdt-cal__grid{display:grid;grid-template-columns:repeat(7,32px);gap:2px;}
557
- .dsh-tdt-cal__weekday{height:24px;display:flex;align-items:center;justify-content:center;font-size:var(--tdt-font-sm);color:var(--tdt-fg-3);}
558
- .dsh-tdt-cal__cell{width:32px;height:32px;padding:0;display:flex;align-items:center;justify-content:center;
559
- border:1px solid transparent;border-radius:var(--tdt-radius-md);background:transparent;color:var(--tdt-fg);
560
- font:inherit;font-size:var(--tdt-font-md);cursor:pointer;
561
- transition:background-color var(--tdt-dur-fast) var(--tdt-ease),color var(--tdt-dur-fast) var(--tdt-ease);}
562
- .dsh-tdt-cal__cell--hover{background:var(--tdt-hover);}
563
- .dsh-tdt-cal__cell--out{color:var(--tdt-fg-dim);}
564
- .dsh-tdt-cal__cell--today{border-color:var(--tdt-business);}
565
- .dsh-tdt-cal__cell[aria-pressed='true']{background:var(--tdt-accent);color:var(--tdt-fg-inverse);}
566
- .dsh-tdt-cal__foot{margin-top:6px;padding-top:6px;border-top:1px solid var(--tdt-border);}
567
-
568
- .dsh-tdt-time__cols{display:flex;gap:4px;}
569
- .dsh-tdt-time__list{width:56px;max-height:196px;overflow-y:auto;display:flex;flex-direction:column;gap:2px;}
570
- .dsh-tdt-time__opt{padding:5px 0;border:0;border-radius:var(--tdt-radius-sm);background:transparent;color:var(--tdt-fg-2);
571
- font:inherit;font-size:var(--tdt-font-md);cursor:pointer;transition:background-color var(--tdt-dur-fast) var(--tdt-ease),color var(--tdt-dur-fast) var(--tdt-ease);}
572
- .dsh-tdt-time__opt[aria-selected='true']{background:var(--tdt-hover);color:var(--tdt-fg);font-weight:600;}
573
- .dsh-tdt-time__foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:6px;padding-top:6px;border-top:1px solid var(--tdt-border);}
574
-
575
- @media (prefers-reduced-motion: reduce){.dsh-tdt-dtf,.dsh-tdt-cal__cell,.dsh-tdt-time__opt{transition:none;}}
529
+ .dshpc-dtf--sm{height:var(--dshpc-control-h-sm);padding:0 6px;font-size:var(--dshpc-font-sm);line-height:var(--dshpc-line-sm);}
530
+ .dshpc-dtf--md{height:var(--dshpc-control-h-md);padding:0 8px;font-size:var(--dshpc-font-md);line-height:var(--dshpc-line-md);}
531
+ .dshpc-dtf--lg{height:var(--dshpc-control-h-lg);padding:0 8px;font-size:var(--dshpc-font-md);line-height:var(--dshpc-line-md);}
532
+ .dshpc-dtf:hover:not(:disabled){background:var(--dshpc-hover);}
533
+ .dshpc-dtf:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:2px;}
534
+ .dshpc-dtf:disabled{cursor:not-allowed;opacity:.6;}
535
+ .dshpc-dtf__label{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;}
536
+ .dshpc-dtf__label--ph{color:var(--dshpc-fg-dim);}
537
+ .dshpc-dtf__icon{display:inline-flex;width:16px;height:16px;align-items:center;justify-content:center;flex:none;color:var(--dshpc-fg-3);}
538
+
539
+ .dshpc-layer{position:fixed;z-index:var(--dshpc-z-menu);box-sizing:border-box;padding:8px;background:var(--dshpc-surface-1);
540
+ box-shadow:var(--dshpc-shadow-2);border-radius:var(--dshpc-radius-md);color:var(--dshpc-fg);font-size:var(--dshpc-font-md);}
541
+
542
+ .dshpc-cal__head{display:flex;align-items:center;justify-content:space-between;gap:4px;margin-bottom:4px;}
543
+ .dshpc-cal__title{flex:1 1 auto;text-align:center;font-size:var(--dshpc-font-md);font-weight:600;color:var(--dshpc-fg);}
544
+ .dshpc-cal__grid{display:grid;grid-template-columns:repeat(7,32px);gap:2px;}
545
+ .dshpc-cal__weekday{height:24px;display:flex;align-items:center;justify-content:center;font-size:var(--dshpc-font-sm);color:var(--dshpc-fg-3);}
546
+ .dshpc-cal__cell{width:32px;height:32px;padding:0;display:flex;align-items:center;justify-content:center;
547
+ border:1px solid transparent;border-radius:var(--dshpc-radius-md);background:transparent;color:var(--dshpc-fg);
548
+ font:inherit;font-size:var(--dshpc-font-md);cursor:pointer;
549
+ transition:background-color var(--dshpc-dur-fast) var(--dshpc-ease),color var(--dshpc-dur-fast) var(--dshpc-ease);}
550
+ .dshpc-cal__cell--hover{background:var(--dshpc-hover);}
551
+ .dshpc-cal__cell--out{color:var(--dshpc-fg-dim);}
552
+ .dshpc-cal__cell--today{border-color:var(--dshpc-business);}
553
+ .dshpc-cal__cell[aria-pressed='true']{background:var(--dshpc-accent);color:var(--dshpc-fg-inverse);}
554
+ .dshpc-cal__foot{margin-top:6px;padding-top:6px;border-top:1px solid var(--dshpc-border);}
555
+
556
+ .dshpc-time__cols{display:flex;gap:4px;}
557
+ .dshpc-time__list{width:56px;max-height:196px;overflow-y:auto;display:flex;flex-direction:column;gap:2px;}
558
+ .dshpc-time__opt{padding:5px 0;border:0;border-radius:var(--dshpc-radius-sm);background:transparent;color:var(--dshpc-fg-2);
559
+ font:inherit;font-size:var(--dshpc-font-md);cursor:pointer;transition:background-color var(--dshpc-dur-fast) var(--dshpc-ease),color var(--dshpc-dur-fast) var(--dshpc-ease);}
560
+ .dshpc-time__opt[aria-selected='true']{background:var(--dshpc-hover);color:var(--dshpc-fg);font-weight:600;}
561
+ .dshpc-time__foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:6px;padding-top:6px;border-top:1px solid var(--dshpc-border);}
562
+
563
+ @media (prefers-reduced-motion: reduce){.dshpc-dtf,.dshpc-cal__cell,.dshpc-time__opt{transition:none;}}
576
564
  `;
577
565
  var SELECT_CSS = `
578
566
  /* \u4E0B\u62C9 / \u65E5\u5386 / \u65F6\u5206\u951A\u70B9\uFF1A\u952E\u76D8\u53EF\u8FBE\u6027\u63CF\u8FB9 + \u6821\u9A8C\u63CF\u7EA2\uFF08\u7C7B\u540D\u4ECE\u4E1A\u52A1\u5C42\u6CBF\u7528\uFF0C\u76AE\u80A4\u5F52\u4F4D\u57FA\u7840\u5C42\uFF09 */
579
- .dsh-tdt-ed-field:focus-visible{outline:2px solid var(--tdt-business);outline-offset:1px;}
580
- .dsh-tdt-ed-field--error{border-color:var(--tdt-danger)!important;box-shadow:0 0 0 1px var(--tdt-danger);}
567
+ .dshpc-ed-field:focus-visible{outline:2px solid var(--dshpc-business);outline-offset:1px;}
568
+ .dshpc-ed-field--error{border-color:var(--dshpc-danger)!important;box-shadow:0 0 0 1px var(--dshpc-danger);}
581
569
  /* \u6574\u884C\u4E0B\u62C9\uFF1A\u5B98\u65B9 Menu \u7684\u5305\u88C5 span \u662F inline-flex\uFF08shrink-to-fit\uFF09\uFF0C\u8981\u8FDE\u5B83\u4E00\u8D77\u6491\u6EE1 */
582
- .dsh-tdt-ed-selectwrap{width:100%;}
570
+ .dshpc-ed-selectwrap{width:100%;}
583
571
 
584
572
  /* \u7701\u7565\u53F7\u4E09\u4EF6\u5957\uFF08ui-style-guide \xA7\u4E09\u300C\u5F85\u62BD\u8C61 #1\u300D\u7684\u6536\u655B\u70B9\uFF09\uFF1A**\u65B0\u4EE3\u7801\u4E00\u5F8B\u6302\u8FD9\u4E2A\u7C7B**\uFF0C\u4E0D\u518D\u5404\u5199\u4E00\u904D\u3002
585
573
  \u26A0\uFE0F \u5DF2\u6709 19 \u5904\u65E7\u5199\u6CD5\u5F85\u9010\u6B65\u6536\u7F16\uFF082026-10-04 \u8D77\u65B0\u589E\u7684\u8C03\u7528\u70B9\u4E0D\u8BB8\u518D\u624B\u5199\u8FD9\u4E09\u6761\u5C5E\u6027\uFF09\u3002 */
586
- .dsh-tdt-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
574
+ .dshpc-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
587
575
 
588
576
  /* \u8DD1\u9A6C\u706F\u6587\u672C\uFF08MarqueeText\uFF09\uFF1A\u53CC\u5C42\u2014\u2014\u5916\u5C42\u53EA\u88C1\u526A\uFF0C\u5185\u5C42\u624D transform \u6EDA\u52A8\uFF1B\u975E hover \u5185\u5C42\u81EA\u5E26\u7701\u7565\u53F7 */
589
- .dsh-tdt-mq{display:block;overflow:hidden;white-space:nowrap;}
590
- .dsh-tdt-mq .dsh-tdt-mq-in{display:inline-block;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis;vertical-align:top;}
577
+ .dshpc-mq{display:block;overflow:hidden;white-space:nowrap;}
578
+ .dshpc-mq .dshpc-mq-in{display:inline-block;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis;vertical-align:top;}
591
579
  /* \u26A0\uFE0F \u8DD1\u6CD5\uFF08\u7528\u6237 2026-10-03 \u62CD\u677F\uFF09\uFF1A**\u8DD1\u4E00\u904D\u3001\u505C\u5728\u5C3E\u5B57**\uFF08\u64AD\u653E 1 \u6B21 + forwards\uFF09\uFF0C\u4E0D\u6765\u56DE\u5F39\u3001\u4E0D\u65E0\u9650\u8DD1\u3002
592
580
  \u6EDA\u8DDD = \u7CBE\u786E\u6EA2\u51FA\u91CF \u21D2 \u505C\u4E0B\u65F6\u6700\u540E\u4E00\u4E2A\u5B57\u6B63\u597D\u8D34\u53F3\u7F18\uFF0C**\u4E0D\u4F1A\u8DD1\u8FDB\u9ED1\u5757**\uFF08\u9ED1\u5757\u662F\u65E7\u624B\u5199\u7248\u628A
593
581
  \u5185\u5C42\u76D2\u5B50\u88C1\u4E86\u3001\u6309\u300C\u534A\u622A\u6587\u672C\u300D\u5E73\u79FB\u5BFC\u81F4\u7684\uFF09\u3002\u9F20\u6807\u79FB\u5F00 \u21D2 :hover \u5931\u6548 \u21D2 \u81EA\u52A8\u590D\u4F4D\u56DE\u7701\u7565\u53F7\u6001\u3002 */
594
- .dsh-tdt-mq-run:hover .dsh-tdt-mq-in{max-width:none;overflow:visible;animation:dsh-tdt-mq-scroll var(--dsh-tdt-mq-dur,6s) linear .4s 1 forwards;}
595
- @keyframes dsh-tdt-mq-scroll{from{transform:translateX(0)}to{transform:translateX(var(--dsh-tdt-mq-dist,-40px))}}
582
+ .dshpc-mq-run:hover .dshpc-mq-in{max-width:none;overflow:visible;animation:dshpc-mq-scroll var(--dshpc-mq-dur,6s) linear .4s 1 forwards;}
583
+ @keyframes dshpc-mq-scroll{from{transform:translateX(0)}to{transform:translateX(var(--dshpc-mq-dist,-40px))}}
596
584
  `;
597
585
  var LOADING_CSS = `
598
586
  /* \u8FD0\u884C\u4E2D / loading \u7684\u6D3B\u52A8\u6307\u793A\uFF1A\u4E09\u4E2A\u5C0F\u65B9\u5757\u4F9D\u6B21\u8109\u52A8\u3002 */
599
- @keyframes dsh-tdt-run-block { 0%, 80%, 100% { opacity: 0.25; transform: scale(0.8) } 40% { opacity: 1; transform: scale(1) } }
600
- .dsh-tdt-run-blocks { display: inline-flex; align-items: center; gap: 3px; }
601
- .dsh-tdt-run-blocks > i { width: 5px; height: 5px; border-radius: 1px; background: currentColor; animation: dsh-tdt-run-block 1.2s ease-in-out infinite; }
602
- .dsh-tdt-run-blocks > i:nth-child(2) { animation-delay: 0.15s; }
603
- .dsh-tdt-run-blocks > i:nth-child(3) { animation-delay: 0.3s; }
604
- @media (prefers-reduced-motion: reduce) { .dsh-tdt-run-blocks > i { animation: none; opacity: 1; } }
587
+ @keyframes dshpc-run-block { 0%, 80%, 100% { opacity: 0.25; transform: scale(0.8) } 40% { opacity: 1; transform: scale(1) } }
588
+ .dshpc-run-blocks { display: inline-flex; align-items: center; gap: 3px; }
589
+ .dshpc-run-blocks > i { width: 5px; height: 5px; border-radius: 1px; background: currentColor; animation: dshpc-run-block 1.2s ease-in-out infinite; }
590
+ .dshpc-run-blocks > i:nth-child(2) { animation-delay: 0.15s; }
591
+ .dshpc-run-blocks > i:nth-child(3) { animation-delay: 0.3s; }
592
+ @media (prefers-reduced-motion: reduce) { .dshpc-run-blocks > i { animation: none; opacity: 1; } }
605
593
  `;
606
594
  var BACK_TO_TOP_CSS = `
607
595
  /* \u56DE\u5230\u9876\u90E8\u60AC\u6D6E\u94AE\uFF1A\u5706\u94AE\u3001\u5B9E\u9762\u3001\u6295\u5F71\uFF1B\u9ED8\u8BA4\u9690\u8EAB\uFF0C\u6EDA\u8FC7\u9608\u503C\u52A0 .is-visible \u624D\u663E\u5F62\u3002
608
596
  \u6A2A\u5411 left \u7531\u7EC4\u4EF6\u6309\u4E3B\u5185\u5BB9\u5217\u53F3\u7F18\u5B9E\u65F6\u7B97\u51FA\uFF08\u8D34\u5728\u5176\u53F3\u4FA7\u5916\u4FA7\uFF09\uFF0C\u4E0D\u5199\u6B7B\u3002 */
609
- .dsh-tdt-backtotop{
597
+ .dshpc-backtotop{
610
598
  position:fixed;
611
- bottom:var(--tdt-space-4);
612
- z-index:var(--tdt-z-dock);
599
+ bottom:var(--dshpc-space-4);
600
+ z-index:var(--dshpc-z-dock);
613
601
  width:44px;height:44px;
614
602
  display:inline-flex;align-items:center;justify-content:center;
615
603
  padding:0;margin:0;
616
604
  box-sizing:border-box;
617
- border:1px solid var(--tdt-border);
605
+ border:1px solid var(--dshpc-border);
618
606
  border-radius:50%;
619
- background:var(--tdt-solid);
620
- color:var(--tdt-on-solid);
621
- box-shadow:var(--tdt-shadow-2);
607
+ background:var(--dshpc-solid);
608
+ color:var(--dshpc-on-solid);
609
+ box-shadow:var(--dshpc-shadow-2);
622
610
  cursor:pointer;
623
611
  opacity:0;
624
612
  transform:translateY(8px) scale(.92);
625
- transition:opacity var(--tdt-dur) var(--tdt-ease),
626
- transform var(--tdt-dur) var(--tdt-ease),
627
- background-color var(--tdt-dur-fast) var(--tdt-ease);
613
+ transition:opacity var(--dshpc-dur) var(--dshpc-ease),
614
+ transform var(--dshpc-dur) var(--dshpc-ease),
615
+ background-color var(--dshpc-dur-fast) var(--dshpc-ease);
628
616
  pointer-events:none;
629
617
  }
630
- .dsh-tdt-backtotop.is-visible{opacity:1;transform:translateY(0) scale(1);pointer-events:auto;}
631
- .dsh-tdt-backtotop:hover{background:var(--tdt-hover);}
632
- .dsh-tdt-backtotop:active{background:var(--tdt-active);}
633
- .dsh-tdt-backtotop:focus-visible{outline:2px solid var(--tdt-focus);outline-offset:2px;}
618
+ .dshpc-backtotop.is-visible{opacity:1;transform:translateY(0) scale(1);pointer-events:auto;}
619
+ .dshpc-backtotop:hover{background:var(--dshpc-hover);}
620
+ .dshpc-backtotop:active{background:var(--dshpc-active);}
621
+ .dshpc-backtotop:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:2px;}
634
622
  @media (prefers-reduced-motion: reduce){
635
- .dsh-tdt-backtotop{transition:opacity var(--tdt-dur-fast) linear;transform:none;}
623
+ .dshpc-backtotop{transition:opacity var(--dshpc-dur-fast) linear;transform:none;}
636
624
  }
637
625
  `;
638
626
  var HINT_CSS = `
639
627
  /* \u2500\u2500 \u95EE\u53F7\u63D0\u793A P4\uFF08\u7528\u6237 2026-10-18\uFF1A\u5BF9\u9F50\u771F\u5B9E\u63D2\u4EF6 HelpButton\u2014\u2014**\u5E26\u5708\u7684\u95EE\u53F7\u56FE\u6807**\uFF09\u2500\u2500
640
- \u672C\u4F53 16px \u7EC6\u5708 + \u5708\u5185 ?\uFF0C\u989C\u8272 fg-3\u3001hover \u53EA\u63D0\u4EAE\u4E0D\u52A0\u5E95\uFF08\u4E0E dsh-tdt-ed-help \u540C\u89C4\u77E9\uFF09\u3002
628
+ \u672C\u4F53 16px \u7EC6\u5708 + \u5708\u5185 ?\uFF0C\u989C\u8272 fg-3\u3001hover \u53EA\u63D0\u4EAE\u4E0D\u52A0\u5E95\uFF08\u4E0E dshpc-ed-help \u540C\u89C4\u77E9\uFF09\u3002
641
629
  \u7EAF CSS tooltip\uFF1Ahover / \u952E\u76D8\u805A\u7126\u6D6E\u51FA\u6C14\u6CE1\uFF0C\u96F6 JS\u3002\u72EC\u7ACB\u7EC4\u4EF6\uFF0C\u6807\u9898\u540E\u3001\u884C\u5C3E\u968F\u5904\u53EF\u6302\u3002 */
642
- .dsh-tdt-hint{position:relative;display:inline-flex;align-items:center;justify-content:center;flex:none;
630
+ .dshpc-hint{position:relative;display:inline-flex;align-items:center;justify-content:center;flex:none;
643
631
  box-sizing:border-box;width:14px;height:14px;padding:0;border:1px solid currentColor;border-radius:50%;background:transparent;
644
- color:var(--tdt-fg-3);font-family:inherit;font-size:8px;font-weight:600;line-height:12px;cursor:help;vertical-align:middle;
645
- transition:color var(--tdt-dur-fast) var(--tdt-ease);}
646
- .dsh-tdt-hint:hover,.dsh-tdt-hint:focus-visible{color:var(--tdt-fg);background:0 0;}
647
- .dsh-tdt-hint:focus-visible{outline:2px solid var(--tdt-focus);outline-offset:1px;}
648
- .dsh-tdt-hint__bubble{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%);
632
+ color:var(--dshpc-fg-3);font-family:inherit;font-size:8px;font-weight:600;line-height:12px;cursor:help;vertical-align:middle;
633
+ transition:color var(--dshpc-dur-fast) var(--dshpc-ease);}
634
+ .dshpc-hint:hover,.dshpc-hint:focus-visible{color:var(--dshpc-fg);background:0 0;}
635
+ .dshpc-hint:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:1px;}
636
+ .dshpc-hint__bubble{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%);
649
637
  box-sizing:border-box;width:max-content;max-width:280px;padding:8px 10px;
650
- border-radius:var(--tdt-radius-sm);background:var(--tdt-solid);color:var(--tdt-on-solid);
651
- font-size:var(--tdt-font-xs);line-height:1.7;text-align:left;white-space:normal;
652
- box-shadow:var(--tdt-shadow-2);z-index:var(--tdt-z-menu);
638
+ border-radius:var(--dshpc-radius-sm);background:var(--dshpc-solid);color:var(--dshpc-on-solid);
639
+ font-size:var(--dshpc-font-xs);line-height:1.7;text-align:left;white-space:normal;
640
+ box-shadow:var(--dshpc-shadow-2);z-index:var(--dshpc-z-menu);
653
641
  opacity:0;visibility:hidden;pointer-events:none;
654
- transition:opacity var(--tdt-dur-fast) var(--tdt-ease);}
655
- .dsh-tdt-hint:hover .dsh-tdt-hint__bubble,.dsh-tdt-hint:focus-visible .dsh-tdt-hint__bubble{opacity:1;visibility:visible;}
642
+ transition:opacity var(--dshpc-dur-fast) var(--dshpc-ease);}
643
+ .dshpc-hint:hover .dshpc-hint__bubble,.dshpc-hint:focus-visible .dshpc-hint__bubble{opacity:1;visibility:visible;}
656
644
  `;
657
645
 
658
646
  // dist/ui/picker-css.js
659
647
  var PICKER_CSS = `
660
- .dsh-tdt-picker{position:relative;display:inline-block;font-size:13px;line-height:20px}
661
- .dsh-tdt-picker__trigger{
648
+ .dshpc-picker{position:relative;display:inline-block;font-size:13px;line-height:20px}
649
+ .dshpc-picker__trigger{
662
650
  display:inline-flex;align-items:center;justify-content:space-between;gap:6px;
663
651
  min-width:120px;max-width:100%;height:28px;padding:0 8px;
664
- color:var(--tdt-fg);background:var(--tdt-surface-1);
665
- border:1px solid var(--tdt-border);border-radius:var(--tdt-radius-md);cursor:pointer;
652
+ color:var(--dshpc-fg);background:var(--dshpc-surface-1);
653
+ border:1px solid var(--dshpc-border);border-radius:var(--dshpc-radius-md);cursor:pointer;
666
654
  }
667
- .dsh-tdt-picker__trigger:disabled{color:var(--tdt-fg-dim);cursor:not-allowed;opacity:.7}
668
- .dsh-tdt-picker__caret{color:var(--tdt-fg-3);font-size:10px}
669
- .dsh-tdt-picker__menu{
655
+ .dshpc-picker__trigger:disabled{color:var(--dshpc-fg-dim);cursor:not-allowed;opacity:.7}
656
+ .dshpc-picker__caret{color:var(--dshpc-fg-3);font-size:10px}
657
+ .dshpc-picker__menu{
670
658
  position:absolute;z-index:60;top:calc(100% + 4px);left:0;min-width:100%;
671
659
  max-height:280px;overflow:auto;padding:4px;
672
- background:var(--tdt-surface-menu);border:1px solid var(--tdt-border);
673
- border-radius:var(--tdt-radius-md);box-shadow:0 8px 24px rgba(15,23,42,.12);
660
+ background:var(--dshpc-surface-menu);border:1px solid var(--dshpc-border);
661
+ border-radius:var(--dshpc-radius-md);box-shadow:0 8px 24px rgba(15,23,42,.12);
674
662
  }
675
663
  /* \u5411\u4E0A\u5C55\u5F00\uFF08\u89E6\u53D1\u5668\u9760\u8FD1\u89C6\u53E3\u5E95\u90E8\u65F6\u7528 placement="up"\uFF09\u3002 */
676
- .dsh-tdt-picker__menu--up{top:auto;bottom:calc(100% + 4px)}
664
+ .dshpc-picker__menu--up{top:auto;bottom:calc(100% + 4px)}
677
665
  /* \u5C3A\u5BF8\u6863\uFF08\u4E0E Field \u7684 sm/md/lg \u5BF9\u5E94\uFF09\u3002 */
678
- .dsh-tdt-picker__trigger--sm{height:24px;font-size:12px}
679
- .dsh-tdt-picker__trigger--lg{height:32px}
666
+ .dshpc-picker__trigger--sm{height:24px;font-size:12px}
667
+ .dshpc-picker__trigger--lg{height:32px}
680
668
  /* \u952E\u76D8\u6E38\u6807\u6240\u5728\u9879\uFF08\u65E0 hover \u4E5F\u8981\u770B\u5F97\u89C1\uFF09\u3002 */
681
- .dsh-tdt-picker__option[data-active='true']{background:var(--tdt-surface-sunken);outline:1px solid var(--tdt-border)}
682
- .dsh-tdt-picker__option--clear{color:var(--tdt-fg-3)}
683
- .dsh-tdt-picker__search{
669
+ .dshpc-picker__option[data-active='true']{background:var(--dshpc-surface-sunken);outline:1px solid var(--dshpc-border)}
670
+ .dshpc-picker__option--clear{color:var(--dshpc-fg-3)}
671
+ .dshpc-picker__search{
684
672
  width:100%;height:28px;margin-bottom:4px;padding:0 8px;box-sizing:border-box;
685
- color:var(--tdt-fg);background:var(--tdt-surface-sunken);
686
- border:1px solid var(--tdt-border-faint);border-radius:var(--tdt-radius-md);outline:none;
687
- }
688
- .dsh-tdt-picker__group-label{
689
- padding:6px 8px 2px;color:var(--tdt-fg-3);font-size:11px;
690
- }
691
- .dsh-tdt-picker__option{
692
- display:flex;align-items:center;gap:6px;padding:6px 8px;border-radius:var(--tdt-radius-sm);cursor:pointer;
693
- color:var(--tdt-fg);white-space:nowrap;
694
- }
695
- .dsh-tdt-picker__option:hover{background:var(--tdt-surface-sunken)}
696
- .dsh-tdt-picker__option--active{background:var(--tdt-open-bg);color:var(--tdt-business)}
697
- .dsh-tdt-picker__option--disabled{color:var(--tdt-fg-dim);cursor:not-allowed}
698
- .dsh-tdt-picker__tick{width:12px;color:var(--tdt-business)}
699
- .dsh-tdt-picker__empty{padding:8px;color:var(--tdt-fg-3);text-align:center}
700
- .dsh-tdt-picker__degraded{
701
- padding:6px 8px;margin-bottom:4px;border-radius:var(--tdt-radius-sm);
702
- color:var(--tdt-warning-label);background:color-mix(in srgb,var(--tdt-warning) 12%,transparent);
673
+ color:var(--dshpc-fg);background:var(--dshpc-surface-sunken);
674
+ border:1px solid var(--dshpc-border-faint);border-radius:var(--dshpc-radius-md);outline:none;
675
+ }
676
+ .dshpc-picker__group-label{
677
+ padding:6px 8px 2px;color:var(--dshpc-fg-3);font-size:11px;
678
+ }
679
+ .dshpc-picker__option{
680
+ display:flex;align-items:center;gap:6px;padding:6px 8px;border-radius:var(--dshpc-radius-sm);cursor:pointer;
681
+ color:var(--dshpc-fg);white-space:nowrap;
682
+ }
683
+ .dshpc-picker__option:hover{background:var(--dshpc-surface-sunken)}
684
+ .dshpc-picker__option--active{background:var(--dshpc-open-bg);color:var(--dshpc-business)}
685
+ .dshpc-picker__option--disabled{color:var(--dshpc-fg-dim);cursor:not-allowed}
686
+ .dshpc-picker__tick{width:12px;color:var(--dshpc-business)}
687
+ .dshpc-picker__empty{padding:8px;color:var(--dshpc-fg-3);text-align:center}
688
+ .dshpc-picker__degraded{
689
+ padding:6px 8px;margin-bottom:4px;border-radius:var(--dshpc-radius-sm);
690
+ color:var(--dshpc-warning-label);background:color-mix(in srgb,var(--dshpc-warning) 12%,transparent);
703
691
  font-size:11px;
704
692
  }
705
- .dsh-tdt-picker__row{display:flex;align-items:center;gap:8px}
693
+ .dshpc-picker__row{display:flex;align-items:center;gap:8px}
706
694
  `;
707
695
 
708
696
  // dist/ui/feedback-css.js
709
697
  var FEEDBACK_CSS = `
710
- .dsh-tdt-modal-mask{
698
+ .dshpc-modal-mask{
711
699
  position:fixed;inset:0;z-index:1070;display:flex;align-items:center;justify-content:center;
712
700
  background:rgba(15,23,42,.45);
713
701
  }
714
- .dsh-tdt-modal{
702
+ .dshpc-modal{
715
703
  display:flex;flex-direction:column;max-width:min(960px,92vw);max-height:86vh;
716
- background:var(--tdt-surface-base);border:1px solid var(--tdt-border);
704
+ background:var(--dshpc-surface-base);border:1px solid var(--dshpc-border);
717
705
  border-radius:10px;box-shadow:0 16px 48px rgba(15,23,42,.24);overflow:hidden;
718
706
  }
719
- .dsh-tdt-modal__head{
707
+ .dshpc-modal__head{
720
708
  display:flex;align-items:center;gap:8px;padding:12px 14px;
721
- border-bottom:1px solid var(--tdt-border-faint);color:var(--tdt-fg);font-size:14px;
709
+ border-bottom:1px solid var(--dshpc-border-faint);color:var(--dshpc-fg);font-size:14px;
722
710
  }
723
- .dsh-tdt-modal__title{flex:1;min-width:0}
711
+ .dshpc-modal__title{flex:1;min-width:0}
724
712
  /* \u5173\u95ED\u6309\u94AE\uFF1A24\xD724 \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 */
725
- .dsh-tdt-modal__close{
713
+ .dshpc-modal__close{
726
714
  display:inline-flex;align-items:center;justify-content:center;flex:none;
727
- width:24px;height:24px;padding:0;border:none;border-radius:var(--tdt-radius-sm);
728
- background:transparent;color:var(--tdt-fg-3);font-family:inherit;font-size:12px;line-height:1;cursor:pointer;
729
- transition:background-color var(--tdt-dur-fast) var(--tdt-ease),color var(--tdt-dur-fast) var(--tdt-ease);
730
- }
731
- .dsh-tdt-modal__close:hover{background:var(--tdt-hover);color:var(--tdt-fg)}
732
- .dsh-tdt-modal__close:focus-visible{outline:2px solid var(--tdt-focus);outline-offset:1px}
733
- .dsh-tdt-modal__body{flex:1;min-height:0;overflow:auto;padding:12px 14px}
734
- .dsh-tdt-modal__foot{
715
+ width:24px;height:24px;padding:0;border:none;border-radius:var(--dshpc-radius-sm);
716
+ background:transparent;color:var(--dshpc-fg-3);font-family:inherit;font-size:12px;line-height:1;cursor:pointer;
717
+ transition:background-color var(--dshpc-dur-fast) var(--dshpc-ease),color var(--dshpc-dur-fast) var(--dshpc-ease);
718
+ }
719
+ .dshpc-modal__close:hover{background:var(--dshpc-hover);color:var(--dshpc-fg)}
720
+ .dshpc-modal__close:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:1px}
721
+ .dshpc-modal__body{flex:1;min-height:0;overflow:auto;padding:12px 14px}
722
+ .dshpc-modal__foot{
735
723
  display:flex;justify-content:flex-end;gap:8px;padding:10px 14px;
736
- border-top:1px solid var(--tdt-border-faint);
724
+ border-top:1px solid var(--dshpc-border-faint);
737
725
  }
738
- .dsh-tdt-toast-host{
726
+ .dshpc-toast-host{
739
727
  position:fixed;z-index:1090;left:50%;bottom:32px;transform:translateX(-50%);
740
728
  display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none;
741
729
  }
742
- .dsh-tdt-toast{
743
- padding:8px 14px;border-radius:8px;font-size:13px;color:var(--tdt-fg);
744
- background:var(--tdt-surface-menu);border:1px solid var(--tdt-border);
730
+ .dshpc-toast{
731
+ padding:8px 14px;border-radius:8px;font-size:13px;color:var(--dshpc-fg);
732
+ background:var(--dshpc-surface-menu);border:1px solid var(--dshpc-border);
745
733
  box-shadow:0 8px 24px rgba(15,23,42,.16);
746
734
  }
747
- .dsh-tdt-toast--success{color:var(--tdt-success);border-color:color-mix(in srgb,var(--tdt-success) 40%,transparent)}
748
- .dsh-tdt-toast--error{color:var(--tdt-danger);border-color:color-mix(in srgb,var(--tdt-danger) 40%,transparent)}
749
- .dsh-tdt-empty{
735
+ .dshpc-toast--success{color:var(--dshpc-success);border-color:color-mix(in srgb,var(--dshpc-success) 40%,transparent)}
736
+ .dshpc-toast--error{color:var(--dshpc-danger);border-color:color-mix(in srgb,var(--dshpc-danger) 40%,transparent)}
737
+ .dshpc-empty{
750
738
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;
751
- padding:24px;color:var(--tdt-fg-3);font-size:13px;text-align:center;
739
+ padding:24px;color:var(--dshpc-fg-3);font-size:13px;text-align:center;
752
740
  }
753
- .dsh-tdt-error{
741
+ .dshpc-error{
754
742
  padding:12px 14px;border-radius:8px;font-size:13px;
755
- color:var(--tdt-danger);background:color-mix(in srgb,var(--tdt-danger) 10%,transparent);
756
- border:1px solid color-mix(in srgb,var(--tdt-danger) 30%,transparent);
743
+ color:var(--dshpc-danger);background:color-mix(in srgb,var(--dshpc-danger) 10%,transparent);
744
+ border:1px solid color-mix(in srgb,var(--dshpc-danger) 30%,transparent);
757
745
  }
758
- .dsh-tdt-error__retry{
759
- margin-top:8px;color:var(--tdt-link);cursor:pointer;background:none;border:none;padding:0;
746
+ .dshpc-error__retry{
747
+ margin-top:8px;color:var(--dshpc-link);cursor:pointer;background:none;border:none;padding:0;
760
748
  }
761
749
  `;
762
750
 
763
751
  // dist/ui/card-css.js
764
752
  var CARD_CSS = `
765
- .dsh-tdt-card{
766
- position:relative;padding:12px 14px;background:var(--tdt-surface-1);
767
- --card-accent:var(--tdt-business);
753
+ .dshpc-card{
754
+ position:relative;padding:12px 14px;background:var(--dshpc-surface-1);
755
+ --card-accent:var(--dshpc-business);
768
756
  }
769
757
  /* \u6863\u4F4D \u2192 token\uFF08\u7167 records-timeline \u7684 tone \u6A21\u5F0F\uFF1A\u4E00\u4E2A\u53D8\u91CF\u5207\u6863\uFF0C\u4E0D\u5199 5 \u5957\u89C4\u5219\uFF09\u3002 */
770
- .dsh-tdt-card--success{--card-accent:var(--tdt-success)}
771
- .dsh-tdt-card--warning{--card-accent:var(--tdt-warning)}
772
- .dsh-tdt-card--danger{--card-accent:var(--tdt-danger)}
773
- .dsh-tdt-card--neutral{--card-accent:var(--tdt-fg-4)}
758
+ .dshpc-card--success{--card-accent:var(--dshpc-success)}
759
+ .dshpc-card--warning{--card-accent:var(--dshpc-warning)}
760
+ .dshpc-card--danger{--card-accent:var(--dshpc-danger)}
761
+ .dshpc-card--neutral{--card-accent:var(--dshpc-fg-4)}
774
762
 
775
763
  /* \u5916\u89C2\u4E00\uFF1A\u5706\u89D2 + 1px \u8FB9\u6846\uFF0C\u8272\u6761\u4E0A\u4E0B\u7559\u8DDD\uFF08\u77ED\u6761\uFF09\u3002 */
776
- .dsh-tdt-card--bordered{border-radius:8px;border:1px solid var(--tdt-border)}
777
- .dsh-tdt-card--bordered .dsh-tdt-card__bar{top:8px;bottom:8px;border-radius:2px}
764
+ .dshpc-card--bordered{border-radius:8px;border:1px solid var(--dshpc-border)}
765
+ .dshpc-card--bordered .dshpc-card__bar{top:8px;bottom:8px;border-radius:2px}
778
766
 
779
767
  /* \u5916\u89C2\u4E8C\uFF1A\u65E0\u5706\u89D2\u65E0\u8FB9\u6846\uFF0C\u8272\u6761\u901A\u9AD8\u3002 */
780
- .dsh-tdt-card--strip{border-radius:0;border:none}
781
- .dsh-tdt-card--strip .dsh-tdt-card__bar{top:0;bottom:0;border-radius:0}
768
+ .dshpc-card--strip{border-radius:0;border:none}
769
+ .dshpc-card--strip .dshpc-card__bar{top:0;bottom:0;border-radius:0}
782
770
 
783
771
  /* \u8272\u6761\uFF1A\u7EDD\u5BF9\u5B9A\u4F4D + top/bottom \u21D2 \u8DDF\u7740\u5185\u5BB9\u9AD8\u5EA6\u81EA\u9002\u5E94\uFF1B\u4E0A\u4E0B\u662F\u5426\u7559\u8DDD\u7531\u5916\u89C2\u51B3\u5B9A\u3002 */
784
- .dsh-tdt-card__bar{position:absolute;left:0;width:3px;background:var(--card-accent)}
772
+ .dshpc-card__bar{position:absolute;left:0;width:3px;background:var(--card-accent)}
785
773
 
786
- .dsh-tdt-card__head{display:flex;align-items:flex-start;gap:8px;min-width:0}
787
- .dsh-tdt-card__main{flex:1;min-width:0}
788
- .dsh-tdt-card__side{display:flex;align-items:center;gap:6px;flex:none}
789
- .dsh-tdt-card__toggle{
774
+ .dshpc-card__head{display:flex;align-items:flex-start;gap:8px;min-width:0}
775
+ .dshpc-card__main{flex:1;min-width:0}
776
+ .dshpc-card__side{display:flex;align-items:center;gap:6px;flex:none}
777
+ .dshpc-card__toggle{
790
778
  display:inline-flex;align-items:center;justify-content:center;
791
779
  width:24px;height:24px;padding:0;background:none;border:none;border-radius:6px;
792
- color:var(--tdt-fg-3);cursor:pointer;
780
+ color:var(--dshpc-fg-3);cursor:pointer;
793
781
  }
794
- .dsh-tdt-card__toggle:hover{background:var(--tdt-surface-sunken);color:var(--tdt-fg)}
795
- .dsh-tdt-card__caret{display:inline-block;font-size:10px;transition:transform .15s ease}
796
- .dsh-tdt-card__caret.is-open{transform:rotate(180deg)}
797
- .dsh-tdt-card__panel{margin-top:8px;padding-top:8px;border-top:1px solid var(--tdt-border-faint)}
782
+ .dshpc-card__toggle:hover{background:var(--dshpc-surface-sunken);color:var(--dshpc-fg)}
783
+ .dshpc-card__caret{display:inline-block;font-size:10px;transition:transform .15s ease}
784
+ .dshpc-card__caret.is-open{transform:rotate(180deg)}
785
+ .dshpc-card__panel{margin-top:8px;padding-top:8px;border-top:1px solid var(--dshpc-border-faint)}
798
786
  `;
799
787
 
800
788
  // dist/ui/chip-css.js
801
789
  var CHIP_CSS = `
802
- .dsh-tdt-chip{
790
+ .dshpc-chip{
803
791
  display:inline-flex;align-items:center;justify-content:center;gap:4px;padding:1px 8px;
804
- box-sizing:border-box;border-radius:var(--tdt-radius-pill,999px);border:none;
805
- background:var(--tdt-chip-bg);color:var(--tdt-fg);
792
+ box-sizing:border-box;border-radius:var(--dshpc-radius-pill,999px);border:none;
793
+ background:var(--dshpc-chip-bg);color:var(--dshpc-fg);
806
794
  font-family:inherit;font-size:11px;line-height:18px;margin:0;
807
795
  /* 2026-10-18\uFF1Achip \u662F flex \u884C\u91CC\u7684\u5E38\u7528\u9879\uFF0C\u7981\u6B62\u88AB\u538B\u7F29\u6362\u884C\uFF08\u9884\u89C8\u7AD9\u51FA\u73B0\u8FC7\u6587\u5B57\u7AD6\u6392\u3001\u4E92\u76F8\u53E0\u538B\u7684\u6324\u538B\uFF09\u3002 */
808
796
  white-space:nowrap;flex:none;
809
797
  appearance:none;-webkit-appearance:none;
810
798
  }
811
799
  /* \u53EF\u70B9\u6001\uFF1Abutton \u6E32\u67D3\uFF08\u89C1 Chip.ts\uFF09\uFF0C\u5149\u6807 + hover \u52A0\u6DF1\u3002 */
812
- .dsh-tdt-chip--clickable{cursor:pointer;transition:background-color var(--tdt-dur-fast) var(--tdt-ease);}
813
- .dsh-tdt-chip--clickable:hover:not(:disabled){background:var(--tdt-chip-bg-hover)}
814
- .dsh-tdt-chip:focus-visible{outline:2px solid var(--tdt-focus);outline-offset:1px}
815
- .dsh-tdt-chip:disabled{cursor:default;color:var(--tdt-fg-3)}
816
- @media (prefers-reduced-motion: reduce){.dsh-tdt-chip{transition:none}}
800
+ .dshpc-chip--clickable{cursor:pointer;transition:background-color var(--dshpc-dur-fast) var(--dshpc-ease);}
801
+ .dshpc-chip--clickable:hover:not(:disabled){background:var(--dshpc-chip-bg-hover)}
802
+ .dshpc-chip:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:1px}
803
+ .dshpc-chip:disabled{cursor:default;color:var(--dshpc-fg-3)}
804
+ @media (prefers-reduced-motion: reduce){.dshpc-chip{transition:none}}
817
805
  `;
818
806
 
819
807
  // dist/explorer/explorer-css.js
820
808
  var EXPLORER_CSS = `
821
- .dsh-tdt-exp{display:flex;flex-direction:column;height:100%;min-height:0;color:var(--tdt-fg);font-size:13px}
822
- .dsh-tdt-exp__crumbs{
809
+ .dshpc-exp{display:flex;flex-direction:column;height:100%;min-height:0;color:var(--dshpc-fg);font-size:13px}
810
+ .dshpc-exp__crumbs{
823
811
  display:flex;align-items:center;gap:2px;flex-wrap:wrap;padding:6px 8px;
824
- border-bottom:1px solid var(--tdt-border-faint);
812
+ border-bottom:1px solid var(--dshpc-border-faint);
825
813
  }
826
- .dsh-tdt-exp__crumb{
814
+ .dshpc-exp__crumb{
827
815
  background:none;border:none;padding:2px 4px;border-radius:4px;cursor:pointer;
828
- color:var(--tdt-link);font:inherit;
829
- }
830
- .dsh-tdt-exp__crumb--current{color:var(--tdt-fg);font-weight:600;cursor:default}
831
- .dsh-tdt-exp__sep{color:var(--tdt-fg-4)}
832
- .dsh-tdt-exp__tools{display:flex;gap:6px;margin-left:auto}
833
- .dsh-tdt-exp__body{display:flex;flex:1;min-height:0}
834
- .dsh-tdt-exp__tree{width:220px;flex:none;overflow:auto;border-right:1px solid var(--tdt-border-faint)}
835
- .dsh-tdt-exp__item{
816
+ color:var(--dshpc-link);font:inherit;
817
+ }
818
+ .dshpc-exp__crumb--current{color:var(--dshpc-fg);font-weight:600;cursor:default}
819
+ .dshpc-exp__sep{color:var(--dshpc-fg-4)}
820
+ .dshpc-exp__tools{display:flex;gap:6px;margin-left:auto}
821
+ .dshpc-exp__body{display:flex;flex:1;min-height:0}
822
+ .dshpc-exp__tree{width:220px;flex:none;overflow:auto;border-right:1px solid var(--dshpc-border-faint)}
823
+ .dshpc-exp__item{
836
824
  display:flex;align-items:center;gap:6px;padding:4px 8px;cursor:pointer;white-space:nowrap;
837
825
  }
838
- .dsh-tdt-exp__item:hover{background:var(--tdt-surface-sunken)}
839
- .dsh-tdt-exp__item--active{background:var(--tdt-open-bg)}
840
- .dsh-tdt-exp__icon{width:14px;flex:none;color:var(--tdt-fg-3)}
841
- .dsh-tdt-exp__name{overflow:hidden;text-overflow:ellipsis}
842
- .dsh-tdt-exp__size{margin-left:auto;color:var(--tdt-fg-4);font-size:11px}
843
- .dsh-tdt-exp__preview{flex:1;min-width:0;overflow:auto;padding:8px}
844
- .dsh-tdt-exp__note{padding:6px 8px;color:var(--tdt-fg-3);font-size:11px}
845
- .dsh-tdt-exp__text{
846
- margin:0;padding:8px;border-radius:6px;background:var(--tdt-code-surface);
847
- font:var(--tdt-code-font);white-space:pre-wrap;word-break:break-all;
848
- }
849
- .dsh-tdt-exp__image{max-width:100%;border-radius:6px;border:1px solid var(--tdt-border-faint)}
826
+ .dshpc-exp__item:hover{background:var(--dshpc-surface-sunken)}
827
+ .dshpc-exp__item--active{background:var(--dshpc-open-bg)}
828
+ .dshpc-exp__icon{width:14px;flex:none;color:var(--dshpc-fg-3)}
829
+ .dshpc-exp__name{overflow:hidden;text-overflow:ellipsis}
830
+ .dshpc-exp__size{margin-left:auto;color:var(--dshpc-fg-4);font-size:11px}
831
+ .dshpc-exp__preview{flex:1;min-width:0;overflow:auto;padding:8px}
832
+ .dshpc-exp__note{padding:6px 8px;color:var(--dshpc-fg-3);font-size:11px}
833
+ .dshpc-exp__text{
834
+ margin:0;padding:8px;border-radius:6px;background:var(--dshpc-code-surface);
835
+ font:var(--dshpc-code-font);white-space:pre-wrap;word-break:break-all;
836
+ }
837
+ .dshpc-exp__image{max-width:100%;border-radius:6px;border:1px solid var(--dshpc-border-faint)}
850
838
  `;
851
839
 
852
840
  // dist/session/session-css.js
853
841
  var SESSION_CSS = `
854
- .dsh-tdt-ses{display:flex;flex-direction:column;min-height:0;color:var(--tdt-fg);font-size:13px}
855
- .dsh-tdt-ses--sidebar{height:100%;border-left:1px solid var(--tdt-border-faint);background:var(--tdt-surface-base)}
856
- .dsh-tdt-ses--page{height:100%;background:var(--tdt-surface-base)}
857
- .dsh-tdt-ses__list{flex:1;min-height:0;overflow:auto;padding:8px 12px;display:flex;flex-direction:column;gap:10px}
858
- .dsh-tdt-ses__msg{padding:8px 10px;border-radius:8px;background:var(--tdt-surface-2);border:1px solid var(--tdt-border-faint)}
859
- .dsh-tdt-ses__msg--user{background:var(--tdt-open-bg-soft)}
860
- .dsh-tdt-ses__head{display:flex;align-items:center;gap:6px;margin-bottom:4px;color:var(--tdt-fg-3);font-size:11px}
861
- .dsh-tdt-ses__text{margin:0;white-space:pre-wrap;word-break:break-word;line-height:1.6}
862
- .dsh-tdt-ses__atts{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
863
- .dsh-tdt-ses__att{
842
+ .dshpc-ses{display:flex;flex-direction:column;min-height:0;color:var(--dshpc-fg);font-size:13px}
843
+ .dshpc-ses--sidebar{height:100%;border-left:1px solid var(--dshpc-border-faint);background:var(--dshpc-surface-base)}
844
+ .dshpc-ses--page{height:100%;background:var(--dshpc-surface-base)}
845
+ .dshpc-ses__list{flex:1;min-height:0;overflow:auto;padding:8px 12px;display:flex;flex-direction:column;gap:10px}
846
+ .dshpc-ses__msg{padding:8px 10px;border-radius:8px;background:var(--dshpc-surface-2);border:1px solid var(--dshpc-border-faint)}
847
+ .dshpc-ses__msg--user{background:var(--dshpc-open-bg-soft)}
848
+ .dshpc-ses__head{display:flex;align-items:center;gap:6px;margin-bottom:4px;color:var(--dshpc-fg-3);font-size:11px}
849
+ .dshpc-ses__text{margin:0;white-space:pre-wrap;word-break:break-word;line-height:1.6}
850
+ .dshpc-ses__atts{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
851
+ .dshpc-ses__att{
864
852
  display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:999px;
865
- background:var(--tdt-chip-bg);color:var(--tdt-fg);cursor:pointer;border:none;font:inherit;font-size:12px;
853
+ background:var(--dshpc-chip-bg);color:var(--dshpc-fg);cursor:pointer;border:none;font:inherit;font-size:12px;
866
854
  }
867
- .dsh-tdt-ses__att:hover{background:var(--tdt-chip-bg-hover)}
868
- .dsh-tdt-ses__note{padding:12px;color:var(--tdt-fg-3);text-align:center}
855
+ .dshpc-ses__att:hover{background:var(--dshpc-chip-bg-hover)}
856
+ .dshpc-ses__note{padding:12px;color:var(--dshpc-fg-3);text-align:center}
869
857
  `;
870
858
 
871
859
  // dist/ui/css.js
872
860
  var CONTROLS_DOMAIN = "controls";
873
- function buildCss(template, prefix) {
874
- return template.split("--tdt-").join(`--${prefix}-`);
875
- }
876
861
  var CONTROLS_CSS = [
877
862
  SEGMENTED_CSS,
878
863
  BUTTON_CSS,
@@ -889,13 +874,13 @@ var CONTROLS_CSS = [
889
874
  CARD_CSS,
890
875
  CHIP_CSS
891
876
  ].join("\n");
892
- var current = createStyleKit({ id: "dsh-plugin-core-ui", prefix: "dsh" });
877
+ var current = createStyleKit({ id: "dsh-plugin-core-ui" });
893
878
  function setStyleKit(kit) {
894
879
  current = kit;
895
880
  }
896
881
  function ensureControls(kit = current) {
897
882
  kit.registerStyle("tokens", kit.tokensCss);
898
- kit.applyStyle(CONTROLS_DOMAIN, buildCss(CONTROLS_CSS, kit.prefix));
883
+ kit.applyStyle(CONTROLS_DOMAIN, CONTROLS_CSS);
899
884
  }
900
885
 
901
886
  // dist/ui/picker-logic.js
@@ -1142,37 +1127,37 @@ function Picker(props) {
1142
1127
  }
1143
1128
  };
1144
1129
  return (0, import_react.createElement)("div", {
1145
- className: `dsh-tdt-picker${props.className === void 0 ? "" : ` ${props.className}`}`,
1130
+ className: `dshpc-picker${props.className === void 0 ? "" : ` ${props.className}`}`,
1146
1131
  ref: rootRef,
1147
1132
  onKeyDown
1148
1133
  }, (0, import_react.createElement)("button", {
1149
1134
  type: "button",
1150
1135
  "aria-label": props.ariaLabel,
1151
1136
  "aria-expanded": open,
1152
- className: `dsh-tdt-picker__trigger dsh-tdt-picker__trigger--${size}`,
1137
+ className: `dshpc-picker__trigger dshpc-picker__trigger--${size}`,
1153
1138
  disabled: props.disabled === true,
1154
1139
  onClick: () => {
1155
1140
  if (props.disabled !== true)
1156
1141
  setOpen(!open);
1157
1142
  }
1158
- }, (0, import_react.createElement)("span", null, summary), (0, import_react.createElement)("span", { className: "dsh-tdt-picker__caret" }, "\u25BE")), open ? (0, import_react.createElement)("div", {
1159
- className: placement === "up" ? "dsh-tdt-picker__menu dsh-tdt-picker__menu--up" : "dsh-tdt-picker__menu"
1160
- }, props.degraded === true ? (0, import_react.createElement)("div", { className: "dsh-tdt-picker__degraded" }, tt("pickerDegraded")) : null, atMax ? (0, import_react.createElement)("div", { className: "dsh-tdt-picker__degraded" }, tt("pickerMaxReached", { n: props.max ?? 0 })) : null, props.searchable === true ? (0, import_react.createElement)("input", {
1161
- className: "dsh-tdt-picker__search",
1143
+ }, (0, import_react.createElement)("span", null, summary), (0, import_react.createElement)("span", { className: "dshpc-picker__caret" }, "\u25BE")), open ? (0, import_react.createElement)("div", {
1144
+ className: placement === "up" ? "dshpc-picker__menu dshpc-picker__menu--up" : "dshpc-picker__menu"
1145
+ }, props.degraded === true ? (0, import_react.createElement)("div", { className: "dshpc-picker__degraded" }, tt("pickerDegraded")) : null, atMax ? (0, import_react.createElement)("div", { className: "dshpc-picker__degraded" }, tt("pickerMaxReached", { n: props.max ?? 0 })) : null, props.searchable === true ? (0, import_react.createElement)("input", {
1146
+ className: "dshpc-picker__search",
1162
1147
  placeholder: tt("pickerSearch"),
1163
1148
  value: query,
1164
1149
  onChange: (e) => setQuery(e.target.value)
1165
- }) : null, flat.length === 0 && groups.length === 0 ? (0, import_react.createElement)("div", { className: "dsh-tdt-picker__empty" }, tt("pickerEmpty")) : flat.length === 0 ? (0, import_react.createElement)("div", { className: "dsh-tdt-picker__empty" }, tt("pickerNoMatch")) : [
1150
+ }) : null, flat.length === 0 && groups.length === 0 ? (0, import_react.createElement)("div", { className: "dshpc-picker__empty" }, tt("pickerEmpty")) : flat.length === 0 ? (0, import_react.createElement)("div", { className: "dshpc-picker__empty" }, tt("pickerNoMatch")) : [
1166
1151
  clearable && mode === "single" && selected.length > 0 ? (0, import_react.createElement)("div", {
1167
1152
  key: "__clear__",
1168
- className: "dsh-tdt-picker__option dsh-tdt-picker__option--clear",
1153
+ className: "dshpc-picker__option dshpc-picker__option--clear",
1169
1154
  onClick: clear
1170
1155
  }, tt("pickerClear")) : null,
1171
- ...shown.map((g) => (0, import_react.createElement)("div", { key: g.value || "_" }, g.label === "" ? null : (0, import_react.createElement)("div", { className: "dsh-tdt-picker__group-label" }, g.label), g.options.map((o) => {
1156
+ ...shown.map((g) => (0, import_react.createElement)("div", { key: g.value || "_" }, g.label === "" ? null : (0, import_react.createElement)("div", { className: "dshpc-picker__group-label" }, g.label), g.options.map((o) => {
1172
1157
  const activeCls = [
1173
- "dsh-tdt-picker__option",
1174
- selected.includes(o.value) ? "dsh-tdt-picker__option--active" : "",
1175
- o.disabled === true || atMax ? "dsh-tdt-picker__option--disabled" : ""
1158
+ "dshpc-picker__option",
1159
+ selected.includes(o.value) ? "dshpc-picker__option--active" : "",
1160
+ o.disabled === true || atMax ? "dshpc-picker__option--disabled" : ""
1176
1161
  ].filter((s) => s !== "").join(" ");
1177
1162
  const idx = flat.indexOf(o);
1178
1163
  return (0, import_react.createElement)("div", {
@@ -1183,7 +1168,7 @@ function Picker(props) {
1183
1168
  if (o.disabled !== true && !atMax)
1184
1169
  pick(o.value);
1185
1170
  }
1186
- }, mode === "multiple" ? (0, import_react.createElement)("span", { className: "dsh-tdt-picker__tick" }, selected.includes(o.value) ? "\u2713" : "") : null, (0, import_react.createElement)("span", null, o.label));
1171
+ }, mode === "multiple" ? (0, import_react.createElement)("span", { className: "dshpc-picker__tick" }, selected.includes(o.value) ? "\u2713" : "") : null, (0, import_react.createElement)("span", null, o.label));
1187
1172
  })))
1188
1173
  ]) : null);
1189
1174
  }
@@ -1219,7 +1204,7 @@ function ModelPicker(props) {
1219
1204
  }
1220
1205
  const group = groupOf(props.groups, cur);
1221
1206
  const provider = group?.value ?? "";
1222
- return (0, import_react2.createElement)("div", { className: "dsh-tdt-picker__row" }, (0, import_react2.createElement)(Picker, {
1207
+ return (0, import_react2.createElement)("div", { className: "dshpc-picker__row" }, (0, import_react2.createElement)(Picker, {
1223
1208
  options: props.groups.map((g) => ({ value: g.value, label: g.label })),
1224
1209
  value: provider === "" ? void 0 : provider,
1225
1210
  placeholder: tt("modelProvider"),
@@ -1301,21 +1286,21 @@ function Modal(props) {
1301
1286
  return () => document.removeEventListener("keydown", onKey);
1302
1287
  }, [escClose, props.onClose]);
1303
1288
  return (0, import_react4.createElement)("div", {
1304
- className: "dsh-tdt-modal-mask",
1289
+ className: "dshpc-modal-mask",
1305
1290
  onClick: () => {
1306
1291
  if (closeOnMask)
1307
1292
  props.onClose?.();
1308
1293
  }
1309
1294
  }, (0, import_react4.createElement)("div", {
1310
- className: "dsh-tdt-modal",
1295
+ className: "dshpc-modal",
1311
1296
  style: props.maxWidth === void 0 ? void 0 : { maxWidth: props.maxWidth },
1312
1297
  onClick: (e) => e.stopPropagation()
1313
- }, props.hideHeader === true || props.title === void 0 && props.onClose === void 0 ? null : (0, import_react4.createElement)("div", { className: "dsh-tdt-modal__head" }, (0, import_react4.createElement)("div", { className: "dsh-tdt-modal__title" }, props.title ?? ""), props.onClose === void 0 ? null : (0, import_react4.createElement)("button", {
1298
+ }, props.hideHeader === true || props.title === void 0 && props.onClose === void 0 ? null : (0, import_react4.createElement)("div", { className: "dshpc-modal__head" }, (0, import_react4.createElement)("div", { className: "dshpc-modal__title" }, props.title ?? ""), props.onClose === void 0 ? null : (0, import_react4.createElement)("button", {
1314
1299
  type: "button",
1315
- className: "dsh-tdt-modal__close",
1300
+ className: "dshpc-modal__close",
1316
1301
  "aria-label": tt("modalClose"),
1317
1302
  onClick: () => props.onClose?.()
1318
- }, "\u2715")), (0, import_react4.createElement)("div", { className: "dsh-tdt-modal__body" }, props.children ?? null), props.footer === void 0 ? null : (0, import_react4.createElement)("div", { className: "dsh-tdt-modal__foot" }, props.footer)));
1303
+ }, "\u2715")), (0, import_react4.createElement)("div", { className: "dshpc-modal__body" }, props.children ?? null), props.footer === void 0 ? null : (0, import_react4.createElement)("div", { className: "dshpc-modal__foot" }, props.footer)));
1319
1304
  }
1320
1305
 
1321
1306
  // dist/ui/Card.js
@@ -1327,19 +1312,19 @@ function CardShell(kind, props) {
1327
1312
  const accent = props.accent ?? "business";
1328
1313
  const isPreset = CARD_ACCENTS.includes(accent);
1329
1314
  const classes = [
1330
- "dsh-tdt-card",
1331
- kind === "strip" ? "dsh-tdt-card--strip" : "dsh-tdt-card--bordered",
1332
- isPreset ? `dsh-tdt-card--${accent}` : "",
1315
+ "dshpc-card",
1316
+ kind === "strip" ? "dshpc-card--strip" : "dshpc-card--bordered",
1317
+ isPreset ? `dshpc-card--${accent}` : "",
1333
1318
  props.className ?? ""
1334
1319
  ].filter((s) => s !== "").join(" ");
1335
1320
  const style = isPreset ? props.style : { ...props.style, ["--card-accent"]: accent };
1336
- return (0, import_react5.createElement)("div", { className: classes, style }, (0, import_react5.createElement)("span", { className: "dsh-tdt-card__bar", "aria-hidden": true }), (0, import_react5.createElement)("div", { className: "dsh-tdt-card__head" }, (0, import_react5.createElement)("div", { className: "dsh-tdt-card__main" }, props.children ?? null), props.action === void 0 && props.onToggle === void 0 ? null : (0, import_react5.createElement)("div", { className: "dsh-tdt-card__side" }, props.action ?? null, props.onToggle === void 0 ? null : (0, import_react5.createElement)("button", {
1321
+ return (0, import_react5.createElement)("div", { className: classes, style }, (0, import_react5.createElement)("span", { className: "dshpc-card__bar", "aria-hidden": true }), (0, import_react5.createElement)("div", { className: "dshpc-card__head" }, (0, import_react5.createElement)("div", { className: "dshpc-card__main" }, props.children ?? null), props.action === void 0 && props.onToggle === void 0 ? null : (0, import_react5.createElement)("div", { className: "dshpc-card__side" }, props.action ?? null, props.onToggle === void 0 ? null : (0, import_react5.createElement)("button", {
1337
1322
  type: "button",
1338
- className: "dsh-tdt-card__toggle",
1323
+ className: "dshpc-card__toggle",
1339
1324
  "aria-label": tt("cardToggle"),
1340
1325
  "aria-expanded": props.expanded === true,
1341
1326
  onClick: props.onToggle
1342
- }, (0, import_react5.createElement)("span", { className: props.expanded === true ? "dsh-tdt-card__caret is-open" : "dsh-tdt-card__caret" }, "\u25BE")))), props.panel === void 0 || props.expanded !== true ? null : (0, import_react5.createElement)("div", { className: "dsh-tdt-card__panel" }, props.panel));
1327
+ }, (0, import_react5.createElement)("span", { className: props.expanded === true ? "dshpc-card__caret is-open" : "dshpc-card__caret" }, "\u25BE")))), props.panel === void 0 || props.expanded !== true ? null : (0, import_react5.createElement)("div", { className: "dshpc-card__panel" }, props.panel));
1343
1328
  }
1344
1329
  function Card(props) {
1345
1330
  return CardShell("bordered", props);
@@ -1355,13 +1340,13 @@ function Chip(props) {
1355
1340
  const clickable = props.onClick !== void 0;
1356
1341
  return (0, import_react6.createElement)(clickable ? "button" : "span", {
1357
1342
  type: clickable ? "button" : void 0,
1358
- className: `dsh-tdt-chip${clickable ? " dsh-tdt-chip--clickable" : ""}${props.className === void 0 ? "" : ` ${props.className}`}`,
1343
+ className: `dshpc-chip${clickable ? " dshpc-chip--clickable" : ""}${props.className === void 0 ? "" : ` ${props.className}`}`,
1359
1344
  onClick: props.onClick
1360
1345
  }, props.children ?? null);
1361
1346
  }
1362
1347
 
1363
1348
  // dist/ui/Toast.js
1364
- var HOST_ID = "dsh-tdt-toast-host";
1349
+ var HOST_ID = "dshpc-toast-host";
1365
1350
  var DEFAULT_MS = 2600;
1366
1351
  function showToast(message, opts) {
1367
1352
  if (typeof document === "undefined")
@@ -1370,7 +1355,7 @@ function showToast(message, opts) {
1370
1355
  const variant = opts?.variant ?? "info";
1371
1356
  const host = ensureHost();
1372
1357
  const el = document.createElement("div");
1373
- el.className = `dsh-tdt-toast${variant === "info" ? "" : ` dsh-tdt-toast--${variant}`}`;
1358
+ el.className = `dshpc-toast${variant === "info" ? "" : ` dshpc-toast--${variant}`}`;
1374
1359
  el.textContent = message;
1375
1360
  host.appendChild(el);
1376
1361
  setTimeout(() => {
@@ -1385,7 +1370,7 @@ function ensureHost() {
1385
1370
  return found;
1386
1371
  const host = document.createElement("div");
1387
1372
  host.id = HOST_ID;
1388
- host.className = "dsh-tdt-toast-host";
1373
+ host.className = "dshpc-toast-host";
1389
1374
  document.body.appendChild(host);
1390
1375
  return host;
1391
1376
  }
@@ -1395,7 +1380,7 @@ var import_react7 = require("react");
1395
1380
  function EmptyState(props) {
1396
1381
  ensureControls();
1397
1382
  const tt = props.translate ?? t;
1398
- return (0, import_react7.createElement)("div", { className: "dsh-tdt-empty" }, props.icon ?? null, (0, import_react7.createElement)("div", null, props.text ?? tt("emptyText")), props.action ?? null);
1383
+ return (0, import_react7.createElement)("div", { className: "dshpc-empty" }, props.icon ?? null, (0, import_react7.createElement)("div", null, props.text ?? tt("emptyText")), props.action ?? null);
1399
1384
  }
1400
1385
 
1401
1386
  // dist/ui/ErrorBoundary.js
@@ -1422,14 +1407,14 @@ var ErrorBoundary = class extends import_react8.Component {
1422
1407
  if (this.props.fallback !== void 0)
1423
1408
  return this.props.fallback(err, this.retry);
1424
1409
  const tt = this.props.translate ?? t;
1425
- return (0, import_react8.createElement)("div", { className: "dsh-tdt-error" }, (0, import_react8.createElement)("div", null, `${tt("errorTitle")}\uFF1A${err.message}`), (0, import_react8.createElement)("button", { type: "button", className: "dsh-tdt-error__retry", onClick: this.retry }, tt("errorRetry")));
1410
+ return (0, import_react8.createElement)("div", { className: "dshpc-error" }, (0, import_react8.createElement)("div", null, `${tt("errorTitle")}\uFF1A${err.message}`), (0, import_react8.createElement)("button", { type: "button", className: "dshpc-error__retry", onClick: this.retry }, tt("errorRetry")));
1426
1411
  }
1427
1412
  };
1428
1413
 
1429
1414
  // dist/ui/Button.js
1430
1415
  var import_react9 = require("react");
1431
1416
  function buttonClass(variant, size, extra) {
1432
- return `dsh-tdt-btn dsh-tdt-btn--${variant} dsh-tdt-btn--${size}${extra !== void 0 && extra !== "" ? " " + extra : ""}`;
1417
+ return `dshpc-btn dshpc-btn--${variant} dshpc-btn--${size}${extra !== void 0 && extra !== "" ? ` ${extra}` : ""}`;
1433
1418
  }
1434
1419
  function Button(props) {
1435
1420
  ensureControls();
@@ -1440,7 +1425,7 @@ function Button(props) {
1440
1425
  className: buttonClass(variant, size, className),
1441
1426
  style
1442
1427
  };
1443
- return (0, import_react9.createElement)("button", attrs, icon !== void 0 && icon !== null ? (0, import_react9.createElement)("span", { className: "dsh-tdt-btn__icon" }, icon) : null, children);
1428
+ return (0, import_react9.createElement)("button", attrs, icon !== void 0 && icon !== null ? (0, import_react9.createElement)("span", { className: "dshpc-btn__icon" }, icon) : null, children);
1444
1429
  }
1445
1430
  function IconButton(props) {
1446
1431
  ensureControls();
@@ -1450,7 +1435,7 @@ function IconButton(props) {
1450
1435
  type: rest.type ?? "button",
1451
1436
  title: rest.title ?? label,
1452
1437
  "aria-label": rest["aria-label"] ?? label,
1453
- className: `dsh-tdt-iconbtn dsh-tdt-iconbtn--${variant} dsh-tdt-iconbtn--${size}${className !== void 0 && className !== "" ? " " + className : ""}`,
1438
+ className: `dshpc-iconbtn dshpc-iconbtn--${variant} dshpc-iconbtn--${size}${className !== void 0 && className !== "" ? ` ${className}` : ""}`,
1454
1439
  style
1455
1440
  };
1456
1441
  return (0, import_react9.createElement)("button", attrs, icon);
@@ -1471,7 +1456,7 @@ function Segmented(props) {
1471
1456
  "aria-label": props.label,
1472
1457
  id: props.id,
1473
1458
  // 结构一套、皮肤只在 controls-css 里;此处只拼「轴」类名,不写任何颜色 / 尺寸字面值。
1474
- className: `dsh-tdt-seg dsh-tdt-seg--${variant} dsh-tdt-seg--${size}${props.block === true ? " dsh-tdt-seg--block" : ""}${props.className !== void 0 ? " " + props.className : ""}`,
1459
+ className: `dshpc-seg dshpc-seg--${variant} dshpc-seg--${size}${props.block === true ? " dshpc-seg--block" : ""}${props.className !== void 0 ? ` ${props.className}` : ""}`,
1475
1460
  style: props.style
1476
1461
  }, props.items.map((item) => {
1477
1462
  const on = multiple ? value.includes(item.value) : value === item.value;
@@ -1491,12 +1476,12 @@ function Segmented(props) {
1491
1476
  return (0, import_react10.createElement)("button", {
1492
1477
  key: item.value,
1493
1478
  type: "button",
1494
- className: "dsh-tdt-seg__item",
1479
+ className: "dshpc-seg__item",
1495
1480
  // 选中态用 aria-pressed 表达 ⇒ 读屏可读,皮肤也只认这一个选择器
1496
1481
  "aria-pressed": on,
1497
1482
  disabled,
1498
1483
  onClick: handle
1499
- }, item.label, item.count !== void 0 && item.count > 0 ? (0, import_react10.createElement)("span", { className: "dsh-tdt-seg__count" }, String(item.count)) : null, item.badge !== void 0 && item.badge > 0 ? (0, import_react10.createElement)("span", { className: "dsh-tdt-seg__badge" }, String(item.badge)) : null);
1484
+ }, item.label, item.count !== void 0 && item.count > 0 ? (0, import_react10.createElement)("span", { className: "dshpc-seg__count" }, String(item.count)) : null, item.badge !== void 0 && item.badge > 0 ? (0, import_react10.createElement)("span", { className: "dshpc-seg__badge" }, String(item.badge)) : null);
1500
1485
  }));
1501
1486
  }
1502
1487
 
@@ -1513,7 +1498,7 @@ function Textarea(props) {
1513
1498
  disabled,
1514
1499
  spellCheck: spellCheck === true,
1515
1500
  "aria-label": props["aria-label"],
1516
- className: `dsh-tdt-textarea${error === true ? " dsh-tdt-textarea--error" : ""}${className !== void 0 && className !== "" ? " " + className : ""}`,
1501
+ className: `dshpc-textarea${error === true ? " dshpc-textarea--error" : ""}${className !== void 0 && className !== "" ? ` ${className}` : ""}`,
1517
1502
  style,
1518
1503
  onChange: (event) => {
1519
1504
  onChange(event.target.value);
@@ -1526,13 +1511,13 @@ var import_react12 = require("react");
1526
1511
  function Checkbox(props) {
1527
1512
  const { checked, onChange, label, accentColor, disabled, className } = props;
1528
1513
  return (0, import_react12.createElement)("label", {
1529
- className: `dsh-tdt-checkbox${className !== void 0 && className !== "" ? " " + className : ""}`,
1514
+ className: `dshpc-checkbox${className !== void 0 && className !== "" ? ` ${className}` : ""}`,
1530
1515
  style: {
1531
1516
  display: "flex",
1532
1517
  alignItems: "flex-start",
1533
1518
  gap: "8px",
1534
- fontSize: "var(--tdt-font-md)",
1535
- lineHeight: "var(--tdt-line-md)",
1519
+ fontSize: "var(--dshpc-font-md)",
1520
+ lineHeight: "var(--dshpc-line-md)",
1536
1521
  cursor: disabled === true ? "default" : "pointer"
1537
1522
  }
1538
1523
  }, (0, import_react12.createElement)("input", {
@@ -1542,7 +1527,7 @@ function Checkbox(props) {
1542
1527
  style: {
1543
1528
  flex: "none",
1544
1529
  margin: "2px 0 0",
1545
- accentColor: accentColor ?? "var(--tdt-business)",
1530
+ accentColor: accentColor ?? "var(--dshpc-business)",
1546
1531
  width: "14px",
1547
1532
  height: "14px",
1548
1533
  cursor: disabled === true ? "default" : "pointer"
@@ -1583,14 +1568,14 @@ function MarqueeText(props) {
1583
1568
  const run = dist > 0;
1584
1569
  return (0, import_react13.createElement)("span", {
1585
1570
  ref: outerRef,
1586
- className: (run ? "dsh-tdt-mq dsh-tdt-mq-run" : "dsh-tdt-mq") + (props.className === void 0 ? "" : ` ${props.className}`),
1571
+ className: (run ? "dshpc-mq dshpc-mq-run" : "dshpc-mq") + (props.className === void 0 ? "" : ` ${props.className}`),
1587
1572
  title: props.title,
1588
1573
  style: props.style
1589
1574
  }, (0, import_react13.createElement)("span", {
1590
1575
  ref: innerRef,
1591
- className: "dsh-tdt-mq-in",
1576
+ className: "dshpc-mq-in",
1592
1577
  style: {
1593
- ...run ? { "--dsh-tdt-mq-dist": `${-dist}px`, "--dsh-tdt-mq-dur": `${Math.max(3, Math.round(dist / 30))}s` } : null
1578
+ ...run ? { "--dshpc-mq-dist": `${-dist}px`, "--dshpc-mq-dur": `${Math.max(3, Math.round(dist / 30))}s` } : null
1594
1579
  }
1595
1580
  }, props.text));
1596
1581
  }
@@ -1599,8 +1584,8 @@ function MarqueeText(props) {
1599
1584
  var import_react14 = require("react");
1600
1585
  function SectionHead(props) {
1601
1586
  return (0, import_react14.createElement)("div", {
1602
- style: { display: "flex", alignItems: "center", gap: "var(--tdt-space-2)", marginBottom: "var(--tdt-space-3)" }
1603
- }, (0, import_react14.createElement)("span", { style: { display: "inline-flex", alignItems: "center", flex: "none", color: "var(--tdt-fg-3)" } }, props.icon), (0, import_react14.createElement)("span", { style: { fontSize: "var(--tdt-font-lg)", lineHeight: "var(--tdt-line-lg)", fontWeight: 600, color: "var(--tdt-fg)", flex: "none" } }, props.title), props.right === void 0 ? null : (0, import_react14.createElement)("div", { style: { marginLeft: "auto", display: "flex", alignItems: "center", gap: "var(--tdt-space-2)", minWidth: 0 } }, props.right));
1587
+ style: { display: "flex", alignItems: "center", gap: "var(--dshpc-space-2)", marginBottom: "var(--dshpc-space-3)" }
1588
+ }, (0, import_react14.createElement)("span", { style: { display: "inline-flex", alignItems: "center", flex: "none", color: "var(--dshpc-fg-3)" } }, props.icon), (0, import_react14.createElement)("span", { style: { fontSize: "var(--dshpc-font-lg)", lineHeight: "var(--dshpc-line-lg)", fontWeight: 600, color: "var(--dshpc-fg)", flex: "none" } }, props.title), props.right === void 0 ? null : (0, import_react14.createElement)("div", { style: { marginLeft: "auto", display: "flex", alignItems: "center", gap: "var(--dshpc-space-2)", minWidth: 0 } }, props.right));
1604
1589
  }
1605
1590
 
1606
1591
  // dist/ui/FieldHint.js
@@ -1608,12 +1593,12 @@ var import_react15 = require("react");
1608
1593
  function FieldHint(props) {
1609
1594
  ensureControls();
1610
1595
  return (0, import_react15.createElement)("span", {
1611
- className: `dsh-tdt-hint${props.className !== void 0 && props.className !== "" ? " " + props.className : ""}`,
1596
+ className: `dshpc-hint${props.className !== void 0 && props.className !== "" ? ` ${props.className}` : ""}`,
1612
1597
  style: props.style,
1613
1598
  tabIndex: 0,
1614
1599
  role: "note",
1615
1600
  "aria-label": props.text
1616
- }, "?", (0, import_react15.createElement)("span", { className: "dsh-tdt-hint__bubble", role: "tooltip" }, props.text));
1601
+ }, "?", (0, import_react15.createElement)("span", { className: "dshpc-hint__bubble", role: "tooltip" }, props.text));
1617
1602
  }
1618
1603
 
1619
1604
  // dist/ui/LiveText.js
@@ -1674,7 +1659,7 @@ function Input(props) {
1674
1659
  disabled,
1675
1660
  "aria-label": props["aria-label"],
1676
1661
  title: props.title,
1677
- className: `dsh-tdt-input dsh-tdt-input${sizeClass(size)}${error === true ? " dsh-tdt-input--error" : ""}${className !== void 0 && className !== "" ? " " + className : ""}`,
1662
+ className: `dshpc-input dshpc-input${sizeClass(size)}${error === true ? " dshpc-input--error" : ""}${className !== void 0 && className !== "" ? ` ${className}` : ""}`,
1678
1663
  style,
1679
1664
  onChange: (event) => {
1680
1665
  onChange(event.target.value);
@@ -1716,7 +1701,7 @@ function NumberInput(props) {
1716
1701
  return (0, import_react18.createElement)(
1717
1702
  "div",
1718
1703
  {
1719
- className: `dsh-tdt-num dsh-tdt-num${sizeClass(size)}${disabled === true ? " dsh-tdt-num--disabled" : ""}${className !== void 0 && className !== "" ? " " + className : ""}`,
1704
+ className: `dshpc-num dshpc-num${sizeClass(size)}${disabled === true ? " dshpc-num--disabled" : ""}${className !== void 0 && className !== "" ? ` ${className}` : ""}`,
1720
1705
  style
1721
1706
  },
1722
1707
  (0, import_react18.createElement)(IconButton, { variant: "plain", size, icon: "\u2212", label: decreaseLabel, disabled, onClick: () => {
@@ -1724,8 +1709,8 @@ function NumberInput(props) {
1724
1709
  } }),
1725
1710
  // 中段(数字 + 后缀)成组居中:消费端把宽度拉大时,「−」钉最左、「+」钉最右、数字组始终居中
1726
1711
  // (用户 2026-10-18:加减号必须在最左 / 最右,宽度由消费端调)。
1727
- (0, import_react18.createElement)("span", { className: "dsh-tdt-num__mid" }, (0, import_react18.createElement)("input", {
1728
- className: "dsh-tdt-num__input",
1712
+ (0, import_react18.createElement)("span", { className: "dshpc-num__mid" }, (0, import_react18.createElement)("input", {
1713
+ className: "dshpc-num__input",
1729
1714
  ...inputWidth === void 0 ? {} : { style: { width: `${inputWidth}px` } },
1730
1715
  value: text,
1731
1716
  disabled,
@@ -1741,7 +1726,7 @@ function NumberInput(props) {
1741
1726
  if (event.key === "Enter")
1742
1727
  commit(text);
1743
1728
  }
1744
- }), suffix !== void 0 ? (0, import_react18.createElement)("span", { className: "dsh-tdt-num__suffix" }, suffix) : null),
1729
+ }), suffix !== void 0 ? (0, import_react18.createElement)("span", { className: "dshpc-num__suffix" }, suffix) : null),
1745
1730
  (0, import_react18.createElement)(IconButton, { variant: "plain", size, icon: "+", label: increaseLabel, disabled, onClick: () => {
1746
1731
  bump(1);
1747
1732
  } })
@@ -1923,7 +1908,7 @@ var DICT2 = {
1923
1908
  designTokenHint: "\u989C\u8272\u5168\u90E8\u6765\u81EA design \u7684 token\uFF1B\u5207\u6362\u53F3\u4E0A\u89D2\u660E\u6697\uFF0C\u4E0B\u9762\u4F1A\u8DDF\u7740\u53D8",
1924
1909
  designInjectHint: "\u63A7\u4EF6\u6E32\u67D3\u524D\u8C03\u4E00\u6B21 setStyleKit + ensureControls\uFF0Ctoken \u4E0E\u63A7\u4EF6 CSS \u7531 kit \u6CE8\u5165 <head>",
1925
1910
  fieldHintDate: "\u4EFB\u52A1\u81EA\u8BE5\u65E5\u8D77\u5F00\u59CB\u6267\u884C\u3002\u53EF\u63D0\u524D\u521B\u5EFA\u4EFB\u52A1\uFF0C\u81F3\u8BE5\u65E5\u81EA\u52A8\u5F00\u8DD1\uFF1B\u300C\u6BCF N \u5468\u300D\u4EA6\u81EA\u8BE5\u65E5\u8D77\u7B97\u9996\u5468\u3002",
1926
- loadingNote: "Loading \u662F\u8D34\u5230\u4E3B\u5BB9\u5668\u53F3\u4E0B\u89D2\u7684\u6307\u793A\u5668\uFF08anchorId \u9ED8\u8BA4 dsh-tdt-main\uFF09\uFF0C\u6B64\u5904\u4E0D\u6E32\u67D3\u4EE5\u514D\u906E\u6321\u3002",
1911
+ loadingNote: "Loading \u662F\u8D34\u5230\u4E3B\u5BB9\u5668\u53F3\u4E0B\u89D2\u7684\u6307\u793A\u5668\uFF08anchorId \u9ED8\u8BA4 dshpc-main\uFF09\uFF0C\u6B64\u5904\u4E0D\u6E32\u67D3\u4EE5\u514D\u906E\u6321\u3002",
1927
1912
  secDesign: "\u8BBE\u8BA1\u57FA\u7840",
1928
1913
  secButtons: "\u6309\u94AE\u4E0E\u8F93\u5165",
1929
1914
  secPickers: "\u9009\u62E9\u5668",
@@ -1961,7 +1946,7 @@ var DICT2 = {
1961
1946
  designTokenHint: "All colors come from design tokens; switch light/dark at top-right and these update with it",
1962
1947
  designInjectHint: "Call setStyleKit + ensureControls once before controls render; the kit injects tokens and control CSS into <head>",
1963
1948
  fieldHintDate: 'The task runs starting from this date. You can create it ahead of time and it auto-starts on that day; "every N weeks" also counts its first week from this date.',
1964
- loadingNote: "Loading is an indicator pinned to the bottom-right of the main container (anchorId defaults to dsh-tdt-main); not rendered here to avoid covering content.",
1949
+ loadingNote: "Loading is an indicator pinned to the bottom-right of the main container (anchorId defaults to dshpc-main); not rendered here to avoid covering content.",
1965
1950
  secDesign: "Design basics",
1966
1951
  secButtons: "Buttons & inputs",
1967
1952
  secPickers: "Pickers",
@@ -1998,17 +1983,17 @@ function t2(key, vars) {
1998
1983
 
1999
1984
  // packages/demo/src/sections/design.tsx
2000
1985
  var TOKENS = [
2001
- { label: "business", cssVar: "--tdt-business" },
2002
- { label: "success", cssVar: "--tdt-success" },
2003
- { label: "warning", cssVar: "--tdt-warning" },
2004
- { label: "danger", cssVar: "--tdt-danger" },
2005
- { label: "surface-1", cssVar: "--tdt-surface-1" },
2006
- { label: "surface-2", cssVar: "--tdt-surface-2" },
2007
- { label: "surface-sunken", cssVar: "--tdt-surface-sunken" },
2008
- { label: "border", cssVar: "--tdt-border" },
2009
- { label: "fg", cssVar: "--tdt-fg" },
2010
- { label: "fg-3", cssVar: "--tdt-fg-3" },
2011
- { label: "fg-4", cssVar: "--tdt-fg-4" }
1986
+ { label: "business", cssVar: "--dshpc-business" },
1987
+ { label: "success", cssVar: "--dshpc-success" },
1988
+ { label: "warning", cssVar: "--dshpc-warning" },
1989
+ { label: "danger", cssVar: "--dshpc-danger" },
1990
+ { label: "surface-1", cssVar: "--dshpc-surface-1" },
1991
+ { label: "surface-2", cssVar: "--dshpc-surface-2" },
1992
+ { label: "surface-sunken", cssVar: "--dshpc-surface-sunken" },
1993
+ { label: "border", cssVar: "--dshpc-border" },
1994
+ { label: "fg", cssVar: "--dshpc-fg" },
1995
+ { label: "fg-3", cssVar: "--dshpc-fg-3" },
1996
+ { label: "fg-4", cssVar: "--dshpc-fg-4" }
2012
1997
  ];
2013
1998
  function DesignSection() {
2014
1999
  return (0, import_react19.createElement)(
@@ -2029,11 +2014,11 @@ function DesignSection() {
2029
2014
  height: "40px",
2030
2015
  borderRadius: "6px",
2031
2016
  background: `var(${t3.cssVar})`,
2032
- border: "1px solid var(--tdt-border-faint)"
2017
+ border: "1px solid var(--dshpc-border-faint)"
2033
2018
  }
2034
2019
  }),
2035
2020
  (0, import_react19.createElement)("div", { style: { fontSize: "11px", marginTop: "4px" } }, t3.label),
2036
- (0, import_react19.createElement)("div", { style: { fontSize: "10px", color: "var(--tdt-fg-4)" } }, t3.cssVar)
2021
+ (0, import_react19.createElement)("div", { style: { fontSize: "10px", color: "var(--dshpc-fg-4)" } }, t3.cssVar)
2037
2022
  )
2038
2023
  )
2039
2024
  )
@@ -2046,12 +2031,12 @@ function DesignSection() {
2046
2031
  code: `import { createStyleKit } from 'dsh-plugin-core/design'
2047
2032
  import { ensureControls, setStyleKit } from 'dsh-plugin-core/ui'
2048
2033
 
2049
- setStyleKit(createStyleKit({ id: 'my-plugin-ui', prefix: 'myplugin' }))
2034
+ setStyleKit(createStyleKit({ id: 'dsh-plugin-core-demo-ui' }))
2050
2035
  ensureControls()`
2051
2036
  },
2052
2037
  (0, import_react19.createElement)(
2053
2038
  "div",
2054
- { style: { color: "var(--tdt-fg-3)", fontSize: "12px" } },
2039
+ { style: { color: "var(--dshpc-fg-3)", fontSize: "12px" } },
2055
2040
  t2("designInjectNote")
2056
2041
  )
2057
2042
  )
@@ -2094,7 +2079,7 @@ function ButtonsSection() {
2094
2079
  (0, import_react20.createElement)(
2095
2080
  "div",
2096
2081
  { style: { display: "flex", alignItems: "center", gap: "6px" } },
2097
- (0, import_react20.createElement)("span", { style: { color: "var(--tdt-fg-2)", fontSize: "13px", flex: "none" } }, "\u5F00\u59CB\u65F6\u95F4"),
2082
+ (0, import_react20.createElement)("span", { style: { color: "var(--dshpc-fg-2)", fontSize: "13px", flex: "none" } }, "\u5F00\u59CB\u65F6\u95F4"),
2098
2083
  (0, import_react20.createElement)(Input, { value: text, onChange: setText, placeholder: "\u9009\u62E9\u65E5\u671F" }),
2099
2084
  (0, import_react20.createElement)(FieldHint, { text: t2("fieldHintDate") })
2100
2085
  ),
@@ -2152,7 +2137,7 @@ function ButtonsSection() {
2152
2137
  // 星期多选方块(蓝底选中、近似方形)
2153
2138
  (0, import_react20.createElement)(Segmented, {
2154
2139
  multiple: true,
2155
- className: "dsh-tdt-seg--weekday",
2140
+ className: "dshpc-seg--weekday",
2156
2141
  label: "\u661F\u671F",
2157
2142
  items: [
2158
2143
  { value: "1", label: "\u4E00" },
@@ -2326,12 +2311,12 @@ function FeedbackSection() {
2326
2311
  (0, import_react22.createElement)(EmptyState, { text: "\u6682\u65E0\u6570\u636E" }),
2327
2312
  (0, import_react22.createElement)(
2328
2313
  "div",
2329
- { style: { border: "1px solid var(--tdt-border-faint)", borderRadius: "8px", padding: "10px" } },
2314
+ { style: { border: "1px solid var(--dshpc-border-faint)", borderRadius: "8px", padding: "10px" } },
2330
2315
  boom ? (0, import_react22.createElement)(ErrorBoundary, null, (0, import_react22.createElement)(Boom, null)) : (0, import_react22.createElement)(Button, { variant: "danger", onClick: () => setBoom(true) }, "\u70B9\u6211\u629B\u9519\uFF08\u770B\u8FB9\u754C\u515C\u5E95\uFF09")
2331
2316
  ),
2332
2317
  (0, import_react22.createElement)(
2333
2318
  "div",
2334
- { style: { color: "var(--tdt-fg-3)", fontSize: "12px" } },
2319
+ { style: { color: "var(--dshpc-fg-3)", fontSize: "12px" } },
2335
2320
  t2("loadingNote")
2336
2321
  )
2337
2322
  )
@@ -2361,10 +2346,10 @@ function DisplaySection() {
2361
2346
  { style: { display: "flex", alignItems: "baseline", gap: "8px" } },
2362
2347
  (0, import_react23.createElement)(
2363
2348
  "div",
2364
- { style: { fontWeight: 600, flex: "1 1 auto", minWidth: 0, fontSize: "var(--tdt-font-md)" } },
2349
+ { style: { fontWeight: 600, flex: "1 1 auto", minWidth: 0, fontSize: "var(--dshpc-font-md)" } },
2365
2350
  "\u5C06 OpenSSH \u4E0A\u6240\u6709 NPM \u5B89\u88C5\u8FC1\u79FB\u5230 PNPM"
2366
2351
  ),
2367
- (0, import_react23.createElement)("div", { style: { color: "var(--tdt-fg-3)", fontSize: "var(--tdt-font-xs)", flex: "none" } }, "2026-10-18 \u521B\u5EFA")
2352
+ (0, import_react23.createElement)("div", { style: { color: "var(--dshpc-fg-3)", fontSize: "var(--dshpc-font-xs)", flex: "none" } }, "2026-10-18 \u521B\u5EFA")
2368
2353
  ),
2369
2354
  (0, import_react23.createElement)(
2370
2355
  "div",
@@ -2384,7 +2369,7 @@ function DisplaySection() {
2384
2369
  (a) => (0, import_react23.createElement)(
2385
2370
  Card,
2386
2371
  { key: a, accent: a, style: { padding: "8px 12px" } },
2387
- (0, import_react23.createElement)("div", { style: { fontSize: "var(--tdt-font-sm)", color: "var(--tdt-fg-2)" } }, `accent="${a}"`)
2372
+ (0, import_react23.createElement)("div", { style: { fontSize: "var(--dshpc-font-sm)", color: "var(--dshpc-fg-2)" } }, `accent="${a}"`)
2388
2373
  )
2389
2374
  )
2390
2375
  )
@@ -2395,21 +2380,21 @@ function DisplaySection() {
2395
2380
  { title: t2("demoStripTitle"), hint: t2("displayStripHint") },
2396
2381
  (0, import_react23.createElement)(
2397
2382
  "div",
2398
- { style: { maxWidth: "640px", background: "var(--tdt-surface-sunken)", borderRadius: "8px", overflow: "hidden" } },
2383
+ { style: { maxWidth: "640px", background: "var(--dshpc-surface-sunken)", borderRadius: "8px", overflow: "hidden" } },
2399
2384
  (0, import_react23.createElement)(
2400
2385
  StripCard,
2401
2386
  {
2402
2387
  accent: "business",
2403
- action: (0, import_react23.createElement)("span", { style: { color: "var(--tdt-fg-3)", fontSize: "var(--tdt-font-xs)", flex: "none" } }, "2026-10-18 \u5F00\u59CB \xB7 \u4ECA\u5929")
2388
+ action: (0, import_react23.createElement)("span", { style: { color: "var(--dshpc-fg-3)", fontSize: "var(--dshpc-font-xs)", flex: "none" } }, "2026-10-18 \u5F00\u59CB \xB7 \u4ECA\u5929")
2404
2389
  },
2405
- (0, import_react23.createElement)("div", { style: { fontWeight: 600, fontSize: "var(--tdt-font-md)" } }, "DAY:1 - Docker \u955C\u50CF\u7248\u672C\u68C0\u67E5\u5668"),
2390
+ (0, import_react23.createElement)("div", { style: { fontWeight: 600, fontSize: "var(--dshpc-font-md)" } }, "DAY:1 - Docker \u955C\u50CF\u7248\u672C\u68C0\u67E5\u5668"),
2406
2391
  (0, import_react23.createElement)(
2407
2392
  "div",
2408
2393
  { style: { display: "flex", alignItems: "center", gap: "6px", marginTop: "4px", flexWrap: "wrap" } },
2409
2394
  (0, import_react23.createElement)(Chip, null, "NAS-Docker"),
2410
2395
  (0, import_react23.createElement)(
2411
2396
  "span",
2412
- { style: { color: "var(--tdt-fg-3)", fontSize: "var(--tdt-font-xs)" } },
2397
+ { style: { color: "var(--dshpc-fg-3)", fontSize: "var(--dshpc-font-xs)" } },
2413
2398
  "\u8BA1\u5212 02:00 \xB7 \u5B9E\u9645 02:00 \xB7 \u65F6\u957F 04:02 \xB7 2.4M"
2414
2399
  )
2415
2400
  )
@@ -2417,8 +2402,8 @@ function DisplaySection() {
2417
2402
  (0, import_react23.createElement)(
2418
2403
  StripCard,
2419
2404
  { accent: "success" },
2420
- (0, import_react23.createElement)("div", { style: { fontWeight: 600, fontSize: "var(--tdt-font-md)" } }, "\u6267\u884C\u6210\u529F"),
2421
- (0, import_react23.createElement)("div", { style: { color: "var(--tdt-fg-3)", fontSize: "var(--tdt-font-xs)", marginTop: "4px" } }, "\u8017\u65F6 12s \xB7 3 \u4E2A\u6587\u4EF6\u53D8\u66F4")
2405
+ (0, import_react23.createElement)("div", { style: { fontWeight: 600, fontSize: "var(--dshpc-font-md)" } }, "\u6267\u884C\u6210\u529F"),
2406
+ (0, import_react23.createElement)("div", { style: { color: "var(--dshpc-fg-3)", fontSize: "var(--dshpc-font-xs)", marginTop: "4px" } }, "\u8017\u65F6 12s \xB7 3 \u4E2A\u6587\u4EF6\u53D8\u66F4")
2422
2407
  ),
2423
2408
  (0, import_react23.createElement)(
2424
2409
  StripCard,
@@ -2427,10 +2412,10 @@ function DisplaySection() {
2427
2412
  expanded: open,
2428
2413
  onToggle: () => setOpen(!open),
2429
2414
  action: (0, import_react23.createElement)(Button, { size: "sm", variant: "ghost" }, "\u67E5\u770B\u4F1A\u8BDD"),
2430
- panel: (0, import_react23.createElement)("div", { style: { fontSize: "12px", color: "var(--tdt-fg-3)" } }, "\u5C55\u5F00\u540E\u7684\u8BE6\u60C5\u9762\u677F")
2415
+ panel: (0, import_react23.createElement)("div", { style: { fontSize: "12px", color: "var(--dshpc-fg-3)" } }, "\u5C55\u5F00\u540E\u7684\u8BE6\u60C5\u9762\u677F")
2431
2416
  },
2432
- (0, import_react23.createElement)("div", { style: { fontWeight: 600, fontSize: "var(--tdt-font-md)" } }, "\u6709\u8B66\u544A\uFF08\u53EF\u6298\u53E0\uFF0C\u70B9\u53F3\u4FA7\u7BAD\u5934\uFF09"),
2433
- (0, import_react23.createElement)("div", { style: { color: "var(--tdt-fg-3)", fontSize: "var(--tdt-font-xs)", marginTop: "4px" } }, "\u8017\u65F6 8s \xB7 1 \u4E2A\u8B66\u544A")
2417
+ (0, import_react23.createElement)("div", { style: { fontWeight: 600, fontSize: "var(--dshpc-font-md)" } }, "\u6709\u8B66\u544A\uFF08\u53EF\u6298\u53E0\uFF0C\u70B9\u53F3\u4FA7\u7BAD\u5934\uFF09"),
2418
+ (0, import_react23.createElement)("div", { style: { color: "var(--dshpc-fg-3)", fontSize: "var(--dshpc-font-xs)", marginTop: "4px" } }, "\u8017\u65F6 8s \xB7 1 \u4E2A\u8B66\u544A")
2434
2419
  )
2435
2420
  )
2436
2421
  ),
@@ -2508,8 +2493,8 @@ function UtilsSection() {
2508
2493
  )
2509
2494
  );
2510
2495
  }
2511
- var th = { textAlign: "left", padding: "6px 14px 6px 0", color: "var(--tdt-fg-3)" };
2512
- var td = { padding: "5px 14px 5px 0", borderTop: "1px solid var(--tdt-border-faint)" };
2496
+ var th = { textAlign: "left", padding: "6px 14px 6px 0", color: "var(--dshpc-fg-3)" };
2497
+ var td = { padding: "5px 14px 5px 0", borderTop: "1px solid var(--dshpc-border-faint)" };
2513
2498
 
2514
2499
  // packages/demo/src/sections/explorer.tsx
2515
2500
  var import_react27 = require("react");
@@ -2608,9 +2593,9 @@ function FilePreview(props) {
2608
2593
  if (failed)
2609
2594
  return (0, import_react25.createElement)(EmptyState, { text: tt("explorerFailed"), translate: tt });
2610
2595
  if (kind === "image") {
2611
- return imageUrl === null ? (0, import_react25.createElement)("div", { className: "dsh-tdt-exp__note" }, tt("explorerLoading")) : (0, import_react25.createElement)("img", { className: "dsh-tdt-exp__image", src: imageUrl, alt: props.path });
2596
+ return imageUrl === null ? (0, import_react25.createElement)("div", { className: "dshpc-exp__note" }, tt("explorerLoading")) : (0, import_react25.createElement)("img", { className: "dshpc-exp__image", src: imageUrl, alt: props.path });
2612
2597
  }
2613
- return text === null ? (0, import_react25.createElement)("div", { className: "dsh-tdt-exp__note" }, tt("explorerLoading")) : (0, import_react25.createElement)("pre", { className: "dsh-tdt-exp__text" }, text);
2598
+ return text === null ? (0, import_react25.createElement)("div", { className: "dshpc-exp__note" }, tt("explorerLoading")) : (0, import_react25.createElement)("pre", { className: "dshpc-exp__text" }, text);
2614
2599
  }
2615
2600
 
2616
2601
  // dist/explorer/ExplorerPanel.js
@@ -2651,21 +2636,21 @@ function ExplorerPanel(props) {
2651
2636
  props.onSelect?.(null);
2652
2637
  setDir(next);
2653
2638
  };
2654
- const crumbBar = (0, import_react26.createElement)("div", { className: "dsh-tdt-exp__crumbs" }, (0, import_react26.createElement)("button", { type: "button", className: "dsh-tdt-exp__crumb", onClick: () => goto("") }, tt("explorerRoot")), crumbs.map((c, i) => {
2639
+ const crumbBar = (0, import_react26.createElement)("div", { className: "dshpc-exp__crumbs" }, (0, import_react26.createElement)("button", { type: "button", className: "dshpc-exp__crumb", onClick: () => goto("") }, tt("explorerRoot")), crumbs.map((c, i) => {
2655
2640
  const isLast = i === crumbs.length - 1;
2656
2641
  const upto = crumbs.slice(0, i + 1).join("/");
2657
- return (0, import_react26.createElement)("span", { key: upto }, (0, import_react26.createElement)("span", { className: "dsh-tdt-exp__sep" }, " / "), (0, import_react26.createElement)("button", {
2642
+ return (0, import_react26.createElement)("span", { key: upto }, (0, import_react26.createElement)("span", { className: "dshpc-exp__sep" }, " / "), (0, import_react26.createElement)("button", {
2658
2643
  type: "button",
2659
- className: `dsh-tdt-exp__crumb${isLast ? " dsh-tdt-exp__crumb--current" : ""}`,
2644
+ className: `dshpc-exp__crumb${isLast ? " dshpc-exp__crumb--current" : ""}`,
2660
2645
  onClick: () => goto(upto)
2661
2646
  }, c));
2662
- }), (0, import_react26.createElement)("span", { className: "dsh-tdt-exp__tools" }, (0, import_react26.createElement)("button", {
2647
+ }), (0, import_react26.createElement)("span", { className: "dshpc-exp__tools" }, (0, import_react26.createElement)("button", {
2663
2648
  type: "button",
2664
- className: "dsh-tdt-exp__crumb",
2649
+ className: "dshpc-exp__crumb",
2665
2650
  disabled: dir === "",
2666
2651
  onClick: () => goto(parentOf(dir))
2667
- }, tt("explorerUp")), (0, import_react26.createElement)("button", { type: "button", className: "dsh-tdt-exp__crumb", onClick: () => setNonce(nonce + 1) }, tt("explorerRefresh"))));
2668
- const tree = loading ? (0, import_react26.createElement)("div", { className: "dsh-tdt-exp__note" }, tt("explorerLoading")) : failed ? (0, import_react26.createElement)(EmptyState, { text: tt("explorerFailed"), translate: tt }) : entries.length === 0 ? (0, import_react26.createElement)("div", { className: "dsh-tdt-exp__note" }, props.emptyText ?? tt("explorerEmptyDir")) : (0, import_react26.createElement)("div", { className: "dsh-tdt-exp__tree" }, [...entries].sort((a, b) => {
2652
+ }, tt("explorerUp")), (0, import_react26.createElement)("button", { type: "button", className: "dshpc-exp__crumb", onClick: () => setNonce(nonce + 1) }, tt("explorerRefresh"))));
2653
+ const tree = loading ? (0, import_react26.createElement)("div", { className: "dshpc-exp__note" }, tt("explorerLoading")) : failed ? (0, import_react26.createElement)(EmptyState, { text: tt("explorerFailed"), translate: tt }) : entries.length === 0 ? (0, import_react26.createElement)("div", { className: "dshpc-exp__note" }, props.emptyText ?? tt("explorerEmptyDir")) : (0, import_react26.createElement)("div", { className: "dshpc-exp__tree" }, [...entries].sort((a, b) => {
2669
2654
  if (a.type !== b.type)
2670
2655
  return a.type === "directory" ? -1 : 1;
2671
2656
  return a.name.localeCompare(b.name);
@@ -2674,7 +2659,7 @@ function ExplorerPanel(props) {
2674
2659
  const isDir = e.type === "directory";
2675
2660
  return (0, import_react26.createElement)("div", {
2676
2661
  key: full,
2677
- className: `dsh-tdt-exp__item${selected === full ? " dsh-tdt-exp__item--active" : ""}`,
2662
+ className: `dshpc-exp__item${selected === full ? " dshpc-exp__item--active" : ""}`,
2678
2663
  onClick: () => {
2679
2664
  if (isDir)
2680
2665
  goto(full);
@@ -2684,9 +2669,9 @@ function ExplorerPanel(props) {
2684
2669
  props.onOpenFile?.(full);
2685
2670
  }
2686
2671
  }
2687
- }, (0, import_react26.createElement)("span", { className: "dsh-tdt-exp__icon" }, isDir ? "\u25B8" : "\xB7"), (0, import_react26.createElement)("span", { className: "dsh-tdt-exp__name" }, e.name), e.size === void 0 ? null : (0, import_react26.createElement)("span", { className: "dsh-tdt-exp__size" }, formatBytes(e.size)));
2688
- }), truncated ? (0, import_react26.createElement)("div", { className: "dsh-tdt-exp__note" }, tt("explorerTruncated")) : null);
2689
- return (0, import_react26.createElement)("div", { className: "dsh-tdt-exp" }, crumbBar, (0, import_react26.createElement)("div", { className: "dsh-tdt-exp__body" }, tree, (0, import_react26.createElement)("div", { className: "dsh-tdt-exp__preview" }, selected === null ? null : (0, import_react26.createElement)(FilePreview, {
2672
+ }, (0, import_react26.createElement)("span", { className: "dshpc-exp__icon" }, isDir ? "\u25B8" : "\xB7"), (0, import_react26.createElement)("span", { className: "dshpc-exp__name" }, e.name), e.size === void 0 ? null : (0, import_react26.createElement)("span", { className: "dshpc-exp__size" }, formatBytes(e.size)));
2673
+ }), truncated ? (0, import_react26.createElement)("div", { className: "dshpc-exp__note" }, tt("explorerTruncated")) : null);
2674
+ return (0, import_react26.createElement)("div", { className: "dshpc-exp" }, crumbBar, (0, import_react26.createElement)("div", { className: "dshpc-exp__body" }, tree, (0, import_react26.createElement)("div", { className: "dshpc-exp__preview" }, selected === null ? null : (0, import_react26.createElement)(FilePreview, {
2690
2675
  workspaceFiles: props.workspaceFiles,
2691
2676
  sessionId: props.sessionId,
2692
2677
  path: selected,
@@ -2848,7 +2833,7 @@ function ExplorerSection() {
2848
2833
  width: "520px",
2849
2834
  height: "380px",
2850
2835
  overflow: "hidden",
2851
- border: "1px solid var(--tdt-border)",
2836
+ border: "1px solid var(--dshpc-border)",
2852
2837
  borderRadius: "8px"
2853
2838
  }
2854
2839
  },
@@ -2861,7 +2846,7 @@ function ExplorerSection() {
2861
2846
  ),
2862
2847
  (0, import_react27.createElement)(
2863
2848
  "div",
2864
- { style: { fontSize: "12px", color: "var(--tdt-fg-3)", alignSelf: "center" } },
2849
+ { style: { fontSize: "12px", color: "var(--dshpc-fg-3)", alignSelf: "center" } },
2865
2850
  selected === null ? "\u70B9\u5DE6\u4FA7\u6587\u4EF6\u8BD5\u8BD5" : `\u5DF2\u9009\u4E2D\uFF1A${selected}`
2866
2851
  )
2867
2852
  )
@@ -2911,24 +2896,24 @@ function SessionPreview(props) {
2911
2896
  alive = false;
2912
2897
  };
2913
2898
  }, [props.sessionId, props.source, nonce]);
2914
- const body = loading ? (0, import_react28.createElement)("div", { className: "dsh-tdt-ses__note" }, tt("sessionLoading")) : failed ? (0, import_react28.createElement)(EmptyState, {
2899
+ const body = loading ? (0, import_react28.createElement)("div", { className: "dshpc-ses__note" }, tt("sessionLoading")) : failed ? (0, import_react28.createElement)(EmptyState, {
2915
2900
  text: tt("sessionFailed"),
2916
2901
  translate: tt,
2917
- action: (0, import_react28.createElement)("button", { type: "button", className: "dsh-tdt-error__retry", onClick: () => setNonce(nonce + 1) }, tt("errorRetry"))
2918
- }) : messages.length === 0 ? (0, import_react28.createElement)(EmptyState, { text: tt("sessionEmpty"), translate: tt }) : (0, import_react28.createElement)("div", { className: "dsh-tdt-ses__list" }, messages.map((m) => props.renderMessage !== void 0 ? (0, import_react28.createElement)("div", { key: m.id }, props.renderMessage(m)) : (0, import_react28.createElement)("div", { key: m.id, className: `dsh-tdt-ses__msg dsh-tdt-ses__msg--${m.role}` }, (0, import_react28.createElement)("div", { className: "dsh-tdt-ses__head" }, tt(ROLE_LABEL_KEY[m.role])), (0, import_react28.createElement)("pre", { className: "dsh-tdt-ses__text" }, m.text), (m.attachments ?? []).length === 0 ? null : (0, import_react28.createElement)("div", { className: "dsh-tdt-ses__atts" }, (m.attachments ?? []).map((a) => (0, import_react28.createElement)("button", {
2902
+ action: (0, import_react28.createElement)("button", { type: "button", className: "dshpc-error__retry", onClick: () => setNonce(nonce + 1) }, tt("errorRetry"))
2903
+ }) : messages.length === 0 ? (0, import_react28.createElement)(EmptyState, { text: tt("sessionEmpty"), translate: tt }) : (0, import_react28.createElement)("div", { className: "dshpc-ses__list" }, messages.map((m) => props.renderMessage !== void 0 ? (0, import_react28.createElement)("div", { key: m.id }, props.renderMessage(m)) : (0, import_react28.createElement)("div", { key: m.id, className: `dshpc-ses__msg dshpc-ses__msg--${m.role}` }, (0, import_react28.createElement)("div", { className: "dshpc-ses__head" }, tt(ROLE_LABEL_KEY[m.role])), (0, import_react28.createElement)("pre", { className: "dshpc-ses__text" }, m.text), (m.attachments ?? []).length === 0 ? null : (0, import_react28.createElement)("div", { className: "dshpc-ses__atts" }, (m.attachments ?? []).map((a) => (0, import_react28.createElement)("button", {
2919
2904
  key: a.path,
2920
2905
  type: "button",
2921
- className: "dsh-tdt-ses__att",
2906
+ className: "dshpc-ses__att",
2922
2907
  onClick: () => props.onOpenFile?.(a.path)
2923
2908
  }, a.name, a.bytes === void 0 ? null : ` ${formatBytes(a.bytes)}`))))));
2924
2909
  if (variant === "modal") {
2925
2910
  return (0, import_react28.createElement)(Modal, {
2926
2911
  title: props.title ?? props.sessionId,
2927
2912
  onClose: props.onClose,
2928
- children: (0, import_react28.createElement)("div", { className: "dsh-tdt-ses", style: { minWidth: "min(720px, 88vw)" } }, body)
2913
+ children: (0, import_react28.createElement)("div", { className: "dshpc-ses", style: { minWidth: "min(720px, 88vw)" } }, body)
2929
2914
  });
2930
2915
  }
2931
- return (0, import_react28.createElement)("div", { className: `dsh-tdt-ses dsh-tdt-ses--${variant}` }, props.onClose === void 0 ? null : (0, import_react28.createElement)("div", { className: "dsh-tdt-ses__head" }, (0, import_react28.createElement)("button", { type: "button", className: "dsh-tdt-exp__crumb", onClick: props.onClose }, "\u2715")), body);
2916
+ return (0, import_react28.createElement)("div", { className: `dshpc-ses dshpc-ses--${variant}` }, props.onClose === void 0 ? null : (0, import_react28.createElement)("div", { className: "dshpc-ses__head" }, (0, import_react28.createElement)("button", { type: "button", className: "dshpc-exp__crumb", onClick: props.onClose }, "\u2715")), body);
2932
2917
  }
2933
2918
 
2934
2919
  // packages/demo/src/sections/session.tsx
@@ -2968,13 +2953,13 @@ function Demo(props) {
2968
2953
  style: {
2969
2954
  marginBottom: "28px",
2970
2955
  padding: "16px 18px",
2971
- border: "1px solid var(--tdt-border-faint)",
2956
+ border: "1px solid var(--dshpc-border-faint)",
2972
2957
  borderRadius: "8px",
2973
- background: "var(--tdt-surface-1)"
2958
+ background: "var(--dshpc-surface-1)"
2974
2959
  }
2975
2960
  },
2976
2961
  (0, import_react30.createElement)("h3", { style: { margin: "0 0 2px", fontSize: "15px" } }, props.title),
2977
- props.hint === void 0 ? null : (0, import_react30.createElement)("div", { style: { color: "var(--tdt-fg-3)", fontSize: "12px", marginBottom: "12px" } }, props.hint),
2962
+ props.hint === void 0 ? null : (0, import_react30.createElement)("div", { style: { color: "var(--dshpc-fg-3)", fontSize: "12px", marginBottom: "12px" } }, props.hint),
2978
2963
  (0, import_react30.createElement)("div", { style: { marginBottom: props.code === void 0 ? 0 : "12px" } }, props.children ?? null),
2979
2964
  props.code === void 0 ? null : (0, import_react30.createElement)(
2980
2965
  "pre",
@@ -2984,9 +2969,9 @@ function Demo(props) {
2984
2969
  padding: "10px 12px",
2985
2970
  borderRadius: "6px",
2986
2971
  overflowX: "auto",
2987
- background: "var(--tdt-code-surface)",
2988
- color: "var(--tdt-fg)",
2989
- font: "var(--tdt-code-font)",
2972
+ background: "var(--dshpc-code-surface)",
2973
+ color: "var(--dshpc-fg)",
2974
+ font: "var(--dshpc-code-font)",
2990
2975
  fontSize: "12px"
2991
2976
  }
2992
2977
  },
@@ -2999,7 +2984,7 @@ function SectionHead2(props) {
2999
2984
  "div",
3000
2985
  { id: `sec-${props.id}`, style: { margin: "28px 0 14px" } },
3001
2986
  (0, import_react30.createElement)("h2", { style: { margin: 0, fontSize: "20px" } }, props.title),
3002
- (0, import_react30.createElement)("div", { style: { height: "3px", width: "36px", background: "var(--tdt-business)", borderRadius: "2px", marginTop: "6px" } })
2987
+ (0, import_react30.createElement)("div", { style: { height: "3px", width: "36px", background: "var(--dshpc-business)", borderRadius: "2px", marginTop: "6px" } })
3003
2988
  );
3004
2989
  }
3005
2990
  var ALL_SECTIONS = [
@@ -3022,12 +3007,8 @@ function Sections(props) {
3022
3007
  );
3023
3008
  }
3024
3009
 
3025
- // packages/demo/src/client/token-alias.ts
3026
- var ALIAS_TOKEN_NAMES = ["accent", "active", "border", "border-faint", "border-heavy", "border-strong", "business", "chip-bg", "chip-bg-hover", "code-font", "code-surface", "control-h-lg", "control-h-md", "control-h-sm", "danger", "dur", "dur-fast", "ease", "fg", "fg-2", "fg-3", "fg-4", "fg-dim", "fg-inverse", "focus", "font-lg", "font-md", "font-mono", "font-sm", "font-xs", "hover", "line-lg", "line-md", "line-sm", "link", "on-signal", "on-solid", "open-bg", "open-bg-soft", "radius-md", "radius-sm", "radius-xs", "shadow-1", "shadow-2", "shadow-raised", "solid", "space-1", "space-2", "space-3", "space-4", "success", "surface-1", "surface-2", "surface-base", "surface-menu", "surface-sunken", "warning", "warning-label", "z-dock", "z-menu"];
3027
-
3028
3010
  // packages/demo/src/client/index.tsx
3029
3011
  var PANEL_ID = "dsh-plugin-core-demo";
3030
- var PREFIX = "dshpc";
3031
3012
  var localeRuntime;
3032
3013
  function useLocaleTick() {
3033
3014
  const [, setTick] = (0, import_react31.useState)(0);
@@ -3039,10 +3020,6 @@ function useLocaleTick() {
3039
3020
  });
3040
3021
  }, []);
3041
3022
  }
3042
- function aliasCss() {
3043
- const decls = ALIAS_TOKEN_NAMES.map((n) => `--tdt-${n}:var(--${PREFIX}-${n})`);
3044
- return `body{${decls.join(";")}}`;
3045
- }
3046
3023
  function DemoPage() {
3047
3024
  useLocaleTick();
3048
3025
  const [active, setActive] = (0, import_react31.useState)(ALL_SECTIONS[0].id);
@@ -3135,10 +3112,9 @@ function PanelIcon() {
3135
3112
  );
3136
3113
  }
3137
3114
  function apply(ctx) {
3138
- const kit = createStyleKit({ id: "dsh-plugin-core-plugin", prefix: PREFIX });
3115
+ const kit = createStyleKit({ id: "dsh-plugin-core-plugin" });
3139
3116
  setStyleKit(kit);
3140
3117
  ensureControls(kit);
3141
- kit.registerStyle("tdt-alias", aliasCss());
3142
3118
  kit.ensureStyles();
3143
3119
  let jump = () => {
3144
3120
  };