@parallelworks/ui 0.5.0 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -6
- package/dist/chunks/{CodePreviewEditor-CBtYRZi6.js → CodePreviewEditor-Uij_Npp4.js} +1 -1
- package/dist/chunks/{CreateModal-6zZZHxCI.js → CreateModal-DEvWkdFl.js} +4 -29
- package/dist/chunks/{Monaco-CvFXoW3r.js → Monaco-H1M5hQbJ.js} +2 -2
- package/dist/chunks/PageHeader-CSo3LVId.js +571 -0
- package/dist/chunks/{Provider-jQCAN3NN.js → Provider-BIL5347a.js} +5 -1
- package/dist/chunks/{SwitchToggle-D0ud8cd5.js → SwitchToggle-DiBXEP12.js} +1 -1
- package/dist/chunks/{editor-CEXg6C8X.js → editor-4ZuZruLz.js} +2 -2
- package/dist/chunks/{list-CvDWt0TC.js → list-CgzqVlao.js} +296 -302
- package/dist/components/Breadcrumbs.d.ts +28 -0
- package/dist/components/PageHeader.d.ts +69 -0
- package/dist/components/Provider.d.ts +13 -1
- package/dist/components/Table.d.ts +1 -1
- package/dist/editor/index.js +1 -1
- package/dist/file-explorer/FileExplorer.d.ts +1 -3
- package/dist/file-explorer/helpers.d.ts +1 -3
- package/dist/file-explorer/index.js +15 -22
- package/dist/form/index.js +2 -2
- package/dist/index.d.ts +2 -0
- package/dist/index.js +6 -5
- package/dist/list/ActionToolbar.d.ts +38 -0
- package/dist/list/ListPage.d.ts +63 -0
- package/dist/list/RowContextMenu.d.ts +1 -1
- package/dist/list/index.d.ts +2 -0
- package/dist/list/index.js +3 -2
- package/dist/logviewer/index.js +1 -1
- package/dist/styles/theme.css +2 -0
- package/dist/styles.css +1 -1
- package/dist/theme/index.d.ts +1 -1
- package/dist/theme/index.js +9 -0
- package/dist/workflow/index.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface IBreadcrumbItem {
|
|
3
|
+
label: string;
|
|
4
|
+
href?: string;
|
|
5
|
+
newWindow?: boolean;
|
|
6
|
+
}
|
|
7
|
+
interface BreadcrumbContextType {
|
|
8
|
+
breadcrumbs: IBreadcrumbItem[];
|
|
9
|
+
setBreadcrumbs: (breadcrumbs: IBreadcrumbItem[]) => void;
|
|
10
|
+
rightsideBreadcrumb?: IBreadcrumbItem | null;
|
|
11
|
+
setRightsideBreadcrumb: (breadcrumb: IBreadcrumbItem | null) => void;
|
|
12
|
+
hidden: boolean;
|
|
13
|
+
setHidden: (hidden: boolean) => void;
|
|
14
|
+
/** Null whenever the breadcrumb strip isn't rendered (classic chrome). */
|
|
15
|
+
titleActionSlot: HTMLElement | null;
|
|
16
|
+
setTitleActionSlot: (el: HTMLElement | null) => void;
|
|
17
|
+
rightActionSlot: HTMLElement | null;
|
|
18
|
+
setRightActionSlot: (el: HTMLElement | null) => void;
|
|
19
|
+
}
|
|
20
|
+
export declare const useBreadcrumb: () => BreadcrumbContextType;
|
|
21
|
+
export declare function BreadcrumbProvider({ children, }: {
|
|
22
|
+
children: React.ReactNode;
|
|
23
|
+
}): React.JSX.Element;
|
|
24
|
+
export declare function useSetBreadcrumbs(getBreadcrumbs: (() => IBreadcrumbItem[]) | IBreadcrumbItem[]): void;
|
|
25
|
+
/** For pages that render their own header instead of the breadcrumb strip. */
|
|
26
|
+
export declare function useClearBreadcrumbs(): void;
|
|
27
|
+
export declare function useHideBreadcrumbs(hidden: boolean): void;
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import type { ComponentType, ReactNode } from 'react';
|
|
2
|
+
import { type RowMenuItem } from '../list/RowContextMenu.js';
|
|
3
|
+
import { type HeaderAddMenuItem } from './AddMenu.js';
|
|
4
|
+
export interface PageHeaderBreadcrumb {
|
|
5
|
+
label: string;
|
|
6
|
+
href?: string;
|
|
7
|
+
}
|
|
8
|
+
/** A rendered crumb row entry, as handed to the breadcrumbPin slot. */
|
|
9
|
+
export interface PageHeaderCrumb {
|
|
10
|
+
label: ReactNode;
|
|
11
|
+
href?: string;
|
|
12
|
+
}
|
|
13
|
+
/** With menu, the plus opens a chooser; otherwise navigates to or calls the
|
|
14
|
+
* single action. `word` is the visible verb; `label` stays the full action for
|
|
15
|
+
* the tooltip and screen readers. */
|
|
16
|
+
export declare function HeaderAddButton({ to, onClick, label, word, menu, }: {
|
|
17
|
+
to?: string;
|
|
18
|
+
onClick?: () => void;
|
|
19
|
+
label: string;
|
|
20
|
+
word?: 'add' | 'create';
|
|
21
|
+
menu?: HeaderAddMenuItem[];
|
|
22
|
+
}): import("react").JSX.Element;
|
|
23
|
+
export declare function HeaderActionMenu({ items, label, }: {
|
|
24
|
+
items: HeaderAddMenuItem[];
|
|
25
|
+
label?: string;
|
|
26
|
+
}): import("react").JSX.Element | null;
|
|
27
|
+
/** The header "…" trigger for a RowMenuItem menu — same rendering (submenus,
|
|
28
|
+
* destructive styling) as the list pages' right-click context menus. */
|
|
29
|
+
export declare function HeaderRowMenu({ items, label, }: {
|
|
30
|
+
items: RowMenuItem[];
|
|
31
|
+
label?: string;
|
|
32
|
+
}): import("react").JSX.Element | null;
|
|
33
|
+
export declare function HeaderEditButton({ to, onClick, label, disabled, tooltip, }: {
|
|
34
|
+
to?: string;
|
|
35
|
+
onClick?: () => void;
|
|
36
|
+
label?: string;
|
|
37
|
+
disabled?: boolean;
|
|
38
|
+
tooltip?: string;
|
|
39
|
+
}): import("react").JSX.Element;
|
|
40
|
+
/** Renders nothing when the modern breadcrumb strip isn't mounted (classic chrome or self-headered pages). */
|
|
41
|
+
export declare function BreadcrumbsTitleAction({ children }: {
|
|
42
|
+
children: ReactNode;
|
|
43
|
+
}): import("react").ReactPortal | null;
|
|
44
|
+
export declare function BreadcrumbsRightAction({ children }: {
|
|
45
|
+
children: ReactNode;
|
|
46
|
+
}): import("react").ReactPortal | null;
|
|
47
|
+
export declare function BreadcrumbsActionButton({ icon: Icon, label, to, onClick, disabled, tooltip, }: {
|
|
48
|
+
icon: ComponentType<{
|
|
49
|
+
className?: string;
|
|
50
|
+
}>;
|
|
51
|
+
label: string;
|
|
52
|
+
to?: string;
|
|
53
|
+
onClick?: () => void;
|
|
54
|
+
disabled?: boolean;
|
|
55
|
+
tooltip?: string;
|
|
56
|
+
}): import("react").JSX.Element;
|
|
57
|
+
interface PageHeaderProps {
|
|
58
|
+
breadcrumbs?: PageHeaderBreadcrumb[] | undefined;
|
|
59
|
+
title?: ReactNode;
|
|
60
|
+
titleAction?: ReactNode;
|
|
61
|
+
actions?: ReactNode;
|
|
62
|
+
toolbar?: ReactNode;
|
|
63
|
+
className?: string;
|
|
64
|
+
sticky?: boolean;
|
|
65
|
+
/** Negative offset (e.g. -top-4) prevents rows peeking above the header when the container has top padding. */
|
|
66
|
+
stickyTopClassName?: string;
|
|
67
|
+
}
|
|
68
|
+
export declare function PageHeader({ breadcrumbs, title, titleAction, actions, toolbar, className, sticky, stickyTopClassName, }: PageHeaderProps): import("react").JSX.Element;
|
|
69
|
+
export {};
|
|
@@ -50,6 +50,8 @@ export interface UIStrings {
|
|
|
50
50
|
showHiddenFields: string;
|
|
51
51
|
showHiddenFieldsHint: string;
|
|
52
52
|
jsonHasErrors: string;
|
|
53
|
+
add: string;
|
|
54
|
+
create: string;
|
|
53
55
|
};
|
|
54
56
|
dropdown: {
|
|
55
57
|
select: (type: string) => string;
|
|
@@ -337,6 +339,7 @@ export interface UIStrings {
|
|
|
337
339
|
};
|
|
338
340
|
}
|
|
339
341
|
export interface UINavigation {
|
|
342
|
+
goTo: (to: string) => void;
|
|
340
343
|
toWorkflow: (name: string) => void;
|
|
341
344
|
toMarketItem: (name: string) => void;
|
|
342
345
|
openExternal: (href: string) => void;
|
|
@@ -382,12 +385,17 @@ export interface UIData {
|
|
|
382
385
|
}>;
|
|
383
386
|
}
|
|
384
387
|
import type { FieldComponent } from '../form/fieldRegistry.js';
|
|
385
|
-
|
|
388
|
+
import type { PageHeaderCrumb } from './PageHeader.js';
|
|
389
|
+
/** Renders internal navigation; hosts bind their router's Link. Accessibility
|
|
390
|
+
* and tooltip data attributes pass through so header links keep their labels. */
|
|
386
391
|
export type UILinkComponent = React.ComponentType<{
|
|
387
392
|
to: string;
|
|
388
393
|
onClick?: () => void;
|
|
389
394
|
className?: string;
|
|
390
395
|
children: ReactNode;
|
|
396
|
+
title?: string;
|
|
397
|
+
'aria-label'?: string;
|
|
398
|
+
[dataAttr: `data-${string}`]: string | undefined;
|
|
391
399
|
}>;
|
|
392
400
|
/** The provider's link slot, with a plain anchor fallback. */
|
|
393
401
|
export declare function useLink(): UILinkComponent;
|
|
@@ -436,6 +444,10 @@ export interface UISlots {
|
|
|
436
444
|
storage: unknown;
|
|
437
445
|
groups?: unknown;
|
|
438
446
|
}) => ReactNode;
|
|
447
|
+
/** Pin affordance rendered after the page header's crumb trail; absent hides it. */
|
|
448
|
+
breadcrumbPin?: (args: {
|
|
449
|
+
crumbs: readonly PageHeaderCrumb[];
|
|
450
|
+
}) => ReactNode;
|
|
439
451
|
}
|
|
440
452
|
export interface UIProviderValue {
|
|
441
453
|
notify: UINotify;
|
|
@@ -8,7 +8,7 @@ declare function CompactItem({ wrap, children, className, colspan, ...tdProps }:
|
|
|
8
8
|
interface ITableHeaderProps {
|
|
9
9
|
children?: React.ReactNode;
|
|
10
10
|
className?: string;
|
|
11
|
-
style?: React.CSSProperties;
|
|
11
|
+
style?: React.CSSProperties | undefined;
|
|
12
12
|
colspan?: number;
|
|
13
13
|
onClick?: () => void;
|
|
14
14
|
/** When false, drops uppercase + tracking-wider for a sentence-case header. */
|
package/dist/editor/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as EditorField, i as FormCodePanel, n as defineEditorThemes, o as Editor, r as getThemeName, t as setupMonacoWorkers } from "../chunks/editor-
|
|
1
|
+
import { a as EditorField, i as FormCodePanel, n as defineEditorThemes, o as Editor, r as getThemeName, t as setupMonacoWorkers } from "../chunks/editor-4ZuZruLz.js";
|
|
2
2
|
export { Editor, EditorField, FormCodePanel, defineEditorThemes, getThemeName, setupMonacoWorkers };
|
|
@@ -16,8 +16,6 @@ interface IFileExplorerProps {
|
|
|
16
16
|
groupsLoading?: boolean;
|
|
17
17
|
selectedPath: string;
|
|
18
18
|
onPathChange: (path: string) => void;
|
|
19
|
-
/** The modern layout drops the sidebar heading and adds the toolbar row. */
|
|
20
|
-
variant?: 'classic' | 'modern';
|
|
21
19
|
}
|
|
22
|
-
export default function FileExplorer({ storages, onRefresh, showUserHierarchy, groups, groupsLoading, selectedPath, onPathChange, getProviderAndClient,
|
|
20
|
+
export default function FileExplorer({ storages, onRefresh, showUserHierarchy, groups, groupsLoading, selectedPath, onPathChange, getProviderAndClient, }: IFileExplorerProps): import("react").JSX.Element;
|
|
23
21
|
export {};
|
|
@@ -30,9 +30,7 @@ declare function NoDataAvailablePreview({ selectedStorage, error, onRefresh, con
|
|
|
30
30
|
className?: string;
|
|
31
31
|
canWrite?: boolean;
|
|
32
32
|
}): JSX.Element;
|
|
33
|
-
declare function SkeletonPreview(
|
|
34
|
-
variant?: 'classic' | 'modern';
|
|
35
|
-
}): JSX.Element;
|
|
33
|
+
declare function SkeletonPreview(): JSX.Element;
|
|
36
34
|
interface IDragDropZoneProps {
|
|
37
35
|
onDropFiles?: ((files: FileList | DataTransferItemList) => void) | undefined;
|
|
38
36
|
children: React.ReactNode;
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { AccessIcon, AlertIcon, AngleDownIcon, AngleRightIcon, AngleUpIcon, ChevronLeftIcon, ChevronRightIcon, ClipboardIcon, CloseIcon, CloudUploadIcon, CollapseIcon, CustomizeIcon, DiskIcon, DocumentIcon, DownloadFileIcon, ExpandIcon, ExpandVerticalIcon, EyeIcon, FileIcon, FileTextIcon, FolderIcon, FolderOpenIcon, ImageIcon, LinkIcon, LockIcon, MinimizeIcon, MusicIcon, PdfIcon, RefreshIcon, ShareIcon, SpreadsheetIcon, SuccessIcon, TrashIcon, UploadIcon, UserIcon, VideoIcon, ZipIcon, ZoomInIcon, ZoomOutIcon } from "../icons.js";
|
|
2
|
-
import {
|
|
3
|
-
import { a as useProvisionCorsRules, c as useStrings, i as useNotify, s as useSlots } from "../chunks/Provider-
|
|
2
|
+
import { d as Markdown, f as CopyCodeBlock, m as Callout, p as CopyToClipboard, s as ConfirmModal, t as CreateModal } from "../chunks/CreateModal-DEvWkdFl.js";
|
|
3
|
+
import { a as useProvisionCorsRules, c as useStrings, i as useNotify, s as useSlots } from "../chunks/Provider-BIL5347a.js";
|
|
4
4
|
import { n as TOOLTIP_ID, r as TooltipInfo } from "../chunks/Tooltip-WgbiC_nd.js";
|
|
5
5
|
import { t as Loader } from "../chunks/Loader-BXoXTZGc.js";
|
|
6
|
+
import { d as copySubmenu, g as useRowMenuActive, h as useRowMenu, l as MoreButton, u as assembleRowMenu } from "../chunks/PageHeader-CSo3LVId.js";
|
|
6
7
|
import { t as StatusBadge } from "../chunks/StatusBadge-DXp4zkSd.js";
|
|
7
8
|
import { n as Table } from "../chunks/Table-ByziK93x.js";
|
|
8
|
-
import {
|
|
9
|
+
import { D as listTableFixedProps, O as listTableProps, S as ListSkeleton, T as RowSelectCheckbox, b as ListActionsHeader } from "../chunks/list-CgzqVlao.js";
|
|
9
10
|
import cx from "classnames";
|
|
10
11
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
11
12
|
import { Suspense, createContext, lazy, memo, use, useCallback, useEffect, useEffectEvent, useId, useLayoutEffect, useMemo, useRef, useState, useTransition } from "react";
|
|
@@ -1536,9 +1537,8 @@ function NoDataAvailablePreview({ selectedStorage, error, onRefresh, connectionI
|
|
|
1536
1537
|
})
|
|
1537
1538
|
});
|
|
1538
1539
|
}
|
|
1539
|
-
function SkeletonPreview(
|
|
1540
|
+
function SkeletonPreview() {
|
|
1540
1541
|
const [sidebarWidth] = useLocalStorage(SIDEBAR_WIDTH_STORAGE_KEY, 300);
|
|
1541
|
-
const newNavigation = variant === "modern";
|
|
1542
1542
|
return /* @__PURE__ */ jsxs("div", {
|
|
1543
1543
|
className: "w-full h-full flex",
|
|
1544
1544
|
children: [/* @__PURE__ */ jsx("div", {
|
|
@@ -1546,15 +1546,12 @@ function SkeletonPreview({ variant = "classic" } = {}) {
|
|
|
1546
1546
|
style: { width: `${sidebarWidth}px` },
|
|
1547
1547
|
children: /* @__PURE__ */ jsxs("div", {
|
|
1548
1548
|
className: "h-full flex flex-col border-r theme-border bg-(--theme-panel-bg)/60",
|
|
1549
|
-
children: [/* @__PURE__ */
|
|
1550
|
-
className:
|
|
1551
|
-
children:
|
|
1552
|
-
className: "text-[11px] font-semibold uppercase tracking-widest theme-muted-text",
|
|
1553
|
-
children: "Explorer"
|
|
1554
|
-
}), /* @__PURE__ */ jsxs("div", {
|
|
1549
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
1550
|
+
className: "flex items-center justify-end h-10 px-3 shrink-0 border-b theme-border",
|
|
1551
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
1555
1552
|
className: "flex gap-x-0.5",
|
|
1556
1553
|
children: [/* @__PURE__ */ jsx("div", { className: "h-7 w-7" }), /* @__PURE__ */ jsx("div", { className: "h-7 w-7" })]
|
|
1557
|
-
})
|
|
1554
|
+
})
|
|
1558
1555
|
}), /* @__PURE__ */ jsx("div", {
|
|
1559
1556
|
className: "overflow-auto flex-1 px-2 py-2 space-y-1.5",
|
|
1560
1557
|
children: [...Array(6)].map((_, i) => /* @__PURE__ */ jsx(Skeleton, { height: 14 }, i))
|
|
@@ -2518,7 +2515,7 @@ function useObjectText(url, { enabled, maxBytes, maxLines, knownSize, cacheKey,
|
|
|
2518
2515
|
}
|
|
2519
2516
|
//#endregion
|
|
2520
2517
|
//#region src/file-explorer/FilePreview/Viewer.tsx
|
|
2521
|
-
var CodePreviewEditor = lazy(() => import("../chunks/CodePreviewEditor-
|
|
2518
|
+
var CodePreviewEditor = lazy(() => import("../chunks/CodePreviewEditor-Uij_Npp4.js"));
|
|
2522
2519
|
var PREVIEW_MARKDOWN_CONTROLS = {
|
|
2523
2520
|
table: { fullscreen: false },
|
|
2524
2521
|
mermaid: { fullscreen: false }
|
|
@@ -4292,11 +4289,10 @@ function getAncestorDirPaths(path) {
|
|
|
4292
4289
|
for (let i = 1; i <= dirSegmentCount; i++) ancestors.push(segments.slice(0, i).join("/") + "/");
|
|
4293
4290
|
return ancestors;
|
|
4294
4291
|
}
|
|
4295
|
-
function FileExplorer({ storages, onRefresh, showUserHierarchy = false, groups = [], groupsLoading = false, selectedPath, onPathChange, getProviderAndClient
|
|
4292
|
+
function FileExplorer({ storages, onRefresh, showUserHierarchy = false, groups = [], groupsLoading = false, selectedPath, onPathChange, getProviderAndClient }) {
|
|
4296
4293
|
const t = useStrings().fileExplorer;
|
|
4297
4294
|
const notify = useNotify();
|
|
4298
4295
|
const slots = useSlots();
|
|
4299
|
-
const newNavigation = variant === "modern";
|
|
4300
4296
|
const fileExplorerContext = useFileExplorer();
|
|
4301
4297
|
const [localStorages, setLocalStorages] = useState(storages);
|
|
4302
4298
|
const [listings, setListings] = useState(() => /* @__PURE__ */ new Map());
|
|
@@ -5082,12 +5078,9 @@ function FileExplorer({ storages, onRefresh, showUserHierarchy = false, groups =
|
|
|
5082
5078
|
},
|
|
5083
5079
|
children: /* @__PURE__ */ jsxs("div", {
|
|
5084
5080
|
className: "h-full flex flex-col border-r theme-border bg-(--theme-panel-bg)/60",
|
|
5085
|
-
children: [/* @__PURE__ */
|
|
5086
|
-
className:
|
|
5087
|
-
children:
|
|
5088
|
-
className: "text-[11px] font-semibold uppercase tracking-widest theme-muted-text",
|
|
5089
|
-
children: t.chrome.explorer
|
|
5090
|
-
}), /* @__PURE__ */ jsxs("div", {
|
|
5081
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
5082
|
+
className: "flex items-center justify-end h-10 px-3 shrink-0 border-b theme-border",
|
|
5083
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
5091
5084
|
className: "flex gap-x-0.5",
|
|
5092
5085
|
children: [/* @__PURE__ */ jsx("button", {
|
|
5093
5086
|
"aria-label": t.chrome.refresh,
|
|
@@ -5106,7 +5099,7 @@ function FileExplorer({ storages, onRefresh, showUserHierarchy = false, groups =
|
|
|
5106
5099
|
onClick: collapseAll,
|
|
5107
5100
|
children: /* @__PURE__ */ jsx(CollapseIcon, { className: "h-3.5 w-3.5" })
|
|
5108
5101
|
})]
|
|
5109
|
-
})
|
|
5102
|
+
})
|
|
5110
5103
|
}), /* @__PURE__ */ jsx(TreeView, {
|
|
5111
5104
|
rootNodes,
|
|
5112
5105
|
parentToChildrenMap,
|
package/dist/form/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AngleRightIcon, EyeIcon, EyeOffIcon, SuccessCheckmark, TrashIcon } from "../icons.js";
|
|
2
|
-
import { c as useStrings, s as useSlots } from "../chunks/Provider-
|
|
2
|
+
import { c as useStrings, s as useSlots } from "../chunks/Provider-BIL5347a.js";
|
|
3
3
|
import { n as TOOLTIP_ID, r as TooltipInfo } from "../chunks/Tooltip-WgbiC_nd.js";
|
|
4
|
-
import { a as UncontrolledCollapsiblePanel, c as Dropdown, f as isCategory, n as SectionHeader, o as MultiSelectDropdown, r as ControlledCollapsiblePanel, s as CustomListbox, t as SwitchToggle } from "../chunks/SwitchToggle-
|
|
4
|
+
import { a as UncontrolledCollapsiblePanel, c as Dropdown, f as isCategory, n as SectionHeader, o as MultiSelectDropdown, r as ControlledCollapsiblePanel, s as CustomListbox, t as SwitchToggle } from "../chunks/SwitchToggle-DiBXEP12.js";
|
|
5
5
|
import { t as Loader } from "../chunks/Loader-BXoXTZGc.js";
|
|
6
6
|
import { n as StatusDot } from "../chunks/StatusBadge-DXp4zkSd.js";
|
|
7
7
|
import { n as Table } from "../chunks/Table-ByziK93x.js";
|
package/dist/index.d.ts
CHANGED
|
@@ -45,3 +45,5 @@ export { default as SettingsCard } from './components/SettingsCard.js';
|
|
|
45
45
|
export { default as SettingsGroup } from './components/SettingsGroup.js';
|
|
46
46
|
export { SettingRow, SettingSection } from './components/SettingRow.js';
|
|
47
47
|
export { SettingModeOption } from './components/SettingModeOption.js';
|
|
48
|
+
export { BreadcrumbProvider, useBreadcrumb, useClearBreadcrumbs, useHideBreadcrumbs, useSetBreadcrumbs, type IBreadcrumbItem, } from './components/Breadcrumbs.js';
|
|
49
|
+
export { BreadcrumbsActionButton, BreadcrumbsRightAction, BreadcrumbsTitleAction, HeaderActionMenu, HeaderAddButton, HeaderEditButton, HeaderRowMenu, PageHeader, type PageHeaderBreadcrumb, type PageHeaderCrumb, } from './components/PageHeader.js';
|
package/dist/index.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { DEFAULT_PRESET, THEME_PRESETS, THEME_TOKENS, applyTheme, contrastRatio, deriveTheme, isDarkColor } from "./theme/index.js";
|
|
2
2
|
import { AlertIcon, AngleRightIcon, EyeIcon, EyeOffIcon, FilterIcon, LoaderIcon, SortDownIcon, SortUnsortedIcon, SortUpIcon } from "./icons.js";
|
|
3
|
-
import { a as CreateModalSwitch, c as
|
|
4
|
-
import { a as useProvisionCorsRules, c as useStrings, i as useNotify, l as useWorkflowJsonResolver, n as useLink, o as useRunFile, r as useNavigation, s as useSlots, t as UIProvider } from "./chunks/Provider-
|
|
3
|
+
import { a as CreateModalSwitch, c as dangerButtonClasses, d as Markdown, f as CopyCodeBlock, i as CreateModalSelect, l as ghostButtonClasses, m as Callout, n as CreateModalAutocompleteField, o as CreateModalTextarea, p as CopyToClipboard, r as CreateModalField, s as ConfirmModal, t as CreateModal, u as primaryButtonClasses } from "./chunks/CreateModal-DEvWkdFl.js";
|
|
4
|
+
import { a as useProvisionCorsRules, c as useStrings, i as useNotify, l as useWorkflowJsonResolver, n as useLink, o as useRunFile, r as useNavigation, s as useSlots, t as UIProvider } from "./chunks/Provider-BIL5347a.js";
|
|
5
5
|
import { i as formatTooltipContent, n as TOOLTIP_ID, r as TooltipInfo, t as GlobalTooltip } from "./chunks/Tooltip-WgbiC_nd.js";
|
|
6
|
-
import { a as UncontrolledCollapsiblePanel, c as Dropdown, d as flattenOptions, f as isCategory, i as MaybeCollapsible, l as DropdownCaret, n as SectionHeader, o as MultiSelectDropdown, p as isOption, r as ControlledCollapsiblePanel, s as CustomListbox, t as SwitchToggle, u as filterOption } from "./chunks/SwitchToggle-
|
|
6
|
+
import { a as UncontrolledCollapsiblePanel, c as Dropdown, d as flattenOptions, f as isCategory, i as MaybeCollapsible, l as DropdownCaret, n as SectionHeader, o as MultiSelectDropdown, p as isOption, r as ControlledCollapsiblePanel, s as CustomListbox, t as SwitchToggle, u as filterOption } from "./chunks/SwitchToggle-DiBXEP12.js";
|
|
7
7
|
import { t as Loader } from "./chunks/Loader-BXoXTZGc.js";
|
|
8
8
|
import { n as modalPanelClasses, t as BareModal } from "./chunks/BareModal-DBa84JZO.js";
|
|
9
|
+
import { S as AddMenu, _ as BreadcrumbProvider, a as HeaderAddButton, b as useHideBreadcrumbs, c as PageHeader, i as HeaderActionMenu, n as BreadcrumbsRightAction, o as HeaderEditButton, r as BreadcrumbsTitleAction, s as HeaderRowMenu, t as BreadcrumbsActionButton, v as useBreadcrumb, x as useSetBreadcrumbs, y as useClearBreadcrumbs } from "./chunks/PageHeader-CSo3LVId.js";
|
|
9
10
|
import { t as useCssIsDark } from "./chunks/useCssIsDark-DHr05dG2.js";
|
|
10
11
|
import { t as Indicator } from "./chunks/Indicator-hBSIxOPK.js";
|
|
11
12
|
import { t as SwitchToggleSmall } from "./chunks/SwitchToggleSmall-FcsaYSTs.js";
|
|
@@ -188,7 +189,7 @@ function MethodButton({ icon, label, description, href, className = "", ...props
|
|
|
188
189
|
//#region src/components/Card.tsx
|
|
189
190
|
function Card({ children, className = "", wide, compact, interactive, authShadow }) {
|
|
190
191
|
return /* @__PURE__ */ jsx("div", {
|
|
191
|
-
className: cx("w-full bg-[var(--theme-
|
|
192
|
+
className: cx("w-full bg-[var(--theme-card-bg)] backdrop-blur-xl border border-[var(--theme-border)] rounded-2xl", authShadow ? "shadow-[var(--theme-auth-shadow)]" : "shadow-[var(--theme-shadow)]", wide && "max-w-[560px] p-8", compact && "max-w-[400px] p-6", !wide && !compact && "max-w-[520px] p-10", interactive && "ds-card-interactive cursor-pointer", className),
|
|
192
193
|
children
|
|
193
194
|
});
|
|
194
195
|
}
|
|
@@ -535,4 +536,4 @@ function SettingModeOption({ name, checked, onSelect, label, description, isFirs
|
|
|
535
536
|
});
|
|
536
537
|
}
|
|
537
538
|
//#endregion
|
|
538
|
-
export { AddMenu, BareModal, Button, Callout, Card, CardHeader, CompactTable, ConfirmModal, ControlledCollapsiblePanel, CopyCodeBlock, CopyToClipboard, CreateModal, CreateModalAutocompleteField, CreateModalField, CreateModalSelect, CreateModalSwitch, CreateModalTextarea, CustomListbox, DEFAULT_PRESET, DescriptionList, DescriptionListItem, Dropdown, DropdownCaret, EmptyState, Filter, FilterPill, GlobalTooltip, IconButton, Indicator, Input, LetterBadge, Loader, Markdown, MaybeCollapsible, MethodButton, MultiSelectDropdown, Overview, Pagination, SectionHeader, SettingModeOption, SettingRow, SettingSection, SettingsCard, SettingsGroup, Sort, StatusBadge, StatusDot, SwitchToggle, SwitchToggleSmall, THEME_PRESETS, THEME_TOKENS, TOOLTIP_ID, Table, Textarea, Toggle, TooltipInfo, UIProvider, UncontrolledCollapsiblePanel, applyTheme, contrastRatio, dangerButtonClasses, deriveTheme, filterOption, flattenOptions, formatTooltipContent, ghostButtonClasses, inputClasses, isCategory, isDarkColor, isOption, modalPanelClasses, primaryButtonClasses, useCssIsDark, useNavigation, useNotify, useProvisionCorsRules, useRunFile, useSlots, useStrings, useWorkflowJsonResolver };
|
|
539
|
+
export { AddMenu, BareModal, BreadcrumbProvider, BreadcrumbsActionButton, BreadcrumbsRightAction, BreadcrumbsTitleAction, Button, Callout, Card, CardHeader, CompactTable, ConfirmModal, ControlledCollapsiblePanel, CopyCodeBlock, CopyToClipboard, CreateModal, CreateModalAutocompleteField, CreateModalField, CreateModalSelect, CreateModalSwitch, CreateModalTextarea, CustomListbox, DEFAULT_PRESET, DescriptionList, DescriptionListItem, Dropdown, DropdownCaret, EmptyState, Filter, FilterPill, GlobalTooltip, HeaderActionMenu, HeaderAddButton, HeaderEditButton, HeaderRowMenu, IconButton, Indicator, Input, LetterBadge, Loader, Markdown, MaybeCollapsible, MethodButton, MultiSelectDropdown, Overview, PageHeader, Pagination, SectionHeader, SettingModeOption, SettingRow, SettingSection, SettingsCard, SettingsGroup, Sort, StatusBadge, StatusDot, SwitchToggle, SwitchToggleSmall, THEME_PRESETS, THEME_TOKENS, TOOLTIP_ID, Table, Textarea, Toggle, TooltipInfo, UIProvider, UncontrolledCollapsiblePanel, applyTheme, contrastRatio, dangerButtonClasses, deriveTheme, filterOption, flattenOptions, formatTooltipContent, ghostButtonClasses, inputClasses, isCategory, isDarkColor, isOption, modalPanelClasses, primaryButtonClasses, useBreadcrumb, useClearBreadcrumbs, useCssIsDark, useHideBreadcrumbs, useNavigation, useNotify, useProvisionCorsRules, useRunFile, useSetBreadcrumbs, useSlots, useStrings, useWorkflowJsonResolver };
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export interface ToolbarAction {
|
|
2
|
+
key: string;
|
|
3
|
+
label: string;
|
|
4
|
+
icon: React.ComponentType<{
|
|
5
|
+
className?: string;
|
|
6
|
+
}>;
|
|
7
|
+
iconClassName?: string;
|
|
8
|
+
onClick?: () => void;
|
|
9
|
+
href?: string;
|
|
10
|
+
disabled?: boolean;
|
|
11
|
+
enabledTooltip?: string;
|
|
12
|
+
disabledTooltip?: string;
|
|
13
|
+
hidden?: boolean;
|
|
14
|
+
}
|
|
15
|
+
/** A pre-rendered element (e.g. a button component that owns its modal). */
|
|
16
|
+
interface ToolbarElement {
|
|
17
|
+
key: string;
|
|
18
|
+
element: React.ReactNode;
|
|
19
|
+
hidden?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export type ToolbarItem = ToolbarAction | ToolbarElement;
|
|
22
|
+
export declare function ToolbarButton({ action }: {
|
|
23
|
+
action: ToolbarAction;
|
|
24
|
+
}): import("react").JSX.Element;
|
|
25
|
+
/** Pins a detail-page toolbar just below the sticky breadcrumb strip (top-10 matches the strip's 40px height). */
|
|
26
|
+
export declare const stickyToolbarClasses = "sticky top-10 z-10 bg-(--theme-app-bg)";
|
|
27
|
+
/** Pins a detail-page tabs row under the pinned toolbar (top-22 = 40px strip + 48px toolbar block). */
|
|
28
|
+
export declare const stickyTabsClasses = "sticky top-22 z-10 bg-(--theme-app-bg)";
|
|
29
|
+
/** Pins a detail-page tabs row directly under the breadcrumb strip when the page has no pinned toolbar (top-10 = the strip's height). */
|
|
30
|
+
export declare const stickyTabsUnderHeaderClasses = "sticky top-10 z-10 bg-(--theme-app-bg)";
|
|
31
|
+
/** Action groups left, secondary actions right (collapsing into a `…` menu). */
|
|
32
|
+
export declare function ActionToolbar({ groups, right, sticky, }: {
|
|
33
|
+
groups: ToolbarItem[][];
|
|
34
|
+
right?: ToolbarItem[];
|
|
35
|
+
/** Pin below the breadcrumb strip while the page scrolls. Requires the toolbar's parent to span the page content. */
|
|
36
|
+
sticky?: boolean;
|
|
37
|
+
}): import("react").JSX.Element;
|
|
38
|
+
export {};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { MouseEvent as ReactMouseEvent, ReactNode } from 'react';
|
|
2
|
+
import { type PageHeaderBreadcrumb } from '../components/PageHeader.js';
|
|
3
|
+
import type { ListView, ListViewChrome } from './listView.js';
|
|
4
|
+
import { type OpenMenu, type RowMenuItem } from './RowContextMenu.js';
|
|
5
|
+
/** Negative offsets (admin/org) cancel the shell's pt-4 so rows don't peek through the gap above the pinned header. */
|
|
6
|
+
declare const SECTION_STICKY_TOP: {
|
|
7
|
+
readonly main: 'top-0';
|
|
8
|
+
readonly kubernetes: 'top-0';
|
|
9
|
+
readonly admin: '-top-4';
|
|
10
|
+
readonly org: '-top-4';
|
|
11
|
+
};
|
|
12
|
+
export type ListSection = keyof typeof SECTION_STICKY_TOP;
|
|
13
|
+
export declare function ListRowActionsProvider({ view, children, }: {
|
|
14
|
+
view?: ListViewChrome | undefined;
|
|
15
|
+
children: ReactNode;
|
|
16
|
+
}): import("react").JSX.Element;
|
|
17
|
+
export interface ListPageProps {
|
|
18
|
+
section?: ListSection;
|
|
19
|
+
/** Force edge-to-edge negative margin for a main-shell page nested under a padded route layout. */
|
|
20
|
+
shellPadded?: boolean;
|
|
21
|
+
breadcrumbs?: PageHeaderBreadcrumb[] | undefined;
|
|
22
|
+
title?: ReactNode;
|
|
23
|
+
titleAction?: ReactNode;
|
|
24
|
+
actions?: ReactNode;
|
|
25
|
+
toolbar?: ReactNode;
|
|
26
|
+
/** Omit on pages without a list view — rows show all actions by default. */
|
|
27
|
+
view?: ListViewChrome | undefined;
|
|
28
|
+
children: ReactNode;
|
|
29
|
+
}
|
|
30
|
+
export declare function ListPage({ section, shellPadded, breadcrumbs, title, titleAction, actions, toolbar, view, children, }: ListPageProps): import("react").JSX.Element;
|
|
31
|
+
export interface PinnedRowAction {
|
|
32
|
+
key: string;
|
|
33
|
+
label: string;
|
|
34
|
+
icon: ReactNode;
|
|
35
|
+
onSelect: () => void;
|
|
36
|
+
disabled?: boolean;
|
|
37
|
+
}
|
|
38
|
+
export declare function ListRow({ href, items, goTo, openMenu, pinnedActions, selected, selectionActive, onRowSelect, leading, className, children, }: {
|
|
39
|
+
href: string | null;
|
|
40
|
+
items: RowMenuItem[];
|
|
41
|
+
goTo: (to: string) => void;
|
|
42
|
+
openMenu: OpenMenu;
|
|
43
|
+
pinnedActions?: PinnedRowAction[];
|
|
44
|
+
className?: string;
|
|
45
|
+
/** Tints the whole row to mark it as part of a multi-selection. */
|
|
46
|
+
selected?: boolean;
|
|
47
|
+
/** When multi-selection is active, plain row click toggles selection instead of navigating. */
|
|
48
|
+
selectionActive?: boolean;
|
|
49
|
+
onRowSelect?: (e: ReactMouseEvent) => void;
|
|
50
|
+
/** Non-column cell rendered before the column cells; kept out of `children` so they stay aligned with `columns`. */
|
|
51
|
+
leading?: ReactNode;
|
|
52
|
+
children: ReactNode;
|
|
53
|
+
}): import("react").JSX.Element;
|
|
54
|
+
/** Name column min-width is by role, not position, so a leading checkbox doesn't shift it. */
|
|
55
|
+
export declare function ListColumns<T>({ view }: {
|
|
56
|
+
view: ListView<T>;
|
|
57
|
+
}): import("react").JSX.Element;
|
|
58
|
+
export declare namespace ListColumns {
|
|
59
|
+
var isTableHeader: boolean;
|
|
60
|
+
}
|
|
61
|
+
/** Stable `goTo` for whole-row navigation (`rowNavProps`, `ListRow`). */
|
|
62
|
+
export declare function useListNavigate(): (to: string) => void;
|
|
63
|
+
export {};
|
|
@@ -109,5 +109,5 @@ export declare function copySubmenu({ name, nameLabel, email, username, uid, id,
|
|
|
109
109
|
export declare function MoreButton({ onOpen, active, className, }: {
|
|
110
110
|
onOpen: (x: number, y: number) => void;
|
|
111
111
|
active?: boolean;
|
|
112
|
-
className?: string;
|
|
112
|
+
className?: string | undefined;
|
|
113
113
|
}): import("react").JSX.Element;
|
package/dist/list/index.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
export { ActionToolbar, stickyTabsClasses, stickyTabsUnderHeaderClasses, stickyToolbarClasses, ToolbarButton, type ToolbarAction, type ToolbarItem, } from './ActionToolbar.js';
|
|
2
|
+
export { ListColumns, ListPage, ListRow, ListRowActionsProvider, useListNavigate, type ListPageProps, type ListSection, type PinnedRowAction, } from './ListPage.js';
|
|
1
3
|
export { assembleRowMenu, copySubmenu, MoreButton, rowContextMenuProps, toolbarActionToRowAction, toRowMenuItem, useRowMenu, useRowMenuActive, type OpenMenu, type RowAction, type RowMenuItem, } from './RowContextMenu.js';
|
|
2
4
|
export { actionsColumnWidth, GroupRow, ListActionsHeader, ListError, ListSkeleton, listTableFixedProps, listTableProps, NAME_MIN_WIDTH_PX, NameCell, RowSelectCheckbox, } from './ListTable.js';
|
|
3
5
|
export { DEFAULT_ORDER, FAVORITE_ORDER, useListView, type ActionDef, type ColumnDef, type FilterFacet, type ListView, type ListViewChrome, type ListViewConfig, type OrderByOption, } from './listView.js';
|
package/dist/list/index.js
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { d as copySubmenu, f as rowContextMenuProps, g as useRowMenuActive, h as useRowMenu, l as MoreButton, m as toolbarActionToRowAction, p as toRowMenuItem, u as assembleRowMenu } from "../chunks/PageHeader-CSo3LVId.js";
|
|
2
|
+
import { A as ToolbarButton, C as NAME_MIN_WIDTH_PX, D as listTableFixedProps, E as actionsColumnWidth, M as stickyTabsUnderHeaderClasses, N as stickyToolbarClasses, O as listTableProps, S as ListSkeleton, T as RowSelectCheckbox, _ as ListRowActionsProvider, a as ListSearchControl, b as ListActionsHeader, c as ListFilterMenu, d as DEFAULT_ORDER, f as FAVORITE_ORDER, g as ListRow, h as ListPage, i as ListCount, j as stickyTabsClasses, k as ActionToolbar, l as listControlButtonClasses, m as ListColumns, n as useHoverCard, o as useListSearch, p as useListView, r as ListPager, s as ListDisplayMenu, t as HoverCardSurface, u as isTextEntryContext, v as useListNavigate, w as NameCell, x as ListError, y as GroupRow } from "../chunks/list-CgzqVlao.js";
|
|
3
|
+
export { ActionToolbar, DEFAULT_ORDER, FAVORITE_ORDER, GroupRow, HoverCardSurface, ListActionsHeader, ListColumns, ListCount, ListDisplayMenu, ListError, ListFilterMenu, ListPage, ListPager, ListRow, ListRowActionsProvider, ListSearchControl, ListSkeleton, MoreButton, NAME_MIN_WIDTH_PX, NameCell, RowSelectCheckbox, ToolbarButton, actionsColumnWidth, assembleRowMenu, copySubmenu, isTextEntryContext, listControlButtonClasses, listTableFixedProps, listTableProps, rowContextMenuProps, stickyTabsClasses, stickyTabsUnderHeaderClasses, stickyToolbarClasses, toRowMenuItem, toolbarActionToRowAction, useHoverCard, useListNavigate, useListSearch, useListView, useRowMenu, useRowMenuActive };
|
package/dist/logviewer/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ArrowDownIcon, ArrowUpIcon, CheckIcon, ChevronDownIcon, ChevronRightIcon, CopyIcon, DownloadIcon, ExpandIcon, ShrinkIcon, XIcon } from "../icons.js";
|
|
2
|
-
import { c as useStrings, i as useNotify } from "../chunks/Provider-
|
|
2
|
+
import { c as useStrings, i as useNotify } from "../chunks/Provider-BIL5347a.js";
|
|
3
3
|
import cx from "classnames";
|
|
4
4
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
5
5
|
import { Fragment as Fragment$1, memo, useCallback, useEffect, useMemo, useRef, useState } from "react";
|
package/dist/styles/theme.css
CHANGED
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
--theme-border: #d1d5db;
|
|
20
20
|
--theme-element: #06354f;
|
|
21
21
|
--theme-element-text: #ffffff;
|
|
22
|
+
--theme-element-hover: #053047;
|
|
22
23
|
--theme-hover: #f3f4f6;
|
|
23
24
|
--theme-hover-text: #000000;
|
|
24
25
|
--theme-link: #428bca;
|
|
@@ -46,6 +47,7 @@
|
|
|
46
47
|
--theme-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.04);
|
|
47
48
|
--theme-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.07), 0 2px 4px -2px rgba(0, 0, 0, 0.05);
|
|
48
49
|
--theme-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.08), 0 4px 6px -4px rgba(0, 0, 0, 0.04);
|
|
50
|
+
--theme-auth-shadow: 0 25px 80px -20px rgba(0, 0, 0, 0.2), 0 10px 30px -10px rgba(0, 0, 0, 0.1);
|
|
49
51
|
}
|
|
50
52
|
|
|
51
53
|
@utility theme-element {
|