@jc-times/business-ui 0.2.43
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/AGENTS.md +6 -0
- package/CHANGELOG.md +267 -0
- package/README.md +55 -0
- package/THIRD_PARTY_NOTICES.md +29 -0
- package/bin/business-ui-gate.mjs +171 -0
- package/dist/Alert.js +47 -0
- package/dist/AsyncDirectoryPicker.js +134 -0
- package/dist/AsyncSearchPicker.js +155 -0
- package/dist/AutoComplete.js +34 -0
- package/dist/Badge.js +14 -0
- package/dist/Button.js +54 -0
- package/dist/Cascader.js +141 -0
- package/dist/Combobox.js +106 -0
- package/dist/ConfirmDialog.js +48 -0
- package/dist/DataTableHorizontalScrollbar.js +38 -0
- package/dist/DataTableIcons.js +37 -0
- package/dist/DataTableMergedRows.js +45 -0
- package/dist/DataTableTheme.js +135 -0
- package/dist/DateInput.js +223 -0
- package/dist/DropdownMenu.js +130 -0
- package/dist/EmptyState.js +27 -0
- package/dist/ExplainableButton.js +68 -0
- package/dist/FileDropzone.js +70 -0
- package/dist/FilePreparationDialog.js +33 -0
- package/dist/FloatingControls.js +120 -0
- package/dist/FormField.js +143 -0
- package/dist/MetricCard.js +38 -0
- package/dist/ModalShell.js +139 -0
- package/dist/MultiSelect.js +137 -0
- package/dist/NumericInput.js +97 -0
- package/dist/OverlayContainer.js +9 -0
- package/dist/PageHeader.js +36 -0
- package/dist/Pagination.js +115 -0
- package/dist/PreparedFileDropzone.js +30 -0
- package/dist/RecoverableAsyncState.js +35 -0
- package/dist/RovingTabs.js +54 -0
- package/dist/SectionCard.js +35 -0
- package/dist/SegmentedControl.js +46 -0
- package/dist/Select.js +73 -0
- package/dist/Skeleton.js +25 -0
- package/dist/SortableList.js +55 -0
- package/dist/StructuredAddressInput.js +157 -0
- package/dist/Toast.js +100 -0
- package/dist/ToggleSwitch.js +34 -0
- package/dist/TreeSelect.js +444 -0
- package/dist/amount-format.js +20 -0
- package/dist/business-ui.js +44 -0
- package/dist/chinese-address-regions.js +15 -0
- package/dist/classNames.js +6 -0
- package/dist/data-table.js +257 -0
- package/dist/document-render-budget.js +22 -0
- package/dist/document-viewer/ContinuousPdfViewer.js +145 -0
- package/dist/document-viewer/DocumentViewer.js +123 -0
- package/dist/document-viewer/DocumentViewerViewport.js +36 -0
- package/dist/document-viewer/ImagePage.js +39 -0
- package/dist/document-viewer/PdfCanvasPage.js +26 -0
- package/dist/document-viewer/PdfThumbnailRail.js +116 -0
- package/dist/document-viewer/PdfToolbar.js +61 -0
- package/dist/document-viewer/PdfWorkspace.js +42 -0
- package/dist/document-viewer/pdf-render-budget.js +7 -0
- package/dist/document-viewer/usePdfCanvas.js +69 -0
- package/dist/document-viewer/usePdfViewport.js +48 -0
- package/dist/document-viewer-v2/DocumentViewerV2.js +171 -0
- package/dist/document-viewer-v2/HeadlessPdfViewer.js +420 -0
- package/dist/document-viewer-v2/HeadlessSearch.js +66 -0
- package/dist/document-viewer-v2.js +13 -0
- package/dist/document-viewer.js +12 -0
- package/dist/pdfium-viewer.js +18 -0
- package/dist/styles.css +2 -0
- package/dist/types/Alert.d.ts +11 -0
- package/dist/types/AmountFormat.d.ts +15 -0
- package/dist/types/AsyncDirectoryPicker.d.ts +32 -0
- package/dist/types/AsyncSearchPicker.d.ts +26 -0
- package/dist/types/AutoComplete.d.ts +9 -0
- package/dist/types/Badge.d.ts +13 -0
- package/dist/types/Button.d.ts +36 -0
- package/dist/types/Cascader.d.ts +57 -0
- package/dist/types/ChineseAddressRegions.d.ts +4 -0
- package/dist/types/Combobox.d.ts +37 -0
- package/dist/types/ConfirmDialog.d.ts +20 -0
- package/dist/types/DataTable.d.ts +68 -0
- package/dist/types/DataTableHorizontalScrollbar.d.ts +8 -0
- package/dist/types/DataTableIcons.d.ts +19 -0
- package/dist/types/DataTableMergedRows.d.ts +11 -0
- package/dist/types/DataTableTheme.d.ts +4 -0
- package/dist/types/DateInput.d.ts +25 -0
- package/dist/types/DocumentRenderBudget.d.ts +9 -0
- package/dist/types/DocumentViewer.d.ts +11 -0
- package/dist/types/DocumentViewerV2.d.ts +10 -0
- package/dist/types/DropdownMenu.d.ts +73 -0
- package/dist/types/EmptyState.d.ts +9 -0
- package/dist/types/ExplainableButton.d.ts +7 -0
- package/dist/types/FileDropzone.d.ts +20 -0
- package/dist/types/FilePreparationDialog.d.ts +12 -0
- package/dist/types/FloatingControls.d.ts +39 -0
- package/dist/types/FormField.d.ts +35 -0
- package/dist/types/MetricCard.d.ts +17 -0
- package/dist/types/ModalShell.d.ts +33 -0
- package/dist/types/MultiSelect.d.ts +12 -0
- package/dist/types/NumericInput.d.ts +54 -0
- package/dist/types/OverlayContainer.d.ts +2 -0
- package/dist/types/PageHeader.d.ts +23 -0
- package/dist/types/Pagination.d.ts +14 -0
- package/dist/types/PdfiumViewer.d.ts +5 -0
- package/dist/types/PreparedFileDropzone.d.ts +7 -0
- package/dist/types/RecoverableAsyncState.d.ts +11 -0
- package/dist/types/RovingTabs.d.ts +21 -0
- package/dist/types/SectionCard.d.ts +18 -0
- package/dist/types/SegmentedControl.d.ts +26 -0
- package/dist/types/Select.d.ts +31 -0
- package/dist/types/Skeleton.d.ts +11 -0
- package/dist/types/SortableList.d.ts +17 -0
- package/dist/types/StructuredAddressInput.d.ts +57 -0
- package/dist/types/Toast.d.ts +22 -0
- package/dist/types/ToggleSwitch.d.ts +15 -0
- package/dist/types/TreeSelect.d.ts +58 -0
- package/dist/types/classNames.d.ts +1 -0
- package/dist/types/document-viewer/ContinuousPdfViewer.d.ts +16 -0
- package/dist/types/document-viewer/DocumentViewer.d.ts +31 -0
- package/dist/types/document-viewer/DocumentViewerViewport.d.ts +23 -0
- package/dist/types/document-viewer/ImagePage.d.ts +9 -0
- package/dist/types/document-viewer/PdfCanvasPage.d.ts +7 -0
- package/dist/types/document-viewer/PdfThumbnailRail.d.ts +12 -0
- package/dist/types/document-viewer/PdfToolbar.d.ts +13 -0
- package/dist/types/document-viewer/PdfWorkspace.d.ts +5 -0
- package/dist/types/document-viewer/pdf-render-budget.d.ts +2 -0
- package/dist/types/document-viewer/usePdfCanvas.d.ts +22 -0
- package/dist/types/document-viewer/usePdfViewport.d.ts +14 -0
- package/dist/types/document-viewer-v2/DocumentViewerV2.d.ts +50 -0
- package/dist/types/document-viewer-v2/HeadlessPdfViewer.d.ts +39 -0
- package/dist/types/document-viewer-v2/HeadlessSearch.d.ts +9 -0
- package/dist/types/index.d.ts +41 -0
- package/dist/types/useDebouncedValue.d.ts +2 -0
- package/dist/types/useFilePreparation.d.ts +28 -0
- package/dist/types/useModalFocusTrap.d.ts +3 -0
- package/dist/useDebouncedValue.js +16 -0
- package/dist/useFilePreparation.js +51 -0
- package/dist/useModalFocusTrap.js +71 -0
- package/docs/agent-guide.md +145 -0
- package/docs/api.md +220 -0
- package/docs/cascader.md +56 -0
- package/docs/component-strategy.md +94 -0
- package/docs/data-table.md +123 -0
- package/docs/dependencies.md +57 -0
- package/docs/document-viewer-v2.md +259 -0
- package/docs/document-viewer.md +28 -0
- package/docs/file-preparation.md +11 -0
- package/docs/maturity-migration.md +62 -0
- package/docs/modal-shell-migration.md +43 -0
- package/docs/mrt-poc.md +205 -0
- package/docs/release.md +32 -0
- package/docs/viewport-qa.md +99 -0
- package/licenses/rc-cascader-MIT.txt +21 -0
- package/package.json +163 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { type InputHTMLAttributes, type ReactNode, type SelectHTMLAttributes, type TextareaHTMLAttributes } from "react";
|
|
2
|
+
type FieldPresentation = {
|
|
3
|
+
label?: ReactNode;
|
|
4
|
+
helpText?: ReactNode;
|
|
5
|
+
error?: ReactNode;
|
|
6
|
+
containerClassName?: string;
|
|
7
|
+
};
|
|
8
|
+
type FormFieldProps = FieldPresentation & {
|
|
9
|
+
controlId: string;
|
|
10
|
+
required?: boolean;
|
|
11
|
+
children: ReactNode;
|
|
12
|
+
};
|
|
13
|
+
export declare function FormField({ controlId, label, required, helpText, error, containerClassName, children }: FormFieldProps): import("react").JSX.Element;
|
|
14
|
+
export type TextInputProps = InputHTMLAttributes<HTMLInputElement> & FieldPresentation & {
|
|
15
|
+
/** Content displayed inside the control before the editable value. */
|
|
16
|
+
startAdornment?: ReactNode;
|
|
17
|
+
/** Content displayed inside the control after the editable value. */
|
|
18
|
+
endAdornment?: ReactNode;
|
|
19
|
+
};
|
|
20
|
+
export declare const TextInput: import("react").ForwardRefExoticComponent<InputHTMLAttributes<HTMLInputElement> & FieldPresentation & {
|
|
21
|
+
/** Content displayed inside the control before the editable value. */
|
|
22
|
+
startAdornment?: ReactNode;
|
|
23
|
+
/** Content displayed inside the control after the editable value. */
|
|
24
|
+
endAdornment?: ReactNode;
|
|
25
|
+
} & import("react").RefAttributes<HTMLInputElement>>;
|
|
26
|
+
export type SelectInputProps = SelectHTMLAttributes<HTMLSelectElement> & FieldPresentation;
|
|
27
|
+
export declare const SelectInput: import("react").ForwardRefExoticComponent<SelectHTMLAttributes<HTMLSelectElement> & FieldPresentation & import("react").RefAttributes<HTMLSelectElement>>;
|
|
28
|
+
export type TextAreaProps = TextareaHTMLAttributes<HTMLTextAreaElement> & FieldPresentation;
|
|
29
|
+
export declare const TextArea: import("react").ForwardRefExoticComponent<TextareaHTMLAttributes<HTMLTextAreaElement> & FieldPresentation & import("react").RefAttributes<HTMLTextAreaElement>>;
|
|
30
|
+
export declare const Checkbox: import("react").ForwardRefExoticComponent<Omit<InputHTMLAttributes<HTMLInputElement>, "type"> & {
|
|
31
|
+
label: ReactNode;
|
|
32
|
+
description?: ReactNode;
|
|
33
|
+
containerClassName?: string;
|
|
34
|
+
} & import("react").RefAttributes<HTMLInputElement>>;
|
|
35
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type HTMLAttributes, type ReactNode } from "react";
|
|
2
|
+
import { type BadgeTone } from "./Badge";
|
|
3
|
+
export type MetricCardTone = BadgeTone;
|
|
4
|
+
export type MetricCardProps = Omit<HTMLAttributes<HTMLElement>, "children"> & {
|
|
5
|
+
label: ReactNode;
|
|
6
|
+
value: ReactNode;
|
|
7
|
+
description?: ReactNode;
|
|
8
|
+
icon?: ReactNode;
|
|
9
|
+
tone?: MetricCardTone;
|
|
10
|
+
};
|
|
11
|
+
export declare const MetricCard: import("react").ForwardRefExoticComponent<Omit<HTMLAttributes<HTMLElement>, "children"> & {
|
|
12
|
+
label: ReactNode;
|
|
13
|
+
value: ReactNode;
|
|
14
|
+
description?: ReactNode;
|
|
15
|
+
icon?: ReactNode;
|
|
16
|
+
tone?: MetricCardTone;
|
|
17
|
+
} & import("react").RefAttributes<HTMLElement>>;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type ComponentPropsWithRef, type ReactNode, type Ref } from "react";
|
|
2
|
+
import { type FocusTarget } from "./useModalFocusTrap";
|
|
3
|
+
type DataAttributes = {
|
|
4
|
+
[key: `data-${string}`]: string | number | boolean | undefined;
|
|
5
|
+
};
|
|
6
|
+
export type ModalShellProps = {
|
|
7
|
+
backdropClassName?: string;
|
|
8
|
+
panelClassName?: string;
|
|
9
|
+
titleId: string;
|
|
10
|
+
eyebrow?: ReactNode;
|
|
11
|
+
title: ReactNode;
|
|
12
|
+
description?: ReactNode;
|
|
13
|
+
closeLabel: string;
|
|
14
|
+
onClose: () => void;
|
|
15
|
+
closeDisabled?: boolean;
|
|
16
|
+
showCloseButton?: boolean;
|
|
17
|
+
closeIconSize?: number;
|
|
18
|
+
closeOnBackdrop?: boolean;
|
|
19
|
+
closeOnEscape?: boolean;
|
|
20
|
+
initialFocus?: FocusTarget;
|
|
21
|
+
returnFocus?: FocusTarget | false;
|
|
22
|
+
rootRef?: Ref<HTMLDivElement>;
|
|
23
|
+
role?: "dialog" | "alertdialog";
|
|
24
|
+
describedBy?: string;
|
|
25
|
+
children: ReactNode;
|
|
26
|
+
contentClassName?: string;
|
|
27
|
+
contentProps?: Omit<ComponentPropsWithRef<"div">, "children" | "className" | "dangerouslySetInnerHTML"> & DataAttributes;
|
|
28
|
+
footer?: ReactNode;
|
|
29
|
+
footerClassName?: string;
|
|
30
|
+
};
|
|
31
|
+
export declare function ModalShell({ backdropClassName, panelClassName, titleId, eyebrow, title, description, closeLabel, onClose, closeDisabled, showCloseButton, closeIconSize, closeOnBackdrop, rootRef, closeOnEscape, initialFocus, returnFocus, role, describedBy, children, footer, contentClassName, contentProps, footerClassName }: ModalShellProps): import("react").JSX.Element;
|
|
32
|
+
export declare const Dialog: typeof ModalShell;
|
|
33
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ComboboxOption, ComboboxProps } from "./Combobox";
|
|
2
|
+
export type MultiSelectProps = Omit<ComboboxProps, "selectedKey" | "defaultSelectedKey" | "onSelectionChange" | "allowsCustomValue"> & {
|
|
3
|
+
values?: readonly string[];
|
|
4
|
+
defaultValues?: readonly string[];
|
|
5
|
+
onValuesChange?(values: string[]): void;
|
|
6
|
+
name?: string;
|
|
7
|
+
selectedItems?: readonly ComboboxOption[];
|
|
8
|
+
clearLabel?: string;
|
|
9
|
+
selectionLabel?: string;
|
|
10
|
+
maxSelected?: number;
|
|
11
|
+
};
|
|
12
|
+
export declare function MultiSelect({ values, defaultValues, onValuesChange, name, selectedItems, items, disabled, clearLabel, selectionLabel, maxSelected, inputValue, defaultInputValue, onInputChange, required, label, placeholder, helpText, error, loading, emptyText, inputRef, inputProps, placement, portalContainer, virtualized, className }: MultiSelectProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { type TextInputProps } from "./FormField";
|
|
2
|
+
import { type MoneyFormat } from "./AmountFormat";
|
|
3
|
+
export type NumericInputProps = Omit<TextInputProps, "type" | "value" | "defaultValue" | "min" | "max"> & {
|
|
4
|
+
/** Controlled decimal string; an empty string represents no value. */
|
|
5
|
+
value: string;
|
|
6
|
+
/** Called only with normalized values on blur or Enter. */
|
|
7
|
+
onValueCommit(value: string): void;
|
|
8
|
+
/** Optional edit notification, including intermediate states such as '-' and '1.'. */
|
|
9
|
+
onDraftChange?(value: string): void;
|
|
10
|
+
decimalPlaces?: number;
|
|
11
|
+
/** Minimum fraction digits in the resting display; does not pad drafts or committed values. */
|
|
12
|
+
minimumFractionDigits?: number;
|
|
13
|
+
min?: string;
|
|
14
|
+
max?: string;
|
|
15
|
+
useGrouping?: boolean;
|
|
16
|
+
/** Currency presentation in resting state only; editing and commits remain numeric. */
|
|
17
|
+
moneyFormat?: MoneyFormat;
|
|
18
|
+
selectAllOnFocus?: boolean;
|
|
19
|
+
selectAllOnClick?: boolean;
|
|
20
|
+
};
|
|
21
|
+
export declare const NumericInput: import("react").ForwardRefExoticComponent<Omit<TextInputProps, "type" | "defaultValue" | "value" | "max" | "min"> & {
|
|
22
|
+
/** Controlled decimal string; an empty string represents no value. */
|
|
23
|
+
value: string;
|
|
24
|
+
/** Called only with normalized values on blur or Enter. */
|
|
25
|
+
onValueCommit(value: string): void;
|
|
26
|
+
/** Optional edit notification, including intermediate states such as '-' and '1.'. */
|
|
27
|
+
onDraftChange?(value: string): void;
|
|
28
|
+
decimalPlaces?: number;
|
|
29
|
+
/** Minimum fraction digits in the resting display; does not pad drafts or committed values. */
|
|
30
|
+
minimumFractionDigits?: number;
|
|
31
|
+
min?: string;
|
|
32
|
+
max?: string;
|
|
33
|
+
useGrouping?: boolean;
|
|
34
|
+
/** Currency presentation in resting state only; editing and commits remain numeric. */
|
|
35
|
+
moneyFormat?: MoneyFormat;
|
|
36
|
+
selectAllOnFocus?: boolean;
|
|
37
|
+
selectAllOnClick?: boolean;
|
|
38
|
+
} & import("react").RefAttributes<HTMLInputElement>>;
|
|
39
|
+
export type ScaledNumericInputProps = Omit<NumericInputProps, "value" | "onValueCommit" | "decimalPlaces" | "min" | "max"> & {
|
|
40
|
+
value: number | null;
|
|
41
|
+
onValueCommit(value: number | null): void;
|
|
42
|
+
/** Positive power of ten, default 100. Value and bounds are safe integers in storage units. */
|
|
43
|
+
scale?: number;
|
|
44
|
+
min?: number;
|
|
45
|
+
max?: number;
|
|
46
|
+
};
|
|
47
|
+
export declare const ScaledNumericInput: import("react").ForwardRefExoticComponent<Omit<NumericInputProps, "value" | "max" | "min" | "onValueCommit" | "decimalPlaces"> & {
|
|
48
|
+
value: number | null;
|
|
49
|
+
onValueCommit(value: number | null): void;
|
|
50
|
+
/** Positive power of ten, default 100. Value and bounds are safe integers in storage units. */
|
|
51
|
+
scale?: number;
|
|
52
|
+
min?: number;
|
|
53
|
+
max?: number;
|
|
54
|
+
} & import("react").RefAttributes<HTMLInputElement>>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type HTMLAttributes, type ReactNode } from "react";
|
|
2
|
+
type PageHeaderSlotProps = Omit<HTMLAttributes<HTMLDivElement>, "children"> & {
|
|
3
|
+
[key: `data-${string}`]: string | number | undefined;
|
|
4
|
+
};
|
|
5
|
+
export type PageHeaderProps = Omit<HTMLAttributes<HTMLElement>, "children" | "title"> & {
|
|
6
|
+
eyebrow?: ReactNode;
|
|
7
|
+
title: ReactNode;
|
|
8
|
+
titleId?: string;
|
|
9
|
+
description?: ReactNode;
|
|
10
|
+
actions?: ReactNode;
|
|
11
|
+
copyProps?: PageHeaderSlotProps;
|
|
12
|
+
actionsProps?: PageHeaderSlotProps;
|
|
13
|
+
};
|
|
14
|
+
export declare const PageHeader: import("react").ForwardRefExoticComponent<Omit<HTMLAttributes<HTMLElement>, "title" | "children"> & {
|
|
15
|
+
eyebrow?: ReactNode;
|
|
16
|
+
title: ReactNode;
|
|
17
|
+
titleId?: string;
|
|
18
|
+
description?: ReactNode;
|
|
19
|
+
actions?: ReactNode;
|
|
20
|
+
copyProps?: PageHeaderSlotProps;
|
|
21
|
+
actionsProps?: PageHeaderSlotProps;
|
|
22
|
+
} & import("react").RefAttributes<HTMLElement>>;
|
|
23
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type PaginationProps = {
|
|
2
|
+
totalItems: number;
|
|
3
|
+
page: number;
|
|
4
|
+
pageSize: number;
|
|
5
|
+
onPageChange(page: number): void;
|
|
6
|
+
onPageSizeChange?(pageSize: number): void;
|
|
7
|
+
itemLabel?: string;
|
|
8
|
+
pageSizeOptions?: readonly number[];
|
|
9
|
+
compact?: boolean;
|
|
10
|
+
};
|
|
11
|
+
export declare function Pagination({ totalItems, page, pageSize, onPageChange, onPageSizeChange, itemLabel, pageSizeOptions, compact }: PaginationProps): import("react").JSX.Element;
|
|
12
|
+
export declare function pageCount(totalItems: number, pageSize: number): number;
|
|
13
|
+
export declare function clampPage(page: number, totalItems: number, pageSize: number): number;
|
|
14
|
+
export declare function visiblePages(page: number, totalPages: number): (number | "ellipsis")[];
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { DocumentViewerV2HeadlessProps } from './document-viewer-v2/HeadlessPdfViewer';
|
|
2
|
+
export type PdfiumViewerProps = Omit<DocumentViewerV2HeadlessProps, 'renderer'>;
|
|
3
|
+
export type { PluginRegistry } from '@embedpdf/core';
|
|
4
|
+
/** Native PDF-only entry: excludes legacy PDF.js rendering and the full viewer shell. */
|
|
5
|
+
export declare function PdfiumViewer(props: PdfiumViewerProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type FileDropzoneProps } from "./FileDropzone";
|
|
2
|
+
import { type FilePreparationLabels } from "./FilePreparationDialog";
|
|
3
|
+
import { type FilePreparationOptions } from "./useFilePreparation";
|
|
4
|
+
export type PreparedFileDropzoneProps = FileDropzoneProps & Pick<FilePreparationOptions, "ownerKey" | "prepareFile" | "errorMessage"> & {
|
|
5
|
+
labels: FilePreparationLabels;
|
|
6
|
+
};
|
|
7
|
+
export declare function PreparedFileDropzone({ ownerKey, prepareFile, errorMessage, labels, onFilesSelected, ...props }: PreparedFileDropzoneProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type RecoverableAsyncStateProps = {
|
|
2
|
+
phase: "loading" | "error";
|
|
3
|
+
loadingTitle: string;
|
|
4
|
+
errorTitle: string;
|
|
5
|
+
detail?: string;
|
|
6
|
+
retryLabel?: string;
|
|
7
|
+
compact?: boolean;
|
|
8
|
+
onRetry?(): void;
|
|
9
|
+
};
|
|
10
|
+
export declare function RecoverableAsyncState(props: RecoverableAsyncStateProps): import("react").JSX.Element;
|
|
11
|
+
export declare const AsyncState: typeof RecoverableAsyncState;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
export type TabOption<Value extends string> = {
|
|
3
|
+
value: Value;
|
|
4
|
+
label: ReactNode;
|
|
5
|
+
};
|
|
6
|
+
export type TabListProps<Value extends string> = {
|
|
7
|
+
groupId: string;
|
|
8
|
+
label: string;
|
|
9
|
+
value: Value;
|
|
10
|
+
options: readonly TabOption<Value>[];
|
|
11
|
+
className?: string;
|
|
12
|
+
onChange(value: Value): void;
|
|
13
|
+
};
|
|
14
|
+
export declare function RovingTabList<Value extends string>(props: TabListProps<Value>): import("react").JSX.Element;
|
|
15
|
+
export declare function RovingTabPanel<Value extends string>({ groupId, value, className, children }: {
|
|
16
|
+
groupId: string;
|
|
17
|
+
value: Value;
|
|
18
|
+
className?: string;
|
|
19
|
+
children: ReactNode;
|
|
20
|
+
}): import("react").JSX.Element;
|
|
21
|
+
export declare function nextRovingTabValue<Value extends string>(values: readonly Value[], current: Value, key: string): Value | null;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type HTMLAttributes, type ReactNode } from "react";
|
|
2
|
+
export type SectionCardHeadingLevel = 2 | 3 | 4 | 5 | 6;
|
|
3
|
+
export type SectionCardProps = Omit<HTMLAttributes<HTMLElement>, "children" | "title"> & {
|
|
4
|
+
title: ReactNode;
|
|
5
|
+
description?: ReactNode;
|
|
6
|
+
actions?: ReactNode;
|
|
7
|
+
children: ReactNode;
|
|
8
|
+
headingId?: string;
|
|
9
|
+
headingLevel?: SectionCardHeadingLevel;
|
|
10
|
+
};
|
|
11
|
+
export declare const SectionCard: import("react").ForwardRefExoticComponent<Omit<HTMLAttributes<HTMLElement>, "title" | "children"> & {
|
|
12
|
+
title: ReactNode;
|
|
13
|
+
description?: ReactNode;
|
|
14
|
+
actions?: ReactNode;
|
|
15
|
+
children: ReactNode;
|
|
16
|
+
headingId?: string;
|
|
17
|
+
headingLevel?: SectionCardHeadingLevel;
|
|
18
|
+
} & import("react").RefAttributes<HTMLElement>>;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
export type SegmentedControlOption<Value extends string> = {
|
|
3
|
+
value: Value;
|
|
4
|
+
label: ReactNode;
|
|
5
|
+
icon?: ReactNode;
|
|
6
|
+
/** Required for icon-only labels. */
|
|
7
|
+
"aria-label"?: string;
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
};
|
|
10
|
+
export type SegmentedControlProps<Value extends string> = {
|
|
11
|
+
value: Value;
|
|
12
|
+
options: readonly SegmentedControlOption<Value>[];
|
|
13
|
+
onChange(value: Value): void;
|
|
14
|
+
"aria-label": string;
|
|
15
|
+
name?: string;
|
|
16
|
+
disabled?: boolean;
|
|
17
|
+
className?: string;
|
|
18
|
+
size?: "compact" | "default" | "touch";
|
|
19
|
+
variant?: "solid" | "soft";
|
|
20
|
+
/** Defaults to true for compatibility with existing full-width controls. */
|
|
21
|
+
block?: boolean;
|
|
22
|
+
orientation?: "horizontal" | "vertical";
|
|
23
|
+
shape?: "default" | "round";
|
|
24
|
+
};
|
|
25
|
+
/** Accessible controlled single choice rendered as one continuous segmented surface. */
|
|
26
|
+
export declare function SegmentedControl<Value extends string>({ value, options, onChange, name, disabled, className, size, variant, block, orientation, shape, ...ariaProps }: SegmentedControlProps<Value>): import("react").JSX.Element;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import * as RadixSelect from "@radix-ui/react-select";
|
|
2
|
+
import { type ReactNode, type Ref } from "react";
|
|
3
|
+
export type SelectOption = {
|
|
4
|
+
value: string;
|
|
5
|
+
label: ReactNode;
|
|
6
|
+
disabled?: boolean;
|
|
7
|
+
};
|
|
8
|
+
type DataAttributes = {
|
|
9
|
+
[key: `data-${string}`]: string | number | boolean | undefined;
|
|
10
|
+
};
|
|
11
|
+
export type SelectProps = {
|
|
12
|
+
value?: string;
|
|
13
|
+
defaultValue?: string;
|
|
14
|
+
onValueChange?: (value: string) => void;
|
|
15
|
+
options: readonly SelectOption[];
|
|
16
|
+
label?: ReactNode;
|
|
17
|
+
placeholder?: ReactNode;
|
|
18
|
+
helpText?: ReactNode;
|
|
19
|
+
error?: ReactNode;
|
|
20
|
+
required?: boolean;
|
|
21
|
+
disabled?: boolean;
|
|
22
|
+
name?: string;
|
|
23
|
+
id?: string;
|
|
24
|
+
className?: string;
|
|
25
|
+
triggerRef?: Ref<HTMLButtonElement>;
|
|
26
|
+
triggerProps?: Omit<RadixSelect.SelectTriggerProps, "id" | "className" | "disabled"> & DataAttributes;
|
|
27
|
+
portalContainer?: HTMLElement | null;
|
|
28
|
+
placement?: Pick<RadixSelect.SelectContentProps, "side" | "align" | "sideOffset" | "alignOffset" | "collisionPadding" | "avoidCollisions">;
|
|
29
|
+
};
|
|
30
|
+
export declare function Select({ value, defaultValue, onValueChange, options, label, placeholder, helpText, error, required, disabled, name, id, className, triggerRef, triggerProps, portalContainer, placement }: SelectProps): import("react").JSX.Element;
|
|
31
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type CSSProperties, type HTMLAttributes } from "react";
|
|
2
|
+
export type SkeletonProps = HTMLAttributes<HTMLSpanElement> & {
|
|
3
|
+
width?: CSSProperties["width"];
|
|
4
|
+
height?: CSSProperties["height"];
|
|
5
|
+
rounded?: boolean;
|
|
6
|
+
};
|
|
7
|
+
export declare function Skeleton({ width, height, rounded, className, style, ...props }: SkeletonProps): import("react").JSX.Element;
|
|
8
|
+
export type SkeletonTextProps = HTMLAttributes<HTMLDivElement> & {
|
|
9
|
+
lines?: number;
|
|
10
|
+
};
|
|
11
|
+
export declare function SkeletonText({ lines, className, ...props }: SkeletonTextProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
type SortableKey = string | number;
|
|
3
|
+
export type SortableListProps<T> = {
|
|
4
|
+
items: T[];
|
|
5
|
+
getKey(item: T): SortableKey;
|
|
6
|
+
getTextValue(item: T, index: number): string;
|
|
7
|
+
renderItem(item: T, index: number): ReactNode;
|
|
8
|
+
onReorder(items: T[]): void;
|
|
9
|
+
"aria-label": string;
|
|
10
|
+
disabled?: boolean;
|
|
11
|
+
className?: string;
|
|
12
|
+
dragLabel?(item: T, index: number): string;
|
|
13
|
+
};
|
|
14
|
+
/** Accessible controlled reordering for interactive cards, powered by React Aria drag and drop. */
|
|
15
|
+
export declare function SortableList<T>(props: SortableListProps<T>): import("react").JSX.Element;
|
|
16
|
+
export declare function moveSortableItems<T>(items: T[], movingKeys: Set<SortableKey>, targetKey: SortableKey, position: "before" | "after" | "on", getKey: (item: T) => SortableKey): T[];
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { type InputHTMLAttributes, type ReactNode, type Ref } from "react";
|
|
2
|
+
type DataAttributes = {
|
|
3
|
+
[key: `data-${string}`]: string | number | boolean | undefined;
|
|
4
|
+
};
|
|
5
|
+
export type AddressRegion = {
|
|
6
|
+
id: string;
|
|
7
|
+
label: string;
|
|
8
|
+
children?: readonly AddressRegion[];
|
|
9
|
+
disabled?: boolean;
|
|
10
|
+
};
|
|
11
|
+
export type StructuredAddressValue = {
|
|
12
|
+
mode: "structured" | "freeform";
|
|
13
|
+
regionIds: string[];
|
|
14
|
+
detail: string;
|
|
15
|
+
freeform: string;
|
|
16
|
+
};
|
|
17
|
+
export type AddressRegionPath = {
|
|
18
|
+
ids: string[];
|
|
19
|
+
labels: string[];
|
|
20
|
+
leaf: AddressRegion;
|
|
21
|
+
};
|
|
22
|
+
export type StructuredAddressInputProps = {
|
|
23
|
+
regions: readonly AddressRegion[];
|
|
24
|
+
value: StructuredAddressValue;
|
|
25
|
+
onValueChange(value: StructuredAddressValue): void;
|
|
26
|
+
label?: ReactNode;
|
|
27
|
+
required?: boolean;
|
|
28
|
+
disabled?: boolean;
|
|
29
|
+
annotation?: ReactNode;
|
|
30
|
+
dataVersion?: ReactNode;
|
|
31
|
+
className?: string;
|
|
32
|
+
structuredModeLabel?: string;
|
|
33
|
+
freeformModeLabel?: string;
|
|
34
|
+
/** Legacy opt-in. Defaults to false; use a top-level overseas region. */
|
|
35
|
+
showModeSelector?: boolean;
|
|
36
|
+
regionLabel?: string;
|
|
37
|
+
detailLabel?: string;
|
|
38
|
+
freeformLabel?: string;
|
|
39
|
+
searchPlaceholder?: string;
|
|
40
|
+
emptyText?: ReactNode;
|
|
41
|
+
maxLength?: number;
|
|
42
|
+
regionInputRef?: Ref<HTMLInputElement>;
|
|
43
|
+
detailInputRef?: Ref<HTMLInputElement>;
|
|
44
|
+
freeformInputRef?: Ref<HTMLInputElement>;
|
|
45
|
+
regionInputProps?: Omit<InputHTMLAttributes<HTMLInputElement>, "children" | "className" | "disabled" | "onChange" | "placeholder" | "role" | "value"> & DataAttributes;
|
|
46
|
+
detailInputProps?: Omit<InputHTMLAttributes<HTMLInputElement>, "children" | "className" | "disabled" | "onChange" | "value"> & DataAttributes;
|
|
47
|
+
freeformInputProps?: Omit<InputHTMLAttributes<HTMLInputElement>, "children" | "className" | "disabled" | "onChange" | "value"> & DataAttributes;
|
|
48
|
+
};
|
|
49
|
+
export declare function StructuredAddressInput({ regions, value, onValueChange, label, required, disabled, annotation, dataVersion, className, structuredModeLabel, freeformModeLabel, showModeSelector, regionLabel, detailLabel, freeformLabel, searchPlaceholder, emptyText, maxLength, regionInputRef, detailInputRef, freeformInputRef, regionInputProps, detailInputProps, freeformInputProps }: StructuredAddressInputProps): import("react").JSX.Element;
|
|
50
|
+
export declare function flattenAddressRegions(regions: readonly AddressRegion[]): AddressRegionPath[];
|
|
51
|
+
export declare function searchAddressRegions(regions: readonly AddressRegion[], query: string, limit?: number): AddressRegionPath[];
|
|
52
|
+
export declare function findAddressRegionPath(regions: readonly AddressRegion[], ids: readonly string[]): {
|
|
53
|
+
ids: string[];
|
|
54
|
+
labels: string[];
|
|
55
|
+
leaf: AddressRegion;
|
|
56
|
+
} | undefined;
|
|
57
|
+
export {};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
export type ToastTone = "info" | "success" | "warning" | "danger";
|
|
3
|
+
export type ToastOptions = {
|
|
4
|
+
id?: string;
|
|
5
|
+
tone?: ToastTone;
|
|
6
|
+
title: ReactNode;
|
|
7
|
+
description?: ReactNode;
|
|
8
|
+
duration?: number;
|
|
9
|
+
actionLabel?: ReactNode;
|
|
10
|
+
onAction?: () => void;
|
|
11
|
+
};
|
|
12
|
+
type ToastApi = {
|
|
13
|
+
toast(options: ToastOptions): string;
|
|
14
|
+
dismiss(id: string): void;
|
|
15
|
+
dismissAll(): void;
|
|
16
|
+
};
|
|
17
|
+
export declare function ToastProvider({ children, maxVisible }: {
|
|
18
|
+
children: ReactNode;
|
|
19
|
+
maxVisible?: number;
|
|
20
|
+
}): import("react").JSX.Element;
|
|
21
|
+
export declare function useToast(): ToastApi;
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type InputHTMLAttributes, type ReactNode } from "react";
|
|
2
|
+
export type ToggleSwitchProps = Omit<InputHTMLAttributes<HTMLInputElement>, "type" | "checked" | "defaultChecked" | "onChange" | "children" | "className"> & {
|
|
3
|
+
checked: boolean;
|
|
4
|
+
children: ReactNode;
|
|
5
|
+
className?: string;
|
|
6
|
+
disabledDescriptionId?: string;
|
|
7
|
+
onChange(checked: boolean): void;
|
|
8
|
+
};
|
|
9
|
+
export declare const ToggleSwitch: import("react").ForwardRefExoticComponent<Omit<InputHTMLAttributes<HTMLInputElement>, "type" | "defaultChecked" | "className" | "children" | "onChange" | "checked"> & {
|
|
10
|
+
checked: boolean;
|
|
11
|
+
children: ReactNode;
|
|
12
|
+
className?: string;
|
|
13
|
+
disabledDescriptionId?: string;
|
|
14
|
+
onChange(checked: boolean): void;
|
|
15
|
+
} & import("react").RefAttributes<HTMLInputElement>>;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { type InputHTMLAttributes, type ReactNode, type Ref } from "react";
|
|
2
|
+
type DataAttributes = {
|
|
3
|
+
[key: `data-${string}`]: string | number | boolean | undefined;
|
|
4
|
+
};
|
|
5
|
+
export type TreeSelectItem = {
|
|
6
|
+
id: string;
|
|
7
|
+
label: string;
|
|
8
|
+
parentId?: string | null;
|
|
9
|
+
order?: number;
|
|
10
|
+
disabled?: boolean;
|
|
11
|
+
};
|
|
12
|
+
export type TreeSelectNode = TreeSelectItem & {
|
|
13
|
+
children: TreeSelectNode[];
|
|
14
|
+
};
|
|
15
|
+
export type TreeSelectProps = {
|
|
16
|
+
items: readonly TreeSelectItem[];
|
|
17
|
+
value?: string | null;
|
|
18
|
+
defaultValue?: string | null;
|
|
19
|
+
onValueChange?: (value: string | null) => void;
|
|
20
|
+
selectionMode?: "single" | "multiple";
|
|
21
|
+
values?: readonly string[];
|
|
22
|
+
defaultValues?: readonly string[];
|
|
23
|
+
onValuesChange?: (values: string[]) => void;
|
|
24
|
+
open?: boolean;
|
|
25
|
+
defaultOpen?: boolean;
|
|
26
|
+
onOpenChange?: (open: boolean) => void;
|
|
27
|
+
query?: string;
|
|
28
|
+
defaultQuery?: string;
|
|
29
|
+
onQueryChange?: (query: string) => void;
|
|
30
|
+
expandedIds?: ReadonlySet<string>;
|
|
31
|
+
defaultExpandedIds?: Iterable<string>;
|
|
32
|
+
onExpandedIdsChange?: (ids: Set<string>) => void;
|
|
33
|
+
label?: ReactNode;
|
|
34
|
+
placeholder?: string;
|
|
35
|
+
searchPlaceholder?: string;
|
|
36
|
+
clearLabel?: string;
|
|
37
|
+
allLabel?: ReactNode;
|
|
38
|
+
emptyText?: ReactNode;
|
|
39
|
+
loading?: boolean;
|
|
40
|
+
loadingText?: ReactNode;
|
|
41
|
+
loadError?: ReactNode;
|
|
42
|
+
disabled?: boolean;
|
|
43
|
+
required?: boolean;
|
|
44
|
+
helpText?: ReactNode;
|
|
45
|
+
error?: ReactNode;
|
|
46
|
+
id?: string;
|
|
47
|
+
name?: string;
|
|
48
|
+
/** ID is submitted by default. label is a migration option for legacy forms. */
|
|
49
|
+
formValueMode?: "id" | "label";
|
|
50
|
+
className?: string;
|
|
51
|
+
popoverClassName?: string;
|
|
52
|
+
inputRef?: Ref<HTMLInputElement>;
|
|
53
|
+
inputProps?: Omit<InputHTMLAttributes<HTMLInputElement>, "children" | "className" | "disabled" | "id" | "name" | "onChange" | "placeholder" | "required" | "role" | "value"> & DataAttributes;
|
|
54
|
+
};
|
|
55
|
+
export declare function TreeSelect({ items, value, defaultValue, onValueChange, open, defaultOpen, onOpenChange, selectionMode, values, defaultValues, onValuesChange, query, defaultQuery, onQueryChange, expandedIds, defaultExpandedIds, onExpandedIdsChange, label, placeholder, searchPlaceholder, clearLabel, allLabel, emptyText, loading, loadingText, loadError, disabled, required, helpText, error, id, name, formValueMode, className, popoverClassName, inputRef, inputProps }: TreeSelectProps): import("react").JSX.Element;
|
|
56
|
+
export declare function buildTreeSelectTree(items: readonly TreeSelectItem[]): TreeSelectNode[];
|
|
57
|
+
export declare function filterTreeSelectTree(nodes: readonly TreeSelectNode[], query: string): TreeSelectNode[];
|
|
58
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function joinClassNames(...classNames: Array<string | false | null | undefined>): string;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
import type { PDFDocumentProxy } from "pdfjs-dist";
|
|
3
|
+
export declare function ContinuousPdfViewer({ document, pages, currentPage, onCurrentPageChange, zoom, rotation, focusTarget, renderPage }: {
|
|
4
|
+
document: PDFDocumentProxy;
|
|
5
|
+
pages: number[];
|
|
6
|
+
currentPage: number;
|
|
7
|
+
onCurrentPageChange: (page: number) => void;
|
|
8
|
+
zoom?: number;
|
|
9
|
+
rotation?: number;
|
|
10
|
+
focusTarget?: {
|
|
11
|
+
page: number;
|
|
12
|
+
y: number;
|
|
13
|
+
token: string;
|
|
14
|
+
} | null;
|
|
15
|
+
renderPage?: (page: number) => ReactNode;
|
|
16
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type CSSProperties, type ReactNode } from "react";
|
|
2
|
+
import type { PDFDocumentProxy } from "pdfjs-dist";
|
|
3
|
+
import { type PreviewImage } from "./ImagePage";
|
|
4
|
+
export type DocumentViewerSource = {
|
|
5
|
+
id: string;
|
|
6
|
+
} & ({
|
|
7
|
+
kind: "pdf";
|
|
8
|
+
document: PDFDocumentProxy;
|
|
9
|
+
} | {
|
|
10
|
+
kind: "image";
|
|
11
|
+
images: readonly PreviewImage[];
|
|
12
|
+
});
|
|
13
|
+
export type DocumentViewerProps = {
|
|
14
|
+
source: DocumentViewerSource;
|
|
15
|
+
title?: ReactNode;
|
|
16
|
+
className?: string;
|
|
17
|
+
style?: CSSProperties;
|
|
18
|
+
ariaLabel?: string;
|
|
19
|
+
toolbar?: ReactNode;
|
|
20
|
+
footer?: ReactNode;
|
|
21
|
+
currentPage?: number;
|
|
22
|
+
onCurrentPageChange?: (page: number) => void;
|
|
23
|
+
pageMode?: "continuous" | "single";
|
|
24
|
+
renderPage?: (context: {
|
|
25
|
+
page: number;
|
|
26
|
+
zoom: number;
|
|
27
|
+
rotation: number;
|
|
28
|
+
}) => ReactNode;
|
|
29
|
+
};
|
|
30
|
+
/** The caller owns PDF loading, credentials/passwords and document destruction. */
|
|
31
|
+
export declare function DocumentViewer(props: DocumentViewerProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from "react";
|
|
2
|
+
import type { PDFDocumentProxy } from "pdfjs-dist";
|
|
3
|
+
export type DocumentViewerViewportProps = {
|
|
4
|
+
document: PDFDocumentProxy;
|
|
5
|
+
pageMode: "continuous" | "single";
|
|
6
|
+
pages: number[];
|
|
7
|
+
currentPage: number;
|
|
8
|
+
onCurrentPageChange: (page: number) => void;
|
|
9
|
+
zoom?: number;
|
|
10
|
+
rotation?: number;
|
|
11
|
+
rail?: ReactNode;
|
|
12
|
+
overlay?: ReactNode;
|
|
13
|
+
className?: string;
|
|
14
|
+
workspaceClassName?: string;
|
|
15
|
+
workspaceProps?: HTMLAttributes<HTMLDivElement>;
|
|
16
|
+
focusTarget?: {
|
|
17
|
+
page: number;
|
|
18
|
+
y: number;
|
|
19
|
+
token: string;
|
|
20
|
+
} | null;
|
|
21
|
+
renderPage?: (page: number) => ReactNode;
|
|
22
|
+
};
|
|
23
|
+
export declare function DocumentViewerViewport({ document, pageMode, pages, currentPage, onCurrentPageChange, zoom, rotation, rail, overlay, className, workspaceClassName, workspaceProps, focusTarget, renderPage }: DocumentViewerViewportProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { PDFDocumentProxy } from "pdfjs-dist";
|
|
2
|
+
export declare function PdfThumbnailRail({ document, currentPage, onCurrentPageChange }: {
|
|
3
|
+
document: PDFDocumentProxy;
|
|
4
|
+
currentPage: number;
|
|
5
|
+
onCurrentPageChange: (page: number) => void;
|
|
6
|
+
}): import("react").JSX.Element;
|
|
7
|
+
export declare function PageThumbnail({ document, page, active, onClick }: {
|
|
8
|
+
document: PDFDocumentProxy;
|
|
9
|
+
page: number;
|
|
10
|
+
active: boolean;
|
|
11
|
+
onClick: () => void;
|
|
12
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
type Props = {
|
|
2
|
+
zoom: number;
|
|
3
|
+
disabled: boolean;
|
|
4
|
+
fullscreen: boolean;
|
|
5
|
+
canZoomIn: boolean;
|
|
6
|
+
canZoomOut: boolean;
|
|
7
|
+
onZoomIn: () => void;
|
|
8
|
+
onZoomOut: () => void;
|
|
9
|
+
onRotate: () => void;
|
|
10
|
+
onToggleFullscreen: () => void;
|
|
11
|
+
};
|
|
12
|
+
export declare function PdfToolbar(props: Props): import("react").JSX.Element;
|
|
13
|
+
export {};
|