@sparkelf/dsh-client-ui-skill-center 0.2.1-alpha.27 → 0.2.1-alpha.29
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/lib/client.js +116 -119
- package/package.json +1 -1
package/lib/client.js
CHANGED
|
@@ -4,11 +4,11 @@ window.__ModuleLoader__.load({
|
|
|
4
4
|
var module = { exports: {} };
|
|
5
5
|
var exports = module.exports;
|
|
6
6
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
7
|
-
let react_jsx_runtime = require("react/jsx-runtime");
|
|
8
7
|
let react = require("react");
|
|
9
8
|
let _deepseek_ai_dsh_client_ui_primitives = require("@deepseek-ai/dsh-client-ui-primitives");
|
|
9
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
10
10
|
//#region \0dsh-css:/root/projects/deepseek-harness-plus/packages/plus/ui-skill-center/src/client/SkillCenterPage.module.css.mjs
|
|
11
|
-
const css = ".DGiSta_page{box-sizing:border-box;height:100%;color:var(--dsw-alias-label-primary);flex-direction:column;align-items:center;gap:32px;padding:28px clamp(24px,4vw,48px) 48px;display:flex;overflow:auto}.DGiSta_page>*{width:100%;max-width:960px}.DGiSta_pageHead{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.DGiSta_pageTitle{margin:0;font-size:20px;font-weight:500;line-height:28px}.DGiSta_pageIntro{color:var(--dsw-alias-label-secondary);margin:4px 0 0;font-size:13px;line-height:20px}.DGiSta_toolbar{justify-content:flex-end;align-items:center;gap:16px;display:flex}.DGiSta_iconButton{width:28px;height:28px;color:var(--dsw-alias-label-caption);cursor:pointer;background:0 0;border:0;border-radius:28px;justify-content:center;align-items:center;display:inline-flex}.DGiSta_iconButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-secondary)}.DGiSta_iconButton:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:1px}.DGiSta_iconWrap{display:inline-flex}.DGiSta_button{border:.5px solid var(--dsw-alias-border-l3);height:32px;color:var(--dsw-alias-label-primary);cursor:pointer;background:0 0;border-radius:8px;padding:0 12px;font-size:13px}.DGiSta_button:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.DGiSta_button:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:1px}.DGiSta_search{box-sizing:border-box;border:.5px solid var(--dsw-alias-border-l3);width:100%;height:36px;color:var(--dsw-alias-label-primary);background:0 0;border-radius:10px;padding:0 12px;font-size:13px}.DGiSta_search::placeholder{color:var(--dsw-alias-label-tertiary)}.DGiSta_group{margin-top:
|
|
11
|
+
const css = ".DGiSta_page{box-sizing:border-box;height:100%;color:var(--dsw-alias-label-primary);flex-direction:column;align-items:center;gap:32px;padding:28px clamp(24px,4vw,48px) 48px;display:flex;overflow:auto}.DGiSta_page>*{width:100%;max-width:960px}.DGiSta_pageHead{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.DGiSta_pageTitle{margin:0;font-size:20px;font-weight:500;line-height:28px}.DGiSta_pageIntro{color:var(--dsw-alias-label-secondary);margin:4px 0 0;font-size:13px;line-height:20px}.DGiSta_toolbar{justify-content:flex-end;align-items:center;gap:16px;display:flex}.DGiSta_iconButton{width:28px;height:28px;color:var(--dsw-alias-label-caption);cursor:pointer;background:0 0;border:0;border-radius:28px;justify-content:center;align-items:center;display:inline-flex}.DGiSta_iconButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-secondary)}.DGiSta_iconButton:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:1px}.DGiSta_iconWrap{display:inline-flex}.DGiSta_button{border:.5px solid var(--dsw-alias-border-l3);height:32px;color:var(--dsw-alias-label-primary);cursor:pointer;background:0 0;border-radius:8px;padding:0 12px;font-size:13px}.DGiSta_button:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.DGiSta_button:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:1px}.DGiSta_search{box-sizing:border-box;border:.5px solid var(--dsw-alias-border-l3);width:100%;height:36px;color:var(--dsw-alias-label-primary);background:0 0;border-radius:10px;padding:0 12px;font-size:13px}.DGiSta_search::placeholder{color:var(--dsw-alias-label-tertiary)}.DGiSta_group{margin-top:28px}.DGiSta_groupTitle{align-items:baseline;gap:8px;margin:0 0 12px;font-size:15px;font-weight:500;line-height:22px;display:flex}.DGiSta_groupCount{color:var(--dsw-alias-label-tertiary);font-size:13px;font-weight:400}.DGiSta_groupHint{color:var(--dsw-alias-label-caption);font-size:12px;font-weight:400}.DGiSta_cards{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:10px;margin:0;padding:0;list-style:none;display:grid}.DGiSta_card{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);border-radius:12px;flex-direction:column;align-self:start;gap:12px;min-width:0;padding:12px 14px;display:flex}.DGiSta_cardHead{align-items:center;gap:10px;min-width:0;display:flex}.DGiSta_cardIcon{background:var(--dsw-alias-bg-layer-2);width:28px;height:28px;color:var(--dsw-alias-label-secondary);border-radius:50%;flex:none;place-items:center;display:grid}.DGiSta_cardForeign{opacity:.72}.DGiSta_workspaceBadge{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-secondary);vertical-align:middle;border-radius:4px;margin-left:8px;padding:1px 6px;font-size:11px;font-weight:400;line-height:16px}.DGiSta_cardTitle{text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:600;line-height:22px;overflow:hidden}.DGiSta_cardTitleRow{flex:1;align-items:center;gap:8px;min-width:0;display:flex}.DGiSta_cardDesc{color:var(--dsw-alias-label-secondary);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:12px;line-height:18px;display:-webkit-box;overflow:hidden}.DGiSta_cardWhenToUse{color:var(--dsw-alias-label-caption);font-size:12px;line-height:18px}.DGiSta_cardMarks{flex-wrap:wrap;gap:6px;margin-top:2px;display:flex}.DGiSta_mark{border:1px solid var(--dsw-alias-border-l3);color:var(--dsw-alias-label-secondary);white-space:nowrap;border-radius:4px;padding:1px 6px;font-size:11px;line-height:16px}.DGiSta_markOn{border-color:var(--dsw-alias-state-business-primary);color:var(--dsw-alias-state-business-primary)}.DGiSta_markOff{border-color:var(--dsw-alias-border-l4);color:var(--dsw-alias-label-caption)}.DGiSta_markDanger{border-color:var(--dsw-alias-state-error-primary);color:var(--dsw-alias-state-error-primary)}.DGiSta_cardEnd{flex:none;justify-content:space-between;align-items:center;gap:8px;margin-top:auto;padding-top:2px;display:flex}.DGiSta_cardBody{flex-direction:column;gap:6px;min-width:0;display:flex}.DGiSta_switch{background:var(--dsw-alias-border-l3);cursor:pointer;border:none;border-radius:10px;width:36px;height:20px;transition:background .12s;position:relative}.DGiSta_switch:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:1px}.DGiSta_switchOn{background:var(--dsw-alias-state-success-primary)}.DGiSta_switch:after{content:\"\";background:var(--dsw-alias-bg-layer-1);border-radius:50%;width:16px;height:16px;transition:transform .12s;position:absolute;top:2px;left:2px}.DGiSta_switchOn:after{transform:translate(16px)}.DGiSta_dialog{width:min(560px,100%)}.DGiSta_form{flex-direction:column;gap:12px;display:flex}.DGiSta_field{flex-direction:column;gap:4px;display:flex}.DGiSta_fieldLabel{color:var(--dsw-alias-label-secondary);font-size:12px;line-height:18px}.DGiSta_input{box-sizing:border-box;border:.5px solid var(--dsw-alias-border-l3);height:32px;color:var(--dsw-alias-label-primary);background:0 0;border-radius:8px;padding:0 10px;font-size:13px}.DGiSta_textarea{box-sizing:border-box;border:.5px solid var(--dsw-alias-border-l3);min-height:80px;color:var(--dsw-alias-label-primary);font-family:var(--dsw-font-markdown-code-block-small);resize:vertical;background:0 0;border-radius:8px;padding:8px 10px;font-size:12px}.DGiSta_status{text-align:center;color:var(--dsw-alias-label-tertiary);padding:32px 0;font-size:13px}.DGiSta_statusError{color:var(--dsw-alias-state-error-primary)}";
|
|
12
12
|
const tagId = "@sparkelf/dsh-client-ui-skill-center/SkillCenterPage.module.css";
|
|
13
13
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
|
|
14
14
|
const tag = document.createElement("style");
|
|
@@ -20,14 +20,15 @@ window.__ModuleLoader__.load({
|
|
|
20
20
|
var SkillCenterPage_module_css_default = {
|
|
21
21
|
"button": "DGiSta_button",
|
|
22
22
|
"card": "DGiSta_card",
|
|
23
|
+
"cardBody": "DGiSta_cardBody",
|
|
23
24
|
"cardDesc": "DGiSta_cardDesc",
|
|
24
25
|
"cardEnd": "DGiSta_cardEnd",
|
|
25
26
|
"cardForeign": "DGiSta_cardForeign",
|
|
26
27
|
"cardHead": "DGiSta_cardHead",
|
|
27
28
|
"cardIcon": "DGiSta_cardIcon",
|
|
28
|
-
"cardMain": "DGiSta_cardMain",
|
|
29
29
|
"cardMarks": "DGiSta_cardMarks",
|
|
30
30
|
"cardTitle": "DGiSta_cardTitle",
|
|
31
|
+
"cardTitleRow": "DGiSta_cardTitleRow",
|
|
31
32
|
"cardWhenToUse": "DGiSta_cardWhenToUse",
|
|
32
33
|
"cards": "DGiSta_cards",
|
|
33
34
|
"dialog": "DGiSta_dialog",
|
|
@@ -59,7 +60,7 @@ window.__ModuleLoader__.load({
|
|
|
59
60
|
"workspaceBadge": "DGiSta_workspaceBadge"
|
|
60
61
|
};
|
|
61
62
|
//#endregion
|
|
62
|
-
//#region
|
|
63
|
+
//#region src/client/api.ts
|
|
63
64
|
/**
|
|
64
65
|
* Skill center API client. Talks to the host route family over same-origin
|
|
65
66
|
* fetch; the host owns the trust fence.
|
|
@@ -131,7 +132,7 @@ window.__ModuleLoader__.load({
|
|
|
131
132
|
}
|
|
132
133
|
};
|
|
133
134
|
//#endregion
|
|
134
|
-
//#region
|
|
135
|
+
//#region src/client/SkillCenterPage.tsx
|
|
135
136
|
/**
|
|
136
137
|
* Skill center page. Browses the loaded skills grouped by source, toggles model
|
|
137
138
|
* invocation, creates a skill, and deletes one into a recoverable trash.
|
|
@@ -147,9 +148,9 @@ window.__ModuleLoader__.load({
|
|
|
147
148
|
* @returns the labelled field.
|
|
148
149
|
*/
|
|
149
150
|
function DraftField({ label, children }) {
|
|
150
|
-
return (0, react_jsx_runtime.jsxs)("div", {
|
|
151
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
151
152
|
className: SkillCenterPage_module_css_default.field,
|
|
152
|
-
children: [(0, react_jsx_runtime.jsx)("span", {
|
|
153
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
153
154
|
className: SkillCenterPage_module_css_default.fieldLabel,
|
|
154
155
|
children: label
|
|
155
156
|
}), children]
|
|
@@ -161,73 +162,75 @@ window.__ModuleLoader__.load({
|
|
|
161
162
|
* @returns the row.
|
|
162
163
|
*/
|
|
163
164
|
function SkillCard({ skill, t, onToggle, onDelete }) {
|
|
164
|
-
return (0, react_jsx_runtime.
|
|
165
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("li", {
|
|
165
166
|
className: skill.isActiveWorkspace === false && skill.workspaceName !== void 0 ? SkillCenterPage_module_css_default.card + " " + SkillCenterPage_module_css_default.cardForeign : SkillCenterPage_module_css_default.card,
|
|
166
|
-
children:
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
(0, react_jsx_runtime.jsx)("span", {
|
|
167
|
+
children: [
|
|
168
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
169
|
+
className: SkillCenterPage_module_css_default.cardHead,
|
|
170
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
170
171
|
className: SkillCenterPage_module_css_default.cardIcon,
|
|
171
|
-
children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconSkillOutlineRegular, { size:
|
|
172
|
-
}),
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
children: skill.workspaceName
|
|
181
|
-
})]
|
|
182
|
-
}),
|
|
183
|
-
(0, react_jsx_runtime.jsx)("div", {
|
|
184
|
-
className: SkillCenterPage_module_css_default.cardDesc,
|
|
185
|
-
children: skill.description
|
|
186
|
-
}),
|
|
187
|
-
skill.whenToUse === void 0 ? null : (0, react_jsx_runtime.jsx)("div", {
|
|
188
|
-
className: SkillCenterPage_module_css_default.cardWhenToUse,
|
|
189
|
-
children: skill.whenToUse
|
|
190
|
-
}),
|
|
191
|
-
(0, react_jsx_runtime.jsxs)("div", {
|
|
192
|
-
className: SkillCenterPage_module_css_default.cardMarks,
|
|
193
|
-
children: [
|
|
194
|
-
(0, react_jsx_runtime.jsx)("span", {
|
|
195
|
-
className: skill.modelInvocable ? SkillCenterPage_module_css_default.mark + " " + SkillCenterPage_module_css_default.markOn : SkillCenterPage_module_css_default.mark + " " + SkillCenterPage_module_css_default.markOff,
|
|
196
|
-
children: t("skill.modelInvocable")
|
|
197
|
-
}),
|
|
198
|
-
(0, react_jsx_runtime.jsx)("span", {
|
|
199
|
-
className: skill.userInvocable ? SkillCenterPage_module_css_default.mark + " " + SkillCenterPage_module_css_default.markOn : SkillCenterPage_module_css_default.mark + " " + SkillCenterPage_module_css_default.markOff,
|
|
200
|
-
children: t("skill.userInvocable")
|
|
201
|
-
}),
|
|
202
|
-
skill.linked === true ? (0, react_jsx_runtime.jsx)("span", {
|
|
203
|
-
className: SkillCenterPage_module_css_default.mark + " " + SkillCenterPage_module_css_default.markDanger,
|
|
204
|
-
children: t("skill.linked")
|
|
205
|
-
}) : null
|
|
206
|
-
]
|
|
207
|
-
})
|
|
208
|
-
]
|
|
209
|
-
}),
|
|
210
|
-
(0, react_jsx_runtime.jsxs)("div", {
|
|
211
|
-
className: SkillCenterPage_module_css_default.cardEnd,
|
|
212
|
-
children: [(0, react_jsx_runtime.jsx)("button", {
|
|
213
|
-
type: "button",
|
|
214
|
-
className: skill.modelInvocable ? SkillCenterPage_module_css_default.switch + " " + SkillCenterPage_module_css_default.switchOn : SkillCenterPage_module_css_default.switch,
|
|
215
|
-
"aria-label": skill.modelInvocable ? t("skill.disabled") : t("skill.enabled"),
|
|
216
|
-
"aria-pressed": skill.modelInvocable,
|
|
217
|
-
onClick: () => {
|
|
218
|
-
onToggle(skill, !skill.modelInvocable);
|
|
219
|
-
}
|
|
220
|
-
}), skill.path === void 0 || skill.linked === true ? null : (0, react_jsx_runtime.jsx)("button", {
|
|
221
|
-
type: "button",
|
|
222
|
-
className: SkillCenterPage_module_css_default.button,
|
|
223
|
-
onClick: () => {
|
|
224
|
-
onDelete(skill);
|
|
225
|
-
},
|
|
226
|
-
children: t("action.delete")
|
|
172
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconSkillOutlineRegular, { size: 16 })
|
|
173
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
174
|
+
className: SkillCenterPage_module_css_default.cardTitleRow,
|
|
175
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
176
|
+
className: SkillCenterPage_module_css_default.cardTitle,
|
|
177
|
+
children: skill.name
|
|
178
|
+
}), skill.workspaceName === void 0 ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
179
|
+
className: SkillCenterPage_module_css_default.workspaceBadge,
|
|
180
|
+
children: skill.workspaceName
|
|
227
181
|
})]
|
|
228
|
-
})
|
|
229
|
-
|
|
230
|
-
|
|
182
|
+
})]
|
|
183
|
+
}),
|
|
184
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
185
|
+
className: SkillCenterPage_module_css_default.cardBody,
|
|
186
|
+
children: [
|
|
187
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
188
|
+
className: SkillCenterPage_module_css_default.cardDesc,
|
|
189
|
+
children: skill.description
|
|
190
|
+
}),
|
|
191
|
+
skill.whenToUse === void 0 ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
192
|
+
className: SkillCenterPage_module_css_default.cardWhenToUse,
|
|
193
|
+
children: skill.whenToUse
|
|
194
|
+
}),
|
|
195
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
196
|
+
className: SkillCenterPage_module_css_default.cardMarks,
|
|
197
|
+
children: [
|
|
198
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
199
|
+
className: skill.modelInvocable ? SkillCenterPage_module_css_default.mark + " " + SkillCenterPage_module_css_default.markOn : SkillCenterPage_module_css_default.mark + " " + SkillCenterPage_module_css_default.markOff,
|
|
200
|
+
children: t("skill.modelInvocable")
|
|
201
|
+
}),
|
|
202
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
203
|
+
className: skill.userInvocable ? SkillCenterPage_module_css_default.mark + " " + SkillCenterPage_module_css_default.markOn : SkillCenterPage_module_css_default.mark + " " + SkillCenterPage_module_css_default.markOff,
|
|
204
|
+
children: t("skill.userInvocable")
|
|
205
|
+
}),
|
|
206
|
+
skill.linked === true ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
207
|
+
className: SkillCenterPage_module_css_default.mark + " " + SkillCenterPage_module_css_default.markDanger,
|
|
208
|
+
children: t("skill.linked")
|
|
209
|
+
}) : null
|
|
210
|
+
]
|
|
211
|
+
})
|
|
212
|
+
]
|
|
213
|
+
}),
|
|
214
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
215
|
+
className: SkillCenterPage_module_css_default.cardEnd,
|
|
216
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
217
|
+
type: "button",
|
|
218
|
+
className: skill.modelInvocable ? SkillCenterPage_module_css_default.switch + " " + SkillCenterPage_module_css_default.switchOn : SkillCenterPage_module_css_default.switch,
|
|
219
|
+
"aria-label": skill.modelInvocable ? t("skill.disabled") : t("skill.enabled"),
|
|
220
|
+
"aria-pressed": skill.modelInvocable,
|
|
221
|
+
onClick: () => {
|
|
222
|
+
onToggle(skill, !skill.modelInvocable);
|
|
223
|
+
}
|
|
224
|
+
}), skill.path === void 0 || skill.linked === true ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
225
|
+
type: "button",
|
|
226
|
+
className: SkillCenterPage_module_css_default.button,
|
|
227
|
+
onClick: () => {
|
|
228
|
+
onDelete(skill);
|
|
229
|
+
},
|
|
230
|
+
children: t("action.delete")
|
|
231
|
+
})]
|
|
232
|
+
})
|
|
233
|
+
]
|
|
231
234
|
});
|
|
232
235
|
}
|
|
233
236
|
/**
|
|
@@ -344,20 +347,20 @@ window.__ModuleLoader__.load({
|
|
|
344
347
|
load
|
|
345
348
|
]);
|
|
346
349
|
const total = state.kind === "ready" ? state.payload.groups.reduce((n, g) => n + g.skills.length, 0) : 0;
|
|
347
|
-
return (0, react_jsx_runtime.jsxs)("div", {
|
|
350
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
348
351
|
className: SkillCenterPage_module_css_default.page,
|
|
349
352
|
children: [
|
|
350
|
-
(0, react_jsx_runtime.jsxs)("header", {
|
|
353
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("header", {
|
|
351
354
|
className: SkillCenterPage_module_css_default.pageHead,
|
|
352
|
-
children: [(0, react_jsx_runtime.jsxs)("div", { children: [(0, react_jsx_runtime.jsx)("h1", {
|
|
355
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h1", {
|
|
353
356
|
className: SkillCenterPage_module_css_default.pageTitle,
|
|
354
357
|
children: t("panel")
|
|
355
|
-
}), (0, react_jsx_runtime.jsx)("p", {
|
|
358
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
356
359
|
className: SkillCenterPage_module_css_default.pageIntro,
|
|
357
360
|
children: t("panel.intro")
|
|
358
|
-
})] }), (0, react_jsx_runtime.jsxs)("div", {
|
|
361
|
+
})] }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
359
362
|
className: SkillCenterPage_module_css_default.toolbar,
|
|
360
|
-
children: [(0, react_jsx_runtime.jsx)("button", {
|
|
363
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
361
364
|
type: "button",
|
|
362
365
|
className: SkillCenterPage_module_css_default.iconButton,
|
|
363
366
|
"aria-label": t("action.refresh"),
|
|
@@ -365,15 +368,15 @@ window.__ModuleLoader__.load({
|
|
|
365
368
|
onClick: () => {
|
|
366
369
|
load();
|
|
367
370
|
},
|
|
368
|
-
children: (0, react_jsx_runtime.jsx)("span", {
|
|
371
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
369
372
|
className: SkillCenterPage_module_css_default.iconWrap,
|
|
370
373
|
"aria-hidden": "true",
|
|
371
|
-
children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconRefreshOutlineRegular, {})
|
|
374
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconRefreshOutlineRegular, {})
|
|
372
375
|
})
|
|
373
|
-
}), (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
376
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
374
377
|
variant: "primary",
|
|
375
378
|
size: "sm",
|
|
376
|
-
icon: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconPlusOutlineRegular, { size: 13 }),
|
|
379
|
+
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconPlusOutlineRegular, { size: 13 }),
|
|
377
380
|
onClick: () => {
|
|
378
381
|
setCreating((v) => !v);
|
|
379
382
|
},
|
|
@@ -381,7 +384,7 @@ window.__ModuleLoader__.load({
|
|
|
381
384
|
})]
|
|
382
385
|
})]
|
|
383
386
|
}),
|
|
384
|
-
(0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Modal, {
|
|
387
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Modal, {
|
|
385
388
|
open: creating,
|
|
386
389
|
onClose: () => {
|
|
387
390
|
setCreating(false);
|
|
@@ -389,58 +392,58 @@ window.__ModuleLoader__.load({
|
|
|
389
392
|
title: t("create.title"),
|
|
390
393
|
closeLabel: t("action.cancel"),
|
|
391
394
|
className: SkillCenterPage_module_css_default.dialog,
|
|
392
|
-
footer: (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [(0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
395
|
+
footer: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
393
396
|
variant: "outline",
|
|
394
397
|
autoFocus: true,
|
|
395
398
|
onClick: () => {
|
|
396
399
|
setCreating(false);
|
|
397
400
|
},
|
|
398
401
|
children: t("action.cancel")
|
|
399
|
-
}), (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
402
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
400
403
|
variant: "primary",
|
|
401
404
|
onClick: () => {
|
|
402
405
|
submit();
|
|
403
406
|
},
|
|
404
407
|
children: t("action.confirm")
|
|
405
408
|
})] }),
|
|
406
|
-
children: (0, react_jsx_runtime.jsxs)("div", {
|
|
409
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
407
410
|
className: SkillCenterPage_module_css_default.form,
|
|
408
411
|
children: [
|
|
409
|
-
(0, react_jsx_runtime.jsx)(DraftField, {
|
|
412
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(DraftField, {
|
|
410
413
|
label: t("create.name"),
|
|
411
|
-
children: (0, react_jsx_runtime.jsx)("input", {
|
|
414
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
|
|
412
415
|
className: SkillCenterPage_module_css_default.input,
|
|
413
416
|
value: draft.name,
|
|
414
417
|
onChange: set("name")
|
|
415
418
|
})
|
|
416
419
|
}),
|
|
417
|
-
(0, react_jsx_runtime.jsx)(DraftField, {
|
|
420
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(DraftField, {
|
|
418
421
|
label: t("create.description"),
|
|
419
|
-
children: (0, react_jsx_runtime.jsx)("input", {
|
|
422
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
|
|
420
423
|
className: SkillCenterPage_module_css_default.input,
|
|
421
424
|
value: draft.description,
|
|
422
425
|
onChange: set("description")
|
|
423
426
|
})
|
|
424
427
|
}),
|
|
425
|
-
(0, react_jsx_runtime.jsx)(DraftField, {
|
|
428
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(DraftField, {
|
|
426
429
|
label: t("create.whenToUse"),
|
|
427
|
-
children: (0, react_jsx_runtime.jsx)("input", {
|
|
430
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
|
|
428
431
|
className: SkillCenterPage_module_css_default.input,
|
|
429
432
|
value: draft.whenToUse,
|
|
430
433
|
onChange: set("whenToUse")
|
|
431
434
|
})
|
|
432
435
|
}),
|
|
433
|
-
(0, react_jsx_runtime.jsx)(DraftField, {
|
|
436
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(DraftField, {
|
|
434
437
|
label: t("create.content"),
|
|
435
|
-
children: (0, react_jsx_runtime.jsx)("textarea", {
|
|
438
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("textarea", {
|
|
436
439
|
className: SkillCenterPage_module_css_default.textarea,
|
|
437
440
|
value: draft.content,
|
|
438
441
|
onChange: set("content")
|
|
439
442
|
})
|
|
440
443
|
}),
|
|
441
|
-
(0, react_jsx_runtime.jsx)(DraftField, {
|
|
444
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(DraftField, {
|
|
442
445
|
label: t("create.root"),
|
|
443
|
-
children: (0, react_jsx_runtime.jsxs)("select", {
|
|
446
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("select", {
|
|
444
447
|
className: SkillCenterPage_module_css_default.input,
|
|
445
448
|
value: draft.root,
|
|
446
449
|
onChange: (e) => {
|
|
@@ -449,10 +452,10 @@ window.__ModuleLoader__.load({
|
|
|
449
452
|
root: e.target.value === "project" ? "project" : "user"
|
|
450
453
|
}));
|
|
451
454
|
},
|
|
452
|
-
children: [(0, react_jsx_runtime.jsx)("option", {
|
|
455
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
|
|
453
456
|
value: "user",
|
|
454
457
|
children: t("create.rootUser")
|
|
455
|
-
}), (0, react_jsx_runtime.jsx)("option", {
|
|
458
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
|
|
456
459
|
value: "project",
|
|
457
460
|
children: t("create.rootProject")
|
|
458
461
|
})]
|
|
@@ -461,7 +464,7 @@ window.__ModuleLoader__.load({
|
|
|
461
464
|
]
|
|
462
465
|
})
|
|
463
466
|
}),
|
|
464
|
-
(0, react_jsx_runtime.jsx)("input", {
|
|
467
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
|
|
465
468
|
className: SkillCenterPage_module_css_default.search,
|
|
466
469
|
placeholder: t("search.placeholder"),
|
|
467
470
|
value: query,
|
|
@@ -469,11 +472,11 @@ window.__ModuleLoader__.load({
|
|
|
469
472
|
setQuery(e.target.value);
|
|
470
473
|
}
|
|
471
474
|
}),
|
|
472
|
-
state.kind === "loading" ? (0, react_jsx_runtime.jsx)("div", {
|
|
475
|
+
state.kind === "loading" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
473
476
|
className: SkillCenterPage_module_css_default.status,
|
|
474
477
|
children: t("state.loading")
|
|
475
478
|
}) : null,
|
|
476
|
-
state.kind === "failed" ? (0, react_jsx_runtime.jsxs)("div", {
|
|
479
|
+
state.kind === "failed" ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
477
480
|
className: SkillCenterPage_module_css_default.status + " " + SkillCenterPage_module_css_default.statusError,
|
|
478
481
|
children: [
|
|
479
482
|
t("state.failed"),
|
|
@@ -481,32 +484,32 @@ window.__ModuleLoader__.load({
|
|
|
481
484
|
state.message
|
|
482
485
|
]
|
|
483
486
|
}) : null,
|
|
484
|
-
state.kind === "ready" && groups.length === 0 ? (0, react_jsx_runtime.jsx)("div", {
|
|
487
|
+
state.kind === "ready" && groups.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
485
488
|
className: SkillCenterPage_module_css_default.status,
|
|
486
489
|
children: query.trim() === "" ? t("state.empty") : t("search.noMatches")
|
|
487
490
|
}) : null,
|
|
488
|
-
state.kind === "ready" && groups.length > 0 && total === 0 ? (0, react_jsx_runtime.jsx)("div", {
|
|
491
|
+
state.kind === "ready" && groups.length > 0 && total === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
489
492
|
className: SkillCenterPage_module_css_default.status,
|
|
490
493
|
children: t("state.empty")
|
|
491
494
|
}) : null,
|
|
492
|
-
groups.map((group) => (0, react_jsx_runtime.jsxs)("div", {
|
|
495
|
+
groups.map((group) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
493
496
|
className: SkillCenterPage_module_css_default.group,
|
|
494
|
-
children: [(0, react_jsx_runtime.jsxs)("h2", {
|
|
497
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("h2", {
|
|
495
498
|
className: SkillCenterPage_module_css_default.groupTitle,
|
|
496
499
|
children: [
|
|
497
500
|
group.title,
|
|
498
|
-
(0, react_jsx_runtime.jsx)("span", {
|
|
501
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
499
502
|
className: SkillCenterPage_module_css_default.groupCount,
|
|
500
503
|
children: group.skills.length
|
|
501
504
|
}),
|
|
502
|
-
(0, react_jsx_runtime.jsx)("span", {
|
|
505
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
503
506
|
className: SkillCenterPage_module_css_default.groupHint,
|
|
504
507
|
children: group.hint
|
|
505
508
|
})
|
|
506
509
|
]
|
|
507
|
-
}), (0, react_jsx_runtime.jsx)("ul", {
|
|
510
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("ul", {
|
|
508
511
|
className: SkillCenterPage_module_css_default.cards,
|
|
509
|
-
children: group.skills.map((skill) => (0, react_jsx_runtime.jsx)(SkillCard, {
|
|
512
|
+
children: group.skills.map((skill) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SkillCard, {
|
|
510
513
|
skill,
|
|
511
514
|
t,
|
|
512
515
|
onToggle: (s, enabled) => {
|
|
@@ -518,28 +521,22 @@ window.__ModuleLoader__.load({
|
|
|
518
521
|
}, group.key + ":" + skill.name))
|
|
519
522
|
})]
|
|
520
523
|
}, group.key)),
|
|
521
|
-
renderSlot("skill-center.section", {})
|
|
524
|
+
renderSlot("skill-center.section", { query })
|
|
522
525
|
]
|
|
523
526
|
});
|
|
524
527
|
}
|
|
525
528
|
//#endregion
|
|
526
|
-
//#region
|
|
529
|
+
//#region src/client/SkillCenterPanelIcon.tsx
|
|
527
530
|
/**
|
|
528
531
|
* Render the glyph at the size the sidebar asks for.
|
|
529
532
|
* @param props - the sidebar's icon share: requested edge and selected state.
|
|
530
533
|
* @returns the icon element.
|
|
531
534
|
*/
|
|
532
535
|
function SkillCenterPanelIcon({ size }) {
|
|
533
|
-
return (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconSkillOutlineRegular, { size });
|
|
536
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconSkillOutlineRegular, { size });
|
|
534
537
|
}
|
|
535
538
|
//#endregion
|
|
536
|
-
//#region
|
|
537
|
-
/**
|
|
538
|
-
* Skill center dictionaries. Keys are typed so the panel and the sidebar entry
|
|
539
|
-
* cannot reference a string that does not exist in both languages.
|
|
540
|
-
*
|
|
541
|
-
* @module @sparkelf/dsh-client-ui-skill-center/client/locales
|
|
542
|
-
*/
|
|
539
|
+
//#region src/client/locales.ts
|
|
543
540
|
/** Simplified Chinese dictionary. */
|
|
544
541
|
const zh = {
|
|
545
542
|
"panel": "技能中心",
|
|
@@ -601,7 +598,7 @@ window.__ModuleLoader__.load({
|
|
|
601
598
|
"delete.confirm": "Deleting moves it into .trash, where it can be restored. Delete?"
|
|
602
599
|
};
|
|
603
600
|
//#endregion
|
|
604
|
-
//#region
|
|
601
|
+
//#region src/client/index.ts
|
|
605
602
|
/** Dictionary namespace owned by this plugin. */
|
|
606
603
|
const NS = "skillCenter";
|
|
607
604
|
/** The id shared by the sidebar entry and the main panel it opens. */
|
package/package.json
CHANGED