@xeonr/platform-ui 1.5.1 → 1.6.0

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 (94) hide show
  1. package/dist/index.d.ts +12 -5
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +12 -3
  4. package/dist/index.js.map +1 -1
  5. package/dist/kit/Anchored.d.ts.map +1 -1
  6. package/dist/kit/Anchored.js +4 -1
  7. package/dist/kit/Anchored.js.map +1 -1
  8. package/dist/kit/Blocks.d.ts +6 -1
  9. package/dist/kit/Blocks.d.ts.map +1 -1
  10. package/dist/kit/Blocks.js +13 -2
  11. package/dist/kit/Blocks.js.map +1 -1
  12. package/dist/kit/Card.d.ts +6 -1
  13. package/dist/kit/Card.d.ts.map +1 -1
  14. package/dist/kit/Card.js +19 -4
  15. package/dist/kit/Card.js.map +1 -1
  16. package/dist/kit/Charts.d.ts +39 -3
  17. package/dist/kit/Charts.d.ts.map +1 -1
  18. package/dist/kit/Charts.js +70 -15
  19. package/dist/kit/Charts.js.map +1 -1
  20. package/dist/kit/CommandPalette.d.ts +47 -0
  21. package/dist/kit/CommandPalette.d.ts.map +1 -0
  22. package/dist/kit/CommandPalette.js +204 -0
  23. package/dist/kit/CommandPalette.js.map +1 -0
  24. package/dist/kit/DataTable.d.ts +18 -2
  25. package/dist/kit/DataTable.d.ts.map +1 -1
  26. package/dist/kit/DataTable.js +45 -6
  27. package/dist/kit/DataTable.js.map +1 -1
  28. package/dist/kit/Editable.d.ts +30 -0
  29. package/dist/kit/Editable.d.ts.map +1 -1
  30. package/dist/kit/Editable.js +150 -3
  31. package/dist/kit/Editable.js.map +1 -1
  32. package/dist/kit/EmptyState.d.ts +9 -2
  33. package/dist/kit/EmptyState.d.ts.map +1 -1
  34. package/dist/kit/EmptyState.js +16 -2
  35. package/dist/kit/EmptyState.js.map +1 -1
  36. package/dist/kit/GroupedMultiSelect.d.ts +57 -0
  37. package/dist/kit/GroupedMultiSelect.d.ts.map +1 -0
  38. package/dist/kit/GroupedMultiSelect.js +219 -0
  39. package/dist/kit/GroupedMultiSelect.js.map +1 -0
  40. package/dist/kit/List.d.ts +18 -1
  41. package/dist/kit/List.d.ts.map +1 -1
  42. package/dist/kit/List.js +38 -10
  43. package/dist/kit/List.js.map +1 -1
  44. package/dist/kit/LogView.d.ts +39 -3
  45. package/dist/kit/LogView.d.ts.map +1 -1
  46. package/dist/kit/LogView.js +52 -10
  47. package/dist/kit/LogView.js.map +1 -1
  48. package/dist/kit/Marker.d.ts +19 -0
  49. package/dist/kit/Marker.d.ts.map +1 -1
  50. package/dist/kit/Marker.js +50 -0
  51. package/dist/kit/Marker.js.map +1 -1
  52. package/dist/kit/Modal.d.ts +13 -3
  53. package/dist/kit/Modal.d.ts.map +1 -1
  54. package/dist/kit/Modal.js +39 -9
  55. package/dist/kit/Modal.js.map +1 -1
  56. package/dist/kit/Panel.d.ts +21 -0
  57. package/dist/kit/Panel.d.ts.map +1 -1
  58. package/dist/kit/Panel.js +36 -0
  59. package/dist/kit/Panel.js.map +1 -1
  60. package/dist/kit/PipelineFlow.d.ts +44 -0
  61. package/dist/kit/PipelineFlow.d.ts.map +1 -0
  62. package/dist/kit/PipelineFlow.js +171 -0
  63. package/dist/kit/PipelineFlow.js.map +1 -0
  64. package/dist/kit/Popover.d.ts.map +1 -1
  65. package/dist/kit/Popover.js +4 -1
  66. package/dist/kit/Popover.js.map +1 -1
  67. package/dist/kit/Reorder.d.ts +54 -0
  68. package/dist/kit/Reorder.d.ts.map +1 -0
  69. package/dist/kit/Reorder.js +171 -0
  70. package/dist/kit/Reorder.js.map +1 -0
  71. package/dist/kit/Stat.d.ts +38 -5
  72. package/dist/kit/Stat.d.ts.map +1 -1
  73. package/dist/kit/Stat.js +99 -11
  74. package/dist/kit/Stat.js.map +1 -1
  75. package/dist/kit/Tooltip.d.ts.map +1 -1
  76. package/dist/kit/Tooltip.js +5 -2
  77. package/dist/kit/Tooltip.js.map +1 -1
  78. package/dist/theme/ThemeScope.d.ts +30 -0
  79. package/dist/theme/ThemeScope.d.ts.map +1 -0
  80. package/dist/theme/ThemeScope.js +61 -0
  81. package/dist/theme/ThemeScope.js.map +1 -0
  82. package/dist/theme/brand.d.ts +2 -1
  83. package/dist/theme/brand.d.ts.map +1 -1
  84. package/dist/theme/brand.js +10 -6
  85. package/dist/theme/brand.js.map +1 -1
  86. package/dist/theme/scope.d.ts +23 -0
  87. package/dist/theme/scope.d.ts.map +1 -0
  88. package/dist/theme/scope.js +32 -0
  89. package/dist/theme/scope.js.map +1 -0
  90. package/dist/theme/tokens.d.ts +2 -1
  91. package/dist/theme/tokens.d.ts.map +1 -1
  92. package/dist/theme/tokens.js +65 -100
  93. package/dist/theme/tokens.js.map +1 -1
  94. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PipelineFlow.js","sourceRoot":"","sources":["../../src/kit/PipelineFlow.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Popover.d.ts","sourceRoot":"","sources":["../../src/kit/Popover.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgD,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AA0CrF,eAAO,MAAM,WAAW;;WAgBvB,CAAC;AAEF,eAAO,MAAM,WAAW;;;aAAyB,OAAO,GAAG,SAAS;YAMnE,CAAC;AAEF,eAAO,MAAM,WAAW;;WAKvB,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,YAAY;;WAIxB,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,uEAAuE;IACvE,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,uEAAuE;IACvE,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,mDAAmD;IACnD,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B;;;;OAIG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IACvD;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC/C,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAW,EAAE,IAAW,EAAE,KAAK,EAAE,IAAe,EAAE,KAAe,EAAE,QAAQ,EAAE,EAAE,YAAY,+BAiE5I"}
1
+ {"version":3,"file":"Popover.d.ts","sourceRoot":"","sources":["../../src/kit/Popover.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgD,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AA2CrF,eAAO,MAAM,WAAW;;WAgBvB,CAAC;AAEF,eAAO,MAAM,WAAW;;;aAAyB,OAAO,GAAG,SAAS;YAMnE,CAAC;AAEF,eAAO,MAAM,WAAW;;WAKvB,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,YAAY;;WAIxB,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,uEAAuE;IACvE,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,uEAAuE;IACvE,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,mDAAmD;IACnD,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B;;;;OAIG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IACvD;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC/C,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAW,EAAE,IAAW,EAAE,KAAK,EAAE,IAAe,EAAE,KAAe,EAAE,QAAQ,EAAE,EAAE,YAAY,+BAmE5I"}
@@ -1,6 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useEffect, useLayoutEffect, useRef, useState } from "react";
3
3
  import { createPortal } from "react-dom";
4
+ import { usePortalTarget } from "../theme/ThemeScope.js";
4
5
  import styled from "styled-components";
5
6
  import { v } from "../theme/tokens.js";
6
7
  import { useEscapeLayer } from "./layers.js";
@@ -75,6 +76,8 @@ export const PopoverGroup = styled.div `
75
76
  `;
76
77
  export function Popover({ anchor, onClose, label, width = 268, flip = true, sheet, side = "bottom", align = "start", children }) {
77
78
  const ref = useRef(null);
79
+ // the nearest ThemeScope's host, or body (CON-148)
80
+ const portalTarget = usePortalTarget();
78
81
  const [pos, setPos] = useState({ top: anchor.bottom + 4, left: anchor.left });
79
82
  // Escape closes this before any drawer or modal it sits in (CON-59)
80
83
  useEscapeLayer(true, onClose);
@@ -130,6 +133,6 @@ export function Popover({ anchor, onClose, label, width = 268, flip = true, shee
130
133
  window.clearTimeout(id);
131
134
  };
132
135
  }, [onClose]);
133
- return createPortal(_jsx(Sheet, { ref: ref, "$width": width, "$sheet": sheet, "$raised": raised, style: { top: pos.top, left: pos.left }, role: "dialog", "aria-label": label, children: children }), document.body);
136
+ return createPortal(_jsx(Sheet, { ref: ref, "$width": width, "$sheet": sheet, "$raised": raised, style: { top: pos.top, left: pos.left }, role: "dialog", "aria-label": label, children: children }), portalTarget ?? document.body);
134
137
  }
135
138
  //# sourceMappingURL=Popover.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Popover.js","sourceRoot":"","sources":["../../src/kit/Popover.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Popover.js","sourceRoot":"","sources":["../../src/kit/Popover.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import { type ReactNode } from "react";
2
+ type MarkerTone = "brand" | "info" | "warn";
3
+ /** The line between two rows, and how it moves. */
4
+ export type ReorderMarker<T> = {
5
+ /** the index of the row the line sits under; null draws no line */
6
+ after: number | null;
7
+ /** the line moved (to under row `after`) or, with null, was cleared */
8
+ onMove: (after: number | null) => void;
9
+ /** what the line says */
10
+ label: ReactNode;
11
+ /** the line's name in button labels and announcements, e.g. "Cutoff" */
12
+ name: string;
13
+ tone?: MarkerTone | undefined;
14
+ /** which rows can hold the line (default: every row) */
15
+ canHold?: ((item: T, index: number) => boolean) | undefined;
16
+ /** the offer, revealed on a row's hover or focus, to put the line under it; omit for none */
17
+ placeLabel?: ReactNode | undefined;
18
+ /** whether the line has a clear button */
19
+ clearable?: boolean | undefined;
20
+ };
21
+ export type ReorderListProps<T> = {
22
+ items: T[];
23
+ /** the whole list in its new order; `from` and `to` are the moved row's indexes */
24
+ onReorder: (next: T[], move: {
25
+ from: number;
26
+ to: number;
27
+ }) => void;
28
+ /** a stable key per item — React keeps a moved row's DOM, so its fields keep focus */
29
+ itemKey: (item: T, index: number) => string;
30
+ /** the row's name in plain text, for button labels and announcements */
31
+ itemLabel: (item: T, index: number) => string;
32
+ /** the row's content */
33
+ render: (item: T, index: number) => ReactNode;
34
+ /** an inline field after the content — a ceiling, a weight, a toggle */
35
+ field?: ((item: T, index: number) => ReactNode) | undefined;
36
+ /** trailing actions (remove, overflow menu) */
37
+ actions?: ((item: T, index: number) => ReactNode) | undefined;
38
+ /** dim a row that is in the list but out of play (excluded, disabled) */
39
+ dim?: ((item: T, index: number) => boolean) | undefined;
40
+ marker?: ReorderMarker<T> | undefined;
41
+ /** reveal the move buttons only on hover or focus — for a long list where they would crowd it */
42
+ quiet?: boolean | undefined;
43
+ disabled?: boolean | undefined;
44
+ "aria-label"?: string | undefined;
45
+ };
46
+ /**
47
+ * ReorderList: a controlled, keyboard-accessible ordered list. Each row has
48
+ * up/down buttons (and Alt+↑/↓ from anywhere in the row); every move is
49
+ * announced. Optionally a marker line between rows that moves on its own, an
50
+ * inline field per row, and trailing actions.
51
+ */
52
+ export declare function ReorderList<T>({ items, onReorder, itemKey, itemLabel, render, field, actions, dim, marker, quiet, disabled, "aria-label": ariaLabel, }: ReorderListProps<T>): import("react").JSX.Element;
53
+ export {};
54
+ //# sourceMappingURL=Reorder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Reorder.d.ts","sourceRoot":"","sources":["../../src/kit/Reorder.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAyD,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AA8D9F,KAAK,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAiC5C,mDAAmD;AACnD,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI;IAC7B,mEAAmE;IACnE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,uEAAuE;IACvE,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACvC,yBAAyB;IACzB,KAAK,EAAE,SAAS,CAAC;IACjB,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IAC9B,wDAAwD;IACxD,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,SAAS,CAAC;IAC5D,6FAA6F;IAC7F,UAAU,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IACnC,0CAA0C;IAC1C,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI;IAChC,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,mFAAmF;IACnF,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACnE,sFAAsF;IACtF,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC5C,wEAAwE;IACxE,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9C,wBAAwB;IACxB,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;IAC9C,wEAAwE;IACxE,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC,GAAG,SAAS,CAAC;IAC5D,+CAA+C;IAC/C,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC,GAAG,SAAS,CAAC;IAC9D,yEAAyE;IACzE,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,SAAS,CAAC;IACxD,MAAM,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IACtC,iGAAiG;IACjG,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,EAC7B,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,GACpH,EAAE,gBAAgB,CAAC,CAAC,CAAC,+BAiIrB"}
@@ -0,0 +1,171 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useLayoutEffect, useRef, useState } from "react";
3
+ import styled, { css } from "styled-components";
4
+ import { v } from "../theme/tokens.js";
5
+ import { IconButton } from "./Button.js";
6
+ import { Icon } from "./Icon.js";
7
+ // An ordered list whose order is the setting: a quality ladder, a provider
8
+ // preference, a fallback chain. RepeaterRows adds and removes; this moves.
9
+ // Up/down buttons rather than drag — they work from the keyboard and on a
10
+ // phone, and a list of three to ten rows is a click or two either way. Alt+↑/↓
11
+ // moves the row that holds focus without leaving the field it is in.
12
+ //
13
+ // The marker is a line between two rows that moves on its own — XMB's
14
+ // "upgrade until here" cutoff. It names a position, not an item: the caller
15
+ // decides what it means and whether it follows an item when rows move.
16
+ const Wrap = styled.div `
17
+ display: flex;
18
+ flex-direction: column;
19
+ border: 1px solid ${v.line};
20
+ border-radius: ${v.rCard};
21
+ background: ${v.surface};
22
+ `;
23
+ const Item = styled.div `
24
+ border-bottom: 1px solid ${v.line};
25
+ &:last-of-type { border-bottom: none; }
26
+ `;
27
+ const RowEl = styled.div `
28
+ display: flex;
29
+ align-items: center;
30
+ gap: 10px;
31
+ padding: 6px 12px 6px 6px;
32
+ font-size: 12.5px;
33
+ color: ${(p) => (p.$dim ? v.faint : v.text)};
34
+ &:hover .reorder-reveal, &:focus-within .reorder-reveal { opacity: 1; }
35
+ `;
36
+ const Moves = styled.div `
37
+ flex: none;
38
+ display: grid;
39
+ gap: 1px;
40
+ ${(p) => p.$quiet && css `opacity: 0; transition: opacity 0.14s ease; &:focus-within { opacity: 1; }`}
41
+ > button { width: 26px; height: 18px; font-size: 11px; }
42
+ > button:disabled { opacity: 0.35; cursor: default; }
43
+ `;
44
+ const Body = styled.div `flex: 1 1 auto; min-width: 0;`;
45
+ const Slot = styled.div `flex: none; display: flex; align-items: center; gap: 6px;`;
46
+ const Place = styled.button `
47
+ flex: none;
48
+ /* every row keeps the slot, so the fields after it line up down the list */
49
+ ${(p) => p.$held && css `visibility: hidden;`}
50
+ font-size: 11.5px;
51
+ color: ${v.faint};
52
+ opacity: 0;
53
+ transition: opacity 0.14s ease;
54
+ &:hover, &:focus-visible { opacity: 1; color: ${v.brand}; }
55
+ `;
56
+ const markerTones = {
57
+ brand: { ink: v.brand, bg: v.brand08 },
58
+ info: { ink: v.info, bg: v.infoBg },
59
+ warn: { ink: v.warning, bg: v.warningBg },
60
+ };
61
+ const MarkerEl = styled.div `
62
+ display: flex;
63
+ align-items: center;
64
+ gap: 10px;
65
+ margin: 6px 8px;
66
+ padding: 4px 8px 4px 0;
67
+ border: 1px dashed ${(p) => markerTones[p.$tone].ink};
68
+ border-radius: ${v.rCtl};
69
+ background: ${(p) => markerTones[p.$tone].bg};
70
+ color: ${(p) => markerTones[p.$tone].ink};
71
+ font-size: 12px;
72
+ > ${Moves} { padding-left: 4px; }
73
+ > ${Moves} > button, > .marker-clear { color: inherit; }
74
+ `;
75
+ // Visually hidden, read by assistive tech: the sentence a sighted person gets
76
+ // from watching the row jump.
77
+ const Announce = styled.span `
78
+ position: absolute;
79
+ width: 1px;
80
+ height: 1px;
81
+ overflow: hidden;
82
+ clip: rect(0 0 0 0);
83
+ white-space: nowrap;
84
+ `;
85
+ /**
86
+ * ReorderList: a controlled, keyboard-accessible ordered list. Each row has
87
+ * up/down buttons (and Alt+↑/↓ from anywhere in the row); every move is
88
+ * announced. Optionally a marker line between rows that moves on its own, an
89
+ * inline field per row, and trailing actions.
90
+ */
91
+ export function ReorderList({ items, onReorder, itemKey, itemLabel, render, field, actions, dim, marker, quiet, disabled, "aria-label": ariaLabel, }) {
92
+ const [said, setSaid] = useState("");
93
+ const rows = useRef(new Map());
94
+ const markerEl = useRef(null);
95
+ // A moved row can lose focus when React re-inserts it, the button that
96
+ // moved it to the top is now disabled, and the marker's buttons remount
97
+ // under another row. Put focus back after the commit.
98
+ const refocus = useRef(null);
99
+ useLayoutEffect(() => {
100
+ const pending = refocus.current;
101
+ if (!pending)
102
+ return;
103
+ refocus.current = null;
104
+ const el = pending.el;
105
+ if (el && el.isConnected && !el.disabled) {
106
+ if (document.activeElement !== el)
107
+ el.focus();
108
+ return;
109
+ }
110
+ // the same direction's button if it can still move, else the other's
111
+ const box = pending.within();
112
+ const same = box?.querySelector(`[data-move="${pending.dir === -1 ? "up" : "down"}"]`);
113
+ const other = box?.querySelector(`[data-move="${pending.dir === -1 ? "down" : "up"}"]`);
114
+ (same && !same.disabled ? same : other)?.focus();
115
+ });
116
+ const n = items.length;
117
+ const holds = (i) => i >= 0 && i < n && (marker?.canHold ? marker.canHold(items[i], i) : true);
118
+ const move = (from, dir) => {
119
+ const to = from + dir;
120
+ if (disabled || to < 0 || to >= n)
121
+ return;
122
+ const next = items.slice();
123
+ const [it] = next.splice(from, 1);
124
+ next.splice(to, 0, it);
125
+ const key = itemKey(it, from);
126
+ refocus.current = { el: document.activeElement, within: () => rows.current.get(key), dir };
127
+ setSaid(`${itemLabel(it, from)} moved to position ${to + 1} of ${n}.`);
128
+ onReorder(next, { from, to });
129
+ };
130
+ // The marker steps to the next row that can hold it.
131
+ const markerStep = (dir) => {
132
+ if (marker?.after == null)
133
+ return null;
134
+ for (let i = marker.after + dir; i >= 0 && i < n; i += dir)
135
+ if (holds(i))
136
+ return i;
137
+ return null;
138
+ };
139
+ const placeMarker = (after, dir) => {
140
+ if (!marker || disabled)
141
+ return;
142
+ if (dir)
143
+ refocus.current = { el: null, within: () => markerEl.current, dir };
144
+ setSaid(after === null ? `${marker.name} removed.` : `${marker.name} moved under ${itemLabel(items[after], after)}.`);
145
+ marker.onMove(after);
146
+ };
147
+ const onRowKey = (i) => (e) => {
148
+ if (!e.altKey || (e.key !== "ArrowUp" && e.key !== "ArrowDown"))
149
+ return;
150
+ e.preventDefault();
151
+ move(i, e.key === "ArrowUp" ? -1 : 1);
152
+ };
153
+ const markerRow = () => {
154
+ if (!marker || marker.after === null)
155
+ return null;
156
+ const up = markerStep(-1);
157
+ const down = markerStep(1);
158
+ return (_jsxs(MarkerEl, { ref: markerEl, "$tone": marker.tone ?? "brand", role: "separator", "aria-label": marker.name, children: [_jsxs(Moves, { "$quiet": false, children: [_jsx(IconButton, { "data-move": "up", "aria-label": `Move ${marker.name} up`, disabled: disabled || up === null, onClick: () => placeMarker(up, -1), children: _jsx(Icon, { name: "chevron-up" }) }), _jsx(IconButton, { "data-move": "down", "aria-label": `Move ${marker.name} down`, disabled: disabled || down === null, onClick: () => placeMarker(down, 1), children: _jsx(Icon, { name: "chevron-down" }) })] }), _jsx(Body, { children: marker.label }), marker.clearable ? (_jsx(IconButton, { className: "marker-clear", "$size": 24, "aria-label": `Remove ${marker.name}`, disabled: disabled, onClick: () => placeMarker(null), children: _jsx(Icon, { name: "close" }) })) : null] }));
159
+ };
160
+ return (_jsxs(Wrap, { role: "list", "aria-label": ariaLabel, children: [items.map((item, i) => {
161
+ const key = itemKey(item, i);
162
+ const label = itemLabel(item, i);
163
+ const offer = marker?.placeLabel !== undefined && marker.after !== i && holds(i);
164
+ const offerSlot = marker?.placeLabel !== undefined;
165
+ return (_jsxs(Item, { role: "listitem", children: [_jsxs(RowEl, { ref: (el) => { if (el)
166
+ rows.current.set(key, el);
167
+ else
168
+ rows.current.delete(key); }, "$dim": dim?.(item, i), onKeyDown: onRowKey(i), children: [_jsxs(Moves, { "$quiet": quiet, className: quiet ? "reorder-reveal" : undefined, children: [_jsx(IconButton, { "data-move": "up", "aria-label": `Move ${label} up`, disabled: disabled || i === 0, onClick: () => move(i, -1), children: _jsx(Icon, { name: "chevron-up" }) }), _jsx(IconButton, { "data-move": "down", "aria-label": `Move ${label} down`, disabled: disabled || i === n - 1, onClick: () => move(i, 1), children: _jsx(Icon, { name: "chevron-down" }) })] }), _jsx(Body, { children: render(item, i) }), field ? _jsx(Slot, { children: field(item, i) }) : null, offerSlot ? (_jsx(Place, { type: "button", className: "reorder-reveal", "$held": !offer, "aria-hidden": offer ? undefined : true, tabIndex: offer ? undefined : -1, disabled: disabled || !offer, onClick: () => placeMarker(i), children: marker?.placeLabel })) : null, actions ? _jsx(Slot, { children: actions(item, i) }) : null] }), marker?.after === i ? markerRow() : null] }, key));
169
+ }), _jsx(Announce, { role: "status", "aria-live": "polite", children: said })] }));
170
+ }
171
+ //# sourceMappingURL=Reorder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Reorder.js","sourceRoot":"","sources":["../../src/kit/Reorder.tsx"],"names":[],"mappings":"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"}
@@ -13,23 +13,56 @@ export declare function StatValue({ label, value, sub, tone }: {
13
13
  tone?: "ok" | "warn" | "crit" | "brand" | undefined;
14
14
  }): import("react").JSX.Element;
15
15
  /** StatTile: label over a big number, with an optional subline. */
16
- export declare function StatTile({ label, value, sub, tone, icon, to }: {
16
+ export declare function StatTile({ label, value, sub, subTone, emphasis, tone, icon, to }: {
17
17
  label: ReactNode;
18
18
  value: ReactNode;
19
19
  sub?: ReactNode | undefined;
20
+ /** tints the subline — the footnote that is the bad news ("3 need attention") */
21
+ subTone?: "ok" | "warn" | "crit" | undefined;
22
+ /** washes the whole tile (border and ground) in the accent, or in `tone`'s
23
+ * colour when it has one — the tile that needs looking at */
24
+ emphasis?: boolean | undefined;
20
25
  tone?: "ok" | "warn" | "crit" | "brand" | undefined;
21
26
  /** a brand-tinted glyph beside the label */
22
27
  icon?: IconName | undefined;
23
28
  /** the tile is also the way in: a router link to the section it counts */
24
29
  to?: string | undefined;
25
30
  }): import("react").JSX.Element;
26
- /** Meter: value out of max as a bar; tone defaults from the ratio. */
27
- export declare function Meter({ value, max, tone, label, width }: {
31
+ type MeterTone = "ok" | "warn" | "crit" | "brand" | "info" | "mut";
32
+ export interface MeterSegment {
28
33
  value: number;
34
+ tone: MeterTone;
35
+ /** accessible name of the segment (also its tooltip) */
36
+ label?: string | undefined;
37
+ /** part of the previous top-level segment: drawn as the leading part of that span, over it, rather than after it */
38
+ nested?: boolean | undefined;
39
+ }
40
+ export interface MeterProps {
41
+ value?: number | undefined;
29
42
  max: number;
30
- tone?: "ok" | "warn" | "crit" | "brand" | undefined;
43
+ tone?: MeterTone | undefined;
31
44
  label?: string | undefined;
32
45
  /** fixed width in px (inside a table cell); fills the container otherwise */
33
46
  width?: number | undefined;
34
- }): import("react").JSX.Element;
47
+ segments?: MeterSegment[] | undefined;
48
+ tall?: boolean | undefined;
49
+ indeterminate?: boolean | undefined;
50
+ /** a caption above the bar ("/data"); `label` stays the accessible name */
51
+ head?: ReactNode | undefined;
52
+ /** a caption below the bar ("312 GB of 500 GB used") */
53
+ foot?: ReactNode | undefined;
54
+ }
55
+ /**
56
+ * Meter: value out of max as a bar; tone defaults from the ratio.
57
+ *
58
+ * `segments` replaces `value` with several spans that read left to right, each
59
+ * starting where the last top-level one ended. A `nested` segment is part of the
60
+ * span before it and is drawn as that span's leading part, over it — the way a
61
+ * "held" figure sits inside "committed" (stacking both from the left would paint
62
+ * the larger last and hide the smaller). `tall` is the detail-page height,
63
+ * `indeterminate` a sweeping bar for work with no figure yet. `head` and `foot`
64
+ * are captions above and below the bar; `label` stays its accessible name.
65
+ */
66
+ export declare function Meter({ head, foot, ...props }: MeterProps): import("react").JSX.Element;
67
+ export {};
35
68
  //# sourceMappingURL=Stat.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Stat.d.ts","sourceRoot":"","sources":["../../src/kit/Stat.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKvC,OAAO,EAAQ,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAIjD,eAAO,MAAM,QAAQ;;;WAAuB,MAAM,GAAG,SAAS;YAI7D,CAAC;AA6BF,0FAA0F;AAC1F,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;IACrD,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,SAAS,CAAC;IACjB,GAAG,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC5B,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;CACrD,+BAQA;AAED,mEAAmE;AACnE,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE;IAC9D,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,SAAS,CAAC;IACjB,GAAG,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC5B,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IACpD,4CAA4C;IAC5C,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC5B,0EAA0E;IAC1E,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACzB,+BAeA;AAoCD,sEAAsE;AACtE,wBAAgB,KAAK,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IACpD,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B,+BAQA"}
1
+ {"version":3,"file":"Stat.d.ts","sourceRoot":"","sources":["../../src/kit/Stat.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKvC,OAAO,EAAQ,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAIjD,eAAO,MAAM,QAAQ;;;WAAuB,MAAM,GAAG,SAAS;YAI7D,CAAC;AAyCF,0FAA0F;AAC1F,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;IACrD,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,SAAS,CAAC;IACjB,GAAG,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC5B,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;CACrD,+BAQA;AAED,mEAAmE;AACnE,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE;IACjF,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,SAAS,CAAC;IACjB,GAAG,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC5B,iFAAiF;IACjF,OAAO,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAC7C;kEAC8D;IAC9D,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IACpD,4CAA4C;IAC5C,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC5B,0EAA0E;IAC1E,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACzB,+BAgBA;AAsBD,KAAK,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;AA2CnE,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,CAAC;IAChB,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,oHAAoH;IACpH,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC9B;AAyBD,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,QAAQ,CAAC,EAAE,YAAY,EAAE,GAAG,SAAS,CAAC;IACtC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC,2EAA2E;IAC3E,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC7B,wDAAwD;IACxD,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;CAC9B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,UAAU,+BASzD"}
package/dist/kit/Stat.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import styled, { css } from "styled-components";
2
+ import styled, { css, keyframes } from "styled-components";
3
3
  import { Link } from "react-router-dom";
4
4
  import { v } from "../theme/tokens.js";
5
5
  import { Panel } from "./Panel.js";
@@ -20,11 +20,17 @@ const tileCss = css `
20
20
  border-radius: ${v.rPanel};
21
21
  background: ${v.surface};
22
22
  `;
23
+ const washCss = (w) => w &&
24
+ css `
25
+ border-color: ${w === "ok" ? v.success : w === "warn" ? v.warning : w === "crit" ? v.danger : v.brand55};
26
+ background: ${w === "ok" ? v.successBg : w === "warn" ? v.warningBg : w === "crit" ? v.dangerBg : v.brand08};
27
+ `;
23
28
  const Tile = styled(Panel) `
24
29
  padding: 12px 14px;
25
30
  display: flex;
26
31
  flex-direction: column;
27
32
  gap: 6px;
33
+ ${(p) => washCss(p.$wash)}
28
34
  `;
29
35
  const Value = styled.span `
30
36
  font-size: 22px;
@@ -33,15 +39,19 @@ const Value = styled.span `
33
39
  font-variant-numeric: tabular-nums;
34
40
  color: ${(p) => (p.$tone === "ok" ? v.success : p.$tone === "warn" ? v.warning : p.$tone === "crit" ? v.danger : p.$tone === "brand" ? v.brand : v.text)};
35
41
  `;
36
- const Sub = styled.span `font-size: 11px; color: ${v.faint};`;
42
+ const Sub = styled.span `
43
+ font-size: 11px;
44
+ color: ${(p) => (p.$tone === "ok" ? v.success : p.$tone === "warn" ? v.warning : p.$tone === "crit" ? v.danger : v.faint)};
45
+ `;
37
46
  /** StatValue: label over a big number with no tile chrome (mini-stats inside a panel). */
38
47
  export function StatValue({ label, value, sub, tone }) {
39
48
  return (_jsxs("span", { style: { display: "flex", flexDirection: "column", gap: 4 }, children: [_jsx(MicroLabel, { children: label }), _jsx(Value, { "$tone": tone, children: value }), sub ? _jsx(Sub, { children: sub }) : null] }));
40
49
  }
41
50
  /** StatTile: label over a big number, with an optional subline. */
42
- export function StatTile({ label, value, sub, tone, icon, to }) {
43
- const body = (_jsxs(_Fragment, { children: [_jsxs(Head, { children: [_jsxs(MicroLabel, { children: [icon ? _jsx(Glyph, { children: _jsx(Icon, { name: icon }) }) : null, label] }), to ? _jsx(Go, { children: _jsx(Icon, { name: "arrow-right" }) }) : null] }), _jsx(Value, { "$tone": tone, children: value }), sub ? _jsx(Sub, { children: sub }) : null] }));
44
- return to ? _jsx(TileLink, { to: to, children: body }) : _jsx(Tile, { children: body });
51
+ export function StatTile({ label, value, sub, subTone, emphasis, tone, icon, to }) {
52
+ const body = (_jsxs(_Fragment, { children: [_jsxs(Head, { children: [_jsxs(MicroLabel, { children: [icon ? _jsx(Glyph, { children: _jsx(Icon, { name: icon }) }) : null, label] }), to ? _jsx(Go, { children: _jsx(Icon, { name: "arrow-right" }) }) : null] }), _jsx(Value, { "$tone": tone, children: value }), sub ? _jsx(Sub, { "$tone": subTone, children: sub }) : null] }));
53
+ const wash = emphasis ? (tone ?? "brand") : undefined;
54
+ return to ? _jsx(TileLink, { to: to, "$wash": wash, children: body }) : _jsx(Tile, { "$wash": wash, children: body });
45
55
  }
46
56
  const Head = styled.div `
47
57
  display: flex;
@@ -58,10 +68,13 @@ const TileLink = styled(Link) `
58
68
  color: inherit;
59
69
  transition: border-color 0.14s ease, background 0.14s ease;
60
70
  &:hover { border-color: ${v.line2}; background: ${v.surface2}; }
71
+ ${(p) => washCss(p.$wash)}
61
72
  `;
73
+ const meterFill = (t) => t === "ok" ? v.success : t === "warn" ? v.warning : t === "crit" ? v.danger : t === "info" ? v.info : t === "mut" ? v.faint : v.grad90;
62
74
  const Bar = styled.div `
75
+ position: relative;
63
76
  ${(p) => p.$w && css `width: ${p.$w}px;`}
64
- height: 6px;
77
+ height: ${(p) => (p.$tall ? "10px" : "6px")};
65
78
  border-radius: 999px;
66
79
  background: ${v.field};
67
80
  border: 1px solid ${v.fieldLine};
@@ -70,13 +83,88 @@ const Bar = styled.div `
70
83
  const Fill = styled.div `
71
84
  height: 100%;
72
85
  width: ${(p) => p.$pct}%;
73
- background: ${(p) => (p.$tone === "ok" ? v.success : p.$tone === "warn" ? v.warning : p.$tone === "crit" ? v.danger : v.grad90)};
86
+ background: ${(p) => meterFill(p.$tone)};
74
87
  transition: width 0.3s ease;
75
88
  `;
76
- /** Meter: value out of max as a bar; tone defaults from the ratio. */
77
- export function Meter({ value, max, tone, label, width }) {
78
- const pct = max > 0 ? Math.max(0, Math.min(100, (value / max) * 100)) : 0;
89
+ /* A segment is placed by its offset as well as its width: a nested one starts
90
+ where its parent does and is painted over it. */
91
+ const Seg = styled.i `
92
+ position: absolute;
93
+ top: 0;
94
+ bottom: 0;
95
+ left: ${(p) => p.$from}%;
96
+ width: ${(p) => p.$pct}%;
97
+ background: ${(p) => meterFill(p.$tone)};
98
+ transition: width 0.3s ease, left 0.3s ease;
99
+ `;
100
+ const meterSlide = keyframes `
101
+ from { transform: translateX(-100%); }
102
+ to { transform: translateX(400%); }
103
+ `;
104
+ const Sweep = styled.div `
105
+ height: 100%;
106
+ width: 25%;
107
+ background: ${v.grad90};
108
+ animation: ${meterSlide} 2.4s ease-in-out infinite;
109
+ @media (prefers-reduced-motion: reduce) { animation: none; }
110
+ `;
111
+ /** Where each segment starts: top-level ones follow on from the last, nested ones share their parent's start. */
112
+ function placeSegments(segments) {
113
+ const starts = [];
114
+ let cursor = 0;
115
+ let parent = 0;
116
+ for (const s of segments) {
117
+ if (s.nested) {
118
+ starts.push(parent);
119
+ continue;
120
+ }
121
+ parent = cursor;
122
+ starts.push(cursor);
123
+ cursor += s.value;
124
+ }
125
+ return starts;
126
+ }
127
+ const MeterCaption = styled.div `
128
+ display: flex; justify-content: space-between; gap: 8px;
129
+ font-size: 11px; color: ${v.muted}; font-variant-numeric: tabular-nums;
130
+ `;
131
+ const MeterStack = styled.div `
132
+ display: flex; flex-direction: column; gap: 4px;
133
+ ${(p) => p.$w && css `width: ${p.$w}px;`}
134
+ `;
135
+ /**
136
+ * Meter: value out of max as a bar; tone defaults from the ratio.
137
+ *
138
+ * `segments` replaces `value` with several spans that read left to right, each
139
+ * starting where the last top-level one ended. A `nested` segment is part of the
140
+ * span before it and is drawn as that span's leading part, over it — the way a
141
+ * "held" figure sits inside "committed" (stacking both from the left would paint
142
+ * the larger last and hide the smaller). `tall` is the detail-page height,
143
+ * `indeterminate` a sweeping bar for work with no figure yet. `head` and `foot`
144
+ * are captions above and below the bar; `label` stays its accessible name.
145
+ */
146
+ export function Meter({ head, foot, ...props }) {
147
+ if (head == null && foot == null)
148
+ return _jsx(MeterBar, { ...props });
149
+ return (_jsxs(MeterStack, { "$w": props.width, children: [head != null ? _jsx(MeterCaption, { children: head }) : null, _jsx(MeterBar, { ...props, width: undefined }), foot != null ? _jsx(MeterCaption, { children: foot }) : null] }));
150
+ }
151
+ function MeterBar({ value, max, tone, label, width, segments, tall, indeterminate }) {
152
+ const pctOf = (n) => (max > 0 ? Math.max(0, Math.min(100, (n / max) * 100)) : 0);
153
+ if (indeterminate) {
154
+ return (_jsx(Bar, { "$w": width, "$tall": tall, role: "progressbar", "aria-label": label, children: _jsx(Sweep, {}) }));
155
+ }
156
+ if (segments) {
157
+ const total = segments.filter((s) => !s.nested).reduce((a, s) => a + s.value, 0);
158
+ const placed = placeSegments(segments);
159
+ return (_jsx(Bar, { "$w": width, "$tall": tall, role: "meter", "aria-valuenow": total, "aria-valuemin": 0, "aria-valuemax": max, "aria-label": label, children: segments.map((s, i) => {
160
+ const f = pctOf(placed[i]);
161
+ const w = Math.min(pctOf(s.value), 100 - f);
162
+ return _jsx(Seg, { "$from": f, "$pct": Math.max(w, 0), "$tone": s.tone, title: s.label }, i);
163
+ }) }));
164
+ }
165
+ const n = value ?? 0;
166
+ const pct = pctOf(n);
79
167
  const t = tone ?? (pct >= 90 ? "crit" : pct >= 70 ? "warn" : "brand");
80
- return (_jsx(Bar, { "$w": width, role: "meter", "aria-valuenow": value, "aria-valuemin": 0, "aria-valuemax": max, "aria-label": label, children: _jsx(Fill, { "$pct": pct, "$tone": t }) }));
168
+ return (_jsx(Bar, { "$w": width, "$tall": tall, role: "meter", "aria-valuenow": n, "aria-valuemin": 0, "aria-valuemax": max, "aria-label": label, children: _jsx(Fill, { "$pct": pct, "$tone": t }) }));
81
169
  }
82
170
  //# sourceMappingURL=Stat.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Stat.js","sourceRoot":"","sources":["../../src/kit/Stat.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Stat.js","sourceRoot":"","sources":["../../src/kit/Stat.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.d.ts","sourceRoot":"","sources":["../../src/kit/Tooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAyD,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAmDlH,KAAK,IAAI,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AA8BhD,MAAM,WAAW,YAAY;IAC3B,4EAA4E;IAC5E,KAAK,EAAE,SAAS,CAAC;IACjB,oEAAoE;IACpE,QAAQ,EAAE,SAAS,CAAC;IACpB,iIAAiI;IACjI,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IACxB,iEAAiE;IACjE,KAAK,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,KAAK,GAAG,SAAS,CAAC;IAC/C,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,kFAAkF;IAClF,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B;;;;;;;;OAQG;IACH,KAAK,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AAED;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAY,EAAE,KAAgB,EAAE,KAAK,EAAE,KAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,YAAY,+BAkFxI"}
1
+ {"version":3,"file":"Tooltip.d.ts","sourceRoot":"","sources":["../../src/kit/Tooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAyD,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAoDlH,KAAK,IAAI,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AA8BhD,MAAM,WAAW,YAAY;IAC3B,4EAA4E;IAC5E,KAAK,EAAE,SAAS,CAAC;IACjB,oEAAoE;IACpE,QAAQ,EAAE,SAAS,CAAC;IACpB,iIAAiI;IACjI,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IACxB,iEAAiE;IACjE,KAAK,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,KAAK,GAAG,SAAS,CAAC;IAC/C,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,kFAAkF;IAClF,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B;;;;;;;;OAQG;IACH,KAAK,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AAED;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAY,EAAE,KAAgB,EAAE,KAAK,EAAE,KAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,YAAY,+BAoFxI"}
@@ -1,6 +1,7 @@
1
1
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useCallback, useId, useLayoutEffect, useRef, useState } from "react";
3
3
  import { createPortal } from "react-dom";
4
+ import { usePortalTarget } from "../theme/ThemeScope.js";
4
5
  import styled, { keyframes } from "styled-components";
5
6
  import { v } from "../theme/tokens.js";
6
7
  // Tooltip — the hover/focus explanation a dense ops screen cannot do without.
@@ -81,6 +82,8 @@ function place(anchor, box, prefer, align) {
81
82
  */
82
83
  export function Tooltip({ label, children, side = "top", align = "center", width, delay = 180, disabled, style, className }) {
83
84
  const id = useId();
85
+ // the nearest ThemeScope's host, or body (CON-148)
86
+ const portalTarget = usePortalTarget();
84
87
  const ref = useRef(null);
85
88
  const bubble = useRef(null);
86
89
  const timer = useRef(undefined);
@@ -132,8 +135,8 @@ export function Tooltip({ label, children, side = "top", align = "center", width
132
135
  }, [anchor, close]);
133
136
  useLayoutEffect(() => () => window.clearTimeout(timer.current), []);
134
137
  const shown = !disabled && anchor !== null;
135
- return (_jsxs(_Fragment, { children: [_jsx(Anchor, { ref: ref, style: style, className: className, onMouseEnter: open, onMouseLeave: close, onFocus: open, onBlur: close, "aria-describedby": shown ? id : undefined, children: children }), shown && typeof document !== "undefined"
136
- ? createPortal(_jsx(Bubble, { ref: bubble, id: id, role: "tooltip", "$wide": width, style: pos ? { top: pos.top, left: pos.left } : { top: 0, left: 0, opacity: 0 }, children: label }), document.body)
138
+ return (_jsxs(_Fragment, { children: [_jsx(Anchor, { ref: ref, style: style, className: className, onMouseEnter: open, onMouseLeave: close, onFocus: open, onBlur: close, "aria-describedby": shown ? id : undefined, children: children }), shown && portalTarget
139
+ ? createPortal(_jsx(Bubble, { ref: bubble, id: id, role: "tooltip", "$wide": width, style: pos ? { top: pos.top, left: pos.left } : { top: 0, left: 0, opacity: 0 }, children: label }), portalTarget)
137
140
  : null] }));
138
141
  }
139
142
  //# sourceMappingURL=Tooltip.js.map