@parallelworks/ui 0.79.0 → 0.80.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/components/Combobox.js +56 -32
- package/dist/components/ContextMenu.d.ts +8 -0
- package/dist/components/ContextMenu.js +42 -6
- package/dist/components/Disclosure.d.ts +6 -2
- package/dist/components/Disclosure.js +24 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -2
- package/package.json +1 -1
|
@@ -91,6 +91,11 @@ function Combobox$1(props) {
|
|
|
91
91
|
const list = useRef(null);
|
|
92
92
|
const uid = useId();
|
|
93
93
|
const [inputValue, setInputValue] = useState(null);
|
|
94
|
+
/** Empties the search, and tells a host that mirrors it. */
|
|
95
|
+
const clearQuery = (to = "") => {
|
|
96
|
+
if (inputValue) onQueryChange?.("");
|
|
97
|
+
setInputValue(to);
|
|
98
|
+
};
|
|
94
99
|
const [highlighted, setHighlighted] = useState(void 0);
|
|
95
100
|
const [startsOpen] = useState(open === void 0 && defaultOpen === true);
|
|
96
101
|
const [ownOpen, setOwnOpen] = useState(false);
|
|
@@ -152,7 +157,7 @@ function Combobox$1(props) {
|
|
|
152
157
|
}
|
|
153
158
|
if (next.length === chosen.length) return false;
|
|
154
159
|
setValues(next);
|
|
155
|
-
|
|
160
|
+
clearQuery();
|
|
156
161
|
return true;
|
|
157
162
|
};
|
|
158
163
|
const separators = props.multiple && props.creatable ? props.separators ?? [] : [];
|
|
@@ -173,11 +178,16 @@ function Combobox$1(props) {
|
|
|
173
178
|
};
|
|
174
179
|
const freeEntry = creatable && entries.flat.length === 0;
|
|
175
180
|
const [first] = entries.items;
|
|
176
|
-
const
|
|
181
|
+
const createLast = created?.action === true;
|
|
182
|
+
const listItems = !created ? entries.items : first !== void 0 && "items" in first ? createLast ? [...entries.items, {
|
|
183
|
+
label: "",
|
|
184
|
+
items: [created],
|
|
185
|
+
order: entries.items.length
|
|
186
|
+
}] : [{
|
|
177
187
|
label: "",
|
|
178
188
|
items: [created],
|
|
179
189
|
order: -1
|
|
180
|
-
}, ...entries.items] : [created, ...entries.items];
|
|
190
|
+
}, ...entries.items] : createLast ? [...entries.items, created] : [created, ...entries.items];
|
|
181
191
|
const selectedIcon = selected?.icon && (inputValue === null || inputValue === selected.label) ? selected.icon : null;
|
|
182
192
|
const input = /* @__PURE__ */ jsx(Combobox.Input, {
|
|
183
193
|
id: trigger ? void 0 : id,
|
|
@@ -227,34 +237,48 @@ function Combobox$1(props) {
|
|
|
227
237
|
})]
|
|
228
238
|
})]
|
|
229
239
|
}, rowProps.key);
|
|
230
|
-
const
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
240
|
+
const labelId = `${uid}-label`;
|
|
241
|
+
const valueId = `${uid}-value`;
|
|
242
|
+
const named = Boolean(ariaLabel || ariaLabelledBy);
|
|
243
|
+
const parts = trigger ? /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
244
|
+
named && /* @__PURE__ */ jsxs(Fragment$1, { children: [ariaLabel && !ariaLabelledBy && /* @__PURE__ */ jsx("span", {
|
|
245
|
+
id: labelId,
|
|
246
|
+
hidden: true,
|
|
247
|
+
children: ariaLabel
|
|
248
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
249
|
+
id: valueId,
|
|
250
|
+
hidden: true,
|
|
251
|
+
children: /* @__PURE__ */ jsx(Combobox.Value, { children: (value) => Array.isArray(value) ? value.map(entryLabel).join(", ") : entryLabel(value) })
|
|
252
|
+
})] }),
|
|
253
|
+
/* @__PURE__ */ jsx(Tooltip, {
|
|
254
|
+
content: triggerTooltip,
|
|
255
|
+
children: /* @__PURE__ */ jsx(Combobox.Trigger, {
|
|
256
|
+
id,
|
|
257
|
+
"aria-labelledby": named ? `${ariaLabelledBy || labelId} ${valueId}` : void 0,
|
|
258
|
+
"aria-describedby": ariaDescribedBy,
|
|
259
|
+
"aria-invalid": ariaInvalid || void 0,
|
|
260
|
+
"aria-required": ariaRequired || required || void 0,
|
|
261
|
+
render: trigger
|
|
262
|
+
})
|
|
249
263
|
}),
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
264
|
+
/* @__PURE__ */ jsx(ListPopup, {
|
|
265
|
+
listRef: list,
|
|
266
|
+
empty: t.noOptionsFound,
|
|
267
|
+
statusGroups: entries.statusGroups,
|
|
268
|
+
query: inputValue ?? "",
|
|
269
|
+
header: /* @__PURE__ */ jsx("div", {
|
|
270
|
+
className: "border-b border-(--theme-border) p-1.5",
|
|
271
|
+
children: input
|
|
272
|
+
}),
|
|
273
|
+
className: details ? "w-[min(36rem,var(--available-width))]" : "w-max min-w-[min(max(14rem,var(--anchor-width)),var(--available-width))] max-w-[min(28rem,var(--available-width))]",
|
|
274
|
+
sizer: details ? void 0 : /* @__PURE__ */ jsx(ListSizer, { entries: entries.flat }),
|
|
275
|
+
align,
|
|
276
|
+
loading: loading ? t.searching : void 0,
|
|
277
|
+
details: details?.(highlighted?.created ? void 0 : highlighted?.value),
|
|
278
|
+
collisionBoundary,
|
|
279
|
+
renderItem: itemRow
|
|
280
|
+
})
|
|
281
|
+
] }) : /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
258
282
|
/* @__PURE__ */ jsxs(Combobox.InputGroup, {
|
|
259
283
|
"data-testid": "combobox",
|
|
260
284
|
className: cx(fieldClassName(size), freeEntry && "pr-2", className),
|
|
@@ -324,7 +348,7 @@ function Combobox$1(props) {
|
|
|
324
348
|
...open !== void 0 ? { open } : startsOpen ? { open: ownOpen } : {},
|
|
325
349
|
onOpenChange: (next) => {
|
|
326
350
|
setOwnOpen(next);
|
|
327
|
-
if (!next && (trigger || !props.multiple))
|
|
351
|
+
if (!next && (trigger || !props.multiple)) clearQuery(null);
|
|
328
352
|
onOpenChange?.(next);
|
|
329
353
|
},
|
|
330
354
|
children: parts
|
|
@@ -343,7 +367,7 @@ function Combobox$1(props) {
|
|
|
343
367
|
const action = next.find((entry) => entry.action);
|
|
344
368
|
if (action) {
|
|
345
369
|
details.cancel();
|
|
346
|
-
|
|
370
|
+
clearQuery();
|
|
347
371
|
onCreate?.(String(action.value));
|
|
348
372
|
return;
|
|
349
373
|
}
|
|
@@ -10,7 +10,11 @@ export interface OpenMenuOptions {
|
|
|
10
10
|
size?: MenuSize | undefined;
|
|
11
11
|
/** As `MenuPopup`'s: classes on the menu and its submenus, such as a terminal's colors. */
|
|
12
12
|
themeClassName?: string | undefined;
|
|
13
|
+
/** What else closes it, for a menu over something that moves under it, such as a
|
|
14
|
+
* terminal's: a wheel outside the menu, the window losing focus, or the window resizing. */
|
|
15
|
+
closeOn?: readonly MenuCloseTrigger[] | undefined;
|
|
13
16
|
}
|
|
17
|
+
export type MenuCloseTrigger = 'wheel' | 'blur' | 'resize';
|
|
14
18
|
/** Where a menu opens: an element, such as the button that opened it, or a pointer event,
|
|
15
19
|
* such as a right-click. An event with Shift held is left to the browser, whose own menu
|
|
16
20
|
* then shows; any other has its default prevented. */
|
|
@@ -29,6 +33,7 @@ export type OpenMenu = (at: MenuOpener, items: MenuEntry[], options?: OpenMenuOp
|
|
|
29
33
|
*/
|
|
30
34
|
export declare function useContextMenu(): {
|
|
31
35
|
openMenu: OpenMenu;
|
|
36
|
+
closeMenu: () => void;
|
|
32
37
|
contextMenu: import("react").JSX.Element | null;
|
|
33
38
|
openedBy: Element | null;
|
|
34
39
|
};
|
|
@@ -40,5 +45,8 @@ export declare function ContextMenuProvider({ children }: {
|
|
|
40
45
|
/** Opens the app's one shared menu: `openMenu(e, items)` from a right-click, or
|
|
41
46
|
* `openMenu(button, items)` under a button, which a second press closes. */
|
|
42
47
|
export declare function useOpenMenu(): OpenMenu;
|
|
48
|
+
/** Closes the app's shared menu, if it is open, for a host whose surface moves out from under
|
|
49
|
+
* it in a way `closeOn` doesn't cover, such as a pane that switches. */
|
|
50
|
+
export declare function useCloseMenu(): () => void;
|
|
43
51
|
/** The element the shared menu is open under, so its button can say it's expanded. */
|
|
44
52
|
export declare function useMenuOpenedBy(): Element | null;
|
|
@@ -3,7 +3,7 @@ import { MenuPopup } from "./Menu.js";
|
|
|
3
3
|
import { isDev } from "../dev.js";
|
|
4
4
|
import { MenuEntries, MenuFilter } from "./MenuEntries.js";
|
|
5
5
|
import { Menu } from "@base-ui/react/menu";
|
|
6
|
-
import { createContext, use, useCallback, useRef, useState } from "react";
|
|
6
|
+
import { createContext, use, useCallback, useEffect, useRef, useState } from "react";
|
|
7
7
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
8
|
//#region src/components/ContextMenu.tsx
|
|
9
9
|
/**
|
|
@@ -44,6 +44,31 @@ function useContextMenu() {
|
|
|
44
44
|
setOpen(true);
|
|
45
45
|
return true;
|
|
46
46
|
}, [release]);
|
|
47
|
+
/** Closes the menu, if one is open, as Escape would. */
|
|
48
|
+
const closeMenu = useCallback(() => {
|
|
49
|
+
if (current.current) {
|
|
50
|
+
current.current = null;
|
|
51
|
+
setOpen(false);
|
|
52
|
+
}
|
|
53
|
+
}, []);
|
|
54
|
+
const closeOn = open ? opened?.closeOn : void 0;
|
|
55
|
+
useEffect(() => {
|
|
56
|
+
if (!closeOn?.length) return;
|
|
57
|
+
const onWheel = (event) => {
|
|
58
|
+
if (!(event.target instanceof Element && event.target.closest("[role=\"menu\"]"))) closeMenu();
|
|
59
|
+
};
|
|
60
|
+
const listeners = [];
|
|
61
|
+
if (closeOn.includes("wheel")) listeners.push(["wheel", onWheel]);
|
|
62
|
+
if (closeOn.includes("blur")) listeners.push(["blur", closeMenu]);
|
|
63
|
+
if (closeOn.includes("resize")) listeners.push(["resize", closeMenu]);
|
|
64
|
+
for (const [type, listener] of listeners) window.addEventListener(type, listener, {
|
|
65
|
+
capture: true,
|
|
66
|
+
passive: true
|
|
67
|
+
});
|
|
68
|
+
return () => {
|
|
69
|
+
for (const [type, listener] of listeners) window.removeEventListener(type, listener, { capture: true });
|
|
70
|
+
};
|
|
71
|
+
}, [closeOn, closeMenu]);
|
|
47
72
|
const onOpenChange = useCallback((next, details) => {
|
|
48
73
|
if (next) return;
|
|
49
74
|
const element = current.current?.element;
|
|
@@ -61,6 +86,7 @@ function useContextMenu() {
|
|
|
61
86
|
}, [release]);
|
|
62
87
|
return {
|
|
63
88
|
openMenu,
|
|
89
|
+
closeMenu,
|
|
64
90
|
contextMenu: opened && /* @__PURE__ */ jsx(MenuFilter, {
|
|
65
91
|
search: opened.search,
|
|
66
92
|
children: (query) => /* @__PURE__ */ jsx(Menu.Root, {
|
|
@@ -85,15 +111,19 @@ function useContextMenu() {
|
|
|
85
111
|
}
|
|
86
112
|
var OpenMenuContext = createContext(null);
|
|
87
113
|
var OpenedByContext = createContext(null);
|
|
114
|
+
var CloseMenuContext = createContext(null);
|
|
88
115
|
/** The one menu every row, button and canvas below it opens through `useOpenMenu`, so none
|
|
89
116
|
* renders a menu of its own. `UIProvider` mounts it; nothing else needs to. */
|
|
90
117
|
function ContextMenuProvider({ children }) {
|
|
91
|
-
const { openMenu, contextMenu, openedBy } = useContextMenu();
|
|
118
|
+
const { openMenu, closeMenu, contextMenu, openedBy } = useContextMenu();
|
|
92
119
|
return /* @__PURE__ */ jsx(OpenMenuContext, {
|
|
93
120
|
value: openMenu,
|
|
94
|
-
children: /* @__PURE__ */
|
|
95
|
-
value:
|
|
96
|
-
children:
|
|
121
|
+
children: /* @__PURE__ */ jsx(CloseMenuContext, {
|
|
122
|
+
value: closeMenu,
|
|
123
|
+
children: /* @__PURE__ */ jsxs(OpenedByContext, {
|
|
124
|
+
value: openedBy,
|
|
125
|
+
children: [children, contextMenu]
|
|
126
|
+
})
|
|
97
127
|
})
|
|
98
128
|
});
|
|
99
129
|
}
|
|
@@ -106,9 +136,15 @@ var warnNoProvider = () => {
|
|
|
106
136
|
function useOpenMenu() {
|
|
107
137
|
return use(OpenMenuContext) ?? warnNoProvider;
|
|
108
138
|
}
|
|
139
|
+
var noMenu = () => {};
|
|
140
|
+
/** Closes the app's shared menu, if it is open, for a host whose surface moves out from under
|
|
141
|
+
* it in a way `closeOn` doesn't cover, such as a pane that switches. */
|
|
142
|
+
function useCloseMenu() {
|
|
143
|
+
return use(CloseMenuContext) ?? noMenu;
|
|
144
|
+
}
|
|
109
145
|
/** The element the shared menu is open under, so its button can say it's expanded. */
|
|
110
146
|
function useMenuOpenedBy() {
|
|
111
147
|
return use(OpenedByContext);
|
|
112
148
|
}
|
|
113
149
|
//#endregion
|
|
114
|
-
export { ContextMenuProvider, useContextMenu, useMenuOpenedBy, useOpenMenu };
|
|
150
|
+
export { ContextMenuProvider, useCloseMenu, useContextMenu, useMenuOpenedBy, useOpenMenu };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type MouseEventHandler, type ReactNode } from 'react';
|
|
2
2
|
/** The height a collapsible panel animates as it opens and closes. It clips
|
|
3
3
|
* only while it moves, so focus rings and overflowing content show once open. */
|
|
4
4
|
export declare const collapsePanelClassName = "h-(--collapsible-panel-height) transition-[height,opacity] duration-200 ease-out motion-reduce:transition-none data-starting-style:h-0 data-starting-style:overflow-hidden data-starting-style:opacity-0 data-ending-style:h-0 data-ending-style:overflow-hidden data-ending-style:opacity-0";
|
|
@@ -23,6 +23,10 @@ export interface DisclosureProps {
|
|
|
23
23
|
/** Controls beside the summary, outside the toggle, so a row can hold buttons without
|
|
24
24
|
* nesting them in it. */
|
|
25
25
|
actions?: ReactNode;
|
|
26
|
+
/** Controls that read as part of the summary, right after it on its line, such as a button
|
|
27
|
+
* that says why a row failed. They sit outside the toggle, so no button holds another and
|
|
28
|
+
* each is its own stop for Tab; a click on the rest of the line still toggles. */
|
|
29
|
+
summaryControls?: ReactNode;
|
|
26
30
|
/** On the whole disclosure, summary and detail, such as a row's own menu. */
|
|
27
31
|
onContextMenu?: MouseEventHandler<HTMLDivElement> | undefined;
|
|
28
32
|
children: ReactNode;
|
|
@@ -30,7 +34,7 @@ export interface DisclosureProps {
|
|
|
30
34
|
/** A line inside content that reveals more detail beneath it, such as a tool
|
|
31
35
|
* call's arguments or a model's reasoning. For a titled part of a page or
|
|
32
36
|
* form, which belongs in the page's outline, use Section. */
|
|
33
|
-
export declare function Disclosure({ summary, open, onOpenChange, defaultOpen, disabled, keepMounted, className, summaryClassName, panelClassName, chevron, actions, onContextMenu, children, }: DisclosureProps): import("react").JSX.Element;
|
|
37
|
+
export declare function Disclosure({ summary, open, onOpenChange, defaultOpen, disabled, keepMounted, className, summaryClassName, panelClassName, chevron, actions, summaryControls, onContextMenu, children, }: DisclosureProps): import("react").JSX.Element;
|
|
34
38
|
/** The revealing panel alone, for a toggle that lives elsewhere, such as a
|
|
35
39
|
* tree row's chevron that names this panel with `aria-controls`. */
|
|
36
40
|
export declare function DisclosurePanel({ open, id, keepMounted, className, children, }: {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { cx } from "../cx.js";
|
|
2
2
|
import { ChevronRightIcon } from "../icons.js";
|
|
3
|
+
import { useRef } from "react";
|
|
3
4
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
5
|
import { Collapsible } from "@base-ui/react/collapsible";
|
|
5
6
|
//#region src/components/Disclosure.tsx
|
|
@@ -9,8 +10,11 @@ var collapsePanelClassName = "h-(--collapsible-panel-height) transition-[height,
|
|
|
9
10
|
/** A line inside content that reveals more detail beneath it, such as a tool
|
|
10
11
|
* call's arguments or a model's reasoning. For a titled part of a page or
|
|
11
12
|
* form, which belongs in the page's outline, use Section. */
|
|
12
|
-
function Disclosure({ summary, open, onOpenChange, defaultOpen = false, disabled = false, keepMounted = false, className, summaryClassName, panelClassName, chevron = true, actions, onContextMenu, children }) {
|
|
13
|
+
function Disclosure({ summary, open, onOpenChange, defaultOpen = false, disabled = false, keepMounted = false, className, summaryClassName, panelClassName, chevron = true, actions, summaryControls, onContextMenu, children }) {
|
|
14
|
+
const trigger = useRef(null);
|
|
15
|
+
const hasControls = summaryControls !== void 0 && summaryControls !== null && summaryControls !== false;
|
|
13
16
|
const toggle = /* @__PURE__ */ jsxs(Collapsible.Trigger, {
|
|
17
|
+
ref: trigger,
|
|
14
18
|
className: cx("group/disclosure flex min-w-0 items-start gap-2 rounded-sm text-left focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-(--theme-focus)", disabled ? "cursor-default" : "cursor-pointer", summaryClassName),
|
|
15
19
|
children: [summary, !disabled && chevron && /* @__PURE__ */ jsx(ChevronRightIcon, {
|
|
16
20
|
"aria-hidden": "true",
|
|
@@ -24,7 +28,25 @@ function Disclosure({ summary, open, onOpenChange, defaultOpen = false, disabled
|
|
|
24
28
|
disabled,
|
|
25
29
|
className,
|
|
26
30
|
onContextMenu,
|
|
27
|
-
children: [
|
|
31
|
+
children: [hasControls ? /* @__PURE__ */ jsxs("div", {
|
|
32
|
+
className: "flex min-w-0 items-center gap-2",
|
|
33
|
+
children: [
|
|
34
|
+
toggle,
|
|
35
|
+
/* @__PURE__ */ jsx("div", {
|
|
36
|
+
className: "flex shrink-0 items-center gap-1",
|
|
37
|
+
children: summaryControls
|
|
38
|
+
}),
|
|
39
|
+
/* @__PURE__ */ jsx("div", {
|
|
40
|
+
"aria-hidden": "true",
|
|
41
|
+
className: cx("min-w-0 flex-1 self-stretch", !disabled && "cursor-pointer"),
|
|
42
|
+
onClick: () => trigger.current?.click()
|
|
43
|
+
}),
|
|
44
|
+
actions && /* @__PURE__ */ jsx("div", {
|
|
45
|
+
className: "flex shrink-0 items-center gap-1",
|
|
46
|
+
children: actions
|
|
47
|
+
})
|
|
48
|
+
]
|
|
49
|
+
}) : actions ? /* @__PURE__ */ jsxs("div", {
|
|
28
50
|
className: "flex min-w-0 items-center gap-2",
|
|
29
51
|
children: [/* @__PURE__ */ jsx("div", {
|
|
30
52
|
className: "flex min-w-0 flex-1",
|
package/dist/index.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export { Checkbox, CheckboxGroup, type CheckboxProps } from './components/Checkb
|
|
|
10
10
|
export { ColorInput, type ColorInputProps } from './components/ColorInput.js';
|
|
11
11
|
export { Autocomplete, type AutocompleteProps, Combobox, type ComboboxGroup, type ComboboxItem, type ComboboxItems, type ComboboxProps, } from './components/Combobox.js';
|
|
12
12
|
export { ConfirmModal, type ConfirmModalProps, type ConfirmRequest, useConfirm, } from './components/ConfirmModal.js';
|
|
13
|
-
export { ContextMenuProvider, type MenuOpener, type OpenMenu, type OpenMenuOptions, useContextMenu, useMenuOpenedBy, useOpenMenu, } from './components/ContextMenu.js';
|
|
13
|
+
export { ContextMenuProvider, type MenuCloseTrigger, type MenuOpener, type OpenMenu, type OpenMenuOptions, useCloseMenu, useContextMenu, useMenuOpenedBy, useOpenMenu, } from './components/ContextMenu.js';
|
|
14
14
|
export { CopyButton, type CopyButtonProps, CopyCodeBlock, type CopyCodeBlockProps, } from './components/CopyButton.js';
|
|
15
15
|
export { CreateModal, CreateModalSelect, CreateModalSwitch, } from './components/CreateModal.js';
|
|
16
16
|
export { categoryClasses, categoryOf } from './components/category.js';
|
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@ import { cx } from "./cx.js";
|
|
|
2
2
|
import { buttonClasses } from "./components/buttonClasses.js";
|
|
3
3
|
import { EmptyState } from "./components/EmptyState.js";
|
|
4
4
|
import { MenuCheckboxItem, MenuGroupLabel, MenuItem, MenuLinkItem, MenuPopup, MenuRadioItem, MenuSeparator, MenuSubmenuTrigger } from "./components/Menu.js";
|
|
5
|
-
import { ContextMenuProvider, useContextMenu, useMenuOpenedBy, useOpenMenu } from "./components/ContextMenu.js";
|
|
5
|
+
import { ContextMenuProvider, useCloseMenu, useContextMenu, useMenuOpenedBy, useOpenMenu } from "./components/ContextMenu.js";
|
|
6
6
|
import { Loader } from "./components/Loader.js";
|
|
7
7
|
import { toast } from "./components/Toast.js";
|
|
8
8
|
import { Kbd, ariaKeyShortcuts, formatShortcut, isApplePlatform, shortcutText, useShortcutFormat } from "./components/Kbd.js";
|
|
@@ -83,4 +83,4 @@ import { ToggleGroup } from "./components/ToggleGroup.js";
|
|
|
83
83
|
import { useClosingValue } from "./components/useClosingValue.js";
|
|
84
84
|
import { useCssIsDark } from "./components/useCssIsDark.js";
|
|
85
85
|
import { useApplyTheme, useColorMode } from "./components/useTheme.js";
|
|
86
|
-
export { ActionMenu, AppLink, Autocomplete, Avatar, AvatarGroup, Breadcrumbs, Button, CODE_STYLES, Calendar, Callout, Card, CardHeader, ChartLegendList, ChartTooltipContent, Checkbox, CheckboxGroup, ColorInput, Combobox, ConfirmModal, ContextMenuProvider, CopyButton, CopyCodeBlock, CountBadge, CreateModal, CreateModalSelect, CreateModalSwitch, DEFAULT_CONTRAST, DEFAULT_PRESET, DEFAULT_THEME, DatePicker, DescriptionList, DescriptionListGroup, DescriptionListItem, Disclosure, DisclosurePanel, Drawer, Elapsed, EmptyState, ErrorPage, ErrorText, ExternalLink, Field, FieldOption, FieldValue, FileButton, HoverCard, IconButton, InfoTip, Input, JND, Kbd, LetterBadge, ListboxGroup, ListboxOption, ListboxPanel, Loader, LoadingRegion, Markdown, MenuCheckboxItem, MenuEntries, MenuFilter, MenuGroupLabel, MenuItem, MenuLinkItem, MenuPopup, MenuRadioItem, MenuSeparator, MenuSubmenuTrigger, Meter, MethodButton, Modal, ModalDescription, ModalTitle, NumberInput, OneTimeCodeInput, Overview, PAGE_SIZES, PageHeader, PageHeaderAction, PageHeaderAddButton, PageHeaderBar, PageHeaderMenu, PageHeaderProvider, Pagination, Popover, PopoverClose, ProgressBar, Radio, RadioGroup, RefreshButton, RelativeTime, RequiredMark, RevealToggle, RunStatusIcon, SIDEBAR_TOKENS, SearchInput, Section, SegmentedControl, Select, SelectionCopy, SeriesSwatch, SettingModeOption, SettingRow, SettingsCard, SettingsHeading, Skeleton, Slider, StatusBadge, StatusDot, StickyBar, Switch, THEME_PRESETS, THEME_TOKENS, TabPanel, Table, Tabs, Tag, TagList, Textarea, ThemeEditor, ThemePreview, TitleInput, ToggleGroup, Tooltip, TooltipProvider, UIProvider, apcaContrast, applyTheme, ariaKeyShortcuts, avatarInitials, buttonClasses, categoryClasses, categoryOf, collapsePanelClassName, composite, contrastRatio, cx, deltaE, deriveTheme, errorPageKind, fieldBox, fitSeed, formatBytes, formatCount, formatDateTime, formatDuration, formatInfoTipContent, formatShortcut, formatTimeLeft, generateTheme, isApplePlatform, isDarkColor, isMenuDivider, isMenuGroup, isMenuSubmenu, isPlainClick, isTextEntryContext, levelTone, menuDivider, modalPanelClassName, modeOf, normalizeTags, parseColor, parseTheme, prefersWideGamut, resolveMode, runStatusTone, schemeFor, serializeTheme, seriesColor, seriesColors, seriesOpacity, seriesSlotColor, shortcutText, statusTextClass, tagClasses, themeStylesheet, toHex, toP3, toast, useApplyTheme, useAvatarColoring, useClock, useClosePopover, useClosingValue, useColorMode, useConfirm, useContextMenu, useCopy, useCssIsDark, useElapsed, useFieldControl, useFieldLabelledControl, useListboxNavigation, useLocale, useMenuOpenedBy, useNavigation, useOpenMenu, useOptionalWorkflowEngine, usePersistedState, useProblemText, useProvisionCorsRules, useRelativeTime, useRunFile, useSeriesHighlight, useShortcutFormat, useShortcutKey, useSlots, useStrings, useWorkflowActions, useWorkflowEditing, useWorkflowEngine, useWorkflowEngineLoader };
|
|
86
|
+
export { ActionMenu, AppLink, Autocomplete, Avatar, AvatarGroup, Breadcrumbs, Button, CODE_STYLES, Calendar, Callout, Card, CardHeader, ChartLegendList, ChartTooltipContent, Checkbox, CheckboxGroup, ColorInput, Combobox, ConfirmModal, ContextMenuProvider, CopyButton, CopyCodeBlock, CountBadge, CreateModal, CreateModalSelect, CreateModalSwitch, DEFAULT_CONTRAST, DEFAULT_PRESET, DEFAULT_THEME, DatePicker, DescriptionList, DescriptionListGroup, DescriptionListItem, Disclosure, DisclosurePanel, Drawer, Elapsed, EmptyState, ErrorPage, ErrorText, ExternalLink, Field, FieldOption, FieldValue, FileButton, HoverCard, IconButton, InfoTip, Input, JND, Kbd, LetterBadge, ListboxGroup, ListboxOption, ListboxPanel, Loader, LoadingRegion, Markdown, MenuCheckboxItem, MenuEntries, MenuFilter, MenuGroupLabel, MenuItem, MenuLinkItem, MenuPopup, MenuRadioItem, MenuSeparator, MenuSubmenuTrigger, Meter, MethodButton, Modal, ModalDescription, ModalTitle, NumberInput, OneTimeCodeInput, Overview, PAGE_SIZES, PageHeader, PageHeaderAction, PageHeaderAddButton, PageHeaderBar, PageHeaderMenu, PageHeaderProvider, Pagination, Popover, PopoverClose, ProgressBar, Radio, RadioGroup, RefreshButton, RelativeTime, RequiredMark, RevealToggle, RunStatusIcon, SIDEBAR_TOKENS, SearchInput, Section, SegmentedControl, Select, SelectionCopy, SeriesSwatch, SettingModeOption, SettingRow, SettingsCard, SettingsHeading, Skeleton, Slider, StatusBadge, StatusDot, StickyBar, Switch, THEME_PRESETS, THEME_TOKENS, TabPanel, Table, Tabs, Tag, TagList, Textarea, ThemeEditor, ThemePreview, TitleInput, ToggleGroup, Tooltip, TooltipProvider, UIProvider, apcaContrast, applyTheme, ariaKeyShortcuts, avatarInitials, buttonClasses, categoryClasses, categoryOf, collapsePanelClassName, composite, contrastRatio, cx, deltaE, deriveTheme, errorPageKind, fieldBox, fitSeed, formatBytes, formatCount, formatDateTime, formatDuration, formatInfoTipContent, formatShortcut, formatTimeLeft, generateTheme, isApplePlatform, isDarkColor, isMenuDivider, isMenuGroup, isMenuSubmenu, isPlainClick, isTextEntryContext, levelTone, menuDivider, modalPanelClassName, modeOf, normalizeTags, parseColor, parseTheme, prefersWideGamut, resolveMode, runStatusTone, schemeFor, serializeTheme, seriesColor, seriesColors, seriesOpacity, seriesSlotColor, shortcutText, statusTextClass, tagClasses, themeStylesheet, toHex, toP3, toast, useApplyTheme, useAvatarColoring, useClock, useCloseMenu, useClosePopover, useClosingValue, useColorMode, useConfirm, useContextMenu, useCopy, useCssIsDark, useElapsed, useFieldControl, useFieldLabelledControl, useListboxNavigation, useLocale, useMenuOpenedBy, useNavigation, useOpenMenu, useOptionalWorkflowEngine, usePersistedState, useProblemText, useProvisionCorsRules, useRelativeTime, useRunFile, useSeriesHighlight, useShortcutFormat, useShortcutKey, useSlots, useStrings, useWorkflowActions, useWorkflowEditing, useWorkflowEngine, useWorkflowEngineLoader };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@parallelworks/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.80.0",
|
|
4
4
|
"description": "React UI components: a theme contract, icons, brand logos, primitives, lists, forms, a job graph, a code editor, a log viewer, a file explorer and an AI chat, each on its own subpath",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|