@burdenoff/microfe-vibecontrols 2026.519.5 → 2026.520.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/docs/DocsEditPanel.js.map +1 -1
- package/dist/components/docs/DocsEmptyState.js +42 -14
- package/dist/components/docs/DocsEmptyState.js.map +1 -1
- package/dist/components/docs/DocsSettingsPanel.js +232 -172
- package/dist/components/docs/DocsSettingsPanel.js.map +1 -1
- package/dist/components/docs/DocsTabPanel.js +5 -3
- package/dist/components/docs/DocsTabPanel.js.map +1 -1
- package/dist/components/docs/types.js +22 -0
- package/dist/components/docs/types.js.map +1 -0
- package/dist/generated/wspace-operations.js +6 -2
- package/dist/generated/wspace-operations.js.map +1 -1
- package/dist/generated/wspace-types.js.map +1 -1
- package/dist/pages/AgentsPage.js +1 -2
- package/dist/pages/AgentsPage.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocsEditPanel.js","names":[],"sources":["../../../src/components/docs/DocsEditPanel.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { ArrowLeft, Settings, RefreshCw } from 'lucide-react';\nimport { DocsPageTree } from './DocsPageTree';\nimport { DocsPageEditor } from './DocsPageEditor';\nimport { DocsSettingsPanel } from './DocsSettingsPanel';\nimport { DocsCompileStatus } from './DocsCompileStatus';\nimport type { DocsSite, DocsPage, DocsRevision } from './types';\nimport { useTr } from '../../shared/hooks/useTr';\n\ninterface DocsEditPanelProps {\n site: DocsSite;\n pages: DocsPage[];\n onBack: () => void;\n onSavePage: (\n id: string,\n data: { title?: string; content?: string; slug?: string }\n ) => Promise<void>;\n onAddPage: (parentId?: string, category?: string) => void;\n onDeletePage: (pageId: string) => void;\n onCompile: () => void;\n onSaveSettings: (data: {\n name?: string;\n visibility?: 'PRIVATE' | 'PUBLIC';\n
|
|
1
|
+
{"version":3,"file":"DocsEditPanel.js","names":[],"sources":["../../../src/components/docs/DocsEditPanel.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { ArrowLeft, Settings, RefreshCw } from 'lucide-react';\nimport { DocsPageTree } from './DocsPageTree';\nimport { DocsPageEditor } from './DocsPageEditor';\nimport { DocsSettingsPanel } from './DocsSettingsPanel';\nimport { DocsCompileStatus } from './DocsCompileStatus';\nimport type { DocsSite, DocsPage, DocsRevision } from './types';\nimport { useTr } from '../../shared/hooks/useTr';\n\ninterface DocsEditPanelProps {\n site: DocsSite;\n pages: DocsPage[];\n onBack: () => void;\n onSavePage: (\n id: string,\n data: { title?: string; content?: string; slug?: string }\n ) => Promise<void>;\n onAddPage: (parentId?: string, category?: string) => void;\n onDeletePage: (pageId: string) => void;\n onCompile: () => void;\n onSaveSettings: (data: {\n name?: string;\n visibility?: 'PRIVATE' | 'PUBLIC';\n provider?: 'DOCUSAURUS' | 'MKDOCS' | 'VITEPRESS';\n providerConfig?: Record<string, unknown>;\n }) => Promise<void>;\n compileRevision: DocsRevision | null;\n onPollRevision?: (id: string) => Promise<DocsRevision | null>;\n compiling: boolean;\n}\n\nexport function DocsEditPanel({\n site,\n pages,\n onBack,\n onSavePage,\n onAddPage,\n onDeletePage,\n onCompile,\n onSaveSettings,\n compileRevision,\n onPollRevision,\n compiling,\n}: DocsEditPanelProps) {\n const tr = useTr();\n const [selectedPageId, setSelectedPageId] = useState<string | null>(pages[0]?.id || null);\n const [showSettings, setShowSettings] = useState(false);\n\n const selectedPage = pages.find((p) => p.id === selectedPageId) || null;\n\n useEffect(() => {\n if (pages.length === 0) {\n if (selectedPageId) setSelectedPageId(null);\n return;\n }\n\n if (!selectedPageId || !pages.some((page) => page.id === selectedPageId)) {\n setSelectedPageId(pages[0].id);\n }\n }, [pages, selectedPageId]);\n\n return (\n <div className=\"flex flex-col h-full\" style={{ minHeight: 'calc(100vh - 380px)' }}>\n {/* Top bar */}\n <div className=\"flex items-center justify-between px-4 py-2 border-b border-border-default bg-bg-surface\">\n <div className=\"flex items-center gap-3\">\n <button\n onClick={onBack}\n className=\"flex items-center gap-1.5 text-sm text-text-secondary hover:text-text-primary transition-colors\"\n >\n <ArrowLeft className=\"w-4 h-4\" />\n {tr('vibecontrols.docs.edit.preview', 'Preview')}\n </button>\n <span className=\"text-text-muted\">|</span>\n <span className=\"text-sm font-medium text-text-primary\">{site.name}</span>\n </div>\n <div className=\"flex items-center gap-2\">\n <div className=\"relative\">\n <DocsCompileStatus revision={compileRevision} onPoll={onPollRevision} />\n </div>\n <button\n onClick={onCompile}\n disabled={compiling}\n className=\"flex items-center gap-1.5 px-3 py-1.5 text-sm bg-action-primary-bg text-action-primary-text rounded-md hover:bg-action-primary-bg-hover transition-colors disabled:opacity-50\"\n >\n <RefreshCw className={`w-3.5 h-3.5 ${compiling ? 'animate-spin' : ''}`} />\n {tr('vibecontrols.docs.edit.compile', 'Compile')}\n </button>\n <button\n onClick={() => setShowSettings(true)}\n className=\"p-1.5 text-text-secondary hover:text-text-primary transition-colors\"\n title=\"Settings\"\n >\n <Settings className=\"w-4 h-4\" />\n </button>\n </div>\n </div>\n\n {/* Main content: sidebar + editor */}\n <div className=\"flex-1 grid grid-cols-[260px_1fr] min-h-0\">\n {/* Page tree sidebar */}\n <div className=\"border-r border-border-default overflow-hidden\">\n <DocsPageTree\n pages={pages}\n selectedPageId={selectedPageId}\n onSelectPage={setSelectedPageId}\n onAddPage={onAddPage}\n onDeletePage={onDeletePage}\n />\n </div>\n\n {/* Editor */}\n <div className=\"overflow-hidden\">\n <DocsPageEditor page={selectedPage} onSave={onSavePage} />\n </div>\n </div>\n\n {/* Settings panel */}\n <DocsSettingsPanel\n site={site}\n open={showSettings}\n onClose={() => setShowSettings(false)}\n onSave={onSaveSettings}\n />\n </div>\n );\n}\n"],"mappings":";;;;;;;;;AA+BA,SAAgB,EAAc,EAC5B,SACA,UACA,WACA,eACA,cACA,iBACA,cACA,mBACA,oBACA,mBACA,gBACqB;CACrB,IAAM,IAAK,GAAO,EACZ,CAAC,GAAgB,KAAqB,EAAwB,EAAM,IAAI,MAAM,KAAK,EACnF,CAAC,GAAc,KAAmB,EAAS,GAAM,EAEjD,IAAe,EAAM,MAAM,MAAM,EAAE,OAAO,EAAe,IAAI;AAanE,QAXA,QAAgB;AACd,MAAI,EAAM,WAAW,GAAG;AACtB,GAAI,KAAgB,EAAkB,KAAK;AAC3C;;AAGF,GAAI,CAAC,KAAkB,CAAC,EAAM,MAAM,MAAS,EAAK,OAAO,EAAe,KACtE,EAAkB,EAAM,GAAG,GAAG;IAE/B,CAAC,GAAO,EAAe,CAAC,EAGzB,kBAAC,OAAD;EAAK,WAAU;EAAuB,OAAO,EAAE,WAAW,uBAAuB;YAAjF;GAEE,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,OAAD;KAAK,WAAU;eAAf;MACE,kBAAC,UAAD;OACE,SAAS;OACT,WAAU;iBAFZ,CAIE,kBAAC,GAAD,EAAW,WAAU,WAAY,CAAA,EAChC,EAAG,kCAAkC,UAAU,CACzC;;MACT,kBAAC,QAAD;OAAM,WAAU;iBAAkB;OAAQ,CAAA;MAC1C,kBAAC,QAAD;OAAM,WAAU;iBAAyC,EAAK;OAAY,CAAA;MACtE;QACN,kBAAC,OAAD;KAAK,WAAU;eAAf;MACE,kBAAC,OAAD;OAAK,WAAU;iBACb,kBAAC,GAAD;QAAmB,UAAU;QAAiB,QAAQ;QAAkB,CAAA;OACpE,CAAA;MACN,kBAAC,UAAD;OACE,SAAS;OACT,UAAU;OACV,WAAU;iBAHZ,CAKE,kBAAC,GAAD,EAAW,WAAW,eAAe,IAAY,iBAAiB,MAAQ,CAAA,EACzE,EAAG,kCAAkC,UAAU,CACzC;;MACT,kBAAC,UAAD;OACE,eAAe,EAAgB,GAAK;OACpC,WAAU;OACV,OAAM;iBAEN,kBAAC,GAAD,EAAU,WAAU,WAAY,CAAA;OACzB,CAAA;MACL;OACF;;GAGN,kBAAC,OAAD;IAAK,WAAU;cAAf,CAEE,kBAAC,OAAD;KAAK,WAAU;eACb,kBAAC,GAAD;MACS;MACS;MAChB,cAAc;MACH;MACG;MACd,CAAA;KACE,CAAA,EAGN,kBAAC,OAAD;KAAK,WAAU;eACb,kBAAC,GAAD;MAAgB,MAAM;MAAc,QAAQ;MAAc,CAAA;KACtD,CAAA,CACF;;GAGN,kBAAC,GAAD;IACQ;IACN,MAAM;IACN,eAAe,EAAgB,GAAM;IACrC,QAAQ;IACR,CAAA;GACE"}
|
|
@@ -1,24 +1,52 @@
|
|
|
1
1
|
import { useTr as e } from "../../shared/hooks/useTr.js";
|
|
2
2
|
import { EmptyState as t } from "../shared/EmptyState.js";
|
|
3
3
|
import "../shared/index.js";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import { DOCS_PROVIDERS as n } from "./types.js";
|
|
5
|
+
import { useState as r } from "react";
|
|
6
|
+
import { BookOpen as i, Plus as a } from "lucide-react";
|
|
7
|
+
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
6
8
|
//#region src/components/docs/DocsEmptyState.tsx
|
|
7
|
-
function
|
|
8
|
-
let
|
|
9
|
-
return /* @__PURE__ */
|
|
10
|
-
icon: /* @__PURE__ */ i
|
|
11
|
-
title:
|
|
12
|
-
description:
|
|
13
|
-
action: /* @__PURE__ */
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
9
|
+
function c({ onCreate: c, loading: l }) {
|
|
10
|
+
let u = e(), [d, f] = r("DOCUSAURUS");
|
|
11
|
+
return /* @__PURE__ */ o(t, {
|
|
12
|
+
icon: /* @__PURE__ */ o(i, { className: "w-8 h-8 text-text-secondary" }),
|
|
13
|
+
title: u("vibecontrols.docs.empty.title", "No documentation yet"),
|
|
14
|
+
description: u("vibecontrols.docs.empty.description", "Pick a static-site generator to back this documentation site. You can switch later."),
|
|
15
|
+
action: /* @__PURE__ */ s("div", {
|
|
16
|
+
className: "flex flex-col items-center gap-3",
|
|
17
|
+
children: [/* @__PURE__ */ o("div", {
|
|
18
|
+
role: "radiogroup",
|
|
19
|
+
"aria-label": "Choose docs provider",
|
|
20
|
+
className: "flex flex-col gap-2 w-full max-w-md",
|
|
21
|
+
children: n.map((e) => /* @__PURE__ */ s("label", {
|
|
22
|
+
"data-testid": `docs-empty-provider-${e.value.toLowerCase()}`,
|
|
23
|
+
className: "flex items-start gap-3 p-3 bg-bg-sunken rounded-md cursor-pointer border border-border-default hover:border-action-primary-bg transition-colors text-left",
|
|
24
|
+
children: [/* @__PURE__ */ o("input", {
|
|
25
|
+
type: "radio",
|
|
26
|
+
name: "docs-empty-provider",
|
|
27
|
+
value: e.value,
|
|
28
|
+
checked: d === e.value,
|
|
29
|
+
onChange: () => f(e.value),
|
|
30
|
+
className: "mt-1 accent-action-primary-bg"
|
|
31
|
+
}), /* @__PURE__ */ s("div", { children: [/* @__PURE__ */ o("p", {
|
|
32
|
+
className: "text-sm font-medium text-text-primary",
|
|
33
|
+
children: e.label
|
|
34
|
+
}), /* @__PURE__ */ o("p", {
|
|
35
|
+
className: "text-xs text-text-muted",
|
|
36
|
+
children: e.description
|
|
37
|
+
})] })]
|
|
38
|
+
}, e.value))
|
|
39
|
+
}), /* @__PURE__ */ s("button", {
|
|
40
|
+
onClick: () => c(d),
|
|
41
|
+
disabled: l,
|
|
42
|
+
"data-testid": "docs-empty-create-button",
|
|
43
|
+
className: "flex items-center gap-2 px-4 py-2 bg-action-primary-bg text-action-primary-text rounded-md hover:bg-action-primary-bg-hover transition-colors disabled:opacity-50",
|
|
44
|
+
children: [/* @__PURE__ */ o(a, { className: "w-4 h-4" }), u("vibecontrols.docs.empty.createDocs", "Create Documentation")]
|
|
45
|
+
})]
|
|
18
46
|
})
|
|
19
47
|
});
|
|
20
48
|
}
|
|
21
49
|
//#endregion
|
|
22
|
-
export {
|
|
50
|
+
export { c as DocsEmptyState };
|
|
23
51
|
|
|
24
52
|
//# sourceMappingURL=DocsEmptyState.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocsEmptyState.js","names":[],"sources":["../../../src/components/docs/DocsEmptyState.tsx"],"sourcesContent":["import { BookOpen, Plus } from 'lucide-react';\nimport { EmptyState } from '@/components/shared';\nimport { useTr } from '../../shared/hooks/useTr';\n\ninterface DocsEmptyStateProps {\n onCreate: () => void;\n loading?: boolean;\n}\n\nexport function DocsEmptyState({ onCreate, loading }: DocsEmptyStateProps) {\n const tr = useTr();\n return (\n <EmptyState\n icon={<BookOpen className=\"w-8 h-8 text-text-secondary\" />}\n title={tr('vibecontrols.docs.empty.title', 'No documentation yet')}\n description={tr(\n 'vibecontrols.docs.empty.description',\n '
|
|
1
|
+
{"version":3,"file":"DocsEmptyState.js","names":[],"sources":["../../../src/components/docs/DocsEmptyState.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { BookOpen, Plus } from 'lucide-react';\nimport { EmptyState } from '@/components/shared';\nimport { useTr } from '../../shared/hooks/useTr';\nimport type { DocsProvider } from './types';\nimport { DOCS_PROVIDERS } from './types';\n\ninterface DocsEmptyStateProps {\n onCreate: (provider: DocsProvider) => void;\n loading?: boolean;\n}\n\nexport function DocsEmptyState({ onCreate, loading }: DocsEmptyStateProps) {\n const tr = useTr();\n const [provider, setProvider] = useState<DocsProvider>('DOCUSAURUS');\n return (\n <EmptyState\n icon={<BookOpen className=\"w-8 h-8 text-text-secondary\" />}\n title={tr('vibecontrols.docs.empty.title', 'No documentation yet')}\n description={tr(\n 'vibecontrols.docs.empty.description',\n 'Pick a static-site generator to back this documentation site. You can switch later.'\n )}\n action={\n <div className=\"flex flex-col items-center gap-3\">\n <div\n role=\"radiogroup\"\n aria-label=\"Choose docs provider\"\n className=\"flex flex-col gap-2 w-full max-w-md\"\n >\n {DOCS_PROVIDERS.map((p) => (\n <label\n key={p.value}\n data-testid={`docs-empty-provider-${p.value.toLowerCase()}`}\n className=\"flex items-start gap-3 p-3 bg-bg-sunken rounded-md cursor-pointer border border-border-default hover:border-action-primary-bg transition-colors text-left\"\n >\n <input\n type=\"radio\"\n name=\"docs-empty-provider\"\n value={p.value}\n checked={provider === p.value}\n onChange={() => setProvider(p.value)}\n className=\"mt-1 accent-action-primary-bg\"\n />\n <div>\n <p className=\"text-sm font-medium text-text-primary\">{p.label}</p>\n <p className=\"text-xs text-text-muted\">{p.description}</p>\n </div>\n </label>\n ))}\n </div>\n <button\n onClick={() => onCreate(provider)}\n disabled={loading}\n data-testid=\"docs-empty-create-button\"\n className=\"flex items-center gap-2 px-4 py-2 bg-action-primary-bg text-action-primary-text rounded-md hover:bg-action-primary-bg-hover transition-colors disabled:opacity-50\"\n >\n <Plus className=\"w-4 h-4\" />\n {tr('vibecontrols.docs.empty.createDocs', 'Create Documentation')}\n </button>\n </div>\n }\n />\n );\n}\n"],"mappings":";;;;;;;;AAYA,SAAgB,EAAe,EAAE,aAAU,cAAgC;CACzE,IAAM,IAAK,GAAO,EACZ,CAAC,GAAU,KAAe,EAAuB,aAAa;AACpE,QACE,kBAAC,GAAD;EACE,MAAM,kBAAC,GAAD,EAAU,WAAU,+BAAgC,CAAA;EAC1D,OAAO,EAAG,iCAAiC,uBAAuB;EAClE,aAAa,EACX,uCACA,sFACD;EACD,QACE,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,OAAD;IACE,MAAK;IACL,cAAW;IACX,WAAU;cAET,EAAe,KAAK,MACnB,kBAAC,SAAD;KAEE,eAAa,uBAAuB,EAAE,MAAM,aAAa;KACzD,WAAU;eAHZ,CAKE,kBAAC,SAAD;MACE,MAAK;MACL,MAAK;MACL,OAAO,EAAE;MACT,SAAS,MAAa,EAAE;MACxB,gBAAgB,EAAY,EAAE,MAAM;MACpC,WAAU;MACV,CAAA,EACF,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;MAAG,WAAU;gBAAyC,EAAE;MAAU,CAAA,EAClE,kBAAC,KAAD;MAAG,WAAU;gBAA2B,EAAE;MAAgB,CAAA,CACtD,EAAA,CAAA,CACA;OAhBD,EAAE,MAgBD,CACR;IACE,CAAA,EACN,kBAAC,UAAD;IACE,eAAe,EAAS,EAAS;IACjC,UAAU;IACV,eAAY;IACZ,WAAU;cAJZ,CAME,kBAAC,GAAD,EAAM,WAAU,WAAY,CAAA,EAC3B,EAAG,sCAAsC,uBAAuB,CAC1D;MACL;;EAER,CAAA"}
|