@tensor_1/react 2.20.0 → 2.21.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.
- package/dist/{ChartCore-Do6gRBN3.d.cts → ChartCore-DzWe10bN.d.cts} +16 -1
- package/dist/chart-preset.cjs +25 -13
- package/dist/chart-preset.d.cts +2 -2
- package/dist/chart-preset.d.ts +1 -1
- package/dist/chart-preset.js +2 -1
- package/dist/chart.cjs +25 -13
- package/dist/chart.d.cts +2 -2
- package/dist/chart.d.ts +1 -1
- package/dist/chart.js +2 -1
- package/dist/components/AppShell.d.ts +5 -1
- package/dist/components/AppShell.js +4 -2
- package/dist/components/Avatar.d.ts +3 -1
- package/dist/components/Avatar.js +2 -2
- package/dist/components/BrandProfiles.d.ts +29 -2
- package/dist/components/BrandProfiles.js +45 -20
- package/dist/components/BuilderCanvas.d.ts +27 -2
- package/dist/components/BuilderCanvas.js +45 -22
- package/dist/components/Chart.d.ts +1 -1
- package/dist/components/Chart.js +2 -1
- package/dist/components/ChartCore.d.ts +17 -2
- package/dist/components/ChartCore.js +24 -13
- package/dist/components/ColorPicker.d.ts +24 -2
- package/dist/components/ColorPicker.js +38 -20
- package/dist/components/CommandPalette.d.ts +3 -1
- package/dist/components/CommandPalette.js +2 -2
- package/dist/components/DateRangePicker.d.ts +21 -2
- package/dist/components/DateRangePicker.js +26 -6
- package/dist/components/DetailPage.d.ts +22 -3
- package/dist/components/DetailPage.js +33 -3
- package/dist/components/DiffViewer.d.ts +34 -3
- package/dist/components/DiffViewer.js +60 -40
- package/dist/components/Drawer.d.ts +3 -1
- package/dist/components/Drawer.js +2 -2
- package/dist/components/Inbox.d.ts +3 -1
- package/dist/components/Inbox.js +2 -2
- package/dist/components/MatchReview.d.ts +49 -2
- package/dist/components/MatchReview.js +72 -30
- package/dist/components/Meter.d.ts +3 -1
- package/dist/components/Meter.js +3 -2
- package/dist/components/Pagination.d.ts +10 -2
- package/dist/components/Pagination.js +11 -4
- package/dist/components/Peek.d.ts +7 -1
- package/dist/components/Peek.js +4 -4
- package/dist/components/RelationshipGraph.js +6 -2
- package/dist/components/RuleBuilder.d.ts +42 -2
- package/dist/components/RuleBuilder.js +71 -37
- package/dist/components/SchedulingCalendar.d.ts +25 -2
- package/dist/components/SchedulingCalendar.js +38 -15
- package/dist/components/Stat.d.ts +5 -0
- package/dist/components/Stat.js +2 -2
- package/dist/components/Table.d.ts +11 -3
- package/dist/components/Table.js +5 -8
- package/dist/components/Tabs.d.ts +8 -1
- package/dist/components/Tabs.js +4 -5
- package/dist/components/Toast.d.ts +6 -2
- package/dist/components/Toast.js +4 -4
- package/dist/components/Tree.d.ts +9 -1
- package/dist/components/Tree.js +55 -8
- package/dist/fill-label.d.ts +7 -0
- package/dist/fill-label.js +9 -0
- package/dist/index.cjs +765 -463
- package/dist/index.d.cts +340 -27
- package/dist/index.d.ts +10 -10
- package/dist/index.js +18 -9
- package/package.json +1 -1
package/dist/components/Table.js
CHANGED
|
@@ -66,12 +66,9 @@ function Tr({ selected, pinned, className, children, ...props }) {
|
|
|
66
66
|
}
|
|
67
67
|
);
|
|
68
68
|
}
|
|
69
|
-
function BulkBar({ count, children, className, ...props }) {
|
|
70
|
-
return /* @__PURE__ */ jsxs("div", { className: cx("uix-bulkbar", className), role: "toolbar", "aria-label":
|
|
71
|
-
count != null && /* @__PURE__ */
|
|
72
|
-
count,
|
|
73
|
-
" selected"
|
|
74
|
-
] }),
|
|
69
|
+
function BulkBar({ count, children, label = "Bulk actions", selectedLabel = (n) => `${n} selected`, className, ...props }) {
|
|
70
|
+
return /* @__PURE__ */ jsxs("div", { className: cx("uix-bulkbar", className), role: "toolbar", "aria-label": label, ...props, children: [
|
|
71
|
+
count != null && /* @__PURE__ */ jsx("span", { className: "uix-bulkbar__count", children: selectedLabel(count) }),
|
|
75
72
|
/* @__PURE__ */ jsx("span", { className: "uix-bulkbar__spacer" }),
|
|
76
73
|
children
|
|
77
74
|
] });
|
|
@@ -82,7 +79,7 @@ function RowActions({ children, className, ...props }) {
|
|
|
82
79
|
function RowAction({ children, className, type = "button", ...props }) {
|
|
83
80
|
return /* @__PURE__ */ jsx("button", { type, className: cx("uix-rowact", className), ...props, children });
|
|
84
81
|
}
|
|
85
|
-
function ExpandToggle({ expanded, controls, className, type = "button", ...props }) {
|
|
82
|
+
function ExpandToggle({ expanded, controls, expandLabel = "Expand row", collapseLabel = "Collapse row", className, type = "button", ...props }) {
|
|
86
83
|
return /* @__PURE__ */ jsx(
|
|
87
84
|
"button",
|
|
88
85
|
{
|
|
@@ -90,7 +87,7 @@ function ExpandToggle({ expanded, controls, className, type = "button", ...props
|
|
|
90
87
|
className: cx("uix-table__expand", className),
|
|
91
88
|
"aria-expanded": expanded,
|
|
92
89
|
"aria-controls": controls,
|
|
93
|
-
"aria-label": expanded ?
|
|
90
|
+
"aria-label": expanded ? collapseLabel : expandLabel,
|
|
94
91
|
...props,
|
|
95
92
|
children: /* @__PURE__ */ jsx("svg", { viewBox: "0 0 16 16", fill: "none", stroke: "currentColor", strokeWidth: 1.5, strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: /* @__PURE__ */ jsx("path", { d: "M6 4l4 4-4 4" }) })
|
|
96
93
|
}
|
|
@@ -13,8 +13,15 @@ interface TabsProps {
|
|
|
13
13
|
* shown on the side that has hidden tabs. The selected tab is always scrolled into view.
|
|
14
14
|
*/
|
|
15
15
|
overflow?: 'wrap' | 'scroll';
|
|
16
|
+
/**
|
|
17
|
+
* Keyboard activation (TENSOR RX-125, UIX-11). `'automatic'` (default, unchanged):
|
|
18
|
+
* Arrow/Home/End move focus AND select, so traversing mounts every panel passed over.
|
|
19
|
+
* `'manual'`: arrows only move focus; Enter/Space (the button's own click) selects —
|
|
20
|
+
* the APG choice when a panel is costly to show. Pairs with `TabPanel keepMounted`.
|
|
21
|
+
*/
|
|
22
|
+
activation?: 'automatic' | 'manual';
|
|
16
23
|
}
|
|
17
|
-
declare function Tabs({ variant, value, onChange, children, className, overflow }: TabsProps): react.JSX.Element;
|
|
24
|
+
declare function Tabs({ variant, value, onChange, children, className, overflow, activation }: TabsProps): react.JSX.Element;
|
|
18
25
|
interface TabProps extends Omit<HTMLAttributes<HTMLButtonElement>, 'onChange'> {
|
|
19
26
|
value: string;
|
|
20
27
|
children?: ReactNode;
|
package/dist/components/Tabs.js
CHANGED
|
@@ -5,7 +5,7 @@ import { cx } from "../cx.js";
|
|
|
5
5
|
const TabsCtx = createContext({});
|
|
6
6
|
const Chevron = ({ d }) => /* @__PURE__ */ jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: /* @__PURE__ */ jsx("path", { d }) });
|
|
7
7
|
const inlineOffset = (el, rtl) => rtl ? -el.scrollLeft : el.scrollLeft;
|
|
8
|
-
function Tabs({ variant = "line", value, onChange, children, className, overflow = "wrap" }) {
|
|
8
|
+
function Tabs({ variant = "line", value, onChange, children, className, overflow = "wrap", activation = "automatic" }) {
|
|
9
9
|
const baseId = useId();
|
|
10
10
|
const listRef = useRef(null);
|
|
11
11
|
const contextValue = useMemo(() => ({ value, onChange, baseId }), [value, onChange, baseId]);
|
|
@@ -85,10 +85,9 @@ function Tabs({ variant = "line", value, onChange, children, className, overflow
|
|
|
85
85
|
}
|
|
86
86
|
e.preventDefault();
|
|
87
87
|
const target = items[next];
|
|
88
|
-
if (target)
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
}
|
|
88
|
+
if (!target) return;
|
|
89
|
+
target.focus();
|
|
90
|
+
if (activation === "automatic") target.click();
|
|
92
91
|
};
|
|
93
92
|
const list = /* @__PURE__ */ jsx(
|
|
94
93
|
"div",
|
|
@@ -3,6 +3,8 @@ import { HTMLAttributes, ReactNode } from 'react';
|
|
|
3
3
|
|
|
4
4
|
type ToastTone = 'success' | 'danger' | 'info';
|
|
5
5
|
interface ToastProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {
|
|
6
|
+
/** TENSOR RX-125 (UIX-04): translatable; English default. */
|
|
7
|
+
dismissLabel?: string;
|
|
6
8
|
title?: ReactNode;
|
|
7
9
|
message?: ReactNode;
|
|
8
10
|
tone?: ToastTone;
|
|
@@ -10,10 +12,12 @@ interface ToastProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {
|
|
|
10
12
|
onClose?: () => void;
|
|
11
13
|
leaving?: boolean;
|
|
12
14
|
}
|
|
13
|
-
declare function Toast({ title, message, tone, icon, onClose, leaving, className, ...props }: ToastProps): react.JSX.Element;
|
|
15
|
+
declare function Toast({ title, message, tone, icon, onClose, leaving, dismissLabel, className, ...props }: ToastProps): react.JSX.Element;
|
|
14
16
|
interface ToasterProps extends HTMLAttributes<HTMLDivElement> {
|
|
17
|
+
/** TENSOR RX-125 (UIX-04): translatable; English default. */
|
|
18
|
+
regionLabel?: string;
|
|
15
19
|
children?: ReactNode;
|
|
16
20
|
}
|
|
17
|
-
declare function Toaster({ children, className, ...props }: ToasterProps): react.JSX.Element;
|
|
21
|
+
declare function Toaster({ children, regionLabel, className, ...props }: ToasterProps): react.JSX.Element;
|
|
18
22
|
|
|
19
23
|
export { Toast, type ToastProps, type ToastTone, Toaster, type ToasterProps };
|
package/dist/components/Toast.js
CHANGED
|
@@ -3,7 +3,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from "react";
|
|
4
4
|
import { cx } from "../cx.js";
|
|
5
5
|
const ToasterContext = createContext(null);
|
|
6
|
-
function Toast({ title, message, tone, icon, onClose, leaving, className, ...props }) {
|
|
6
|
+
function Toast({ title, message, tone, icon, onClose, leaving, dismissLabel = "Dismiss", className, ...props }) {
|
|
7
7
|
const assertive = tone === "danger";
|
|
8
8
|
const toaster = useContext(ToasterContext);
|
|
9
9
|
const bodyRef = useRef(null);
|
|
@@ -39,12 +39,12 @@ function Toast({ title, message, tone, icon, onClose, leaving, className, ...pro
|
|
|
39
39
|
title && /* @__PURE__ */ jsx("div", { className: "uix-toast__title", children: title }),
|
|
40
40
|
message && /* @__PURE__ */ jsx("div", { className: "uix-toast__msg", children: message })
|
|
41
41
|
] }),
|
|
42
|
-
onClose && /* @__PURE__ */ jsx("button", { className: "uix-toast__close", onClick: handleClose, "aria-label":
|
|
42
|
+
onClose && /* @__PURE__ */ jsx("button", { className: "uix-toast__close", onClick: handleClose, "aria-label": dismissLabel, children: "\xD7" })
|
|
43
43
|
]
|
|
44
44
|
}
|
|
45
45
|
);
|
|
46
46
|
}
|
|
47
|
-
function Toaster({ children, className, ...props }) {
|
|
47
|
+
function Toaster({ children, regionLabel = "Notifications", className, ...props }) {
|
|
48
48
|
const [announced, setAnnounced] = useState("");
|
|
49
49
|
const clearTimer = useRef(null);
|
|
50
50
|
const announce = useCallback((text) => {
|
|
@@ -56,7 +56,7 @@ function Toaster({ children, className, ...props }) {
|
|
|
56
56
|
if (clearTimer.current != null) clearTimeout(clearTimer.current);
|
|
57
57
|
}, []);
|
|
58
58
|
const ctx = useMemo(() => ({ announce }), [announce]);
|
|
59
|
-
return /* @__PURE__ */ jsx(ToasterContext.Provider, { value: ctx, children: /* @__PURE__ */ jsxs("div", { className: cx("uix-toaster", className), role: "region", "aria-label":
|
|
59
|
+
return /* @__PURE__ */ jsx(ToasterContext.Provider, { value: ctx, children: /* @__PURE__ */ jsxs("div", { className: cx("uix-toaster", className), role: "region", "aria-label": regionLabel, ...props, children: [
|
|
60
60
|
/* @__PURE__ */ jsx("span", { className: "uix-visually-hidden", role: "status", "aria-live": "polite", children: announced }),
|
|
61
61
|
children
|
|
62
62
|
] }) });
|
|
@@ -19,6 +19,8 @@ interface TreeNodeProps {
|
|
|
19
19
|
onSelect?: (id: string) => void;
|
|
20
20
|
onFocusNode: (id: string) => void;
|
|
21
21
|
level?: number;
|
|
22
|
+
/** Whether a click on the row itself toggles a branch (see {@link TreeProps.toggleOnRowClick}). */
|
|
23
|
+
rowToggles?: boolean;
|
|
22
24
|
}
|
|
23
25
|
interface TreeProps extends Omit<HTMLAttributes<HTMLUListElement>, 'onSelect' | 'onChange'> {
|
|
24
26
|
nodes: TreeNodeData[];
|
|
@@ -38,7 +40,13 @@ interface TreeProps extends Omit<HTMLAttributes<HTMLUListElement>, 'onSelect' |
|
|
|
38
40
|
rowHeight?: number;
|
|
39
41
|
/** Scroll-viewport height (px) when virtualizing. Default 384. */
|
|
40
42
|
maxHeight?: number;
|
|
43
|
+
/**
|
|
44
|
+
* Whether clicking a branch row toggles it (TENSOR RX-125, UIX-09). Defaults to true for a
|
|
45
|
+
* pure navigation tree and to false when the tree is selectable (`selected` / `onSelect`),
|
|
46
|
+
* where a row click only selects and the chevron toggles. Enter/Space still does both.
|
|
47
|
+
*/
|
|
48
|
+
toggleOnRowClick?: boolean;
|
|
41
49
|
}
|
|
42
|
-
declare function Tree({ nodes, expanded: controlledExpanded, defaultExpanded, selected, onToggle, onSelect, virtualize, rowHeight, maxHeight, className, ...props }: TreeProps): react.JSX.Element;
|
|
50
|
+
declare function Tree({ nodes, expanded: controlledExpanded, defaultExpanded, selected, onToggle, onSelect, virtualize, rowHeight, maxHeight, toggleOnRowClick, className, ...props }: TreeProps): react.JSX.Element;
|
|
43
51
|
|
|
44
52
|
export { Tree, type TreeNodeData, type TreeNodeProps, type TreeProps };
|
package/dist/components/Tree.js
CHANGED
|
@@ -5,7 +5,7 @@ import { cx } from "../cx.js";
|
|
|
5
5
|
import { flattenTree, treeNav } from "../tree-model.js";
|
|
6
6
|
import { virtualWindow, shouldVirtualize } from "../table-engine.js";
|
|
7
7
|
const ChevronIcon = () => /* @__PURE__ */ jsx("svg", { viewBox: "0 0 12 12", fill: "none", stroke: "currentColor", strokeWidth: 1.5, strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: /* @__PURE__ */ jsx("path", { d: "M2 4l4 4 4-4" }) });
|
|
8
|
-
function TreeNode({ node, expanded, selected, selectable, tabbableId, onToggle, onSelect, onFocusNode, level = 1 }) {
|
|
8
|
+
function TreeNode({ node, expanded, selected, selectable, tabbableId, onToggle, onSelect, onFocusNode, level = 1, rowToggles = true }) {
|
|
9
9
|
const hasChildren = Array.isArray(node.children) && node.children.length > 0;
|
|
10
10
|
const isExpanded = expanded.has(node.id);
|
|
11
11
|
return /* @__PURE__ */ jsxs(
|
|
@@ -23,13 +23,32 @@ function TreeNode({ node, expanded, selected, selectable, tabbableId, onToggle,
|
|
|
23
23
|
},
|
|
24
24
|
onClick: (e) => {
|
|
25
25
|
e.stopPropagation();
|
|
26
|
-
if (hasChildren) onToggle(node.id);
|
|
26
|
+
if (hasChildren && rowToggles) onToggle(node.id);
|
|
27
27
|
onSelect?.(node.id);
|
|
28
28
|
onFocusNode(node.id);
|
|
29
29
|
},
|
|
30
30
|
children: [
|
|
31
31
|
/* @__PURE__ */ jsxs("span", { className: "uix-tree__row", children: [
|
|
32
|
-
|
|
32
|
+
hasChildren ? (
|
|
33
|
+
// TENSOR RX-125 (UIX-09): the chevron is its own pointer target, so a
|
|
34
|
+
// branch can be expanded without selecting it. Keyboard users toggle with
|
|
35
|
+
// the arrow keys on the treeitem, so it stays out of the tab order.
|
|
36
|
+
/* @__PURE__ */ jsx(
|
|
37
|
+
"button",
|
|
38
|
+
{
|
|
39
|
+
type: "button",
|
|
40
|
+
tabIndex: -1,
|
|
41
|
+
"aria-hidden": "true",
|
|
42
|
+
className: "uix-tree__toggle",
|
|
43
|
+
onClick: (e) => {
|
|
44
|
+
e.stopPropagation();
|
|
45
|
+
onToggle(node.id);
|
|
46
|
+
onFocusNode(node.id);
|
|
47
|
+
},
|
|
48
|
+
children: /* @__PURE__ */ jsx(ChevronIcon, {})
|
|
49
|
+
}
|
|
50
|
+
)
|
|
51
|
+
) : /* @__PURE__ */ jsx("span", { className: "uix-tree__toggle" }),
|
|
33
52
|
node.icon && /* @__PURE__ */ jsx("span", { "aria-hidden": "true", children: node.icon }),
|
|
34
53
|
/* @__PURE__ */ jsx("span", { className: "uix-tree__label", children: node.label })
|
|
35
54
|
] }),
|
|
@@ -44,7 +63,8 @@ function TreeNode({ node, expanded, selected, selectable, tabbableId, onToggle,
|
|
|
44
63
|
onToggle,
|
|
45
64
|
onSelect,
|
|
46
65
|
onFocusNode,
|
|
47
|
-
level: level + 1
|
|
66
|
+
level: level + 1,
|
|
67
|
+
rowToggles
|
|
48
68
|
},
|
|
49
69
|
child.id
|
|
50
70
|
)) })
|
|
@@ -62,6 +82,7 @@ function Tree({
|
|
|
62
82
|
virtualize,
|
|
63
83
|
rowHeight = 32,
|
|
64
84
|
maxHeight = 384,
|
|
85
|
+
toggleOnRowClick,
|
|
65
86
|
className,
|
|
66
87
|
...props
|
|
67
88
|
}) {
|
|
@@ -70,6 +91,7 @@ function Tree({
|
|
|
70
91
|
const rootRef = useRef(null);
|
|
71
92
|
const [focusedId, setFocusedId] = useState(void 0);
|
|
72
93
|
const selectable = selected !== void 0 || onSelect != null;
|
|
94
|
+
const rowToggles = toggleOnRowClick ?? !selectable;
|
|
73
95
|
const handleToggle = useCallback((id) => {
|
|
74
96
|
if (!controlledExpanded) {
|
|
75
97
|
setInternalExpanded((prev) => {
|
|
@@ -98,6 +120,7 @@ function Tree({
|
|
|
98
120
|
onSelect,
|
|
99
121
|
focusedId,
|
|
100
122
|
setFocusedId,
|
|
123
|
+
rowToggles,
|
|
101
124
|
className,
|
|
102
125
|
...props
|
|
103
126
|
}
|
|
@@ -173,7 +196,8 @@ function Tree({
|
|
|
173
196
|
onToggle: handleToggle,
|
|
174
197
|
onSelect,
|
|
175
198
|
onFocusNode: setFocusedId,
|
|
176
|
-
level: 1
|
|
199
|
+
level: 1,
|
|
200
|
+
rowToggles
|
|
177
201
|
},
|
|
178
202
|
node.id
|
|
179
203
|
)) });
|
|
@@ -189,6 +213,7 @@ function VirtualTreeView({
|
|
|
189
213
|
onSelect,
|
|
190
214
|
focusedId,
|
|
191
215
|
setFocusedId,
|
|
216
|
+
rowToggles,
|
|
192
217
|
className,
|
|
193
218
|
...props
|
|
194
219
|
}) {
|
|
@@ -262,7 +287,10 @@ function VirtualTreeView({
|
|
|
262
287
|
children: [
|
|
263
288
|
win.padTop > 0 && /* @__PURE__ */ jsx("li", { role: "presentation", "aria-hidden": "true", style: { height: win.padTop } }),
|
|
264
289
|
rows.map((f, i) => {
|
|
265
|
-
const rowStyle = {
|
|
290
|
+
const rowStyle = {
|
|
291
|
+
height: rowHeight,
|
|
292
|
+
paddingLeft: `calc(${Math.min(f.level - 1, 4)} * var(--uix-space-5) + ${Math.max(0, f.level - 5)} * var(--uix-space-1))`
|
|
293
|
+
};
|
|
266
294
|
return /* @__PURE__ */ jsx(
|
|
267
295
|
"li",
|
|
268
296
|
{
|
|
@@ -280,12 +308,31 @@ function VirtualTreeView({
|
|
|
280
308
|
},
|
|
281
309
|
onClick: (e) => {
|
|
282
310
|
e.stopPropagation();
|
|
283
|
-
if (f.hasChildren) onToggle(f.node.id);
|
|
311
|
+
if (f.hasChildren && rowToggles) onToggle(f.node.id);
|
|
284
312
|
onSelect?.(f.node.id);
|
|
285
313
|
setFocusedId(f.node.id);
|
|
286
314
|
},
|
|
287
315
|
children: /* @__PURE__ */ jsxs("span", { className: "uix-tree__row", style: rowStyle, children: [
|
|
288
|
-
|
|
316
|
+
f.hasChildren ? (
|
|
317
|
+
// TENSOR RX-125 (UIX-09): the chevron is its own pointer target, so a
|
|
318
|
+
// branch can be expanded without selecting it. Keyboard users toggle with
|
|
319
|
+
// the arrow keys on the treeitem, so it stays out of the tab order.
|
|
320
|
+
/* @__PURE__ */ jsx(
|
|
321
|
+
"button",
|
|
322
|
+
{
|
|
323
|
+
type: "button",
|
|
324
|
+
tabIndex: -1,
|
|
325
|
+
"aria-hidden": "true",
|
|
326
|
+
className: "uix-tree__toggle",
|
|
327
|
+
onClick: (e) => {
|
|
328
|
+
e.stopPropagation();
|
|
329
|
+
onToggle(f.node.id);
|
|
330
|
+
setFocusedId(f.node.id);
|
|
331
|
+
},
|
|
332
|
+
children: /* @__PURE__ */ jsx(ChevronIcon, {})
|
|
333
|
+
}
|
|
334
|
+
)
|
|
335
|
+
) : /* @__PURE__ */ jsx("span", { className: "uix-tree__toggle" }),
|
|
289
336
|
f.node.icon && /* @__PURE__ */ jsx("span", { "aria-hidden": "true", children: f.node.icon }),
|
|
290
337
|
/* @__PURE__ */ jsx("span", { className: "uix-tree__label", children: f.node.label })
|
|
291
338
|
] })
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TENSOR RX-125 (UIX-12) — fill `{name}` placeholders in a translatable label, so a
|
|
3
|
+
* sentence such as "Move {label} up" can be reordered by a translation.
|
|
4
|
+
*/
|
|
5
|
+
declare function fillLabel(template: string, values: Readonly<Record<string, string | number>>): string;
|
|
6
|
+
|
|
7
|
+
export { fillLabel };
|