@cr8rcho/alkahest 0.1.22 → 0.1.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/dashboard.html +45 -34
- package/package.json +1 -1
|
@@ -1,45 +1,56 @@
|
|
|
1
1
|
<!doctype html>
|
|
2
|
-
<html lang="en" data-theme="
|
|
2
|
+
<html lang="en" data-theme="dark">
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="utf-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
6
|
<title>Alkahest — Product Map</title>
|
|
7
|
+
<!-- Inter (UI) + Geist Mono (code/targets), matching the hosted viewer. Degrades to the
|
|
8
|
+
system stack offline (the fallbacks below). -->
|
|
9
|
+
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
10
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
11
|
+
<link href="https://fonts.googleapis.com/css2?family=Geist+Mono:wght@400;500&family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet" />
|
|
7
12
|
<style>
|
|
8
|
-
/*
|
|
13
|
+
/* Linear palette — monotone base + indigo brand accent, dark by default (matches the hosted
|
|
14
|
+
viewer). --accent is monotone emphasis (route text, hover borders); --primary is the indigo
|
|
15
|
+
brand (#6366f1) used for the selection stroke — one mid-tone value for both themes. */
|
|
9
16
|
:root {
|
|
10
17
|
--bg: #ffffff;
|
|
11
|
-
--panel: #
|
|
18
|
+
--panel: #f4f5f6;
|
|
12
19
|
--panel-soft: #ffffff;
|
|
13
|
-
--line: #
|
|
14
|
-
--ink: #
|
|
15
|
-
--muted: #
|
|
20
|
+
--line: #e8e9eb;
|
|
21
|
+
--ink: #08090a;
|
|
22
|
+
--muted: #62666d;
|
|
16
23
|
--node-fill: #ffffff; /* screen */
|
|
17
|
-
--node-stroke: #
|
|
18
|
-
--node-ink: #
|
|
19
|
-
--res-fill: #
|
|
20
|
-
--entry: #
|
|
21
|
-
--accent: #
|
|
22
|
-
--
|
|
24
|
+
--node-stroke: #d0d2d6;
|
|
25
|
+
--node-ink: #08090a;
|
|
26
|
+
--res-fill: #f0f1f2; /* resource */
|
|
27
|
+
--entry: #27a644;
|
|
28
|
+
--accent: #08090a;
|
|
29
|
+
--primary: #6366f1;
|
|
30
|
+
--edge: #c4c6cc;
|
|
23
31
|
}
|
|
24
32
|
html[data-theme="dark"] {
|
|
25
|
-
--bg: #
|
|
26
|
-
--panel: #
|
|
27
|
-
--panel-soft: #
|
|
28
|
-
--line: #
|
|
29
|
-
--ink: #
|
|
30
|
-
--muted: #
|
|
31
|
-
--node-fill: #
|
|
32
|
-
--node-stroke: #
|
|
33
|
-
--node-ink: #
|
|
34
|
-
--res-fill: #
|
|
35
|
-
--entry: #
|
|
36
|
-
--accent: #
|
|
37
|
-
--
|
|
33
|
+
--bg: #08090a;
|
|
34
|
+
--panel: #161718;
|
|
35
|
+
--panel-soft: #1c1d1f;
|
|
36
|
+
--line: #23252a;
|
|
37
|
+
--ink: #f7f8f8;
|
|
38
|
+
--muted: #8a8f98;
|
|
39
|
+
--node-fill: #1c1d1f;
|
|
40
|
+
--node-stroke: #383b3f;
|
|
41
|
+
--node-ink: #f7f8f8;
|
|
42
|
+
--res-fill: #26282c;
|
|
43
|
+
--entry: #27a644;
|
|
44
|
+
--accent: #f7f8f8;
|
|
45
|
+
--primary: #6366f1;
|
|
46
|
+
--edge: #44474d;
|
|
38
47
|
}
|
|
39
48
|
* { box-sizing: border-box; }
|
|
40
49
|
html, body { margin: 0; height: 100%; }
|
|
41
50
|
body {
|
|
42
|
-
font: 13px/1.5 ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
|
|
51
|
+
font: 13px/1.5 "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
|
|
52
|
+
-webkit-font-smoothing: antialiased;
|
|
53
|
+
-moz-osx-font-smoothing: grayscale;
|
|
43
54
|
background: var(--bg);
|
|
44
55
|
color: var(--ink);
|
|
45
56
|
display: flex;
|
|
@@ -68,8 +79,8 @@
|
|
|
68
79
|
[data-theme="light"] #theme-toggle .i-sun { display: none; } [data-theme="light"] #theme-toggle .i-moon { display: block; }
|
|
69
80
|
/* Action cluster pinned to the right: Display · Fit · theme */
|
|
70
81
|
.toolbar-actions { margin-left: auto; display: inline-flex; align-items: center; gap: 8px; }
|
|
71
|
-
/* Brand matches the web service header (account/landing):
|
|
72
|
-
.brand { font-size:
|
|
82
|
+
/* Brand matches the web service header (account/landing): 13px / 600 / -0.025em */
|
|
83
|
+
.brand { font-size: 13px; font-weight: 600; letter-spacing: -0.025em; white-space: nowrap; }
|
|
73
84
|
.brand .sub { color: var(--muted); font-weight: 400; font-size: 13px; letter-spacing: 0; margin-left: 6px; }
|
|
74
85
|
.counts { color: var(--muted); white-space: nowrap; }
|
|
75
86
|
/* compact counts (mobile only): node-shape icons + number — ○ screen / ▢ resource, matching the legend */
|
|
@@ -117,26 +128,26 @@
|
|
|
117
128
|
-webkit-overflow-scrolling: touch;
|
|
118
129
|
}
|
|
119
130
|
#panel h2 { margin: 0 0 2px; font-size: 16px; }
|
|
120
|
-
#panel .route { color: var(--accent); font-family: ui-monospace, monospace; font-size: 12px; margin-bottom: 12px; word-break: break-all; }
|
|
121
|
-
#panel .src { color: var(--muted); font-family: ui-monospace, monospace; font-size: 11px; margin-bottom: 14px; word-break: break-all; }
|
|
131
|
+
#panel .route { color: var(--accent); font-family: "Geist Mono", ui-monospace, monospace; font-size: 12px; margin-bottom: 12px; word-break: break-all; }
|
|
132
|
+
#panel .src { color: var(--muted); font-family: "Geist Mono", ui-monospace, monospace; font-size: 11px; margin-bottom: 14px; word-break: break-all; }
|
|
122
133
|
#panel section { margin-bottom: 16px; }
|
|
123
134
|
#panel h3 { font-size: 11px; text-transform: uppercase; letter-spacing: 0.6px; color: var(--muted); margin: 0 0 7px; }
|
|
124
135
|
#panel ul { list-style: none; margin: 0; padding: 0; }
|
|
125
136
|
#panel li { padding: 5px 8px; border: 1px solid var(--line); border-radius: 6px; margin-bottom: 5px; background: var(--panel-soft); }
|
|
126
137
|
#panel li.clickable { cursor: pointer; }
|
|
127
138
|
#panel li.clickable:hover { border-color: var(--accent); }
|
|
128
|
-
#panel .tag { font-family: ui-monospace, monospace; font-size: 10px; color: var(--muted); }
|
|
129
|
-
#panel .lineno { float: right; color: var(--muted); font-family: ui-monospace, monospace; font-size: 10px; }
|
|
139
|
+
#panel .tag { font-family: "Geist Mono", ui-monospace, monospace; font-size: 10px; color: var(--muted); }
|
|
140
|
+
#panel .lineno { float: right; color: var(--muted); font-family: "Geist Mono", ui-monospace, monospace; font-size: 10px; }
|
|
130
141
|
#panel .empty { color: var(--muted); font-style: italic; }
|
|
131
142
|
#panel .prd h4, #panel .prd h5, #panel .prd h6 { margin: 12px 0 4px; font-size: 12px; font-weight: 700; color: var(--ink); text-transform: none; letter-spacing: 0; }
|
|
132
143
|
#panel .prd p { margin: 4px 0; }
|
|
133
144
|
#panel .prd ul.md { list-style: none; margin: 4px 0; padding: 0; }
|
|
134
145
|
#panel .prd ul.md li { border: none; background: none; padding: 1px 0; margin: 0; }
|
|
135
|
-
#panel .prd code { font-family: ui-monospace, monospace; font-size: 11px; background: var(--panel-soft); padding: 0 3px; border-radius: 3px; }
|
|
146
|
+
#panel .prd code { font-family: "Geist Mono", ui-monospace, monospace; font-size: 11px; background: var(--panel-soft); padding: 0 3px; border-radius: 3px; }
|
|
136
147
|
.hint { color: var(--muted); }
|
|
137
148
|
.node text { font-size: 11px; fill: var(--node-ink); pointer-events: none; paint-order: stroke; stroke: var(--bg); stroke-width: 3px; }
|
|
138
149
|
.node circle, .node rect, .node path { cursor: pointer; stroke: var(--node-stroke); stroke-width: 1.5px; }
|
|
139
|
-
.node.selected circle, .node.selected rect, .node.selected path { stroke: var(--
|
|
150
|
+
.node.selected circle, .node.selected rect, .node.selected path { stroke: var(--primary); stroke-width: 2.5px; }
|
|
140
151
|
.node.dim { opacity: 0.2; }
|
|
141
152
|
/* Hover preview (only when nothing is selected): highlight connected edges/neighbors by color only (keep width) */
|
|
142
153
|
.node.hl circle, .node.hl rect, .node.hl path { stroke: var(--ink); }
|