@flanksource/clicky-ui 0.3.6 → 0.3.7
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/README.md +42 -0
- package/dist/components/DateField.d.ts +1 -1
- package/dist/components/DatePicker.d.ts +1 -1
- package/dist/components/DateTimePicker.d.ts +1 -1
- package/dist/components/FormLookupProvider.cjs +12 -0
- package/dist/components/FormLookupProvider.cjs.map +1 -0
- package/dist/components/FormLookupProvider.d.ts +7 -0
- package/dist/components/FormLookupProvider.d.ts.map +1 -0
- package/dist/components/FormLookupProvider.js +12 -0
- package/dist/components/FormLookupProvider.js.map +1 -0
- package/dist/components/JsonSchemaForm.cjs +2 -2
- package/dist/components/JsonSchemaForm.cjs.map +1 -1
- package/dist/components/JsonSchemaForm.js +1 -1
- package/dist/components/JsonSchemaForm.js.map +1 -1
- package/dist/components/ListMenu.cjs +145 -0
- package/dist/components/ListMenu.cjs.map +1 -0
- package/dist/components/ListMenu.d.ts +54 -0
- package/dist/components/ListMenu.d.ts.map +1 -0
- package/dist/components/ListMenu.js +145 -0
- package/dist/components/ListMenu.js.map +1 -0
- package/dist/components/MdxEditorField.cjs +128 -0
- package/dist/components/MdxEditorField.cjs.map +1 -0
- package/dist/components/MdxEditorField.d.ts +4 -0
- package/dist/components/MdxEditorField.d.ts.map +1 -0
- package/dist/components/MdxEditorField.js +106 -0
- package/dist/components/MdxEditorField.js.map +1 -0
- package/dist/components/MdxEditorToolbar.cjs +76 -0
- package/dist/components/MdxEditorToolbar.cjs.map +1 -0
- package/dist/components/MdxEditorToolbar.d.ts +8 -0
- package/dist/components/MdxEditorToolbar.d.ts.map +1 -0
- package/dist/components/MdxEditorToolbar.js +76 -0
- package/dist/components/MdxEditorToolbar.js.map +1 -0
- package/dist/components/button-variants.d.ts +1 -1
- package/dist/components/button.d.ts +1 -1
- package/dist/components/form-lookup-context.cjs +1 -8
- package/dist/components/form-lookup-context.cjs.map +1 -1
- package/dist/components/form-lookup-context.d.ts +1 -5
- package/dist/components/form-lookup-context.d.ts.map +1 -1
- package/dist/components/form-lookup-context.js +1 -8
- package/dist/components/form-lookup-context.js.map +1 -1
- package/dist/components/jotai-bindings-core.cjs +197 -0
- package/dist/components/jotai-bindings-core.cjs.map +1 -0
- package/dist/components/jotai-bindings-core.d.ts +45 -0
- package/dist/components/jotai-bindings-core.d.ts.map +1 -0
- package/dist/components/jotai-bindings-core.js +197 -0
- package/dist/components/jotai-bindings-core.js.map +1 -0
- package/dist/components/jotai-bindings.cjs +17 -0
- package/dist/components/jotai-bindings.cjs.map +1 -0
- package/dist/components/jotai-bindings.d.ts +4 -0
- package/dist/components/jotai-bindings.d.ts.map +1 -0
- package/dist/components/jotai-bindings.js +17 -0
- package/dist/components/jotai-bindings.js.map +1 -0
- package/dist/components/json-schema-form-fields.cjs +37 -0
- package/dist/components/json-schema-form-fields.cjs.map +1 -1
- package/dist/components/json-schema-form-fields.d.ts +6 -0
- package/dist/components/json-schema-form-fields.d.ts.map +1 -1
- package/dist/components/json-schema-form-fields.js +38 -1
- package/dist/components/json-schema-form-fields.js.map +1 -1
- package/dist/components/json-schema-form-render.cjs +3 -1
- package/dist/components/json-schema-form-render.cjs.map +1 -1
- package/dist/components/json-schema-form-render.d.ts.map +1 -1
- package/dist/components/json-schema-form-render.js +4 -2
- package/dist/components/json-schema-form-render.js.map +1 -1
- package/dist/components/json-schema-form-resolve.cjs +9 -0
- package/dist/components/json-schema-form-resolve.cjs.map +1 -1
- package/dist/components/json-schema-form-resolve.d.ts.map +1 -1
- package/dist/components/json-schema-form-resolve.js +9 -0
- package/dist/components/json-schema-form-resolve.js.map +1 -1
- package/dist/components/json-schema-form-types.d.ts +4 -1
- package/dist/components/json-schema-form-types.d.ts.map +1 -1
- package/dist/components/mdx-editor-field-plugins.cjs +124 -0
- package/dist/components/mdx-editor-field-plugins.cjs.map +1 -0
- package/dist/components/mdx-editor-field-plugins.d.ts +6 -0
- package/dist/components/mdx-editor-field-plugins.d.ts.map +1 -0
- package/dist/components/mdx-editor-field-plugins.js +124 -0
- package/dist/components/mdx-editor-field-plugins.js.map +1 -0
- package/dist/components/mdx-editor-options.d.ts +77 -0
- package/dist/components/mdx-editor-options.d.ts.map +1 -0
- package/dist/components/use-list-menu-selection.cjs +77 -0
- package/dist/components/use-list-menu-selection.cjs.map +1 -0
- package/dist/components/use-list-menu-selection.d.ts +40 -0
- package/dist/components/use-list-menu-selection.d.ts.map +1 -0
- package/dist/components/use-list-menu-selection.js +77 -0
- package/dist/components/use-list-menu-selection.js.map +1 -0
- package/dist/components.cjs +10 -1
- package/dist/components.cjs.map +1 -1
- package/dist/components.d.ts +4 -1
- package/dist/components.d.ts.map +1 -1
- package/dist/components.js +10 -1
- package/dist/components.js.map +1 -1
- package/dist/data/MarkdownEditor.model.d.ts +1 -1
- package/dist/data/PromptBanner.cjs +199 -0
- package/dist/data/PromptBanner.cjs.map +1 -0
- package/dist/data/PromptBanner.d.ts +17 -0
- package/dist/data/PromptBanner.d.ts.map +1 -0
- package/dist/data/PromptBanner.js +199 -0
- package/dist/data/PromptBanner.js.map +1 -0
- package/dist/data/PromptBanner.model.cjs +132 -0
- package/dist/data/PromptBanner.model.cjs.map +1 -0
- package/dist/data/PromptBanner.model.d.ts +23 -0
- package/dist/data/PromptBanner.model.d.ts.map +1 -0
- package/dist/data/PromptBanner.model.js +132 -0
- package/dist/data/PromptBanner.model.js.map +1 -0
- package/dist/data/PromptDialog.cjs +43 -0
- package/dist/data/PromptDialog.cjs.map +1 -0
- package/dist/data/PromptDialog.d.ts +14 -0
- package/dist/data/PromptDialog.d.ts.map +1 -0
- package/dist/data/PromptDialog.js +43 -0
- package/dist/data/PromptDialog.js.map +1 -0
- package/dist/data/TaskManager.cjs +8 -1
- package/dist/data/TaskManager.cjs.map +1 -1
- package/dist/data/TaskManager.d.ts.map +1 -1
- package/dist/data/TaskManager.js +8 -1
- package/dist/data/TaskManager.js.map +1 -1
- package/dist/data/TaskProgress.cjs +15 -2
- package/dist/data/TaskProgress.cjs.map +1 -1
- package/dist/data/TaskProgress.d.ts +0 -10
- package/dist/data/TaskProgress.d.ts.map +1 -1
- package/dist/data/TaskProgress.js +15 -2
- package/dist/data/TaskProgress.js.map +1 -1
- package/dist/data/ai/ChatWindow.cjs +53 -9
- package/dist/data/ai/ChatWindow.cjs.map +1 -1
- package/dist/data/ai/ChatWindow.d.ts.map +1 -1
- package/dist/data/ai/ChatWindow.js +53 -9
- package/dist/data/ai/ChatWindow.js.map +1 -1
- package/dist/data/ai/ToolPreferences.cjs +232 -39
- package/dist/data/ai/ToolPreferences.cjs.map +1 -1
- package/dist/data/ai/ToolPreferences.d.ts +4 -7
- package/dist/data/ai/ToolPreferences.d.ts.map +1 -1
- package/dist/data/ai/ToolPreferences.js +234 -41
- package/dist/data/ai/ToolPreferences.js.map +1 -1
- package/dist/data/chat/clickyOperationsToTools.cjs +89 -3
- package/dist/data/chat/clickyOperationsToTools.cjs.map +1 -1
- package/dist/data/chat/clickyOperationsToTools.d.ts +1 -1
- package/dist/data/chat/clickyOperationsToTools.d.ts.map +1 -1
- package/dist/data/chat/clickyOperationsToTools.js +89 -3
- package/dist/data/chat/clickyOperationsToTools.js.map +1 -1
- package/dist/data/chat/types.cjs.map +1 -1
- package/dist/data/chat/types.d.ts +7 -1
- package/dist/data/chat/types.d.ts.map +1 -1
- package/dist/data/chat/types.js.map +1 -1
- package/dist/data/task-status.cjs +19 -12
- package/dist/data/task-status.cjs.map +1 -1
- package/dist/data/task-status.d.ts +2 -1
- package/dist/data/task-status.d.ts.map +1 -1
- package/dist/data/task-status.js +19 -12
- package/dist/data/task-status.js.map +1 -1
- package/dist/data/test-runner/TestRunner.fixtures.d.ts +11 -4
- package/dist/data/test-runner/TestRunner.fixtures.d.ts.map +1 -1
- package/dist/data/version-info.cjs +3 -3
- package/dist/data/version-info.js +3 -3
- package/dist/data.cjs +7 -0
- package/dist/data.cjs.map +1 -1
- package/dist/data.d.ts +3 -0
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +7 -0
- package/dist/data.js.map +1 -1
- package/dist/hooks/use-prompts.cjs +83 -0
- package/dist/hooks/use-prompts.cjs.map +1 -0
- package/dist/hooks/use-prompts.d.ts +43 -0
- package/dist/hooks/use-prompts.d.ts.map +1 -0
- package/dist/hooks/use-prompts.js +83 -0
- package/dist/hooks/use-prompts.js.map +1 -0
- package/dist/hooks.cjs +3 -0
- package/dist/hooks.cjs.map +1 -1
- package/dist/hooks.d.ts +1 -0
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +3 -0
- package/dist/hooks.js.map +1 -1
- package/dist/index.cjs +17 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +17 -1
- package/dist/index.js.map +1 -1
- package/dist/jotai.cjs +9 -0
- package/dist/jotai.cjs.map +1 -0
- package/dist/jotai.d.ts +4 -0
- package/dist/jotai.d.ts.map +1 -0
- package/dist/jotai.js +9 -0
- package/dist/jotai.js.map +1 -0
- package/dist/lib/utils.cjs +18 -1
- package/dist/lib/utils.cjs.map +1 -1
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/lib/utils.js +18 -1
- package/dist/lib/utils.js.map +1 -1
- package/dist/mdx-editor.cjs +5 -0
- package/dist/mdx-editor.cjs.map +1 -0
- package/dist/mdx-editor.css +2 -0
- package/dist/mdx-editor.d.ts +2 -0
- package/dist/mdx-editor.d.ts.map +1 -0
- package/dist/mdx-editor.js +5 -0
- package/dist/mdx-editor.js.map +1 -0
- package/dist/rpc/apiClient.cjs +1 -1
- package/dist/rpc/apiClient.cjs.map +1 -1
- package/dist/rpc/apiClient.js +1 -1
- package/dist/rpc/apiClient.js.map +1 -1
- package/dist/rpc/surfaceIconMap.cjs +12 -1
- package/dist/rpc/surfaceIconMap.cjs.map +1 -1
- package/dist/rpc/surfaceIconMap.d.ts.map +1 -1
- package/dist/rpc/surfaceIconMap.js +12 -1
- package/dist/rpc/surfaceIconMap.js.map +1 -1
- package/dist/rpc/types.cjs.map +1 -1
- package/dist/rpc/types.d.ts +1 -0
- package/dist/rpc/types.d.ts.map +1 -1
- package/dist/rpc/types.js.map +1 -1
- package/dist/styles.css +1 -1
- package/oxlint-plugins/README.md +148 -0
- package/oxlint-plugins/clicky-ui-no-adhoc-overlay.js +88 -0
- package/oxlint-plugins/clicky-ui-prefer-components.js +46 -0
- package/oxlint-plugins/clicky-ui-prefer-icons.js +121 -0
- package/oxlint-plugins/clicky-ui-prefer-tailwind.js +98 -0
- package/oxlint-plugins/clicky-ui-prefer-theme.js +134 -0
- package/oxlint-plugins/clicky-ui-shared.js +132 -0
- package/oxlint-plugins/clicky-ui.js +34 -0
- package/oxlint-plugins/no-iconify-names.js +37 -0
- package/package.json +21 -1
package/dist/data.js
CHANGED
|
@@ -60,6 +60,9 @@ import { allGroupsTerminal, isTerminalStatus } from "./data/TaskSnapshot.js";
|
|
|
60
60
|
import { bucketTasks, logLevelColor, taskSegments, taskStatusBg, taskStatusColor, taskStatusIcon } from "./data/task-status.js";
|
|
61
61
|
import { TaskProgress } from "./data/TaskProgress.js";
|
|
62
62
|
import { TaskManager } from "./data/TaskManager.js";
|
|
63
|
+
import { PromptDialog } from "./data/PromptDialog.js";
|
|
64
|
+
import { PromptBanner } from "./data/PromptBanner.js";
|
|
65
|
+
import { answerPrompt, usePrompts } from "./hooks/use-prompts.js";
|
|
63
66
|
import { DiagnosticsTree } from "./data/diagnostics/DiagnosticsTree.js";
|
|
64
67
|
import { DiagnosticsDetailPanel } from "./data/diagnostics/DiagnosticsDetailPanel.js";
|
|
65
68
|
import { countProcesses, findProcessByPID, processLabel, processStateColor, processStateIcon } from "./data/diagnostics/utils.js";
|
|
@@ -397,6 +400,8 @@ export {
|
|
|
397
400
|
PrettyStackTrace,
|
|
398
401
|
ProgressBar,
|
|
399
402
|
ProgressBars,
|
|
403
|
+
PromptBanner,
|
|
404
|
+
PromptDialog,
|
|
400
405
|
Properties,
|
|
401
406
|
RadialGauge,
|
|
402
407
|
STATUS_TOKEN_GROUPS,
|
|
@@ -926,6 +931,7 @@ export {
|
|
|
926
931
|
WorkloadCard,
|
|
927
932
|
allGroupsTerminal,
|
|
928
933
|
annotateRoutePaths,
|
|
934
|
+
answerPrompt,
|
|
929
935
|
assignAxes,
|
|
930
936
|
badgeVariants,
|
|
931
937
|
bucketTasks,
|
|
@@ -1014,6 +1020,7 @@ export {
|
|
|
1014
1020
|
taskStatusIcon,
|
|
1015
1021
|
testStatus,
|
|
1016
1022
|
totalDuration,
|
|
1023
|
+
usePrompts,
|
|
1017
1024
|
useTagActions,
|
|
1018
1025
|
useTagActionsValue,
|
|
1019
1026
|
useTestRunner,
|
package/dist/data.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"data.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const react = require("react");
|
|
4
|
+
const DEFAULT_BASE = "/api/todos";
|
|
5
|
+
const DEFAULT_POLL_MS = 2e3;
|
|
6
|
+
function hasEventSource() {
|
|
7
|
+
return typeof globalThis !== "undefined" && typeof globalThis.EventSource !== "undefined";
|
|
8
|
+
}
|
|
9
|
+
function filterQuery(filter) {
|
|
10
|
+
const params = new URLSearchParams();
|
|
11
|
+
if (filter.owner) params.set("owner", filter.owner);
|
|
12
|
+
if (filter.kind) params.set("kind", filter.kind);
|
|
13
|
+
if (filter.state) params.set("state", filter.state);
|
|
14
|
+
for (const [k, v] of Object.entries(filter.labels ?? {})) params.append("label", `${k}=${v}`);
|
|
15
|
+
return params.toString();
|
|
16
|
+
}
|
|
17
|
+
async function answerPrompt(basePath, id, answer) {
|
|
18
|
+
const res = await fetch(`${basePath}/prompts/${encodeURIComponent(id)}/answer`, {
|
|
19
|
+
method: "POST",
|
|
20
|
+
headers: { "Content-Type": "application/json" },
|
|
21
|
+
body: JSON.stringify(answer)
|
|
22
|
+
});
|
|
23
|
+
if (!res.ok) {
|
|
24
|
+
throw new Error(await res.text() || `answer failed: ${res.status}`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
function usePrompts(options = {}) {
|
|
28
|
+
const {
|
|
29
|
+
owner,
|
|
30
|
+
kind,
|
|
31
|
+
state: stateFilter,
|
|
32
|
+
labels,
|
|
33
|
+
basePath = DEFAULT_BASE,
|
|
34
|
+
enabled = true,
|
|
35
|
+
pollMs = DEFAULT_POLL_MS,
|
|
36
|
+
forcePoll = false
|
|
37
|
+
} = options;
|
|
38
|
+
const [prompts, setPrompts] = react.useState([]);
|
|
39
|
+
const [status, setStatus] = react.useState("idle");
|
|
40
|
+
const labelsKey = JSON.stringify(labels ?? {});
|
|
41
|
+
react.useEffect(() => {
|
|
42
|
+
if (!enabled) return;
|
|
43
|
+
const query = filterQuery({ owner, kind, state: stateFilter, labels });
|
|
44
|
+
if (forcePoll || !hasEventSource()) {
|
|
45
|
+
let stopped = false;
|
|
46
|
+
let timer;
|
|
47
|
+
const tick = async () => {
|
|
48
|
+
try {
|
|
49
|
+
const res = await fetch(`${basePath}/prompts${query ? `?${query}` : ""}`, {
|
|
50
|
+
headers: { Accept: "application/json" }
|
|
51
|
+
});
|
|
52
|
+
if (res.ok) {
|
|
53
|
+
setPrompts(await res.json());
|
|
54
|
+
setStatus("polling");
|
|
55
|
+
}
|
|
56
|
+
} catch {
|
|
57
|
+
setStatus("connection lost — retrying");
|
|
58
|
+
}
|
|
59
|
+
if (!stopped) timer = setTimeout(tick, pollMs);
|
|
60
|
+
};
|
|
61
|
+
void tick();
|
|
62
|
+
return () => {
|
|
63
|
+
stopped = true;
|
|
64
|
+
if (timer) clearTimeout(timer);
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
const es = new EventSource(`${basePath}/prompts/stream${query ? `?${query}` : ""}`);
|
|
68
|
+
setStatus("connected");
|
|
69
|
+
es.addEventListener("prompts", (e) => {
|
|
70
|
+
try {
|
|
71
|
+
setPrompts(JSON.parse(e.data));
|
|
72
|
+
} catch {
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
es.onerror = () => setStatus("connection lost — retrying");
|
|
76
|
+
return () => es.close();
|
|
77
|
+
}, [owner, kind, stateFilter, labelsKey, basePath, enabled, pollMs, forcePoll]);
|
|
78
|
+
const pending = prompts.filter((p) => p.state === "pending");
|
|
79
|
+
return { prompts, pending, status };
|
|
80
|
+
}
|
|
81
|
+
exports.answerPrompt = answerPrompt;
|
|
82
|
+
exports.usePrompts = usePrompts;
|
|
83
|
+
//# sourceMappingURL=use-prompts.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-prompts.cjs","sources":["../../src/hooks/use-prompts.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport type { JsonSchemaObject } from \"../components/json-schema-form-types\";\n\n// use-prompts is the generic clicky-ui client for the clicky `prompt` manager\n// (the Go-side question/elicitation broker). Like use-task-runs it is SSE-first —\n// it subscribes to the manager's SSEHandler (event: prompts carrying the full\n// filtered listing) and falls back to polling the JSON endpoint. It speaks only\n// PromptSnapshot, no app concepts; producers (commit checks, tool approvals, AI\n// elicitation) are indistinguishable here.\n\n/** PromptSnapshot mirrors the Go prompt.PromptSnapshot wire shape. */\nexport interface PromptSnapshot {\n id: string;\n kind?: string;\n title: string;\n description?: string;\n schema: JsonSchemaObject;\n /** pending | answered | cancelled | expired */\n state: string;\n value?: Record<string, unknown>;\n cancelled?: boolean;\n owner?: string;\n labels?: Record<string, string>;\n createdAt?: string;\n resolvedAt?: string;\n}\n\nexport interface PromptFilter {\n owner?: string | undefined;\n kind?: string | undefined;\n state?: string | undefined;\n labels?: Record<string, string> | undefined;\n}\n\nexport interface UsePromptsOptions extends PromptFilter {\n /** Base path the prompt API is mounted under, e.g. \"/api/todos\". */\n basePath?: string | undefined;\n enabled?: boolean | undefined;\n pollMs?: number | undefined;\n forcePoll?: boolean | undefined;\n}\n\nexport interface UsePromptsResult {\n prompts: PromptSnapshot[];\n /** Pending prompts only (state === \"pending\"), newest first. */\n pending: PromptSnapshot[];\n status: string;\n}\n\nconst DEFAULT_BASE = \"/api/todos\";\nconst DEFAULT_POLL_MS = 2_000;\n\nfunction hasEventSource(): boolean {\n return typeof globalThis !== \"undefined\" && typeof globalThis.EventSource !== \"undefined\";\n}\n\nfunction filterQuery(filter: PromptFilter): string {\n const params = new URLSearchParams();\n if (filter.owner) params.set(\"owner\", filter.owner);\n if (filter.kind) params.set(\"kind\", filter.kind);\n if (filter.state) params.set(\"state\", filter.state);\n for (const [k, v] of Object.entries(filter.labels ?? {})) params.append(\"label\", `${k}=${v}`);\n return params.toString();\n}\n\n/** Resolve a prompt by id with an answer (or cancel it). */\nexport async function answerPrompt(\n basePath: string,\n id: string,\n answer: { values?: Record<string, unknown>; cancelled?: boolean },\n): Promise<void> {\n const res = await fetch(`${basePath}/prompts/${encodeURIComponent(id)}/answer`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(answer),\n });\n if (!res.ok) {\n throw new Error((await res.text()) || `answer failed: ${res.status}`);\n }\n}\n\n// usePrompts subscribes to the filtered prompt listing. The stream has no\n// completion terminal — a dashboard stays subscribed to observe new prompts.\nexport function usePrompts(options: UsePromptsOptions = {}): UsePromptsResult {\n const {\n owner,\n kind,\n state: stateFilter,\n labels,\n basePath = DEFAULT_BASE,\n enabled = true,\n pollMs = DEFAULT_POLL_MS,\n forcePoll = false,\n } = options;\n\n const [prompts, setPrompts] = useState<PromptSnapshot[]>([]);\n const [status, setStatus] = useState(\"idle\");\n\n const labelsKey = JSON.stringify(labels ?? {});\n useEffect(() => {\n if (!enabled) return;\n const query = filterQuery({ owner, kind, state: stateFilter, labels });\n\n if (forcePoll || !hasEventSource()) {\n let stopped = false;\n let timer: ReturnType<typeof setTimeout> | undefined;\n const tick = async () => {\n try {\n const res = await fetch(`${basePath}/prompts${query ? `?${query}` : \"\"}`, {\n headers: { Accept: \"application/json\" },\n });\n if (res.ok) {\n setPrompts((await res.json()) as PromptSnapshot[]);\n setStatus(\"polling\");\n }\n } catch {\n setStatus(\"connection lost — retrying\");\n }\n if (!stopped) timer = setTimeout(tick, pollMs);\n };\n void tick();\n return () => {\n stopped = true;\n if (timer) clearTimeout(timer);\n };\n }\n\n const es = new EventSource(`${basePath}/prompts/stream${query ? `?${query}` : \"\"}`);\n setStatus(\"connected\");\n es.addEventListener(\"prompts\", (e) => {\n try {\n setPrompts(JSON.parse((e as MessageEvent).data) as PromptSnapshot[]);\n } catch {\n /* ignore malformed frame */\n }\n });\n es.onerror = () => setStatus(\"connection lost — retrying\");\n return () => es.close();\n }, [owner, kind, stateFilter, labelsKey, basePath, enabled, pollMs, forcePoll]);\n\n const pending = prompts.filter((p) => p.state === \"pending\");\n return { prompts, pending, status };\n}\n"],"names":["useState","useEffect"],"mappings":";;;AAiDA,MAAM,eAAe;AACrB,MAAM,kBAAkB;AAExB,SAAS,iBAA0B;AACjC,SAAO,OAAO,eAAe,eAAe,OAAO,WAAW,gBAAgB;AAChF;AAEA,SAAS,YAAY,QAA8B;AACjD,QAAM,SAAS,IAAI,gBAAA;AACnB,MAAI,OAAO,MAAO,QAAO,IAAI,SAAS,OAAO,KAAK;AAClD,MAAI,OAAO,KAAM,QAAO,IAAI,QAAQ,OAAO,IAAI;AAC/C,MAAI,OAAO,MAAO,QAAO,IAAI,SAAS,OAAO,KAAK;AAClD,aAAW,CAAC,GAAG,CAAC,KAAK,OAAO,QAAQ,OAAO,UAAU,CAAA,CAAE,UAAU,OAAO,SAAS,GAAG,CAAC,IAAI,CAAC,EAAE;AAC5F,SAAO,OAAO,SAAA;AAChB;AAGA,eAAsB,aACpB,UACA,IACA,QACe;AACf,QAAM,MAAM,MAAM,MAAM,GAAG,QAAQ,YAAY,mBAAmB,EAAE,CAAC,WAAW;AAAA,IAC9E,QAAQ;AAAA,IACR,SAAS,EAAE,gBAAgB,mBAAA;AAAA,IAC3B,MAAM,KAAK,UAAU,MAAM;AAAA,EAAA,CAC5B;AACD,MAAI,CAAC,IAAI,IAAI;AACX,UAAM,IAAI,MAAO,MAAM,IAAI,UAAW,kBAAkB,IAAI,MAAM,EAAE;AAAA,EACtE;AACF;AAIO,SAAS,WAAW,UAA6B,IAAsB;AAC5E,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,OAAO;AAAA,IACP;AAAA,IACA,WAAW;AAAA,IACX,UAAU;AAAA,IACV,SAAS;AAAA,IACT,YAAY;AAAA,EAAA,IACV;AAEJ,QAAM,CAAC,SAAS,UAAU,IAAIA,MAAAA,SAA2B,CAAA,CAAE;AAC3D,QAAM,CAAC,QAAQ,SAAS,IAAIA,MAAAA,SAAS,MAAM;AAE3C,QAAM,YAAY,KAAK,UAAU,UAAU,CAAA,CAAE;AAC7CC,QAAAA,UAAU,MAAM;AACd,QAAI,CAAC,QAAS;AACd,UAAM,QAAQ,YAAY,EAAE,OAAO,MAAM,OAAO,aAAa,QAAQ;AAErE,QAAI,aAAa,CAAC,kBAAkB;AAClC,UAAI,UAAU;AACd,UAAI;AACJ,YAAM,OAAO,YAAY;AACvB,YAAI;AACF,gBAAM,MAAM,MAAM,MAAM,GAAG,QAAQ,WAAW,QAAQ,IAAI,KAAK,KAAK,EAAE,IAAI;AAAA,YACxE,SAAS,EAAE,QAAQ,mBAAA;AAAA,UAAmB,CACvC;AACD,cAAI,IAAI,IAAI;AACV,uBAAY,MAAM,IAAI,MAA2B;AACjD,sBAAU,SAAS;AAAA,UACrB;AAAA,QACF,QAAQ;AACN,oBAAU,4BAA4B;AAAA,QACxC;AACA,YAAI,CAAC,QAAS,SAAQ,WAAW,MAAM,MAAM;AAAA,MAC/C;AACA,WAAK,KAAA;AACL,aAAO,MAAM;AACX,kBAAU;AACV,YAAI,oBAAoB,KAAK;AAAA,MAC/B;AAAA,IACF;AAEA,UAAM,KAAK,IAAI,YAAY,GAAG,QAAQ,kBAAkB,QAAQ,IAAI,KAAK,KAAK,EAAE,EAAE;AAClF,cAAU,WAAW;AACrB,OAAG,iBAAiB,WAAW,CAAC,MAAM;AACpC,UAAI;AACF,mBAAW,KAAK,MAAO,EAAmB,IAAI,CAAqB;AAAA,MACrE,QAAQ;AAAA,MAER;AAAA,IACF,CAAC;AACD,OAAG,UAAU,MAAM,UAAU,4BAA4B;AACzD,WAAO,MAAM,GAAG,MAAA;AAAA,EAClB,GAAG,CAAC,OAAO,MAAM,aAAa,WAAW,UAAU,SAAS,QAAQ,SAAS,CAAC;AAE9E,QAAM,UAAU,QAAQ,OAAO,CAAC,MAAM,EAAE,UAAU,SAAS;AAC3D,SAAO,EAAE,SAAS,SAAS,OAAA;AAC7B;;;"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { JsonSchemaObject } from '../components/json-schema-form-types';
|
|
2
|
+
/** PromptSnapshot mirrors the Go prompt.PromptSnapshot wire shape. */
|
|
3
|
+
export interface PromptSnapshot {
|
|
4
|
+
id: string;
|
|
5
|
+
kind?: string;
|
|
6
|
+
title: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
schema: JsonSchemaObject;
|
|
9
|
+
/** pending | answered | cancelled | expired */
|
|
10
|
+
state: string;
|
|
11
|
+
value?: Record<string, unknown>;
|
|
12
|
+
cancelled?: boolean;
|
|
13
|
+
owner?: string;
|
|
14
|
+
labels?: Record<string, string>;
|
|
15
|
+
createdAt?: string;
|
|
16
|
+
resolvedAt?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface PromptFilter {
|
|
19
|
+
owner?: string | undefined;
|
|
20
|
+
kind?: string | undefined;
|
|
21
|
+
state?: string | undefined;
|
|
22
|
+
labels?: Record<string, string> | undefined;
|
|
23
|
+
}
|
|
24
|
+
export interface UsePromptsOptions extends PromptFilter {
|
|
25
|
+
/** Base path the prompt API is mounted under, e.g. "/api/todos". */
|
|
26
|
+
basePath?: string | undefined;
|
|
27
|
+
enabled?: boolean | undefined;
|
|
28
|
+
pollMs?: number | undefined;
|
|
29
|
+
forcePoll?: boolean | undefined;
|
|
30
|
+
}
|
|
31
|
+
export interface UsePromptsResult {
|
|
32
|
+
prompts: PromptSnapshot[];
|
|
33
|
+
/** Pending prompts only (state === "pending"), newest first. */
|
|
34
|
+
pending: PromptSnapshot[];
|
|
35
|
+
status: string;
|
|
36
|
+
}
|
|
37
|
+
/** Resolve a prompt by id with an answer (or cancel it). */
|
|
38
|
+
export declare function answerPrompt(basePath: string, id: string, answer: {
|
|
39
|
+
values?: Record<string, unknown>;
|
|
40
|
+
cancelled?: boolean;
|
|
41
|
+
}): Promise<void>;
|
|
42
|
+
export declare function usePrompts(options?: UsePromptsOptions): UsePromptsResult;
|
|
43
|
+
//# sourceMappingURL=use-prompts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-prompts.d.ts","sourceRoot":"","sources":["../../src/hooks/use-prompts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAS7E,sEAAsE;AACtE,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,gBAAgB,CAAC;IACzB,+CAA+C;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;CAC7C;AAED,MAAM,WAAW,iBAAkB,SAAQ,YAAY;IACrD,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACjC;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,gEAAgE;IAChE,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;CAChB;AAkBD,4DAA4D;AAC5D,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAChE,OAAO,CAAC,IAAI,CAAC,CASf;AAID,wBAAgB,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,gBAAgB,CA2D5E"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { useState, useEffect } from "react";
|
|
2
|
+
const DEFAULT_BASE = "/api/todos";
|
|
3
|
+
const DEFAULT_POLL_MS = 2e3;
|
|
4
|
+
function hasEventSource() {
|
|
5
|
+
return typeof globalThis !== "undefined" && typeof globalThis.EventSource !== "undefined";
|
|
6
|
+
}
|
|
7
|
+
function filterQuery(filter) {
|
|
8
|
+
const params = new URLSearchParams();
|
|
9
|
+
if (filter.owner) params.set("owner", filter.owner);
|
|
10
|
+
if (filter.kind) params.set("kind", filter.kind);
|
|
11
|
+
if (filter.state) params.set("state", filter.state);
|
|
12
|
+
for (const [k, v] of Object.entries(filter.labels ?? {})) params.append("label", `${k}=${v}`);
|
|
13
|
+
return params.toString();
|
|
14
|
+
}
|
|
15
|
+
async function answerPrompt(basePath, id, answer) {
|
|
16
|
+
const res = await fetch(`${basePath}/prompts/${encodeURIComponent(id)}/answer`, {
|
|
17
|
+
method: "POST",
|
|
18
|
+
headers: { "Content-Type": "application/json" },
|
|
19
|
+
body: JSON.stringify(answer)
|
|
20
|
+
});
|
|
21
|
+
if (!res.ok) {
|
|
22
|
+
throw new Error(await res.text() || `answer failed: ${res.status}`);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
function usePrompts(options = {}) {
|
|
26
|
+
const {
|
|
27
|
+
owner,
|
|
28
|
+
kind,
|
|
29
|
+
state: stateFilter,
|
|
30
|
+
labels,
|
|
31
|
+
basePath = DEFAULT_BASE,
|
|
32
|
+
enabled = true,
|
|
33
|
+
pollMs = DEFAULT_POLL_MS,
|
|
34
|
+
forcePoll = false
|
|
35
|
+
} = options;
|
|
36
|
+
const [prompts, setPrompts] = useState([]);
|
|
37
|
+
const [status, setStatus] = useState("idle");
|
|
38
|
+
const labelsKey = JSON.stringify(labels ?? {});
|
|
39
|
+
useEffect(() => {
|
|
40
|
+
if (!enabled) return;
|
|
41
|
+
const query = filterQuery({ owner, kind, state: stateFilter, labels });
|
|
42
|
+
if (forcePoll || !hasEventSource()) {
|
|
43
|
+
let stopped = false;
|
|
44
|
+
let timer;
|
|
45
|
+
const tick = async () => {
|
|
46
|
+
try {
|
|
47
|
+
const res = await fetch(`${basePath}/prompts${query ? `?${query}` : ""}`, {
|
|
48
|
+
headers: { Accept: "application/json" }
|
|
49
|
+
});
|
|
50
|
+
if (res.ok) {
|
|
51
|
+
setPrompts(await res.json());
|
|
52
|
+
setStatus("polling");
|
|
53
|
+
}
|
|
54
|
+
} catch {
|
|
55
|
+
setStatus("connection lost — retrying");
|
|
56
|
+
}
|
|
57
|
+
if (!stopped) timer = setTimeout(tick, pollMs);
|
|
58
|
+
};
|
|
59
|
+
void tick();
|
|
60
|
+
return () => {
|
|
61
|
+
stopped = true;
|
|
62
|
+
if (timer) clearTimeout(timer);
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
const es = new EventSource(`${basePath}/prompts/stream${query ? `?${query}` : ""}`);
|
|
66
|
+
setStatus("connected");
|
|
67
|
+
es.addEventListener("prompts", (e) => {
|
|
68
|
+
try {
|
|
69
|
+
setPrompts(JSON.parse(e.data));
|
|
70
|
+
} catch {
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
es.onerror = () => setStatus("connection lost — retrying");
|
|
74
|
+
return () => es.close();
|
|
75
|
+
}, [owner, kind, stateFilter, labelsKey, basePath, enabled, pollMs, forcePoll]);
|
|
76
|
+
const pending = prompts.filter((p) => p.state === "pending");
|
|
77
|
+
return { prompts, pending, status };
|
|
78
|
+
}
|
|
79
|
+
export {
|
|
80
|
+
answerPrompt,
|
|
81
|
+
usePrompts
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=use-prompts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-prompts.js","sources":["../../src/hooks/use-prompts.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport type { JsonSchemaObject } from \"../components/json-schema-form-types\";\n\n// use-prompts is the generic clicky-ui client for the clicky `prompt` manager\n// (the Go-side question/elicitation broker). Like use-task-runs it is SSE-first —\n// it subscribes to the manager's SSEHandler (event: prompts carrying the full\n// filtered listing) and falls back to polling the JSON endpoint. It speaks only\n// PromptSnapshot, no app concepts; producers (commit checks, tool approvals, AI\n// elicitation) are indistinguishable here.\n\n/** PromptSnapshot mirrors the Go prompt.PromptSnapshot wire shape. */\nexport interface PromptSnapshot {\n id: string;\n kind?: string;\n title: string;\n description?: string;\n schema: JsonSchemaObject;\n /** pending | answered | cancelled | expired */\n state: string;\n value?: Record<string, unknown>;\n cancelled?: boolean;\n owner?: string;\n labels?: Record<string, string>;\n createdAt?: string;\n resolvedAt?: string;\n}\n\nexport interface PromptFilter {\n owner?: string | undefined;\n kind?: string | undefined;\n state?: string | undefined;\n labels?: Record<string, string> | undefined;\n}\n\nexport interface UsePromptsOptions extends PromptFilter {\n /** Base path the prompt API is mounted under, e.g. \"/api/todos\". */\n basePath?: string | undefined;\n enabled?: boolean | undefined;\n pollMs?: number | undefined;\n forcePoll?: boolean | undefined;\n}\n\nexport interface UsePromptsResult {\n prompts: PromptSnapshot[];\n /** Pending prompts only (state === \"pending\"), newest first. */\n pending: PromptSnapshot[];\n status: string;\n}\n\nconst DEFAULT_BASE = \"/api/todos\";\nconst DEFAULT_POLL_MS = 2_000;\n\nfunction hasEventSource(): boolean {\n return typeof globalThis !== \"undefined\" && typeof globalThis.EventSource !== \"undefined\";\n}\n\nfunction filterQuery(filter: PromptFilter): string {\n const params = new URLSearchParams();\n if (filter.owner) params.set(\"owner\", filter.owner);\n if (filter.kind) params.set(\"kind\", filter.kind);\n if (filter.state) params.set(\"state\", filter.state);\n for (const [k, v] of Object.entries(filter.labels ?? {})) params.append(\"label\", `${k}=${v}`);\n return params.toString();\n}\n\n/** Resolve a prompt by id with an answer (or cancel it). */\nexport async function answerPrompt(\n basePath: string,\n id: string,\n answer: { values?: Record<string, unknown>; cancelled?: boolean },\n): Promise<void> {\n const res = await fetch(`${basePath}/prompts/${encodeURIComponent(id)}/answer`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(answer),\n });\n if (!res.ok) {\n throw new Error((await res.text()) || `answer failed: ${res.status}`);\n }\n}\n\n// usePrompts subscribes to the filtered prompt listing. The stream has no\n// completion terminal — a dashboard stays subscribed to observe new prompts.\nexport function usePrompts(options: UsePromptsOptions = {}): UsePromptsResult {\n const {\n owner,\n kind,\n state: stateFilter,\n labels,\n basePath = DEFAULT_BASE,\n enabled = true,\n pollMs = DEFAULT_POLL_MS,\n forcePoll = false,\n } = options;\n\n const [prompts, setPrompts] = useState<PromptSnapshot[]>([]);\n const [status, setStatus] = useState(\"idle\");\n\n const labelsKey = JSON.stringify(labels ?? {});\n useEffect(() => {\n if (!enabled) return;\n const query = filterQuery({ owner, kind, state: stateFilter, labels });\n\n if (forcePoll || !hasEventSource()) {\n let stopped = false;\n let timer: ReturnType<typeof setTimeout> | undefined;\n const tick = async () => {\n try {\n const res = await fetch(`${basePath}/prompts${query ? `?${query}` : \"\"}`, {\n headers: { Accept: \"application/json\" },\n });\n if (res.ok) {\n setPrompts((await res.json()) as PromptSnapshot[]);\n setStatus(\"polling\");\n }\n } catch {\n setStatus(\"connection lost — retrying\");\n }\n if (!stopped) timer = setTimeout(tick, pollMs);\n };\n void tick();\n return () => {\n stopped = true;\n if (timer) clearTimeout(timer);\n };\n }\n\n const es = new EventSource(`${basePath}/prompts/stream${query ? `?${query}` : \"\"}`);\n setStatus(\"connected\");\n es.addEventListener(\"prompts\", (e) => {\n try {\n setPrompts(JSON.parse((e as MessageEvent).data) as PromptSnapshot[]);\n } catch {\n /* ignore malformed frame */\n }\n });\n es.onerror = () => setStatus(\"connection lost — retrying\");\n return () => es.close();\n }, [owner, kind, stateFilter, labelsKey, basePath, enabled, pollMs, forcePoll]);\n\n const pending = prompts.filter((p) => p.state === \"pending\");\n return { prompts, pending, status };\n}\n"],"names":[],"mappings":";AAiDA,MAAM,eAAe;AACrB,MAAM,kBAAkB;AAExB,SAAS,iBAA0B;AACjC,SAAO,OAAO,eAAe,eAAe,OAAO,WAAW,gBAAgB;AAChF;AAEA,SAAS,YAAY,QAA8B;AACjD,QAAM,SAAS,IAAI,gBAAA;AACnB,MAAI,OAAO,MAAO,QAAO,IAAI,SAAS,OAAO,KAAK;AAClD,MAAI,OAAO,KAAM,QAAO,IAAI,QAAQ,OAAO,IAAI;AAC/C,MAAI,OAAO,MAAO,QAAO,IAAI,SAAS,OAAO,KAAK;AAClD,aAAW,CAAC,GAAG,CAAC,KAAK,OAAO,QAAQ,OAAO,UAAU,CAAA,CAAE,UAAU,OAAO,SAAS,GAAG,CAAC,IAAI,CAAC,EAAE;AAC5F,SAAO,OAAO,SAAA;AAChB;AAGA,eAAsB,aACpB,UACA,IACA,QACe;AACf,QAAM,MAAM,MAAM,MAAM,GAAG,QAAQ,YAAY,mBAAmB,EAAE,CAAC,WAAW;AAAA,IAC9E,QAAQ;AAAA,IACR,SAAS,EAAE,gBAAgB,mBAAA;AAAA,IAC3B,MAAM,KAAK,UAAU,MAAM;AAAA,EAAA,CAC5B;AACD,MAAI,CAAC,IAAI,IAAI;AACX,UAAM,IAAI,MAAO,MAAM,IAAI,UAAW,kBAAkB,IAAI,MAAM,EAAE;AAAA,EACtE;AACF;AAIO,SAAS,WAAW,UAA6B,IAAsB;AAC5E,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,OAAO;AAAA,IACP;AAAA,IACA,WAAW;AAAA,IACX,UAAU;AAAA,IACV,SAAS;AAAA,IACT,YAAY;AAAA,EAAA,IACV;AAEJ,QAAM,CAAC,SAAS,UAAU,IAAI,SAA2B,CAAA,CAAE;AAC3D,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAS,MAAM;AAE3C,QAAM,YAAY,KAAK,UAAU,UAAU,CAAA,CAAE;AAC7C,YAAU,MAAM;AACd,QAAI,CAAC,QAAS;AACd,UAAM,QAAQ,YAAY,EAAE,OAAO,MAAM,OAAO,aAAa,QAAQ;AAErE,QAAI,aAAa,CAAC,kBAAkB;AAClC,UAAI,UAAU;AACd,UAAI;AACJ,YAAM,OAAO,YAAY;AACvB,YAAI;AACF,gBAAM,MAAM,MAAM,MAAM,GAAG,QAAQ,WAAW,QAAQ,IAAI,KAAK,KAAK,EAAE,IAAI;AAAA,YACxE,SAAS,EAAE,QAAQ,mBAAA;AAAA,UAAmB,CACvC;AACD,cAAI,IAAI,IAAI;AACV,uBAAY,MAAM,IAAI,MAA2B;AACjD,sBAAU,SAAS;AAAA,UACrB;AAAA,QACF,QAAQ;AACN,oBAAU,4BAA4B;AAAA,QACxC;AACA,YAAI,CAAC,QAAS,SAAQ,WAAW,MAAM,MAAM;AAAA,MAC/C;AACA,WAAK,KAAA;AACL,aAAO,MAAM;AACX,kBAAU;AACV,YAAI,oBAAoB,KAAK;AAAA,MAC/B;AAAA,IACF;AAEA,UAAM,KAAK,IAAI,YAAY,GAAG,QAAQ,kBAAkB,QAAQ,IAAI,KAAK,KAAK,EAAE,EAAE;AAClF,cAAU,WAAW;AACrB,OAAG,iBAAiB,WAAW,CAAC,MAAM;AACpC,UAAI;AACF,mBAAW,KAAK,MAAO,EAAmB,IAAI,CAAqB;AAAA,MACrE,QAAQ;AAAA,MAER;AAAA,IACF,CAAC;AACD,OAAG,UAAU,MAAM,UAAU,4BAA4B;AACzD,WAAO,MAAM,GAAG,MAAA;AAAA,EAClB,GAAG,CAAC,OAAO,MAAM,aAAa,WAAW,UAAU,SAAS,QAAQ,SAAS,CAAC;AAE9E,QAAM,UAAU,QAAQ,OAAO,CAAC,MAAM,EAAE,UAAU,SAAS;AAC3D,SAAO,EAAE,SAAS,SAAS,OAAA;AAC7B;"}
|
package/dist/hooks.cjs
CHANGED
|
@@ -7,6 +7,7 @@ const densityProvider = require("./hooks/density-provider.cjs");
|
|
|
7
7
|
const useSort = require("./hooks/use-sort.cjs");
|
|
8
8
|
const useHistoryRoute = require("./hooks/use-history-route.cjs");
|
|
9
9
|
const useTaskRun = require("./hooks/use-task-run.cjs");
|
|
10
|
+
const usePrompts = require("./hooks/use-prompts.cjs");
|
|
10
11
|
exports.useOptionalTheme = useTheme.useOptionalTheme;
|
|
11
12
|
exports.useResolvedTheme = useTheme.useResolvedTheme;
|
|
12
13
|
exports.useTheme = useTheme.useTheme;
|
|
@@ -19,4 +20,6 @@ exports.useSort = useSort.useSort;
|
|
|
19
20
|
exports.useHistoryRoute = useHistoryRoute.useHistoryRoute;
|
|
20
21
|
exports.useTaskRun = useTaskRun.useTaskRun;
|
|
21
22
|
exports.useTaskRuns = useTaskRun.useTaskRuns;
|
|
23
|
+
exports.answerPrompt = usePrompts.answerPrompt;
|
|
24
|
+
exports.usePrompts = usePrompts.usePrompts;
|
|
22
25
|
//# sourceMappingURL=hooks.cjs.map
|
package/dist/hooks.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hooks.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/hooks.d.ts
CHANGED
|
@@ -5,4 +5,5 @@ export { DensityProvider, DensityValueProvider, type DensityProviderProps, } fro
|
|
|
5
5
|
export { useSort, type SortDir, type SortState, type UseSortOptions, type UseSortReturn, } from './hooks/use-sort';
|
|
6
6
|
export { useHistoryRoute, type UseHistoryRouteOptions } from './hooks/use-history-route';
|
|
7
7
|
export { useTaskRun, useTaskRuns, type UseTaskRunOptions, type UseTaskRunResult, type UseTaskRunsOptions, type UseTaskRunsResult, type TaskTransportOptions, } from './hooks/use-task-run';
|
|
8
|
+
export { usePrompts, answerPrompt, type PromptSnapshot, type PromptFilter, type UsePromptsOptions, type UsePromptsResult, } from './hooks/use-prompts';
|
|
8
9
|
//# sourceMappingURL=hooks.d.ts.map
|
package/dist/hooks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,EAChB,KAAK,KAAK,EACV,KAAK,aAAa,GACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,KAAK,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,KAAK,oBAAoB,GAC1B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,OAAO,EACP,KAAK,OAAO,EACZ,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,aAAa,GACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,KAAK,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACzF,OAAO,EACL,UAAU,EACV,WAAW,EACX,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,GAC1B,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,EAChB,KAAK,KAAK,EACV,KAAK,aAAa,GACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,KAAK,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,KAAK,oBAAoB,GAC1B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,OAAO,EACP,KAAK,OAAO,EACZ,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,aAAa,GACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,KAAK,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACzF,OAAO,EACL,UAAU,EACV,WAAW,EACX,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,GAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,UAAU,EACV,YAAY,EACZ,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,GACtB,MAAM,qBAAqB,CAAC"}
|
package/dist/hooks.js
CHANGED
|
@@ -5,14 +5,17 @@ import { DensityProvider, DensityValueProvider } from "./hooks/density-provider.
|
|
|
5
5
|
import { useSort } from "./hooks/use-sort.js";
|
|
6
6
|
import { useHistoryRoute } from "./hooks/use-history-route.js";
|
|
7
7
|
import { useTaskRun, useTaskRuns } from "./hooks/use-task-run.js";
|
|
8
|
+
import { answerPrompt, usePrompts } from "./hooks/use-prompts.js";
|
|
8
9
|
export {
|
|
9
10
|
DensityProvider,
|
|
10
11
|
DensityValueProvider,
|
|
11
12
|
ThemeProvider,
|
|
13
|
+
answerPrompt,
|
|
12
14
|
useDensity,
|
|
13
15
|
useDensityValue,
|
|
14
16
|
useHistoryRoute,
|
|
15
17
|
useOptionalTheme,
|
|
18
|
+
usePrompts,
|
|
16
19
|
useResolvedTheme,
|
|
17
20
|
useSort,
|
|
18
21
|
useTaskRun,
|
package/dist/hooks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hooks.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
|
package/dist/index.cjs
CHANGED
|
@@ -11,6 +11,7 @@ const densityProvider = require("./hooks/density-provider.cjs");
|
|
|
11
11
|
const useSort = require("./hooks/use-sort.cjs");
|
|
12
12
|
const useHistoryRoute = require("./hooks/use-history-route.cjs");
|
|
13
13
|
const useTaskRun = require("./hooks/use-task-run.cjs");
|
|
14
|
+
const usePrompts = require("./hooks/use-prompts.cjs");
|
|
14
15
|
const button = require("./components/button.cjs");
|
|
15
16
|
const loading = require("./components/loading.cjs");
|
|
16
17
|
const buttonVariants = require("./components/button-variants.cjs");
|
|
@@ -41,7 +42,10 @@ const SecretKeySelector = require("./components/SecretKeySelector.cjs");
|
|
|
41
42
|
const themeSwitcher = require("./components/theme-switcher.cjs");
|
|
42
43
|
const densitySwitcher = require("./components/density-switcher.cjs");
|
|
43
44
|
const iconMenuPicker = require("./components/icon-menu-picker.cjs");
|
|
45
|
+
const ListMenu = require("./components/ListMenu.cjs");
|
|
46
|
+
const useListMenuSelection = require("./components/use-list-menu-selection.cjs");
|
|
44
47
|
const JsonSchemaForm = require("./components/JsonSchemaForm.cjs");
|
|
48
|
+
const FormLookupProvider = require("./components/FormLookupProvider.cjs");
|
|
45
49
|
const formLookupContext = require("./components/form-lookup-context.cjs");
|
|
46
50
|
const jsonSchemaFormSize = require("./components/json-schema-form-size.cjs");
|
|
47
51
|
const jsonSchemaFormPreferences = require("./components/json-schema-form-preferences.cjs");
|
|
@@ -122,6 +126,8 @@ const TaskSnapshot = require("./data/TaskSnapshot.cjs");
|
|
|
122
126
|
const taskStatus = require("./data/task-status.cjs");
|
|
123
127
|
const TaskProgress = require("./data/TaskProgress.cjs");
|
|
124
128
|
const TaskManager = require("./data/TaskManager.cjs");
|
|
129
|
+
const PromptDialog = require("./data/PromptDialog.cjs");
|
|
130
|
+
const PromptBanner = require("./data/PromptBanner.cjs");
|
|
125
131
|
const DiagnosticsTree = require("./data/diagnostics/DiagnosticsTree.cjs");
|
|
126
132
|
const DiagnosticsDetailPanel = require("./data/diagnostics/DiagnosticsDetailPanel.cjs");
|
|
127
133
|
const utils$1 = require("./data/diagnostics/utils.cjs");
|
|
@@ -477,6 +483,8 @@ exports.useSort = useSort.useSort;
|
|
|
477
483
|
exports.useHistoryRoute = useHistoryRoute.useHistoryRoute;
|
|
478
484
|
exports.useTaskRun = useTaskRun.useTaskRun;
|
|
479
485
|
exports.useTaskRuns = useTaskRun.useTaskRuns;
|
|
486
|
+
exports.answerPrompt = usePrompts.answerPrompt;
|
|
487
|
+
exports.usePrompts = usePrompts.usePrompts;
|
|
480
488
|
exports.Button = button.Button;
|
|
481
489
|
exports.Loading = loading.Loading;
|
|
482
490
|
exports.LoadingDots = loading.LoadingDots;
|
|
@@ -512,8 +520,14 @@ exports.SecretKeySelector = SecretKeySelector.SecretKeySelector;
|
|
|
512
520
|
exports.ThemeSwitcher = themeSwitcher.ThemeSwitcher;
|
|
513
521
|
exports.DensitySwitcher = densitySwitcher.DensitySwitcher;
|
|
514
522
|
exports.IconMenuPicker = iconMenuPicker.IconMenuPicker;
|
|
523
|
+
exports.ListMenu = ListMenu.ListMenu;
|
|
524
|
+
exports.ListMenuActionBar = ListMenu.ListMenuActionBar;
|
|
525
|
+
exports.ListMenuHeader = ListMenu.ListMenuHeader;
|
|
526
|
+
exports.ListMenuItem = ListMenu.ListMenuItem;
|
|
527
|
+
exports.ListMenuSection = ListMenu.ListMenuSection;
|
|
528
|
+
exports.useListMenuSelection = useListMenuSelection.useListMenuSelection;
|
|
515
529
|
exports.JsonSchemaForm = JsonSchemaForm.JsonSchemaForm;
|
|
516
|
-
exports.FormLookupProvider =
|
|
530
|
+
exports.FormLookupProvider = FormLookupProvider.FormLookupProvider;
|
|
517
531
|
exports.resolveLookupScope = formLookupContext.resolveLookupScope;
|
|
518
532
|
exports.useLookupFetcher = formLookupContext.useLookupFetcher;
|
|
519
533
|
exports.DEFAULT_FORM_SIZE = jsonSchemaFormSize.DEFAULT_FORM_SIZE;
|
|
@@ -637,6 +651,8 @@ exports.taskStatusColor = taskStatus.taskStatusColor;
|
|
|
637
651
|
exports.taskStatusIcon = taskStatus.taskStatusIcon;
|
|
638
652
|
exports.TaskProgress = TaskProgress.TaskProgress;
|
|
639
653
|
exports.TaskManager = TaskManager.TaskManager;
|
|
654
|
+
exports.PromptDialog = PromptDialog.PromptDialog;
|
|
655
|
+
exports.PromptBanner = PromptBanner.PromptBanner;
|
|
640
656
|
exports.DiagnosticsTree = DiagnosticsTree.DiagnosticsTree;
|
|
641
657
|
exports.DiagnosticsDetailPanel = DiagnosticsDetailPanel.DiagnosticsDetailPanel;
|
|
642
658
|
exports.countProcesses = utils$1.countProcesses;
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/index.js
CHANGED
|
@@ -9,6 +9,7 @@ import { DensityProvider, DensityValueProvider } from "./hooks/density-provider.
|
|
|
9
9
|
import { useSort } from "./hooks/use-sort.js";
|
|
10
10
|
import { useHistoryRoute } from "./hooks/use-history-route.js";
|
|
11
11
|
import { useTaskRun, useTaskRuns } from "./hooks/use-task-run.js";
|
|
12
|
+
import { answerPrompt, usePrompts } from "./hooks/use-prompts.js";
|
|
12
13
|
import { Button } from "./components/button.js";
|
|
13
14
|
import { Loading, LoadingDots } from "./components/loading.js";
|
|
14
15
|
import { buttonVariants } from "./components/button-variants.js";
|
|
@@ -39,8 +40,11 @@ import { SecretKeySelector } from "./components/SecretKeySelector.js";
|
|
|
39
40
|
import { ThemeSwitcher } from "./components/theme-switcher.js";
|
|
40
41
|
import { DensitySwitcher } from "./components/density-switcher.js";
|
|
41
42
|
import { IconMenuPicker } from "./components/icon-menu-picker.js";
|
|
43
|
+
import { ListMenu, ListMenuActionBar, ListMenuHeader, ListMenuItem, ListMenuSection } from "./components/ListMenu.js";
|
|
44
|
+
import { useListMenuSelection } from "./components/use-list-menu-selection.js";
|
|
42
45
|
import { JsonSchemaForm } from "./components/JsonSchemaForm.js";
|
|
43
|
-
import { FormLookupProvider
|
|
46
|
+
import { FormLookupProvider } from "./components/FormLookupProvider.js";
|
|
47
|
+
import { resolveLookupScope, useLookupFetcher } from "./components/form-lookup-context.js";
|
|
44
48
|
import { DEFAULT_FORM_SIZE } from "./components/json-schema-form-size.js";
|
|
45
49
|
import { DEFAULT_PREFERENCES_STORAGE_KEY, readPreferences, writePreferences } from "./components/json-schema-form-preferences.js";
|
|
46
50
|
import { effectiveProperties, isOpenStringMap, matchesIf, resolveControl } from "./components/json-schema-form-resolve.js";
|
|
@@ -120,6 +124,8 @@ import { allGroupsTerminal, isTerminalStatus } from "./data/TaskSnapshot.js";
|
|
|
120
124
|
import { bucketTasks, logLevelColor, taskSegments, taskStatusBg, taskStatusColor, taskStatusIcon } from "./data/task-status.js";
|
|
121
125
|
import { TaskProgress } from "./data/TaskProgress.js";
|
|
122
126
|
import { TaskManager } from "./data/TaskManager.js";
|
|
127
|
+
import { PromptDialog } from "./data/PromptDialog.js";
|
|
128
|
+
import { PromptBanner } from "./data/PromptBanner.js";
|
|
123
129
|
import { DiagnosticsTree } from "./data/diagnostics/DiagnosticsTree.js";
|
|
124
130
|
import { DiagnosticsDetailPanel } from "./data/diagnostics/DiagnosticsDetailPanel.js";
|
|
125
131
|
import { countProcesses, findProcessByPID, processLabel, processStateColor, processStateIcon } from "./data/diagnostics/utils.js";
|
|
@@ -533,6 +539,11 @@ export {
|
|
|
533
539
|
JvmStackTrace,
|
|
534
540
|
KeyValueList,
|
|
535
541
|
LabelIcon,
|
|
542
|
+
ListMenu,
|
|
543
|
+
ListMenuActionBar,
|
|
544
|
+
ListMenuHeader,
|
|
545
|
+
ListMenuItem,
|
|
546
|
+
ListMenuSection,
|
|
536
547
|
Loading,
|
|
537
548
|
LoadingDots,
|
|
538
549
|
LogViewer,
|
|
@@ -557,6 +568,8 @@ export {
|
|
|
557
568
|
PrettyStackTrace,
|
|
558
569
|
ProgressBar,
|
|
559
570
|
ProgressBars,
|
|
571
|
+
PromptBanner,
|
|
572
|
+
PromptDialog,
|
|
560
573
|
Properties,
|
|
561
574
|
RadialGauge,
|
|
562
575
|
RangeSlider,
|
|
@@ -1107,6 +1120,7 @@ export {
|
|
|
1107
1120
|
WorkloadPicker,
|
|
1108
1121
|
allGroupsTerminal,
|
|
1109
1122
|
annotateRoutePaths,
|
|
1123
|
+
answerPrompt,
|
|
1110
1124
|
applyCommentFilters,
|
|
1111
1125
|
applyFilterExtensions,
|
|
1112
1126
|
assignAxes,
|
|
@@ -1260,6 +1274,7 @@ export {
|
|
|
1260
1274
|
useDensityValue,
|
|
1261
1275
|
useForm,
|
|
1262
1276
|
useHistoryRoute,
|
|
1277
|
+
useListMenuSelection,
|
|
1263
1278
|
useLookupFetcher,
|
|
1264
1279
|
useMemoryRouter,
|
|
1265
1280
|
useModalStack,
|
|
@@ -1267,6 +1282,7 @@ export {
|
|
|
1267
1282
|
useOperationById,
|
|
1268
1283
|
useOperations,
|
|
1269
1284
|
useOptionalTheme,
|
|
1285
|
+
usePrompts,
|
|
1270
1286
|
useResolvedTheme,
|
|
1271
1287
|
useRouter,
|
|
1272
1288
|
useSort,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/jotai.cjs
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jotaiBindings = require("./components/jotai-bindings.cjs");
|
|
4
|
+
const jotaiBindingsCore = require("./components/jotai-bindings-core.cjs");
|
|
5
|
+
exports.JotaiFilterBar = jotaiBindings.JotaiFilterBar;
|
|
6
|
+
exports.JotaiJsonSchemaForm = jotaiBindings.JotaiJsonSchemaForm;
|
|
7
|
+
exports.useJotaiFilterBarProps = jotaiBindingsCore.useJotaiFilterBarProps;
|
|
8
|
+
exports.useJotaiJsonSchemaFormProps = jotaiBindingsCore.useJotaiJsonSchemaFormProps;
|
|
9
|
+
//# sourceMappingURL=jotai.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jotai.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
|
package/dist/jotai.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { JotaiFilterBar, JotaiJsonSchemaForm, } from './components/jotai-bindings';
|
|
2
|
+
export { useJotaiFilterBarProps, useJotaiJsonSchemaFormProps, } from './components/jotai-bindings-core';
|
|
3
|
+
export type { JotaiFilterBarBooleanFilter, JotaiFilterBarEnumFilter, JotaiFilterBarFilter, JotaiFilterBarLookupFilter, JotaiFilterBarLookupMultiFilter, JotaiFilterBarMultiFilter, JotaiFilterBarNestedMultiFilter, JotaiFilterBarNumberFilter, JotaiFilterBarProps, JotaiFilterBarRangeProps, JotaiFilterBarRangeValue, JotaiFilterBarSearchProps, JotaiFilterBarSelectMultiFilter, JotaiFilterBarTextFilter, JotaiJsonSchemaFormAtom, JotaiJsonSchemaFormProps, JotaiWritableAtom, } from './components/jotai-bindings-core';
|
|
4
|
+
//# sourceMappingURL=jotai.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jotai.d.ts","sourceRoot":"","sources":["../src/jotai.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EACV,2BAA2B,EAC3B,wBAAwB,EACxB,oBAAoB,EACpB,0BAA0B,EAC1B,+BAA+B,EAC/B,yBAAyB,EACzB,+BAA+B,EAC/B,0BAA0B,EAC1B,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,EACxB,yBAAyB,EACzB,+BAA+B,EAC/B,wBAAwB,EACxB,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,kCAAkC,CAAC"}
|
package/dist/jotai.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { JotaiFilterBar, JotaiJsonSchemaForm } from "./components/jotai-bindings.js";
|
|
2
|
+
import { useJotaiFilterBarProps, useJotaiJsonSchemaFormProps } from "./components/jotai-bindings-core.js";
|
|
3
|
+
export {
|
|
4
|
+
JotaiFilterBar,
|
|
5
|
+
JotaiJsonSchemaForm,
|
|
6
|
+
useJotaiFilterBarProps,
|
|
7
|
+
useJotaiJsonSchemaFormProps
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=jotai.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jotai.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
|
package/dist/lib/utils.cjs
CHANGED
|
@@ -2,8 +2,25 @@
|
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const clsx = require("clsx");
|
|
4
4
|
const tailwindMerge = require("tailwind-merge");
|
|
5
|
+
const DENSITY = ["density-1", "density-2", "density-3", "density-4"];
|
|
6
|
+
const twMerge = tailwindMerge.extendTailwindMerge({
|
|
7
|
+
extend: {
|
|
8
|
+
classGroups: {
|
|
9
|
+
h: [{ h: ["control-h", ...DENSITY] }],
|
|
10
|
+
w: [{ w: ["control-h"] }],
|
|
11
|
+
p: [{ p: DENSITY }],
|
|
12
|
+
px: [{ px: ["control-px", ...DENSITY] }],
|
|
13
|
+
py: [{ py: DENSITY }],
|
|
14
|
+
m: [{ m: DENSITY }],
|
|
15
|
+
mt: [{ mt: DENSITY }],
|
|
16
|
+
mb: [{ mb: DENSITY }],
|
|
17
|
+
gap: [{ gap: DENSITY }],
|
|
18
|
+
"font-size": [{ text: ["density-base"] }]
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
});
|
|
5
22
|
function cn(...inputs) {
|
|
6
|
-
return
|
|
23
|
+
return twMerge(clsx.clsx(inputs));
|
|
7
24
|
}
|
|
8
25
|
exports.cn = cn;
|
|
9
26
|
//# sourceMappingURL=utils.cjs.map
|
package/dist/lib/utils.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.cjs","sources":["../../src/lib/utils.ts"],"sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport {
|
|
1
|
+
{"version":3,"file":"utils.cjs","sources":["../../src/lib/utils.ts"],"sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { extendTailwindMerge } from \"tailwind-merge\";\n\n// The design system exposes density-aware utilities backed by CSS variables\n// (h-control-h, px-control-px, gap-density-2, text-density-base, …). Plain\n// tailwind-merge doesn't know these belong to the height/width/spacing/font-size\n// scales, so it can't tell that a consumer's `h-auto`/`px-3`/etc. is meant to\n// override a component's base `h-control-h`/`px-control-px` — it keeps both and\n// the base wins. Registering the tokens with their class groups lets overrides\n// win as intended. Keep this list in sync with the tokens in tailwind-preset.ts.\nconst DENSITY = [\"density-1\", \"density-2\", \"density-3\", \"density-4\"];\nconst twMerge = extendTailwindMerge({\n extend: {\n classGroups: {\n h: [{ h: [\"control-h\", ...DENSITY] }],\n w: [{ w: [\"control-h\"] }],\n p: [{ p: DENSITY }],\n px: [{ px: [\"control-px\", ...DENSITY] }],\n py: [{ py: DENSITY }],\n m: [{ m: DENSITY }],\n mt: [{ mt: DENSITY }],\n mb: [{ mb: DENSITY }],\n gap: [{ gap: DENSITY }],\n \"font-size\": [{ text: [\"density-base\"] }],\n },\n },\n});\n\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n"],"names":["extendTailwindMerge","clsx"],"mappings":";;;;AAUA,MAAM,UAAU,CAAC,aAAa,aAAa,aAAa,WAAW;AACnE,MAAM,UAAUA,cAAAA,oBAAoB;AAAA,EAClC,QAAQ;AAAA,IACN,aAAa;AAAA,MACX,GAAG,CAAC,EAAE,GAAG,CAAC,aAAa,GAAG,OAAO,GAAG;AAAA,MACpC,GAAG,CAAC,EAAE,GAAG,CAAC,WAAW,GAAG;AAAA,MACxB,GAAG,CAAC,EAAE,GAAG,SAAS;AAAA,MAClB,IAAI,CAAC,EAAE,IAAI,CAAC,cAAc,GAAG,OAAO,GAAG;AAAA,MACvC,IAAI,CAAC,EAAE,IAAI,SAAS;AAAA,MACpB,GAAG,CAAC,EAAE,GAAG,SAAS;AAAA,MAClB,IAAI,CAAC,EAAE,IAAI,SAAS;AAAA,MACpB,IAAI,CAAC,EAAE,IAAI,SAAS;AAAA,MACpB,KAAK,CAAC,EAAE,KAAK,SAAS;AAAA,MACtB,aAAa,CAAC,EAAE,MAAM,CAAC,cAAc,GAAG;AAAA,IAAA;AAAA,EAC1C;AAEJ,CAAC;AAEM,SAAS,MAAM,QAA8B;AAClD,SAAO,QAAQC,UAAK,MAAM,CAAC;AAC7B;;"}
|
package/dist/lib/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,MAAM,CAAC;AA4B7C,wBAAgB,EAAE,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAElD"}
|
package/dist/lib/utils.js
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
import { clsx } from "clsx";
|
|
2
|
-
import {
|
|
2
|
+
import { extendTailwindMerge } from "tailwind-merge";
|
|
3
|
+
const DENSITY = ["density-1", "density-2", "density-3", "density-4"];
|
|
4
|
+
const twMerge = extendTailwindMerge({
|
|
5
|
+
extend: {
|
|
6
|
+
classGroups: {
|
|
7
|
+
h: [{ h: ["control-h", ...DENSITY] }],
|
|
8
|
+
w: [{ w: ["control-h"] }],
|
|
9
|
+
p: [{ p: DENSITY }],
|
|
10
|
+
px: [{ px: ["control-px", ...DENSITY] }],
|
|
11
|
+
py: [{ py: DENSITY }],
|
|
12
|
+
m: [{ m: DENSITY }],
|
|
13
|
+
mt: [{ mt: DENSITY }],
|
|
14
|
+
mb: [{ mb: DENSITY }],
|
|
15
|
+
gap: [{ gap: DENSITY }],
|
|
16
|
+
"font-size": [{ text: ["density-base"] }]
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
});
|
|
3
20
|
function cn(...inputs) {
|
|
4
21
|
return twMerge(clsx(inputs));
|
|
5
22
|
}
|
package/dist/lib/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../src/lib/utils.ts"],"sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport {
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../src/lib/utils.ts"],"sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { extendTailwindMerge } from \"tailwind-merge\";\n\n// The design system exposes density-aware utilities backed by CSS variables\n// (h-control-h, px-control-px, gap-density-2, text-density-base, …). Plain\n// tailwind-merge doesn't know these belong to the height/width/spacing/font-size\n// scales, so it can't tell that a consumer's `h-auto`/`px-3`/etc. is meant to\n// override a component's base `h-control-h`/`px-control-px` — it keeps both and\n// the base wins. Registering the tokens with their class groups lets overrides\n// win as intended. Keep this list in sync with the tokens in tailwind-preset.ts.\nconst DENSITY = [\"density-1\", \"density-2\", \"density-3\", \"density-4\"];\nconst twMerge = extendTailwindMerge({\n extend: {\n classGroups: {\n h: [{ h: [\"control-h\", ...DENSITY] }],\n w: [{ w: [\"control-h\"] }],\n p: [{ p: DENSITY }],\n px: [{ px: [\"control-px\", ...DENSITY] }],\n py: [{ py: DENSITY }],\n m: [{ m: DENSITY }],\n mt: [{ mt: DENSITY }],\n mb: [{ mb: DENSITY }],\n gap: [{ gap: DENSITY }],\n \"font-size\": [{ text: [\"density-base\"] }],\n },\n },\n});\n\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n"],"names":[],"mappings":";;AAUA,MAAM,UAAU,CAAC,aAAa,aAAa,aAAa,WAAW;AACnE,MAAM,UAAU,oBAAoB;AAAA,EAClC,QAAQ;AAAA,IACN,aAAa;AAAA,MACX,GAAG,CAAC,EAAE,GAAG,CAAC,aAAa,GAAG,OAAO,GAAG;AAAA,MACpC,GAAG,CAAC,EAAE,GAAG,CAAC,WAAW,GAAG;AAAA,MACxB,GAAG,CAAC,EAAE,GAAG,SAAS;AAAA,MAClB,IAAI,CAAC,EAAE,IAAI,CAAC,cAAc,GAAG,OAAO,GAAG;AAAA,MACvC,IAAI,CAAC,EAAE,IAAI,SAAS;AAAA,MACpB,GAAG,CAAC,EAAE,GAAG,SAAS;AAAA,MAClB,IAAI,CAAC,EAAE,IAAI,SAAS;AAAA,MACpB,IAAI,CAAC,EAAE,IAAI,SAAS;AAAA,MACpB,KAAK,CAAC,EAAE,KAAK,SAAS;AAAA,MACtB,aAAa,CAAC,EAAE,MAAM,CAAC,cAAc,GAAG;AAAA,IAAA;AAAA,EAC1C;AAEJ,CAAC;AAEM,SAAS,MAAM,QAA8B;AAClD,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC7B;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mdx-editor.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|