@orbit-work/ui 0.1.2 → 0.1.4
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/appearance.cjs +4 -2
- package/dist/appearance.cjs.map +1 -1
- package/dist/appearance.d.cts +7 -1
- package/dist/appearance.d.ts +7 -1
- package/dist/appearance.js +5 -3
- package/dist/brand-preview.cjs +14 -0
- package/dist/brand-preview.cjs.map +1 -0
- package/dist/brand-preview.d.cts +13 -0
- package/dist/brand-preview.d.ts +13 -0
- package/dist/brand-preview.js +14 -0
- package/dist/brand-preview.js.map +1 -0
- package/dist/{chunk-KRP43SUA.cjs → chunk-JC7BHKS4.cjs} +2 -398
- package/dist/chunk-JC7BHKS4.cjs.map +1 -0
- package/dist/chunk-K7ONUTLA.cjs +240 -0
- package/dist/chunk-K7ONUTLA.cjs.map +1 -0
- package/dist/chunk-KTNWR3H5.js +399 -0
- package/dist/chunk-KTNWR3H5.js.map +1 -0
- package/dist/{chunk-S3R5QFO4.js → chunk-LSGO6AQR.js} +2 -398
- package/dist/chunk-LSGO6AQR.js.map +1 -0
- package/dist/chunk-Q7B4M5GC.cjs +399 -0
- package/dist/chunk-Q7B4M5GC.cjs.map +1 -0
- package/dist/chunk-ZXMHCL6D.js +240 -0
- package/dist/chunk-ZXMHCL6D.js.map +1 -0
- package/dist/core.css +12 -3
- package/dist/core.scoped.css +7888 -0
- package/dist/index.cjs +212 -377
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +37 -4
- package/dist/index.d.ts +37 -4
- package/dist/index.js +191 -356
- package/dist/index.js.map +1 -1
- package/dist/{appearance-D7uh_ZTy.d.cts → unifiedTheme-DQ-sETKO.d.cts} +13 -4
- package/dist/{appearance-D7uh_ZTy.d.ts → unifiedTheme-DQ-sETKO.d.ts} +13 -4
- package/dist/workbench.css +12 -3
- package/package.json +16 -2
- package/dist/chunk-KRP43SUA.cjs.map +0 -1
- package/dist/chunk-S3R5QFO4.js.map +0 -1
package/dist/index.js
CHANGED
|
@@ -7,23 +7,28 @@ import {
|
|
|
7
7
|
import {
|
|
8
8
|
BUILTIN_ORBITWORK_SKINS,
|
|
9
9
|
DEFAULT_ORBITWORK_SKIN_ID,
|
|
10
|
+
TENANT_THEME_COLOR_KEYS
|
|
11
|
+
} from "./chunk-KTNWR3H5.js";
|
|
12
|
+
import {
|
|
13
|
+
applyUnifiedTheme,
|
|
14
|
+
localizedCopy,
|
|
15
|
+
mergeUnifiedTheme,
|
|
16
|
+
removeUnifiedTheme
|
|
17
|
+
} from "./chunk-ZXMHCL6D.js";
|
|
18
|
+
import {
|
|
10
19
|
HEX_COLOR,
|
|
11
20
|
ORBITWORK_FONT_SCALES,
|
|
12
|
-
ORBITWORK_SKIN_CSS_VARIABLES,
|
|
13
|
-
TENANT_THEME_COLOR_KEYS,
|
|
14
21
|
assertKnownKeys,
|
|
15
22
|
ds2ContrastRatio,
|
|
16
|
-
fontScaleTokens,
|
|
17
23
|
hasOrbitworkSkinChatBackground,
|
|
18
24
|
isOrbitworkFontScale,
|
|
19
25
|
isRecord,
|
|
20
|
-
normalizeOrbitworkSkinPublicPartStyles,
|
|
21
26
|
orbitworkSkinChatBackgroundMaskColor,
|
|
22
27
|
orbitworkSkinImageCssValue,
|
|
23
28
|
parseOrbitworkSkin,
|
|
24
29
|
resolveOrbitworkFontScale,
|
|
25
30
|
resolveOrbitworkSkinChatBackgroundMask
|
|
26
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-LSGO6AQR.js";
|
|
27
32
|
import {
|
|
28
33
|
BROWSER_ANNOTATION_POPUP_STYLES,
|
|
29
34
|
BROWSER_ANNOTATION_PROPERTY_DEFS
|
|
@@ -26717,7 +26722,7 @@ function DesktopAboutSettingsView({
|
|
|
26717
26722
|
className: "flex flex-col items-center py-10 text-center text-[color:var(--ow-text)]",
|
|
26718
26723
|
"aria-labelledby": "desktop-about-product-name",
|
|
26719
26724
|
children: [
|
|
26720
|
-
/* @__PURE__ */ jsx152("img", { "data-ow-part": "logo", src: logoSrc, alt: "", className: "size-16" }),
|
|
26725
|
+
/* @__PURE__ */ jsx152("img", { "data-ow-part": "logo", src: logoSrc, alt: "", className: "size-16 object-contain" }),
|
|
26721
26726
|
/* @__PURE__ */ jsx152(
|
|
26722
26727
|
"h2",
|
|
26723
26728
|
{
|
|
@@ -28453,7 +28458,7 @@ function DesktopConnectorCardView({
|
|
|
28453
28458
|
}
|
|
28454
28459
|
|
|
28455
28460
|
// src/theme/core/tenantTheme.ts
|
|
28456
|
-
var ROOT_KEYS = /* @__PURE__ */ new Set(["name", "logo", "favicon", "modes", "typography", "branding"]);
|
|
28461
|
+
var ROOT_KEYS = /* @__PURE__ */ new Set(["name", "logo", "loginKV", "favicon", "modes", "typography", "branding"]);
|
|
28457
28462
|
var MODE_KEYS = /* @__PURE__ */ new Set(["light", "dark"]);
|
|
28458
28463
|
var COLOR_KEYS = new Set(TENANT_THEME_COLOR_KEYS);
|
|
28459
28464
|
var TYPOGRAPHY_KEYS = /* @__PURE__ */ new Set(["fontSans", "fontMono"]);
|
|
@@ -28559,6 +28564,7 @@ function parseTenantTheme(input) {
|
|
|
28559
28564
|
assertKnownKeys(input, ROOT_KEYS, "\u79DF\u6237\u4E3B\u9898");
|
|
28560
28565
|
const name = parseLimitedText(input.name, "name", LENGTH_LIMITS.name, true);
|
|
28561
28566
|
const logo = parseAsset(input.logo, "logo", true);
|
|
28567
|
+
const loginKV = parseAsset(input.loginKV, "loginKV", false);
|
|
28562
28568
|
const favicon = parseAsset(input.favicon, "favicon", false);
|
|
28563
28569
|
if (!isRecord(input.modes)) throw new Error("modes \u5FC5\u987B\u662F\u5BF9\u8C61");
|
|
28564
28570
|
assertKnownKeys(input.modes, MODE_KEYS, "modes");
|
|
@@ -28578,6 +28584,7 @@ function parseTenantTheme(input) {
|
|
|
28578
28584
|
theme: {
|
|
28579
28585
|
name,
|
|
28580
28586
|
logo,
|
|
28587
|
+
...loginKV !== void 0 ? { loginKV } : {},
|
|
28581
28588
|
...favicon !== void 0 ? { favicon } : {},
|
|
28582
28589
|
modes: { ...light ? { light } : {}, ...dark ? { dark } : {} },
|
|
28583
28590
|
typography: { fontSans: fontSans.trim(), fontMono: fontMono.trim() },
|
|
@@ -28589,228 +28596,8 @@ function parseTenantTheme(input) {
|
|
|
28589
28596
|
}
|
|
28590
28597
|
}
|
|
28591
28598
|
|
|
28592
|
-
// src/theme/core/unifiedTheme.ts
|
|
28593
|
-
var TENANT_TOKEN_MAP = {
|
|
28594
|
-
bg: "--ow-bg",
|
|
28595
|
-
surface: "--ow-surface",
|
|
28596
|
-
surface2: "--ow-surface-2",
|
|
28597
|
-
text: "--ow-text",
|
|
28598
|
-
text2: "--ow-text-2",
|
|
28599
|
-
text3: "--ow-text-3",
|
|
28600
|
-
border: "--ow-border",
|
|
28601
|
-
borderStrong: "--ow-border-strong"
|
|
28602
|
-
};
|
|
28603
|
-
function tenantTokens(theme, mode) {
|
|
28604
|
-
const colors = theme?.modes[mode];
|
|
28605
|
-
if (!colors) return {};
|
|
28606
|
-
return Object.fromEntries(
|
|
28607
|
-
Object.entries(TENANT_TOKEN_MAP).map(([key, token]) => [token, colors[key]])
|
|
28608
|
-
);
|
|
28609
|
-
}
|
|
28610
|
-
function skinTokens(skin, mode) {
|
|
28611
|
-
const values = skin?.modes[mode];
|
|
28612
|
-
if (!values) return {};
|
|
28613
|
-
const tokens = {};
|
|
28614
|
-
for (const [rawKey, value] of Object.entries(values)) {
|
|
28615
|
-
const key = rawKey;
|
|
28616
|
-
const property = ORBITWORK_SKIN_CSS_VARIABLES[key];
|
|
28617
|
-
if (!property || !value) continue;
|
|
28618
|
-
if (key === "chatBackgroundImage") {
|
|
28619
|
-
const image = orbitworkSkinImageCssValue(value);
|
|
28620
|
-
if (image) tokens[property] = image;
|
|
28621
|
-
continue;
|
|
28622
|
-
}
|
|
28623
|
-
if (key === "chatBackgroundMaskColor") {
|
|
28624
|
-
const mask = resolveOrbitworkSkinChatBackgroundMask(value);
|
|
28625
|
-
tokens[property] = mask.color;
|
|
28626
|
-
tokens["--ow-chat-bg-mask-start-opacity"] = `${mask.startOpacity}%`;
|
|
28627
|
-
tokens["--ow-chat-bg-mask-end-opacity"] = `${mask.endOpacity}%`;
|
|
28628
|
-
continue;
|
|
28629
|
-
}
|
|
28630
|
-
if (key === "chatBackgroundOverlay" && values.chatBackgroundMaskColor) continue;
|
|
28631
|
-
tokens[property] = value;
|
|
28632
|
-
}
|
|
28633
|
-
return tokens;
|
|
28634
|
-
}
|
|
28635
|
-
function localeCandidates(locale) {
|
|
28636
|
-
let canonical = "en-US";
|
|
28637
|
-
try {
|
|
28638
|
-
canonical = Intl.getCanonicalLocales(locale)[0] ?? "en-US";
|
|
28639
|
-
} catch {
|
|
28640
|
-
}
|
|
28641
|
-
const language = canonical.split("-")[0] ?? "en";
|
|
28642
|
-
return [.../* @__PURE__ */ new Set([canonical, language, "en-US"])];
|
|
28643
|
-
}
|
|
28644
|
-
function localizedCopy(source, locale) {
|
|
28645
|
-
if (!source) return void 0;
|
|
28646
|
-
for (const candidate of localeCandidates(locale)) {
|
|
28647
|
-
if (source[candidate]) return source[candidate];
|
|
28648
|
-
}
|
|
28649
|
-
return void 0;
|
|
28650
|
-
}
|
|
28651
|
-
function mergeUnifiedTheme(brand, tenant, userSkin, mode, locale = "en-US", appearanceOverlaySkin = null, fontScalePreference = null) {
|
|
28652
|
-
const chatBackgroundImage = appearanceOverlaySkin?.modes[mode]?.chatBackgroundImage ?? userSkin?.modes[mode]?.chatBackgroundImage;
|
|
28653
|
-
const tokens = {
|
|
28654
|
-
...brand?.modes[mode] ?? {},
|
|
28655
|
-
...tenantTokens(tenant, mode),
|
|
28656
|
-
...skinTokens(userSkin, mode),
|
|
28657
|
-
...skinTokens(appearanceOverlaySkin, mode),
|
|
28658
|
-
...fontScaleTokens(resolveOrbitworkFontScale(fontScalePreference, userSkin?.fontScale))
|
|
28659
|
-
};
|
|
28660
|
-
const typography = tenant?.typography ?? brand?.typography;
|
|
28661
|
-
if (typography) {
|
|
28662
|
-
tokens["--ow-font-sans"] = typography.fontSans;
|
|
28663
|
-
tokens["--ow-font-mono"] = typography.fontMono;
|
|
28664
|
-
}
|
|
28665
|
-
const brandCopy = localizedCopy(brand?.branding, locale);
|
|
28666
|
-
const tenantCopy = localizedCopy(tenant?.branding, locale);
|
|
28667
|
-
const copy = tenantCopy ? { ...brandCopy ?? {}, ...tenantCopy } : brandCopy ?? null;
|
|
28668
|
-
const logo = tenant?.logo || brand?.logo;
|
|
28669
|
-
const favicon = tenant?.favicon || brand?.favicon;
|
|
28670
|
-
const branding = copy ? {
|
|
28671
|
-
...copy,
|
|
28672
|
-
...logo ? { logo } : {},
|
|
28673
|
-
...favicon ? { favicon } : {}
|
|
28674
|
-
} : null;
|
|
28675
|
-
return {
|
|
28676
|
-
mode,
|
|
28677
|
-
tokens,
|
|
28678
|
-
branding,
|
|
28679
|
-
skin: userSkin?.modes[mode] || appearanceOverlaySkin?.modes[mode] ? {
|
|
28680
|
-
id: userSkin?.id ?? appearanceOverlaySkin?.id ?? "default",
|
|
28681
|
-
...userSkin?.contributes?.publicPartStyles ? { publicPartStyles: userSkin.contributes.publicPartStyles } : {},
|
|
28682
|
-
...chatBackgroundImage ? { chatBackgroundImage } : {},
|
|
28683
|
-
hasChatBackgroundImage: Boolean(chatBackgroundImage),
|
|
28684
|
-
hasUserBubbleStyle: Boolean(
|
|
28685
|
-
userSkin?.modes[mode]?.userBubbleBackground || userSkin?.modes[mode]?.userBubbleForeground || userSkin?.modes[mode]?.userBubbleBorder
|
|
28686
|
-
)
|
|
28687
|
-
} : null,
|
|
28688
|
-
sources: {
|
|
28689
|
-
brand: brand?.id ?? null,
|
|
28690
|
-
tenant: tenant?.name ?? null,
|
|
28691
|
-
user: userSkin?.id ?? null
|
|
28692
|
-
}
|
|
28693
|
-
};
|
|
28694
|
-
}
|
|
28695
|
-
|
|
28696
28599
|
// src/theme/providers/ThemeProvider.tsx
|
|
28697
28600
|
import { createContext as createContext5, useCallback as useCallback40, useContext as useContext5, useEffect as useEffect37, useMemo as useMemo12, useState as useState61 } from "react";
|
|
28698
|
-
|
|
28699
|
-
// src/theme/utils/themeApplier.ts
|
|
28700
|
-
var managedProperties = /* @__PURE__ */ new WeakMap();
|
|
28701
|
-
var managedPublicPartStyles = /* @__PURE__ */ new WeakMap();
|
|
28702
|
-
var managedPublicPartScopes = /* @__PURE__ */ new WeakMap();
|
|
28703
|
-
var managedChatBackgroundImages = /* @__PURE__ */ new WeakMap();
|
|
28704
|
-
var nextPublicPartScope = 0;
|
|
28705
|
-
var CHAT_BACKGROUND_IMAGE_PROPERTY = "--ow-chat-bg-image";
|
|
28706
|
-
function applyUnifiedTheme(theme, target = document.documentElement) {
|
|
28707
|
-
const previous = managedProperties.get(target) ?? /* @__PURE__ */ new Set();
|
|
28708
|
-
const next = new Set(Object.keys(theme.tokens));
|
|
28709
|
-
for (const property of previous) {
|
|
28710
|
-
if (!next.has(property)) target.style.removeProperty(property);
|
|
28711
|
-
}
|
|
28712
|
-
for (const [property, value] of Object.entries(theme.tokens)) {
|
|
28713
|
-
if (value === void 0) continue;
|
|
28714
|
-
const appliedValue = property === CHAT_BACKGROUND_IMAGE_PROPERTY && theme.skin?.chatBackgroundImage ? chatBackgroundImageCssValue(target, theme.skin.chatBackgroundImage, value) : value;
|
|
28715
|
-
target.style.setProperty(property, appliedValue);
|
|
28716
|
-
}
|
|
28717
|
-
if (!next.has(CHAT_BACKGROUND_IMAGE_PROPERTY) || !theme.skin?.chatBackgroundImage) {
|
|
28718
|
-
releaseChatBackgroundImage(target);
|
|
28719
|
-
}
|
|
28720
|
-
managedProperties.set(target, next);
|
|
28721
|
-
setOptionalAttribute(target, "data-ow-brand-theme", theme.sources.brand);
|
|
28722
|
-
setOptionalAttribute(target, "data-tenant-theme", theme.sources.tenant);
|
|
28723
|
-
setOptionalAttribute(target, "data-ow-skin", theme.skin?.id ?? null);
|
|
28724
|
-
if (theme.skin?.hasChatBackgroundImage) target.setAttribute("data-desktop-background-image", "");
|
|
28725
|
-
else target.removeAttribute("data-desktop-background-image");
|
|
28726
|
-
if (theme.skin?.hasUserBubbleStyle) target.setAttribute("data-chat-user-bubble-skin", "");
|
|
28727
|
-
else target.removeAttribute("data-chat-user-bubble-skin");
|
|
28728
|
-
const targetDocument = target.ownerDocument ?? (typeof document === "undefined" ? null : document);
|
|
28729
|
-
if (targetDocument) applyPublicPartStyles(target, targetDocument, theme.skin);
|
|
28730
|
-
}
|
|
28731
|
-
function removeUnifiedTheme(target = document.documentElement) {
|
|
28732
|
-
for (const property of managedProperties.get(target) ?? []) target.style.removeProperty(property);
|
|
28733
|
-
managedProperties.delete(target);
|
|
28734
|
-
releaseChatBackgroundImage(target);
|
|
28735
|
-
target.removeAttribute("data-ow-brand-theme");
|
|
28736
|
-
target.removeAttribute("data-tenant-theme");
|
|
28737
|
-
target.removeAttribute("data-ow-skin");
|
|
28738
|
-
target.removeAttribute("data-desktop-background-image");
|
|
28739
|
-
target.removeAttribute("data-chat-user-bubble-skin");
|
|
28740
|
-
removePublicPartStyles(target);
|
|
28741
|
-
}
|
|
28742
|
-
function chatBackgroundImageCssValue(target, dataUrl, fallback) {
|
|
28743
|
-
const current = managedChatBackgroundImages.get(target);
|
|
28744
|
-
if (current?.dataUrl === dataUrl) return `url("${current.objectUrl}")`;
|
|
28745
|
-
const separator = dataUrl.indexOf(",");
|
|
28746
|
-
const header = separator >= 0 ? dataUrl.slice(0, separator) : "";
|
|
28747
|
-
if (!/^data:image\/(?:png|jpeg|webp);base64$/i.test(header)) {
|
|
28748
|
-
releaseChatBackgroundImage(target);
|
|
28749
|
-
return fallback;
|
|
28750
|
-
}
|
|
28751
|
-
try {
|
|
28752
|
-
const binary = globalThis.atob(dataUrl.slice(separator + 1));
|
|
28753
|
-
const bytes = new Uint8Array(binary.length);
|
|
28754
|
-
for (let index = 0; index < binary.length; index += 1) bytes[index] = binary.charCodeAt(index);
|
|
28755
|
-
const objectUrl = globalThis.URL.createObjectURL(new Blob([bytes], { type: header.slice(5, -7) }));
|
|
28756
|
-
releaseChatBackgroundImage(target);
|
|
28757
|
-
managedChatBackgroundImages.set(target, { dataUrl, objectUrl });
|
|
28758
|
-
return `url("${objectUrl}")`;
|
|
28759
|
-
} catch {
|
|
28760
|
-
releaseChatBackgroundImage(target);
|
|
28761
|
-
return fallback;
|
|
28762
|
-
}
|
|
28763
|
-
}
|
|
28764
|
-
function releaseChatBackgroundImage(target) {
|
|
28765
|
-
const current = managedChatBackgroundImages.get(target);
|
|
28766
|
-
if (!current) return;
|
|
28767
|
-
globalThis.URL.revokeObjectURL(current.objectUrl);
|
|
28768
|
-
managedChatBackgroundImages.delete(target);
|
|
28769
|
-
}
|
|
28770
|
-
function setOptionalAttribute(target, name, value) {
|
|
28771
|
-
if (value) target.setAttribute(name, value);
|
|
28772
|
-
else target.removeAttribute(name);
|
|
28773
|
-
}
|
|
28774
|
-
function removePublicPartStyles(target) {
|
|
28775
|
-
managedPublicPartStyles.get(target)?.remove();
|
|
28776
|
-
managedPublicPartStyles.delete(target);
|
|
28777
|
-
target.removeAttribute("data-ow-skin-scope");
|
|
28778
|
-
}
|
|
28779
|
-
function applyPublicPartStyles(target, document2, skin) {
|
|
28780
|
-
const previous = managedPublicPartStyles.get(target);
|
|
28781
|
-
if (!skin?.publicPartStyles) {
|
|
28782
|
-
removePublicPartStyles(target);
|
|
28783
|
-
return;
|
|
28784
|
-
}
|
|
28785
|
-
let normalized;
|
|
28786
|
-
try {
|
|
28787
|
-
normalized = normalizeOrbitworkSkinPublicPartStyles(skin.publicPartStyles);
|
|
28788
|
-
} catch (error) {
|
|
28789
|
-
console.error("[theme] rejected invalid public-part styles at apply time:", error);
|
|
28790
|
-
removePublicPartStyles(target);
|
|
28791
|
-
return;
|
|
28792
|
-
}
|
|
28793
|
-
let scopeId = managedPublicPartScopes.get(target);
|
|
28794
|
-
if (!scopeId) {
|
|
28795
|
-
scopeId = `ow-skin-${++nextPublicPartScope}`;
|
|
28796
|
-
managedPublicPartScopes.set(target, scopeId);
|
|
28797
|
-
}
|
|
28798
|
-
target.setAttribute("data-ow-skin-scope", scopeId);
|
|
28799
|
-
const scope = `[data-ow-skin-scope="${scopeId}"]`;
|
|
28800
|
-
const scopedCss = normalized.replace(/([^{}]+)\{/g, (_match, selector) => {
|
|
28801
|
-
const selectors = selector.split(",").map((item) => `${scope} ${item.trim()}`).join(", ");
|
|
28802
|
-
return `${selectors} {`;
|
|
28803
|
-
});
|
|
28804
|
-
const style = previous ?? document2.createElement("style");
|
|
28805
|
-
style.setAttribute("data-ow-skin-style", scopeId);
|
|
28806
|
-
style.textContent = scopedCss;
|
|
28807
|
-
if (!previous) {
|
|
28808
|
-
managedPublicPartStyles.set(target, style);
|
|
28809
|
-
document2.head.appendChild(style);
|
|
28810
|
-
}
|
|
28811
|
-
}
|
|
28812
|
-
|
|
28813
|
-
// src/theme/providers/ThemeProvider.tsx
|
|
28814
28601
|
import { jsx as jsx157 } from "react/jsx-runtime";
|
|
28815
28602
|
var STORAGE_KEY = "ow-theme";
|
|
28816
28603
|
var SKIN_STORAGE_KEY = "ow-skin-id";
|
|
@@ -28885,7 +28672,7 @@ function ThemeProvider({
|
|
|
28885
28672
|
const builtinSkins = BUILTIN_ORBITWORK_SKINS;
|
|
28886
28673
|
const skins = useMemo12(() => [...BUILTIN_ORBITWORK_SKINS, ...customSkins], [customSkins]);
|
|
28887
28674
|
const activeSkin = tryOnSkin ?? skin;
|
|
28888
|
-
const fontScale = resolveOrbitworkFontScale(fontScalePreference, activeSkin?.fontScale);
|
|
28675
|
+
const fontScale = resolveOrbitworkFontScale(fontScalePreference, activeSkin?.fontScale ?? brandTheme?.fontScale);
|
|
28889
28676
|
const unifiedTheme = useMemo12(
|
|
28890
28677
|
() => mergeUnifiedTheme(
|
|
28891
28678
|
brandTheme,
|
|
@@ -30336,6 +30123,7 @@ function DesktopConnectorDetailView({
|
|
|
30336
30123
|
import { Fragment as Fragment52, jsx as jsx167, jsxs as jsxs138 } from "react/jsx-runtime";
|
|
30337
30124
|
function DesktopHomeView({
|
|
30338
30125
|
title = void 0,
|
|
30126
|
+
brandLogoSrc,
|
|
30339
30127
|
backdrop,
|
|
30340
30128
|
capsules,
|
|
30341
30129
|
mounts,
|
|
@@ -30358,7 +30146,15 @@ function DesktopHomeView({
|
|
|
30358
30146
|
),
|
|
30359
30147
|
children: [
|
|
30360
30148
|
/* @__PURE__ */ jsxs138("div", { "data-slot": "desktop-home-hero", className: "flex items-center gap-[14px]", children: [
|
|
30361
|
-
/* @__PURE__ */ jsx167(
|
|
30149
|
+
brandLogoSrc ? /* @__PURE__ */ jsx167(
|
|
30150
|
+
"img",
|
|
30151
|
+
{
|
|
30152
|
+
"data-ow-part": "brand-logo",
|
|
30153
|
+
src: brandLogoSrc,
|
|
30154
|
+
alt: "",
|
|
30155
|
+
className: "h-[34px] w-[34px] object-contain"
|
|
30156
|
+
}
|
|
30157
|
+
) : /* @__PURE__ */ jsx167(OrbitworkMark, { variant: "auto", size: 34 }),
|
|
30362
30158
|
/* @__PURE__ */ jsx167(
|
|
30363
30159
|
"h1",
|
|
30364
30160
|
{
|
|
@@ -30462,7 +30258,7 @@ function defaultLoginLabels(t) {
|
|
|
30462
30258
|
};
|
|
30463
30259
|
}
|
|
30464
30260
|
var LOGIN_PANE = "flex w-full max-w-[320px] flex-col";
|
|
30465
|
-
var LOGIN_MARK = "mx-auto mb-10 block w-[46px]
|
|
30261
|
+
var LOGIN_MARK = "mx-auto mb-10 block h-[46px] w-[46px] object-contain";
|
|
30466
30262
|
var LOGIN_HEADING = "mb-3 text-center font-[family-name:var(--ow-font-sans)] text-ow-fs-title font-bold text-[color:var(--ow-text)]";
|
|
30467
30263
|
var LOGIN_SUBTITLE = "mx-auto mb-8 max-w-[320px] text-pretty text-center font-[family-name:var(--ow-font-sans)] text-ow-fs-ui font-normal leading-[1.6] text-[color:var(--ow-text-3)]";
|
|
30468
30264
|
var LOGIN_LINK = "cursor-pointer rounded-[var(--ow-radius-xs)] border-0 bg-transparent p-0 font-[family-name:var(--ow-font-sans)] text-ow-fs-body-sm font-normal leading-none text-[color:var(--ow-link)] transition-[color] duration-[var(--ow-dur-1)] ease-[var(--ow-ease-beacon)] hover:text-[color:var(--ow-link-hover)] hover:underline active:text-[color:var(--ow-link-hover)] focus-visible:[outline:var(--ow-focus-ring-w)_solid_var(--ow-focus-ring)] focus-visible:outline-offset-[var(--ow-focus-ring-offset)]";
|
|
@@ -32857,6 +32653,7 @@ var SidebarShell = forwardRef92(function SidebarShell2({
|
|
|
32857
32653
|
import { Fragment as Fragment57, jsx as jsx179, jsxs as jsxs150 } from "react/jsx-runtime";
|
|
32858
32654
|
function DesktopSidebarView(props) {
|
|
32859
32655
|
const { t } = useUiLocale();
|
|
32656
|
+
const { branding } = useBranding();
|
|
32860
32657
|
const { projects } = props;
|
|
32861
32658
|
const projectsLabel = props.projectsLabel ?? t("sidebar.projects");
|
|
32862
32659
|
const { isImeEnter, onCompositionStart, onCompositionEnd } = useImeAwareEnter();
|
|
@@ -33065,7 +32862,25 @@ function DesktopSidebarView(props) {
|
|
|
33065
32862
|
{
|
|
33066
32863
|
"data-ow-part": "brand",
|
|
33067
32864
|
className: cn("flex items-center gap-1.5 px-[9px] pb-5", props.platform === "windows" && "mt-2"),
|
|
33068
|
-
children: /* @__PURE__ */
|
|
32865
|
+
children: props.brandLogoSrc ? /* @__PURE__ */ jsxs150(Fragment57, { children: [
|
|
32866
|
+
/* @__PURE__ */ jsx179(
|
|
32867
|
+
"img",
|
|
32868
|
+
{
|
|
32869
|
+
"data-ow-part": "brand-logo",
|
|
32870
|
+
src: props.brandLogoSrc,
|
|
32871
|
+
alt: "",
|
|
32872
|
+
className: "h-5 w-5 flex-none object-contain"
|
|
32873
|
+
}
|
|
32874
|
+
),
|
|
32875
|
+
branding?.productName ? /* @__PURE__ */ jsx179(
|
|
32876
|
+
"span",
|
|
32877
|
+
{
|
|
32878
|
+
"data-ow-part": "brand-name",
|
|
32879
|
+
className: "truncate font-[family-name:var(--ow-font-display,'Space_Grotesk',sans-serif)] text-[20px] font-medium leading-none tracking-[-0.01em] text-[color:var(--ow-text)]",
|
|
32880
|
+
children: branding.productName
|
|
32881
|
+
}
|
|
32882
|
+
) : null
|
|
32883
|
+
] }) : /* @__PURE__ */ jsx179(OrbitworkLockup, { theme: "auto", size: 20 })
|
|
33069
32884
|
}
|
|
33070
32885
|
),
|
|
33071
32886
|
/* @__PURE__ */ jsxs150("nav", { "data-ow-part": "navigation", className: "flex flex-col gap-0.5", children: [
|
|
@@ -37549,9 +37364,28 @@ function PdfPreviewDialog({
|
|
|
37549
37364
|
);
|
|
37550
37365
|
}
|
|
37551
37366
|
|
|
37367
|
+
// src/components/domain/preview/BrandPreviewScope.tsx
|
|
37368
|
+
import { useLayoutEffect as useLayoutEffect9, useMemo as useMemo16, useRef as useRef48 } from "react";
|
|
37369
|
+
import { jsx as jsx202 } from "react/jsx-runtime";
|
|
37370
|
+
function BrandPreviewScope({ brandTheme, mode, locale = "zh-CN", className, children }) {
|
|
37371
|
+
const rootRef = useRef48(null);
|
|
37372
|
+
const unified = useMemo16(() => mergeUnifiedTheme(brandTheme, null, null, mode, locale), [brandTheme, mode, locale]);
|
|
37373
|
+
useLayoutEffect9(() => {
|
|
37374
|
+
const el = rootRef.current;
|
|
37375
|
+
if (!el) return;
|
|
37376
|
+
applyUnifiedTheme(unified, el);
|
|
37377
|
+
return () => removeUnifiedTheme(el);
|
|
37378
|
+
}, [unified]);
|
|
37379
|
+
const brandingValue = useMemo16(
|
|
37380
|
+
() => ({ branding: unified.branding, tenantLoading: false, tenantError: null }),
|
|
37381
|
+
[unified]
|
|
37382
|
+
);
|
|
37383
|
+
return /* @__PURE__ */ jsx202(BrandingContext.Provider, { value: brandingValue, children: /* @__PURE__ */ jsx202("div", { ref: rootRef, className: cn("ow-ui-scope", className), "data-theme": mode, children }) });
|
|
37384
|
+
}
|
|
37385
|
+
|
|
37552
37386
|
// src/components/domain/skills/McpServerListView/index.tsx
|
|
37553
37387
|
import { useState as useState84 } from "react";
|
|
37554
|
-
import { jsx as
|
|
37388
|
+
import { jsx as jsx203, jsxs as jsxs171 } from "react/jsx-runtime";
|
|
37555
37389
|
var PAGE_SIZE2 = 8;
|
|
37556
37390
|
var MCP_LIST_CLASS = "flex flex-col gap-2";
|
|
37557
37391
|
var MCP_ROW_CLASS = "grid grid-cols-[28px_38px_1fr_auto] items-start gap-2 rounded-[var(--ow-radius-lg)] border border-[color:var(--ow-border)] bg-[var(--ow-bg)] p-3.5";
|
|
@@ -37566,7 +37400,7 @@ function McpServerListView({
|
|
|
37566
37400
|
}) {
|
|
37567
37401
|
const { t } = useUiLocale();
|
|
37568
37402
|
if (loading && servers.length === 0) {
|
|
37569
|
-
return /* @__PURE__ */
|
|
37403
|
+
return /* @__PURE__ */ jsx203(
|
|
37570
37404
|
"div",
|
|
37571
37405
|
{
|
|
37572
37406
|
"data-slot": "mcp-server-list",
|
|
@@ -37574,13 +37408,13 @@ function McpServerListView({
|
|
|
37574
37408
|
"aria-busy": "true",
|
|
37575
37409
|
"aria-label": t("interface.loadingMcpConfiguration59237"),
|
|
37576
37410
|
children: [0, 1, 2].map((index) => /* @__PURE__ */ jsxs171("div", { className: MCP_ROW_CLASS, "data-slot": "mcp-server-row", "data-ow-state": "loading", children: [
|
|
37577
|
-
/* @__PURE__ */
|
|
37578
|
-
/* @__PURE__ */
|
|
37411
|
+
/* @__PURE__ */ jsx203("span", {}),
|
|
37412
|
+
/* @__PURE__ */ jsx203(Skeleton, { variant: "block", width: 38, height: 38, radius: "var(--ow-radius-md)" }),
|
|
37579
37413
|
/* @__PURE__ */ jsxs171("div", { "data-ow-part": "body", children: [
|
|
37580
|
-
/* @__PURE__ */
|
|
37581
|
-
/* @__PURE__ */
|
|
37414
|
+
/* @__PURE__ */ jsx203(Skeleton, { variant: "line", width: "42%", height: 13 }),
|
|
37415
|
+
/* @__PURE__ */ jsx203(Skeleton, { variant: "line", width: "66%", height: 11 })
|
|
37582
37416
|
] }),
|
|
37583
|
-
/* @__PURE__ */
|
|
37417
|
+
/* @__PURE__ */ jsx203("span", {})
|
|
37584
37418
|
] }, index))
|
|
37585
37419
|
}
|
|
37586
37420
|
);
|
|
@@ -37595,7 +37429,7 @@ function McpServerListView({
|
|
|
37595
37429
|
正上方 40px,用不着再在正文里指一次路。本件也没有 onAdd 之类的回调,凭空造一个
|
|
37596
37430
|
新接口只为渲一枚重复的钮不划算。
|
|
37597
37431
|
副句因此只承担「接进来会怎样」这一件事,并收在 440 量度内一行放得下。 */
|
|
37598
|
-
/* @__PURE__ */
|
|
37432
|
+
/* @__PURE__ */ jsx203(
|
|
37599
37433
|
EmptyState,
|
|
37600
37434
|
{
|
|
37601
37435
|
size: "page",
|
|
@@ -37608,8 +37442,8 @@ function McpServerListView({
|
|
|
37608
37442
|
const totalPages = Math.max(1, Math.ceil(servers.length / PAGE_SIZE2));
|
|
37609
37443
|
const currentPage = Math.min(page, totalPages);
|
|
37610
37444
|
return /* @__PURE__ */ jsxs171("div", { "data-slot": "mcp-server-list", className: MCP_LIST_CLASS, children: [
|
|
37611
|
-
servers.slice((currentPage - 1) * PAGE_SIZE2, currentPage * PAGE_SIZE2).map((server) => /* @__PURE__ */
|
|
37612
|
-
totalPages > 1 && /* @__PURE__ */
|
|
37445
|
+
servers.slice((currentPage - 1) * PAGE_SIZE2, currentPage * PAGE_SIZE2).map((server) => /* @__PURE__ */ jsx203(McpServerRow, { server, onRefresh, onCopy, onRemove }, server.id)),
|
|
37446
|
+
totalPages > 1 && /* @__PURE__ */ jsx203(Pagination, { current: currentPage, total: servers.length, pageSize: PAGE_SIZE2, onChange: onPageChange })
|
|
37613
37447
|
] });
|
|
37614
37448
|
}
|
|
37615
37449
|
function McpServerRow({
|
|
@@ -37650,7 +37484,7 @@ function McpServerRow({
|
|
|
37650
37484
|
"data-ow-state": [expanded && "expanded", busy && "busy"].filter(Boolean).join(" ") || void 0,
|
|
37651
37485
|
className: cn(MCP_ROW_CLASS, expanded && "bg-[var(--ow-surface)]"),
|
|
37652
37486
|
children: [
|
|
37653
|
-
/* @__PURE__ */
|
|
37487
|
+
/* @__PURE__ */ jsx203(
|
|
37654
37488
|
Button,
|
|
37655
37489
|
{
|
|
37656
37490
|
variant: "ghost",
|
|
@@ -37664,23 +37498,23 @@ function McpServerRow({
|
|
|
37664
37498
|
"aria-label": expanded ? t("interface.collapseMcpDetails0a7b3") : t("interface.expandMcpDetails7b820"),
|
|
37665
37499
|
"aria-expanded": hasDetails ? expanded : void 0,
|
|
37666
37500
|
onClick: () => setExpanded((value) => !value),
|
|
37667
|
-
children: /* @__PURE__ */
|
|
37501
|
+
children: /* @__PURE__ */ jsx203(ChevRight, {})
|
|
37668
37502
|
}
|
|
37669
37503
|
),
|
|
37670
|
-
/* @__PURE__ */
|
|
37504
|
+
/* @__PURE__ */ jsx203(
|
|
37671
37505
|
"span",
|
|
37672
37506
|
{
|
|
37673
37507
|
"data-ow-part": "icon",
|
|
37674
37508
|
"data-ow-kind": server.type,
|
|
37675
37509
|
className: "inline-flex h-[38px] w-[38px] items-center justify-center rounded-[var(--ow-radius-md)] bg-[var(--ow-surface-2)] text-[color:var(--ow-text-2)] [&_svg]:h-4 [&_svg]:w-4",
|
|
37676
|
-
children: server.type === "stdio" ? /* @__PURE__ */
|
|
37510
|
+
children: server.type === "stdio" ? /* @__PURE__ */ jsx203(Terminal, {}) : /* @__PURE__ */ jsx203(Globe, {})
|
|
37677
37511
|
}
|
|
37678
37512
|
),
|
|
37679
37513
|
/* @__PURE__ */ jsxs171("div", { "data-ow-part": "body", className: "flex min-w-0 flex-col gap-1.5", children: [
|
|
37680
37514
|
/* @__PURE__ */ jsxs171("div", { "data-ow-part": "title", className: "flex min-w-0 items-center gap-2", children: [
|
|
37681
|
-
/* @__PURE__ */
|
|
37682
|
-
/* @__PURE__ */
|
|
37683
|
-
/* @__PURE__ */
|
|
37515
|
+
/* @__PURE__ */ jsx203("b", { className: "min-w-0 overflow-hidden text-ellipsis whitespace-nowrap text-ow-fs-ui font-semibold leading-[1.25] text-[color:var(--ow-text)]", children: server.displayName || server.id }),
|
|
37516
|
+
/* @__PURE__ */ jsx203(Tag, { size: "sm", variant: "default", shape: "square", children: server.type === "stdio" ? "STDIO" : "HTTP" }),
|
|
37517
|
+
/* @__PURE__ */ jsx203(Chip, { dot: chipToneOf(statusTone), label: statusLabel, description: server.statusText })
|
|
37684
37518
|
] }),
|
|
37685
37519
|
hasDetails && expanded && /* @__PURE__ */ jsxs171(
|
|
37686
37520
|
"div",
|
|
@@ -37688,7 +37522,7 @@ function McpServerRow({
|
|
|
37688
37522
|
"data-ow-part": "details",
|
|
37689
37523
|
className: "mt-1 rounded-[var(--ow-radius-md)] border border-[color:var(--ow-border-strong)] bg-[var(--ow-bg)] px-3 py-2.5 text-[color:var(--ow-text-2)]",
|
|
37690
37524
|
children: [
|
|
37691
|
-
/* @__PURE__ */
|
|
37525
|
+
/* @__PURE__ */ jsx203(
|
|
37692
37526
|
"div",
|
|
37693
37527
|
{
|
|
37694
37528
|
"data-ow-part": "summary",
|
|
@@ -37696,7 +37530,7 @@ function McpServerRow({
|
|
|
37696
37530
|
children: server.summary || "-"
|
|
37697
37531
|
}
|
|
37698
37532
|
),
|
|
37699
|
-
server.toolNames.length > 0 && /* @__PURE__ */
|
|
37533
|
+
server.toolNames.length > 0 && /* @__PURE__ */ jsx203(
|
|
37700
37534
|
"div",
|
|
37701
37535
|
{
|
|
37702
37536
|
"data-ow-part": "tools",
|
|
@@ -37708,12 +37542,12 @@ function McpServerRow({
|
|
|
37708
37542
|
t("interface.suggestedActionaba23"),
|
|
37709
37543
|
" "
|
|
37710
37544
|
] }),
|
|
37711
|
-
/* @__PURE__ */
|
|
37545
|
+
/* @__PURE__ */ jsx203("p", { className: "m-0 text-ow-fs-body-sm leading-[1.45] text-[color:var(--ow-error)]", children: server.errorSummary ?? t("interface.thisMcpServerHasNotReturned72d88") })
|
|
37712
37546
|
]
|
|
37713
37547
|
}
|
|
37714
37548
|
)
|
|
37715
37549
|
] }),
|
|
37716
|
-
/* @__PURE__ */
|
|
37550
|
+
/* @__PURE__ */ jsx203("div", { "data-ow-part": "actions", className: "flex items-start gap-1.5", children: /* @__PURE__ */ jsx203(
|
|
37717
37551
|
RowOverflowMenu,
|
|
37718
37552
|
{
|
|
37719
37553
|
disabled: busy,
|
|
@@ -37722,20 +37556,20 @@ function McpServerRow({
|
|
|
37722
37556
|
{
|
|
37723
37557
|
key: "reconnect",
|
|
37724
37558
|
label: reconnecting ? t("interface.reconnecting90fd6") : t("interface.reconnect7dcec"),
|
|
37725
|
-
icon: /* @__PURE__ */
|
|
37559
|
+
icon: /* @__PURE__ */ jsx203(Refresh, {})
|
|
37726
37560
|
},
|
|
37727
37561
|
...hasDetails ? [
|
|
37728
37562
|
{
|
|
37729
37563
|
key: "copy",
|
|
37730
37564
|
label: t("interface.copyErrorSummarybfc73"),
|
|
37731
|
-
icon: /* @__PURE__ */
|
|
37565
|
+
icon: /* @__PURE__ */ jsx203(Terminal, {}),
|
|
37732
37566
|
confirmsInPlace: true
|
|
37733
37567
|
}
|
|
37734
37568
|
] : [],
|
|
37735
37569
|
{
|
|
37736
37570
|
key: "remove",
|
|
37737
37571
|
label: removing ? t("sidebar.deleting") : t("common.delete"),
|
|
37738
|
-
icon: /* @__PURE__ */
|
|
37572
|
+
icon: /* @__PURE__ */ jsx203(Trash, {}),
|
|
37739
37573
|
danger: true
|
|
37740
37574
|
}
|
|
37741
37575
|
],
|
|
@@ -37780,7 +37614,7 @@ function statusLabelOf(server) {
|
|
|
37780
37614
|
}
|
|
37781
37615
|
|
|
37782
37616
|
// src/components/domain/skills/SkillCardView/index.tsx
|
|
37783
|
-
import { jsx as
|
|
37617
|
+
import { jsx as jsx204 } from "react/jsx-runtime";
|
|
37784
37618
|
function SkillCardView({
|
|
37785
37619
|
name,
|
|
37786
37620
|
desc,
|
|
@@ -37801,14 +37635,14 @@ function SkillCardView({
|
|
|
37801
37635
|
const { t } = useUiLocale();
|
|
37802
37636
|
const label = actionLabel ?? (installing ? outdated ? t("common.updating") : t("common.installing") : outdated ? t("common.update") : installed ? t("common.use") : t("common.install"));
|
|
37803
37637
|
const status = installing ? "installing" : !installed ? void 0 : outdated ? "update" : "installed";
|
|
37804
|
-
return /* @__PURE__ */
|
|
37638
|
+
return /* @__PURE__ */ jsx204(
|
|
37805
37639
|
DesktopCatalogCardView,
|
|
37806
37640
|
{
|
|
37807
37641
|
avatar,
|
|
37808
37642
|
name,
|
|
37809
37643
|
version: showVersion ? version : void 0,
|
|
37810
37644
|
status,
|
|
37811
|
-
badge: mine ? /* @__PURE__ */
|
|
37645
|
+
badge: mine ? /* @__PURE__ */ jsx204(StatusTag, { status: "mine" }) : void 0,
|
|
37812
37646
|
description: desc,
|
|
37813
37647
|
metaItems,
|
|
37814
37648
|
actionLabel: label,
|
|
@@ -37822,7 +37656,7 @@ function SkillCardView({
|
|
|
37822
37656
|
}
|
|
37823
37657
|
|
|
37824
37658
|
// src/components/domain/skills/SkillDetailPanelView/index.tsx
|
|
37825
|
-
import { jsx as
|
|
37659
|
+
import { jsx as jsx205, jsxs as jsxs172 } from "react/jsx-runtime";
|
|
37826
37660
|
function SkillDetailPanelView({
|
|
37827
37661
|
avatar,
|
|
37828
37662
|
name,
|
|
@@ -37863,27 +37697,27 @@ function SkillDetailPanelView({
|
|
|
37863
37697
|
backLabel,
|
|
37864
37698
|
onBack,
|
|
37865
37699
|
children: [
|
|
37866
|
-
authorization && /* @__PURE__ */
|
|
37867
|
-
/* @__PURE__ */
|
|
37700
|
+
authorization && /* @__PURE__ */ jsx205(DesktopDetailSection, { title: t("permissions.authorize"), children: authorization }),
|
|
37701
|
+
/* @__PURE__ */ jsx205(DesktopDetailSection, { title: t("interface.instructionsbee77"), children: loading ? /* @__PURE__ */ jsxs172(
|
|
37868
37702
|
"div",
|
|
37869
37703
|
{
|
|
37870
37704
|
"data-ow-part": "loading",
|
|
37871
37705
|
role: "status",
|
|
37872
37706
|
className: "flex items-center gap-2 py-4 text-ow-fs-ui leading-[1.5] text-[color:var(--ow-text-3)]",
|
|
37873
37707
|
children: [
|
|
37874
|
-
/* @__PURE__ */
|
|
37875
|
-
/* @__PURE__ */
|
|
37708
|
+
/* @__PURE__ */ jsx205(Spinner, { size: "md" }),
|
|
37709
|
+
/* @__PURE__ */ jsx205("span", { children: loadingText })
|
|
37876
37710
|
]
|
|
37877
37711
|
}
|
|
37878
|
-
) : error ? /* @__PURE__ */
|
|
37712
|
+
) : error ? /* @__PURE__ */ jsx205(
|
|
37879
37713
|
InlineMessage,
|
|
37880
37714
|
{
|
|
37881
37715
|
variant: "error",
|
|
37882
37716
|
detail: errorDetail,
|
|
37883
|
-
action: onRetry && /* @__PURE__ */
|
|
37717
|
+
action: onRetry && /* @__PURE__ */ jsx205(Button, { variant: "secondary", size: "sm", onClick: onRetry, children: t("common.retry") }),
|
|
37884
37718
|
children: error
|
|
37885
37719
|
}
|
|
37886
|
-
) : docContent ? /* @__PURE__ */
|
|
37720
|
+
) : docContent ? /* @__PURE__ */ jsx205(
|
|
37887
37721
|
"div",
|
|
37888
37722
|
{
|
|
37889
37723
|
"data-ow-part": "document",
|
|
@@ -37894,7 +37728,7 @@ function SkillDetailPanelView({
|
|
|
37894
37728
|
/* A5-B4:`markSize={32}` 这条逃生舱撤掉——文档区是详情页里的整栏内容位,
|
|
37895
37729
|
md 档的 40 就是给这种块内空态定的;单独调一个 32 只会让全库多一个「差不多
|
|
37896
37730
|
但不一样」的体量。空态仍跟随正文左对齐,不做居中处理。 */
|
|
37897
|
-
/* @__PURE__ */
|
|
37731
|
+
/* @__PURE__ */ jsx205(EmptyState, { className: "items-start py-4 text-left", message: emptyText })
|
|
37898
37732
|
) })
|
|
37899
37733
|
]
|
|
37900
37734
|
}
|
|
@@ -37903,7 +37737,7 @@ function SkillDetailPanelView({
|
|
|
37903
37737
|
|
|
37904
37738
|
// src/components/domain/skills/SkillDetailView/index.tsx
|
|
37905
37739
|
import { useState as useState85 } from "react";
|
|
37906
|
-
import { Fragment as Fragment71, jsx as
|
|
37740
|
+
import { Fragment as Fragment71, jsx as jsx206, jsxs as jsxs173 } from "react/jsx-runtime";
|
|
37907
37741
|
function SkillDetailView(props) {
|
|
37908
37742
|
const { t } = useUiLocale();
|
|
37909
37743
|
const [confirmUninstall, setConfirmUninstall] = useState85(false);
|
|
@@ -37912,14 +37746,14 @@ function SkillDetailView(props) {
|
|
|
37912
37746
|
outdated: props.outdated,
|
|
37913
37747
|
installing: props.installing
|
|
37914
37748
|
});
|
|
37915
|
-
const actions = /* @__PURE__ */
|
|
37749
|
+
const actions = /* @__PURE__ */ jsx206(
|
|
37916
37750
|
DesktopAgentDetailActions,
|
|
37917
37751
|
{
|
|
37918
37752
|
installed: props.installed,
|
|
37919
37753
|
outdated: props.outdated,
|
|
37920
37754
|
installing: props.installing,
|
|
37921
37755
|
primaryLabel: props.actionLabel ?? t("interface.useSkillaabba"),
|
|
37922
|
-
primaryIcon: props.actionIcon ?? /* @__PURE__ */
|
|
37756
|
+
primaryIcon: props.actionIcon ?? /* @__PURE__ */ jsx206(Sparkles, {}),
|
|
37923
37757
|
primaryVisible: Boolean(props.onUse),
|
|
37924
37758
|
primaryDisabled: props.actionDisabled,
|
|
37925
37759
|
onInstall: props.onInstall,
|
|
@@ -37927,12 +37761,12 @@ function SkillDetailView(props) {
|
|
|
37927
37761
|
onPrimaryAction: () => props.onUse?.(),
|
|
37928
37762
|
menuItems: [
|
|
37929
37763
|
...props.menuItems ?? [],
|
|
37930
|
-
...props.onOpenDir ? [{ key: "openDir", label: t("interface.openFolder031c1"), icon: /* @__PURE__ */
|
|
37764
|
+
...props.onOpenDir ? [{ key: "openDir", label: t("interface.openFolder031c1"), icon: /* @__PURE__ */ jsx206(Folder, {}) }] : [],
|
|
37931
37765
|
...props.onUninstall ? [
|
|
37932
37766
|
{
|
|
37933
37767
|
key: "uninstall",
|
|
37934
37768
|
label: t("common.uninstall"),
|
|
37935
|
-
icon: /* @__PURE__ */
|
|
37769
|
+
icon: /* @__PURE__ */ jsx206(Trash, {}),
|
|
37936
37770
|
danger: true,
|
|
37937
37771
|
disabled: props.installing
|
|
37938
37772
|
}
|
|
@@ -37946,7 +37780,7 @@ function SkillDetailView(props) {
|
|
|
37946
37780
|
}
|
|
37947
37781
|
);
|
|
37948
37782
|
return /* @__PURE__ */ jsxs173(Fragment71, { children: [
|
|
37949
|
-
/* @__PURE__ */
|
|
37783
|
+
/* @__PURE__ */ jsx206(
|
|
37950
37784
|
SkillDetailPanelView,
|
|
37951
37785
|
{
|
|
37952
37786
|
avatar: props.avatar,
|
|
@@ -37954,7 +37788,7 @@ function SkillDetailView(props) {
|
|
|
37954
37788
|
author: props.author,
|
|
37955
37789
|
version: props.version,
|
|
37956
37790
|
updatedAt: props.updatedAt,
|
|
37957
|
-
status: installStatus && /* @__PURE__ */
|
|
37791
|
+
status: installStatus && /* @__PURE__ */ jsx206(StatusTag, { status: installStatus }),
|
|
37958
37792
|
badge: props.badge,
|
|
37959
37793
|
brief: props.brief,
|
|
37960
37794
|
authorization: props.authorization,
|
|
@@ -37970,7 +37804,7 @@ function SkillDetailView(props) {
|
|
|
37970
37804
|
actions
|
|
37971
37805
|
}
|
|
37972
37806
|
),
|
|
37973
|
-
confirmUninstall && props.onUninstall && /* @__PURE__ */
|
|
37807
|
+
confirmUninstall && props.onUninstall && /* @__PURE__ */ jsx206(
|
|
37974
37808
|
UninstallConfirmDialog,
|
|
37975
37809
|
{
|
|
37976
37810
|
title: t("interface.uninstallSkill053a6"),
|
|
@@ -37986,34 +37820,34 @@ function SkillDetailView(props) {
|
|
|
37986
37820
|
}
|
|
37987
37821
|
|
|
37988
37822
|
// src/components/domain/skills/SkillImportDialogView/index.tsx
|
|
37989
|
-
import { Fragment as Fragment72, jsx as
|
|
37823
|
+
import { Fragment as Fragment72, jsx as jsx207, jsxs as jsxs174 } from "react/jsx-runtime";
|
|
37990
37824
|
function Reading({ value }) {
|
|
37991
|
-
return /* @__PURE__ */
|
|
37825
|
+
return /* @__PURE__ */ jsx207("span", { className: "font-[family-name:var(--ow-font-mono)] tabular-nums text-[color:var(--ow-text-2)]", children: value });
|
|
37992
37826
|
}
|
|
37993
37827
|
function SkillImportDialogView(props) {
|
|
37994
37828
|
const { t } = useUiLocale();
|
|
37995
|
-
return /* @__PURE__ */
|
|
37829
|
+
return /* @__PURE__ */ jsx207(
|
|
37996
37830
|
Dialog,
|
|
37997
37831
|
{
|
|
37998
37832
|
open: true,
|
|
37999
37833
|
width: 520,
|
|
38000
|
-
icon: /* @__PURE__ */
|
|
37834
|
+
icon: /* @__PURE__ */ jsx207(Sparkles, {}),
|
|
38001
37835
|
iconTone: "info",
|
|
38002
37836
|
title: t("interface.importSkillsb58e5"),
|
|
38003
37837
|
subtitle: t("interface.importZipTarGzOrTgz9bc0e"),
|
|
38004
37838
|
onClose: props.onClose,
|
|
38005
37839
|
actions: null,
|
|
38006
|
-
children: /* @__PURE__ */
|
|
37840
|
+
children: /* @__PURE__ */ jsx207(
|
|
38007
37841
|
EmptyState,
|
|
38008
37842
|
{
|
|
38009
37843
|
markSize: 36,
|
|
38010
37844
|
message: t("interface.eachSkillRootMustContainSkill21cb0"),
|
|
38011
37845
|
action: /* @__PURE__ */ jsxs174("div", { className: "flex items-center gap-3", children: [
|
|
38012
|
-
/* @__PURE__ */ jsxs174(Button, { variant: "secondary", icon: /* @__PURE__ */
|
|
37846
|
+
/* @__PURE__ */ jsxs174(Button, { variant: "secondary", icon: /* @__PURE__ */ jsx207(Paperclip, {}), onClick: props.onInstallArchive, children: [
|
|
38013
37847
|
t("interface.chooseArchiveb19d9"),
|
|
38014
37848
|
" "
|
|
38015
37849
|
] }),
|
|
38016
|
-
/* @__PURE__ */ jsxs174(Button, { variant: "secondary", icon: /* @__PURE__ */
|
|
37850
|
+
/* @__PURE__ */ jsxs174(Button, { variant: "secondary", icon: /* @__PURE__ */ jsx207(Folder, {}), onClick: props.onInstallDirectory, children: [
|
|
38017
37851
|
t("interface.chooseFoldered358"),
|
|
38018
37852
|
" "
|
|
38019
37853
|
] })
|
|
@@ -38025,32 +37859,32 @@ function SkillImportDialogView(props) {
|
|
|
38025
37859
|
}
|
|
38026
37860
|
function SkillImportResultDialogView(props) {
|
|
38027
37861
|
const { t } = useUiLocale();
|
|
38028
|
-
return /* @__PURE__ */
|
|
37862
|
+
return /* @__PURE__ */ jsx207(
|
|
38029
37863
|
Dialog,
|
|
38030
37864
|
{
|
|
38031
37865
|
open: true,
|
|
38032
37866
|
width: 520,
|
|
38033
|
-
icon: /* @__PURE__ */
|
|
37867
|
+
icon: /* @__PURE__ */ jsx207(Sparkles, {}),
|
|
38034
37868
|
iconTone: "info",
|
|
38035
37869
|
title: t("interface.importResults74740"),
|
|
38036
37870
|
subtitle: /* @__PURE__ */ jsxs174(Fragment72, { children: [
|
|
38037
37871
|
t("common.success"),
|
|
38038
37872
|
" ",
|
|
38039
|
-
/* @__PURE__ */
|
|
37873
|
+
/* @__PURE__ */ jsx207(Reading, { value: props.summary.success }),
|
|
38040
37874
|
" ",
|
|
38041
37875
|
t("interface.itemsFailed1d550"),
|
|
38042
|
-
/* @__PURE__ */
|
|
37876
|
+
/* @__PURE__ */ jsx207(Reading, { value: props.summary.failed }),
|
|
38043
37877
|
" ",
|
|
38044
37878
|
t("interface.itemsSkippedebee7"),
|
|
38045
37879
|
" ",
|
|
38046
|
-
/* @__PURE__ */
|
|
37880
|
+
/* @__PURE__ */ jsx207(Reading, { value: props.summary.skipped }),
|
|
38047
37881
|
" ",
|
|
38048
37882
|
t("interface.itemsf7b2a"),
|
|
38049
37883
|
" "
|
|
38050
37884
|
] }),
|
|
38051
37885
|
onClose: props.onClose,
|
|
38052
|
-
actions: /* @__PURE__ */
|
|
38053
|
-
children: /* @__PURE__ */
|
|
37886
|
+
actions: /* @__PURE__ */ jsx207(Button, { variant: "primary", onClick: props.onClose, children: t("common.done") }),
|
|
37887
|
+
children: /* @__PURE__ */ jsx207(
|
|
38054
37888
|
"div",
|
|
38055
37889
|
{
|
|
38056
37890
|
"data-ow-part": "result-list",
|
|
@@ -38062,7 +37896,7 @@ function SkillImportResultDialogView(props) {
|
|
|
38062
37896
|
"data-ow-state": item.status,
|
|
38063
37897
|
className: "flex flex-col gap-1 p-3 bg-ow-surface-2 [border-radius:var(--ow-radius-control)]",
|
|
38064
37898
|
children: [
|
|
38065
|
-
/* @__PURE__ */
|
|
37899
|
+
/* @__PURE__ */ jsx207(
|
|
38066
37900
|
"span",
|
|
38067
37901
|
{
|
|
38068
37902
|
"data-ow-part": "status",
|
|
@@ -38075,7 +37909,7 @@ function SkillImportResultDialogView(props) {
|
|
|
38075
37909
|
children: skillImportStatusLabel(item.status)
|
|
38076
37910
|
}
|
|
38077
37911
|
),
|
|
38078
|
-
/* @__PURE__ */
|
|
37912
|
+
/* @__PURE__ */ jsx207(
|
|
38079
37913
|
"span",
|
|
38080
37914
|
{
|
|
38081
37915
|
"data-ow-part": "name",
|
|
@@ -38083,7 +37917,7 @@ function SkillImportResultDialogView(props) {
|
|
|
38083
37917
|
children: item.name ?? item.sourceName
|
|
38084
37918
|
}
|
|
38085
37919
|
),
|
|
38086
|
-
item.reason && /* @__PURE__ */
|
|
37920
|
+
item.reason && /* @__PURE__ */ jsx207(
|
|
38087
37921
|
"span",
|
|
38088
37922
|
{
|
|
38089
37923
|
"data-ow-part": "reason",
|
|
@@ -38108,7 +37942,7 @@ function skillImportStatusLabel(status) {
|
|
|
38108
37942
|
|
|
38109
37943
|
// src/components/domain/tasks/ScheduledTaskCardView/index.tsx
|
|
38110
37944
|
import { useState as useState86 } from "react";
|
|
38111
|
-
import { Fragment as Fragment73, jsx as
|
|
37945
|
+
import { Fragment as Fragment73, jsx as jsx208, jsxs as jsxs175 } from "react/jsx-runtime";
|
|
38112
37946
|
var STATUS_FALLBACK_LABEL = {
|
|
38113
37947
|
running: "\u8FD0\u884C\u4E2D",
|
|
38114
37948
|
done: "\u4E0A\u6B21\u6210\u529F",
|
|
@@ -38167,14 +38001,14 @@ function ScheduledTaskCardView({
|
|
|
38167
38001
|
STATUS_DOT_CLASS[task.status.key]
|
|
38168
38002
|
),
|
|
38169
38003
|
children: [
|
|
38170
|
-
task.status.key === "running" && /* @__PURE__ */
|
|
38171
|
-
task.status.key === "done" && /* @__PURE__ */
|
|
38172
|
-
task.status.key === "paused" && /* @__PURE__ */
|
|
38173
|
-
task.status.key === "failed" && /* @__PURE__ */
|
|
38004
|
+
task.status.key === "running" && /* @__PURE__ */ jsx208(BeaconSpinner, { size: 16 }),
|
|
38005
|
+
task.status.key === "done" && /* @__PURE__ */ jsx208(Check, {}),
|
|
38006
|
+
task.status.key === "paused" && /* @__PURE__ */ jsx208(Pause, {}),
|
|
38007
|
+
task.status.key === "failed" && /* @__PURE__ */ jsx208(Close, {})
|
|
38174
38008
|
]
|
|
38175
38009
|
}
|
|
38176
38010
|
),
|
|
38177
|
-
/* @__PURE__ */
|
|
38011
|
+
/* @__PURE__ */ jsx208(
|
|
38178
38012
|
"span",
|
|
38179
38013
|
{
|
|
38180
38014
|
"data-ow-part": "name",
|
|
@@ -38185,7 +38019,7 @@ function ScheduledTaskCardView({
|
|
|
38185
38019
|
children: task.name || t("common.untitledTask")
|
|
38186
38020
|
}
|
|
38187
38021
|
),
|
|
38188
|
-
/* @__PURE__ */
|
|
38022
|
+
/* @__PURE__ */ jsx208(
|
|
38189
38023
|
"span",
|
|
38190
38024
|
{
|
|
38191
38025
|
"data-ow-part": "frequency",
|
|
@@ -38194,7 +38028,7 @@ function ScheduledTaskCardView({
|
|
|
38194
38028
|
}
|
|
38195
38029
|
)
|
|
38196
38030
|
] }),
|
|
38197
|
-
/* @__PURE__ */
|
|
38031
|
+
/* @__PURE__ */ jsx208(
|
|
38198
38032
|
"div",
|
|
38199
38033
|
{
|
|
38200
38034
|
"data-ow-part": "prompt",
|
|
@@ -38217,15 +38051,15 @@ function ScheduledTaskCardView({
|
|
|
38217
38051
|
"data-ow-part": "next-run",
|
|
38218
38052
|
className: "inline-flex items-center gap-1 font-[family-name:var(--ow-font-mono)] tabular-nums [&_svg]:size-4",
|
|
38219
38053
|
children: [
|
|
38220
|
-
/* @__PURE__ */
|
|
38054
|
+
/* @__PURE__ */ jsx208(Clock, {}),
|
|
38221
38055
|
" ",
|
|
38222
38056
|
task.nextLabel
|
|
38223
38057
|
]
|
|
38224
38058
|
}
|
|
38225
38059
|
),
|
|
38226
38060
|
statusLabel && /* @__PURE__ */ jsxs175(Fragment73, { children: [
|
|
38227
|
-
/* @__PURE__ */
|
|
38228
|
-
/* @__PURE__ */
|
|
38061
|
+
/* @__PURE__ */ jsx208("span", { "data-ow-part": "separator", children: "\xB7" }),
|
|
38062
|
+
/* @__PURE__ */ jsx208(
|
|
38229
38063
|
"span",
|
|
38230
38064
|
{
|
|
38231
38065
|
"data-ow-part": "status-label",
|
|
@@ -38235,8 +38069,8 @@ function ScheduledTaskCardView({
|
|
|
38235
38069
|
}
|
|
38236
38070
|
)
|
|
38237
38071
|
] }),
|
|
38238
|
-
/* @__PURE__ */
|
|
38239
|
-
/* @__PURE__ */
|
|
38072
|
+
/* @__PURE__ */ jsx208("span", { "data-ow-part": "spacer", className: "flex-1" }),
|
|
38073
|
+
/* @__PURE__ */ jsx208(ScheduledTaskCardMenu, { paused: task.paused, onEdit, onToggle, onDelete })
|
|
38240
38074
|
]
|
|
38241
38075
|
}
|
|
38242
38076
|
)
|
|
@@ -38260,27 +38094,27 @@ function ScheduledTaskCardMenu({
|
|
|
38260
38094
|
void onToggle().finally(() => setToggling(false));
|
|
38261
38095
|
}
|
|
38262
38096
|
};
|
|
38263
|
-
return /* @__PURE__ */
|
|
38097
|
+
return /* @__PURE__ */ jsx208(
|
|
38264
38098
|
"span",
|
|
38265
38099
|
{
|
|
38266
38100
|
"data-ow-part": "menu",
|
|
38267
38101
|
className: "inline-flex",
|
|
38268
38102
|
onClick: (event) => event.stopPropagation(),
|
|
38269
38103
|
onKeyDown: (event) => event.stopPropagation(),
|
|
38270
|
-
children: /* @__PURE__ */
|
|
38104
|
+
children: /* @__PURE__ */ jsx208(
|
|
38271
38105
|
RowOverflowMenu,
|
|
38272
38106
|
{
|
|
38273
38107
|
width: 180,
|
|
38274
38108
|
disabled: toggling,
|
|
38275
38109
|
ariaLabel: t("common.moreActions"),
|
|
38276
38110
|
items: [
|
|
38277
|
-
{ key: "edit", label: t("plugins.editConfig"), icon: /* @__PURE__ */
|
|
38111
|
+
{ key: "edit", label: t("plugins.editConfig"), icon: /* @__PURE__ */ jsx208(Edit, {}) },
|
|
38278
38112
|
{
|
|
38279
38113
|
key: "toggle",
|
|
38280
38114
|
label: toggling ? t("common.updating") : paused ? t("interface.resumeSchedule8280b") : t("interface.pauseSchedule49447"),
|
|
38281
|
-
icon: paused ? /* @__PURE__ */
|
|
38115
|
+
icon: paused ? /* @__PURE__ */ jsx208(Play, {}) : /* @__PURE__ */ jsx208(Pause, {})
|
|
38282
38116
|
},
|
|
38283
|
-
{ key: "delete", label: t("sidebar.deleteTask"), icon: /* @__PURE__ */
|
|
38117
|
+
{ key: "delete", label: t("sidebar.deleteTask"), icon: /* @__PURE__ */ jsx208(Trash, {}), danger: true }
|
|
38284
38118
|
],
|
|
38285
38119
|
onSelect: select
|
|
38286
38120
|
}
|
|
@@ -38290,7 +38124,7 @@ function ScheduledTaskCardMenu({
|
|
|
38290
38124
|
}
|
|
38291
38125
|
|
|
38292
38126
|
// src/components/domain/tasks/ScheduledTaskDeleteDialog/index.tsx
|
|
38293
|
-
import { Fragment as Fragment74, jsx as
|
|
38127
|
+
import { Fragment as Fragment74, jsx as jsx209, jsxs as jsxs176 } from "react/jsx-runtime";
|
|
38294
38128
|
function ScheduledTaskDeleteDialog({
|
|
38295
38129
|
taskName,
|
|
38296
38130
|
deleting = false,
|
|
@@ -38304,15 +38138,15 @@ function ScheduledTaskDeleteDialog({
|
|
|
38304
38138
|
{
|
|
38305
38139
|
open: true,
|
|
38306
38140
|
variant: "danger",
|
|
38307
|
-
icon: /* @__PURE__ */
|
|
38141
|
+
icon: /* @__PURE__ */ jsx209(Trash, {}),
|
|
38308
38142
|
title: t("interface.deleteScheduledTaskcbbfd"),
|
|
38309
38143
|
closable: false,
|
|
38310
38144
|
closeOnOverlayClick: !deleting,
|
|
38311
38145
|
closeOnEscape: !deleting,
|
|
38312
38146
|
onClose: onCancel,
|
|
38313
38147
|
actions: /* @__PURE__ */ jsxs176(Fragment74, { children: [
|
|
38314
|
-
/* @__PURE__ */
|
|
38315
|
-
/* @__PURE__ */
|
|
38148
|
+
/* @__PURE__ */ jsx209(Button, { variant: "secondary", type: "button", disabled: deleting, onClick: onCancel, children: t("common.cancel") }),
|
|
38149
|
+
/* @__PURE__ */ jsx209(Button, { variant: "danger", type: "button", loading: deleting, disabled: deleting, onClick: onConfirm, children: deleting ? t("sidebar.deleting") : t("common.delete") })
|
|
38316
38150
|
] }),
|
|
38317
38151
|
children: [
|
|
38318
38152
|
/* @__PURE__ */ jsxs176("p", { className: "m-0", children: [
|
|
@@ -38321,14 +38155,14 @@ function ScheduledTaskDeleteDialog({
|
|
|
38321
38155
|
t("interface.itsScheduleAndRunHistoryWill906a8"),
|
|
38322
38156
|
" "
|
|
38323
38157
|
] }),
|
|
38324
|
-
error && /* @__PURE__ */
|
|
38158
|
+
error && /* @__PURE__ */ jsx209("div", { "data-ow-part": "error", className: "mt-3", children: /* @__PURE__ */ jsx209(InlineMessage, { variant: "error", children: error }) })
|
|
38325
38159
|
]
|
|
38326
38160
|
}
|
|
38327
38161
|
);
|
|
38328
38162
|
}
|
|
38329
38163
|
|
|
38330
38164
|
// src/components/domain/tasks/ScheduledTaskDetailView/index.tsx
|
|
38331
|
-
import { Fragment as Fragment75, jsx as
|
|
38165
|
+
import { Fragment as Fragment75, jsx as jsx210, jsxs as jsxs177 } from "react/jsx-runtime";
|
|
38332
38166
|
var DETAIL_STATUS_CLASS = {
|
|
38333
38167
|
running: "bg-[var(--ow-info-tint)] text-[color:var(--ow-info-on-tint)]",
|
|
38334
38168
|
done: "bg-[var(--ow-success-tint)] text-[color:var(--ow-success-on-tint)]",
|
|
@@ -38371,30 +38205,30 @@ function ScheduledTaskDetailView({
|
|
|
38371
38205
|
className: "relative flex shrink-0 items-center justify-between px-7 pb-3.5 pt-[18px]",
|
|
38372
38206
|
children: [
|
|
38373
38207
|
/* @__PURE__ */ jsxs177("div", { "data-ow-part": "header-title", className: "flex items-center gap-3", children: [
|
|
38374
|
-
/* @__PURE__ */
|
|
38208
|
+
/* @__PURE__ */ jsx210(BackButton, { label: t("interface.backToScheduledTasksa35cf"), onClick: onBack }),
|
|
38375
38209
|
/* @__PURE__ */ jsxs177("div", { children: [
|
|
38376
|
-
/* @__PURE__ */
|
|
38210
|
+
/* @__PURE__ */ jsx210("div", { "data-ow-part": "title", className: "text-ow-fs-ui font-semibold leading-[1.2] text-[color:var(--ow-text)]", children: task.name }),
|
|
38377
38211
|
/* @__PURE__ */ jsxs177(
|
|
38378
38212
|
"div",
|
|
38379
38213
|
{
|
|
38380
38214
|
"data-ow-part": "subtitle",
|
|
38381
38215
|
className: "mt-2 text-ow-fs-body-sm font-normal leading-[1.3] text-[color:var(--ow-text-3)]",
|
|
38382
38216
|
children: [
|
|
38383
|
-
/* @__PURE__ */
|
|
38217
|
+
/* @__PURE__ */ jsx210("span", { className: "font-[family-name:var(--ow-font-mono)] tabular-nums", children: task.scheduleLabel }),
|
|
38384
38218
|
" \xB7 ",
|
|
38385
38219
|
task.statusLabel,
|
|
38386
38220
|
" \xB7 \u4E0B\u6B21 ",
|
|
38387
|
-
/* @__PURE__ */
|
|
38221
|
+
/* @__PURE__ */ jsx210("span", { className: "font-[family-name:var(--ow-font-mono)] tabular-nums", children: task.nextRunLabel })
|
|
38388
38222
|
]
|
|
38389
38223
|
}
|
|
38390
38224
|
)
|
|
38391
38225
|
] })
|
|
38392
38226
|
] }),
|
|
38393
38227
|
/* @__PURE__ */ jsxs177("div", { "data-ow-part": "header-actions", className: "ml-auto flex gap-2 [&_[data-slot=button]_svg]:size-4", children: [
|
|
38394
|
-
/* @__PURE__ */
|
|
38395
|
-
/* @__PURE__ */
|
|
38396
|
-
/* @__PURE__ */
|
|
38397
|
-
/* @__PURE__ */
|
|
38228
|
+
/* @__PURE__ */ jsx210(Button, { variant: "primary", icon: runningNow ? void 0 : /* @__PURE__ */ jsx210(Play, {}), onClick: onRunNow, disabled: runningNow, children: runningNow ? t("interface.running666b4") : t("interface.runNow9a428") }),
|
|
38229
|
+
/* @__PURE__ */ jsx210(Button, { variant: "secondary", icon: /* @__PURE__ */ jsx210(Edit, {}), onClick: onEdit, children: t("common.edit") }),
|
|
38230
|
+
/* @__PURE__ */ jsx210(Button, { variant: "secondary", icon: task.paused ? /* @__PURE__ */ jsx210(Play, {}) : /* @__PURE__ */ jsx210(Pause, {}), onClick: onToggle, children: task.paused ? t("interface.enabled4e9c") : t("interface.pause13044") }),
|
|
38231
|
+
/* @__PURE__ */ jsx210(Button, { variant: "danger", icon: /* @__PURE__ */ jsx210(Trash, {}), onClick: onDelete, children: t("common.delete") })
|
|
38398
38232
|
] })
|
|
38399
38233
|
]
|
|
38400
38234
|
}
|
|
@@ -38407,10 +38241,10 @@ function ScheduledTaskDetailView({
|
|
|
38407
38241
|
className: "rounded-[var(--ow-radius-card)] border border-[color:var(--ow-border)] bg-[var(--ow-bg)] p-[14px]",
|
|
38408
38242
|
children: [
|
|
38409
38243
|
/* @__PURE__ */ jsxs177("div", { "data-ow-part": "summary-grid", className: "grid grid-cols-2 gap-x-6 gap-y-4", children: [
|
|
38410
|
-
/* @__PURE__ */
|
|
38411
|
-
/* @__PURE__ */
|
|
38244
|
+
/* @__PURE__ */ jsx210(DetailField, { label: t("interface.repeatFrequency335a3"), value: task.scheduleLabel, mono: true }),
|
|
38245
|
+
/* @__PURE__ */ jsx210(DetailField, { label: t("interface.nextRun37307"), value: task.nextRunLabel, mono: true }),
|
|
38412
38246
|
/* @__PURE__ */ jsxs177("div", { "data-slot": "scheduled-task-detail-field", children: [
|
|
38413
|
-
/* @__PURE__ */
|
|
38247
|
+
/* @__PURE__ */ jsx210(
|
|
38414
38248
|
"div",
|
|
38415
38249
|
{
|
|
38416
38250
|
"data-ow-part": "label",
|
|
@@ -38418,7 +38252,7 @@ function ScheduledTaskDetailView({
|
|
|
38418
38252
|
children: t("common.status")
|
|
38419
38253
|
}
|
|
38420
38254
|
),
|
|
38421
|
-
/* @__PURE__ */
|
|
38255
|
+
/* @__PURE__ */ jsx210("div", { "data-ow-part": "value", className: "text-ow-fs-ui font-medium leading-[1.4] text-[color:var(--ow-text)]", children: /* @__PURE__ */ jsxs177(
|
|
38422
38256
|
"span",
|
|
38423
38257
|
{
|
|
38424
38258
|
"data-ow-part": "status",
|
|
@@ -38428,15 +38262,15 @@ function ScheduledTaskDetailView({
|
|
|
38428
38262
|
DETAIL_STATUS_CLASS[task.statusKey]
|
|
38429
38263
|
),
|
|
38430
38264
|
children: [
|
|
38431
|
-
task.statusKey === "running" && /* @__PURE__ */
|
|
38265
|
+
task.statusKey === "running" && /* @__PURE__ */ jsx210(BeaconSpinner, { size: 12 }),
|
|
38432
38266
|
task.statusLabel
|
|
38433
38267
|
]
|
|
38434
38268
|
}
|
|
38435
38269
|
) })
|
|
38436
38270
|
] }),
|
|
38437
|
-
/* @__PURE__ */
|
|
38438
|
-
/* @__PURE__ */
|
|
38439
|
-
task.notifyTargetLabel && /* @__PURE__ */
|
|
38271
|
+
/* @__PURE__ */ jsx210(DetailField, { label: t("interface.modelf86c1"), value: task.modelName }),
|
|
38272
|
+
/* @__PURE__ */ jsx210(DetailField, { label: t("interface.project82b62"), value: task.projectName }),
|
|
38273
|
+
task.notifyTargetLabel && /* @__PURE__ */ jsx210(DetailField, { label: t("interface.notifyOnCompletion8fde2"), value: task.notifyTargetLabel })
|
|
38440
38274
|
] }),
|
|
38441
38275
|
task.promptPreview && /* @__PURE__ */ jsxs177("div", { "data-slot": "scheduled-task-prompt", className: "mt-4 border-t border-[color:var(--ow-border)] pt-4", children: [
|
|
38442
38276
|
/* @__PURE__ */ jsxs177(
|
|
@@ -38450,7 +38284,7 @@ function ScheduledTaskDetailView({
|
|
|
38450
38284
|
]
|
|
38451
38285
|
}
|
|
38452
38286
|
),
|
|
38453
|
-
/* @__PURE__ */
|
|
38287
|
+
/* @__PURE__ */ jsx210(
|
|
38454
38288
|
"div",
|
|
38455
38289
|
{
|
|
38456
38290
|
"data-ow-part": "content",
|
|
@@ -38490,7 +38324,7 @@ function ScheduledTaskDetailView({
|
|
|
38490
38324
|
+ surface 底 + 居中一句,无母题无钮;原型 template.dc.html L1841)——它替的是
|
|
38491
38325
|
一张列表卡的位置,所以要占住那块面,而不是在空气里摆一枚母题。
|
|
38492
38326
|
文案同步换成原型那句:说清「恢复之后会怎样」,不是「尚未运行」这种状态读数。 */
|
|
38493
|
-
/* @__PURE__ */
|
|
38327
|
+
/* @__PURE__ */ jsx210(EmptyState, { variant: "card", message: t("interface.noRunsYetResumeTheSchedule55236") })
|
|
38494
38328
|
) : /* @__PURE__ */ jsxs177(
|
|
38495
38329
|
"div",
|
|
38496
38330
|
{
|
|
@@ -38510,7 +38344,7 @@ function ScheduledTaskDetailView({
|
|
|
38510
38344
|
"#",
|
|
38511
38345
|
run.turnLabel
|
|
38512
38346
|
] }),
|
|
38513
|
-
/* @__PURE__ */
|
|
38347
|
+
/* @__PURE__ */ jsx210(
|
|
38514
38348
|
"span",
|
|
38515
38349
|
{
|
|
38516
38350
|
"data-ow-part": "run-status-icon",
|
|
@@ -38519,7 +38353,7 @@ function ScheduledTaskDetailView({
|
|
|
38519
38353
|
"inline-flex size-5 items-center justify-center rounded-[var(--ow-radius-pill)] [&_svg]:size-3",
|
|
38520
38354
|
RUN_STATUS_DOT_CLASS[run.statusKey]
|
|
38521
38355
|
),
|
|
38522
|
-
children: run.statusKey === "running" ? /* @__PURE__ */
|
|
38356
|
+
children: run.statusKey === "running" ? /* @__PURE__ */ jsx210(BeaconSpinner, { size: 13 }) : run.statusKey === "done" ? /* @__PURE__ */ jsx210(Check, {}) : run.statusKey === "failed" ? /* @__PURE__ */ jsx210(Close, {}) : null
|
|
38523
38357
|
}
|
|
38524
38358
|
)
|
|
38525
38359
|
] }),
|
|
@@ -38531,7 +38365,7 @@ function ScheduledTaskDetailView({
|
|
|
38531
38365
|
className: "flex items-center gap-2 font-[family-name:var(--ow-font-mono)] text-ow-fs-body-sm font-medium leading-[1.3] text-[color:var(--ow-text)] tabular-nums",
|
|
38532
38366
|
children: [
|
|
38533
38367
|
run.when,
|
|
38534
|
-
/* @__PURE__ */
|
|
38368
|
+
/* @__PURE__ */ jsx210(
|
|
38535
38369
|
"span",
|
|
38536
38370
|
{
|
|
38537
38371
|
"data-ow-part": "run-status-label",
|
|
@@ -38546,7 +38380,7 @@ function ScheduledTaskDetailView({
|
|
|
38546
38380
|
]
|
|
38547
38381
|
}
|
|
38548
38382
|
),
|
|
38549
|
-
/* @__PURE__ */
|
|
38383
|
+
/* @__PURE__ */ jsx210(
|
|
38550
38384
|
"div",
|
|
38551
38385
|
{
|
|
38552
38386
|
"data-ow-part": "run-summary",
|
|
@@ -38555,12 +38389,12 @@ function ScheduledTaskDetailView({
|
|
|
38555
38389
|
}
|
|
38556
38390
|
)
|
|
38557
38391
|
] }),
|
|
38558
|
-
/* @__PURE__ */
|
|
38392
|
+
/* @__PURE__ */ jsx210(
|
|
38559
38393
|
"div",
|
|
38560
38394
|
{
|
|
38561
38395
|
"data-ow-part": "run-trailing",
|
|
38562
38396
|
className: "inline-flex shrink-0 items-center gap-2 text-[color:var(--ow-text-3)]",
|
|
38563
|
-
children: /* @__PURE__ */
|
|
38397
|
+
children: /* @__PURE__ */ jsx210(ChevRight, { className: "size-[15px]" })
|
|
38564
38398
|
}
|
|
38565
38399
|
)
|
|
38566
38400
|
]
|
|
@@ -38588,12 +38422,12 @@ function ScheduledTaskDetailView({
|
|
|
38588
38422
|
hasMoreRuns && /* §6/§10:原来是 variant="unstyled" + 手接旧共享 btn 段——绕开 Button 变体
|
|
38589
38423
|
就等于绕开 hover/press/focus-visible/disabled 全套状态。改 ghost 正规变体
|
|
38590
38424
|
(中性文字钮,28 高在 §7 控件高表内,状态全集由原语自带)。 */
|
|
38591
|
-
/* @__PURE__ */
|
|
38592
|
-
/* @__PURE__ */
|
|
38425
|
+
/* @__PURE__ */ jsx210(Button, { variant: "ghost", size: "sm", disabled: loadingMoreRuns, onClick: onLoadMoreRuns, children: loadingMoreRuns ? /* @__PURE__ */ jsxs177(Fragment75, { children: [
|
|
38426
|
+
/* @__PURE__ */ jsx210(BeaconSpinner, { size: 13 }),
|
|
38593
38427
|
" ",
|
|
38594
38428
|
t("common.loading")
|
|
38595
38429
|
] }) : /* @__PURE__ */ jsxs177(Fragment75, { children: [
|
|
38596
|
-
/* @__PURE__ */
|
|
38430
|
+
/* @__PURE__ */ jsx210(ChevDown, {}),
|
|
38597
38431
|
" ",
|
|
38598
38432
|
t("common.loadMore")
|
|
38599
38433
|
] }) })
|
|
@@ -38613,7 +38447,7 @@ function DetailField({
|
|
|
38613
38447
|
mono = false
|
|
38614
38448
|
}) {
|
|
38615
38449
|
return /* @__PURE__ */ jsxs177("div", { "data-slot": "scheduled-task-detail-field", children: [
|
|
38616
|
-
/* @__PURE__ */
|
|
38450
|
+
/* @__PURE__ */ jsx210(
|
|
38617
38451
|
"div",
|
|
38618
38452
|
{
|
|
38619
38453
|
"data-ow-part": "label",
|
|
@@ -38621,7 +38455,7 @@ function DetailField({
|
|
|
38621
38455
|
children: label
|
|
38622
38456
|
}
|
|
38623
38457
|
),
|
|
38624
|
-
/* @__PURE__ */
|
|
38458
|
+
/* @__PURE__ */ jsx210(
|
|
38625
38459
|
"div",
|
|
38626
38460
|
{
|
|
38627
38461
|
"data-ow-part": "value",
|
|
@@ -38636,7 +38470,7 @@ function DetailField({
|
|
|
38636
38470
|
}
|
|
38637
38471
|
|
|
38638
38472
|
// src/components/domain/tasks/ScheduledTasksSpaceView/index.tsx
|
|
38639
|
-
import { jsx as
|
|
38473
|
+
import { jsx as jsx211, jsxs as jsxs178 } from "react/jsx-runtime";
|
|
38640
38474
|
function ScheduledTasksSpaceView({
|
|
38641
38475
|
totalCount,
|
|
38642
38476
|
loading,
|
|
@@ -38649,23 +38483,23 @@ function ScheduledTasksSpaceView({
|
|
|
38649
38483
|
}) {
|
|
38650
38484
|
const { t } = useUiLocale();
|
|
38651
38485
|
return /* @__PURE__ */ jsxs178("div", { "data-slot": "scheduled-tasks-space", className: "relative flex h-full min-h-0 flex-col", children: [
|
|
38652
|
-
/* @__PURE__ */
|
|
38486
|
+
/* @__PURE__ */ jsx211(
|
|
38653
38487
|
PageHead,
|
|
38654
38488
|
{
|
|
38655
38489
|
eyebrow: t("interface.automation90e4e"),
|
|
38656
38490
|
title: t("common.scheduledTasks"),
|
|
38657
38491
|
description: t("interface.tasksThatRunOnASchedule2b9c2"),
|
|
38658
38492
|
meta: `${totalCount} \u4E2A\u4EFB\u52A1`,
|
|
38659
|
-
actions: /* @__PURE__ */
|
|
38493
|
+
actions: /* @__PURE__ */ jsx211(Button, { variant: "primary", icon: /* @__PURE__ */ jsx211(Plus, {}), onClick: onCreate, children: t("common.newTask") })
|
|
38660
38494
|
}
|
|
38661
38495
|
),
|
|
38662
38496
|
/* @__PURE__ */ jsxs178("div", { "data-ow-part": "scroll", className: "ow-scrollbar min-h-0 flex-1 overflow-y-auto px-7 pb-7 pt-5", children: [
|
|
38663
|
-
error && hasTasks && /* @__PURE__ */
|
|
38497
|
+
error && hasTasks && /* @__PURE__ */ jsx211("div", { "data-ow-part": "error", children: /* @__PURE__ */ jsxs178(
|
|
38664
38498
|
InlineMessage,
|
|
38665
38499
|
{
|
|
38666
38500
|
variant: "error",
|
|
38667
38501
|
detail: error,
|
|
38668
|
-
action: /* @__PURE__ */
|
|
38502
|
+
action: /* @__PURE__ */ jsx211(Button, { variant: "secondary", size: "sm", onClick: onRetry, children: t("common.retry") }),
|
|
38669
38503
|
children: [
|
|
38670
38504
|
t("interface.couldNotRefreshScheduledTasks17ce8"),
|
|
38671
38505
|
" "
|
|
@@ -38683,17 +38517,17 @@ function ScheduledTasksSpaceView({
|
|
|
38683
38517
|
"aria-live": "polite",
|
|
38684
38518
|
className: "flex items-center justify-center gap-2 py-24 text-ow-fs-ui font-normal leading-[1.5] text-[color:var(--ow-text-2)]",
|
|
38685
38519
|
children: [
|
|
38686
|
-
/* @__PURE__ */
|
|
38687
|
-
/* @__PURE__ */
|
|
38520
|
+
/* @__PURE__ */ jsx211(BeaconSpinner, { size: 16 }),
|
|
38521
|
+
/* @__PURE__ */ jsx211("span", { children: t("interface.loadingScheduledTaskseb09f") })
|
|
38688
38522
|
]
|
|
38689
38523
|
}
|
|
38690
38524
|
)
|
|
38691
|
-
) : error && !hasTasks ? /* @__PURE__ */
|
|
38525
|
+
) : error && !hasTasks ? /* @__PURE__ */ jsx211("div", { "data-ow-part": "error", className: "mx-auto my-6 max-w-[560px]", children: /* @__PURE__ */ jsxs178(
|
|
38692
38526
|
InlineMessage,
|
|
38693
38527
|
{
|
|
38694
38528
|
variant: "error",
|
|
38695
38529
|
detail: error,
|
|
38696
|
-
action: /* @__PURE__ */
|
|
38530
|
+
action: /* @__PURE__ */ jsx211(Button, { variant: "secondary", onClick: onRetry, children: t("common.retry") }),
|
|
38697
38531
|
children: [
|
|
38698
38532
|
t("interface.couldNotLoadScheduledTasks12c21"),
|
|
38699
38533
|
" "
|
|
@@ -38705,7 +38539,7 @@ function ScheduledTasksSpaceView({
|
|
|
38705
38539
|
(原型 template.dc.html L1771–1780)。此前是 md 档单句,三件信息塌成一行。
|
|
38706
38540
|
§4:空态第二入口与页头「新建任务」是同一动作同一形制——primary 实底主钮,
|
|
38707
38541
|
与页头钮成对出现;CTA 不带图标,图标只留给页头钮(原型空态钮即无图标)。 */
|
|
38708
|
-
/* @__PURE__ */
|
|
38542
|
+
/* @__PURE__ */ jsx211(
|
|
38709
38543
|
EmptyState,
|
|
38710
38544
|
{
|
|
38711
38545
|
size: "page",
|
|
@@ -38716,7 +38550,7 @@ function ScheduledTasksSpaceView({
|
|
|
38716
38550
|
onAction: onCreate
|
|
38717
38551
|
}
|
|
38718
38552
|
)
|
|
38719
|
-
) : /* @__PURE__ */
|
|
38553
|
+
) : /* @__PURE__ */ jsx211(
|
|
38720
38554
|
"div",
|
|
38721
38555
|
{
|
|
38722
38556
|
"data-ow-part": "grid",
|
|
@@ -38762,6 +38596,7 @@ export {
|
|
|
38762
38596
|
Brain,
|
|
38763
38597
|
Branch,
|
|
38764
38598
|
BranchDivider,
|
|
38599
|
+
BrandPreviewScope,
|
|
38765
38600
|
BrowserAnnotationPopupView,
|
|
38766
38601
|
BrowserDeviceToolbarView,
|
|
38767
38602
|
BrowserFindBarView,
|