@toolr/ui-design 0.1.4 → 0.1.6
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/agent-rules.json +91 -0
- package/ai-manifest.json +190 -0
- package/components/content/info-panel-primitives.tsx +14 -14
- package/components/lib/ai-tools.tsx +1 -1
- package/components/sections/ai-tools-paths/tools-paths-panel.tsx +7 -7
- package/components/sections/captured-issues/captured-issues-panel.tsx +11 -11
- package/components/sections/golden-snapshots/file-diff-viewer.tsx +13 -13
- package/components/sections/golden-snapshots/golden-sync-panel.tsx +5 -5
- package/components/sections/golden-snapshots/snapshot-manager.tsx +11 -11
- package/components/sections/golden-snapshots/status-overview.tsx +20 -20
- package/components/sections/golden-snapshots/version-manager.tsx +8 -8
- package/components/sections/prompt-editor/file-type-tabbed-prompt-editor.tsx +4 -4
- package/components/sections/prompt-editor/simulator-prompt-editor.tsx +5 -5
- package/components/sections/prompt-editor/tabbed-prompt-editor.tsx +10 -10
- package/components/sections/report-bug/report-bug-form.tsx +14 -14
- package/components/sections/report-bug/screenshot-uploader.tsx +6 -6
- package/components/sections/snapshot-browser/snapshot-browser-panel.tsx +3 -3
- package/components/sections/snapshot-browser/snapshot-tree.tsx +8 -8
- package/components/sections/snippets-editor/snippets-editor.tsx +81 -22
- package/components/settings/SettingsHeader.tsx +1 -1
- package/components/settings/SettingsTreeNav.tsx +22 -4
- package/components/ui/action-dialog.tsx +5 -5
- package/components/ui/badge.tsx +4 -4
- package/components/ui/bottom-panel-header.tsx +4 -4
- package/components/ui/breadcrumb.tsx +2 -2
- package/components/ui/collapsible-section.tsx +1 -1
- package/components/ui/cookie-consent.tsx +5 -5
- package/components/ui/detail-section.tsx +3 -3
- package/components/ui/editor-placeholder-card.tsx +7 -7
- package/components/ui/editor-toolbar.tsx +12 -0
- package/components/ui/execution-details-panel.tsx +6 -6
- package/components/ui/extension-list-card.tsx +3 -3
- package/components/ui/file-structure-section.tsx +17 -17
- package/components/ui/file-tree.tsx +3 -1
- package/components/ui/files-panel.tsx +27 -9
- package/components/ui/filter-dropdown.tsx +5 -5
- package/components/ui/form-actions.tsx +1 -1
- package/components/ui/frontmatter-form-header.tsx +4 -4
- package/components/ui/icon-button.tsx +1 -1
- package/components/ui/input.tsx +7 -7
- package/components/ui/label.tsx +4 -4
- package/components/ui/layout-tab-bar.tsx +4 -4
- package/components/ui/modal.tsx +2 -2
- package/components/ui/nav-card.tsx +18 -11
- package/components/ui/navigation-bar.tsx +5 -5
- package/components/ui/number-input.tsx +4 -4
- package/components/ui/registry-browser.tsx +6 -6
- package/components/ui/registry-card.tsx +13 -13
- package/components/ui/registry-detail.tsx +6 -6
- package/components/ui/segmented-toggle.tsx +4 -4
- package/components/ui/select.tsx +5 -5
- package/components/ui/selection-grid.tsx +4 -4
- package/components/ui/setting-row.tsx +1 -1
- package/components/ui/settings-card.tsx +3 -3
- package/components/ui/settings-info-box.tsx +1 -1
- package/components/ui/settings-section-title.tsx +1 -1
- package/components/ui/snapshot-card.tsx +7 -7
- package/components/ui/snippets-panel.tsx +10 -10
- package/components/ui/sort-dropdown.tsx +2 -2
- package/components/ui/status-card.tsx +4 -4
- package/components/ui/tab-bar.tsx +2 -2
- package/components/ui/tooltip.tsx +3 -3
- package/dist/content.js +14 -14
- package/dist/index.d.ts +24 -7
- package/dist/index.js +440 -346
- package/dist/tokens/primitives.css +9 -2
- package/dist/tokens/semantic.css +1 -1
- package/package.json +13 -3
- package/tokens/primitives.css +9 -2
- package/tokens/semantic.css +1 -1
package/dist/index.js
CHANGED
|
@@ -166,7 +166,7 @@ function AiToolIcon({ tool, size, showName, className, style }) {
|
|
|
166
166
|
if (!showName) return img;
|
|
167
167
|
return /* @__PURE__ */ jsxs2("span", { style: { display: "inline-flex", flexDirection: "column", alignItems: "center", gap: 4 }, children: [
|
|
168
168
|
img,
|
|
169
|
-
/* @__PURE__ */ jsx2("span", { className: "text-
|
|
169
|
+
/* @__PURE__ */ jsx2("span", { className: "text-xs text-neutral-400", children: AI_TOOL_NAMES[tool] ?? tool })
|
|
170
170
|
] });
|
|
171
171
|
}
|
|
172
172
|
|
|
@@ -452,9 +452,9 @@ function Tooltip({
|
|
|
452
452
|
onMouseEnter: interactive && trigger !== "click" ? show : void 0,
|
|
453
453
|
onMouseLeave: interactive && trigger !== "click" ? hide : void 0,
|
|
454
454
|
children: [
|
|
455
|
-
content.title && /* @__PURE__ */ jsx3("p", { className: "text-
|
|
456
|
-
/* @__PURE__ */ jsx3("div", { className: `text-
|
|
457
|
-
content.extra && /* @__PURE__ */ jsx3("p", { className: "text-
|
|
455
|
+
content.title && /* @__PURE__ */ jsx3("p", { className: "text-md text-neutral-200 font-medium", children: content.title }),
|
|
456
|
+
/* @__PURE__ */ jsx3("div", { className: `text-sm text-neutral-400 ${content.title ? "mt-0.5" : ""}`, children: content.description }),
|
|
457
|
+
content.extra && /* @__PURE__ */ jsx3("p", { className: "text-sm text-orange-400/70 mt-0.5", children: content.extra }),
|
|
458
458
|
/* @__PURE__ */ jsx3("div", { className: arrowClasses })
|
|
459
459
|
]
|
|
460
460
|
}
|
|
@@ -711,7 +711,7 @@ function IconButton({
|
|
|
711
711
|
badge !== void 0 && /* @__PURE__ */ jsx4(
|
|
712
712
|
"span",
|
|
713
713
|
{
|
|
714
|
-
className: `absolute -top-1 -right-1 min-w-[18px] h-[18px] flex items-center justify-center px-1 text-
|
|
714
|
+
className: `absolute -top-1 -right-1 min-w-[18px] h-[18px] flex items-center justify-center px-1 text-sm font-bold text-white rounded-full ${badgeColorClasses[badgeColor]}`,
|
|
715
715
|
children: typeof badge === "number" && badge > 99 ? "99+" : badge
|
|
716
716
|
}
|
|
717
717
|
)
|
|
@@ -799,10 +799,10 @@ var progressFillColors = {
|
|
|
799
799
|
};
|
|
800
800
|
var sizeConfig = {
|
|
801
801
|
xss: { height: 14, padding: "px-1", text: "text-xss", iconSize: "w-2 h-2", gap: "gap-0.5" },
|
|
802
|
-
xs: { height: 16, padding: "px-1.5", text: "text-
|
|
803
|
-
sm: { height: 18, padding: "px-1.5", text: "text-
|
|
804
|
-
md: { height: 20, padding: "px-1.5", text: "text-
|
|
805
|
-
lg: { height: 22, padding: "px-2", text: "text-
|
|
802
|
+
xs: { height: 16, padding: "px-1.5", text: "text-xs", iconSize: "w-2.5 h-2.5", gap: "gap-1" },
|
|
803
|
+
sm: { height: 18, padding: "px-1.5", text: "text-xs", iconSize: "w-2.5 h-2.5", gap: "gap-1.5" },
|
|
804
|
+
md: { height: 20, padding: "px-1.5", text: "text-xs", iconSize: "w-3 h-3", gap: "gap-1" },
|
|
805
|
+
lg: { height: 22, padding: "px-2", text: "text-sm", iconSize: "w-3 h-3", gap: "gap-1" }
|
|
806
806
|
};
|
|
807
807
|
function smartCapitalize(value) {
|
|
808
808
|
return value.replace(/(^|[\s-])(\w)/g, (_match, separator, char) => separator + char.toUpperCase());
|
|
@@ -907,10 +907,10 @@ var colorClasses3 = {
|
|
|
907
907
|
};
|
|
908
908
|
var sizeClasses2 = {
|
|
909
909
|
xss: "min-w-[14px] h-[14px] px-0.5 text-xss",
|
|
910
|
-
xs: "min-w-[16px] h-[16px] px-1 text-
|
|
911
|
-
sm: "min-w-[18px] h-[18px] px-1 text-
|
|
912
|
-
md: "min-w-[20px] h-[20px] px-1.5 text-
|
|
913
|
-
lg: "min-w-[22px] h-[22px] px-1.5 text-
|
|
910
|
+
xs: "min-w-[16px] h-[16px] px-1 text-xs",
|
|
911
|
+
sm: "min-w-[18px] h-[18px] px-1 text-xs",
|
|
912
|
+
md: "min-w-[20px] h-[20px] px-1.5 text-xs",
|
|
913
|
+
lg: "min-w-[22px] h-[22px] px-1.5 text-sm"
|
|
914
914
|
};
|
|
915
915
|
function Badge({
|
|
916
916
|
value,
|
|
@@ -1161,10 +1161,10 @@ import { Search as Search2, X as X2, Eye as Eye2, EyeOff as EyeOff2 } from "luci
|
|
|
1161
1161
|
import { jsx as jsx10, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
1162
1162
|
var sizeClasses4 = {
|
|
1163
1163
|
xss: "px-1 py-0.5 text-xss",
|
|
1164
|
-
xs: "px-1.5 py-0.5 text-
|
|
1165
|
-
sm: "px-2 py-1 text-
|
|
1166
|
-
md: "px-3 py-1.5 text-
|
|
1167
|
-
lg: "px-3 py-2 text-
|
|
1164
|
+
xs: "px-1.5 py-0.5 text-sm",
|
|
1165
|
+
sm: "px-2 py-1 text-sm",
|
|
1166
|
+
md: "px-3 py-1.5 text-md",
|
|
1167
|
+
lg: "px-3 py-2 text-md"
|
|
1168
1168
|
};
|
|
1169
1169
|
var variantClasses = {
|
|
1170
1170
|
filled: "bg-neutral-800",
|
|
@@ -1295,7 +1295,7 @@ var Input = forwardRef(function Input2({
|
|
|
1295
1295
|
debounceMs > 0 && debounceKey > 0 && /* @__PURE__ */ jsx10(
|
|
1296
1296
|
"svg",
|
|
1297
1297
|
{
|
|
1298
|
-
className: "absolute inset-0 pointer-events-none",
|
|
1298
|
+
className: "absolute inset-0 pointer-events-none text-emerald-400/70",
|
|
1299
1299
|
style: { width: "100%", height: "100%" },
|
|
1300
1300
|
children: /* @__PURE__ */ jsx10(
|
|
1301
1301
|
"rect",
|
|
@@ -1305,7 +1305,7 @@ var Input = forwardRef(function Input2({
|
|
|
1305
1305
|
rx: "5",
|
|
1306
1306
|
ry: "5",
|
|
1307
1307
|
fill: "none",
|
|
1308
|
-
stroke: "
|
|
1308
|
+
stroke: "currentColor",
|
|
1309
1309
|
strokeWidth: "1.5",
|
|
1310
1310
|
pathLength: "100",
|
|
1311
1311
|
strokeDasharray: "100",
|
|
@@ -1321,7 +1321,7 @@ var Input = forwardRef(function Input2({
|
|
|
1321
1321
|
debounceKey
|
|
1322
1322
|
)
|
|
1323
1323
|
] }),
|
|
1324
|
-
typeof error === "string" && error && /* @__PURE__ */ jsx10("p", { className: "text-
|
|
1324
|
+
typeof error === "string" && error && /* @__PURE__ */ jsx10("p", { className: "text-sm text-red-400 mt-1 text-right", children: error })
|
|
1325
1325
|
]
|
|
1326
1326
|
}
|
|
1327
1327
|
);
|
|
@@ -1333,10 +1333,10 @@ import { ChevronUp as ChevronUp2, ChevronDown as ChevronDown2 } from "lucide-rea
|
|
|
1333
1333
|
import { jsx as jsx11, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
1334
1334
|
var SIZE_CONFIG = {
|
|
1335
1335
|
xss: { wrapper: "h-[18px]", input: "px-1 text-xss", chevron: "w-2.5 h-2.5", stepperW: "w-4" },
|
|
1336
|
-
xs: { wrapper: "h-6", input: "px-1.5 text-
|
|
1337
|
-
sm: { wrapper: "h-7", input: "px-2 text-
|
|
1338
|
-
md: { wrapper: "h-8", input: "px-3 text-
|
|
1339
|
-
lg: { wrapper: "h-9", input: "px-3 text-
|
|
1336
|
+
xs: { wrapper: "h-6", input: "px-1.5 text-sm", chevron: "w-2.5 h-2.5", stepperW: "w-5" },
|
|
1337
|
+
sm: { wrapper: "h-7", input: "px-2 text-sm", chevron: "w-3 h-3", stepperW: "w-5" },
|
|
1338
|
+
md: { wrapper: "h-8", input: "px-3 text-md", chevron: "w-3 h-3", stepperW: "w-6" },
|
|
1339
|
+
lg: { wrapper: "h-9", input: "px-3 text-md", chevron: "w-3.5 h-3.5", stepperW: "w-7" }
|
|
1340
1340
|
};
|
|
1341
1341
|
var VARIANT_CLASSES = {
|
|
1342
1342
|
filled: "bg-neutral-800",
|
|
@@ -1547,10 +1547,10 @@ var ICON_SIZE_CLASSES = {
|
|
|
1547
1547
|
};
|
|
1548
1548
|
var TEXT_SIZE_CLASSES = {
|
|
1549
1549
|
xss: "h-[18px] px-1.5 text-xss",
|
|
1550
|
-
xs: "h-6 px-2 text-
|
|
1551
|
-
sm: "h-7 px-2.5 text-
|
|
1552
|
-
md: "h-8 px-3 text-
|
|
1553
|
-
lg: "h-9 px-3.5 text-
|
|
1550
|
+
xs: "h-6 px-2 text-xs",
|
|
1551
|
+
sm: "h-7 px-2.5 text-sm",
|
|
1552
|
+
md: "h-8 px-3 text-sm",
|
|
1553
|
+
lg: "h-9 px-3.5 text-md"
|
|
1554
1554
|
};
|
|
1555
1555
|
var ROUNDING_CLASSES = {
|
|
1556
1556
|
xss: "rounded-[3px]",
|
|
@@ -1905,10 +1905,10 @@ var VARIANT_CLASSES2 = {
|
|
|
1905
1905
|
};
|
|
1906
1906
|
var SIZE_CLASSES = {
|
|
1907
1907
|
xss: "h-[18px] px-1.5 text-xss",
|
|
1908
|
-
xs: "h-6 px-2 text-
|
|
1909
|
-
sm: "h-7 px-2 text-
|
|
1910
|
-
md: "h-8 px-3 text-
|
|
1911
|
-
lg: "h-9 px-3 text-
|
|
1908
|
+
xs: "h-6 px-2 text-sm",
|
|
1909
|
+
sm: "h-7 px-2 text-sm",
|
|
1910
|
+
md: "h-8 px-3 text-md",
|
|
1911
|
+
lg: "h-9 px-3 text-md"
|
|
1912
1912
|
};
|
|
1913
1913
|
function Select({
|
|
1914
1914
|
value,
|
|
@@ -2020,7 +2020,7 @@ function Select({
|
|
|
2020
2020
|
close();
|
|
2021
2021
|
},
|
|
2022
2022
|
onPointerEnter: () => setHighlightIdx(idx),
|
|
2023
|
-
className: `w-full flex items-center gap-2 px-3 py-1.5 text-
|
|
2023
|
+
className: `w-full flex items-center gap-2 px-3 py-1.5 text-sm text-left transition-colors cursor-pointer ${isHighlighted ? `${FORM_COLORS[color].selectedBg} text-neutral-200` : isSelected ? `${FORM_COLORS[color].selectedBg} text-neutral-200` : `text-neutral-400 ${v.hoverBg}`}`,
|
|
2024
2024
|
children: [
|
|
2025
2025
|
/* @__PURE__ */ jsx15(Check4, { className: `w-3 h-3 shrink-0 ${isSelected ? FORM_COLORS[color].accent : "invisible"}` }),
|
|
2026
2026
|
opt.icon,
|
|
@@ -2131,7 +2131,7 @@ function FilterDropdown({
|
|
|
2131
2131
|
"button",
|
|
2132
2132
|
{
|
|
2133
2133
|
onClick: () => setIsOpen(!isOpen),
|
|
2134
|
-
className: `flex items-center gap-1.5 h-7 px-2 rounded-md border ${v.bg} text-
|
|
2134
|
+
className: `flex items-center gap-1.5 h-7 px-2 rounded-md border ${v.bg} text-sm transition-colors cursor-pointer ${isActive ? `${clearable ? "rounded-r-none border-r-0" : ""} ${FORM_COLORS[color].border} text-neutral-200 ${FORM_COLORS[color].hover}` : isOpen ? `${FORM_COLORS[color].border} text-neutral-200` : `${FORM_COLORS[color].border} text-neutral-400 ${FORM_COLORS[color].hover} hover:text-neutral-200`}`,
|
|
2135
2135
|
children: [
|
|
2136
2136
|
/* @__PURE__ */ jsx16(Filter2, { className: `w-3 h-3 ${isActive ? FORM_COLORS[color].accent : ""}` }),
|
|
2137
2137
|
labelExtra,
|
|
@@ -2160,7 +2160,7 @@ function FilterDropdown({
|
|
|
2160
2160
|
onChange: (e) => setSearch(e.target.value),
|
|
2161
2161
|
onKeyDown: handleKeyDown,
|
|
2162
2162
|
placeholder: "Search...",
|
|
2163
|
-
className: `w-full pl-6 pr-2 py-1 text-
|
|
2163
|
+
className: `w-full pl-6 pr-2 py-1 text-sm bg-[var(--popover)] border border-neutral-600 rounded text-neutral-200 placeholder-neutral-500 outline-none ${FORM_COLORS[color].focus}`
|
|
2164
2164
|
}
|
|
2165
2165
|
)
|
|
2166
2166
|
] }) }),
|
|
@@ -2169,7 +2169,7 @@ function FilterDropdown({
|
|
|
2169
2169
|
{
|
|
2170
2170
|
"data-idx": 0,
|
|
2171
2171
|
onClick: () => handleSelect("all"),
|
|
2172
|
-
className: `w-full flex items-center gap-2 px-3 py-1.5 text-
|
|
2172
|
+
className: `w-full flex items-center gap-2 px-3 py-1.5 text-sm text-left transition-colors cursor-pointer ${highlightIdx === 0 ? `${FORM_COLORS[color].selectedBg} text-neutral-200` : !isActive ? `${FORM_COLORS[color].selectedBg} text-neutral-200` : `text-neutral-400 ${v.hoverBg}`}`,
|
|
2173
2173
|
children: [
|
|
2174
2174
|
/* @__PURE__ */ jsx16(Check5, { className: `w-3 h-3 shrink-0 ${!isActive ? FORM_COLORS[color].accent : "invisible"}` }),
|
|
2175
2175
|
/* @__PURE__ */ jsx16("span", { children: "All" })
|
|
@@ -2185,7 +2185,7 @@ function FilterDropdown({
|
|
|
2185
2185
|
{
|
|
2186
2186
|
"data-idx": idx,
|
|
2187
2187
|
onClick: () => handleSelect(opt.value),
|
|
2188
|
-
className: `w-full flex items-center gap-2 px-3 py-1.5 text-
|
|
2188
|
+
className: `w-full flex items-center gap-2 px-3 py-1.5 text-sm text-left transition-colors cursor-pointer ${isHighlighted ? `${FORM_COLORS[color].selectedBg} text-neutral-200` : isSelected ? `${FORM_COLORS[color].selectedBg} text-neutral-200` : `text-neutral-400 ${v.hoverBg}`}`,
|
|
2189
2189
|
children: [
|
|
2190
2190
|
/* @__PURE__ */ jsx16(Check5, { className: `w-3 h-3 shrink-0 ${isSelected ? FORM_COLORS[color].accent : "invisible"}` }),
|
|
2191
2191
|
/* @__PURE__ */ jsx16("span", { children: opt.label })
|
|
@@ -2194,7 +2194,7 @@ function FilterDropdown({
|
|
|
2194
2194
|
opt.value
|
|
2195
2195
|
);
|
|
2196
2196
|
}),
|
|
2197
|
-
showSearch && search && filtered.length === 0 && /* @__PURE__ */ jsx16("div", { className: "px-3 py-2 text-
|
|
2197
|
+
showSearch && search && filtered.length === 0 && /* @__PURE__ */ jsx16("div", { className: "px-3 py-2 text-sm text-neutral-500", children: "No matches" })
|
|
2198
2198
|
] })
|
|
2199
2199
|
] });
|
|
2200
2200
|
}
|
|
@@ -2249,7 +2249,7 @@ function SortDropdown({
|
|
|
2249
2249
|
"button",
|
|
2250
2250
|
{
|
|
2251
2251
|
onClick: () => setIsOpen(!isOpen),
|
|
2252
|
-
className: `flex items-center gap-1.5 h-7 px-2 rounded-md border ${v.bg} text-
|
|
2252
|
+
className: `flex items-center gap-1.5 h-7 px-2 rounded-md border ${v.bg} text-sm transition-colors cursor-pointer ${FORM_COLORS[color].border} text-neutral-200 ${FORM_COLORS[color].hover}`,
|
|
2253
2253
|
children: [
|
|
2254
2254
|
/* @__PURE__ */ jsx17(
|
|
2255
2255
|
"span",
|
|
@@ -2276,7 +2276,7 @@ function SortDropdown({
|
|
|
2276
2276
|
setIsOpen(false);
|
|
2277
2277
|
},
|
|
2278
2278
|
onPointerEnter: () => setHighlightIdx(idx),
|
|
2279
|
-
className: `w-full flex items-center gap-2 px-3 py-1.5 text-
|
|
2279
|
+
className: `w-full flex items-center gap-2 px-3 py-1.5 text-sm text-left transition-colors cursor-pointer ${idx === highlightIdx ? `${FORM_COLORS[color].selectedBg} text-neutral-200` : field === f.value ? `${FORM_COLORS[color].selectedBg} text-neutral-200` : `text-neutral-400 ${v.hoverBg}`}`,
|
|
2280
2280
|
children: [
|
|
2281
2281
|
/* @__PURE__ */ jsx17(Check6, { className: `w-3 h-3 shrink-0 ${field === f.value ? FORM_COLORS[color].accent : "invisible"}` }),
|
|
2282
2282
|
/* @__PURE__ */ jsx17("span", { children: f.label })
|
|
@@ -2333,7 +2333,7 @@ function FormActions({
|
|
|
2333
2333
|
tooltip: { description: backTooltip }
|
|
2334
2334
|
}
|
|
2335
2335
|
),
|
|
2336
|
-
statusText && /* @__PURE__ */ jsx18("span", { className: "text-
|
|
2336
|
+
statusText && /* @__PURE__ */ jsx18("span", { className: "text-sm text-neutral-500", children: statusText })
|
|
2337
2337
|
] }),
|
|
2338
2338
|
/* @__PURE__ */ jsxs13("div", { className: "flex items-center gap-2", children: [
|
|
2339
2339
|
onMinimize && /* @__PURE__ */ jsx18(
|
|
@@ -2479,8 +2479,8 @@ function ConfirmModal({
|
|
|
2479
2479
|
/* @__PURE__ */ jsxs14("div", { className: "text-neutral-300 mb-6", children: [
|
|
2480
2480
|
message,
|
|
2481
2481
|
warning && /* @__PURE__ */ jsxs14("div", { className: "mt-3 p-3 bg-amber-500/10 border border-amber-500/30 rounded-lg", children: [
|
|
2482
|
-
/* @__PURE__ */ jsx19("p", { className: "text-amber-300 text-
|
|
2483
|
-
warningItems && warningItems.length > 0 && /* @__PURE__ */ jsx19("ul", { className: "mt-2 space-y-1", children: warningItems.map((item, i) => /* @__PURE__ */ jsx19("li", { className: "text-amber-300/80 text-
|
|
2482
|
+
/* @__PURE__ */ jsx19("p", { className: "text-amber-300 text-md font-medium", children: warning }),
|
|
2483
|
+
warningItems && warningItems.length > 0 && /* @__PURE__ */ jsx19("ul", { className: "mt-2 space-y-1", children: warningItems.map((item, i) => /* @__PURE__ */ jsx19("li", { className: "text-amber-300/80 text-md ml-4 list-disc", children: item }, i)) })
|
|
2484
2484
|
] })
|
|
2485
2485
|
] }),
|
|
2486
2486
|
/* @__PURE__ */ jsx19(
|
|
@@ -2809,8 +2809,8 @@ function GridCard({ item, selected, onClick }) {
|
|
|
2809
2809
|
style: { color: item.disabled ? void 0 : item.color || "#9ca3af" }
|
|
2810
2810
|
}
|
|
2811
2811
|
),
|
|
2812
|
-
/* @__PURE__ */ jsx20("span", { className: "text-
|
|
2813
|
-
item.description && /* @__PURE__ */ jsx20("span", { className: "text-
|
|
2812
|
+
/* @__PURE__ */ jsx20("span", { className: "text-sm font-medium text-neutral-200 block", children: item.name }),
|
|
2813
|
+
item.description && /* @__PURE__ */ jsx20("span", { className: "text-sm text-neutral-500 block mt-0.5", children: item.description })
|
|
2814
2814
|
]
|
|
2815
2815
|
}
|
|
2816
2816
|
);
|
|
@@ -2838,8 +2838,8 @@ function ListCard({ item, selected, onClick }) {
|
|
|
2838
2838
|
}
|
|
2839
2839
|
),
|
|
2840
2840
|
/* @__PURE__ */ jsxs15("div", { className: "min-w-0", children: [
|
|
2841
|
-
/* @__PURE__ */ jsx20("span", { className: "text-
|
|
2842
|
-
item.description && /* @__PURE__ */ jsx20("span", { className: "text-
|
|
2841
|
+
/* @__PURE__ */ jsx20("span", { className: "text-sm font-medium text-neutral-200 block", children: item.name }),
|
|
2842
|
+
item.description && /* @__PURE__ */ jsx20("span", { className: "text-sm text-neutral-500 block mt-0.5", children: item.description })
|
|
2843
2843
|
] })
|
|
2844
2844
|
]
|
|
2845
2845
|
}
|
|
@@ -2860,7 +2860,7 @@ function ExecutionDetailsPanel({
|
|
|
2860
2860
|
return /* @__PURE__ */ jsxs16("div", { className: cn("space-y-3", className), children: [
|
|
2861
2861
|
/* @__PURE__ */ jsxs16("div", { className: "flex items-center gap-2", children: [
|
|
2862
2862
|
/* @__PURE__ */ jsx21(Info3, { className: "w-4 h-4 text-neutral-500" }),
|
|
2863
|
-
/* @__PURE__ */ jsx21("span", { className: "font-medium text-neutral-400 text-
|
|
2863
|
+
/* @__PURE__ */ jsx21("span", { className: "font-medium text-neutral-400 text-md", children: "Execution Details" })
|
|
2864
2864
|
] }),
|
|
2865
2865
|
showToggle && /* @__PURE__ */ jsxs16(
|
|
2866
2866
|
"div",
|
|
@@ -2877,22 +2877,22 @@ function ExecutionDetailsPanel({
|
|
|
2877
2877
|
}
|
|
2878
2878
|
) }),
|
|
2879
2879
|
/* @__PURE__ */ jsxs16("div", { children: [
|
|
2880
|
-
/* @__PURE__ */ jsx21("span", { className: "text-neutral-300 text-
|
|
2881
|
-
/* @__PURE__ */ jsx21("p", { className: "text-neutral-500 text-
|
|
2880
|
+
/* @__PURE__ */ jsx21("span", { className: "text-neutral-300 text-md", children: "Allow direct file edits" }),
|
|
2881
|
+
/* @__PURE__ */ jsx21("p", { className: "text-neutral-500 text-sm mt-0.5", children: allowDirectEdits ? "AI will modify files directly. Changes saved immediately." : "Changes will be shown in editor for review." })
|
|
2882
2882
|
] })
|
|
2883
2883
|
]
|
|
2884
2884
|
}
|
|
2885
2885
|
),
|
|
2886
2886
|
warningMessage && /* @__PURE__ */ jsx21("div", { className: "rounded border border-red-500/50 bg-red-500/10 p-2", children: /* @__PURE__ */ jsxs16("div", { className: "flex items-start gap-2", children: [
|
|
2887
2887
|
/* @__PURE__ */ jsx21(AlertTriangle3, { className: "h-4 w-4 text-red-400 shrink-0 mt-0.5" }),
|
|
2888
|
-
/* @__PURE__ */ jsx21("p", { className: "text-red-300 text-
|
|
2888
|
+
/* @__PURE__ */ jsx21("p", { className: "text-red-300 text-sm", children: warningMessage })
|
|
2889
2889
|
] }) }),
|
|
2890
2890
|
details.length > 0 && /* @__PURE__ */ jsx21("div", { className: "space-y-2", children: details.map((row) => /* @__PURE__ */ jsxs16("div", { className: "flex items-start gap-3", children: [
|
|
2891
|
-
/* @__PURE__ */ jsxs16("span", { className: "text-neutral-500 text-
|
|
2891
|
+
/* @__PURE__ */ jsxs16("span", { className: "text-neutral-500 text-sm w-24 shrink-0", children: [
|
|
2892
2892
|
row.label,
|
|
2893
2893
|
":"
|
|
2894
2894
|
] }),
|
|
2895
|
-
/* @__PURE__ */ jsx21("span", { className: cn("text-neutral-300 text-
|
|
2895
|
+
/* @__PURE__ */ jsx21("span", { className: cn("text-neutral-300 text-sm", row.mono && "font-mono"), children: row.value })
|
|
2896
2896
|
] }, row.label)) })
|
|
2897
2897
|
] });
|
|
2898
2898
|
}
|
|
@@ -3053,8 +3053,8 @@ function ActionDialog({
|
|
|
3053
3053
|
}
|
|
3054
3054
|
),
|
|
3055
3055
|
/* @__PURE__ */ jsxs17("div", { className: "flex flex-col", children: [
|
|
3056
|
-
/* @__PURE__ */ jsx22("span", { className: "text-
|
|
3057
|
-
subtitle && /* @__PURE__ */ jsx22("span", { className: "text-
|
|
3056
|
+
/* @__PURE__ */ jsx22("span", { className: "text-md font-semibold text-neutral-200", children: title }),
|
|
3057
|
+
subtitle && /* @__PURE__ */ jsx22("span", { className: "text-sm text-neutral-500", children: subtitle })
|
|
3058
3058
|
] }),
|
|
3059
3059
|
/* @__PURE__ */ jsx22("div", { className: "flex-1" }),
|
|
3060
3060
|
onSettings && /* @__PURE__ */ jsx22(
|
|
@@ -3070,7 +3070,7 @@ function ActionDialog({
|
|
|
3070
3070
|
] }),
|
|
3071
3071
|
/* @__PURE__ */ jsxs17("div", { className: "px-4 py-4 overflow-y-auto flex-1 min-h-0 space-y-4", children: [
|
|
3072
3072
|
hasSelection && /* @__PURE__ */ jsxs17("div", { children: [
|
|
3073
|
-
selectionLabel && /* @__PURE__ */ jsx22("div", { className: "text-
|
|
3073
|
+
selectionLabel && /* @__PURE__ */ jsx22("div", { className: "text-sm text-neutral-500 mb-2", children: selectionLabel }),
|
|
3074
3074
|
/* @__PURE__ */ jsx22(
|
|
3075
3075
|
SelectionGrid,
|
|
3076
3076
|
{
|
|
@@ -3086,13 +3086,13 @@ function ActionDialog({
|
|
|
3086
3086
|
] }),
|
|
3087
3087
|
hasScenarios && /* @__PURE__ */ jsxs17("div", { children: [
|
|
3088
3088
|
/* @__PURE__ */ jsxs17("div", { className: "flex items-center justify-between mb-2", children: [
|
|
3089
|
-
/* @__PURE__ */ jsx22("span", { className: "text-
|
|
3089
|
+
/* @__PURE__ */ jsx22("span", { className: "text-sm text-neutral-500", children: scenarioLabel }),
|
|
3090
3090
|
/* @__PURE__ */ jsx22(
|
|
3091
3091
|
"button",
|
|
3092
3092
|
{
|
|
3093
3093
|
type: "button",
|
|
3094
3094
|
onClick: handleSelectAllScenarios,
|
|
3095
|
-
className: "text-
|
|
3095
|
+
className: "text-sm text-blue-400 hover:text-blue-300 transition-colors cursor-pointer",
|
|
3096
3096
|
children: allScenariosSelected ? "Deselect All" : "Select All"
|
|
3097
3097
|
}
|
|
3098
3098
|
)
|
|
@@ -3154,7 +3154,8 @@ var ACCENT_SELECTED = {
|
|
|
3154
3154
|
amber: "bg-amber-400/20 text-neutral-200",
|
|
3155
3155
|
emerald: "bg-emerald-400/20 text-neutral-200",
|
|
3156
3156
|
teal: "bg-teal-400/20 text-neutral-200",
|
|
3157
|
-
sky: "bg-sky-400/20 text-neutral-200"
|
|
3157
|
+
sky: "bg-sky-400/20 text-neutral-200",
|
|
3158
|
+
violet: "bg-violet-400/20 text-neutral-200"
|
|
3158
3159
|
};
|
|
3159
3160
|
var ACCENT_ICON = {
|
|
3160
3161
|
blue: "text-blue-400",
|
|
@@ -3165,7 +3166,8 @@ var ACCENT_ICON = {
|
|
|
3165
3166
|
amber: "text-amber-400",
|
|
3166
3167
|
emerald: "text-emerald-400",
|
|
3167
3168
|
teal: "text-teal-400",
|
|
3168
|
-
sky: "text-sky-400"
|
|
3169
|
+
sky: "text-sky-400",
|
|
3170
|
+
violet: "text-violet-400"
|
|
3169
3171
|
};
|
|
3170
3172
|
function nodeHasFiles(node) {
|
|
3171
3173
|
if (node.type === "file") return true;
|
|
@@ -3227,7 +3229,7 @@ function FileTreeNodeItem({ node, path, selectedPath, onSelectFile, expandedPath
|
|
|
3227
3229
|
const isDir = node.type === "directory";
|
|
3228
3230
|
const isSelected = !isDir && selectedPath === path;
|
|
3229
3231
|
const expanded = isDir && expandedPaths.has(path);
|
|
3230
|
-
const base = "flex items-center gap-1.5 py-0.5 px-1 rounded text-
|
|
3232
|
+
const base = "flex items-center gap-1.5 py-0.5 px-1 rounded text-sm transition-colors overflow-hidden whitespace-nowrap";
|
|
3231
3233
|
const selectedClass = ACCENT_SELECTED[accentColor] ?? ACCENT_SELECTED.blue;
|
|
3232
3234
|
const iconColorClass = ACCENT_ICON[accentColor] ?? ACCENT_ICON.blue;
|
|
3233
3235
|
const rowClass = isSelected ? `${base} ${selectedClass}` : isDir ? `${base} cursor-pointer text-white hover:text-neutral-200` : `${base} cursor-pointer text-white hover:bg-neutral-700/50 hover:text-neutral-200`;
|
|
@@ -3267,6 +3269,8 @@ function FileTreeNodeItem({ node, path, selectedPath, onSelectFile, expandedPath
|
|
|
3267
3269
|
import { useState as useState9 } from "react";
|
|
3268
3270
|
import { Fragment as Fragment5, jsx as jsx24, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
3269
3271
|
function EditorToolbar({
|
|
3272
|
+
title,
|
|
3273
|
+
description,
|
|
3270
3274
|
isDirty,
|
|
3271
3275
|
isSaving = false,
|
|
3272
3276
|
onSave,
|
|
@@ -3295,7 +3299,13 @@ function EditorToolbar({
|
|
|
3295
3299
|
}
|
|
3296
3300
|
return /* @__PURE__ */ jsxs19(Fragment5, { children: [
|
|
3297
3301
|
/* @__PURE__ */ jsxs19("div", { className: "flex items-center justify-between px-4 py-1.5 bg-neutral-900 border-b border-neutral-800", children: [
|
|
3298
|
-
/* @__PURE__ */
|
|
3302
|
+
/* @__PURE__ */ jsxs19("div", { className: "flex items-center gap-2", children: [
|
|
3303
|
+
(title || description) && /* @__PURE__ */ jsxs19("div", { className: "flex flex-col mr-2", children: [
|
|
3304
|
+
title && /* @__PURE__ */ jsx24("span", { className: "text-sm font-medium text-neutral-200", children: title }),
|
|
3305
|
+
description && /* @__PURE__ */ jsx24("span", { className: "text-xs text-neutral-500", children: description })
|
|
3306
|
+
] }),
|
|
3307
|
+
leftActions?.map((a, i) => /* @__PURE__ */ jsx24(IconButton, { ...a }, i))
|
|
3308
|
+
] }),
|
|
3299
3309
|
isDirty && /* @__PURE__ */ jsx24(
|
|
3300
3310
|
Label,
|
|
3301
3311
|
{
|
|
@@ -3425,7 +3435,7 @@ function BottomPanelHeader({
|
|
|
3425
3435
|
{
|
|
3426
3436
|
onClick: () => onTabChange(tab.id),
|
|
3427
3437
|
"data-testid": tab.testId,
|
|
3428
|
-
className: `h-[41px] flex items-center justify-center gap-2 ${compactTabs ? "px-3" : "px-4"} text-
|
|
3438
|
+
className: `h-[41px] flex items-center justify-center gap-2 ${compactTabs ? "px-3" : "px-4"} text-md border-b-2 transition-colors cursor-pointer ${baseClasses}`,
|
|
3429
3439
|
children: compactTabs ? /* @__PURE__ */ jsxs20("span", { className: "relative flex items-center justify-center w-[18px] h-[18px] flex-shrink-0", children: [
|
|
3430
3440
|
TabIcon2 && /* @__PURE__ */ jsx25(TabIcon2, { className: "w-[18px] h-[18px]" }),
|
|
3431
3441
|
tab.count !== void 0 && /* @__PURE__ */ jsx25("span", { className: "absolute -top-1.5 -right-2", children: /* @__PURE__ */ jsx25(Badge, { value: tab.count, color: tab.countColor, size: "xss" }) })
|
|
@@ -3442,7 +3452,7 @@ function BottomPanelHeader({
|
|
|
3442
3452
|
}
|
|
3443
3453
|
return tabButton;
|
|
3444
3454
|
}) }),
|
|
3445
|
-
/* @__PURE__ */ jsx25("div", { className: "flex-1 min-w-0 flex items-center justify-center overflow-hidden", children: statusBanner && (compactBanner ? /* @__PURE__ */ jsx25(Tooltip, { content: { description: statusBanner.message }, position: "bottom", children: /* @__PURE__ */ jsx25("div", { className: `flex items-center px-2 py-1.5 ${bannerStyles} rounded text-
|
|
3455
|
+
/* @__PURE__ */ jsx25("div", { className: "flex-1 min-w-0 flex items-center justify-center overflow-hidden", children: statusBanner && (compactBanner ? /* @__PURE__ */ jsx25(Tooltip, { content: { description: statusBanner.message }, position: "bottom", children: /* @__PURE__ */ jsx25("div", { className: `flex items-center px-2 py-1.5 ${bannerStyles} rounded text-sm`, children: /* @__PURE__ */ jsx25(RefreshCw3, { className: "w-3 h-3 flex-shrink-0" }) }) }) : /* @__PURE__ */ jsxs20("div", { className: `flex items-center gap-2 px-2.5 py-1.5 ${bannerStyles} rounded text-sm max-w-full`, children: [
|
|
3446
3456
|
/* @__PURE__ */ jsx25(RefreshCw3, { className: "w-3 h-3 flex-shrink-0" }),
|
|
3447
3457
|
/* @__PURE__ */ jsx25("span", { className: "truncate", children: statusBanner.message })
|
|
3448
3458
|
] })) }),
|
|
@@ -3491,9 +3501,9 @@ function FrontmatterFormHeader({
|
|
|
3491
3501
|
className: `w-3.5 h-3.5 text-neutral-500 transition-transform duration-150 ${collapsed ? "" : "rotate-90"}`
|
|
3492
3502
|
}
|
|
3493
3503
|
),
|
|
3494
|
-
/* @__PURE__ */ jsx26("span", { className: "text-
|
|
3495
|
-
collapsed && hasFm && /* @__PURE__ */ jsx26("span", { className: "text-
|
|
3496
|
-
collapsed && !hasFm && /* @__PURE__ */ jsx26("span", { className: "text-
|
|
3504
|
+
/* @__PURE__ */ jsx26("span", { className: "text-sm font-medium text-neutral-400 uppercase tracking-wide", children: "Configuration" }),
|
|
3505
|
+
collapsed && hasFm && /* @__PURE__ */ jsx26("span", { className: "text-xs text-neutral-500 font-mono ml-2 truncate", children: renderSummary() }),
|
|
3506
|
+
collapsed && !hasFm && /* @__PURE__ */ jsx26("span", { className: "text-xs text-neutral-600 ml-2", children: "No frontmatter" })
|
|
3497
3507
|
]
|
|
3498
3508
|
}
|
|
3499
3509
|
),
|
|
@@ -3510,7 +3520,7 @@ function FrontmatterFormHeader({
|
|
|
3510
3520
|
/* @__PURE__ */ jsx26(
|
|
3511
3521
|
"span",
|
|
3512
3522
|
{
|
|
3513
|
-
className: "text-
|
|
3523
|
+
className: "text-sm text-neutral-400 cursor-pointer",
|
|
3514
3524
|
onClick: () => !readOnly && onFrontmatterToggle(!hasFm),
|
|
3515
3525
|
children: "Add YAML frontmatter to file"
|
|
3516
3526
|
}
|
|
@@ -3587,9 +3597,9 @@ function EditorPlaceholderCard({
|
|
|
3587
3597
|
return /* @__PURE__ */ jsxs22("div", { className: `group px-3 py-2.5 ${!hasValue ? "opacity-60" : ""} ${className}`, children: [
|
|
3588
3598
|
/* @__PURE__ */ jsxs22("div", { className: "flex items-start justify-between gap-2", children: [
|
|
3589
3599
|
/* @__PURE__ */ jsxs22("div", { className: "flex-1 min-w-0", children: [
|
|
3590
|
-
/* @__PURE__ */ jsx27("code", { className: `text-
|
|
3591
|
-
required && /* @__PURE__ */ jsx27("span", { className: "ml-2 inline-block px-1.5 py-0.5 text-
|
|
3592
|
-
/* @__PURE__ */ jsx27("p", { className: "text-
|
|
3600
|
+
/* @__PURE__ */ jsx27("code", { className: `text-sm font-mono px-1.5 py-0.5 rounded ${colors.name} ${colors.nameBg}`, children: "{{" + name + "}}" }),
|
|
3601
|
+
required && /* @__PURE__ */ jsx27("span", { className: "ml-2 inline-block px-1.5 py-0.5 text-sm font-semibold uppercase bg-red-500/15 text-red-400 border border-red-500/30 rounded", children: "Required" }),
|
|
3602
|
+
/* @__PURE__ */ jsx27("p", { className: "text-sm text-neutral-500 mt-1.5 line-clamp-2", children: description })
|
|
3593
3603
|
] }),
|
|
3594
3604
|
/* @__PURE__ */ jsxs22("div", { className: "flex items-center gap-1 shrink-0", children: [
|
|
3595
3605
|
showCopyPlaceholder && /* @__PURE__ */ jsx27(
|
|
@@ -3618,7 +3628,7 @@ function EditorPlaceholderCard({
|
|
|
3618
3628
|
] })
|
|
3619
3629
|
] }),
|
|
3620
3630
|
hasValue && /* @__PURE__ */ jsx27("div", { className: "mt-2", children: hideValue ? /* @__PURE__ */ jsxs22(Fragment7, { children: [
|
|
3621
|
-
/* @__PURE__ */ jsx27("span", { className: "text-
|
|
3631
|
+
/* @__PURE__ */ jsx27("span", { className: "text-sm text-neutral-500 font-medium", children: valueLabel }),
|
|
3622
3632
|
/* @__PURE__ */ jsx27("div", { className: "mt-1.5", children: /* @__PURE__ */ jsx27(
|
|
3623
3633
|
Input,
|
|
3624
3634
|
{
|
|
@@ -3634,7 +3644,7 @@ function EditorPlaceholderCard({
|
|
|
3634
3644
|
) })
|
|
3635
3645
|
] }) : /* @__PURE__ */ jsxs22(Fragment7, { children: [
|
|
3636
3646
|
/* @__PURE__ */ jsxs22("div", { className: "flex items-center justify-between", children: [
|
|
3637
|
-
/* @__PURE__ */ jsx27("span", { className: "text-
|
|
3647
|
+
/* @__PURE__ */ jsx27("span", { className: "text-sm text-neutral-500 font-medium", children: valueLabel }),
|
|
3638
3648
|
(isOverflowing || isExpanded) && /* @__PURE__ */ jsx27(
|
|
3639
3649
|
IconButton,
|
|
3640
3650
|
{
|
|
@@ -3649,12 +3659,12 @@ function EditorPlaceholderCard({
|
|
|
3649
3659
|
"div",
|
|
3650
3660
|
{
|
|
3651
3661
|
ref: valueRef,
|
|
3652
|
-
className: `mt-1.5 px-2 py-1.5 bg-neutral-800/50 rounded text-
|
|
3662
|
+
className: `mt-1.5 px-2 py-1.5 bg-neutral-800/50 rounded text-sm text-neutral-400 font-mono ${isExpanded ? "whitespace-pre-wrap break-all max-h-[190px] overflow-y-auto" : "truncate"}`,
|
|
3653
3663
|
children: value
|
|
3654
3664
|
}
|
|
3655
3665
|
)
|
|
3656
3666
|
] }) }),
|
|
3657
|
-
!hasValue && /* @__PURE__ */ jsx27("p", { className: "mt-1.5 text-
|
|
3667
|
+
!hasValue && /* @__PURE__ */ jsx27("p", { className: "mt-1.5 text-sm text-neutral-600 italic", children: "No value set - add one in Settings" })
|
|
3658
3668
|
] });
|
|
3659
3669
|
}
|
|
3660
3670
|
|
|
@@ -3959,7 +3969,7 @@ function RegistryCard(props) {
|
|
|
3959
3969
|
if (!count || count <= 0) return [];
|
|
3960
3970
|
return [/* @__PURE__ */ jsx29(Tooltip, { content: { description: `${count} ${count === 1 ? label : labelPlural}` }, position: "top", children: /* @__PURE__ */ jsxs24("span", { className: "flex items-center gap-0.5", children: [
|
|
3961
3971
|
/* @__PURE__ */ jsx29(Icon, { className: `w-3 h-3 ${color}` }),
|
|
3962
|
-
/* @__PURE__ */ jsx29("span", { className: "text-
|
|
3972
|
+
/* @__PURE__ */ jsx29("span", { className: "text-xs text-neutral-500", children: count })
|
|
3963
3973
|
] }) }, `pkg-${key}`)];
|
|
3964
3974
|
});
|
|
3965
3975
|
}
|
|
@@ -4011,11 +4021,11 @@ function RegistryCard(props) {
|
|
|
4011
4021
|
const compatibleTools = props.compatibleTools ?? [];
|
|
4012
4022
|
bottomLogos = compatibleTools.map((tool) => /* @__PURE__ */ jsx29(Tooltip, { content: { description: `Compatible with ${AI_TOOL_NAMES[tool] ?? tool}` }, position: "top", children: /* @__PURE__ */ jsx29(AiToolIcon, { tool, size: 16 }) }, tool));
|
|
4013
4023
|
bottomStats = [
|
|
4014
|
-
...props.stars != null && props.stars > 0 ? [/* @__PURE__ */ jsx29(CardClickable, { onClick: () => props.onSortBy?.("stars"), children: /* @__PURE__ */ jsx29(Tooltip, { content: { description: `${props.stars.toLocaleString()} stars \xB7 Click to sort` }, position: "top", children: /* @__PURE__ */ jsxs24("span", { className: "flex items-center gap-1 text-
|
|
4024
|
+
...props.stars != null && props.stars > 0 ? [/* @__PURE__ */ jsx29(CardClickable, { onClick: () => props.onSortBy?.("stars"), children: /* @__PURE__ */ jsx29(Tooltip, { content: { description: `${props.stars.toLocaleString()} stars \xB7 Click to sort` }, position: "top", children: /* @__PURE__ */ jsxs24("span", { className: "flex items-center gap-1 text-xs text-amber-400/80", children: [
|
|
4015
4025
|
/* @__PURE__ */ jsx29(Star4, { className: "w-3 h-3" }),
|
|
4016
4026
|
formatCount(props.stars)
|
|
4017
4027
|
] }) }) }, "stars")] : [],
|
|
4018
|
-
...props.downloads != null && props.downloads > 0 ? [/* @__PURE__ */ jsx29(CardClickable, { onClick: () => props.onSortBy?.("downloads"), children: /* @__PURE__ */ jsx29(Tooltip, { content: { description: `${props.downloads.toLocaleString()} downloads \xB7 Click to sort` }, position: "top", children: /* @__PURE__ */ jsxs24("span", { className: "flex items-center gap-1 text-
|
|
4028
|
+
...props.downloads != null && props.downloads > 0 ? [/* @__PURE__ */ jsx29(CardClickable, { onClick: () => props.onSortBy?.("downloads"), children: /* @__PURE__ */ jsx29(Tooltip, { content: { description: `${props.downloads.toLocaleString()} downloads \xB7 Click to sort` }, position: "top", children: /* @__PURE__ */ jsxs24("span", { className: "flex items-center gap-1 text-xs text-emerald-400/80", children: [
|
|
4019
4029
|
/* @__PURE__ */ jsx29(Download3, { className: "w-3 h-3" }),
|
|
4020
4030
|
formatCount(props.downloads)
|
|
4021
4031
|
] }) }) }, "downloads")] : []
|
|
@@ -4108,7 +4118,7 @@ function RegistryCard(props) {
|
|
|
4108
4118
|
const allTools = props.allToolKeys ?? [];
|
|
4109
4119
|
bottomLogos = allTools.map((tool) => /* @__PURE__ */ jsx29(Tooltip, { content: { description: `Compatible with ${AI_TOOL_NAMES[tool] ?? tool}` }, position: "top", children: /* @__PURE__ */ jsx29(AiToolIcon, { tool, size: 14 }) }, tool));
|
|
4110
4120
|
if (props.installs != null && props.installs > 0) {
|
|
4111
|
-
bottomStats = [/* @__PURE__ */ jsx29(Tooltip, { content: { description: `${props.installs.toLocaleString()} installs` }, position: "top", children: /* @__PURE__ */ jsxs24("span", { className: "flex items-center gap-1 text-
|
|
4121
|
+
bottomStats = [/* @__PURE__ */ jsx29(Tooltip, { content: { description: `${props.installs.toLocaleString()} installs` }, position: "top", children: /* @__PURE__ */ jsxs24("span", { className: "flex items-center gap-1 text-xs text-neutral-500", children: [
|
|
4112
4122
|
/* @__PURE__ */ jsx29(Download3, { className: "w-3 h-3" }),
|
|
4113
4123
|
props.installs.toLocaleString()
|
|
4114
4124
|
] }) }, "installs")];
|
|
@@ -4136,15 +4146,15 @@ function RegistryCard(props) {
|
|
|
4136
4146
|
installButton && /* @__PURE__ */ jsx29("div", { className: "absolute inset-0 opacity-0 group-hover:opacity-100 transition-opacity", onClick: (e) => e.stopPropagation(), children: installButton })
|
|
4137
4147
|
] }) })
|
|
4138
4148
|
] }),
|
|
4139
|
-
/* @__PURE__ */ jsx29("h3", { className: "text-
|
|
4140
|
-
subtitle && /* @__PURE__ */ jsx29("div", { className: "text-
|
|
4141
|
-
description && /* @__PURE__ */ jsx29("p", { className: "text-
|
|
4142
|
-
errorMessage && /* @__PURE__ */ jsx29("p", { className: `text-
|
|
4149
|
+
/* @__PURE__ */ jsx29("h3", { className: "text-md font-medium text-white", children: name }),
|
|
4150
|
+
subtitle && /* @__PURE__ */ jsx29("div", { className: "text-sm text-neutral-400 mb-1.5", children: subtitle }),
|
|
4151
|
+
description && /* @__PURE__ */ jsx29("p", { className: "text-sm text-neutral-500 mb-3 flex-grow line-clamp-2", children: description }),
|
|
4152
|
+
errorMessage && /* @__PURE__ */ jsx29("p", { className: `text-xs mb-2 break-all ${flash === "warning" ? "text-amber-400" : "text-red-400"}`, children: errorMessage }),
|
|
4143
4153
|
(bottomLogos.length > 0 || bottomStats.length > 0 || updatedAt) && (() => {
|
|
4144
4154
|
const dateNode = updatedAt ? /* @__PURE__ */ jsx29(Tooltip, { content: { description: onDateClick ? `Last updated ${formatFullDate(updatedAt)} \xB7 Click to sort by date` : `Last updated ${formatFullDate(updatedAt)}` }, position: "top", children: /* @__PURE__ */ jsxs24(
|
|
4145
4155
|
"span",
|
|
4146
4156
|
{
|
|
4147
|
-
className: `flex items-center gap-1 text-
|
|
4157
|
+
className: `flex items-center gap-1 text-xs text-neutral-500 whitespace-nowrap${onDateClick ? " cursor-pointer hover:brightness-125 transition-all" : ""}`,
|
|
4148
4158
|
onClick: onDateClick ? (e) => {
|
|
4149
4159
|
e.stopPropagation();
|
|
4150
4160
|
onDateClick();
|
|
@@ -4167,17 +4177,17 @@ function RegistryCard(props) {
|
|
|
4167
4177
|
return /* @__PURE__ */ jsx29("div", { onClick: (e) => e.stopPropagation(), children: props.renderScopeConfirm({ isOpen: true, onClose: () => setShowScopeConfirm(false), onConfirm: props.onInstall, name }) });
|
|
4168
4178
|
}
|
|
4169
4179
|
return /* @__PURE__ */ jsx29("div", { onClick: (e) => e.stopPropagation(), children: /* @__PURE__ */ jsx29("div", { className: "fixed inset-0 bg-[var(--background)]/50 z-50 flex items-center justify-center", onClick: () => setShowScopeConfirm(false), children: /* @__PURE__ */ jsxs24("div", { className: "bg-neutral-800 border border-neutral-700 rounded-lg p-4 max-w-sm", onClick: (e) => e.stopPropagation(), children: [
|
|
4170
|
-
/* @__PURE__ */ jsx29("h3", { className: "text-
|
|
4171
|
-
/* @__PURE__ */ jsxs24("p", { className: "text-
|
|
4180
|
+
/* @__PURE__ */ jsx29("h3", { className: "text-md font-medium text-neutral-200 mb-2", children: ALREADY_AT_USER }),
|
|
4181
|
+
/* @__PURE__ */ jsxs24("p", { className: "text-sm text-neutral-400 mb-4", children: [
|
|
4172
4182
|
/* @__PURE__ */ jsx29("strong", { className: "text-neutral-300", children: name }),
|
|
4173
4183
|
" is already installed at user level and available to all projects. Do you also want to install it at project level?"
|
|
4174
4184
|
] }),
|
|
4175
4185
|
/* @__PURE__ */ jsxs24("div", { className: "flex justify-end gap-2", children: [
|
|
4176
|
-
/* @__PURE__ */ jsx29("button", { type: "button", onClick: () => setShowScopeConfirm(false), className: "px-3 py-1.5 text-
|
|
4186
|
+
/* @__PURE__ */ jsx29("button", { type: "button", onClick: () => setShowScopeConfirm(false), className: "px-3 py-1.5 text-sm text-neutral-400 hover:text-neutral-200 transition-colors cursor-pointer", children: "Cancel" }),
|
|
4177
4187
|
/* @__PURE__ */ jsx29("button", { type: "button", onClick: () => {
|
|
4178
4188
|
setShowScopeConfirm(false);
|
|
4179
4189
|
props.onInstall();
|
|
4180
|
-
}, className: "px-3 py-1.5 text-
|
|
4190
|
+
}, className: "px-3 py-1.5 text-sm bg-blue-600 text-white rounded hover:bg-blue-500 transition-colors cursor-pointer", children: "Install to project" })
|
|
4181
4191
|
] })
|
|
4182
4192
|
] }) }) });
|
|
4183
4193
|
})()
|
|
@@ -4301,7 +4311,7 @@ function renderMarkdownContent(content) {
|
|
|
4301
4311
|
}
|
|
4302
4312
|
i++;
|
|
4303
4313
|
nodes.push(
|
|
4304
|
-
/* @__PURE__ */ jsxs25("div", { className: "mb-3 font-mono text-
|
|
4314
|
+
/* @__PURE__ */ jsxs25("div", { className: "mb-3 font-mono text-xs text-neutral-500 border-l-2 border-neutral-700 pl-2 py-0.5", children: [
|
|
4305
4315
|
/* @__PURE__ */ jsx30("div", { className: "text-neutral-600", children: "---" }),
|
|
4306
4316
|
fmLines.map((l, j) => /* @__PURE__ */ jsx30("div", { children: l }, j)),
|
|
4307
4317
|
/* @__PURE__ */ jsx30("div", { className: "text-neutral-600", children: "---" })
|
|
@@ -4318,18 +4328,18 @@ function renderMarkdownContent(content) {
|
|
|
4318
4328
|
i++;
|
|
4319
4329
|
}
|
|
4320
4330
|
nodes.push(
|
|
4321
|
-
/* @__PURE__ */ jsx30("pre", { className: "mb-2 p-2 bg-[var(--background)]/30 rounded text-
|
|
4331
|
+
/* @__PURE__ */ jsx30("pre", { className: "mb-2 p-2 bg-[var(--background)]/30 rounded text-xs font-mono text-neutral-300 overflow-x-auto", children: codeLines.join("\n") }, i)
|
|
4322
4332
|
);
|
|
4323
4333
|
} else if (line.startsWith("### ")) {
|
|
4324
|
-
nodes.push(/* @__PURE__ */ jsx30("h3", { className: "text-
|
|
4334
|
+
nodes.push(/* @__PURE__ */ jsx30("h3", { className: "text-xs font-semibold text-neutral-300 mt-2 mb-0.5", children: line.slice(4) }, i));
|
|
4325
4335
|
} else if (line.startsWith("## ")) {
|
|
4326
|
-
nodes.push(/* @__PURE__ */ jsx30("h2", { className: "text-
|
|
4336
|
+
nodes.push(/* @__PURE__ */ jsx30("h2", { className: "text-sm font-semibold text-neutral-200 mt-2.5 mb-1", children: line.slice(3) }, i));
|
|
4327
4337
|
} else if (line.startsWith("# ")) {
|
|
4328
|
-
nodes.push(/* @__PURE__ */ jsx30("h1", { className: "text-
|
|
4338
|
+
nodes.push(/* @__PURE__ */ jsx30("h1", { className: "text-md font-semibold text-neutral-100 mb-1.5", children: line.slice(2) }, i));
|
|
4329
4339
|
} else if (line === "" || line === "\r") {
|
|
4330
4340
|
nodes.push(/* @__PURE__ */ jsx30("div", { className: "h-1.5" }, i));
|
|
4331
4341
|
} else {
|
|
4332
|
-
nodes.push(/* @__PURE__ */ jsx30("p", { className: "text-
|
|
4342
|
+
nodes.push(/* @__PURE__ */ jsx30("p", { className: "text-xs text-neutral-400 leading-relaxed", children: line }, i));
|
|
4333
4343
|
}
|
|
4334
4344
|
i++;
|
|
4335
4345
|
}
|
|
@@ -4486,8 +4496,8 @@ function FileStructureSection({
|
|
|
4486
4496
|
}, [variant, selectedFilePath]);
|
|
4487
4497
|
if (isLoading) {
|
|
4488
4498
|
return /* @__PURE__ */ jsxs25("div", { children: [
|
|
4489
|
-
/* @__PURE__ */ jsx30("h3", { className: "text-
|
|
4490
|
-
/* @__PURE__ */ jsxs25("div", { className: "flex items-center gap-2 text-
|
|
4499
|
+
/* @__PURE__ */ jsx30("h3", { className: "text-sm font-medium text-neutral-500 uppercase tracking-wider mb-2", children: "File Structure" }),
|
|
4500
|
+
/* @__PURE__ */ jsxs25("div", { className: "flex items-center gap-2 text-sm text-neutral-500 py-4", children: [
|
|
4491
4501
|
/* @__PURE__ */ jsx30(Loader23, { className: "w-3.5 h-3.5 animate-spin" }),
|
|
4492
4502
|
"Loading file tree..."
|
|
4493
4503
|
] })
|
|
@@ -4498,8 +4508,8 @@ function FileStructureSection({
|
|
|
4498
4508
|
}
|
|
4499
4509
|
if (error) {
|
|
4500
4510
|
return /* @__PURE__ */ jsxs25("div", { children: [
|
|
4501
|
-
/* @__PURE__ */ jsx30("h3", { className: "text-
|
|
4502
|
-
/* @__PURE__ */ jsxs25("div", { className: "flex items-center gap-2 text-
|
|
4511
|
+
/* @__PURE__ */ jsx30("h3", { className: "text-sm font-medium text-neutral-500 uppercase tracking-wider mb-2", children: "File Structure" }),
|
|
4512
|
+
/* @__PURE__ */ jsxs25("div", { className: "flex items-center gap-2 text-sm text-red-400 py-4", children: [
|
|
4503
4513
|
/* @__PURE__ */ jsx30(AlertCircle3, { className: "w-3.5 h-3.5 shrink-0" }),
|
|
4504
4514
|
error
|
|
4505
4515
|
] })
|
|
@@ -4510,12 +4520,12 @@ function FileStructureSection({
|
|
|
4510
4520
|
function renderContent(content, filePath) {
|
|
4511
4521
|
if (mode === "format") return renderMarkdownContent(content);
|
|
4512
4522
|
if (mode === "language" && renderPreview) return renderPreview(content, filePath, resolvedLanguage);
|
|
4513
|
-
return /* @__PURE__ */ jsx30("pre", { className: "p-3 text-
|
|
4523
|
+
return /* @__PURE__ */ jsx30("pre", { className: "p-3 text-sm font-mono text-white leading-relaxed whitespace-pre-wrap", children: /* @__PURE__ */ jsx30("code", { children: content }) });
|
|
4514
4524
|
}
|
|
4515
4525
|
const treePanel = /* @__PURE__ */ jsxs25("div", { className: `flex flex-col bg-neutral-900 border ${ACCENT_BORDER[accentColor]} rounded-lg overflow-hidden ${variant === "split" && effectiveFilePath ? "w-1/3 shrink-0" : "flex-1"}`, children: [
|
|
4516
4526
|
/* @__PURE__ */ jsxs25("div", { className: `flex items-center px-3 py-2 border-b ${ACCENT_BORDER[accentColor]} shrink-0 gap-2 min-w-0`, children: [
|
|
4517
4527
|
/* @__PURE__ */ jsx30(FolderTree, { className: `w-3.5 h-3.5 shrink-0 ${ACCENT_ICON2[accentColor]}` }),
|
|
4518
|
-
/* @__PURE__ */ jsx30("span", { className: "text-
|
|
4528
|
+
/* @__PURE__ */ jsx30("span", { className: "text-sm text-neutral-200 truncate flex-1", children: "Files" }),
|
|
4519
4529
|
/* @__PURE__ */ jsx30(
|
|
4520
4530
|
CollapseButton,
|
|
4521
4531
|
{
|
|
@@ -4541,7 +4551,7 @@ function FileStructureSection({
|
|
|
4541
4551
|
const previewPanel = effectiveFilePath ? /* @__PURE__ */ jsxs25("div", { className: `flex-1 flex flex-col bg-neutral-900 border ${ACCENT_BORDER[accentColor]} rounded-lg overflow-hidden`, children: [
|
|
4542
4552
|
/* @__PURE__ */ jsxs25("div", { className: `flex items-center px-3 py-2 border-b ${ACCENT_BORDER[accentColor]} shrink-0 gap-2 min-w-0`, children: [
|
|
4543
4553
|
/* @__PURE__ */ jsx30(FileCode3, { className: `w-3.5 h-3.5 shrink-0 ${ACCENT_ICON2[accentColor]}` }),
|
|
4544
|
-
/* @__PURE__ */ jsx30("span", { className: "text-
|
|
4554
|
+
/* @__PURE__ */ jsx30("span", { className: "text-sm text-neutral-200 truncate flex-1", children: selectedFileName }),
|
|
4545
4555
|
showToggle && /* @__PURE__ */ jsx30(
|
|
4546
4556
|
SegmentedToggle,
|
|
4547
4557
|
{
|
|
@@ -4553,10 +4563,10 @@ function FileStructureSection({
|
|
|
4553
4563
|
}
|
|
4554
4564
|
)
|
|
4555
4565
|
] }),
|
|
4556
|
-
/* @__PURE__ */ jsx30("div", { className: "flex-1 overflow-auto", children: fileIsLoading ? /* @__PURE__ */ jsxs25("div", { className: "flex items-center gap-2 text-
|
|
4566
|
+
/* @__PURE__ */ jsx30("div", { className: "flex-1 overflow-auto", children: fileIsLoading ? /* @__PURE__ */ jsxs25("div", { className: "flex items-center gap-2 text-sm text-neutral-500 p-3", children: [
|
|
4557
4567
|
/* @__PURE__ */ jsx30(Loader23, { className: "w-3.5 h-3.5 animate-spin" }),
|
|
4558
4568
|
"Loading..."
|
|
4559
|
-
] }) : fileError ? /* @__PURE__ */ jsx30("p", { className: "text-
|
|
4569
|
+
] }) : fileError ? /* @__PURE__ */ jsx30("p", { className: "text-sm text-red-400 p-3", children: fileError }) : fileContent !== null ? renderContent(fileContent, effectiveFilePath) : null })
|
|
4560
4570
|
] }) : null;
|
|
4561
4571
|
const resizeHandle = /* @__PURE__ */ jsx30(
|
|
4562
4572
|
"div",
|
|
@@ -4568,7 +4578,7 @@ function FileStructureSection({
|
|
|
4568
4578
|
);
|
|
4569
4579
|
if (variant === "list") {
|
|
4570
4580
|
return /* @__PURE__ */ jsxs25("div", { ref: sectionRef, children: [
|
|
4571
|
-
/* @__PURE__ */ jsx30("h3", { className: "text-
|
|
4581
|
+
/* @__PURE__ */ jsx30("h3", { className: "text-sm font-medium text-neutral-500 uppercase tracking-wider mb-2", children: "File Structure" }),
|
|
4572
4582
|
/* @__PURE__ */ jsxs25("div", { className: "space-y-3", children: [
|
|
4573
4583
|
treePanel,
|
|
4574
4584
|
previewPanel && /* @__PURE__ */ jsxs25("div", { children: [
|
|
@@ -4579,7 +4589,7 @@ function FileStructureSection({
|
|
|
4579
4589
|
] });
|
|
4580
4590
|
}
|
|
4581
4591
|
return /* @__PURE__ */ jsxs25("div", { ref: sectionRef, children: [
|
|
4582
|
-
/* @__PURE__ */ jsx30("h3", { className: "text-
|
|
4592
|
+
/* @__PURE__ */ jsx30("h3", { className: "text-sm font-medium text-neutral-500 uppercase tracking-wider mb-2", children: "File Structure" }),
|
|
4583
4593
|
/* @__PURE__ */ jsxs25("div", { className: "flex gap-3", style: { height: `${effectiveHeight}px` }, children: [
|
|
4584
4594
|
treePanel,
|
|
4585
4595
|
previewPanel
|
|
@@ -4590,7 +4600,7 @@ function FileStructureSection({
|
|
|
4590
4600
|
|
|
4591
4601
|
// components/ui/registry-detail.tsx
|
|
4592
4602
|
import { jsx as jsx31, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
4593
|
-
var MARKDOWN_CLASSES = "text-
|
|
4603
|
+
var MARKDOWN_CLASSES = "text-md text-neutral-400 leading-relaxed [&_strong]:text-neutral-200 [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:rounded [&_code]:bg-neutral-700/40 [&_code]:border [&_code]:border-neutral-500/40 [&_code]:text-neutral-200 [&_code]:font-mono [&_code]:text-sm [&_h1]:text-lg [&_h1]:font-semibold [&_h1]:text-neutral-200 [&_h1]:mb-2 [&_h2]:text-base [&_h2]:font-semibold [&_h2]:text-neutral-200 [&_h2]:mb-2 [&_h3]:text-md [&_h3]:font-medium [&_h3]:text-neutral-200 [&_h3]:mb-1 [&_ul]:list-disc [&_ul]:pl-4 [&_ol]:list-decimal [&_ol]:pl-4 [&_li]:mb-1 [&_p]:mb-2 [&_pre]:bg-neutral-900 [&_pre]:rounded [&_pre]:p-3 [&_pre]:overflow-x-auto [&_pre]:text-sm";
|
|
4594
4604
|
var COLLAPSED_MAX_HEIGHT = 240;
|
|
4595
4605
|
function CollapsibleTextSection({ children, header }) {
|
|
4596
4606
|
const contentRef = useRef13(null);
|
|
@@ -4614,7 +4624,7 @@ function CollapsibleTextSection({ children, header }) {
|
|
|
4614
4624
|
const showCollapsed = overflows && !expanded;
|
|
4615
4625
|
return /* @__PURE__ */ jsxs26("div", { children: [
|
|
4616
4626
|
(header || overflows) && /* @__PURE__ */ jsxs26("div", { className: "flex items-center justify-between mb-2", children: [
|
|
4617
|
-
header && /* @__PURE__ */ jsx31("h3", { className: "text-
|
|
4627
|
+
header && /* @__PURE__ */ jsx31("h3", { className: "text-sm font-medium text-neutral-500 uppercase tracking-wider", children: header }),
|
|
4618
4628
|
overflows && /* @__PURE__ */ jsx31(
|
|
4619
4629
|
IconButton,
|
|
4620
4630
|
{
|
|
@@ -4642,10 +4652,10 @@ function CollapsibleTextSection({ children, header }) {
|
|
|
4642
4652
|
function CompatibleWithSection({ tools }) {
|
|
4643
4653
|
if (tools.length === 0) return null;
|
|
4644
4654
|
return /* @__PURE__ */ jsxs26("div", { children: [
|
|
4645
|
-
/* @__PURE__ */ jsx31("h3", { className: "text-
|
|
4655
|
+
/* @__PURE__ */ jsx31("h3", { className: "text-sm font-medium text-neutral-500 uppercase tracking-wider mb-3", children: "Compatible with" }),
|
|
4646
4656
|
/* @__PURE__ */ jsx31("div", { className: "flex items-start gap-3", children: tools.map((tool) => /* @__PURE__ */ jsxs26("div", { className: "flex flex-col items-center gap-1", children: [
|
|
4647
4657
|
/* @__PURE__ */ jsx31(AiToolIcon, { tool, size: 18 }),
|
|
4648
|
-
/* @__PURE__ */ jsx31("span", { className: "text-
|
|
4658
|
+
/* @__PURE__ */ jsx31("span", { className: "text-xs text-neutral-400", children: AI_TOOL_NAMES[tool] ?? tool })
|
|
4649
4659
|
] }, tool)) })
|
|
4650
4660
|
] });
|
|
4651
4661
|
}
|
|
@@ -4684,8 +4694,8 @@ function RegistryDetail({
|
|
|
4684
4694
|
actionButton && /* @__PURE__ */ jsx31("div", { className: "shrink-0", children: actionButton })
|
|
4685
4695
|
] }),
|
|
4686
4696
|
description && /* @__PURE__ */ jsxs26("div", { children: [
|
|
4687
|
-
/* @__PURE__ */ jsx31("h3", { className: "text-
|
|
4688
|
-
/* @__PURE__ */ jsx31("p", { className: "text-
|
|
4697
|
+
/* @__PURE__ */ jsx31("h3", { className: "text-sm font-medium text-neutral-500 uppercase tracking-wider mb-2", children: "Description" }),
|
|
4698
|
+
/* @__PURE__ */ jsx31("p", { className: "text-md text-neutral-400 leading-relaxed", children: description })
|
|
4689
4699
|
] }),
|
|
4690
4700
|
longDescription && /* @__PURE__ */ jsx31(CollapsibleTextSection, { header: "TL;DR", children: longDescription }),
|
|
4691
4701
|
integration && /* @__PURE__ */ jsx31(CollapsibleTextSection, { header: "Info", children: [
|
|
@@ -4822,7 +4832,7 @@ function RegistryBrowser({
|
|
|
4822
4832
|
debounceKey != null && debounceKey > 0 && /* @__PURE__ */ jsx32(
|
|
4823
4833
|
"svg",
|
|
4824
4834
|
{
|
|
4825
|
-
className: "absolute inset-0 pointer-events-none",
|
|
4835
|
+
className: "absolute inset-0 pointer-events-none text-emerald-400/70",
|
|
4826
4836
|
style: { width: "100%", height: "100%" },
|
|
4827
4837
|
children: /* @__PURE__ */ jsx32(
|
|
4828
4838
|
"rect",
|
|
@@ -4832,7 +4842,7 @@ function RegistryBrowser({
|
|
|
4832
4842
|
rx: "5",
|
|
4833
4843
|
ry: "5",
|
|
4834
4844
|
fill: "none",
|
|
4835
|
-
stroke: "
|
|
4845
|
+
stroke: "currentColor",
|
|
4836
4846
|
strokeWidth: "1.5",
|
|
4837
4847
|
pathLength: "100",
|
|
4838
4848
|
strokeDasharray: "100",
|
|
@@ -4877,11 +4887,11 @@ function RegistryBrowser({
|
|
|
4877
4887
|
loadingMessage
|
|
4878
4888
|
] }) : error ? /* @__PURE__ */ jsxs27("div", { className: "flex flex-col items-center justify-center py-12 text-neutral-500", children: [
|
|
4879
4889
|
/* @__PURE__ */ jsx32(AlertTriangle4, { className: "w-6 h-6 text-amber-400 mb-2" }),
|
|
4880
|
-
/* @__PURE__ */ jsx32("p", { className: "text-
|
|
4881
|
-
onRetry && /* @__PURE__ */ jsx32("button", { onClick: onRetry, className: "mt-2 text-
|
|
4890
|
+
/* @__PURE__ */ jsx32("p", { className: "text-md", children: error }),
|
|
4891
|
+
onRetry && /* @__PURE__ */ jsx32("button", { onClick: onRetry, className: "mt-2 text-sm text-blue-400 hover:underline cursor-pointer", children: "Try again" })
|
|
4882
4892
|
] }) : isEmpty ? /* @__PURE__ */ jsxs27("div", { className: "flex flex-col items-center justify-center py-12 text-neutral-500", children: [
|
|
4883
|
-
/* @__PURE__ */ jsx32("p", { className: "text-
|
|
4884
|
-
hasActiveFilters && onResetFilters && /* @__PURE__ */ jsx32("button", { onClick: onResetFilters, className: "mt-2 text-
|
|
4893
|
+
/* @__PURE__ */ jsx32("p", { className: "text-md", children: emptyMessage }),
|
|
4894
|
+
hasActiveFilters && onResetFilters && /* @__PURE__ */ jsx32("button", { onClick: onResetFilters, className: "mt-2 text-sm text-blue-400 hover:underline cursor-pointer", children: "Reset filters" })
|
|
4885
4895
|
] }) : /* @__PURE__ */ jsxs27("div", { className: "grid grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-2", children: [
|
|
4886
4896
|
visibleItems.map((item) => /* @__PURE__ */ jsx32(RegistryCard, { ...item }, item.name)),
|
|
4887
4897
|
hasMore && /* @__PURE__ */ jsx32("div", { ref: sentinelRef, className: "col-span-full h-1" })
|
|
@@ -5168,8 +5178,8 @@ function ScreenshotUploader({
|
|
|
5168
5178
|
children: [
|
|
5169
5179
|
/* @__PURE__ */ jsx35(ImagePlus, { className: cn("w-6 h-6", isDragging ? "text-blue-400" : "text-neutral-500") }),
|
|
5170
5180
|
/* @__PURE__ */ jsxs29("div", { className: "text-center", children: [
|
|
5171
|
-
/* @__PURE__ */ jsx35("p", { className: "text-
|
|
5172
|
-
/* @__PURE__ */ jsxs29("p", { className: "text-
|
|
5181
|
+
/* @__PURE__ */ jsx35("p", { className: "text-md text-neutral-400", children: isDragging ? "Drop images here" : "Click or drag images to attach" }),
|
|
5182
|
+
/* @__PURE__ */ jsxs29("p", { className: "text-sm text-neutral-500 mt-1", children: [
|
|
5173
5183
|
formatFileSize(remainingSize),
|
|
5174
5184
|
" remaining of ",
|
|
5175
5185
|
formatFileSize(maxTotalSize)
|
|
@@ -5190,7 +5200,7 @@ function ScreenshotUploader({
|
|
|
5190
5200
|
]
|
|
5191
5201
|
}
|
|
5192
5202
|
),
|
|
5193
|
-
error && /* @__PURE__ */ jsxs29("div", { className: "flex items-center gap-2 text-
|
|
5203
|
+
error && /* @__PURE__ */ jsxs29("div", { className: "flex items-center gap-2 text-md text-red-400", children: [
|
|
5194
5204
|
/* @__PURE__ */ jsx35(AlertCircle4, { className: "w-4 h-4 flex-shrink-0" }),
|
|
5195
5205
|
/* @__PURE__ */ jsx35("span", { children: error })
|
|
5196
5206
|
] }),
|
|
@@ -5221,14 +5231,14 @@ function ScreenshotUploader({
|
|
|
5221
5231
|
children: /* @__PURE__ */ jsx35(X6, { className: "w-3 h-3" })
|
|
5222
5232
|
}
|
|
5223
5233
|
),
|
|
5224
|
-
/* @__PURE__ */ jsx35("span", { className: "text-
|
|
5234
|
+
/* @__PURE__ */ jsx35("span", { className: "text-sm text-white truncate", children: s.filename })
|
|
5225
5235
|
] }),
|
|
5226
|
-
/* @__PURE__ */ jsx35("div", { className: "absolute bottom-1 right-1 px-1.5 py-0.5 bg-[var(--background)]/70 rounded text-
|
|
5236
|
+
/* @__PURE__ */ jsx35("div", { className: "absolute bottom-1 right-1 px-1.5 py-0.5 bg-[var(--background)]/70 rounded text-sm text-neutral-400", children: formatFileSize(s.size) })
|
|
5227
5237
|
]
|
|
5228
5238
|
},
|
|
5229
5239
|
s.id
|
|
5230
5240
|
)) }),
|
|
5231
|
-
screenshots.length > 0 && /* @__PURE__ */ jsxs29("div", { className: "flex items-center justify-between text-
|
|
5241
|
+
screenshots.length > 0 && /* @__PURE__ */ jsxs29("div", { className: "flex items-center justify-between text-sm text-neutral-500", children: [
|
|
5232
5242
|
/* @__PURE__ */ jsxs29("span", { children: [
|
|
5233
5243
|
screenshots.length,
|
|
5234
5244
|
" image",
|
|
@@ -5409,17 +5419,17 @@ function ReportBugForm({
|
|
|
5409
5419
|
} = useReportBug(hookOptions);
|
|
5410
5420
|
const hasErrors = (errorCount ?? 0) > 0 || (warnCount ?? 0) > 0;
|
|
5411
5421
|
return /* @__PURE__ */ jsxs30("div", { className: cn("rounded-lg border border-neutral-700 bg-neutral-800", className), children: [
|
|
5412
|
-
/* @__PURE__ */ jsx36("div", { className: "border-b border-neutral-700 px-4 py-3", children: /* @__PURE__ */ jsx36("h3", { className: "text-
|
|
5422
|
+
/* @__PURE__ */ jsx36("div", { className: "border-b border-neutral-700 px-4 py-3", children: /* @__PURE__ */ jsx36("h3", { className: "text-md font-medium text-neutral-200", children: "Report a Bug" }) }),
|
|
5413
5423
|
/* @__PURE__ */ jsxs30("div", { className: "space-y-4 p-4", children: [
|
|
5414
5424
|
/* @__PURE__ */ jsxs30("div", { children: [
|
|
5415
|
-
/* @__PURE__ */ jsx36("label", { className: "mb-2 block text-
|
|
5425
|
+
/* @__PURE__ */ jsx36("label", { className: "mb-2 block text-sm text-neutral-400", children: "Issue Type" }),
|
|
5416
5426
|
/* @__PURE__ */ jsx36("div", { className: "flex flex-wrap gap-2", children: ISSUE_TYPES.map((type) => /* @__PURE__ */ jsx36(
|
|
5417
5427
|
"button",
|
|
5418
5428
|
{
|
|
5419
5429
|
type: "button",
|
|
5420
5430
|
onClick: () => setIssueType(type.value),
|
|
5421
5431
|
className: cn(
|
|
5422
|
-
"px-3 py-1.5 text-
|
|
5432
|
+
"px-3 py-1.5 text-sm font-medium rounded-md transition-all",
|
|
5423
5433
|
issueType === type.value ? "bg-blue-600 text-white" : "bg-neutral-700 text-neutral-400 hover:bg-neutral-600 hover:text-neutral-200"
|
|
5424
5434
|
),
|
|
5425
5435
|
children: type.label
|
|
@@ -5428,7 +5438,7 @@ function ReportBugForm({
|
|
|
5428
5438
|
)) })
|
|
5429
5439
|
] }),
|
|
5430
5440
|
/* @__PURE__ */ jsxs30("div", { children: [
|
|
5431
|
-
/* @__PURE__ */ jsxs30("label", { className: "mb-1.5 block text-
|
|
5441
|
+
/* @__PURE__ */ jsxs30("label", { className: "mb-1.5 block text-sm text-neutral-400", children: [
|
|
5432
5442
|
"Title ",
|
|
5433
5443
|
/* @__PURE__ */ jsx36("span", { className: "text-red-400", children: "*" })
|
|
5434
5444
|
] }),
|
|
@@ -5443,7 +5453,7 @@ function ReportBugForm({
|
|
|
5443
5453
|
)
|
|
5444
5454
|
] }),
|
|
5445
5455
|
/* @__PURE__ */ jsxs30("div", { children: [
|
|
5446
|
-
/* @__PURE__ */ jsxs30("label", { className: "mb-1.5 block text-
|
|
5456
|
+
/* @__PURE__ */ jsxs30("label", { className: "mb-1.5 block text-sm text-neutral-400", children: [
|
|
5447
5457
|
"Description ",
|
|
5448
5458
|
/* @__PURE__ */ jsx36("span", { className: "text-red-400", children: "*" })
|
|
5449
5459
|
] }),
|
|
@@ -5454,12 +5464,12 @@ function ReportBugForm({
|
|
|
5454
5464
|
onChange: (e) => setDescription(e.target.value),
|
|
5455
5465
|
placeholder: "Describe the issue in detail. Include steps to reproduce if applicable.",
|
|
5456
5466
|
rows: 6,
|
|
5457
|
-
className: "w-full px-3 py-1.5 bg-neutral-800 border border-neutral-700 rounded-lg text-
|
|
5467
|
+
className: "w-full px-3 py-1.5 bg-neutral-800 border border-neutral-700 rounded-lg text-md text-neutral-200 placeholder-neutral-500 focus:outline-none focus:border-blue-500 transition-colors resize-none min-h-[120px]"
|
|
5458
5468
|
}
|
|
5459
5469
|
)
|
|
5460
5470
|
] }),
|
|
5461
5471
|
/* @__PURE__ */ jsxs30("div", { children: [
|
|
5462
|
-
/* @__PURE__ */ jsx36("label", { className: "mb-1.5 block text-
|
|
5472
|
+
/* @__PURE__ */ jsx36("label", { className: "mb-1.5 block text-sm text-neutral-400", children: "Email (optional)" }),
|
|
5463
5473
|
/* @__PURE__ */ jsx36(
|
|
5464
5474
|
Input,
|
|
5465
5475
|
{
|
|
@@ -5473,7 +5483,7 @@ function ReportBugForm({
|
|
|
5473
5483
|
)
|
|
5474
5484
|
] }),
|
|
5475
5485
|
/* @__PURE__ */ jsxs30("div", { children: [
|
|
5476
|
-
/* @__PURE__ */ jsx36("label", { className: "mb-2 block text-
|
|
5486
|
+
/* @__PURE__ */ jsx36("label", { className: "mb-2 block text-sm text-neutral-400", children: "Screenshots (optional, max 20MB total)" }),
|
|
5477
5487
|
/* @__PURE__ */ jsx36(
|
|
5478
5488
|
ScreenshotUploader,
|
|
5479
5489
|
{
|
|
@@ -5489,7 +5499,7 @@ function ReportBugForm({
|
|
|
5489
5499
|
/* @__PURE__ */ jsxs30(
|
|
5490
5500
|
"span",
|
|
5491
5501
|
{
|
|
5492
|
-
className: "text-
|
|
5502
|
+
className: "text-md text-neutral-400 cursor-pointer select-none",
|
|
5493
5503
|
onClick: () => setIncludeLogs(!includeLogs),
|
|
5494
5504
|
children: [
|
|
5495
5505
|
"Include error logs",
|
|
@@ -5505,8 +5515,8 @@ function ReportBugForm({
|
|
|
5505
5515
|
)
|
|
5506
5516
|
] }),
|
|
5507
5517
|
includeLogs && capturedErrors && capturedErrors.length > 0 && /* @__PURE__ */ jsxs30("div", { className: "rounded-md border border-neutral-700 bg-neutral-900/50", children: [
|
|
5508
|
-
/* @__PURE__ */ jsx36("div", { className: "px-3 py-2 border-b border-neutral-700", children: /* @__PURE__ */ jsx36("span", { className: "text-
|
|
5509
|
-
/* @__PURE__ */ jsx36("div", { className: "max-h-[200px] overflow-y-auto divide-y divide-neutral-800", children: capturedErrors.map((error) => /* @__PURE__ */ jsx36("div", { className: "px-3 py-2 text-
|
|
5518
|
+
/* @__PURE__ */ jsx36("div", { className: "px-3 py-2 border-b border-neutral-700", children: /* @__PURE__ */ jsx36("span", { className: "text-sm font-medium text-neutral-400", children: "Captured Errors" }) }),
|
|
5519
|
+
/* @__PURE__ */ jsx36("div", { className: "max-h-[200px] overflow-y-auto divide-y divide-neutral-800", children: capturedErrors.map((error) => /* @__PURE__ */ jsx36("div", { className: "px-3 py-2 text-sm", children: /* @__PURE__ */ jsxs30("div", { className: "flex items-start gap-2", children: [
|
|
5510
5520
|
error.count > 1 && /* @__PURE__ */ jsxs30("span", { className: "shrink-0 text-orange-400 font-mono font-medium", children: [
|
|
5511
5521
|
"\xD7",
|
|
5512
5522
|
error.count
|
|
@@ -5517,14 +5527,14 @@ function ReportBugForm({
|
|
|
5517
5527
|
] })
|
|
5518
5528
|
] }),
|
|
5519
5529
|
/* @__PURE__ */ jsxs30("div", { className: "flex items-center justify-end gap-2 border-t border-neutral-700 px-4 py-3", children: [
|
|
5520
|
-
isSubmitting && submissionStatus && /* @__PURE__ */ jsx36("span", { className: "text-
|
|
5530
|
+
isSubmitting && submissionStatus && /* @__PURE__ */ jsx36("span", { className: "text-sm text-neutral-400 mr-auto", children: submissionStatus }),
|
|
5521
5531
|
onCancel && /* @__PURE__ */ jsx36(
|
|
5522
5532
|
"button",
|
|
5523
5533
|
{
|
|
5524
5534
|
type: "button",
|
|
5525
5535
|
onClick: onCancel,
|
|
5526
5536
|
disabled: isSubmitting,
|
|
5527
|
-
className: "rounded-md border border-neutral-700 bg-transparent px-3 py-1.5 text-
|
|
5537
|
+
className: "rounded-md border border-neutral-700 bg-transparent px-3 py-1.5 text-md text-neutral-400 transition-colors hover:bg-neutral-700 hover:text-neutral-200 disabled:opacity-50",
|
|
5528
5538
|
children: "Cancel"
|
|
5529
5539
|
}
|
|
5530
5540
|
),
|
|
@@ -5534,7 +5544,7 @@ function ReportBugForm({
|
|
|
5534
5544
|
type: "button",
|
|
5535
5545
|
onClick: handleSubmit,
|
|
5536
5546
|
disabled: !canSubmit,
|
|
5537
|
-
className: "flex items-center gap-1.5 rounded-md bg-blue-600 px-3 py-1.5 text-
|
|
5547
|
+
className: "flex items-center gap-1.5 rounded-md bg-blue-600 px-3 py-1.5 text-md text-white transition-colors hover:bg-blue-500 disabled:cursor-not-allowed disabled:opacity-50",
|
|
5538
5548
|
children: [
|
|
5539
5549
|
isSubmitting ? /* @__PURE__ */ jsx36(Loader25, { className: "w-3.5 h-3.5 animate-spin" }) : /* @__PURE__ */ jsx36(Send4, { className: "w-3.5 h-3.5" }),
|
|
5540
5550
|
"Submit"
|
|
@@ -6227,12 +6237,12 @@ function getComponentVersion(meta, component) {
|
|
|
6227
6237
|
}
|
|
6228
6238
|
function renderVersionBadge(meta, color) {
|
|
6229
6239
|
if (!meta) return null;
|
|
6230
|
-
return /* @__PURE__ */ jsx37("span", { className: `px-2 py-0.5 ${color} text-
|
|
6240
|
+
return /* @__PURE__ */ jsx37("span", { className: `px-2 py-0.5 ${color} text-sm rounded font-mono`, children: meta.version });
|
|
6231
6241
|
}
|
|
6232
6242
|
function VersionStatus({ exists, version, mismatch, defaultColor = "text-green-400/70" }) {
|
|
6233
6243
|
if (!exists) return /* @__PURE__ */ jsx37("span", { className: "text-red-400", children: "Missing" });
|
|
6234
6244
|
if (!version) return /* @__PURE__ */ jsx37("span", { className: "text-green-400", children: "Found" });
|
|
6235
|
-
return /* @__PURE__ */ jsxs31("span", { className: `text-
|
|
6245
|
+
return /* @__PURE__ */ jsxs31("span", { className: `text-sm font-mono ${mismatch ? "text-yellow-400" : defaultColor}`, children: [
|
|
6236
6246
|
"v",
|
|
6237
6247
|
version
|
|
6238
6248
|
] });
|
|
@@ -6245,10 +6255,10 @@ function SyncStatusBanner({ goldenMeta, liveMeta, components }) {
|
|
|
6245
6255
|
}).length;
|
|
6246
6256
|
return mismatches === 0 ? /* @__PURE__ */ jsxs31("div", { className: "flex items-center gap-2 px-3 py-2 rounded-lg bg-green-500/5 border border-green-500/20", children: [
|
|
6247
6257
|
/* @__PURE__ */ jsx37(Check10, { className: "w-4 h-4 text-green-400" }),
|
|
6248
|
-
/* @__PURE__ */ jsx37("span", { className: "text-
|
|
6258
|
+
/* @__PURE__ */ jsx37("span", { className: "text-md text-green-400", children: "Golden and Live versions are in sync" })
|
|
6249
6259
|
] }) : /* @__PURE__ */ jsxs31("div", { className: "flex items-center gap-2 px-3 py-2 rounded-lg bg-yellow-500/5 border border-yellow-500/20", children: [
|
|
6250
6260
|
/* @__PURE__ */ jsx37(AlertTriangle5, { className: "w-4 h-4 text-yellow-400" }),
|
|
6251
|
-
/* @__PURE__ */ jsxs31("span", { className: "text-
|
|
6261
|
+
/* @__PURE__ */ jsxs31("span", { className: "text-md text-yellow-400", children: [
|
|
6252
6262
|
"Version mismatch \u2014 ",
|
|
6253
6263
|
mismatches,
|
|
6254
6264
|
" component",
|
|
@@ -6278,10 +6288,10 @@ function StatusOverview({
|
|
|
6278
6288
|
/* @__PURE__ */ jsxs31("div", { className: "bg-neutral-900 rounded-lg p-4 border border-amber-500/30", children: [
|
|
6279
6289
|
/* @__PURE__ */ jsxs31("div", { className: "flex items-center gap-3 mb-3", children: [
|
|
6280
6290
|
/* @__PURE__ */ jsx37(Archive, { className: "w-5 h-5 text-amber-400" }),
|
|
6281
|
-
/* @__PURE__ */ jsx37("h3", { className: "text-
|
|
6291
|
+
/* @__PURE__ */ jsx37("h3", { className: "text-md text-neutral-300 font-medium", children: "Bundled Seed (App Distribution)" }),
|
|
6282
6292
|
status?.seed.meta && renderVersionBadge(status.seed.meta, "bg-amber-500/20 text-amber-400")
|
|
6283
6293
|
] }),
|
|
6284
|
-
/* @__PURE__ */ jsxs31("div", { className: "grid grid-cols-2 gap-4 text-
|
|
6294
|
+
/* @__PURE__ */ jsxs31("div", { className: "grid grid-cols-2 gap-4 text-md", children: [
|
|
6285
6295
|
/* @__PURE__ */ jsxs31("div", { children: [
|
|
6286
6296
|
/* @__PURE__ */ jsx37("p", { className: "text-neutral-500", children: "Status" }),
|
|
6287
6297
|
/* @__PURE__ */ jsx37("p", { className: status?.seed.exists ? "text-green-400" : "text-red-400", children: status?.seed.exists ? "Found" : "Missing" })
|
|
@@ -6295,17 +6305,17 @@ function StatusOverview({
|
|
|
6295
6305
|
/* @__PURE__ */ jsx37("p", { className: "text-neutral-300", children: status?.seed.modifiedAt ? formatDate(status.seed.modifiedAt) : "N/A" })
|
|
6296
6306
|
] })
|
|
6297
6307
|
] }),
|
|
6298
|
-
!devtools && /* @__PURE__ */ jsx37("p", { className: "text-
|
|
6308
|
+
!devtools && /* @__PURE__ */ jsx37("p", { className: "text-sm text-neutral-600 mt-3", children: "A compressed archive shipped with every release containing default configuration and templates. On first launch, the seed is extracted to initialize your local files." })
|
|
6299
6309
|
] }),
|
|
6300
6310
|
status?.goldenMeta && status?.liveMeta && /* @__PURE__ */ jsx37(SyncStatusBanner, { goldenMeta: status.goldenMeta, liveMeta: status.liveMeta, components }),
|
|
6301
6311
|
/* @__PURE__ */ jsxs31("div", { className: "grid grid-cols-2 gap-4", children: [
|
|
6302
6312
|
/* @__PURE__ */ jsxs31("div", { className: "bg-neutral-900 rounded-lg p-4 border border-blue-500/30", children: [
|
|
6303
6313
|
/* @__PURE__ */ jsxs31("div", { className: "flex items-center gap-2 mb-3", children: [
|
|
6304
6314
|
/* @__PURE__ */ jsx37("div", { className: "w-3 h-3 rounded-full bg-blue-400" }),
|
|
6305
|
-
/* @__PURE__ */ jsx37("h4", { className: "text-
|
|
6315
|
+
/* @__PURE__ */ jsx37("h4", { className: "text-md text-neutral-300 font-medium", children: "Golden (Reference)" }),
|
|
6306
6316
|
renderVersionBadge(status?.goldenMeta, "bg-blue-500/20 text-blue-400")
|
|
6307
6317
|
] }),
|
|
6308
|
-
/* @__PURE__ */ jsx37("div", { className: "space-y-2 text-
|
|
6318
|
+
/* @__PURE__ */ jsx37("div", { className: "space-y-2 text-md", children: components.map((comp) => {
|
|
6309
6319
|
const version = getComponentVersion(status?.goldenMeta, comp);
|
|
6310
6320
|
const dirKey = `${comp}Golden`;
|
|
6311
6321
|
const dirExists = status?.directories[dirKey]?.exists ?? false;
|
|
@@ -6322,12 +6332,12 @@ function StatusOverview({
|
|
|
6322
6332
|
)
|
|
6323
6333
|
] }, comp);
|
|
6324
6334
|
}) }),
|
|
6325
|
-
!devtools && /* @__PURE__ */ jsx37("p", { className: "text-
|
|
6335
|
+
!devtools && /* @__PURE__ */ jsx37("p", { className: "text-sm text-neutral-600 mt-3", children: "Reference copy extracted from the bundled seed. Always overwritten during app updates to match the latest release. Do not edit directly." })
|
|
6326
6336
|
] }),
|
|
6327
6337
|
/* @__PURE__ */ jsxs31("div", { className: "bg-neutral-900 rounded-lg p-4 border border-green-500/30", children: [
|
|
6328
6338
|
/* @__PURE__ */ jsxs31("div", { className: "flex items-center gap-2 mb-3", children: [
|
|
6329
6339
|
/* @__PURE__ */ jsx37("div", { className: "w-3 h-3 rounded-full bg-green-400" }),
|
|
6330
|
-
/* @__PURE__ */ jsx37("h4", { className: "text-
|
|
6340
|
+
/* @__PURE__ */ jsx37("h4", { className: "text-md text-neutral-300 font-medium", children: "Live (Working Copy)" }),
|
|
6331
6341
|
renderVersionBadge(status?.liveMeta, "bg-green-500/20 text-green-400"),
|
|
6332
6342
|
/* @__PURE__ */ jsxs31("div", { className: "ml-auto relative", ref: resetMenuRef, children: [
|
|
6333
6343
|
/* @__PURE__ */ jsx37(
|
|
@@ -6349,7 +6359,7 @@ function StatusOverview({
|
|
|
6349
6359
|
onResetAll();
|
|
6350
6360
|
setShowResetMenu(false);
|
|
6351
6361
|
},
|
|
6352
|
-
className: "w-full text-left px-3 py-2 text-
|
|
6362
|
+
className: "w-full text-left px-3 py-2 text-md text-neutral-300 hover:bg-neutral-700 transition-colors",
|
|
6353
6363
|
children: "Reset All to Golden"
|
|
6354
6364
|
}
|
|
6355
6365
|
),
|
|
@@ -6361,7 +6371,7 @@ function StatusOverview({
|
|
|
6361
6371
|
onResetComponent(comp);
|
|
6362
6372
|
setShowResetMenu(false);
|
|
6363
6373
|
},
|
|
6364
|
-
className: "w-full text-left px-3 py-2 text-
|
|
6374
|
+
className: "w-full text-left px-3 py-2 text-md text-neutral-400 hover:bg-neutral-700 transition-colors",
|
|
6365
6375
|
children: [
|
|
6366
6376
|
"Reset ",
|
|
6367
6377
|
getLabel(comp)
|
|
@@ -6372,7 +6382,7 @@ function StatusOverview({
|
|
|
6372
6382
|
] })
|
|
6373
6383
|
] })
|
|
6374
6384
|
] }),
|
|
6375
|
-
/* @__PURE__ */ jsx37("div", { className: "space-y-2 text-
|
|
6385
|
+
/* @__PURE__ */ jsx37("div", { className: "space-y-2 text-md", children: components.map((comp) => {
|
|
6376
6386
|
const liveV = getComponentVersion(status?.liveMeta, comp);
|
|
6377
6387
|
const goldenV = getComponentVersion(status?.goldenMeta, comp);
|
|
6378
6388
|
const dirKey = `${comp}Live`;
|
|
@@ -6396,11 +6406,11 @@ function StatusOverview({
|
|
|
6396
6406
|
] })
|
|
6397
6407
|
] }, comp);
|
|
6398
6408
|
}) }),
|
|
6399
|
-
!devtools && /* @__PURE__ */ jsx37("p", { className: "text-
|
|
6409
|
+
!devtools && /* @__PURE__ */ jsx37("p", { className: "text-sm text-neutral-600 mt-3", children: "Your active working copy \u2014 what the app uses at runtime. Customizations are made here and preserved across app updates." })
|
|
6400
6410
|
] })
|
|
6401
6411
|
] }),
|
|
6402
6412
|
!devtools && /* @__PURE__ */ jsxs31("div", { className: "bg-neutral-900/50 border border-neutral-700 rounded-lg p-4", children: [
|
|
6403
|
-
/* @__PURE__ */ jsxs31("p", { className: "text-
|
|
6413
|
+
/* @__PURE__ */ jsxs31("p", { className: "text-sm font-medium text-neutral-400 mb-4", children: [
|
|
6404
6414
|
"How updates work ",
|
|
6405
6415
|
/* @__PURE__ */ jsxs31("span", { className: "font-normal text-neutral-600", children: [
|
|
6406
6416
|
"\u2014 checked per component (",
|
|
@@ -6408,7 +6418,7 @@ function StatusOverview({
|
|
|
6408
6418
|
")"
|
|
6409
6419
|
] })
|
|
6410
6420
|
] }),
|
|
6411
|
-
/* @__PURE__ */ jsxs31("div", { className: "grid grid-cols-[auto_auto_auto_auto_auto_auto_auto] items-center gap-x-2 text-
|
|
6421
|
+
/* @__PURE__ */ jsxs31("div", { className: "grid grid-cols-[auto_auto_auto_auto_auto_auto_auto] items-center gap-x-2 text-sm", children: [
|
|
6412
6422
|
/* @__PURE__ */ jsx37("span", {}),
|
|
6413
6423
|
/* @__PURE__ */ jsx37("span", {}),
|
|
6414
6424
|
/* @__PURE__ */ jsx37("span", {}),
|
|
@@ -6446,14 +6456,14 @@ function StatusOverview({
|
|
|
6446
6456
|
/* @__PURE__ */ jsx37("span", { className: "text-neutral-600 mt-0.5", children: "has changes" })
|
|
6447
6457
|
] })
|
|
6448
6458
|
] }),
|
|
6449
|
-
/* @__PURE__ */ jsx37("p", { className: "text-
|
|
6459
|
+
/* @__PURE__ */ jsx37("p", { className: "text-sm text-neutral-600 mt-3", children: "When a component has no local changes, it is automatically updated to match the new golden version. Components with customizations are left untouched to preserve your edits \u2014 use the File Diff tab to review differences and selectively apply changes. You can reset any component to its golden version at any time using the reset buttons above." })
|
|
6450
6460
|
] }),
|
|
6451
6461
|
devtools && manifest && /* @__PURE__ */ jsxs31("div", { className: "bg-neutral-900 rounded-lg p-4 border border-neutral-700", children: [
|
|
6452
6462
|
/* @__PURE__ */ jsxs31("div", { className: "flex items-center gap-2 mb-3", children: [
|
|
6453
6463
|
/* @__PURE__ */ jsx37(Archive, { className: "w-4 h-4 text-neutral-500" }),
|
|
6454
|
-
/* @__PURE__ */ jsx37("h4", { className: "text-
|
|
6464
|
+
/* @__PURE__ */ jsx37("h4", { className: "text-md text-neutral-300 font-medium", children: "Local Snapshots" })
|
|
6455
6465
|
] }),
|
|
6456
|
-
/* @__PURE__ */ jsx37("div", { className: "flex gap-6 text-
|
|
6466
|
+
/* @__PURE__ */ jsx37("div", { className: "flex gap-6 text-md", children: /* @__PURE__ */ jsxs31("div", { children: [
|
|
6457
6467
|
/* @__PURE__ */ jsx37("span", { className: "text-neutral-500", children: "Count: " }),
|
|
6458
6468
|
/* @__PURE__ */ jsx37("span", { className: "text-neutral-300", children: manifest.snapshots.length })
|
|
6459
6469
|
] }) })
|
|
@@ -6513,11 +6523,11 @@ function DiffFileItem({ file, isSelected, onSelect, onReset, resettingFile, anyR
|
|
|
6513
6523
|
"button",
|
|
6514
6524
|
{
|
|
6515
6525
|
onClick: () => onSelect(file),
|
|
6516
|
-
className: `flex-1 flex items-center gap-2 px-3 py-1 text-
|
|
6526
|
+
className: `flex-1 flex items-center gap-2 px-3 py-1 text-sm ${isSelected ? "text-neutral-300" : "text-neutral-400"}`,
|
|
6517
6527
|
children: [
|
|
6518
6528
|
icon,
|
|
6519
6529
|
/* @__PURE__ */ jsx38("span", { className: "truncate", children: filename }),
|
|
6520
|
-
statusLabel && /* @__PURE__ */ jsx38("span", { className: `text-
|
|
6530
|
+
statusLabel && /* @__PURE__ */ jsx38("span", { className: `text-xs font-medium ml-auto flex-shrink-0 ${statusColor}`, children: statusLabel })
|
|
6521
6531
|
]
|
|
6522
6532
|
}
|
|
6523
6533
|
),
|
|
@@ -6563,9 +6573,9 @@ function DiffFileTreePanel({ sync, componentLabels, renderFileIcon }) {
|
|
|
6563
6573
|
const fileCount = countFiles2(node);
|
|
6564
6574
|
const color = getComponentColor(colorIndex);
|
|
6565
6575
|
const displayLabel = isRoot ? componentLabels?.[label] ?? label.charAt(0).toUpperCase() + label.slice(1) : label;
|
|
6566
|
-
const headerClasses = isRoot ? `${color.text} ${color.hoverBg} border-l-2 ${color.border} ${color.bg} px-3 py-2 text-
|
|
6576
|
+
const headerClasses = isRoot ? `${color.text} ${color.hoverBg} border-l-2 ${color.border} ${color.bg} px-3 py-2 text-md font-medium` : "text-neutral-500 hover:bg-neutral-850 px-3 py-1.5";
|
|
6567
6577
|
const chevronSize = isRoot ? "w-4 h-4" : "w-3 h-3";
|
|
6568
|
-
const countElement = isRoot ? /* @__PURE__ */ jsx38("span", { className: `ml-auto px-1.5 py-0.5 rounded-full text-
|
|
6578
|
+
const countElement = isRoot ? /* @__PURE__ */ jsx38("span", { className: `ml-auto px-1.5 py-0.5 rounded-full text-xs font-medium ${color.pillBg} ${color.text}`, children: fileCount }) : /* @__PURE__ */ jsx38("span", { className: "text-neutral-600 ml-auto", children: fileCount });
|
|
6569
6579
|
const containerLineClass = isRoot ? color.line : lineClass;
|
|
6570
6580
|
return /* @__PURE__ */ jsxs32("div", { children: [
|
|
6571
6581
|
/* @__PURE__ */ jsxs32(
|
|
@@ -6602,7 +6612,7 @@ function DiffFileTreePanel({ sync, componentLabels, renderFileIcon }) {
|
|
|
6602
6612
|
] }, categoryKey);
|
|
6603
6613
|
};
|
|
6604
6614
|
return /* @__PURE__ */ jsxs32("div", { className: "w-72 flex-shrink-0 bg-neutral-900 rounded-lg border border-neutral-700 overflow-hidden flex flex-col", children: [
|
|
6605
|
-
/* @__PURE__ */ jsx38("div", { className: "p-3 border-b border-neutral-700 flex-shrink-0", children: /* @__PURE__ */ jsxs32("div", { className: "flex gap-3 text-
|
|
6615
|
+
/* @__PURE__ */ jsx38("div", { className: "p-3 border-b border-neutral-700 flex-shrink-0", children: /* @__PURE__ */ jsxs32("div", { className: "flex gap-3 text-sm", children: [
|
|
6606
6616
|
/* @__PURE__ */ jsxs32("span", { className: "text-green-400", children: [
|
|
6607
6617
|
"+",
|
|
6608
6618
|
diff.summary.added
|
|
@@ -6625,7 +6635,7 @@ function DiffFileTreePanel({ sync, componentLabels, renderFileIcon }) {
|
|
|
6625
6635
|
"button",
|
|
6626
6636
|
{
|
|
6627
6637
|
onClick: () => setDiffFilter(filter),
|
|
6628
|
-
className: `px-2 py-1 rounded text-
|
|
6638
|
+
className: `px-2 py-1 rounded text-sm transition-colors cursor-pointer ${diffFilter === filter ? "bg-neutral-700 text-neutral-300" : "text-neutral-500 hover:text-neutral-400"}`,
|
|
6629
6639
|
children: filter === "all" ? "All" : filter.charAt(0).toUpperCase() + filter.slice(1)
|
|
6630
6640
|
},
|
|
6631
6641
|
filter
|
|
@@ -6662,21 +6672,21 @@ function DiffEditorPanel({ sync, componentLabels, monacoTheme }) {
|
|
|
6662
6672
|
devtools
|
|
6663
6673
|
} = sync;
|
|
6664
6674
|
if (!selectedDiffFile) {
|
|
6665
|
-
return /* @__PURE__ */ jsx38("div", { className: "flex-1 min-w-0 bg-neutral-900 rounded-lg border border-neutral-700 overflow-hidden flex flex-col", children: /* @__PURE__ */ jsx38("div", { className: "flex items-center justify-center h-full text-
|
|
6675
|
+
return /* @__PURE__ */ jsx38("div", { className: "flex-1 min-w-0 bg-neutral-900 rounded-lg border border-neutral-700 overflow-hidden flex flex-col", children: /* @__PURE__ */ jsx38("div", { className: "flex items-center justify-center h-full text-md text-neutral-500", children: "Select a file from the tree to view differences" }) });
|
|
6666
6676
|
}
|
|
6667
6677
|
const compLabel = componentLabels?.[selectedDiffFile.component] ?? selectedDiffFile.component;
|
|
6668
6678
|
return /* @__PURE__ */ jsxs32("div", { className: "flex-1 min-w-0 bg-neutral-900 rounded-lg border border-neutral-700 overflow-hidden flex flex-col", children: [
|
|
6669
6679
|
/* @__PURE__ */ jsxs32("div", { className: "flex items-center justify-between px-4 py-2 border-b border-neutral-700 flex-shrink-0", children: [
|
|
6670
6680
|
/* @__PURE__ */ jsxs32("div", { className: "flex items-center gap-2", children: [
|
|
6671
6681
|
/* @__PURE__ */ jsx38(FileCode4, { className: "w-4 h-4 flex-shrink-0 text-blue-400/50" }),
|
|
6672
|
-
/* @__PURE__ */ jsxs32("span", { className: "text-
|
|
6682
|
+
/* @__PURE__ */ jsxs32("span", { className: "text-md text-neutral-300 font-medium", children: [
|
|
6673
6683
|
selectedDiffFile.component,
|
|
6674
6684
|
"/",
|
|
6675
6685
|
selectedDiffFile.path
|
|
6676
6686
|
] }),
|
|
6677
|
-
devtools && hasUnsavedChanges && /* @__PURE__ */ jsx38("span", { className: "px-2 py-0.5 bg-amber-500/20 text-amber-400 text-
|
|
6687
|
+
devtools && hasUnsavedChanges && /* @__PURE__ */ jsx38("span", { className: "px-2 py-0.5 bg-amber-500/20 text-amber-400 text-sm rounded", children: "Modified" })
|
|
6678
6688
|
] }),
|
|
6679
|
-
/* @__PURE__ */ jsx38("span", { className: "text-
|
|
6689
|
+
/* @__PURE__ */ jsx38("span", { className: "text-sm text-neutral-500", children: compLabel })
|
|
6680
6690
|
] }),
|
|
6681
6691
|
/* @__PURE__ */ jsx38("div", { className: "flex-1 min-h-0", children: goldenContent !== null || liveContent !== null ? /* @__PURE__ */ jsx38(
|
|
6682
6692
|
DiffEditor,
|
|
@@ -6708,7 +6718,7 @@ function DiffEditorPanel({ sync, componentLabels, monacoTheme }) {
|
|
|
6708
6718
|
}
|
|
6709
6719
|
},
|
|
6710
6720
|
`diff-${selectedDiffFile.path}-${diffSideBySide}`
|
|
6711
|
-
) : /* @__PURE__ */ jsx38("div", { className: "flex items-center justify-center h-full text-
|
|
6721
|
+
) : /* @__PURE__ */ jsx38("div", { className: "flex items-center justify-center h-full text-md text-neutral-500", children: "Loading file content..." }) })
|
|
6712
6722
|
] });
|
|
6713
6723
|
}
|
|
6714
6724
|
function FileDiffViewer({ sync, componentLabels, monacoTheme, renderFileIcon }) {
|
|
@@ -6735,10 +6745,10 @@ function FileDiffViewer({ sync, componentLabels, monacoTheme, renderFileIcon })
|
|
|
6735
6745
|
}
|
|
6736
6746
|
)
|
|
6737
6747
|
] }) }) }),
|
|
6738
|
-
diffLoading ? /* @__PURE__ */ jsx38("div", { className: "text-
|
|
6748
|
+
diffLoading ? /* @__PURE__ */ jsx38("div", { className: "text-md text-neutral-500 text-center py-8", children: "Loading diff..." }) : diff ? /* @__PURE__ */ jsxs32("div", { className: "flex gap-4 flex-1 min-h-[400px]", children: [
|
|
6739
6749
|
/* @__PURE__ */ jsx38(DiffFileTreePanel, { sync, componentLabels, renderFileIcon }),
|
|
6740
6750
|
/* @__PURE__ */ jsx38(DiffEditorPanel, { sync, componentLabels, monacoTheme })
|
|
6741
|
-
] }) : /* @__PURE__ */ jsx38("div", { className: "text-
|
|
6751
|
+
] }) : /* @__PURE__ */ jsx38("div", { className: "text-md text-neutral-500 text-center py-8", children: "No diff data available. Click refresh to load." })
|
|
6742
6752
|
] });
|
|
6743
6753
|
}
|
|
6744
6754
|
|
|
@@ -6776,15 +6786,15 @@ function SnapshotManager({ sync }) {
|
|
|
6776
6786
|
setDeleteTarget(null);
|
|
6777
6787
|
};
|
|
6778
6788
|
if (manifestLoading && !manifest) {
|
|
6779
|
-
return /* @__PURE__ */ jsx39("div", { className: "text-
|
|
6789
|
+
return /* @__PURE__ */ jsx39("div", { className: "text-md text-neutral-500 text-center py-8", children: "Loading snapshots..." });
|
|
6780
6790
|
}
|
|
6781
6791
|
return /* @__PURE__ */ jsxs33("div", { className: "space-y-4", children: [
|
|
6782
6792
|
/* @__PURE__ */ jsxs33("div", { className: "bg-neutral-900 rounded-lg p-4 border border-neutral-700", children: [
|
|
6783
6793
|
/* @__PURE__ */ jsxs33("div", { className: "flex items-center gap-3 mb-3", children: [
|
|
6784
6794
|
/* @__PURE__ */ jsx39(Plus4, { className: "w-5 h-5 text-green-400" }),
|
|
6785
|
-
/* @__PURE__ */ jsx39("h4", { className: "text-
|
|
6795
|
+
/* @__PURE__ */ jsx39("h4", { className: "text-md text-neutral-300 font-medium", children: "Create Snapshot" })
|
|
6786
6796
|
] }),
|
|
6787
|
-
/* @__PURE__ */ jsx39("p", { className: "text-
|
|
6797
|
+
/* @__PURE__ */ jsx39("p", { className: "text-sm text-neutral-600 mb-3", children: "Archives the current live state. If components differ from golden, their patch version is auto-bumped." }),
|
|
6788
6798
|
/* @__PURE__ */ jsxs33("div", { className: "flex gap-2", children: [
|
|
6789
6799
|
/* @__PURE__ */ jsx39("div", { className: "flex-1", children: /* @__PURE__ */ jsx39(
|
|
6790
6800
|
Input,
|
|
@@ -6813,8 +6823,8 @@ function SnapshotManager({ sync }) {
|
|
|
6813
6823
|
/* @__PURE__ */ jsxs33("div", { className: "flex items-center justify-between px-4 py-3 border-b border-neutral-700", children: [
|
|
6814
6824
|
/* @__PURE__ */ jsxs33("div", { className: "flex items-center gap-2", children: [
|
|
6815
6825
|
/* @__PURE__ */ jsx39(Archive2, { className: "w-4 h-4 text-neutral-500" }),
|
|
6816
|
-
/* @__PURE__ */ jsx39("h4", { className: "text-
|
|
6817
|
-
/* @__PURE__ */ jsxs33("span", { className: "text-
|
|
6826
|
+
/* @__PURE__ */ jsx39("h4", { className: "text-md text-neutral-300 font-medium", children: "Snapshots" }),
|
|
6827
|
+
/* @__PURE__ */ jsxs33("span", { className: "text-sm text-neutral-500", children: [
|
|
6818
6828
|
"(",
|
|
6819
6829
|
manifest?.snapshots.length ?? 0,
|
|
6820
6830
|
")"
|
|
@@ -6832,24 +6842,24 @@ function SnapshotManager({ sync }) {
|
|
|
6832
6842
|
}
|
|
6833
6843
|
)
|
|
6834
6844
|
] }),
|
|
6835
|
-
!manifest || manifest.snapshots.length === 0 ? /* @__PURE__ */ jsx39("div", { className: "text-
|
|
6845
|
+
!manifest || manifest.snapshots.length === 0 ? /* @__PURE__ */ jsx39("div", { className: "text-md text-neutral-500 text-center py-8", children: "No snapshots yet" }) : /* @__PURE__ */ jsx39("div", { className: "divide-y divide-neutral-700", children: [...manifest.snapshots].reverse().map((snap) => /* @__PURE__ */ jsxs33(
|
|
6836
6846
|
"div",
|
|
6837
6847
|
{
|
|
6838
6848
|
className: `flex items-center gap-3 px-4 py-3 ${snap.version === manifest.activeVersion ? "bg-green-500/5" : ""}`,
|
|
6839
6849
|
children: [
|
|
6840
6850
|
/* @__PURE__ */ jsxs33("div", { className: "flex-1 min-w-0", children: [
|
|
6841
6851
|
/* @__PURE__ */ jsxs33("div", { className: "flex items-center gap-2", children: [
|
|
6842
|
-
/* @__PURE__ */ jsxs33("span", { className: "text-
|
|
6852
|
+
/* @__PURE__ */ jsxs33("span", { className: "text-md font-mono text-neutral-300", children: [
|
|
6843
6853
|
"v",
|
|
6844
6854
|
snap.version
|
|
6845
6855
|
] }),
|
|
6846
|
-
snap.version === manifest.activeVersion && /* @__PURE__ */ jsx39("span", { className: "px-1.5 py-0.5 bg-green-500/20 text-green-400 text-
|
|
6856
|
+
snap.version === manifest.activeVersion && /* @__PURE__ */ jsx39("span", { className: "px-1.5 py-0.5 bg-green-500/20 text-green-400 text-xs rounded font-medium", children: "active" }),
|
|
6847
6857
|
snap.pinned && /* @__PURE__ */ jsx39(Pin4, { className: "w-3 h-3 text-amber-400" }),
|
|
6848
|
-
snap.metaVersion && /* @__PURE__ */ jsx39("span", { className: "text-
|
|
6858
|
+
snap.metaVersion && /* @__PURE__ */ jsx39("span", { className: "text-sm text-neutral-600 font-mono", children: snap.metaVersion })
|
|
6849
6859
|
] }),
|
|
6850
6860
|
/* @__PURE__ */ jsxs33("div", { className: "flex items-center gap-2 mt-0.5", children: [
|
|
6851
|
-
/* @__PURE__ */ jsx39("span", { className: "text-
|
|
6852
|
-
snap.description && /* @__PURE__ */ jsx39("span", { className: "text-
|
|
6861
|
+
/* @__PURE__ */ jsx39("span", { className: "text-sm text-neutral-600", children: formatDate(snap.createdAt) }),
|
|
6862
|
+
snap.description && /* @__PURE__ */ jsx39("span", { className: "text-sm text-neutral-500 truncate", children: snap.description })
|
|
6853
6863
|
] })
|
|
6854
6864
|
] }),
|
|
6855
6865
|
/* @__PURE__ */ jsxs33("div", { className: "flex items-center gap-1 flex-shrink-0", children: [
|
|
@@ -6971,10 +6981,10 @@ function VersionManager({ sync, components, componentLabels }) {
|
|
|
6971
6981
|
/* @__PURE__ */ jsxs34("div", { className: "bg-neutral-900 rounded-lg p-4 border border-teal-500/30", children: [
|
|
6972
6982
|
/* @__PURE__ */ jsxs34("div", { className: "flex items-center gap-3 mb-3", children: [
|
|
6973
6983
|
/* @__PURE__ */ jsx40(Tag4, { className: "w-5 h-5 text-teal-400" }),
|
|
6974
|
-
/* @__PURE__ */ jsx40("h4", { className: "text-
|
|
6975
|
-
status?.goldenMeta && /* @__PURE__ */ jsx40("span", { className: "px-2 py-0.5 bg-teal-500/20 text-teal-400 text-
|
|
6984
|
+
/* @__PURE__ */ jsx40("h4", { className: "text-md text-neutral-300 font-medium", children: "Golden Version" }),
|
|
6985
|
+
status?.goldenMeta && /* @__PURE__ */ jsx40("span", { className: "px-2 py-0.5 bg-teal-500/20 text-teal-400 text-sm rounded font-mono", children: status.goldenMeta.version })
|
|
6976
6986
|
] }),
|
|
6977
|
-
/* @__PURE__ */ jsx40("p", { className: "text-
|
|
6987
|
+
/* @__PURE__ */ jsx40("p", { className: "text-sm text-neutral-600 mb-3", children: "Bump the overall golden version number. This updates the top-level version in meta.json." }),
|
|
6978
6988
|
/* @__PURE__ */ jsxs34("div", { className: "flex gap-2", children: [
|
|
6979
6989
|
/* @__PURE__ */ jsx40("div", { className: "w-32", children: /* @__PURE__ */ jsx40(
|
|
6980
6990
|
Input,
|
|
@@ -7012,8 +7022,8 @@ function VersionManager({ sync, components, componentLabels }) {
|
|
|
7012
7022
|
] }),
|
|
7013
7023
|
/* @__PURE__ */ jsxs34("div", { className: "bg-neutral-900 rounded-lg border border-neutral-700 overflow-hidden", children: [
|
|
7014
7024
|
/* @__PURE__ */ jsxs34("div", { className: "px-4 py-3 border-b border-neutral-700", children: [
|
|
7015
|
-
/* @__PURE__ */ jsx40("h4", { className: "text-
|
|
7016
|
-
/* @__PURE__ */ jsx40("p", { className: "text-
|
|
7025
|
+
/* @__PURE__ */ jsx40("h4", { className: "text-md text-neutral-300 font-medium", children: "Component Versions" }),
|
|
7026
|
+
/* @__PURE__ */ jsx40("p", { className: "text-sm text-neutral-600 mt-1", children: "Update individual component versions. Click a component to edit." })
|
|
7017
7027
|
] }),
|
|
7018
7028
|
/* @__PURE__ */ jsx40("div", { className: "divide-y divide-neutral-700", children: components.map((comp) => {
|
|
7019
7029
|
const currentVersion = status?.goldenMeta?.components[comp]?.version;
|
|
@@ -7023,12 +7033,12 @@ function VersionManager({ sync, components, componentLabels }) {
|
|
|
7023
7033
|
return /* @__PURE__ */ jsxs34("div", { className: "px-4 py-3", children: [
|
|
7024
7034
|
/* @__PURE__ */ jsxs34("div", { className: "flex items-center justify-between", children: [
|
|
7025
7035
|
/* @__PURE__ */ jsxs34("div", { className: "flex items-center gap-2", children: [
|
|
7026
|
-
/* @__PURE__ */ jsx40("span", { className: "text-
|
|
7027
|
-
currentVersion && /* @__PURE__ */ jsxs34("span", { className: "text-
|
|
7036
|
+
/* @__PURE__ */ jsx40("span", { className: "text-md text-neutral-300", children: getLabel(comp) }),
|
|
7037
|
+
currentVersion && /* @__PURE__ */ jsxs34("span", { className: "text-sm font-mono text-neutral-500", children: [
|
|
7028
7038
|
"v",
|
|
7029
7039
|
currentVersion
|
|
7030
7040
|
] }),
|
|
7031
|
-
mismatch && /* @__PURE__ */ jsxs34("span", { className: "text-
|
|
7041
|
+
mismatch && /* @__PURE__ */ jsxs34("span", { className: "text-xs text-yellow-400", children: [
|
|
7032
7042
|
"(live: v",
|
|
7033
7043
|
liveVersion,
|
|
7034
7044
|
")"
|
|
@@ -7177,7 +7187,7 @@ function GoldenSyncPanel({
|
|
|
7177
7187
|
/* @__PURE__ */ jsxs35("div", { className: "flex items-start justify-between mb-4", children: [
|
|
7178
7188
|
/* @__PURE__ */ jsxs35("div", { className: "space-y-1", children: [
|
|
7179
7189
|
/* @__PURE__ */ jsx41("h3", { className: "text-base font-semibold text-neutral-300", children: TAB_DESCRIPTIONS[activeTab].title }),
|
|
7180
|
-
/* @__PURE__ */ jsx41("p", { className: "text-
|
|
7190
|
+
/* @__PURE__ */ jsx41("p", { className: "text-md text-neutral-400", children: TAB_DESCRIPTIONS[activeTab].description })
|
|
7181
7191
|
] }),
|
|
7182
7192
|
/* @__PURE__ */ jsx41(
|
|
7183
7193
|
IconButton,
|
|
@@ -7195,7 +7205,7 @@ function GoldenSyncPanel({
|
|
|
7195
7205
|
"button",
|
|
7196
7206
|
{
|
|
7197
7207
|
onClick: () => handleTabChange(tab.id),
|
|
7198
|
-
className: `h-[41px] flex items-center gap-2 px-4 text-
|
|
7208
|
+
className: `h-[41px] flex items-center gap-2 px-4 text-md border-b-2 transition-colors cursor-pointer ${activeTab === tab.id ? `${tab.color} border-current bg-neutral-800/50` : "border-transparent text-neutral-500 hover:text-neutral-300 hover:bg-neutral-800/30"}`,
|
|
7199
7209
|
children: [
|
|
7200
7210
|
tab.icon,
|
|
7201
7211
|
tab.label
|
|
@@ -7205,14 +7215,14 @@ function GoldenSyncPanel({
|
|
|
7205
7215
|
)) }),
|
|
7206
7216
|
error && /* @__PURE__ */ jsx41("div", { className: "bg-red-500/10 border border-red-500/30 rounded-lg p-4 mt-4", children: /* @__PURE__ */ jsxs35("div", { className: "flex items-center gap-3", children: [
|
|
7207
7217
|
/* @__PURE__ */ jsx41(AlertCircle5, { className: "w-5 h-5 text-red-400 flex-shrink-0" }),
|
|
7208
|
-
/* @__PURE__ */ jsx41("p", { className: "text-red-400 text-
|
|
7218
|
+
/* @__PURE__ */ jsx41("p", { className: "text-red-400 text-md", children: error })
|
|
7209
7219
|
] }) }),
|
|
7210
7220
|
lastAction && /* @__PURE__ */ jsx41("div", { className: "bg-green-500/10 border border-green-500/30 rounded-lg p-4 mt-4", children: /* @__PURE__ */ jsxs35("div", { className: "flex items-center gap-3", children: [
|
|
7211
7221
|
/* @__PURE__ */ jsx41(Check11, { className: "w-5 h-5 text-green-400 flex-shrink-0" }),
|
|
7212
|
-
/* @__PURE__ */ jsx41("p", { className: "text-green-400 text-
|
|
7222
|
+
/* @__PURE__ */ jsx41("p", { className: "text-green-400 text-md", children: lastAction })
|
|
7213
7223
|
] }) })
|
|
7214
7224
|
] }),
|
|
7215
|
-
/* @__PURE__ */ jsx41("div", { className: activeTab === "diff" ? "flex-1 min-h-0 mt-4" : "space-y-6 mt-4", children: loading && activeTab === "status" ? /* @__PURE__ */ jsx41("div", { className: "text-
|
|
7225
|
+
/* @__PURE__ */ jsx41("div", { className: activeTab === "diff" ? "flex-1 min-h-0 mt-4" : "space-y-6 mt-4", children: loading && activeTab === "status" ? /* @__PURE__ */ jsx41("div", { className: "text-md text-neutral-500 text-center py-8", children: "Loading..." }) : activeTab === "status" ? /* @__PURE__ */ jsx41(
|
|
7216
7226
|
StatusOverview,
|
|
7217
7227
|
{
|
|
7218
7228
|
status,
|
|
@@ -7387,7 +7397,7 @@ function ToolsPathsPanel({
|
|
|
7387
7397
|
} = useToolsPaths({ api, tools, onToolConfigChange });
|
|
7388
7398
|
return /* @__PURE__ */ jsxs36("div", { className: cn("w-full", className), children: [
|
|
7389
7399
|
/* @__PURE__ */ jsxs36("div", { className: "flex items-center justify-between mb-4", children: [
|
|
7390
|
-
/* @__PURE__ */ jsx42("p", { className: "text-
|
|
7400
|
+
/* @__PURE__ */ jsx42("p", { className: "text-sm text-neutral-500 leading-relaxed max-w-xl", children: "Configure CLI paths for AI coding assistants. Specify executable locations to enable integration with your development workflow." }),
|
|
7391
7401
|
/* @__PURE__ */ jsx42(
|
|
7392
7402
|
IconButton,
|
|
7393
7403
|
{
|
|
@@ -7436,10 +7446,10 @@ function ToolsPathsPanel({
|
|
|
7436
7446
|
)
|
|
7437
7447
|
] }),
|
|
7438
7448
|
/* @__PURE__ */ jsxs36("div", { className: "flex items-center gap-3", children: [
|
|
7439
|
-
tool.detected ? /* @__PURE__ */ jsxs36("span", { className: "flex items-center gap-1 text-
|
|
7449
|
+
tool.detected ? /* @__PURE__ */ jsxs36("span", { className: "flex items-center gap-1 text-sm text-green-400", children: [
|
|
7440
7450
|
/* @__PURE__ */ jsx42(Check12, { className: "w-3.5 h-3.5" }),
|
|
7441
7451
|
"Installed"
|
|
7442
|
-
] }) : /* @__PURE__ */ jsxs36("span", { className: "flex items-center gap-1 text-
|
|
7452
|
+
] }) : /* @__PURE__ */ jsxs36("span", { className: "flex items-center gap-1 text-sm text-neutral-500", children: [
|
|
7443
7453
|
/* @__PURE__ */ jsx42(X7, { className: "w-3.5 h-3.5" }),
|
|
7444
7454
|
"Not Found"
|
|
7445
7455
|
] }),
|
|
@@ -7481,11 +7491,11 @@ function ToolsPathsPanel({
|
|
|
7481
7491
|
}
|
|
7482
7492
|
)
|
|
7483
7493
|
] }),
|
|
7484
|
-
isEnabled && !displayPath?.includes("/") && !tool.detected && /* @__PURE__ */ jsx42("p", { className: "text-
|
|
7485
|
-
tool.detected && !tool.binaryPath && /* @__PURE__ */ jsx42("p", { className: "text-
|
|
7486
|
-
!isEnabled && !displayPath?.includes("/") && !tool.detected && /* @__PURE__ */ jsx42("p", { className: "text-
|
|
7494
|
+
isEnabled && !displayPath?.includes("/") && !tool.detected && /* @__PURE__ */ jsx42("p", { className: "text-sm text-red-400 pl-5", children: "Path required when enabled. Enter full path to binary." }),
|
|
7495
|
+
tool.detected && !tool.binaryPath && /* @__PURE__ */ jsx42("p", { className: "text-sm text-neutral-500 pl-5", children: "Using auto-detected path" }),
|
|
7496
|
+
!isEnabled && !displayPath?.includes("/") && !tool.detected && /* @__PURE__ */ jsx42("p", { className: "text-sm text-neutral-500 pl-5", children: "Tool disabled. Enter path to enable." })
|
|
7487
7497
|
] }),
|
|
7488
|
-
tool.detected && !isEnabled && /* @__PURE__ */ jsx42("p", { className: "text-
|
|
7498
|
+
tool.detected && !isEnabled && /* @__PURE__ */ jsx42("p", { className: "text-sm text-yellow-500", children: "Tool disabled \u2014 enable to use in your workflow" })
|
|
7489
7499
|
]
|
|
7490
7500
|
},
|
|
7491
7501
|
tool.id
|
|
@@ -7592,7 +7602,7 @@ function CapturedIssuesPanel({
|
|
|
7592
7602
|
hasErrors ? /* @__PURE__ */ jsxs37("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg p-4 space-y-4", children: [
|
|
7593
7603
|
/* @__PURE__ */ jsx43("div", { className: "flex items-center justify-between", children: /* @__PURE__ */ jsxs37("div", { className: "flex items-center gap-2", children: [
|
|
7594
7604
|
/* @__PURE__ */ jsx43(AlertTriangle6, { className: "w-4 h-4 text-red-400" }),
|
|
7595
|
-
/* @__PURE__ */ jsxs37("span", { className: "text-
|
|
7605
|
+
/* @__PURE__ */ jsxs37("span", { className: "text-md text-neutral-300", children: [
|
|
7596
7606
|
errorCount > 0 && /* @__PURE__ */ jsxs37("span", { className: "text-red-400", children: [
|
|
7597
7607
|
errorCount,
|
|
7598
7608
|
" error",
|
|
@@ -7607,14 +7617,14 @@ function CapturedIssuesPanel({
|
|
|
7607
7617
|
] })
|
|
7608
7618
|
] }) }),
|
|
7609
7619
|
/* @__PURE__ */ jsxs37("div", { className: "space-y-2", children: [
|
|
7610
|
-
/* @__PURE__ */ jsx43("p", { className: "text-
|
|
7611
|
-
/* @__PURE__ */ jsx43("div", { className: "max-h-48 overflow-y-auto bg-neutral-950 border border-neutral-700 rounded-lg p-3 space-y-1", children: errors.map((error) => /* @__PURE__ */ jsxs37("div", { className: "text-
|
|
7620
|
+
/* @__PURE__ */ jsx43("p", { className: "text-md text-neutral-400", children: "Captured Errors" }),
|
|
7621
|
+
/* @__PURE__ */ jsx43("div", { className: "max-h-48 overflow-y-auto bg-neutral-950 border border-neutral-700 rounded-lg p-3 space-y-1", children: errors.map((error) => /* @__PURE__ */ jsxs37("div", { className: "text-sm font-mono break-words", children: [
|
|
7612
7622
|
/* @__PURE__ */ jsx43("span", { className: cn("mr-2 shrink-0", error.level === "warning" ? "text-yellow-400" : "text-red-400"), children: error.count > 1 ? `\xD7${error.count}` : "\u2022" }),
|
|
7613
7623
|
/* @__PURE__ */ jsx43("span", { className: "text-neutral-400 break-all", children: error.message })
|
|
7614
7624
|
] }, error.fingerprint)) })
|
|
7615
7625
|
] }),
|
|
7616
7626
|
/* @__PURE__ */ jsxs37("div", { className: "space-y-3", children: [
|
|
7617
|
-
/* @__PURE__ */ jsx43("p", { className: "text-
|
|
7627
|
+
/* @__PURE__ */ jsx43("p", { className: "text-md text-neutral-400", children: "Add context (optional)" }),
|
|
7618
7628
|
/* @__PURE__ */ jsx43(
|
|
7619
7629
|
Input,
|
|
7620
7630
|
{
|
|
@@ -7630,7 +7640,7 @@ function CapturedIssuesPanel({
|
|
|
7630
7640
|
onChange: (e) => setDescription(e.target.value),
|
|
7631
7641
|
placeholder: "What were you doing when this happened?",
|
|
7632
7642
|
rows: 3,
|
|
7633
|
-
className: "w-full px-3 py-1.5 bg-neutral-750 border border-neutral-600 rounded-lg text-neutral-300 placeholder-neutral-500 focus:outline-none focus:border-blue-500 transition-colors resize-none text-
|
|
7643
|
+
className: "w-full px-3 py-1.5 bg-neutral-750 border border-neutral-600 rounded-lg text-neutral-300 placeholder-neutral-500 focus:outline-none focus:border-blue-500 transition-colors resize-none text-md"
|
|
7634
7644
|
}
|
|
7635
7645
|
),
|
|
7636
7646
|
/* @__PURE__ */ jsx43(
|
|
@@ -7671,16 +7681,16 @@ function CapturedIssuesPanel({
|
|
|
7671
7681
|
] }) : /* @__PURE__ */ jsx43("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg p-6", children: /* @__PURE__ */ jsxs37("div", { className: "flex items-center gap-4", children: [
|
|
7672
7682
|
/* @__PURE__ */ jsx43("div", { className: "w-10 h-10 bg-green-500/10 rounded-lg flex items-center justify-center", children: /* @__PURE__ */ jsx43(Check13, { className: "w-5 h-5 text-green-400" }) }),
|
|
7673
7683
|
/* @__PURE__ */ jsxs37("div", { children: [
|
|
7674
|
-
/* @__PURE__ */ jsx43("h3", { className: "text-
|
|
7675
|
-
/* @__PURE__ */ jsx43("p", { className: "text-
|
|
7684
|
+
/* @__PURE__ */ jsx43("h3", { className: "text-md text-neutral-300 font-medium", children: "No Issues Captured" }),
|
|
7685
|
+
/* @__PURE__ */ jsx43("p", { className: "text-md text-neutral-500", children: "Everything is running smoothly." })
|
|
7676
7686
|
] })
|
|
7677
7687
|
] }) }),
|
|
7678
7688
|
submittedErrors.length > 0 && /* @__PURE__ */ jsx43("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg overflow-hidden", children: /* @__PURE__ */ jsxs37("details", { className: "group", children: [
|
|
7679
7689
|
/* @__PURE__ */ jsxs37("summary", { className: "flex items-center justify-between p-4 cursor-pointer hover:bg-neutral-850 transition-colors", children: [
|
|
7680
7690
|
/* @__PURE__ */ jsxs37("div", { className: "flex items-center gap-2", children: [
|
|
7681
7691
|
/* @__PURE__ */ jsx43(Check13, { className: "w-4 h-4 text-green-400" }),
|
|
7682
|
-
/* @__PURE__ */ jsx43("span", { className: "text-
|
|
7683
|
-
/* @__PURE__ */ jsxs37("span", { className: "text-
|
|
7692
|
+
/* @__PURE__ */ jsx43("span", { className: "text-md text-neutral-300", children: "Previously Reported" }),
|
|
7693
|
+
/* @__PURE__ */ jsxs37("span", { className: "text-sm text-neutral-500", children: [
|
|
7684
7694
|
"(",
|
|
7685
7695
|
submittedErrors.length,
|
|
7686
7696
|
")"
|
|
@@ -7698,12 +7708,12 @@ function CapturedIssuesPanel({
|
|
|
7698
7708
|
/* @__PURE__ */ jsx43(
|
|
7699
7709
|
"p",
|
|
7700
7710
|
{
|
|
7701
|
-
className: "text-
|
|
7711
|
+
className: "text-md text-neutral-300 font-mono truncate",
|
|
7702
7712
|
title: error.message,
|
|
7703
7713
|
children: error.message
|
|
7704
7714
|
}
|
|
7705
7715
|
),
|
|
7706
|
-
/* @__PURE__ */ jsxs37("div", { className: "flex items-center gap-3 mt-1 text-
|
|
7716
|
+
/* @__PURE__ */ jsxs37("div", { className: "flex items-center gap-3 mt-1 text-sm text-neutral-500", children: [
|
|
7707
7717
|
error.count > 0 && /* @__PURE__ */ jsxs37("span", { className: "text-yellow-400/80", children: [
|
|
7708
7718
|
"+",
|
|
7709
7719
|
error.count,
|
|
@@ -7852,12 +7862,12 @@ function SnapshotEntryRow({
|
|
|
7852
7862
|
return /* @__PURE__ */ jsxs38(
|
|
7853
7863
|
"div",
|
|
7854
7864
|
{
|
|
7855
|
-
className: "flex items-center gap-2 px-2 py-1.5 text-
|
|
7865
|
+
className: "flex items-center gap-2 px-2 py-1.5 text-md rounded-md group transition-colors hover:bg-neutral-700/50 text-neutral-400",
|
|
7856
7866
|
style: { paddingLeft: `${depth * 16 + 8}px` },
|
|
7857
7867
|
children: [
|
|
7858
7868
|
/* @__PURE__ */ jsx44(Clock2, { className: "w-3 h-3 shrink-0 text-neutral-500" }),
|
|
7859
|
-
/* @__PURE__ */ jsx44("span", { className: "text-
|
|
7860
|
-
/* @__PURE__ */ jsx44("span", { className: "text-
|
|
7869
|
+
/* @__PURE__ */ jsx44("span", { className: "text-sm flex-1 truncate", children: searchQuery ? highlightMatch(displayName, searchQuery) : displayName }),
|
|
7870
|
+
/* @__PURE__ */ jsx44("span", { className: "text-xs text-neutral-500 shrink-0", title: formatFullDate2(entry.savedAt), children: formatRelativeTime2(entry.savedAt) }),
|
|
7861
7871
|
/* @__PURE__ */ jsx44(
|
|
7862
7872
|
IconButton,
|
|
7863
7873
|
{
|
|
@@ -7893,13 +7903,13 @@ function ExpandableNode({
|
|
|
7893
7903
|
"button",
|
|
7894
7904
|
{
|
|
7895
7905
|
onClick: () => onToggle(path),
|
|
7896
|
-
className: "w-full flex items-center gap-2 px-2 py-1.5 text-
|
|
7906
|
+
className: "w-full flex items-center gap-2 px-2 py-1.5 text-md rounded-md transition-colors cursor-pointer text-neutral-400 hover:bg-neutral-700/50 hover:text-neutral-300",
|
|
7897
7907
|
style: { paddingLeft: `${depth * 16 + 8}px` },
|
|
7898
7908
|
children: [
|
|
7899
7909
|
/* @__PURE__ */ jsx44("span", { className: "w-4 h-4 flex items-center justify-center shrink-0", children: isExpanded ? /* @__PURE__ */ jsx44(ChevronDown10, { className: "w-3.5 h-3.5" }) : /* @__PURE__ */ jsx44(ChevronRight6, { className: "w-3.5 h-3.5" }) }),
|
|
7900
7910
|
icon && /* @__PURE__ */ jsx44("span", { className: "shrink-0", children: icon }),
|
|
7901
7911
|
/* @__PURE__ */ jsx44("span", { className: "truncate flex-1 text-left", children: searchQuery ? highlightMatch(label, searchQuery) : label }),
|
|
7902
|
-
snapshotCount > 0 && /* @__PURE__ */ jsx44("span", { className: "text-
|
|
7912
|
+
snapshotCount > 0 && /* @__PURE__ */ jsx44("span", { className: "text-sm text-neutral-500 bg-neutral-700 px-1.5 py-0.5 rounded shrink-0", children: snapshotCount })
|
|
7903
7913
|
]
|
|
7904
7914
|
}
|
|
7905
7915
|
),
|
|
@@ -7929,10 +7939,10 @@ function SnapshotTree({
|
|
|
7929
7939
|
return count;
|
|
7930
7940
|
}, [scopes]);
|
|
7931
7941
|
if (totalCount === 0) {
|
|
7932
|
-
return /* @__PURE__ */ jsxs38("div", { className: cn("text-
|
|
7942
|
+
return /* @__PURE__ */ jsxs38("div", { className: cn("text-md text-neutral-500 py-8 text-center", className), children: [
|
|
7933
7943
|
"No snapshots saved yet.",
|
|
7934
7944
|
/* @__PURE__ */ jsx44("br", {}),
|
|
7935
|
-
/* @__PURE__ */ jsx44("span", { className: "text-
|
|
7945
|
+
/* @__PURE__ */ jsx44("span", { className: "text-sm", children: "Use the camera button in editors to save snapshots." })
|
|
7936
7946
|
] });
|
|
7937
7947
|
}
|
|
7938
7948
|
return /* @__PURE__ */ jsxs38("div", { className: cn("flex flex-col gap-3", className), children: [
|
|
@@ -7980,7 +7990,7 @@ function SnapshotTree({
|
|
|
7980
7990
|
}
|
|
7981
7991
|
)
|
|
7982
7992
|
] }),
|
|
7983
|
-
/* @__PURE__ */ jsx44("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg p-2 min-h-[200px] max-h-[60vh] overflow-y-auto", children: filteredScopes.length === 0 && searchQuery ? /* @__PURE__ */ jsxs38("p", { className: "text-
|
|
7993
|
+
/* @__PURE__ */ jsx44("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg p-2 min-h-[200px] max-h-[60vh] overflow-y-auto", children: filteredScopes.length === 0 && searchQuery ? /* @__PURE__ */ jsxs38("p", { className: "text-sm text-neutral-500 text-center py-4", children: [
|
|
7984
7994
|
"No snapshots match \u201C",
|
|
7985
7995
|
searchQuery,
|
|
7986
7996
|
"\u201D"
|
|
@@ -8158,7 +8168,7 @@ function SnapshotBrowserPanel({
|
|
|
8158
8168
|
/* @__PURE__ */ jsx45("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg p-4", children: /* @__PURE__ */ jsxs39("div", { className: "flex items-center justify-between", children: [
|
|
8159
8169
|
/* @__PURE__ */ jsxs39("div", { children: [
|
|
8160
8170
|
/* @__PURE__ */ jsx45("label", { className: "text-neutral-300", children: "Snapshot Limit" }),
|
|
8161
|
-
/* @__PURE__ */ jsx45("p", { className: "text-
|
|
8171
|
+
/* @__PURE__ */ jsx45("p", { className: "text-md text-neutral-500", children: "Maximum number of snapshots to keep per item (1-50)" })
|
|
8162
8172
|
] }),
|
|
8163
8173
|
/* @__PURE__ */ jsx45(
|
|
8164
8174
|
Select,
|
|
@@ -8173,7 +8183,7 @@ function SnapshotBrowserPanel({
|
|
|
8173
8183
|
/* @__PURE__ */ jsxs39("div", { className: "flex items-center justify-between mb-3", children: [
|
|
8174
8184
|
/* @__PURE__ */ jsxs39("div", { children: [
|
|
8175
8185
|
/* @__PURE__ */ jsx45("label", { className: "text-neutral-300", children: "Browse Snapshots" }),
|
|
8176
|
-
/* @__PURE__ */ jsx45("p", { className: "text-
|
|
8186
|
+
/* @__PURE__ */ jsx45("p", { className: "text-md text-neutral-500", children: totalSnapshotCount === 0 ? "No snapshots saved yet" : `${totalSnapshotCount} snapshot${totalSnapshotCount === 1 ? "" : "s"} stored` })
|
|
8177
8187
|
] }),
|
|
8178
8188
|
/* @__PURE__ */ jsx45(
|
|
8179
8189
|
IconButton,
|
|
@@ -8209,7 +8219,7 @@ function SnapshotBrowserPanel({
|
|
|
8209
8219
|
] }),
|
|
8210
8220
|
/* @__PURE__ */ jsx45("div", { className: "bg-neutral-900/50 border border-neutral-700 rounded-lg p-4", children: /* @__PURE__ */ jsxs39("div", { className: "flex items-start gap-3", children: [
|
|
8211
8221
|
/* @__PURE__ */ jsx45(HelpCircle3, { className: "w-4 h-4 text-neutral-500 mt-0.5 shrink-0" }),
|
|
8212
|
-
/* @__PURE__ */ jsxs39("div", { className: "text-
|
|
8222
|
+
/* @__PURE__ */ jsxs39("div", { className: "text-md text-neutral-500 space-y-2", children: [
|
|
8213
8223
|
/* @__PURE__ */ jsx45("p", { children: /* @__PURE__ */ jsx45("strong", { className: "text-neutral-400", children: "How snapshots work:" }) }),
|
|
8214
8224
|
/* @__PURE__ */ jsxs39("ul", { className: "list-disc list-inside space-y-1 ml-1", children: [
|
|
8215
8225
|
/* @__PURE__ */ jsx45("li", { children: "Click \u201CSave Snapshot\u201D in any editor to save the current version" }),
|
|
@@ -8379,6 +8389,54 @@ function useSnippetsEditor({ api, snippets }) {
|
|
|
8379
8389
|
|
|
8380
8390
|
// components/sections/snippets-editor/snippets-editor.tsx
|
|
8381
8391
|
import { jsx as jsx46, jsxs as jsxs40 } from "react/jsx-runtime";
|
|
8392
|
+
var ACCENT_DIVIDER_HOVER = {
|
|
8393
|
+
blue: "hover:bg-blue-500/30",
|
|
8394
|
+
purple: "hover:bg-purple-500/30",
|
|
8395
|
+
orange: "hover:bg-orange-500/30",
|
|
8396
|
+
green: "hover:bg-green-500/30",
|
|
8397
|
+
pink: "hover:bg-pink-500/30",
|
|
8398
|
+
amber: "hover:bg-amber-500/30",
|
|
8399
|
+
emerald: "hover:bg-emerald-500/30",
|
|
8400
|
+
teal: "hover:bg-teal-500/30",
|
|
8401
|
+
sky: "hover:bg-sky-500/30",
|
|
8402
|
+
violet: "hover:bg-violet-500/30"
|
|
8403
|
+
};
|
|
8404
|
+
var ACCENT_TEXT = {
|
|
8405
|
+
blue: "text-blue-400",
|
|
8406
|
+
purple: "text-purple-400",
|
|
8407
|
+
orange: "text-orange-400",
|
|
8408
|
+
green: "text-green-400",
|
|
8409
|
+
pink: "text-pink-400",
|
|
8410
|
+
amber: "text-amber-400",
|
|
8411
|
+
emerald: "text-emerald-400",
|
|
8412
|
+
teal: "text-teal-400",
|
|
8413
|
+
sky: "text-sky-400",
|
|
8414
|
+
violet: "text-violet-400"
|
|
8415
|
+
};
|
|
8416
|
+
var ACCENT_BORDER2 = {
|
|
8417
|
+
blue: "border-l-blue-400",
|
|
8418
|
+
purple: "border-l-purple-400",
|
|
8419
|
+
orange: "border-l-orange-400",
|
|
8420
|
+
green: "border-l-green-400",
|
|
8421
|
+
pink: "border-l-pink-400",
|
|
8422
|
+
amber: "border-l-amber-400",
|
|
8423
|
+
emerald: "border-l-emerald-400",
|
|
8424
|
+
teal: "border-l-teal-400",
|
|
8425
|
+
sky: "border-l-sky-400",
|
|
8426
|
+
violet: "border-l-violet-400"
|
|
8427
|
+
};
|
|
8428
|
+
var ACCENT_BUTTON2 = {
|
|
8429
|
+
blue: "bg-blue-600 hover:bg-blue-500",
|
|
8430
|
+
purple: "bg-purple-600 hover:bg-purple-500",
|
|
8431
|
+
orange: "bg-orange-600 hover:bg-orange-500",
|
|
8432
|
+
green: "bg-green-600 hover:bg-green-500",
|
|
8433
|
+
pink: "bg-pink-600 hover:bg-pink-500",
|
|
8434
|
+
amber: "bg-amber-600 hover:bg-amber-500",
|
|
8435
|
+
emerald: "bg-emerald-600 hover:bg-emerald-500",
|
|
8436
|
+
teal: "bg-teal-600 hover:bg-teal-500",
|
|
8437
|
+
sky: "bg-sky-600 hover:bg-sky-500",
|
|
8438
|
+
violet: "bg-violet-600 hover:bg-violet-500"
|
|
8439
|
+
};
|
|
8382
8440
|
var MIN_SIDEBAR = 200;
|
|
8383
8441
|
var MAX_SIDEBAR = 350;
|
|
8384
8442
|
var DEFAULT_SIDEBAR = 260;
|
|
@@ -8387,7 +8445,8 @@ function SnippetsEditor({
|
|
|
8387
8445
|
snippets,
|
|
8388
8446
|
title = "Snippets",
|
|
8389
8447
|
description = "Define reusable snippets for prompts using {{SNIPPET_NAME}} syntax.",
|
|
8390
|
-
className
|
|
8448
|
+
className,
|
|
8449
|
+
accentColor = "blue"
|
|
8391
8450
|
}) {
|
|
8392
8451
|
const {
|
|
8393
8452
|
selectedName,
|
|
@@ -8431,10 +8490,10 @@ function SnippetsEditor({
|
|
|
8431
8490
|
/* @__PURE__ */ jsxs40("div", { className: "flex items-center justify-between px-4 py-3 border-b border-neutral-700 bg-purple-500/5", children: [
|
|
8432
8491
|
/* @__PURE__ */ jsxs40("div", { className: "flex items-center gap-2", children: [
|
|
8433
8492
|
/* @__PURE__ */ jsx46(Braces, { className: "w-4 h-4 text-purple-400" }),
|
|
8434
|
-
/* @__PURE__ */ jsx46("h3", { className: "text-
|
|
8435
|
-
/* @__PURE__ */ jsx46("span", { className: "px-2 py-0.5 text-
|
|
8493
|
+
/* @__PURE__ */ jsx46("h3", { className: "text-md font-medium text-neutral-300", children: title }),
|
|
8494
|
+
/* @__PURE__ */ jsx46("span", { className: "px-2 py-0.5 text-sm rounded-full bg-neutral-700 text-neutral-400", children: snippets.length })
|
|
8436
8495
|
] }),
|
|
8437
|
-
/* @__PURE__ */ jsx46("p", { className: "text-
|
|
8496
|
+
/* @__PURE__ */ jsx46("p", { className: "text-sm text-neutral-500 hidden sm:block", children: description })
|
|
8438
8497
|
] }),
|
|
8439
8498
|
/* @__PURE__ */ jsxs40("div", { className: "flex flex-1 min-h-[400px]", children: [
|
|
8440
8499
|
/* @__PURE__ */ jsxs40("div", { className: "flex flex-col border-r border-neutral-700", style: { width: sidebarWidth, minWidth: MIN_SIDEBAR }, children: [
|
|
@@ -8464,8 +8523,8 @@ function SnippetsEditor({
|
|
|
8464
8523
|
/* @__PURE__ */ jsxs40("div", { className: "flex-1 overflow-y-auto", children: [
|
|
8465
8524
|
filteredSnippets.length === 0 && !isAdding && /* @__PURE__ */ jsxs40("div", { className: "text-center py-10 px-4", children: [
|
|
8466
8525
|
/* @__PURE__ */ jsx46(Braces, { className: "w-8 h-8 mx-auto text-purple-400/40 mb-3" }),
|
|
8467
|
-
/* @__PURE__ */ jsx46("p", { className: "text-
|
|
8468
|
-
/* @__PURE__ */ jsx46("p", { className: "text-
|
|
8526
|
+
/* @__PURE__ */ jsx46("p", { className: "text-sm text-neutral-500 mb-1", children: searchQuery ? "No matching snippets" : "No snippets defined" }),
|
|
8527
|
+
/* @__PURE__ */ jsx46("p", { className: "text-xs text-neutral-600", children: searchQuery ? "Try a different search term" : "Click + to add your first snippet" })
|
|
8469
8528
|
] }),
|
|
8470
8529
|
filteredSnippets.map((snippet) => /* @__PURE__ */ jsx46(
|
|
8471
8530
|
SnippetListItem,
|
|
@@ -8473,7 +8532,8 @@ function SnippetsEditor({
|
|
|
8473
8532
|
snippet,
|
|
8474
8533
|
selected: selectedName === snippet.name,
|
|
8475
8534
|
onSelect: () => selectSnippet(snippet.name),
|
|
8476
|
-
onDelete: () => remove(snippet.name)
|
|
8535
|
+
onDelete: () => remove(snippet.name),
|
|
8536
|
+
accentColor
|
|
8477
8537
|
},
|
|
8478
8538
|
snippet.name
|
|
8479
8539
|
))
|
|
@@ -8482,7 +8542,7 @@ function SnippetsEditor({
|
|
|
8482
8542
|
/* @__PURE__ */ jsx46(
|
|
8483
8543
|
"div",
|
|
8484
8544
|
{
|
|
8485
|
-
className:
|
|
8545
|
+
className: `w-1 cursor-col-resize bg-transparent ${ACCENT_DIVIDER_HOVER[accentColor] ?? ACCENT_DIVIDER_HOVER.blue} transition-colors flex-shrink-0`,
|
|
8486
8546
|
onMouseDown: onDividerMouseDown
|
|
8487
8547
|
}
|
|
8488
8548
|
),
|
|
@@ -8498,15 +8558,16 @@ function SnippetsEditor({
|
|
|
8498
8558
|
onSave: save,
|
|
8499
8559
|
onReset: resetForm,
|
|
8500
8560
|
onDelete: isEditing && selectedName ? () => remove(selectedName) : void 0,
|
|
8501
|
-
onCancel: isAdding ? cancelForm : void 0
|
|
8561
|
+
onCancel: isAdding ? cancelForm : void 0,
|
|
8562
|
+
accentColor
|
|
8502
8563
|
}
|
|
8503
8564
|
) : /* @__PURE__ */ jsx46("div", { className: "flex-1 flex items-center justify-center p-6", children: /* @__PURE__ */ jsxs40("div", { className: "text-center max-w-xs", children: [
|
|
8504
8565
|
/* @__PURE__ */ jsx46(Braces, { className: "w-10 h-10 mx-auto text-purple-400/30 mb-4" }),
|
|
8505
|
-
/* @__PURE__ */ jsx46("p", { className: "text-
|
|
8506
|
-
/* @__PURE__ */ jsxs40("p", { className: "text-
|
|
8566
|
+
/* @__PURE__ */ jsx46("p", { className: "text-md text-neutral-500 mb-2", children: "Select a snippet to edit" }),
|
|
8567
|
+
/* @__PURE__ */ jsxs40("p", { className: "text-sm text-neutral-600 leading-relaxed", children: [
|
|
8507
8568
|
"Choose a snippet from the list, or click",
|
|
8508
8569
|
" ",
|
|
8509
|
-
/* @__PURE__ */ jsx46("span", { className:
|
|
8570
|
+
/* @__PURE__ */ jsx46("span", { className: ACCENT_TEXT[accentColor] ?? ACCENT_TEXT.blue, children: "+" }),
|
|
8510
8571
|
" to create a new one. Reference snippets in prompts with",
|
|
8511
8572
|
" ",
|
|
8512
8573
|
/* @__PURE__ */ jsx46("span", { className: "font-mono text-purple-400", children: "{{SNIPPET_NAME}}" }),
|
|
@@ -8516,20 +8577,20 @@ function SnippetsEditor({
|
|
|
8516
8577
|
] })
|
|
8517
8578
|
] });
|
|
8518
8579
|
}
|
|
8519
|
-
function SnippetListItem({ snippet, selected, onSelect, onDelete }) {
|
|
8580
|
+
function SnippetListItem({ snippet, selected, onSelect, onDelete, accentColor }) {
|
|
8520
8581
|
return /* @__PURE__ */ jsxs40(
|
|
8521
8582
|
"div",
|
|
8522
8583
|
{
|
|
8523
8584
|
className: cn(
|
|
8524
8585
|
"group flex items-start gap-2 px-3 py-2.5 cursor-pointer transition-colors border-l-2",
|
|
8525
|
-
selected ?
|
|
8586
|
+
selected ? `bg-neutral-850 ${ACCENT_BORDER2[accentColor] ?? ACCENT_BORDER2.blue}` : "border-l-transparent hover:bg-neutral-850/50"
|
|
8526
8587
|
),
|
|
8527
8588
|
onClick: onSelect,
|
|
8528
8589
|
children: [
|
|
8529
8590
|
/* @__PURE__ */ jsxs40("div", { className: "flex-1 min-w-0", children: [
|
|
8530
|
-
/* @__PURE__ */ jsx46("p", { className: "text-
|
|
8531
|
-
/* @__PURE__ */ jsx46("p", { className: "text-
|
|
8532
|
-
snippet.value && /* @__PURE__ */ jsxs40("p", { className: "text-
|
|
8591
|
+
/* @__PURE__ */ jsx46("p", { className: "text-sm font-mono font-medium text-neutral-300 truncate", children: snippet.name }),
|
|
8592
|
+
/* @__PURE__ */ jsx46("p", { className: "text-xs text-neutral-500 truncate mt-0.5", children: snippet.description }),
|
|
8593
|
+
snippet.value && /* @__PURE__ */ jsxs40("p", { className: "text-xs text-neutral-600 truncate mt-0.5 font-mono", children: [
|
|
8533
8594
|
snippet.value.slice(0, 80),
|
|
8534
8595
|
snippet.value.length > 80 ? "..." : ""
|
|
8535
8596
|
] })
|
|
@@ -8560,12 +8621,13 @@ function SnippetForm({
|
|
|
8560
8621
|
onSave,
|
|
8561
8622
|
onReset,
|
|
8562
8623
|
onDelete,
|
|
8563
|
-
onCancel
|
|
8624
|
+
onCancel,
|
|
8625
|
+
accentColor
|
|
8564
8626
|
}) {
|
|
8565
8627
|
return /* @__PURE__ */ jsxs40("div", { className: "flex-1 flex flex-col", children: [
|
|
8566
8628
|
/* @__PURE__ */ jsxs40("div", { className: "flex-1 overflow-y-auto p-4 space-y-4", children: [
|
|
8567
8629
|
/* @__PURE__ */ jsxs40("div", { children: [
|
|
8568
|
-
/* @__PURE__ */ jsxs40("label", { className: "block text-
|
|
8630
|
+
/* @__PURE__ */ jsxs40("label", { className: "block text-sm text-neutral-500 mb-1.5", children: [
|
|
8569
8631
|
"Snippet Name ",
|
|
8570
8632
|
/* @__PURE__ */ jsx46("span", { className: "text-red-400", children: "*" })
|
|
8571
8633
|
] }),
|
|
@@ -8579,13 +8641,13 @@ function SnippetForm({
|
|
|
8579
8641
|
autoFocus: !isEditing
|
|
8580
8642
|
}
|
|
8581
8643
|
),
|
|
8582
|
-
/* @__PURE__ */ jsxs40("p", { className: "mt-1 text-
|
|
8644
|
+
/* @__PURE__ */ jsxs40("p", { className: "mt-1 text-xs text-neutral-600", children: [
|
|
8583
8645
|
"Use in prompts as ",
|
|
8584
8646
|
/* @__PURE__ */ jsx46("span", { className: "font-mono text-purple-400", children: "{{" + (formData.name || "NAME") + "}}" })
|
|
8585
8647
|
] })
|
|
8586
8648
|
] }),
|
|
8587
8649
|
/* @__PURE__ */ jsxs40("div", { children: [
|
|
8588
|
-
/* @__PURE__ */ jsxs40("label", { className: "block text-
|
|
8650
|
+
/* @__PURE__ */ jsxs40("label", { className: "block text-sm text-neutral-500 mb-1.5", children: [
|
|
8589
8651
|
"Description ",
|
|
8590
8652
|
/* @__PURE__ */ jsx46("span", { className: "text-red-400", children: "*" })
|
|
8591
8653
|
] }),
|
|
@@ -8599,7 +8661,7 @@ function SnippetForm({
|
|
|
8599
8661
|
)
|
|
8600
8662
|
] }),
|
|
8601
8663
|
/* @__PURE__ */ jsxs40("div", { children: [
|
|
8602
|
-
/* @__PURE__ */ jsx46("label", { className: "block text-
|
|
8664
|
+
/* @__PURE__ */ jsx46("label", { className: "block text-sm text-neutral-500 mb-1.5", children: "Value" }),
|
|
8603
8665
|
/* @__PURE__ */ jsx46(
|
|
8604
8666
|
ResizableTextarea,
|
|
8605
8667
|
{
|
|
@@ -8610,9 +8672,9 @@ function SnippetForm({
|
|
|
8610
8672
|
minHeight: 160
|
|
8611
8673
|
}
|
|
8612
8674
|
),
|
|
8613
|
-
/* @__PURE__ */ jsx46("p", { className: "mt-1 text-
|
|
8675
|
+
/* @__PURE__ */ jsx46("p", { className: "mt-1 text-xs text-neutral-600", children: "Can be a single value, multi-line text, or an entire document" })
|
|
8614
8676
|
] }),
|
|
8615
|
-
formError && /* @__PURE__ */ jsx46("div", { className: "px-3 py-2 bg-red-500/10 border border-red-500/30 rounded-lg", children: /* @__PURE__ */ jsx46("p", { className: "text-
|
|
8677
|
+
formError && /* @__PURE__ */ jsx46("div", { className: "px-3 py-2 bg-red-500/10 border border-red-500/30 rounded-lg", children: /* @__PURE__ */ jsx46("p", { className: "text-sm text-red-400", children: formError }) })
|
|
8616
8678
|
] }),
|
|
8617
8679
|
/* @__PURE__ */ jsxs40("div", { className: "flex items-center justify-between gap-2 border-t border-neutral-700 px-4 py-3", children: [
|
|
8618
8680
|
/* @__PURE__ */ jsx46("div", { children: onDelete && /* @__PURE__ */ jsx46(
|
|
@@ -8633,7 +8695,7 @@ function SnippetForm({
|
|
|
8633
8695
|
type: "button",
|
|
8634
8696
|
onClick: onCancel,
|
|
8635
8697
|
disabled: isSaving,
|
|
8636
|
-
className: "rounded-md border border-neutral-700 bg-transparent px-3 py-1.5 text-
|
|
8698
|
+
className: "rounded-md border border-neutral-700 bg-transparent px-3 py-1.5 text-sm text-neutral-400 transition-colors hover:bg-neutral-700 hover:text-neutral-300 disabled:opacity-50",
|
|
8637
8699
|
children: "Cancel"
|
|
8638
8700
|
}
|
|
8639
8701
|
),
|
|
@@ -8654,7 +8716,7 @@ function SnippetForm({
|
|
|
8654
8716
|
type: "button",
|
|
8655
8717
|
onClick: onSave,
|
|
8656
8718
|
disabled: isSaving,
|
|
8657
|
-
className:
|
|
8719
|
+
className: `flex items-center gap-1.5 rounded-md ${ACCENT_BUTTON2[accentColor] ?? ACCENT_BUTTON2.blue} px-3 py-1.5 text-sm text-white transition-colors disabled:cursor-not-allowed disabled:opacity-50`,
|
|
8658
8720
|
children: [
|
|
8659
8721
|
/* @__PURE__ */ jsx46(Save4, { className: "w-3 h-3" }),
|
|
8660
8722
|
isEditing ? "Save" : "Add"
|
|
@@ -8864,10 +8926,10 @@ ${varInfo.description}${varInfo.example ? `
|
|
|
8864
8926
|
style.id = styleId;
|
|
8865
8927
|
style.textContent = `
|
|
8866
8928
|
.template-variable-highlight {
|
|
8867
|
-
background-color: rgba(
|
|
8868
|
-
border: 1px solid rgba(
|
|
8929
|
+
background-color: rgba(129, 140, 248, 0.2);
|
|
8930
|
+
border: 1px solid rgba(129, 140, 248, 0.4);
|
|
8869
8931
|
border-radius: 3px;
|
|
8870
|
-
color:
|
|
8932
|
+
color: rgb(129, 140, 248) !important;
|
|
8871
8933
|
font-weight: 500;
|
|
8872
8934
|
}
|
|
8873
8935
|
`;
|
|
@@ -8974,7 +9036,7 @@ ${varInfo.description}${varInfo.example ? `
|
|
|
8974
9036
|
"button",
|
|
8975
9037
|
{
|
|
8976
9038
|
onClick: () => setActiveTab(tool.id),
|
|
8977
|
-
className: `flex-1 flex items-center justify-center gap-1.5 px-2 text-
|
|
9039
|
+
className: `flex-1 flex items-center justify-center gap-1.5 px-2 text-sm font-medium border-b-2 transition-colors ${isActive ? `border-current ${activeColor} bg-neutral-850` : "border-neutral-700 text-neutral-500 hover:text-neutral-400 hover:bg-neutral-850/50"}`,
|
|
8978
9040
|
title: tool.name,
|
|
8979
9041
|
children: [
|
|
8980
9042
|
tool.icon ?? /* @__PURE__ */ jsx47(AiToolIcon, { tool: tool.id, size: 14 }),
|
|
@@ -8986,7 +9048,7 @@ ${varInfo.description}${varInfo.example ? `
|
|
|
8986
9048
|
}) }),
|
|
8987
9049
|
checklistMissing && /* @__PURE__ */ jsxs41("div", { className: "flex items-start gap-2 px-3 py-2 bg-red-400/10 border-b border-red-400/30 shrink-0", children: [
|
|
8988
9050
|
/* @__PURE__ */ jsx47(AlertTriangle7, { className: "w-4 h-4 text-red-400 shrink-0 mt-0.5" }),
|
|
8989
|
-
/* @__PURE__ */ jsxs41("div", { className: "text-
|
|
9051
|
+
/* @__PURE__ */ jsxs41("div", { className: "text-sm text-red-400", children: [
|
|
8990
9052
|
/* @__PURE__ */ jsx47("span", { className: "font-medium", children: 'Missing "# Verification Checklist" section.' }),
|
|
8991
9053
|
" ",
|
|
8992
9054
|
"When verification is enabled, only content under this heading will be sent to the AI for output validation."
|
|
@@ -9061,11 +9123,11 @@ ${varInfo.description}${varInfo.example ? `
|
|
|
9061
9123
|
/* @__PURE__ */ jsxs41("div", { className: "flex items-center gap-2", children: [
|
|
9062
9124
|
/* @__PURE__ */ jsx47(Variable, { className: "w-4 h-4 text-neutral-500 shrink-0" }),
|
|
9063
9125
|
/* @__PURE__ */ jsxs41("div", { className: "min-w-0", children: [
|
|
9064
|
-
/* @__PURE__ */ jsx47("div", { className: "text-
|
|
9065
|
-
/* @__PURE__ */ jsx47("div", { className: "text-
|
|
9126
|
+
/* @__PURE__ */ jsx47("div", { className: "text-sm font-medium text-neutral-400", children: "Placeholders" }),
|
|
9127
|
+
/* @__PURE__ */ jsx47("div", { className: "text-sm text-neutral-600 truncate", children: "Available placeholders" })
|
|
9066
9128
|
] })
|
|
9067
9129
|
] }),
|
|
9068
|
-
/* @__PURE__ */ jsx47("span", { className: "px-1.5 py-0.5 bg-violet-400/20 text-violet-400 rounded text-
|
|
9130
|
+
/* @__PURE__ */ jsx47("span", { className: "px-1.5 py-0.5 bg-violet-400/20 text-violet-400 rounded text-sm", children: variableSearch.trim() ? `${filteredVariables.length}/${variables.length}` : variables.length })
|
|
9069
9131
|
] }),
|
|
9070
9132
|
/* @__PURE__ */ jsx47("div", { className: "px-2.5 py-2 border-b border-neutral-700 shrink-0", children: /* @__PURE__ */ jsxs41("div", { className: "relative", children: [
|
|
9071
9133
|
/* @__PURE__ */ jsx47(Search8, { className: "absolute left-2 top-1/2 -translate-y-1/2 w-3 h-3 text-neutral-500" }),
|
|
@@ -9091,7 +9153,7 @@ ${varInfo.description}${varInfo.example ? `
|
|
|
9091
9153
|
}
|
|
9092
9154
|
)
|
|
9093
9155
|
] }) }),
|
|
9094
|
-
/* @__PURE__ */ jsx47("div", { className: "px-3 py-2 border-b border-neutral-700 shrink-0", children: /* @__PURE__ */ jsxs41("div", { className: "flex items-center gap-1.5 text-
|
|
9156
|
+
/* @__PURE__ */ jsx47("div", { className: "px-3 py-2 border-b border-neutral-700 shrink-0", children: /* @__PURE__ */ jsxs41("div", { className: "flex items-center gap-1.5 text-sm text-neutral-500", children: [
|
|
9095
9157
|
/* @__PURE__ */ jsx47(Info5, { className: "w-3 h-3 flex-shrink-0" }),
|
|
9096
9158
|
/* @__PURE__ */ jsxs41("span", { children: [
|
|
9097
9159
|
"Type ",
|
|
@@ -9110,7 +9172,7 @@ ${varInfo.description}${varInfo.example ? `
|
|
|
9110
9172
|
accentColor: "purple",
|
|
9111
9173
|
showCopyPlaceholder: true
|
|
9112
9174
|
}
|
|
9113
|
-
) }, variable.name)) : variableSearch.trim() ? /* @__PURE__ */ jsxs41("div", { className: "text-center py-4 text-
|
|
9175
|
+
) }, variable.name)) : variableSearch.trim() ? /* @__PURE__ */ jsxs41("div", { className: "text-center py-4 text-sm text-neutral-500", children: [
|
|
9114
9176
|
'No placeholders match "',
|
|
9115
9177
|
variableSearch,
|
|
9116
9178
|
'"'
|
|
@@ -9188,8 +9250,8 @@ function FileTypeTabbedPromptEditor({
|
|
|
9188
9250
|
/* @__PURE__ */ jsx48("div", { className: "h-[52px] px-3 flex items-center border-b border-neutral-700 shrink-0", children: /* @__PURE__ */ jsxs42("div", { className: "flex items-center gap-2", children: [
|
|
9189
9251
|
/* @__PURE__ */ jsx48(Crosshair, { className: "w-4 h-4 text-neutral-500 shrink-0" }),
|
|
9190
9252
|
/* @__PURE__ */ jsxs42("div", { className: "min-w-0", children: [
|
|
9191
|
-
/* @__PURE__ */ jsx48("div", { className: "text-
|
|
9192
|
-
/* @__PURE__ */ jsx48("div", { className: "text-
|
|
9253
|
+
/* @__PURE__ */ jsx48("div", { className: "text-sm font-medium text-neutral-400", children: selectorLabel }),
|
|
9254
|
+
/* @__PURE__ */ jsx48("div", { className: "text-sm text-neutral-600", children: selectorSublabel })
|
|
9193
9255
|
] })
|
|
9194
9256
|
] }) }),
|
|
9195
9257
|
/* @__PURE__ */ jsx48("div", { className: "flex-1 overflow-y-auto", children: fileTypes.map((ft) => {
|
|
@@ -9202,8 +9264,8 @@ function FileTypeTabbedPromptEditor({
|
|
|
9202
9264
|
children: [
|
|
9203
9265
|
/* @__PURE__ */ jsx48("div", { className: `flex-shrink-0 ${isSelected ? "text-blue-400" : "text-neutral-500"}`, children: ft.icon ?? /* @__PURE__ */ jsx48(FileCode5, { className: "w-4 h-4" }) }),
|
|
9204
9266
|
/* @__PURE__ */ jsxs42("div", { className: "min-w-0 flex-1", children: [
|
|
9205
|
-
/* @__PURE__ */ jsx48("div", { className: `text-
|
|
9206
|
-
ft.description && /* @__PURE__ */ jsx48("div", { className: "text-
|
|
9267
|
+
/* @__PURE__ */ jsx48("div", { className: `text-md font-medium truncate ${isSelected ? "text-neutral-300" : "text-neutral-400"}`, children: ft.name }),
|
|
9268
|
+
ft.description && /* @__PURE__ */ jsx48("div", { className: "text-sm text-neutral-500 mt-0.5 leading-relaxed", children: ft.description })
|
|
9207
9269
|
] })
|
|
9208
9270
|
]
|
|
9209
9271
|
},
|
|
@@ -9333,8 +9395,8 @@ function SimulatorPromptEditor({
|
|
|
9333
9395
|
/* @__PURE__ */ jsx49("div", { className: "h-[52px] px-3 flex items-center border-b border-neutral-700 shrink-0", children: /* @__PURE__ */ jsxs43("div", { className: "flex items-center gap-2", children: [
|
|
9334
9396
|
/* @__PURE__ */ jsx49(Crosshair2, { className: "w-4 h-4 text-neutral-500 shrink-0" }),
|
|
9335
9397
|
/* @__PURE__ */ jsxs43("div", { className: "min-w-0", children: [
|
|
9336
|
-
/* @__PURE__ */ jsx49("div", { className: "text-
|
|
9337
|
-
/* @__PURE__ */ jsx49("div", { className: "text-
|
|
9398
|
+
/* @__PURE__ */ jsx49("div", { className: "text-sm font-medium text-neutral-400", children: "Scenario" }),
|
|
9399
|
+
/* @__PURE__ */ jsx49("div", { className: "text-sm text-neutral-600", children: "Select scenario and step" })
|
|
9338
9400
|
] })
|
|
9339
9401
|
] }) }),
|
|
9340
9402
|
/* @__PURE__ */ jsx49("div", { className: "flex-1 overflow-y-auto", children: scenarios.map((scenario) => {
|
|
@@ -9349,8 +9411,8 @@ function SimulatorPromptEditor({
|
|
|
9349
9411
|
children: [
|
|
9350
9412
|
/* @__PURE__ */ jsx49("div", { className: "flex-shrink-0 mt-0.5 text-neutral-500", children: isExpanded ? /* @__PURE__ */ jsx49(ChevronDown11, { className: "w-4 h-4" }) : /* @__PURE__ */ jsx49(ChevronRight7, { className: "w-4 h-4" }) }),
|
|
9351
9413
|
/* @__PURE__ */ jsxs43("div", { className: "min-w-0 flex-1", children: [
|
|
9352
|
-
/* @__PURE__ */ jsx49("div", { className: `text-
|
|
9353
|
-
scenario.description && /* @__PURE__ */ jsx49("div", { className: "text-
|
|
9414
|
+
/* @__PURE__ */ jsx49("div", { className: `text-md font-medium ${isScenarioActive ? "text-neutral-300" : "text-neutral-400"}`, children: scenario.name }),
|
|
9415
|
+
scenario.description && /* @__PURE__ */ jsx49("div", { className: "text-sm text-neutral-500 mt-0.5 leading-relaxed", children: scenario.description })
|
|
9354
9416
|
] })
|
|
9355
9417
|
]
|
|
9356
9418
|
}
|
|
@@ -9364,7 +9426,7 @@ function SimulatorPromptEditor({
|
|
|
9364
9426
|
className: `w-full h-[32px] flex items-center gap-2 pl-9 pr-3 text-left transition-colors ${isStepSelected ? "bg-neutral-700/50 border-l-2 border-blue-400" : "hover:bg-neutral-850 border-l-2 border-transparent"}`,
|
|
9365
9427
|
children: [
|
|
9366
9428
|
/* @__PURE__ */ jsx49("div", { className: `w-1.5 h-1.5 rounded-full flex-shrink-0 ${isStepSelected ? "bg-blue-400" : "bg-neutral-600"}` }),
|
|
9367
|
-
/* @__PURE__ */ jsx49("span", { className: `text-
|
|
9429
|
+
/* @__PURE__ */ jsx49("span", { className: `text-sm ${isStepSelected ? "text-neutral-300" : "text-neutral-400"}`, children: step.name })
|
|
9368
9430
|
]
|
|
9369
9431
|
},
|
|
9370
9432
|
step.id
|
|
@@ -9502,7 +9564,7 @@ function CollapsibleSection({
|
|
|
9502
9564
|
children: /* @__PURE__ */ jsx50(Icon, { className: "w-3.5 h-3.5" })
|
|
9503
9565
|
}
|
|
9504
9566
|
),
|
|
9505
|
-
/* @__PURE__ */ jsx50("span", { className: "text-
|
|
9567
|
+
/* @__PURE__ */ jsx50("span", { className: "text-md font-medium text-neutral-200", children: title }),
|
|
9506
9568
|
badge !== void 0 && /* @__PURE__ */ jsx50("span", { className: "ml-auto", children: /* @__PURE__ */ jsx50(Badge, { value: badge, color: badgeColor, size: "xss" }) })
|
|
9507
9569
|
]
|
|
9508
9570
|
}
|
|
@@ -9515,6 +9577,18 @@ function CollapsibleSection({
|
|
|
9515
9577
|
import { useState as useState33, useMemo as useMemo10 } from "react";
|
|
9516
9578
|
import { Folder as Folder8, FolderOpen as FolderOpen2, File as File5, FileCode as FileCode6, FileText as FileText2, FileJson, Image as Image5, ChevronRight as ChevronRight9, Search as Search10, MoreVertical as MoreVertical3 } from "lucide-react";
|
|
9517
9579
|
import { jsx as jsx51, jsxs as jsxs45 } from "react/jsx-runtime";
|
|
9580
|
+
var ACCENT_SELECTED2 = {
|
|
9581
|
+
blue: "bg-blue-400/15 text-blue-400",
|
|
9582
|
+
purple: "bg-purple-400/15 text-purple-400",
|
|
9583
|
+
orange: "bg-orange-400/15 text-orange-400",
|
|
9584
|
+
green: "bg-green-400/15 text-green-400",
|
|
9585
|
+
pink: "bg-pink-400/15 text-pink-400",
|
|
9586
|
+
amber: "bg-amber-400/15 text-amber-400",
|
|
9587
|
+
emerald: "bg-emerald-400/15 text-emerald-400",
|
|
9588
|
+
teal: "bg-teal-400/15 text-teal-400",
|
|
9589
|
+
sky: "bg-sky-400/15 text-sky-400",
|
|
9590
|
+
violet: "bg-violet-400/15 text-violet-400"
|
|
9591
|
+
};
|
|
9518
9592
|
var iconSubset2 = {
|
|
9519
9593
|
folder: Folder8,
|
|
9520
9594
|
file: File5,
|
|
@@ -9585,7 +9659,7 @@ function filterTree(entries, query) {
|
|
|
9585
9659
|
}
|
|
9586
9660
|
return result;
|
|
9587
9661
|
}
|
|
9588
|
-
function FileNode({ entry, depth, selectedPath, expandedPaths, onToggleExpand, onSelect, onAction }) {
|
|
9662
|
+
function FileNode({ entry, depth, selectedPath, expandedPaths, onToggleExpand, onSelect, onAction, accentColor }) {
|
|
9589
9663
|
const isFolder = entry.type === "folder";
|
|
9590
9664
|
const isExpanded = isFolder && expandedPaths.has(entry.path);
|
|
9591
9665
|
const isSelected = !isFolder && selectedPath === entry.path;
|
|
@@ -9597,8 +9671,8 @@ function FileNode({ entry, depth, selectedPath, expandedPaths, onToggleExpand, o
|
|
|
9597
9671
|
type: "button",
|
|
9598
9672
|
onClick: isFolder ? () => onToggleExpand(entry.path) : () => onSelect?.(entry.path),
|
|
9599
9673
|
className: cn(
|
|
9600
|
-
"group flex items-center gap-1.5 w-full py-1 px-2 rounded text-
|
|
9601
|
-
isSelected ?
|
|
9674
|
+
"group flex items-center gap-1.5 w-full py-1 px-2 rounded text-sm transition-colors cursor-pointer",
|
|
9675
|
+
isSelected ? ACCENT_SELECTED2[accentColor] ?? ACCENT_SELECTED2.blue : "text-neutral-400 hover:bg-neutral-700/40 hover:text-neutral-200"
|
|
9602
9676
|
),
|
|
9603
9677
|
style: { paddingLeft: `${depth * 16 + 8}px` },
|
|
9604
9678
|
children: [
|
|
@@ -9616,7 +9690,7 @@ function FileNode({ entry, depth, selectedPath, expandedPaths, onToggleExpand, o
|
|
|
9616
9690
|
}
|
|
9617
9691
|
),
|
|
9618
9692
|
/* @__PURE__ */ jsx51("span", { className: "truncate", children: entry.name }),
|
|
9619
|
-
entry.badge && /* @__PURE__ */ jsx51("span", { className: "ml-auto shrink-0 px-1.5 py-0.5 text-
|
|
9693
|
+
entry.badge && /* @__PURE__ */ jsx51("span", { className: "ml-auto shrink-0 px-1.5 py-0.5 text-xs rounded bg-neutral-700 text-neutral-500", children: entry.badge }),
|
|
9620
9694
|
onAction && /* @__PURE__ */ jsx51(
|
|
9621
9695
|
"span",
|
|
9622
9696
|
{
|
|
@@ -9648,7 +9722,8 @@ function FileNode({ entry, depth, selectedPath, expandedPaths, onToggleExpand, o
|
|
|
9648
9722
|
expandedPaths,
|
|
9649
9723
|
onToggleExpand,
|
|
9650
9724
|
onSelect,
|
|
9651
|
-
onAction
|
|
9725
|
+
onAction,
|
|
9726
|
+
accentColor
|
|
9652
9727
|
},
|
|
9653
9728
|
child.path
|
|
9654
9729
|
)) })
|
|
@@ -9660,7 +9735,8 @@ function FilesPanel({
|
|
|
9660
9735
|
onSelect,
|
|
9661
9736
|
onAction,
|
|
9662
9737
|
showSearch = false,
|
|
9663
|
-
className
|
|
9738
|
+
className,
|
|
9739
|
+
accentColor = "blue"
|
|
9664
9740
|
}) {
|
|
9665
9741
|
const [expandedPaths, setExpandedPaths] = useState33(() => collectAllFolderPaths(files));
|
|
9666
9742
|
const [searchQuery, setSearchQuery] = useState33("");
|
|
@@ -9679,13 +9755,13 @@ function FilesPanel({
|
|
|
9679
9755
|
}
|
|
9680
9756
|
return /* @__PURE__ */ jsxs45("div", { className: cn("flex flex-col bg-neutral-800 rounded-lg overflow-hidden", className), children: [
|
|
9681
9757
|
/* @__PURE__ */ jsxs45("div", { className: "flex items-center justify-between px-3 py-2 border-b border-neutral-700", children: [
|
|
9682
|
-
/* @__PURE__ */ jsx51("span", { className: "text-
|
|
9683
|
-
/* @__PURE__ */ jsxs45("span", { className: "text-
|
|
9758
|
+
/* @__PURE__ */ jsx51("span", { className: "text-xs font-semibold uppercase tracking-wider text-neutral-500", children: "Files" }),
|
|
9759
|
+
/* @__PURE__ */ jsxs45("span", { className: "text-xs text-neutral-500", children: [
|
|
9684
9760
|
fileCount,
|
|
9685
9761
|
" files"
|
|
9686
9762
|
] })
|
|
9687
9763
|
] }),
|
|
9688
|
-
showSearch && /* @__PURE__ */ jsx51("div", { className: "px-2 py-2 border-b border-neutral-700", children: /* @__PURE__ */ jsxs45("div", { className: "flex items-center gap-1.5 px-2 py-1 bg-[var(--background)] border border-neutral-700 rounded text-
|
|
9764
|
+
showSearch && /* @__PURE__ */ jsx51("div", { className: "px-2 py-2 border-b border-neutral-700", children: /* @__PURE__ */ jsxs45("div", { className: "flex items-center gap-1.5 px-2 py-1 bg-[var(--background)] border border-neutral-700 rounded text-sm", children: [
|
|
9689
9765
|
/* @__PURE__ */ jsx51(Search10, { className: "w-3 h-3 text-neutral-500 shrink-0" }),
|
|
9690
9766
|
/* @__PURE__ */ jsx51(
|
|
9691
9767
|
"input",
|
|
@@ -9694,7 +9770,7 @@ function FilesPanel({
|
|
|
9694
9770
|
placeholder: "Search files...",
|
|
9695
9771
|
value: searchQuery,
|
|
9696
9772
|
onChange: (e) => setSearchQuery(e.target.value),
|
|
9697
|
-
className: "flex-1 bg-transparent text-neutral-200 placeholder-neutral-500 outline-none text-
|
|
9773
|
+
className: "flex-1 bg-transparent text-neutral-200 placeholder-neutral-500 outline-none text-sm"
|
|
9698
9774
|
}
|
|
9699
9775
|
)
|
|
9700
9776
|
] }) }),
|
|
@@ -9708,11 +9784,12 @@ function FilesPanel({
|
|
|
9708
9784
|
expandedPaths,
|
|
9709
9785
|
onToggleExpand: handleToggleExpand,
|
|
9710
9786
|
onSelect,
|
|
9711
|
-
onAction
|
|
9787
|
+
onAction,
|
|
9788
|
+
accentColor
|
|
9712
9789
|
},
|
|
9713
9790
|
entry.path
|
|
9714
9791
|
)) }),
|
|
9715
|
-
displayedFiles.length === 0 && /* @__PURE__ */ jsx51("p", { className: "text-
|
|
9792
|
+
displayedFiles.length === 0 && /* @__PURE__ */ jsx51("p", { className: "text-xs text-neutral-500 text-center py-4", children: "No files found" })
|
|
9716
9793
|
] })
|
|
9717
9794
|
] });
|
|
9718
9795
|
}
|
|
@@ -9757,13 +9834,13 @@ function SnippetsPanel({
|
|
|
9757
9834
|
);
|
|
9758
9835
|
return /* @__PURE__ */ jsxs46("div", { className: cn("flex flex-col bg-neutral-800 rounded-lg overflow-hidden", className), children: [
|
|
9759
9836
|
/* @__PURE__ */ jsxs46("div", { className: "flex items-center justify-between px-3 py-2 border-b border-neutral-700", children: [
|
|
9760
|
-
/* @__PURE__ */ jsx52("span", { className: "text-
|
|
9761
|
-
/* @__PURE__ */ jsxs46("span", { className: "text-
|
|
9837
|
+
/* @__PURE__ */ jsx52("span", { className: "text-xs font-semibold uppercase tracking-wider text-neutral-500", children: "Snippets" }),
|
|
9838
|
+
/* @__PURE__ */ jsxs46("span", { className: "text-xs text-neutral-500", children: [
|
|
9762
9839
|
snippets.length,
|
|
9763
9840
|
" snippets"
|
|
9764
9841
|
] })
|
|
9765
9842
|
] }),
|
|
9766
|
-
showSearch && /* @__PURE__ */ jsx52("div", { className: "px-2 py-2 border-b border-neutral-700", children: /* @__PURE__ */ jsxs46("div", { className: "flex items-center gap-1.5 px-2 py-1 bg-[var(--background)] border border-neutral-700 rounded text-
|
|
9843
|
+
showSearch && /* @__PURE__ */ jsx52("div", { className: "px-2 py-2 border-b border-neutral-700", children: /* @__PURE__ */ jsxs46("div", { className: "flex items-center gap-1.5 px-2 py-1 bg-[var(--background)] border border-neutral-700 rounded text-sm", children: [
|
|
9767
9844
|
/* @__PURE__ */ jsx52(Search11, { className: "w-3 h-3 text-neutral-500 shrink-0" }),
|
|
9768
9845
|
/* @__PURE__ */ jsx52(
|
|
9769
9846
|
"input",
|
|
@@ -9772,7 +9849,7 @@ function SnippetsPanel({
|
|
|
9772
9849
|
placeholder: "Search snippets...",
|
|
9773
9850
|
value: searchQuery,
|
|
9774
9851
|
onChange: (e) => setSearchQuery(e.target.value),
|
|
9775
|
-
className: "flex-1 bg-transparent text-neutral-200 placeholder-neutral-500 outline-none text-
|
|
9852
|
+
className: "flex-1 bg-transparent text-neutral-200 placeholder-neutral-500 outline-none text-sm"
|
|
9776
9853
|
}
|
|
9777
9854
|
)
|
|
9778
9855
|
] }) }),
|
|
@@ -9786,7 +9863,7 @@ function SnippetsPanel({
|
|
|
9786
9863
|
},
|
|
9787
9864
|
snippet.id
|
|
9788
9865
|
)),
|
|
9789
|
-
filteredSnippets.length === 0 && /* @__PURE__ */ jsx52("p", { className: "text-
|
|
9866
|
+
filteredSnippets.length === 0 && /* @__PURE__ */ jsx52("p", { className: "text-xs text-neutral-500 text-center py-4", children: "No snippets found" })
|
|
9790
9867
|
] })
|
|
9791
9868
|
] });
|
|
9792
9869
|
}
|
|
@@ -9795,11 +9872,11 @@ function SnippetCard({ snippet, onInsert, onCopy }) {
|
|
|
9795
9872
|
return /* @__PURE__ */ jsxs46("div", { className: "rounded-md border border-neutral-700 bg-neutral-900 hover:border-neutral-600 transition-colors", children: [
|
|
9796
9873
|
/* @__PURE__ */ jsxs46("div", { className: "flex items-center justify-between gap-2 px-2.5 py-1.5", children: [
|
|
9797
9874
|
/* @__PURE__ */ jsxs46("div", { className: "flex items-center gap-2 min-w-0", children: [
|
|
9798
|
-
/* @__PURE__ */ jsx52("span", { className: "text-
|
|
9875
|
+
/* @__PURE__ */ jsx52("span", { className: "text-sm font-medium text-neutral-200 truncate", children: snippet.label }),
|
|
9799
9876
|
snippet.language && /* @__PURE__ */ jsx52(
|
|
9800
9877
|
"span",
|
|
9801
9878
|
{
|
|
9802
|
-
className: "px-1.5 py-0.5 text-
|
|
9879
|
+
className: "px-1.5 py-0.5 text-xs font-medium rounded shrink-0",
|
|
9803
9880
|
style: { color: langColor, backgroundColor: `${langColor}20` },
|
|
9804
9881
|
children: snippet.language
|
|
9805
9882
|
}
|
|
@@ -9826,9 +9903,9 @@ function SnippetCard({ snippet, onInsert, onCopy }) {
|
|
|
9826
9903
|
)
|
|
9827
9904
|
] })
|
|
9828
9905
|
] }),
|
|
9829
|
-
snippet.description && /* @__PURE__ */ jsx52("p", { className: "px-2.5 pb-1.5 text-
|
|
9830
|
-
/* @__PURE__ */ jsx52("div", { className: "mx-2.5 mb-2 rounded bg-[var(--background)] border border-neutral-700 overflow-hidden", children: /* @__PURE__ */ jsx52("pre", { className: "p-2 text-
|
|
9831
|
-
snippet.tags && snippet.tags.length > 0 && /* @__PURE__ */ jsx52("div", { className: "flex flex-wrap gap-1 px-2.5 pb-2", children: snippet.tags.map((tag) => /* @__PURE__ */ jsx52("span", { className: "px-1.5 py-0.5 text-
|
|
9906
|
+
snippet.description && /* @__PURE__ */ jsx52("p", { className: "px-2.5 pb-1.5 text-xs text-neutral-400 leading-relaxed", children: snippet.description }),
|
|
9907
|
+
/* @__PURE__ */ jsx52("div", { className: "mx-2.5 mb-2 rounded bg-[var(--background)] border border-neutral-700 overflow-hidden", children: /* @__PURE__ */ jsx52("pre", { className: "p-2 text-xs text-neutral-400 leading-relaxed overflow-x-auto max-h-24", children: /* @__PURE__ */ jsx52("code", { children: snippet.code }) }) }),
|
|
9908
|
+
snippet.tags && snippet.tags.length > 0 && /* @__PURE__ */ jsx52("div", { className: "flex flex-wrap gap-1 px-2.5 pb-2", children: snippet.tags.map((tag) => /* @__PURE__ */ jsx52("span", { className: "px-1.5 py-0.5 text-xs rounded bg-neutral-700 text-neutral-500", children: tag }, tag)) })
|
|
9832
9909
|
] });
|
|
9833
9910
|
}
|
|
9834
9911
|
|
|
@@ -9907,8 +9984,8 @@ var iconSubset3 = {
|
|
|
9907
9984
|
};
|
|
9908
9985
|
var sizeConfig2 = {
|
|
9909
9986
|
xss: { text: "text-xss", icon: "w-2.5 h-2.5", px: "px-1", py: "py-0.5", gap: "gap-0.5", sep: "w-2 h-2" },
|
|
9910
|
-
xs: { text: "text-
|
|
9911
|
-
sm: { text: "text-
|
|
9987
|
+
xs: { text: "text-sm", icon: "w-3 h-3", px: "px-1.5", py: "py-0.5", gap: "gap-1", sep: "w-2.5 h-2.5" },
|
|
9988
|
+
sm: { text: "text-md", icon: "w-3.5 h-3.5", px: "px-2", py: "py-1", gap: "gap-1.5", sep: "w-3 h-3" },
|
|
9912
9989
|
md: { text: "text-base", icon: "w-4 h-4", px: "px-2.5", py: "py-1", gap: "gap-1.5", sep: "w-3.5 h-3.5" },
|
|
9913
9990
|
lg: { text: "text-lg", icon: "w-5 h-5", px: "px-3", py: "py-1.5", gap: "gap-2", sep: "w-4 h-4" }
|
|
9914
9991
|
};
|
|
@@ -10081,8 +10158,8 @@ var iconSubset4 = {
|
|
|
10081
10158
|
};
|
|
10082
10159
|
var sizeConfig3 = {
|
|
10083
10160
|
xss: { text: "text-xss", segIcon: "w-2.5 h-2.5", navIcon: "w-2.5 h-2.5", navBtn: "w-[18px] h-[18px] rounded-[3px]", px: "px-1", py: "py-0.5", sep: "w-2 h-2", divH: "h-3" },
|
|
10084
|
-
xs: { text: "text-
|
|
10085
|
-
sm: { text: "text-
|
|
10161
|
+
xs: { text: "text-sm", segIcon: "w-3 h-3", navIcon: "w-3 h-3", navBtn: "w-6 h-6 rounded-[5px]", px: "px-1.5", py: "py-0.5", sep: "w-2.5 h-2.5", divH: "h-3.5" },
|
|
10162
|
+
sm: { text: "text-md", segIcon: "w-3.5 h-3.5", navIcon: "w-3.5 h-3.5", navBtn: "w-7 h-7 rounded-md", px: "px-2", py: "py-1", sep: "w-3 h-3", divH: "h-4" },
|
|
10086
10163
|
md: { text: "text-base", segIcon: "w-4 h-4", navIcon: "w-4 h-4", navBtn: "w-8 h-8 rounded-md", px: "px-2.5", py: "py-1", sep: "w-3.5 h-3.5", divH: "h-5" },
|
|
10087
10164
|
lg: { text: "text-lg", segIcon: "w-5 h-5", navIcon: "w-5 h-5", navBtn: "w-9 h-9 rounded-md", px: "px-3", py: "py-1.5", sep: "w-4 h-4", divH: "h-6" }
|
|
10088
10165
|
};
|
|
@@ -10182,7 +10259,7 @@ function NavigationBar({
|
|
|
10182
10259
|
}
|
|
10183
10260
|
),
|
|
10184
10261
|
historyOpen && hasHistoryEntries && /* @__PURE__ */ jsxs48("div", { className: "absolute left-0 top-full mt-1 w-max min-w-[200px] max-w-[420px] bg-neutral-800 border border-neutral-700 rounded-lg shadow-xl z-50", children: [
|
|
10185
|
-
/* @__PURE__ */ jsx54("div", { className: "px-3 py-1.5 border-b border-neutral-700/50", children: /* @__PURE__ */ jsx54("p", { className: "text-
|
|
10262
|
+
/* @__PURE__ */ jsx54("div", { className: "px-3 py-1.5 border-b border-neutral-700/50", children: /* @__PURE__ */ jsx54("p", { className: "text-sm font-medium text-neutral-500", children: "History" }) }),
|
|
10186
10263
|
/* @__PURE__ */ jsx54("div", { className: "max-h-[300px] overflow-y-auto py-1", children: historyEntries.map((entry, i) => /* @__PURE__ */ jsx54(
|
|
10187
10264
|
"button",
|
|
10188
10265
|
{
|
|
@@ -10196,14 +10273,14 @@ function NavigationBar({
|
|
|
10196
10273
|
segIdx > 0 && /* @__PURE__ */ jsx54(ChevronRight11, { className: "w-2.5 h-2.5 text-neutral-600 flex-shrink-0" }),
|
|
10197
10274
|
seg.icon && /* @__PURE__ */ jsx54(SegmentIcon2, { icon: seg.icon, color: seg.color, size: "xs" }),
|
|
10198
10275
|
/* @__PURE__ */ jsx54("span", { className: cn(
|
|
10199
|
-
"text-
|
|
10276
|
+
"text-sm truncate",
|
|
10200
10277
|
seg.color && colorMap2[seg.color] ? colorMap2[seg.color].text : "text-neutral-300"
|
|
10201
10278
|
), children: seg.label })
|
|
10202
10279
|
] }, seg.id))
|
|
10203
10280
|
},
|
|
10204
10281
|
i
|
|
10205
10282
|
)) }),
|
|
10206
|
-
/* @__PURE__ */ jsx54("div", { className: "px-3 py-1.5 border-t border-neutral-700/50", children: /* @__PURE__ */ jsx54("p", { className: "text-
|
|
10283
|
+
/* @__PURE__ */ jsx54("div", { className: "px-3 py-1.5 border-t border-neutral-700/50", children: /* @__PURE__ */ jsx54("p", { className: "text-sm text-neutral-600", children: "Click to navigate" }) })
|
|
10207
10284
|
] })
|
|
10208
10285
|
] }),
|
|
10209
10286
|
/* @__PURE__ */ jsx54(Divider, { size })
|
|
@@ -10295,8 +10372,8 @@ var iconSubset5 = {
|
|
|
10295
10372
|
};
|
|
10296
10373
|
var sizeConfig4 = {
|
|
10297
10374
|
xss: { text: "text-xss", icon: "w-2.5 h-2.5", px: "px-1.5", py: "py-1", close: "w-2.5 h-2.5", badgeSize: "xss", gap: "gap-1" },
|
|
10298
|
-
xs: { text: "text-
|
|
10299
|
-
sm: { text: "text-
|
|
10375
|
+
xs: { text: "text-sm", icon: "w-3 h-3", px: "px-2", py: "py-1", close: "w-3 h-3", badgeSize: "xs", gap: "gap-1" },
|
|
10376
|
+
sm: { text: "text-md", icon: "w-3.5 h-3.5", px: "px-3", py: "py-1.5", close: "w-3 h-3", badgeSize: "sm", gap: "gap-1.5" },
|
|
10300
10377
|
md: { text: "text-base", icon: "w-4 h-4", px: "px-4", py: "py-2", close: "w-3.5 h-3.5", badgeSize: "md", gap: "gap-2" },
|
|
10301
10378
|
lg: { text: "text-lg", icon: "w-5 h-5", px: "px-5", py: "py-2.5", close: "w-4 h-4", badgeSize: "lg", gap: "gap-2" }
|
|
10302
10379
|
};
|
|
@@ -10737,11 +10814,11 @@ function LayoutTabBar({ tabs, activeId, onSelect, onClose, onReorder, className
|
|
|
10737
10814
|
children: [
|
|
10738
10815
|
/* @__PURE__ */ jsxs50("div", { className: "flex items-center gap-1.5 w-full transition-[padding] duration-150 group-hover:pr-5", children: [
|
|
10739
10816
|
tab.icon && /* @__PURE__ */ jsx56("span", { className: cn("shrink-0 inline-flex", isActive ? iconC : "text-neutral-400"), style: { width: 14, height: 14 }, children: tab.icon }),
|
|
10740
|
-
/* @__PURE__ */ jsx56("span", { className: cn("truncate text-
|
|
10817
|
+
/* @__PURE__ */ jsx56("span", { className: cn("truncate text-md font-medium", isActive ? titleC : "text-neutral-300"), children: tab.title })
|
|
10741
10818
|
] }),
|
|
10742
10819
|
tab.subtitle && /* @__PURE__ */ jsxs50("div", { className: "flex items-center gap-1 w-full", children: [
|
|
10743
10820
|
tab.subtitleIcon && /* @__PURE__ */ jsx56("span", { className: cn("shrink-0 inline-flex", isActive ? subIconC : "text-neutral-500"), style: { width: 10, height: 10 }, children: tab.subtitleIcon }),
|
|
10744
|
-
/* @__PURE__ */ jsx56("span", { className: cn("truncate text-
|
|
10821
|
+
/* @__PURE__ */ jsx56("span", { className: cn("truncate text-sm", isActive ? subC : "text-neutral-500"), children: tab.subtitle })
|
|
10745
10822
|
] }),
|
|
10746
10823
|
tab.closable && onClose && /* @__PURE__ */ jsx56(
|
|
10747
10824
|
"span",
|
|
@@ -10779,11 +10856,11 @@ function LayoutTabBar({ tabs, activeId, onSelect, onClose, onReorder, className
|
|
|
10779
10856
|
return /* @__PURE__ */ jsx56("div", { className: "fixed z-50 pointer-events-none opacity-90", style: { left: drag.x + 12, top: drag.y - 20 }, children: /* @__PURE__ */ jsxs50("div", { className: cn("flex flex-col gap-0.5 px-2.5 py-1.5 rounded-t-lg border-t-2 shadow-xl bg-neutral-800", ghostBorder), children: [
|
|
10780
10857
|
/* @__PURE__ */ jsxs50("div", { className: "flex items-center gap-1.5", children: [
|
|
10781
10858
|
t.icon && /* @__PURE__ */ jsx56("span", { className: cn("shrink-0 inline-flex", ghostIconC), style: { width: 14, height: 14 }, children: t.icon }),
|
|
10782
|
-
/* @__PURE__ */ jsx56("span", { className: cn("text-
|
|
10859
|
+
/* @__PURE__ */ jsx56("span", { className: cn("text-md font-medium", ghostTitleC), children: t.title })
|
|
10783
10860
|
] }),
|
|
10784
10861
|
t.subtitle && /* @__PURE__ */ jsxs50("div", { className: "flex items-center gap-1", children: [
|
|
10785
10862
|
t.subtitleIcon && /* @__PURE__ */ jsx56("span", { className: cn("shrink-0 inline-flex", ghostSubIconC), style: { width: 10, height: 10 }, children: t.subtitleIcon }),
|
|
10786
|
-
/* @__PURE__ */ jsx56("span", { className: cn("text-
|
|
10863
|
+
/* @__PURE__ */ jsx56("span", { className: cn("text-sm", ghostSubC), children: t.subtitle })
|
|
10787
10864
|
] })
|
|
10788
10865
|
] }) });
|
|
10789
10866
|
})()
|
|
@@ -10850,14 +10927,15 @@ function NavCard({
|
|
|
10850
10927
|
title,
|
|
10851
10928
|
description,
|
|
10852
10929
|
icon,
|
|
10930
|
+
IconComponent,
|
|
10853
10931
|
iconColor = "#60a5fa",
|
|
10854
|
-
|
|
10855
|
-
|
|
10932
|
+
label,
|
|
10933
|
+
stats,
|
|
10856
10934
|
onClick,
|
|
10857
10935
|
disabled = false,
|
|
10858
10936
|
className
|
|
10859
10937
|
}) {
|
|
10860
|
-
const Icon = icon ? iconSubset6[icon] : void 0;
|
|
10938
|
+
const Icon = IconComponent ?? (icon ? iconSubset6[icon] : void 0);
|
|
10861
10939
|
return /* @__PURE__ */ jsxs51(
|
|
10862
10940
|
"button",
|
|
10863
10941
|
{
|
|
@@ -10871,7 +10949,7 @@ function NavCard({
|
|
|
10871
10949
|
className
|
|
10872
10950
|
),
|
|
10873
10951
|
children: [
|
|
10874
|
-
|
|
10952
|
+
label && /* @__PURE__ */ jsx57("span", { className: "absolute top-3 right-3", children: /* @__PURE__ */ jsx57(Label, { text: label.text, color: label.color, size: "xs", tooltip: label.tooltip }) }),
|
|
10875
10953
|
Icon && /* @__PURE__ */ jsx57(
|
|
10876
10954
|
"div",
|
|
10877
10955
|
{
|
|
@@ -10880,8 +10958,9 @@ function NavCard({
|
|
|
10880
10958
|
children: /* @__PURE__ */ jsx57(Icon, { className: "w-4.5 h-4.5", style: { color: iconColor } })
|
|
10881
10959
|
}
|
|
10882
10960
|
),
|
|
10883
|
-
/* @__PURE__ */ jsx57("h3", { className: "text-
|
|
10884
|
-
description && /* @__PURE__ */ jsx57("p", { className: "mt-1 text-
|
|
10961
|
+
/* @__PURE__ */ jsx57("h3", { className: "text-md font-medium text-neutral-200", children: title }),
|
|
10962
|
+
description && /* @__PURE__ */ jsx57("p", { className: "mt-1 text-sm text-neutral-500 leading-relaxed line-clamp-2", children: description }),
|
|
10963
|
+
stats && /* @__PURE__ */ jsx57("p", { className: "mt-2 text-sm text-neutral-600", children: stats })
|
|
10885
10964
|
]
|
|
10886
10965
|
}
|
|
10887
10966
|
);
|
|
@@ -10931,15 +11010,15 @@ var ExtensionListCard = memo(function ExtensionListCard2({
|
|
|
10931
11010
|
/* @__PURE__ */ jsx58(Icon, { className: cn("w-5 h-5 shrink-0", iconColor) }),
|
|
10932
11011
|
/* @__PURE__ */ jsxs52("div", { className: "min-w-0 flex-1", children: [
|
|
10933
11012
|
/* @__PURE__ */ jsxs52("div", { className: "flex items-center gap-2 flex-wrap", children: [
|
|
10934
|
-
/* @__PURE__ */ jsx58("span", { className: cn("text-
|
|
11013
|
+
/* @__PURE__ */ jsx58("span", { className: cn("text-md font-medium", titleClassName), children: title }),
|
|
10935
11014
|
badges
|
|
10936
11015
|
] }),
|
|
10937
|
-
description && /* @__PURE__ */ jsx58("div", { className: cn("text-
|
|
11016
|
+
description && /* @__PURE__ */ jsx58("div", { className: cn("text-sm text-neutral-500 mt-1", !isHovered && "line-clamp-2"), children: description })
|
|
10938
11017
|
] })
|
|
10939
11018
|
] }),
|
|
10940
11019
|
actions && /* @__PURE__ */ jsx58("div", { className: cn("items-center gap-1.5 shrink-0", isHovered ? "flex" : "hidden"), children: actions })
|
|
10941
11020
|
] }),
|
|
10942
|
-
metadata != null && /* @__PURE__ */ jsx58("div", { className: "flex items-center justify-between mt-2 ml-8 mr-2 text-
|
|
11021
|
+
metadata != null && /* @__PURE__ */ jsx58("div", { className: "flex items-center justify-between mt-2 ml-8 mr-2 text-sm text-neutral-500", children: typeof metadata === "function" ? metadata(isHovered) : metadata })
|
|
10943
11022
|
]
|
|
10944
11023
|
}
|
|
10945
11024
|
);
|
|
@@ -11005,12 +11084,12 @@ function StatusCard({
|
|
|
11005
11084
|
return /* @__PURE__ */ jsxs53("div", { className: cn("rounded-lg border border-neutral-700 bg-neutral-800 overflow-hidden", className), children: [
|
|
11006
11085
|
/* @__PURE__ */ jsxs53("div", { className: "flex items-center gap-2.5 px-4 py-3 border-b border-neutral-700", children: [
|
|
11007
11086
|
Icon && /* @__PURE__ */ jsx59(Icon, { className: "w-4 h-4 shrink-0", style: { color: iconColor } }),
|
|
11008
|
-
/* @__PURE__ */ jsx59("h3", { className: "text-
|
|
11087
|
+
/* @__PURE__ */ jsx59("h3", { className: "text-md font-medium text-neutral-200", children: title })
|
|
11009
11088
|
] }),
|
|
11010
11089
|
/* @__PURE__ */ jsx59("div", { className: "divide-y divide-neutral-700/60", children: items.map((item) => /* @__PURE__ */ jsxs53("div", { className: "flex items-center justify-between px-4 py-2.5", children: [
|
|
11011
|
-
/* @__PURE__ */ jsx59("span", { className: "text-
|
|
11090
|
+
/* @__PURE__ */ jsx59("span", { className: "text-sm text-neutral-400", children: item.label }),
|
|
11012
11091
|
/* @__PURE__ */ jsxs53("div", { className: "flex items-center gap-2", children: [
|
|
11013
|
-
/* @__PURE__ */ jsx59("span", { className: cn("text-
|
|
11092
|
+
/* @__PURE__ */ jsx59("span", { className: cn("text-sm font-medium", statusValueColor[item.status]), children: item.value }),
|
|
11014
11093
|
/* @__PURE__ */ jsx59("span", { className: cn("w-2 h-2 rounded-full shrink-0", statusDotColor[item.status]) })
|
|
11015
11094
|
] })
|
|
11016
11095
|
] }, item.label)) }),
|
|
@@ -11019,7 +11098,7 @@ function StatusCard({
|
|
|
11019
11098
|
{
|
|
11020
11099
|
type: "button",
|
|
11021
11100
|
onClick: action.onClick,
|
|
11022
|
-
className: "text-
|
|
11101
|
+
className: "text-sm text-blue-400 hover:text-blue-300 transition-colors cursor-pointer",
|
|
11023
11102
|
children: action.label
|
|
11024
11103
|
}
|
|
11025
11104
|
) })
|
|
@@ -11055,7 +11134,7 @@ function SnapshotCard({
|
|
|
11055
11134
|
/* @__PURE__ */ jsx60("div", { className: cn("h-1", statusStripeColor[status]) }),
|
|
11056
11135
|
/* @__PURE__ */ jsxs54("div", { className: "p-4", children: [
|
|
11057
11136
|
/* @__PURE__ */ jsxs54("div", { className: "flex items-start justify-between gap-2", children: [
|
|
11058
|
-
/* @__PURE__ */ jsx60("h3", { className: "text-
|
|
11137
|
+
/* @__PURE__ */ jsx60("h3", { className: "text-md font-medium text-neutral-200 truncate", children: title }),
|
|
11059
11138
|
/* @__PURE__ */ jsx60(
|
|
11060
11139
|
Label,
|
|
11061
11140
|
{
|
|
@@ -11067,11 +11146,11 @@ function SnapshotCard({
|
|
|
11067
11146
|
}
|
|
11068
11147
|
)
|
|
11069
11148
|
] }),
|
|
11070
|
-
timestamp && /* @__PURE__ */ jsx60("p", { className: "mt-1 text-
|
|
11071
|
-
description && /* @__PURE__ */ jsx60("p", { className: "mt-2 text-
|
|
11149
|
+
timestamp && /* @__PURE__ */ jsx60("p", { className: "mt-1 text-xs text-neutral-500", children: timestamp }),
|
|
11150
|
+
description && /* @__PURE__ */ jsx60("p", { className: "mt-2 text-sm text-neutral-500 leading-relaxed line-clamp-2", children: description }),
|
|
11072
11151
|
stats && stats.length > 0 && /* @__PURE__ */ jsx60("div", { className: "mt-3 grid grid-cols-2 gap-x-4 gap-y-2", children: stats.map((stat) => /* @__PURE__ */ jsxs54("div", { children: [
|
|
11073
|
-
/* @__PURE__ */ jsx60("p", { className: "text-
|
|
11074
|
-
/* @__PURE__ */ jsx60("p", { className: "text-
|
|
11152
|
+
/* @__PURE__ */ jsx60("p", { className: "text-xs text-neutral-500", children: stat.label }),
|
|
11153
|
+
/* @__PURE__ */ jsx60("p", { className: "text-sm font-medium text-neutral-200", children: stat.value })
|
|
11075
11154
|
] }, stat.label)) }),
|
|
11076
11155
|
(onSync || onView) && /* @__PURE__ */ jsxs54("div", { className: "mt-3 pt-3 border-t border-neutral-700 flex items-center gap-2", children: [
|
|
11077
11156
|
onSync && /* @__PURE__ */ jsxs54(
|
|
@@ -11079,7 +11158,7 @@ function SnapshotCard({
|
|
|
11079
11158
|
{
|
|
11080
11159
|
type: "button",
|
|
11081
11160
|
onClick: onSync,
|
|
11082
|
-
className: "flex items-center gap-1.5 px-2.5 py-1 text-
|
|
11161
|
+
className: "flex items-center gap-1.5 px-2.5 py-1 text-sm font-medium rounded-md bg-blue-400/15 text-blue-400 hover:bg-blue-400/25 transition-colors cursor-pointer",
|
|
11083
11162
|
children: [
|
|
11084
11163
|
/* @__PURE__ */ jsx60(RefreshCw7, { className: cn("w-3 h-3", status === "pending" && "animate-spin") }),
|
|
11085
11164
|
"Sync"
|
|
@@ -11091,7 +11170,7 @@ function SnapshotCard({
|
|
|
11091
11170
|
{
|
|
11092
11171
|
type: "button",
|
|
11093
11172
|
onClick: onView,
|
|
11094
|
-
className: "flex items-center gap-1.5 px-2.5 py-1 text-
|
|
11173
|
+
className: "flex items-center gap-1.5 px-2.5 py-1 text-sm font-medium rounded-md text-neutral-400 hover:bg-neutral-700 transition-colors cursor-pointer",
|
|
11095
11174
|
children: [
|
|
11096
11175
|
/* @__PURE__ */ jsx60(Eye10, { className: "w-3 h-3" }),
|
|
11097
11176
|
"View"
|
|
@@ -11174,14 +11253,14 @@ function DetailSection({ title, icon, rows, className }) {
|
|
|
11174
11253
|
return /* @__PURE__ */ jsxs55("div", { className, children: [
|
|
11175
11254
|
/* @__PURE__ */ jsxs55("div", { className: "flex items-center gap-2 mb-3", children: [
|
|
11176
11255
|
Icon && /* @__PURE__ */ jsx61(Icon, { className: "w-4 h-4 text-neutral-500" }),
|
|
11177
|
-
/* @__PURE__ */ jsx61("span", { className: "text-
|
|
11256
|
+
/* @__PURE__ */ jsx61("span", { className: "text-md font-medium text-neutral-400", children: title })
|
|
11178
11257
|
] }),
|
|
11179
11258
|
/* @__PURE__ */ jsx61("div", { className: "space-y-2", children: rows.map((row) => /* @__PURE__ */ jsxs55("div", { className: "flex items-start gap-3", children: [
|
|
11180
|
-
/* @__PURE__ */ jsxs55("span", { className: "text-
|
|
11259
|
+
/* @__PURE__ */ jsxs55("span", { className: "text-sm text-neutral-500 w-24 shrink-0", children: [
|
|
11181
11260
|
row.label,
|
|
11182
11261
|
":"
|
|
11183
11262
|
] }),
|
|
11184
|
-
/* @__PURE__ */ jsx61("span", { className: cn("text-
|
|
11263
|
+
/* @__PURE__ */ jsx61("span", { className: cn("text-sm text-neutral-400", row.mono && "font-mono"), children: row.value })
|
|
11185
11264
|
] }, row.label)) })
|
|
11186
11265
|
] });
|
|
11187
11266
|
}
|
|
@@ -11209,15 +11288,15 @@ function CookieConsent({
|
|
|
11209
11288
|
if (!isVisible) return null;
|
|
11210
11289
|
return /* @__PURE__ */ jsx62("div", { className: "fixed bottom-0 left-0 right-0 z-50 p-4 bg-neutral-900/95 backdrop-blur-sm border-t border-neutral-700/50", children: /* @__PURE__ */ jsxs56("div", { className: "max-w-6xl mx-auto flex flex-col sm:flex-row items-start sm:items-center gap-4", children: [
|
|
11211
11290
|
/* @__PURE__ */ jsxs56("div", { className: "flex-grow", children: [
|
|
11212
|
-
/* @__PURE__ */ jsx62("p", { className: "text-
|
|
11213
|
-
/* @__PURE__ */ jsx62("p", { className: "text-
|
|
11291
|
+
/* @__PURE__ */ jsx62("p", { className: "text-md text-neutral-200 mb-1", children: heading }),
|
|
11292
|
+
/* @__PURE__ */ jsx62("p", { className: "text-sm text-neutral-400", children: description })
|
|
11214
11293
|
] }),
|
|
11215
11294
|
/* @__PURE__ */ jsxs56("div", { className: "flex items-center gap-2 flex-shrink-0", children: [
|
|
11216
11295
|
/* @__PURE__ */ jsx62(
|
|
11217
11296
|
"button",
|
|
11218
11297
|
{
|
|
11219
11298
|
onClick: () => handleConsent("declined"),
|
|
11220
|
-
className: "px-3 py-1.5 text-
|
|
11299
|
+
className: "px-3 py-1.5 text-md h-[26px] inline-flex items-center justify-center font-medium rounded-md cursor-pointer text-neutral-400 border border-transparent hover:text-neutral-200 hover:border-neutral-600 hover:bg-neutral-800 transition-colors",
|
|
11221
11300
|
children: "Decline"
|
|
11222
11301
|
}
|
|
11223
11302
|
),
|
|
@@ -11225,7 +11304,7 @@ function CookieConsent({
|
|
|
11225
11304
|
"button",
|
|
11226
11305
|
{
|
|
11227
11306
|
onClick: () => handleConsent("essential"),
|
|
11228
|
-
className: "px-3 py-1.5 text-
|
|
11307
|
+
className: "px-3 py-1.5 text-md h-[26px] inline-flex items-center justify-center font-medium rounded-md cursor-pointer text-neutral-400 border border-transparent hover:text-neutral-200 hover:border-neutral-600 hover:bg-neutral-800 transition-colors",
|
|
11229
11308
|
children: "Essential Only"
|
|
11230
11309
|
}
|
|
11231
11310
|
),
|
|
@@ -11233,7 +11312,7 @@ function CookieConsent({
|
|
|
11233
11312
|
"button",
|
|
11234
11313
|
{
|
|
11235
11314
|
onClick: () => handleConsent("accepted"),
|
|
11236
|
-
className: `px-3 py-1.5 text-
|
|
11315
|
+
className: `px-3 py-1.5 text-md h-[26px] inline-flex items-center justify-center font-medium rounded-md cursor-pointer text-white border transition-colors bg-${accentColor}-600 border-${accentColor}-500 hover:bg-${accentColor}-500`,
|
|
11237
11316
|
children: "Accept All"
|
|
11238
11317
|
}
|
|
11239
11318
|
)
|
|
@@ -11321,7 +11400,7 @@ function SettingRow(props) {
|
|
|
11321
11400
|
return /* @__PURE__ */ jsxs57("div", { className: `flex items-start justify-between gap-4 ${className}`, children: [
|
|
11322
11401
|
/* @__PURE__ */ jsxs57("div", { children: [
|
|
11323
11402
|
/* @__PURE__ */ jsx63("label", { className: "text-neutral-200 leading-7", children: label }),
|
|
11324
|
-
description && /* @__PURE__ */ jsx63("p", { className: "text-
|
|
11403
|
+
description && /* @__PURE__ */ jsx63("p", { className: "text-md text-neutral-500", children: description })
|
|
11325
11404
|
] }),
|
|
11326
11405
|
props.type === "toggle" && /* @__PURE__ */ jsx63(
|
|
11327
11406
|
Toggle,
|
|
@@ -11369,10 +11448,10 @@ function SettingsCard({ children, className, title, description, testId }) {
|
|
|
11369
11448
|
"data-testid": testId,
|
|
11370
11449
|
children: [
|
|
11371
11450
|
title && /* @__PURE__ */ jsxs58("div", { children: [
|
|
11372
|
-
/* @__PURE__ */ jsx64("h3", { className: "text-
|
|
11373
|
-
description && /* @__PURE__ */ jsx64("p", { className: "text-
|
|
11451
|
+
/* @__PURE__ */ jsx64("h3", { className: "text-md font-medium text-neutral-200", children: title }),
|
|
11452
|
+
description && /* @__PURE__ */ jsx64("p", { className: "text-md text-neutral-500 mt-1", children: description })
|
|
11374
11453
|
] }),
|
|
11375
|
-
!title && description && /* @__PURE__ */ jsx64("p", { className: "text-
|
|
11454
|
+
!title && description && /* @__PURE__ */ jsx64("p", { className: "text-md text-neutral-500", children: description }),
|
|
11376
11455
|
children
|
|
11377
11456
|
]
|
|
11378
11457
|
}
|
|
@@ -11443,7 +11522,7 @@ function SettingsInfoBox({ children, color = "neutral", className, testId }) {
|
|
|
11443
11522
|
"data-testid": testId,
|
|
11444
11523
|
children: [
|
|
11445
11524
|
/* @__PURE__ */ jsx65(Icon, { className: cn("w-4 h-4 mt-0.5 shrink-0", iconColorMap[color]) }),
|
|
11446
|
-
/* @__PURE__ */ jsx65("div", { className: "text-
|
|
11525
|
+
/* @__PURE__ */ jsx65("div", { className: "text-md text-neutral-500", children })
|
|
11447
11526
|
]
|
|
11448
11527
|
}
|
|
11449
11528
|
);
|
|
@@ -11455,7 +11534,7 @@ function SettingsSectionTitle({ children, className = "", testId }) {
|
|
|
11455
11534
|
return /* @__PURE__ */ jsx66(
|
|
11456
11535
|
"h3",
|
|
11457
11536
|
{
|
|
11458
|
-
className: `text-
|
|
11537
|
+
className: `text-sm font-medium text-neutral-400 uppercase tracking-wider ${className}`,
|
|
11459
11538
|
"data-testid": testId,
|
|
11460
11539
|
children
|
|
11461
11540
|
}
|
|
@@ -11552,6 +11631,18 @@ function filterTree2(nodes, query, parentPath = "") {
|
|
|
11552
11631
|
|
|
11553
11632
|
// components/settings/SettingsTreeNav.tsx
|
|
11554
11633
|
import { Fragment as Fragment13, jsx as jsx67, jsxs as jsxs60 } from "react/jsx-runtime";
|
|
11634
|
+
var ACCENT_SELECTED3 = {
|
|
11635
|
+
blue: "bg-blue-500/20 text-blue-400",
|
|
11636
|
+
purple: "bg-purple-500/20 text-purple-400",
|
|
11637
|
+
orange: "bg-orange-500/20 text-orange-400",
|
|
11638
|
+
green: "bg-green-500/20 text-green-400",
|
|
11639
|
+
pink: "bg-pink-500/20 text-pink-400",
|
|
11640
|
+
amber: "bg-amber-500/20 text-amber-400",
|
|
11641
|
+
emerald: "bg-emerald-500/20 text-emerald-400",
|
|
11642
|
+
teal: "bg-teal-500/20 text-teal-400",
|
|
11643
|
+
sky: "bg-sky-500/20 text-sky-400",
|
|
11644
|
+
violet: "bg-violet-500/20 text-violet-400"
|
|
11645
|
+
};
|
|
11555
11646
|
function highlightMatch2(text, query) {
|
|
11556
11647
|
if (!query) return text;
|
|
11557
11648
|
const lowerText = text.toLowerCase();
|
|
@@ -11572,7 +11663,8 @@ function TreeNode({
|
|
|
11572
11663
|
expandedPaths,
|
|
11573
11664
|
onToggleExpand,
|
|
11574
11665
|
depth,
|
|
11575
|
-
searchQuery
|
|
11666
|
+
searchQuery,
|
|
11667
|
+
accentColor
|
|
11576
11668
|
}) {
|
|
11577
11669
|
const isLeaf = isLeafNode(node);
|
|
11578
11670
|
const isExpanded = expandedPaths.has(path);
|
|
@@ -11591,8 +11683,8 @@ function TreeNode({
|
|
|
11591
11683
|
{
|
|
11592
11684
|
onClick: handleClick,
|
|
11593
11685
|
className: `
|
|
11594
|
-
w-full flex items-center gap-2 px-2 py-1.5 text-
|
|
11595
|
-
${isSelected ?
|
|
11686
|
+
w-full flex items-center gap-2 px-2 py-1.5 text-md rounded-md transition-colors cursor-pointer
|
|
11687
|
+
${isSelected ? ACCENT_SELECTED3[accentColor] ?? ACCENT_SELECTED3.blue : isInSelectedPath ? "text-neutral-300" : "text-neutral-400"}
|
|
11596
11688
|
${!isSelected && "hover:bg-neutral-800 hover:text-neutral-200"}
|
|
11597
11689
|
`,
|
|
11598
11690
|
style: { paddingLeft: `${depth * 12 + 8}px` },
|
|
@@ -11614,13 +11706,14 @@ function TreeNode({
|
|
|
11614
11706
|
expandedPaths,
|
|
11615
11707
|
onToggleExpand,
|
|
11616
11708
|
depth: depth + 1,
|
|
11617
|
-
searchQuery
|
|
11709
|
+
searchQuery,
|
|
11710
|
+
accentColor
|
|
11618
11711
|
},
|
|
11619
11712
|
child.id
|
|
11620
11713
|
)) })
|
|
11621
11714
|
] });
|
|
11622
11715
|
}
|
|
11623
|
-
function SettingsTreeNav({ tree, selectedPath, onSelectPath }) {
|
|
11716
|
+
function SettingsTreeNav({ tree, selectedPath, onSelectPath, accentColor = "blue" }) {
|
|
11624
11717
|
const [expandedPaths, setExpandedPaths] = useState41(() => {
|
|
11625
11718
|
const expanded = /* @__PURE__ */ new Set();
|
|
11626
11719
|
if (selectedPath) {
|
|
@@ -11720,7 +11813,7 @@ function SettingsTreeNav({ tree, selectedPath, onSelectPath }) {
|
|
|
11720
11813
|
}
|
|
11721
11814
|
)
|
|
11722
11815
|
] }) }),
|
|
11723
|
-
/* @__PURE__ */ jsx67("div", { className: "flex-1 overflow-y-auto py-2", children: filteredTree.length === 0 && searchQuery ? /* @__PURE__ */ jsxs60("p", { className: "text-
|
|
11816
|
+
/* @__PURE__ */ jsx67("div", { className: "flex-1 overflow-y-auto py-2", children: filteredTree.length === 0 && searchQuery ? /* @__PURE__ */ jsxs60("p", { className: "text-sm text-neutral-500 text-center py-4 px-2", children: [
|
|
11724
11817
|
'No settings match "',
|
|
11725
11818
|
searchQuery,
|
|
11726
11819
|
'"'
|
|
@@ -11734,7 +11827,8 @@ function SettingsTreeNav({ tree, selectedPath, onSelectPath }) {
|
|
|
11734
11827
|
expandedPaths,
|
|
11735
11828
|
onToggleExpand: handleToggleExpand,
|
|
11736
11829
|
depth: 0,
|
|
11737
|
-
searchQuery
|
|
11830
|
+
searchQuery,
|
|
11831
|
+
accentColor
|
|
11738
11832
|
},
|
|
11739
11833
|
node.id
|
|
11740
11834
|
)) })
|
|
@@ -11791,7 +11885,7 @@ function SettingsHeader({
|
|
|
11791
11885
|
className: `bg-neutral-950 border border-neutral-700 border-l-2 ${styles.border} rounded-lg p-4 flex items-center gap-4`,
|
|
11792
11886
|
children: [
|
|
11793
11887
|
/* @__PURE__ */ jsx69("div", { className: `flex-shrink-0 w-8 h-8 rounded-lg ${styles.iconBg} flex items-center justify-center`, children: icon ?? /* @__PURE__ */ jsx69(Info8, { className: `w-4 h-4 ${styles.iconColor}` }) }),
|
|
11794
|
-
/* @__PURE__ */ jsx69("p", { className: "flex-1 text-
|
|
11888
|
+
/* @__PURE__ */ jsx69("p", { className: "flex-1 text-md text-neutral-400 leading-relaxed", children: description }),
|
|
11795
11889
|
/* @__PURE__ */ jsxs62("div", { className: "flex-shrink-0 flex items-center gap-2", children: [
|
|
11796
11890
|
action,
|
|
11797
11891
|
onReset && /* @__PURE__ */ jsx69(
|