@thxgg/steward 0.1.13 → 0.1.14
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/.output/nitro.json +1 -1
- package/.output/public/_nuxt/-k8zG74W.js +61 -0
- package/.output/public/_nuxt/B-5VWizU.js +1 -0
- package/.output/public/_nuxt/{Bq6edYSd.js → BDqHART1.js} +1 -1
- package/.output/public/_nuxt/BMAq0QVD.js +42 -0
- package/.output/public/_nuxt/BPeTf9dd.js +1 -0
- package/.output/public/_nuxt/{dOaEkD-3.js → BubpH_wW.js} +1 -1
- package/.output/public/_nuxt/C2HGkiSP.js +1 -0
- package/.output/public/_nuxt/CMu9GKTH.js +4 -0
- package/.output/public/_nuxt/{BZ1iIOYp.js → CVvrkZkq.js} +1 -1
- package/.output/public/_nuxt/C_NevjZD.js +3 -0
- package/.output/public/_nuxt/Detail.CzXXlavD.css +1 -0
- package/.output/public/_nuxt/_prd_.KTotLoF_.css +1 -0
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/b57a8fc3-6a38-4f58-b2ae-54768412ea40.json +1 -0
- package/.output/public/_nuxt/entry.LcDOtJnR.css +1 -0
- package/.output/public/_nuxt/{BFv4l3hn.js → nYTZJhvT.js} +1 -1
- package/.output/public/_nuxt/{kTT8NKtq.js → qKRNa41x.js} +1 -1
- package/.output/public/_nuxt/qt5OEWHC.js +1 -0
- package/.output/public/_nuxt/{C897Egk9.js → uTyw4SRK.js} +1 -1
- package/.output/public/_nuxt/{DoNqd8jQ.js → wbj-mIhK.js} +1 -1
- package/.output/server/chunks/_/task-graph.mjs +196 -0
- package/.output/server/chunks/_/task-graph.mjs.map +1 -0
- package/.output/server/chunks/build/{_prd_-CkKfJB6U.mjs → Detail-DC-KJQ1f.mjs} +911 -1688
- package/.output/server/chunks/build/Detail-DC-KJQ1f.mjs.map +1 -0
- package/.output/server/chunks/build/DiffViewer-styles-1.mjs-D0sb4vsK.mjs +4 -0
- package/.output/server/chunks/build/DiffViewer-styles-1.mjs-D0sb4vsK.mjs.map +1 -0
- package/.output/server/chunks/build/DiffViewer-styles.CkSjCQ0r.mjs +10 -0
- package/.output/server/chunks/build/DiffViewer-styles.CkSjCQ0r.mjs.map +1 -0
- package/.output/server/chunks/build/DiffViewer-styles.FJJuYjYB.mjs +8 -0
- package/.output/server/chunks/build/DiffViewer-styles.FJJuYjYB.mjs.map +1 -0
- package/.output/server/chunks/build/_prd_-C1C4GAhW.mjs +1596 -0
- package/.output/server/chunks/build/_prd_-C1C4GAhW.mjs.map +1 -0
- package/.output/server/chunks/build/client.precomputed.mjs +1 -1
- package/.output/server/chunks/build/{default-B5nw9_Xg.mjs → default-DWCOHHTE.mjs} +32 -20
- package/.output/server/chunks/build/default-DWCOHHTE.mjs.map +1 -0
- package/.output/server/chunks/build/{index-CTpuP9Mj.mjs → index-CckL_NBD.mjs} +2 -2
- package/.output/server/chunks/build/index-CckL_NBD.mjs.map +1 -0
- package/.output/server/chunks/build/{index-D21S97KB.mjs → index-QVeSHT3L.mjs} +3 -3
- package/.output/server/chunks/build/index-QVeSHT3L.mjs.map +1 -0
- package/.output/server/chunks/build/repo-graph-CTEkxiYd.mjs +205 -0
- package/.output/server/chunks/build/repo-graph-CTEkxiYd.mjs.map +1 -0
- package/.output/server/chunks/build/server.mjs +12 -3
- package/.output/server/chunks/build/styles.mjs +2 -2
- package/.output/server/chunks/build/{usePrd-YhvN6Ary.mjs → usePrd-SqcxGyFU.mjs} +20 -2
- package/.output/server/chunks/build/usePrd-SqcxGyFU.mjs.map +1 -0
- package/.output/server/chunks/nitro/nitro.mjs +566 -534
- package/.output/server/chunks/routes/api/repos/_repoId/graph.get.mjs +41 -0
- package/.output/server/chunks/routes/api/repos/_repoId/graph.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug/graph.get.mjs +42 -0
- package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug/graph.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug/progress.get.mjs +1 -1
- package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug/tasks/_taskId/commits.get.mjs +1 -1
- package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug/tasks.get.mjs +1 -1
- package/.output/server/chunks/routes/api/repos/_repoId/prds.get.mjs +1 -1
- package/.output/server/node_modules/@vue-flow/background/dist/vue-flow-background.mjs +126 -0
- package/.output/server/node_modules/@vue-flow/background/package.json +73 -0
- package/.output/server/node_modules/@vue-flow/controls/dist/vue-flow-controls.mjs +207 -0
- package/.output/server/node_modules/@vue-flow/controls/package.json +77 -0
- package/.output/server/node_modules/@vue-flow/core/dist/vue-flow-core.mjs +10186 -0
- package/.output/server/node_modules/@vue-flow/core/package.json +95 -0
- package/.output/server/package.json +4 -1
- package/dist/app/types/graph.js +1 -0
- package/dist/server/utils/task-graph.js +190 -0
- package/package.json +5 -1
- package/.output/public/_nuxt/BuQdImno.js +0 -1
- package/.output/public/_nuxt/CMUOpExW.js +0 -3
- package/.output/public/_nuxt/DE885CbX.js +0 -1
- package/.output/public/_nuxt/DomrzX-T.js +0 -76
- package/.output/public/_nuxt/R2cvz8mH.js +0 -4
- package/.output/public/_nuxt/_prd_.DYvuV73Q.css +0 -1
- package/.output/public/_nuxt/builds/meta/2ad99048-24f9-4cf6-8622-6c088fe0a244.json +0 -1
- package/.output/public/_nuxt/entry.Dk19PK4d.css +0 -1
- package/.output/server/chunks/build/DiffViewer-styles-1.mjs-ZdBUa15f.mjs +0 -4
- package/.output/server/chunks/build/DiffViewer-styles-1.mjs-ZdBUa15f.mjs.map +0 -1
- package/.output/server/chunks/build/DiffViewer-styles.CoMVrk_N.mjs +0 -8
- package/.output/server/chunks/build/DiffViewer-styles.CoMVrk_N.mjs.map +0 -1
- package/.output/server/chunks/build/DiffViewer-styles.cLfMOdMh.mjs +0 -10
- package/.output/server/chunks/build/DiffViewer-styles.cLfMOdMh.mjs.map +0 -1
- package/.output/server/chunks/build/_prd_-CkKfJB6U.mjs.map +0 -1
- package/.output/server/chunks/build/default-B5nw9_Xg.mjs.map +0 -1
- package/.output/server/chunks/build/index-CTpuP9Mj.mjs.map +0 -1
- package/.output/server/chunks/build/index-D21S97KB.mjs.map +0 -1
- package/.output/server/chunks/build/usePrd-YhvN6Ary.mjs.map +0 -1
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@vue-flow/core",
|
|
3
|
+
"version": "1.48.2",
|
|
4
|
+
"private": false,
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"author": "Burak Cakmakoglu<78412429+bcakmakoglu@users.noreply.github.com>",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://github.com/bcakmakoglu/vue-flow",
|
|
10
|
+
"directory": "packages/core"
|
|
11
|
+
},
|
|
12
|
+
"homepage": "https://vueflow.dev",
|
|
13
|
+
"bugs": {
|
|
14
|
+
"url": "https://github.com/bcakmakoglu/vue-flow/issues"
|
|
15
|
+
},
|
|
16
|
+
"keywords": [
|
|
17
|
+
"vue",
|
|
18
|
+
"flow",
|
|
19
|
+
"diagram",
|
|
20
|
+
"editor",
|
|
21
|
+
"graph",
|
|
22
|
+
"node",
|
|
23
|
+
"link",
|
|
24
|
+
"port",
|
|
25
|
+
"slot",
|
|
26
|
+
"vue3",
|
|
27
|
+
"composition-api",
|
|
28
|
+
"vue-flow",
|
|
29
|
+
"vueflow",
|
|
30
|
+
"typescript"
|
|
31
|
+
],
|
|
32
|
+
"main": "./dist/vue-flow-core.js",
|
|
33
|
+
"module": "./dist/vue-flow-core.mjs",
|
|
34
|
+
"types": "./dist/index.d.ts",
|
|
35
|
+
"unpkg": "./dist/vue-flow-core.iife.js",
|
|
36
|
+
"jsdelivr": "./dist/vue-flow-core.iife.js",
|
|
37
|
+
"exports": {
|
|
38
|
+
".": {
|
|
39
|
+
"types": "./dist/index.d.ts",
|
|
40
|
+
"import": "./dist/vue-flow-core.mjs",
|
|
41
|
+
"require": "./dist/vue-flow-core.js"
|
|
42
|
+
},
|
|
43
|
+
"./dist/style.css": "./dist/style.css",
|
|
44
|
+
"./dist/theme-default.css": "./dist/theme-default.css"
|
|
45
|
+
},
|
|
46
|
+
"files": [
|
|
47
|
+
"dist",
|
|
48
|
+
"*.d.ts"
|
|
49
|
+
],
|
|
50
|
+
"sideEffects": [
|
|
51
|
+
"*.css"
|
|
52
|
+
],
|
|
53
|
+
"publishConfig": {
|
|
54
|
+
"access": "public",
|
|
55
|
+
"registry": "https://registry.npmjs.org/"
|
|
56
|
+
},
|
|
57
|
+
"peerDependencies": {
|
|
58
|
+
"vue": "^3.3.0"
|
|
59
|
+
},
|
|
60
|
+
"dependencies": {
|
|
61
|
+
"@vueuse/core": "^10.5.0",
|
|
62
|
+
"d3-drag": "^3.0.0",
|
|
63
|
+
"d3-interpolate": "^3.0.1",
|
|
64
|
+
"d3-selection": "^3.0.0",
|
|
65
|
+
"d3-zoom": "^3.0.0"
|
|
66
|
+
},
|
|
67
|
+
"devDependencies": {
|
|
68
|
+
"@rollup/plugin-replace": "^5.0.3",
|
|
69
|
+
"@types/d3-drag": "^3.0.7",
|
|
70
|
+
"@types/d3-interpolate": "^3.0.4",
|
|
71
|
+
"@types/d3-selection": "^3.0.11",
|
|
72
|
+
"@types/d3-transition": "^3.0.9",
|
|
73
|
+
"@types/d3-zoom": "^3.0.8",
|
|
74
|
+
"@vitejs/plugin-vue": "^4.4.0",
|
|
75
|
+
"autoprefixer": "^10.4.16",
|
|
76
|
+
"postcss": "^8.4.31",
|
|
77
|
+
"postcss-cli": "^10.1.0",
|
|
78
|
+
"postcss-nested": "^6.0.1",
|
|
79
|
+
"vite": "^4.4.11",
|
|
80
|
+
"vue-tsc": "^1.8.16",
|
|
81
|
+
"@tooling/eslint-config": "0.0.0",
|
|
82
|
+
"@tooling/tsconfig": "0.0.0"
|
|
83
|
+
},
|
|
84
|
+
"scripts": {
|
|
85
|
+
"dev": "pnpm types:watch & pnpm build:watch",
|
|
86
|
+
"build": "vite build && vite build -c vite.config.iife.ts",
|
|
87
|
+
"build:watch": "vite build --watch & vite build -c vite.config.iife.ts --watch",
|
|
88
|
+
"types": "vue-tsc --declaration --emitDeclarationOnly && tsc -p ./tsconfig.build.json && shx rm -rf tmp && pnpm lint:dist",
|
|
89
|
+
"types:watch": "vue-tsc --declaration --emitDeclarationOnly --watch & tsc -p ./tsconfig.build.json --watch",
|
|
90
|
+
"theme": "postcss src/style.css -o dist/style.css && postcss src/theme-default.css -o dist/theme-default.css",
|
|
91
|
+
"lint": "eslint --ext .js,.ts,.vue ./",
|
|
92
|
+
"lint:dist": "eslint --ext \".ts,.tsx\" -c .eslintrc.js --fix --ignore-pattern !**/* ./dist",
|
|
93
|
+
"test": "exit 0"
|
|
94
|
+
}
|
|
95
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@thxgg/steward-prod",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.14",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"private": true,
|
|
6
6
|
"dependencies": {
|
|
@@ -21,6 +21,9 @@
|
|
|
21
21
|
"@swc/helpers": "0.5.18",
|
|
22
22
|
"@tanstack/virtual-core": "3.13.18",
|
|
23
23
|
"@tanstack/vue-virtual": "3.13.18",
|
|
24
|
+
"@vue-flow/background": "1.3.2",
|
|
25
|
+
"@vue-flow/controls": "1.1.3",
|
|
26
|
+
"@vue-flow/core": "1.48.2",
|
|
24
27
|
"@vue/compiler-core": "3.5.28",
|
|
25
28
|
"@vue/compiler-dom": "3.5.28",
|
|
26
29
|
"@vue/compiler-ssr": "3.5.28",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import { promises as fs } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { getPrdState, getPrdStateSummaries, migrateLegacyStateForRepo } from './prd-state.js';
|
|
4
|
+
const NODE_SEPARATOR = '::';
|
|
5
|
+
const MISSING_PREFIX = 'missing';
|
|
6
|
+
export function createTaskNodeId(prdSlug, taskId) {
|
|
7
|
+
return `${prdSlug}${NODE_SEPARATOR}${taskId}`;
|
|
8
|
+
}
|
|
9
|
+
function createMissingNodeId(prdSlug, taskId) {
|
|
10
|
+
return `${MISSING_PREFIX}${NODE_SEPARATOR}${prdSlug}${NODE_SEPARATOR}${taskId}`;
|
|
11
|
+
}
|
|
12
|
+
function createEdgeId(source, target) {
|
|
13
|
+
return `${source}->${target}`;
|
|
14
|
+
}
|
|
15
|
+
function parseDependency(rawDependency, currentPrdSlug) {
|
|
16
|
+
const trimmed = rawDependency.trim();
|
|
17
|
+
if (!trimmed) {
|
|
18
|
+
return {
|
|
19
|
+
prdSlug: currentPrdSlug,
|
|
20
|
+
taskId: rawDependency,
|
|
21
|
+
reference: rawDependency
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
const parts = trimmed.split(NODE_SEPARATOR);
|
|
25
|
+
if (parts.length === 2) {
|
|
26
|
+
const [prdSlug, taskId] = parts;
|
|
27
|
+
if (prdSlug && taskId) {
|
|
28
|
+
return {
|
|
29
|
+
prdSlug,
|
|
30
|
+
taskId,
|
|
31
|
+
reference: `${prdSlug}${NODE_SEPARATOR}${taskId}`
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return {
|
|
36
|
+
prdSlug: currentPrdSlug,
|
|
37
|
+
taskId: trimmed,
|
|
38
|
+
reference: trimmed
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
async function resolvePrdName(repo, prdSlug) {
|
|
42
|
+
const prdPath = join(repo.path, 'docs', 'prd', `${prdSlug}.md`);
|
|
43
|
+
try {
|
|
44
|
+
const content = await fs.readFile(prdPath, 'utf-8');
|
|
45
|
+
const h1Match = content.match(/^#\s+(.+)$/m);
|
|
46
|
+
return h1Match?.[1]?.trim() || prdSlug;
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return prdSlug;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
function buildStats(taskNodes, unresolvedCount) {
|
|
53
|
+
const pending = taskNodes.filter((node) => node.status === 'pending').length;
|
|
54
|
+
const inProgress = taskNodes.filter((node) => node.status === 'in_progress').length;
|
|
55
|
+
const completed = taskNodes.filter((node) => node.status === 'completed').length;
|
|
56
|
+
return {
|
|
57
|
+
total: taskNodes.length,
|
|
58
|
+
pending,
|
|
59
|
+
inProgress,
|
|
60
|
+
completed,
|
|
61
|
+
unresolved: unresolvedCount
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
function sortNodes(nodes) {
|
|
65
|
+
return [...nodes].sort((a, b) => {
|
|
66
|
+
if (a.kind !== b.kind) {
|
|
67
|
+
return a.kind === 'task' ? -1 : 1;
|
|
68
|
+
}
|
|
69
|
+
return a.id.localeCompare(b.id);
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
function sortEdges(edges) {
|
|
73
|
+
return [...edges].sort((a, b) => a.id.localeCompare(b.id));
|
|
74
|
+
}
|
|
75
|
+
function buildGraphFromInputs(inputs) {
|
|
76
|
+
const taskNodes = new Map();
|
|
77
|
+
const missingNodes = new Map();
|
|
78
|
+
const edges = new Map();
|
|
79
|
+
for (const input of inputs) {
|
|
80
|
+
for (const task of input.tasks) {
|
|
81
|
+
const nodeId = createTaskNodeId(input.prdSlug, task.id);
|
|
82
|
+
taskNodes.set(nodeId, {
|
|
83
|
+
id: nodeId,
|
|
84
|
+
kind: 'task',
|
|
85
|
+
taskId: task.id,
|
|
86
|
+
prdSlug: input.prdSlug,
|
|
87
|
+
prdName: input.prdName,
|
|
88
|
+
title: task.title,
|
|
89
|
+
status: task.status,
|
|
90
|
+
category: task.category,
|
|
91
|
+
priority: task.priority
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
for (const input of inputs) {
|
|
96
|
+
for (const task of input.tasks) {
|
|
97
|
+
const targetId = createTaskNodeId(input.prdSlug, task.id);
|
|
98
|
+
for (const rawDependency of task.dependencies) {
|
|
99
|
+
const dependency = parseDependency(rawDependency, input.prdSlug);
|
|
100
|
+
const sourceTaskId = createTaskNodeId(dependency.prdSlug, dependency.taskId);
|
|
101
|
+
if (taskNodes.has(sourceTaskId)) {
|
|
102
|
+
const edgeId = createEdgeId(sourceTaskId, targetId);
|
|
103
|
+
edges.set(edgeId, {
|
|
104
|
+
id: edgeId,
|
|
105
|
+
source: sourceTaskId,
|
|
106
|
+
target: targetId,
|
|
107
|
+
type: 'dependency'
|
|
108
|
+
});
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
const missingNodeId = createMissingNodeId(dependency.prdSlug, dependency.taskId);
|
|
112
|
+
if (!missingNodes.has(missingNodeId)) {
|
|
113
|
+
missingNodes.set(missingNodeId, {
|
|
114
|
+
id: missingNodeId,
|
|
115
|
+
kind: 'external',
|
|
116
|
+
title: `Missing: ${dependency.reference}`,
|
|
117
|
+
unresolved: true,
|
|
118
|
+
dependencyRef: dependency.reference
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
const unresolvedEdgeId = createEdgeId(missingNodeId, targetId);
|
|
122
|
+
edges.set(unresolvedEdgeId, {
|
|
123
|
+
id: unresolvedEdgeId,
|
|
124
|
+
source: missingNodeId,
|
|
125
|
+
target: targetId,
|
|
126
|
+
type: 'dependency',
|
|
127
|
+
unresolved: true
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
const taskNodeList = [...taskNodes.values()];
|
|
133
|
+
const nodeList = sortNodes([...taskNodeList, ...missingNodes.values()]);
|
|
134
|
+
const edgeList = sortEdges([...edges.values()]);
|
|
135
|
+
return {
|
|
136
|
+
nodes: nodeList,
|
|
137
|
+
edges: edgeList,
|
|
138
|
+
stats: buildStats(taskNodeList, missingNodes.size)
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
export async function buildPrdGraph(repo, prdSlug) {
|
|
142
|
+
await migrateLegacyStateForRepo(repo);
|
|
143
|
+
const [state, prdName] = await Promise.all([
|
|
144
|
+
getPrdState(repo.id, prdSlug),
|
|
145
|
+
resolvePrdName(repo, prdSlug)
|
|
146
|
+
]);
|
|
147
|
+
const tasks = Array.isArray(state?.tasks?.tasks) ? state.tasks.tasks : [];
|
|
148
|
+
const graph = buildGraphFromInputs([
|
|
149
|
+
{
|
|
150
|
+
prdSlug,
|
|
151
|
+
prdName,
|
|
152
|
+
tasks
|
|
153
|
+
}
|
|
154
|
+
]);
|
|
155
|
+
return {
|
|
156
|
+
scope: 'prd',
|
|
157
|
+
repoId: repo.id,
|
|
158
|
+
prdSlug,
|
|
159
|
+
nodes: graph.nodes,
|
|
160
|
+
edges: graph.edges,
|
|
161
|
+
stats: graph.stats
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
export async function buildRepoGraph(repo) {
|
|
165
|
+
await migrateLegacyStateForRepo(repo);
|
|
166
|
+
const summaries = await getPrdStateSummaries(repo.id);
|
|
167
|
+
const slugs = [...summaries.keys()].sort((a, b) => a.localeCompare(b));
|
|
168
|
+
const inputs = [];
|
|
169
|
+
for (const slug of slugs) {
|
|
170
|
+
const state = await getPrdState(repo.id, slug);
|
|
171
|
+
const tasks = state?.tasks?.tasks;
|
|
172
|
+
if (!Array.isArray(tasks)) {
|
|
173
|
+
continue;
|
|
174
|
+
}
|
|
175
|
+
inputs.push({
|
|
176
|
+
prdSlug: slug,
|
|
177
|
+
prdName: await resolvePrdName(repo, slug),
|
|
178
|
+
tasks
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
const graph = buildGraphFromInputs(inputs);
|
|
182
|
+
return {
|
|
183
|
+
scope: 'repo',
|
|
184
|
+
repoId: repo.id,
|
|
185
|
+
prds: inputs.map((input) => input.prdSlug).sort((a, b) => a.localeCompare(b)),
|
|
186
|
+
nodes: graph.nodes,
|
|
187
|
+
edges: graph.edges,
|
|
188
|
+
stats: graph.stats
|
|
189
|
+
};
|
|
190
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@thxgg/steward",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.14",
|
|
4
4
|
"description": "Local-first PRD workflow steward with codemode MCP and web UI.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"author": "thxgg",
|
|
@@ -54,7 +54,11 @@
|
|
|
54
54
|
"prepack": "npm run build"
|
|
55
55
|
},
|
|
56
56
|
"dependencies": {
|
|
57
|
+
"@dagrejs/dagre": "^2.0.4",
|
|
57
58
|
"@modelcontextprotocol/sdk": "^1.26.0",
|
|
59
|
+
"@vue-flow/background": "^1.3.2",
|
|
60
|
+
"@vue-flow/controls": "^1.1.3",
|
|
61
|
+
"@vue-flow/core": "^1.48.2",
|
|
58
62
|
"@vueuse/core": "^14.1.0",
|
|
59
63
|
"chokidar": "^5.0.0",
|
|
60
64
|
"class-variance-authority": "^0.7.1",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as V,l as e,Y as _t,g as R,k as oe,o as u,z as g,E as j,c as S,n as U,F as Z,r as te,y as bt,C as ue,w as p,A as O,q as C,b as v,N as ge,p as ke,Z as xt,x as ce,B as ye,$ as Ct,j as Je,X as Me,a as c,t as z,a0 as kt,a1 as wt,m as ve,S as pe,d as W,a2 as St,O as Ie,P as Pe,V as Fe,a3 as Qe,W as $t,a4 as Et,a5 as Rt}from"./R2cvz8mH.js";import{c as _e,l as Oe,e as Dt,r as Ye,f as Ze,P as ne,d as Be,u as we,o as Bt,B as de,b as et,a as ze,F as Te,k as J,j as X,m as At}from"./DE885CbX.js";import{x as It,V as Pt,y as Ve,a as je,u as Ft,g as Ot,c as be,d as Se,e as Tt,z as Lt,j as Mt,t as tt,k as zt,s as Vt,r as jt,m as qt,n as Kt,o as Ht,A as Ut,p as Nt,S as Gt,L as Wt,C as Xt,R as st,B as Jt,i as fe,F as Qt,G as qe,H as at,I as ot,J as nt,X as lt,h as $e,M as Yt,N as Zt,O as es,l as ts,v as ss,K as as}from"./CMUOpExW.js";import{F as os,I as ns,a as Le}from"./kTT8NKtq.js";import{_ as ls}from"./DoNqd8jQ.js";const rt=_e("monitor",[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]]);const it=_e("moon",[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]]);const rs=_e("search",[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]]);const ut=_e("sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]);const is=_e("trash-2",[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]]);function us(a,t,s){const o=a.findIndex(l=>Oe(l,t)),r=a.findIndex(l=>Oe(l,s));if(o===-1||r===-1)return[];const[i,n]=[o,r].sort((l,f)=>l-f);return a.slice(i,n+1)}function ds(a){const t=V(()=>e(a)),s=V(()=>new Intl.Collator("en",{usage:"search",...t.value}));return{startsWith:(n,l)=>l.length===0?!0:(n=n.normalize("NFC"),l=l.normalize("NFC"),s.value.compare(n.slice(0,l.length),l)===0),endsWith:(n,l)=>l.length===0?!0:(n=n.normalize("NFC"),l=l.normalize("NFC"),s.value.compare(n.slice(-l.length),l)===0),contains:(n,l)=>{if(l.length===0)return!0;n=n.normalize("NFC"),l=l.normalize("NFC");let f=0;const d=l.length;for(;f+d<=n.length;f++){const y=n.slice(f,f+d);if(s.value.compare(l,y)===0)return!0}return!1}}}function cs(a){return V(()=>_t(a)?!!Dt(a)?.closest("form"):!0)}function ps(){return{ALT:"Alt",ARROW_DOWN:"ArrowDown",ARROW_LEFT:"ArrowLeft",ARROW_RIGHT:"ArrowRight",ARROW_UP:"ArrowUp",BACKSPACE:"Backspace",CAPS_LOCK:"CapsLock",CONTROL:"Control",DELETE:"Delete",END:"End",ENTER:"Enter",ESCAPE:"Escape",F1:"F1",F10:"F10",F11:"F11",F12:"F12",F2:"F2",F3:"F3",F4:"F4",F5:"F5",F6:"F6",F7:"F7",F8:"F8",F9:"F9",HOME:"Home",META:"Meta",PAGE_DOWN:"PageDown",PAGE_UP:"PageUp",SHIFT:"Shift",SPACE:" ",TAB:"Tab",CTRL:"Control",ASTERISK:"*",SPACE_CODE:"Space"}}function fs(a){const t=Ye("",1e3);return{search:t,handleTypeaheadSearch:(r,i)=>{t.value=t.value+r;{const n=It(),l=i.map(_=>({..._,textValue:_.value?.textValue??_.ref.textContent?.trim()??""})),f=l.find(_=>_.ref===n),d=l.map(_=>_.textValue),y=vs(d,t.value,f?.textValue),m=l.find(_=>_.textValue===y);return m&&m.ref.focus(),m?.ref}},resetTypeahead:()=>{t.value=""}}}function ms(a,t){return a.map((s,o)=>a[(t+o)%a.length])}function vs(a,t,s){const r=t.length>1&&Array.from(t).every(d=>d===t[0])?t[0]:t,i=s?a.indexOf(s):-1;let n=ms(a,Math.max(i,0));r.length===1&&(n=n.filter(d=>d!==s));const f=n.find(d=>d.toLowerCase().startsWith(r.toLowerCase()));return f!==s?f:void 0}var hs=R({inheritAttrs:!1,__name:"VisuallyHiddenInputBubble",props:{name:{type:String,required:!0},value:{type:null,required:!0},checked:{type:Boolean,required:!1,default:void 0},required:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},feature:{type:String,required:!1,default:"fully-hidden"}},setup(a){const t=a,{primitiveElement:s,currentElement:o}=Ve(),r=V(()=>t.checked??t.value);return oe(r,(i,n)=>{if(!o.value)return;const l=o.value,f=window.HTMLInputElement.prototype,y=Object.getOwnPropertyDescriptor(f,"value").set;if(y&&i!==n){const m=new Event("input",{bubbles:!0}),_=new Event("change",{bubbles:!0});y.call(l,i),l.dispatchEvent(m),l.dispatchEvent(_)}}),(i,n)=>(u(),g(Pt,j({ref_key:"primitiveElement",ref:s},{...t,...i.$attrs},{as:"input"}),null,16))}}),Ne=hs,gs=R({inheritAttrs:!1,__name:"VisuallyHiddenInput",props:{name:{type:String,required:!0},value:{type:null,required:!0},checked:{type:Boolean,required:!1,default:void 0},required:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},feature:{type:String,required:!1,default:"fully-hidden"}},setup(a){const t=a,s=V(()=>typeof t.value=="object"&&Array.isArray(t.value)&&t.value.length===0&&t.required),o=V(()=>typeof t.value=="string"||typeof t.value=="number"||typeof t.value=="boolean"||t.value===null||t.value===void 0?[{name:t.name,value:t.value}]:typeof t.value=="object"&&Array.isArray(t.value)?t.value.flatMap((r,i)=>typeof r=="object"?Object.entries(r).map(([n,l])=>({name:`${t.name}[${i}][${n}]`,value:l})):{name:`${t.name}[${i}]`,value:r}):t.value!==null&&typeof t.value=="object"&&!Array.isArray(t.value)?Object.entries(t.value).map(([r,i])=>({name:`${t.name}[${r}]`,value:i})):[]);return(r,i)=>(u(),S(Z,null,[U(" We render single input if it's required "),s.value?(u(),g(Ne,j({key:r.name},{...t,...r.$attrs},{name:r.name,value:r.value}),null,16,["name","value"])):(u(!0),S(Z,{key:1},te(o.value,n=>(u(),g(Ne,j({key:n.name},{ref_for:!0},{...t,...r.$attrs},{name:n.name,value:n.value}),null,16,["name","value"]))),128))],2112))}}),ys=gs;function _s(a,t,s){return a===void 0?!1:Array.isArray(a)?a.some(o=>he(o,t,s)):he(a,t,s)}function he(a,t,s){return a===void 0||t===void 0?!1:typeof a=="string"?a===t:typeof s=="function"?s(a,t):typeof s=="string"?a?.[s]===t?.[s]:Oe(a,t)}const[Ke,bs]=be("ListboxRoot");var xs=R({__name:"ListboxRoot",props:{modelValue:{type:null,required:!1},defaultValue:{type:null,required:!1},multiple:{type:Boolean,required:!1},orientation:{type:String,required:!1,default:"vertical"},dir:{type:String,required:!1},disabled:{type:Boolean,required:!1},selectionBehavior:{type:String,required:!1,default:"toggle"},highlightOnHover:{type:Boolean,required:!1},by:{type:[String,Function],required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:["update:modelValue","highlight","entryFocus","leave"],setup(a,{expose:t,emit:s}){const o=a,r=s,{multiple:i,highlightOnHover:n,orientation:l,disabled:f,selectionBehavior:d,dir:y}=bt(o),{getItems:m}=je({isProvider:!0}),{handleTypeaheadSearch:_}=fs(),{primitiveElement:M,currentElement:x}=Ve(),B=ps(),L=Ft(y),k=cs(x),q=C(),D=C(!1),N=C(!0),E=Ze(o,"modelValue",r,{defaultValue:o.defaultValue??(i.value?[]:void 0),passive:o.modelValue===void 0,deep:!0});function se(h){if(D.value=!0,o.multiple){const w=Array.isArray(E.value)?[...E.value]:[],$=w.findIndex(H=>he(H,h,o.by));o.selectionBehavior==="toggle"?($===-1?w.push(h):w.splice($,1),E.value=w):(E.value=[h],q.value=h)}else o.selectionBehavior==="toggle"&&he(E.value,h,o.by)?E.value=void 0:E.value=h;setTimeout(()=>{D.value=!1},1)}const K=C(null),ee=C(null),P=C(!1),F=C(!1),I=Be(),G=Be(),Y=Be();function ae(){return m().map(h=>h.ref).filter(h=>h.dataset.disabled!=="")}function Q(h,w=!0){if(!h)return;K.value=h,N.value&&K.value.focus(),w&&K.value.scrollIntoView({block:"nearest"});const $=m().find(H=>H.ref===h);r("highlight",$)}function Re(h){if(P.value)Y.trigger(h);else{const w=m().find($=>he($.value,h,o.by));w&&(K.value=w.ref,Q(w.ref))}}function xe(h){K.value&&K.value.isConnected&&(h.preventDefault(),h.stopPropagation(),F.value||K.value.click())}function T(h){if(N.value){if(D.value=!0,P.value)G.trigger(h);else{const w=h.altKey||h.ctrlKey||h.metaKey;if(w&&h.key==="a"&&i.value){const $=m(),H=$.map(re=>re.value);E.value=[...H],h.preventDefault(),Q($[$.length-1].ref)}else if(!w){const $=_(h.key,m());$&&Q($)}}setTimeout(()=>{D.value=!1},1)}}function b(){F.value=!0}function A(){ue(()=>{F.value=!1})}function le(){ue(()=>{const h=new KeyboardEvent("keydown",{key:"PageUp"});He(h)})}function De(h){const w=K.value;w?.isConnected&&(ee.value=w),K.value=null,r("leave",h)}function ht(h){const w=new CustomEvent("listbox.entryFocus",{bubbles:!1,cancelable:!0});if(h.currentTarget?.dispatchEvent(w),r("entryFocus",w),!w.defaultPrevented)if(ee.value)Q(ee.value);else{const $=ae()?.[0];Q($)}}function He(h){const w=Ot(h,l.value,L.value);if(!w)return;let $=ae();if(K.value){if(w==="last")$.reverse();else if(w==="prev"||w==="next"){w==="prev"&&$.reverse();const H=$.indexOf(K.value);$=$.slice(H+1)}gt(h,$[0])}if($.length){const H=!K.value&&w==="prev"?$.length-1:0;Q($[H])}if(P.value)return G.trigger(h)}function gt(h,w){if(!(P.value||o.selectionBehavior!=="replace"||!i.value||!Array.isArray(E.value)||(h.altKey||h.ctrlKey||h.metaKey)&&!h.shiftKey)&&h.shiftKey){const H=m().filter(me=>me.ref.dataset.disabled!=="");let re=H.find(me=>me.ref===w)?.value;if(h.key===B.END?re=H[H.length-1].value:h.key===B.HOME&&(re=H[0].value),!re||!q.value)return;const yt=us(H.map(me=>me.value),q.value,re);E.value=yt}}async function Ue(h){if(await ue(),P.value)I.trigger(h);else{const w=ae(),$=w.find(H=>H.dataset.state==="checked");$?Q($):w.length&&Q(w[0])}}return oe(E,()=>{D.value||ue(()=>{Ue()})},{immediate:!0,deep:!0}),t({highlightedElement:K,highlightItem:Re,highlightFirstItem:le,highlightSelected:Ue,getItems:m}),bs({modelValue:E,onValueChange:se,multiple:i,orientation:l,dir:L,disabled:f,highlightOnHover:n,highlightedElement:K,isVirtual:P,virtualFocusHook:I,virtualKeydownHook:G,virtualHighlightHook:Y,by:o.by,firstValue:q,selectionBehavior:d,focusable:N,onLeave:De,onEnter:ht,changeHighlight:Q,onKeydownEnter:xe,onKeydownNavigation:He,onKeydownTypeAhead:T,onCompositionStart:b,onCompositionEnd:A,highlightFirstItem:le}),(h,w)=>(u(),g(e(ne),{ref_key:"primitiveElement",ref:M,as:h.as,"as-child":h.asChild,dir:e(L),"data-disabled":e(f)?"":void 0,onPointerleave:De,onFocusout:w[0]||(w[0]=async $=>{const H=$.relatedTarget||$.target;await ue(),K.value&&e(x)&&!e(x).contains(H)&&De($)})},{default:p(()=>[O(h.$slots,"default",{modelValue:e(E)}),e(k)&&h.name?(u(),g(e(ys),{key:0,name:h.name,value:e(E),disabled:e(f),required:h.required},null,8,["name","value","disabled","required"])):U("v-if",!0)]),_:3},8,["as","as-child","dir","data-disabled"]))}}),Cs=xs,ks=R({__name:"ListboxContent",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(a){const{CollectionSlot:t}=je(),s=Ke(),o=Ye(!1,10);return(r,i)=>(u(),g(e(t),null,{default:p(()=>[v(e(ne),{role:"listbox",as:r.as,"as-child":r.asChild,tabindex:e(s).focusable.value?e(s).highlightedElement.value?"-1":"0":"-1","aria-orientation":e(s).orientation.value,"aria-multiselectable":!!e(s).multiple.value,"data-orientation":e(s).orientation.value,onMousedown:i[0]||(i[0]=ke(n=>o.value=!0,["left"])),onFocus:i[1]||(i[1]=n=>{e(o)||e(s).onEnter(n)}),onKeydown:[i[2]||(i[2]=ge(n=>{e(s).orientation.value==="vertical"&&(n.key==="ArrowLeft"||n.key==="ArrowRight")||e(s).orientation.value==="horizontal"&&(n.key==="ArrowUp"||n.key==="ArrowDown")||(n.preventDefault(),e(s).focusable.value&&e(s).onKeydownNavigation(n))},["down","up","left","right","home","end"])),ge(e(s).onKeydownEnter,["enter"]),e(s).onKeydownTypeAhead]},{default:p(()=>[O(r.$slots,"default")]),_:3},8,["as","as-child","tabindex","aria-orientation","aria-multiselectable","data-orientation","onKeydown"])]),_:3}))}}),ws=ks,Ss=R({__name:"ListboxFilter",props:{modelValue:{type:String,required:!1},autoFocus:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"input"}},emits:["update:modelValue"],setup(a,{emit:t}){const s=a,r=Ze(s,"modelValue",t,{defaultValue:"",passive:s.modelValue===void 0}),i=Ke(),{primitiveElement:n,currentElement:l}=Ve(),f=V(()=>s.disabled||i.disabled.value||!1),d=C();return xt(()=>d.value=i.highlightedElement.value?.id),ce(()=>{i.focusable.value=!1,setTimeout(()=>{s.autoFocus&&l.value?.focus()},1)}),ye(()=>{i.focusable.value=!0}),(y,m)=>(u(),g(e(ne),{ref_key:"primitiveElement",ref:n,as:y.as,"as-child":y.asChild,value:e(r),disabled:f.value?"":void 0,"data-disabled":f.value?"":void 0,"aria-disabled":f.value??void 0,"aria-activedescendant":d.value,type:"text",onKeydown:[ge(ke(e(i).onKeydownNavigation,["prevent"]),["down","up","home","end"]),ge(e(i).onKeydownEnter,["enter"])],onInput:m[0]||(m[0]=_=>{r.value=_.target.value,e(i).highlightFirstItem()}),onCompositionstart:e(i).onCompositionStart,onCompositionend:e(i).onCompositionEnd},{default:p(()=>[O(y.$slots,"default",{modelValue:e(r)})]),_:3},8,["as","as-child","value","disabled","data-disabled","aria-disabled","aria-activedescendant","onKeydown","onCompositionstart","onCompositionend"]))}}),$s=Ss;const[Es,Rs]=be("ListboxGroup");var Ds=R({__name:"ListboxGroup",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(a){const t=a,s=Se(void 0,"reka-listbox-group");return Rs({id:s}),(o,r)=>(u(),g(e(ne),j({role:"group"},t,{"aria-labelledby":e(s)}),{default:p(()=>[O(o.$slots,"default")]),_:3},16,["aria-labelledby"]))}}),Bs=Ds,As=R({__name:"ListboxGroupLabel",props:{for:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"div"}},setup(a){const t=a,s=Es({id:""});return(o,r)=>(u(),g(e(ne),j(t,{id:e(s).id}),{default:p(()=>[O(o.$slots,"default")]),_:3},16,["id"]))}}),Is=As;const Ps="listbox.select",[Oo,Fs]=be("ListboxItem");var Os=R({__name:"ListboxItem",props:{value:{type:null,required:!0},disabled:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"div"}},emits:["select"],setup(a,{emit:t}){const s=a,o=t,r=Se(void 0,"reka-listbox-item"),{CollectionItem:i}=je(),{forwardRef:n,currentElement:l}=Tt(),f=Ke(),d=V(()=>l.value===f.highlightedElement.value),y=V(()=>_s(f.modelValue.value,s.value,f.by)),m=V(()=>f.disabled.value||s.disabled);async function _(x){o("select",x),!x?.defaultPrevented&&!m.value&&x&&(f.onValueChange(s.value),f.changeHighlight(l.value))}function M(x){const B={originalEvent:x,value:s.value};Lt(Ps,_,B)}return Fs({isSelected:y}),(x,B)=>(u(),g(e(i),{value:x.value},{default:p(()=>[Ct([d.value,y.value],()=>v(e(ne),j({id:e(r)},x.$attrs,{ref:e(n),role:"option",tabindex:e(f).focusable.value?d.value?"0":"-1":-1,"aria-selected":y.value,as:x.as,"as-child":x.asChild,disabled:m.value?"":void 0,"data-disabled":m.value?"":void 0,"data-highlighted":d.value?"":void 0,"data-state":y.value?"checked":"unchecked",onClick:M,onKeydown:ge(ke(M,["prevent"]),["space"]),onPointermove:B[0]||(B[0]=()=>{e(f).highlightedElement.value!==e(l)&&e(f).highlightOnHover.value&&!e(f).focusable.value&&e(f).changeHighlight(e(l),!1)})}),{default:p(()=>[O(x.$slots,"default")]),_:3},16,["id","tabindex","aria-selected","as","as-child","disabled","data-disabled","data-highlighted","data-state","onKeydown"]),B,1)]),_:3},8,["value"]))}}),Ts=Os;const Ls={class:"flex items-center gap-2 truncate"},Ms={class:"truncate"},zs={key:0,class:"absolute top-full right-0 z-[9999] mt-1 w-[280px] rounded-md border bg-popover p-1 text-popover-foreground shadow-md"},Vs={class:"max-h-[200px] overflow-y-auto"},js=["aria-selected","onClick"],qs={class:"flex flex-1 flex-col gap-0.5 overflow-hidden text-left"},Ks={class:"truncate font-medium"},Hs={class:"truncate text-xs text-muted-foreground"},Us=["onClick"],Ns={key:1,class:"px-2 py-1.5 text-sm text-muted-foreground"},Gs={key:2,class:"my-1 h-px bg-border"},Ws={class:"space-y-2"},Xs={class:"flex gap-2"},Js={key:0,class:"text-sm text-destructive"},Qs={key:0,class:"space-y-2 rounded-md border p-3"},Ys={class:"flex items-center gap-2 text-sm"},Zs=["disabled"],ea={class:"flex-1 truncate font-mono text-xs text-muted-foreground"},ta={class:"max-h-[200px] overflow-y-auto"},sa={key:0,class:"py-2 text-center text-sm text-muted-foreground"},aa={key:1,class:"py-2 text-center text-sm text-muted-foreground"},oa=["onClick"],na={class:"truncate"},la={key:0},ra={key:1},ia=R({__name:"RepoSelector",setup(a,{expose:t}){const s=Je(),o=Me(),{repos:r,currentRepo:i,currentRepoId:n,selectRepo:l,addRepo:f,removeRepo:d}=we(),{showSuccess:y}=et(),m=C(!1),_=C(""),M=C(null);Bt(M,()=>{m.value&&(m.value=!1,_.value="")}),oe(()=>o.fullPath,()=>{m.value=!1,_.value=""});async function x(T){l(T),m.value=!1,_.value="";try{const A=(await $fetch(`/api/repos/${T}/prds`))?.[0];A?s.push(`/${T}/${A.slug}`):s.push("/")}catch{s.push("/")}}function B(){m.value=!1,F.value=!0}const L=C(!1),k=C(""),q=C(""),D=C([]),N=C(!1),E=V(()=>!!q.value&&q.value!==k.value);async function se(T){N.value=!0;try{const b=await $fetch("/api/browse",{query:{path:T||k.value||void 0}});k.value=b.current,q.value=b.parent,D.value=b.directories}catch{}finally{N.value=!1}}function K(){L.value=!0,se(I.value||void 0)}function ee(T){I.value=T,L.value=!1,G.value=null}function P(){E.value&&se(q.value)}const F=C(!1),I=C(""),G=C(null),Y=C(!1),ae=V(()=>{if(!_.value)return r.value;const T=_.value.toLowerCase();return r.value?.filter(b=>b.name.toLowerCase().includes(T)||b.path.toLowerCase().includes(T))??[]});async function Q(){if(!I.value.trim()){G.value="Please enter a repository path";return}Y.value=!0,G.value=null;try{const T=await f(I.value.trim());if(F.value=!1,I.value="",y("Repository added",T?.name||"Successfully added repository"),T?.id)try{const A=(await $fetch(`/api/repos/${T.id}/prds`))?.[0];A&&s.push(`/${T.id}/${A.slug}`)}catch{}}catch(T){if(T instanceof Error){const b=T;G.value=b.data?.message||T.message}else G.value="Failed to add repository"}finally{Y.value=!1}}async function Re(T,b){T.stopPropagation(),await d(b)}function xe(){F.value=!1,I.value="",G.value=null}return t({openAddDialog:()=>{F.value=!0}}),(T,b)=>(u(),S("div",{ref_key:"dropdownRef",ref:M,class:"relative"},[c("button",{type:"button",class:"inline-flex h-8 w-[200px] items-center justify-between gap-2 rounded-md border border-input bg-background px-3 text-sm font-normal ring-offset-background transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",onClick:b[0]||(b[0]=A=>m.value=!e(m))},[c("span",Ls,[v(e(os),{class:"size-4 shrink-0 text-muted-foreground"}),c("span",Ms,z(e(i)?.name??"Select repository"),1)]),v(e(Mt),{class:"size-4 shrink-0 opacity-50"})]),e(m)?(u(),S("div",zs,[kt(c("input",{"onUpdate:modelValue":b[1]||(b[1]=A=>ve(_)?_.value=A:null),type:"text",placeholder:"Search repositories...",class:"mb-1 h-9 w-full rounded-md border border-input bg-background px-3 text-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"},null,512),[[wt,e(_)]]),c("div",Vs,[e(ae)?.length?(u(!0),S(Z,{key:0},te(e(ae),A=>(u(),S("div",{key:A.id,class:"group flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-sm hover:bg-accent hover:text-accent-foreground cursor-pointer",role:"option","aria-selected":e(n)===A.id,onClick:le=>x(A.id)},[v(e(tt),{class:pe(["size-4 shrink-0",e(n)===A.id?"opacity-100":"opacity-0"])},null,8,["class"]),c("div",qs,[c("span",Ks,z(A.name),1),c("span",Hs,z(A.path),1)]),c("button",{type:"button",class:"ml-auto opacity-0 group-hover:opacity-100 p-1 hover:bg-destructive/10 rounded transition-opacity",title:"Remove repository",onClick:le=>Re(le,A.id)},[v(e(is),{class:"size-3.5 text-destructive"})],8,Us)],8,js))),128)):(u(),S("div",Ns," No repositories found. ")),e(ae)?.length?(u(),S("div",Gs)):U("",!0),c("button",{type:"button",class:"flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-sm text-muted-foreground hover:bg-accent hover:text-accent-foreground",onClick:B},[v(e(zt),{class:"size-4"}),b[5]||(b[5]=c("span",null,"Add repository...",-1))])])])):U("",!0),v(e(Vt),{open:e(F),"onUpdate:open":b[4]||(b[4]=A=>F.value=A)},{default:p(()=>[v(e(jt),{side:"right",class:"flex h-full flex-col",onEscapeKeyDown:xe},{default:p(()=>[v(e(qt),{class:"px-6"},{default:p(()=>[v(e(Kt),null,{default:p(()=>[...b[6]||(b[6]=[W("Add Repository",-1)])]),_:1}),v(e(Ht),null,{default:p(()=>[...b[7]||(b[7]=[W(" Enter the absolute path to a repository containing PRD documents. ",-1)])]),_:1})]),_:1}),c("form",{id:"add-repo-form",class:"min-h-0 flex-1 space-y-4 overflow-y-auto px-6",onSubmit:ke(Q,["prevent"])},[c("div",Ws,[b[8]||(b[8]=c("label",{for:"repo-path",class:"text-sm font-medium"}," Repository Path ",-1)),c("div",Xs,[v(e(ns),{id:"repo-path",modelValue:e(I),"onUpdate:modelValue":b[2]||(b[2]=A=>ve(I)?I.value=A:null),placeholder:"/path/to/your/project","aria-invalid":!!e(G),disabled:e(Y),class:"flex-1"},null,8,["modelValue","aria-invalid","disabled"]),v(e(de),{type:"button",variant:"outline",size:"icon",disabled:e(Y),onClick:K},{default:p(()=>[v(e(Le),{class:"size-4"})]),_:1},8,["disabled"])]),e(G)?(u(),S("p",Js,z(e(G)),1)):U("",!0),b[9]||(b[9]=c("p",{class:"text-xs text-muted-foreground"},[W(" The repository should contain a "),c("code",{class:"rounded bg-muted px-1"},"docs/prd/"),W(" directory with markdown files. ")],-1))]),e(L)?(u(),S("div",Qs,[c("div",Ys,[c("button",{type:"button",class:"inline-flex items-center gap-1 rounded px-1.5 py-0.5 text-xs text-muted-foreground hover:bg-accent hover:text-foreground disabled:pointer-events-none disabled:opacity-50",disabled:!e(E),onClick:P},[v(e(Ut),{class:"size-3"}),b[10]||(b[10]=W(" Up ",-1))],8,Zs),c("span",ea,z(e(k)),1),v(e(de),{type:"button",variant:"ghost",size:"sm",class:"h-7 text-xs",onClick:b[3]||(b[3]=A=>ee(e(k)))},{default:p(()=>[...b[11]||(b[11]=[W(" Select ",-1)])]),_:1})]),c("div",ta,[e(N)?(u(),S("div",sa," Loading... ")):e(D).length?(u(!0),S(Z,{key:2},te(e(D),A=>(u(),S("button",{key:A.path,type:"button",class:"flex w-full items-center gap-2 rounded px-2 py-1 text-sm hover:bg-accent",onClick:le=>se(A.path)},[v(e(Le),{class:"size-4 text-muted-foreground"}),c("span",na,z(A.name),1)],8,oa))),128)):(u(),S("div",aa," No subdirectories "))])])):U("",!0)],32),v(e(Nt),{class:"px-6 pb-6"},{default:p(()=>[v(e(de),{type:"button",variant:"outline",disabled:e(Y),onClick:xe},{default:p(()=>[...b[12]||(b[12]=[W(" Cancel ",-1)])]),_:1},8,["disabled"]),v(e(de),{type:"submit",form:"add-repo-form",disabled:e(Y)},{default:p(()=>[e(Y)?(u(),S("span",la,"Adding...")):(u(),S("span",ra,"Add Repository"))]),_:1},8,["disabled"])]),_:1})]),_:1})]),_:1},8,["open"])],512))}}),ua=Object.assign(ia,{__name:"LayoutRepoSelector"}),da={class:"flex h-full w-64 flex-col border-r border-border bg-background"},ca={class:"p-2"},pa={key:0,class:"flex items-center justify-center py-8"},fa={key:1,class:"px-2 py-8 text-center"},ma={key:2,class:"px-2 py-8 text-center"},va={key:3,class:"px-2 py-8 text-center"},ha={key:4,class:"space-y-1"},ga={class:"flex-1 truncate"},ya=R({__name:"Sidebar",setup(a){const t=Me(),{prds:s,prdsStatus:o,refreshPrds:r}=ze(),{currentRepoId:i}=we(),n=V(()=>t.params.prd);function l(f){return n.value===f}return(f,d)=>{const y=ls;return u(),S("aside",da,[v(e(Gt),{class:"flex-1"},{default:p(()=>[c("div",ca,[d[5]||(d[5]=c("h2",{class:"flex h-10 items-center px-2 text-sm font-medium text-muted-foreground"},"Documents",-1)),e(o)==="pending"?(u(),S("div",pa,[v(e(Wt),{class:"size-5 animate-spin text-muted-foreground"})])):e(i)?e(o)==="error"?(u(),S("div",ma,[v(e(Xt),{class:"mx-auto size-8 text-destructive/50"}),d[2]||(d[2]=c("p",{class:"mt-2 text-sm text-muted-foreground"}," Failed to load PRDs ",-1)),v(e(de),{variant:"ghost",size:"sm",class:"mt-2",onClick:e(r)},{default:p(()=>[v(e(st),{class:"mr-1 size-3"}),d[1]||(d[1]=W(" Retry ",-1))]),_:1},8,["onClick"])])):e(s)?.length?(u(),S("nav",ha,[(u(!0),S(Z,null,te(e(s),m=>(u(),g(y,{key:m.slug,to:`/${e(i)}/${m.slug}`,class:pe(["group flex items-center gap-3 rounded-md px-3 py-2 text-sm transition-colors",[l(m.slug)?"bg-accent text-accent-foreground":"text-muted-foreground hover:bg-accent/50 hover:text-foreground"]])},{default:p(()=>[v(e(Te),{class:"size-4 shrink-0"}),c("span",ga,z(m.name),1),m.hasState&&m.taskCount?(u(),g(e(Jt),{key:0,variant:"secondary",class:"shrink-0 text-xs"},{default:p(()=>[W(z(m.completedCount??0)+"/"+z(m.taskCount),1)]),_:2},1024)):U("",!0)]),_:2},1032,["to","class"]))),128))])):(u(),S("div",va,[v(e(Te),{class:"mx-auto size-8 text-muted-foreground/50"}),d[3]||(d[3]=c("p",{class:"mt-2 text-sm text-muted-foreground"}," No PRDs found ",-1)),d[4]||(d[4]=c("p",{class:"mt-1 text-xs text-muted-foreground/70"}," Add .md files to docs/prd/ ",-1))])):(u(),S("div",fa,[...d[0]||(d[0]=[c("p",{class:"text-sm text-muted-foreground"}," Select a repository to view PRDs ",-1)])]))])]),_:1})])}}}),_a=Object.assign(ya,{__name:"LayoutSidebar"}),ba=R({__name:"Command",props:{modelValue:{default:""},defaultValue:{},multiple:{type:Boolean},orientation:{},dir:{},disabled:{type:Boolean},selectionBehavior:{},highlightOnHover:{type:Boolean},by:{},asChild:{type:Boolean},as:{},name:{},required:{type:Boolean},class:{},defaultSearch:{default:""}},emits:["update:modelValue","highlight","entryFocus","leave"],setup(a,{emit:t}){const s=a,o=t,r=J(s,"class"),i=fe(r,o),n=C(new Map),l=C(new Map),{contains:f}=ds({sensitivity:"base"}),d=St({search:s.defaultSearch||"",filtered:{count:0,items:new Map,groups:new Set}});oe(()=>s.defaultSearch,m=>{m!==void 0&&(d.search=m)});function y(){if(!d.search){d.filtered.count=n.value.size;return}d.filtered.groups=new Set;let m=0;for(const[_,M]of n.value){const x=f(M,d.search);d.filtered.items.set(_,x?1:0),x&&m++}for(const[_,M]of l.value)for(const x of M)if(d.filtered.items.get(x)>0){d.filtered.groups.add(_);break}d.filtered.count=m}return oe(()=>d.search,()=>{y()}),oe(()=>n.value.size,()=>{d.search&&y()}),Ga({allItems:n,allGroups:l,filterState:d}),(m,_)=>(u(),g(e(Cs),j({"data-slot":"command"},e(i),{class:e(X)("bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md",s.class)}),{default:p(()=>[O(m.$slots,"default")]),_:3},16,["class"]))}}),xa=Object.assign(ba,{__name:"UiCommand"}),Ca=R({__name:"Dialog",props:{open:{type:Boolean},defaultOpen:{type:Boolean},modal:{type:Boolean}},emits:["update:open"],setup(a,{emit:t}){const r=fe(a,t);return(i,n)=>(u(),g(e(Qt),j({"data-slot":"dialog"},e(r)),{default:p(l=>[O(i.$slots,"default",Ie(Pe(l)))]),_:3},16))}}),dt=Object.assign(Ca,{__name:"UiDialog"}),ka=R({__name:"DialogClose",props:{asChild:{type:Boolean},as:{}},setup(a){const t=a;return(s,o)=>(u(),g(e(qe),j({"data-slot":"dialog-close"},t),{default:p(()=>[O(s.$slots,"default")]),_:3},16))}});Object.assign(ka,{__name:"UiDialogClose"});const wa=R({__name:"DialogOverlay",props:{forceMount:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},setup(a){const t=a,s=J(t,"class");return(o,r)=>(u(),g(e(at),j({"data-slot":"dialog-overlay"},e(s),{class:e(X)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80",t.class)}),{default:p(()=>[O(o.$slots,"default")]),_:3},16,["class"]))}}),Sa=Object.assign(wa,{__name:"UiDialogOverlay"}),$a=R({inheritAttrs:!1,__name:"DialogContent",props:{forceMount:{type:Boolean},disableOutsidePointerEvents:{type:Boolean},asChild:{type:Boolean},as:{},class:{},showCloseButton:{type:Boolean,default:!0}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","openAutoFocus","closeAutoFocus"],setup(a,{emit:t}){const s=a,o=t,r=J(s,"class"),i=fe(r,o);return(n,l)=>(u(),g(e(ot),null,{default:p(()=>[v(Sa),v(e(nt),j({"data-slot":"dialog-content"},{...n.$attrs,...e(i)},{class:e(X)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",s.class)}),{default:p(()=>[O(n.$slots,"default"),a.showCloseButton?(u(),g(e(qe),{key:0,"data-slot":"dialog-close",class:"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4"},{default:p(()=>[v(e(lt)),l[0]||(l[0]=c("span",{class:"sr-only"},"Close",-1))]),_:1})):U("",!0)]),_:3},16,["class"])]),_:3}))}}),ct=Object.assign($a,{__name:"UiDialogContent"}),Ea=R({__name:"DialogDescription",props:{asChild:{type:Boolean},as:{},class:{}},setup(a){const t=a,s=J(t,"class"),o=$e(s);return(r,i)=>(u(),g(e(Yt),j({"data-slot":"dialog-description"},e(o),{class:e(X)("text-muted-foreground text-sm",t.class)}),{default:p(()=>[O(r.$slots,"default")]),_:3},16,["class"]))}}),pt=Object.assign(Ea,{__name:"UiDialogDescription"}),Ra=R({__name:"DialogFooter",props:{class:{}},setup(a){const t=a;return(s,o)=>(u(),S("div",{"data-slot":"dialog-footer",class:pe(e(X)("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",t.class))},[O(s.$slots,"default")],2))}});Object.assign(Ra,{__name:"UiDialogFooter"});const Da=R({__name:"DialogHeader",props:{class:{}},setup(a){const t=a;return(s,o)=>(u(),S("div",{"data-slot":"dialog-header",class:pe(e(X)("flex flex-col gap-2 text-center sm:text-left",t.class))},[O(s.$slots,"default")],2))}}),ft=Object.assign(Da,{__name:"UiDialogHeader"}),Ba=R({inheritAttrs:!1,__name:"DialogScrollContent",props:{forceMount:{type:Boolean},disableOutsidePointerEvents:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","openAutoFocus","closeAutoFocus"],setup(a,{emit:t}){const s=a,o=t,r=J(s,"class"),i=fe(r,o);return(n,l)=>(u(),g(e(ot),null,{default:p(()=>[v(e(at),{class:"fixed inset-0 z-50 grid place-items-center overflow-y-auto bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0"},{default:p(()=>[v(e(nt),j({class:e(X)("relative z-50 grid w-full max-w-lg my-8 gap-4 border border-border bg-background p-6 shadow-lg duration-200 sm:rounded-lg md:w-full",s.class)},{...n.$attrs,...e(i)},{onPointerDownOutside:l[0]||(l[0]=f=>{const d=f.detail.originalEvent,y=d.target;(d.offsetX>y.clientWidth||d.offsetY>y.clientHeight)&&f.preventDefault()})}),{default:p(()=>[O(n.$slots,"default"),v(e(qe),{class:"absolute top-4 right-4 p-0.5 transition-colors rounded-md hover:bg-secondary"},{default:p(()=>[v(e(lt),{class:"w-4 h-4"}),l[1]||(l[1]=c("span",{class:"sr-only"},"Close",-1))]),_:1})]),_:3},16,["class"])]),_:3})]),_:3}))}});Object.assign(Ba,{__name:"UiDialogScrollContent"});const Aa=R({__name:"DialogTitle",props:{asChild:{type:Boolean},as:{},class:{}},setup(a){const t=a,s=J(t,"class"),o=$e(s);return(r,i)=>(u(),g(e(Zt),j({"data-slot":"dialog-title"},e(o),{class:e(X)("text-lg leading-none font-semibold",t.class)}),{default:p(()=>[O(r.$slots,"default")]),_:3},16,["class"]))}}),mt=Object.assign(Aa,{__name:"UiDialogTitle"}),Ia=R({__name:"DialogTrigger",props:{asChild:{type:Boolean},as:{}},setup(a){const t=a;return(s,o)=>(u(),g(e(es),j({"data-slot":"dialog-trigger"},t),{default:p(()=>[O(s.$slots,"default")]),_:3},16))}});Object.assign(Ia,{__name:"UiDialogTrigger"});const Pa=R({__name:"CommandDialog",props:{open:{type:Boolean},defaultOpen:{type:Boolean},modal:{type:Boolean},title:{default:"Command Palette"},description:{default:"Search for a command to run..."},defaultSearch:{default:""}},emits:["update:open"],setup(a,{emit:t}){const r=fe(a,t);return(i,n)=>(u(),g(e(dt),Ie(Pe(e(r))),{default:p(l=>[v(e(ct),{class:"overflow-hidden p-0","show-close-button":!1},{default:p(()=>[v(e(ft),{class:"sr-only"},{default:p(()=>[v(e(mt),null,{default:p(()=>[W(z(a.title),1)]),_:1}),v(e(pt),null,{default:p(()=>[W(z(a.description),1)]),_:1})]),_:1}),v(xa,{"default-search":a.defaultSearch},{default:p(()=>[O(i.$slots,"default",Ie(Pe(l)))]),_:2},1032,["default-search"])]),_:2},1024)]),_:3},16))}}),Fa=Object.assign(Pa,{__name:"UiCommandDialog"}),Oa=R({__name:"CommandEmpty",props:{asChild:{type:Boolean},as:{},class:{}},setup(a){const t=a,s=J(t,"class"),{filterState:o}=Ee(),r=V(()=>!!o.search&&o.filtered.count===0);return(i,n)=>r.value?(u(),g(e(ne),j({key:0,"data-slot":"command-empty"},e(s),{class:e(X)("py-6 text-center text-sm",t.class)}),{default:p(()=>[O(i.$slots,"default")]),_:3},16,["class"])):U("",!0)}}),Ta=Object.assign(Oa,{__name:"UiCommandEmpty"}),La=R({__name:"CommandGroup",props:{asChild:{type:Boolean},as:{},class:{},heading:{}},setup(a){const t=a,s=J(t,"class"),{allGroups:o,filterState:r}=Ee(),i=Se(),n=V(()=>r.search?r.filtered.groups.has(i):!0);return Xa({id:i}),ce(()=>{o.value.has(i)||o.value.set(i,new Set)}),ye(()=>{o.value.delete(i)}),(l,f)=>(u(),g(e(Bs),j(e(s),{id:e(i),"data-slot":"command-group",class:e(X)("text-foreground overflow-hidden p-1",t.class),hidden:n.value?void 0:!0}),{default:p(()=>[a.heading?(u(),g(e(Is),{key:0,"data-slot":"command-group-heading",class:"px-2 py-1.5 text-xs font-medium text-muted-foreground"},{default:p(()=>[W(z(a.heading),1)]),_:1})):U("",!0),O(l.$slots,"default")]),_:3},16,["id","class","hidden"]))}}),Ae=Object.assign(La,{__name:"UiCommandGroup"}),Ma={"data-slot":"command-input-wrapper",class:"flex h-9 items-center gap-2 border-b px-3"},za=R({inheritAttrs:!1,__name:"CommandInput",props:{modelValue:{},autoFocus:{type:Boolean},disabled:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},setup(a){const t=a,s=J(t,"class"),o=$e(s),{filterState:r}=Ee(),i=C(null);return ce(()=>{ue(()=>{const n=i.value?.$el;if(n&&r.search){const l=r.search.length;n.setSelectionRange(l,l)}})}),(n,l)=>(u(),S("div",Ma,[v(e(rs),{class:"size-4 shrink-0 opacity-50"}),v(e($s),j({ref_key:"inputRef",ref:i},{...e(o),...n.$attrs},{modelValue:e(r).search,"onUpdate:modelValue":l[0]||(l[0]=f=>e(r).search=f),"data-slot":"command-input","auto-focus":"",class:e(X)("placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50",t.class)}),null,16,["modelValue","class"])]))}}),Va=Object.assign(za,{__name:"UiCommandInput"}),ja=R({__name:"CommandItem",props:{value:{},disabled:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},emits:["select"],setup(a,{emit:t}){const s=a,o=t,r=J(s,"class"),i=fe(r,o),n=Se(),{filterState:l,allItems:f,allGroups:d}=Ee(),y=Wa(),m=V(()=>{if(l.search){const x=l.filtered.items.get(n);return x===void 0?!0:x>0}else return!0}),_=C(),M=At(_);return ce(()=>{if(!(M.value instanceof HTMLElement))return;f.value.set(n,M.value.textContent??s.value?.toString()??"");const x=y?.id;x&&(d.value.has(x)?d.value.get(x)?.add(n):d.value.set(x,new Set([n])))}),ye(()=>{f.value.delete(n)}),(x,B)=>m.value?(u(),g(e(Ts),j({key:0},e(i),{id:e(n),ref_key:"itemRef",ref:_,"data-slot":"command-item",class:e(X)("data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",s.class),onSelect:B[0]||(B[0]=()=>{e(l).search=""})}),{default:p(()=>[O(x.$slots,"default")]),_:3},16,["id","class"])):U("",!0)}}),ie=Object.assign(ja,{__name:"UiCommandItem"}),qa={role:"presentation"},Ka=R({__name:"CommandList",props:{asChild:{type:Boolean},as:{},class:{}},setup(a){const t=a,s=J(t,"class"),o=$e(s);return(r,i)=>(u(),g(e(ws),j({"data-slot":"command-list"},e(o),{class:e(X)("max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto scrollbar-none",t.class)}),{default:p(()=>[c("div",qa,[O(r.$slots,"default")])]),_:3},16,["class"]))}}),Ha=Object.assign(Ka,{__name:"UiCommandList"}),Ua=R({__name:"CommandSeparator",props:{orientation:{},decorative:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},setup(a){const t=a,s=J(t,"class");return(o,r)=>(u(),g(e(ts),j({"data-slot":"command-separator"},e(s),{class:e(X)("bg-border -mx-1 h-px",t.class)}),{default:p(()=>[O(o.$slots,"default")]),_:3},16,["class"]))}}),Ge=Object.assign(Ua,{__name:"UiCommandSeparator"}),Na=R({__name:"CommandShortcut",props:{class:{}},setup(a){const t=a;return(s,o)=>(u(),S("span",{"data-slot":"command-shortcut",class:pe(e(X)("text-muted-foreground ml-auto text-xs tracking-widest",t.class))},[O(s.$slots,"default")],2))}});Object.assign(Na,{__name:"UiCommandShortcut"});const[Ee,Ga]=be("Command"),[Wa,Xa]=be("CommandGroup"),Ja={class:"flex-1"},Qa={class:"flex-1"},Ya={class:"ml-auto flex items-center gap-1"},Za={class:"inline-flex h-5 min-w-5 items-center justify-center rounded border border-border bg-muted px-1.5 font-mono text-[10px] text-muted-foreground"},eo={class:"flex-1"},to={class:"ml-auto flex items-center gap-1"},so={class:"inline-flex h-5 min-w-5 items-center justify-center rounded border border-border bg-muted px-1.5 font-mono text-[10px] text-muted-foreground"},ao={class:"ml-auto flex items-center gap-1"},oo={class:"inline-flex h-5 min-w-5 items-center justify-center rounded border border-border bg-muted px-1.5 font-mono text-[10px] text-muted-foreground"},no=R({__name:"CommandPalette",props:{open:{type:Boolean,default:!1},openModifiers:{},filter:{default:""},filterModifiers:{}},emits:$t(["openShortcutsHelp"],["update:open","update:filter"]),setup(a,{emit:t}){const s=Fe(a,"open"),o=Fe(a,"filter"),r=t,i=Je(),{themeMode:n,cycleThemeMode:l}=Qe(),{prds:f}=ze(),{repos:d,currentRepoId:y,selectRepo:m,refreshGitRepos:_}=we(),{showSuccess:M,showError:x}=et(),B=C("document");{const P=localStorage.getItem("prd-viewer-tab");(P==="document"||P==="board")&&(B.value=P)}function L(P){y.value&&(i.push(`/${y.value}/${P}`),s.value=!1)}function k(P){m(P),i.push("/"),s.value=!1}function q(){l(),s.value=!1}function D(){const P=B.value==="document"?"board":"document";B.value=P,localStorage.setItem("prd-viewer-tab",P),window.dispatchEvent(new StorageEvent("storage",{key:"prd-viewer-tab",newValue:P})),s.value=!1}function N(){s.value=!1,r("openShortcutsHelp")}const E=C(!1);async function se(){if(!(!y.value||E.value)){E.value=!0,s.value=!1;try{const P=await _(y.value);M(`Discovered ${P.discovered} git repositories`)}catch{x("Failed to refresh git repos")}finally{E.value=!1}}}oe(s,P=>{P||(o.value="")});const K=V(()=>navigator.platform.toUpperCase().indexOf("MAC")>=0),ee=V(()=>K.value?"⌘":"Ctrl");return(P,F)=>(u(),g(e(Fa),{open:s.value,"onUpdate:open":F[0]||(F[0]=I=>s.value=I),"default-search":o.value},{default:p(()=>[v(e(Va),{placeholder:"Type a command or search..."}),v(e(Ha),null,{default:p(()=>[v(e(Ta),null,{default:p(()=>[...F[1]||(F[1]=[W("No results found.",-1)])]),_:1}),e(f)?.length?(u(),g(e(Ae),{key:0,heading:"Documents"},{default:p(()=>[(u(!0),S(Z,null,te(e(f),I=>(u(),g(e(ie),{key:I.slug,value:`PRD: ${I.name}`,onSelect:G=>L(I.slug)},{default:p(()=>[v(e(Te),{class:"size-4"}),c("span",null,z(I.name),1)]),_:2},1032,["value","onSelect"]))),128))]),_:1})):U("",!0),e(f)?.length&&e(d)?.length?(u(),g(e(Ge),{key:1})):U("",!0),e(d)?.length?(u(),g(e(Ae),{key:2,heading:"Repositories"},{default:p(()=>[(u(!0),S(Z,null,te(e(d),I=>(u(),g(e(ie),{key:I.id,value:`repo-${I.id} ${I.name}`,onSelect:G=>k(I.id)},{default:p(()=>[v(e(Le),{class:"size-4"}),c("span",Ja,z(I.name),1),I.id===e(y)?(u(),g(e(tt),{key:0,class:"size-4 text-primary"})):U("",!0)]),_:2},1032,["value","onSelect"]))),128))]),_:1})):U("",!0),e(d)?.length?(u(),g(e(Ge),{key:3})):U("",!0),v(e(Ae),{heading:"Actions"},{default:p(()=>[v(e(ie),{value:"cycle-theme light dark system",onSelect:q},{default:p(()=>[e(n)==="system"?(u(),g(e(rt),{key:0,class:"size-4"})):e(n)==="light"?(u(),g(e(ut),{key:1,class:"size-4"})):(u(),g(e(it),{key:2,class:"size-4"})),c("span",Qa,"Cycle theme mode ("+z(e(n))+")",1),c("div",Ya,[c("kbd",Za,z(e(ee)),1),F[2]||(F[2]=c("kbd",{class:"inline-flex h-5 min-w-5 items-center justify-center rounded border border-border bg-muted px-1.5 font-mono text-[10px] text-muted-foreground"},".",-1))])]),_:1}),v(e(ie),{value:`switch-tab ${e(B)==="document"?"task board":"document"}`,onSelect:D},{default:p(()=>[v(e(ss),{class:"size-4"}),c("span",eo,"Switch to "+z(e(B)==="document"?"Task Board":"Document"),1),c("div",to,[c("kbd",so,z(e(ee)),1),F[3]||(F[3]=c("kbd",{class:"inline-flex h-5 min-w-5 items-center justify-center rounded border border-border bg-muted px-1.5 font-mono text-[10px] text-muted-foreground"},"\\",-1))])]),_:1},8,["value"]),v(e(ie),{value:"keyboard shortcuts help",onSelect:N},{default:p(()=>[v(e(as),{class:"size-4"}),F[5]||(F[5]=c("span",{class:"flex-1"},"Keyboard shortcuts",-1)),c("div",ao,[c("kbd",oo,z(e(ee)),1),F[4]||(F[4]=c("kbd",{class:"inline-flex h-5 min-w-5 items-center justify-center rounded border border-border bg-muted px-1.5 font-mono text-[10px] text-muted-foreground"},"/",-1))])]),_:1}),e(y)?(u(),g(e(ie),{key:0,value:"refresh git repos rescan discover",disabled:e(E),onSelect:se},{default:p(()=>[v(e(st),{class:pe(["size-4",{"animate-spin":e(E)}])},null,8,["class"]),F[6]||(F[6]=c("span",{class:"flex-1"},"Refresh git repos",-1))]),_:1},8,["disabled"])):U("",!0)]),_:1})]),_:1})]),_:1},8,["open","default-search"]))}}),lo=Object.assign(no,{__name:"CommandPalette"}),ro={class:"space-y-6"},io={class:"mb-3 text-sm font-medium text-muted-foreground"},uo={class:"space-y-2"},co={class:"text-sm"},po={class:"flex items-center gap-1"},fo=R({__name:"ShortcutsHelp",props:{open:{type:Boolean,default:!1},openModifiers:{}},emits:["update:open"],setup(a){const t=Fe(a,"open"),s=V(()=>navigator.platform.toUpperCase().indexOf("MAC")>=0),o=V(()=>s.value?"⌘":"Ctrl"),r=V(()=>[{name:"Navigation",shortcuts:[{keys:[o.value,"K"],description:"Open command palette"},{keys:[o.value,"J"],description:"Quick jump to document"}]},{name:"Actions",shortcuts:[{keys:[o.value,"."],description:"Cycle theme mode (light/dark/system)"},{keys:[o.value,"\\"],description:"Switch between Document and Task Board"},{keys:[o.value,","],description:"Add repository"}]},{name:"Help",shortcuts:[{keys:[o.value,"/"],description:"Show this help"},{keys:["Esc"],description:"Close dialog or palette"}]}]);return(i,n)=>(u(),g(e(dt),{open:t.value,"onUpdate:open":n[0]||(n[0]=l=>t.value=l)},{default:p(()=>[v(e(ct),{class:"max-w-md"},{default:p(()=>[v(e(ft),null,{default:p(()=>[v(e(mt),null,{default:p(()=>[...n[1]||(n[1]=[W("Keyboard Shortcuts",-1)])]),_:1}),v(e(pt),null,{default:p(()=>[...n[2]||(n[2]=[W(" Quick reference for available keyboard shortcuts. ",-1)])]),_:1})]),_:1}),c("div",ro,[(u(!0),S(Z,null,te(e(r),l=>(u(),S("div",{key:l.name},[c("h3",io,z(l.name),1),c("div",uo,[(u(!0),S(Z,null,te(l.shortcuts,f=>(u(),S("div",{key:f.description,class:"flex items-center justify-between"},[c("span",co,z(f.description),1),c("div",po,[(u(!0),S(Z,null,te(f.keys,(d,y)=>(u(),S("kbd",{key:y,class:"inline-flex h-5 min-w-5 items-center justify-center rounded border border-border bg-muted px-1.5 font-mono text-xs font-medium text-muted-foreground"},z(d),1))),128))])]))),128))])]))),128))])]),_:1})]),_:1},8,["open"]))}}),mo=Object.assign(fo,{__name:"ShortcutsHelp"});function vt(){const a=document.activeElement;if(!a)return!1;const t=a.tagName.toLowerCase();return t==="input"||t==="textarea"||a.getAttribute("contenteditable")==="true"||a.getAttribute("role")==="textbox"}function vo(a){const t=a.toLowerCase().split("+"),s=t.pop()||"";return{meta:t.includes("meta"),ctrl:t.includes("ctrl"),shift:t.includes("shift"),alt:t.includes("alt"),key:s}}function ho(a,t){const s=a.key.toLowerCase();let o=s===t.key;return t.key==="\\"&&(o=s==="\\"||a.code==="Backslash"),t.key==="/"&&(o=s==="/"||a.code==="Slash"),t.key==="."&&(o=s==="."||a.code==="Period"),t.key===","&&(o=s===","||a.code==="Comma"),o&&a.metaKey===t.meta&&a.ctrlKey===t.ctrl&&a.shiftKey===t.shift&&a.altKey===t.alt}const Ce=[];let We=!1;function go(a){for(const t of Ce)if(ho(a,t.combo)){if(!t.allowInInput&&vt())continue;a.preventDefault(),a.stopPropagation(),t.handler();return}}function Xe(){We||(document.addEventListener("keydown",go,{capture:!0}),We=!0)}function yo(){ce(()=>{Xe()});function a(s,o,r){const n={combo:vo(s),handler:o,allowInInput:r?.allowInInput??!1};Ce.push(n),Xe(),ye(()=>{const l=Ce.indexOf(n);l>-1&&Ce.splice(l,1)})}function t(){return vt()}return{onShortcut:a,isInputFocused:t}}const _o=globalThis.setInterval,bo=2e3,xo=2e3;function Co(a){return!a.instanceId||!a.buildId?null:`${a.buildId}:${a.instanceId}`}function ko(a){const t=C(null),s=C(!1),o=C(null),r=C(null),i=C(null),n=C(null),l=C(!1),f=C(!1),d=C(!1);function y(){r.value&&(clearTimeout(r.value),r.value=null)}function m(){i.value&&(clearInterval(i.value),i.value=null)}async function _(){try{const D=await $fetch(`/api/runtime?_=${Date.now()}`);return Co(D)}catch{return null}}async function M(){n.value===null&&(n.value=await _())}async function x(){if(!(l.value||d.value)){l.value=!0;try{const D=await _();if(!D)return;if(!n.value){n.value=D;return}D!==n.value&&(d.value=!0,window.location.reload())}finally{l.value=!1}}}function B(){i.value||(i.value=_o(()=>{x()},xo))}function L(){r.value||(r.value=setTimeout(()=>{r.value=null,k()},bo))}function k(){if(!t.value)try{const D=new EventSource("/api/watch");D.onopen=async()=>{s.value=!0,o.value=null,y(),m(),f.value&&(f.value=!1,await x())},D.onmessage=N=>{try{const E=JSON.parse(N.data);a(E)}catch{}},D.onerror=()=>{s.value=!1,o.value="Connection lost",f.value=!0,t.value===D&&(D.close(),t.value=null),B(),L()},t.value=D}catch{o.value="Failed to connect",B(),L()}}function q(){y(),m(),f.value=!1,t.value&&(t.value.close(),t.value=null,s.value=!1)}return ce(async()=>{await M(),k()}),ye(()=>{q()}),{isConnected:s,error:o,connect:k,disconnect:q}}const wo={class:"min-h-screen bg-background text-foreground"},So={class:"fixed top-0 left-0 right-0 z-50 h-14 border-b border-border bg-background/95 backdrop-blur-sm supports-[backdrop-filter]:bg-background/80"},$o={class:"flex h-full items-center justify-between px-4 md:px-6"},Eo={class:"flex items-center gap-3"},Ro={class:"flex h-screen pt-14"},Do={class:"flex-1 overflow-auto"},To=R({__name:"default",setup(a){const{themeMode:t,cycleThemeMode:s}=Qe(),{refreshPrds:o}=ze(),{currentRepoId:r}=we(),i=Me(),n=C(null);Et("fileChangeEvent",n);const l=C(!1),f=C(""),d=C(!1),y=C(null),{onShortcut:m}=yo();m("Meta+k",()=>{l.value=!0}),m("Ctrl+k",()=>{l.value=!0}),m("Meta+j",()=>{f.value="PRD: ",l.value=!0}),m("Ctrl+j",()=>{f.value="PRD: ",l.value=!0});function _(){const k=(localStorage.getItem("prd-viewer-tab")||"document")==="document"?"board":"document";localStorage.setItem("prd-viewer-tab",k),window.dispatchEvent(new StorageEvent("storage",{key:"prd-viewer-tab",newValue:k}))}m("Meta+\\",_),m("Ctrl+\\",_);function M(){s()}m("Meta+.",M),m("Ctrl+.",M);function x(){y.value?.openAddDialog()}m("Meta+,",x),m("Ctrl+,",x);function B(){d.value=!0}return m("Meta+/",B),m("Ctrl+/",B),m("Meta+Shift+/",B),m("Ctrl+Shift+/",B),ko(L=>{if(L.type==="connected"||!L.category)return;const k=L.category;if(L.repoId!==r.value)return;(k==="prd"||k==="tasks")&&o();const q=i.params.prd;if(q){const D=k==="prd"&&L.path?.includes(`/${q}.`),N=(k==="tasks"||k==="progress")&&L.path?.includes(`/${q}/`);(D||N)&&(n.value={category:k,path:L.path,timestamp:Date.now()})}}),(L,k)=>{const q=ua,D=Rt,N=_a;return u(),S("div",wo,[v(lo,{open:e(l),"onUpdate:open":k[0]||(k[0]=E=>ve(l)?l.value=E:null),filter:e(f),"onUpdate:filter":k[1]||(k[1]=E=>ve(f)?f.value=E:null),onOpenShortcutsHelp:B},null,8,["open","filter"]),v(mo,{open:e(d),"onUpdate:open":k[2]||(k[2]=E=>ve(d)?d.value=E:null)},null,8,["open"]),c("header",So,[c("div",$o,[k[5]||(k[5]=c("div",{class:"flex items-center gap-4"},[c("h1",{class:"text-lg font-semibold tracking-tight"}," PRD Viewer ")],-1)),v(D,null,{fallback:p(()=>[...k[4]||(k[4]=[c("div",{class:"flex items-center gap-3"},[c("div",{class:"h-8 w-[200px] animate-pulse rounded-md bg-muted"}),c("div",{class:"size-9 animate-pulse rounded-md bg-muted"})],-1)])]),default:p(()=>[c("div",Eo,[v(q,{ref_key:"repoSelectorRef",ref:y},null,512),v(e(de),{variant:"ghost",size:"icon",class:"size-9",onClick:M},{default:p(()=>[e(t)==="system"?(u(),g(e(rt),{key:0,class:"size-4"})):e(t)==="light"?(u(),g(e(ut),{key:1,class:"size-4"})):(u(),g(e(it),{key:2,class:"size-4"})),k[3]||(k[3]=c("span",{class:"sr-only"},"Cycle theme mode",-1))]),_:1})])]),_:1})])]),c("div",Ro,[v(D,null,{fallback:p(()=>[...k[6]||(k[6]=[c("aside",{class:"flex h-full w-64 flex-col border-r border-border bg-background"},[c("div",{class:"flex h-12 items-center border-b border-border px-4"},[c("div",{class:"h-4 w-20 animate-pulse rounded bg-muted"})]),c("div",{class:"flex-1 p-2 space-y-2"},[c("div",{class:"h-9 animate-pulse rounded-md bg-muted"}),c("div",{class:"h-9 animate-pulse rounded-md bg-muted"}),c("div",{class:"h-9 animate-pulse rounded-md bg-muted"})])],-1)])]),default:p(()=>[v(N)]),_:1}),c("main",Do,[O(L.$slots,"default")])])])}}});export{To as default};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{c as $,n as Ge,p as Je,q as G,s as Ce,i as Qe,e as se,v as Ze,w as et,f as tt,P as x,x as ot,y as rt,z as at,S as Oe,A as j,C as he,D as nt,k as z,j as F,E as st}from"./DE885CbX.js";import{i as Ie,a4 as Re,s as D,q as E,k as q,a6 as lt,C as Y,a7 as it,a8 as Be,a9 as le,aa as ut,B as W,ab as ct,g as S,y as J,ac as ve,A as y,l as n,o as _,z as b,w as h,E as O,v as R,Y as X,K as Q,a2 as $e,x as H,b as k,n as Z,ad as dt,O as _e,P as ye,ae as ft,c as ge,a as Me,d as pt,F as vt,S as Ne}from"./R2cvz8mH.js";const _r=$("arrow-up",[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]]);const yr=$("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);const gr=$("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);const br=$("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);const Sr=$("keyboard",[["path",{d:"M10 8h.01",key:"1r9ogq"}],["path",{d:"M12 12h.01",key:"1mp3jc"}],["path",{d:"M14 8h.01",key:"1primd"}],["path",{d:"M16 12h.01",key:"1l6xoz"}],["path",{d:"M18 8h.01",key:"emo2bl"}],["path",{d:"M6 8h.01",key:"x9i8wu"}],["path",{d:"M7 16h10",key:"wp8him"}],["path",{d:"M8 12h.01",key:"czm47f"}],["rect",{width:"20",height:"16",x:"2",y:"4",rx:"2",key:"18n3k1"}]]);const wr=$("layout-grid",[["rect",{width:"7",height:"7",x:"3",y:"3",rx:"1",key:"1g98yp"}],["rect",{width:"7",height:"7",x:"14",y:"3",rx:"1",key:"6d4xhi"}],["rect",{width:"7",height:"7",x:"14",y:"14",rx:"1",key:"nxv5o0"}],["rect",{width:"7",height:"7",x:"3",y:"14",rx:"1",key:"1bb6yr"}]]);const Er=$("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);const Cr=$("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);const Or=$("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);const mt=$("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);function ht(t,e=Number.NEGATIVE_INFINITY,o=Number.POSITIVE_INFINITY){return Math.min(o,Math.max(e,t))}function ee(t,e){const o=typeof t=="string"&&!e?`${t}Context`:e,r=Symbol(o);return[s=>{const i=Ie(r,s);if(i||i===null)return i;throw new Error(`Injection \`${r.toString()}\` not found. Component must be used within ${Array.isArray(t)?`one of the following components: ${t.join(", ")}`:`\`${t}\``}`)},s=>(Re(r,s),s)]}function B(){let t=document.activeElement;if(t==null)return null;for(;t!=null&&t.shadowRoot!=null&&t.shadowRoot.activeElement!=null;)t=t.shadowRoot.activeElement;return t}function qe(t,e,o){const r=o.originalEvent.target,a=new CustomEvent(t,{bubbles:!1,cancelable:!0,detail:o});e&&r.addEventListener(t,e,{once:!0}),r.dispatchEvent(a)}function _t(t){return t==null}const[be]=ee("ConfigProvider"),yt=Je(()=>{const t=E(new Map),e=E(),o=D(()=>{for(const s of t.value.values())if(s)return!0;return!1}),r=be({scrollBody:E(!0)});let a=null;const l=()=>{document.body.style.paddingRight="",document.body.style.marginRight="",document.body.style.pointerEvents="",document.documentElement.style.removeProperty("--scrollbar-width"),document.body.style.overflow=e.value??"",Ce&&a?.(),e.value=void 0};return q(o,(s,i)=>{if(!G)return;if(!s){i&&l();return}e.value===void 0&&(e.value=document.body.style.overflow);const c=window.innerWidth-document.documentElement.clientWidth,d={padding:c,margin:0},u=r.scrollBody?.value?typeof r.scrollBody.value=="object"?lt({padding:r.scrollBody.value.padding===!0?c:r.scrollBody.value.padding,margin:r.scrollBody.value.margin===!0?c:r.scrollBody.value.margin},d):d:{padding:0,margin:0};c>0&&(document.body.style.paddingRight=typeof u.padding=="number"?`${u.padding}px`:String(u.padding),document.body.style.marginRight=typeof u.margin=="number"?`${u.margin}px`:String(u.margin),document.documentElement.style.setProperty("--scrollbar-width",`${c}px`),document.body.style.overflow="hidden"),Ce&&(a=Qe(document,"touchmove",f=>bt(f),{passive:!1})),Y(()=>{document.body.style.pointerEvents="none",document.body.style.overflow="hidden"})},{immediate:!0,flush:"sync"}),t});function gt(t){const e=Math.random().toString(36).substring(2,7),o=yt();o.value.set(e,t);const r=D({get:()=>o.value.get(e)??!1,set:a=>o.value.set(e,a)});return Ge(()=>{o.value.delete(e)}),r}function Fe(t){const e=window.getComputedStyle(t);if(e.overflowX==="scroll"||e.overflowY==="scroll"||e.overflowX==="auto"&&t.clientWidth<t.scrollWidth||e.overflowY==="auto"&&t.clientHeight<t.scrollHeight)return!0;{const o=t.parentNode;return!(o instanceof Element)||o.tagName==="BODY"?!1:Fe(o)}}function bt(t){const e=t||window.event,o=e.target;return o instanceof Element&&Fe(o)?!1:e.touches.length>1?!0:(e.preventDefault&&e.cancelable&&e.preventDefault(),!1)}function St(t){const e=be({dir:E("ltr")});return D(()=>t?.value||e.dir?.value||"ltr")}function ie(t){const e=le(),o=e?.type.emits,r={};return o?.length||console.warn(`No emitted event found. Please check component: ${e?.type.__name}`),o?.forEach(a=>{r[it(Be(a))]=(...l)=>t(a,...l)}),r}function T(){const t=le(),e=E(),o=D(()=>["#text","#comment"].includes(e.value?.$el.nodeName)?e.value?.$el.nextElementSibling:se(e)),r=Object.assign({},t.exposed),a={};for(const s in t.props)Object.defineProperty(a,s,{enumerable:!0,configurable:!0,get:()=>t.props[s]});if(Object.keys(r).length>0)for(const s in r)Object.defineProperty(a,s,{enumerable:!0,configurable:!0,get:()=>r[s]});Object.defineProperty(a,"$el",{enumerable:!0,configurable:!0,get:()=>t.vnode.el}),t.exposed=a;function l(s){if(e.value=s,!!s&&(Object.defineProperty(a,"$el",{enumerable:!0,configurable:!0,get:()=>s instanceof Element?s:s.$el}),!(s instanceof Element)&&!Object.prototype.hasOwnProperty.call(s,"$el"))){const i=s.$.exposed,c=Object.assign({},a);for(const d in i)Object.defineProperty(c,d,{enumerable:!0,configurable:!0,get:()=>i[d]});t.exposed=c}}return{forwardRef:l,currentRef:e,currentElement:o}}function wt(t){const e=le(),o=Object.keys(e?.type.props??{}).reduce((a,l)=>{const s=(e?.type.props[l]).default;return s!==void 0&&(a[l]=s),a},{}),r=ut(t);return D(()=>{const a={},l=e?.vnode.props??{};return Object.keys(l).forEach(s=>{a[Be(s)]=l[s]}),Object.keys({...o,...a}).reduce((s,i)=>(r.value[i]!==void 0&&(s[i]=r.value[i]),s),{})})}function He(t,e){const o=wt(t),r=e?ie(e):{};return D(()=>({...o.value,...r}))}var Et=function(t){if(typeof document>"u")return null;var e=Array.isArray(t)?t[0]:t;return e.ownerDocument.body},V=new WeakMap,oe=new WeakMap,re={},de=0,Ue=function(t){return t&&(t.host||Ue(t.parentNode))},Ct=function(t,e){return e.map(function(o){if(t.contains(o))return o;var r=Ue(o);return r&&t.contains(r)?r:(console.error("aria-hidden",o,"in not contained inside",t,". Doing nothing"),null)}).filter(function(o){return!!o})},Ot=function(t,e,o,r){var a=Ct(e,Array.isArray(t)?t:[t]);re[o]||(re[o]=new WeakMap);var l=re[o],s=[],i=new Set,c=new Set(a),d=function(f){!f||i.has(f)||(i.add(f),d(f.parentNode))};a.forEach(d);var u=function(f){!f||c.has(f)||Array.prototype.forEach.call(f.children,function(p){if(i.has(p))u(p);else try{var m=p.getAttribute(r),g=m!==null&&m!=="false",C=(V.get(p)||0)+1,w=(l.get(p)||0)+1;V.set(p,C),l.set(p,w),s.push(p),C===1&&g&&oe.set(p,!0),w===1&&p.setAttribute(o,"true"),g||p.setAttribute(r,"true")}catch(v){console.error("aria-hidden: cannot operate on ",p,v)}})};return u(e),i.clear(),de++,function(){s.forEach(function(f){var p=V.get(f)-1,m=l.get(f)-1;V.set(f,p),l.set(f,m),p||(oe.has(f)||f.removeAttribute(r),oe.delete(f)),m||f.removeAttribute(o)}),de--,de||(V=new WeakMap,V=new WeakMap,oe=new WeakMap,re={})}},At=function(t,e,o){o===void 0&&(o="data-aria-hidden");var r=Array.from(Array.isArray(t)?t:[t]),a=Et(t);return a?(r.push.apply(r,Array.from(a.querySelectorAll("[aria-live], script"))),Ot(r,a,o,"aria-hidden")):function(){return null}};function Dt(t){let e;q(()=>se(t),o=>{o?e=At(o):e&&e()}),W(()=>{e&&e()})}function me(t,e="reka"){return`${e}-${ct?.()}`}function Se(t,e){const o=E(t);function r(l){return e[o.value][l]??o.value}return{state:o,dispatch:l=>{o.value=r(l)}}}function Pt(t,e){const o=E({}),r=E("none"),a=E(t),l=t.value?"mounted":"unmounted";let s;const i=e.value?.ownerDocument.defaultView??Ze,{state:c,dispatch:d}=Se(l,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}}),u=w=>{if(G){const v=new CustomEvent(w,{bubbles:!1,cancelable:!1});e.value?.dispatchEvent(v)}};q(t,async(w,v)=>{const P=v!==w;if(await Y(),P){const A=r.value,N=ae(e.value);w?(d("MOUNT"),u("enter"),N==="none"&&u("after-enter")):N==="none"||N==="undefined"||o.value?.display==="none"?(d("UNMOUNT"),u("leave"),u("after-leave")):v&&A!==N?(d("ANIMATION_OUT"),u("leave")):(d("UNMOUNT"),u("after-leave"))}},{immediate:!0});const f=w=>{const v=ae(e.value),P=v.includes(CSS.escape(w.animationName)),A=c.value==="mounted"?"enter":"leave";if(w.target===e.value&&P&&(u(`after-${A}`),d("ANIMATION_END"),!a.value)){const N=e.value.style.animationFillMode;e.value.style.animationFillMode="forwards",s=i?.setTimeout(()=>{e.value?.style.animationFillMode==="forwards"&&(e.value.style.animationFillMode=N)})}w.target===e.value&&v==="none"&&d("ANIMATION_END")},p=w=>{w.target===e.value&&(r.value=ae(e.value))},m=q(e,(w,v)=>{w?(o.value=getComputedStyle(w),w.addEventListener("animationstart",p),w.addEventListener("animationcancel",f),w.addEventListener("animationend",f)):(d("ANIMATION_END"),s!==void 0&&i?.clearTimeout(s),v?.removeEventListener("animationstart",p),v?.removeEventListener("animationcancel",f),v?.removeEventListener("animationend",f))},{immediate:!0}),g=q(c,()=>{const w=ae(e.value);r.value=c.value==="mounted"?w:"none"});return W(()=>{m(),g()}),{isPresent:D(()=>["mounted","unmountSuspended"].includes(c.value))}}function ae(t){return t&&getComputedStyle(t).animationName||"none"}var K=S({name:"Presence",props:{present:{type:Boolean,required:!0},forceMount:{type:Boolean}},slots:{},setup(t,{slots:e,expose:o}){const{present:r,forceMount:a}=J(t),l=E(),{isPresent:s}=Pt(r,l);o({present:s});let i=e.default({present:s.value});i=et(i||[]);const c=le();if(i&&i?.length>1){const d=c?.parent?.type.name?`<${c.parent.type.name} />`:"component";throw new Error([`Detected an invalid children for \`${d}\` for \`Presence\` component.`,"","Note: Presence works similarly to `v-if` directly, but it waits for animation/transition to finished before unmounting. So it expect only one direct child of valid VNode type.","You can apply a few solutions:",["Provide a single child element so that `presence` directive attach correctly.","Ensure the first child is an actual element instead of a raw text node or comment node."].map(u=>` - ${u}`).join(`
|
|
2
|
-
`)].join(`
|
|
3
|
-
`))}return()=>a.value||r.value||s.value?ve(e.default({present:s.value})[0],{ref:d=>{const u=se(d);return typeof u?.hasAttribute>"u"||(u?.hasAttribute("data-reka-popper-content-wrapper")?l.value=u.firstElementChild:l.value=u),u}}):null}});function Ae(){const t=E(),e=D(()=>["#text","#comment"].includes(t.value?.$el.nodeName)?t.value?.$el.nextElementSibling:se(t));return{primitiveElement:t,currentElement:e}}const[M,Tt]=ee("DialogRoot");var kt=S({inheritAttrs:!1,__name:"DialogRoot",props:{open:{type:Boolean,required:!1,default:void 0},defaultOpen:{type:Boolean,required:!1,default:!1},modal:{type:Boolean,required:!1,default:!0}},emits:["update:open"],setup(t,{emit:e}){const o=t,a=tt(o,"open",e,{defaultValue:o.defaultOpen,passive:o.open===void 0}),l=E(),s=E(),{modal:i}=J(o);return Tt({open:a,modal:i,openModal:()=>{a.value=!0},onOpenChange:c=>{a.value=c},onOpenToggle:()=>{a.value=!a.value},contentId:"",titleId:"",descriptionId:"",triggerElement:l,contentElement:s}),(c,d)=>y(c.$slots,"default",{open:n(a),close:()=>a.value=!1})}}),xt=kt,Lt=S({__name:"DialogClose",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(t){const e=t;T();const o=M();return(r,a)=>(_(),b(n(x),O(e,{type:r.as==="button"?"button":void 0,onClick:a[0]||(a[0]=l=>n(o).onOpenChange(!1))}),{default:h(()=>[y(r.$slots,"default")]),_:3},16,["type"]))}}),ze=Lt;const It="dismissableLayer.pointerDownOutside",Rt="dismissableLayer.focusOutside";function We(t,e){const o=e.closest("[data-dismissable-layer]"),r=t.dataset.dismissableLayer===""?t:t.querySelector("[data-dismissable-layer]"),a=Array.from(t.ownerDocument.querySelectorAll("[data-dismissable-layer]"));return!!(o&&(r===o||a.indexOf(r)<a.indexOf(o)))}function Bt(t,e,o=!0){const r=e?.value?.ownerDocument??globalThis?.document,a=E(!1),l=E(()=>{});return R(s=>{if(!G||!X(o))return;const i=async d=>{const u=d.target;if(!(!e?.value||!u)){if(We(e.value,u)){a.value=!1;return}if(d.target&&!a.value){let p=function(){qe(It,t,f)};const f={originalEvent:d};d.pointerType==="touch"?(r.removeEventListener("click",l.value),l.value=p,r.addEventListener("click",l.value,{once:!0})):p()}else r.removeEventListener("click",l.value);a.value=!1}},c=window.setTimeout(()=>{r.addEventListener("pointerdown",i)},0);s(()=>{window.clearTimeout(c),r.removeEventListener("pointerdown",i),r.removeEventListener("click",l.value)})}),{onPointerDownCapture:()=>{X(o)&&(a.value=!0)}}}function $t(t,e,o=!0){const r=e?.value?.ownerDocument??globalThis?.document,a=E(!1);return R(l=>{if(!G||!X(o))return;const s=async i=>{if(!e?.value)return;await Y(),await Y();const c=i.target;!e.value||!c||We(e.value,c)||i.target&&!a.value&&qe(Rt,t,{originalEvent:i})};r.addEventListener("focusin",s),l(()=>r.removeEventListener("focusin",s))}),{onFocusCapture:()=>{X(o)&&(a.value=!0)},onBlurCapture:()=>{X(o)&&(a.value=!1)}}}const I=$e({layersRoot:new Set,layersWithOutsidePointerEventsDisabled:new Set,originalBodyPointerEvents:void 0,branches:new Set});var Mt=S({__name:"DismissableLayer",props:{disableOutsidePointerEvents:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","dismiss"],setup(t,{emit:e}){const o=t,r=e,{forwardRef:a,currentElement:l}=T(),s=D(()=>l.value?.ownerDocument??globalThis.document),i=D(()=>I.layersRoot),c=D(()=>l.value?Array.from(i.value).indexOf(l.value):-1),d=D(()=>I.layersWithOutsidePointerEventsDisabled.size>0),u=D(()=>{const m=Array.from(i.value),[g]=[...I.layersWithOutsidePointerEventsDisabled].slice(-1),C=m.indexOf(g);return c.value>=C}),f=Bt(async m=>{const g=[...I.branches].some(C=>C?.contains(m.target));!u.value||g||(r("pointerDownOutside",m),r("interactOutside",m),await Y(),m.defaultPrevented||r("dismiss"))},l),p=$t(m=>{[...I.branches].some(C=>C?.contains(m.target))||(r("focusOutside",m),r("interactOutside",m),m.defaultPrevented||r("dismiss"))},l);return ot("Escape",m=>{c.value===i.value.size-1&&(r("escapeKeyDown",m),m.defaultPrevented||r("dismiss"))}),R(m=>{l.value&&(o.disableOutsidePointerEvents&&(I.layersWithOutsidePointerEventsDisabled.size===0&&(I.originalBodyPointerEvents=s.value.body.style.pointerEvents,s.value.body.style.pointerEvents="none"),I.layersWithOutsidePointerEventsDisabled.add(l.value)),i.value.add(l.value),m(()=>{o.disableOutsidePointerEvents&&I.layersWithOutsidePointerEventsDisabled.size===1&&!_t(I.originalBodyPointerEvents)&&(s.value.body.style.pointerEvents=I.originalBodyPointerEvents)}))}),R(m=>{m(()=>{l.value&&(i.value.delete(l.value),I.layersWithOutsidePointerEventsDisabled.delete(l.value))})}),(m,g)=>(_(),b(n(x),{ref:n(a),"as-child":m.asChild,as:m.as,"data-dismissable-layer":"",style:Q({pointerEvents:d.value?u.value?"auto":"none":void 0}),onFocusCapture:n(p).onFocusCapture,onBlurCapture:n(p).onBlurCapture,onPointerdownCapture:n(f).onPointerDownCapture},{default:h(()=>[y(m.$slots,"default")]),_:3},8,["as-child","as","style","onFocusCapture","onBlurCapture","onPointerdownCapture"]))}}),Nt=Mt;const qt=rt(()=>E([]));function Ft(){const t=qt();return{add(e){const o=t.value[0];e!==o&&o?.pause(),t.value=De(t.value,e),t.value.unshift(e)},remove(e){t.value=De(t.value,e),t.value[0]?.resume()}}}function De(t,e){const o=[...t],r=o.indexOf(e);return r!==-1&&o.splice(r,1),o}const fe="focusScope.autoFocusOnMount",pe="focusScope.autoFocusOnUnmount",Pe={bubbles:!1,cancelable:!0};function Ht(t,{select:e=!1}={}){const o=B();for(const r of t)if(U(r,{select:e}),B()!==o)return!0}function Ut(t){const e=Ve(t),o=Te(e,t),r=Te(e.reverse(),t);return[o,r]}function Ve(t){const e=[],o=document.createTreeWalker(t,NodeFilter.SHOW_ELEMENT,{acceptNode:r=>{const a=r.tagName==="INPUT"&&r.type==="hidden";return r.disabled||r.hidden||a?NodeFilter.FILTER_SKIP:r.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;o.nextNode();)e.push(o.currentNode);return e}function Te(t,e){for(const o of t)if(!zt(o,{upTo:e}))return o}function zt(t,{upTo:e}){if(getComputedStyle(t).visibility==="hidden")return!0;for(;t;){if(e!==void 0&&t===e)return!1;if(getComputedStyle(t).display==="none")return!0;t=t.parentElement}return!1}function Wt(t){return t instanceof HTMLInputElement&&"select"in t}function U(t,{select:e=!1}={}){if(t&&t.focus){const o=B();t.focus({preventScroll:!0}),t!==o&&Wt(t)&&e&&t.select()}}var Vt=S({__name:"FocusScope",props:{loop:{type:Boolean,required:!1,default:!1},trapped:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["mountAutoFocus","unmountAutoFocus"],setup(t,{emit:e}){const o=t,r=e,{currentRef:a,currentElement:l}=T(),s=E(null),i=Ft(),c=$e({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}});R(u=>{if(!G)return;const f=l.value;if(!o.trapped)return;function p(w){if(c.paused||!f)return;const v=w.target;f.contains(v)?s.value=v:U(s.value,{select:!0})}function m(w){if(c.paused||!f)return;const v=w.relatedTarget;v!==null&&(f.contains(v)||U(s.value,{select:!0}))}function g(w){f.contains(s.value)||U(f)}document.addEventListener("focusin",p),document.addEventListener("focusout",m);const C=new MutationObserver(g);f&&C.observe(f,{childList:!0,subtree:!0}),u(()=>{document.removeEventListener("focusin",p),document.removeEventListener("focusout",m),C.disconnect()})}),R(async u=>{const f=l.value;if(await Y(),!f)return;i.add(c);const p=B();if(!f.contains(p)){const g=new CustomEvent(fe,Pe);f.addEventListener(fe,C=>r("mountAutoFocus",C)),f.dispatchEvent(g),g.defaultPrevented||(Ht(Ve(f),{select:!0}),B()===p&&U(f))}u(()=>{f.removeEventListener(fe,w=>r("mountAutoFocus",w));const g=new CustomEvent(pe,Pe),C=w=>{r("unmountAutoFocus",w)};f.addEventListener(pe,C),f.dispatchEvent(g),setTimeout(()=>{g.defaultPrevented||U(p??document.body,{select:!0}),f.removeEventListener(pe,C),i.remove(c)},0)})});function d(u){if(!o.loop&&!o.trapped||c.paused)return;const f=u.key==="Tab"&&!u.altKey&&!u.ctrlKey&&!u.metaKey,p=B();if(f&&p){const m=u.currentTarget,[g,C]=Ut(m);g&&C?!u.shiftKey&&p===C?(u.preventDefault(),o.loop&&U(g,{select:!0})):u.shiftKey&&p===g&&(u.preventDefault(),o.loop&&U(C,{select:!0})):p===m&&u.preventDefault()}}return(u,f)=>(_(),b(n(x),{ref_key:"currentRef",ref:a,tabindex:"-1","as-child":u.asChild,as:u.as,onKeydown:d},{default:h(()=>[y(u.$slots,"default")]),_:3},8,["as-child","as"]))}}),jt=Vt;function Yt(t){return t?"open":"closed"}var Kt=S({__name:"DialogContentImpl",props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","openAutoFocus","closeAutoFocus"],setup(t,{emit:e}){const o=t,r=e,a=M(),{forwardRef:l,currentElement:s}=T();return a.titleId||=me(void 0,"reka-dialog-title"),a.descriptionId||=me(void 0,"reka-dialog-description"),H(()=>{a.contentElement=s,B()!==document.body&&(a.triggerElement.value=B())}),(i,c)=>(_(),b(n(jt),{"as-child":"",loop:"",trapped:o.trapFocus,onMountAutoFocus:c[5]||(c[5]=d=>r("openAutoFocus",d)),onUnmountAutoFocus:c[6]||(c[6]=d=>r("closeAutoFocus",d))},{default:h(()=>[k(n(Nt),O({id:n(a).contentId,ref:n(l),as:i.as,"as-child":i.asChild,"disable-outside-pointer-events":i.disableOutsidePointerEvents,role:"dialog","aria-describedby":n(a).descriptionId,"aria-labelledby":n(a).titleId,"data-state":n(Yt)(n(a).open.value)},i.$attrs,{onDismiss:c[0]||(c[0]=d=>n(a).onOpenChange(!1)),onEscapeKeyDown:c[1]||(c[1]=d=>r("escapeKeyDown",d)),onFocusOutside:c[2]||(c[2]=d=>r("focusOutside",d)),onInteractOutside:c[3]||(c[3]=d=>r("interactOutside",d)),onPointerDownOutside:c[4]||(c[4]=d=>r("pointerDownOutside",d))}),{default:h(()=>[y(i.$slots,"default")]),_:3},16,["id","as","as-child","disable-outside-pointer-events","aria-describedby","aria-labelledby","data-state"])]),_:3},8,["trapped"]))}}),je=Kt,Xt=S({__name:"DialogContentModal",props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","openAutoFocus","closeAutoFocus"],setup(t,{emit:e}){const o=t,r=e,a=M(),l=ie(r),{forwardRef:s,currentElement:i}=T();return Dt(i),(c,d)=>(_(),b(je,O({...o,...n(l)},{ref:n(s),"trap-focus":n(a).open.value,"disable-outside-pointer-events":!0,onCloseAutoFocus:d[0]||(d[0]=u=>{u.defaultPrevented||(u.preventDefault(),n(a).triggerElement.value?.focus())}),onPointerDownOutside:d[1]||(d[1]=u=>{const f=u.detail.originalEvent,p=f.button===0&&f.ctrlKey===!0;(f.button===2||p)&&u.preventDefault()}),onFocusOutside:d[2]||(d[2]=u=>{u.preventDefault()})}),{default:h(()=>[y(c.$slots,"default")]),_:3},16,["trap-focus"]))}}),Gt=Xt,Jt=S({__name:"DialogContentNonModal",props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","openAutoFocus","closeAutoFocus"],setup(t,{emit:e}){const o=t,a=ie(e);T();const l=M(),s=E(!1),i=E(!1);return(c,d)=>(_(),b(je,O({...o,...n(a)},{"trap-focus":!1,"disable-outside-pointer-events":!1,onCloseAutoFocus:d[0]||(d[0]=u=>{u.defaultPrevented||(s.value||n(l).triggerElement.value?.focus(),u.preventDefault()),s.value=!1,i.value=!1}),onInteractOutside:d[1]||(d[1]=u=>{u.defaultPrevented||(s.value=!0,u.detail.originalEvent.type==="pointerdown"&&(i.value=!0));const f=u.target;n(l).triggerElement.value?.contains(f)&&u.preventDefault(),u.detail.originalEvent.type==="focusin"&&i.value&&u.preventDefault()})}),{default:h(()=>[y(c.$slots,"default")]),_:3},16))}}),Qt=Jt,Zt=S({__name:"DialogContent",props:{forceMount:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","openAutoFocus","closeAutoFocus"],setup(t,{emit:e}){const o=t,r=e,a=M(),l=ie(r),{forwardRef:s}=T();return(i,c)=>(_(),b(n(K),{present:i.forceMount||n(a).open.value},{default:h(()=>[n(a).modal.value?(_(),b(Gt,O({key:0,ref:n(s)},{...o,...n(l),...i.$attrs}),{default:h(()=>[y(i.$slots,"default")]),_:3},16)):(_(),b(Qt,O({key:1,ref:n(s)},{...o,...n(l),...i.$attrs}),{default:h(()=>[y(i.$slots,"default")]),_:3},16))]),_:3},8,["present"]))}}),eo=Zt,to=S({__name:"DialogDescription",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"p"}},setup(t){const e=t;T();const o=M();return(r,a)=>(_(),b(n(x),O(e,{id:n(o).descriptionId}),{default:h(()=>[y(r.$slots,"default")]),_:3},16,["id"]))}}),oo=to,ro=S({__name:"DialogOverlayImpl",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(t){const e=M();return gt(!0),T(),(o,r)=>(_(),b(n(x),{as:o.as,"as-child":o.asChild,"data-state":n(e).open.value?"open":"closed",style:{"pointer-events":"auto"}},{default:h(()=>[y(o.$slots,"default")]),_:3},8,["as","as-child","data-state"]))}}),ao=ro,no=S({__name:"DialogOverlay",props:{forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(t){const e=M(),{forwardRef:o}=T();return(r,a)=>n(e)?.modal.value?(_(),b(n(K),{key:0,present:r.forceMount||n(e).open.value},{default:h(()=>[k(ao,O(r.$attrs,{ref:n(o),as:r.as,"as-child":r.asChild}),{default:h(()=>[y(r.$slots,"default")]),_:3},16,["as","as-child"])]),_:3},8,["present"])):Z("v-if",!0)}}),so=no,lo=S({__name:"Teleport",props:{to:{type:null,required:!1,default:"body"},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(t){const e=at();return(o,r)=>n(e)||o.forceMount?(_(),b(dt,{key:0,to:o.to,disabled:o.disabled,defer:o.defer},[y(o.$slots,"default")],8,["to","disabled","defer"])):Z("v-if",!0)}}),io=lo,uo=S({__name:"DialogPortal",props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(t){const e=t;return(o,r)=>(_(),b(n(io),_e(ye(e)),{default:h(()=>[y(o.$slots,"default")]),_:3},16))}}),co=uo,fo=S({__name:"DialogTitle",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"h2"}},setup(t){const e=t,o=M();return T(),(r,a)=>(_(),b(n(x),O(e,{id:n(o).titleId}),{default:h(()=>[y(r.$slots,"default")]),_:3},16,["id"]))}}),po=fo,vo=S({__name:"DialogTrigger",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"}},setup(t){const e=t,o=M(),{forwardRef:r,currentElement:a}=T();return o.contentId||=me(void 0,"reka-dialog-content"),H(()=>{o.triggerElement.value=a.value}),(l,s)=>(_(),b(n(x),O(e,{ref:n(r),type:l.as==="button"?"button":void 0,"aria-haspopup":"dialog","aria-expanded":n(o).open.value||!1,"aria-controls":n(o).open.value?n(o).contentId:void 0,"data-state":n(o).open.value?"open":"closed",onClick:n(o).onOpenToggle}),{default:h(()=>[y(l.$slots,"default")]),_:3},16,["type","aria-expanded","aria-controls","data-state","onClick"]))}}),mo=vo;const ke="data-reka-collection-item";function Ar(t={}){const{key:e="",isProvider:o=!1}=t,r=`${e}CollectionProvider`;let a;if(o){const u=E(new Map);a={collectionRef:E(),itemMap:u},Re(r,a)}else a=Ie(r);const l=(u=!1)=>{const f=a.collectionRef.value;if(!f)return[];const p=Array.from(f.querySelectorAll(`[${ke}]`)),g=Array.from(a.itemMap.value.values()).sort((C,w)=>p.indexOf(C.ref)-p.indexOf(w.ref));return u?g:g.filter(C=>C.ref.dataset.disabled!=="")},s=S({name:"CollectionSlot",inheritAttrs:!1,setup(u,{slots:f,attrs:p}){const{primitiveElement:m,currentElement:g}=Ae();return q(g,()=>{a.collectionRef.value=g.value}),()=>ve(Oe,{ref:m,...p},f)}}),i=S({name:"CollectionItem",inheritAttrs:!1,props:{value:{validator:()=>!0}},setup(u,{slots:f,attrs:p}){const{primitiveElement:m,currentElement:g}=Ae();return R(C=>{if(g.value){const w=ft(g.value);a.itemMap.value.set(w,{ref:g.value,value:u.value}),C(()=>a.itemMap.value.delete(w))}}),()=>ve(Oe,{...p,[ke]:"",ref:m},f)}}),c=D(()=>Array.from(a.itemMap.value.values())),d=D(()=>a.itemMap.value.size);return{getItems:l,reactiveItems:c,itemMapSize:d,CollectionSlot:s,CollectionItem:i}}const Dr="rovingFocusGroup.onEntryFocus",Pr={bubbles:!1,cancelable:!0},ho={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function _o(t,e){return e!=="rtl"?t:t==="ArrowLeft"?"ArrowRight":t==="ArrowRight"?"ArrowLeft":t}function Tr(t,e,o){const r=_o(t.key,o);if(!(e==="vertical"&&["ArrowLeft","ArrowRight"].includes(r))&&!(e==="horizontal"&&["ArrowUp","ArrowDown"].includes(r)))return ho[r]}function kr(t,e=!1){const o=B();for(const r of t)if(r===o||(r.focus({preventScroll:e}),B()!==o))return}function xr(t,e){return t.map((o,r)=>t[(e+r)%t.length])}var yo=S({__name:"VisuallyHidden",props:{feature:{type:String,required:!1,default:"focusable"},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(t){return(e,o)=>(_(),b(n(x),{as:e.as,"as-child":e.asChild,"aria-hidden":e.feature==="focusable"?"true":void 0,"data-hidden":e.feature==="fully-hidden"?"":void 0,tabindex:e.feature==="fully-hidden"?"-1":void 0,style:{position:"absolute",border:0,width:"1px",height:"1px",padding:0,margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",clipPath:"inset(50%)",whiteSpace:"nowrap",wordWrap:"normal",top:"-1px",left:"-1px"}},{default:h(()=>[y(e.$slots,"default")]),_:3},8,["as","as-child","aria-hidden","data-hidden","tabindex"]))}}),Lr=yo;function go(t){const e=be({nonce:E()});return D(()=>t?.value||e.nonce?.value)}const[L,bo]=ee("ScrollAreaRoot");var So=S({__name:"ScrollAreaRoot",props:{type:{type:String,required:!1,default:"hover"},dir:{type:String,required:!1},scrollHideDelay:{type:Number,required:!1,default:600},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(t,{expose:e}){const o=t,r=E(0),a=E(0),l=E(),s=E(),i=E(),c=E(),d=E(!1),u=E(!1),{type:f,dir:p,scrollHideDelay:m}=J(o),g=St(p);function C(){l.value?.scrollTo({top:0})}function w(){l.value?.scrollTo({top:0,left:0})}e({viewport:l,scrollTop:C,scrollTopLeft:w});const{forwardRef:v,currentElement:P}=T();return bo({type:f,dir:g,scrollHideDelay:m,scrollArea:P,viewport:l,onViewportChange:A=>{l.value=A||void 0},content:s,onContentChange:A=>{s.value=A},scrollbarX:i,scrollbarXEnabled:d,scrollbarY:c,scrollbarYEnabled:u,onScrollbarXChange:A=>{i.value=A||void 0},onScrollbarYChange:A=>{c.value=A||void 0},onScrollbarXEnabledChange:A=>{d.value=A},onScrollbarYEnabledChange:A=>{u.value=A},onCornerWidthChange:A=>{r.value=A},onCornerHeightChange:A=>{a.value=A}}),(A,N)=>(_(),b(n(x),{ref:n(v),"as-child":o.asChild,as:A.as,dir:n(g),style:Q({position:"relative","--reka-scroll-area-corner-width":`${r.value}px`,"--reka-scroll-area-corner-height":`${a.value}px`})},{default:h(()=>[y(A.$slots,"default")]),_:3},8,["as-child","as","dir","style"]))}}),wo=So,Eo=S({__name:"ScrollAreaCornerImpl",setup(t){const e=L(),o=E(0),r=E(0),a=D(()=>!!o.value&&!!r.value);function l(){const i=e.scrollbarX.value?.offsetHeight||0;e.onCornerHeightChange(i),r.value=i}function s(){const i=e.scrollbarY.value?.offsetWidth||0;e.onCornerWidthChange(i),o.value=i}return j(e.scrollbarX.value,l),j(e.scrollbarY.value,s),q(()=>e.scrollbarX.value,l),q(()=>e.scrollbarY.value,s),(i,c)=>a.value?(_(),b(n(x),O({key:0,style:{width:`${o.value}px`,height:`${r.value}px`,position:"absolute",right:n(e).dir.value==="ltr"?0:void 0,left:n(e).dir.value==="rtl"?0:void 0,bottom:0}},i.$parent?.$props),{default:h(()=>[y(i.$slots,"default")]),_:3},16,["style"])):Z("v-if",!0)}}),Co=Eo,Oo=S({__name:"ScrollAreaCorner",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(t){const e=t,{forwardRef:o}=T(),r=L(),a=D(()=>!!r.scrollbarX.value&&!!r.scrollbarY.value),l=D(()=>r.type.value!=="scroll"&&a.value);return(s,i)=>l.value?(_(),b(Co,O({key:0},e,{ref:n(o)}),{default:h(()=>[y(s.$slots,"default")]),_:3},16)):Z("v-if",!0)}}),Ao=Oo;function Ye(t,e){return o=>{if(t[0]===t[1]||e[0]===e[1])return e[0];const r=(e[1]-e[0])/(t[1]-t[0]);return e[0]+r*(o-t[0])}}function ue(t){const e=Ke(t.viewport,t.content),o=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,r=(t.scrollbar.size-o)*e;return Math.max(r,18)}function Ke(t,e){const o=t/e;return Number.isNaN(o)?0:o}function Do(t,e=()=>{}){let o={left:t.scrollLeft,top:t.scrollTop},r=0;return(function a(){const l={left:t.scrollLeft,top:t.scrollTop},s=o.left!==l.left,i=o.top!==l.top;(s||i)&&e(),o=l,r=window.requestAnimationFrame(a)})(),()=>window.cancelAnimationFrame(r)}function xe(t,e,o="ltr"){const r=ue(e),a=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,l=e.scrollbar.size-a,s=e.content-e.viewport,i=l-r,c=o==="ltr"?[0,s]:[s*-1,0],d=ht(t,c[0],c[1]);return Ye([0,s],[0,i])(d)}function ne(t){return t?Number.parseInt(t,10):0}function Po(t,e,o,r="ltr"){const a=ue(o),l=a/2,s=e||l,i=a-s,c=o.scrollbar.paddingStart+s,d=o.scrollbar.size-o.scrollbar.paddingEnd-i,u=o.content-o.viewport,f=r==="ltr"?[0,u]:[u*-1,0];return Ye([c,d],f)(t)}function Le(t,e){return t>0&&t<e}var To=S({__name:"ScrollAreaScrollbarX",setup(t){const e=L(),o=ce(),{forwardRef:r,currentElement:a}=T();H(()=>{a.value&&e.onScrollbarXChange(a.value)});const l=D(()=>o.sizes.value);return(s,i)=>(_(),b(Xe,{ref:n(r),"is-horizontal":!0,"data-orientation":"horizontal",style:Q({bottom:0,left:n(e).dir.value==="rtl"?"var(--reka-scroll-area-corner-width)":0,right:n(e).dir.value==="ltr"?"var(--reka-scroll-area-corner-width)":0,"--reka-scroll-area-thumb-width":l.value?`${n(ue)(l.value)}px`:void 0}),onOnDragScroll:i[0]||(i[0]=c=>n(o).onDragScroll(c.x))},{default:h(()=>[y(s.$slots,"default")]),_:3},8,["style"]))}}),ko=To,xo=S({__name:"ScrollAreaScrollbarY",setup(t){const e=L(),o=ce(),{forwardRef:r,currentElement:a}=T();H(()=>{a.value&&e.onScrollbarYChange(a.value)});const l=D(()=>o.sizes.value);return(s,i)=>(_(),b(Xe,{ref:n(r),"is-horizontal":!1,"data-orientation":"vertical",style:Q({top:0,right:n(e).dir.value==="ltr"?0:void 0,left:n(e).dir.value==="rtl"?0:void 0,bottom:"var(--reka-scroll-area-corner-height)","--reka-scroll-area-thumb-height":l.value?`${n(ue)(l.value)}px`:void 0}),onOnDragScroll:i[0]||(i[0]=c=>n(o).onDragScroll(c.y))},{default:h(()=>[y(s.$slots,"default")]),_:3},8,["style"]))}}),Lo=xo,Io=S({__name:"ScrollAreaScrollbarAuto",props:{forceMount:{type:Boolean,required:!1}},setup(t){const e=L(),o=te(),{forwardRef:r}=T(),a=E(!1),l=he(()=>{if(e.viewport.value){const s=e.viewport.value.offsetWidth<e.viewport.value.scrollWidth,i=e.viewport.value.offsetHeight<e.viewport.value.scrollHeight;a.value=o.isHorizontal.value?s:i}},10);return H(()=>l()),j(e.viewport,l),j(e.content,l),(s,i)=>(_(),b(n(K),{present:s.forceMount||a.value},{default:h(()=>[k(Ee,O(s.$attrs,{ref:n(r),"data-state":a.value?"visible":"hidden"}),{default:h(()=>[y(s.$slots,"default")]),_:3},16,["data-state"])]),_:3},8,["present"]))}}),we=Io,Ro=S({inheritAttrs:!1,__name:"ScrollAreaScrollbarGlimpse",props:{forceMount:{type:Boolean,required:!1}},setup(t){const e=L(),o=te(),{forwardRef:r}=T(),{state:a,dispatch:l}=Se("hidden",{hidden:{POINTER_ENTER:"glimpse",SCROLL:"scrolling"},glimpse:{HIDE:"hidden",POINTER_LEAVE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"glimpse"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}}),s=D(()=>a.value!=="hidden");function i(){l("POINTER_ENTER")}function c(){l("POINTER_LEAVE")}const d=he(()=>l("SCROLL_END"),100);return R(u=>{if(a.value==="glimpse"){const f=window.setTimeout(()=>l("HIDE"),e.scrollHideDelay.value);u(()=>{window.clearTimeout(f)})}}),R(u=>{if(a.value==="idle"){const f=window.setTimeout(()=>l("HIDE"),e.scrollHideDelay.value);u(()=>{window.clearTimeout(f)})}}),R(u=>{const f=e.viewport.value,p=o.isHorizontal.value?"scrollLeft":"scrollTop";if(f){let m=f[p];const g=()=>{const C=f[p];m!==C&&(l("SCROLL"),d()),m=C};f.addEventListener("scroll",g),u(()=>{f.removeEventListener("scroll",g)})}}),H(()=>{const u=e.scrollArea.value;u&&(u.addEventListener("pointerenter",i),u.addEventListener("pointerleave",c))}),W(()=>{const u=e.scrollArea.value;u&&(u.removeEventListener("pointerenter",i),u.removeEventListener("pointerleave",c))}),(u,f)=>(_(),b(n(K),{present:u.forceMount||s.value},{default:h(()=>[k(we,O(u.$attrs,{ref:n(r),"data-state":s.value?"visible":"hidden"}),{default:h(()=>[y(u.$slots,"default")]),_:3},16,["data-state"])]),_:3},8,["present"]))}}),Bo=Ro,$o=S({inheritAttrs:!1,__name:"ScrollAreaScrollbarHover",props:{forceMount:{type:Boolean,required:!1}},setup(t){const e=L(),{forwardRef:o}=T();let r;const a=E(!1);function l(){window.clearTimeout(r),a.value=!0}function s(){r=window.setTimeout(()=>{a.value=!1},e.scrollHideDelay.value)}return H(()=>{const i=e.scrollArea.value;i&&(i.addEventListener("pointerenter",l),i.addEventListener("pointerleave",s))}),W(()=>{const i=e.scrollArea.value;i&&(window.clearTimeout(r),i.removeEventListener("pointerenter",l),i.removeEventListener("pointerleave",s))}),(i,c)=>(_(),b(n(K),{present:i.forceMount||a.value},{default:h(()=>[k(we,O(i.$attrs,{ref:n(o),"data-state":a.value?"visible":"hidden"}),{default:h(()=>[y(i.$slots,"default")]),_:3},16,["data-state"])]),_:3},8,["present"]))}}),Mo=$o,No=S({__name:"ScrollAreaScrollbarScroll",props:{forceMount:{type:Boolean,required:!1}},setup(t){const e=L(),o=te(),{forwardRef:r}=T(),{state:a,dispatch:l}=Se("hidden",{hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}}),s=D(()=>a.value!=="hidden");R(c=>{if(a.value==="idle"){const d=window.setTimeout(()=>l("HIDE"),e.scrollHideDelay.value);c(()=>{window.clearTimeout(d)})}});const i=he(()=>l("SCROLL_END"),100);return R(c=>{const d=e.viewport.value,u=o.isHorizontal.value?"scrollLeft":"scrollTop";if(d){let f=d[u];const p=()=>{const m=d[u];f!==m&&(l("SCROLL"),i()),f=m};d.addEventListener("scroll",p),c(()=>{d.removeEventListener("scroll",p)})}}),(c,d)=>(_(),b(n(K),{present:c.forceMount||s.value},{default:h(()=>[k(Ee,O(c.$attrs,{ref:n(r),"data-state":s.value?"visible":"hidden"}),{default:h(()=>[y(c.$slots,"default")]),_:3},16,["data-state"])]),_:3},8,["present"]))}}),qo=No;const[te,Fo]=ee("ScrollAreaScrollbar");var Ho=S({inheritAttrs:!1,__name:"ScrollAreaScrollbar",props:{orientation:{type:String,required:!1,default:"vertical"},forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"div"}},setup(t){const e=t,{forwardRef:o}=T(),r=L(),a=D(()=>e.orientation==="horizontal");q(a,()=>{a.value?r.onScrollbarXEnabledChange(!0):r.onScrollbarYEnabledChange(!0)},{immediate:!0}),W(()=>{r.onScrollbarXEnabledChange(!1),r.onScrollbarYEnabledChange(!1)});const{orientation:l,forceMount:s,asChild:i,as:c}=J(e);return Fo({orientation:l,forceMount:s,isHorizontal:a,as:c,asChild:i}),(d,u)=>n(r).type.value==="hover"?(_(),b(Mo,O({key:0},d.$attrs,{ref:n(o),"force-mount":n(s)}),{default:h(()=>[y(d.$slots,"default")]),_:3},16,["force-mount"])):n(r).type.value==="scroll"?(_(),b(qo,O({key:1},d.$attrs,{ref:n(o),"force-mount":n(s)}),{default:h(()=>[y(d.$slots,"default")]),_:3},16,["force-mount"])):n(r).type.value==="glimpse"?(_(),b(Bo,O({key:2},d.$attrs,{ref:n(o),"force-mount":n(s)}),{default:h(()=>[y(d.$slots,"default")]),_:3},16,["force-mount"])):n(r).type.value==="auto"?(_(),b(we,O({key:3},d.$attrs,{ref:n(o),"force-mount":n(s)}),{default:h(()=>[y(d.$slots,"default")]),_:3},16,["force-mount"])):n(r).type.value==="always"?(_(),b(Ee,O({key:4},d.$attrs,{ref:n(o),"data-state":"visible"}),{default:h(()=>[y(d.$slots,"default")]),_:3},16)):Z("v-if",!0)}}),Uo=Ho;const[ce,zo]=ee("ScrollAreaScrollbarVisible");var Wo=S({__name:"ScrollAreaScrollbarVisible",setup(t){const e=L(),o=te(),{forwardRef:r}=T(),a=E({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),l=D(()=>{const v=Ke(a.value.viewport,a.value.content);return v>0&&v<1}),s=E(),i=E(0);function c(v,P){if(m.value){const A=e.viewport.value.scrollLeft+v.deltaY;e.viewport.value.scrollLeft=A,Le(A,P)&&v.preventDefault()}else{const A=e.viewport.value.scrollTop+v.deltaY;e.viewport.value.scrollTop=A,Le(A,P)&&v.preventDefault()}}function d(v,P){m.value?i.value=P.x:i.value=P.y}function u(v){i.value=0}function f(v){a.value=v}function p(v,P){return Po(v,i.value,a.value,P)}const m=D(()=>o.isHorizontal.value);function g(v){m.value?e.viewport.value.scrollLeft=p(v,e.dir.value):e.viewport.value.scrollTop=p(v)}function C(){if(m.value){if(e.viewport.value&&s.value){const v=e.viewport.value.scrollLeft,P=xe(v,a.value,e.dir.value);s.value.style.transform=`translate3d(${P}px, 0, 0)`}}else if(e.viewport.value&&s.value){const v=e.viewport.value.scrollTop,P=xe(v,a.value);s.value.style.transform=`translate3d(0, ${P}px, 0)`}}function w(v){s.value=v}return zo({sizes:a,hasThumb:l,handleWheelScroll:c,handleThumbDown:d,handleThumbUp:u,handleSizeChange:f,onThumbPositionChange:C,onThumbChange:w,onDragScroll:g}),(v,P)=>m.value?(_(),b(ko,O({key:0},v.$attrs,{ref:n(r)}),{default:h(()=>[y(v.$slots,"default")]),_:3},16)):(_(),b(Lo,O({key:1},v.$attrs,{ref:n(r)}),{default:h(()=>[y(v.$slots,"default")]),_:3},16))}}),Ee=Wo,Vo=S({__name:"ScrollAreaScrollbarImpl",props:{isHorizontal:{type:Boolean,required:!0}},emits:["onDragScroll","onWheelScroll","onThumbPointerDown"],setup(t,{emit:e}){const o=t,r=e,a=L(),l=ce(),s=te(),{forwardRef:i,currentElement:c}=T(),d=E(""),u=E();function f(v){if(u.value){const P=v.clientX-u.value?.left,A=v.clientY-u.value?.top;r("onDragScroll",{x:P,y:A})}}function p(v){v.button===0&&(v.target.setPointerCapture(v.pointerId),u.value=c.value.getBoundingClientRect(),d.value=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",a.viewport&&(a.viewport.value.style.scrollBehavior="auto"),f(v))}function m(v){f(v)}function g(v){const P=v.target;P.hasPointerCapture(v.pointerId)&&P.releasePointerCapture(v.pointerId),document.body.style.webkitUserSelect=d.value,a.viewport&&(a.viewport.value.style.scrollBehavior=""),u.value=void 0}function C(v){const P=v.target,A=c.value?.contains(P),N=l.sizes.value.content-l.sizes.value.viewport;A&&l.handleWheelScroll(v,N)}H(()=>{document.addEventListener("wheel",C,{passive:!1})}),W(()=>{document.removeEventListener("wheel",C)});function w(){c.value&&(o.isHorizontal?l.handleSizeChange({content:a.viewport.value?.scrollWidth??0,viewport:a.viewport.value?.offsetWidth??0,scrollbar:{size:c.value.clientWidth??0,paddingStart:ne(getComputedStyle(c.value).paddingLeft),paddingEnd:ne(getComputedStyle(c.value).paddingRight)}}):l.handleSizeChange({content:a.viewport.value?.scrollHeight??0,viewport:a.viewport.value?.offsetHeight??0,scrollbar:{size:c.value?.clientHeight??0,paddingStart:ne(getComputedStyle(c.value).paddingTop),paddingEnd:ne(getComputedStyle(c.value).paddingBottom)}}),l.onThumbPositionChange())}return j(c,w),j(a.content,w),(v,P)=>(_(),b(n(x),{ref:n(i),style:{position:"absolute"},"data-scrollbarimpl":"",as:n(s).as.value,"as-child":n(s).asChild.value,onPointerdown:p,onPointermove:m,onPointerup:g},{default:h(()=>[y(v.$slots,"default")]),_:3},8,["as","as-child"]))}}),Xe=Vo,jo=S({__name:"ScrollAreaThumb",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(t){const e=t,o=L(),r=ce();function a(p){const g=p.target.getBoundingClientRect(),C=p.clientX-g.left,w=p.clientY-g.top;r.handleThumbDown(p,{x:C,y:w})}function l(p){r.handleThumbUp(p)}const{forwardRef:s,currentElement:i}=T(),c=E(),d=D(()=>o.viewport.value);function u(){if(!c.value){const p=Do(d.value,r.onThumbPositionChange);c.value=p,r.onThumbPositionChange()}}const f=D(()=>r.sizes.value);return nt(f,()=>{r.onThumbChange(i.value),d.value&&(r.onThumbPositionChange(),d.value.addEventListener("scroll",u))}),W(()=>{d.value.removeEventListener("scroll",u),o.viewport.value?.removeEventListener("scroll",u)}),(p,m)=>(_(),b(n(x),{ref:n(s),"data-state":n(r).hasThumb?"visible":"hidden",style:{width:"var(--reka-scroll-area-thumb-width)",height:"var(--reka-scroll-area-thumb-height)"},"as-child":e.asChild,as:p.as,onPointerdown:a,onPointerup:l},{default:h(()=>[y(p.$slots,"default")]),_:3},8,["data-state","as-child","as"]))}}),Yo=jo,Ko=S({inheritAttrs:!1,__name:"ScrollAreaViewport",props:{nonce:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(t,{expose:e}){const o=t,{nonce:r}=J(o),a=go(r),l=L(),s=E();H(()=>{l.onViewportChange(s.value),l.onContentChange(c.value)}),e({viewportElement:s});const{forwardRef:i,currentElement:c}=T();return(d,u)=>(_(),ge(vt,null,[Me("div",O({ref_key:"viewportElement",ref:s,"data-reka-scroll-area-viewport":"",style:{overflowX:n(l).scrollbarXEnabled.value?"scroll":"hidden",overflowY:n(l).scrollbarYEnabled.value?"scroll":"hidden"}},d.$attrs,{tabindex:0}),[k(n(x),{ref:n(i),style:Q({minWidth:n(l).scrollbarXEnabled.value?"fit-content":void 0}),"as-child":o.asChild,as:d.as},{default:h(()=>[y(d.$slots,"default")]),_:3},8,["style","as-child","as"])],16),k(n(x),{as:"style",nonce:n(a)},{default:h(()=>u[0]||(u[0]=[pt(" /* Hide scrollbars cross-browser and enable momentum scroll for touch devices */ [data-reka-scroll-area-viewport] { scrollbar-width:none; -ms-overflow-style:none; -webkit-overflow-scrolling:touch; } [data-reka-scroll-area-viewport]::-webkit-scrollbar { display:none; } ")])),_:1,__:[0]},8,["nonce"])],64))}}),Xo=Ko,Go=S({__name:"BaseSeparator",props:{orientation:{type:String,required:!1,default:"horizontal"},decorative:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(t){const e=t,o=["horizontal","vertical"];function r(i){return o.includes(i)}const a=D(()=>r(e.orientation)?e.orientation:"horizontal"),l=D(()=>a.value==="vertical"?e.orientation:void 0),s=D(()=>e.decorative?{role:"none"}:{"aria-orientation":l.value,role:"separator"});return(i,c)=>(_(),b(n(x),O({as:i.as,"as-child":i.asChild,"data-orientation":a.value},s.value),{default:h(()=>[y(i.$slots,"default")]),_:3},16,["as","as-child","data-orientation"]))}}),Jo=Go,Qo=S({__name:"Separator",props:{orientation:{type:String,required:!1,default:"horizontal"},decorative:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(t){const e=t;return(o,r)=>(_(),b(Jo,_e(ye(e)),{default:h(()=>[y(o.$slots,"default")]),_:3},16))}}),Ir=Qo;const Zo=S({__name:"Badge",props:{asChild:{type:Boolean},as:{},variant:{},class:{}},setup(t){const e=t,o=z(e,"class");return(r,a)=>(_(),b(n(x),O({"data-slot":"badge",class:n(F)(n(er)({variant:t.variant}),e.class)},n(o)),{default:h(()=>[y(r.$slots,"default")]),_:3},16,["class"]))}}),Rr=Object.assign(Zo,{__name:"UiBadge"}),er=st("inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",secondary:"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",destructive:"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"}},defaultVariants:{variant:"default"}}),tr=S({__name:"ScrollBar",props:{orientation:{default:"vertical"},forceMount:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},setup(t){const e=t,o=z(e,"class");return(r,a)=>(_(),b(n(Uo),O({"data-slot":"scroll-area-scrollbar"},n(o),{class:n(F)("flex touch-none p-px transition-colors select-none",t.orientation==="vertical"&&"h-full w-2.5 border-l border-l-transparent",t.orientation==="horizontal"&&"h-2.5 flex-col border-t border-t-transparent",e.class)}),{default:h(()=>[k(n(Yo),{"data-slot":"scroll-area-thumb",class:"bg-border relative flex-1 rounded-full"})]),_:1},16,["class"]))}}),or=Object.assign(tr,{__name:"UiScrollAreaScrollBar"}),rr=S({__name:"ScrollArea",props:{type:{},dir:{},scrollHideDelay:{},asChild:{type:Boolean},as:{},class:{}},setup(t){const e=t,o=z(e,"class");return(r,a)=>(_(),b(n(wo),O({"data-slot":"scroll-area"},n(o),{class:n(F)("relative",e.class)}),{default:h(()=>[k(n(Xo),{"data-slot":"scroll-area-viewport",class:"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1"},{default:h(()=>[y(r.$slots,"default")]),_:3}),k(or),k(n(Ao))]),_:3},16,["class"]))}}),Br=Object.assign(rr,{__name:"UiScrollArea"}),ar=S({__name:"Sheet",props:{open:{type:Boolean},defaultOpen:{type:Boolean},modal:{type:Boolean}},emits:["update:open"],setup(t,{emit:e}){const a=He(t,e);return(l,s)=>(_(),b(n(xt),O({"data-slot":"sheet"},n(a)),{default:h(i=>[y(l.$slots,"default",_e(ye(i)))]),_:3},16))}}),$r=Object.assign(ar,{__name:"UiSheet"}),nr=S({__name:"SheetClose",props:{asChild:{type:Boolean},as:{}},setup(t){const e=t;return(o,r)=>(_(),b(n(ze),O({"data-slot":"sheet-close"},e),{default:h(()=>[y(o.$slots,"default")]),_:3},16))}}),Mr=Object.assign(nr,{__name:"UiSheetClose"}),sr=S({__name:"SheetOverlay",props:{forceMount:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},setup(t){const e=t,o=z(e,"class");return(r,a)=>(_(),b(n(so),O({"data-slot":"sheet-overlay",class:n(F)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80",e.class)},n(o)),{default:h(()=>[y(r.$slots,"default")]),_:3},16,["class"]))}}),lr=Object.assign(sr,{__name:"UiSheetOverlay"}),ir=S({inheritAttrs:!1,__name:"SheetContent",props:{class:{},side:{default:"right"},forceMount:{type:Boolean},disableOutsidePointerEvents:{type:Boolean},asChild:{type:Boolean},as:{}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","openAutoFocus","closeAutoFocus"],setup(t,{emit:e}){const o=t,r=e,a=z(o,"class","side"),l=He(a,r);return(s,i)=>(_(),b(n(co),null,{default:h(()=>[k(lr),k(n(eo),O({"data-slot":"sheet-content",class:n(F)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500",t.side==="right"&&"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm",t.side==="left"&&"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm",t.side==="top"&&"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b",t.side==="bottom"&&"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t",o.class)},{...s.$attrs,...n(l)}),{default:h(()=>[y(s.$slots,"default"),k(n(ze),{class:"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none"},{default:h(()=>[k(n(mt),{class:"size-4"}),i[0]||(i[0]=Me("span",{class:"sr-only"},"Close",-1))]),_:1})]),_:3},16,["class"])]),_:3}))}}),Nr=Object.assign(ir,{__name:"UiSheetContent"}),ur=S({__name:"SheetDescription",props:{asChild:{type:Boolean},as:{},class:{}},setup(t){const e=t,o=z(e,"class");return(r,a)=>(_(),b(n(oo),O({"data-slot":"sheet-description",class:n(F)("text-muted-foreground text-sm",e.class)},n(o)),{default:h(()=>[y(r.$slots,"default")]),_:3},16,["class"]))}}),qr=Object.assign(ur,{__name:"UiSheetDescription"}),cr=S({__name:"SheetFooter",props:{class:{}},setup(t){const e=t;return(o,r)=>(_(),ge("div",{"data-slot":"sheet-footer",class:Ne(n(F)("mt-auto flex flex-col gap-2 p-4",e.class))},[y(o.$slots,"default")],2))}}),Fr=Object.assign(cr,{__name:"UiSheetFooter"}),dr=S({__name:"SheetHeader",props:{class:{}},setup(t){const e=t;return(o,r)=>(_(),ge("div",{"data-slot":"sheet-header",class:Ne(n(F)("flex flex-col gap-1.5 p-4",e.class))},[y(o.$slots,"default")],2))}}),Hr=Object.assign(dr,{__name:"UiSheetHeader"}),fr=S({__name:"SheetTitle",props:{asChild:{type:Boolean},as:{},class:{}},setup(t){const e=t,o=z(e,"class");return(r,a)=>(_(),b(n(po),O({"data-slot":"sheet-title",class:n(F)("text-foreground font-semibold",e.class)},n(o)),{default:h(()=>[y(r.$slots,"default")]),_:3},16,["class"]))}}),Ur=Object.assign(fr,{__name:"UiSheetTitle"}),pr=S({__name:"SheetTrigger",props:{asChild:{type:Boolean},as:{}},setup(t){const e=t;return(o,r)=>(_(),b(n(mo),O({"data-slot":"sheet-trigger"},e),{default:h(()=>[y(o.$slots,"default")]),_:3},16))}});Object.assign(pr,{__name:"UiSheetTrigger"});export{_r as A,Rr as B,br as C,Nt as D,Dr as E,xt as F,ze as G,so as H,co as I,eo as J,Sr as K,Er as L,oo as M,po as N,mo as O,K as P,Or as R,Br as S,io as T,Lr as V,mt as X,Ar as a,Pr as b,ee as c,me as d,T as e,kr as f,Tr as g,wt as h,He as i,gr as j,Cr as k,Ir as l,Hr as m,Ur as n,qr as o,Fr as p,Mr as q,Nr as r,$r as s,yr as t,St as u,wr as v,xr as w,B as x,Ae as y,qe as z};
|