@grifhinz/logics-manager 2.2.0 → 2.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +95 -1
- package/VERSION +1 -1
- package/clients/README.md +9 -0
- package/clients/shared-web/media/css/board.css +658 -0
- package/clients/shared-web/media/css/details.css +457 -0
- package/clients/shared-web/media/css/layout.css +123 -0
- package/clients/shared-web/media/css/toolbar.css +576 -0
- package/clients/shared-web/media/harnessApi.js +324 -0
- package/clients/shared-web/media/hostApi.js +213 -0
- package/clients/shared-web/media/hostApiContract.js +55 -0
- package/clients/shared-web/media/icon.png +0 -0
- package/clients/shared-web/media/layoutController.js +246 -0
- package/clients/shared-web/media/logics.svg +7 -0
- package/clients/shared-web/media/logicsModel.js +910 -0
- package/clients/shared-web/media/main.css +112 -0
- package/clients/shared-web/media/main.js +3 -0
- package/clients/shared-web/media/mainApp.js +1005 -0
- package/clients/shared-web/media/mainCore.js +604 -0
- package/clients/shared-web/media/mainInteractionHandlers.js +324 -0
- package/clients/shared-web/media/mainInteractions.js +378 -0
- package/clients/shared-web/media/renderBoard.js +3 -0
- package/clients/shared-web/media/renderBoardApp.js +1339 -0
- package/clients/shared-web/media/renderDetails.js +685 -0
- package/clients/shared-web/media/renderMarkdown.js +449 -0
- package/clients/shared-web/media/toolsPanelLayout.js +172 -0
- package/clients/shared-web/media/uiStatus.js +54 -0
- package/clients/shared-web/media/webviewChrome.js +405 -0
- package/clients/shared-web/media/webviewPersistence.js +116 -0
- package/clients/shared-web/media/webviewSelectors.js +491 -0
- package/clients/viewer/README.md +5 -0
- package/clients/viewer/browser-host.js +847 -0
- package/clients/viewer/index.html +237 -0
- package/clients/viewer/viewer.css +433 -0
- package/logics_manager/assist.py +9 -142
- package/logics_manager/assist_handoff.py +132 -0
- package/logics_manager/assist_surface.py +38 -0
- package/logics_manager/cli.py +78 -5
- package/logics_manager/flow.py +126 -24
- package/logics_manager/flow_evidence.py +63 -0
- package/logics_manager/update_check.py +138 -0
- package/logics_manager/viewer.py +533 -0
- package/package.json +12 -6
- package/pyproject.toml +1 -1
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<link rel="icon" type="image/png" href="/media/icon.png" />
|
|
7
|
+
<link rel="alternate icon" type="image/svg+xml" href="/media/logics.svg" />
|
|
8
|
+
<link href="/media/main.css" rel="stylesheet" />
|
|
9
|
+
<link href="/media/css/toolbar.css" rel="stylesheet" />
|
|
10
|
+
<link href="/media/css/layout.css" rel="stylesheet" />
|
|
11
|
+
<link href="/media/css/board.css" rel="stylesheet" />
|
|
12
|
+
<link href="/media/css/details.css" rel="stylesheet" />
|
|
13
|
+
<link href="/viewer.css" rel="stylesheet" />
|
|
14
|
+
<title>Logics Viewer</title>
|
|
15
|
+
</head>
|
|
16
|
+
<body class="viewer-shell">
|
|
17
|
+
<header class="viewer-topbar" aria-label="Viewer status">
|
|
18
|
+
<div>
|
|
19
|
+
<div class="viewer-topbar__title">Logics Viewer</div>
|
|
20
|
+
<div class="viewer-topbar__meta" id="viewer-meta">Read-only local viewer</div>
|
|
21
|
+
</div>
|
|
22
|
+
<div class="viewer-topbar__actions">
|
|
23
|
+
<button class="btn" id="viewer-insights" type="button" title="Show corpus insights">Insights</button>
|
|
24
|
+
<button class="btn" id="viewer-health" type="button" title="Show lint and audit health">Health</button>
|
|
25
|
+
<button class="btn" data-action="refresh" type="button" title="Refresh viewer data">Refresh</button>
|
|
26
|
+
</div>
|
|
27
|
+
</header>
|
|
28
|
+
|
|
29
|
+
<div class="toolbar">
|
|
30
|
+
<div class="toolbar__row toolbar__row--primary">
|
|
31
|
+
<div class="toolbar__filters">
|
|
32
|
+
<button class="toolbar__filter" id="filter-toggle" aria-label="Show view controls" aria-expanded="false" aria-controls="filter-panel" title="Show view controls">
|
|
33
|
+
<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
|
|
34
|
+
<path d="M4 6h16l-6 7v5l-4 2v-7z" fill="none" stroke="currentColor" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" />
|
|
35
|
+
</svg>
|
|
36
|
+
</button>
|
|
37
|
+
<div class="toolbar__tools">
|
|
38
|
+
<button class="toolbar__filter" id="tools-toggle" aria-label="Open tools menu" aria-haspopup="menu" aria-expanded="false" aria-controls="tools-panel" title="Open tools menu">
|
|
39
|
+
<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
|
|
40
|
+
<rect x="5" y="6" width="14" height="2" rx="1" fill="currentColor" />
|
|
41
|
+
<rect x="5" y="11" width="14" height="2" rx="1" fill="currentColor" />
|
|
42
|
+
<rect x="5" y="16" width="14" height="2" rx="1" fill="currentColor" />
|
|
43
|
+
</svg>
|
|
44
|
+
</button>
|
|
45
|
+
<div class="tools-panel" id="tools-panel" aria-hidden="true" role="menu">
|
|
46
|
+
<div class="tools-panel__header">
|
|
47
|
+
<div class="tools-panel__header-label">Tools</div>
|
|
48
|
+
<button class="tools-panel__close" type="button" data-tools-panel-close aria-label="Close tools menu" title="Close tools menu">x</button>
|
|
49
|
+
</div>
|
|
50
|
+
<div class="tools-panel__section" data-tools-section="recommended">
|
|
51
|
+
<div class="tools-panel__section-label">Read-only</div>
|
|
52
|
+
<div class="tools-panel__section-body" data-tools-body="recommended">
|
|
53
|
+
<button class="tools-panel__item" type="button" role="menuitem" data-action="refresh" title="Refresh viewer data">Refresh</button>
|
|
54
|
+
<button class="tools-panel__item" type="button" role="menuitem" data-action="about" title="Open project page">About</button>
|
|
55
|
+
</div>
|
|
56
|
+
</div>
|
|
57
|
+
</div>
|
|
58
|
+
</div>
|
|
59
|
+
<button class="toolbar__filter toolbar__filter--view" data-action="toggle-view-mode" aria-label="Switch display mode" title="Switch display mode">
|
|
60
|
+
<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
|
|
61
|
+
<rect x="4" y="5" width="6" height="6" rx="1.5" fill="none" stroke="currentColor" stroke-width="2" />
|
|
62
|
+
<rect x="14" y="5" width="6" height="6" rx="1.5" fill="none" stroke="currentColor" stroke-width="2" />
|
|
63
|
+
<rect x="4" y="13" width="6" height="6" rx="1.5" fill="none" stroke="currentColor" stroke-width="2" />
|
|
64
|
+
<rect x="14" y="13" width="6" height="6" rx="1.5" fill="none" stroke="currentColor" stroke-width="2" />
|
|
65
|
+
</svg>
|
|
66
|
+
</button>
|
|
67
|
+
<button class="toolbar__filter" id="activity-toggle" aria-label="Toggle activity" aria-pressed="false" title="Toggle activity">
|
|
68
|
+
<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M4 12h4l2.2-5 3.6 10 2.2-5H20" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" /></svg>
|
|
69
|
+
</button>
|
|
70
|
+
<button class="toolbar__filter" id="attention-toggle" aria-label="Show attention required" aria-pressed="false" title="Show attention required">
|
|
71
|
+
<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M12 4l8 14H4z" fill="none" stroke="currentColor" stroke-width="2" /><path d="M12 9v4" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" /><circle cx="12" cy="17" r="1" fill="currentColor" /></svg>
|
|
72
|
+
</button>
|
|
73
|
+
<button class="toolbar__filter" id="header-logics-insights" aria-label="Open corpus insights" title="Open corpus insights">
|
|
74
|
+
<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false"><circle cx="12" cy="12" r="8" fill="none" stroke="currentColor" stroke-width="2" /><path d="M12 10.5v6" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" /><circle cx="12" cy="7.5" r="1" fill="currentColor" /></svg>
|
|
75
|
+
</button>
|
|
76
|
+
</div>
|
|
77
|
+
<div class="toolbar__search">
|
|
78
|
+
<input id="search-input" class="toolbar__search-input" type="search" placeholder="Search docs" aria-label="Search docs" />
|
|
79
|
+
</div>
|
|
80
|
+
</div>
|
|
81
|
+
<div class="filter-panel viewer-filter-panel" id="filter-panel" aria-hidden="true" role="group" aria-label="View controls" hidden>
|
|
82
|
+
<div class="viewer-filter-panel__column viewer-filter-panel__column--focus">
|
|
83
|
+
<div class="viewer-filter-panel__section">
|
|
84
|
+
<label class="viewer-filter-select">
|
|
85
|
+
<span class="viewer-filter-panel__label">Focus</span>
|
|
86
|
+
<select data-viewer-filter-group="focus" aria-label="Corpus focus">
|
|
87
|
+
<option value="active">Active work</option>
|
|
88
|
+
<option value="all">All docs</option>
|
|
89
|
+
<option value="blocked">Blocked</option>
|
|
90
|
+
<option value="needs-promotion">Needs promotion</option>
|
|
91
|
+
<option value="recent">Recently changed</option>
|
|
92
|
+
</select>
|
|
93
|
+
</label>
|
|
94
|
+
</div>
|
|
95
|
+
</div>
|
|
96
|
+
<div class="viewer-filter-panel__column viewer-filter-panel__column--narrow">
|
|
97
|
+
<div class="viewer-filter-panel__section">
|
|
98
|
+
<label class="viewer-filter-select">
|
|
99
|
+
<span class="viewer-filter-panel__label">Type</span>
|
|
100
|
+
<select data-viewer-filter-group="type" aria-label="Document type">
|
|
101
|
+
<option value="all">All</option>
|
|
102
|
+
<option value="workflow">Workflow</option>
|
|
103
|
+
<option value="request">Requests</option>
|
|
104
|
+
<option value="backlog">Backlog</option>
|
|
105
|
+
<option value="task">Tasks</option>
|
|
106
|
+
<option value="companion">Companions</option>
|
|
107
|
+
</select>
|
|
108
|
+
</label>
|
|
109
|
+
</div>
|
|
110
|
+
<div class="viewer-filter-panel__section">
|
|
111
|
+
<label class="viewer-filter-select">
|
|
112
|
+
<span class="viewer-filter-panel__label">Status</span>
|
|
113
|
+
<select data-viewer-filter-group="status" aria-label="Status">
|
|
114
|
+
<option value="any">Any</option>
|
|
115
|
+
<option value="ready">Ready</option>
|
|
116
|
+
<option value="in-progress">In progress</option>
|
|
117
|
+
<option value="blocked">Blocked</option>
|
|
118
|
+
<option value="done">Done</option>
|
|
119
|
+
</select>
|
|
120
|
+
</label>
|
|
121
|
+
</div>
|
|
122
|
+
<div class="viewer-filter-panel__section">
|
|
123
|
+
<label class="viewer-filter-select">
|
|
124
|
+
<span class="viewer-filter-panel__label">Relations</span>
|
|
125
|
+
<select data-viewer-filter-group="relation" aria-label="Relationships">
|
|
126
|
+
<option value="any">Any</option>
|
|
127
|
+
<option value="unlinked">Unlinked</option>
|
|
128
|
+
<option value="linked">Linked</option>
|
|
129
|
+
<option value="needs-promotion">Needs promotion</option>
|
|
130
|
+
</select>
|
|
131
|
+
</label>
|
|
132
|
+
</div>
|
|
133
|
+
<div class="viewer-filter-panel__section">
|
|
134
|
+
<label class="viewer-filter-select">
|
|
135
|
+
<span class="viewer-filter-panel__label">Activity</span>
|
|
136
|
+
<select data-viewer-filter-group="activity" aria-label="Activity">
|
|
137
|
+
<option value="any">Any</option>
|
|
138
|
+
<option value="recent">Recent</option>
|
|
139
|
+
<option value="stale">Stale</option>
|
|
140
|
+
</select>
|
|
141
|
+
</label>
|
|
142
|
+
</div>
|
|
143
|
+
</div>
|
|
144
|
+
<div class="viewer-filter-panel__column viewer-filter-panel__column--organize">
|
|
145
|
+
<div class="viewer-filter-panel__section">
|
|
146
|
+
<div class="viewer-filter-panel__label">Organize</div>
|
|
147
|
+
<label class="toolbar__select-label">Group <select id="group-by"><option value="stage">Type</option><option value="status">Status</option><option value="theme">Theme</option></select></label>
|
|
148
|
+
<label class="toolbar__select-label">Sort <select id="sort-by"><option value="updated-desc">Recently updated</option><option value="progress-desc">Progress</option><option value="status-asc">Status</option><option value="title-asc">Title</option></select></label>
|
|
149
|
+
<div class="viewer-filter-count" id="viewer-filter-count">Default view</div>
|
|
150
|
+
<button class="btn" id="filter-reset" type="button">Clear filters</button>
|
|
151
|
+
</div>
|
|
152
|
+
</div>
|
|
153
|
+
<div class="viewer-filter-native" hidden>
|
|
154
|
+
<input type="checkbox" id="hide-complete" />
|
|
155
|
+
<input type="checkbox" id="hide-processed-requests" />
|
|
156
|
+
<input type="checkbox" id="hide-spec" />
|
|
157
|
+
<input type="checkbox" id="show-companion-docs" />
|
|
158
|
+
<input type="checkbox" id="hide-empty-columns" />
|
|
159
|
+
</div>
|
|
160
|
+
</div>
|
|
161
|
+
</div>
|
|
162
|
+
|
|
163
|
+
<div class="help-banner" id="help-banner" hidden>
|
|
164
|
+
<span id="help-banner-copy"></span>
|
|
165
|
+
<button class="help-banner__dismiss" id="help-banner-dismiss" type="button" aria-label="Dismiss">x</button>
|
|
166
|
+
</div>
|
|
167
|
+
|
|
168
|
+
<div class="viewer-update" id="viewer-update" hidden>
|
|
169
|
+
<span id="viewer-update-copy"></span>
|
|
170
|
+
<code id="viewer-update-command"></code>
|
|
171
|
+
</div>
|
|
172
|
+
|
|
173
|
+
<div class="layout" id="layout">
|
|
174
|
+
<main class="layout__main" id="layout-main">
|
|
175
|
+
<div class="board" id="board"></div>
|
|
176
|
+
<aside class="activity-panel" id="activity-panel" aria-label="Activity"></aside>
|
|
177
|
+
</main>
|
|
178
|
+
<div class="splitter" id="splitter" role="separator" aria-orientation="horizontal" aria-label="Resize details panel" tabindex="0"></div>
|
|
179
|
+
<aside class="details" id="details">
|
|
180
|
+
<div class="details__header">
|
|
181
|
+
<div>
|
|
182
|
+
<div class="details__eyebrow" id="details-eyebrow">Selection</div>
|
|
183
|
+
<div class="details__header-title" id="details-title">Details</div>
|
|
184
|
+
</div>
|
|
185
|
+
<button class="details__toggle" id="details-toggle" aria-label="Collapse details" aria-expanded="true" title="Collapse details">
|
|
186
|
+
<svg class="details__toggle-icon" viewBox="0 0 24 24" aria-hidden="true" focusable="false">
|
|
187
|
+
<path d="M6 9l6 6 6-6" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" />
|
|
188
|
+
</svg>
|
|
189
|
+
</button>
|
|
190
|
+
</div>
|
|
191
|
+
<div class="details__body" id="details-body">
|
|
192
|
+
<div class="details__empty">Select a card to see details.</div>
|
|
193
|
+
</div>
|
|
194
|
+
<div class="details__actions">
|
|
195
|
+
<button class="btn" data-action="promote" disabled title="Read-only in local viewer">Promote</button>
|
|
196
|
+
<button class="btn" data-action="mark-done" disabled title="Read-only in local viewer">Done</button>
|
|
197
|
+
<button class="btn" data-action="mark-obsolete" disabled title="Read-only in local viewer">Obsolete</button>
|
|
198
|
+
<button class="btn" data-action="change-status" disabled title="Read-only in local viewer">Status</button>
|
|
199
|
+
<button class="btn" data-action="open" disabled title="Open markdown preview">Open</button>
|
|
200
|
+
<button class="btn" data-action="read" disabled title="Open markdown preview">Read</button>
|
|
201
|
+
<button class="btn" data-viewer-action="edit-document" disabled title="Select a document to edit">Edit document</button>
|
|
202
|
+
</div>
|
|
203
|
+
</aside>
|
|
204
|
+
</div>
|
|
205
|
+
|
|
206
|
+
<section class="viewer-document" id="viewer-document" hidden aria-label="Markdown document" aria-live="polite">
|
|
207
|
+
<div class="viewer-document__header">
|
|
208
|
+
<div>
|
|
209
|
+
<div class="viewer-document__eyebrow">Read-only preview</div>
|
|
210
|
+
<div class="viewer-document__title" id="viewer-document-title">Document</div>
|
|
211
|
+
</div>
|
|
212
|
+
<button class="btn" id="viewer-document-close" type="button">Close</button>
|
|
213
|
+
</div>
|
|
214
|
+
<div class="viewer-document__content markdown-preview" id="viewer-document-content"></div>
|
|
215
|
+
</section>
|
|
216
|
+
|
|
217
|
+
<script src="/vendor/mermaid.min.js"></script>
|
|
218
|
+
<script src="/browser-host.js"></script>
|
|
219
|
+
<script src="/media/logicsModel.js"></script>
|
|
220
|
+
<script src="/media/uiStatus.js"></script>
|
|
221
|
+
<script src="/media/harnessApi.js"></script>
|
|
222
|
+
<script src="/media/layoutController.js"></script>
|
|
223
|
+
<script src="/media/hostApiContract.js"></script>
|
|
224
|
+
<script src="/media/hostApi.js"></script>
|
|
225
|
+
<script src="/media/toolsPanelLayout.js"></script>
|
|
226
|
+
<script src="/media/webviewSelectors.js"></script>
|
|
227
|
+
<script src="/media/webviewPersistence.js"></script>
|
|
228
|
+
<script src="/media/webviewChrome.js"></script>
|
|
229
|
+
<script src="/media/renderBoardApp.js"></script>
|
|
230
|
+
<script src="/media/renderDetails.js"></script>
|
|
231
|
+
<script src="/media/renderMarkdown.js"></script>
|
|
232
|
+
<script src="/media/mainCore.js"></script>
|
|
233
|
+
<script src="/media/mainInteractionHandlers.js"></script>
|
|
234
|
+
<script src="/media/mainInteractions.js"></script>
|
|
235
|
+
<script src="/media/mainApp.js"></script>
|
|
236
|
+
</body>
|
|
237
|
+
</html>
|
|
@@ -0,0 +1,433 @@
|
|
|
1
|
+
.viewer-topbar {
|
|
2
|
+
flex: 0 0 auto;
|
|
3
|
+
display: flex;
|
|
4
|
+
align-items: center;
|
|
5
|
+
justify-content: space-between;
|
|
6
|
+
gap: 16px;
|
|
7
|
+
padding: 10px 12px;
|
|
8
|
+
border-bottom: 1px solid var(--vscode-panel-border, #333333);
|
|
9
|
+
background: var(--vscode-editorWidget-background, #202020);
|
|
10
|
+
color: var(--vscode-foreground, #d4d4d4);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.viewer-topbar__title {
|
|
14
|
+
font-size: 14px;
|
|
15
|
+
font-weight: 700;
|
|
16
|
+
line-height: 1.25;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.viewer-topbar__meta {
|
|
20
|
+
margin-top: 2px;
|
|
21
|
+
font-size: 12px;
|
|
22
|
+
color: var(--vscode-descriptionForeground, #9da5b4);
|
|
23
|
+
overflow-wrap: anywhere;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.viewer-topbar__actions {
|
|
27
|
+
display: flex;
|
|
28
|
+
align-items: center;
|
|
29
|
+
gap: 8px;
|
|
30
|
+
flex: 0 0 auto;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.viewer-update {
|
|
34
|
+
flex: 0 0 auto;
|
|
35
|
+
display: flex;
|
|
36
|
+
align-items: center;
|
|
37
|
+
gap: 10px;
|
|
38
|
+
padding: 8px 12px;
|
|
39
|
+
border-bottom: 1px solid rgba(245, 158, 11, 0.4);
|
|
40
|
+
background: rgba(245, 158, 11, 0.12);
|
|
41
|
+
color: var(--vscode-foreground, #d4d4d4);
|
|
42
|
+
font-size: 12px;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.viewer-update[hidden] {
|
|
46
|
+
display: none !important;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.viewer-update code {
|
|
50
|
+
padding: 2px 6px;
|
|
51
|
+
border-radius: 4px;
|
|
52
|
+
background: var(--vscode-textCodeBlock-background, #111111);
|
|
53
|
+
color: var(--vscode-textPreformat-foreground, #d7ba7d);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.viewer-filter-panel {
|
|
57
|
+
display: grid;
|
|
58
|
+
grid-template-columns: minmax(220px, 0.9fr) minmax(360px, 1.6fr) minmax(180px, 0.7fr);
|
|
59
|
+
align-items: start;
|
|
60
|
+
gap: 14px;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.viewer-filter-panel[hidden] {
|
|
64
|
+
display: none !important;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.viewer-filter-panel__column {
|
|
68
|
+
display: grid;
|
|
69
|
+
gap: 12px;
|
|
70
|
+
min-width: 0;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.viewer-filter-panel__column--narrow {
|
|
74
|
+
grid-template-columns: repeat(2, minmax(150px, 1fr));
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.viewer-filter-panel__section {
|
|
78
|
+
display: grid;
|
|
79
|
+
align-content: start;
|
|
80
|
+
gap: 8px;
|
|
81
|
+
min-width: 0;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.viewer-filter-panel__label {
|
|
85
|
+
color: var(--vscode-descriptionForeground, #9da5b4);
|
|
86
|
+
font-size: 11px;
|
|
87
|
+
font-weight: 700;
|
|
88
|
+
text-transform: uppercase;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.viewer-filter-select {
|
|
92
|
+
display: grid;
|
|
93
|
+
gap: 6px;
|
|
94
|
+
min-width: 0;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.viewer-filter-select select {
|
|
98
|
+
width: 100%;
|
|
99
|
+
min-width: 0;
|
|
100
|
+
height: 30px;
|
|
101
|
+
border: 1px solid var(--vscode-panel-border, #333333);
|
|
102
|
+
border-radius: 6px;
|
|
103
|
+
background: var(--vscode-dropdown-background, var(--vscode-input-background, #1f1f1f));
|
|
104
|
+
color: var(--vscode-dropdown-foreground, var(--vscode-input-foreground, #e5e5e5));
|
|
105
|
+
padding: 0 8px;
|
|
106
|
+
font-size: 12px;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.viewer-filter-select select:focus-visible {
|
|
110
|
+
outline: 1px solid var(--vscode-focusBorder, var(--vscode-button-background, #0e639c));
|
|
111
|
+
outline-offset: 1px;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
.viewer-filter-count {
|
|
115
|
+
min-height: 18px;
|
|
116
|
+
color: var(--vscode-descriptionForeground, #9da5b4);
|
|
117
|
+
font-size: 12px;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.viewer-filter-native[hidden] {
|
|
121
|
+
display: none !important;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
@media (max-width: 980px) {
|
|
125
|
+
.viewer-filter-panel {
|
|
126
|
+
grid-template-columns: 1fr;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
.viewer-filter-panel__column--narrow {
|
|
130
|
+
grid-template-columns: repeat(2, minmax(140px, 1fr));
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
@media (max-width: 560px) {
|
|
135
|
+
.viewer-filter-panel__column--narrow {
|
|
136
|
+
grid-template-columns: 1fr;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
.viewer-document {
|
|
141
|
+
position: fixed;
|
|
142
|
+
inset: 64px 20px 20px;
|
|
143
|
+
z-index: 40;
|
|
144
|
+
display: grid;
|
|
145
|
+
grid-template-rows: auto minmax(0, 1fr);
|
|
146
|
+
overflow: hidden;
|
|
147
|
+
border: 1px solid var(--vscode-panel-border, #333333);
|
|
148
|
+
border-radius: 8px;
|
|
149
|
+
background: var(--vscode-editor-background, #1e1e1e);
|
|
150
|
+
color: var(--vscode-foreground, #d4d4d4);
|
|
151
|
+
box-shadow: 0 20px 60px rgba(0, 0, 0, 0.45);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
.viewer-document[hidden] {
|
|
155
|
+
display: none !important;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
.viewer-document__header {
|
|
159
|
+
display: flex;
|
|
160
|
+
align-items: flex-start;
|
|
161
|
+
justify-content: space-between;
|
|
162
|
+
gap: 12px;
|
|
163
|
+
padding: 12px 14px;
|
|
164
|
+
border-bottom: 1px solid var(--vscode-panel-border, #333333);
|
|
165
|
+
background: var(--vscode-sideBar-background, #252526);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
.viewer-document__eyebrow {
|
|
169
|
+
font-size: 11px;
|
|
170
|
+
font-weight: 700;
|
|
171
|
+
letter-spacing: 0.08em;
|
|
172
|
+
text-transform: uppercase;
|
|
173
|
+
color: var(--vscode-descriptionForeground, #9da5b4);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
.viewer-document__title {
|
|
177
|
+
margin-top: 3px;
|
|
178
|
+
font-size: 15px;
|
|
179
|
+
font-weight: 700;
|
|
180
|
+
overflow-wrap: anywhere;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
.viewer-document__content {
|
|
184
|
+
min-height: 0;
|
|
185
|
+
overflow: auto;
|
|
186
|
+
padding: 18px 22px 28px;
|
|
187
|
+
line-height: 1.55;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
.viewer-document__content h1,
|
|
191
|
+
.viewer-document__content h2,
|
|
192
|
+
.viewer-document__content h3,
|
|
193
|
+
.viewer-document__content h4 {
|
|
194
|
+
line-height: 1.2;
|
|
195
|
+
margin: 1.35em 0 0.55em;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
.viewer-document__content h1:first-child,
|
|
199
|
+
.viewer-document__content h2:first-child,
|
|
200
|
+
.viewer-document__content h3:first-child {
|
|
201
|
+
margin-top: 0;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
.viewer-document__content pre {
|
|
205
|
+
overflow-x: auto;
|
|
206
|
+
padding: 12px;
|
|
207
|
+
border-radius: 6px;
|
|
208
|
+
background: var(--vscode-textCodeBlock-background, #111111);
|
|
209
|
+
border: 1px solid var(--vscode-panel-border, #333333);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
.viewer-document__content code {
|
|
213
|
+
font-family: var(--vscode-editor-font-family, ui-monospace, SFMono-Regular, Menlo, monospace);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
.viewer-document__content p code,
|
|
217
|
+
.viewer-document__content li code {
|
|
218
|
+
padding: 1px 5px;
|
|
219
|
+
border-radius: 4px;
|
|
220
|
+
background: var(--vscode-textCodeBlock-background, #111111);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
.viewer-document__content a {
|
|
224
|
+
color: var(--vscode-textLink-foreground, #4ea1ff);
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
.viewer-document__content .markdown-preview__diagram {
|
|
228
|
+
display: grid;
|
|
229
|
+
gap: 10px;
|
|
230
|
+
margin: 16px 0;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
.viewer-document__content .markdown-preview__diagram svg {
|
|
234
|
+
max-width: 100%;
|
|
235
|
+
height: auto;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
.viewer-document__content .markdown-preview__mermaid-fallback {
|
|
239
|
+
padding: 10px 12px;
|
|
240
|
+
border: 1px solid rgba(248, 113, 113, 0.35);
|
|
241
|
+
border-radius: 6px;
|
|
242
|
+
background: rgba(220, 38, 38, 0.12);
|
|
243
|
+
color: var(--vscode-errorForeground, #f87171);
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
.viewer-document__content .markdown-preview__table-wrap {
|
|
247
|
+
overflow-x: auto;
|
|
248
|
+
margin: 16px 0;
|
|
249
|
+
border: 1px solid var(--vscode-panel-border, #333333);
|
|
250
|
+
border-radius: 6px;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
.viewer-document__content table {
|
|
254
|
+
width: 100%;
|
|
255
|
+
min-width: 520px;
|
|
256
|
+
border-collapse: collapse;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
.viewer-document__content th,
|
|
260
|
+
.viewer-document__content td {
|
|
261
|
+
padding: 8px 10px;
|
|
262
|
+
border-bottom: 1px solid var(--vscode-panel-border, #333333);
|
|
263
|
+
text-align: left;
|
|
264
|
+
vertical-align: top;
|
|
265
|
+
overflow-wrap: anywhere;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
.viewer-document__content th {
|
|
269
|
+
background: var(--vscode-sideBar-background, #252526);
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
.viewer-health {
|
|
273
|
+
display: grid;
|
|
274
|
+
gap: 14px;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
.viewer-insights {
|
|
278
|
+
display: grid;
|
|
279
|
+
gap: 16px;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
.viewer-insights__summary,
|
|
283
|
+
.viewer-insights__grid {
|
|
284
|
+
display: grid;
|
|
285
|
+
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
286
|
+
gap: 10px;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
.viewer-insights__card {
|
|
290
|
+
border: 1px solid var(--vscode-panel-border, #333333);
|
|
291
|
+
border-radius: 6px;
|
|
292
|
+
padding: 10px;
|
|
293
|
+
background: var(--vscode-sideBar-background, #252526);
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
.viewer-insights__label {
|
|
297
|
+
color: var(--vscode-descriptionForeground, #9da5b4);
|
|
298
|
+
font-size: 11px;
|
|
299
|
+
font-weight: 700;
|
|
300
|
+
text-transform: uppercase;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
.viewer-insights__value {
|
|
304
|
+
margin-top: 4px;
|
|
305
|
+
font-size: 20px;
|
|
306
|
+
font-weight: 700;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
.viewer-insights__section {
|
|
310
|
+
display: grid;
|
|
311
|
+
gap: 8px;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
.viewer-insights__list {
|
|
315
|
+
display: grid;
|
|
316
|
+
gap: 6px;
|
|
317
|
+
margin: 0;
|
|
318
|
+
padding: 0;
|
|
319
|
+
list-style: none;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
.viewer-insights__item {
|
|
323
|
+
display: flex;
|
|
324
|
+
justify-content: space-between;
|
|
325
|
+
gap: 12px;
|
|
326
|
+
padding: 8px 10px;
|
|
327
|
+
border: 1px solid var(--vscode-panel-border, #333333);
|
|
328
|
+
border-radius: 6px;
|
|
329
|
+
background: var(--vscode-editorWidget-background, #202020);
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
.viewer-health__summary {
|
|
333
|
+
display: grid;
|
|
334
|
+
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
335
|
+
gap: 10px;
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
.viewer-health__card {
|
|
339
|
+
border: 1px solid var(--vscode-panel-border, #333333);
|
|
340
|
+
border-radius: 6px;
|
|
341
|
+
padding: 10px;
|
|
342
|
+
background: var(--vscode-sideBar-background, #252526);
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
.viewer-health__label {
|
|
346
|
+
font-size: 11px;
|
|
347
|
+
color: var(--vscode-descriptionForeground, #9da5b4);
|
|
348
|
+
text-transform: uppercase;
|
|
349
|
+
letter-spacing: 0.06em;
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
.viewer-health__value {
|
|
353
|
+
margin-top: 4px;
|
|
354
|
+
font-size: 22px;
|
|
355
|
+
font-weight: 700;
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
.viewer-health__section {
|
|
359
|
+
display: grid;
|
|
360
|
+
gap: 8px;
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
.viewer-health__heading {
|
|
364
|
+
margin: 0;
|
|
365
|
+
font-size: 14px;
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
.viewer-health__list {
|
|
369
|
+
display: grid;
|
|
370
|
+
gap: 8px;
|
|
371
|
+
margin: 0;
|
|
372
|
+
padding: 0;
|
|
373
|
+
list-style: none;
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
.viewer-health__issue {
|
|
377
|
+
display: grid;
|
|
378
|
+
gap: 5px;
|
|
379
|
+
border: 1px solid var(--vscode-panel-border, #333333);
|
|
380
|
+
border-radius: 6px;
|
|
381
|
+
padding: 10px;
|
|
382
|
+
background: var(--vscode-editorWidget-background, #202020);
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
.viewer-health__path {
|
|
386
|
+
display: inline;
|
|
387
|
+
width: fit-content;
|
|
388
|
+
border: none;
|
|
389
|
+
background: transparent;
|
|
390
|
+
color: var(--vscode-textLink-foreground, #4ea1ff);
|
|
391
|
+
padding: 0;
|
|
392
|
+
font: inherit;
|
|
393
|
+
cursor: pointer;
|
|
394
|
+
text-align: left;
|
|
395
|
+
overflow-wrap: anywhere;
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
.viewer-health__meta {
|
|
399
|
+
color: var(--vscode-descriptionForeground, #9da5b4);
|
|
400
|
+
font-size: 12px;
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
.viewer-health__empty {
|
|
404
|
+
color: var(--vscode-descriptionForeground, #9da5b4);
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
@media (max-width: 700px) {
|
|
408
|
+
.viewer-topbar {
|
|
409
|
+
align-items: stretch;
|
|
410
|
+
flex-direction: column;
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
.viewer-topbar__actions {
|
|
414
|
+
width: 100%;
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
.viewer-topbar__actions .btn {
|
|
418
|
+
flex: 1 1 0;
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
.viewer-document {
|
|
422
|
+
inset: 10px;
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
.viewer-insights__summary,
|
|
426
|
+
.viewer-insights__grid {
|
|
427
|
+
grid-template-columns: 1fr;
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
.viewer-health__summary {
|
|
431
|
+
grid-template-columns: 1fr;
|
|
432
|
+
}
|
|
433
|
+
}
|