dsh-plugin-core-demo 0.2.6 → 0.2.8

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 (2) hide show
  1. package/dist/client.js +63 -34
  2. package/package.json +1 -1
package/dist/client.js CHANGED
@@ -64,18 +64,17 @@ body{
64
64
  /* \u4EA4\u4ED8\u6587\u4EF6\u5361\u90A3\u79CD\u300C\u6D45\u5E95\u76D8 + hover \u52A0\u6DF1\u300D\u4E24\u62CD */
65
65
  --dshpc-plate:var(--dsw-static-neutral-50,#fafafa);
66
66
  --dshpc-plate-hover:var(--dsw-static-neutral-100,#f5f5f5);
67
- /* \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
68
- \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 */
67
+ /* \u26A0\uFE0F \u8FD9\u4E9B**\u56FA\u5B9A\u4E2D\u6027\u9762\u4E00\u5F8B\u7528 rgba \u5B57\u9762\u91CF**\uFF082026-10-19 \u771F\u673A\u6559\u8BAD\uFF09\uFF1A\u4E0D\u8981\u5199\u6210
68
+ \u300Crgba \u56DE\u9000\u884C + \u5D4C --dsw-static-* \u7684 color-mix \u884C\u300D\u4E24\u6761\u540C\u540D\u58F0\u660E\u2014\u2014\u81EA\u5B9A\u4E49\u5C5E\u6027**\u540E\u8005\u6052\u80DC**\uFF0C
69
+ \u54EA\u6015\u5B83\u7684\u503C\u5728\u5BBF\u4E3B\u91CC\u7B97\u4E0D\u51FA\u6765\uFF08static \u53D8\u91CF invalid\uFF09\u21D2 \u6574\u6761 token \u4F5C\u5E9F\u3001rgba \u515C\u5E95\u4E00\u8D77\u88AB\u5E9F\uFF0C
70
+ 0.2.6 \u91CC Segmented \u8F68\u9053\u5168\u900F\u660E\u5C31\u662F\u8FD9\u4E48\u6765\u7684\u3002\u8981\u8DDF\u5BBF\u4E3B\u4E3B\u9898\u8054\u52A8\u7684\u9762\u7528 alias token\uFF08\u90A3\u4E9B\u5B9E\u6D4B\u6709\u6548\uFF09\u3002 */
69
71
  --dshpc-icon-plate:rgba(255,255,255,.5);
70
- --dshpc-icon-plate:color-mix(in srgb,var(--dsw-static-neutral-00,#fff) 50%,transparent);
71
72
  /* \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
72
73
  \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 */
73
74
  --dshpc-head-bg:var(--dsw-static-neutral-100,#f5f5f5);
74
75
  /* \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 */
75
76
  --dshpc-chip-bg:rgba(15,15,15,.07);
76
- --dshpc-chip-bg:color-mix(in srgb,var(--dsw-static-neutral-900,#0f0f0f) 7%,transparent);
77
77
  --dshpc-chip-bg-hover:rgba(15,15,15,.14);
78
- --dshpc-chip-bg-hover:color-mix(in srgb,var(--dsw-static-neutral-900,#0f0f0f) 14%,transparent);
79
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
80
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 */
81
80
  --dshpc-open-bg:rgba(37,99,235,.10);
@@ -139,9 +138,11 @@ body{
139
138
  \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
140
139
  \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 */
141
140
  --dshpc-hover:rgba(15,15,15,.10);
142
- --dshpc-hover:color-mix(in srgb,var(--dsw-static-neutral-900,#0f0f0f) 10%,transparent);
143
141
  --dshpc-active:rgba(15,15,15,.18);
144
- --dshpc-active:color-mix(in srgb,var(--dsw-static-neutral-900,#0f0f0f) 18%,transparent);
142
+ /* \u5206\u6BB5\u63A7\u4EF6\u8F68\u9053\u5E95\uFF1A\u4E13\u7528 token\uFF08rgba \u5B57\u9762\u91CF\u3001\u4E0D\u501F --dshpc-hover \u4E2D\u8F6C\uFF09\u2014\u2014
143
+ 2026-10-19 \u6559\u8BAD\uFF1A\u53D8\u91CF\u94FE\u4E2D\u95F4\u4EFB\u4F55\u4E00\u73AF invalid \u21D2 background \u6574\u6761\u4F5C\u5E9F\u3001\u8F68\u9053\u5168\u900F\u660E\u3002
144
+ \u4EAE\u8272\uFF1A\u9ED1 7%\uFF08\u6BD4 hover \u7684 10% \u6DE1\u4E00\u6863\uFF0C\u9009\u4E2D\u767D\u7247\u624D\u8DF3\u5F97\u51FA\uFF09\u3002 */
145
+ --dshpc-seg-track:rgba(15,15,15,.07);
145
146
  --dshpc-mask:var(--dsw-alias-bg-mask-1,#0000003d);
146
147
  /* \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
147
148
  \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
@@ -246,20 +247,17 @@ body[data-ds-dark-theme]{
246
247
  --dshpc-business-active:color-mix(in srgb,var(--dshpc-business) 64%,#ffffff);
247
248
  /* \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 */
248
249
  --dshpc-hover:rgba(255,255,255,.14);
249
- --dshpc-hover:color-mix(in srgb,var(--dsw-static-neutral-00,#fff) 14%,transparent);
250
250
  --dshpc-active:rgba(255,255,255,.24);
251
- --dshpc-active:color-mix(in srgb,var(--dsw-static-neutral-00,#fff) 24%,transparent);
251
+ /* \u5206\u6BB5\u8F68\u9053\uFF08\u6697\u8272\u7248\uFF09\uFF1A\u767D 10%\u2014\u2014\u6BD4 hover \u6DE1\u4E00\u6863\uFF0C\u9009\u4E2D\u4EAE\u7247\u624D\u8DF3\u5F97\u51FA\u3002 */
252
+ --dshpc-seg-track:rgba(255,255,255,.10);
252
253
  --dshpc-plate:var(--dsw-static-neutral-850,#212123);
253
254
  --dshpc-plate-hover:var(--dsw-static-neutral-800,#292929);
254
255
  --dshpc-icon-plate:rgba(255,255,255,.05);
255
- --dshpc-icon-plate:color-mix(in srgb,var(--dsw-static-neutral-00,#fff) 5%,transparent);
256
256
  /* \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 */
257
257
  --dshpc-head-bg:var(--dshpc-surface-2);
258
258
  /* \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 */
259
259
  --dshpc-chip-bg:rgba(255,255,255,.08);
260
- --dshpc-chip-bg:color-mix(in srgb,var(--dsw-static-neutral-00,#fff) 8%,transparent);
261
260
  --dshpc-chip-bg-hover:rgba(255,255,255,.16);
262
- --dshpc-chip-bg-hover:color-mix(in srgb,var(--dsw-static-neutral-00,#fff) 16%,transparent);
263
261
  /* \u6697\u8272\u4E0B\u84DD\u8272\u8981\u66F4\u4EAE\u3001\u900F\u660E\u5EA6\u7565\u9AD8\u624D\u538B\u5F97\u4F4F\u6DF1\u5E95\u3002 */
264
262
  --dshpc-open-bg:rgba(96,165,250,.18);
265
263
  --dshpc-open-bg-soft:rgba(96,165,250,.08);
@@ -373,15 +371,16 @@ var SEGMENTED_CSS = `
373
371
  /* \u26A0\uFE0F \u8F68\u9053 / \u9009\u4E2D\u7247\u7684\u989C\u8272\u53D8\u91CF\u5728\u57FA\u7840\u7C7B\u4E0A\u7ED9**\u9ED8\u8BA4\u503C**\uFF08= inset \u89C2\u611F\uFF09\uFF0Cvariant \u7C7B\u53EA\u505A\u8986\u76D6\uFF1A
374
372
  \u6B64\u524D --seg-track \u53EA\u7531 variant \u7C7B\u5B9A\u4E49\uFF0C\u7C7B\u4E00\u65E6\u6CA1\u751F\u6548\uFF08\u5BBF\u4E3B\u6837\u5F0F\u88C1\u526A / \u9009\u62E9\u5668\u88AB\u88C1 / \u7248\u672C\u9519\u4F4D\uFF09\uFF0C
375
373
  background:var(--seg-track) \u6574\u6761\u4F5C\u5E9F \u21D2 \u8F68\u9053\u5168\u900F\u660E\u3001\u300C\u5C31\u5269\u51E0\u4E2A\u5B57\u6D6E\u5728\u9875\u9762\u4E0A\u300D\uFF080.2.2 \u771F\u673A\u73B0\u8C61\uFF09\u3002
376
- var() \u7684\u7B2C\u4E8C\u53C2\u515C\u5E95\u4FDD\u8BC1\u4EFB\u4F55\u60C5\u51B5\u4E0B\u8F68\u9053\u90FD\u6709\u5E95\u3001\u9009\u4E2D\u7247\u90FD\u6709\u8272\u3002 */
377
- .dshpc-seg{--seg-track:var(--dshpc-hover);--seg-thumb:var(--dshpc-surface-raised);
374
+ --seg-track \u7684\u94FE\u672B\u662F\u4E13\u7528 token --dshpc-seg-track\uFF08rgba \u5B57\u9762\u91CF\u3001\u4E0D\u7ECF --dshpc-hover \u4E2D\u8F6C\uFF09\uFF1A
375
+ 2026-10-19 \u7684\u6559\u8BAD\u662F\u300C\u53D8\u91CF\u94FE\u4E2D\u95F4\u4EFB\u4F55\u4E00\u73AF invalid\uFF0C\u6574\u6761\u5C5E\u6027\u4F5C\u5E9F\u300D\uFF0C\u6240\u4EE5\u8F68\u9053\u8272\u5FC5\u987B\u81EA\u5DF1\u4E00\u6761\u8DEF\u3002 */
376
+ .dshpc-seg{--seg-track:var(--dshpc-seg-track);--seg-thumb:var(--dshpc-surface-raised);
378
377
  display:inline-flex;align-items:center;gap:2px;padding:2px;border-radius:var(--dshpc-radius-md);background:var(--seg-track);}
379
378
  /* \u9009\u4E2D\u7247 = --dshpc-surface-raised\uFF08\u5144\u5F1F\u9879\u76EE dsh-task-dispatch-table \u7684\u53D6\u6CD5\uFF0C2026-10-19 \u7528\u6237\u70B9\u540D
380
379
  \u300C\u628A\u5144\u5F1F\u7684\u6837\u5F0F\u6E05\u4E86\u5C31\u4E0D\u6B63\u5E38 \u21D2 \u6CA1\u642C\u5168\u300D\u540E\u6539\u56DE\uFF09\u300210-18 \u66FE\u6539\u6210 --dshpc-solid\uFF0C\u4F46\u5B83\u5728\u6697\u8272\u4E3B\u9898\u4E0B
381
380
  \u662F\u8FD1\u9ED1\uFF08\u6BD4\u8F68\u9053\u8FD8\u6697\uFF09\u21D2 \u9009\u4E2D\u7247\u9677\u8FDB\u8F68\u9053\u91CC\uFF1Braised \u5728\u4E24\u4E2A\u4E3B\u9898\u4E0B\u90FD\u6BD4\u8F68\u9053\u4EAE\u4E00\u6863\uFF0C\u65B9\u5411\u6B63\u786E\u3002
382
381
  raised \u4E0E\u5361\u7247\u5E95\u540C\u4E3A bg-layer-1 \u21D2 \u9009\u4E2D\u7247\u9760**1px \u63CF\u8FB9 + \u9634\u5F71**\u4E0E\u5361\u7247\u533A\u5206\uFF08\u89C1 __item[aria-pressed]\uFF09\u3002 */
383
382
  .dshpc-seg--default{--seg-track:var(--dshpc-surface-2);--seg-thumb:var(--dshpc-surface-raised);border:1px solid var(--dshpc-border);}
384
- .dshpc-seg--inset{--seg-track:var(--dshpc-hover);--seg-thumb:var(--dshpc-surface-raised);border:0;padding:3px;}
383
+ .dshpc-seg--inset{--seg-track:var(--dshpc-seg-track);--seg-thumb:var(--dshpc-surface-raised);border:0;padding:3px;}
385
384
 
386
385
  .dshpc-seg__item{appearance:none;display:inline-flex;align-items:center;gap:4px;box-sizing:border-box;
387
386
  height:calc(var(--dshpc-control-h-sm) - 6px);padding:0 12px;border:1px solid transparent;border-radius:var(--dshpc-radius-sm);
@@ -429,7 +428,7 @@ var SEGMENTED_CSS = `
429
428
  - \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
430
429
  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
431
430
  \u4E14\u65B9\u5757\u4E4B\u95F4\u8981\u6709\u95F4\u8DDD\uFF08gap 6px\uFF0C\u4E0D\u518D 2px \u6324\u6210\u4E00\u5768\uFF09\u3002 */
432
- .dshpc-seg--weekday{--seg-track:var(--dshpc-hover);gap:6px;border:0;padding:3px;}
431
+ .dshpc-seg--weekday{--seg-track:var(--dshpc-seg-track);gap:6px;border:0;padding:3px;}
433
432
  .dshpc-seg--weekday .dshpc-seg__item{width:calc(var(--dshpc-control-h-lg) - 6px);padding:0;justify-content:center;}
434
433
  .dshpc-seg--weekday .dshpc-seg__item[aria-pressed='true']{background:var(--dshpc-business);color:var(--dshpc-fg-inverse);box-shadow:var(--dshpc-shadow-raised);}
435
434
 
@@ -468,11 +467,13 @@ var BUTTON_CSS = `
468
467
  \u628A\u53F3\u5185\u8FB9\u8DDD\u8865\u4E0A\u300C\u56FE\u6807\u5BBD + \u95F4\u8DDD\u300D\uFF0C\u53EF\u7528\u76D2\u968F\u4E4B\u5DE6\u79FB\u540C\u91CF \u21D2 \u6587\u5B57\u843D\u56DE\u89C6\u89C9\u4E2D\u5FC3\uFF0C\u56FE\u6807\u8D34\u5DE6\u4FA7\u3002
469
468
  \u56FE\u6807\u5BBD\u6309 1.2em \u4F30\uFF08\u5B98\u65B9\u56FE\u6807 14/16px vs \u5B57\u53F7 12/13px\uFF09\uFF0Cem \u968F\u5B57\u53F7\u6863\u81EA\u52A8\u7F29\u653E\u3002 */
470
469
  .dshpc-btn--block.dshpc-btn--icon-start{padding-right:calc(var(--btn-pad) + 1.2em + 6px);}
471
- .dshpc-btn__icon,.dshpc-btn__icon-end{display:inline-flex;align-items:center;justify-content:center;flex:none;}
470
+ .dshpc-btn__icon,.dshpc-btn__icon-end{display:inline-flex;align-items:center;justify-content:center;flex:none;line-height:0;}
471
+ .dshpc-btn__icon svg,.dshpc-btn__icon-end svg{display:block;margin:0;}
472
472
  /* loading\uFF1A\u4E0D\u6362 DOM \u7ED3\u6784\uFF0C\u53EA\u5728\u6587\u6848\u524D\u63D2\u4E00\u4E2A\u540C\u8272\u5C0F\u5708\uFF08\u5C3A\u5BF8\u968F\u5B57\u53F7\uFF0C\u7F29\u653E\u4E0D\u4F9D\u8D56\u5E38\u91CF\uFF09 */
473
- .dshpc-btn__spinner{display:inline-block;flex:none;width:1em;height:1em;box-sizing:border-box;
474
- border:1.5px solid currentColor;border-right-color:transparent;border-radius:50%;
473
+ .dshpc-btn__spinner{display:block;flex:none;width:12px;height:12px;box-sizing:border-box;
474
+ border:1.5px solid currentColor;border-right-color:transparent;border-radius:999px;
475
475
  animation:dshpc-btn-spin .7s linear infinite;}
476
+ /* shortcut: 12px \u662F\u56FA\u5B9A\u503C\uFF0C\u4E0D\u968F\u6309\u94AE\u5B57\u53F7\u7F29\u653E\uFF1B\u8981\u66F4\u5927\u5C31\u6539\u8FD9\u4E00\u5904\u3002 */
476
477
  @keyframes dshpc-btn-spin{to{transform:rotate(360deg)}}
477
478
 
478
479
  /* \u4EA4\u4E92\u6001\uFF1A\u989C\u8272\u53D8\u5316\u5199\u5728\u53D8\u91CF\u4E0A \u21D2 \u6240\u6709\u6863\u4F4D\u4E00\u6B21\u751F\u6548\uFF0C\u4E14\u53D8\u5316\u5E45\u5EA6\u7531 token \u51B3\u5B9A\uFF08\u591F\u660E\u663E\uFF09 */
@@ -2038,7 +2039,8 @@ var DICT2 = {
2038
2039
  tooltipAnchorButton: "\u6309\u94AE\u951A\u70B9",
2039
2040
  tooltipLong: "\u957F\u6587\u672C\u6362\u884C",
2040
2041
  tooltipName: "\u5F20\u4E09\u4E30",
2041
- tooltipMultiline: "\u4E24\u6BB5\u5F0F\uFF08\u540D\u5B57 + \u6B63\u6587\uFF09",
2042
+ tooltipRich: "\u5BCC\u5361\u7247",
2043
+ tooltipMultiline: "\u4E24\u6BB5\u5F0F",
2042
2044
  tooltipLongText: "\u8FD9\u662F\u4E00\u6BB5\u8DB3\u591F\u957F\u7684\u63D0\u793A\u6587\u5B57\uFF1A\u6C14\u6CE1\u9047\u5230 maxWidth \u4F1A\u81EA\u52A8\u6362\u884C\uFF0C\u800C\u4E0D\u4F1A\u4E00\u8DEF\u6491\u5230\u534A\u4E2A\u5C4F\u5E55\u5BBD\uFF0C anchored \u5143\u7D20\u5728\u8FB9\u7F18\u65F6\u5B98\u65B9\u8FD8\u4F1A\u81EA\u52A8\u628A\u6C14\u6CE1\u6536\u56DE\u89C6\u53E3\u5185\u3002",
2043
2045
  btnHintTitle: "\u95EE\u53F7\u63D0\u793A\uFF08FieldHint\uFF09",
2044
2046
  btnHintHint: "\u72EC\u7ACB\u7EC4\u4EF6\uFF0C\u653E\u54EA\u90FD\u884C\uFF1A\u6807\u9898\u540E / \u6309\u94AE\u540E / \u4E00\u6BB5\u6587\u5B57\u540E / \u8F93\u5165\u6846\u540E\uFF1B\u9F20\u6807\u60AC\u505C\u6216\u952E\u76D8\u805A\u7126\u6D6E\u51FA\u6C14\u6CE1",
@@ -2118,7 +2120,8 @@ var DICT2 = {
2118
2120
  tooltipAnchorButton: "Button anchor",
2119
2121
  tooltipLong: "Long label",
2120
2122
  tooltipName: "Alex Chen",
2121
- tooltipMultiline: "Two-part (name + body)",
2123
+ tooltipRich: "Rich card",
2124
+ tooltipMultiline: "Two-part",
2122
2125
  tooltipLongText: "A deliberately long hint: the bubble wraps at maxWidth instead of stretching to half the viewport, and the official layer pulls it back inside the viewport near the edges.",
2123
2126
  btnHintTitle: "Question-mark hint (FieldHint)",
2124
2127
  btnHintHint: "Standalone component, drop it anywhere: after a title, a button, a sentence, or an input; hover or keyboard-focus to reveal",
@@ -2308,7 +2311,7 @@ function tipAnchor(text, side, align) {
2308
2311
  background: "var(--dshpc-surface-1)",
2309
2312
  color: "var(--dshpc-fg)",
2310
2313
  fontSize: "12px",
2311
- cursor: "help"
2314
+ cursor: "pointer"
2312
2315
  }
2313
2316
  }, text));
2314
2317
  }
@@ -2319,7 +2322,7 @@ function Labeled(props) {
2319
2322
  return (0, import_react20.createElement)(
2320
2323
  "div",
2321
2324
  { style: { display: "flex", gap: "10px", alignItems: "center", flexWrap: "wrap" } },
2322
- (0, import_react20.createElement)("span", { style: { width: "64px", flex: "none", color: "var(--dshpc-fg-3)", fontSize: "12px" } }, props.label),
2325
+ (0, import_react20.createElement)("span", { style: { width: "auto", minWidth: "64px", flex: "none", whiteSpace: "normal", color: "var(--dshpc-fg-3)", fontSize: "12px" } }, props.label),
2323
2326
  props.children
2324
2327
  );
2325
2328
  }
@@ -2450,14 +2453,14 @@ function ButtonsSection() {
2450
2453
  import_dsh_client_ui_primitives.Tooltip,
2451
2454
  { label: t2("tooltipHint"), side: "top" },
2452
2455
  (0, import_react20.createElement)("span", {
2453
- style: { borderBottom: "1px dashed var(--dshpc-border-strong)", cursor: "help", fontSize: "13px" }
2456
+ style: { borderBottom: "1px dashed var(--dshpc-border-strong)", cursor: "pointer", fontSize: "13px" }
2454
2457
  }, t2("tooltipAnchorText"))
2455
2458
  ),
2456
2459
  (0, import_react20.createElement)(
2457
2460
  import_dsh_client_ui_primitives.Tooltip,
2458
2461
  { label: t2("tooltipLongText"), side: "bottom", maxWidth: 240 },
2459
2462
  (0, import_react20.createElement)("span", {
2460
- style: { borderBottom: "1px dashed var(--dshpc-border-strong)", cursor: "help", fontSize: "13px" }
2463
+ style: { borderBottom: "1px dashed var(--dshpc-border-strong)", cursor: "pointer", fontSize: "13px" }
2461
2464
  }, t2("tooltipLong"))
2462
2465
  )
2463
2466
  ),
@@ -2470,9 +2473,27 @@ function ButtonsSection() {
2470
2473
  { label: `${t2("tooltipName")}
2471
2474
  ${t2("tooltipLongText")}`, side: "top", maxWidth: 260 },
2472
2475
  (0, import_react20.createElement)("span", {
2473
- style: { borderBottom: "1px dashed var(--dshpc-border-strong)", cursor: "help", fontSize: "13px" }
2476
+ style: { borderBottom: "1px dashed var(--dshpc-border-strong)", cursor: "pointer", fontSize: "13px" }
2474
2477
  }, t2("tooltipName"))
2475
2478
  )
2479
+ ),
2480
+ // 富卡片:官方 HoverCard(宿主工作区列表那种「标题 + 正文」卡就是它);content 收任意 ReactNode
2481
+ (0, import_react20.createElement)(
2482
+ Labeled,
2483
+ { label: t2("tooltipRich") },
2484
+ (0, import_react20.createElement)(import_dsh_client_ui_primitives.HoverCard, {
2485
+ variant: "compact",
2486
+ openDelayMs: 200,
2487
+ anchor: (0, import_react20.createElement)("span", {
2488
+ style: { borderBottom: "1px dashed var(--dshpc-border-strong)", cursor: "pointer", fontSize: "13px" }
2489
+ }, t2("tooltipName")),
2490
+ content: (0, import_react20.createElement)(
2491
+ "div",
2492
+ { style: { padding: "4px 2px", minWidth: "220px" } },
2493
+ (0, import_react20.createElement)("div", { style: { fontWeight: 600, fontSize: "14px", marginBottom: "4px" } }, t2("tooltipName")),
2494
+ (0, import_react20.createElement)("div", { style: { fontSize: "12px", lineHeight: 1.6, whiteSpace: "pre-line" } }, t2("tooltipLongText"))
2495
+ )
2496
+ })
2476
2497
  )
2477
2498
  )
2478
2499
  ),
@@ -3477,6 +3498,17 @@ function useLocaleTick() {
3477
3498
  function DemoPage() {
3478
3499
  useLocaleTick();
3479
3500
  const [active, setActive] = (0, import_react31.useState)(ALL_SECTIONS[0].id);
3501
+ const [diag, setDiag] = (0, import_react31.useState)("seg: \u2026");
3502
+ (0, import_react31.useEffect)(() => {
3503
+ const el = document.querySelector(".dshpc-seg");
3504
+ if (el === null) {
3505
+ setDiag("seg: no element");
3506
+ return;
3507
+ }
3508
+ const cs = getComputedStyle(el);
3509
+ setDiag(`seg ${cs.backgroundColor} gap ${cs.gap}${el.classList.contains("dshpc-seg--weekday") ? " weekday" : ""}`);
3510
+ }, [active]);
3511
+ const dark = typeof document !== "undefined" && document.body.hasAttribute("data-ds-dark-theme");
3480
3512
  return (0, import_react31.createElement)(
3481
3513
  "div",
3482
3514
  { style: { display: "flex", alignItems: "stretch", height: "100%", minHeight: 0, overflow: "hidden" } },
@@ -3520,7 +3552,7 @@ function DemoPage() {
3520
3552
  t2(s.titleKey)
3521
3553
  )
3522
3554
  ),
3523
- // 底部常驻:bundle 的真实版本 + 当前暗色判据实测值(查「改了没生效」类问题的锚点)。
3555
+ // 底部常驻:bundle 的真实版本 + 当前暗色判据 + Segmented 实测(查「改了没生效」类问题的锚点)。
3524
3556
  (0, import_react31.createElement)(
3525
3557
  "div",
3526
3558
  {
@@ -3533,13 +3565,10 @@ function DemoPage() {
3533
3565
  fontFamily: "var(--dshpc-font-mono)"
3534
3566
  }
3535
3567
  },
3536
- (0, import_react31.createElement)("div", null, `core v${"0.2.6"}`),
3537
- (0, import_react31.createElement)("div", null, `demo v${"0.2.6"}`),
3538
- (0, import_react31.createElement)(
3539
- "div",
3540
- { title: "body[data-ds-dark-theme]" },
3541
- `dark: ${typeof document !== "undefined" && document.body.hasAttribute("data-ds-dark-theme") ? "yes" : "no"}`
3542
- )
3568
+ (0, import_react31.createElement)("div", null, `core v${"0.2.8"}`),
3569
+ (0, import_react31.createElement)("div", null, `demo v${"0.2.8"}`),
3570
+ (0, import_react31.createElement)("div", { title: "body[data-ds-dark-theme]" }, `dark: ${dark ? "yes" : "no"}`),
3571
+ (0, import_react31.createElement)("div", { title: "\u5B9E\u6D4B\u9875\u9762\u4E0A\u7B2C\u4E00\u4E2A .dshpc-seg \u7684\u8F68\u9053\u5E95\u8272\u4E0E\u95F4\u8DDD" }, diag)
3543
3572
  )
3544
3573
  ),
3545
3574
  (0, import_react31.createElement)(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-plugin-core-demo",
3
- "version": "0.2.6",
3
+ "version": "0.2.8",
4
4
  "description": "dsh-plugin-core 的组件预览插件:装进 DSH 宿主后,在真实宿主环境里预览控件与业务组件",
5
5
  "keywords": ["deepseek", "harness", "dsh", "dsh-plugin", "dsh-plugin-core"],
6
6
  "homepage": "https://github.com/cq-guojia/dsh-plugin-core/tree/main/packages/demo",