@parallelworks/ui 0.12.0 → 0.13.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/chunks/{BareModal-DBa84JZO.js → BareModal-BqroLbZ5.js} +1 -0
- package/dist/chunks/{CodePreviewEditor-hwjZof0M.js → CodePreviewEditor-67A_SKgE.js} +1 -1
- package/dist/chunks/{CreateModal-g6c-9-6N.js → CreateModal-k_e1dI8c.js} +31 -10
- package/dist/chunks/{Monaco-DCwRDrPm.js → Monaco-H56KyEdb.js} +22 -12
- package/dist/chunks/{PageHeader-dyoL44ue.js → PageHeader-FhtphHGc.js} +44 -10
- package/dist/chunks/{Provider-CfFV-vc5.js → Provider-CbFVFB7O.js} +8 -2
- package/dist/chunks/RequiredMark-DfLdYbYZ.js +11 -0
- package/dist/chunks/{StatusBadge-P6C2tv7Z.js → StatusBadge-RRUI78iS.js} +4 -4
- package/dist/chunks/{SwitchToggle-DcPCXkqL.js → SwitchToggle-DbW0Q__L.js} +49 -32
- package/dist/chunks/{Table-ByziK93x.js → Table-CutP1bRt.js} +22 -6
- package/dist/chunks/{Tooltip-WgbiC_nd.js → Tooltip-n9w7Tkt1.js} +28 -3
- package/dist/chunks/{editor-BH81U5-C.js → editor-BZ9Buwi4.js} +34 -23
- package/dist/chunks/lib-DyJvmbzj.js +256 -0
- package/dist/chunks/{list-CWVR3dfZ.js → list-3jZW8rmM.js} +33 -13
- package/dist/components/Breadcrumbs.d.ts +9 -0
- package/dist/components/CollapsiblePanel.d.ts +4 -4
- package/dist/components/CreateModal.d.ts +8 -8
- package/dist/components/Dropdown.d.ts +5 -3
- package/dist/components/Input.d.ts +1 -1
- package/dist/components/Listbox.d.ts +7 -4
- package/dist/components/Loader.d.ts +1 -1
- package/dist/components/MultiSelect.d.ts +8 -5
- package/dist/components/PageHeader.d.ts +3 -3
- package/dist/components/Pagination.d.ts +2 -2
- package/dist/components/Provider.d.ts +9 -3
- package/dist/components/RequiredMark.d.ts +1 -0
- package/dist/components/SettingRow.d.ts +1 -1
- package/dist/components/SwitchToggle.d.ts +3 -2
- package/dist/components/Table.d.ts +5 -3
- package/dist/components/Tooltip.d.ts +7 -1
- package/dist/components/dropdownUtils.d.ts +6 -6
- package/dist/editor/FormCodePanel.d.ts +3 -3
- package/dist/editor/Monaco.d.ts +2 -2
- package/dist/editor/index.js +1 -1
- package/dist/file-explorer/FileExplorer.d.ts +2 -2
- package/dist/file-explorer/helpers.d.ts +2 -2
- package/dist/file-explorer/index.d.ts +1 -1
- package/dist/file-explorer/index.js +54 -23
- package/dist/file-explorer/lib/fileExplorer.d.ts +4 -2
- package/dist/file-explorer/lib/types.d.ts +21 -21
- package/dist/file-explorer/lib/utils.d.ts +1 -0
- package/dist/form/FieldWrapper.d.ts +6 -1
- package/dist/form/Fields/ResourceOptionIcon.d.ts +1 -1
- package/dist/form/Fields/StepField.d.ts +1 -1
- package/dist/form/Form.d.ts +28 -27
- package/dist/form/SpecialTypes/DropdownWrapper.d.ts +16 -3
- package/dist/form/SpecialTypes/FormikCustomDropdown.d.ts +11 -11
- package/dist/form/SpecialTypes/FormikCustomInput.d.ts +12 -10
- package/dist/form/SpecialTypes/FormikMultiSelectDropdown.d.ts +1 -1
- package/dist/form/SpecialTypes/FormikNumericInput.d.ts +2 -2
- package/dist/form/Wizard/WizardContainer.d.ts +1 -1
- package/dist/form/Wizard/WizardStepContent.d.ts +2 -2
- package/dist/form/Wizard/types.d.ts +21 -14
- package/dist/form/Wizard/utils.d.ts +1 -1
- package/dist/form/fieldContext.d.ts +19 -0
- package/dist/form/index.d.ts +2 -1
- package/dist/form/index.js +191 -106
- package/dist/form/lib.d.ts +3 -3
- package/dist/form/types/fieldComponentTypes.d.ts +2 -2
- package/dist/form/useParsedOpts.d.ts +1 -1
- package/dist/form/utils/getParentValue.d.ts +3 -1
- package/dist/form/utils/getValueUsingPath.d.ts +1 -1
- package/dist/form/utils/pwResolver.d.ts +4 -4
- package/dist/icons.d.ts +5 -5
- package/dist/index.d.ts +3 -2
- package/dist/index.js +51 -21
- package/dist/list/ActionToolbar.d.ts +4 -4
- package/dist/list/ListPage.d.ts +3 -3
- package/dist/list/ListTable.d.ts +1 -1
- package/dist/list/RowContextMenu.d.ts +20 -20
- package/dist/list/index.js +2 -2
- package/dist/logviewer/index.js +24 -7
- package/dist/styles/theme.css +6 -6
- package/dist/styles.css +1 -1
- package/dist/theme/index.js +4 -3
- package/dist/workflow/AnnotationBanner.d.ts +2 -1
- package/dist/workflow/DependencyGraph.d.ts +15 -3
- package/dist/workflow/JobSummary.d.ts +2 -25
- package/dist/workflow/MatrixGroup.d.ts +3 -2
- package/dist/workflow/TreeView.d.ts +1 -32
- package/dist/workflow/index.js +235 -138
- package/dist/workflow/types.d.ts +48 -0
- package/package.json +2 -6
- package/dist/chunks/lib-DTgL8klR.js +0 -191
package/dist/form/lib.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ import type { DynamicFormSchema } from './types/fieldTypes.js';
|
|
|
9
9
|
*/
|
|
10
10
|
export declare function resolvedFlag<T>(value: T): T | undefined;
|
|
11
11
|
export declare function enforceOneMustBeTrue(items: Array<Record<string, unknown>>, options: DynamicFormSchema, promoteIndex: number): Array<Record<string, unknown>>;
|
|
12
|
-
export declare function flattenGroups(schema:
|
|
12
|
+
export declare function flattenGroups(schema: unknown): Record<string, unknown>;
|
|
13
13
|
/**Not a pure function. Edits 'obj' passed into function */
|
|
14
|
-
export declare function impureSetValueFromPath(obj: Record<string,
|
|
15
|
-
export declare function initializeValues(options:
|
|
14
|
+
export declare function impureSetValueFromPath(obj: Record<string, unknown>, path: string, value: unknown): void;
|
|
15
|
+
export declare function initializeValues(options: unknown, srcData?: object, ignoreDefaultStrings?: boolean): Record<string, unknown> | undefined;
|
|
@@ -18,9 +18,9 @@ export interface FieldComponentProps<TField extends FieldBase = FieldBase, TValu
|
|
|
18
18
|
missingFields: string[];
|
|
19
19
|
values: Record<string, unknown>;
|
|
20
20
|
setFormDirty: TSetFormDirty;
|
|
21
|
-
onChange?: (val: unknown) => void;
|
|
21
|
+
onChange?: ((val: unknown) => void) | undefined;
|
|
22
22
|
disabled: boolean;
|
|
23
|
-
computeOn?: boolean;
|
|
23
|
+
computeOn?: boolean | undefined;
|
|
24
24
|
spaceCompact?: boolean;
|
|
25
25
|
tooltipComponent?: React.ReactNode;
|
|
26
26
|
workflowForm?: boolean;
|
|
@@ -2,4 +2,4 @@ import { type WorkflowVariables } from '@parallelworks/workflow-parser';
|
|
|
2
2
|
/**
|
|
3
3
|
* useMemo won't work here — Formik values changes on every keystroke, so this hook extracts which inputs.* keys the schema references and re-parses only when those change. Defaults `userVars`/`secretKeys` to empty — callers in React scope should pass them from `useUserVars()` so the parser leaves `${{ var.SECRET }}` literal during template eval (otherwise the recursive substitution turns `"https://${{ var.PAT }}@host/"` into `"https://@host/"`).
|
|
4
4
|
*/
|
|
5
|
-
export declare function useParsedOpts
|
|
5
|
+
export declare function useParsedOpts<T extends object = Record<string, unknown>>(rawOptions: T, values: Record<string, unknown>, organizationVariables: WorkflowVariables | undefined, userVars?: Record<string, string>, secretKeys?: string[]): T;
|
|
@@ -1 +1,3 @@
|
|
|
1
|
-
export declare function getParentValue(index: number | undefined, targetField:
|
|
1
|
+
export declare function getParentValue(index: number | undefined, targetField: unknown, values: object, dependentPath: string, field: {
|
|
2
|
+
depends_on?: string | undefined;
|
|
3
|
+
}): unknown;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function getValueUsingPath(obj:
|
|
1
|
+
export declare function getValueUsingPath(obj: unknown, path: string): unknown;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
interface OptionWithValue {
|
|
2
2
|
value: {
|
|
3
|
-
name?: string;
|
|
4
|
-
user?: string;
|
|
5
|
-
namespace?: string;
|
|
6
|
-
type?: string;
|
|
3
|
+
name?: string | undefined;
|
|
4
|
+
user?: string | undefined;
|
|
5
|
+
namespace?: string | undefined;
|
|
6
|
+
type?: string | null | undefined;
|
|
7
7
|
} | undefined;
|
|
8
8
|
}
|
|
9
9
|
interface OptionCategory {
|
package/dist/icons.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import type { IconBaseProps } from 'react-icons';
|
|
2
2
|
import { BiError as ErrorIcon } from 'react-icons/bi';
|
|
3
3
|
import { BsZoomIn as ChartZoomIcon, BsLayers as InfrastructureLayersIcon, BsCurrencyDollar as MoneyIcon } from 'react-icons/bs';
|
|
4
4
|
import { FaInfoCircle as InfoIcon } from 'react-icons/fa';
|
|
@@ -32,8 +32,8 @@ interface IBaseCheckmarkProps {
|
|
|
32
32
|
className?: string;
|
|
33
33
|
colored?: boolean;
|
|
34
34
|
}
|
|
35
|
-
export declare function SuccessCheckmark({ className, colored, }: IBaseCheckmarkProps):
|
|
36
|
-
export declare function ErrorCheckmark({ className, colored, }: IBaseCheckmarkProps):
|
|
37
|
-
export declare function LoaderIcon({ className, ...props }:
|
|
35
|
+
export declare function SuccessCheckmark({ className, colored, }: IBaseCheckmarkProps): import("react").JSX.Element;
|
|
36
|
+
export declare function ErrorCheckmark({ className, colored, }: IBaseCheckmarkProps): import("react").JSX.Element;
|
|
37
|
+
export declare function LoaderIcon({ className, ...props }: IconBaseProps & {
|
|
38
38
|
className?: string;
|
|
39
|
-
}):
|
|
39
|
+
}): import("react").JSX.Element;
|
package/dist/index.d.ts
CHANGED
|
@@ -29,10 +29,11 @@ export { default as SwitchToggleSmall } from './components/SwitchToggleSmall.js'
|
|
|
29
29
|
export { StatusBadge, StatusDot } from './components/StatusBadge.js';
|
|
30
30
|
export { default as SwitchToggle } from './components/SwitchToggle.js';
|
|
31
31
|
export { CompactTable, Table } from './components/Table.js';
|
|
32
|
-
export { formatTooltipContent, GlobalTooltip, TOOLTIP_ID, TooltipInfo, } from './components/Tooltip.js';
|
|
32
|
+
export { formatTooltipContent, GlobalTooltip, TOOLTIP_ID, TooltipInfo, truncationTooltipProps, } from './components/Tooltip.js';
|
|
33
33
|
export { Button, MethodButton } from './components/Button.js';
|
|
34
34
|
export { Card, CardHeader } from './components/Card.js';
|
|
35
35
|
export { Input, Textarea } from './components/Input.js';
|
|
36
|
+
export { RequiredMark } from './components/RequiredMark.js';
|
|
36
37
|
export { inputClasses } from './components/inputClasses.js';
|
|
37
38
|
export { IconButton } from './components/IconButton.js';
|
|
38
39
|
export { Toggle } from './components/Toggle.js';
|
|
@@ -45,5 +46,5 @@ export { default as SettingsCard } from './components/SettingsCard.js';
|
|
|
45
46
|
export { default as SettingsGroup } from './components/SettingsGroup.js';
|
|
46
47
|
export { SettingRow, SettingSection } from './components/SettingRow.js';
|
|
47
48
|
export { SettingModeOption } from './components/SettingModeOption.js';
|
|
48
|
-
export { BreadcrumbProvider, useBreadcrumb, useClearBreadcrumbs, useHideBreadcrumbs, useSetBreadcrumbs, type IBreadcrumbItem, } from './components/Breadcrumbs.js';
|
|
49
|
+
export { BreadcrumbProvider, useBreadcrumb, useClearBreadcrumbs, useHideBreadcrumbs, useSetBreadcrumbs, useSetDefaultBreadcrumbs, type IBreadcrumbItem, } from './components/Breadcrumbs.js';
|
|
49
50
|
export { BreadcrumbsActionButton, BreadcrumbsRightAction, BreadcrumbsTitleAction, HeaderActionMenu, HeaderAddButton, HeaderEditButton, HeaderRowMenu, PageHeader, type PageHeaderBreadcrumb, type PageHeaderCrumb, } from './components/PageHeader.js';
|
package/dist/index.js
CHANGED
|
@@ -1,20 +1,21 @@
|
|
|
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 CreateModalSelect, c as ConfirmModal, d as primaryButtonClasses, f as Markdown, h as Callout, i as CreateModalField, l as dangerButtonClasses, m as CopyToClipboard, n as CreateModal, o as CreateModalSwitch, p as CopyCodeBlock, r as CreateModalAutocompleteField, s as CreateModalTextarea, t as CREATE_MODAL_SELECT_FILTER_THRESHOLD, u as ghostButtonClasses } from "./chunks/CreateModal-
|
|
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-
|
|
5
|
-
import { i as formatTooltipContent, n as TOOLTIP_ID, r as TooltipInfo, t as GlobalTooltip } from "./chunks/Tooltip-
|
|
6
|
-
import { c as isOption, i as filterOption, l as toggleSetMember, n as StatusDot, o as flattenOptions, r as DropdownCaret, s as isCategory, t as StatusBadge } from "./chunks/StatusBadge-
|
|
7
|
-
import { a as UncontrolledCollapsiblePanel, c as Dropdown, i as MaybeCollapsible, n as SectionHeader, o as MultiSelectDropdown, r as ControlledCollapsiblePanel, s as CustomListbox, t as SwitchToggle } from "./chunks/SwitchToggle-
|
|
3
|
+
import { a as CreateModalSelect, c as ConfirmModal, d as primaryButtonClasses, f as Markdown, h as Callout, i as CreateModalField, l as dangerButtonClasses, m as CopyToClipboard, n as CreateModal, o as CreateModalSwitch, p as CopyCodeBlock, r as CreateModalAutocompleteField, s as CreateModalTextarea, t as CREATE_MODAL_SELECT_FILTER_THRESHOLD, u as ghostButtonClasses } from "./chunks/CreateModal-k_e1dI8c.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-CbFVFB7O.js";
|
|
5
|
+
import { a as truncationTooltipProps, i as formatTooltipContent, n as TOOLTIP_ID, r as TooltipInfo, t as GlobalTooltip } from "./chunks/Tooltip-n9w7Tkt1.js";
|
|
6
|
+
import { c as isOption, i as filterOption, l as toggleSetMember, n as StatusDot, o as flattenOptions, r as DropdownCaret, s as isCategory, t as StatusBadge } from "./chunks/StatusBadge-RRUI78iS.js";
|
|
7
|
+
import { a as UncontrolledCollapsiblePanel, c as Dropdown, i as MaybeCollapsible, n as SectionHeader, o as MultiSelectDropdown, r as ControlledCollapsiblePanel, s as CustomListbox, t as SwitchToggle } from "./chunks/SwitchToggle-DbW0Q__L.js";
|
|
8
8
|
import { t as Loader } from "./chunks/Loader-BXoXTZGc.js";
|
|
9
|
-
import { n as modalPanelClasses, t as BareModal } from "./chunks/BareModal-
|
|
10
|
-
import {
|
|
9
|
+
import { n as modalPanelClasses, t as BareModal } from "./chunks/BareModal-BqroLbZ5.js";
|
|
10
|
+
import { C as AddMenu, S as useSetDefaultBreadcrumbs, _ 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-FhtphHGc.js";
|
|
11
11
|
import { t as useCssIsDark } from "./chunks/useCssIsDark-DHr05dG2.js";
|
|
12
12
|
import { t as Indicator } from "./chunks/Indicator-hBSIxOPK.js";
|
|
13
13
|
import { t as SwitchToggleSmall } from "./chunks/SwitchToggleSmall-FcsaYSTs.js";
|
|
14
|
-
import { n as Table, t as CompactTable } from "./chunks/Table-
|
|
14
|
+
import { n as Table, t as CompactTable } from "./chunks/Table-CutP1bRt.js";
|
|
15
|
+
import { t as RequiredMark } from "./chunks/RequiredMark-DfLdYbYZ.js";
|
|
15
16
|
import cx from "classnames";
|
|
16
17
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
17
|
-
import React, { forwardRef, useState } from "react";
|
|
18
|
+
import React, { forwardRef, useId, useState } from "react";
|
|
18
19
|
import Skeleton from "react-loading-skeleton";
|
|
19
20
|
//#region src/components/DescriptionList.tsx
|
|
20
21
|
function DescriptionListItem({ label, children, tooltip, className, ...props }) {
|
|
@@ -130,6 +131,7 @@ var Button = forwardRef(({ children, variant = "primary", size = "default", load
|
|
|
130
131
|
const widthClass = fullWidth ? "w-full" : "w-auto";
|
|
131
132
|
return /* @__PURE__ */ jsx("button", {
|
|
132
133
|
ref,
|
|
134
|
+
type: "button",
|
|
133
135
|
disabled: disabled || loading,
|
|
134
136
|
className: cx(baseClasses, variantClasses[variant], sizeClasses[size], widthClass, className),
|
|
135
137
|
...props,
|
|
@@ -180,6 +182,7 @@ function MethodButton({ icon, label, description, href, className = "", ...props
|
|
|
180
182
|
});
|
|
181
183
|
}
|
|
182
184
|
return /* @__PURE__ */ jsx("button", {
|
|
185
|
+
type: "button",
|
|
183
186
|
className: cx("group", baseClasses, className),
|
|
184
187
|
...props,
|
|
185
188
|
children: content
|
|
@@ -215,18 +218,22 @@ function CardHeader({ badge, title, description, className = "", align = "center
|
|
|
215
218
|
}
|
|
216
219
|
//#endregion
|
|
217
220
|
//#region src/components/Input.tsx
|
|
218
|
-
var Input = forwardRef(({ label, error, className = "", mono, type, ...props }, ref) => {
|
|
221
|
+
var Input = forwardRef(({ label, error, className = "", mono, type, required, ...props }, ref) => {
|
|
219
222
|
const [showPassword, setShowPassword] = useState(false);
|
|
220
223
|
const isPassword = type === "password";
|
|
221
224
|
const inputType = isPassword && showPassword ? "text" : type;
|
|
225
|
+
const generatedId = useId();
|
|
226
|
+
const id = props.id ?? generatedId;
|
|
227
|
+
const errorId = `${id}-error`;
|
|
228
|
+
const describedBy = [props["aria-describedby"], error ? errorId : void 0].filter(Boolean).join(" ") || void 0;
|
|
222
229
|
const inputClasses = cx("w-full py-3 px-4 bg-[var(--theme-muted-panel-bg)] border border-[var(--theme-border)] rounded-lg text-[var(--theme-app)] text-sm transition-all duration-200 box-border", "focus:outline-none focus:border-[var(--theme-element)] focus:shadow-[0_0_0_3px_color-mix(in_srgb,var(--theme-element)_25%,transparent)]", "placeholder:text-[var(--theme-muted-text-color)]", "disabled:bg-[var(--theme-muted-panel-bg)] disabled:text-[var(--theme-muted-text-color)] disabled:cursor-not-allowed disabled:opacity-70", mono && "font-mono text-[0.8125rem]", error && "border-[#ef4444]", isPassword && "pr-11", className);
|
|
223
230
|
return /* @__PURE__ */ jsxs("div", {
|
|
224
231
|
className: "flex flex-col gap-1.5",
|
|
225
232
|
children: [
|
|
226
|
-
label && /* @__PURE__ */
|
|
233
|
+
label && /* @__PURE__ */ jsxs("label", {
|
|
227
234
|
className: "text-[0.8125rem] font-medium text-[var(--theme-app)]",
|
|
228
|
-
htmlFor:
|
|
229
|
-
children: label
|
|
235
|
+
htmlFor: id,
|
|
236
|
+
children: [label, required && /* @__PURE__ */ jsx(RequiredMark, {})]
|
|
230
237
|
}),
|
|
231
238
|
/* @__PURE__ */ jsxs("div", {
|
|
232
239
|
className: isPassword ? "relative w-full" : "",
|
|
@@ -234,7 +241,11 @@ var Input = forwardRef(({ label, error, className = "", mono, type, ...props },
|
|
|
234
241
|
ref,
|
|
235
242
|
type: inputType,
|
|
236
243
|
className: inputClasses,
|
|
237
|
-
...props
|
|
244
|
+
...props,
|
|
245
|
+
id,
|
|
246
|
+
required,
|
|
247
|
+
"aria-invalid": error ? true : props["aria-invalid"],
|
|
248
|
+
"aria-describedby": describedBy
|
|
238
249
|
}), isPassword && /* @__PURE__ */ jsx("button", {
|
|
239
250
|
type: "button",
|
|
240
251
|
className: "absolute right-3 top-1/2 -translate-y-1/2 bg-transparent border-none text-[var(--theme-muted-text-color)] cursor-pointer p-1 transition-colors duration-200 flex items-center justify-center hover:text-[var(--theme-app)]",
|
|
@@ -245,6 +256,8 @@ var Input = forwardRef(({ label, error, className = "", mono, type, ...props },
|
|
|
245
256
|
})]
|
|
246
257
|
}),
|
|
247
258
|
error && /* @__PURE__ */ jsxs("span", {
|
|
259
|
+
id: errorId,
|
|
260
|
+
role: "alert",
|
|
248
261
|
className: "text-[0.8125rem] text-[#ef4444] flex items-center gap-1.5",
|
|
249
262
|
children: [/* @__PURE__ */ jsx(AlertIcon, { className: "w-4 h-4" }), error]
|
|
250
263
|
})
|
|
@@ -252,22 +265,32 @@ var Input = forwardRef(({ label, error, className = "", mono, type, ...props },
|
|
|
252
265
|
});
|
|
253
266
|
});
|
|
254
267
|
Input.displayName = "Input";
|
|
255
|
-
var Textarea = forwardRef(({ label, error, className = "", mono, ...props }, ref) => {
|
|
268
|
+
var Textarea = forwardRef(({ label, error, className = "", mono, required, ...props }, ref) => {
|
|
269
|
+
const generatedId = useId();
|
|
270
|
+
const id = props.id ?? generatedId;
|
|
271
|
+
const errorId = `${id}-error`;
|
|
272
|
+
const describedBy = [props["aria-describedby"], error ? errorId : void 0].filter(Boolean).join(" ") || void 0;
|
|
256
273
|
const textareaClasses = cx("w-full py-3 px-4 bg-[var(--theme-muted-panel-bg)] border border-[var(--theme-border)] rounded-lg text-[var(--theme-app)] text-sm transition-all duration-200 box-border min-h-[140px] resize-y", "focus:outline-none focus:border-[var(--theme-element)] focus:shadow-[0_0_0_3px_color-mix(in_srgb,var(--theme-element)_25%,transparent)]", "placeholder:text-[var(--theme-muted-text-color)]", mono && "font-mono text-[0.8125rem]", error && "border-[#ef4444]", className);
|
|
257
274
|
return /* @__PURE__ */ jsxs("div", {
|
|
258
275
|
className: "flex flex-col gap-1.5",
|
|
259
276
|
children: [
|
|
260
|
-
label && /* @__PURE__ */
|
|
277
|
+
label && /* @__PURE__ */ jsxs("label", {
|
|
261
278
|
className: "text-[0.8125rem] font-medium text-[var(--theme-app)]",
|
|
262
|
-
htmlFor:
|
|
263
|
-
children: label
|
|
279
|
+
htmlFor: id,
|
|
280
|
+
children: [label, required && /* @__PURE__ */ jsx(RequiredMark, {})]
|
|
264
281
|
}),
|
|
265
282
|
/* @__PURE__ */ jsx("textarea", {
|
|
266
283
|
ref,
|
|
267
284
|
className: textareaClasses,
|
|
268
|
-
...props
|
|
285
|
+
...props,
|
|
286
|
+
id,
|
|
287
|
+
required,
|
|
288
|
+
"aria-invalid": error ? true : props["aria-invalid"],
|
|
289
|
+
"aria-describedby": describedBy
|
|
269
290
|
}),
|
|
270
291
|
error && /* @__PURE__ */ jsxs("span", {
|
|
292
|
+
id: errorId,
|
|
293
|
+
role: "alert",
|
|
271
294
|
className: "text-[0.8125rem] text-[#ef4444] flex items-center gap-1.5",
|
|
272
295
|
children: [/* @__PURE__ */ jsx(AlertIcon, { className: "w-4 h-4" }), error]
|
|
273
296
|
})
|
|
@@ -297,7 +320,7 @@ var IconButton = forwardRef(({ icon, label, variant = "default", size = "md", ac
|
|
|
297
320
|
type: "button",
|
|
298
321
|
"aria-label": label,
|
|
299
322
|
disabled,
|
|
300
|
-
"data-tooltip-id":
|
|
323
|
+
...showTooltip ? { "data-tooltip-id": TOOLTIP_ID } : {},
|
|
301
324
|
"data-tooltip-content": label,
|
|
302
325
|
"data-tooltip-delay-show": 300,
|
|
303
326
|
"data-tooltip-class-name": "!bg-[var(--theme-app)] !text-[var(--theme-app-bg)] !text-xs !py-1 !px-2 !rounded-md",
|
|
@@ -311,6 +334,7 @@ IconButton.displayName = "IconButton";
|
|
|
311
334
|
//#region src/components/Toggle.tsx
|
|
312
335
|
function Toggle({ checked, onChange, disabled, label }) {
|
|
313
336
|
return /* @__PURE__ */ jsxs("label", {
|
|
337
|
+
role: "none",
|
|
314
338
|
onClick: (e) => e.stopPropagation(),
|
|
315
339
|
className: cx("relative inline-flex items-center", disabled ? "cursor-not-allowed opacity-60" : "cursor-pointer"),
|
|
316
340
|
children: [/* @__PURE__ */ jsx("input", {
|
|
@@ -382,6 +406,7 @@ var SortIcon = ({ currentlySorted, currentDirection, name }) => {
|
|
|
382
406
|
return null;
|
|
383
407
|
};
|
|
384
408
|
function Sort({ currentlySorted, name, setCurrentDirection, setCurrentlySorted, currentDirection }) {
|
|
409
|
+
const t = useStrings().common;
|
|
385
410
|
const sort = (sorted, direction) => {
|
|
386
411
|
if (sorted === name) {
|
|
387
412
|
if (direction === "ascending") setCurrentDirection("descending");
|
|
@@ -397,6 +422,8 @@ function Sort({ currentlySorted, name, setCurrentDirection, setCurrentlySorted,
|
|
|
397
422
|
return /* @__PURE__ */ jsx("div", {
|
|
398
423
|
className: "inline",
|
|
399
424
|
children: /* @__PURE__ */ jsx("button", {
|
|
425
|
+
type: "button",
|
|
426
|
+
"aria-label": t.sort,
|
|
400
427
|
onClick: () => sort(currentlySorted, currentDirection),
|
|
401
428
|
children: /* @__PURE__ */ jsx(SortIcon, {
|
|
402
429
|
currentDirection,
|
|
@@ -422,11 +449,13 @@ function Pagination({ endingNumber, endingTime, nextCallback, prevCallback, roun
|
|
|
422
449
|
}), /* @__PURE__ */ jsxs("div", {
|
|
423
450
|
className: "flex flex-1 justify-between sm:justify-end gap-x-2",
|
|
424
451
|
children: [/* @__PURE__ */ jsx("button", {
|
|
452
|
+
type: "button",
|
|
425
453
|
disabled: prevDisabled,
|
|
426
454
|
onClick: prevCallback,
|
|
427
455
|
className: cx("link text-sm", prevDisabled && "disabled"),
|
|
428
456
|
children: t.paginationPrevious
|
|
429
457
|
}), /* @__PURE__ */ jsx("button", {
|
|
458
|
+
type: "button",
|
|
430
459
|
disabled: nextDisabled,
|
|
431
460
|
onClick: nextCallback,
|
|
432
461
|
className: cx("link text-sm", nextDisabled && "disabled"),
|
|
@@ -481,6 +510,7 @@ function SettingsGroup({ title, children, className }) {
|
|
|
481
510
|
//#region src/components/SettingRow.tsx
|
|
482
511
|
function SettingRow({ label, htmlFor, helpText, children, isFirst, fill, onClick }) {
|
|
483
512
|
return /* @__PURE__ */ jsxs("div", {
|
|
513
|
+
role: "none",
|
|
484
514
|
onClick,
|
|
485
515
|
className: cx("px-5 py-5 grid grid-cols-1 gap-x-8 gap-y-2", fill ? "md:grid-cols-[200px_1fr]" : "md:grid-cols-[1fr_auto]", !isFirst && "border-t theme-border", onClick && "cursor-pointer select-none hover:theme-hover transition-colors"),
|
|
486
516
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
@@ -536,4 +566,4 @@ function SettingModeOption({ name, checked, onSelect, label, description, isFirs
|
|
|
536
566
|
});
|
|
537
567
|
}
|
|
538
568
|
//#endregion
|
|
539
|
-
export { AddMenu, BareModal, BreadcrumbProvider, BreadcrumbsActionButton, BreadcrumbsRightAction, BreadcrumbsTitleAction, Button, CREATE_MODAL_SELECT_FILTER_THRESHOLD, 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, toggleSetMember, useBreadcrumb, useClearBreadcrumbs, useCssIsDark, useHideBreadcrumbs, useNavigation, useNotify, useProvisionCorsRules, useRunFile, useSetBreadcrumbs, useSlots, useStrings, useWorkflowJsonResolver };
|
|
569
|
+
export { AddMenu, BareModal, BreadcrumbProvider, BreadcrumbsActionButton, BreadcrumbsRightAction, BreadcrumbsTitleAction, Button, CREATE_MODAL_SELECT_FILTER_THRESHOLD, 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, RequiredMark, 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, toggleSetMember, truncationTooltipProps, useBreadcrumb, useClearBreadcrumbs, useCssIsDark, useHideBreadcrumbs, useNavigation, useNotify, useProvisionCorsRules, useRunFile, useSetBreadcrumbs, useSetDefaultBreadcrumbs, useSlots, useStrings, useWorkflowJsonResolver };
|
|
@@ -5,11 +5,11 @@ export interface ToolbarAction {
|
|
|
5
5
|
className?: string;
|
|
6
6
|
}>;
|
|
7
7
|
iconClassName?: string;
|
|
8
|
-
onClick?: () => void;
|
|
9
|
-
href?: string;
|
|
10
|
-
disabled?: boolean;
|
|
8
|
+
onClick?: (() => void) | undefined;
|
|
9
|
+
href?: string | undefined;
|
|
10
|
+
disabled?: boolean | undefined;
|
|
11
11
|
enabledTooltip?: string;
|
|
12
|
-
disabledTooltip?: string;
|
|
12
|
+
disabledTooltip?: string | undefined;
|
|
13
13
|
hidden?: boolean;
|
|
14
14
|
}
|
|
15
15
|
/** A pre-rendered element (e.g. a button component that owns its modal). */
|
package/dist/list/ListPage.d.ts
CHANGED
|
@@ -37,20 +37,20 @@ export interface PinnedRowAction {
|
|
|
37
37
|
label: string;
|
|
38
38
|
icon: ReactNode;
|
|
39
39
|
onSelect: () => void;
|
|
40
|
-
disabled?: boolean;
|
|
40
|
+
disabled?: boolean | undefined;
|
|
41
41
|
}
|
|
42
42
|
export declare function ListRow({ href, items, goTo, openMenu, pinnedActions, selected, selectionActive, onRowSelect, leading, className, children, }: {
|
|
43
43
|
href: string | null;
|
|
44
44
|
items: RowMenuItem[];
|
|
45
45
|
goTo: (to: string) => void;
|
|
46
46
|
openMenu: OpenMenu;
|
|
47
|
-
pinnedActions?: PinnedRowAction[];
|
|
47
|
+
pinnedActions?: PinnedRowAction[] | undefined;
|
|
48
48
|
className?: string;
|
|
49
49
|
/** Tints the whole row to mark it as part of a multi-selection. */
|
|
50
50
|
selected?: boolean;
|
|
51
51
|
/** When multi-selection is active, plain row click toggles selection instead of navigating. */
|
|
52
52
|
selectionActive?: boolean;
|
|
53
|
-
onRowSelect?: (e: ReactMouseEvent) => void;
|
|
53
|
+
onRowSelect?: ((e: ReactMouseEvent) => void) | undefined;
|
|
54
54
|
/** Non-column cell rendered before the column cells; kept out of `children` so they stay aligned with `columns`. */
|
|
55
55
|
leading?: ReactNode;
|
|
56
56
|
children: ReactNode;
|
package/dist/list/ListTable.d.ts
CHANGED
|
@@ -21,7 +21,7 @@ export declare const listTableFixedProps: {
|
|
|
21
21
|
export declare function NameCell({ icon, name, subtitle, href, }: {
|
|
22
22
|
icon: ReactNode;
|
|
23
23
|
name: string;
|
|
24
|
-
subtitle?: string;
|
|
24
|
+
subtitle?: string | undefined;
|
|
25
25
|
href: string | null;
|
|
26
26
|
}): import("react").JSX.Element;
|
|
27
27
|
export declare function GroupRow({ label, count, colSpan, }: {
|
|
@@ -4,14 +4,14 @@ export type RowMenuItem = {
|
|
|
4
4
|
label: string;
|
|
5
5
|
to: string;
|
|
6
6
|
icon?: ReactNode;
|
|
7
|
-
destructive?: boolean;
|
|
7
|
+
destructive?: boolean | undefined;
|
|
8
8
|
} | {
|
|
9
9
|
kind: 'action';
|
|
10
10
|
label: string;
|
|
11
|
-
onSelect?: () => void;
|
|
11
|
+
onSelect?: (() => void) | undefined;
|
|
12
12
|
icon?: ReactNode;
|
|
13
|
-
destructive?: boolean;
|
|
14
|
-
disabled?: boolean;
|
|
13
|
+
destructive?: boolean | undefined;
|
|
14
|
+
disabled?: boolean | undefined;
|
|
15
15
|
/** Trailing checkmark, e.g. the active option in a radio-style submenu. */
|
|
16
16
|
selected?: boolean;
|
|
17
17
|
/** Declarative clipboard copy: the menu performs it and notifies, so
|
|
@@ -35,10 +35,10 @@ export interface RowAction {
|
|
|
35
35
|
key: string;
|
|
36
36
|
label: string;
|
|
37
37
|
icon: ReactNode;
|
|
38
|
-
onSelect?: () => void;
|
|
39
|
-
to?: string;
|
|
40
|
-
disabled?: boolean;
|
|
41
|
-
destructive?: boolean;
|
|
38
|
+
onSelect?: (() => void) | undefined;
|
|
39
|
+
to?: string | undefined;
|
|
40
|
+
disabled?: boolean | undefined;
|
|
41
|
+
destructive?: boolean | undefined;
|
|
42
42
|
}
|
|
43
43
|
/** Converts a single row action to a menu item: a `to` makes it a link, otherwise an action. */
|
|
44
44
|
export declare function toRowMenuItem(action: RowAction): RowMenuItem;
|
|
@@ -51,9 +51,9 @@ export declare function toolbarActionToRowAction(action: {
|
|
|
51
51
|
icon: ComponentType<{
|
|
52
52
|
className?: string;
|
|
53
53
|
}>;
|
|
54
|
-
onClick?: () => void;
|
|
55
|
-
href?: string;
|
|
56
|
-
disabled?: boolean;
|
|
54
|
+
onClick?: (() => void) | undefined;
|
|
55
|
+
href?: string | undefined;
|
|
56
|
+
disabled?: boolean | undefined;
|
|
57
57
|
}): RowAction;
|
|
58
58
|
/** Assembles a row's context menu in the shared order: leading link(s) → middle
|
|
59
59
|
* actions → extra items → Copy submenu → trailing (destructive) actions last. */
|
|
@@ -71,7 +71,7 @@ export declare function assembleRowMenu({ lead, actions, exclude, order, trailin
|
|
|
71
71
|
/** Items inserted after the middle actions and before Copy, e.g. a marketplace link. */
|
|
72
72
|
extra?: RowMenuItem[];
|
|
73
73
|
/** The Copy submenu from `copySubmenu(...)`. */
|
|
74
|
-
copy?: RowMenuItem;
|
|
74
|
+
copy?: RowMenuItem | undefined;
|
|
75
75
|
}): RowMenuItem[];
|
|
76
76
|
export declare function useRowMenu(zClassName?: string): {
|
|
77
77
|
openMenu: OpenMenu;
|
|
@@ -90,19 +90,19 @@ export declare function rowContextMenuProps(openMenu: OpenMenu, items: RowMenuIt
|
|
|
90
90
|
* host translator for the field labels (falls back to the provider defaults'
|
|
91
91
|
* English). */
|
|
92
92
|
export declare function copySubmenu({ name, nameLabel, email, username, uid, id, url, extra, t, }: {
|
|
93
|
-
name?: string | null;
|
|
93
|
+
name?: string | null | undefined;
|
|
94
94
|
/** Overrides the "name" label (raw, pre-translated) for entities whose primary field isn't a name, e.g. "domain". */
|
|
95
95
|
nameLabel?: string;
|
|
96
|
-
email?: string | null;
|
|
97
|
-
username?: string | null;
|
|
98
|
-
uid?: string | number | null;
|
|
99
|
-
id?: string | null;
|
|
100
|
-
url?: string | null;
|
|
96
|
+
email?: string | null | undefined;
|
|
97
|
+
username?: string | null | undefined;
|
|
98
|
+
uid?: string | number | null | undefined;
|
|
99
|
+
id?: string | null | undefined;
|
|
100
|
+
url?: string | null | undefined;
|
|
101
101
|
extra?: {
|
|
102
102
|
label: string;
|
|
103
|
-
value?: string | null;
|
|
103
|
+
value?: string | null | undefined;
|
|
104
104
|
icon?: ReactNode;
|
|
105
|
-
}[];
|
|
105
|
+
}[] | undefined;
|
|
106
106
|
t?: (key: string, values?: Record<string, string | number>) => string;
|
|
107
107
|
}): RowMenuItem;
|
|
108
108
|
/** Stays visible while active (menu open) so it doesn't vanish behind the overlay. */
|
package/dist/list/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
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-
|
|
2
|
-
import { A as ActionToolbar, C as ListSkeleton, D as actionsColumnWidth, E as RowSelectCheckbox, M as stickyTabsClasses, N as stickyTabsUnderHeaderClasses, O as listTableFixedProps, P as stickyToolbarClasses, S as ListError, T as NameCell, _ as ListRow, a as ListCount, b as GroupRow, c as ListDisplayMenu, d as isTextEntryContext, f as DEFAULT_ORDER, g as ListPage, h as ListColumns, i as ListPager, j as ToolbarButton, k as listTableProps, l as ListFilterMenu, m as useListView, n as useHoverCard, o as ListSearchControl, p as FAVORITE_ORDER, r as LIST_PAGE_SIZES, s as useListSearch, t as HoverCardSurface, u as listControlButtonClasses, v as ListRowActionsProvider, w as NAME_MIN_WIDTH_PX, x as ListActionsHeader, y as useListNavigate } from "../chunks/list-
|
|
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-FhtphHGc.js";
|
|
2
|
+
import { A as ActionToolbar, C as ListSkeleton, D as actionsColumnWidth, E as RowSelectCheckbox, M as stickyTabsClasses, N as stickyTabsUnderHeaderClasses, O as listTableFixedProps, P as stickyToolbarClasses, S as ListError, T as NameCell, _ as ListRow, a as ListCount, b as GroupRow, c as ListDisplayMenu, d as isTextEntryContext, f as DEFAULT_ORDER, g as ListPage, h as ListColumns, i as ListPager, j as ToolbarButton, k as listTableProps, l as ListFilterMenu, m as useListView, n as useHoverCard, o as ListSearchControl, p as FAVORITE_ORDER, r as LIST_PAGE_SIZES, s as useListSearch, t as HoverCardSurface, u as listControlButtonClasses, v as ListRowActionsProvider, w as NAME_MIN_WIDTH_PX, x as ListActionsHeader, y as useListNavigate } from "../chunks/list-3jZW8rmM.js";
|
|
3
3
|
export { ActionToolbar, DEFAULT_ORDER, FAVORITE_ORDER, GroupRow, HoverCardSurface, LIST_PAGE_SIZES, 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,6 +1,6 @@
|
|
|
1
1
|
import { ArrowDownIcon, ArrowUpIcon, CheckIcon, ChevronDownIcon, ChevronRightIcon, ClockIcon, CopyIcon, DownloadIcon, ExpandIcon, ShrinkIcon, XIcon } from "../icons.js";
|
|
2
|
-
import { c as useStrings, i as useNotify } from "../chunks/Provider-
|
|
3
|
-
import { r as TooltipInfo } from "../chunks/Tooltip-
|
|
2
|
+
import { c as useStrings, i as useNotify } from "../chunks/Provider-CbFVFB7O.js";
|
|
3
|
+
import { r as TooltipInfo } from "../chunks/Tooltip-n9w7Tkt1.js";
|
|
4
4
|
import cx from "classnames";
|
|
5
5
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
6
6
|
import { Fragment as Fragment$1, memo, useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from "react";
|
|
@@ -37,19 +37,34 @@ var LogLine = memo(function LogLine({ index, segments, lineNumbers, isSelected,
|
|
|
37
37
|
});
|
|
38
38
|
return null;
|
|
39
39
|
}, [command?.type, annotationLabels]);
|
|
40
|
+
const groupToggle = command?.type === "group" && onGroupToggle ? () => {
|
|
41
|
+
if (window.getSelection()?.isCollapsed === false) return;
|
|
42
|
+
onGroupToggle(index);
|
|
43
|
+
} : null;
|
|
44
|
+
const groupToggleProps = groupToggle ? {
|
|
45
|
+
role: "button",
|
|
46
|
+
tabIndex: 0,
|
|
47
|
+
"aria-expanded": !isGroupCollapsed,
|
|
48
|
+
onClick: groupToggle,
|
|
49
|
+
onKeyDown: (e) => {
|
|
50
|
+
if (e.target !== e.currentTarget) return;
|
|
51
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
52
|
+
e.preventDefault();
|
|
53
|
+
groupToggle();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
} : void 0;
|
|
40
57
|
return /* @__PURE__ */ jsxs("div", {
|
|
41
58
|
"data-line-number": index + 1,
|
|
59
|
+
...groupToggleProps,
|
|
42
60
|
className: cx("flex items-start text-sm font-mono group", isSelected ? "bg-(--theme-link)/15" : "hover:bg-(--theme-hover)", "text-(--theme-app)", command?.type === "error" && "bg-red-500/10", command?.type === "warning" && "bg-yellow-500/10", command?.type === "notice" && "bg-blue-500/10", command?.type === "debug" && "opacity-60", command?.type === "group" && "bg-(--theme-hover) cursor-pointer"),
|
|
43
61
|
style: {
|
|
44
62
|
minHeight: `${lineHeight}px`,
|
|
45
63
|
lineHeight: `${lineHeight}px`,
|
|
46
64
|
paddingLeft: groupDepth > 0 ? `${groupDepth * 16}px` : void 0
|
|
47
65
|
},
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
onGroupToggle(index);
|
|
51
|
-
} : void 0,
|
|
52
|
-
children: [lineNumbers && /* @__PURE__ */ jsx("span", {
|
|
66
|
+
children: [lineNumbers && /* @__PURE__ */ jsx("button", {
|
|
67
|
+
type: "button",
|
|
53
68
|
onClick: (e) => {
|
|
54
69
|
e.stopPropagation();
|
|
55
70
|
onLineClick(index + 1, e);
|
|
@@ -537,6 +552,7 @@ function LogViewer({ log, height = "unset", width, roundedBottom = false, lineNu
|
|
|
537
552
|
children: [copied ? /* @__PURE__ */ jsx(CheckIcon, { className: "text-green-500" }) : /* @__PURE__ */ jsx(CopyIcon, {}), /* @__PURE__ */ jsx("span", { children: copied ? tCommon.copied : t.copyLines(selectedLines.size) })]
|
|
538
553
|
}), /* @__PURE__ */ jsx("button", {
|
|
539
554
|
type: "button",
|
|
555
|
+
"aria-label": t.clearSelection,
|
|
540
556
|
className: "absolute -top-1.5 -right-1.5 btn-neutral rounded-full p-1 border transition-colors shadow-sm cursor-pointer z-10",
|
|
541
557
|
onClick: () => setSelectedLines(/* @__PURE__ */ new Set()),
|
|
542
558
|
title: t.clearSelection,
|
|
@@ -661,6 +677,7 @@ function LogViewer({ log, height = "unset", width, roundedBottom = false, lineNu
|
|
|
661
677
|
}),
|
|
662
678
|
/* @__PURE__ */ jsxs("div", {
|
|
663
679
|
"data-testid": "logviewer",
|
|
680
|
+
role: "none",
|
|
664
681
|
className: cx(roundedBottom && "rounded-b-lg", "w-full overflow-x-auto", !inline && "h-full grow overflow-y-auto", !inline && "bg-(--theme-muted-panel-bg)", contentClassName),
|
|
665
682
|
style: inline ? void 0 : {
|
|
666
683
|
overflowY: "auto",
|
package/dist/styles/theme.css
CHANGED
|
@@ -14,15 +14,15 @@
|
|
|
14
14
|
--theme-panel-bg: #ffffff;
|
|
15
15
|
--theme-panel: #000000;
|
|
16
16
|
--theme-muted-panel-bg: #f8f9fa;
|
|
17
|
-
--theme-muted-panel-color: #
|
|
18
|
-
--theme-muted-text-color: #
|
|
17
|
+
--theme-muted-panel-color: #5f6b76;
|
|
18
|
+
--theme-muted-text-color: #5f6b76;
|
|
19
19
|
--theme-border: #d1d5db;
|
|
20
20
|
--theme-element: #06354f;
|
|
21
21
|
--theme-element-text: #ffffff;
|
|
22
22
|
--theme-element-hover: #053047;
|
|
23
23
|
--theme-hover: #f3f4f6;
|
|
24
24
|
--theme-hover-text: #000000;
|
|
25
|
-
--theme-link: #
|
|
25
|
+
--theme-link: #2f6fa8;
|
|
26
26
|
--theme-input-bg: #f9fafb;
|
|
27
27
|
--theme-input: #3b82f6;
|
|
28
28
|
--theme-input-disabled-bg: #f3f4f6;
|
|
@@ -67,11 +67,11 @@
|
|
|
67
67
|
|
|
68
68
|
@utility theme-muted-panel {
|
|
69
69
|
background-color: var(--theme-muted-panel-bg, #f8f9fa);
|
|
70
|
-
color: var(--theme-muted-panel-color, #
|
|
70
|
+
color: var(--theme-muted-panel-color, #5f6b76);
|
|
71
71
|
}
|
|
72
72
|
|
|
73
73
|
@utility theme-muted-text {
|
|
74
|
-
color: var(--theme-muted-text-color, #
|
|
74
|
+
color: var(--theme-muted-text-color, #5f6b76);
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
@utility theme-text {
|
|
@@ -117,7 +117,7 @@
|
|
|
117
117
|
}
|
|
118
118
|
|
|
119
119
|
.tooltip {
|
|
120
|
-
color: var(--theme-muted-text-color, #
|
|
120
|
+
color: var(--theme-muted-text-color, #5f6b76);
|
|
121
121
|
}
|
|
122
122
|
.tooltip:hover {
|
|
123
123
|
color: var(--theme-app, #000000);
|