signalk-container-helper 0.1.0 → 0.2.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 ADDED
@@ -0,0 +1,25 @@
1
+ # v0.2.1
2
+
3
+ Docs-only release.
4
+
5
+ - **README: "ESM plugins must build an ESM remote"** — Signal K injects each configurator panel's script tag based on the plugin's package.json `type` field, so `"type": "module"` plugins (like this library, and therefore most of its consumers) must build their panel as an ESM Module Federation container (`experiments.outputModule` + `output.module` + `library: { type: "module" }`); the classic `var` remote the CommonJS reference plugins use loads silently into module scope and fails at panel-open time with the misleading _'Module "…" is not available. Make sure the webapp is installed.'_ The new section documents the server's injection logic, both mismatch failure modes, the webpack recipe, a `get`/`init` verification one-liner, and links [signalk-piper](https://github.com/hoeken/signalk-piper) as a working ESM example — plus a matching panel-conventions bullet, and the "no changes to the standard webpack config" claim is now scoped to loaders
6
+
7
+ # v0.2.0
8
+
9
+ - **New `signalk-container-helper/ui` entrypoint** — browser-side React building blocks for plugin config panels, packaging the pieces the reference plugins (`signalk-grafana`, `signalk-questdb`, `mayara-server-signalk-plugin`) had each been hand-copying: the shared inline-style vocabulary (`panelStyles`, `stateColors`), components (`StatusCard`, `VersionSelect`, `UpdateControls`, `Button`, `CollapsibleSection`, and friends), fetch-and-poll hooks (`useStatusPoll`, `useVersions`, `useUpdateFlow`) with self-scheduling polls and stale-response drops, version-dropdown view logic (`deriveVersionsView`) that handles both structured and legacy `/api/versions` shapes and falls back to the running tag so a rate-limited GitHub fetch never blanks the select, and `formatUpdateMessage` typed against `UpdateCheckResult` to match `registerUpdateRoutes`' contract
10
+ - The UI entry ships as tsc-compiled `React.createElement` ESM (no JSX) so panel webpack builds that exclude `node_modules` from babel-loader can bundle it directly; `react` (≥ 17) is a new **optional** peer dependency that resolves to the Admin UI's Module Federation shared singleton — the main entry remains Node-only and zero-dependency
11
+ - **Type mirror** — added `ContainerConfig.devices` and `ContainerConfig.groupAdd`, mirroring signalk-container 1.24.0 (older manager versions silently ignore both fields)
12
+
13
+ # v0.1.0
14
+
15
+ Initial release — a typed, zero-dependency helper library for Signal K plugin developers whose plugins run containers through the [signalk-container](https://github.com/dirkwa/signalk-container) plugin, packaging the integration patterns extracted from `signalk-backup`, `mayara-server-signalk-plugin`, `signalk-doctor`, and `signalk-updater`.
16
+
17
+ - **`ManagedContainer`** — the full owned-container lifecycle: image-tag validation, `ensureRunning`, waiting for the app inside the container to answer HTTP, update-detection registration, `/api/update/check` + `/api/update/apply` routes, log access, and clean shutdown
18
+ - **`AdoptedContainer`** — update registration and update checks for containers the plugin doesn't own
19
+ - **Manager discovery** — `getContainerManager` plus `waitForContainerManager`, a two-phase wait (manager present → runtime settled) that keeps the two failure modes distinct in error reporting
20
+ - **Declarative update sources** — `buildVersionSource` resolves a GitHub-releases, Docker-Hub-tags, or custom spec against the manager's update service
21
+ - **HTTP utilities** — `fetchWithTimeout`, `waitForHttpReady` (poll until 2xx or deadline), and `probeHttpHealth` (retrying liveness probe with slow-response detection that never throws)
22
+ - **Startup helper** — `startSafely` wraps async plugin startup so failures are caught and reported even though Signal K doesn't await `start()`
23
+ - **Typed errors** — `ContainerHelperError` with stable error codes, plus the `errMsg` and `isValidImageTag` guards
24
+ - **Type mirror of signalk-container's public API** — `ContainerManagerApi`, `ContainerConfig`, `UpdateServiceApi`, and friends, verified against `signalk-container/types` (≥ 1.23.2) by a contract test so the mirror can't silently drift
25
+ - Ships as an ES module and requires Node ≥ 24
package/README.md CHANGED
@@ -11,6 +11,10 @@ mounting `/api/update/check` + `apply` routes, and stopping cleanly. This librar
11
11
  packages those patterns — extracted from `signalk-backup`, `mayara-server-signalk-plugin`,
12
12
  `signalk-doctor`, and `signalk-updater` — into a small, typed, zero-dependency API.
13
13
 
14
+ It also ships the shared **React config-panel building blocks** those plugins
15
+ hand-copied (container status card, image-version dropdown, update controls) as
16
+ a separate browser-side entrypoint, [`signalk-container-helper/ui`](#config-panel-ui-signalk-container-helperui).
17
+
14
18
  See [SPEC.md](SPEC.md) for the full design rationale.
15
19
 
16
20
  ## Install
@@ -201,6 +205,230 @@ Why not `manager.getState()` for health? signalk-container namespace-prefixes th
201
205
  containers it manages (`sk-<name>`); externally-managed peers don't carry the prefix,
202
206
  so the manager can't see them — and "running" isn't "healthy" anyway.
203
207
 
208
+ ## Config-panel UI (`signalk-container-helper/ui`)
209
+
210
+ The reference plugins also share a hand-copied React config panel: a container
211
+ status card, an image-version dropdown, a check/apply update row, and the same
212
+ inline-style vocabulary. The `/ui` entrypoint packages those as reusable
213
+ components and hooks. It is a separate subpath export — the main entry stays
214
+ Node-only and zero-dependency; `/ui` needs `react` (an optional peer
215
+ dependency) and runs in the Signal K Admin UI page.
216
+
217
+ ### How it fits the standard panel build
218
+
219
+ Signal K loads plugin config panels as **webpack Module Federation remotes**
220
+ (`public/remoteEntry.js` exposing `./PluginConfigurationPanel`, with `react`
221
+ shared as a singleton). The standard webpack config runs `babel-loader` with
222
+ `exclude: /node_modules/`, so a library shipping raw JSX would break the
223
+ build. This entrypoint therefore ships **tsc-compiled `React.createElement`
224
+ JS (no JSX)** that webpack bundles directly, and its `import "react"` resolves
225
+ to the host Admin UI's shared React singleton. No loader changes are needed —
226
+ but the remote's output format must match your package's module type (next
227
+ section).
228
+
229
+ ```bash
230
+ npm install signalk-container-helper react
231
+ ```
232
+
233
+ (`react` can be a devDependency of your plugin — it is only used at bundle
234
+ time; at runtime the Admin UI provides the singleton.)
235
+
236
+ ### ESM plugins must build an ESM remote
237
+
238
+ The server injects each panel's script tag based on the **plugin's**
239
+ package.json `type` field:
240
+
241
+ ```js
242
+ moduleInfo.type === "module"
243
+ ? `<script type="module" src="/${moduleInfo.name}/remoteEntry.js"></script>`
244
+ : `<script src="/${moduleInfo.name}/remoteEntry.js"></script>`;
245
+ ```
246
+
247
+ The remote's output format must match, and the failure modes on a mismatch
248
+ are unhelpful, so get this right up front:
249
+
250
+ - **CommonJS plugin** (the reference plugins): the classic remote —
251
+ `library: { type: "var", name: "<name with [-@/] → _>" }` — which lands on
252
+ `window` when the plain script tag runs.
253
+ - **`"type": "module"` plugin** (likely yours — this library is ESM-only):
254
+ the Admin UI loads the panel with a dynamic `import()` and requires real
255
+ `get`/`init` module exports. A copied `var` remote loads silently into
256
+ module scope — no window global, no exports — and the panel dies with
257
+ _'Module "…" is not available. Make sure the webapp is installed.'_ even
258
+ though discovery and serving worked. Build an **ESM container** instead:
259
+
260
+ ```js
261
+ // webpack.config.cjs (an ESM package needs the .cjs extension, or an ESM config)
262
+ module.exports = {
263
+ // ...
264
+ experiments: { outputModule: true },
265
+ output: {
266
+ path: path.resolve(__dirname, "public"),
267
+ module: true,
268
+ clean: false,
269
+ },
270
+ plugins: [
271
+ new ModuleFederationPlugin({
272
+ name: "your_plugin_name",
273
+ library: { type: "module" }, // no global var name
274
+ filename: "remoteEntry.js",
275
+ exposes: {
276
+ "./PluginConfigurationPanel":
277
+ "./src/configpanel/PluginConfigurationPanel",
278
+ },
279
+ shared: {
280
+ react: { singleton: true, requiredVersion: "^19" },
281
+ "react-dom": { singleton: true, requiredVersion: "^19" },
282
+ },
283
+ }),
284
+ ],
285
+ };
286
+ ```
287
+
288
+ Chunks emit as `.mjs`; verify the container shape with
289
+ `node -e 'import("./public/remoteEntry.js").then((m) => console.log(typeof m.get, typeof m.init))'`
290
+ (both must print `function`).
291
+
292
+ The mismatch breaks in the other direction too: a CJS package emitting an ESM
293
+ remote throws a `SyntaxError` when the browser executes `export` syntax from
294
+ a plain script tag. A working ESM example is
295
+ [signalk-piper](https://github.com/hoeken/signalk-piper)'s
296
+ `webpack.config.cjs`.
297
+
298
+ ### Example panel
299
+
300
+ ```jsx
301
+ import React, { useState } from "react";
302
+ import {
303
+ panelStyles as S,
304
+ SectionTitle,
305
+ StatusCard,
306
+ FieldRow,
307
+ VersionSelect,
308
+ UpdateControls,
309
+ CollapsibleSection,
310
+ ActionStatus,
311
+ Button,
312
+ useStatusPoll,
313
+ useVersions,
314
+ } from "signalk-container-helper/ui";
315
+
316
+ const BASE = "/plugins/signalk-myservice";
317
+
318
+ export default function PluginConfigurationPanel({ configuration, save }) {
319
+ const cfg = configuration || {};
320
+ const [tag, setTag] = useState(cfg.imageTag || "latest");
321
+ const [saved, setSaved] = useState("");
322
+
323
+ // Polls /api/status every 5s; parses non-2xx bodies too (unhealthy
324
+ // responses often carry fields the panel must surface).
325
+ const { status, loading } = useStatusPoll(`${BASE}/api/status`, {
326
+ fallback: { status: "not_running" },
327
+ });
328
+
329
+ // Fetches /api/versions once; refresh() from the ↻ button. Accepts a bare
330
+ // VersionInfo[] or the structured { versions, sources } shape, and keeps
331
+ // the last known list when the fetch fails.
332
+ const versions = useVersions(`${BASE}/api/versions`);
333
+
334
+ const running = status?.status === "running";
335
+ return (
336
+ <div style={S.root}>
337
+ <SectionTitle>My Service Status</SectionTitle>
338
+ <StatusCard
339
+ icon="M"
340
+ iconBackground={running ? "#7c3aed" : undefined}
341
+ title="My Service"
342
+ meta={
343
+ loading ? "Checking..." : running ? status.endpoint : "Not running"
344
+ }
345
+ state={running ? "ok" : "error"}
346
+ link={running ? { href: status.url, label: "Open ↗" } : undefined}
347
+ />
348
+
349
+ {/* Talks to the routes ManagedContainer.registerUpdateRoutes mounts. */}
350
+ {running && (
351
+ <UpdateControls
352
+ checkUrl={`${BASE}/api/update/check`}
353
+ applyUrl={`${BASE}/api/update/apply`}
354
+ tag={tag}
355
+ />
356
+ )}
357
+
358
+ <SectionTitle>Settings</SectionTitle>
359
+ <FieldRow label="Image version">
360
+ <VersionSelect
361
+ value={tag}
362
+ onChange={setTag}
363
+ versions={versions.versions}
364
+ loading={versions.loading}
365
+ error={versions.versionsError}
366
+ onRefresh={versions.refresh}
367
+ />
368
+ </FieldRow>
369
+
370
+ <CollapsibleSection title="Advanced">
371
+ <FieldRow label="Extra arguments" hint="rarely needed">
372
+ <input style={S.input} />
373
+ </FieldRow>
374
+ </CollapsibleSection>
375
+
376
+ <ActionStatus message={saved} />
377
+ <div style={{ marginTop: 24 }}>
378
+ <Button
379
+ onClick={() => {
380
+ save({ ...cfg, imageTag: tag });
381
+ setSaved("Saved! Plugin will restart with new configuration.");
382
+ }}
383
+ >
384
+ Save Configuration
385
+ </Button>
386
+ </div>
387
+ </div>
388
+ );
389
+ }
390
+ ```
391
+
392
+ ### UI exports
393
+
394
+ | Export | Purpose |
395
+ | ---------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
396
+ | `panelStyles`, `stateColors` | The shared inline-style vocabulary (`root`, `card`, `fieldRow`, `input`, `warnBanner`, …). Inline styles are deliberate: a CSS file shipped by a federation remote would leak into or be clobbered by the host page. Spread-extend: `{ ...panelStyles.input, width: 300 }` |
397
+ | `StatusCard`, `StateDot` | Container status card (icon, title, meta, optional link, state dot) and the bare green/amber/red dot |
398
+ | `VersionSelect` | Image-version dropdown: floating tags (`latest`, `main`, …), pre-releases, stable releases, PR test images — and a synthetic `<tag> (running)` option when the current value isn't listed, so the controlled select never silently resets the running image |
399
+ | `UpdateControls` | Self-contained check/apply row against `registerUpdateRoutes`' contract (`GET check` → `UpdateCheckResult`, `POST apply` → `{ success, tag }`) |
400
+ | `SectionTitle`, `FieldRow`, `Hint`, `CollapsibleSection`, `Button`, `ActionStatus` | Form scaffolding: uppercase section headings, label + control + hint rows, collapsed-by-default advanced sections (keyboard-accessible), busy-aware buttons, the green/red outcome line |
401
+ | `useStatusPoll(url, opts)` | Self-scheduling status poll (no overlapping requests on slow hosts; stale responses dropped; body parsed on non-2xx too) |
402
+ | `useVersions(url)` | `/api/versions` fetch with rate-limit/offline error lines; preserves the last known list on failure |
403
+ | `useUpdateFlow({ checkUrl, applyUrl })` | The check/apply state machine behind `UpdateControls`, for custom layouts |
404
+ | `splitVersions`, `shownTags`, `runningTagFallback`, `deriveVersionsView` | The pure dropdown view-logic (unit-tested without a DOM) |
405
+ | `formatUpdateMessage`, `formatTimeAgo`, `formatNumber` | `UpdateCheckResult` → status line ("Update available: 1.0.0 → 1.1.0", "Offline — last checked 3h ago…"), relative timestamps, compact counts ("1.2K") |
406
+
407
+ ### Panel conventions the components encode
408
+
409
+ Adopt these even where you don't use the components:
410
+
411
+ - **A controlled `<select>` must always render its value.** If the running
412
+ tag isn't in the options (a GitHub rate limit hid it, or a pin fell out of
413
+ the top-N), inject a synthetic option — otherwise the browser shows the
414
+ first option and the next Save silently changes the running image.
415
+ - **Version lists degrade, never wipe.** On a failed `/api/versions` fetch,
416
+ keep showing the last known list with an explanatory error line.
417
+ - **Poll by self-scheduling, not `setInterval`.** On a slow host one response
418
+ can outlast the poll period; the next request must only start after the
419
+ previous one settled. Drop stale responses with a generation counter.
420
+ - **Parse status bodies on non-2xx.** Unhealthy responses (503) often carry
421
+ the very fields the operator needs to fix the problem.
422
+ - **Offline is a state, not an error.** Boats lose connectivity; show "last
423
+ checked 3h ago", don't paint the panel red.
424
+ - **Persist the requested tag, not the resolved one** after an update, so
425
+ floating tags like `latest` keep auto-tracking.
426
+ - **Match the remote's module format to your package's `type` field.** The
427
+ server injects `<script type="module">` for `"type": "module"` plugins and
428
+ a plain script tag otherwise; the wrong webpack `library` type fails only
429
+ at panel-open time, with a misleading "webapp is not installed" error (see
430
+ [ESM plugins must build an ESM remote](#esm-plugins-must-build-an-esm-remote)).
431
+
204
432
  ## API overview
205
433
 
206
434
  | Export | Purpose |
@@ -238,13 +466,14 @@ All errors thrown by the helpers have already been surfaced through
238
466
 
239
467
  The helpers feature-detect newer signalk-container capabilities:
240
468
 
241
- | Capability | Floor | Fallback behavior |
242
- | ----------------------------- | ------ | ------------------------------------------------------------ |
243
- | `whenReady()` | 1.6.0 | polls `getRuntime()` |
244
- | `getLogs()` | 1.7.0 | `getLogs()` returns `null` |
245
- | `recreate()` | 1.12.0 | self-heal skipped; updates use pull → remove → ensureRunning |
246
- | `ContainerConfig.healthcheck` | 1.14.0 | ignored by older versions |
247
- | `ContainerConfig.ulimits` | 1.17.0 | ignored by older versions |
469
+ | Capability | Floor | Fallback behavior |
470
+ | ------------------------------------------------------ | ------ | ------------------------------------------------------------ |
471
+ | `whenReady()` | 1.6.0 | polls `getRuntime()` |
472
+ | `getLogs()` | 1.7.0 | `getLogs()` returns `null` |
473
+ | `recreate()` | 1.12.0 | self-heal skipped; updates use pull → remove → ensureRunning |
474
+ | `ContainerConfig.healthcheck` | 1.14.0 | ignored by older versions |
475
+ | `ContainerConfig.ulimits` | 1.17.0 | ignored by older versions |
476
+ | `ContainerConfig.devices` / `ContainerConfig.groupAdd` | 1.24.0 | ignored by older versions |
248
477
 
249
478
  ## Design rules inherited from the reference plugins
250
479
 
@@ -277,11 +506,11 @@ This library is distributed through **npm with semver** — consumers `npm insta
277
506
 
278
507
  Releases are tag-triggered (`.github/workflows/publish.yml` fires on `v*` tags):
279
508
 
280
- 1. Bump `version` in `package.json`, commit, and merge to `master`.
281
- 2. Tag `vX.Y.Z` and push the tag.
282
- 3. The workflow builds, tests, creates a GitHub Release (auto-generated notes), and runs `npm publish --provenance` (prereleases `-beta.`/`-rc.` publish under the `beta` dist-tag).
509
+ 1. Bump `version` in `package.json`, add a matching `# vX.Y.Z` section to `CHANGELOG.md`, commit, and merge to `master`.
510
+ 2. Run `npm run release` — it tags `v<version>` and pushes the tag.
511
+ 3. The workflow extracts that version's CHANGELOG.md section as the GitHub Release notes (and fails if the section is missing), then builds, tests, and runs `npm publish --provenance` (tags containing `alpha`/`beta`/`rc` publish under the matching dist-tag).
283
512
 
284
- Publishing requires an `NPM_TOKEN` repository secret with publish rights to the package.
513
+ Publishing uses [npm trusted publishing](https://docs.npmjs.com/trusted-publishers) (OIDC) — no npm token secret, but the package must list this repo's workflow as a trusted publisher on npmjs.com.
285
514
 
286
515
  ## License
287
516
 
package/dist/types.d.ts CHANGED
@@ -11,7 +11,8 @@
11
11
  *
12
12
  * Source of truth: https://github.com/dirkwa/signalk-container
13
13
  * (src/types.ts and src/updates/types.ts)
14
- * Last synced against signalk-container: v1.22.0
14
+ * Last synced against signalk-container: v1.24.0 (pending release —
15
+ * `devices`/`groupAdd` are ahead of the newest published release, 1.23.2)
15
16
  * Supported baseline: v1.6.0 — members newer than the baseline are optional
16
17
  * here so call sites are forced to feature-detect. Version floors are noted
17
18
  * on each member.
@@ -103,8 +104,9 @@ export interface ContainerResourceLimits {
103
104
  * Declarative desired state for a managed container. Pass the same config to
104
105
  * `ensureRunning` on every plugin start — signalk-container diffs it against
105
106
  * the live container and removes + recreates when `image`, `tag`, `command`,
106
- * `networkMode`, `env`, `volumes`, or `ports` differ. `restart`, `labels`,
107
- * `healthcheck`, and `ulimits` are NOT part of drift detection.
107
+ * `networkMode`, `env`, `volumes`, `ports`, `devices`, or `groupAdd` differ.
108
+ * `restart`, `labels`, `healthcheck`, and `ulimits` are NOT part of drift
109
+ * detection.
108
110
  */
109
111
  export interface ContainerConfig {
110
112
  /** Image repo without tag, e.g. "ghcr.io/questdb/questdb". */
@@ -159,6 +161,35 @@ export interface ContainerConfig {
159
161
  inImageUid?: number;
160
162
  inImageGid?: number;
161
163
  } | false;
164
+ /**
165
+ * Host devices to expose. Two entry forms:
166
+ * - device NODE path, docker `--device` syntax
167
+ * `hostPath[:containerPath[:permissions]]` — attached statically at
168
+ * create time; a replugged node reappears only on the next recreate.
169
+ * - device DIRECTORY path, e.g. "/dev/snd" — hot-plug mode: bind-mounted
170
+ * at the same path with device-class cgroup rules opened, so nodes
171
+ * appearing after a USB replug stay visible. Use for USB audio,
172
+ * input devices, GPUs.
173
+ * An entry whose host path is missing is skipped with a warning — an
174
+ * unplugged device never prevents container start. On rootless runtimes
175
+ * access is governed by plain file permissions on the bound nodes —
176
+ * combine with `groupAdd` to hold the device group. Part of drift
177
+ * detection. 1.24.0+ — silently ignored by older versions.
178
+ */
179
+ devices?: string[];
180
+ /**
181
+ * Supplementary groups (`--group-add`): group names or numeric GIDs.
182
+ * Names are resolved to GIDs against the HOST's /etc/group (it is the
183
+ * host GID the kernel checks on host device nodes, and the runtimes
184
+ * would resolve names against the image's /etc/group instead); a name
185
+ * unknown to the host is skipped with a warning. On rootless Podman the
186
+ * `run.oci.keep_original_groups` annotation is additionally emitted so
187
+ * the container process keeps the host user's own supplementary groups —
188
+ * `groupAdd: ["audio"]` + `devices: ["/dev/snd"]` then works across
189
+ * docker and rootful/rootless podman alike. Part of drift detection.
190
+ * 1.24.0+ — silently ignored by older versions.
191
+ */
192
+ groupAdd?: (string | number)[];
162
193
  /** Plugin-default resource limits; users override per-field. */
163
194
  resources?: ContainerResourceLimits;
164
195
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js CHANGED
@@ -11,7 +11,8 @@
11
11
  *
12
12
  * Source of truth: https://github.com/dirkwa/signalk-container
13
13
  * (src/types.ts and src/updates/types.ts)
14
- * Last synced against signalk-container: v1.22.0
14
+ * Last synced against signalk-container: v1.24.0 (pending release —
15
+ * `devices`/`groupAdd` are ahead of the newest published release, 1.23.2)
15
16
  * Supported baseline: v1.6.0 — members newer than the baseline are optional
16
17
  * here so call sites are forced to feature-detect. Version floors are noted
17
18
  * on each member.
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG"}
@@ -0,0 +1,147 @@
1
+ import React, { type CSSProperties, type ReactNode } from "react";
2
+ import { type StateKind } from "./styles.js";
3
+ import { type SplitVersionsOptions, type VersionInfo } from "./versions.js";
4
+ /** Uppercase section heading ("GRAFANA STATUS", "SETTINGS", …). */
5
+ export declare function SectionTitle({ children }: {
6
+ children: ReactNode;
7
+ }): React.JSX.Element;
8
+ /** Small grey inline hint; `color` overrides for warnings. */
9
+ export declare function Hint({ children, color, }: {
10
+ children: ReactNode;
11
+ color?: string;
12
+ }): React.JSX.Element;
13
+ /**
14
+ * A labeled settings row: fixed-width label, then the control(s), then an
15
+ * optional hint. The layout every reference panel uses for its form.
16
+ */
17
+ export declare function FieldRow({ label, hint, hintColor, children, }: {
18
+ label: ReactNode;
19
+ hint?: ReactNode;
20
+ hintColor?: string;
21
+ children?: ReactNode;
22
+ }): React.JSX.Element;
23
+ /** The 10px status dot: green ok / amber warn / red error, or a custom color. */
24
+ export declare function StateDot({ state, color, title, style, }: {
25
+ state?: StateKind;
26
+ color?: string;
27
+ title?: string;
28
+ style?: CSSProperties;
29
+ }): React.JSX.Element;
30
+ export interface StatusCardProps {
31
+ /** Icon glyph, typically one or two letters ("G", "Q", "SK"). */
32
+ icon: ReactNode;
33
+ iconBackground?: string;
34
+ iconColor?: string;
35
+ title: ReactNode;
36
+ /** Secondary line: version, address, counts… */
37
+ meta?: ReactNode;
38
+ /** Drives the state dot (and the default icon colors when omitted). */
39
+ state?: StateKind;
40
+ stateTitle?: string;
41
+ /** Optional "Open Grafana ↗"-style external link. */
42
+ link?: {
43
+ href: string;
44
+ label: ReactNode;
45
+ };
46
+ /** Extra elements between the info block and the state dot. */
47
+ children?: ReactNode;
48
+ }
49
+ /**
50
+ * The container status card: icon, name, meta line, optional link, state
51
+ * dot. In the error state the icon flips to the shared muted-red treatment
52
+ * unless explicit colors are given.
53
+ */
54
+ export declare function StatusCard({ icon, iconBackground, iconColor, title, meta, state, stateTitle, link, children, }: StatusCardProps): React.JSX.Element;
55
+ /**
56
+ * Collapsed-by-default section for advanced/rare settings. A real <button>
57
+ * so keyboard users can toggle with Enter/Space and screen readers announce
58
+ * expanded state; the style resets the default button chrome so it still
59
+ * reads as a section title.
60
+ */
61
+ export declare function CollapsibleSection({ title, defaultOpen, children, }: {
62
+ title: ReactNode;
63
+ defaultOpen?: boolean;
64
+ children: ReactNode;
65
+ }): React.JSX.Element;
66
+ export type ButtonVariant = "primary" | "secondary" | "warn" | "danger";
67
+ /**
68
+ * Panel button. `busy` renders `busyLabel` and disables — the
69
+ * "Updating…" / "Checking…" pattern.
70
+ */
71
+ export declare function Button({ variant, small, busy, busyLabel, disabled, onClick, title, style, children, }: {
72
+ variant?: ButtonVariant;
73
+ small?: boolean;
74
+ busy?: boolean;
75
+ busyLabel?: ReactNode;
76
+ disabled?: boolean;
77
+ onClick?: () => void;
78
+ title?: string;
79
+ style?: CSSProperties;
80
+ children: ReactNode;
81
+ }): React.JSX.Element;
82
+ /**
83
+ * The action-outcome line under the form: green for success, red for
84
+ * failure. Renders (with reserved height) only when `message` is set.
85
+ */
86
+ export declare function ActionStatus({ message, error, style, }: {
87
+ message: string;
88
+ error?: boolean;
89
+ style?: CSSProperties;
90
+ }): React.JSX.Element | null;
91
+ export interface FloatingOption {
92
+ tag: string;
93
+ /** Display label; defaults to the tag. */
94
+ label?: string;
95
+ }
96
+ export interface VersionSelectProps extends SplitVersionsOptions {
97
+ value: string;
98
+ onChange: (tag: string) => void;
99
+ /** From `useVersions` / your /api/versions endpoint. */
100
+ versions: VersionInfo[];
101
+ /**
102
+ * Non-release tags listed first. Default
103
+ * `[{ tag: "latest", label: "latest (recommended)" }]`.
104
+ */
105
+ floatingOptions?: FloatingOption[];
106
+ loading?: boolean;
107
+ /** Operator-facing fetch error (from `useVersions`); rendered in red. */
108
+ error?: string;
109
+ /** When set, renders the ↻ refresh button. */
110
+ onRefresh?: () => void;
111
+ disabled?: boolean;
112
+ style?: CSSProperties;
113
+ }
114
+ /**
115
+ * The image-version dropdown: floating tags, then pre-releases, then stable
116
+ * releases ("(current stable)" on the newest), then PR test images in an
117
+ * optgroup. When the current `value` isn't among the rendered options —
118
+ * e.g. a pr<N> whose listing was rate-limited, or a stable pin that fell
119
+ * out of the top-N — a synthetic "<tag> (running)" option is injected so
120
+ * the controlled <select> never renders blank and silently resets the
121
+ * operator's real running image.
122
+ *
123
+ * Renders inline elements only, so it slots into a `FieldRow`.
124
+ */
125
+ export declare function VersionSelect({ value, onChange, versions, floatingOptions, stableCount, preCount, loading, error, onRefresh, disabled, style, }: VersionSelectProps): React.JSX.Element;
126
+ export interface UpdateControlsProps {
127
+ /** GET route mounted by `registerUpdateRoutes` — returns UpdateCheckResult. */
128
+ checkUrl: string;
129
+ /** POST route mounted by `registerUpdateRoutes` — body { tag? }. */
130
+ applyUrl: string;
131
+ /** Tag to apply; omit to re-apply the container's current tag. */
132
+ tag?: string;
133
+ /** Called with the resolved tag after a successful apply. */
134
+ onApplied?: (tag: string | undefined) => void;
135
+ updateLabel?: ReactNode;
136
+ disabled?: boolean;
137
+ style?: CSSProperties;
138
+ }
139
+ /**
140
+ * The self-contained check/apply row: a "Check for updates" button that
141
+ * becomes "vX → vY available [Update]" when the check says so, or the
142
+ * up-to-date/offline message otherwise. Talks to the routes
143
+ * `ManagedContainer.registerUpdateRoutes` mounts. For a custom layout use
144
+ * `useUpdateFlow` + `formatUpdateMessage` directly.
145
+ */
146
+ export declare function UpdateControls({ checkUrl, applyUrl, tag, onApplied, updateLabel, disabled, style, }: UpdateControlsProps): React.JSX.Element;
147
+ //# sourceMappingURL=components.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../src/ui/components.tsx"],"names":[],"mappings":"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"}