@w6w/ui 0.0.0-stage → 0.1.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/CHANGELOG.md +68 -0
- package/LICENSE +21 -0
- package/README.md +275 -2
- package/dist/ActionTestForm.d.ts +76 -0
- package/dist/AddConnectionModal.d.ts +24 -0
- package/dist/AppPicker.d.ts +83 -0
- package/dist/CodeBlock-CZu4TFSi.cjs +15 -0
- package/dist/CodeBlock-CZu4TFSi.cjs.map +1 -0
- package/dist/CodeBlock-Dot3Pd7P.js +2889 -0
- package/dist/CodeBlock-Dot3Pd7P.js.map +1 -0
- package/dist/CodeBlock.d.ts +65 -0
- package/dist/CodeEditor.d.ts +42 -0
- package/dist/ConfirmModal-8avl9Nv8.cjs +11 -0
- package/dist/ConfirmModal-8avl9Nv8.cjs.map +1 -0
- package/dist/ConfirmModal-CD-P8mhN.js +6335 -0
- package/dist/ConfirmModal-CD-P8mhN.js.map +1 -0
- package/dist/Copyable-1niV9gUa.js +771 -0
- package/dist/Copyable-1niV9gUa.js.map +1 -0
- package/dist/Copyable-CYZU1o4X.cjs +2 -0
- package/dist/Copyable-CYZU1o4X.cjs.map +1 -0
- package/dist/JsonEditor.d.ts +60 -0
- package/dist/NodeConfigForm.d.ts +70 -0
- package/dist/ParamsForm.d.ts +56 -0
- package/dist/PropertyEntryForm.d.ts +56 -0
- package/dist/RetryPolicyFields.d.ts +18 -0
- package/dist/StepBuilderModal.d.ts +375 -0
- package/dist/TriggerFillForm.d.ts +52 -0
- package/dist/WaitEditor.d.ts +6 -0
- package/dist/WorkflowFlowEditor.d.ts +119 -0
- package/dist/YamlEditor.d.ts +46 -0
- package/dist/app-categories.d.ts +38 -0
- package/dist/app-pages.d.ts +111 -0
- package/dist/code.cjs +2 -0
- package/dist/code.cjs.map +1 -0
- package/dist/code.d.ts +29 -0
- package/dist/code.mjs +8 -0
- package/dist/code.mjs.map +1 -0
- package/dist/components/ApiCallsPanel.d.ts +41 -0
- package/dist/components/AppIcon.d.ts +25 -0
- package/dist/components/AuthFieldsForm.d.ts +22 -0
- package/dist/components/Combobox.d.ts +24 -0
- package/dist/components/ConfirmModal.d.ts +33 -0
- package/dist/components/Copyable.d.ts +51 -0
- package/dist/components/CopyableText.d.ts +40 -0
- package/dist/components/DeleteButton.d.ts +16 -0
- package/dist/components/EditButton.d.ts +10 -0
- package/dist/components/ExecutionDetail.d.ts +70 -0
- package/dist/components/ExecutionFilters.d.ts +59 -0
- package/dist/components/ExecutionList.d.ts +60 -0
- package/dist/components/ExecutionLogPanel.d.ts +98 -0
- package/dist/components/ExecutionStats.d.ts +47 -0
- package/dist/components/ExpressionEditorModal.d.ts +42 -0
- package/dist/components/ExpressionInput.d.ts +36 -0
- package/dist/components/ExpressionOptions.d.ts +185 -0
- package/dist/components/HealthStatusPill.d.ts +25 -0
- package/dist/components/HistoryTimeline.d.ts +56 -0
- package/dist/components/Icon.d.ts +34 -0
- package/dist/components/IconButton.d.ts +60 -0
- package/dist/components/InfoTip.d.ts +15 -0
- package/dist/components/InternalIcon.d.ts +19 -0
- package/dist/components/ListItem.d.ts +25 -0
- package/dist/components/Modal.d.ts +29 -0
- package/dist/components/RepoSyncIndicator.d.ts +29 -0
- package/dist/components/ResolvedParams.d.ts +31 -0
- package/dist/components/ServerResources.d.ts +47 -0
- package/dist/components/StepStatusPill.d.ts +51 -0
- package/dist/components/UptimeStrip.d.ts +56 -0
- package/dist/components/execution-format.d.ts +24 -0
- package/dist/components/expression-dom.d.ts +154 -0
- package/dist/components/expression-template.d.ts +86 -0
- package/dist/components/history-scale.d.ts +33 -0
- package/dist/components/icons.d.ts +41 -0
- package/dist/components/resolved-clip.d.ts +42 -0
- package/dist/components/server-resources-format.d.ts +68 -0
- package/dist/components/server-resources.fixture.d.ts +9 -0
- package/dist/components/use-copy.d.ts +14 -0
- package/dist/createW6WApi.d.ts +31 -0
- package/dist/flow-connect.d.ts +138 -0
- package/dist/flow-fanout.d.ts +15 -0
- package/dist/flow-types.d.ts +356 -0
- package/dist/flow-utils.d.ts +284 -0
- package/dist/flow.cjs +3 -0
- package/dist/flow.cjs.map +1 -0
- package/dist/flow.d.ts +24 -0
- package/dist/flow.mjs +1978 -0
- package/dist/flow.mjs.map +1 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +94 -0
- package/dist/index.mjs +1812 -0
- package/dist/index.mjs.map +1 -0
- package/dist/oauth-popup.d.ts +17 -0
- package/dist/output-shape.d.ts +58 -0
- package/dist/provider.d.ts +421 -0
- package/dist/resolve-params.d.ts +112 -0
- package/dist/resolved-json.d.ts +21 -0
- package/dist/run-visuals.d.ts +90 -0
- package/dist/step-preview-state.d.ts +143 -0
- package/dist/theme.d.ts +32 -0
- package/dist/trigger-fields.d.ts +56 -0
- package/dist/types.d.ts +413 -0
- package/dist/use-app-action-defs.d.ts +7 -0
- package/dist/use-enter-submit.d.ts +23 -0
- package/dist/use-seed-sources.d.ts +16 -0
- package/package.json +112 -3
- package/src/code.css +561 -0
- package/src/styles/_buttons.scss +38 -0
- package/src/styles/_chips.scss +210 -0
- package/src/styles/_code.scss +139 -0
- package/src/styles/_copyable.scss +147 -0
- package/src/styles/_data-vars.scss +38 -0
- package/src/styles/_execution-history.scss +282 -0
- package/src/styles/_execution-log.scss +178 -0
- package/src/styles/_expression-field.scss +65 -0
- package/src/styles/_expression-inline.scss +63 -0
- package/src/styles/_expression-modal.scss +292 -0
- package/src/styles/_fields.scss +161 -0
- package/src/styles/_flow.scss +217 -0
- package/src/styles/_fx.scss +158 -0
- package/src/styles/_health.scss +46 -0
- package/src/styles/_history-timeline.scss +156 -0
- package/src/styles/_icon-button.scss +22 -0
- package/src/styles/_icon.scss +15 -0
- package/src/styles/_icons.scss +31 -0
- package/src/styles/_incoming-state.scss +46 -0
- package/src/styles/_info-tip.scss +9 -0
- package/src/styles/_layout.scss +6 -0
- package/src/styles/_lists.scss +64 -0
- package/src/styles/_modal.scss +125 -0
- package/src/styles/_multiselect.scss +69 -0
- package/src/styles/_repo-sync-indicator.scss +99 -0
- package/src/styles/_scale.scss +70 -0
- package/src/styles/_sections.scss +36 -0
- package/src/styles/_server-resources.scss +163 -0
- package/src/styles/_step-builder.scss +376 -0
- package/src/styles/_step-config.scss +195 -0
- package/src/styles/_tabs.scss +54 -0
- package/src/styles/_tester.scss +111 -0
- package/src/styles/_tokens.scss +160 -0
- package/src/styles/_uptime.scss +61 -0
- package/src/styles.css +4894 -0
- package/src/styles.scss +61 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/* Material-style multi-select: chips live INSIDE a single input-like box,
|
|
2
|
+
followed by the dropdown which reads as the trailing placeholder. */
|
|
3
|
+
.w6w-multiselect {
|
|
4
|
+
display: flex;
|
|
5
|
+
flex-wrap: wrap;
|
|
6
|
+
align-items: center;
|
|
7
|
+
gap: var(--w6w-sp-1-5);
|
|
8
|
+
background: var(--w6w-panel-2);
|
|
9
|
+
border: 1px solid var(--w6w-border);
|
|
10
|
+
border-radius: 8px;
|
|
11
|
+
padding: 5px var(--w6w-sp-2);
|
|
12
|
+
min-height: 38px;
|
|
13
|
+
}
|
|
14
|
+
.w6w-multiselect:focus-within {
|
|
15
|
+
border-color: var(--w6w-accent);
|
|
16
|
+
}
|
|
17
|
+
.w6w-multiselect.is-readonly {
|
|
18
|
+
opacity: 0.7;
|
|
19
|
+
}
|
|
20
|
+
/* The add-dropdown blends into the box (no border/background) — compound
|
|
21
|
+
selector so it beats the global `.w6w-field select` styling. */
|
|
22
|
+
.w6w-field .w6w-multiselect-add,
|
|
23
|
+
.w6w-multiselect .w6w-multiselect-add {
|
|
24
|
+
flex: 1 1 90px;
|
|
25
|
+
min-width: 90px;
|
|
26
|
+
border: none;
|
|
27
|
+
background: transparent;
|
|
28
|
+
color: var(--w6w-muted);
|
|
29
|
+
font-size: var(--w6w-fs-sm);
|
|
30
|
+
font-family: inherit;
|
|
31
|
+
padding: var(--w6w-sp-0-5) 0;
|
|
32
|
+
outline: none;
|
|
33
|
+
cursor: pointer;
|
|
34
|
+
}
|
|
35
|
+
.w6w-multiselect .w6w-multiselect-add:disabled {
|
|
36
|
+
cursor: default;
|
|
37
|
+
opacity: 0.6;
|
|
38
|
+
}
|
|
39
|
+
/* A selected value, rendered as a filled chip inside the box. */
|
|
40
|
+
.w6w-chip {
|
|
41
|
+
display: inline-flex;
|
|
42
|
+
align-items: center;
|
|
43
|
+
gap: var(--w6w-sp-1);
|
|
44
|
+
background: var(--w6w-panel);
|
|
45
|
+
border: 1px solid var(--w6w-border);
|
|
46
|
+
border-radius: 6px;
|
|
47
|
+
padding: var(--w6w-sp-0-5) var(--w6w-sp-1) var(--w6w-sp-0-5) var(--w6w-sp-2);
|
|
48
|
+
font-size: 13px;
|
|
49
|
+
line-height: 1.4;
|
|
50
|
+
color: var(--w6w-text);
|
|
51
|
+
}
|
|
52
|
+
.w6w-chip-x {
|
|
53
|
+
display: inline-flex;
|
|
54
|
+
align-items: center;
|
|
55
|
+
justify-content: center;
|
|
56
|
+
width: 16px;
|
|
57
|
+
height: 16px;
|
|
58
|
+
border: none;
|
|
59
|
+
border-radius: 4px;
|
|
60
|
+
background: transparent;
|
|
61
|
+
color: var(--w6w-muted);
|
|
62
|
+
font-size: var(--w6w-fs-sm);
|
|
63
|
+
line-height: 1;
|
|
64
|
+
cursor: pointer;
|
|
65
|
+
}
|
|
66
|
+
.w6w-chip-x:hover {
|
|
67
|
+
background: var(--w6w-border);
|
|
68
|
+
color: var(--w6w-text);
|
|
69
|
+
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
.w6w-repo-sync {
|
|
2
|
+
position: relative;
|
|
3
|
+
display: inline-flex;
|
|
4
|
+
}
|
|
5
|
+
.w6w-repo-sync-trigger {
|
|
6
|
+
display: inline-flex;
|
|
7
|
+
align-items: center;
|
|
8
|
+
gap: var(--w6w-sp-2);
|
|
9
|
+
padding: var(--w6w-sp-1-5) var(--w6w-sp-3);
|
|
10
|
+
border: 1px solid var(--w6w-border);
|
|
11
|
+
border-radius: 999px;
|
|
12
|
+
background: var(--w6w-panel-2);
|
|
13
|
+
color: var(--w6w-text);
|
|
14
|
+
font-size: var(--w6w-fs-sm);
|
|
15
|
+
cursor: pointer;
|
|
16
|
+
}
|
|
17
|
+
.w6w-repo-sync-trigger:hover {
|
|
18
|
+
border-color: var(--w6w-accent);
|
|
19
|
+
}
|
|
20
|
+
.w6w-repo-sync-icon {
|
|
21
|
+
position: relative;
|
|
22
|
+
display: inline-flex;
|
|
23
|
+
}
|
|
24
|
+
.w6w-repo-sync-spin {
|
|
25
|
+
position: absolute;
|
|
26
|
+
bottom: calc(-1 * var(--w6w-sp-0-5));
|
|
27
|
+
right: calc(-1 * var(--w6w-sp-0-5));
|
|
28
|
+
width: 10px;
|
|
29
|
+
height: 10px;
|
|
30
|
+
background: var(--w6w-panel-2);
|
|
31
|
+
border-radius: 50%;
|
|
32
|
+
animation: w6w-spin 0.8s linear infinite;
|
|
33
|
+
}
|
|
34
|
+
@keyframes w6w-spin {
|
|
35
|
+
to {
|
|
36
|
+
transform: rotate(360deg);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
@media (prefers-reduced-motion: reduce) {
|
|
40
|
+
.w6w-repo-sync-spin {
|
|
41
|
+
animation: none;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
.w6w-repo-sync-branch {
|
|
45
|
+
font-weight: var(--w6w-fw-medium);
|
|
46
|
+
}
|
|
47
|
+
.w6w-repo-sync-sha {
|
|
48
|
+
color: var(--w6w-muted);
|
|
49
|
+
font-size: var(--w6w-fs-xs);
|
|
50
|
+
font-family: var(--w6w-font-mono);
|
|
51
|
+
}
|
|
52
|
+
.w6w-repo-sync-menu {
|
|
53
|
+
position: absolute;
|
|
54
|
+
top: calc(100% + var(--w6w-sp-1-5));
|
|
55
|
+
right: 0;
|
|
56
|
+
min-width: 220px;
|
|
57
|
+
background: var(--w6w-panel);
|
|
58
|
+
border: 1px solid var(--w6w-border);
|
|
59
|
+
border-radius: var(--w6w-radius);
|
|
60
|
+
padding: var(--w6w-sp-1-5);
|
|
61
|
+
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.35);
|
|
62
|
+
z-index: 30;
|
|
63
|
+
display: flex;
|
|
64
|
+
flex-direction: column;
|
|
65
|
+
gap: var(--w6w-sp-0-5);
|
|
66
|
+
}
|
|
67
|
+
.w6w-repo-sync-detail {
|
|
68
|
+
display: flex;
|
|
69
|
+
flex-direction: column;
|
|
70
|
+
gap: var(--w6w-sp-0-5);
|
|
71
|
+
padding: var(--w6w-sp-2) var(--w6w-sp-2-5);
|
|
72
|
+
color: var(--w6w-muted);
|
|
73
|
+
font-size: var(--w6w-fs-xs);
|
|
74
|
+
}
|
|
75
|
+
.w6w-repo-sync-detail > :first-child {
|
|
76
|
+
color: var(--w6w-text);
|
|
77
|
+
font-size: var(--w6w-fs-sm);
|
|
78
|
+
font-weight: var(--w6w-fw-medium);
|
|
79
|
+
}
|
|
80
|
+
.w6w-repo-sync-item {
|
|
81
|
+
display: flex;
|
|
82
|
+
align-items: center;
|
|
83
|
+
width: 100%;
|
|
84
|
+
text-align: left;
|
|
85
|
+
background: transparent;
|
|
86
|
+
border: none;
|
|
87
|
+
border-radius: 8px;
|
|
88
|
+
padding: var(--w6w-sp-2) var(--w6w-sp-2-5);
|
|
89
|
+
color: var(--w6w-text);
|
|
90
|
+
font-size: var(--w6w-fs-sm);
|
|
91
|
+
cursor: pointer;
|
|
92
|
+
}
|
|
93
|
+
.w6w-repo-sync-item:hover:not(:disabled) {
|
|
94
|
+
background: var(--w6w-panel-2);
|
|
95
|
+
}
|
|
96
|
+
.w6w-repo-sync-item:disabled {
|
|
97
|
+
cursor: default;
|
|
98
|
+
opacity: 0.6;
|
|
99
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* @w6w/ui — the spacing / typography scale.
|
|
3
|
+
*
|
|
4
|
+
* Values are MIRRORED, not invented, from `packages/frontend/packages/web`'s
|
|
5
|
+
* `src/styles/global.css:83-130` — that file is the canonical reference (it
|
|
6
|
+
* arrived at the same 4px base independently); this block copies its
|
|
7
|
+
* `--sp-*`/`--fs-*`/`--fw-*`/`--lh-*`/`--font-*` values byte-for-byte under the
|
|
8
|
+
* `--w6w-*` namespace this package already uses for every other token.
|
|
9
|
+
* `--fs-hero`'s `clamp()` stays `web`-only (a marketing-page concern; `ui` has
|
|
10
|
+
* no hero). Colour tokens, `--radius*`, `--shadow-*` and `--transition-fast`
|
|
11
|
+
* are NOT part of this scale — see `_tokens.scss`.
|
|
12
|
+
*
|
|
13
|
+
* HALF-STEPS (`--w6w-sp-0-5` / `--w6w-sp-1-5` / `--w6w-sp-2-5`) are `ui`-only
|
|
14
|
+
* additions on top of `web`'s set — `web` has none. The rule that keeps this a
|
|
15
|
+
* system rather than a free-for-all: whole steps for new code; a half-step is
|
|
16
|
+
* only for preserving an existing measured value that does not sit on a 4px
|
|
17
|
+
* step. Parity with `web` is therefore DIRECTIONAL — `ui` ⊇ `web` on the
|
|
18
|
+
* shared key set (every `web` token here has a byte-identical `ui` counterpart;
|
|
19
|
+
* `ui` additionally declares the three half-steps `web` does not).
|
|
20
|
+
*
|
|
21
|
+
* One `:where(:root)` block, not colour's three-way light / prefers-color-scheme /
|
|
22
|
+
* [data-theme] split — the scale is not theme-dependent, so a single specificity-0
|
|
23
|
+
* block covers every mode. Positioning this partial's `@use` line immediately
|
|
24
|
+
* after `styles/tokens` (see `styles.scss`) is a readability convention, not a
|
|
25
|
+
* cascade constraint: CSS custom properties resolve at computed-value time, so
|
|
26
|
+
* definition order relative to consumption order does not matter here, unlike
|
|
27
|
+
* `_tokens.scss`'s internal prefers-color-scheme / [data-theme] ordering, which
|
|
28
|
+
* IS load-bearing.
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
:where(:root) {
|
|
32
|
+
/* Spacing — 4px ramp. Values mirror frontend/web's --sp-* verbatim. */
|
|
33
|
+
--w6w-sp-1: 4px; --w6w-sp-2: 8px; --w6w-sp-3: 12px; --w6w-sp-4: 16px;
|
|
34
|
+
--w6w-sp-5: 20px; --w6w-sp-6: 24px; --w6w-sp-8: 32px; --w6w-sp-10: 40px;
|
|
35
|
+
--w6w-sp-12: 48px; --w6w-sp-16: 64px; --w6w-sp-20: 80px;
|
|
36
|
+
|
|
37
|
+
/* Half-steps — ui-only, see the decision above. */
|
|
38
|
+
--w6w-sp-0-5: 2px; --w6w-sp-1-5: 6px; --w6w-sp-2-5: 10px;
|
|
39
|
+
|
|
40
|
+
/* Type ramp — rem, role names mirror frontend/web's --fs-*. */
|
|
41
|
+
--w6w-fs-xs: 0.75rem; --w6w-fs-sm: 0.875rem; --w6w-fs-base: 1rem;
|
|
42
|
+
--w6w-fs-lg: 1.125rem; --w6w-fs-xl: 1.25rem; --w6w-fs-2xl: 1.5rem;
|
|
43
|
+
--w6w-fs-3xl: 2rem;
|
|
44
|
+
|
|
45
|
+
--w6w-fw-regular: 400; --w6w-fw-medium: 500; --w6w-fw-semibold: 600; --w6w-fw-bold: 700;
|
|
46
|
+
|
|
47
|
+
--w6w-lh-tight: 1.2; --w6w-lh-normal: 1.5; --w6w-lh-relaxed: 1.7;
|
|
48
|
+
|
|
49
|
+
--w6w-font-sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
|
|
50
|
+
--w6w-font-mono: ui-monospace, SFMono-Regular, Menlo, monospace;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/*
|
|
54
|
+
* Breakpoints — Sass variables, NOT CSS custom properties.
|
|
55
|
+
*
|
|
56
|
+
* `@media (min-width: var(--w6w-bp-md))` is invalid in every browser: a media
|
|
57
|
+
* query condition cannot read a custom property. So these live as Sass
|
|
58
|
+
* variables instead, resolved before the browser ever sees the stylesheet.
|
|
59
|
+
* `!default` lets a Sass consumer override one:
|
|
60
|
+
*
|
|
61
|
+
* @use "@w6w/ui/styles/scale" with ($w6w-bp-md: 960px);
|
|
62
|
+
*
|
|
63
|
+
* `ui` itself consumes none of these — it deliberately ships no layout media
|
|
64
|
+
* queries (the host owns page layout; `ui` owns component internals). They
|
|
65
|
+
* exist purely so a consumer stops inventing its own breakpoint values (seven
|
|
66
|
+
* uncoordinated ones exist across the four repos today).
|
|
67
|
+
*/
|
|
68
|
+
$w6w-bp-sm: 640px !default;
|
|
69
|
+
$w6w-bp-md: 900px !default;
|
|
70
|
+
$w6w-bp-lg: 1200px !default;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
.w6w-section {
|
|
2
|
+
border: 1px solid var(--w6w-border);
|
|
3
|
+
border-radius: 8px;
|
|
4
|
+
padding: var(--w6w-sp-2) var(--w6w-sp-2-5);
|
|
5
|
+
}
|
|
6
|
+
.w6w-section > summary {
|
|
7
|
+
cursor: pointer;
|
|
8
|
+
display: flex;
|
|
9
|
+
flex-direction: column;
|
|
10
|
+
gap: var(--w6w-sp-0-5);
|
|
11
|
+
}
|
|
12
|
+
.w6w-section-title {
|
|
13
|
+
color: var(--w6w-text);
|
|
14
|
+
font-weight: var(--w6w-fw-semibold);
|
|
15
|
+
}
|
|
16
|
+
.w6w-section-subtitle {
|
|
17
|
+
color: var(--w6w-muted);
|
|
18
|
+
font-size: 0.8em;
|
|
19
|
+
}
|
|
20
|
+
.w6w-section-body {
|
|
21
|
+
margin-top: var(--w6w-sp-2);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/* Inline "Test run" block in the step builder (sits above the footer). */
|
|
25
|
+
.w6w-steptest {
|
|
26
|
+
display: flex;
|
|
27
|
+
flex-direction: column;
|
|
28
|
+
gap: var(--w6w-sp-2);
|
|
29
|
+
flex-shrink: 0;
|
|
30
|
+
}
|
|
31
|
+
.w6w-steptest-bar {
|
|
32
|
+
display: flex;
|
|
33
|
+
align-items: center;
|
|
34
|
+
gap: var(--w6w-sp-2-5);
|
|
35
|
+
}
|
|
36
|
+
/* A labeled test-run output block (Result vs Console). */
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Server resources — the four presentational variants from
|
|
3
|
+
* `src/components/ServerResources.tsx` (card, small card, rail, badge).
|
|
4
|
+
*
|
|
5
|
+
* Spacing and type come from the `--w6w-sp-*` / `--w6w-fs-*` ramps only, so a
|
|
6
|
+
* host that re-tunes the scale re-tunes these too; box geometry (heights,
|
|
7
|
+
* track widths, radii) is deliberately literal, as everywhere else in this
|
|
8
|
+
* package. The only colour that is not a themed token reference is the
|
|
9
|
+
* sparkline stroke, which is `--w6w-accent` in both modes.
|
|
10
|
+
*
|
|
11
|
+
* The rail variant is the size-sensitive one: it lands in a ~200 px sidebar
|
|
12
|
+
* column, so every part of it is `min-width: 0`-safe and the sparkline is
|
|
13
|
+
* scaled by `preserveAspectRatio="none"` rather than given an intrinsic width.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
.w6w-server-resources {
|
|
17
|
+
display: flex;
|
|
18
|
+
flex-direction: column;
|
|
19
|
+
gap: var(--w6w-sp-2);
|
|
20
|
+
min-width: 0;
|
|
21
|
+
color: var(--w6w-text);
|
|
22
|
+
font-size: var(--w6w-fs-sm);
|
|
23
|
+
line-height: var(--w6w-lh-normal);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.w6w-server-resources__title {
|
|
27
|
+
margin: 0;
|
|
28
|
+
font-size: var(--w6w-fs-base);
|
|
29
|
+
font-weight: var(--w6w-fw-semibold);
|
|
30
|
+
line-height: var(--w6w-lh-tight);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.w6w-server-resources__rows {
|
|
34
|
+
display: flex;
|
|
35
|
+
flex-direction: column;
|
|
36
|
+
gap: var(--w6w-sp-2);
|
|
37
|
+
margin: 0;
|
|
38
|
+
padding: 0;
|
|
39
|
+
list-style: none;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.w6w-server-resources__row {
|
|
43
|
+
display: grid;
|
|
44
|
+
grid-template-columns: minmax(0, 1fr) auto;
|
|
45
|
+
align-items: baseline;
|
|
46
|
+
gap: var(--w6w-sp-1) var(--w6w-sp-2);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.w6w-server-resources__label {
|
|
50
|
+
color: var(--w6w-muted);
|
|
51
|
+
font-size: var(--w6w-fs-xs);
|
|
52
|
+
letter-spacing: 0.04em;
|
|
53
|
+
text-transform: uppercase;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.w6w-server-resources__value {
|
|
57
|
+
font-family: var(--w6w-font-mono);
|
|
58
|
+
font-size: var(--w6w-fs-sm);
|
|
59
|
+
font-variant-numeric: tabular-nums;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/* The line itself. `stroke` is repeated as a property (not only as the
|
|
63
|
+
polyline's presentation attribute) so a host stylesheet can re-colour it
|
|
64
|
+
without reaching into the SVG. */
|
|
65
|
+
.w6w-server-resources__spark {
|
|
66
|
+
grid-column: 1 / -1;
|
|
67
|
+
display: block;
|
|
68
|
+
width: 100%;
|
|
69
|
+
height: 28px;
|
|
70
|
+
stroke: var(--w6w-accent);
|
|
71
|
+
stroke-width: 2;
|
|
72
|
+
stroke-linejoin: round;
|
|
73
|
+
stroke-linecap: round;
|
|
74
|
+
overflow: visible;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.w6w-server-resources__meta {
|
|
78
|
+
margin: 0;
|
|
79
|
+
color: var(--w6w-muted);
|
|
80
|
+
font-family: var(--w6w-font-mono);
|
|
81
|
+
font-size: var(--w6w-fs-xs);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/* --- card ---------------------------------------------------------------- */
|
|
85
|
+
|
|
86
|
+
.w6w-server-resources--card {
|
|
87
|
+
gap: var(--w6w-sp-3);
|
|
88
|
+
padding: var(--w6w-sp-4);
|
|
89
|
+
border: 1px solid var(--w6w-border);
|
|
90
|
+
border-radius: var(--w6w-radius);
|
|
91
|
+
background: var(--w6w-panel);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/* --- small card ---------------------------------------------------------- */
|
|
95
|
+
|
|
96
|
+
.w6w-server-resources--small {
|
|
97
|
+
gap: var(--w6w-sp-1-5);
|
|
98
|
+
padding: var(--w6w-sp-3);
|
|
99
|
+
border: 1px solid var(--w6w-border);
|
|
100
|
+
border-radius: var(--w6w-radius);
|
|
101
|
+
background: var(--w6w-panel);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.w6w-server-resources--small .w6w-server-resources__title {
|
|
105
|
+
font-size: var(--w6w-fs-sm);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/* --- rail ---------------------------------------------------------------- */
|
|
109
|
+
|
|
110
|
+
.w6w-server-resources--rail {
|
|
111
|
+
gap: var(--w6w-sp-1);
|
|
112
|
+
padding: var(--w6w-sp-2);
|
|
113
|
+
border: 1px solid var(--w6w-border);
|
|
114
|
+
border-radius: var(--w6w-radius);
|
|
115
|
+
background: var(--w6w-panel);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.w6w-server-resources__rail-row {
|
|
119
|
+
display: grid;
|
|
120
|
+
grid-template-columns: auto minmax(0, 1fr);
|
|
121
|
+
align-items: baseline;
|
|
122
|
+
gap: 0 var(--w6w-sp-2);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.w6w-server-resources__rail-row .w6w-server-resources__value {
|
|
126
|
+
text-align: right;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
.w6w-server-resources__rail-row .w6w-server-resources__spark {
|
|
130
|
+
height: 20px;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
.w6w-server-resources__expand {
|
|
134
|
+
width: 100%;
|
|
135
|
+
padding: var(--w6w-sp-1) var(--w6w-sp-2);
|
|
136
|
+
border: 1px solid var(--w6w-border);
|
|
137
|
+
border-radius: var(--w6w-radius);
|
|
138
|
+
background: var(--w6w-panel-2);
|
|
139
|
+
color: var(--w6w-muted);
|
|
140
|
+
font-family: inherit;
|
|
141
|
+
font-size: var(--w6w-fs-xs);
|
|
142
|
+
cursor: pointer;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
.w6w-server-resources__expand:hover {
|
|
146
|
+
color: var(--w6w-text);
|
|
147
|
+
border-color: var(--w6w-accent);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/* --- badge --------------------------------------------------------------- */
|
|
151
|
+
|
|
152
|
+
.w6w-server-resources--badge {
|
|
153
|
+
flex-direction: row;
|
|
154
|
+
gap: var(--w6w-sp-2);
|
|
155
|
+
align-items: center;
|
|
156
|
+
padding: 0 var(--w6w-sp-2);
|
|
157
|
+
border: 1px solid var(--w6w-border);
|
|
158
|
+
border-radius: 999px;
|
|
159
|
+
background: var(--w6w-panel-2);
|
|
160
|
+
font-family: var(--w6w-font-mono);
|
|
161
|
+
font-size: var(--w6w-fs-xs);
|
|
162
|
+
white-space: nowrap;
|
|
163
|
+
}
|