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 +22 -2
- package/dist/components/MetricValueBadge.d.ts +17 -0
- package/dist/components/MetricValueBadge.d.ts.map +1 -0
- package/dist/components/MetricValueBadge.js +29 -0
- package/dist/components/MetricValueBadge.js.map +1 -0
- package/dist/components/RuntimeDiagnosticList.d.ts +14 -0
- package/dist/components/RuntimeDiagnosticList.d.ts.map +1 -0
- package/dist/components/RuntimeDiagnosticList.js +19 -0
- package/dist/components/RuntimeDiagnosticList.js.map +1 -0
- package/dist/components/RuntimeResultStatusBadge.d.ts +19 -0
- package/dist/components/RuntimeResultStatusBadge.d.ts.map +1 -0
- package/dist/components/RuntimeResultStatusBadge.js +11 -0
- package/dist/components/RuntimeResultStatusBadge.js.map +1 -0
- package/dist/components/index.d.ts +3 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +3 -0
- package/dist/components/index.js.map +1 -1
- package/package.json +4 -2
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
|
|
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 +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"}
|
package/dist/components/index.js
CHANGED
|
@@ -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.
|
|
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",
|