dsh-task-ledger 0.0.62 → 0.0.64

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.
package/dist/client.js CHANGED
@@ -684,11 +684,6 @@ body[data-ds-dark-theme]{
684
684
  font:inherit;font-size:var(--dtl-font-sm);line-height:18px;white-space:nowrap;cursor:default;}
685
685
  .dtl-viewbtn:hover{border-color:var(--dtl-border-strong);color:var(--dtl-fg);}
686
686
  .dtl-taskrow__row:hover .dtl-viewbtn,.dtl-orow:hover .dtl-viewbtn{display:inline-flex;}
687
- .dtl-viewbtn::after{content:attr(data-tip);position:absolute;top:calc(100% + 6px);right:0;z-index:5;
688
- padding:4px 8px;border-radius:var(--dtl-radius-sm);background:var(--dtl-surface-2);
689
- box-shadow:var(--dtl-shadow-2);color:var(--dtl-fg-2);font-size:var(--dtl-font-xs);white-space:nowrap;
690
- opacity:0;pointer-events:none;transition:opacity var(--dtl-dur-fast) var(--dtl-ease);}
691
- .dtl-viewbtn:hover::after{opacity:1;}
692
687
 
693
688
  /* 任务行 = 一张卡(样式照抄 dispatch-table TaskCard:surface-1 底 + 1px 边框 + 左缘状态条;
694
689
  hover 只亮主行;右侧 时间⇄按钮排 互换) */
@@ -747,18 +742,13 @@ body[data-ds-dark-theme]{
747
742
  background:var(--dtl-business-soft);color:var(--dtl-fg);
748
743
  font-size:var(--dtl-font-xs);line-height:16px;white-space:nowrap;}
749
744
 
750
- /* 行内动作按钮(icon + 字,加大;悬停立刻浮出说明——CSS ::after,不用慢半拍的原生 title)。
745
+ /* 行内动作按钮(icon + 字,加大;悬停说明走官方 Tooltip,不在 CSS 里手搓浮层)。
751
746
  样子先行,点击行为归「任务按钮与会话交接」任务 */
752
- .dtl-minibtn{position:relative;display:inline-flex;align-items:center;gap:5px;padding:4px 12px;
747
+ .dtl-minibtn{display:inline-flex;align-items:center;gap:5px;padding:4px 12px;
753
748
  border:1px solid var(--dtl-border);border-radius:var(--dtl-radius-sm);
754
749
  background:var(--dtl-surface-1);color:var(--dtl-fg-2);font:inherit;font-size:var(--dtl-font-sm);
755
750
  line-height:18px;white-space:nowrap;cursor:default;}
756
751
  .dtl-minibtn:hover{border-color:var(--dtl-border-strong);color:var(--dtl-fg);}
757
- .dtl-minibtn::after{content:attr(data-tip);position:absolute;top:calc(100% + 6px);right:0;z-index:5;
758
- padding:4px 8px;border-radius:var(--dtl-radius-sm);background:var(--dtl-surface-2);
759
- box-shadow:var(--dtl-shadow-2);color:var(--dtl-fg-2);font-size:var(--dtl-font-xs);white-space:nowrap;
760
- opacity:0;pointer-events:none;transition:opacity var(--dtl-dur-fast) var(--dtl-ease);}
761
- .dtl-minibtn:hover::after{opacity:1;}
762
752
 
763
753
  /* 空态:真空 = 虚线引导卡(用户 2026-10-18:**加高到 180px + 内容居中**;
764
754
  它贴在滚动条最底下,太窄用户根本看不见) */
@@ -1191,32 +1181,30 @@ body[data-ds-dark-theme]{
1191
1181
  return statusLabel(which, t) ?? "";
1192
1182
  };
1193
1183
  const actions = isTask ? resolveActions(row.task, board) : CLOSED_ACTIONS;
1194
- const viewButton = (0, react.createElement)("button", {
1195
- type: "button",
1196
- className: "dtl-viewbtn",
1197
- "data-tip": t("viewDetail"),
1198
- title: t("viewDetail")
1199
- }, (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconSearchOutlineRegular, { size: 14 }));
1200
- const claimButton = (0, react.createElement)("button", {
1201
- type: "button",
1202
- className: "dtl-minibtn",
1203
- "data-tip": t("tipClaim")
1204
- }, (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconDownloadOutlineRegular, { size: 14 }), t("actionClaim"));
1205
- const resumeButton = (0, react.createElement)("button", {
1206
- type: "button",
1207
- className: "dtl-minibtn",
1208
- "data-tip": t("tipResume")
1209
- }, (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconChevronRightOutlineRegular, { size: 14 }), t("actionResume"));
1210
- const finishButton = (0, react.createElement)("button", {
1211
- type: "button",
1212
- className: "dtl-minibtn",
1213
- "data-tip": t("tipFinish")
1214
- }, (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconCheckOutlineRegular, { size: 14 }), t("actionFinish"));
1215
- const releaseButton = (0, react.createElement)("button", {
1216
- type: "button",
1217
- className: "dtl-minibtn",
1218
- "data-tip": t("tipRelease")
1219
- }, t("actionRelease"));
1184
+ const viewButton = (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
1185
+ label: t("viewDetail"),
1186
+ side: "bottom",
1187
+ portal: true,
1188
+ maxWidth: 240,
1189
+ children: (0, react.createElement)("button", {
1190
+ type: "button",
1191
+ className: "dtl-viewbtn"
1192
+ }, (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconSearchOutlineRegular, { size: 14 }))
1193
+ });
1194
+ const tipBtn = (icon, actionKey, tipKey) => (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
1195
+ label: t(tipKey),
1196
+ side: "bottom",
1197
+ portal: true,
1198
+ maxWidth: 240,
1199
+ children: (0, react.createElement)("button", {
1200
+ type: "button",
1201
+ className: "dtl-minibtn"
1202
+ }, ...icon ? [icon, t(actionKey)] : [t(actionKey)])
1203
+ });
1204
+ const claimButton = tipBtn((0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconDownloadOutlineRegular, { size: 14 }), "actionClaim", "tipClaim");
1205
+ const resumeButton = tipBtn((0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconChevronRightOutlineRegular, { size: 14 }), "actionResume", "tipResume");
1206
+ const finishButton = tipBtn((0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconCheckOutlineRegular, { size: 14 }), "actionFinish", "tipFinish");
1207
+ const releaseButton = tipBtn(null, "actionRelease", "tipRelease");
1220
1208
  const tagOf = (which, tip) => {
1221
1209
  const text = statusLabel(which, t) ?? "";
1222
1210
  return (0, react.createElement)(Tag, {