dsh-plugin-core 0.35.9 → 0.35.11

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.
@@ -25,6 +25,14 @@ export interface CardSharedProps {
25
25
  expanded?: boolean;
26
26
  /** 传了才显示右侧折叠箭头(全站唯一的 Chevron);由调用方管展开状态。 */
27
27
  onToggle?: () => void;
28
+ /**
29
+ * 整卡点击回调:传了才让卡片可点,`Card` 与 `StripCard` 同享。
30
+ * 命中范围跟 `hoverScope` 走:'head'(默认)只有头部区 `__body`(含内距圈)可点,
31
+ * 'card' 才含展开区。点击层拿 role="button" / tabIndex / Enter·Space,
32
+ * 与 `ListRow` 同一套契约;刻意不渲染成 `<button>`(调用方要在里面放按钮)。
33
+ * `action` 与折叠箭头不会连带触发。不传则外观与行为完全不变。
34
+ */
35
+ onClick?: () => void;
28
36
  /** 右上角操作区(如「跳过」「查看会话」)。 */
29
37
  action?: ReactNode;
30
38
  /** 主内容:想写几行、左边右边随你。 */
@@ -34,12 +42,12 @@ export interface CardSharedProps {
34
42
  className?: string;
35
43
  style?: CSSProperties;
36
44
  translate?: Translate;
37
- /** 悬停变色开关:统一走 --dshpc-card-hover。默认 false,纯新增、不改现有外观。 */
45
+ /** 悬停变色开关:统一走 --dshpc-card-hover。默认跟随 `onClick`(可点即开),可显式关。 */
38
46
  hoverable?: boolean;
39
47
  /**
40
- * 悬停作用域(仅 hoverable 为 true 时生效):
41
- * - 'head'(默认):只有头部区这一整块边到边变色并带手势,展开区 `panel` 完全不受影响;
42
- * - 'card':整卡含展开区一起变色,由消费端显式选。
48
+ * 交互作用域:'head'(默认)只有头部区变色并可点,展开区 `panel` 完全不受影响;
49
+ * 'card' 整卡含展开区一起变色、一起可点,由消费端显式选。
50
+ * 变色只在 hover 开时生效;点击层始终按它选。
43
51
  * 展开内容必须放进 `panel`(`children` 归头部区),否则核心无从区分两块区域。
44
52
  */
45
53
  hoverScope?: 'head' | 'card';
@@ -1 +1 @@
1
- {"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../../src/ui/display/Card.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,IAAI,CAAC,EAAE,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAE9E,OAAO,EAAK,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAMvD,wDAAwD;AACxD,eAAO,MAAM,YAAY,yIAGf,CAAA;AACV,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAA;AAEtD,6CAA6C;AAC7C,MAAM,WAAW,cAAc;IAC7B,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAA;IAC1C,oBAAoB;IACpB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,yBAAyB;IACzB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACrB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,sCAAsC;IACtC,MAAM,CAAC,EAAE,UAAU,GAAG,MAAM,CAAA;IAC5B,oBAAoB;IACpB,GAAG,CAAC,EAAE,cAAc,CAAA;IACpB,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,2BAA2B;IAC3B,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,uBAAuB;IACvB,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,yCAAyC;IACzC,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,yDAAyD;IACzD,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC5B,6EAA6E;IAC7E,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAqID;;;;;;;;;;;;GAYG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,eAAe,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAEjE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,eAAe,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAEtE"}
1
+ {"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../../src/ui/display/Card.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,IAAI,CAAC,EAClB,KAAK,aAAa,EAA4D,KAAK,SAAS,EAC7F,MAAM,OAAO,CAAA;AAEd,OAAO,EAAK,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAMvD,wDAAwD;AACxD,eAAO,MAAM,YAAY,yIAGf,CAAA;AACV,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAA;AAEtD,6CAA6C;AAC7C,MAAM,WAAW,cAAc;IAC7B,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAA;IAC1C,oBAAoB;IACpB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,yBAAyB;IACzB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACrB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,sCAAsC;IACtC,MAAM,CAAC,EAAE,UAAU,GAAG,MAAM,CAAA;IAC5B,oBAAoB;IACpB,GAAG,CAAC,EAAE,cAAc,CAAA;IACpB,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,2BAA2B;IAC3B,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,uBAAuB;IACvB,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,yCAAyC;IACzC,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC5B,6EAA6E;IAC7E,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAoKD;;;;;;;;;;;;GAYG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,eAAe,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAEjE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,eAAe,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAEtE"}
@@ -1,4 +1,4 @@
1
- import { createElement as h } from 'react';
1
+ import { createElement as h, } from 'react';
2
2
  import { Chevron } from '../infra/chevron.js';
3
3
  import { t } from '../../utils/i18n.js';
4
4
  import { ensureComponentStyles } from '../infra/css.js';
@@ -63,6 +63,10 @@ function CardShell(kind, props) {
63
63
  const accent = props.accent ?? 'business';
64
64
  const isPreset = CARD_ACCENTS.includes(accent);
65
65
  const bar = props.bar ?? {};
66
+ const interactive = props.onClick !== undefined;
67
+ const hover = props.hoverable ?? interactive;
68
+ const scope = props.hoverScope ?? 'head';
69
+ const onCardScope = scope === 'card';
66
70
  // StripCard 固定贴左;Card 默认左侧,可换任意一边。
67
71
  const side = kind === 'strip' ? 'left' : bar.side ?? 'left';
68
72
  const classes = [
@@ -72,8 +76,8 @@ function CardShell(kind, props) {
72
76
  kind === 'strip' ? 'dshpc-card--strip' : 'dshpc-card--bordered',
73
77
  `dshpc-card--bar-${side}`,
74
78
  isPreset ? `dshpc-card--${accent}` : '',
75
- props.hoverable === true ? 'dshpc-card--hoverable' : '',
76
- props.hoverable === true ? `dshpc-card--hover-${props.hoverScope ?? 'head'}` : '',
79
+ hover ? 'dshpc-card--hoverable' : '',
80
+ hover ? `dshpc-card--hover-${scope}` : '',
77
81
  props.filled === false ? 'dshpc-card--no-fill' : '',
78
82
  props.expanded === true ? 'dshpc-card--expanded' : '',
79
83
  props.className ?? '',
@@ -104,11 +108,39 @@ function CardShell(kind, props) {
104
108
  vars['--card-pad-l'] = l;
105
109
  }
106
110
  const style = { ...restStyle, ...vars };
107
- return h('div', { className: classes, style }, h('div', { className: 'dshpc-card__body' },
111
+ // 点击层与 hover 同层:head = __body(内距圈就在这一层),card = 根节点。
112
+ // __panel 是 __body 的兄弟节点,只绑 __body 时天然点不到展开区,不必靠私有类名排除。
113
+ const onKeyDown = (event) => {
114
+ // 槽里按钮 / 折叠箭头的 Enter·Space 会冒泡;只认点击层自己为事件源。
115
+ if (event.target !== event.currentTarget)
116
+ return;
117
+ if (event.key !== 'Enter' && event.key !== ' ')
118
+ return;
119
+ event.preventDefault();
120
+ props.onClick?.();
121
+ };
122
+ const hit = interactive
123
+ ? { role: 'button', tabIndex: 0, onClick: props.onClick, onKeyDown }
124
+ : {};
125
+ return h('div', {
126
+ className: onCardScope && interactive ? `${classes} dshpc-card__hit` : classes,
127
+ style,
128
+ ...(onCardScope ? hit : {}),
129
+ }, h('div', {
130
+ className: !onCardScope && interactive ? 'dshpc-card__body dshpc-card__hit' : 'dshpc-card__body',
131
+ ...(onCardScope ? {} : hit),
132
+ },
108
133
  // 色条是 body 的第一个子元素:DOM 顺序恒定,左/上 = 天然在前,右/下靠 order 排到头部之后。
109
134
  h('span', { className: 'dshpc-card__bar', 'aria-hidden': true }), h('div', { className: 'dshpc-card__head' }, h('div', { className: 'dshpc-card__main' }, props.children ?? null), props.action === undefined && props.onToggle === undefined
110
135
  ? null
111
- : h('div', { className: 'dshpc-card__side' }, props.action ?? null, props.onToggle === undefined
136
+ : h('div', {
137
+ className: 'dshpc-card__side',
138
+ // action 与折叠箭头同槽:一层挡住冒泡,点右上角不连带触发整卡。
139
+ // 只在可点时才挡,避免改变不传 onClick 时的冒泡行为。
140
+ onClick: interactive
141
+ ? (event) => { event.stopPropagation(); }
142
+ : undefined,
143
+ }, props.action ?? null, props.onToggle === undefined
112
144
  ? null
113
145
  : h('button', {
114
146
  type: 'button',
@@ -1 +1 @@
1
- {"version":3,"file":"Card.js","sourceRoot":"","sources":["../../../src/ui/display/Card.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Card.js","sourceRoot":"","sources":["../../../src/ui/display/Card.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export declare const CARD_CSS = "\n/* \u2500\u2500 Card / StripCard\uFF1ASurface \u5916\u6846 + \u5934\u90E8\u5951\u7EA6 + \u8272\u6761 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n \u5916\u6846\uFF08\u5E95 / \u8FB9\u6846 / \u5706\u89D2\uFF09\u6765\u81EA .dshpc-surface\uFF08src/ui/surface.css\uFF09\uFF1A\n \u672C\u6587\u4EF6**\u4E0D\u518D\u5199 border / border-radius**\uFF0C\u5706\u89D2\u5951\u7EA6\u56E0\u6B64\u53EA\u6709\u4E00\u4E2A\u5B9A\u4E49\u70B9\uFF08\u5BB9\u5668\u6863 = 12\uFF09\u3002\n \u5185\u8DDD\u4E0D\u5728\u6839\u8282\u70B9\uFF1A\u6839\u8282\u70B9 padding:0\uFF0C__body\uFF08\u5934\u90E8\u533A\uFF09\u4E0E __panel\uFF08\u5C55\u5F00\u533A\uFF09\u5404\u81EA\u627F\u62C5 \u2014\u2014\n \u4E24\u5757\u533A\u57DF\u56E0\u6B64\u5F7C\u6B64\u72EC\u7ACB\uFF0Chover \u53EA\u53EF\u80FD\u843D\u5728\u5934\u90E8\u533A\uFF0C\u5C55\u5F00\u533A\u4E0D\u4F1A\u88AB\u6CE2\u53CA\u3002\n \u8FD9\u91CC\u53EA\u7BA1\u4E09\u4EF6 Surface \u4E0D\u8BE5\u77E5\u9053\u7684\u4E8B\uFF1A\u8272\u6761\u51E0\u4F55\u3001\u5934\u90E8\u5E03\u5C40\u3001\u4E24\u5757\u533A\u57DF\u7684\u5185\u8DDD\u3002\n\n \u8272\u6761\u51E0\u4F55\u9ED8\u8BA4\u503C\u90FD\u53EF\u88AB props \u8986\u76D6\uFF08Card.ts \u5199\u5BF9\u5E94\u7684 CSS \u53D8\u91CF\uFF09\uFF1A\n --card-bar-size \u6761\u5B50\u7C97\u7EC6\n --card-bar-inset \u6761\u5B50\u8DDD\u5361\u7247\u8FB9\u7F18\u7684\u8DDD\u79BB\uFF08= \u8D34\u8FB9\u90A3\u4E00\u4FA7\u7684\u5185\u8DDD\uFF09\n --card-bar-gap \u6761\u5B50\u8DDD\u5185\u5BB9\u7684\u8DDD\u79BB\uFF08= body \u7684 gap\uFF09\n --card-bar-length \u4E0A\u4E0B\u65B9\u4F4D\u65F6\u7684\u6761\u957F\uFF08100% = \u8DDF\u5185\u5BB9\u540C\u5BBD\uFF09\n \u8FD9\u4E9B\u53D8\u91CF\u53EA\u5728\u672C\u6587\u4EF6\u6D88\u8D39\uFF083 \u4EFD\u6587\u4EF6\u4E00\u8D77\u5F15\u65F6\uFF0C\u8DE8\u6587\u4EF6\u5F15\u7528\u522B\u5904\u7684\u53D8\u91CF\u4F1A\u9759\u9ED8\u5931\u6548\uFF09\uFF0C\n \u6240\u4EE5\u9ED8\u8BA4\u503C\u5FC5\u987B\u5199\u5728\u8FD9\u91CC\uFF0C\u800C\u4E0D\u662F\u4EE4\u724C\u6216\u522B\u7684\u76AE\u80A4\u91CC\u3002 */\n.dshpc-card{\n --card-accent:var(--dshpc-business);\n --card-accent-soft:var(--dshpc-business-soft);\n --card-bar-size:6px;\n --card-bar-inset:12px;\n --card-bar-gap:12px;\n --card-bar-length:100%;\n /* \u5185\u8DDD\u56DB\u6839\u8F74\u662F\u552F\u4E00\u771F\u6E90\uFF1A\u6839\u8282\u70B9\u81EA\u5DF1\u4E0D\u7559 padding\uFF0C__body \u4E0E __panel \u90FD\u53EA\u8BFB\u8FD9\u56DB\u6839\u8F74\u3002\n \u8FD9\u6837 __body \u5C31\u662F\u300C\u4E0A\u9762\u90A3\u4E00\u6574\u5757\u300D\uFF0Chover \u94FA\u8272\u8FB9\u5230\u8FB9\uFF0C\u8FDE\u539F\u672C\u90A3\u5708\u5916\u5708\u4E00\u8D77\u53D8\u3002\n --card-pad-all \u53EA\u662F\u56DB\u8F74\u7684\u7EC4\u5408\u503C\uFF0C\u6D88\u8D39\u7AEF style.padding \u7531 Card.ts \u644A\u6210\u56DB\u6839\u8F74\u540E\u81EA\u52A8\u6D3E\u751F\u3002 */\n --card-pad-t:14px;--card-pad-r:14px;--card-pad-b:14px;--card-pad-l:14px;\n --card-pad-all:var(--card-pad-t) var(--card-pad-r) var(--card-pad-b) var(--card-pad-l);\n padding:0;\n /* \u5934\u90E8\u533A\u80CC\u666F\u94FA\u6EE1\u6839\u8282\u70B9\u5185\u5BB9\u76D2\uFF0C\u7531\u6839\u8282\u70B9\u7EDF\u4E00\u88C1\u6210\u5916\u6846\u5706\u89D2\uFF1B__body \u81EA\u5DF1\u4E0D\u5199\u5706\u89D2\u88F8\u503C\u3002 */\n overflow:hidden;\n}\n/* \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\uFF1B\u6D45\u5E95\u4E0E\u8272\u6761\u540C\u6E90\uFF09\u3002 */\n.dshpc-card--success{--card-accent:var(--dshpc-success);--card-accent-soft:var(--dshpc-success-soft)}\n.dshpc-card--warning{--card-accent:var(--dshpc-warning);--card-accent-soft:var(--dshpc-warning-soft)}\n.dshpc-card--danger{--card-accent:var(--dshpc-danger);--card-accent-soft:var(--dshpc-danger-soft)}\n/* neutral \u6D45\u5E95\u501F chip \u5E95\uFF08\u5144\u5F1F\u9879\u76EE mute \u6863\u540C\u6B3E\uFF1A\u660E\u6697\u90FD\u6210\u7ACB\uFF09\u3002 */\n.dshpc-card--neutral{--card-accent:var(--dshpc-fg-4);--card-accent-soft:var(--dshpc-chip-bg)}\n/* \u6269\u5C55\u516B\u8272\uFF082026-10-29\uFF09\uFF1A\u8272\u6761 + \u6D45\u5E95\u540C\u6E90\uFF0C\u8F6F\u5E95\u8D70\u5404\u81EA -soft\u3002 */\n.dshpc-card--purple{--card-accent:var(--dshpc-purple);--card-accent-soft:var(--dshpc-purple-soft)}\n.dshpc-card--pink{--card-accent:var(--dshpc-pink);--card-accent-soft:var(--dshpc-pink-soft)}\n.dshpc-card--cyan{--card-accent:var(--dshpc-cyan);--card-accent-soft:var(--dshpc-cyan-soft)}\n.dshpc-card--teal{--card-accent:var(--dshpc-teal);--card-accent-soft:var(--dshpc-teal-soft)}\n.dshpc-card--orange{--card-accent:var(--dshpc-orange);--card-accent-soft:var(--dshpc-orange-soft)}\n.dshpc-card--indigo{--card-accent:var(--dshpc-indigo);--card-accent-soft:var(--dshpc-indigo-soft)}\n.dshpc-card--rose{--card-accent:var(--dshpc-rose);--card-accent-soft:var(--dshpc-rose-soft)}\n.dshpc-card--slate{--card-accent:var(--dshpc-slate);--card-accent-soft:var(--dshpc-slate-soft)}\n\n/* body = \u8272\u6761 + \u5934\u90E8\uFF0C\u4E5F\u662F\u300C\u4E0A\u9762\u90A3\u4E00\u6574\u5757\u300D\uFF1A\u5B83\u81EA\u5DF1\u627F\u62C5\u5185\u8DDD\u5E76\u94FA\u6EE1\u6839\u8282\u70B9\u5185\u5BB9\u76D2\uFF0C\n \u662F head \u4F5C\u7528\u57DF\u4E0B\u552F\u4E00\u7684 hover \u76EE\u6807\u3002\u5706\u89D2\u7531\u6839\u8282\u70B9 overflow \u88C1\u5207 \u21D2 hover \u8272\u4E0D\u9732\u65B9\u89D2\u3002\n --card-pad-all \u7531\u56DB\u6839\u8F74\u6D3E\u751F\uFF1B\u6D88\u8D39\u7AEF style.padding \u8986\u76D6\u56DB\u8F74\u540E\uFF0C\u5934\u90E8\u533A\u4E0E\u5C55\u5F00\u533A\u540C\u6B65\u5BF9\u9F50\u3002\n \u65B9\u5411\u8DDF\u7740\u6761\u5B50\u8D34\u7684\u8FB9\u5207 \u21D2 \u56DB\u4E2A\u65B9\u4F4D\u53EA\u662F\u300C\u6362\u4E00\u4E2A\u65B9\u5411\u7684 flex \u9879\u300D\uFF0C\u4E0D\u7528\u5404\u5199\u4E00\u5957\u5B9A\u4F4D\u3002 */\n.dshpc-card__body{\n display:flex;gap:var(--card-bar-gap);min-width:0;\n padding:var(--card-pad-all);\n background:transparent;\n}\n.dshpc-card--bar-top .dshpc-card__body,\n.dshpc-card--bar-bottom .dshpc-card__body{flex-direction:column}\n/* \u5C55\u5F00\u6001\u4E0D\u7279\u6B8A\u5904\u7406\u5185\u8DDD\uFF1A\u5934\u90E8\u533A\u4E0A\u4E0B\u7559\u767D\u59CB\u7EC8\u5BF9\u79F0\uFF0C\u8272\u6761\u4E0A\u4E0B\u624D\u4E0D\u4F1A\u4E00\u957F\u4E00\u77ED\u3002\n \u4E24\u5757\u4E4B\u95F4\u7684\u95F4\u9694\u5C31\u662F __body \u7684 padding-bottom\uFF0C\u5C5E\u4E8E\u5934\u90E8\u533A\u3001\u8DDF\u7740\u4E00\u8D77\u53D8\u8272\uFF1B\n __panel \u7D27\u63A5\u5176\u540E\uFF0C\u4E0D\u5728\u4E2D\u95F4\u7559\u4E00\u6761\u4E0D\u53D8\u8272\u7684\u5E26\u5B50\uFF0C\u4E5F\u4E0D\u753B\u5206\u9694\u7EBF\u3002 */\n\n/* \u5934\u90E8\u4E00\u884C = \u4E3B\u5185\u5BB9 + \u53F3\u4FA7\u69FD\uFF0C**\u6574\u4F53\u5782\u76F4\u5C45\u4E2D**\uFF1A\u8C03\u7528\u65B9\u5728 action \u91CC\u88F8\u653E\u4E00\u4E2A\u5143\u7D20\n \uFF08\u6309\u94AE / \u6587\u5B57 / \u56FE\u6807\uFF09\u4E0D\u7528\u81EA\u5DF1\u5957\u5BB9\u5668\u5C45\u4E2D\uFF1B\u4E00\u884C\u4E24\u884C\u3001\u53F3\u8FB9\u600E\u4E48\u653E\u7531\u8C03\u7528\u65B9\u5728\u6846\u5185\u81EA\u5B9A\u3002 */\n.dshpc-card__head{display:flex;align-items:center;gap:8px;min-width:0}\n.dshpc-card--bar-left .dshpc-card__head,\n.dshpc-card--bar-right .dshpc-card__head{flex:1 1 auto}\n.dshpc-card__main{flex:1;min-width:0}\n.dshpc-card__side{display:flex;align-items:center;gap:6px;flex:none}\n\n/* \u8272\u6761\uFF1A\u5DE6/\u53F3 = \u7AD6\u5411\u6761\uFF08\u9AD8\u5EA6\u8DDF\u5185\u5BB9\uFF0C\u6700\u5C0F\u4E00\u884C\uFF09\uFF1B\u4E0A/\u4E0B = \u6A2A\u5411\u6761\uFF08\u957F\u5EA6\u9ED8\u8BA4\u8DDF\u5185\u5BB9\u540C\u5BBD\uFF09\u3002\n \u53F3/\u4E0B\u65B9\u4F4D\u9760 order \u6392\u5230\u5934\u90E8\u4E4B\u540E\uFF0CDOM \u987A\u5E8F\u59CB\u7EC8\u4E0D\u53D8\u3002 */\n.dshpc-card__bar{flex:none;background:var(--card-accent);border-radius:var(--dshpc-radius-xs)}\n.dshpc-card--bar-left .dshpc-card__bar,\n.dshpc-card--bar-right .dshpc-card__bar{width:var(--card-bar-size);align-self:stretch;min-height:var(--dshpc-line-md)}\n.dshpc-card--bar-top .dshpc-card__bar,\n.dshpc-card--bar-bottom .dshpc-card__bar{width:var(--card-bar-length);height:var(--card-bar-size);align-self:flex-start}\n.dshpc-card--bar-right .dshpc-card__bar,\n.dshpc-card--bar-bottom .dshpc-card__bar{order:1}\n\n/* \u2500\u2500 \u5916\u89C2\u4E00 \u00B7 StripCard\uFF1A\u540C\u8272\u7CFB\u6D45\u5E95 + 1px \u4E0D\u53EF\u89C1\u5360\u4F4D\u8FB9\u6846 + \u65B9\u89D2 + 4px \u901A\u9AD8\u65B9\u89D2\u8272\u6761\u8D34\u5DE6\u7F18 \u2500\u2500\n \u5E95\u8272 / \u65B9\u89D2 / \u5360\u4F4D\u8FB9\u6846\u7531 Surface \u7684\u4E09\u6761\u4FEE\u9970\u7C7B\u63D0\u4F9B\uFF08Card.ts \u6309 kind \u4F20\uFF09\uFF0C\u6B64\u5904\u53EA\u7BA1\u5185\u8DDD\u4E0E\u6761\u5B50\u3002 */\n.dshpc-card.dshpc-card--strip{\n --card-bar-size:4px;--card-bar-inset:0;\n --card-pad-t:12px;--card-pad-r:12px;--card-pad-b:12px;--card-pad-l:20px;\n /* \u5E95\u8272\u6539\u8D70 Surface \u7684 --surface-bg \u53D8\u91CF\uFF08surface.css:7-8 \u5951\u7EA6\uFF09\uFF1A\u4E0D\u80FD\u5199 background \u5C5E\u6027\uFF0C\n \u5426\u5219\u900F\u660E\u6863\u8981\u8986\u76D6\u65F6\u4F1A\u88AB\u5C5E\u6027\u5C42\u6253\u67B6\uFF08\u5144\u5F1F\u9879\u76EE\u66FE\u7528 background-image \u6E10\u53D8\u7ED5\u8FC7\uFF09\u3002 */\n --surface-bg:var(--card-accent-soft,transparent);\n}\n/* \u5DE6\u5185\u8FB9\u8DDD 20px = 16 \u7559\u767D + 4 \u6761\u5BBD \u21D2 \u5185\u5BB9\u4ECE\u8272\u6761\u53F3\u7F18\u8D77\u7B97\uFF1B\u8272\u6761\u7EDD\u5BF9\u5B9A\u4F4D\u901A\u9AD8\uFF0C\u8DDF\u7740\u5185\u5BB9\u9AD8\u5EA6\u81EA\u9002\u5E94\u3002\n \u5B9A\u4F4D\u57FA\u51C6\u662F\u6839\u8282\u70B9\u7684 position:relative\uFF08Surface \u63D0\u4F9B\uFF09\uFF0Ctop:0 / bottom:0 \u56E0\u6B64\u662F\u6574\u5361\u901A\u9AD8\uFF1A\n \u5C55\u5F00\u540E\u8272\u6761\u4ECD\u4E00\u8DEF\u8D2F\u7A7F\u5230\u5C55\u5F00\u533A\u5E95\u90E8\uFF0C\u4E0D\u968F head \u5206\u533A\u88AB\u88C1\u77ED\uFF082026-11-08 \u62CD\u677F\uFF09\u3002\n \u7279\u5F02\u6027 0,3,0\uFF1A\u538B\u8FC7\u4E0A\u9762 .dshpc-card--bar-left .dshpc-card__bar \u7684\u5BBD\u5EA6\u89C4\u5219\uFF0C\u4E0E\u6CE8\u5165\u987A\u5E8F\u65E0\u5173\u3002 */\n.dshpc-card.dshpc-card--strip .dshpc-card__bar{position:absolute;left:0;top:0;bottom:0;width:4px;align-self:auto}\n\n/* \u2500\u2500 \u5916\u89C2\u4E8C \u00B7 Card\uFF1A\u8272\u6761\u8D34\u8FB9\u90A3\u4E00\u4FA7\u7684\u5185\u8DDD = \u6761\u5B50\u8DDD\u8FB9\u7F18\u7684\u8DDD\u79BB \u2500\u2500\n \u56DB\u65B9\u4F4D\u53EA\u6539\u5BF9\u5E94\u90A3\u6839 --card-pad-* \u53D8\u91CF\uFF0C__body \u4E0E __panel \u540C\u65F6\u8DDF\u7740\u5BF9\u9F50\u3002 */\n.dshpc-card--bar-left{--card-pad-l:var(--card-bar-inset)}\n.dshpc-card--bar-right{--card-pad-r:var(--card-bar-inset)}\n.dshpc-card--bar-top{--card-pad-t:var(--card-bar-inset)}\n.dshpc-card--bar-bottom{--card-pad-b:var(--card-bar-inset)}\n\n/* \u2500\u2500 \u5916\u89C2\u8F74\uFF082026-11-07\uFF09\uFF1A\u5E95\u8272\u5F00\u5173 + hover \u4F5C\u7528\u57DF \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n \u4E24\u5757\u533A\u57DF\u5404\u81EA\u72EC\u7ACB\uFF1A\u6839\u8282\u70B9\u53EA\u94FA\u4E00\u5C42\u5E38\u6001\u5E95\uFF08--surface-bg\uFF09\uFF1B__body \u662F\u300C\u4E0A\u9762\u90A3\u4E00\u6574\u5757\u300D\uFF0C\n __panel \u662F\u5B83\u7684\u5144\u5F1F\u8282\u70B9\uFF0C\u4E0D\u94FA\u4EFB\u4F55\u80CC\u666F\u3001\u4E0D\u53C2\u4E0E hover\u3002\n hoverScope\uFF08\u9ED8\u8BA4 head\uFF09\uFF1A\n head \u2014\u2014 \u53EA\u6709 __body \u94FA --dshpc-card-hover\uFF0C\u8FB9\u5230\u8FB9\uFF08\u5185\u8DDD\u5708 + \u5706\u89D2\u90FD\u5728\u8FD9\u4E00\u5757\u4E0A\uFF09\uFF1B\n \u5C55\u5F00\u6001\u4E5F\u4E0D\u6539\u5185\u8DDD\uFF0C\u4E0A\u4E0B\u4E24\u5708\u7559\u767D\u540C\u5C5E\u8FD9\u4E00\u5757\u3001\u4E00\u8D77\u53D8\u8272\uFF0C\u8272\u6761\u4E0A\u4E0B\u624D\u5BF9\u79F0\uFF1B\n \u9F20\u6807\u843D\u5728 __panel \u65F6 :hover \u6839\u672C\u4E0D\u6210\u7ACB \u21D2 \u6574\u5361\u4E0D\u89E6\u53D1\uFF0C\u4E0B\u9762\u6C38\u8FDC\u662F\u5E38\u6001\u3002\n card \u2014\u2014 \u6839\u8282\u70B9\u6539 --surface-bg\uFF0C\u6574\u5361\u542B\u5C55\u5F00\u533A\u4E00\u8D77\u53D8\u8272\uFF0C\u7531\u6D88\u8D39\u7AEF\u663E\u5F0F\u9009\u3002\n \u26A0\uFE0F \u7EDD\u4E0D\u7528\u300C\u7ED9\u5C55\u5F00\u533A\u94FA\u4E00\u5C42\u5E95\u8272\u53BB\u76D6\u4F4F\u6839\u8282\u70B9\u300D\uFF1A\u534A\u900F\u660E token \u53E0\u4E24\u5C42\u4F1A\u66F4\u6DF1\uFF08\u771F\u8E29\u8FC7\uFF09\u3002 */\n.dshpc-card.dshpc-card--no-fill{--surface-bg:transparent}\n/* \u5F00\u5173\u6253\u5F00\u5373\u58F0\u660E\u300C\u4E0A\u9762\u90A3\u4E00\u5757\u53EF\u4EA4\u4E92\u300D\uFF1A\u624B\u52BF\u8DDF\u7740\u53D8\uFF0C\u5C55\u5F00\u533A\u8FD8\u539F\u6210\u9ED8\u8BA4\u5149\u6807\u3002 */\n.dshpc-card.dshpc-card--hoverable{cursor:pointer}\n.dshpc-card.dshpc-card--hover-head .dshpc-card__panel{cursor:auto}\n/* \u987A\u5E8F\u5373\u4F18\u5148\u7EA7\uFF1Astrip \u6D45\u5E95 / no-fill \u900F\u660E(0,2,0) \u2192 card:hover(0,3,0\uFF0C\u6700\u9AD8)\u3002 */\n.dshpc-card.dshpc-card--hover-head .dshpc-card__body:hover{background:var(--dshpc-card-hover)}\n.dshpc-card.dshpc-card--hover-card:hover{--surface-bg:var(--dshpc-card-hover)}\n\n.dshpc-card__toggle{\n display:inline-flex;align-items:center;justify-content:center;\n width:24px;height:24px;padding:0;background:none;border:none;border-radius:var(--dshpc-radius-sm);\n color:var(--dshpc-fg-3);cursor:pointer;\n}\n.dshpc-card__toggle:hover{background:var(--dshpc-surface-sunken);color:var(--dshpc-fg)}\n/* \u7BAD\u5934\u662F svg\uFF08Chevron\uFF09\uFF0C\u4E0D\u662F\u5B57\u5F62 \u21D2 \u4E0D\u8981 font-size\uFF1Binline-flex \u514D\u6389 svg \u7684\u57FA\u7EBF\u7559\u767D\u3002 */\n.dshpc-card__caret{display:inline-flex;transition:transform .15s ease}\n.dshpc-card__caret.is-open{transform:rotate(180deg)}\n/* \u5C55\u5F00\u533A\u53EA\u8D1F\u8D23\u300C\u628A\u5C55\u5F00\u5185\u5BB9\u653E\u5728\u5934\u90E8\u533A\u4E0B\u9762\u300D\uFF1A\u81EA\u5DF1\u627F\u62C5\u5DE6\u53F3 / \u5E95\u90E8\u5185\u8DDD\uFF0C\u8865\u4E0A\u5361\u7247\u5E95\u90E8\u7559\u767D\u3002\n margin-top \u4E0E padding-top \u53CC\u53CC\u5F52 0 \u21D2 \u4E24\u5757\u4E4B\u95F4\u7684\u95F4\u9694\u53EA\u6709 __body \u7684 padding-bottom\uFF0C\n \u5C5E\u4E8E\u5934\u90E8\u533A\u3001\u8DDF\u7740 hover \u4E00\u8D77\u53D8\u8272\uFF1B\u6D88\u8D39\u7AEF\u81EA\u7ED8\u7684\u7EBF\u56E0\u6B64\u80FD\u8D34\u4F4F\u8FD9\u5757\u8272\u7684\u4E0B\u6CBF\uFF0C\u4E2D\u95F4\u4E0D\u5939\u4E0D\u53D8\u8272\u7684\u5E26\u5B50\u3002\n \u5DE6\u53F3 / \u5E95\u90E8\u5185\u8DDD\u8BFB\u540C\u4E00\u7EC4\u56DB\u8F74\u53D8\u91CF \u21D2 \u4E0E\u5934\u90E8\u533A\u540C\u6E90\uFF0C\u4E0D\u4F1A\u5DE6\u8D34\u8FB9\u3001\u53F3\u7559\u767D\u3002\n \u6838\u5FC3\u4E0D\u753B\u4EFB\u4F55\u5206\u9694\u7EBF\uFF1A\u9700\u8981\u7EBF\u7531\u6D88\u8D39\u7AEF\u5728 panel \u5185\u5BB9\u91CC\u81EA\u7ED8\uFF08\u6709\u65F6\u8981\u3001\u6709\u65F6\u4E0D\u8981\uFF0C\u6D88\u8D39\u7AEF\u81EA\u5DF1\u51B3\u5B9A\uFF09\u3002 */\n.dshpc-card__panel{\n margin:0 var(--card-pad-r) 0 var(--card-pad-l);\n padding:0 0 var(--card-pad-b);\n}\n";
1
+ export declare const CARD_CSS = "\n/* \u2500\u2500 Card / StripCard\uFF1ASurface \u5916\u6846 + \u5934\u90E8\u5951\u7EA6 + \u8272\u6761 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n \u5916\u6846\uFF08\u5E95 / \u8FB9\u6846 / \u5706\u89D2\uFF09\u6765\u81EA .dshpc-surface\uFF08src/ui/surface.css\uFF09\uFF1A\n \u672C\u6587\u4EF6**\u4E0D\u518D\u5199 border / border-radius**\uFF0C\u5706\u89D2\u5951\u7EA6\u56E0\u6B64\u53EA\u6709\u4E00\u4E2A\u5B9A\u4E49\u70B9\uFF08\u5BB9\u5668\u6863 = 12\uFF09\u3002\n \u5185\u8DDD\u4E0D\u5728\u6839\u8282\u70B9\uFF1A\u6839\u8282\u70B9 padding:0\uFF0C__body\uFF08\u5934\u90E8\u533A\uFF09\u4E0E __panel\uFF08\u5C55\u5F00\u533A\uFF09\u5404\u81EA\u627F\u62C5 \u2014\u2014\n \u4E24\u5757\u533A\u57DF\u56E0\u6B64\u5F7C\u6B64\u72EC\u7ACB\uFF0Chover \u53EA\u53EF\u80FD\u843D\u5728\u5934\u90E8\u533A\uFF0C\u5C55\u5F00\u533A\u4E0D\u4F1A\u88AB\u6CE2\u53CA\u3002\n \u8FD9\u91CC\u53EA\u7BA1\u4E09\u4EF6 Surface \u4E0D\u8BE5\u77E5\u9053\u7684\u4E8B\uFF1A\u8272\u6761\u51E0\u4F55\u3001\u5934\u90E8\u5E03\u5C40\u3001\u4E24\u5757\u533A\u57DF\u7684\u5185\u8DDD\u3002\n\n \u8272\u6761\u51E0\u4F55\u9ED8\u8BA4\u503C\u90FD\u53EF\u88AB props \u8986\u76D6\uFF08Card.ts \u5199\u5BF9\u5E94\u7684 CSS \u53D8\u91CF\uFF09\uFF1A\n --card-bar-size \u6761\u5B50\u7C97\u7EC6\n --card-bar-inset \u6761\u5B50\u8DDD\u5361\u7247\u8FB9\u7F18\u7684\u8DDD\u79BB\uFF08= \u8D34\u8FB9\u90A3\u4E00\u4FA7\u7684\u5185\u8DDD\uFF09\n --card-bar-gap \u6761\u5B50\u8DDD\u5185\u5BB9\u7684\u8DDD\u79BB\uFF08= body \u7684 gap\uFF09\n --card-bar-length \u4E0A\u4E0B\u65B9\u4F4D\u65F6\u7684\u6761\u957F\uFF08100% = \u8DDF\u5185\u5BB9\u540C\u5BBD\uFF09\n \u8FD9\u4E9B\u53D8\u91CF\u53EA\u5728\u672C\u6587\u4EF6\u6D88\u8D39\uFF083 \u4EFD\u6587\u4EF6\u4E00\u8D77\u5F15\u65F6\uFF0C\u8DE8\u6587\u4EF6\u5F15\u7528\u522B\u5904\u7684\u53D8\u91CF\u4F1A\u9759\u9ED8\u5931\u6548\uFF09\uFF0C\n \u6240\u4EE5\u9ED8\u8BA4\u503C\u5FC5\u987B\u5199\u5728\u8FD9\u91CC\uFF0C\u800C\u4E0D\u662F\u4EE4\u724C\u6216\u522B\u7684\u76AE\u80A4\u91CC\u3002 */\n.dshpc-card{\n --card-accent:var(--dshpc-business);\n --card-accent-soft:var(--dshpc-business-soft);\n --card-bar-size:6px;\n --card-bar-inset:12px;\n --card-bar-gap:12px;\n --card-bar-length:100%;\n /* \u5185\u8DDD\u56DB\u6839\u8F74\u662F\u552F\u4E00\u771F\u6E90\uFF1A\u6839\u8282\u70B9\u81EA\u5DF1\u4E0D\u7559 padding\uFF0C__body \u4E0E __panel \u90FD\u53EA\u8BFB\u8FD9\u56DB\u6839\u8F74\u3002\n \u8FD9\u6837 __body \u5C31\u662F\u300C\u4E0A\u9762\u90A3\u4E00\u6574\u5757\u300D\uFF0Chover \u94FA\u8272\u8FB9\u5230\u8FB9\uFF0C\u8FDE\u539F\u672C\u90A3\u5708\u5916\u5708\u4E00\u8D77\u53D8\u3002\n --card-pad-all \u53EA\u662F\u56DB\u8F74\u7684\u7EC4\u5408\u503C\uFF0C\u6D88\u8D39\u7AEF style.padding \u7531 Card.ts \u644A\u6210\u56DB\u6839\u8F74\u540E\u81EA\u52A8\u6D3E\u751F\u3002 */\n --card-pad-t:14px;--card-pad-r:14px;--card-pad-b:14px;--card-pad-l:14px;\n --card-pad-all:var(--card-pad-t) var(--card-pad-r) var(--card-pad-b) var(--card-pad-l);\n padding:0;\n /* \u5934\u90E8\u533A\u80CC\u666F\u94FA\u6EE1\u6839\u8282\u70B9\u5185\u5BB9\u76D2\uFF0C\u7531\u6839\u8282\u70B9\u7EDF\u4E00\u88C1\u6210\u5916\u6846\u5706\u89D2\uFF1B__body \u81EA\u5DF1\u4E0D\u5199\u5706\u89D2\u88F8\u503C\u3002 */\n overflow:hidden;\n}\n/* \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\uFF1B\u6D45\u5E95\u4E0E\u8272\u6761\u540C\u6E90\uFF09\u3002 */\n.dshpc-card--success{--card-accent:var(--dshpc-success);--card-accent-soft:var(--dshpc-success-soft)}\n.dshpc-card--warning{--card-accent:var(--dshpc-warning);--card-accent-soft:var(--dshpc-warning-soft)}\n.dshpc-card--danger{--card-accent:var(--dshpc-danger);--card-accent-soft:var(--dshpc-danger-soft)}\n/* neutral \u6D45\u5E95\u501F chip \u5E95\uFF08\u5144\u5F1F\u9879\u76EE mute \u6863\u540C\u6B3E\uFF1A\u660E\u6697\u90FD\u6210\u7ACB\uFF09\u3002 */\n.dshpc-card--neutral{--card-accent:var(--dshpc-fg-4);--card-accent-soft:var(--dshpc-chip-bg)}\n/* \u6269\u5C55\u516B\u8272\uFF082026-10-29\uFF09\uFF1A\u8272\u6761 + \u6D45\u5E95\u540C\u6E90\uFF0C\u8F6F\u5E95\u8D70\u5404\u81EA -soft\u3002 */\n.dshpc-card--purple{--card-accent:var(--dshpc-purple);--card-accent-soft:var(--dshpc-purple-soft)}\n.dshpc-card--pink{--card-accent:var(--dshpc-pink);--card-accent-soft:var(--dshpc-pink-soft)}\n.dshpc-card--cyan{--card-accent:var(--dshpc-cyan);--card-accent-soft:var(--dshpc-cyan-soft)}\n.dshpc-card--teal{--card-accent:var(--dshpc-teal);--card-accent-soft:var(--dshpc-teal-soft)}\n.dshpc-card--orange{--card-accent:var(--dshpc-orange);--card-accent-soft:var(--dshpc-orange-soft)}\n.dshpc-card--indigo{--card-accent:var(--dshpc-indigo);--card-accent-soft:var(--dshpc-indigo-soft)}\n.dshpc-card--rose{--card-accent:var(--dshpc-rose);--card-accent-soft:var(--dshpc-rose-soft)}\n.dshpc-card--slate{--card-accent:var(--dshpc-slate);--card-accent-soft:var(--dshpc-slate-soft)}\n\n/* body = \u8272\u6761 + \u5934\u90E8\uFF0C\u4E5F\u662F\u300C\u4E0A\u9762\u90A3\u4E00\u6574\u5757\u300D\uFF1A\u5B83\u81EA\u5DF1\u627F\u62C5\u5185\u8DDD\u5E76\u94FA\u6EE1\u6839\u8282\u70B9\u5185\u5BB9\u76D2\uFF0C\n \u662F head \u4F5C\u7528\u57DF\u4E0B\u552F\u4E00\u7684 hover \u76EE\u6807\u3002\u5706\u89D2\u7531\u6839\u8282\u70B9 overflow \u88C1\u5207 \u21D2 hover \u8272\u4E0D\u9732\u65B9\u89D2\u3002\n --card-pad-all \u7531\u56DB\u6839\u8F74\u6D3E\u751F\uFF1B\u6D88\u8D39\u7AEF style.padding \u8986\u76D6\u56DB\u8F74\u540E\uFF0C\u5934\u90E8\u533A\u4E0E\u5C55\u5F00\u533A\u540C\u6B65\u5BF9\u9F50\u3002\n \u65B9\u5411\u8DDF\u7740\u6761\u5B50\u8D34\u7684\u8FB9\u5207 \u21D2 \u56DB\u4E2A\u65B9\u4F4D\u53EA\u662F\u300C\u6362\u4E00\u4E2A\u65B9\u5411\u7684 flex \u9879\u300D\uFF0C\u4E0D\u7528\u5404\u5199\u4E00\u5957\u5B9A\u4F4D\u3002 */\n.dshpc-card__body{\n display:flex;gap:var(--card-bar-gap);min-width:0;\n padding:var(--card-pad-all);\n background:transparent;\n}\n.dshpc-card--bar-top .dshpc-card__body,\n.dshpc-card--bar-bottom .dshpc-card__body{flex-direction:column}\n/* \u5C55\u5F00\u6001\u4E0D\u7279\u6B8A\u5904\u7406\u5185\u8DDD\uFF1A\u5934\u90E8\u533A\u4E0A\u4E0B\u7559\u767D\u59CB\u7EC8\u5BF9\u79F0\uFF0C\u8272\u6761\u4E0A\u4E0B\u624D\u4E0D\u4F1A\u4E00\u957F\u4E00\u77ED\u3002\n \u4E24\u5757\u4E4B\u95F4\u7684\u95F4\u9694\u5C31\u662F __body \u7684 padding-bottom\uFF0C\u5C5E\u4E8E\u5934\u90E8\u533A\u3001\u8DDF\u7740\u4E00\u8D77\u53D8\u8272\uFF1B\n __panel \u7D27\u63A5\u5176\u540E\uFF0C\u4E0D\u5728\u4E2D\u95F4\u7559\u4E00\u6761\u4E0D\u53D8\u8272\u7684\u5E26\u5B50\uFF0C\u4E5F\u4E0D\u753B\u5206\u9694\u7EBF\u3002 */\n\n/* \u5934\u90E8\u4E00\u884C = \u4E3B\u5185\u5BB9 + \u53F3\u4FA7\u69FD\uFF0C**\u6574\u4F53\u5782\u76F4\u5C45\u4E2D**\uFF1A\u8C03\u7528\u65B9\u5728 action \u91CC\u88F8\u653E\u4E00\u4E2A\u5143\u7D20\n \uFF08\u6309\u94AE / \u6587\u5B57 / \u56FE\u6807\uFF09\u4E0D\u7528\u81EA\u5DF1\u5957\u5BB9\u5668\u5C45\u4E2D\uFF1B\u4E00\u884C\u4E24\u884C\u3001\u53F3\u8FB9\u600E\u4E48\u653E\u7531\u8C03\u7528\u65B9\u5728\u6846\u5185\u81EA\u5B9A\u3002 */\n.dshpc-card__head{display:flex;align-items:center;gap:8px;min-width:0}\n.dshpc-card--bar-left .dshpc-card__head,\n.dshpc-card--bar-right .dshpc-card__head{flex:1 1 auto}\n.dshpc-card__main{flex:1;min-width:0}\n.dshpc-card__side{display:flex;align-items:center;gap:6px;flex:none}\n\n/* \u8272\u6761\uFF1A\u5DE6/\u53F3 = \u7AD6\u5411\u6761\uFF08\u9AD8\u5EA6\u8DDF\u5185\u5BB9\uFF0C\u6700\u5C0F\u4E00\u884C\uFF09\uFF1B\u4E0A/\u4E0B = \u6A2A\u5411\u6761\uFF08\u957F\u5EA6\u9ED8\u8BA4\u8DDF\u5185\u5BB9\u540C\u5BBD\uFF09\u3002\n \u53F3/\u4E0B\u65B9\u4F4D\u9760 order \u6392\u5230\u5934\u90E8\u4E4B\u540E\uFF0CDOM \u987A\u5E8F\u59CB\u7EC8\u4E0D\u53D8\u3002 */\n.dshpc-card__bar{flex:none;background:var(--card-accent);border-radius:var(--dshpc-radius-xs)}\n.dshpc-card--bar-left .dshpc-card__bar,\n.dshpc-card--bar-right .dshpc-card__bar{width:var(--card-bar-size);align-self:stretch;min-height:var(--dshpc-line-md)}\n.dshpc-card--bar-top .dshpc-card__bar,\n.dshpc-card--bar-bottom .dshpc-card__bar{width:var(--card-bar-length);height:var(--card-bar-size);align-self:flex-start}\n.dshpc-card--bar-right .dshpc-card__bar,\n.dshpc-card--bar-bottom .dshpc-card__bar{order:1}\n\n/* \u2500\u2500 \u5916\u89C2\u4E00 \u00B7 StripCard\uFF1A\u540C\u8272\u7CFB\u6D45\u5E95 + 1px \u4E0D\u53EF\u89C1\u5360\u4F4D\u8FB9\u6846 + \u65B9\u89D2 + 4px \u901A\u9AD8\u65B9\u89D2\u8272\u6761\u8D34\u5DE6\u7F18 \u2500\u2500\n \u5E95\u8272 / \u65B9\u89D2 / \u5360\u4F4D\u8FB9\u6846\u7531 Surface \u7684\u4E09\u6761\u4FEE\u9970\u7C7B\u63D0\u4F9B\uFF08Card.ts \u6309 kind \u4F20\uFF09\uFF0C\u6B64\u5904\u53EA\u7BA1\u5185\u8DDD\u4E0E\u6761\u5B50\u3002 */\n.dshpc-card.dshpc-card--strip{\n --card-bar-size:4px;--card-bar-inset:0;\n --card-pad-t:12px;--card-pad-r:12px;--card-pad-b:12px;--card-pad-l:20px;\n /* \u5E95\u8272\u6539\u8D70 Surface \u7684 --surface-bg \u53D8\u91CF\uFF08surface.css:7-8 \u5951\u7EA6\uFF09\uFF1A\u4E0D\u80FD\u5199 background \u5C5E\u6027\uFF0C\n \u5426\u5219\u900F\u660E\u6863\u8981\u8986\u76D6\u65F6\u4F1A\u88AB\u5C5E\u6027\u5C42\u6253\u67B6\uFF08\u5144\u5F1F\u9879\u76EE\u66FE\u7528 background-image \u6E10\u53D8\u7ED5\u8FC7\uFF09\u3002 */\n --surface-bg:var(--card-accent-soft,transparent);\n}\n/* \u5DE6\u5185\u8FB9\u8DDD 20px = 16 \u7559\u767D + 4 \u6761\u5BBD \u21D2 \u5185\u5BB9\u4ECE\u8272\u6761\u53F3\u7F18\u8D77\u7B97\uFF1B\u8272\u6761\u7EDD\u5BF9\u5B9A\u4F4D\u901A\u9AD8\uFF0C\u8DDF\u7740\u5185\u5BB9\u9AD8\u5EA6\u81EA\u9002\u5E94\u3002\n \u5B9A\u4F4D\u57FA\u51C6\u662F\u6839\u8282\u70B9\u7684 position:relative\uFF08Surface \u63D0\u4F9B\uFF09\uFF0Ctop:0 / bottom:0 \u56E0\u6B64\u662F\u6574\u5361\u901A\u9AD8\uFF1A\n \u5C55\u5F00\u540E\u8272\u6761\u4ECD\u4E00\u8DEF\u8D2F\u7A7F\u5230\u5C55\u5F00\u533A\u5E95\u90E8\uFF0C\u4E0D\u968F head \u5206\u533A\u88AB\u88C1\u77ED\uFF082026-11-08 \u62CD\u677F\uFF09\u3002\n \u7279\u5F02\u6027 0,3,0\uFF1A\u538B\u8FC7\u4E0A\u9762 .dshpc-card--bar-left .dshpc-card__bar \u7684\u5BBD\u5EA6\u89C4\u5219\uFF0C\u4E0E\u6CE8\u5165\u987A\u5E8F\u65E0\u5173\u3002 */\n.dshpc-card.dshpc-card--strip .dshpc-card__bar{position:absolute;left:0;top:0;bottom:0;width:4px;align-self:auto}\n\n/* \u2500\u2500 \u5916\u89C2\u4E8C \u00B7 Card\uFF1A\u8272\u6761\u8D34\u8FB9\u90A3\u4E00\u4FA7\u7684\u5185\u8DDD = \u6761\u5B50\u8DDD\u8FB9\u7F18\u7684\u8DDD\u79BB \u2500\u2500\n \u56DB\u65B9\u4F4D\u53EA\u6539\u5BF9\u5E94\u90A3\u6839 --card-pad-* \u53D8\u91CF\uFF0C__body \u4E0E __panel \u540C\u65F6\u8DDF\u7740\u5BF9\u9F50\u3002 */\n.dshpc-card--bar-left{--card-pad-l:var(--card-bar-inset)}\n.dshpc-card--bar-right{--card-pad-r:var(--card-bar-inset)}\n.dshpc-card--bar-top{--card-pad-t:var(--card-bar-inset)}\n.dshpc-card--bar-bottom{--card-pad-b:var(--card-bar-inset)}\n\n/* \u2500\u2500 \u5916\u89C2\u8F74\uFF082026-11-07\uFF09\uFF1A\u5E95\u8272\u5F00\u5173 + hover \u4F5C\u7528\u57DF \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n \u4E24\u5757\u533A\u57DF\u5404\u81EA\u72EC\u7ACB\uFF1A\u6839\u8282\u70B9\u53EA\u94FA\u4E00\u5C42\u5E38\u6001\u5E95\uFF08--surface-bg\uFF09\uFF1B__body \u662F\u300C\u4E0A\u9762\u90A3\u4E00\u6574\u5757\u300D\uFF0C\n __panel \u662F\u5B83\u7684\u5144\u5F1F\u8282\u70B9\uFF0C\u4E0D\u94FA\u4EFB\u4F55\u80CC\u666F\u3001\u4E0D\u53C2\u4E0E hover\u3002\n hoverScope\uFF08\u9ED8\u8BA4 head\uFF09\uFF1A\n head \u2014\u2014 \u53EA\u6709 __body \u94FA --dshpc-card-hover\uFF0C\u8FB9\u5230\u8FB9\uFF08\u5185\u8DDD\u5708 + \u5706\u89D2\u90FD\u5728\u8FD9\u4E00\u5757\u4E0A\uFF09\uFF1B\n \u5C55\u5F00\u6001\u4E5F\u4E0D\u6539\u5185\u8DDD\uFF0C\u4E0A\u4E0B\u4E24\u5708\u7559\u767D\u540C\u5C5E\u8FD9\u4E00\u5757\u3001\u4E00\u8D77\u53D8\u8272\uFF0C\u8272\u6761\u4E0A\u4E0B\u624D\u5BF9\u79F0\uFF1B\n \u9F20\u6807\u843D\u5728 __panel \u65F6 :hover \u6839\u672C\u4E0D\u6210\u7ACB \u21D2 \u6574\u5361\u4E0D\u89E6\u53D1\uFF0C\u4E0B\u9762\u6C38\u8FDC\u662F\u5E38\u6001\u3002\n card \u2014\u2014 \u6839\u8282\u70B9\u6539 --surface-bg\uFF0C\u6574\u5361\u542B\u5C55\u5F00\u533A\u4E00\u8D77\u53D8\u8272\uFF0C\u7531\u6D88\u8D39\u7AEF\u663E\u5F0F\u9009\u3002\n \u26A0\uFE0F \u7EDD\u4E0D\u7528\u300C\u7ED9\u5C55\u5F00\u533A\u94FA\u4E00\u5C42\u5E95\u8272\u53BB\u76D6\u4F4F\u6839\u8282\u70B9\u300D\uFF1A\u534A\u900F\u660E token \u53E0\u4E24\u5C42\u4F1A\u66F4\u6DF1\uFF08\u771F\u8E29\u8FC7\uFF09\u3002 */\n.dshpc-card.dshpc-card--no-fill{--surface-bg:transparent}\n/* \u5F00\u5173\u6253\u5F00\u5373\u58F0\u660E\u300C\u4E0A\u9762\u90A3\u4E00\u5757\u53EF\u4EA4\u4E92\u300D\uFF1A\u624B\u52BF\u8DDF\u7740\u53D8\uFF0C\u5C55\u5F00\u533A\u8FD8\u539F\u6210\u9ED8\u8BA4\u5149\u6807\u3002 */\n.dshpc-card.dshpc-card--hoverable{cursor:pointer}\n.dshpc-card.dshpc-card--hover-head .dshpc-card__panel{cursor:auto}\n/* \u53EF\u70B9\u5361\u7247\u7684\u952E\u76D8\u7126\u70B9\u73AF\uFF1A\u70B9\u51FB\u5C42 head = __body\u3001card = \u6839\u8282\u70B9\uFF0C\u4E24\u8005\u5171\u7528\u8FD9\u4E00\u6761\u3002\n outline \u753B\u5728\u76D2\u5185\uFF08offset \u8D1F\u503C\uFF09\uFF1A\u6839\u8282\u70B9 overflow:hidden \u4F1A\u88C1\u6389 __body \u5916\u4FA7\u90A3\u4E00\u5708\u3002 */\n.dshpc-card__hit:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:-2px}\n/* \u987A\u5E8F\u5373\u4F18\u5148\u7EA7\uFF1Astrip \u6D45\u5E95 / no-fill \u900F\u660E(0,2,0) \u2192 card:hover(0,3,0\uFF0C\u6700\u9AD8)\u3002 */\n.dshpc-card.dshpc-card--hover-head .dshpc-card__body:hover{background:var(--dshpc-card-hover)}\n.dshpc-card.dshpc-card--hover-card:hover{--surface-bg:var(--dshpc-card-hover)}\n\n.dshpc-card__toggle{\n display:inline-flex;align-items:center;justify-content:center;\n width:24px;height:24px;padding:0;background:none;border:none;border-radius:var(--dshpc-radius-sm);\n color:var(--dshpc-fg-3);cursor:pointer;\n}\n.dshpc-card__toggle:hover{background:var(--dshpc-surface-sunken);color:var(--dshpc-fg)}\n/* \u7BAD\u5934\u662F svg\uFF08Chevron\uFF09\uFF0C\u4E0D\u662F\u5B57\u5F62 \u21D2 \u4E0D\u8981 font-size\uFF1Binline-flex \u514D\u6389 svg \u7684\u57FA\u7EBF\u7559\u767D\u3002 */\n.dshpc-card__caret{display:inline-flex;transition:transform .15s ease}\n.dshpc-card__caret.is-open{transform:rotate(180deg)}\n/* \u5C55\u5F00\u533A\u53EA\u8D1F\u8D23\u300C\u628A\u5C55\u5F00\u5185\u5BB9\u653E\u5728\u5934\u90E8\u533A\u4E0B\u9762\u300D\uFF1A\u81EA\u5DF1\u627F\u62C5\u5DE6\u53F3 / \u5E95\u90E8\u5185\u8DDD\uFF0C\u8865\u4E0A\u5361\u7247\u5E95\u90E8\u7559\u767D\u3002\n margin-top \u4E0E padding-top \u53CC\u53CC\u5F52 0 \u21D2 \u4E24\u5757\u4E4B\u95F4\u7684\u95F4\u9694\u53EA\u6709 __body \u7684 padding-bottom\uFF0C\n \u5C5E\u4E8E\u5934\u90E8\u533A\u3001\u8DDF\u7740 hover \u4E00\u8D77\u53D8\u8272\uFF1B\u6D88\u8D39\u7AEF\u81EA\u7ED8\u7684\u7EBF\u56E0\u6B64\u80FD\u8D34\u4F4F\u8FD9\u5757\u8272\u7684\u4E0B\u6CBF\uFF0C\u4E2D\u95F4\u4E0D\u5939\u4E0D\u53D8\u8272\u7684\u5E26\u5B50\u3002\n \u5DE6\u53F3 / \u5E95\u90E8\u5185\u8DDD\u8BFB\u540C\u4E00\u7EC4\u56DB\u8F74\u53D8\u91CF \u21D2 \u4E0E\u5934\u90E8\u533A\u540C\u6E90\uFF0C\u4E0D\u4F1A\u5DE6\u8D34\u8FB9\u3001\u53F3\u7559\u767D\u3002\n \u6838\u5FC3\u4E0D\u753B\u4EFB\u4F55\u5206\u9694\u7EBF\uFF1A\u9700\u8981\u7EBF\u7531\u6D88\u8D39\u7AEF\u5728 panel \u5185\u5BB9\u91CC\u81EA\u7ED8\uFF08\u6709\u65F6\u8981\u3001\u6709\u65F6\u4E0D\u8981\uFF0C\u6D88\u8D39\u7AEF\u81EA\u5DF1\u51B3\u5B9A\uFF09\u3002 */\n.dshpc-card__panel{\n margin:0 var(--card-pad-r) 0 var(--card-pad-l);\n padding:0 0 var(--card-pad-b);\n}\n";
2
2
  //# sourceMappingURL=card-css.generated.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"card-css.generated.d.ts","sourceRoot":"","sources":["../../../src/ui/display/card-css.generated.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,QAAQ,6wdAA+kO,CAAA"}
1
+ {"version":3,"file":"card-css.generated.d.ts","sourceRoot":"","sources":["../../../src/ui/display/card-css.generated.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,QAAQ,iteAAmyO,CAAA"}
@@ -1,4 +1,4 @@
1
1
  // ⚠️ 生成物,勿手改。真源 = src/ui/display/card.css
2
2
  // 由 scripts/gen-css.mjs 生成(`pnpm run gen:css`):改样式请改那个 .css 文件后重新生成。
3
- export const CARD_CSS = "\n/* ── Card / StripCard:Surface 外框 + 头部契约 + 色条 ─────────────────────\n 外框(底 / 边框 / 圆角)来自 .dshpc-surface(src/ui/surface.css):\n 本文件**不再写 border / border-radius**,圆角契约因此只有一个定义点(容器档 = 12)。\n 内距不在根节点:根节点 padding:0,__body(头部区)与 __panel(展开区)各自承担 ——\n 两块区域因此彼此独立,hover 只可能落在头部区,展开区不会被波及。\n 这里只管三件 Surface 不该知道的事:色条几何、头部布局、两块区域的内距。\n\n 色条几何默认值都可被 props 覆盖(Card.ts 写对应的 CSS 变量):\n --card-bar-size 条子粗细\n --card-bar-inset 条子距卡片边缘的距离(= 贴边那一侧的内距)\n --card-bar-gap 条子距内容的距离(= body 的 gap)\n --card-bar-length 上下方位时的条长(100% = 跟内容同宽)\n 这些变量只在本文件消费(3 份文件一起引时,跨文件引用别处的变量会静默失效),\n 所以默认值必须写在这里,而不是令牌或别的皮肤里。 */\n.dshpc-card{\n --card-accent:var(--dshpc-business);\n --card-accent-soft:var(--dshpc-business-soft);\n --card-bar-size:6px;\n --card-bar-inset:12px;\n --card-bar-gap:12px;\n --card-bar-length:100%;\n /* 内距四根轴是唯一真源:根节点自己不留 padding,__body 与 __panel 都只读这四根轴。\n 这样 __body 就是「上面那一整块」,hover 铺色边到边,连原本那圈外圈一起变。\n --card-pad-all 只是四轴的组合值,消费端 style.padding 由 Card.ts 摊成四根轴后自动派生。 */\n --card-pad-t:14px;--card-pad-r:14px;--card-pad-b:14px;--card-pad-l:14px;\n --card-pad-all:var(--card-pad-t) var(--card-pad-r) var(--card-pad-b) var(--card-pad-l);\n padding:0;\n /* 头部区背景铺满根节点内容盒,由根节点统一裁成外框圆角;__body 自己不写圆角裸值。 */\n overflow:hidden;\n}\n/* 档位 → token(照 records-timeline 的 tone 模式:一个变量切档,不写 5 套规则;浅底与色条同源)。 */\n.dshpc-card--success{--card-accent:var(--dshpc-success);--card-accent-soft:var(--dshpc-success-soft)}\n.dshpc-card--warning{--card-accent:var(--dshpc-warning);--card-accent-soft:var(--dshpc-warning-soft)}\n.dshpc-card--danger{--card-accent:var(--dshpc-danger);--card-accent-soft:var(--dshpc-danger-soft)}\n/* neutral 浅底借 chip 底(兄弟项目 mute 档同款:明暗都成立)。 */\n.dshpc-card--neutral{--card-accent:var(--dshpc-fg-4);--card-accent-soft:var(--dshpc-chip-bg)}\n/* 扩展八色(2026-10-29):色条 + 浅底同源,软底走各自 -soft。 */\n.dshpc-card--purple{--card-accent:var(--dshpc-purple);--card-accent-soft:var(--dshpc-purple-soft)}\n.dshpc-card--pink{--card-accent:var(--dshpc-pink);--card-accent-soft:var(--dshpc-pink-soft)}\n.dshpc-card--cyan{--card-accent:var(--dshpc-cyan);--card-accent-soft:var(--dshpc-cyan-soft)}\n.dshpc-card--teal{--card-accent:var(--dshpc-teal);--card-accent-soft:var(--dshpc-teal-soft)}\n.dshpc-card--orange{--card-accent:var(--dshpc-orange);--card-accent-soft:var(--dshpc-orange-soft)}\n.dshpc-card--indigo{--card-accent:var(--dshpc-indigo);--card-accent-soft:var(--dshpc-indigo-soft)}\n.dshpc-card--rose{--card-accent:var(--dshpc-rose);--card-accent-soft:var(--dshpc-rose-soft)}\n.dshpc-card--slate{--card-accent:var(--dshpc-slate);--card-accent-soft:var(--dshpc-slate-soft)}\n\n/* body = 色条 + 头部,也是「上面那一整块」:它自己承担内距并铺满根节点内容盒,\n 是 head 作用域下唯一的 hover 目标。圆角由根节点 overflow 裁切 ⇒ hover 色不露方角。\n --card-pad-all 由四根轴派生;消费端 style.padding 覆盖四轴后,头部区与展开区同步对齐。\n 方向跟着条子贴的边切 ⇒ 四个方位只是「换一个方向的 flex 项」,不用各写一套定位。 */\n.dshpc-card__body{\n display:flex;gap:var(--card-bar-gap);min-width:0;\n padding:var(--card-pad-all);\n background:transparent;\n}\n.dshpc-card--bar-top .dshpc-card__body,\n.dshpc-card--bar-bottom .dshpc-card__body{flex-direction:column}\n/* 展开态不特殊处理内距:头部区上下留白始终对称,色条上下才不会一长一短。\n 两块之间的间隔就是 __body 的 padding-bottom,属于头部区、跟着一起变色;\n __panel 紧接其后,不在中间留一条不变色的带子,也不画分隔线。 */\n\n/* 头部一行 = 主内容 + 右侧槽,**整体垂直居中**:调用方在 action 里裸放一个元素\n (按钮 / 文字 / 图标)不用自己套容器居中;一行两行、右边怎么放由调用方在框内自定。 */\n.dshpc-card__head{display:flex;align-items:center;gap:8px;min-width:0}\n.dshpc-card--bar-left .dshpc-card__head,\n.dshpc-card--bar-right .dshpc-card__head{flex:1 1 auto}\n.dshpc-card__main{flex:1;min-width:0}\n.dshpc-card__side{display:flex;align-items:center;gap:6px;flex:none}\n\n/* 色条:左/右 = 竖向条(高度跟内容,最小一行);上/下 = 横向条(长度默认跟内容同宽)。\n 右/下方位靠 order 排到头部之后,DOM 顺序始终不变。 */\n.dshpc-card__bar{flex:none;background:var(--card-accent);border-radius:var(--dshpc-radius-xs)}\n.dshpc-card--bar-left .dshpc-card__bar,\n.dshpc-card--bar-right .dshpc-card__bar{width:var(--card-bar-size);align-self:stretch;min-height:var(--dshpc-line-md)}\n.dshpc-card--bar-top .dshpc-card__bar,\n.dshpc-card--bar-bottom .dshpc-card__bar{width:var(--card-bar-length);height:var(--card-bar-size);align-self:flex-start}\n.dshpc-card--bar-right .dshpc-card__bar,\n.dshpc-card--bar-bottom .dshpc-card__bar{order:1}\n\n/* ── 外观一 · StripCard:同色系浅底 + 1px 不可见占位边框 + 方角 + 4px 通高方角色条贴左缘 ──\n 底色 / 方角 / 占位边框由 Surface 的三条修饰类提供(Card.ts 按 kind 传),此处只管内距与条子。 */\n.dshpc-card.dshpc-card--strip{\n --card-bar-size:4px;--card-bar-inset:0;\n --card-pad-t:12px;--card-pad-r:12px;--card-pad-b:12px;--card-pad-l:20px;\n /* 底色改走 Surface 的 --surface-bg 变量(surface.css:7-8 契约):不能写 background 属性,\n 否则透明档要覆盖时会被属性层打架(兄弟项目曾用 background-image 渐变绕过)。 */\n --surface-bg:var(--card-accent-soft,transparent);\n}\n/* 左内边距 20px = 16 留白 + 4 条宽 ⇒ 内容从色条右缘起算;色条绝对定位通高,跟着内容高度自适应。\n 定位基准是根节点的 position:relative(Surface 提供),top:0 / bottom:0 因此是整卡通高:\n 展开后色条仍一路贯穿到展开区底部,不随 head 分区被裁短(2026-11-08 拍板)。\n 特异性 0,3,0:压过上面 .dshpc-card--bar-left .dshpc-card__bar 的宽度规则,与注入顺序无关。 */\n.dshpc-card.dshpc-card--strip .dshpc-card__bar{position:absolute;left:0;top:0;bottom:0;width:4px;align-self:auto}\n\n/* ── 外观二 · Card:色条贴边那一侧的内距 = 条子距边缘的距离 ──\n 四方位只改对应那根 --card-pad-* 变量,__body 与 __panel 同时跟着对齐。 */\n.dshpc-card--bar-left{--card-pad-l:var(--card-bar-inset)}\n.dshpc-card--bar-right{--card-pad-r:var(--card-bar-inset)}\n.dshpc-card--bar-top{--card-pad-t:var(--card-bar-inset)}\n.dshpc-card--bar-bottom{--card-pad-b:var(--card-bar-inset)}\n\n/* ── 外观轴(2026-11-07):底色开关 + hover 作用域 ───────────────────────────\n 两块区域各自独立:根节点只铺一层常态底(--surface-bg);__body 是「上面那一整块」,\n __panel 是它的兄弟节点,不铺任何背景、不参与 hover。\n hoverScope(默认 head):\n head —— 只有 __body 铺 --dshpc-card-hover,边到边(内距圈 + 圆角都在这一块上);\n 展开态也不改内距,上下两圈留白同属这一块、一起变色,色条上下才对称;\n 鼠标落在 __panel 时 :hover 根本不成立 ⇒ 整卡不触发,下面永远是常态。\n card —— 根节点改 --surface-bg,整卡含展开区一起变色,由消费端显式选。\n ⚠️ 绝不用「给展开区铺一层底色去盖住根节点」:半透明 token 叠两层会更深(真踩过)。 */\n.dshpc-card.dshpc-card--no-fill{--surface-bg:transparent}\n/* 开关打开即声明「上面那一块可交互」:手势跟着变,展开区还原成默认光标。 */\n.dshpc-card.dshpc-card--hoverable{cursor:pointer}\n.dshpc-card.dshpc-card--hover-head .dshpc-card__panel{cursor:auto}\n/* 顺序即优先级:strip 浅底 / no-fill 透明(0,2,0) → card:hover(0,3,0,最高)。 */\n.dshpc-card.dshpc-card--hover-head .dshpc-card__body:hover{background:var(--dshpc-card-hover)}\n.dshpc-card.dshpc-card--hover-card:hover{--surface-bg:var(--dshpc-card-hover)}\n\n.dshpc-card__toggle{\n display:inline-flex;align-items:center;justify-content:center;\n width:24px;height:24px;padding:0;background:none;border:none;border-radius:var(--dshpc-radius-sm);\n color:var(--dshpc-fg-3);cursor:pointer;\n}\n.dshpc-card__toggle:hover{background:var(--dshpc-surface-sunken);color:var(--dshpc-fg)}\n/* 箭头是 svg(Chevron),不是字形 ⇒ 不要 font-size;inline-flex 免掉 svg 的基线留白。 */\n.dshpc-card__caret{display:inline-flex;transition:transform .15s ease}\n.dshpc-card__caret.is-open{transform:rotate(180deg)}\n/* 展开区只负责「把展开内容放在头部区下面」:自己承担左右 / 底部内距,补上卡片底部留白。\n margin-top 与 padding-top 双双归 0 ⇒ 两块之间的间隔只有 __body 的 padding-bottom,\n 属于头部区、跟着 hover 一起变色;消费端自绘的线因此能贴住这块色的下沿,中间不夹不变色的带子。\n 左右 / 底部内距读同一组四轴变量 ⇒ 与头部区同源,不会左贴边、右留白。\n 核心不画任何分隔线:需要线由消费端在 panel 内容里自绘(有时要、有时不要,消费端自己决定)。 */\n.dshpc-card__panel{\n margin:0 var(--card-pad-r) 0 var(--card-pad-l);\n padding:0 0 var(--card-pad-b);\n}\n";
3
+ export const CARD_CSS = "\n/* ── Card / StripCard:Surface 外框 + 头部契约 + 色条 ─────────────────────\n 外框(底 / 边框 / 圆角)来自 .dshpc-surface(src/ui/surface.css):\n 本文件**不再写 border / border-radius**,圆角契约因此只有一个定义点(容器档 = 12)。\n 内距不在根节点:根节点 padding:0,__body(头部区)与 __panel(展开区)各自承担 ——\n 两块区域因此彼此独立,hover 只可能落在头部区,展开区不会被波及。\n 这里只管三件 Surface 不该知道的事:色条几何、头部布局、两块区域的内距。\n\n 色条几何默认值都可被 props 覆盖(Card.ts 写对应的 CSS 变量):\n --card-bar-size 条子粗细\n --card-bar-inset 条子距卡片边缘的距离(= 贴边那一侧的内距)\n --card-bar-gap 条子距内容的距离(= body 的 gap)\n --card-bar-length 上下方位时的条长(100% = 跟内容同宽)\n 这些变量只在本文件消费(3 份文件一起引时,跨文件引用别处的变量会静默失效),\n 所以默认值必须写在这里,而不是令牌或别的皮肤里。 */\n.dshpc-card{\n --card-accent:var(--dshpc-business);\n --card-accent-soft:var(--dshpc-business-soft);\n --card-bar-size:6px;\n --card-bar-inset:12px;\n --card-bar-gap:12px;\n --card-bar-length:100%;\n /* 内距四根轴是唯一真源:根节点自己不留 padding,__body 与 __panel 都只读这四根轴。\n 这样 __body 就是「上面那一整块」,hover 铺色边到边,连原本那圈外圈一起变。\n --card-pad-all 只是四轴的组合值,消费端 style.padding 由 Card.ts 摊成四根轴后自动派生。 */\n --card-pad-t:14px;--card-pad-r:14px;--card-pad-b:14px;--card-pad-l:14px;\n --card-pad-all:var(--card-pad-t) var(--card-pad-r) var(--card-pad-b) var(--card-pad-l);\n padding:0;\n /* 头部区背景铺满根节点内容盒,由根节点统一裁成外框圆角;__body 自己不写圆角裸值。 */\n overflow:hidden;\n}\n/* 档位 → token(照 records-timeline 的 tone 模式:一个变量切档,不写 5 套规则;浅底与色条同源)。 */\n.dshpc-card--success{--card-accent:var(--dshpc-success);--card-accent-soft:var(--dshpc-success-soft)}\n.dshpc-card--warning{--card-accent:var(--dshpc-warning);--card-accent-soft:var(--dshpc-warning-soft)}\n.dshpc-card--danger{--card-accent:var(--dshpc-danger);--card-accent-soft:var(--dshpc-danger-soft)}\n/* neutral 浅底借 chip 底(兄弟项目 mute 档同款:明暗都成立)。 */\n.dshpc-card--neutral{--card-accent:var(--dshpc-fg-4);--card-accent-soft:var(--dshpc-chip-bg)}\n/* 扩展八色(2026-10-29):色条 + 浅底同源,软底走各自 -soft。 */\n.dshpc-card--purple{--card-accent:var(--dshpc-purple);--card-accent-soft:var(--dshpc-purple-soft)}\n.dshpc-card--pink{--card-accent:var(--dshpc-pink);--card-accent-soft:var(--dshpc-pink-soft)}\n.dshpc-card--cyan{--card-accent:var(--dshpc-cyan);--card-accent-soft:var(--dshpc-cyan-soft)}\n.dshpc-card--teal{--card-accent:var(--dshpc-teal);--card-accent-soft:var(--dshpc-teal-soft)}\n.dshpc-card--orange{--card-accent:var(--dshpc-orange);--card-accent-soft:var(--dshpc-orange-soft)}\n.dshpc-card--indigo{--card-accent:var(--dshpc-indigo);--card-accent-soft:var(--dshpc-indigo-soft)}\n.dshpc-card--rose{--card-accent:var(--dshpc-rose);--card-accent-soft:var(--dshpc-rose-soft)}\n.dshpc-card--slate{--card-accent:var(--dshpc-slate);--card-accent-soft:var(--dshpc-slate-soft)}\n\n/* body = 色条 + 头部,也是「上面那一整块」:它自己承担内距并铺满根节点内容盒,\n 是 head 作用域下唯一的 hover 目标。圆角由根节点 overflow 裁切 ⇒ hover 色不露方角。\n --card-pad-all 由四根轴派生;消费端 style.padding 覆盖四轴后,头部区与展开区同步对齐。\n 方向跟着条子贴的边切 ⇒ 四个方位只是「换一个方向的 flex 项」,不用各写一套定位。 */\n.dshpc-card__body{\n display:flex;gap:var(--card-bar-gap);min-width:0;\n padding:var(--card-pad-all);\n background:transparent;\n}\n.dshpc-card--bar-top .dshpc-card__body,\n.dshpc-card--bar-bottom .dshpc-card__body{flex-direction:column}\n/* 展开态不特殊处理内距:头部区上下留白始终对称,色条上下才不会一长一短。\n 两块之间的间隔就是 __body 的 padding-bottom,属于头部区、跟着一起变色;\n __panel 紧接其后,不在中间留一条不变色的带子,也不画分隔线。 */\n\n/* 头部一行 = 主内容 + 右侧槽,**整体垂直居中**:调用方在 action 里裸放一个元素\n (按钮 / 文字 / 图标)不用自己套容器居中;一行两行、右边怎么放由调用方在框内自定。 */\n.dshpc-card__head{display:flex;align-items:center;gap:8px;min-width:0}\n.dshpc-card--bar-left .dshpc-card__head,\n.dshpc-card--bar-right .dshpc-card__head{flex:1 1 auto}\n.dshpc-card__main{flex:1;min-width:0}\n.dshpc-card__side{display:flex;align-items:center;gap:6px;flex:none}\n\n/* 色条:左/右 = 竖向条(高度跟内容,最小一行);上/下 = 横向条(长度默认跟内容同宽)。\n 右/下方位靠 order 排到头部之后,DOM 顺序始终不变。 */\n.dshpc-card__bar{flex:none;background:var(--card-accent);border-radius:var(--dshpc-radius-xs)}\n.dshpc-card--bar-left .dshpc-card__bar,\n.dshpc-card--bar-right .dshpc-card__bar{width:var(--card-bar-size);align-self:stretch;min-height:var(--dshpc-line-md)}\n.dshpc-card--bar-top .dshpc-card__bar,\n.dshpc-card--bar-bottom .dshpc-card__bar{width:var(--card-bar-length);height:var(--card-bar-size);align-self:flex-start}\n.dshpc-card--bar-right .dshpc-card__bar,\n.dshpc-card--bar-bottom .dshpc-card__bar{order:1}\n\n/* ── 外观一 · StripCard:同色系浅底 + 1px 不可见占位边框 + 方角 + 4px 通高方角色条贴左缘 ──\n 底色 / 方角 / 占位边框由 Surface 的三条修饰类提供(Card.ts 按 kind 传),此处只管内距与条子。 */\n.dshpc-card.dshpc-card--strip{\n --card-bar-size:4px;--card-bar-inset:0;\n --card-pad-t:12px;--card-pad-r:12px;--card-pad-b:12px;--card-pad-l:20px;\n /* 底色改走 Surface 的 --surface-bg 变量(surface.css:7-8 契约):不能写 background 属性,\n 否则透明档要覆盖时会被属性层打架(兄弟项目曾用 background-image 渐变绕过)。 */\n --surface-bg:var(--card-accent-soft,transparent);\n}\n/* 左内边距 20px = 16 留白 + 4 条宽 ⇒ 内容从色条右缘起算;色条绝对定位通高,跟着内容高度自适应。\n 定位基准是根节点的 position:relative(Surface 提供),top:0 / bottom:0 因此是整卡通高:\n 展开后色条仍一路贯穿到展开区底部,不随 head 分区被裁短(2026-11-08 拍板)。\n 特异性 0,3,0:压过上面 .dshpc-card--bar-left .dshpc-card__bar 的宽度规则,与注入顺序无关。 */\n.dshpc-card.dshpc-card--strip .dshpc-card__bar{position:absolute;left:0;top:0;bottom:0;width:4px;align-self:auto}\n\n/* ── 外观二 · Card:色条贴边那一侧的内距 = 条子距边缘的距离 ──\n 四方位只改对应那根 --card-pad-* 变量,__body 与 __panel 同时跟着对齐。 */\n.dshpc-card--bar-left{--card-pad-l:var(--card-bar-inset)}\n.dshpc-card--bar-right{--card-pad-r:var(--card-bar-inset)}\n.dshpc-card--bar-top{--card-pad-t:var(--card-bar-inset)}\n.dshpc-card--bar-bottom{--card-pad-b:var(--card-bar-inset)}\n\n/* ── 外观轴(2026-11-07):底色开关 + hover 作用域 ───────────────────────────\n 两块区域各自独立:根节点只铺一层常态底(--surface-bg);__body 是「上面那一整块」,\n __panel 是它的兄弟节点,不铺任何背景、不参与 hover。\n hoverScope(默认 head):\n head —— 只有 __body 铺 --dshpc-card-hover,边到边(内距圈 + 圆角都在这一块上);\n 展开态也不改内距,上下两圈留白同属这一块、一起变色,色条上下才对称;\n 鼠标落在 __panel 时 :hover 根本不成立 ⇒ 整卡不触发,下面永远是常态。\n card —— 根节点改 --surface-bg,整卡含展开区一起变色,由消费端显式选。\n ⚠️ 绝不用「给展开区铺一层底色去盖住根节点」:半透明 token 叠两层会更深(真踩过)。 */\n.dshpc-card.dshpc-card--no-fill{--surface-bg:transparent}\n/* 开关打开即声明「上面那一块可交互」:手势跟着变,展开区还原成默认光标。 */\n.dshpc-card.dshpc-card--hoverable{cursor:pointer}\n.dshpc-card.dshpc-card--hover-head .dshpc-card__panel{cursor:auto}\n/* 可点卡片的键盘焦点环:点击层 head = __body、card = 根节点,两者共用这一条。\n outline 画在盒内(offset 负值):根节点 overflow:hidden 会裁掉 __body 外侧那一圈。 */\n.dshpc-card__hit:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:-2px}\n/* 顺序即优先级:strip 浅底 / no-fill 透明(0,2,0) → card:hover(0,3,0,最高)。 */\n.dshpc-card.dshpc-card--hover-head .dshpc-card__body:hover{background:var(--dshpc-card-hover)}\n.dshpc-card.dshpc-card--hover-card:hover{--surface-bg:var(--dshpc-card-hover)}\n\n.dshpc-card__toggle{\n display:inline-flex;align-items:center;justify-content:center;\n width:24px;height:24px;padding:0;background:none;border:none;border-radius:var(--dshpc-radius-sm);\n color:var(--dshpc-fg-3);cursor:pointer;\n}\n.dshpc-card__toggle:hover{background:var(--dshpc-surface-sunken);color:var(--dshpc-fg)}\n/* 箭头是 svg(Chevron),不是字形 ⇒ 不要 font-size;inline-flex 免掉 svg 的基线留白。 */\n.dshpc-card__caret{display:inline-flex;transition:transform .15s ease}\n.dshpc-card__caret.is-open{transform:rotate(180deg)}\n/* 展开区只负责「把展开内容放在头部区下面」:自己承担左右 / 底部内距,补上卡片底部留白。\n margin-top 与 padding-top 双双归 0 ⇒ 两块之间的间隔只有 __body 的 padding-bottom,\n 属于头部区、跟着 hover 一起变色;消费端自绘的线因此能贴住这块色的下沿,中间不夹不变色的带子。\n 左右 / 底部内距读同一组四轴变量 ⇒ 与头部区同源,不会左贴边、右留白。\n 核心不画任何分隔线:需要线由消费端在 panel 内容里自绘(有时要、有时不要,消费端自己决定)。 */\n.dshpc-card__panel{\n margin:0 var(--card-pad-r) 0 var(--card-pad-l);\n padding:0 0 var(--card-pad-b);\n}\n";
4
4
  //# sourceMappingURL=card-css.generated.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"card-css.generated.js","sourceRoot":"","sources":["../../../src/ui/display/card-css.generated.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,qEAAqE;AACrE,MAAM,CAAC,MAAM,QAAQ,GAAG,4kOAA4kO,CAAA"}
1
+ {"version":3,"file":"card-css.generated.js","sourceRoot":"","sources":["../../../src/ui/display/card-css.generated.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,qEAAqE;AACrE,MAAM,CAAC,MAAM,QAAQ,GAAG,gyOAAgyO,CAAA"}
@@ -1,6 +1,6 @@
1
1
  export { CONTROLS_DOMAIN, ensureControls, getStyleKit, setStyleKit } from './infra/css.js';
2
2
  export { useLocale } from './infra/locale.js';
3
- export { filterGroups, flattenOptions, groupOf, labelsOf, resolveTriggerSizing, sliceGroups, toGroups, toggleValue, type PickerGroup, type PickerOption, } from './inputs/picker-logic.js';
3
+ export { filterGroups, flattenOptions, groupOf, labelsOf, resolveMenuSizing, resolveTriggerSizing, sliceGroups, toFlatOptions, toGroups, toggleValue, type PickerGroup, type PickerOption, type PickerSizing, } from './inputs/picker-logic.js';
4
4
  export { Picker, type PickerProps, type PickerSize } from './inputs/Picker.js';
5
5
  export { DateTimePicker, type DateTimeOutput, type DateTimePickerProps, type DateTimeSize, } from './inputs/DateTimePicker.js';
6
6
  export { buildMonthCells, ceilToPrecision, clampUnit, dayCaption, floorToPrecision, formatDateTimeIso, monthCaption, msToParts, nowParts, nowTimeFor, parseDateTime, partsOf, partsToMs, rangeIsValid, resolvePresetExpr, sameLocalDay, stepMax, stepUnit, toEndDraft, weekdayLabels, type DateTimeParts, type DateTimePrecision, type DateTimePreset, type DayCell, type DayRef, type EndDraft, type StepUnit, type TimeParts, } from './inputs/datetime-logic.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC1F,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EACL,YAAY,EACZ,cAAc,EACd,OAAO,EACP,QAAQ,EACR,iBAAiB,EACjB,oBAAoB,EACpB,WAAW,EACX,aAAa,EACb,QAAQ,EACR,WAAW,EACX,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,YAAY,GAClB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC9E,OAAO,EACL,cAAc,EACd,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,YAAY,GAClB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,eAAe,EACf,eAAe,EACf,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,UAAU,EACV,aAAa,EACb,OAAO,EACP,SAAS,EACT,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,OAAO,EACP,QAAQ,EACR,UAAU,EACV,aAAa,EACb,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,OAAO,EACZ,KAAK,MAAM,EACX,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,SAAS,GACf,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,KAAK,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AACrG,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AACxF,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,UAAU,GAChB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAC5E,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAC5F,OAAO,EACL,UAAU,EACV,KAAK,eAAe,EACpB,KAAK,aAAa,GACnB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACL,YAAY,EACZ,KAAK,iBAAiB,EACtB,KAAK,WAAW,GACjB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,UAAU,EACV,YAAY,EACZ,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,aAAa,GACnB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACL,YAAY,EACZ,IAAI,EACJ,SAAS,EACT,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,eAAe,GACrB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,OAAO,EACP,YAAY,EACZ,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,WAAW,GACjB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEtF,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAEjE,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE3D,OAAO,EACL,UAAU,EACV,KAAK,eAAe,EACpB,KAAK,qBAAqB,GAC3B,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,SAAS,EACT,WAAW,EACX,SAAS,EACT,SAAS,EACT,KAAK,QAAQ,EACb,KAAK,iBAAiB,EACtB,KAAK,eAAe,GACrB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EACL,UAAU,EACV,YAAY,EACZ,eAAe,EACf,WAAW,EACX,UAAU,EACV,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,KAAK,SAAS,GACf,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACL,SAAS,EACT,MAAM,EACN,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,aAAa,GACnB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrI,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAC1F,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACzE,OAAO,EACL,UAAU,EACV,KAAK,gBAAgB,EACrB,KAAK,eAAe,GACrB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACnE,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACpE,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpG,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACxE,OAAO,EACL,OAAO,EACP,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,WAAW,EACX,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,gBAAgB,GACtB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,cAAc,GACpB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,WAAW,EAAE,KAAK,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AACrG,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvE,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,KAAK,kBAAkB,EACvB,KAAK,eAAe,GACrB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EACL,YAAY,EACZ,KAAK,iBAAiB,GACvB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,eAAe,GACrB,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAAE,sBAAsB,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAChF,OAAO,EACL,SAAS,EACT,SAAS,EACT,eAAe,EACf,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,cAAc,GACpB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,aAAa,EACb,SAAS,EACT,WAAW,EACX,WAAW,EACX,MAAM,EACN,SAAS,EACT,WAAW,EACX,aAAa,EACb,KAAK,SAAS,EACd,KAAK,UAAU,GAChB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,KAAK,EACL,WAAW,EACX,aAAa,EACb,cAAc,EACd,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,GACxB,MAAM,mBAAmB,CAAA"}
package/dist/ui/index.js CHANGED
@@ -4,7 +4,7 @@
4
4
  // `ensureControls()` 退化为可选的 token 预热,不再需要调。
5
5
  export { CONTROLS_DOMAIN, ensureControls, getStyleKit, setStyleKit } from './infra/css.js';
6
6
  export { useLocale } from './infra/locale.js';
7
- export { filterGroups, flattenOptions, groupOf, labelsOf, resolveTriggerSizing, sliceGroups, toGroups, toggleValue, } from './inputs/picker-logic.js';
7
+ export { filterGroups, flattenOptions, groupOf, labelsOf, resolveMenuSizing, resolveTriggerSizing, sliceGroups, toFlatOptions, toGroups, toggleValue, } from './inputs/picker-logic.js';
8
8
  export { Picker } from './inputs/Picker.js';
9
9
  export { DateTimePicker, } from './inputs/DateTimePicker.js';
10
10
  export { buildMonthCells, ceilToPrecision, clampUnit, dayCaption, floorToPrecision, formatDateTimeIso, monthCaption, msToParts, nowParts, nowTimeFor, parseDateTime, partsOf, partsToMs, rangeIsValid, resolvePresetExpr, sameLocalDay, stepMax, stepUnit, toEndDraft, weekdayLabels, } from './inputs/datetime-logic.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"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"}
@@ -1,20 +1,22 @@
1
1
  import { createElement as h, type ReactNode } from 'react';
2
2
  import { type Translate } from '../../utils/i18n.js';
3
3
  import { type PickerSize } from './Picker.js';
4
- import { type PickerGroup } from './picker-logic.js';
4
+ import { type PickerGroup, type PickerSizing } from './picker-logic.js';
5
5
  /**
6
- * 模型选择器的两种形态(消费者自选):
7
- * - `grouped`(分组,默认):**一个下拉、完全独立**,供应商做组头、模型列在下面,不与任何东西联动。
8
- * - `cascade`(联动):**两个下拉、彼此联动** —— 先选供应商,后面模型列表跟着筛;
9
- * 换供应商会清空已选模型(旧模型不属于新供应商)。
6
+ * 选择模型的三种形态(消费者自选):
7
+ * - `grouped`(分组,默认):一个下拉,供应商做组头、模型列在下面。
8
+ * - `flat`(平铺):一个下拉,所有模型平铺成「厂商-模型」,不分组,搜厂商名即可筛。
9
+ * - `cascade`(联动):两个下拉,先选供应商、模型列表跟着筛;两个框都带搜索。
10
10
  *
11
11
  * **返回口径一致**:`onChange` 一律发最终模型值(`${provider}/${id}`);级联态换供应商先发 `''`。
12
12
  * 选「默认模型」也发 `''` —— 表示没选,调用方自己处理。
13
13
  *
14
14
  * **数据自带**:不传 `groups` 就读 `connectHost(ctx, { modelsPath })` 喂进的真实目录。
15
+ * **宽度**:`width` / `minWidth` / `maxWidth` 管触发器(三种形态通用);
16
+ * `searchSizing` 管所有搜索框;cascade 的两个框另可分别用 `providerSizing` / `modelSizing` 覆盖。
15
17
  */
16
- export type ModelPickerVariant = 'grouped' | 'cascade';
17
- export interface ModelPickerProps {
18
+ export type ModelPickerVariant = 'grouped' | 'flat' | 'cascade';
19
+ export interface ModelPickerProps extends PickerSizing {
18
20
  /** 覆盖内置目录(一般不用;测试或特殊数据源时才传)。 */
19
21
  groups?: PickerGroup[];
20
22
  variant?: ModelPickerVariant;
@@ -37,11 +39,17 @@ export interface ModelPickerProps {
37
39
  degraded?: boolean;
38
40
  disabled?: boolean;
39
41
  clearable?: boolean;
40
- /** 下拉内搜索框(默认开;要关传 false)。 */
42
+ /** 下拉内搜索框(默认开;要关传 false)。三种形态、cascade 两个框一起生效。 */
41
43
  searchable?: boolean;
42
44
  size?: PickerSize;
43
45
  placement?: 'down' | 'up';
44
46
  className?: string;
47
+ /** 下拉内搜索框的宽度三轴(所有形态共用);不传沿用 CSS 的 100% 铺满。 */
48
+ searchSizing?: PickerSizing;
49
+ /** cascade:厂商框单独宽度;不传跟随 width / minWidth / maxWidth。 */
50
+ providerSizing?: PickerSizing;
51
+ /** cascade:模型框单独宽度;不传跟随 width / minWidth / maxWidth。 */
52
+ modelSizing?: PickerSizing;
45
53
  translate?: Translate;
46
54
  }
47
55
  export declare function ModelPicker(props: ModelPickerProps): ReturnType<typeof h>;
@@ -1 +1 @@
1
- {"version":3,"file":"ModelPicker.d.ts","sourceRoot":"","sources":["../../../src/ui/inputs/ModelPicker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,IAAI,CAAC,EAA6C,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AACrG,OAAO,EAAK,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAU,KAAK,UAAU,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,EAA2B,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAM7E;;;;;;;;;;GAUG;AACH,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,SAAS,CAAA;AAEtD,MAAM,WAAW,gBAAgB;IAC/B,gCAAgC;IAChC,MAAM,CAAC,EAAE,WAAW,EAAE,CAAA;IACtB,OAAO,CAAC,EAAE,kBAAkB,CAAA;IAC5B,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,cAAc;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,sCAAsC;IACtC,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,0BAA0B;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,sBAAsB;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,kDAAkD;IAClD,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;IACvB,qBAAqB;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,6BAA6B;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAsGzE"}
1
+ {"version":3,"file":"ModelPicker.d.ts","sourceRoot":"","sources":["../../../src/ui/inputs/ModelPicker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,IAAI,CAAC,EAA6C,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AACrG,OAAO,EAAK,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAU,KAAK,UAAU,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,EAA0C,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAM/G;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAA;AAE/D,MAAM,WAAW,gBAAiB,SAAQ,YAAY;IACpD,gCAAgC;IAChC,MAAM,CAAC,EAAE,WAAW,EAAE,CAAA;IACtB,OAAO,CAAC,EAAE,kBAAkB,CAAA;IAC5B,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,cAAc;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,sCAAsC;IACtC,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,0BAA0B;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,sBAAsB;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,kDAAkD;IAClD,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;IACvB,qBAAqB;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,kDAAkD;IAClD,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,8CAA8C;IAC9C,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,wDAAwD;IACxD,cAAc,CAAC,EAAE,YAAY,CAAA;IAC7B,wDAAwD;IACxD,WAAW,CAAC,EAAE,YAAY,CAAA;IAC1B,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAuIzE"}
@@ -1,7 +1,7 @@
1
1
  import { createElement as h, useEffect, useState, useSyncExternalStore } from 'react';
2
2
  import { t } from '../../utils/i18n.js';
3
3
  import { Picker } from './Picker.js';
4
- import { flattenOptions, groupOf } from './picker-logic.js';
4
+ import { flattenOptions, groupOf, toFlatOptions } from './picker-logic.js';
5
5
  import { modelCatalog } from '../infra/host-data.js';
6
6
  import { sparkleIcon } from './picker-icons.js';
7
7
  import { ensureComponentStyles } from '../infra/css.js';
@@ -16,7 +16,7 @@ export function ModelPicker(props) {
16
16
  ? undefined
17
17
  : { value: '', label: props.defaultLabel ?? tt('modelDefault') };
18
18
  // 目录状态:外部没喂目录(Node 自检 / 宿主缺服务)⇒ 空 + 如实降级,不编数据。
19
- const catalog = useSyncExternalStore(modelCatalog.subscribe, modelCatalog.getSnapshot);
19
+ const catalog = useSyncExternalStore(modelCatalog.subscribe, modelCatalog.getSnapshot, modelCatalog.getSnapshot);
20
20
  const groups = props.groups ??
21
21
  (catalog.status === 'ready'
22
22
  ? catalog.routes.map((route) => ({
@@ -34,6 +34,7 @@ export function ModelPicker(props) {
34
34
  const emitModel = (v) => {
35
35
  props.onChange?.(typeof v === 'string' ? v : v[0] ?? '');
36
36
  };
37
+ const sizing = { width: props.width, minWidth: props.minWidth, maxWidth: props.maxWidth };
37
38
  // 联动态的厂商选择必须组件自己记 —— 值是从模型值反推的,换厂商会把模型清成 ''
38
39
  // (拍板口径),反推就再也找不到刚点的厂商(2026-10-20 真机:选完厂商后面仍是黑的)。
39
40
  const [pickedProvider, setPickedProvider] = useState('');
@@ -46,6 +47,28 @@ export function ModelPicker(props) {
46
47
  if (value !== undefined && value !== '')
47
48
  setPickedProvider('');
48
49
  }, [value]);
50
+ if (variant === 'flat') {
51
+ const options = toFlatOptions(groups);
52
+ return h(Picker, {
53
+ options: defaultOption === undefined ? options : [defaultOption, ...options],
54
+ value,
55
+ defaultValue: props.defaultValue,
56
+ ...sizing,
57
+ searchSizing: props.searchSizing,
58
+ icon,
59
+ placeholder: props.placeholder ?? tt('modelModel'),
60
+ degraded,
61
+ disabled: props.disabled,
62
+ clearable: props.clearable,
63
+ searchable,
64
+ hint: props.hint,
65
+ size: props.size,
66
+ placement: props.placement,
67
+ className: props.className,
68
+ translate: props.translate,
69
+ onChange: emitModel,
70
+ });
71
+ }
49
72
  if (variant === 'grouped') {
50
73
  return h(Picker, {
51
74
  // 「默认模型」放最上面:空 label 的组,Picker 只渲染选项不渲染组头
@@ -54,6 +77,8 @@ export function ModelPicker(props) {
54
77
  : [{ value: '', label: '', options: [defaultOption] }, ...groups],
55
78
  value,
56
79
  defaultValue: props.defaultValue,
80
+ ...sizing,
81
+ searchSizing: props.searchSizing,
57
82
  icon,
58
83
  placeholder: props.placeholder ?? tt('modelModel'),
59
84
  degraded,
@@ -64,6 +89,7 @@ export function ModelPicker(props) {
64
89
  size: props.size,
65
90
  placement: props.placement,
66
91
  className: props.className,
92
+ translate: props.translate,
67
93
  onChange: emitModel,
68
94
  });
69
95
  }
@@ -76,8 +102,11 @@ export function ModelPicker(props) {
76
102
  placeholder: tt('modelProvider'),
77
103
  degraded,
78
104
  disabled: props.disabled,
79
- searchable: false,
105
+ ...(props.providerSizing ?? sizing),
106
+ searchSizing: props.searchSizing,
107
+ searchable,
80
108
  size: props.size,
109
+ translate: props.translate,
81
110
  onChange: (v) => {
82
111
  setPickedProvider(typeof v === 'string' ? v : v[0] ?? '');
83
112
  props.onChange?.('');
@@ -86,6 +115,8 @@ export function ModelPicker(props) {
86
115
  options: defaultOption === undefined ? options : [defaultOption, ...options],
87
116
  value,
88
117
  defaultValue: props.defaultValue,
118
+ ...(props.modelSizing ?? sizing),
119
+ searchSizing: props.searchSizing,
89
120
  icon,
90
121
  placeholder: props.placeholder ?? tt('modelModel'),
91
122
  degraded,
@@ -96,6 +127,7 @@ export function ModelPicker(props) {
96
127
  size: props.size,
97
128
  placement: props.placement,
98
129
  className: props.className,
130
+ translate: props.translate,
99
131
  onChange: emitModel,
100
132
  }));
101
133
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ModelPicker.js","sourceRoot":"","sources":["../../../src/ui/inputs/ModelPicker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ModelPicker.js","sourceRoot":"","sources":["../../../src/ui/inputs/ModelPicker.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import { createElement as h, type ReactNode } from 'react';
2
2
  import { type Translate } from '../../utils/i18n.js';
3
- import { type PickerGroup, type PickerOption } from './picker-logic.js';
3
+ import { type PickerGroup, type PickerOption, type PickerSizing } from './picker-logic.js';
4
4
  export type { PickerGroup, PickerOption };
5
5
  export type PickerSize = 'sm' | 'md' | 'lg';
6
- export interface PickerProps {
6
+ export interface PickerProps extends PickerSizing {
7
7
  /** 分组数据(模型选择里一组 = 一个 provider)。 */
8
8
  groups?: PickerGroup[];
9
9
  /** 扁平数据的快捷写法;与 `groups` 二选一。 */
@@ -39,12 +39,8 @@ export interface PickerProps {
39
39
  /** 问号提示文字:给了就在触发器后面挂标准 FieldHint(排版收进组件,调用方不再手动拼)。 */
40
40
  hint?: string;
41
41
  className?: string;
42
- /** 定宽(px 或任意 CSS 长度)。给了即忽略 minWidth / maxWidth,触发器固定此宽,内容超长省略 + hover 跑马灯。 */
43
- width?: number | string;
44
- /** 最小宽(px 或任意 CSS 长度);内容不到此宽时触发器也不会更窄(缺省沿用 CSS 的 120px)。 */
45
- minWidth?: number | string;
46
- /** 最大宽(px 或任意 CSS 长度);内容超过此宽时省略 + hover 跑马灯。 */
47
- maxWidth?: number | string;
42
+ /** 下拉内搜索框的宽度三轴(与触发器同口径:定宽锁三值);不传沿用 CSS 的 100% 铺满。 */
43
+ searchSizing?: PickerSizing;
48
44
  ariaLabel?: string;
49
45
  translate?: Translate;
50
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Picker.d.ts","sourceRoot":"","sources":["../../../src/ui/inputs/Picker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,IAAI,CAAC,EAAqD,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAG7G,OAAO,EAAK,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAGvD,OAAO,EAQL,KAAK,WAAW,EAChB,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAA;AAO1B,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,CAAA;AAEzC,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;AAE3C,MAAM,WAAW,WAAW;IAC1B,mCAAmC;IACnC,MAAM,CAAC,EAAE,WAAW,EAAE,CAAA;IACtB,gCAAgC;IAChC,OAAO,CAAC,EAAE,YAAY,EAAE,CAAA;IACxB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACzB,kBAAkB;IAClB,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAChC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,IAAI,CAAA;IAC7C,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAA;IAC5B,iCAAiC;IACjC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,8BAA8B;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,oCAAoC;IACpC,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAA;IACzB,4BAA4B;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,wCAAwC;IACxC,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC1B,gDAAgD;IAChD,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAwS/D"}
1
+ {"version":3,"file":"Picker.d.ts","sourceRoot":"","sources":["../../../src/ui/inputs/Picker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,IAAI,CAAC,EAAqD,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAG7G,OAAO,EAAK,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAGvD,OAAO,EASL,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAA;AAO1B,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,CAAA;AAEzC,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;AAE3C,MAAM,WAAW,WAAY,SAAQ,YAAY;IAC/C,mCAAmC;IACnC,MAAM,CAAC,EAAE,WAAW,EAAE,CAAA;IACtB,gCAAgC;IAChC,OAAO,CAAC,EAAE,YAAY,EAAE,CAAA;IACxB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACzB,kBAAkB;IAClB,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAChC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,IAAI,CAAA;IAC7C,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAA;IAC5B,iCAAiC;IACjC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,8BAA8B;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,oCAAoC;IACpC,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAA;IACzB,4BAA4B;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,wCAAwC;IACxC,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,qDAAqD;IACrD,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CA2S/D"}
@@ -4,7 +4,7 @@ import { Chevron } from '../infra/chevron.js';
4
4
  import { t } from '../../utils/i18n.js';
5
5
  import { FieldHint } from '../display/FieldHint.js';
6
6
  import { MarqueeText } from '../display/MarqueeText.js';
7
- import { filterGroups, flattenOptions, labelsOf, resolveTriggerSizing, sliceGroups, toGroups, toggleValue, } from './picker-logic.js';
7
+ import { filterGroups, flattenOptions, labelsOf, resolveMenuSizing, resolveTriggerSizing, sliceGroups, toGroups, toggleValue, } from './picker-logic.js';
8
8
  import { ensureComponentStyles } from '../infra/css.js';
9
9
  import { useOverlayLocked } from '../infra/overlay.js';
10
10
  import { PANEL_CSS } from '../infra/panel-css.js';
@@ -58,10 +58,12 @@ export function Picker(props) {
58
58
  shift({ padding: 8 }),
59
59
  floatingSize({
60
60
  apply({ elements, rects, availableWidth, availableHeight }) {
61
+ // 触发器可以限宽,菜单不能跟着限:至少与触发器同宽,随内容变宽,封顶 480 免得太夸张;
62
+ // 搜索框显式设了下限时菜单还要让出它的宽度,否则 100% 宽的搜索框会被裁掉。
63
+ const menu = resolveMenuSizing(rects.reference.width, availableWidth, props.searchSizing);
61
64
  Object.assign(elements.floating.style, {
62
- // 触发器可以限宽,菜单不能跟着限:至少与触发器同宽,随内容变宽,封顶 480 免得太夸张
63
- minWidth: `${rects.reference.width}px`,
64
- maxWidth: `${Math.min(480, availableWidth ?? 480)}px`,
65
+ minWidth: menu.minWidth,
66
+ maxWidth: menu.maxWidth,
65
67
  maxHeight: `${Math.max(80, Math.min(280, (availableHeight ?? 320) - 8))}px`,
66
68
  });
67
69
  },
@@ -195,6 +197,7 @@ export function Picker(props) {
195
197
  ? h('input', {
196
198
  ref: setSearchRef,
197
199
  className: 'dshpc-picker__search',
200
+ style: resolveTriggerSizing(props.searchSizing ?? {}),
198
201
  placeholder: tt('pickerSearch'),
199
202
  value: query,
200
203
  onChange: (e) => {
@@ -1 +1 @@
1
- {"version":3,"file":"Picker.js","sourceRoot":"","sources":["../../../src/ui/inputs/Picker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Picker.js","sourceRoot":"","sources":["../../../src/ui/inputs/Picker.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  import { createElement as h, type ReactNode } from 'react';
2
2
  import { type PickerSize } from './Picker.js';
3
+ import { type PickerSizing } from './picker-logic.js';
3
4
  import { type Translate } from '../../utils/i18n.js';
4
- export interface WorkspacePickerProps {
5
+ export interface WorkspacePickerProps extends PickerSizing {
5
6
  value?: string | string[];
6
7
  defaultValue?: string | string[];
7
8
  mode?: 'single' | 'multiple';
@@ -22,6 +23,8 @@ export interface WorkspacePickerProps {
22
23
  size?: PickerSize;
23
24
  placement?: 'down' | 'up';
24
25
  className?: string;
26
+ /** 下拉内搜索框的宽度三轴(与 Picker 同口径);不传铺满菜单宽度。 */
27
+ searchSizing?: PickerSizing;
25
28
  /** 未选时的文字(默认「工作区」;想叫「选择工作区」就传它)。 */
26
29
  placeholder?: string;
27
30
  /** 触发器前置图标:不传 = 默认文件夹;传 `null` = 不显示;传元素 = 自定义。 */
@@ -1 +1 @@
1
- {"version":3,"file":"WorkspacePicker.d.ts","sourceRoot":"","sources":["../../../src/ui/inputs/WorkspacePicker.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,IAAI,CAAC,EAAwB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAEhF,OAAO,EAAU,KAAK,UAAU,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,EAAK,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAIvD,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAChC,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAA;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,IAAI,CAAA;IAC7C;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,2BAA2B;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc;IACd,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,4BAA4B;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oCAAoC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,mDAAmD;IACnD,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;IACvB,qBAAqB;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB;AAED,kDAAkD;AAClD,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CA2BjF"}
1
+ {"version":3,"file":"WorkspacePicker.d.ts","sourceRoot":"","sources":["../../../src/ui/inputs/WorkspacePicker.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,IAAI,CAAC,EAAwB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAEhF,OAAO,EAAU,KAAK,UAAU,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAK,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAIvD,MAAM,WAAW,oBAAqB,SAAQ,YAAY;IACxD,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAChC,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAA;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,IAAI,CAAA;IAC7C;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,2BAA2B;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc;IACd,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,4BAA4B;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,oCAAoC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,mDAAmD;IACnD,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;IACvB,qBAAqB;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB;AAED,kDAAkD;AAClD,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAgCjF"}
@@ -12,7 +12,7 @@ import { folderIcon } from './picker-icons.js';
12
12
  export function WorkspacePicker(props) {
13
13
  ensureControls();
14
14
  const tt = props.translate ?? t;
15
- const items = useSyncExternalStore(workspaceList.subscribe, workspaceList.getSnapshot);
15
+ const items = useSyncExternalStore(workspaceList.subscribe, workspaceList.getSnapshot, workspaceList.getSnapshot);
16
16
  const options = items.map((w) => ({ value: w.workspaceId, label: w.title }));
17
17
  // 「所有工作区」放最上面(单选才有意义);选中发 '' —— 空串表示不筛
18
18
  const allOption = props.allowDefault !== false && props.mode !== 'multiple'
@@ -27,6 +27,10 @@ export function WorkspacePicker(props) {
27
27
  onChange: props.onChange,
28
28
  clearable: props.clearable,
29
29
  searchable: props.searchable,
30
+ width: props.width,
31
+ minWidth: props.minWidth,
32
+ maxWidth: props.maxWidth,
33
+ searchSizing: props.searchSizing,
30
34
  hint: props.hint,
31
35
  icon: props.icon === undefined ? folderIcon() : props.icon ?? undefined,
32
36
  placeholder: props.placeholder ?? tt('explorerRoot'),
@@ -34,6 +38,7 @@ export function WorkspacePicker(props) {
34
38
  size: props.size,
35
39
  placement: props.placement,
36
40
  className: props.className,
41
+ translate: props.translate,
37
42
  });
38
43
  }
39
44
  //# sourceMappingURL=WorkspacePicker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WorkspacePicker.js","sourceRoot":"","sources":["../../../src/ui/inputs/WorkspacePicker.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,mDAAmD;AACnD,8DAA8D;AAC9D,mDAAmD;AACnD,OAAO,EAAE,aAAa,IAAI,CAAC,EAAE,oBAAoB,EAAkB,MAAM,OAAO,CAAA;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,MAAM,EAAmB,MAAM,aAAa,CAAA;AACrD,OAAO,EAAE,CAAC,EAAkB,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAgC9C,kDAAkD;AAClD,MAAM,UAAU,eAAe,CAAC,KAA2B;IACzD,cAAc,EAAE,CAAA;IAChB,MAAM,EAAE,GAAG,KAAK,CAAC,SAAS,IAAI,CAAC,CAAA;IAC/B,MAAM,KAAK,GAAG,oBAAoB,CAAC,aAAa,CAAC,SAAS,EAAE,aAAa,CAAC,WAAW,CAAC,CAAA;IACtF,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;IAC5E,uCAAuC;IACvC,MAAM,SAAS,GACb,KAAK,CAAC,YAAY,KAAK,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU;QACvD,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC,cAAc,CAAC,EAAE;QAChE,CAAC,CAAC,SAAS,CAAA;IACf,OAAO,CAAC,CAAC,MAAM,EAAE;QACf,OAAO,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,OAAO,CAAC;QACpE,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,SAAS;QACvE,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,cAAc,CAAC;QACpD,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;KAC3B,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"WorkspacePicker.js","sourceRoot":"","sources":["../../../src/ui/inputs/WorkspacePicker.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,mDAAmD;AACnD,8DAA8D;AAC9D,mDAAmD;AACnD,OAAO,EAAE,aAAa,IAAI,CAAC,EAAE,oBAAoB,EAAkB,MAAM,OAAO,CAAA;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,MAAM,EAAmB,MAAM,aAAa,CAAA;AAErD,OAAO,EAAE,CAAC,EAAkB,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAkC9C,kDAAkD;AAClD,MAAM,UAAU,eAAe,CAAC,KAA2B;IACzD,cAAc,EAAE,CAAA;IAChB,MAAM,EAAE,GAAG,KAAK,CAAC,SAAS,IAAI,CAAC,CAAA;IAC/B,MAAM,KAAK,GAAG,oBAAoB,CAAC,aAAa,CAAC,SAAS,EAAE,aAAa,CAAC,WAAW,EAAE,aAAa,CAAC,WAAW,CAAC,CAAA;IACjH,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;IAC5E,uCAAuC;IACvC,MAAM,SAAS,GACb,KAAK,CAAC,YAAY,KAAK,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU;QACvD,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC,cAAc,CAAC,EAAE;QAChE,CAAC,CAAC,SAAS,CAAA;IACf,OAAO,CAAC,CAAC,MAAM,EAAE;QACf,OAAO,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,OAAO,CAAC;QACpE,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,SAAS;QACvE,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,cAAc,CAAC;QACpD,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;KAC3B,CAAC,CAAA;AACJ,CAAC"}
@@ -14,9 +14,17 @@ export interface PickerGroup {
14
14
  label: string;
15
15
  options: PickerOption[];
16
16
  }
17
+ /** 宽度三轴(触发器和搜索框共用):定宽优先,给了 width 就忽略 min/max。 */
18
+ export interface PickerSizing {
19
+ width?: number | string;
20
+ minWidth?: number | string;
21
+ maxWidth?: number | string;
22
+ }
17
23
  /** 两种输入归一成 groups:给了 `options` 就当成一个无标题的组。 */
18
24
  export declare function toGroups(groups: PickerGroup[] | undefined, options: PickerOption[] | undefined): PickerGroup[];
19
25
  export declare function flattenOptions(groups: PickerGroup[]): PickerOption[];
26
+ /** 分组目录平铺成「厂商-模型」选项:value 原样不动,只给 label 加组名前缀。 */
27
+ export declare function toFlatOptions(groups: PickerGroup[]): PickerOption[];
20
28
  /** 按关键词过滤(大小写不敏感,匹配 label 与 keywords 拼起来的串;整组无命中则整组去掉)。 */
21
29
  export declare function filterGroups(groups: PickerGroup[], query: string): PickerGroup[];
22
30
  /** 按选项条数跨组切片(首屏 limit 条);count <= 0 视为不分页,整组没被截到就复用原对象。 */
@@ -29,9 +37,13 @@ export declare function groupOf(groups: PickerGroup[], value: string): PickerGro
29
37
  /** 触发器宽度解析:把 width / minWidth / maxWidth 译成内联样式。
30
38
  * 定宽(width)忽略 min/max 并锁定三值;否则各自生效,缺省沿用 CSS 默认(min 120px、max 100%)。
31
39
  * 数值按 px 处理,字符串原样透传。 */
32
- export declare function resolveTriggerSizing(opts: {
33
- width?: number | string;
34
- minWidth?: number | string;
35
- maxWidth?: number | string;
36
- }): CSSProperties;
40
+ export declare function resolveTriggerSizing(opts: PickerSizing): CSSProperties;
41
+ /** 菜单宽度:至少与触发器同宽;搜索框设了下限时菜单跟着加宽,
42
+ * 否则 100% 宽的搜索框会被菜单的 overflow:hidden 裁掉。
43
+ * 8px = .dshpc-picker__head 左右各 4px 内距(改该 CSS 时同步改这里,有自检盯着)。
44
+ * min-width 大于 max-width 时浏览器以 min-width 为准,所以显式设宽不会被 480 上限卡住。 */
45
+ export declare function resolveMenuSizing(referenceWidth: number, availableWidth: number | undefined, searchSizing?: PickerSizing): {
46
+ minWidth: string;
47
+ maxWidth: string;
48
+ };
37
49
  //# sourceMappingURL=picker-logic.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"picker-logic.d.ts","sourceRoot":"","sources":["../../../src/ui/inputs/picker-logic.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAErD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,uCAAuC;IACvC,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,qCAAqC;AACrC,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,YAAY,EAAE,CAAA;CACxB;AAED,8CAA8C;AAC9C,wBAAgB,QAAQ,CACtB,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,EACjC,OAAO,EAAE,YAAY,EAAE,GAAG,SAAS,GAClC,WAAW,EAAE,CAIf;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,YAAY,EAAE,CAIpE;AAED,2DAA2D;AAC3D,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,EAAE,CAShF;AAED,2DAA2D;AAC3D,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,EAAE,CAU/E;AAED,yCAAyC;AACzC,wBAAgB,WAAW,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAK7F;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAQnF;AAED,6BAA6B;AAC7B,wBAAgB,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAGrF;AAED;;wBAEwB;AACxB,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAC3B,GAAG,aAAa,CAUhB"}
1
+ {"version":3,"file":"picker-logic.d.ts","sourceRoot":"","sources":["../../../src/ui/inputs/picker-logic.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAErD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,uCAAuC;IACvC,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,qCAAqC;AACrC,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,YAAY,EAAE,CAAA;CACxB;AAED,iDAAiD;AACjD,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAC3B;AAED,8CAA8C;AAC9C,wBAAgB,QAAQ,CACtB,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,EACjC,OAAO,EAAE,YAAY,EAAE,GAAG,SAAS,GAClC,WAAW,EAAE,CAIf;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,YAAY,EAAE,CAIpE;AAED,kDAAkD;AAClD,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,YAAY,EAAE,CAOnE;AAED,2DAA2D;AAC3D,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,EAAE,CAShF;AAED,2DAA2D;AAC3D,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,EAAE,CAU/E;AAED,yCAAyC;AACzC,wBAAgB,WAAW,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAK7F;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAQnF;AAED,6BAA6B;AAC7B,wBAAgB,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAGrF;AAED;;wBAEwB;AACxB,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,aAAa,CAUtE;AAED;;;mEAGmE;AACnE,wBAAgB,iBAAiB,CAC/B,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,YAAY,CAAC,EAAE,YAAY,GAC1B;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CASxC"}
@@ -11,6 +11,13 @@ export function flattenOptions(groups) {
11
11
  out.push(...g.options);
12
12
  return out;
13
13
  }
14
+ /** 分组目录平铺成「厂商-模型」选项:value 原样不动,只给 label 加组名前缀。 */
15
+ export function toFlatOptions(groups) {
16
+ return groups.flatMap((g) => g.options.map((o) => ({
17
+ value: o.value,
18
+ label: g.label === '' ? o.label : `${g.label}-${o.label}`,
19
+ })));
20
+ }
14
21
  /** 按关键词过滤(大小写不敏感,匹配 label 与 keywords 拼起来的串;整组无命中则整组去掉)。 */
15
22
  export function filterGroups(groups, query) {
16
23
  const q = query.trim().toLowerCase();
@@ -79,4 +86,18 @@ export function resolveTriggerSizing(opts) {
79
86
  style.maxWidth = px(opts.maxWidth);
80
87
  return style;
81
88
  }
89
+ /** 菜单宽度:至少与触发器同宽;搜索框设了下限时菜单跟着加宽,
90
+ * 否则 100% 宽的搜索框会被菜单的 overflow:hidden 裁掉。
91
+ * 8px = .dshpc-picker__head 左右各 4px 内距(改该 CSS 时同步改这里,有自检盯着)。
92
+ * min-width 大于 max-width 时浏览器以 min-width 为准,所以显式设宽不会被 480 上限卡住。 */
93
+ export function resolveMenuSizing(referenceWidth, availableWidth, searchSizing) {
94
+ const floor = searchSizing?.width ?? searchSizing?.minWidth;
95
+ const cssLen = (v) => (typeof v === 'number' ? `${v}px` : v);
96
+ return {
97
+ minWidth: floor === undefined
98
+ ? `${referenceWidth}px`
99
+ : `max(${referenceWidth}px, calc(${cssLen(floor)} + 8px))`,
100
+ maxWidth: `${Math.min(480, availableWidth ?? 480)}px`,
101
+ };
102
+ }
82
103
  //# sourceMappingURL=picker-logic.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"picker-logic.js","sourceRoot":"","sources":["../../../src/ui/inputs/picker-logic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"picker-logic.js","sourceRoot":"","sources":["../../../src/ui/inputs/picker-logic.ts"],"names":[],"mappings":"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"}
@@ -28,7 +28,8 @@ const cardExample = `import { Card, Chip, StripCard } from 'dsh-plugin-core/ui'
28
28
  h(Card, {
29
29
  accent: 'warning',
30
30
  bar: { side: 'left', inset: 12, gap: 12 }, // 色条可放 left / right / top / bottom
31
- hoverable: true, // 头部区整块悬停变色(默认关)
31
+ // 传 onClick 才让卡片可点;hover 默认跟着它开,不用再手写光标与 :hover
32
+ onClick: () => openTask(id),
32
33
  action: h(Button, { size: 'sm', variant: 'ghost' }, '跳过'),
33
34
  },
34
35
  h('div', null, '标题'),
@@ -411,20 +412,20 @@ const doc: DocTopic = {
411
412
  heading: { zh: 'Picker / WorkspacePicker / ModelPicker', en: 'Picker / WorkspacePicker / ModelPicker' },
412
413
  prose: [
413
414
  {
414
- zh: 'Picker:单 / 多选、上限、搜索、分组、空态,自绘。键盘:Esc 关、↑↓ 移游标、Enter 选。纯逻辑可单用:`toGroups` / `filterGroups` / `toggleValue`。触发器支持 width / minWidth / maxWidth 约束宽度:定宽忽略另两者;内容超长则省略号 + hover 跑马灯。菜单里的选项超长同样省略 + hover 跑马灯,不会把菜单撑出横向滚动条。',
415
- en: 'Picker: single/multiple selection, cap, search, grouping, empty state — self-drawn. Keyboard: Esc closes, ↑↓ move the cursor, Enter selects. Logic reusable standalone: `toGroups` / `filterGroups` / `toggleValue`.',
415
+ zh: 'Picker:单 / 多选、上限、搜索、分组、空态,自绘。键盘:Esc 关、↑↓ 移游标、Enter 选。纯逻辑可单用:`toGroups` / `filterGroups` / `toggleValue` / `toFlatOptions` / `resolveMenuSizing`。触发器支持 width / minWidth / maxWidth 约束宽度:定宽忽略另两者;内容超长则省略号 + hover 跑马灯。下拉内搜索框另走 `searchSizing`(同一套宽度三轴),不传就沿用 CSS 的 100% 铺满;菜单会随 `searchSizing` 的下限自动加宽,不会被菜单的 overflow:hidden 裁掉。菜单里的选项超长同样省略 + hover 跑马灯,不会把菜单撑出横向滚动条。',
416
+ en: 'Picker: single/multiple selection, cap, search, grouping, empty state — self-drawn. Keyboard: Esc closes, ↑↓ move the cursor, Enter selects. Logic reusable standalone: `toGroups` / `filterGroups` / `toggleValue` / `toFlatOptions` / `resolveMenuSizing`. The search box takes its own `searchSizing` (the same width/minWidth/maxWidth triple) and fills 100% by default; the menu widens with the search box lower bound so it is never clipped by overflow:hidden.',
416
417
  },
417
418
  {
418
419
  zh: '首屏分页:`limit` 按**选项条数**跨组切片,列表末尾「显示更多」(跟在最后一条后,像多一条选项)每点一次再追加 `limit` 条;搜索结果走同一套分页,换搜索词或重新展开都回到首屏。不传 `limit` 就是全量渲染。`PickerOption.keywords` 是可选的单个字符串(调用方自己拼),只和 `label` 拼起来参与大小写不敏感子串匹配,**绝不渲染**——适合任务 UUID 这种「用户能贴、但不该显示」的搜索词。纯逻辑另可单用 `sliceGroups`。',
419
420
  en: 'First-page paging: `limit` slices by **option count** across groups; "Show more" rendered as the last row of the list appends another `limit` each click. Search results use the same paging and reset to the first page on a new query or reopen. No `limit` means render everything. `PickerOption.keywords` is an optional single string (joined by the caller) that participates in case-insensitive substring matching together with `label` but is **never rendered** — for search terms like a task UUID that users paste but should not see. `sliceGroups` is also exported as pure logic.',
420
421
  },
421
422
  {
422
- zh: 'WorkspacePicker:数据自带的领域选择器。在插件 apply 里调一次 `connectHost(ctx)`,组件即订阅官方 `workspaces` 快照。未接线 = 空态,不编造数据。',
423
- en: 'WorkspacePicker: a domain picker that brings its own data. Call `connectHost(ctx)` once in the plugin apply and it subscribes to the official `workspaces` snapshot. Unwired = empty state, never fabricated data.',
423
+ zh: 'WorkspacePicker:数据自带的领域选择器。在插件 apply 里调一次 `connectHost(ctx)`,组件即订阅官方 `workspaces` 快照。未接线 = 空态,不编造数据。触发器与搜索框的宽度三轴(`width` / `minWidth` / `maxWidth` / `searchSizing`)与 Picker 同口径;`translate` 覆盖组件与下拉内的全部内置文案。',
424
+ en: 'WorkspacePicker: a domain picker that brings its own data. Call `connectHost(ctx)` once in the plugin apply and it subscribes to the official `workspaces` snapshot. Unwired = empty state, never fabricated data. Trigger and search-box sizing (`width` / `minWidth` / `maxWidth` / `searchSizing`) matches Picker; `translate` overrides all built-in copy in the component and its dropdown.',
424
425
  },
425
426
  {
426
- zh: 'ModelPicker:数据自带,`variant` 为 `grouped`(默认)/ `cascade`;`onChange` 一律发 `provider/id` 形式的模型 value。目录来自宿主 `serveModelCatalog`。',
427
- en: 'ModelPicker: brings its own data; `variant` is `grouped` (default) or `cascade`; `onChange` always emits the model value as `provider/id`. Catalog comes from the host `serveModelCatalog`.',
427
+ zh: 'ModelPicker:选择模型的完整封装,三种形态共用同一份宿主目录(`serveModelCatalog`),`onChange` 一律发 `provider/id`:`grouped`(默认)= 一个下拉、供应商做组头;`flat` = 一个下拉、全部模型平铺成「厂商-模型」并带搜索,搜厂商名即可筛;`cascade` = 两个下拉联动,厂商框与模型框都带搜索,换厂商清空模型。`width` / `minWidth` / `maxWidth` 管触发器,`searchSizing` 管所有搜索框,`providerSizing` / `modelSizing` 让联动态两个框分别设宽。',
428
+ en: 'ModelPicker: the complete model selector. Three variants share one host catalog (`serveModelCatalog`) and always emit `provider/id`: `grouped` (default) groups models under provider headers in one dropdown; `flat` lists every model as `vendor-model` in one searchable dropdown; `cascade` links two searchable dropdowns (provider then model). `width`/`minWidth`/`maxWidth` size triggers, `searchSizing` sizes every search box, and `providerSizing`/`modelSizing` size the two cascade boxes separately.',
428
429
  },
429
430
  ],
430
431
  api: [
@@ -453,6 +454,7 @@ const doc: DocTopic = {
453
454
  { name: 'width', type: 'number | string', def: '—', desc: { zh: '定宽(px 或任意 CSS 长度);给了即忽略 minWidth / maxWidth,触发器锁定此宽;内容超长则省略 + hover 跑马灯', en: 'Fixed width (px or any CSS length); overrides minWidth/maxWidth and locks the trigger; overflow elides + hover marquee' } },
454
455
  { name: 'minWidth', type: 'number | string', def: '120px(CSS 默认)', desc: { zh: '最小宽;内容不到此宽触发器也不更窄', en: 'Minimum width; trigger never narrower than this' } },
455
456
  { name: 'maxWidth', type: 'number | string', def: '100%(CSS 默认)', desc: { zh: '最大宽;内容超过此宽则省略 + hover 跑马灯', en: 'Maximum width; overflow elides + hover marquee' } },
457
+ { name: 'searchSizing', type: 'PickerSizing', def: '—', desc: { zh: '下拉内搜索框宽度三轴 `{ width?, minWidth?, maxWidth? }`;不传铺满菜单宽度。菜单随设定下限自动加宽,不会被裁(纯逻辑 `resolveMenuSizing`)', en: 'Search-box sizing `{ width?, minWidth?, maxWidth? }`; omitted fills the menu. The menu widens with its lower bound so it is never clipped (`resolveMenuSizing`)' } },
456
458
  { name: 'ariaLabel', type: 'string', def: '—', desc: { zh: '无障碍名', en: 'Accessible name' } },
457
459
  { name: 'translate', type: 'Translate', def: '内置', desc: { zh: '覆盖文案', en: 'Override copy' } },
458
460
  ],
@@ -465,12 +467,18 @@ const doc: DocTopic = {
465
467
  { name: 'mode / max', type: '单选 / 多选 / 上限(到上限已选项仍可反选)', def: '—', desc: { zh: '—', en: '—' } },
466
468
  { name: 'placeholder', type: 'string', def: '默认「工作区」', desc: { zh: '想叫「选择工作区」就传它', en: 'Pass it if you want "选择工作区"' } },
467
469
  { name: 'icon', type: 'ReactNode', def: '—', desc: { zh: '触发器前置图标:不传 = 默认文件夹;null = 不显示;传元素 = 自定义', en: 'Leading trigger icon: omitted = default folder; null = hidden; element = custom' } },
470
+ { name: 'width / minWidth / maxWidth', type: 'number | string', def: '—', desc: { zh: '触发器宽度三轴(与 Picker 同名同义)', en: 'Trigger sizing, same as Picker' } },
471
+ { name: 'searchSizing', type: 'PickerSizing', def: '—', desc: { zh: '下拉内搜索框宽度三轴;菜单会跟着自动加宽', en: 'Search-box sizing; the menu widens with it' } },
472
+ { name: 'translate', type: 'Translate', def: '内置', desc: { zh: '覆盖组件与下拉内的全部内置文案', en: 'Overrides all built-in copy in the component and its dropdown' } },
468
473
  ],
469
474
  },
470
475
  {
471
476
  id: 'ui-model-picker',
472
477
  rows: [
473
- { name: 'variant', type: "'grouped' | 'cascade'", def: "'grouped'", desc: { zh: 'grouped = 一个下拉完全独立;cascade = 两个下拉联动(先选供应商,模型列表跟着筛;换供应商清空已选)', en: 'grouped = one standalone dropdown; cascade = two linked dropdowns (pick provider first, model list filters; switching provider clears selection)' } },
478
+ { name: 'variant', type: "'grouped' | 'flat' | 'cascade'", def: "'grouped'", desc: { zh: 'grouped = 一个下拉按供应商分组;flat = 一个下拉把全部模型平铺成「厂商-模型」并带搜索;cascade = 两个下拉联动、都带搜索(换供应商清空已选)', en: 'grouped = one grouped dropdown; flat = one dropdown listing every model as vendor-model with search; cascade = two linked searchable dropdowns (switching provider clears selection)' } },
479
+ { name: 'width / minWidth / maxWidth', type: 'number | string', def: '—', desc: { zh: '触发器宽度三轴(与 Picker 同名同义);cascade 的模型框也用它,除非给了 modelSizing', en: 'Trigger sizing, same as Picker; also sizes the cascade model box unless modelSizing is given' } },
480
+ { name: 'searchSizing', type: 'PickerSizing', def: '—', desc: { zh: '所有搜索框的宽度三轴;三种形态、cascade 两个框统一生效', en: 'Sizing for every search box in all three variants, including both cascade boxes' } },
481
+ { name: 'providerSizing / modelSizing', type: 'PickerSizing', def: '跟随 width / minWidth / maxWidth', desc: { zh: 'cascade 的厂商框 / 模型框分别设宽;不传就跟随通用宽度', en: 'Separate sizing for the cascade provider / model box; omitted follows the common width' } },
474
482
  { name: 'allowDefault / defaultLabel', type: '「默认模型」选项:默认提供;false 关闭;选中发 \'\'', def: '—', desc: { zh: '文案可传 defaultLabel', en: 'Pass defaultLabel for the text' } },
475
483
  { name: 'placeholder', type: 'string', def: '默认「模型」', desc: { zh: 'icon:不传 = 默认星形;null = 不显示;传元素 = 自定义', en: 'icon: omitted = default star; null = hidden; element = custom' } },
476
484
  { name: '透传 Picker', type: 'value / defaultValue / onChange / clearable / searchable / hint / size / placement / className / disabled / degraded / translate', def: '—', desc: { zh: '同 Picker 同名参数', en: 'Same-named params as Picker' } },
@@ -639,12 +647,16 @@ const doc: DocTopic = {
639
647
  en: 'The header centers vertically as a whole; drop a bare element into `action` and it centers. Colors come from tokens, so light/dark follows the host.',
640
648
  },
641
649
  {
642
- zh: '`hoverable` 开启后悬停变色、同时把光标改成 `pointer`,统一吃 `--dshpc-card-hover`(亮 7% 蓝 / 暗 13% 蓝),默认关;`filled` 切底色,默认有底(Card = surface-1,StripCard = accent 浅底),`false` 时底透明但边框仍在。两根轴都只改 `--surface-bg`,插件不用再自己写 `:hover` 规则。',
643
- en: '`hoverable` (default off) changes the fill on hover and switches the cursor to `pointer`, using `--dshpc-card-hover` (7% blue light / 13% blue dark). `filled` (default on) controls the background — Card uses surface-1, StripCard the accent tint; `false` makes it transparent but keeps the border. Both axes only rewrite `--surface-bg`, so plugins no longer need their own `:hover` rules.',
650
+ zh: '`hoverable` 开启后悬停变色、同时把光标改成 `pointer`,统一吃 `--dshpc-card-hover`(亮 7% 蓝 / 暗 13% 蓝);默认跟随 `onClick`(给了点击回调即自动开),可显式传 `false` 关掉;`filled` 切底色,默认有底(Card = surface-1,StripCard = accent 浅底),`false` 时底透明但边框仍在。两根轴都只改 `--surface-bg`,插件不用再自己写 `:hover` 规则。',
651
+ en: "`hoverable` changes the fill on hover and switches the cursor to `pointer`, using `--dshpc-card-hover` (7% blue light / 13% blue dark). It defaults to on when `onClick` is provided, and can be turned off explicitly. `filled` (default on) controls the background — Card uses surface-1, StripCard the accent tint; `false` makes it transparent but keeps the border. Both axes only rewrite `--surface-bg`, so plugins no longer need their own `:hover` rules.",
644
652
  },
645
653
  {
646
- zh: '展开的卡片用 `hoverScope` 选作用域,默认 `\'head\'`:根节点零内距并统一裁圆角,`__body` 作为「上面那一整块」独立承担内距、边到边变色;展开态不改内距,上下两圈留白对称,两块之间的间隔也属于头部区、跟着一起变色;`__panel` 是它的兄弟节点,不铺背景、不画分隔线、不参与 hover,鼠标在展开区里操作时整卡都不触发;需要分隔线时由调用方在 `panel` 内容里自绘。展开区的 `margin-top` 与 `padding-top` 都是 0,自绘线紧贴头部区下沿、中间不夹不变色的带子;四根 `--card-pad-t/r/b/l` 是内距唯一真源,`style.padding` 会摊成这四根轴,头部区与展开区左右始终对称。StripCard 的通高色条相对根节点定位,展开后仍贯穿整卡(包括展开区)。想要整卡含展开区一起变色,才显式传 `\'card\'`。**展开内容必须放进 `panel`**(`children` 属于头部区),核心才有分区信号。',
647
- en: 'For expandable cards, `hoverScope` selects the scope. The default `\'head\'` gives the root zero padding and clips the radius, while `__body` — the header block owning all padding — changes color edge to edge; expanding keeps its top and bottom padding symmetric, so the gap between the two blocks changes color too. `__panel` is a sibling with no background, no divider and no hover, so operating inside the expanded area triggers nothing; draw a divider inside `panel` content yourself when you need one. Both `margin-top` and `padding-top` on the expanded area are 0, so a caller-drawn line sits flush against the header with no uncoloured strip between them. The four `--card-pad-t/r/b/l` axes are the single source of padding truth: `style.padding` expands into them, keeping the header and expanded area symmetric. The StripCard rail is positioned against the root and stays full-height across the expanded area. Pass `\'card\'` explicitly to include it. **Expandable content must go into `panel`**; `children` belongs to the header block.',
654
+ zh: '展开的卡片用 `hoverScope` 选作用域,默认 `\'head\'`:根节点零内距并统一裁圆角,`__body` 作为「上面那一整块」独立承担内距、边到边变色;展开态不改内距,上下两圈留白对称,两块之间的间隔也属于头部区、跟着一起变色;`__panel` 是它的兄弟节点,不铺背景、不画分隔线、不参与 hover;默认作用域下鼠标在展开区里操作既不变色也不触发点击(点击契约见下段);需要分隔线时由调用方在 `panel` 内容里自绘。展开区的 `margin-top` 与 `padding-top` 都是 0,自绘线紧贴头部区下沿、中间不夹不变色的带子;四根 `--card-pad-t/r/b/l` 是内距唯一真源,`style.padding` 会摊成这四根轴,头部区与展开区左右始终对称。StripCard 的通高色条相对根节点定位,展开后仍贯穿整卡(包括展开区)。想要整卡含展开区一起变色,才显式传 `\'card\'`。**展开内容必须放进 `panel`**(`children` 属于头部区),核心才有分区信号。',
655
+ en: 'For expandable cards, `hoverScope` selects the scope. The default `\'head\'` gives the root zero padding and clips the radius, while `__body` — the header block owning all padding — changes color edge to edge; expanding keeps its top and bottom padding symmetric, so the gap between the two blocks changes color too. `__panel` is a sibling with no background, no divider and no hover, so in the default scope operating inside the expanded area neither changes color nor triggers a click (see the click contract below); draw a divider inside `panel` content yourself when you need one. Both `margin-top` and `padding-top` on the expanded area are 0, so a caller-drawn line sits flush against the header with no uncoloured strip between them. The four `--card-pad-t/r/b/l` axes are the single source of padding truth: `style.padding` expands into them, keeping the header and expanded area symmetric. The StripCard rail is positioned against the root and stays full-height across the expanded area. Pass `\'card\'` explicitly to include it. **Expandable content must go into `panel`**; `children` belongs to the header block.',
656
+ },
657
+ {
658
+ zh: '`onClick` 让整块卡片可点,命中范围与 `hoverScope` 完全一致:默认 `head` 时点击层是 `__body`(内距圈四边都在里面),展开区 `__panel` 是它的兄弟节点、不绑任何事件,里面拖选复制也不受影响;显式 `card` 时点击层上提到根节点,整卡含展开区都响应。点击层拿 `role="button"`、`tabIndex=0` 与 Enter / Space,并有键盘焦点环;刻意不渲染成 `<button>`,因为调用方要在里面放按钮。`action` 与 `onToggle` 折叠箭头同在右侧槽,一层挡住冒泡,不会连带触发。不传 `onClick` 时外观与行为完全不变。',
659
+ en: '`onClick` makes the whole card clickable over exactly the same area as `hoverScope`: with the default `head`, the hit layer is `__body` (all four padding edges included), while `__panel` is its sibling with no handlers at all, so text selection inside the expanded area is untouched. With explicit `card`, the hit layer moves up to the root and the expanded area responds too. The hit layer gets `role="button"`, `tabIndex=0`, Enter / Space and a keyboard focus ring. It is deliberately not a `<button>`, because callers put buttons inside. `action` and the `onToggle` arrow share the right-hand slot, which stops propagation so they never trigger the card. Without `onClick`, appearance and behaviour are unchanged.',
648
660
  },
649
661
  ],
650
662
  api: [
@@ -658,8 +670,9 @@ const doc: DocTopic = {
658
670
  { name: 'action', type: 'ReactNode', def: '—', desc: { zh: '右上角操作区', en: 'Top-right action area' } },
659
671
  { name: 'children', type: 'ReactNode', def: '—', desc: { zh: '主内容,排版随你', en: 'Main content, layout is yours' } },
660
672
  { name: 'panel', type: 'ReactNode', def: '—', desc: { zh: '展开后才显示的额外内容;必须放这里,核心才能把展开区与头部区分开', en: 'Extra content shown only when expanded; must live here so the core can separate it from the header' } },
661
- { name: 'hoverable', type: 'boolean', def: "'false'", desc: { zh: '悬停变色 + 光标变 pointer,统一 --dshpc-card-hover;默认关', en: 'Hover color plus a pointer cursor, using --dshpc-card-hover; default off' } },
662
- { name: 'hoverScope', type: "'head' | 'card'", def: "'head'", desc: { zh: "'head'(默认)只让上面头部区整块边到边变色、展开区不受影响;'card' 整卡含展开区一起变色。仅 hoverable 为 true 时生效", en: "'head' (default) changes only the header block and leaves the expanded area untouched; 'card' includes it. Applies only when hoverable is true" } },
673
+ { name: 'onClick', type: '() => void', def: '—', desc: { zh: '传了才让卡片可点:命中范围同 hoverScope,点击层挂 role=button / tabIndex / Enter·Space;action 与折叠箭头不连带触发;hover 默认跟着开', en: 'Makes the card clickable. Hit area follows hoverScope; the hit layer gets role=button, tabIndex and Enter/Space; action and the collapse arrow never bubble into it; hover turns on by default' } },
674
+ { name: 'hoverable', type: 'boolean', def: '跟随 onClick', desc: { zh: '悬停变色 + 光标变 pointer,统一 --dshpc-card-hover;可显式传 false 关掉', en: 'Hover color plus a pointer cursor, using --dshpc-card-hover; defaults to on when onClick is set, pass false to disable' } },
675
+ { name: 'hoverScope', type: "'head' | 'card'", def: "'head'", desc: { zh: "'head'(默认)只有头部区变色并可点、展开区完全不受影响;'card' 整卡含展开区一起变色、一起可点。变色只在 hover 开时生效", en: "'head' (default) limits both color and clicks to the header block, leaving the expanded area untouched; 'card' includes it in both. Color applies only when hover is on" } },
663
676
  { name: 'filled', type: 'boolean', def: "'true'", desc: { zh: '是否带底色;false 时底透明、边框仍在。默认有底(Card = surface-1 / StripCard = accent 浅底)', en: 'Background fill; false makes it transparent while keeping the border. Default on (Card = surface-1 / StripCard = accent tint)' } },
664
677
  { name: 'className / style', type: '—', def: '—', desc: { zh: '追加类 / 样式;`style.padding` 摊成四根内距轴,同步头部区与展开区', en: 'Append class / style; `style.padding` expands into the four padding axes so the header and expanded area stay aligned' } },
665
678
  ],
package/docs/help/ui.md CHANGED
@@ -99,21 +99,21 @@ Segmented:`items`(必填)支持单选 / 多选,`size`(默认 lg;三
99
99
 
100
100
  > EN: Picker / WorkspacePicker / ModelPicker
101
101
 
102
- Picker:单 / 多选、上限、搜索、分组、空态,自绘。键盘:Esc 关、↑↓ 移游标、Enter 选。纯逻辑可单用:`toGroups` / `filterGroups` / `toggleValue`。触发器支持 width / minWidth / maxWidth 约束宽度:定宽忽略另两者;内容超长则省略号 + hover 跑马灯。菜单里的选项超长同样省略 + hover 跑马灯,不会把菜单撑出横向滚动条。
102
+ Picker:单 / 多选、上限、搜索、分组、空态,自绘。键盘:Esc 关、↑↓ 移游标、Enter 选。纯逻辑可单用:`toGroups` / `filterGroups` / `toggleValue` / `toFlatOptions` / `resolveMenuSizing`。触发器支持 width / minWidth / maxWidth 约束宽度:定宽忽略另两者;内容超长则省略号 + hover 跑马灯。下拉内搜索框另走 `searchSizing`(同一套宽度三轴),不传就沿用 CSS 的 100% 铺满;菜单会随 `searchSizing` 的下限自动加宽,不会被菜单的 overflow:hidden 裁掉。菜单里的选项超长同样省略 + hover 跑马灯,不会把菜单撑出横向滚动条。
103
103
 
104
- > EN: Picker: single/multiple selection, cap, search, grouping, empty state — self-drawn. Keyboard: Esc closes, ↑↓ move the cursor, Enter selects. Logic reusable standalone: `toGroups` / `filterGroups` / `toggleValue`.
104
+ > EN: Picker: single/multiple selection, cap, search, grouping, empty state — self-drawn. Keyboard: Esc closes, ↑↓ move the cursor, Enter selects. Logic reusable standalone: `toGroups` / `filterGroups` / `toggleValue` / `toFlatOptions` / `resolveMenuSizing`. The search box takes its own `searchSizing` (the same width/minWidth/maxWidth triple) and fills 100% by default; the menu widens with the search box lower bound so it is never clipped by overflow:hidden.
105
105
 
106
106
  首屏分页:`limit` 按**选项条数**跨组切片,列表末尾「显示更多」(跟在最后一条后,像多一条选项)每点一次再追加 `limit` 条;搜索结果走同一套分页,换搜索词或重新展开都回到首屏。不传 `limit` 就是全量渲染。`PickerOption.keywords` 是可选的单个字符串(调用方自己拼),只和 `label` 拼起来参与大小写不敏感子串匹配,**绝不渲染**——适合任务 UUID 这种「用户能贴、但不该显示」的搜索词。纯逻辑另可单用 `sliceGroups`。
107
107
 
108
108
  > EN: First-page paging: `limit` slices by **option count** across groups; "Show more" rendered as the last row of the list appends another `limit` each click. Search results use the same paging and reset to the first page on a new query or reopen. No `limit` means render everything. `PickerOption.keywords` is an optional single string (joined by the caller) that participates in case-insensitive substring matching together with `label` but is **never rendered** — for search terms like a task UUID that users paste but should not see. `sliceGroups` is also exported as pure logic.
109
109
 
110
- WorkspacePicker:数据自带的领域选择器。在插件 apply 里调一次 `connectHost(ctx)`,组件即订阅官方 `workspaces` 快照。未接线 = 空态,不编造数据。
110
+ WorkspacePicker:数据自带的领域选择器。在插件 apply 里调一次 `connectHost(ctx)`,组件即订阅官方 `workspaces` 快照。未接线 = 空态,不编造数据。触发器与搜索框的宽度三轴(`width` / `minWidth` / `maxWidth` / `searchSizing`)与 Picker 同口径;`translate` 覆盖组件与下拉内的全部内置文案。
111
111
 
112
- > EN: WorkspacePicker: a domain picker that brings its own data. Call `connectHost(ctx)` once in the plugin apply and it subscribes to the official `workspaces` snapshot. Unwired = empty state, never fabricated data.
112
+ > EN: WorkspacePicker: a domain picker that brings its own data. Call `connectHost(ctx)` once in the plugin apply and it subscribes to the official `workspaces` snapshot. Unwired = empty state, never fabricated data. Trigger and search-box sizing (`width` / `minWidth` / `maxWidth` / `searchSizing`) matches Picker; `translate` overrides all built-in copy in the component and its dropdown.
113
113
 
114
- ModelPicker:数据自带,`variant` 为 `grouped`(默认)/ `cascade`;`onChange` 一律发 `provider/id` 形式的模型 value。目录来自宿主 `serveModelCatalog`。
114
+ ModelPicker:选择模型的完整封装,三种形态共用同一份宿主目录(`serveModelCatalog`),`onChange` 一律发 `provider/id`:`grouped`(默认)= 一个下拉、供应商做组头;`flat` = 一个下拉、全部模型平铺成「厂商-模型」并带搜索,搜厂商名即可筛;`cascade` = 两个下拉联动,厂商框与模型框都带搜索,换厂商清空模型。`width` / `minWidth` / `maxWidth` 管触发器,`searchSizing` 管所有搜索框,`providerSizing` / `modelSizing` 让联动态两个框分别设宽。
115
115
 
116
- > EN: ModelPicker: brings its own data; `variant` is `grouped` (default) or `cascade`; `onChange` always emits the model value as `provider/id`. Catalog comes from the host `serveModelCatalog`.
116
+ > EN: ModelPicker: the complete model selector. Three variants share one host catalog (`serveModelCatalog`) and always emit `provider/id`: `grouped` (default) groups models under provider headers in one dropdown; `flat` lists every model as `vendor-model` in one searchable dropdown; `cascade` links two searchable dropdowns (provider then model). `width`/`minWidth`/`maxWidth` size triggers, `searchSizing` sizes every search box, and `providerSizing`/`modelSizing` size the two cascade boxes separately.
117
117
 
118
118
  | 参数 | 类型 | 默认 | 说明(zh) | 说明(en) |
119
119
  |---|---|---|---|---|
@@ -139,6 +139,7 @@ ModelPicker:数据自带,`variant` 为 `grouped`(默认)/ `cascade`;`o
139
139
  | `width` | `number \| string` | — | 定宽(px 或任意 CSS 长度);给了即忽略 minWidth / maxWidth,触发器锁定此宽;内容超长则省略 + hover 跑马灯 | Fixed width (px or any CSS length); overrides minWidth/maxWidth and locks the trigger; overflow elides + hover marquee |
140
140
  | `minWidth` | `number \| string` | 120px(CSS 默认) | 最小宽;内容不到此宽触发器也不更窄 | Minimum width; trigger never narrower than this |
141
141
  | `maxWidth` | `number \| string` | 100%(CSS 默认) | 最大宽;内容超过此宽则省略 + hover 跑马灯 | Maximum width; overflow elides + hover marquee |
142
+ | `searchSizing` | `PickerSizing` | — | 下拉内搜索框宽度三轴 `{ width?, minWidth?, maxWidth? }`;不传铺满菜单宽度。菜单随设定下限自动加宽,不会被裁(纯逻辑 `resolveMenuSizing`) | Search-box sizing `{ width?, minWidth?, maxWidth? }`; omitted fills the menu. The menu widens with its lower bound so it is never clipped (`resolveMenuSizing`) |
142
143
  | `ariaLabel` | `string` | — | 无障碍名 | Accessible name |
143
144
  | `translate` | `Translate` | 内置 | 覆盖文案 | Override copy |
144
145
 
@@ -149,10 +150,16 @@ ModelPicker:数据自带,`variant` 为 `grouped`(默认)/ `cascade`;`o
149
150
  | `mode / max` | `单选 / 多选 / 上限(到上限已选项仍可反选)` | — | — | — |
150
151
  | `placeholder` | `string` | 默认「工作区」 | 想叫「选择工作区」就传它 | Pass it if you want "选择工作区" |
151
152
  | `icon` | `ReactNode` | — | 触发器前置图标:不传 = 默认文件夹;null = 不显示;传元素 = 自定义 | Leading trigger icon: omitted = default folder; null = hidden; element = custom |
153
+ | `width / minWidth / maxWidth` | `number \| string` | — | 触发器宽度三轴(与 Picker 同名同义) | Trigger sizing, same as Picker |
154
+ | `searchSizing` | `PickerSizing` | — | 下拉内搜索框宽度三轴;菜单会跟着自动加宽 | Search-box sizing; the menu widens with it |
155
+ | `translate` | `Translate` | 内置 | 覆盖组件与下拉内的全部内置文案 | Overrides all built-in copy in the component and its dropdown |
152
156
 
153
157
  | 参数 | 类型 | 默认 | 说明(zh) | 说明(en) |
154
158
  |---|---|---|---|---|
155
- | `variant` | `'grouped' \| 'cascade'` | 'grouped' | grouped = 一个下拉完全独立;cascade = 两个下拉联动(先选供应商,模型列表跟着筛;换供应商清空已选) | grouped = one standalone dropdown; cascade = two linked dropdowns (pick provider first, model list filters; switching provider clears selection) |
159
+ | `variant` | `'grouped' \| 'flat' \| 'cascade'` | 'grouped' | grouped = 一个下拉按供应商分组;flat = 一个下拉把全部模型平铺成「厂商-模型」并带搜索;cascade = 两个下拉联动、都带搜索(换供应商清空已选) | grouped = one grouped dropdown; flat = one dropdown listing every model as vendor-model with search; cascade = two linked searchable dropdowns (switching provider clears selection) |
160
+ | `width / minWidth / maxWidth` | `number \| string` | — | 触发器宽度三轴(与 Picker 同名同义);cascade 的模型框也用它,除非给了 modelSizing | Trigger sizing, same as Picker; also sizes the cascade model box unless modelSizing is given |
161
+ | `searchSizing` | `PickerSizing` | — | 所有搜索框的宽度三轴;三种形态、cascade 两个框统一生效 | Sizing for every search box in all three variants, including both cascade boxes |
162
+ | `providerSizing / modelSizing` | `PickerSizing` | 跟随 width / minWidth / maxWidth | cascade 的厂商框 / 模型框分别设宽;不传就跟随通用宽度 | Separate sizing for the cascade provider / model box; omitted follows the common width |
156
163
  | `allowDefault / defaultLabel` | `「默认模型」选项:默认提供;false 关闭;选中发 ''` | — | 文案可传 defaultLabel | Pass defaultLabel for the text |
157
164
  | `placeholder` | `string` | 默认「模型」 | icon:不传 = 默认星形;null = 不显示;传元素 = 自定义 | icon: omitted = default star; null = hidden; element = custom |
158
165
  | `透传 Picker` | `value / defaultValue / onChange / clearable / searchable / hint / size / placement / className / disabled / degraded / translate` | — | 同 Picker 同名参数 | Same-named params as Picker |
@@ -369,13 +376,17 @@ h(Surface, { tone: 'sunken', border: 'dashed', padding: 'lg' }, '还没做的东
369
376
 
370
377
  > EN: The header centers vertically as a whole; drop a bare element into `action` and it centers. Colors come from tokens, so light/dark follows the host.
371
378
 
372
- `hoverable` 开启后悬停变色、同时把光标改成 `pointer`,统一吃 `--dshpc-card-hover`(亮 7% 蓝 / 暗 13% 蓝),默认关;`filled` 切底色,默认有底(Card = surface-1,StripCard = accent 浅底),`false` 时底透明但边框仍在。两根轴都只改 `--surface-bg`,插件不用再自己写 `:hover` 规则。
379
+ `hoverable` 开启后悬停变色、同时把光标改成 `pointer`,统一吃 `--dshpc-card-hover`(亮 7% 蓝 / 暗 13% 蓝);默认跟随 `onClick`(给了点击回调即自动开),可显式传 `false` 关掉;`filled` 切底色,默认有底(Card = surface-1,StripCard = accent 浅底),`false` 时底透明但边框仍在。两根轴都只改 `--surface-bg`,插件不用再自己写 `:hover` 规则。
373
380
 
374
- > EN: `hoverable` (default off) changes the fill on hover and switches the cursor to `pointer`, using `--dshpc-card-hover` (7% blue light / 13% blue dark). `filled` (default on) controls the background — Card uses surface-1, StripCard the accent tint; `false` makes it transparent but keeps the border. Both axes only rewrite `--surface-bg`, so plugins no longer need their own `:hover` rules.
381
+ > EN: `hoverable` changes the fill on hover and switches the cursor to `pointer`, using `--dshpc-card-hover` (7% blue light / 13% blue dark). It defaults to on when `onClick` is provided, and can be turned off explicitly. `filled` (default on) controls the background — Card uses surface-1, StripCard the accent tint; `false` makes it transparent but keeps the border. Both axes only rewrite `--surface-bg`, so plugins no longer need their own `:hover` rules.
375
382
 
376
- 展开的卡片用 `hoverScope` 选作用域,默认 `'head'`:根节点零内距并统一裁圆角,`__body` 作为「上面那一整块」独立承担内距、边到边变色;展开态不改内距,上下两圈留白对称,两块之间的间隔也属于头部区、跟着一起变色;`__panel` 是它的兄弟节点,不铺背景、不画分隔线、不参与 hover,鼠标在展开区里操作时整卡都不触发;需要分隔线时由调用方在 `panel` 内容里自绘。展开区的 `margin-top` 与 `padding-top` 都是 0,自绘线紧贴头部区下沿、中间不夹不变色的带子;四根 `--card-pad-t/r/b/l` 是内距唯一真源,`style.padding` 会摊成这四根轴,头部区与展开区左右始终对称。StripCard 的通高色条相对根节点定位,展开后仍贯穿整卡(包括展开区)。想要整卡含展开区一起变色,才显式传 `'card'`。**展开内容必须放进 `panel`**(`children` 属于头部区),核心才有分区信号。
383
+ 展开的卡片用 `hoverScope` 选作用域,默认 `'head'`:根节点零内距并统一裁圆角,`__body` 作为「上面那一整块」独立承担内距、边到边变色;展开态不改内距,上下两圈留白对称,两块之间的间隔也属于头部区、跟着一起变色;`__panel` 是它的兄弟节点,不铺背景、不画分隔线、不参与 hover;默认作用域下鼠标在展开区里操作既不变色也不触发点击(点击契约见下段);需要分隔线时由调用方在 `panel` 内容里自绘。展开区的 `margin-top` 与 `padding-top` 都是 0,自绘线紧贴头部区下沿、中间不夹不变色的带子;四根 `--card-pad-t/r/b/l` 是内距唯一真源,`style.padding` 会摊成这四根轴,头部区与展开区左右始终对称。StripCard 的通高色条相对根节点定位,展开后仍贯穿整卡(包括展开区)。想要整卡含展开区一起变色,才显式传 `'card'`。**展开内容必须放进 `panel`**(`children` 属于头部区),核心才有分区信号。
377
384
 
378
- > EN: For expandable cards, `hoverScope` selects the scope. The default `'head'` gives the root zero padding and clips the radius, while `__body` — the header block owning all padding — changes color edge to edge; expanding keeps its top and bottom padding symmetric, so the gap between the two blocks changes color too. `__panel` is a sibling with no background, no divider and no hover, so operating inside the expanded area triggers nothing; draw a divider inside `panel` content yourself when you need one. Both `margin-top` and `padding-top` on the expanded area are 0, so a caller-drawn line sits flush against the header with no uncoloured strip between them. The four `--card-pad-t/r/b/l` axes are the single source of padding truth: `style.padding` expands into them, keeping the header and expanded area symmetric. The StripCard rail is positioned against the root and stays full-height across the expanded area. Pass `'card'` explicitly to include it. **Expandable content must go into `panel`**; `children` belongs to the header block.
385
+ > EN: For expandable cards, `hoverScope` selects the scope. The default `'head'` gives the root zero padding and clips the radius, while `__body` — the header block owning all padding — changes color edge to edge; expanding keeps its top and bottom padding symmetric, so the gap between the two blocks changes color too. `__panel` is a sibling with no background, no divider and no hover, so in the default scope operating inside the expanded area neither changes color nor triggers a click (see the click contract below); draw a divider inside `panel` content yourself when you need one. Both `margin-top` and `padding-top` on the expanded area are 0, so a caller-drawn line sits flush against the header with no uncoloured strip between them. The four `--card-pad-t/r/b/l` axes are the single source of padding truth: `style.padding` expands into them, keeping the header and expanded area symmetric. The StripCard rail is positioned against the root and stays full-height across the expanded area. Pass `'card'` explicitly to include it. **Expandable content must go into `panel`**; `children` belongs to the header block.
386
+
387
+ `onClick` 让整块卡片可点,命中范围与 `hoverScope` 完全一致:默认 `head` 时点击层是 `__body`(内距圈四边都在里面),展开区 `__panel` 是它的兄弟节点、不绑任何事件,里面拖选复制也不受影响;显式 `card` 时点击层上提到根节点,整卡含展开区都响应。点击层拿 `role="button"`、`tabIndex=0` 与 Enter / Space,并有键盘焦点环;刻意不渲染成 `<button>`,因为调用方要在里面放按钮。`action` 与 `onToggle` 折叠箭头同在右侧槽,一层挡住冒泡,不会连带触发。不传 `onClick` 时外观与行为完全不变。
388
+
389
+ > EN: `onClick` makes the whole card clickable over exactly the same area as `hoverScope`: with the default `head`, the hit layer is `__body` (all four padding edges included), while `__panel` is its sibling with no handlers at all, so text selection inside the expanded area is untouched. With explicit `card`, the hit layer moves up to the root and the expanded area responds too. The hit layer gets `role="button"`, `tabIndex=0`, Enter / Space and a keyboard focus ring. It is deliberately not a `<button>`, because callers put buttons inside. `action` and the `onToggle` arrow share the right-hand slot, which stops propagation so they never trigger the card. Without `onClick`, appearance and behaviour are unchanged.
379
390
 
380
391
  | 参数 | 类型 | 默认 | 说明(zh) | 说明(en) |
381
392
  |---|---|---|---|---|
@@ -386,8 +397,9 @@ h(Surface, { tone: 'sunken', border: 'dashed', padding: 'lg' }, '还没做的东
386
397
  | `action` | `ReactNode` | — | 右上角操作区 | Top-right action area |
387
398
  | `children` | `ReactNode` | — | 主内容,排版随你 | Main content, layout is yours |
388
399
  | `panel` | `ReactNode` | — | 展开后才显示的额外内容;必须放这里,核心才能把展开区与头部区分开 | Extra content shown only when expanded; must live here so the core can separate it from the header |
389
- | `hoverable` | `boolean` | 'false' | 悬停变色 + 光标变 pointer,统一 --dshpc-card-hover;默认关 | Hover color plus a pointer cursor, using --dshpc-card-hover; default off |
390
- | `hoverScope` | `'head' \| 'card'` | 'head' | 'head'(默认)只让上面头部区整块边到边变色、展开区不受影响;'card' 整卡含展开区一起变色。仅 hoverable 为 true 时生效 | 'head' (default) changes only the header block and leaves the expanded area untouched; 'card' includes it. Applies only when hoverable is true |
400
+ | `onClick` | `() => void` | — | 传了才让卡片可点:命中范围同 hoverScope,点击层挂 role=button / tabIndex / Enter·Space;action 与折叠箭头不连带触发;hover 默认跟着开 | Makes the card clickable. Hit area follows hoverScope; the hit layer gets role=button, tabIndex and Enter/Space; action and the collapse arrow never bubble into it; hover turns on by default |
401
+ | `hoverable` | `boolean` | 跟随 onClick | 悬停变色 + 光标变 pointer,统一 --dshpc-card-hover;可显式传 false 关掉 | Hover color plus a pointer cursor, using --dshpc-card-hover; defaults to on when onClick is set, pass false to disable |
402
+ | `hoverScope` | `'head' \| 'card'` | 'head' | 'head'(默认)只有头部区变色并可点、展开区完全不受影响;'card' 整卡含展开区一起变色、一起可点。变色只在 hover 开时生效 | 'head' (default) limits both color and clicks to the header block, leaving the expanded area untouched; 'card' includes it in both. Color applies only when hover is on |
391
403
  | `filled` | `boolean` | 'true' | 是否带底色;false 时底透明、边框仍在。默认有底(Card = surface-1 / StripCard = accent 浅底) | Background fill; false makes it transparent while keeping the border. Default on (Card = surface-1 / StripCard = accent tint) |
392
404
  | `className / style` | `—` | — | 追加类 / 样式;`style.padding` 摊成四根内距轴,同步头部区与展开区 | Append class / style; `style.padding` expands into the four padding axes so the header and expanded area stay aligned |
393
405
 
@@ -397,7 +409,8 @@ import { Card, Chip, StripCard } from 'dsh-plugin-core/ui'
397
409
  h(Card, {
398
410
  accent: 'warning',
399
411
  bar: { side: 'left', inset: 12, gap: 12 }, // 色条可放 left / right / top / bottom
400
- hoverable: true, // 头部区整块悬停变色(默认关)
412
+ // 传 onClick 才让卡片可点;hover 默认跟着它开,不用再手写光标与 :hover
413
+ onClick: () => openTask(id),
401
414
  action: h(Button, { size: 'sm', variant: 'ghost' }, '跳过'),
402
415
  },
403
416
  h('div', null, '标题'),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-plugin-core",
3
- "version": "0.35.9",
3
+ "version": "0.35.11",
4
4
  "packageManager": "pnpm@12.3.4",
5
5
  "description": "Shared base for DSH plugins: design tokens, UI controls, utils, workspace explorer, session preview",
6
6
  "keywords": [