nirs4all-ui 0.1.1 → 0.1.3

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 CHANGED
@@ -15,7 +15,7 @@ UI surfaces.
15
15
  | --- | --- | --- |
16
16
  | `score` | `nirs4all-ui/score` | Metric-key normalization, metric catalog helpers, direction-aware score parsing, comparison, and formatting. |
17
17
  | `runtime` | `nirs4all-ui/runtime` | Runtime/result status display tokens, busy-state predicates, progress projection, engine metadata summaries, diagnostics, and native-result affordances. |
18
- | `components` | `nirs4all-ui/components` | Stateless React components that render shared runtime and result UI affordances. |
18
+ | `components` | `nirs4all-ui/components` | Stateless React components that render shared runtime, diagnostic, and metric affordances. |
19
19
 
20
20
  The root export also exposes namespace barrels:
21
21
 
@@ -28,7 +28,7 @@ Prefer domain imports when a consumer only needs one area:
28
28
  ```ts
29
29
  import { canonicalMetricKey, formatMetricValue } from "nirs4all-ui/score";
30
30
  import { buildRuntimeResultStatusView } from "nirs4all-ui/runtime";
31
- import { RuntimeEngineBadge } from "nirs4all-ui/components";
31
+ import { MetricValueBadge, RuntimeEngineBadge } from "nirs4all-ui/components";
32
32
  ```
33
33
 
34
34
  ## Development
@@ -40,3 +40,23 @@ npm test
40
40
  ```
41
41
 
42
42
  `npm run build` emits ESM JavaScript and declaration files under `dist/`.
43
+
44
+ ## GitHub Pages showcase
45
+
46
+ The single-page component and helper catalogue lives under `site/`.
47
+
48
+ ```bash
49
+ npm run site:dev
50
+ npm run site:build
51
+ ```
52
+
53
+ `site/src/App.tsx` renders reusable React components separately from the
54
+ runtime and score helper inventories. `site/public/` intentionally carries the
55
+ Pages publication files (`logo.svg`, `favicon.svg`, `robots.txt`,
56
+ `sitemap.xml`, and `site.webmanifest`). The site build also copies the package
57
+ brand kit to namespaced GitHub Pages URLs under `assets/brand/nirs4all-ui/`;
58
+ the npm package keeps the same files available under `assets/brand` through the
59
+ `nirs4all-ui/assets/*` export. The default Pages base is `/nirs4all-ui/` for
60
+ the GitHub project-page path; set
61
+ `NIRS4ALL_UI_BASE=/` and add a `CNAME` only when switching to a dedicated
62
+ subdomain such as `ui.nirs4all.org`.
@@ -0,0 +1,17 @@
1
+ export interface MetricValueBadgeProps {
2
+ metric?: string | null;
3
+ value?: number | string | null;
4
+ compareTo?: number | string | null;
5
+ label?: string | null;
6
+ className?: string;
7
+ metricClassName?: string;
8
+ valueClassName?: string;
9
+ directionClassName?: string;
10
+ betterClassName?: string;
11
+ worseClassName?: string;
12
+ equalClassName?: string;
13
+ title?: string;
14
+ showDirection?: boolean;
15
+ }
16
+ export declare function MetricValueBadge({ metric, value, compareTo, label, className, metricClassName, valueClassName, directionClassName, betterClassName, worseClassName, equalClassName, title, showDirection, }: MetricValueBadgeProps): import("react").JSX.Element;
17
+ //# sourceMappingURL=MetricValueBadge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MetricValueBadge.d.ts","sourceRoot":"","sources":["../../src/components/MetricValueBadge.tsx"],"names":[],"mappings":"AAQA,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAqBD,wBAAgB,gBAAgB,CAAC,EAC/B,MAAM,EACN,KAAK,EACL,SAAS,EACT,KAAK,EACL,SAAS,EACT,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,cAAc,EACd,KAAK,EACL,aAAoB,GACrB,EAAE,qBAAqB,+BAyBvB"}
@@ -0,0 +1,29 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { formatMetricDisplayName, formatMetricValue, getMetricDefinition, isBetterScore, parseScoreNumber, } from "../score/index.js";
3
+ function resolveComparison(value, compareTo, metric) {
4
+ const parsedValue = parseScoreNumber(value);
5
+ const parsedComparison = parseScoreNumber(compareTo);
6
+ if (parsedValue == null || parsedComparison == null)
7
+ return null;
8
+ if (parsedValue === parsedComparison)
9
+ return "equal";
10
+ return isBetterScore(parsedValue, parsedComparison, metric) ? "better" : "worse";
11
+ }
12
+ function joinClassNames(...classNames) {
13
+ const resolved = classNames.filter(Boolean);
14
+ return resolved.length > 0 ? resolved.join(" ") : undefined;
15
+ }
16
+ export function MetricValueBadge({ metric, value, compareTo, label, className, metricClassName, valueClassName, directionClassName, betterClassName, worseClassName, equalClassName, title, showDirection = true, }) {
17
+ const definition = getMetricDefinition(metric);
18
+ const displayLabel = label ?? definition?.abbreviation ?? formatMetricDisplayName(metric);
19
+ const comparison = resolveComparison(value, compareTo, metric);
20
+ const comparisonClassName = comparison === "better"
21
+ ? betterClassName
22
+ : comparison === "worse"
23
+ ? worseClassName
24
+ : comparison === "equal"
25
+ ? equalClassName
26
+ : undefined;
27
+ return (_jsxs("span", { className: joinClassNames(className, comparisonClassName), "data-metric": definition?.key ?? metric ?? undefined, title: title, children: [_jsx("span", { className: metricClassName, children: displayLabel }), _jsx("strong", { className: valueClassName, children: formatMetricValue(value, metric ?? undefined) }), showDirection && comparison ? (_jsx("span", { className: directionClassName, children: comparison })) : null] }));
28
+ }
29
+ //# sourceMappingURL=MetricValueBadge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MetricValueBadge.js","sourceRoot":"","sources":["../../src/components/MetricValueBadge.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAoB3B,SAAS,iBAAiB,CACxB,KAAyC,EACzC,SAA6C,EAC7C,MAAiC;IAEjC,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACrD,IAAI,WAAW,IAAI,IAAI,IAAI,gBAAgB,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IACjE,IAAI,WAAW,KAAK,gBAAgB;QAAE,OAAO,OAAO,CAAC;IACrD,OAAO,aAAa,CAAC,WAAW,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;AACnF,CAAC;AAED,SAAS,cAAc,CAAC,GAAG,UAAqC;IAC9D,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC5C,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAC/B,MAAM,EACN,KAAK,EACL,SAAS,EACT,KAAK,EACL,SAAS,EACT,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,cAAc,EACd,KAAK,EACL,aAAa,GAAG,IAAI,GACE;IACtB,MAAM,UAAU,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,YAAY,GAAG,KAAK,IAAI,UAAU,EAAE,YAAY,IAAI,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAC1F,MAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAC/D,MAAM,mBAAmB,GAAG,UAAU,KAAK,QAAQ;QACjD,CAAC,CAAC,eAAe;QACjB,CAAC,CAAC,UAAU,KAAK,OAAO;YACtB,CAAC,CAAC,cAAc;YAChB,CAAC,CAAC,UAAU,KAAK,OAAO;gBACtB,CAAC,CAAC,cAAc;gBAChB,CAAC,CAAC,SAAS,CAAC;IAElB,OAAO,CACL,gBACE,SAAS,EAAE,cAAc,CAAC,SAAS,EAAE,mBAAmB,CAAC,iBAC5C,UAAU,EAAE,GAAG,IAAI,MAAM,IAAI,SAAS,EACnD,KAAK,EAAE,KAAK,aAEZ,eAAM,SAAS,EAAE,eAAe,YAAG,YAAY,GAAQ,EACvD,iBAAQ,SAAS,EAAE,cAAc,YAAG,iBAAiB,CAAC,KAAK,EAAE,MAAM,IAAI,SAAS,CAAC,GAAU,EAC1F,aAAa,IAAI,UAAU,CAAC,CAAC,CAAC,CAC7B,eAAM,SAAS,EAAE,kBAAkB,YAAG,UAAU,GAAQ,CACzD,CAAC,CAAC,CAAC,IAAI,IACH,CACR,CAAC;AACJ,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { ReactNode } from "react";
2
+ import { type RuntimeDiagnosticItem } from "../runtime/index.js";
3
+ export interface RuntimeDiagnosticListProps {
4
+ source?: unknown;
5
+ diagnostics?: readonly RuntimeDiagnosticItem[] | null;
6
+ className?: string;
7
+ itemClassName?: string | ((item: RuntimeDiagnosticItem) => string | undefined);
8
+ messageClassName?: string;
9
+ metadataClassName?: string;
10
+ empty?: ReactNode;
11
+ renderItem?: (item: RuntimeDiagnosticItem) => ReactNode;
12
+ }
13
+ export declare function RuntimeDiagnosticList({ source, diagnostics, className, itemClassName, messageClassName, metadataClassName, empty, renderItem, }: RuntimeDiagnosticListProps): import("react").JSX.Element | null;
14
+ //# sourceMappingURL=RuntimeDiagnosticList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuntimeDiagnosticList.d.ts","sourceRoot":"","sources":["../../src/components/RuntimeDiagnosticList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,0BAA0B;IACzC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,SAAS,qBAAqB,EAAE,GAAG,IAAI,CAAC;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,qBAAqB,KAAK,MAAM,GAAG,SAAS,CAAC,CAAC;IAC/E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,SAAS,CAAC;CACzD;AAiBD,wBAAgB,qBAAqB,CAAC,EACpC,MAAM,EACN,WAAW,EACX,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,EACL,UAAU,GACX,EAAE,0BAA0B,sCA0B5B"}
@@ -0,0 +1,19 @@
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { formatRuntimeTokenLabel, normalizeRuntimeDiagnostics, } from "../runtime/index.js";
3
+ function resolveDiagnosticTitle(item) {
4
+ const parts = [
5
+ formatRuntimeTokenLabel(item.verb),
6
+ formatRuntimeTokenLabel(item.cause),
7
+ ].filter(Boolean);
8
+ return parts.length > 0 ? parts.join(" / ") : "Runtime diagnostic";
9
+ }
10
+ function resolveItemClassName(itemClassName, item) {
11
+ return typeof itemClassName === "function" ? itemClassName(item) : itemClassName;
12
+ }
13
+ export function RuntimeDiagnosticList({ source, diagnostics, className, itemClassName, messageClassName, metadataClassName, empty, renderItem, }) {
14
+ const items = diagnostics ?? normalizeRuntimeDiagnostics(source);
15
+ if (items.length === 0)
16
+ return empty == null ? null : _jsx(_Fragment, { children: empty });
17
+ return (_jsx("ul", { className: className, children: items.map((item) => (_jsx("li", { className: resolveItemClassName(itemClassName, item), children: renderItem ? renderItem(item) : (_jsxs(_Fragment, { children: [_jsx("strong", { children: resolveDiagnosticTitle(item) }), _jsx("span", { className: messageClassName, children: item.message }), item.mitigation ? (_jsxs("span", { className: metadataClassName, children: ["Mitigation: ", item.mitigation] })) : null, item.unsupportedCapability ? (_jsxs("span", { className: metadataClassName, children: ["Missing capability: ", formatRuntimeTokenLabel(item.unsupportedCapability)] })) : null] })) }, item.id))) }));
18
+ }
19
+ //# sourceMappingURL=RuntimeDiagnosticList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuntimeDiagnosticList.js","sourceRoot":"","sources":["../../src/components/RuntimeDiagnosticList.tsx"],"names":[],"mappings":";AAEA,OAAO,EACL,uBAAuB,EACvB,2BAA2B,GAE5B,MAAM,qBAAqB,CAAC;AAa7B,SAAS,sBAAsB,CAAC,IAA2B;IACzD,MAAM,KAAK,GAAG;QACZ,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;QAClC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC;KACpC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClB,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC;AACrE,CAAC;AAED,SAAS,oBAAoB,CAC3B,aAA0D,EAC1D,IAA2B;IAE3B,OAAO,OAAO,aAAa,KAAK,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;AACnF,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,EACpC,MAAM,EACN,WAAW,EACX,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,EACL,UAAU,GACiB;IAC3B,MAAM,KAAK,GAAG,WAAW,IAAI,2BAA2B,CAAC,MAAM,CAAC,CAAC;IACjE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,4BAAG,KAAK,GAAI,CAAC;IAEnE,OAAO,CACL,aAAI,SAAS,EAAE,SAAS,YACrB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnB,aAAI,SAAS,EAAE,oBAAoB,CAAC,aAAa,EAAE,IAAI,CAAC,YACrD,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAC/B,8BACE,2BAAS,sBAAsB,CAAC,IAAI,CAAC,GAAU,EAC/C,eAAM,SAAS,EAAE,gBAAgB,YAAG,IAAI,CAAC,OAAO,GAAQ,EACvD,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CACjB,gBAAM,SAAS,EAAE,iBAAiB,6BAAe,IAAI,CAAC,UAAU,IAAQ,CACzE,CAAC,CAAC,CAAC,IAAI,EACP,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAC5B,gBAAM,SAAS,EAAE,iBAAiB,qCACX,uBAAuB,CAAC,IAAI,CAAC,qBAAqB,CAAC,IACnE,CACR,CAAC,CAAC,CAAC,IAAI,IACP,CACJ,IAd4D,IAAI,CAAC,EAAE,CAejE,CACN,CAAC,GACC,CACN,CAAC;AACJ,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { ReactNode } from "react";
2
+ import { type RuntimeResultStatusIcon, type RuntimeResultStatusView } from "../runtime/index.js";
3
+ export interface RuntimeResultStatusBadgeProps {
4
+ status?: string | null;
5
+ progress?: number | null;
6
+ view?: RuntimeResultStatusView | null;
7
+ label?: string | null;
8
+ icon?: ReactNode;
9
+ icons?: Partial<Record<RuntimeResultStatusIcon, ReactNode>>;
10
+ className?: string;
11
+ iconClassName?: string;
12
+ labelClassName?: string;
13
+ progressClassName?: string;
14
+ title?: string;
15
+ showProgress?: boolean;
16
+ formatProgress?: (progress: number) => ReactNode;
17
+ }
18
+ export declare function RuntimeResultStatusBadge({ status, progress, view, label, icon, icons, className, iconClassName, labelClassName, progressClassName, title, showProgress, formatProgress, }: RuntimeResultStatusBadgeProps): import("react").JSX.Element;
19
+ //# sourceMappingURL=RuntimeResultStatusBadge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuntimeResultStatusBadge.d.ts","sourceRoot":"","sources":["../../src/components/RuntimeResultStatusBadge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAEL,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC7B,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,6BAA6B;IAC5C,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,CAAC,EAAE,uBAAuB,GAAG,IAAI,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC,CAAC;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,SAAS,CAAC;CAClD;AAED,wBAAgB,wBAAwB,CAAC,EACvC,MAAM,EACN,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,KAAK,EACL,SAAS,EACT,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,KAAK,EACL,YAAmB,EACnB,cAAc,GACf,EAAE,6BAA6B,+BAc/B"}
@@ -0,0 +1,11 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { buildRuntimeResultStatusView, } from "../runtime/index.js";
3
+ export function RuntimeResultStatusBadge({ status, progress, view, label, icon, icons, className, iconClassName, labelClassName, progressClassName, title, showProgress = true, formatProgress, }) {
4
+ const statusView = view ?? buildRuntimeResultStatusView(status, progress);
5
+ const resolvedIcon = icon ?? icons?.[statusView.icon] ?? null;
6
+ const progressNode = showProgress && statusView.progress != null
7
+ ? formatProgress?.(statusView.progress) ?? `${statusView.progress}%`
8
+ : null;
9
+ return (_jsxs("span", { className: className, title: title, children: [resolvedIcon ? _jsx("span", { className: iconClassName, children: resolvedIcon }) : null, _jsx("span", { className: labelClassName, children: label ?? statusView.label }), progressNode ? _jsx("span", { className: progressClassName, children: progressNode }) : null] }));
10
+ }
11
+ //# sourceMappingURL=RuntimeResultStatusBadge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuntimeResultStatusBadge.js","sourceRoot":"","sources":["../../src/components/RuntimeResultStatusBadge.tsx"],"names":[],"mappings":";AAEA,OAAO,EACL,4BAA4B,GAG7B,MAAM,qBAAqB,CAAC;AAkB7B,MAAM,UAAU,wBAAwB,CAAC,EACvC,MAAM,EACN,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,KAAK,EACL,SAAS,EACT,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,KAAK,EACL,YAAY,GAAG,IAAI,EACnB,cAAc,GACgB;IAC9B,MAAM,UAAU,GAAG,IAAI,IAAI,4BAA4B,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC1E,MAAM,YAAY,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;IAC9D,MAAM,YAAY,GAAG,YAAY,IAAI,UAAU,CAAC,QAAQ,IAAI,IAAI;QAC9D,CAAC,CAAC,cAAc,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,GAAG,UAAU,CAAC,QAAQ,GAAG;QACpE,CAAC,CAAC,IAAI,CAAC;IAET,OAAO,CACL,gBAAM,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,aACrC,YAAY,CAAC,CAAC,CAAC,eAAM,SAAS,EAAE,aAAa,YAAG,YAAY,GAAQ,CAAC,CAAC,CAAC,IAAI,EAC5E,eAAM,SAAS,EAAE,cAAc,YAAG,KAAK,IAAI,UAAU,CAAC,KAAK,GAAQ,EAClE,YAAY,CAAC,CAAC,CAAC,eAAM,SAAS,EAAE,iBAAiB,YAAG,YAAY,GAAQ,CAAC,CAAC,CAAC,IAAI,IAC3E,CACR,CAAC;AACJ,CAAC"}
@@ -1,2 +1,5 @@
1
+ export * from "./MetricValueBadge.js";
2
+ export * from "./RuntimeDiagnosticList.js";
1
3
  export * from "./RuntimeEngineBadge.js";
4
+ export * from "./RuntimeResultStatusBadge.js";
2
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC"}
@@ -1,2 +1,5 @@
1
+ export * from "./MetricValueBadge.js";
2
+ export * from "./RuntimeDiagnosticList.js";
1
3
  export * from "./RuntimeEngineBadge.js";
4
+ export * from "./RuntimeResultStatusBadge.js";
2
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC"}
package/package.json CHANGED
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "name": "nirs4all-ui",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "Shared React UI components and pure view-model helpers for nirs4all apps.",
5
5
  "type": "module",
6
6
  "license": "(CECILL-2.1 OR AGPL-3.0-or-later)",
7
+ "homepage": "https://gbeurier.github.io/nirs4all-ui/",
7
8
  "repository": {
8
9
  "type": "git",
9
10
  "url": "git+https://github.com/GBeurier/nirs4all-ui.git"
@@ -38,8 +39,9 @@
38
39
  },
39
40
  "scripts": {
40
41
  "build": "tsc -p tsconfig.build.json",
41
- "ci": "npm run prepublishOnly && npm run pack:smoke",
42
+ "ci": "npm run prepublishOnly && npm run pack:smoke && npm run smoke:react-consumers",
42
43
  "pack:smoke": "npm pack --dry-run",
44
+ "smoke:react-consumers": "node scripts/smoke-react-consumers.mjs",
43
45
  "site:build": "vite build --config site/vite.config.ts",
44
46
  "site:dev": "vite --config site/vite.config.ts",
45
47
  "typecheck": "tsc -p tsconfig.json --noEmit",