@openspecui/web 4.0.2 → 5.0.0
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/assets/CanvasRenderer-Dx4xVdfy.js +1 -0
- package/dist/assets/WebGLRenderer-CwZIBrob.js +1 -0
- package/dist/assets/WebGPURenderer-qz6qqQJ0.js +1 -0
- package/dist/assets/browserAll-B9F2S6Aa.js +1 -0
- package/dist/assets/{dist-CPFLO-yi.js → dist-B8JV-KcU.js} +1 -1
- package/dist/assets/{dist-DRiSrLHT.js → dist-BO0i-vgR.js} +1 -1
- package/dist/assets/{dist-C0OY-Erd.js → dist-BVgv9ipK.js} +1 -1
- package/dist/assets/{dist-2mhTOMs1.js → dist-C1XhTdJW.js} +1 -1
- package/dist/assets/{dist-NfrRIiOr.js → dist-C6rBLLnx.js} +1 -1
- package/dist/assets/{dist-CixnKWn9.js → dist-CDmilqpo.js} +1 -1
- package/dist/assets/dist-CLCeJrnV.js +1 -0
- package/dist/assets/dist-CqgSLpac.js +1 -0
- package/dist/assets/{dist-CgWPcytT.js → dist-Cr9Muhbd.js} +1 -1
- package/dist/assets/{dist-BFxk34vc.js → dist-DC4t0xCN.js} +1 -1
- package/dist/assets/dist-DX86MtvQ.js +1 -0
- package/dist/assets/{dist-CIK5btNW.js → dist-xHYbWHkl.js} +1 -1
- package/dist/assets/{init-LF9R19PZ.js → init-b6bkJcYr.js} +1 -1
- package/dist/assets/main-CMPxyg9r.css +1 -0
- package/dist/assets/main-CZiJZKxr.js +1670 -0
- package/dist/assets/trpc-D8YzegLg.js +1 -0
- package/dist/assets/webworkerAll-DOgohAUJ.js +1 -0
- package/dist/index.html +2 -2
- package/dist-ssg/client/.vite/ssr-manifest.json +55 -25
- package/dist-ssg/client/assets/CanvasRenderer-Doj4tjGf.js +1 -0
- package/dist-ssg/client/assets/WebGLRenderer-ByGZn78G.js +1 -0
- package/dist-ssg/client/assets/WebGPURenderer-Cs9L3lrG.js +1 -0
- package/dist-ssg/client/assets/browserAll-DRqZPced.js +1 -0
- package/dist-ssg/client/assets/{dist-CXv36Obr.js → dist-4zwKcl_z.js} +1 -1
- package/dist-ssg/client/assets/dist-BAF4iEe9.js +1 -0
- package/dist-ssg/client/assets/{dist-YDX6FzSq.js → dist-Bbz4L9At.js} +1 -1
- package/dist-ssg/client/assets/{dist-jE3tcFdw.js → dist-C7GrFhNR.js} +1 -1
- package/dist-ssg/client/assets/{dist-CJnh--bu.js → dist-C9N9aj3N.js} +1 -1
- package/dist-ssg/client/assets/{dist-K3e0mmyn.js → dist-C9RhSDVj.js} +1 -1
- package/dist-ssg/client/assets/{dist-B6mIe0-0.js → dist-CNwo1r4w.js} +1 -1
- package/dist-ssg/client/assets/{dist-Crlgo9mu.js → dist-DSsSrJmr.js} +1 -1
- package/dist-ssg/client/assets/{dist-BULL9JeE.js → dist-DdaCSeCf.js} +1 -1
- package/dist-ssg/client/assets/{dist-kqeTKJHx.js → dist-Dg8gueKk.js} +1 -1
- package/dist-ssg/client/assets/dist-NF8ereYK.js +1 -0
- package/dist-ssg/client/assets/dist-VCf-jvYs.js +1 -0
- package/dist-ssg/client/assets/{ghostty-web-Hzfuk2rA.js → ghostty-web-BwwWyxga.js} +1 -1
- package/dist-ssg/client/assets/index-Dhcf-jP8.css +1 -0
- package/dist-ssg/client/assets/index.ssg-Bo5oM1-D.js +1640 -0
- package/dist-ssg/client/assets/{init-KoSSb0zr.js → init-C8MYeq6S.js} +1 -1
- package/dist-ssg/client/assets/trpc-D2x4KW8G.js +1 -0
- package/dist-ssg/client/assets/webworkerAll-T9CEt8gw.js +1 -0
- package/dist-ssg/client/index.ssg.html +2 -2
- package/dist-ssg/server/entry-server.js +177 -69
- package/package.json +3 -3
- package/dist/assets/CanvasRenderer-Cqsg_Hhx.js +0 -1
- package/dist/assets/WebGLRenderer-AVKFvevh.js +0 -1
- package/dist/assets/WebGPURenderer-BYYbOh6g.js +0 -1
- package/dist/assets/browserAll-4CbZpEBZ.js +0 -1
- package/dist/assets/dist-CmTu1GVZ.js +0 -1
- package/dist/assets/dist-D5RvpUPq.js +0 -1
- package/dist/assets/dist-nKRYccD4.js +0 -1
- package/dist/assets/main-7r4nPUqE.css +0 -1
- package/dist/assets/main-pbJDyuSP.js +0 -1670
- package/dist/assets/trpc-Dl4z81gg.js +0 -1
- package/dist/assets/webworkerAll-DkNLztCR.js +0 -1
- package/dist-ssg/client/assets/CanvasRenderer-C4qkVeqQ.js +0 -1
- package/dist-ssg/client/assets/WebGLRenderer-BFFqBsKf.js +0 -1
- package/dist-ssg/client/assets/WebGPURenderer-DEoZLzdx.js +0 -1
- package/dist-ssg/client/assets/browserAll-1kJcZbQa.js +0 -1
- package/dist-ssg/client/assets/dist-CvY7DIWJ.js +0 -1
- package/dist-ssg/client/assets/dist-DZC3PfdU.js +0 -1
- package/dist-ssg/client/assets/dist-Iwe5X3ea.js +0 -1
- package/dist-ssg/client/assets/index-BvSCuFWG.css +0 -1
- package/dist-ssg/client/assets/index.ssg-C1OyaFSd.js +0 -1640
- package/dist-ssg/client/assets/trpc-BplJlFRT.js +0 -1
- package/dist-ssg/client/assets/webworkerAll-D6lGUBpH.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{it as e}from"./Geometry-DYOOLchf.js";import{E as t,T as n}from"./index.ssg-
|
|
1
|
+
import{it as e}from"./Geometry-DYOOLchf.js";import{E as t,T as n}from"./index.ssg-Bo5oM1-D.js";e.add(n),e.add(t);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{F as e}from"./index.ssg-Bo5oM1-D.js";export{e as trpcClient};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./Geometry-DYOOLchf.js";import"./index.ssg-Bo5oM1-D.js";import"./init-C8MYeq6S.js";
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<script>
|
|
9
9
|
window.__OPENSPEC_BASE_PATH__ = '/'
|
|
10
10
|
</script>
|
|
11
|
-
<script type="module" crossorigin src="/assets/index.ssg-
|
|
11
|
+
<script type="module" crossorigin src="/assets/index.ssg-Bo5oM1-D.js"></script>
|
|
12
12
|
<link rel="modulepreload" crossorigin href="/assets/chunk-DECur_0Z.js">
|
|
13
13
|
<link rel="modulepreload" crossorigin href="/assets/dist-UN0VvTJo.js">
|
|
14
14
|
<link rel="modulepreload" crossorigin href="/assets/dist-DK_X22KS.js">
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
<link rel="modulepreload" crossorigin href="/assets/getTextureBatchBindGroup-BZ3pD2UV.js">
|
|
19
19
|
<link rel="modulepreload" crossorigin href="/assets/BufferResource-4Jl_6qej.js">
|
|
20
20
|
<link rel="modulepreload" crossorigin href="/assets/ImageSource-_DLFcjTj.js">
|
|
21
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
21
|
+
<link rel="stylesheet" crossorigin href="/assets/index-Dhcf-jP8.css">
|
|
22
22
|
</head>
|
|
23
23
|
<body>
|
|
24
24
|
<div id="root"><!--app-html--></div>
|
|
@@ -27812,6 +27812,7 @@ var ALL_TABS = [
|
|
|
27812
27812
|
"/specs",
|
|
27813
27813
|
"/changes",
|
|
27814
27814
|
"/archive",
|
|
27815
|
+
"/stores",
|
|
27815
27816
|
"/settings",
|
|
27816
27817
|
"/terminal"
|
|
27817
27818
|
];
|
|
@@ -27821,6 +27822,7 @@ var DEFAULT_MAIN_TABS = [
|
|
|
27821
27822
|
"/specs",
|
|
27822
27823
|
"/changes",
|
|
27823
27824
|
"/archive",
|
|
27825
|
+
"/stores",
|
|
27824
27826
|
"/settings"
|
|
27825
27827
|
];
|
|
27826
27828
|
var DEFAULT_BOTTOM_TABS = isStaticMode() ? [] : ["/git", "/terminal"];
|
|
@@ -43157,6 +43159,36 @@ function useGlobalSettingsSubscription() {
|
|
|
43157
43159
|
onError: callbacks.onError
|
|
43158
43160
|
}), void 0, [], "globalSettings.subscribe");
|
|
43159
43161
|
}
|
|
43162
|
+
/**
|
|
43163
|
+
* Stores 订阅(beta)。
|
|
43164
|
+
*
|
|
43165
|
+
* 底层由 server 端轮询 registry 并推送(registry 在 projectDir 之外,watcher 不可达),
|
|
43166
|
+
* 前端只消费推送结果,不感知轮询细节。无静态加载器——stores 仅 live 模式可见。
|
|
43167
|
+
*/
|
|
43168
|
+
function useStoresSubscription() {
|
|
43169
|
+
return useSubscription((callbacks) => trpcClient.stores.subscribe.subscribe(void 0, {
|
|
43170
|
+
onData: callbacks.onData,
|
|
43171
|
+
onError: callbacks.onError
|
|
43172
|
+
}), void 0, [], "stores.subscribe");
|
|
43173
|
+
}
|
|
43174
|
+
//#endregion
|
|
43175
|
+
//#region src/lib/use-stores-visibility.ts
|
|
43176
|
+
/**
|
|
43177
|
+
* 控制 Stores 入口的可见性(beta 功能容错范式的一部分)。
|
|
43178
|
+
*
|
|
43179
|
+
* 异常二(command-unavailable):指令用法变了/指令缺失,直接隐藏入口。
|
|
43180
|
+
* 异常一(data-incompatible):数据不兼容,不隐藏入口(面板内客观显示错误 + 版本信息)。
|
|
43181
|
+
*
|
|
43182
|
+
* 数据由 server 端轮询 registry 并推送(订阅),与 StoresList 共享同一订阅缓存。
|
|
43183
|
+
*/
|
|
43184
|
+
function useStoresVisibility() {
|
|
43185
|
+
const staticMode = isStaticMode();
|
|
43186
|
+
const { data } = useStoresSubscription();
|
|
43187
|
+
if (staticMode) return { visible: false };
|
|
43188
|
+
if (data === void 0) return { visible: true };
|
|
43189
|
+
const result = data;
|
|
43190
|
+
return { visible: !(result.available === false && result.error?.kind === "command-unavailable") };
|
|
43191
|
+
}
|
|
43160
43192
|
//#endregion
|
|
43161
43193
|
//#region src/lib/use-opsx.ts
|
|
43162
43194
|
function getOpsxStatusSubscriptionCacheKey(input) {
|
|
@@ -44469,24 +44501,6 @@ var Eye = createLucideIcon("Eye", [["path", {
|
|
|
44469
44501
|
r: "3",
|
|
44470
44502
|
key: "1v7zrd"
|
|
44471
44503
|
}]]);
|
|
44472
|
-
var FileCode2 = createLucideIcon("FileCode2", [
|
|
44473
|
-
["path", {
|
|
44474
|
-
d: "M4 22h14a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v4",
|
|
44475
|
-
key: "1pf5j1"
|
|
44476
|
-
}],
|
|
44477
|
-
["path", {
|
|
44478
|
-
d: "M14 2v4a2 2 0 0 0 2 2h4",
|
|
44479
|
-
key: "tnqrlb"
|
|
44480
|
-
}],
|
|
44481
|
-
["path", {
|
|
44482
|
-
d: "m5 12-3 3 3 3",
|
|
44483
|
-
key: "oke12k"
|
|
44484
|
-
}],
|
|
44485
|
-
["path", {
|
|
44486
|
-
d: "m9 18 3-3-3-3",
|
|
44487
|
-
key: "112psh"
|
|
44488
|
-
}]
|
|
44489
|
-
]);
|
|
44490
44504
|
var FilePenLine = createLucideIcon("FilePenLine", [
|
|
44491
44505
|
["path", {
|
|
44492
44506
|
d: "m18 5-2.414-2.414A2 2 0 0 0 14.172 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2",
|
|
@@ -44796,6 +44810,32 @@ var Link2 = createLucideIcon("Link2", [
|
|
|
44796
44810
|
key: "1jonct"
|
|
44797
44811
|
}]
|
|
44798
44812
|
]);
|
|
44813
|
+
var ListTodo = createLucideIcon("ListTodo", [
|
|
44814
|
+
["rect", {
|
|
44815
|
+
x: "3",
|
|
44816
|
+
y: "5",
|
|
44817
|
+
width: "6",
|
|
44818
|
+
height: "6",
|
|
44819
|
+
rx: "1",
|
|
44820
|
+
key: "1defrl"
|
|
44821
|
+
}],
|
|
44822
|
+
["path", {
|
|
44823
|
+
d: "m3 17 2 2 4-4",
|
|
44824
|
+
key: "1jhpwq"
|
|
44825
|
+
}],
|
|
44826
|
+
["path", {
|
|
44827
|
+
d: "M13 6h8",
|
|
44828
|
+
key: "15sg57"
|
|
44829
|
+
}],
|
|
44830
|
+
["path", {
|
|
44831
|
+
d: "M13 12h8",
|
|
44832
|
+
key: "h98zly"
|
|
44833
|
+
}],
|
|
44834
|
+
["path", {
|
|
44835
|
+
d: "M13 18h8",
|
|
44836
|
+
key: "oe0vm4"
|
|
44837
|
+
}]
|
|
44838
|
+
]);
|
|
44799
44839
|
var List = createLucideIcon("List", [
|
|
44800
44840
|
["path", {
|
|
44801
44841
|
d: "M3 12h.01",
|
|
@@ -45286,6 +45326,27 @@ var Unlink2 = createLucideIcon("Unlink2", [["path", {
|
|
|
45286
45326
|
d: "M15 7h2a5 5 0 0 1 0 10h-2m-6 0H7A5 5 0 0 1 7 7h2",
|
|
45287
45327
|
key: "1re2ne"
|
|
45288
45328
|
}]]);
|
|
45329
|
+
var Warehouse = createLucideIcon("Warehouse", [
|
|
45330
|
+
["path", {
|
|
45331
|
+
d: "M22 8.35V20a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V8.35A2 2 0 0 1 3.26 6.5l8-3.2a2 2 0 0 1 1.48 0l8 3.2A2 2 0 0 1 22 8.35Z",
|
|
45332
|
+
key: "gksnxg"
|
|
45333
|
+
}],
|
|
45334
|
+
["path", {
|
|
45335
|
+
d: "M6 18h12",
|
|
45336
|
+
key: "9pbo8z"
|
|
45337
|
+
}],
|
|
45338
|
+
["path", {
|
|
45339
|
+
d: "M6 14h12",
|
|
45340
|
+
key: "4cwo0f"
|
|
45341
|
+
}],
|
|
45342
|
+
["rect", {
|
|
45343
|
+
width: "12",
|
|
45344
|
+
height: "12",
|
|
45345
|
+
x: "6",
|
|
45346
|
+
y: "10",
|
|
45347
|
+
key: "apd30q"
|
|
45348
|
+
}]
|
|
45349
|
+
]);
|
|
45289
45350
|
var X$2 = createLucideIcon("X", [["path", {
|
|
45290
45351
|
d: "M18 6 6 18",
|
|
45291
45352
|
key: "1bl5f8"
|
|
@@ -55669,6 +55730,69 @@ function Tooltip({ content, children, delay = 180, sideOffset = 8, className })
|
|
|
55669
55730
|
}) })] });
|
|
55670
55731
|
}
|
|
55671
55732
|
//#endregion
|
|
55733
|
+
//#region src/components/badge.tsx
|
|
55734
|
+
var toneClassNames = {
|
|
55735
|
+
primary: "bg-primary text-primary-foreground",
|
|
55736
|
+
subtle: "border border-primary/35 bg-primary/10 text-primary",
|
|
55737
|
+
muted: "border border-border bg-muted text-muted-foreground",
|
|
55738
|
+
custom: ""
|
|
55739
|
+
};
|
|
55740
|
+
var sizeClassNames$2 = {
|
|
55741
|
+
dot: "h-1.5 w-1.5 min-w-0 p-0",
|
|
55742
|
+
xs: "h-4 min-w-4 px-1 text-[10px] leading-none",
|
|
55743
|
+
sm: "h-5 min-w-5 px-1.5 text-[11px] leading-none"
|
|
55744
|
+
};
|
|
55745
|
+
var shapeClassNames = {
|
|
55746
|
+
pill: "rounded-full",
|
|
55747
|
+
box: "rounded"
|
|
55748
|
+
};
|
|
55749
|
+
function Badge({ tone = "primary", size = "xs", shape = "pill", className, ...props }) {
|
|
55750
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
55751
|
+
"data-ui-badge": "true",
|
|
55752
|
+
className: cn$1("inline-flex shrink-0 items-center justify-center gap-0.5 whitespace-nowrap font-semibold", toneClassNames[tone], sizeClassNames$2[size], shapeClassNames[shape], className),
|
|
55753
|
+
...props
|
|
55754
|
+
});
|
|
55755
|
+
}
|
|
55756
|
+
function formatCountBadgeValue(count, max = 99) {
|
|
55757
|
+
return count > max ? `${max}+` : String(count);
|
|
55758
|
+
}
|
|
55759
|
+
function CountBadge({ count, max = 99, hideWhenZero = false, title, ...props }) {
|
|
55760
|
+
if (hideWhenZero && count <= 0) return null;
|
|
55761
|
+
const value = formatCountBadgeValue(count, max);
|
|
55762
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Badge, {
|
|
55763
|
+
title,
|
|
55764
|
+
...props,
|
|
55765
|
+
children: value
|
|
55766
|
+
});
|
|
55767
|
+
}
|
|
55768
|
+
//#endregion
|
|
55769
|
+
//#region src/components/layout/beta-mark.tsx
|
|
55770
|
+
/**
|
|
55771
|
+
* 展开态的 beta pill:放在导航项文字之后,与面板内标题的 Badge 保持一致的视觉语言。
|
|
55772
|
+
*/
|
|
55773
|
+
function BetaPill() {
|
|
55774
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Badge, {
|
|
55775
|
+
tone: "subtle",
|
|
55776
|
+
size: "xs",
|
|
55777
|
+
className: "ml-auto",
|
|
55778
|
+
title: "Beta feature",
|
|
55779
|
+
children: "Beta"
|
|
55780
|
+
});
|
|
55781
|
+
}
|
|
55782
|
+
/**
|
|
55783
|
+
* 折叠态(icon-only)的 beta 角标:贴在图标右上角的一个小 "β"。
|
|
55784
|
+
* 信息量高于纯圆点,明确表达 beta;比斜向 ribbon 更适合窄长的侧边栏列表项。
|
|
55785
|
+
*
|
|
55786
|
+
* 父元素需为 `position: relative`。
|
|
55787
|
+
*/
|
|
55788
|
+
function BetaCornerMark() {
|
|
55789
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
55790
|
+
className: "bg-primary text-primary-foreground absolute -right-1 -top-1 flex h-3 w-3 items-center justify-center rounded-full text-[8px] font-bold italic leading-none",
|
|
55791
|
+
"aria-label": "Beta feature",
|
|
55792
|
+
children: "β"
|
|
55793
|
+
});
|
|
55794
|
+
}
|
|
55795
|
+
//#endregion
|
|
55672
55796
|
//#region src/components/layout/nav-items.ts
|
|
55673
55797
|
/** All navigation items — single source of truth */
|
|
55674
55798
|
var allNavItems = [
|
|
@@ -55686,7 +55810,7 @@ var allNavItems = [
|
|
|
55686
55810
|
},
|
|
55687
55811
|
{
|
|
55688
55812
|
to: "/git",
|
|
55689
|
-
icon:
|
|
55813
|
+
icon: GitBranch,
|
|
55690
55814
|
label: "Git",
|
|
55691
55815
|
defaultArea: "bottom"
|
|
55692
55816
|
},
|
|
@@ -55698,7 +55822,7 @@ var allNavItems = [
|
|
|
55698
55822
|
},
|
|
55699
55823
|
{
|
|
55700
55824
|
to: "/changes",
|
|
55701
|
-
icon:
|
|
55825
|
+
icon: ListTodo,
|
|
55702
55826
|
label: "Changes",
|
|
55703
55827
|
defaultArea: "main"
|
|
55704
55828
|
},
|
|
@@ -55708,6 +55832,13 @@ var allNavItems = [
|
|
|
55708
55832
|
label: "Archive",
|
|
55709
55833
|
defaultArea: "main"
|
|
55710
55834
|
},
|
|
55835
|
+
{
|
|
55836
|
+
to: "/stores",
|
|
55837
|
+
icon: Warehouse,
|
|
55838
|
+
label: "Stores",
|
|
55839
|
+
defaultArea: "main",
|
|
55840
|
+
beta: true
|
|
55841
|
+
},
|
|
55711
55842
|
{
|
|
55712
55843
|
to: "/settings",
|
|
55713
55844
|
icon: Settings,
|
|
@@ -55837,11 +55968,14 @@ function AreaNav({ area, tabs, className, useLinks, onNavigate, collapsed }) {
|
|
|
55837
55968
|
className: `hover:bg-muted [&.active]:bg-primary [&.active]:text-primary-foreground flex items-center gap-2 rounded-md py-2 ${iconOnly ? "justify-center px-2" : "px-3"}`,
|
|
55838
55969
|
children: [
|
|
55839
55970
|
!iconOnly ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(GripVertical, { className: "-ml-2.5 -mr-1.5 h-3 w-3 shrink-0 opacity-0 group-hover:opacity-40" }) : null,
|
|
55840
|
-
/* @__PURE__ */ (0, import_jsx_runtime.
|
|
55841
|
-
|
|
55971
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
|
|
55972
|
+
className: "relative",
|
|
55973
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(item.icon, { className: "h-4 w-4 shrink-0" }), item.beta && iconOnly ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(BetaCornerMark, {}) : null]
|
|
55974
|
+
}),
|
|
55975
|
+
!iconOnly ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
55842
55976
|
className: "font-nav text-base tracking-[0.04em]",
|
|
55843
55977
|
children: item.label
|
|
55844
|
-
}) : null
|
|
55978
|
+
}), item.beta ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(BetaPill, {}) : null] }) : null
|
|
55845
55979
|
]
|
|
55846
55980
|
})
|
|
55847
55981
|
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Tooltip, {
|
|
@@ -55859,11 +55993,14 @@ function AreaNav({ area, tabs, className, useLinks, onNavigate, collapsed }) {
|
|
|
55859
55993
|
className: `flex w-full items-center gap-2 rounded-md py-2 ${iconOnly ? "justify-center px-2" : "px-3 text-left"} ${isActiveBottom ? "bg-primary text-primary-foreground" : "hover:bg-muted"}`,
|
|
55860
55994
|
children: [
|
|
55861
55995
|
!iconOnly ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(GripVertical, { className: "-ml-2.5 -mr-1.5 h-3 w-3 shrink-0 opacity-0 group-hover:opacity-40" }) : null,
|
|
55862
|
-
/* @__PURE__ */ (0, import_jsx_runtime.
|
|
55863
|
-
|
|
55996
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
|
|
55997
|
+
className: "relative",
|
|
55998
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(item.icon, { className: "h-4 w-4 shrink-0" }), item.beta && iconOnly ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(BetaCornerMark, {}) : null]
|
|
55999
|
+
}),
|
|
56000
|
+
!iconOnly ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
55864
56001
|
className: "font-nav text-base tracking-[0.04em]",
|
|
55865
56002
|
children: item.label
|
|
55866
|
-
}) : null
|
|
56003
|
+
}), item.beta ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(BetaPill, {}) : null] }) : null
|
|
55867
56004
|
]
|
|
55868
56005
|
})
|
|
55869
56006
|
}),
|
|
@@ -55875,7 +56012,7 @@ function AreaNav({ area, tabs, className, useLinks, onNavigate, collapsed }) {
|
|
|
55875
56012
|
}
|
|
55876
56013
|
//#endregion
|
|
55877
56014
|
//#region src/components/layout/top-layer-entry-button.tsx
|
|
55878
|
-
var sizeClassNames$
|
|
56015
|
+
var sizeClassNames$1 = {
|
|
55879
56016
|
mobile: "h-7.5 w-7.5 justify-center",
|
|
55880
56017
|
desktop: "min-h-8 py-2"
|
|
55881
56018
|
};
|
|
@@ -55887,7 +56024,7 @@ function TopLayerEntryButton({ label, icon, text, badge, collapsed = true, size
|
|
|
55887
56024
|
type: "button",
|
|
55888
56025
|
"aria-label": collapsed ? label : props["aria-label"],
|
|
55889
56026
|
title: collapsed ? label : props.title,
|
|
55890
|
-
className: cn$1("top-layer-entry-button border-primary hover:bg-muted relative inline-flex shrink-0 items-center rounded-md border transition-colors", sizeClassNames$
|
|
56027
|
+
className: cn$1("top-layer-entry-button border-primary hover:bg-muted relative inline-flex shrink-0 items-center rounded-md border transition-colors", sizeClassNames$1[size], collapsed ? size === "mobile" ? "p-0" : "justify-center px-2" : "justify-start gap-2 px-3 text-left", className),
|
|
55891
56028
|
...props,
|
|
55892
56029
|
children: [
|
|
55893
56030
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
@@ -55924,6 +56061,7 @@ function DesktopSidebar() {
|
|
|
55924
56061
|
const navLayout = useNavLayout();
|
|
55925
56062
|
const basePath = getBasePath();
|
|
55926
56063
|
const isStatic = isStaticMode();
|
|
56064
|
+
const { visible: storesVisible } = useStoresVisibility();
|
|
55927
56065
|
const [collapsed, setCollapsed] = (0, import_react.useState)(readDesktopSidebarCollapsed);
|
|
55928
56066
|
(0, import_react.useEffect)(() => {
|
|
55929
56067
|
try {
|
|
@@ -55967,7 +56105,7 @@ function DesktopSidebar() {
|
|
|
55967
56105
|
className: "flex flex-1 flex-col",
|
|
55968
56106
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("ul", {
|
|
55969
56107
|
className: "flex-1 space-y-1",
|
|
55970
|
-
children: navItems.map((item) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Tooltip, {
|
|
56108
|
+
children: navItems.filter((item) => item.to !== "/stores" || storesVisible).map((item) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Tooltip, {
|
|
55971
56109
|
content: collapsed ? item.label : void 0,
|
|
55972
56110
|
sideOffset: 12,
|
|
55973
56111
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(VTLink, {
|
|
@@ -55975,10 +56113,13 @@ function DesktopSidebar() {
|
|
|
55975
56113
|
"aria-label": collapsed ? item.label : void 0,
|
|
55976
56114
|
title: collapsed ? item.label : void 0,
|
|
55977
56115
|
className: `hover:bg-muted [&.active]:bg-primary [&.active]:text-primary-foreground flex items-center gap-2 rounded-md py-2 ${collapsed ? "justify-center px-2" : "px-3"}`,
|
|
55978
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.
|
|
56116
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
|
|
56117
|
+
className: "relative",
|
|
56118
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(item.icon, { className: "h-4 w-4 shrink-0" }), item.beta && collapsed ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(BetaCornerMark, {}) : null]
|
|
56119
|
+
}), !collapsed ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
55979
56120
|
className: "font-nav text-base tracking-[0.04em]",
|
|
55980
56121
|
children: item.label
|
|
55981
|
-
}) : null]
|
|
56122
|
+
}), item.beta ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(BetaPill, {}) : null] }) : null]
|
|
55982
56123
|
})
|
|
55983
56124
|
}) }, item.to))
|
|
55984
56125
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
@@ -56005,7 +56146,7 @@ function DesktopSidebar() {
|
|
|
56005
56146
|
className: "flex-1",
|
|
56006
56147
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AreaNav, {
|
|
56007
56148
|
area: "main",
|
|
56008
|
-
tabs: navLayout.mainTabs,
|
|
56149
|
+
tabs: navLayout.mainTabs.filter((tab) => tab !== "/stores" || storesVisible),
|
|
56009
56150
|
className: "h-full",
|
|
56010
56151
|
collapsed
|
|
56011
56152
|
})
|
|
@@ -56150,42 +56291,6 @@ function useManualReconnect() {
|
|
|
56150
56291
|
}, []);
|
|
56151
56292
|
}
|
|
56152
56293
|
//#endregion
|
|
56153
|
-
//#region src/components/badge.tsx
|
|
56154
|
-
var toneClassNames = {
|
|
56155
|
-
primary: "bg-primary text-primary-foreground",
|
|
56156
|
-
subtle: "border border-primary/35 bg-primary/10 text-primary",
|
|
56157
|
-
muted: "border border-border bg-muted text-muted-foreground",
|
|
56158
|
-
custom: ""
|
|
56159
|
-
};
|
|
56160
|
-
var sizeClassNames$1 = {
|
|
56161
|
-
dot: "h-1.5 w-1.5 min-w-0 p-0",
|
|
56162
|
-
xs: "h-4 min-w-4 px-1 text-[10px] leading-none",
|
|
56163
|
-
sm: "h-5 min-w-5 px-1.5 text-[11px] leading-none"
|
|
56164
|
-
};
|
|
56165
|
-
var shapeClassNames = {
|
|
56166
|
-
pill: "rounded-full",
|
|
56167
|
-
box: "rounded"
|
|
56168
|
-
};
|
|
56169
|
-
function Badge({ tone = "primary", size = "xs", shape = "pill", className, ...props }) {
|
|
56170
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
56171
|
-
"data-ui-badge": "true",
|
|
56172
|
-
className: cn$1("inline-flex shrink-0 items-center justify-center gap-0.5 whitespace-nowrap font-semibold", toneClassNames[tone], sizeClassNames$1[size], shapeClassNames[shape], className),
|
|
56173
|
-
...props
|
|
56174
|
-
});
|
|
56175
|
-
}
|
|
56176
|
-
function formatCountBadgeValue(count, max = 99) {
|
|
56177
|
-
return count > max ? `${max}+` : String(count);
|
|
56178
|
-
}
|
|
56179
|
-
function CountBadge({ count, max = 99, hideWhenZero = false, title, ...props }) {
|
|
56180
|
-
if (hideWhenZero && count <= 0) return null;
|
|
56181
|
-
const value = formatCountBadgeValue(count, max);
|
|
56182
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Badge, {
|
|
56183
|
-
title,
|
|
56184
|
-
...props,
|
|
56185
|
-
children: value
|
|
56186
|
-
});
|
|
56187
|
-
}
|
|
56188
|
-
//#endregion
|
|
56189
56294
|
//#region ../core/src/pty-protocol.ts
|
|
56190
56295
|
var PositiveInt = numberType().int().positive();
|
|
56191
56296
|
var PtyPlatformSchema = enumType([
|
|
@@ -95774,7 +95879,10 @@ function MobileTabBar() {
|
|
|
95774
95879
|
children: (isStaticMode() ? mobileNavItems : navLayout.mainTabs.map((tabId) => allNavItems.find((n) => n.to === tabId)).filter((item) => item != null)).map((item) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(VTLink, {
|
|
95775
95880
|
to: item.to,
|
|
95776
95881
|
className: "text-muted-foreground hover:text-foreground [&.active]:text-primary flex flex-1 flex-col items-center justify-center gap-0.5",
|
|
95777
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.
|
|
95882
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
|
|
95883
|
+
className: "relative",
|
|
95884
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(item.icon, { className: "h-5 w-5 shrink-0" }), item.beta ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(BetaCornerMark, {}) : null]
|
|
95885
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
95778
95886
|
className: "font-nav text-[10px] tracking-[0.03em]",
|
|
95779
95887
|
children: item.label
|
|
95780
95888
|
})]
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openspecui/web",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"bin": {
|
|
6
6
|
"openspecui-ssg": "./dist-ssg/ssg-cli.mjs"
|
|
@@ -41,8 +41,8 @@
|
|
|
41
41
|
"@fontsource/share-tech-mono": "^5.2.7",
|
|
42
42
|
"@lezer/common": "^1.4.0",
|
|
43
43
|
"@lezer/highlight": "^1.2.3",
|
|
44
|
-
"@openspecui/search": "
|
|
45
|
-
"@openspecui/server": "
|
|
44
|
+
"@openspecui/search": "5.0.0",
|
|
45
|
+
"@openspecui/server": "5.0.0",
|
|
46
46
|
"@storybook/addon-vitest": "^10.2.19",
|
|
47
47
|
"@storybook/web-components": "^10.2.19",
|
|
48
48
|
"@storybook/web-components-vite": "^10.2.19",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./Geometry-Dr8DqqDe.js";import{w as e}from"./main-pbJDyuSP.js";export{e as CanvasRenderer};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./Geometry-Dr8DqqDe.js";import{C as e}from"./main-pbJDyuSP.js";export{e as WebGLRenderer};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./Geometry-Dr8DqqDe.js";import{S as e}from"./main-pbJDyuSP.js";export{e as WebGPURenderer};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{it as e,x as t}from"./Geometry-Dr8DqqDe.js";import{A as n,D as r,O as i,k as a}from"./main-pbJDyuSP.js";import"./init-LF9R19PZ.js";e.add(n),e.mixin(t,a),e.add(i),e.mixin(t,r);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./dist-vqrjFRzf.js";import{g as e}from"./main-pbJDyuSP.js";export{e as css};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./dist-vqrjFRzf.js";import{b as e}from"./main-pbJDyuSP.js";export{e as json};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./dist-vqrjFRzf.js";import{t as e}from"./main-pbJDyuSP.js";export{e as yaml};
|