@watt-ui/react 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.
Files changed (50) hide show
  1. package/README.md +1 -0
  2. package/dist/components/alarm-feed.d.ts +2 -2
  3. package/dist/components/alarm-feed.d.ts.map +1 -1
  4. package/dist/components/alarm-feed.js +38 -16
  5. package/dist/components/alarm-feed.js.map +1 -1
  6. package/dist/components/asset-tree.d.ts +6 -2
  7. package/dist/components/asset-tree.d.ts.map +1 -1
  8. package/dist/components/asset-tree.js +15 -8
  9. package/dist/components/asset-tree.js.map +1 -1
  10. package/dist/components/battery-soc.d.ts +2 -2
  11. package/dist/components/battery-soc.d.ts.map +1 -1
  12. package/dist/components/battery-soc.js +4 -3
  13. package/dist/components/battery-soc.js.map +1 -1
  14. package/dist/components/data-freshness.d.ts +2 -2
  15. package/dist/components/data-freshness.d.ts.map +1 -1
  16. package/dist/components/data-freshness.js +8 -3
  17. package/dist/components/data-freshness.js.map +1 -1
  18. package/dist/components/power-metric.d.ts +5 -3
  19. package/dist/components/power-metric.d.ts.map +1 -1
  20. package/dist/components/power-metric.js +10 -5
  21. package/dist/components/power-metric.js.map +1 -1
  22. package/dist/components/status-indicator.d.ts +2 -2
  23. package/dist/components/status-indicator.d.ts.map +1 -1
  24. package/dist/components/status-indicator.js +8 -3
  25. package/dist/components/status-indicator.js.map +1 -1
  26. package/dist/components/telemetry-chart.d.ts +5 -7
  27. package/dist/components/telemetry-chart.d.ts.map +1 -1
  28. package/dist/components/telemetry-chart.js +30 -21
  29. package/dist/components/telemetry-chart.js.map +1 -1
  30. package/dist/index.d.ts +2 -2
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/motion.d.ts +12 -0
  33. package/dist/motion.d.ts.map +1 -0
  34. package/dist/motion.js +90 -0
  35. package/dist/motion.js.map +1 -0
  36. package/dist/styles.css +69 -1
  37. package/dist/types.d.ts +10 -1
  38. package/dist/types.d.ts.map +1 -1
  39. package/package.json +1 -1
  40. package/src/components/alarm-feed.tsx +97 -62
  41. package/src/components/asset-tree.tsx +56 -31
  42. package/src/components/battery-soc.tsx +29 -14
  43. package/src/components/data-freshness.tsx +34 -17
  44. package/src/components/power-metric.tsx +32 -17
  45. package/src/components/status-indicator.tsx +34 -15
  46. package/src/components/telemetry-chart.tsx +60 -38
  47. package/src/index.ts +5 -1
  48. package/src/motion.tsx +117 -0
  49. package/src/styles.css +69 -1
  50. package/src/types.ts +30 -4
@@ -4,6 +4,7 @@ import { useComposedRefs } from "@radix-ui/react-compose-refs";
4
4
  import { Slot } from "@radix-ui/react-slot";
5
5
  import { createContext, forwardRef, useCallback, useContext, useEffect, useMemo, useRef, useState, } from "react";
6
6
  import { cx, part } from "../internal.js";
7
+ import { MotionProvider, motionStyle, useChangeFeedback } from "../motion.js";
7
8
  import { nearestIndex, prepareSeries, lowerBound } from "../chart/data.js";
8
9
  import { chartOption, hasManagedConflict, } from "../chart/options.js";
9
10
  const Context = createContext(null);
@@ -13,7 +14,7 @@ function useChart() {
13
14
  throw new Error("Chart parts require TelemetryChart.Root");
14
15
  return ctx;
15
16
  }
16
- const Root = forwardRef(({ series, timeZone, locale, range, onRangeChange, sampling = "minmax", options, events, onReady, onError, density = "comfortable", asChild, children, className, ...props }, ref) => {
17
+ const Root = forwardRef(({ series, timeZone, locale, range, onRangeChange, sampling = "minmax", options, events, onReady, onError, density = "comfortable", asChild, children, className, style, motion, ...props }, ref) => {
17
18
  const prepared = useMemo(() => prepareSeries(series), [series]);
18
19
  const [hidden, setHidden] = useState(() => new Set());
19
20
  const [timestamp, setTimestamp] = useState(null);
@@ -55,22 +56,22 @@ const Root = forwardRef(({ series, timeZone, locale, range, onRangeChange, sampl
55
56
  console.warn("Watt UI: explicit chart props override series, axes, zoom, tooltip and legend options.");
56
57
  }, [options, prepared, range, timeZone]);
57
58
  const Component = asChild ? Slot : "div";
58
- return (_jsx(Context.Provider, { value: {
59
- series: prepared,
60
- timeZone,
61
- locale,
62
- range,
63
- onRangeChange,
64
- sampling,
65
- options,
66
- events,
67
- inspection,
68
- inspect,
69
- hidden,
70
- toggle,
71
- onReady,
72
- onError,
73
- }, children: _jsx(Component, { ...props, ref: ref, "data-slot": "telemetry-chart", "data-density": density, className: cx("watt-root min-w-0", className), children: children }) }));
59
+ return (_jsx(MotionProvider, { motion: motion, children: _jsx(Context.Provider, { value: {
60
+ series: prepared,
61
+ timeZone,
62
+ locale,
63
+ range,
64
+ onRangeChange,
65
+ sampling,
66
+ options,
67
+ events,
68
+ inspection,
69
+ inspect,
70
+ hidden,
71
+ toggle,
72
+ onReady,
73
+ onError,
74
+ }, children: _jsx(Component, { ...props, ref: ref, "data-slot": "telemetry-chart", "data-density": density, style: { ...style, ...motionStyle(motion) }, className: cx("watt-root min-w-0", className), children: children }) }) }));
74
75
  });
75
76
  const Canvas = forwardRef(({ previewSvg, height = 300, className, style, onKeyDown, ...props }, forwardedRef) => {
76
77
  const ctx = useChart();
@@ -240,12 +241,20 @@ const Legend = forwardRef(({ children, className, ...props }, ref) => {
240
241
  ...s,
241
242
  hidden: ctx.hidden.has(s.id),
242
243
  toggle: () => ctx.toggle(s.id),
243
- })) : (_jsxs("button", { type: "button", "aria-pressed": !ctx.hidden.has(s.id), onClick: () => ctx.toggle(s.id), className: "inline-flex items-center gap-2", children: [_jsx("span", { className: "h-2 w-2 rounded-full", style: { background: s.color ?? "var(--watt-accent)" } }), s.label] })) }, s.id))) }));
244
+ })) : (_jsxs("button", { type: "button", "aria-pressed": !ctx.hidden.has(s.id), onClick: () => ctx.toggle(s.id), className: "watt-motion watt-chart-legend-toggle inline-flex items-center gap-2", children: [_jsx("span", { "aria-hidden": "true", "data-slot": "telemetry-chart-legend-marker", className: "watt-motion h-2 w-2 rounded-full border border-current", style: {
245
+ color: s.color ?? "var(--watt-accent)",
246
+ background: ctx.hidden.has(s.id)
247
+ ? "transparent"
248
+ : "currentColor",
249
+ } }), s.label] })) }, s.id))) }));
244
250
  });
245
- function Tooltip({ children, ...props }) {
251
+ const Tooltip = forwardRef(function Tooltip({ children, className, ...props }, ref) {
246
252
  const { inspection } = useChart();
247
- return (_jsx("div", { ...props, "data-slot": "telemetry-chart-tooltip", "aria-live": props["aria-live"] ?? "polite", "aria-atomic": props["aria-atomic"] ?? true, children: children(inspection) }));
248
- }
253
+ const host = useRef(null);
254
+ const hostRef = useComposedRefs(host, ref);
255
+ useChangeFeedback(host, inspection !== null);
256
+ return (_jsx("div", { ...props, ref: hostRef, "data-slot": "telemetry-chart-tooltip", "data-state": inspection ? "active" : "idle", className: cx("watt-motion", className), "aria-live": props["aria-live"] ?? "polite", "aria-atomic": props["aria-atomic"] ?? true, children: children(inspection) }));
257
+ });
249
258
  export const TelemetryChart = {
250
259
  Root,
251
260
  Canvas,
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry-chart.js","sourceRoot":"","sources":["../../src/components/telemetry-chart.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"telemetry-chart.js","sourceRoot":"","sources":["../../src/components/telemetry-chart.tsx"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -8,12 +8,12 @@ export { AlarmFeed } from "./components/alarm-feed.js";
8
8
  export { AssetTree } from "./components/asset-tree.js";
9
9
  export { formatNumber, formatTime, parseTimestamp } from "./domain.js";
10
10
  export type * from "./types.js";
11
- export type { MetricValueProps } from "./components/power-metric.js";
11
+ export type { PowerMetricProps, MetricValueProps, } from "./components/power-metric.js";
12
12
  export type { StatusIndicatorProps } from "./components/status-indicator.js";
13
13
  export type { BatterySOCProps } from "./components/battery-soc.js";
14
14
  export type { DataFreshnessProps, FreshnessTimeProps, FreshnessElapsedProps, } from "./components/data-freshness.js";
15
15
  export type { TelemetryChartProps, ChartCanvasProps, ChartInspection, } from "./components/telemetry-chart.js";
16
16
  export type { EnergyFlowProps, FlowAnimation, FlowStyle, FlowNodeProps, FlowPortProps, FlowEdgeProps, } from "./components/energy-flow.js";
17
17
  export type { AlarmFeedProps } from "./components/alarm-feed.js";
18
- export type { AssetTreeProps, AssetTreeRow, AssetTreeItem, } from "./components/asset-tree.js";
18
+ export type { AssetTreeProps, AssetTreeRow, AssetTreeItem, AssetTreeIndicatorProps, } from "./components/asset-tree.js";
19
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACvE,mBAAmB,YAAY,CAAC;AAChC,YAAY,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACrE,YAAY,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,YAAY,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,YAAY,EACV,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,gCAAgC,CAAC;AACxC,YAAY,EACV,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,GAChB,MAAM,iCAAiC,CAAC;AACzC,YAAY,EACV,eAAe,EACf,aAAa,EACb,SAAS,EACT,aAAa,EACb,aAAa,EACb,aAAa,GACd,MAAM,6BAA6B,CAAC;AACrC,YAAY,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,YAAY,EACV,cAAc,EACd,YAAY,EACZ,aAAa,GACd,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACvE,mBAAmB,YAAY,CAAC;AAChC,YAAY,EACV,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,8BAA8B,CAAC;AACtC,YAAY,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,YAAY,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,YAAY,EACV,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,gCAAgC,CAAC;AACxC,YAAY,EACV,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,GAChB,MAAM,iCAAiC,CAAC;AACzC,YAAY,EACV,eAAe,EACf,aAAa,EACb,SAAS,EACT,aAAa,EACb,aAAa,EACb,aAAa,GACd,MAAM,6BAA6B,CAAC;AACrC,YAAY,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,YAAY,EACV,cAAc,EACd,YAAY,EACZ,aAAa,EACb,uBAAuB,GACxB,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { type CSSProperties, type ReactNode, type RefObject } from "react";
2
+ import type { Motion, MotionProps } from "./types.js";
3
+ export declare function useMotion(own?: Motion): Motion;
4
+ export declare function MotionProvider({ motion, children, }: MotionProps & {
5
+ children: ReactNode;
6
+ }): import("react").JSX.Element;
7
+ export declare function motionStyle(motion?: Motion): CSSProperties;
8
+ /** Bounded feedback only: never changes text, data, row geometry or DOM identity. */
9
+ export declare function animateMotion(element: HTMLElement, frames: Keyframe[]): () => void;
10
+ export declare function highlightChange(element: HTMLElement): () => void;
11
+ export declare function useChangeFeedback(ref: RefObject<HTMLElement | null>, value: unknown, ownMotion?: Motion): void;
12
+ //# sourceMappingURL=motion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"motion.d.ts","sourceRoot":"","sources":["../src/motion.tsx"],"names":[],"mappings":"AACA,OAAO,EAML,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAMtD,wBAAgB,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAG9C;AAED,wBAAgB,cAAc,CAAC,EAC7B,MAAM,EACN,QAAQ,GACT,EAAE,WAAW,GAAG;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,+BAKvC;AAED,wBAAgB,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,aAAa,CAgB1D;AAED,qFAAqF;AACrF,wBAAgB,aAAa,CAC3B,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,QAAQ,EAAE,GACjB,MAAM,IAAI,CAkCZ;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,IAAI,CAQhE;AAED,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,EAClC,KAAK,EAAE,OAAO,EACd,SAAS,CAAC,EAAE,MAAM,QAYnB"}
package/dist/motion.js ADDED
@@ -0,0 +1,90 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { createContext, useContext, useEffect, useLayoutEffect, useRef, } from "react";
4
+ const Context = createContext(true);
5
+ const useMotionEffect = typeof document === "undefined" ? useEffect : useLayoutEffect;
6
+ const noop = () => { };
7
+ export function useMotion(own) {
8
+ const parent = useContext(Context);
9
+ return own ?? parent;
10
+ }
11
+ export function MotionProvider({ motion, children, }) {
12
+ const parent = useContext(Context);
13
+ return (_jsx(Context.Provider, { value: motion ?? parent, children: children }));
14
+ }
15
+ export function motionStyle(motion) {
16
+ if (motion === undefined)
17
+ return {};
18
+ const duration = motion === false ? 0 : motion === true ? 240 : (motion.duration ?? 240);
19
+ if (!Number.isFinite(duration) || duration < 0)
20
+ throw new Error("Motion duration must be finite and nonnegative milliseconds");
21
+ return {
22
+ "--watt-motion-duration": `${duration}ms`,
23
+ "--watt-motion-property": duration === 0 ? "none" : "initial",
24
+ "--watt-motion-easing": typeof motion === "object"
25
+ ? (motion.easing ?? "cubic-bezier(0.16, 1, 0.3, 1)")
26
+ : "cubic-bezier(0.16, 1, 0.3, 1)",
27
+ };
28
+ }
29
+ /** Bounded feedback only: never changes text, data, row geometry or DOM identity. */
30
+ export function animateMotion(element, frames) {
31
+ if (!element.animate || document.hidden || !element.getClientRects().length)
32
+ return noop;
33
+ const preference = window.matchMedia("(prefers-reduced-motion: reduce)");
34
+ if (preference.matches)
35
+ return noop;
36
+ const styles = getComputedStyle(element);
37
+ const time = styles.transitionDuration.split(",")[0] ?? "0s";
38
+ const duration = parseFloat(time) * (time.trim().endsWith("ms") ? 1 : 1000);
39
+ if (!(duration > 0))
40
+ return noop;
41
+ let animation;
42
+ try {
43
+ animation = element.animate(frames, {
44
+ duration,
45
+ easing: styles.transitionTimingFunction,
46
+ });
47
+ }
48
+ catch {
49
+ return noop; // A consumer's unsupported CSS easing must not block live readings.
50
+ }
51
+ const detach = () => {
52
+ preference.removeEventListener("change", stop);
53
+ document.removeEventListener("visibilitychange", onVisibility);
54
+ };
55
+ const stop = () => {
56
+ animation.cancel();
57
+ detach();
58
+ };
59
+ const onVisibility = () => {
60
+ if (document.hidden)
61
+ stop();
62
+ };
63
+ preference.addEventListener("change", stop);
64
+ document.addEventListener("visibilitychange", onVisibility);
65
+ animation.addEventListener("finish", detach, { once: true });
66
+ animation.addEventListener("cancel", detach, { once: true });
67
+ return stop;
68
+ }
69
+ export function highlightChange(element) {
70
+ const styles = getComputedStyle(element);
71
+ const background = styles.backgroundColor;
72
+ const accent = styles.getPropertyValue("--watt-accent").trim() || "#355dff";
73
+ return animateMotion(element, [
74
+ { backgroundColor: `color-mix(in srgb, ${accent} 10%, ${background})` },
75
+ { backgroundColor: background },
76
+ ]);
77
+ }
78
+ export function useChangeFeedback(ref, value, ownMotion) {
79
+ const motion = useMotion(ownMotion);
80
+ const duration = typeof motion === "object" ? motion.duration : undefined;
81
+ const easing = typeof motion === "object" ? motion.easing : undefined;
82
+ const previous = useRef(value);
83
+ useMotionEffect(() => {
84
+ const changed = !Object.is(previous.current, value);
85
+ previous.current = value;
86
+ if (changed && motion !== false && ref.current)
87
+ return highlightChange(ref.current);
88
+ }, [value, ref, motion === false, duration, easing]);
89
+ }
90
+ //# sourceMappingURL=motion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"motion.js","sourceRoot":"","sources":["../src/motion.tsx"],"names":[],"mappings":"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"}
package/dist/styles.css CHANGED
@@ -22,6 +22,8 @@
22
22
  --watt-warning: #996009;
23
23
  --watt-critical: #c43b40;
24
24
  --watt-radius: 12px;
25
+ --watt-motion-duration: 240ms;
26
+ --watt-motion-easing: cubic-bezier(0.16, 1, 0.3, 1);
25
27
  }
26
28
  .dark,
27
29
  [data-theme="dark"] {
@@ -39,9 +41,71 @@
39
41
  color: var(--watt-foreground);
40
42
  font-variant-numeric: tabular-nums;
41
43
  }
44
+ .watt-motion {
45
+ transition-property: none;
46
+ transition-duration: var(--watt-motion-duration, 240ms);
47
+ transition-timing-function: var(--watt-motion-easing, ease-out);
48
+ }
49
+ .watt-motion.watt-status {
50
+ transition-property: var(--watt-motion-property, color);
51
+ }
52
+ .watt-soc-fill {
53
+ transition-property: var(--watt-motion-property, width);
54
+ }
55
+ [data-slot="battery-soc"][data-invalid] .watt-soc-fill {
56
+ transition-duration: 0s;
57
+ }
58
+ [data-slot="asset-tree-row"] {
59
+ transition-property: var(--watt-motion-property, background-color);
60
+ }
61
+ [data-slot="asset-tree-row"][data-selected] {
62
+ background-color: color-mix(in srgb, var(--watt-accent) 8%, var(--watt-surface));
63
+ }
64
+ @media (hover: hover) {
65
+ [data-slot="asset-tree-row"]:hover:not([data-selected]) {
66
+ background-color: var(--watt-subtle);
67
+ }
68
+ [data-slot="asset-tree-row"][data-selected]:hover {
69
+ background-color: color-mix(in srgb, var(--watt-accent) 12%, var(--watt-surface));
70
+ }
71
+ .watt-chart-legend-toggle:hover {
72
+ background-color: var(--watt-subtle);
73
+ }
74
+ }
75
+ [data-slot="asset-tree-row"]:active:not([data-selected]) {
76
+ background-color: color-mix(in srgb, var(--watt-foreground) 7%, var(--watt-surface));
77
+ }
78
+ .watt-chart-legend-toggle {
79
+ min-height: 36px;
80
+ padding: 4px 6px;
81
+ border-radius: 6px;
82
+ transition-property: var(--watt-motion-property, background-color);
83
+ }
84
+ .watt-chart-legend-toggle:focus-visible {
85
+ outline: 2px solid var(--watt-accent);
86
+ outline-offset: 3px;
87
+ }
88
+ .watt-chart-legend-toggle:active {
89
+ background-color: var(--watt-border);
90
+ }
91
+ @media (pointer: coarse) {
92
+ .watt-chart-legend-toggle { min-height: 44px; }
93
+ }
94
+ [data-slot="asset-tree-indicator"] {
95
+ transition-property: var(--watt-motion-property, transform);
96
+ }
97
+ [data-slot="telemetry-chart-legend-marker"] {
98
+ transition-property: var(--watt-motion-property, background-color, scale);
99
+ }
100
+ .watt-chart-legend-toggle[aria-pressed="false"] {
101
+ text-decoration: line-through;
102
+ }
103
+ .watt-chart-legend-toggle[aria-pressed="false"]
104
+ [data-slot="telemetry-chart-legend-marker"] {
105
+ scale: 0.75;
106
+ }
42
107
  .watt-status {
43
108
  color: var(--watt-muted);
44
- transition: color 140ms ease-out;
45
109
  }
46
110
  .watt-status[data-status="normal"] {
47
111
  color: var(--watt-positive);
@@ -121,6 +185,10 @@
121
185
  }
122
186
  }
123
187
  @media (prefers-reduced-motion: reduce) {
188
+ .watt-motion {
189
+ transition-duration: 0s !important;
190
+ transition-property: none !important;
191
+ }
124
192
  .watt-status {
125
193
  transition: none;
126
194
  }
package/dist/types.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { HTMLAttributes } from "react";
1
+ import type { CSSProperties, HTMLAttributes } from "react";
2
2
  export type PowerUnit = "W" | "kW" | "MW";
3
3
  export type EnergyUnit = "Wh" | "kWh" | "MWh";
4
4
  export type MeasurementUnit = PowerUnit | EnergyUnit | "V" | "A" | "Hz" | "°C" | "%" | "W/m²";
@@ -6,6 +6,15 @@ export type Timestamp = string | number;
6
6
  export type DataQuality = "good" | "uncertain" | "stale" | "missing" | "bad" | "offline";
7
7
  export type EquipmentStatus = "normal" | "standby" | "stopped" | "warning" | "fault" | "offline";
8
8
  export type Density = "compact" | "comfortable";
9
+ export interface MotionOptions {
10
+ /** Duration in milliseconds; zero disables transitions. */
11
+ duration?: number;
12
+ easing?: CSSProperties["transitionTimingFunction"];
13
+ }
14
+ export type Motion = boolean | MotionOptions;
15
+ export interface MotionProps {
16
+ motion?: Motion;
17
+ }
9
18
  export interface PartProps extends HTMLAttributes<HTMLElement> {
10
19
  asChild?: boolean;
11
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,MAAM,MAAM,SAAS,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;AAC1C,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;AAC9C,MAAM,MAAM,eAAe,GACzB,SAAS,GAAG,UAAU,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC;AAClE,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AACxC,MAAM,MAAM,WAAW,GACrB,MAAM,GAAG,WAAW,GAAG,OAAO,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,CAAC;AACjE,MAAM,MAAM,eAAe,GACzB,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AACrE,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,aAAa,CAAC;AAChD,MAAM,WAAW,SAAU,SAAQ,cAAc,CAAC,WAAW,CAAC;IAC5D,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AACD,MAAM,WAAW,SAAU,SAAQ,SAAS;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AACD,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe;IACtE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,CAAC,CAAC;IACR,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB;AACD,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB;AACD,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,eAAe,EAAE,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AACD,MAAM,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAClD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;IAC1C,MAAM,EAAE,QAAQ,GAAG,cAAc,GAAG,UAAU,CAAC;IAC/C,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AACD,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;CACZ;AACD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AACD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IACjC,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@watt-ui/react",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "React components for energy and power dashboards",
5
5
  "homepage": "https://watt-ui.pages.dev",
6
6
  "license": "MIT",
@@ -1,15 +1,20 @@
1
1
  "use client";
2
2
  import { useComposedRefs } from "@radix-ui/react-compose-refs";
3
3
  import type { ForwardedRef, RefAttributes, ReactElement } from "react";
4
- import { forwardRef } from "react";
4
+ import { forwardRef, useEffect } from "react";
5
5
  import { useVirtualizer } from "@tanstack/react-virtual";
6
6
  import { useRef } from "react";
7
7
  import { cx, part } from "../internal.js";
8
- import type { AlarmEvent, Density } from "../types.js";
9
- export interface AlarmFeedProps<T extends AlarmEvent = AlarmEvent> extends Omit<
10
- React.HTMLAttributes<HTMLDivElement>,
11
- "children"
12
- > {
8
+ import type { AlarmEvent, Density, MotionProps } from "../types.js";
9
+ import {
10
+ MotionProvider,
11
+ motionStyle,
12
+ highlightChange,
13
+ useMotion,
14
+ } from "../motion.js";
15
+ export interface AlarmFeedProps<T extends AlarmEvent = AlarmEvent>
16
+ extends Omit<React.HTMLAttributes<HTMLDivElement>, "children">,
17
+ MotionProps {
13
18
  items: readonly T[];
14
19
  children: (item: T, index: number) => React.ReactNode;
15
20
  density?: Density;
@@ -27,6 +32,7 @@ function Root<T extends AlarmEvent>(
27
32
  rowHeight = 80,
28
33
  height = 400,
29
34
  empty,
35
+ motion,
30
36
  className,
31
37
  style,
32
38
  ...props
@@ -35,6 +41,28 @@ function Root<T extends AlarmEvent>(
35
41
  ) {
36
42
  const host = useRef<HTMLDivElement>(null);
37
43
  const hostRef = useComposedRefs(host, forwardedRef);
44
+ const previousItems = useRef(items);
45
+ const resolvedMotion = useMotion(motion);
46
+ const duration =
47
+ typeof resolvedMotion === "object" ? resolvedMotion.duration : undefined;
48
+ const easing =
49
+ typeof resolvedMotion === "object" ? resolvedMotion.easing : undefined;
50
+ useEffect(() => {
51
+ const old = previousItems.current;
52
+ previousItems.current = items;
53
+ if (old === items || resolvedMotion === false || !host.current) return;
54
+ const known = new Set(old.map((item) => item.id));
55
+ const added = new Set(
56
+ items.filter((item) => !known.has(item.id)).map((item) => item.id),
57
+ );
58
+ const stop: (() => void)[] = [];
59
+ for (const element of host.current.querySelectorAll<HTMLElement>(
60
+ "[data-slot=alarm-feed-item]",
61
+ ))
62
+ if (added.has(element.dataset.alarmId!))
63
+ stop.push(highlightChange(element));
64
+ return () => stop.forEach((cancel) => cancel());
65
+ }, [items, resolvedMotion === false, duration, easing]);
38
66
  const virtualizer = useVirtualizer({
39
67
  count: items.length,
40
68
  initialRect: { width: 0, height: virtualized ? height : 0 },
@@ -48,62 +76,69 @@ function Root<T extends AlarmEvent>(
48
76
  ? virtualizer.getVirtualItems()
49
77
  : items.map((item, index) => ({ key: item.id, index, start: 0 }));
50
78
  return (
51
- <div
52
- {...props}
53
- ref={hostRef}
54
- tabIndex={props.tabIndex ?? (virtualized ? 0 : undefined)}
55
- data-slot="alarm-feed"
56
- data-density={density}
57
- className={cx("watt-root overflow-auto", className)}
58
- style={{ ...(virtualized ? { height } : {}), ...style }}
59
- >
60
- {!items.length ? (
61
- empty
62
- ) : (
63
- <div
64
- role="list"
65
- style={
66
- virtualized
67
- ? { height: virtualizer.getTotalSize(), position: "relative" }
68
- : undefined
69
- }
70
- >
71
- {rows.map((row) => {
72
- const item = items[row.index]!;
73
- return (
74
- <div
75
- role="listitem"
76
- key={row.key}
77
- data-index={row.index}
78
- ref={virtualized ? virtualizer.measureElement : undefined}
79
- aria-posinset={row.index + 1}
80
- aria-setsize={items.length}
81
- data-slot="alarm-feed-item"
82
- data-severity={item.severity}
83
- data-state={item.status}
84
- className={cx(
85
- "border-b border-[var(--watt-border)] last:border-0",
86
- density === "compact" ? "py-2.5" : "py-4",
87
- )}
88
- style={
89
- virtualized
90
- ? {
91
- position: "absolute",
92
- top: 0,
93
- left: 0,
94
- width: "100%",
95
- transform: `translateY(${row.start}px)`,
96
- }
97
- : undefined
98
- }
99
- >
100
- {children(item, row.index)}
101
- </div>
102
- );
103
- })}
104
- </div>
105
- )}
106
- </div>
79
+ <MotionProvider motion={motion}>
80
+ <div
81
+ {...props}
82
+ ref={hostRef}
83
+ tabIndex={props.tabIndex ?? (virtualized ? 0 : undefined)}
84
+ data-slot="alarm-feed"
85
+ data-density={density}
86
+ className={cx("watt-root overflow-auto", className)}
87
+ style={{
88
+ ...(virtualized ? { height } : {}),
89
+ ...style,
90
+ ...motionStyle(motion),
91
+ }}
92
+ >
93
+ {!items.length ? (
94
+ empty
95
+ ) : (
96
+ <div
97
+ role="list"
98
+ style={
99
+ virtualized
100
+ ? { height: virtualizer.getTotalSize(), position: "relative" }
101
+ : undefined
102
+ }
103
+ >
104
+ {rows.map((row) => {
105
+ const item = items[row.index]!;
106
+ return (
107
+ <div
108
+ role="listitem"
109
+ key={row.key}
110
+ data-index={row.index}
111
+ ref={virtualized ? virtualizer.measureElement : undefined}
112
+ aria-posinset={row.index + 1}
113
+ aria-setsize={items.length}
114
+ data-slot="alarm-feed-item"
115
+ data-alarm-id={item.id}
116
+ data-severity={item.severity}
117
+ data-state={item.status}
118
+ className={cx(
119
+ "watt-motion border-b border-[var(--watt-border)] last:border-0",
120
+ density === "compact" ? "py-2.5" : "py-4",
121
+ )}
122
+ style={
123
+ virtualized
124
+ ? {
125
+ position: "absolute",
126
+ top: 0,
127
+ left: 0,
128
+ width: "100%",
129
+ transform: `translateY(${row.start}px)`,
130
+ }
131
+ : undefined
132
+ }
133
+ >
134
+ {children(item, row.index)}
135
+ </div>
136
+ );
137
+ })}
138
+ </div>
139
+ )}
140
+ </div>
141
+ </MotionProvider>
107
142
  );
108
143
  }
109
144
  const Severity = forwardRef<