@birdycom/omniaui-react 0.0.0-stage → 0.11.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/LICENSE +21 -0
- package/README.md +20 -2
- package/dist/index.d.ts +2640 -0
- package/dist/index.js +4813 -0
- package/manifest.json +838 -0
- package/package.json +69 -4
- package/src/blocks/BlockAboutTimeline.tsx +46 -0
- package/src/blocks/BlockAppHeader.tsx +52 -0
- package/src/blocks/BlockAppShell.tsx +56 -0
- package/src/blocks/BlockAuth.tsx +53 -0
- package/src/blocks/BlockAuthSplit.tsx +84 -0
- package/src/blocks/BlockContactGrid.tsx +71 -0
- package/src/blocks/BlockCta.tsx +23 -0
- package/src/blocks/BlockDataTable.tsx +57 -0
- package/src/blocks/BlockFaq.tsx +55 -0
- package/src/blocks/BlockFeatures.tsx +38 -0
- package/src/blocks/BlockFooter.tsx +50 -0
- package/src/blocks/BlockFormPage.tsx +26 -0
- package/src/blocks/BlockHero.tsx +27 -0
- package/src/blocks/BlockHeroCode.tsx +63 -0
- package/src/blocks/BlockHeroOrbit.tsx +73 -0
- package/src/blocks/BlockHeroSplit.tsx +28 -0
- package/src/blocks/BlockModuleHeader.tsx +34 -0
- package/src/blocks/BlockPageHero.tsx +25 -0
- package/src/blocks/BlockPortfolioGrid.tsx +50 -0
- package/src/blocks/BlockPricing.tsx +62 -0
- package/src/blocks/BlockProcess.tsx +50 -0
- package/src/blocks/BlockProductGrid.tsx +54 -0
- package/src/blocks/BlockProfileHeader.tsx +57 -0
- package/src/blocks/BlockShowcase.tsx +58 -0
- package/src/blocks/BlockSiteFooter.tsx +60 -0
- package/src/blocks/BlockSiteHeader.tsx +42 -0
- package/src/blocks/BlockSpotlight.tsx +58 -0
- package/src/blocks/BlockStats.tsx +26 -0
- package/src/blocks/BlockStatsCounter.tsx +31 -0
- package/src/blocks/BlockTeamList.tsx +48 -0
- package/src/blocks/BlockTwoFactor.tsx +57 -0
- package/src/blocks/BlockWizardDialog.tsx +101 -0
- package/src/components/Accordion.tsx +31 -0
- package/src/components/AccordionAccent.tsx +39 -0
- package/src/components/AffixInput.tsx +47 -0
- package/src/components/Alert.tsx +24 -0
- package/src/components/AlertDialog.tsx +60 -0
- package/src/components/AlphaTabs.tsx +63 -0
- package/src/components/Attachment.tsx +140 -0
- package/src/components/Avatar.tsx +32 -0
- package/src/components/BackLink.tsx +11 -0
- package/src/components/Badge.tsx +14 -0
- package/src/components/BarcodeInput.tsx +64 -0
- package/src/components/Breadcrumb.tsx +32 -0
- package/src/components/BrowserFrame.tsx +48 -0
- package/src/components/BusyOverlay.tsx +52 -0
- package/src/components/Button.tsx +49 -0
- package/src/components/Card.tsx +27 -0
- package/src/components/ChartLine.tsx +119 -0
- package/src/components/ChatComposer.tsx +73 -0
- package/src/components/Checkbox.tsx +14 -0
- package/src/components/Checklist.tsx +45 -0
- package/src/components/ChipFilter.tsx +60 -0
- package/src/components/Collapsible.tsx +43 -0
- package/src/components/ColorField.tsx +48 -0
- package/src/components/ColorSelect.tsx +49 -0
- package/src/components/ColumnMenu.tsx +66 -0
- package/src/components/Command.tsx +113 -0
- package/src/components/ConfirmDialog.tsx +95 -0
- package/src/components/CookieConsent.tsx +137 -0
- package/src/components/CopyField.tsx +44 -0
- package/src/components/Counter.tsx +21 -0
- package/src/components/DataTable.tsx +201 -0
- package/src/components/DecimalInput.tsx +87 -0
- package/src/components/DefinitionList.tsx +38 -0
- package/src/components/DocViewer.tsx +110 -0
- package/src/components/Dropdown.tsx +52 -0
- package/src/components/Dropzone.tsx +46 -0
- package/src/components/EmojiPicker.tsx +72 -0
- package/src/components/EmptyState.tsx +27 -0
- package/src/components/EntityCard.tsx +56 -0
- package/src/components/FactList.tsx +43 -0
- package/src/components/FilterCounts.tsx +50 -0
- package/src/components/FlipCard.tsx +55 -0
- package/src/components/FormField.tsx +54 -0
- package/src/components/Greeting.tsx +63 -0
- package/src/components/Heading.tsx +27 -0
- package/src/components/Icon.tsx +25 -0
- package/src/components/ImageZoom.tsx +51 -0
- package/src/components/Input.tsx +21 -0
- package/src/components/InputGroup.tsx +24 -0
- package/src/components/LanguageSelect.tsx +64 -0
- package/src/components/LauncherCard.tsx +50 -0
- package/src/components/Lightbox.tsx +83 -0
- package/src/components/LinkArrow.tsx +27 -0
- package/src/components/ListToolbar.tsx +67 -0
- package/src/components/Marquee.tsx +38 -0
- package/src/components/MediaCard.tsx +47 -0
- package/src/components/MediaRow.tsx +53 -0
- package/src/components/MediaThumb.tsx +49 -0
- package/src/components/Message.tsx +171 -0
- package/src/components/MessageThread.tsx +177 -0
- package/src/components/Modal.tsx +81 -0
- package/src/components/Navmenu.tsx +62 -0
- package/src/components/NextTeaser.tsx +29 -0
- package/src/components/NumberInput.tsx +64 -0
- package/src/components/OtpInput.tsx +48 -0
- package/src/components/PageHeader.tsx +43 -0
- package/src/components/Pagination.tsx +42 -0
- package/src/components/PasswordInput.tsx +36 -0
- package/src/components/PasswordRequirements.tsx +46 -0
- package/src/components/PhoneInput.tsx +93 -0
- package/src/components/Popover.tsx +34 -0
- package/src/components/PriceCard.tsx +83 -0
- package/src/components/ProductMark.tsx +35 -0
- package/src/components/Progress.tsx +32 -0
- package/src/components/ProjectCard.tsx +46 -0
- package/src/components/Prose.tsx +79 -0
- package/src/components/RecoveryCodes.tsx +65 -0
- package/src/components/Segmented.tsx +47 -0
- package/src/components/Select.tsx +27 -0
- package/src/components/SeverityCard.tsx +53 -0
- package/src/components/Sheet.tsx +62 -0
- package/src/components/Sidebar.tsx +145 -0
- package/src/components/Skeleton.tsx +12 -0
- package/src/components/SortableRow.tsx +46 -0
- package/src/components/StackCard.tsx +40 -0
- package/src/components/StackList.tsx +42 -0
- package/src/components/StatCard.tsx +49 -0
- package/src/components/Stepper.tsx +54 -0
- package/src/components/Switch.tsx +18 -0
- package/src/components/Table.tsx +75 -0
- package/src/components/TableActions.tsx +54 -0
- package/src/components/TableCompact.tsx +61 -0
- package/src/components/Tabs.tsx +45 -0
- package/src/components/TagInput.tsx +73 -0
- package/src/components/TerminalLog.tsx +63 -0
- package/src/components/Textarea.tsx +19 -0
- package/src/components/ThemeSwitch.tsx +45 -0
- package/src/components/TimeInput.tsx +76 -0
- package/src/components/Timeline.tsx +45 -0
- package/src/components/Toast.tsx +138 -0
- package/src/components/ToggleField.tsx +39 -0
- package/src/components/Tooltip.tsx +14 -0
- package/src/components/TopProgress.tsx +54 -0
- package/src/components/Tree.tsx +97 -0
- package/src/components/UpgradeBanner.tsx +62 -0
- package/src/components/User.tsx +31 -0
- package/src/components/VersionBanner.tsx +41 -0
- package/src/hooks.tsx +141 -0
- package/src/index.ts +142 -0
- package/src/utils.ts +25 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,2640 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { RefObject, SyntheticEvent, HTMLAttributes, DetailsHTMLAttributes, ReactNode, InputHTMLAttributes, DialogHTMLAttributes, AnchorHTMLAttributes, ButtonHTMLAttributes, FormHTMLAttributes, LiHTMLAttributes, FieldsetHTMLAttributes, SVGProps, SelectHTMLAttributes, TableHTMLAttributes, TdHTMLAttributes, TextareaHTMLAttributes, ProgressHTMLAttributes, CSSProperties } from 'react';
|
|
3
|
+
|
|
4
|
+
/** Merge several refs into one callback ref. */
|
|
5
|
+
declare function useMergedRef<T>(...refs: Array<React.Ref<T> | undefined>): (node: T | null) => void;
|
|
6
|
+
/** Controlled + uncontrolled value in one hook. */
|
|
7
|
+
declare function useControllable<T>(value: T | undefined, defaultValue: T, onChange?: (v: T) => void): readonly [T, (next: T) => void];
|
|
8
|
+
interface DialogState {
|
|
9
|
+
open?: boolean;
|
|
10
|
+
defaultOpen?: boolean;
|
|
11
|
+
onOpenChange?: (open: boolean) => void;
|
|
12
|
+
}
|
|
13
|
+
declare const DialogContext: react.Context<{
|
|
14
|
+
close: () => void;
|
|
15
|
+
} | null>;
|
|
16
|
+
declare const useDialogContext: () => {
|
|
17
|
+
close: () => void;
|
|
18
|
+
} | null;
|
|
19
|
+
/**
|
|
20
|
+
* Keeps a native <dialog> in sync with an `open` prop: showModal() / close() in an effect,
|
|
21
|
+
* and reports native closes (Escape, backdrop, form method=dialog) through onOpenChange.
|
|
22
|
+
*/
|
|
23
|
+
declare function useDialog(ref: RefObject<HTMLDialogElement | null>, { open, defaultOpen, onOpenChange }: DialogState): {
|
|
24
|
+
open: boolean;
|
|
25
|
+
setOpen: (next: boolean) => void;
|
|
26
|
+
close: () => void;
|
|
27
|
+
onClose: (e: SyntheticEvent<HTMLDialogElement>) => void;
|
|
28
|
+
};
|
|
29
|
+
/** Focusable items that belong directly to a `[role=menu]` (sub-menu triggers included, sub-menu items excluded). */
|
|
30
|
+
declare function menuItems(menu: Element): HTMLElement[];
|
|
31
|
+
/**
|
|
32
|
+
* Roving focus inside an `.oc-dropdown-menu[role=menu]`: ArrowDown / ArrowUp (wrapping), Home, End,
|
|
33
|
+
* ArrowRight on a sub-menu trigger enters the sub-menu, ArrowLeft inside a sub-menu returns to its trigger.
|
|
34
|
+
* Returns `true` (and calls preventDefault) when the key was handled.
|
|
35
|
+
*/
|
|
36
|
+
declare function handleMenuKeyDown(e: React.KeyboardEvent<HTMLElement>): boolean;
|
|
37
|
+
/** Closes the popover a menu item lives in. */
|
|
38
|
+
declare function closeMenuOf(el: Element | null): void;
|
|
39
|
+
/** Focuses the first menu item whenever the popover opens (the native `toggle` event). */
|
|
40
|
+
declare function useMenuAutofocus(ref: RefObject<HTMLElement | null>): void;
|
|
41
|
+
|
|
42
|
+
type ClassValue = string | false | null | undefined;
|
|
43
|
+
/** Join class names, skipping falsy values. */
|
|
44
|
+
declare function cx(...parts: ClassValue[]): string;
|
|
45
|
+
/** `oc-btn` + `--secondary` -> `oc-btn oc-btn--secondary` (skips empty modifiers). */
|
|
46
|
+
declare function mod(base: string, ...modifiers: ClassValue[]): string;
|
|
47
|
+
/** Attributes React's types do not know yet (popover, invoker commands, closedby). */
|
|
48
|
+
declare function attrs(record: Record<string, string | undefined>): object;
|
|
49
|
+
/** Call a handler, then call another one. */
|
|
50
|
+
declare function callAll<E>(...fns: Array<((e: E) => void) | undefined>): (e: E) => void;
|
|
51
|
+
|
|
52
|
+
/** `<div class="oc-accordion">` */
|
|
53
|
+
declare const Accordion: react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & react.RefAttributes<HTMLDivElement>>;
|
|
54
|
+
interface AccordionItemProps extends Omit<DetailsHTMLAttributes<HTMLDetailsElement>, "title"> {
|
|
55
|
+
/** Trigger text (`summary.oc-accordion-trigger`). */
|
|
56
|
+
title: ReactNode;
|
|
57
|
+
/** Items with the same `name` open one at a time (native exclusive details). */
|
|
58
|
+
name?: string;
|
|
59
|
+
}
|
|
60
|
+
/** `<details class="oc-accordion-item" name>` */
|
|
61
|
+
declare const AccordionItem: react.ForwardRefExoticComponent<AccordionItemProps & react.RefAttributes<HTMLDetailsElement>>;
|
|
62
|
+
|
|
63
|
+
type AccordionAccentPreset = "blue" | "cyan" | "green" | "orange" | "red" | "violet" | "yellow";
|
|
64
|
+
type AccordionAccentTone = "success" | "warning" | "danger";
|
|
65
|
+
interface AccordionAccentProps extends HTMLAttributes<HTMLDivElement> {
|
|
66
|
+
/** Color preset for all items (an `.oc-accent--*` class). */
|
|
67
|
+
accent?: AccordionAccentPreset;
|
|
68
|
+
/** Semantic color for all items. */
|
|
69
|
+
tone?: AccordionAccentTone;
|
|
70
|
+
/** Only the accent edge, no card frame. */
|
|
71
|
+
flush?: boolean;
|
|
72
|
+
}
|
|
73
|
+
/** `.oc-accordion--accent`: accordion with separate cards and a colored start edge. */
|
|
74
|
+
declare const AccordionAccent: react.ForwardRefExoticComponent<AccordionAccentProps & react.RefAttributes<HTMLDivElement>>;
|
|
75
|
+
/** `.oc-accordion-accent-meta`: short accent-colored label inside an item title. */
|
|
76
|
+
declare function AccordionAccentMeta({ className, ...rest }: HTMLAttributes<HTMLSpanElement>): react.JSX.Element;
|
|
77
|
+
|
|
78
|
+
type AffixInputVariant = "currency" | "percent" | "email";
|
|
79
|
+
interface AffixInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "prefix"> {
|
|
80
|
+
/** Preset: symbol, input type, inputmode and alignment. */
|
|
81
|
+
variant?: AffixInputVariant;
|
|
82
|
+
/** Symbol before the value (overrides the preset). */
|
|
83
|
+
prefix?: ReactNode;
|
|
84
|
+
/** Symbol after the value (overrides the preset). */
|
|
85
|
+
suffix?: ReactNode;
|
|
86
|
+
/** Right-aligned tabular digits. Off by default: the value sits next to the symbol column. */
|
|
87
|
+
alignEnd?: boolean;
|
|
88
|
+
error?: boolean;
|
|
89
|
+
/** Class for the wrapper (`className` goes to the input). */
|
|
90
|
+
groupClassName?: string;
|
|
91
|
+
}
|
|
92
|
+
/** `.oc-input-group.oc-input-group--affix`: symbol (€, %, @) inside the field. */
|
|
93
|
+
declare const AffixInput: react.ForwardRefExoticComponent<AffixInputProps & react.RefAttributes<HTMLInputElement>>;
|
|
94
|
+
|
|
95
|
+
type AlertVariant = "info" | "success" | "warning" | "danger";
|
|
96
|
+
interface AlertProps extends Omit<HTMLAttributes<HTMLDivElement>, "title"> {
|
|
97
|
+
variant?: AlertVariant;
|
|
98
|
+
/** Heading (`oc-alert-title`). */
|
|
99
|
+
title?: ReactNode;
|
|
100
|
+
}
|
|
101
|
+
/** `<div class="oc-alert oc-alert--{variant}" role="status">`; children render inside `oc-alert-description`. */
|
|
102
|
+
declare const Alert: react.ForwardRefExoticComponent<AlertProps & react.RefAttributes<HTMLDivElement>>;
|
|
103
|
+
|
|
104
|
+
type AlertDialogType = "success" | "error" | "warning" | "info" | "question";
|
|
105
|
+
interface AlertDialogProps extends Omit<DialogHTMLAttributes<HTMLDialogElement>, "title" | "open" | "onClose">, DialogState {
|
|
106
|
+
/** Type modifier on the content box (sets the icon color). Default `warning`. */
|
|
107
|
+
type?: AlertDialogType;
|
|
108
|
+
/** Custom icon glyph or SVG (defaults to a glyph for the type). */
|
|
109
|
+
icon?: ReactNode;
|
|
110
|
+
title: ReactNode;
|
|
111
|
+
/** Message (`oc-modal-body`): pass as `message` or as children. */
|
|
112
|
+
message?: ReactNode;
|
|
113
|
+
/** Secondary + primary buttons (`oc-modal-footer`), e.g. `<ModalClose>`s. */
|
|
114
|
+
footer?: ReactNode;
|
|
115
|
+
}
|
|
116
|
+
/** Confirmation `<dialog class="oc-modal">` with a status icon. */
|
|
117
|
+
declare const AlertDialog: react.ForwardRefExoticComponent<AlertDialogProps & react.RefAttributes<HTMLDialogElement>>;
|
|
118
|
+
|
|
119
|
+
interface AlphaTabsProps extends Omit<HTMLAttributes<HTMLElement>, "onChange"> {
|
|
120
|
+
/** Letters to show (default A-Z). */
|
|
121
|
+
letters?: string[];
|
|
122
|
+
/** Letters that have entries; the others are disabled. Default: all letters. */
|
|
123
|
+
available?: string[];
|
|
124
|
+
/** Current letter, or "all". */
|
|
125
|
+
value?: string;
|
|
126
|
+
defaultValue?: string;
|
|
127
|
+
onChange?: (letter: string) => void;
|
|
128
|
+
/** Build a link per letter, e.g. `(l) => "?letter=" + l`. */
|
|
129
|
+
href?: (letter: string) => string;
|
|
130
|
+
allLabel?: string;
|
|
131
|
+
wrap?: boolean;
|
|
132
|
+
size?: "sm";
|
|
133
|
+
plain?: boolean;
|
|
134
|
+
}
|
|
135
|
+
/** `nav.oc-alpha-tabs`: All + A-Z letter filter. */
|
|
136
|
+
declare const AlphaTabs: react.ForwardRefExoticComponent<AlphaTabsProps & react.RefAttributes<HTMLElement>>;
|
|
137
|
+
|
|
138
|
+
type AttachmentType = "pdf" | "doc" | "sheet" | "zip" | "image";
|
|
139
|
+
interface AttachmentFile {
|
|
140
|
+
name: string;
|
|
141
|
+
/** "1.2 MB", or the error text when `state` is "error". */
|
|
142
|
+
size?: ReactNode;
|
|
143
|
+
/** Icon tint. Derived from the extension when empty. */
|
|
144
|
+
type?: AttachmentType;
|
|
145
|
+
/** Text in the icon tile (default: the extension, e.g. "PDF", "XLS"). */
|
|
146
|
+
ext?: string;
|
|
147
|
+
/** Download link (the chip becomes an `<a download>` unless it is removable). */
|
|
148
|
+
href?: string;
|
|
149
|
+
/** Small preview image in the icon tile. */
|
|
150
|
+
image?: string;
|
|
151
|
+
state?: "uploading" | "error";
|
|
152
|
+
/** Upload progress in % (shown while uploading). */
|
|
153
|
+
progress?: number;
|
|
154
|
+
/** Show the remove button (composer). */
|
|
155
|
+
removable?: boolean;
|
|
156
|
+
removeLabel?: string;
|
|
157
|
+
}
|
|
158
|
+
/** Icon text and tint of a file name (`Plan.xlsx` -> XLS, sheet). */
|
|
159
|
+
declare const attachmentMeta: (f: AttachmentFile) => {
|
|
160
|
+
ext: string;
|
|
161
|
+
type: AttachmentType;
|
|
162
|
+
};
|
|
163
|
+
interface AttachmentProps extends Omit<HTMLAttributes<HTMLElement>, "type">, AttachmentFile {
|
|
164
|
+
onRemove?: () => void;
|
|
165
|
+
}
|
|
166
|
+
/** `.oc-attachment` file chip: icon tile, name, size and an optional remove button. */
|
|
167
|
+
declare const Attachment: react.ForwardRefExoticComponent<AttachmentProps & react.RefAttributes<HTMLElement>>;
|
|
168
|
+
interface AttachmentImageProps extends HTMLAttributes<HTMLAnchorElement> {
|
|
169
|
+
href?: string;
|
|
170
|
+
/** Image URL. Leave empty to show placeholder art. */
|
|
171
|
+
src?: string;
|
|
172
|
+
alt: string;
|
|
173
|
+
art?: number;
|
|
174
|
+
/** e.g. "worktop-sample.jpg · 2.1 MB". */
|
|
175
|
+
caption?: ReactNode;
|
|
176
|
+
}
|
|
177
|
+
/** `a.oc-attachment-image`: 4:3 image preview inside a message. */
|
|
178
|
+
declare function AttachmentImage({ href, src, alt, art: n, caption, className, ...rest }: AttachmentImageProps): react.JSX.Element;
|
|
179
|
+
interface AttachmentThumbProps extends HTMLAttributes<HTMLElement> {
|
|
180
|
+
src?: string;
|
|
181
|
+
alt: string;
|
|
182
|
+
art?: number;
|
|
183
|
+
/** Remove button label, e.g. "Remove screenshot.png". No label = no button. */
|
|
184
|
+
removeLabel?: string;
|
|
185
|
+
onRemove?: () => void;
|
|
186
|
+
as?: "div" | "span";
|
|
187
|
+
}
|
|
188
|
+
/** `.oc-attachment-thumb`: square thumbnail of a pasted screenshot. */
|
|
189
|
+
declare function AttachmentThumb({ src, alt, art: n, removeLabel, onRemove, as: Tag, className, ...rest }: AttachmentThumbProps): react.JSX.Element;
|
|
190
|
+
interface AttachmentListProps extends HTMLAttributes<HTMLElement> {
|
|
191
|
+
/** File chips; `children` replace them. */
|
|
192
|
+
items?: AttachmentFile[];
|
|
193
|
+
/** One per line, full width. */
|
|
194
|
+
stack?: boolean;
|
|
195
|
+
/** `ul` (default, items in `li`) or `div`. */
|
|
196
|
+
as?: "ul" | "div";
|
|
197
|
+
onRemove?: (file: AttachmentFile, index: number) => void;
|
|
198
|
+
}
|
|
199
|
+
/** `.oc-attachment-list`: wrapping row of chips. */
|
|
200
|
+
declare function AttachmentList({ items, stack, as: Tag, onRemove, className, children, "aria-label": label, ...rest }: AttachmentListProps): react.JSX.Element;
|
|
201
|
+
|
|
202
|
+
type AvatarSize = "sm" | "md" | "lg" | "xl";
|
|
203
|
+
interface AvatarProps extends HTMLAttributes<HTMLSpanElement> {
|
|
204
|
+
size?: AvatarSize;
|
|
205
|
+
/** Image URL; when set the avatar renders an <img>. Otherwise `children` (initials) are shown. */
|
|
206
|
+
src?: string;
|
|
207
|
+
alt?: string;
|
|
208
|
+
}
|
|
209
|
+
/** `<span class="oc-avatar oc-avatar--{size}">SC</span>` */
|
|
210
|
+
declare const Avatar: react.ForwardRefExoticComponent<AvatarProps & react.RefAttributes<HTMLSpanElement>>;
|
|
211
|
+
/** `<div class="oc-avatar-group">` */
|
|
212
|
+
declare const AvatarGroup: react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & react.RefAttributes<HTMLDivElement>>;
|
|
213
|
+
|
|
214
|
+
/** `<a class="oc-back-link">Back to Products</a>` */
|
|
215
|
+
declare const BackLink: react.ForwardRefExoticComponent<AnchorHTMLAttributes<HTMLAnchorElement> & react.RefAttributes<HTMLAnchorElement>>;
|
|
216
|
+
|
|
217
|
+
type BadgeVariant = "default" | "secondary" | "outline" | "destructive" | "success" | "warning" | "info";
|
|
218
|
+
interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {
|
|
219
|
+
variant?: BadgeVariant;
|
|
220
|
+
}
|
|
221
|
+
/** `<span class="oc-badge oc-badge--{variant}">` */
|
|
222
|
+
declare const Badge: react.ForwardRefExoticComponent<BadgeProps & react.RefAttributes<HTMLSpanElement>>;
|
|
223
|
+
|
|
224
|
+
interface BarcodeInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "value" | "defaultValue" | "onChange" | "children"> {
|
|
225
|
+
value?: string;
|
|
226
|
+
defaultValue?: string;
|
|
227
|
+
onChange?: (value: string) => void;
|
|
228
|
+
/** Visible label above the field. */
|
|
229
|
+
label?: ReactNode;
|
|
230
|
+
/** Text in the preview while the field is empty. */
|
|
231
|
+
emptyText?: string;
|
|
232
|
+
error?: boolean;
|
|
233
|
+
/** Your own barcode graphic; replaces the placeholder bars. */
|
|
234
|
+
children?: ReactNode;
|
|
235
|
+
/** Class for the wrapper (`className` goes to the input). */
|
|
236
|
+
wrapperClassName?: string;
|
|
237
|
+
}
|
|
238
|
+
/** `.oc-barcode-input`: code field + preview. Keeps digits only (hand scanners type like a keyboard). */
|
|
239
|
+
declare const BarcodeInput: react.ForwardRefExoticComponent<BarcodeInputProps & react.RefAttributes<HTMLInputElement>>;
|
|
240
|
+
|
|
241
|
+
interface BreadcrumbItemData {
|
|
242
|
+
label: ReactNode;
|
|
243
|
+
/** Omit (or put last) to mark the current page. */
|
|
244
|
+
href?: string;
|
|
245
|
+
}
|
|
246
|
+
interface BreadcrumbProps extends HTMLAttributes<HTMLElement> {
|
|
247
|
+
items?: BreadcrumbItemData[];
|
|
248
|
+
}
|
|
249
|
+
/** `<nav class="oc-breadcrumb">` with links and a final `aria-current="page"` item. */
|
|
250
|
+
declare const Breadcrumb: react.ForwardRefExoticComponent<BreadcrumbProps & react.RefAttributes<HTMLElement>>;
|
|
251
|
+
|
|
252
|
+
interface BrowserFrameProps extends HTMLAttributes<HTMLElement> {
|
|
253
|
+
/** Text in the address pill. Leave out (or use `minimal`) for dots only. */
|
|
254
|
+
url?: string;
|
|
255
|
+
/** Screenshot URL. `children` replace it (live content). */
|
|
256
|
+
src?: string;
|
|
257
|
+
alt?: string;
|
|
258
|
+
caption?: ReactNode;
|
|
259
|
+
/** Small glyphs on the right of the bar. */
|
|
260
|
+
actions?: ReactNode;
|
|
261
|
+
minimal?: boolean;
|
|
262
|
+
dark?: boolean;
|
|
263
|
+
tilt?: boolean;
|
|
264
|
+
/** View height follows the content instead of the ratio. */
|
|
265
|
+
auto?: boolean;
|
|
266
|
+
/** View ratio, e.g. "16 / 9". Default 16 / 10. */
|
|
267
|
+
ratio?: string;
|
|
268
|
+
}
|
|
269
|
+
/** `figure.oc-browser-frame`: fake browser chrome around a screenshot or any content. */
|
|
270
|
+
declare const BrowserFrame: react.ForwardRefExoticComponent<BrowserFrameProps & react.RefAttributes<HTMLElement>>;
|
|
271
|
+
|
|
272
|
+
interface BusyOverlayProps extends Omit<DialogHTMLAttributes<HTMLDialogElement>, "title" | "open" | "onClose">, DialogState {
|
|
273
|
+
title?: ReactNode;
|
|
274
|
+
text?: ReactNode;
|
|
275
|
+
/** Known percentage: shows `.oc-progress` instead of the spinner. */
|
|
276
|
+
progress?: number;
|
|
277
|
+
/** aria-label of the spinner / progress bar (default "Busy"). */
|
|
278
|
+
label?: string;
|
|
279
|
+
}
|
|
280
|
+
/** `dialog.oc-busy-overlay[closedby=none]`. Controlled with `open` / `onOpenChange`, or uncontrolled. */
|
|
281
|
+
declare const BusyOverlay: react.ForwardRefExoticComponent<BusyOverlayProps & react.RefAttributes<HTMLDialogElement>>;
|
|
282
|
+
|
|
283
|
+
type ButtonVariant = "default" | "secondary" | "outline" | "ghost" | "link" | "destructive" | "success" | "gradient" | "glass";
|
|
284
|
+
type ButtonSize = "xs" | "sm" | "md" | "lg";
|
|
285
|
+
interface ButtonStyleProps {
|
|
286
|
+
/** Visual variant (`default` = primary). */
|
|
287
|
+
variant?: ButtonVariant;
|
|
288
|
+
/** `md` is the default size and adds no class. */
|
|
289
|
+
size?: ButtonSize;
|
|
290
|
+
/** Square icon-only button. */
|
|
291
|
+
icon?: boolean;
|
|
292
|
+
/** Fully rounded pill shape. */
|
|
293
|
+
pill?: boolean;
|
|
294
|
+
}
|
|
295
|
+
/** The class string of a button; reuse it on your own elements (router links etc.). */
|
|
296
|
+
declare function buttonClass({ variant, size, icon, pill, className }: ButtonStyleProps & {
|
|
297
|
+
className?: string;
|
|
298
|
+
}): string;
|
|
299
|
+
interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement>, ButtonStyleProps {
|
|
300
|
+
}
|
|
301
|
+
/** `<button class="oc-btn oc-btn--{variant} oc-btn--{size}">` */
|
|
302
|
+
declare const Button: react.ForwardRefExoticComponent<ButtonProps & react.RefAttributes<HTMLButtonElement>>;
|
|
303
|
+
interface ButtonLinkProps extends AnchorHTMLAttributes<HTMLAnchorElement>, ButtonStyleProps {
|
|
304
|
+
}
|
|
305
|
+
/** An anchor styled as a button. */
|
|
306
|
+
declare const ButtonLink: react.ForwardRefExoticComponent<ButtonLinkProps & react.RefAttributes<HTMLAnchorElement>>;
|
|
307
|
+
|
|
308
|
+
/** `.oc-card` */
|
|
309
|
+
declare const Card: react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & react.RefAttributes<HTMLDivElement>>;
|
|
310
|
+
/** `.oc-card-header` */
|
|
311
|
+
declare const CardHeader: react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & react.RefAttributes<HTMLDivElement>>;
|
|
312
|
+
/** `h3.oc-card-title` */
|
|
313
|
+
declare const CardTitle: react.ForwardRefExoticComponent<HTMLAttributes<HTMLHeadingElement> & react.RefAttributes<HTMLHeadingElement>>;
|
|
314
|
+
/** `p.oc-card-description` */
|
|
315
|
+
declare const CardDescription: react.ForwardRefExoticComponent<HTMLAttributes<HTMLParagraphElement> & react.RefAttributes<HTMLParagraphElement>>;
|
|
316
|
+
/** `.oc-card-content` */
|
|
317
|
+
declare const CardContent: react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & react.RefAttributes<HTMLDivElement>>;
|
|
318
|
+
/** `.oc-card-footer` */
|
|
319
|
+
declare const CardFooter: react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & react.RefAttributes<HTMLDivElement>>;
|
|
320
|
+
|
|
321
|
+
interface ChartLineSeries {
|
|
322
|
+
name: string;
|
|
323
|
+
values: number[];
|
|
324
|
+
dashed?: boolean;
|
|
325
|
+
}
|
|
326
|
+
interface ChartLineProps extends Omit<HTMLAttributes<HTMLElement>, "title"> {
|
|
327
|
+
title?: ReactNode;
|
|
328
|
+
sub?: ReactNode;
|
|
329
|
+
/** Big number in the head (`oc-chart-line__value`). */
|
|
330
|
+
value?: ReactNode;
|
|
331
|
+
series?: ChartLineSeries[];
|
|
332
|
+
/** One label per point, used in the tooltips (e.g. "January"). */
|
|
333
|
+
labels?: string[];
|
|
334
|
+
/** Short x axis labels (default: labels; "Jan"… for the demo months). */
|
|
335
|
+
xLabels?: string[];
|
|
336
|
+
/** Top of the y axis (default: a round number above the highest value). */
|
|
337
|
+
max?: number;
|
|
338
|
+
/** Gridline rows (default 4). */
|
|
339
|
+
rows?: number;
|
|
340
|
+
/** "area" fills the series, "spark" hides axes and grid. */
|
|
341
|
+
variant?: "line" | "area" | "spark";
|
|
342
|
+
/** Dots always visible. */
|
|
343
|
+
dots?: boolean;
|
|
344
|
+
/** aria-label of the point columns. */
|
|
345
|
+
label?: string;
|
|
346
|
+
format?: (value: number) => string;
|
|
347
|
+
}
|
|
348
|
+
/** Round axis maximum: step = max / rows rounded up to 1, 1.5, 2, 2.5, 3, 4, 5, 6, 8 or 10 x 10^k. */
|
|
349
|
+
declare function niceMax(value: number, rows?: number): number;
|
|
350
|
+
/** Smooth path through the points (x 0-100, y = 100 - value / max * 100); control points stay between their two ends. */
|
|
351
|
+
declare function chartLinePath(values: number[], max: number): string;
|
|
352
|
+
/** `figure.oc-chart-line`: line / area chart in inline SVG with axes, legend and tooltips. */
|
|
353
|
+
declare const ChartLine: react.ForwardRefExoticComponent<ChartLineProps & react.RefAttributes<HTMLElement>>;
|
|
354
|
+
|
|
355
|
+
interface ChatComposerProps extends Omit<FormHTMLAttributes<HTMLFormElement>, "onChange"> {
|
|
356
|
+
value?: string;
|
|
357
|
+
defaultValue?: string;
|
|
358
|
+
onValueChange?: (value: string) => void;
|
|
359
|
+
/** Called with the trimmed text on submit; the field is cleared afterwards. */
|
|
360
|
+
onSend?: (text: string) => void;
|
|
361
|
+
placeholder?: string;
|
|
362
|
+
/** Accessible label of the field (visually hidden). */
|
|
363
|
+
label?: string;
|
|
364
|
+
/** Tool buttons (`.oc-chat-composer__tool`), e.g. attach or an EmojiPicker. */
|
|
365
|
+
tools?: ReactNode;
|
|
366
|
+
hint?: ReactNode;
|
|
367
|
+
inline?: boolean;
|
|
368
|
+
/** Enter sends, Shift+Enter adds a new line. Default true. */
|
|
369
|
+
sendOnEnter?: boolean;
|
|
370
|
+
disabled?: boolean;
|
|
371
|
+
}
|
|
372
|
+
/** `form.oc-chat-composer`: growing textarea + toolbar + send button. */
|
|
373
|
+
declare const ChatComposer: react.ForwardRefExoticComponent<ChatComposerProps & react.RefAttributes<HTMLFormElement>>;
|
|
374
|
+
|
|
375
|
+
interface CheckboxProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "type"> {
|
|
376
|
+
/** When set the input is wrapped in a <label> with this text. */
|
|
377
|
+
label?: ReactNode;
|
|
378
|
+
}
|
|
379
|
+
/** `<input class="oc-checkbox" type="checkbox">`, wrapped in a label when `label` is given. */
|
|
380
|
+
declare const Checkbox: react.ForwardRefExoticComponent<CheckboxProps & react.RefAttributes<HTMLInputElement>>;
|
|
381
|
+
|
|
382
|
+
interface ChecklistProps extends HTMLAttributes<HTMLUListElement> {
|
|
383
|
+
/** Bordered rows with an action slot. */
|
|
384
|
+
card?: boolean;
|
|
385
|
+
}
|
|
386
|
+
/** `<ul class="oc-checklist">` */
|
|
387
|
+
declare const Checklist: react.ForwardRefExoticComponent<ChecklistProps & react.RefAttributes<HTMLUListElement>>;
|
|
388
|
+
interface ChecklistItemProps extends Omit<LiHTMLAttributes<HTMLLIElement>, "title"> {
|
|
389
|
+
/** Rule is met / step is done (`is-done`). */
|
|
390
|
+
done?: boolean;
|
|
391
|
+
/** Card variant: title + hint text column. Without it `children` are the row content. */
|
|
392
|
+
title?: ReactNode;
|
|
393
|
+
hint?: ReactNode;
|
|
394
|
+
/** Card variant: trailing action (usually a button or link). */
|
|
395
|
+
action?: ReactNode;
|
|
396
|
+
}
|
|
397
|
+
/** `<li class="oc-checklist-item is-done">` */
|
|
398
|
+
declare const ChecklistItem: react.ForwardRefExoticComponent<ChecklistItemProps & react.RefAttributes<HTMLLIElement>>;
|
|
399
|
+
|
|
400
|
+
interface ChipFilterOption {
|
|
401
|
+
value: string;
|
|
402
|
+
label: ReactNode;
|
|
403
|
+
count?: number;
|
|
404
|
+
disabled?: boolean;
|
|
405
|
+
}
|
|
406
|
+
interface ChipFilterProps extends Omit<HTMLAttributes<HTMLDivElement>, "onChange" | "defaultValue"> {
|
|
407
|
+
options: ChipFilterOption[];
|
|
408
|
+
/** Several chips at once (checkboxes). */
|
|
409
|
+
multiple?: boolean;
|
|
410
|
+
/** string for single choice, string[] with `multiple`. */
|
|
411
|
+
value?: string | string[];
|
|
412
|
+
defaultValue?: string | string[];
|
|
413
|
+
onChange?: (value: string | string[]) => void;
|
|
414
|
+
name?: string;
|
|
415
|
+
size?: "sm" | "md";
|
|
416
|
+
/** One line that scrolls sideways. */
|
|
417
|
+
scroll?: boolean;
|
|
418
|
+
}
|
|
419
|
+
/** `.oc-chip-filter`: rounded filter chips. */
|
|
420
|
+
declare const ChipFilter: react.ForwardRefExoticComponent<ChipFilterProps & react.RefAttributes<HTMLDivElement>>;
|
|
421
|
+
|
|
422
|
+
interface CollapsibleProps extends Omit<DetailsHTMLAttributes<HTMLDetailsElement>, "title" | "open" | "onToggle"> {
|
|
423
|
+
/** Summary text (`oc-collapsible-title`). */
|
|
424
|
+
title: ReactNode;
|
|
425
|
+
/** Optional leading icon, e.g. an inline `<svg className="oc-collapsible-icon">`. */
|
|
426
|
+
icon?: ReactNode;
|
|
427
|
+
/** Compact paddings. */
|
|
428
|
+
dense?: boolean;
|
|
429
|
+
open?: boolean;
|
|
430
|
+
defaultOpen?: boolean;
|
|
431
|
+
onOpenChange?: (open: boolean) => void;
|
|
432
|
+
}
|
|
433
|
+
/** `<details class="oc-collapsible">` card-style section. */
|
|
434
|
+
declare const Collapsible: react.ForwardRefExoticComponent<CollapsibleProps & react.RefAttributes<HTMLDetailsElement>>;
|
|
435
|
+
|
|
436
|
+
interface ColorFieldProps extends Omit<HTMLAttributes<HTMLDivElement>, "onChange" | "defaultValue"> {
|
|
437
|
+
/** Hex value, e.g. `#3366cc` (controlled). */
|
|
438
|
+
value?: string;
|
|
439
|
+
defaultValue?: string;
|
|
440
|
+
onChange?: (value: string) => void;
|
|
441
|
+
/** Id of the text input (so a <label for> can point at it). */
|
|
442
|
+
id?: string;
|
|
443
|
+
name?: string;
|
|
444
|
+
disabled?: boolean;
|
|
445
|
+
}
|
|
446
|
+
/** Native color picker + monospaced hex text input, kept in sync. */
|
|
447
|
+
declare const ColorField: react.ForwardRefExoticComponent<ColorFieldProps & react.RefAttributes<HTMLDivElement>>;
|
|
448
|
+
|
|
449
|
+
interface ColorSelectOption {
|
|
450
|
+
value: string;
|
|
451
|
+
label: string;
|
|
452
|
+
/** CSS color, use Omnia tokens: "var(--color-red-70)". */
|
|
453
|
+
color: string;
|
|
454
|
+
disabled?: boolean;
|
|
455
|
+
}
|
|
456
|
+
interface ColorSelectProps extends Omit<FieldsetHTMLAttributes<HTMLFieldSetElement>, "onChange" | "defaultValue"> {
|
|
457
|
+
options: ColorSelectOption[];
|
|
458
|
+
value?: string;
|
|
459
|
+
defaultValue?: string;
|
|
460
|
+
onChange?: (value: string) => void;
|
|
461
|
+
/** Radio group name (generated when omitted). */
|
|
462
|
+
name?: string;
|
|
463
|
+
/** Rows with visible names instead of a swatch grid. */
|
|
464
|
+
list?: boolean;
|
|
465
|
+
size?: "sm" | "md";
|
|
466
|
+
}
|
|
467
|
+
/** `.oc-color-select`: radio swatches; the color is passed through the --oc-swatch variable. */
|
|
468
|
+
declare const ColorSelect: react.ForwardRefExoticComponent<ColorSelectProps & react.RefAttributes<HTMLFieldSetElement>>;
|
|
469
|
+
|
|
470
|
+
interface ColumnMenuColumn {
|
|
471
|
+
label: ReactNode;
|
|
472
|
+
/** Visible at the start (default true). */
|
|
473
|
+
visible?: boolean;
|
|
474
|
+
/** Always visible; the checkbox is disabled. */
|
|
475
|
+
locked?: boolean;
|
|
476
|
+
}
|
|
477
|
+
interface ColumnMenuProps extends Omit<HTMLAttributes<HTMLDivElement>, "title"> {
|
|
478
|
+
/** One entry per table column, in column order (max 10). */
|
|
479
|
+
columns: ColumnMenuColumn[];
|
|
480
|
+
/** The table (`.oc-table`) the menu controls. */
|
|
481
|
+
children: ReactNode;
|
|
482
|
+
triggerLabel?: ReactNode;
|
|
483
|
+
title?: ReactNode;
|
|
484
|
+
resetLabel?: ReactNode;
|
|
485
|
+
/** Called with the column number (1-based) and its new visibility. */
|
|
486
|
+
onColumnToggle?: (column: number, visible: boolean) => void;
|
|
487
|
+
}
|
|
488
|
+
/** `.oc-column-menu-scope` with a `.oc-column-menu[popover]` column checklist. */
|
|
489
|
+
declare const ColumnMenu: react.ForwardRefExoticComponent<ColumnMenuProps & react.RefAttributes<HTMLDivElement>>;
|
|
490
|
+
|
|
491
|
+
interface CommandItemData {
|
|
492
|
+
id: string;
|
|
493
|
+
label: string;
|
|
494
|
+
/** Right-aligned keyboard hint. */
|
|
495
|
+
shortcut?: string;
|
|
496
|
+
disabled?: boolean;
|
|
497
|
+
/** Extra search terms. */
|
|
498
|
+
keywords?: string[];
|
|
499
|
+
}
|
|
500
|
+
interface CommandGroupData {
|
|
501
|
+
label?: string;
|
|
502
|
+
items: CommandItemData[];
|
|
503
|
+
}
|
|
504
|
+
interface CommandProps extends Omit<HTMLAttributes<HTMLDivElement>, "onSelect"> {
|
|
505
|
+
groups: CommandGroupData[];
|
|
506
|
+
placeholder?: string;
|
|
507
|
+
emptyText?: ReactNode;
|
|
508
|
+
/** Search value (controlled). */
|
|
509
|
+
query?: string;
|
|
510
|
+
onQueryChange?: (query: string) => void;
|
|
511
|
+
onSelect?: (item: CommandItemData) => void;
|
|
512
|
+
}
|
|
513
|
+
/**
|
|
514
|
+
* Command palette. The list is filtered by the search input (non-matching rows get `hidden`),
|
|
515
|
+
* the active row carries `aria-selected="true"`; arrow keys move it and Enter selects.
|
|
516
|
+
*/
|
|
517
|
+
declare const Command: react.ForwardRefExoticComponent<CommandProps & react.RefAttributes<HTMLDivElement>>;
|
|
518
|
+
|
|
519
|
+
interface ConfirmDialogProps extends Omit<DialogHTMLAttributes<HTMLDialogElement>, "title" | "open" | "onClose">, DialogState {
|
|
520
|
+
/** Icon color; default `error` (destructive confirm). */
|
|
521
|
+
type?: AlertDialogType;
|
|
522
|
+
icon?: ReactNode;
|
|
523
|
+
title: ReactNode;
|
|
524
|
+
/** Message: pass as `message` or as children. */
|
|
525
|
+
message?: ReactNode;
|
|
526
|
+
confirmLabel?: ReactNode;
|
|
527
|
+
cancelLabel?: ReactNode;
|
|
528
|
+
/** Optional third action at the footer start ("Don't save"). */
|
|
529
|
+
discardLabel?: ReactNode;
|
|
530
|
+
/** The user must type this word before confirming, e.g. "DELETE". */
|
|
531
|
+
confirmWord?: string;
|
|
532
|
+
/** Label above the typed field; defaults to "Type WORD to confirm". */
|
|
533
|
+
confirmWordLabel?: ReactNode;
|
|
534
|
+
closeLabel?: string;
|
|
535
|
+
onConfirm?: () => void;
|
|
536
|
+
onDiscard?: () => void;
|
|
537
|
+
}
|
|
538
|
+
/** Confirm variant of the alert dialog (`.oc-alert-dialog--confirm`). */
|
|
539
|
+
declare const ConfirmDialog: react.ForwardRefExoticComponent<ConfirmDialogProps & react.RefAttributes<HTMLDialogElement>>;
|
|
540
|
+
|
|
541
|
+
interface CookieCategory {
|
|
542
|
+
/** Input name and key in the stored choice (e.g. "statistics"). */
|
|
543
|
+
name: string;
|
|
544
|
+
label: string;
|
|
545
|
+
text?: ReactNode;
|
|
546
|
+
/** Always on (checked + disabled), e.g. necessary cookies. */
|
|
547
|
+
required?: boolean;
|
|
548
|
+
}
|
|
549
|
+
/** Stored choice: `{ necessary: true, statistics, marketing, date }`. */
|
|
550
|
+
type ConsentChoice = {
|
|
551
|
+
necessary: boolean;
|
|
552
|
+
date: string;
|
|
553
|
+
} & Record<string, boolean | string>;
|
|
554
|
+
interface CookieConsentProps extends Omit<HTMLAttributes<HTMLElement>, "title"> {
|
|
555
|
+
categories?: CookieCategory[];
|
|
556
|
+
title?: ReactNode;
|
|
557
|
+
/** Replaces the whole text paragraph (put your policy link in it). */
|
|
558
|
+
text?: ReactNode;
|
|
559
|
+
policyHref?: string;
|
|
560
|
+
customizeLabel?: ReactNode;
|
|
561
|
+
necessaryLabel?: ReactNode;
|
|
562
|
+
selectedLabel?: ReactNode;
|
|
563
|
+
allLabel?: ReactNode;
|
|
564
|
+
/** Text of the "Cookie settings" button that opens the banner again; null hides it. */
|
|
565
|
+
openLabel?: ReactNode;
|
|
566
|
+
/** Full-width bar at the bottom (`--bar`). */
|
|
567
|
+
bar?: boolean;
|
|
568
|
+
/** Never open by itself (`data-oc-consent-manual`). */
|
|
569
|
+
manual?: boolean;
|
|
570
|
+
storageKey?: string;
|
|
571
|
+
/** Called with the stored choice on load and after every choice. */
|
|
572
|
+
onConsent?: (choice: ConsentChoice) => void;
|
|
573
|
+
}
|
|
574
|
+
/** `aside.oc-cookie-consent[popover=manual]` plus an optional `[data-oc-consent-open]` button. */
|
|
575
|
+
declare const CookieConsent: react.ForwardRefExoticComponent<CookieConsentProps & react.RefAttributes<HTMLElement>>;
|
|
576
|
+
|
|
577
|
+
interface CopyFieldProps extends Omit<HTMLAttributes<HTMLDivElement>, "onCopy"> {
|
|
578
|
+
value: string;
|
|
579
|
+
/** Accessible name of the read-only input. */
|
|
580
|
+
label?: string;
|
|
581
|
+
buttonLabel?: string;
|
|
582
|
+
/** How long the `is-copied` feedback stays (ms). */
|
|
583
|
+
feedbackMs?: number;
|
|
584
|
+
onCopy?: (value: string) => void;
|
|
585
|
+
}
|
|
586
|
+
/** Read-only monospace value with a copy button (`is-copied` feedback for 2s). */
|
|
587
|
+
declare const CopyField: react.ForwardRefExoticComponent<CopyFieldProps & react.RefAttributes<HTMLDivElement>>;
|
|
588
|
+
|
|
589
|
+
interface CounterProps extends HTMLAttributes<HTMLElement> {
|
|
590
|
+
/** Target number (`--oc-counter-to`). */
|
|
591
|
+
to: number;
|
|
592
|
+
/** Text after the number, e.g. `+` or `%` (`--oc-counter-suffix`). */
|
|
593
|
+
suffix?: string;
|
|
594
|
+
/** Start animating when scrolled into view (default true). */
|
|
595
|
+
onView?: boolean;
|
|
596
|
+
}
|
|
597
|
+
/** `<strong class="oc-counter oc-counter--on-view">`: animated number, CSS only. */
|
|
598
|
+
declare const Counter: react.ForwardRefExoticComponent<CounterProps & react.RefAttributes<HTMLElement>>;
|
|
599
|
+
|
|
600
|
+
interface DataTableColumn {
|
|
601
|
+
key: string;
|
|
602
|
+
header: string;
|
|
603
|
+
/** Right aligned, sorted as a number (5,15 and 5.15). */
|
|
604
|
+
numeric?: boolean;
|
|
605
|
+
/** Click the header to sort. Default true. */
|
|
606
|
+
sortable?: boolean;
|
|
607
|
+
/** Show the column in the Columns menu. Default true. */
|
|
608
|
+
hideable?: boolean;
|
|
609
|
+
/** Start hidden until the user checks it in the Columns menu. */
|
|
610
|
+
defaultHidden?: boolean;
|
|
611
|
+
}
|
|
612
|
+
interface DataTableRow {
|
|
613
|
+
key: string;
|
|
614
|
+
status?: "active" | "deleted" | "archived";
|
|
615
|
+
cells: Record<string, string>;
|
|
616
|
+
/** Sort and export value when it differs from the visible text. */
|
|
617
|
+
values?: Record<string, string>;
|
|
618
|
+
href?: string;
|
|
619
|
+
}
|
|
620
|
+
interface DataTableProps {
|
|
621
|
+
id?: string;
|
|
622
|
+
title?: string;
|
|
623
|
+
columns: DataTableColumn[];
|
|
624
|
+
rows: DataTableRow[];
|
|
625
|
+
pageSize?: number;
|
|
626
|
+
searchPlaceholder?: string;
|
|
627
|
+
selectable?: boolean;
|
|
628
|
+
draggable?: boolean;
|
|
629
|
+
/** Trash and archive pills. Default true. */
|
|
630
|
+
filters?: boolean;
|
|
631
|
+
/** Demo mode: trash, restore, duplicate and delete change the rows in the page. */
|
|
632
|
+
live?: boolean;
|
|
633
|
+
/** Page actions on the right of the toolbar (New article, …). */
|
|
634
|
+
actions?: ReactNode;
|
|
635
|
+
onBulk?: (action: string, keys: string[]) => void;
|
|
636
|
+
}
|
|
637
|
+
/** Korrekt / OmniaDesk list table. The script in @birdycom/omniaui/data-table.js does the work. */
|
|
638
|
+
declare function DataTable({ id, title, columns, rows, pageSize, searchPlaceholder, selectable, draggable, filters, live, actions, onBulk, }: DataTableProps): react.JSX.Element;
|
|
639
|
+
|
|
640
|
+
interface DecimalInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "value" | "defaultValue" | "type"> {
|
|
641
|
+
/** The number; null = empty. */
|
|
642
|
+
value?: number | null;
|
|
643
|
+
defaultValue?: number | null;
|
|
644
|
+
onValueChange?: (value: number | null) => void;
|
|
645
|
+
/** BCP 47 locale for separators, e.g. "nl-BE" (1.234,56) or "en-US" (1,234.56). */
|
|
646
|
+
locale?: string;
|
|
647
|
+
/** Fixed number of decimals shown after blur. */
|
|
648
|
+
decimals?: number;
|
|
649
|
+
/** Unit text inside the frame (m², kg). */
|
|
650
|
+
unit?: string;
|
|
651
|
+
/** Left-aligned digits. */
|
|
652
|
+
alignStart?: boolean;
|
|
653
|
+
error?: boolean;
|
|
654
|
+
}
|
|
655
|
+
/** "1.234,56" (nl-BE) -> 1234.56. Returns null for empty or unreadable text. */
|
|
656
|
+
declare function parseDecimal(text: string, locale?: string): number | null;
|
|
657
|
+
/** 1234.56 -> "1.234,56" (nl-BE, 2 decimals). */
|
|
658
|
+
declare function formatDecimal(n: number | null | undefined, locale?: string, decimals?: number): string;
|
|
659
|
+
/** `.oc-decimal-input`: free typing, formatted on blur, value reported as a number. */
|
|
660
|
+
declare const DecimalInput: react.ForwardRefExoticComponent<DecimalInputProps & react.RefAttributes<HTMLInputElement>>;
|
|
661
|
+
|
|
662
|
+
interface DefinitionItem {
|
|
663
|
+
term: ReactNode;
|
|
664
|
+
detail: ReactNode;
|
|
665
|
+
}
|
|
666
|
+
interface DefinitionListProps extends Omit<HTMLAttributes<HTMLDivElement>, "title"> {
|
|
667
|
+
title?: ReactNode;
|
|
668
|
+
description?: ReactNode;
|
|
669
|
+
items: DefinitionItem[];
|
|
670
|
+
/** Optional footer (actions). */
|
|
671
|
+
footer?: ReactNode;
|
|
672
|
+
}
|
|
673
|
+
/** `<div class="oc-dl-panel" role="region">` with a `dl` of label / value rows. */
|
|
674
|
+
declare const DefinitionList: react.ForwardRefExoticComponent<DefinitionListProps & react.RefAttributes<HTMLDivElement>>;
|
|
675
|
+
|
|
676
|
+
interface DocViewerItem {
|
|
677
|
+
/** Name in the bar and the dialog title; also used in the aria-labels. */
|
|
678
|
+
label: string;
|
|
679
|
+
/** Small text next to the label, e.g. "PDF · 2.4 MB" or "1:42". */
|
|
680
|
+
meta?: ReactNode;
|
|
681
|
+
/** File URL. Leave empty to show placeholder art (`.oc-media-art`). */
|
|
682
|
+
src?: string;
|
|
683
|
+
/** Default "pdf" (A4 frame). "video" = 16/9 dark frame, "image" = natural height. */
|
|
684
|
+
type?: "pdf" | "video" | "image";
|
|
685
|
+
/** Dialog id (generated when empty). */
|
|
686
|
+
id?: string;
|
|
687
|
+
/** Text for the inline preview (aria-label / alt / iframe title). Defaults to the label. */
|
|
688
|
+
alt?: string;
|
|
689
|
+
/** Placeholder art variant (`oc-media-art--N`) when there is no src. */
|
|
690
|
+
art?: number;
|
|
691
|
+
/** Download link in the dialog bar. */
|
|
692
|
+
download?: string;
|
|
693
|
+
/** Where the preview opens: "bar" (expand button) or "frame" (the whole preview). Default: "frame" for video. */
|
|
694
|
+
open?: "bar" | "frame";
|
|
695
|
+
/** Set false for a plain card without full-screen dialog. Default true. */
|
|
696
|
+
fullscreen?: boolean;
|
|
697
|
+
}
|
|
698
|
+
interface DocViewerProps extends HTMLAttributes<HTMLDivElement> {
|
|
699
|
+
items?: DocViewerItem[];
|
|
700
|
+
/** Text of the frame button (default "Click for full screen"). */
|
|
701
|
+
openText?: ReactNode;
|
|
702
|
+
downloadText?: ReactNode;
|
|
703
|
+
/** Prefix for generated dialog ids. */
|
|
704
|
+
idPrefix?: string;
|
|
705
|
+
}
|
|
706
|
+
/** `.oc-doc-viewer-grid` of `figure.oc-doc-viewer` cards, each with its `dialog.oc-doc-viewer-dialog`. */
|
|
707
|
+
declare const DocViewer: react.ForwardRefExoticComponent<DocViewerProps & react.RefAttributes<HTMLDivElement>>;
|
|
708
|
+
|
|
709
|
+
interface DropdownProps extends HTMLAttributes<HTMLDivElement> {
|
|
710
|
+
/** Content of the trigger button. */
|
|
711
|
+
trigger: ReactNode;
|
|
712
|
+
/** Props for the trigger button (default variant `outline`). */
|
|
713
|
+
triggerProps?: ButtonProps;
|
|
714
|
+
}
|
|
715
|
+
/**
|
|
716
|
+
* Trigger button + `<div class="oc-dropdown-menu" popover>`, wired with `popovertarget`
|
|
717
|
+
* (native popover and anchor positioning, no state needed).
|
|
718
|
+
*/
|
|
719
|
+
declare const Dropdown: react.ForwardRefExoticComponent<DropdownProps & react.RefAttributes<HTMLDivElement>>;
|
|
720
|
+
/** `.oc-dropdown-label` */
|
|
721
|
+
declare function DropdownLabel({ className, ...rest }: HTMLAttributes<HTMLDivElement>): react.JSX.Element;
|
|
722
|
+
/** `.oc-dropdown-separator` */
|
|
723
|
+
declare function DropdownSeparator({ className, ...rest }: HTMLAttributes<HTMLDivElement>): react.JSX.Element;
|
|
724
|
+
type ItemProps = (AnchorHTMLAttributes<HTMLAnchorElement> & {
|
|
725
|
+
href: string;
|
|
726
|
+
}) | (ButtonHTMLAttributes<HTMLButtonElement> & {
|
|
727
|
+
href?: undefined;
|
|
728
|
+
});
|
|
729
|
+
/** `.oc-dropdown-item`: an anchor when `href` is set, otherwise a button. */
|
|
730
|
+
declare function DropdownItem({ className, ...props }: ItemProps): react.JSX.Element;
|
|
731
|
+
|
|
732
|
+
interface DropzoneProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "type" | "onChange" | "children"> {
|
|
733
|
+
/** Icon in `oc-dropzone-icon` (inline SVG or glyph). */
|
|
734
|
+
icon?: ReactNode;
|
|
735
|
+
/** Main text, e.g. `<strong>Drop invoices here</strong> or click to choose`. */
|
|
736
|
+
children?: ReactNode;
|
|
737
|
+
/** Small hint (`oc-dropzone-hint`), e.g. accepted types and size. */
|
|
738
|
+
hint?: ReactNode;
|
|
739
|
+
/** Called with the chosen or dropped files. */
|
|
740
|
+
onFiles?: (files: File[]) => void;
|
|
741
|
+
}
|
|
742
|
+
/** `<label class="oc-dropzone">` around a real file input; `is-dragover` while dragging. */
|
|
743
|
+
declare const Dropzone: react.ForwardRefExoticComponent<DropzoneProps & react.RefAttributes<HTMLInputElement>>;
|
|
744
|
+
|
|
745
|
+
interface EmojiGroup {
|
|
746
|
+
label?: string;
|
|
747
|
+
emojis: string[];
|
|
748
|
+
}
|
|
749
|
+
interface EmojiPickerProps extends Omit<HTMLAttributes<HTMLDivElement>, "onSelect"> {
|
|
750
|
+
groups?: EmojiGroup[];
|
|
751
|
+
/** Called with the picked emoji. */
|
|
752
|
+
onSelect?: (emoji: string) => void;
|
|
753
|
+
/** Always-visible panel without trigger / popover. */
|
|
754
|
+
inline?: boolean;
|
|
755
|
+
/** Trigger content (default 🙂) and its accessible name. */
|
|
756
|
+
trigger?: ReactNode;
|
|
757
|
+
triggerLabel?: string;
|
|
758
|
+
}
|
|
759
|
+
/** `.oc-emoji-picker`: popover grid of emoji buttons, anchored to its trigger. */
|
|
760
|
+
declare const EmojiPicker: react.ForwardRefExoticComponent<EmojiPickerProps & react.RefAttributes<HTMLDivElement>>;
|
|
761
|
+
|
|
762
|
+
interface EmptyStateProps extends Omit<HTMLAttributes<HTMLDivElement>, "title"> {
|
|
763
|
+
icon?: ReactNode;
|
|
764
|
+
title: ReactNode;
|
|
765
|
+
/** Explanation (`oc-empty-text`). */
|
|
766
|
+
description?: ReactNode;
|
|
767
|
+
/** Buttons row (`oc-empty-actions`). */
|
|
768
|
+
actions?: ReactNode;
|
|
769
|
+
}
|
|
770
|
+
/** `<div class="oc-empty">` for lists without data. */
|
|
771
|
+
declare const EmptyState: react.ForwardRefExoticComponent<EmptyStateProps & react.RefAttributes<HTMLDivElement>>;
|
|
772
|
+
|
|
773
|
+
interface EntityCardProps extends Omit<HTMLAttributes<HTMLElement>, "title"> {
|
|
774
|
+
title: ReactNode;
|
|
775
|
+
eyebrow?: ReactNode;
|
|
776
|
+
description?: ReactNode;
|
|
777
|
+
/** Picture in the frame. */
|
|
778
|
+
src?: string;
|
|
779
|
+
alt?: string;
|
|
780
|
+
/** Large character or icon in the frame (when there is no `src`). */
|
|
781
|
+
glyph?: ReactNode;
|
|
782
|
+
/** Anything else for the frame (svg, placeholder art). Wins over src / glyph. */
|
|
783
|
+
media?: ReactNode;
|
|
784
|
+
/** Keep a margin around a logo / symbol picture (`__frame--contain`). */
|
|
785
|
+
contain?: boolean;
|
|
786
|
+
/** Key / value facts, rendered as a <dl>. */
|
|
787
|
+
facts?: Array<[ReactNode, ReactNode]>;
|
|
788
|
+
/** Tags or actions under a divider. */
|
|
789
|
+
footer?: ReactNode;
|
|
790
|
+
stacked?: boolean;
|
|
791
|
+
size?: "sm" | "md";
|
|
792
|
+
}
|
|
793
|
+
/** `article.oc-entity-card`: framed media cell + detail column. */
|
|
794
|
+
declare const EntityCard: react.ForwardRefExoticComponent<EntityCardProps & react.RefAttributes<HTMLElement>>;
|
|
795
|
+
|
|
796
|
+
interface FactListRow {
|
|
797
|
+
label: ReactNode;
|
|
798
|
+
value: ReactNode;
|
|
799
|
+
}
|
|
800
|
+
interface FactListProps extends HTMLAttributes<HTMLDListElement> {
|
|
801
|
+
items: FactListRow[];
|
|
802
|
+
plain?: boolean;
|
|
803
|
+
compact?: boolean;
|
|
804
|
+
stacked?: boolean;
|
|
805
|
+
/** Values in the accent color. */
|
|
806
|
+
accent?: boolean;
|
|
807
|
+
}
|
|
808
|
+
/** `<dl class="oc-fact-list">`: key / value product facts (variant of the definition list). */
|
|
809
|
+
declare const FactList: react.ForwardRefExoticComponent<FactListProps & react.RefAttributes<HTMLDListElement>>;
|
|
810
|
+
|
|
811
|
+
interface FilterCountsOption {
|
|
812
|
+
value: string;
|
|
813
|
+
label: ReactNode;
|
|
814
|
+
count: number | string;
|
|
815
|
+
hint?: ReactNode;
|
|
816
|
+
/** Accent color of the tile; default primary. */
|
|
817
|
+
tone?: "primary" | "success" | "destructive" | "muted";
|
|
818
|
+
disabled?: boolean;
|
|
819
|
+
}
|
|
820
|
+
interface FilterCountsProps extends Omit<FieldsetHTMLAttributes<HTMLFieldSetElement>, "onChange" | "defaultValue"> {
|
|
821
|
+
options: FilterCountsOption[];
|
|
822
|
+
value?: string;
|
|
823
|
+
defaultValue?: string;
|
|
824
|
+
onChange?: (value: string) => void;
|
|
825
|
+
name?: string;
|
|
826
|
+
/** Small inline pills instead of tiles. */
|
|
827
|
+
compact?: boolean;
|
|
828
|
+
}
|
|
829
|
+
/** `.oc-filter-counts`: choose a view; every tile shows its item count. */
|
|
830
|
+
declare const FilterCounts: react.ForwardRefExoticComponent<FilterCountsProps & react.RefAttributes<HTMLFieldSetElement>>;
|
|
831
|
+
|
|
832
|
+
interface FlipCardProps extends HTMLAttributes<HTMLDivElement> {
|
|
833
|
+
front: ReactNode;
|
|
834
|
+
back: ReactNode;
|
|
835
|
+
/** How the card flips. Default "toggle" (click / Space). */
|
|
836
|
+
trigger?: "toggle" | "hover" | "manual";
|
|
837
|
+
flipped?: boolean;
|
|
838
|
+
defaultFlipped?: boolean;
|
|
839
|
+
onFlippedChange?: (flipped: boolean) => void;
|
|
840
|
+
/** Turn top over bottom instead of left over right. */
|
|
841
|
+
vertical?: boolean;
|
|
842
|
+
/** Text of the flip labels (toggle mode). */
|
|
843
|
+
frontLabel?: ReactNode;
|
|
844
|
+
backLabel?: ReactNode;
|
|
845
|
+
}
|
|
846
|
+
/** `.oc-flip-card`: front / back card that turns in 3D (cross-fades with reduced motion). */
|
|
847
|
+
declare const FlipCard: react.ForwardRefExoticComponent<FlipCardProps & react.RefAttributes<HTMLDivElement>>;
|
|
848
|
+
|
|
849
|
+
interface FormFieldProps extends Omit<HTMLAttributes<HTMLDivElement>, "children"> {
|
|
850
|
+
label?: ReactNode;
|
|
851
|
+
description?: ReactNode;
|
|
852
|
+
/** Error message (`oc-field-error`); also sets `aria-invalid` on the control. */
|
|
853
|
+
error?: ReactNode;
|
|
854
|
+
/** Horizontal layout (`oc-field--horizontal`). */
|
|
855
|
+
horizontal?: boolean;
|
|
856
|
+
/** Id of the control; generated when omitted. */
|
|
857
|
+
htmlFor?: string;
|
|
858
|
+
/** A single control (Input, Select, Textarea...) gets id / aria-describedby / aria-invalid injected. */
|
|
859
|
+
children?: ReactNode;
|
|
860
|
+
}
|
|
861
|
+
/** `<div class="oc-field">` with label, control, description and error wired through ids. */
|
|
862
|
+
declare const FormField: react.ForwardRefExoticComponent<FormFieldProps & react.RefAttributes<HTMLDivElement>>;
|
|
863
|
+
/** `<div class="oc-field-group">`: stack (or `row`) of related controls. */
|
|
864
|
+
declare const FieldGroup: react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & {
|
|
865
|
+
row?: boolean;
|
|
866
|
+
} & react.RefAttributes<HTMLDivElement>>;
|
|
867
|
+
|
|
868
|
+
type GreetingTimeOfDay = "morning" | "afternoon" | "evening";
|
|
869
|
+
/** Pick the time-of-day modifier for a date. */
|
|
870
|
+
declare function greetingTimeOfDay(date?: Date): GreetingTimeOfDay;
|
|
871
|
+
interface GreetingProps extends Omit<HTMLAttributes<HTMLElement>, "title"> {
|
|
872
|
+
name?: ReactNode;
|
|
873
|
+
/** The moment to greet for (default: now). Also shown as the date. */
|
|
874
|
+
date?: Date;
|
|
875
|
+
/** Force a time of day instead of computing it. */
|
|
876
|
+
timeOfDay?: GreetingTimeOfDay;
|
|
877
|
+
/** Translated greetings, e.g. `{ morning: "Goedemorgen", ... }`. */
|
|
878
|
+
words?: Partial<Record<GreetingTimeOfDay, string>>;
|
|
879
|
+
/** Locale for the date text (default: the browser locale). */
|
|
880
|
+
locale?: string;
|
|
881
|
+
/** Hide the date line. */
|
|
882
|
+
hideDate?: boolean;
|
|
883
|
+
eyebrow?: ReactNode;
|
|
884
|
+
icon?: ReactNode;
|
|
885
|
+
actions?: ReactNode;
|
|
886
|
+
size?: "lg";
|
|
887
|
+
}
|
|
888
|
+
/** `.oc-greeting`: dashboard greeting with date and actions. */
|
|
889
|
+
declare const Greeting: react.ForwardRefExoticComponent<GreetingProps & react.RefAttributes<HTMLElement>>;
|
|
890
|
+
|
|
891
|
+
interface HeadingProps extends Omit<HTMLAttributes<HTMLDivElement>, "title"> {
|
|
892
|
+
title: ReactNode;
|
|
893
|
+
description?: ReactNode;
|
|
894
|
+
/** Heading element level (default 2). */
|
|
895
|
+
level?: 1 | 2 | 3 | 4;
|
|
896
|
+
/** `sm` = section heading. */
|
|
897
|
+
size?: "md" | "sm";
|
|
898
|
+
titleId?: string;
|
|
899
|
+
}
|
|
900
|
+
/** `<div class="oc-heading">` title + muted description. */
|
|
901
|
+
declare const Heading: react.ForwardRefExoticComponent<HeadingProps & react.RefAttributes<HTMLDivElement>>;
|
|
902
|
+
|
|
903
|
+
interface IconProps extends Omit<SVGProps<SVGSVGElement>, "d"> {
|
|
904
|
+
/** SVG path data (24x24 viewBox, stroke icon). Use `children` for several shapes. */
|
|
905
|
+
d?: string;
|
|
906
|
+
}
|
|
907
|
+
/** Inline 24x24 stroke icon (`currentColor`), the shape used by the snippets. */
|
|
908
|
+
declare function Icon({ d, children, className, ...rest }: IconProps): react.JSX.Element;
|
|
909
|
+
|
|
910
|
+
interface ImageZoomProps extends HTMLAttributes<HTMLDivElement> {
|
|
911
|
+
src?: string;
|
|
912
|
+
alt?: string;
|
|
913
|
+
/** Zoom levels for the toolbar. Empty array = no toolbar. Default [1, 1.5, 2, 3]. */
|
|
914
|
+
levels?: number[];
|
|
915
|
+
/** Starting level. Default 1. */
|
|
916
|
+
defaultZoom?: number;
|
|
917
|
+
/** Window ratio: "square", "photo" or a CSS ratio such as "21 / 9". Default 16 / 9. */
|
|
918
|
+
ratio?: "square" | "photo" | string;
|
|
919
|
+
/** Replaces the <img> inside the canvas (svg, video, placeholder art). */
|
|
920
|
+
media?: ReactNode;
|
|
921
|
+
}
|
|
922
|
+
/** `.oc-image-zoom`: zoom by making the canvas wider than the viewport; pan by scrolling. */
|
|
923
|
+
declare const ImageZoom: react.ForwardRefExoticComponent<ImageZoomProps & react.RefAttributes<HTMLDivElement>>;
|
|
924
|
+
|
|
925
|
+
interface InputProps extends InputHTMLAttributes<HTMLInputElement> {
|
|
926
|
+
/** Error state: adds `oc-input--error` and `aria-invalid`. */
|
|
927
|
+
error?: boolean;
|
|
928
|
+
}
|
|
929
|
+
/** `<input class="oc-input">` */
|
|
930
|
+
declare const Input: react.ForwardRefExoticComponent<InputProps & react.RefAttributes<HTMLInputElement>>;
|
|
931
|
+
|
|
932
|
+
interface InputGroupProps extends Omit<HTMLAttributes<HTMLDivElement>, "prefix"> {
|
|
933
|
+
/** Addon before the input (currency sign...). */
|
|
934
|
+
prefix?: ReactNode;
|
|
935
|
+
/** Addon after the input (%, unit...). */
|
|
936
|
+
suffix?: ReactNode;
|
|
937
|
+
}
|
|
938
|
+
/** `<div class="oc-input-group">` with `oc-input-addon` spans around the child `<Input>`. */
|
|
939
|
+
declare const InputGroup: react.ForwardRefExoticComponent<InputGroupProps & react.RefAttributes<HTMLDivElement>>;
|
|
940
|
+
|
|
941
|
+
interface LanguageSelectOption {
|
|
942
|
+
value: string;
|
|
943
|
+
label: string;
|
|
944
|
+
}
|
|
945
|
+
interface LanguageSelectProps extends Omit<SelectHTMLAttributes<HTMLSelectElement>, "value" | "defaultValue" | "onChange"> {
|
|
946
|
+
options: LanguageSelectOption[];
|
|
947
|
+
value?: string;
|
|
948
|
+
defaultValue?: string;
|
|
949
|
+
onChange?: (value: string) => void;
|
|
950
|
+
/** Currency look (symbol in primary color). */
|
|
951
|
+
currency?: boolean;
|
|
952
|
+
/** No frame until hover / focus. */
|
|
953
|
+
ghost?: boolean;
|
|
954
|
+
/** Replaces the globe icon (e.g. "€"). */
|
|
955
|
+
icon?: ReactNode;
|
|
956
|
+
/** Class for the wrapping label (`className` goes to the select). */
|
|
957
|
+
labelClassName?: string;
|
|
958
|
+
}
|
|
959
|
+
/** `.oc-language-select`: native select in a pill with a leading icon. */
|
|
960
|
+
declare const LanguageSelect: react.ForwardRefExoticComponent<LanguageSelectProps & react.RefAttributes<HTMLSelectElement>>;
|
|
961
|
+
|
|
962
|
+
interface LauncherCardProps extends Omit<AnchorHTMLAttributes<HTMLElement>, "title"> {
|
|
963
|
+
/** Tinted icon tile content (inline SVG). */
|
|
964
|
+
icon?: ReactNode;
|
|
965
|
+
title: ReactNode;
|
|
966
|
+
/** Trailing badge inside the title. */
|
|
967
|
+
badge?: ReactNode;
|
|
968
|
+
description?: ReactNode;
|
|
969
|
+
/** Footer text, e.g. why the card is disabled. */
|
|
970
|
+
footer?: ReactNode;
|
|
971
|
+
/** Current card (`aria-current="true"`). */
|
|
972
|
+
active?: boolean;
|
|
973
|
+
/** Not clickable (`aria-disabled`); renders a <span>. */
|
|
974
|
+
disabled?: boolean;
|
|
975
|
+
}
|
|
976
|
+
/** `.oc-launcher`: an `<a>` (with `href`), a `<button>` (with `onClick`), or a `<span>` when disabled. */
|
|
977
|
+
declare const LauncherCard: react.ForwardRefExoticComponent<LauncherCardProps & react.RefAttributes<HTMLElement>>;
|
|
978
|
+
|
|
979
|
+
interface LightboxImage {
|
|
980
|
+
/** Image URL. Leave empty to show placeholder art (`.oc-media-art`). */
|
|
981
|
+
src?: string;
|
|
982
|
+
alt: string;
|
|
983
|
+
caption?: ReactNode;
|
|
984
|
+
/** Smaller image for the thumbnail (defaults to `src`). */
|
|
985
|
+
thumb?: string;
|
|
986
|
+
}
|
|
987
|
+
interface LightboxProps extends Omit<DialogHTMLAttributes<HTMLDialogElement>, "title" | "open" | "onClose">, DialogState {
|
|
988
|
+
images: LightboxImage[];
|
|
989
|
+
/** Text in the top bar (`oc-lightbox__title`). */
|
|
990
|
+
title?: ReactNode;
|
|
991
|
+
/** Render the thumbnail grid that opens the viewer. Default true. */
|
|
992
|
+
thumbnails?: boolean;
|
|
993
|
+
}
|
|
994
|
+
/** `.oc-lightbox-thumbs` + `<dialog class="oc-lightbox">`. Controlled with `open` / `onOpenChange`, or uncontrolled. */
|
|
995
|
+
declare const Lightbox: react.ForwardRefExoticComponent<LightboxProps & react.RefAttributes<HTMLDialogElement>>;
|
|
996
|
+
|
|
997
|
+
type LinkArrowDirection = "forward" | "back" | "external";
|
|
998
|
+
interface LinkArrowProps extends AnchorHTMLAttributes<HTMLAnchorElement> {
|
|
999
|
+
direction?: LinkArrowDirection;
|
|
1000
|
+
tone?: "default" | "accent" | "muted";
|
|
1001
|
+
size?: "sm" | "default" | "lg";
|
|
1002
|
+
}
|
|
1003
|
+
/** `<a class="oc-link-arrow">`: text link with an arrow that moves on hover and focus. */
|
|
1004
|
+
declare const LinkArrow: react.ForwardRefExoticComponent<LinkArrowProps & react.RefAttributes<HTMLAnchorElement>>;
|
|
1005
|
+
|
|
1006
|
+
interface ListToolbarView {
|
|
1007
|
+
/** "cards", "table" or "list" (matches `.oc-list-toolbar-panel[data-view]`). */
|
|
1008
|
+
value: string;
|
|
1009
|
+
label: string;
|
|
1010
|
+
icon: ReactNode;
|
|
1011
|
+
}
|
|
1012
|
+
interface ListToolbarProps extends Omit<HTMLAttributes<HTMLDivElement>, "onChange"> {
|
|
1013
|
+
/** Search area content, e.g. `<input class="oc-input" type="search">`. */
|
|
1014
|
+
search?: ReactNode;
|
|
1015
|
+
/** Result count text, e.g. "3 items". */
|
|
1016
|
+
count?: ReactNode;
|
|
1017
|
+
views?: ListToolbarView[];
|
|
1018
|
+
view?: string;
|
|
1019
|
+
defaultView?: string;
|
|
1020
|
+
onViewChange?: (view: string) => void;
|
|
1021
|
+
viewsLabel?: string;
|
|
1022
|
+
actions?: ReactNode;
|
|
1023
|
+
sticky?: boolean;
|
|
1024
|
+
bordered?: boolean;
|
|
1025
|
+
}
|
|
1026
|
+
/** `.oc-list-toolbar`: search, count, view toggle and actions above a list. */
|
|
1027
|
+
declare const ListToolbar: react.ForwardRefExoticComponent<ListToolbarProps & react.RefAttributes<HTMLDivElement>>;
|
|
1028
|
+
|
|
1029
|
+
interface MarqueeProps extends HTMLAttributes<HTMLDivElement> {
|
|
1030
|
+
/** Items of the strip. They are rendered twice; the copy is aria-hidden. */
|
|
1031
|
+
items: ReactNode[];
|
|
1032
|
+
reverse?: boolean;
|
|
1033
|
+
speed?: "default" | "slow" | "fast";
|
|
1034
|
+
/** Text only, no pills. */
|
|
1035
|
+
plain?: boolean;
|
|
1036
|
+
/** No soft fade at the edges. */
|
|
1037
|
+
noFade?: boolean;
|
|
1038
|
+
}
|
|
1039
|
+
/** `.oc-marquee`: endless strip that pauses on hover / focus and stands still with reduced motion. */
|
|
1040
|
+
declare const Marquee: react.ForwardRefExoticComponent<MarqueeProps & react.RefAttributes<HTMLDivElement>>;
|
|
1041
|
+
|
|
1042
|
+
interface MediaThumbProps extends HTMLAttributes<HTMLElement> {
|
|
1043
|
+
/** Picture URL. Empty = placeholder art (`.oc-media-art`, pick a variant with `art`). */
|
|
1044
|
+
src?: string;
|
|
1045
|
+
alt?: string;
|
|
1046
|
+
/** Placeholder art variant 1-6 (only without `src`). */
|
|
1047
|
+
art?: number;
|
|
1048
|
+
/** Renders an <a> when set. */
|
|
1049
|
+
href?: string;
|
|
1050
|
+
/** "12:04" in the bottom-right corner. */
|
|
1051
|
+
duration?: ReactNode;
|
|
1052
|
+
/** Top-left label ("New", "LIVE"). */
|
|
1053
|
+
badge?: ReactNode;
|
|
1054
|
+
live?: boolean;
|
|
1055
|
+
/** Watched part, 0-100. Shows the progress bar when set. */
|
|
1056
|
+
progress?: number;
|
|
1057
|
+
watched?: boolean;
|
|
1058
|
+
ratio?: "video" | "square" | "portrait";
|
|
1059
|
+
}
|
|
1060
|
+
/** `.oc-media-thumb`: 16:9 video thumbnail. */
|
|
1061
|
+
declare const MediaThumb: react.ForwardRefExoticComponent<MediaThumbProps & react.RefAttributes<HTMLElement>>;
|
|
1062
|
+
|
|
1063
|
+
interface MediaCardProps extends Omit<HTMLAttributes<HTMLElement>, "title"> {
|
|
1064
|
+
title: ReactNode;
|
|
1065
|
+
/** Link of the title; it covers the whole card. */
|
|
1066
|
+
href: string;
|
|
1067
|
+
/** "Channel · 24K views · 3 days ago". */
|
|
1068
|
+
meta?: ReactNode;
|
|
1069
|
+
/** Initials, an <img>, or any node. Leave out for no avatar. */
|
|
1070
|
+
avatar?: ReactNode;
|
|
1071
|
+
/** Props for the MediaThumb on top (src, duration, progress, …). */
|
|
1072
|
+
thumb?: MediaThumbProps;
|
|
1073
|
+
/** Items of the ⋮ menu (`.oc-dropdown-item` elements). No menu button when empty. */
|
|
1074
|
+
menu?: ReactNode;
|
|
1075
|
+
compact?: boolean;
|
|
1076
|
+
}
|
|
1077
|
+
/** `article.oc-media-card`. */
|
|
1078
|
+
declare const MediaCard: react.ForwardRefExoticComponent<MediaCardProps & react.RefAttributes<HTMLElement>>;
|
|
1079
|
+
|
|
1080
|
+
interface MediaRowListProps extends HTMLAttributes<HTMLElement> {
|
|
1081
|
+
/** Numbered playlist: renders an <ol> with a counter column. */
|
|
1082
|
+
numbered?: boolean;
|
|
1083
|
+
}
|
|
1084
|
+
/** `ul.oc-media-row-list` or `ol.oc-media-row-list--numbered`. */
|
|
1085
|
+
declare const MediaRowList: react.ForwardRefExoticComponent<MediaRowListProps & react.RefAttributes<HTMLElement>>;
|
|
1086
|
+
interface MediaRowProps extends Omit<HTMLAttributes<HTMLLIElement>, "title"> {
|
|
1087
|
+
title: ReactNode;
|
|
1088
|
+
href: string;
|
|
1089
|
+
meta?: ReactNode;
|
|
1090
|
+
thumb?: MediaThumbProps;
|
|
1091
|
+
/** Now playing (`aria-current="true"`). */
|
|
1092
|
+
current?: boolean;
|
|
1093
|
+
/** Items of the ⋮ menu. No menu button when empty. */
|
|
1094
|
+
menu?: ReactNode;
|
|
1095
|
+
}
|
|
1096
|
+
/** `li.oc-media-row`: thumb | title + meta | menu. */
|
|
1097
|
+
declare const MediaRow: react.ForwardRefExoticComponent<MediaRowProps & react.RefAttributes<HTMLLIElement>>;
|
|
1098
|
+
|
|
1099
|
+
/** File chip (default), image preview or square thumbnail inside a message. */
|
|
1100
|
+
type MessageAttachment = (AttachmentFile & {
|
|
1101
|
+
kind?: "file";
|
|
1102
|
+
}) | {
|
|
1103
|
+
kind: "image";
|
|
1104
|
+
href?: string;
|
|
1105
|
+
src?: string;
|
|
1106
|
+
alt: string;
|
|
1107
|
+
art?: number;
|
|
1108
|
+
caption?: ReactNode;
|
|
1109
|
+
} | {
|
|
1110
|
+
kind: "thumb";
|
|
1111
|
+
src?: string;
|
|
1112
|
+
alt: string;
|
|
1113
|
+
art?: number;
|
|
1114
|
+
};
|
|
1115
|
+
interface MessageAction {
|
|
1116
|
+
/** Passed to onAction, e.g. "reply". */
|
|
1117
|
+
name: string;
|
|
1118
|
+
/** aria-label, e.g. "Reply to this message". */
|
|
1119
|
+
label: string;
|
|
1120
|
+
/** Built-in "reply" / "delete" icon, or your own svg. */
|
|
1121
|
+
icon?: "reply" | "delete" | ReactNode;
|
|
1122
|
+
destructive?: boolean;
|
|
1123
|
+
}
|
|
1124
|
+
interface MessageData {
|
|
1125
|
+
direction?: "in" | "out";
|
|
1126
|
+
sender?: ReactNode;
|
|
1127
|
+
/** Initials in the avatar. */
|
|
1128
|
+
avatar?: ReactNode;
|
|
1129
|
+
time?: ReactNode;
|
|
1130
|
+
datetime?: string;
|
|
1131
|
+
status?: "sent" | "read" | "failed";
|
|
1132
|
+
/** Default "Sent" / "Read" / "Failed". */
|
|
1133
|
+
statusLabel?: ReactNode;
|
|
1134
|
+
/** Double check icon before the status. */
|
|
1135
|
+
statusIcon?: boolean;
|
|
1136
|
+
/** Follows a message of the same sender (no name; avatar on the last one). */
|
|
1137
|
+
continued?: boolean;
|
|
1138
|
+
quote?: {
|
|
1139
|
+
href?: string;
|
|
1140
|
+
sender: ReactNode;
|
|
1141
|
+
text: ReactNode;
|
|
1142
|
+
};
|
|
1143
|
+
/** A string becomes one paragraph; pass elements for lists, links and more paragraphs. */
|
|
1144
|
+
text?: ReactNode;
|
|
1145
|
+
attachments?: MessageAttachment[];
|
|
1146
|
+
actions?: MessageAction[];
|
|
1147
|
+
/** aria-label of the row, e.g. "Lisa Verbeke, 09:12". */
|
|
1148
|
+
label?: string;
|
|
1149
|
+
id?: string;
|
|
1150
|
+
}
|
|
1151
|
+
/** `.oc-message__attachments`: thumbnails share one `.oc-attachment-list`, files and images stand alone. */
|
|
1152
|
+
declare function MessageAttachments({ items }: {
|
|
1153
|
+
items: MessageAttachment[];
|
|
1154
|
+
}): react.JSX.Element;
|
|
1155
|
+
interface MessageProps extends Omit<HTMLAttributes<HTMLElement>, "id">, MessageData {
|
|
1156
|
+
onAction?: (name: string) => void;
|
|
1157
|
+
}
|
|
1158
|
+
/** `article.oc-message`: one chat bubble with avatar, meta and hover actions. */
|
|
1159
|
+
declare const Message: react.ForwardRefExoticComponent<MessageProps & react.RefAttributes<HTMLElement>>;
|
|
1160
|
+
interface MessageDividerProps extends HTMLAttributes<HTMLDivElement> {
|
|
1161
|
+
/** Centred notice without lines. */
|
|
1162
|
+
system?: boolean;
|
|
1163
|
+
}
|
|
1164
|
+
/** `.oc-message-divider`: date divider, or a system notice. */
|
|
1165
|
+
declare function MessageDivider({ system, className, children, ...rest }: MessageDividerProps): react.JSX.Element;
|
|
1166
|
+
type MessageListItem = MessageData | {
|
|
1167
|
+
divider: ReactNode;
|
|
1168
|
+
system?: boolean;
|
|
1169
|
+
};
|
|
1170
|
+
interface MessageListProps extends HTMLAttributes<HTMLDivElement> {
|
|
1171
|
+
/** Messages and dividers in order; `children` replace them. */
|
|
1172
|
+
items?: MessageListItem[];
|
|
1173
|
+
/** role="log" for a list that updates live (default true). */
|
|
1174
|
+
log?: boolean;
|
|
1175
|
+
onAction?: (name: string, message: MessageData, index: number) => void;
|
|
1176
|
+
}
|
|
1177
|
+
/** `.oc-message-list`: column of messages and dividers. */
|
|
1178
|
+
declare const MessageList: react.ForwardRefExoticComponent<MessageListProps & react.RefAttributes<HTMLDivElement>>;
|
|
1179
|
+
|
|
1180
|
+
interface ThreadParticipant {
|
|
1181
|
+
initials: ReactNode;
|
|
1182
|
+
name?: string;
|
|
1183
|
+
}
|
|
1184
|
+
type ThreadMenuItem = {
|
|
1185
|
+
name: string;
|
|
1186
|
+
label: ReactNode;
|
|
1187
|
+
destructive?: boolean;
|
|
1188
|
+
} | {
|
|
1189
|
+
separator: true;
|
|
1190
|
+
};
|
|
1191
|
+
interface MessageThreadProps extends Omit<HTMLAttributes<HTMLElement>, "title"> {
|
|
1192
|
+
title?: ReactNode;
|
|
1193
|
+
/** Bold first part of the meta line, e.g. the project. */
|
|
1194
|
+
project?: ReactNode;
|
|
1195
|
+
meta?: ReactNode;
|
|
1196
|
+
participants?: ThreadParticipant[];
|
|
1197
|
+
/** Badge in the header, e.g. { label: "Urgent", variant: "destructive" }. */
|
|
1198
|
+
status?: {
|
|
1199
|
+
label: ReactNode;
|
|
1200
|
+
variant?: string;
|
|
1201
|
+
} | null;
|
|
1202
|
+
/** Actions menu; null hides the button. */
|
|
1203
|
+
menu?: ThreadMenuItem[] | null;
|
|
1204
|
+
onMenu?: (name: string) => void;
|
|
1205
|
+
messages?: MessageListItem[];
|
|
1206
|
+
/** aria-label of the scroll area (default "Messages"). */
|
|
1207
|
+
scrollLabel?: string;
|
|
1208
|
+
/** aria-live="polite" on the scroll area (default true). */
|
|
1209
|
+
live?: boolean;
|
|
1210
|
+
/** Show the sending overlay (aria-busy). */
|
|
1211
|
+
busy?: boolean;
|
|
1212
|
+
/** Overlay title; null leaves the overlay out. */
|
|
1213
|
+
busyTitle?: ReactNode;
|
|
1214
|
+
busyText?: ReactNode;
|
|
1215
|
+
/** Replaces the default composer form. */
|
|
1216
|
+
composer?: ReactNode;
|
|
1217
|
+
/** Text instead of a composer, e.g. for a closed conversation. */
|
|
1218
|
+
note?: ReactNode;
|
|
1219
|
+
placeholder?: string;
|
|
1220
|
+
composerLabel?: string;
|
|
1221
|
+
inline?: boolean;
|
|
1222
|
+
tools?: Array<"attach" | "emoji">;
|
|
1223
|
+
onTool?: (tool: "attach" | "emoji") => void;
|
|
1224
|
+
hint?: ReactNode;
|
|
1225
|
+
/** Called with the text; the bubble is appended when it resolves (not when it throws). */
|
|
1226
|
+
onSend?: (text: string) => void | Promise<void>;
|
|
1227
|
+
/** Append sent messages yourself through `messages` (default false = append here). */
|
|
1228
|
+
manual?: boolean;
|
|
1229
|
+
/** Avatar of new outgoing messages (default: the last outgoing avatar, else "Me"). */
|
|
1230
|
+
me?: ReactNode;
|
|
1231
|
+
/** Element at the start of the header, e.g. a back link. */
|
|
1232
|
+
back?: ReactNode;
|
|
1233
|
+
/** No wallpaper (`--plain`). */
|
|
1234
|
+
plain?: boolean;
|
|
1235
|
+
}
|
|
1236
|
+
/** `section.oc-message-thread`: header, scrolling messages (newest at the bottom), composer and sending overlay. */
|
|
1237
|
+
declare const MessageThread: react.ForwardRefExoticComponent<MessageThreadProps & react.RefAttributes<HTMLElement>>;
|
|
1238
|
+
|
|
1239
|
+
type ModalSize = "sm" | "md" | "lg" | "xl" | "full";
|
|
1240
|
+
interface ModalProps extends Omit<DialogHTMLAttributes<HTMLDialogElement>, "title" | "open" | "onClose">, DialogState {
|
|
1241
|
+
/** Heading (`oc-modal-title`). */
|
|
1242
|
+
title?: ReactNode;
|
|
1243
|
+
/** Muted text under the title (`oc-modal-description`). */
|
|
1244
|
+
description?: ReactNode;
|
|
1245
|
+
/** Button row (`oc-modal-footer`). Use `<ModalClose>` for buttons that close the dialog. */
|
|
1246
|
+
footer?: ReactNode;
|
|
1247
|
+
size?: ModalSize;
|
|
1248
|
+
/** Close when the backdrop is clicked (native `closedby="any"`). Default true. */
|
|
1249
|
+
closeOnBackdrop?: boolean;
|
|
1250
|
+
}
|
|
1251
|
+
/**
|
|
1252
|
+
* `<dialog class="oc-modal">`. The `open` prop is synced to showModal() / close() in an effect;
|
|
1253
|
+
* Escape and backdrop clicks are reported through `onOpenChange(false)`.
|
|
1254
|
+
*/
|
|
1255
|
+
declare const Modal: react.ForwardRefExoticComponent<ModalProps & react.RefAttributes<HTMLDialogElement>>;
|
|
1256
|
+
/** A button that closes the surrounding Modal / AlertDialog / Sheet. */
|
|
1257
|
+
declare const ModalClose: react.ForwardRefExoticComponent<ButtonProps & react.RefAttributes<HTMLButtonElement>>;
|
|
1258
|
+
|
|
1259
|
+
interface NavmenuProps extends HTMLAttributes<HTMLUListElement> {
|
|
1260
|
+
/** `aria-label` of the wrapping <nav>. */
|
|
1261
|
+
label?: string;
|
|
1262
|
+
/** Class for the wrapping <nav> (e.g. `oc-block-appbar-nav`). */
|
|
1263
|
+
navClassName?: string;
|
|
1264
|
+
}
|
|
1265
|
+
/** `<nav><ul class="oc-navmenu">`: horizontal navigation links. */
|
|
1266
|
+
declare const Navmenu: react.ForwardRefExoticComponent<NavmenuProps & react.RefAttributes<HTMLUListElement>>;
|
|
1267
|
+
/** `<li>` of a Navmenu. */
|
|
1268
|
+
declare function NavmenuItem(props: LiHTMLAttributes<HTMLLIElement>): react.JSX.Element;
|
|
1269
|
+
interface NavmenuLinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {
|
|
1270
|
+
/** Current page (`aria-current="page"`). */
|
|
1271
|
+
current?: boolean;
|
|
1272
|
+
}
|
|
1273
|
+
/** `<a class="oc-navmenu-link">` */
|
|
1274
|
+
declare const NavmenuLink: react.ForwardRefExoticComponent<NavmenuLinkProps & react.RefAttributes<HTMLAnchorElement>>;
|
|
1275
|
+
interface NavmenuDropdownProps extends HTMLAttributes<HTMLDivElement> {
|
|
1276
|
+
/** Trigger text (button with a chevron). */
|
|
1277
|
+
label: ReactNode;
|
|
1278
|
+
}
|
|
1279
|
+
/** `<li>` with a caret trigger button and a `.oc-dropdown-menu[popover]` of children. */
|
|
1280
|
+
declare const NavmenuDropdown: react.ForwardRefExoticComponent<NavmenuDropdownProps & react.RefAttributes<HTMLDivElement>>;
|
|
1281
|
+
|
|
1282
|
+
interface NextTeaserProps extends AnchorHTMLAttributes<HTMLAnchorElement> {
|
|
1283
|
+
/** Small uppercase label (default "Next product"). */
|
|
1284
|
+
label?: ReactNode;
|
|
1285
|
+
name: ReactNode;
|
|
1286
|
+
tagline?: ReactNode;
|
|
1287
|
+
/** Element before the name, usually a <ProductMark size="sm" />. */
|
|
1288
|
+
mark?: ReactNode;
|
|
1289
|
+
/** "Previous" link: arrow left. */
|
|
1290
|
+
prev?: boolean;
|
|
1291
|
+
}
|
|
1292
|
+
/** `<a class="oc-next-teaser">`: "Next product" teaser card. */
|
|
1293
|
+
declare const NextTeaser: react.ForwardRefExoticComponent<NextTeaserProps & react.RefAttributes<HTMLAnchorElement>>;
|
|
1294
|
+
|
|
1295
|
+
interface NumberInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "value" | "defaultValue" | "onChange" | "size" | "type" | "min" | "max" | "step"> {
|
|
1296
|
+
/** Current number; null = empty field. */
|
|
1297
|
+
value?: number | null;
|
|
1298
|
+
defaultValue?: number | null;
|
|
1299
|
+
onChange?: (value: number | null) => void;
|
|
1300
|
+
min?: number;
|
|
1301
|
+
max?: number;
|
|
1302
|
+
step?: number;
|
|
1303
|
+
size?: "sm" | "md";
|
|
1304
|
+
/** Full width. */
|
|
1305
|
+
block?: boolean;
|
|
1306
|
+
error?: boolean;
|
|
1307
|
+
decrementLabel?: string;
|
|
1308
|
+
incrementLabel?: string;
|
|
1309
|
+
}
|
|
1310
|
+
/** `.oc-number-input`: number field with - / + buttons. Buttons disable themselves at min / max. */
|
|
1311
|
+
declare const NumberInput: react.ForwardRefExoticComponent<NumberInputProps & react.RefAttributes<HTMLInputElement>>;
|
|
1312
|
+
|
|
1313
|
+
interface OtpInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "value" | "defaultValue" | "onChange" | "type" | "maxLength"> {
|
|
1314
|
+
/** Code length (default 6). */
|
|
1315
|
+
length?: number;
|
|
1316
|
+
value?: string;
|
|
1317
|
+
defaultValue?: string;
|
|
1318
|
+
onChange?: (value: string) => void;
|
|
1319
|
+
/** Called once when `length` characters have been entered. */
|
|
1320
|
+
onComplete?: (value: string) => void;
|
|
1321
|
+
/** Error state (`aria-invalid`). */
|
|
1322
|
+
invalid?: boolean;
|
|
1323
|
+
/** Allow letters as well as digits. */
|
|
1324
|
+
alphanumeric?: boolean;
|
|
1325
|
+
}
|
|
1326
|
+
/** `<input class="oc-otp">`: separate cells drawn on a single real input. */
|
|
1327
|
+
declare const OtpInput: react.ForwardRefExoticComponent<OtpInputProps & react.RefAttributes<HTMLInputElement>>;
|
|
1328
|
+
|
|
1329
|
+
interface PageHeaderProps extends Omit<HTMLAttributes<HTMLElement>, "title"> {
|
|
1330
|
+
title: ReactNode;
|
|
1331
|
+
subtitle?: ReactNode;
|
|
1332
|
+
/** Meta row items (owner, updated, ...). */
|
|
1333
|
+
meta?: ReactNode;
|
|
1334
|
+
/** Back link, e.g. `<BackLink href="/projects">Projects</BackLink>`. */
|
|
1335
|
+
back?: ReactNode;
|
|
1336
|
+
actions?: ReactNode;
|
|
1337
|
+
/** Heading level of the title (default 1). */
|
|
1338
|
+
level?: 1 | 2 | 3;
|
|
1339
|
+
bordered?: boolean;
|
|
1340
|
+
sticky?: boolean;
|
|
1341
|
+
size?: "sm";
|
|
1342
|
+
}
|
|
1343
|
+
/** `.oc-page-header`: title row of an app page. */
|
|
1344
|
+
declare const PageHeader: react.ForwardRefExoticComponent<PageHeaderProps & react.RefAttributes<HTMLElement>>;
|
|
1345
|
+
|
|
1346
|
+
interface PaginationProps extends Omit<HTMLAttributes<HTMLElement>, "onChange"> {
|
|
1347
|
+
/** Current page (1-based). */
|
|
1348
|
+
page: number;
|
|
1349
|
+
pageCount: number;
|
|
1350
|
+
/** Called with the new page; when set, link navigation is prevented. */
|
|
1351
|
+
onPageChange?: (page: number) => void;
|
|
1352
|
+
/** Builds the href of a page (default `?page=n`). */
|
|
1353
|
+
hrefFor?: (page: number) => string;
|
|
1354
|
+
}
|
|
1355
|
+
/** `<nav class="oc-pagination">` with numbered links and `aria-current="page"`. */
|
|
1356
|
+
declare const Pagination: react.ForwardRefExoticComponent<PaginationProps & react.RefAttributes<HTMLElement>>;
|
|
1357
|
+
|
|
1358
|
+
interface PasswordInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "type"> {
|
|
1359
|
+
showLabel?: string;
|
|
1360
|
+
hideLabel?: string;
|
|
1361
|
+
/** Accessible name of the toggle button. */
|
|
1362
|
+
toggleLabel?: string;
|
|
1363
|
+
error?: boolean;
|
|
1364
|
+
}
|
|
1365
|
+
/** Password field with a show / hide button (`aria-pressed`), inside `.oc-input-reveal`. */
|
|
1366
|
+
declare const PasswordInput: react.ForwardRefExoticComponent<PasswordInputProps & react.RefAttributes<HTMLInputElement>>;
|
|
1367
|
+
|
|
1368
|
+
interface PasswordRule {
|
|
1369
|
+
label: ReactNode;
|
|
1370
|
+
/** True when the password meets the rule. */
|
|
1371
|
+
test: (password: string) => boolean;
|
|
1372
|
+
}
|
|
1373
|
+
/** Common rules: length, uppercase, number, symbol. Pass your own list to change them. */
|
|
1374
|
+
declare const defaultPasswordRules: PasswordRule[];
|
|
1375
|
+
interface PasswordRequirementsProps extends HTMLAttributes<HTMLUListElement> {
|
|
1376
|
+
password: string;
|
|
1377
|
+
rules?: PasswordRule[];
|
|
1378
|
+
/** Rules side by side. */
|
|
1379
|
+
inline?: boolean;
|
|
1380
|
+
/** Render nothing until the user types. */
|
|
1381
|
+
hideWhenEmpty?: boolean;
|
|
1382
|
+
}
|
|
1383
|
+
/** `.oc-password-requirements`: each rule turns green (--met) as soon as it passes. */
|
|
1384
|
+
declare const PasswordRequirements: react.ForwardRefExoticComponent<PasswordRequirementsProps & react.RefAttributes<HTMLUListElement>>;
|
|
1385
|
+
|
|
1386
|
+
interface PhoneCountry {
|
|
1387
|
+
/** Dial code with plus sign, e.g. "+32". */
|
|
1388
|
+
dial: string;
|
|
1389
|
+
/** Text in the select, e.g. "BE +32". */
|
|
1390
|
+
label: string;
|
|
1391
|
+
}
|
|
1392
|
+
interface PhoneInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "value" | "defaultValue" | "onChange" | "size"> {
|
|
1393
|
+
/** Full value without spaces, e.g. "+32470123456" (empty string = no number). */
|
|
1394
|
+
value?: string;
|
|
1395
|
+
defaultValue?: string;
|
|
1396
|
+
onChange?: (value: string) => void;
|
|
1397
|
+
countries?: PhoneCountry[];
|
|
1398
|
+
/** Dial code used while the value is empty. */
|
|
1399
|
+
defaultDial?: string;
|
|
1400
|
+
size?: "sm" | "md";
|
|
1401
|
+
error?: boolean;
|
|
1402
|
+
/** Accessible name of the dial code select. */
|
|
1403
|
+
dialLabel?: string;
|
|
1404
|
+
}
|
|
1405
|
+
/** "470123456" -> "470 12 34 56": a group of 3, then pairs (readable for most European numbers). */
|
|
1406
|
+
declare function formatPhoneNational(digits: string): string;
|
|
1407
|
+
/** `.oc-phone-input`: country dial code + national number. Emits one value: dial + digits. */
|
|
1408
|
+
declare const PhoneInput: react.ForwardRefExoticComponent<PhoneInputProps & react.RefAttributes<HTMLInputElement>>;
|
|
1409
|
+
|
|
1410
|
+
interface PopoverProps extends Omit<HTMLAttributes<HTMLDivElement>, "title"> {
|
|
1411
|
+
/** Content of the trigger button. */
|
|
1412
|
+
trigger: ReactNode;
|
|
1413
|
+
triggerProps?: ButtonProps;
|
|
1414
|
+
size?: "sm" | "md" | "lg";
|
|
1415
|
+
title?: ReactNode;
|
|
1416
|
+
/** Short body text (`oc-popover-text`). */
|
|
1417
|
+
text?: ReactNode;
|
|
1418
|
+
}
|
|
1419
|
+
/** Trigger + `<div class="oc-popover" popover>` floating panel. */
|
|
1420
|
+
declare const Popover: react.ForwardRefExoticComponent<PopoverProps & react.RefAttributes<HTMLDivElement>>;
|
|
1421
|
+
|
|
1422
|
+
interface PriceCardFeature {
|
|
1423
|
+
label: ReactNode;
|
|
1424
|
+
/** Shown with a cross and muted text. */
|
|
1425
|
+
excluded?: boolean;
|
|
1426
|
+
}
|
|
1427
|
+
interface PriceCardPrice {
|
|
1428
|
+
amount: ReactNode;
|
|
1429
|
+
period?: ReactNode;
|
|
1430
|
+
/** Old price (struck through). */
|
|
1431
|
+
was?: ReactNode;
|
|
1432
|
+
note?: ReactNode;
|
|
1433
|
+
}
|
|
1434
|
+
interface PriceCardProps extends Omit<HTMLAttributes<HTMLElement>, "title"> {
|
|
1435
|
+
name: ReactNode;
|
|
1436
|
+
description?: ReactNode;
|
|
1437
|
+
/** Badge such as "Save 20%". */
|
|
1438
|
+
discount?: ReactNode;
|
|
1439
|
+
monthly: PriceCardPrice;
|
|
1440
|
+
/** Without a yearly price the toggle is not rendered. */
|
|
1441
|
+
yearly?: PriceCardPrice;
|
|
1442
|
+
/** Period that is selected first (uncontrolled radio). */
|
|
1443
|
+
defaultPeriod?: "monthly" | "yearly";
|
|
1444
|
+
features?: PriceCardFeature[];
|
|
1445
|
+
/** Call to action, e.g. <a className="oc-btn oc-price-card__cta">. */
|
|
1446
|
+
cta?: ReactNode;
|
|
1447
|
+
featured?: boolean;
|
|
1448
|
+
/** Labels of the toggle. */
|
|
1449
|
+
monthlyLabel?: ReactNode;
|
|
1450
|
+
yearlyLabel?: ReactNode;
|
|
1451
|
+
}
|
|
1452
|
+
/** `<article class="oc-price-card">`: plan card with a CSS-only monthly / yearly switch. */
|
|
1453
|
+
declare const PriceCard: react.ForwardRefExoticComponent<PriceCardProps & react.RefAttributes<HTMLElement>>;
|
|
1454
|
+
|
|
1455
|
+
type ProductMarkSize = "sm" | "default" | "lg" | "xl";
|
|
1456
|
+
type ProductMarkAccent = "blue" | "cyan" | "green" | "orange" | "red" | "violet" | "yellow";
|
|
1457
|
+
interface ProductMarkProps extends HTMLAttributes<HTMLSpanElement> {
|
|
1458
|
+
size?: ProductMarkSize;
|
|
1459
|
+
/** Accent preset (adds .oc-accent--{accent}). */
|
|
1460
|
+
accent?: ProductMarkAccent;
|
|
1461
|
+
/** Tinted background with an accent glyph. */
|
|
1462
|
+
soft?: boolean;
|
|
1463
|
+
glow?: boolean;
|
|
1464
|
+
/** Full-bleed image inside. */
|
|
1465
|
+
cover?: boolean;
|
|
1466
|
+
}
|
|
1467
|
+
/** `<span class="oc-product-mark">`: squircle app-icon tile. Decorative by default (aria-hidden). */
|
|
1468
|
+
declare const ProductMark: react.ForwardRefExoticComponent<ProductMarkProps & react.RefAttributes<HTMLSpanElement>>;
|
|
1469
|
+
|
|
1470
|
+
interface ProgressProps extends HTMLAttributes<HTMLDivElement> {
|
|
1471
|
+
value: number;
|
|
1472
|
+
/** Maximum (default 100). */
|
|
1473
|
+
max?: number;
|
|
1474
|
+
/** Bar color. */
|
|
1475
|
+
variant?: "default" | "success" | "warning" | "danger";
|
|
1476
|
+
}
|
|
1477
|
+
/** `<div class="oc-progress" role="progressbar">` with an `oc-progress-bar` sized in percent. */
|
|
1478
|
+
declare const Progress: react.ForwardRefExoticComponent<ProgressProps & react.RefAttributes<HTMLDivElement>>;
|
|
1479
|
+
|
|
1480
|
+
interface ProjectCardProps extends Omit<AnchorHTMLAttributes<HTMLAnchorElement>, "type"> {
|
|
1481
|
+
name: ReactNode;
|
|
1482
|
+
/** Badge text ("Website"). */
|
|
1483
|
+
type?: ReactNode;
|
|
1484
|
+
/** Sector / location line. */
|
|
1485
|
+
meta?: ReactNode;
|
|
1486
|
+
/** Text of the arrow link (default "View project"). */
|
|
1487
|
+
more?: ReactNode;
|
|
1488
|
+
/** Screenshot URL; without it the preview is an accent gradient. */
|
|
1489
|
+
image?: string;
|
|
1490
|
+
/** Accessible description of the screenshot. */
|
|
1491
|
+
imageAlt?: string;
|
|
1492
|
+
/** Edge-to-edge preview. */
|
|
1493
|
+
flat?: boolean;
|
|
1494
|
+
}
|
|
1495
|
+
/** `<a class="oc-project-card">`: portfolio card with a browser-like preview. */
|
|
1496
|
+
declare const ProjectCard: react.ForwardRefExoticComponent<ProjectCardProps & react.RefAttributes<HTMLAnchorElement>>;
|
|
1497
|
+
|
|
1498
|
+
interface ProseProps extends HTMLAttributes<HTMLElement> {
|
|
1499
|
+
/** All spacing scales along. */
|
|
1500
|
+
size?: "sm" | "md" | "lg";
|
|
1501
|
+
/** No max width (default 68ch). */
|
|
1502
|
+
full?: boolean;
|
|
1503
|
+
as?: "article" | "div" | "section";
|
|
1504
|
+
/** The text; the snippet's demo article when empty. */
|
|
1505
|
+
children?: ReactNode;
|
|
1506
|
+
}
|
|
1507
|
+
/** `p.oc-prose-lead`: larger intro paragraph. */
|
|
1508
|
+
declare function ProseLead({ className, ...rest }: HTMLAttributes<HTMLParagraphElement>): react.JSX.Element;
|
|
1509
|
+
/** `.oc-prose`: typography for long-form text written without classes. */
|
|
1510
|
+
declare const Prose: react.ForwardRefExoticComponent<ProseProps & react.RefAttributes<HTMLElement>>;
|
|
1511
|
+
|
|
1512
|
+
interface RecoveryCodesProps extends Omit<HTMLAttributes<HTMLDivElement>, "title" | "onCopy"> {
|
|
1513
|
+
codes: string[];
|
|
1514
|
+
title?: ReactNode;
|
|
1515
|
+
warning?: ReactNode;
|
|
1516
|
+
copyLabel?: string;
|
|
1517
|
+
downloadLabel?: string;
|
|
1518
|
+
/** File name of the download (default `recovery-codes.txt`). */
|
|
1519
|
+
fileName?: string;
|
|
1520
|
+
onCopy?: (codes: string[]) => void;
|
|
1521
|
+
onDownload?: (codes: string[]) => void;
|
|
1522
|
+
}
|
|
1523
|
+
/** `.oc-recovery-codes`: warning panel with a code grid, "Copy all" and "Download .txt". */
|
|
1524
|
+
declare const RecoveryCodes: react.ForwardRefExoticComponent<RecoveryCodesProps & react.RefAttributes<HTMLDivElement>>;
|
|
1525
|
+
|
|
1526
|
+
interface SegmentedOption {
|
|
1527
|
+
value: string;
|
|
1528
|
+
label: ReactNode;
|
|
1529
|
+
}
|
|
1530
|
+
interface SegmentedProps extends Omit<HTMLAttributes<HTMLDivElement>, "onChange" | "defaultValue"> {
|
|
1531
|
+
options: SegmentedOption[];
|
|
1532
|
+
value?: string;
|
|
1533
|
+
defaultValue?: string;
|
|
1534
|
+
onChange?: (value: string) => void;
|
|
1535
|
+
/** Radio group name (generated when omitted). */
|
|
1536
|
+
name?: string;
|
|
1537
|
+
/** Full width. */
|
|
1538
|
+
block?: boolean;
|
|
1539
|
+
size?: "sm" | "md";
|
|
1540
|
+
}
|
|
1541
|
+
/** `.oc-segmented` radio group as a pill switcher. */
|
|
1542
|
+
declare const Segmented: react.ForwardRefExoticComponent<SegmentedProps & react.RefAttributes<HTMLDivElement>>;
|
|
1543
|
+
|
|
1544
|
+
interface SelectOption {
|
|
1545
|
+
value: string;
|
|
1546
|
+
label: ReactNode;
|
|
1547
|
+
disabled?: boolean;
|
|
1548
|
+
}
|
|
1549
|
+
interface SelectProps extends SelectHTMLAttributes<HTMLSelectElement> {
|
|
1550
|
+
/** Shortcut for `<option>` children. */
|
|
1551
|
+
options?: Array<SelectOption | string>;
|
|
1552
|
+
}
|
|
1553
|
+
/** `<select class="oc-select">` */
|
|
1554
|
+
declare const Select: react.ForwardRefExoticComponent<SelectProps & react.RefAttributes<HTMLSelectElement>>;
|
|
1555
|
+
|
|
1556
|
+
type SeverityLevel = "low" | "medium" | "high" | "critical";
|
|
1557
|
+
interface SeverityCardProps extends Omit<DetailsHTMLAttributes<HTMLDetailsElement>, "title"> {
|
|
1558
|
+
level: SeverityLevel;
|
|
1559
|
+
title: ReactNode;
|
|
1560
|
+
/** Small tags under the title, e.g. ["email", "password"]. */
|
|
1561
|
+
tags?: ReactNode[];
|
|
1562
|
+
/** Badge text; default the level name ("High"). */
|
|
1563
|
+
levelLabel?: ReactNode;
|
|
1564
|
+
icon?: ReactNode;
|
|
1565
|
+
/** Neutral colors (the finding is handled). */
|
|
1566
|
+
resolved?: boolean;
|
|
1567
|
+
actions?: ReactNode;
|
|
1568
|
+
/** Exclusive group: cards with the same name open one at a time. */
|
|
1569
|
+
name?: string;
|
|
1570
|
+
}
|
|
1571
|
+
/** `details.oc-severity-card`: expandable card colored by risk level. */
|
|
1572
|
+
declare const SeverityCard: react.ForwardRefExoticComponent<SeverityCardProps & react.RefAttributes<HTMLDetailsElement>>;
|
|
1573
|
+
|
|
1574
|
+
type SheetSide = "right" | "left" | "top" | "bottom";
|
|
1575
|
+
interface SheetProps extends Omit<DialogHTMLAttributes<HTMLDialogElement>, "title" | "open" | "onClose">, DialogState {
|
|
1576
|
+
/** Edge the panel slides from (default `right`). */
|
|
1577
|
+
side?: SheetSide;
|
|
1578
|
+
/** Wider panel (`oc-sheet-content--wide`). */
|
|
1579
|
+
wide?: boolean;
|
|
1580
|
+
title?: ReactNode;
|
|
1581
|
+
description?: ReactNode;
|
|
1582
|
+
/** Action row (`oc-sheet-footer`). */
|
|
1583
|
+
footer?: ReactNode;
|
|
1584
|
+
/** Accessible name of the close button. */
|
|
1585
|
+
closeLabel?: string;
|
|
1586
|
+
}
|
|
1587
|
+
/** Side panel on `<dialog class="oc-sheet">`. */
|
|
1588
|
+
declare const Sheet: react.ForwardRefExoticComponent<SheetProps & react.RefAttributes<HTMLDialogElement>>;
|
|
1589
|
+
|
|
1590
|
+
interface SidebarProps extends Omit<HTMLAttributes<HTMLElement>, "title"> {
|
|
1591
|
+
/** Icon-only mode. */
|
|
1592
|
+
collapsed?: boolean;
|
|
1593
|
+
/** Dock on the right. */
|
|
1594
|
+
right?: boolean;
|
|
1595
|
+
/** Floating card look. */
|
|
1596
|
+
floating?: boolean;
|
|
1597
|
+
/** Dark panel that stays dark in the light theme (`--dark`). */
|
|
1598
|
+
dark?: boolean;
|
|
1599
|
+
/** Fixed top area (logo, workspace switcher). */
|
|
1600
|
+
header?: ReactNode;
|
|
1601
|
+
/** Fixed bottom area (user). */
|
|
1602
|
+
footer?: ReactNode;
|
|
1603
|
+
}
|
|
1604
|
+
/** `<aside class="oc-sidebar">`: children go in the scrolling `oc-sidebar-content`. */
|
|
1605
|
+
declare const Sidebar: react.ForwardRefExoticComponent<SidebarProps & react.RefAttributes<HTMLElement>>;
|
|
1606
|
+
interface SidebarGroupProps extends Omit<HTMLAttributes<HTMLDivElement>, "title"> {
|
|
1607
|
+
/** Group heading (`oc-sidebar-group-label`). */
|
|
1608
|
+
label?: ReactNode;
|
|
1609
|
+
}
|
|
1610
|
+
/** `.oc-sidebar-group` with an optional label. */
|
|
1611
|
+
declare const SidebarGroup: react.ForwardRefExoticComponent<SidebarGroupProps & react.RefAttributes<HTMLDivElement>>;
|
|
1612
|
+
/** `.oc-sidebar-separator` */
|
|
1613
|
+
declare function SidebarSeparator({ className, ...rest }: HTMLAttributes<HTMLDivElement>): react.JSX.Element;
|
|
1614
|
+
/** `ul.oc-sidebar-menu` */
|
|
1615
|
+
declare const SidebarMenu: react.ForwardRefExoticComponent<HTMLAttributes<HTMLUListElement> & react.RefAttributes<HTMLUListElement>>;
|
|
1616
|
+
/** `<li>` of a sidebar menu. */
|
|
1617
|
+
declare function SidebarMenuItem(props: LiHTMLAttributes<HTMLLIElement>): react.JSX.Element;
|
|
1618
|
+
interface SidebarMenuButtonProps extends AnchorHTMLAttributes<HTMLAnchorElement> {
|
|
1619
|
+
/** Inline SVG icon (`oc-sidebar-menu-icon`). */
|
|
1620
|
+
icon?: ReactNode;
|
|
1621
|
+
/** Count pill on the right. */
|
|
1622
|
+
badge?: ReactNode;
|
|
1623
|
+
/** Current page (`aria-current="page"`). */
|
|
1624
|
+
current?: boolean;
|
|
1625
|
+
disabled?: boolean;
|
|
1626
|
+
size?: "md" | "lg";
|
|
1627
|
+
/** Wrap the children in `oc-sidebar-menu-label` (hidden when collapsed). Default true. */
|
|
1628
|
+
label?: boolean;
|
|
1629
|
+
}
|
|
1630
|
+
/** `.oc-sidebar-menu-button`: a link (or button when no `href`). */
|
|
1631
|
+
declare const SidebarMenuButton: react.ForwardRefExoticComponent<SidebarMenuButtonProps & react.RefAttributes<HTMLAnchorElement>>;
|
|
1632
|
+
interface SidebarCollapsibleProps extends Omit<HTMLAttributes<HTMLDetailsElement>, "title" | "onToggle"> {
|
|
1633
|
+
icon?: ReactNode;
|
|
1634
|
+
/** Summary label. */
|
|
1635
|
+
label: ReactNode;
|
|
1636
|
+
open?: boolean;
|
|
1637
|
+
defaultOpen?: boolean;
|
|
1638
|
+
onOpenChange?: (open: boolean) => void;
|
|
1639
|
+
}
|
|
1640
|
+
/** `details.oc-sidebar-collapsible`: children are the `<li>` items of the nested `oc-sidebar-menu-sub`. */
|
|
1641
|
+
declare const SidebarCollapsible: react.ForwardRefExoticComponent<SidebarCollapsibleProps & react.RefAttributes<HTMLDetailsElement>>;
|
|
1642
|
+
|
|
1643
|
+
interface SkeletonProps extends HTMLAttributes<HTMLDivElement> {
|
|
1644
|
+
variant?: "circle" | "title" | "text" | "rect";
|
|
1645
|
+
}
|
|
1646
|
+
/** `<div class="oc-skeleton oc-skeleton--{variant}">` */
|
|
1647
|
+
declare const Skeleton: react.ForwardRefExoticComponent<SkeletonProps & react.RefAttributes<HTMLDivElement>>;
|
|
1648
|
+
|
|
1649
|
+
interface SortableRowProps extends HTMLAttributes<HTMLTableRowElement> {
|
|
1650
|
+
/** Accessible name of the grip, e.g. "Move Install". */
|
|
1651
|
+
gripLabel: string;
|
|
1652
|
+
/** This row is being moved (`.is-dragging`). */
|
|
1653
|
+
dragging?: boolean;
|
|
1654
|
+
/** Show the drop line above or below this row. */
|
|
1655
|
+
drop?: "before" | "after" | null;
|
|
1656
|
+
/** Locked row: no dragging, grip disabled. */
|
|
1657
|
+
locked?: boolean;
|
|
1658
|
+
/** Picked up with the keyboard (grip `aria-pressed`). */
|
|
1659
|
+
grabbed?: boolean;
|
|
1660
|
+
/** Keyboard handler for the grip (e.g. ArrowUp / ArrowDown to move). */
|
|
1661
|
+
onGripKeyDown?: (e: React.KeyboardEvent<HTMLButtonElement>) => void;
|
|
1662
|
+
children: ReactNode;
|
|
1663
|
+
}
|
|
1664
|
+
/** `tr.oc-sortable-row[draggable]` with a `button.oc-sortable-row-grip` in the first cell. */
|
|
1665
|
+
declare const SortableRow: react.ForwardRefExoticComponent<SortableRowProps & react.RefAttributes<HTMLTableRowElement>>;
|
|
1666
|
+
|
|
1667
|
+
interface StackCardProps extends Omit<HTMLAttributes<HTMLElement>, "title"> {
|
|
1668
|
+
title: ReactNode;
|
|
1669
|
+
/** Link of the title; it covers the whole card. */
|
|
1670
|
+
href: string;
|
|
1671
|
+
meta?: ReactNode;
|
|
1672
|
+
/** Badge text, e.g. "12 videos". */
|
|
1673
|
+
count?: ReactNode;
|
|
1674
|
+
/** Show the count as a side panel (`--panel`). */
|
|
1675
|
+
panel?: boolean;
|
|
1676
|
+
/** Props for the cover (MediaThumb). */
|
|
1677
|
+
thumb?: MediaThumbProps;
|
|
1678
|
+
}
|
|
1679
|
+
/** `article.oc-stack-card`: cover with two layers behind it and a count badge. */
|
|
1680
|
+
declare const StackCard: react.ForwardRefExoticComponent<StackCardProps & react.RefAttributes<HTMLElement>>;
|
|
1681
|
+
|
|
1682
|
+
interface StackListItem {
|
|
1683
|
+
label: ReactNode;
|
|
1684
|
+
/** Optional glyph or SVG before the label (decorative). */
|
|
1685
|
+
icon?: ReactNode;
|
|
1686
|
+
}
|
|
1687
|
+
interface StackListProps extends HTMLAttributes<HTMLUListElement> {
|
|
1688
|
+
/** Strings, or objects with an icon. */
|
|
1689
|
+
items: Array<ReactNode | StackListItem>;
|
|
1690
|
+
neutral?: boolean;
|
|
1691
|
+
size?: "default" | "sm";
|
|
1692
|
+
}
|
|
1693
|
+
/** `<ul class="oc-stack-list">`: technology pills. Set an accent with `className="oc-accent--violet"`. */
|
|
1694
|
+
declare const StackList: react.ForwardRefExoticComponent<StackListProps & react.RefAttributes<HTMLUListElement>>;
|
|
1695
|
+
|
|
1696
|
+
/** `.oc-stat-card-grid`: responsive grid for a row of stat cards. */
|
|
1697
|
+
declare const StatCardGrid: react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & react.RefAttributes<HTMLDivElement>>;
|
|
1698
|
+
interface StatCardProps extends Omit<HTMLAttributes<HTMLElement>, "onClick"> {
|
|
1699
|
+
value: ReactNode;
|
|
1700
|
+
label: ReactNode;
|
|
1701
|
+
icon?: ReactNode;
|
|
1702
|
+
/** Trend chip text after the value, e.g. "+12%". */
|
|
1703
|
+
trend?: ReactNode;
|
|
1704
|
+
trendDirection?: "up" | "down";
|
|
1705
|
+
tone?: "default" | "accent" | "success" | "warning";
|
|
1706
|
+
/** Colored start edge. */
|
|
1707
|
+
stripe?: boolean;
|
|
1708
|
+
href?: string;
|
|
1709
|
+
onClick?: () => void;
|
|
1710
|
+
}
|
|
1711
|
+
/** `.oc-stat-card`: compact KPI tile. */
|
|
1712
|
+
declare function StatCard({ value, label, icon, trend, trendDirection, tone, stripe, href, onClick, className, ...rest }: StatCardProps): react.JSX.Element;
|
|
1713
|
+
|
|
1714
|
+
interface StepperStep {
|
|
1715
|
+
label: ReactNode;
|
|
1716
|
+
/** Small text under the label, e.g. `2/4`. */
|
|
1717
|
+
meta?: ReactNode;
|
|
1718
|
+
}
|
|
1719
|
+
interface StepperProps extends Omit<HTMLAttributes<HTMLOListElement>, "onChange"> {
|
|
1720
|
+
steps: StepperStep[];
|
|
1721
|
+
/** Index of the active step (0-based). Earlier steps are done, later ones disabled. */
|
|
1722
|
+
current: number;
|
|
1723
|
+
horizontal?: boolean;
|
|
1724
|
+
/** Called when a done step is clicked. */
|
|
1725
|
+
onStepChange?: (index: number) => void;
|
|
1726
|
+
}
|
|
1727
|
+
/** `<ol class="oc-stepper">`: done, active and upcoming steps. */
|
|
1728
|
+
declare const Stepper: react.ForwardRefExoticComponent<StepperProps & react.RefAttributes<HTMLOListElement>>;
|
|
1729
|
+
|
|
1730
|
+
interface SwitchProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "type" | "role"> {
|
|
1731
|
+
/** Class for the wrapping label (`className` goes to the input). */
|
|
1732
|
+
labelClassName?: string;
|
|
1733
|
+
}
|
|
1734
|
+
/** `<label class="oc-switch"><input type="checkbox" role="switch">`. Works controlled (`checked`) or uncontrolled. */
|
|
1735
|
+
declare const Switch: react.ForwardRefExoticComponent<SwitchProps & react.RefAttributes<HTMLInputElement>>;
|
|
1736
|
+
|
|
1737
|
+
interface TableProps extends TableHTMLAttributes<HTMLTableElement> {
|
|
1738
|
+
striped?: boolean;
|
|
1739
|
+
compact?: boolean;
|
|
1740
|
+
borderless?: boolean;
|
|
1741
|
+
sticky?: boolean;
|
|
1742
|
+
/** `<caption>` text. */
|
|
1743
|
+
caption?: ReactNode;
|
|
1744
|
+
/** Class for the `oc-table-wrap` scroll container. */
|
|
1745
|
+
wrapClassName?: string;
|
|
1746
|
+
}
|
|
1747
|
+
/** `div.oc-table-wrap > table.oc-table` */
|
|
1748
|
+
declare const Table: react.ForwardRefExoticComponent<TableProps & react.RefAttributes<HTMLTableElement>>;
|
|
1749
|
+
interface TableSortProps extends AnchorHTMLAttributes<HTMLAnchorElement> {
|
|
1750
|
+
}
|
|
1751
|
+
/** `a.oc-table-sort` inside a `<th aria-sort="ascending|descending">`. */
|
|
1752
|
+
declare const TableSort: react.ForwardRefExoticComponent<TableSortProps & react.RefAttributes<HTMLAnchorElement>>;
|
|
1753
|
+
/** `td.oc-table-actions` */
|
|
1754
|
+
declare function TableActions({ className, ...rest }: TdHTMLAttributes<HTMLTableCellElement>): react.JSX.Element;
|
|
1755
|
+
type RowActionProps = {
|
|
1756
|
+
tone?: "default" | "destructive" | "primary" | "success";
|
|
1757
|
+
} & ((AnchorHTMLAttributes<HTMLAnchorElement> & {
|
|
1758
|
+
href: string;
|
|
1759
|
+
}) | (ButtonHTMLAttributes<HTMLButtonElement> & {
|
|
1760
|
+
href?: undefined;
|
|
1761
|
+
}));
|
|
1762
|
+
/** `.oc-table-row-action`: link (with `href`) or button. */
|
|
1763
|
+
declare function TableRowAction({ tone, className, ...props }: RowActionProps): react.JSX.Element;
|
|
1764
|
+
/** Empty-state row: `<tr class="oc-table-empty"><td colspan>`; put an `<EmptyState>` inside. */
|
|
1765
|
+
declare function TableEmpty({ colSpan, children, ...rest }: HTMLAttributes<HTMLTableRowElement> & {
|
|
1766
|
+
colSpan: number;
|
|
1767
|
+
}): react.JSX.Element;
|
|
1768
|
+
|
|
1769
|
+
type TableActionTone = "default" | "primary" | "success" | "destructive";
|
|
1770
|
+
type IconActionProps = {
|
|
1771
|
+
/** Accessible name; also used as the hover title. */
|
|
1772
|
+
label: string;
|
|
1773
|
+
tone?: TableActionTone;
|
|
1774
|
+
children: ReactNode;
|
|
1775
|
+
} & ((Omit<AnchorHTMLAttributes<HTMLAnchorElement>, "children"> & {
|
|
1776
|
+
href: string;
|
|
1777
|
+
}) | (Omit<ButtonHTMLAttributes<HTMLButtonElement>, "children"> & {
|
|
1778
|
+
href?: undefined;
|
|
1779
|
+
}));
|
|
1780
|
+
/** `.oc-table-actions-icon`: a link (with `href`) or a button showing only an icon. */
|
|
1781
|
+
declare function TableActionIcon({ label, tone, className, children, ...props }: IconActionProps): react.JSX.Element;
|
|
1782
|
+
interface TableActionsMenuProps extends HTMLAttributes<HTMLDivElement> {
|
|
1783
|
+
/** Accessible name of the three dots trigger, e.g. "Actions for Ada". */
|
|
1784
|
+
label: string;
|
|
1785
|
+
/** Menu items: `<a class="oc-dropdown-item">`, `<button class="oc-dropdown-item">`, separators. */
|
|
1786
|
+
children: ReactNode;
|
|
1787
|
+
}
|
|
1788
|
+
/** `.oc-table-actions-more` trigger + `.oc-dropdown-menu[popover]`; the browser opens and closes it. */
|
|
1789
|
+
declare const TableActionsMenu: react.ForwardRefExoticComponent<TableActionsMenuProps & react.RefAttributes<HTMLDivElement>>;
|
|
1790
|
+
|
|
1791
|
+
interface TableCompactColumn {
|
|
1792
|
+
key: string;
|
|
1793
|
+
label: ReactNode;
|
|
1794
|
+
/** Right aligned, tabular figures (`data-numeric`). */
|
|
1795
|
+
numeric?: boolean;
|
|
1796
|
+
/** The cell may wrap (`data-wrap`). */
|
|
1797
|
+
wrap?: boolean;
|
|
1798
|
+
}
|
|
1799
|
+
interface TableCompactProps extends HTMLAttributes<HTMLDivElement> {
|
|
1800
|
+
columns?: TableCompactColumn[];
|
|
1801
|
+
rows?: Array<Record<string, ReactNode>>;
|
|
1802
|
+
/** Total row: one value per column key (missing keys stay empty). */
|
|
1803
|
+
footer?: Record<string, ReactNode>;
|
|
1804
|
+
bordered?: boolean;
|
|
1805
|
+
plain?: boolean;
|
|
1806
|
+
}
|
|
1807
|
+
/** `.oc-table-compact`: small striped table for inside cards. */
|
|
1808
|
+
declare const TableCompact: react.ForwardRefExoticComponent<TableCompactProps & react.RefAttributes<HTMLDivElement>>;
|
|
1809
|
+
|
|
1810
|
+
interface TabItem {
|
|
1811
|
+
value: string;
|
|
1812
|
+
label: ReactNode;
|
|
1813
|
+
content: ReactNode;
|
|
1814
|
+
}
|
|
1815
|
+
interface TabsProps extends Omit<HTMLAttributes<HTMLDivElement>, "onChange" | "defaultValue"> {
|
|
1816
|
+
tabs: TabItem[];
|
|
1817
|
+
value?: string;
|
|
1818
|
+
defaultValue?: string;
|
|
1819
|
+
onChange?: (value: string) => void;
|
|
1820
|
+
/** Radio group name (generated when omitted). */
|
|
1821
|
+
name?: string;
|
|
1822
|
+
}
|
|
1823
|
+
/** `.oc-tabset`: radio triggers + panels; CSS (`:has()`) shows the selected panel. */
|
|
1824
|
+
declare const Tabs: react.ForwardRefExoticComponent<TabsProps & react.RefAttributes<HTMLDivElement>>;
|
|
1825
|
+
|
|
1826
|
+
interface TagInputProps extends Omit<HTMLAttributes<HTMLDivElement>, "onChange" | "defaultValue"> {
|
|
1827
|
+
value?: string[];
|
|
1828
|
+
defaultValue?: string[];
|
|
1829
|
+
onChange?: (tags: string[]) => void;
|
|
1830
|
+
/** Suggestion buttons below the control (already used tags are hidden). */
|
|
1831
|
+
suggestions?: string[];
|
|
1832
|
+
placeholder?: string;
|
|
1833
|
+
/** Accessible name of the text input. */
|
|
1834
|
+
label?: string;
|
|
1835
|
+
disabled?: boolean;
|
|
1836
|
+
}
|
|
1837
|
+
/** `.oc-tag-input`: chips with remove buttons and a free-text input (Enter or comma adds, Backspace removes). */
|
|
1838
|
+
declare const TagInput: react.ForwardRefExoticComponent<TagInputProps & react.RefAttributes<HTMLDivElement>>;
|
|
1839
|
+
|
|
1840
|
+
type TerminalLogLevel = "info" | "success" | "warn" | "error" | "debug";
|
|
1841
|
+
interface TerminalLogLine {
|
|
1842
|
+
level: TerminalLogLevel;
|
|
1843
|
+
message: ReactNode;
|
|
1844
|
+
/** "09:41:02". Leave out for a two-column line. */
|
|
1845
|
+
time?: string;
|
|
1846
|
+
/** Text in the level column (defaults to the level name; "ok" for success). */
|
|
1847
|
+
label?: string;
|
|
1848
|
+
}
|
|
1849
|
+
interface TerminalLogProps extends Omit<HTMLAttributes<HTMLDivElement>, "title"> {
|
|
1850
|
+
lines: TerminalLogLine[];
|
|
1851
|
+
title?: ReactNode;
|
|
1852
|
+
/** Text next to the pulsing dot ("Live"). No dot when empty. */
|
|
1853
|
+
status?: ReactNode;
|
|
1854
|
+
/** Prompt line with a blinking cursor. `true` = empty prompt. */
|
|
1855
|
+
prompt?: ReactNode | true;
|
|
1856
|
+
/** Max height of the body, e.g. "12rem". */
|
|
1857
|
+
height?: string;
|
|
1858
|
+
/** Keep the newest line in view. Default true. */
|
|
1859
|
+
autoScroll?: boolean;
|
|
1860
|
+
}
|
|
1861
|
+
/** `.oc-terminal-log`: dark console window. */
|
|
1862
|
+
declare const TerminalLog: react.ForwardRefExoticComponent<TerminalLogProps & react.RefAttributes<HTMLDivElement>>;
|
|
1863
|
+
|
|
1864
|
+
interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {
|
|
1865
|
+
error?: boolean;
|
|
1866
|
+
}
|
|
1867
|
+
/** `<textarea class="oc-input">` */
|
|
1868
|
+
declare const Textarea: react.ForwardRefExoticComponent<TextareaProps & react.RefAttributes<HTMLTextAreaElement>>;
|
|
1869
|
+
|
|
1870
|
+
type ThemeMode = "system" | "light" | "dark";
|
|
1871
|
+
interface ThemeSwitchProps extends Omit<HTMLAttributes<HTMLElement>, "onChange" | "defaultValue"> {
|
|
1872
|
+
value?: ThemeMode;
|
|
1873
|
+
defaultValue?: ThemeMode;
|
|
1874
|
+
onChange?: (mode: ThemeMode) => void;
|
|
1875
|
+
/** Which modes to offer (default all three). */
|
|
1876
|
+
modes?: ThemeMode[];
|
|
1877
|
+
/** Radio group name (generated when omitted). */
|
|
1878
|
+
name?: string;
|
|
1879
|
+
/** Render a `div role="radiogroup"` (compact app bars) instead of a `fieldset`. */
|
|
1880
|
+
as?: "fieldset" | "div";
|
|
1881
|
+
}
|
|
1882
|
+
/**
|
|
1883
|
+
* `.oc-theme-switch` radio group. The CSS applies `color-scheme` through `:has()`,
|
|
1884
|
+
* so no state is needed; `onChange` lets you persist the choice.
|
|
1885
|
+
*/
|
|
1886
|
+
declare const ThemeSwitch: react.ForwardRefExoticComponent<ThemeSwitchProps & react.RefAttributes<HTMLElement>>;
|
|
1887
|
+
|
|
1888
|
+
interface TimeInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "value" | "defaultValue" | "onChange" | "type" | "list"> {
|
|
1889
|
+
/** "HH:mm" or "" (empty). */
|
|
1890
|
+
value?: string;
|
|
1891
|
+
defaultValue?: string;
|
|
1892
|
+
onChange?: (value: string) => void;
|
|
1893
|
+
/** Suggested times shown by the browser while typing (datalist). */
|
|
1894
|
+
slots?: string[];
|
|
1895
|
+
error?: boolean;
|
|
1896
|
+
}
|
|
1897
|
+
/** Keep up to 4 digits and put a colon after the first two: "0930" -> "09:30". Short input is completed on blur. */
|
|
1898
|
+
declare function formatTime24h(raw: string): string;
|
|
1899
|
+
/** `.oc-time-input`: 24h text field (pattern HH:mm) with optional datalist suggestions. */
|
|
1900
|
+
declare const TimeInput: react.ForwardRefExoticComponent<TimeInputProps & react.RefAttributes<HTMLInputElement>>;
|
|
1901
|
+
|
|
1902
|
+
interface TimelineEntry {
|
|
1903
|
+
/** Year or date label. */
|
|
1904
|
+
date: ReactNode;
|
|
1905
|
+
/** Machine-readable date; renders a <time> when set. */
|
|
1906
|
+
dateTime?: string;
|
|
1907
|
+
title?: ReactNode;
|
|
1908
|
+
text?: ReactNode;
|
|
1909
|
+
/** Marks the latest entry (filled dot). */
|
|
1910
|
+
current?: boolean;
|
|
1911
|
+
}
|
|
1912
|
+
interface TimelineProps extends HTMLAttributes<HTMLOListElement> {
|
|
1913
|
+
items: TimelineEntry[];
|
|
1914
|
+
/** More space between entries. */
|
|
1915
|
+
size?: "default" | "lg";
|
|
1916
|
+
/** Line in the accent color. */
|
|
1917
|
+
accent?: boolean;
|
|
1918
|
+
}
|
|
1919
|
+
/** `<ol class="oc-timeline">` with dated entries. Use `className="oc-accent--green"` for another accent. */
|
|
1920
|
+
declare const Timeline: react.ForwardRefExoticComponent<TimelineProps & react.RefAttributes<HTMLOListElement>>;
|
|
1921
|
+
|
|
1922
|
+
type ToastVariant = "success" | "error" | "warning" | "info";
|
|
1923
|
+
interface ToastProps extends Omit<HTMLAttributes<HTMLDivElement>, "title"> {
|
|
1924
|
+
variant?: ToastVariant;
|
|
1925
|
+
title: ReactNode;
|
|
1926
|
+
description?: ReactNode;
|
|
1927
|
+
/** Custom status glyph (defaults per variant). */
|
|
1928
|
+
icon?: ReactNode;
|
|
1929
|
+
/** Shows the dismiss button. */
|
|
1930
|
+
onDismiss?: () => void;
|
|
1931
|
+
dismissLabel?: string;
|
|
1932
|
+
}
|
|
1933
|
+
/** One `.oc-toast` notification (`role="alert"` for errors, `status` otherwise). */
|
|
1934
|
+
declare const Toast: react.ForwardRefExoticComponent<ToastProps & react.RefAttributes<HTMLDivElement>>;
|
|
1935
|
+
/** `.oc-toast-container` (fixed bottom right; `top` or `static` for in-flow). */
|
|
1936
|
+
declare const ToastContainer: react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & {
|
|
1937
|
+
top?: boolean;
|
|
1938
|
+
static?: boolean;
|
|
1939
|
+
} & react.RefAttributes<HTMLDivElement>>;
|
|
1940
|
+
interface ToastOptions {
|
|
1941
|
+
variant?: ToastVariant;
|
|
1942
|
+
title: ReactNode;
|
|
1943
|
+
description?: ReactNode;
|
|
1944
|
+
/** Auto-dismiss after ms (default 5000). Use 0 to keep the toast until dismissed. */
|
|
1945
|
+
duration?: number;
|
|
1946
|
+
}
|
|
1947
|
+
interface ToastApi {
|
|
1948
|
+
/** Queue a toast; returns its id. */
|
|
1949
|
+
toast: (options: ToastOptions) => number;
|
|
1950
|
+
dismiss: (id?: number) => void;
|
|
1951
|
+
}
|
|
1952
|
+
interface ToastProviderProps {
|
|
1953
|
+
children?: ReactNode;
|
|
1954
|
+
/** Stack at the top instead of the bottom. */
|
|
1955
|
+
top?: boolean;
|
|
1956
|
+
/** Default auto-dismiss in ms (default 5000). */
|
|
1957
|
+
duration?: number;
|
|
1958
|
+
/** Maximum toasts shown at once (oldest are dropped; default 5). */
|
|
1959
|
+
limit?: number;
|
|
1960
|
+
}
|
|
1961
|
+
/** Holds the toast queue and renders the fixed `.oc-toast-container`. Use `useToast()` below it. */
|
|
1962
|
+
declare function ToastProvider({ children, top, duration, limit }: ToastProviderProps): react.JSX.Element;
|
|
1963
|
+
/** `const { toast, dismiss } = useToast()`: needs a surrounding `<ToastProvider>`. */
|
|
1964
|
+
declare function useToast(): ToastApi;
|
|
1965
|
+
|
|
1966
|
+
interface ToggleFieldProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "type" | "role"> {
|
|
1967
|
+
label: ReactNode;
|
|
1968
|
+
description?: ReactNode;
|
|
1969
|
+
/** Bordered box. */
|
|
1970
|
+
card?: boolean;
|
|
1971
|
+
/** Switch first, text after it. */
|
|
1972
|
+
reverse?: boolean;
|
|
1973
|
+
/** Class for the row (`className` goes to the input). */
|
|
1974
|
+
fieldClassName?: string;
|
|
1975
|
+
}
|
|
1976
|
+
/** `.oc-toggle-field`: the whole row is the label, so clicking the text flips the switch. */
|
|
1977
|
+
declare const ToggleField: react.ForwardRefExoticComponent<ToggleFieldProps & react.RefAttributes<HTMLInputElement>>;
|
|
1978
|
+
|
|
1979
|
+
interface TooltipProps extends Omit<HTMLAttributes<HTMLSpanElement>, "content"> {
|
|
1980
|
+
/** Tooltip text (`data-tooltip`). */
|
|
1981
|
+
content: string;
|
|
1982
|
+
children: ReactNode;
|
|
1983
|
+
}
|
|
1984
|
+
/** `<span class="oc-tooltip" data-tooltip>`: CSS-only tooltip around its children. */
|
|
1985
|
+
declare const Tooltip: react.ForwardRefExoticComponent<TooltipProps & react.RefAttributes<HTMLSpanElement>>;
|
|
1986
|
+
|
|
1987
|
+
type TopProgressTone = "default" | "success" | "warning" | "danger" | "brand";
|
|
1988
|
+
interface TopProgressProps extends ProgressHTMLAttributes<HTMLProgressElement> {
|
|
1989
|
+
/** Show the bar (a request or page load is running). Default true. */
|
|
1990
|
+
active?: boolean;
|
|
1991
|
+
tone?: TopProgressTone;
|
|
1992
|
+
/** 4px instead of 2px. */
|
|
1993
|
+
large?: boolean;
|
|
1994
|
+
/** In the normal flow (e.g. inside a card) instead of fixed at the top. */
|
|
1995
|
+
static?: boolean;
|
|
1996
|
+
/** Fade-out time in ms before the bar is hidden. */
|
|
1997
|
+
fadeMs?: number;
|
|
1998
|
+
}
|
|
1999
|
+
/** `progress.oc-top-progress`: thin loading bar at the top of the page. */
|
|
2000
|
+
declare const TopProgress: react.ForwardRefExoticComponent<TopProgressProps & react.RefAttributes<HTMLProgressElement>>;
|
|
2001
|
+
|
|
2002
|
+
interface TreeItem {
|
|
2003
|
+
label: ReactNode;
|
|
2004
|
+
/** Leaf link target (renders the label as `a.oc-tree-label`). */
|
|
2005
|
+
href?: string;
|
|
2006
|
+
icon?: ReactNode;
|
|
2007
|
+
count?: ReactNode;
|
|
2008
|
+
actions?: ReactNode;
|
|
2009
|
+
/** Child items: makes this item a folder. */
|
|
2010
|
+
children?: TreeItem[];
|
|
2011
|
+
/** Folder starts open. */
|
|
2012
|
+
open?: boolean;
|
|
2013
|
+
/** Current / selected item. */
|
|
2014
|
+
current?: boolean;
|
|
2015
|
+
muted?: boolean;
|
|
2016
|
+
}
|
|
2017
|
+
interface TreeProps extends HTMLAttributes<HTMLDivElement> {
|
|
2018
|
+
items: TreeItem[];
|
|
2019
|
+
/** Sticky root row content (label), with optional `headActions`. */
|
|
2020
|
+
head?: ReactNode;
|
|
2021
|
+
headActions?: ReactNode;
|
|
2022
|
+
/** Actions only show on hover / focus. */
|
|
2023
|
+
quiet?: boolean;
|
|
2024
|
+
/** No card frame. */
|
|
2025
|
+
flush?: boolean;
|
|
2026
|
+
}
|
|
2027
|
+
/** `.oc-tree`: nested tree list with a sticky action column. */
|
|
2028
|
+
declare const Tree: react.ForwardRefExoticComponent<TreeProps & react.RefAttributes<HTMLDivElement>>;
|
|
2029
|
+
|
|
2030
|
+
interface UpgradeBannerUsage {
|
|
2031
|
+
label: ReactNode;
|
|
2032
|
+
value: number;
|
|
2033
|
+
max: number;
|
|
2034
|
+
}
|
|
2035
|
+
interface UpgradeBannerProps extends Omit<HTMLAttributes<HTMLElement>, "title"> {
|
|
2036
|
+
title: ReactNode;
|
|
2037
|
+
/** Plan pill next to the title, e.g. "Free". */
|
|
2038
|
+
plan?: ReactNode;
|
|
2039
|
+
/** Explanation; also accepted as children. */
|
|
2040
|
+
text?: ReactNode;
|
|
2041
|
+
usage?: UpgradeBannerUsage;
|
|
2042
|
+
icon?: ReactNode;
|
|
2043
|
+
actions?: ReactNode;
|
|
2044
|
+
premium?: boolean;
|
|
2045
|
+
compact?: boolean;
|
|
2046
|
+
onDismiss?: () => void;
|
|
2047
|
+
dismissLabel?: string;
|
|
2048
|
+
}
|
|
2049
|
+
/** `.oc-upgrade-banner`: free-plan limits callout with an upgrade action. */
|
|
2050
|
+
declare const UpgradeBanner: react.ForwardRefExoticComponent<UpgradeBannerProps & react.RefAttributes<HTMLElement>>;
|
|
2051
|
+
|
|
2052
|
+
interface UserProps extends HTMLAttributes<HTMLDivElement> {
|
|
2053
|
+
name: ReactNode;
|
|
2054
|
+
email?: ReactNode;
|
|
2055
|
+
/** Initials shown in the avatar. */
|
|
2056
|
+
initials?: string;
|
|
2057
|
+
/** Avatar image URL (wins over initials). */
|
|
2058
|
+
avatarSrc?: string;
|
|
2059
|
+
avatarSize?: AvatarSize;
|
|
2060
|
+
}
|
|
2061
|
+
/** `.oc-user`: avatar with name and e-mail. */
|
|
2062
|
+
declare const User: react.ForwardRefExoticComponent<UserProps & react.RefAttributes<HTMLDivElement>>;
|
|
2063
|
+
|
|
2064
|
+
interface VersionBannerProps extends HTMLAttributes<HTMLDivElement> {
|
|
2065
|
+
/** The new version, e.g. "v0.6.0". Empty = no banner. */
|
|
2066
|
+
version?: string | null;
|
|
2067
|
+
/** Long text; default "New version (vX) available - reload the page". */
|
|
2068
|
+
text?: ReactNode;
|
|
2069
|
+
/** Short text below 40rem; default "New version". */
|
|
2070
|
+
short?: ReactNode;
|
|
2071
|
+
actionLabel?: ReactNode;
|
|
2072
|
+
/** Custom reload; without it the action is a plain link to the current page. */
|
|
2073
|
+
onReload?: () => void;
|
|
2074
|
+
tone?: "warning" | "info" | "success";
|
|
2075
|
+
floating?: boolean;
|
|
2076
|
+
}
|
|
2077
|
+
/** `.oc-version-banner`: "new version available - reload" chip. */
|
|
2078
|
+
declare const VersionBanner: react.ForwardRefExoticComponent<VersionBannerProps & react.RefAttributes<HTMLDivElement>>;
|
|
2079
|
+
|
|
2080
|
+
interface BlockAboutTimelineProps extends Omit<HTMLAttributes<HTMLElement>, "title"> {
|
|
2081
|
+
eyebrow?: ReactNode;
|
|
2082
|
+
/** Heading; wrap a part in `<span className="oc-text-gradient">`. */
|
|
2083
|
+
title: ReactNode;
|
|
2084
|
+
/** Paragraphs (or any content) below the title. */
|
|
2085
|
+
children?: ReactNode;
|
|
2086
|
+
timeline?: TimelineEntry[];
|
|
2087
|
+
/** Picture URL; without it the media is an accent gradient. */
|
|
2088
|
+
image?: string;
|
|
2089
|
+
imageAlt?: string;
|
|
2090
|
+
/** Badge on the picture (e.g. <><strong>12+</strong>years</>). */
|
|
2091
|
+
badge?: ReactNode;
|
|
2092
|
+
/** Picture on the right. */
|
|
2093
|
+
reverse?: boolean;
|
|
2094
|
+
}
|
|
2095
|
+
/** `.oc-block-about`: picture next to the company story with a year timeline. */
|
|
2096
|
+
declare const BlockAboutTimeline: react.ForwardRefExoticComponent<BlockAboutTimelineProps & react.RefAttributes<HTMLElement>>;
|
|
2097
|
+
|
|
2098
|
+
interface AppHeaderNavItem {
|
|
2099
|
+
label: ReactNode;
|
|
2100
|
+
href: string;
|
|
2101
|
+
current?: boolean;
|
|
2102
|
+
}
|
|
2103
|
+
interface BlockAppHeaderProps extends Omit<HTMLAttributes<HTMLElement>, "title"> {
|
|
2104
|
+
/** Id of the sidebar toggle checkbox (see BlockAppShell). Omit to hide the toggle button. */
|
|
2105
|
+
toggleFor?: string;
|
|
2106
|
+
toggleLabel?: string;
|
|
2107
|
+
/** Module navigation links. */
|
|
2108
|
+
nav?: AppHeaderNavItem[];
|
|
2109
|
+
navLabel?: string;
|
|
2110
|
+
/** Right-aligned actions: theme switch, switchers, user menu. */
|
|
2111
|
+
actions?: ReactNode;
|
|
2112
|
+
/** Optional page title (`oc-block-appbar-title`). */
|
|
2113
|
+
title?: ReactNode;
|
|
2114
|
+
}
|
|
2115
|
+
/** `.oc-block-appbar`: top bar with sidebar toggle, module navigation and actions. */
|
|
2116
|
+
declare const BlockAppHeader: react.ForwardRefExoticComponent<BlockAppHeaderProps & react.RefAttributes<HTMLElement>>;
|
|
2117
|
+
|
|
2118
|
+
interface BlockAppShellProps extends HTMLAttributes<HTMLDivElement> {
|
|
2119
|
+
/** A `<Sidebar>`; rendered as the first grid child. */
|
|
2120
|
+
sidebar: ReactNode;
|
|
2121
|
+
/** A `<BlockAppHeader toggleFor={toggleId}>`. */
|
|
2122
|
+
header?: ReactNode;
|
|
2123
|
+
/** Breadcrumb strip under the header bar. */
|
|
2124
|
+
breadcrumbs?: BreadcrumbItemData[];
|
|
2125
|
+
/** Id of the collapse checkbox; pass the same value to `BlockAppHeader`'s `toggleFor`. */
|
|
2126
|
+
toggleId?: string;
|
|
2127
|
+
/** Shell height (`--oc-block-shell-height`, default 100dvh). */
|
|
2128
|
+
height?: string;
|
|
2129
|
+
}
|
|
2130
|
+
/** `.oc-block-shell`: sidebar, header bar, breadcrumb strip and the scrolling content. */
|
|
2131
|
+
declare const BlockAppShell: react.ForwardRefExoticComponent<BlockAppShellProps & react.RefAttributes<HTMLDivElement>>;
|
|
2132
|
+
|
|
2133
|
+
interface BlockAuthProps extends Omit<HTMLAttributes<HTMLDivElement>, "title" | "onSubmit"> {
|
|
2134
|
+
title?: ReactNode;
|
|
2135
|
+
subtitle?: ReactNode;
|
|
2136
|
+
submitLabel?: ReactNode;
|
|
2137
|
+
/** Label of the secondary (social) button; omit to hide it together with the divider. */
|
|
2138
|
+
socialLabel?: ReactNode;
|
|
2139
|
+
dividerLabel?: ReactNode;
|
|
2140
|
+
/** Text under the card, e.g. `Don't have an account? <a href="#">Sign up</a>`. */
|
|
2141
|
+
footer?: ReactNode;
|
|
2142
|
+
onSubmit?: (values: {
|
|
2143
|
+
email: string;
|
|
2144
|
+
password: string;
|
|
2145
|
+
}) => void;
|
|
2146
|
+
onSocial?: () => void;
|
|
2147
|
+
}
|
|
2148
|
+
/** `.oc-block-auth`: sign-in card with e-mail, password and an optional social button. */
|
|
2149
|
+
declare const BlockAuth: react.ForwardRefExoticComponent<BlockAuthProps & react.RefAttributes<HTMLDivElement>>;
|
|
2150
|
+
|
|
2151
|
+
interface BlockAuthSplitProps extends Omit<HTMLAttributes<HTMLDivElement>, "title" | "onSubmit"> {
|
|
2152
|
+
/** Brand link content (icon + name). */
|
|
2153
|
+
logo?: ReactNode;
|
|
2154
|
+
logoHref?: string;
|
|
2155
|
+
quote?: ReactNode;
|
|
2156
|
+
quoteAuthor?: ReactNode;
|
|
2157
|
+
title?: ReactNode;
|
|
2158
|
+
subtitle?: ReactNode;
|
|
2159
|
+
submitLabel?: ReactNode;
|
|
2160
|
+
forgotHref?: string;
|
|
2161
|
+
forgotLabel?: ReactNode;
|
|
2162
|
+
rememberLabel?: ReactNode;
|
|
2163
|
+
onSubmit?: (values: {
|
|
2164
|
+
email: string;
|
|
2165
|
+
password: string;
|
|
2166
|
+
remember: boolean;
|
|
2167
|
+
}) => void;
|
|
2168
|
+
}
|
|
2169
|
+
/** `.oc-block-authsplit`: brand panel (logo, quote) next to the sign-in form. */
|
|
2170
|
+
declare const BlockAuthSplit: react.ForwardRefExoticComponent<BlockAuthSplitProps & react.RefAttributes<HTMLDivElement>>;
|
|
2171
|
+
|
|
2172
|
+
interface ContactGridLine {
|
|
2173
|
+
text: ReactNode;
|
|
2174
|
+
/** Makes the line a link (mailto:, tel:, https:). */
|
|
2175
|
+
href?: string;
|
|
2176
|
+
}
|
|
2177
|
+
interface ContactGridCard {
|
|
2178
|
+
title: ReactNode;
|
|
2179
|
+
lines: ContactGridLine[];
|
|
2180
|
+
/** Glyph in a soft product mark. */
|
|
2181
|
+
icon?: ReactNode;
|
|
2182
|
+
/** Accent preset of the mark (green, violet, ...). */
|
|
2183
|
+
accent?: string;
|
|
2184
|
+
/** Renders the card as <address>. */
|
|
2185
|
+
address?: boolean;
|
|
2186
|
+
}
|
|
2187
|
+
interface BlockContactGridProps extends Omit<HTMLAttributes<HTMLElement>, "title"> {
|
|
2188
|
+
eyebrow?: ReactNode;
|
|
2189
|
+
title?: ReactNode;
|
|
2190
|
+
lead?: ReactNode;
|
|
2191
|
+
cards: ContactGridCard[];
|
|
2192
|
+
/** No card frames. */
|
|
2193
|
+
plain?: boolean;
|
|
2194
|
+
}
|
|
2195
|
+
/** `.oc-block-contact`: contact info cards (e-mail, phone, address, hours). */
|
|
2196
|
+
declare const BlockContactGrid: react.ForwardRefExoticComponent<BlockContactGridProps & react.RefAttributes<HTMLElement>>;
|
|
2197
|
+
|
|
2198
|
+
interface BlockCtaProps extends Omit<HTMLAttributes<HTMLDivElement>, "title"> {
|
|
2199
|
+
title: ReactNode;
|
|
2200
|
+
description?: ReactNode;
|
|
2201
|
+
actions?: ReactNode;
|
|
2202
|
+
}
|
|
2203
|
+
/** `.oc-block-cta`: call to action banner. */
|
|
2204
|
+
declare const BlockCta: react.ForwardRefExoticComponent<BlockCtaProps & react.RefAttributes<HTMLDivElement>>;
|
|
2205
|
+
|
|
2206
|
+
interface BlockDataTableProps extends Omit<HTMLAttributes<HTMLElement>, "title"> {
|
|
2207
|
+
title?: ReactNode;
|
|
2208
|
+
description?: ReactNode;
|
|
2209
|
+
/** Header buttons (export, new...). */
|
|
2210
|
+
actions?: ReactNode;
|
|
2211
|
+
/** Search + filters row (`oc-table-toolbar`). Use `BlockDataTableSpacer` to push items right. */
|
|
2212
|
+
toolbar?: ReactNode;
|
|
2213
|
+
/** Selection bar, shown by you when rows are selected (`oc-block-datatable-bulk`). */
|
|
2214
|
+
bulk?: ReactNode;
|
|
2215
|
+
/** Entries text, page-size select and pagination (`oc-table-footer`). */
|
|
2216
|
+
footer?: ReactNode;
|
|
2217
|
+
/** The `<Table>`. */
|
|
2218
|
+
children?: ReactNode;
|
|
2219
|
+
}
|
|
2220
|
+
/** `.oc-card.oc-block-datatable`: card with header, toolbar, table, bulk bar and footer. */
|
|
2221
|
+
declare const BlockDataTable: react.ForwardRefExoticComponent<BlockDataTableProps & react.RefAttributes<HTMLElement>>;
|
|
2222
|
+
/** `.oc-table-toolbar-spacer`: pushes the following toolbar items to the right. */
|
|
2223
|
+
declare function BlockDataTableSpacer(): react.JSX.Element;
|
|
2224
|
+
/** `.oc-filter-pills` group. */
|
|
2225
|
+
declare function FilterPills({ className, ...rest }: HTMLAttributes<HTMLDivElement>): react.JSX.Element;
|
|
2226
|
+
/** `a.oc-filter-pill` (set `current` for the active filter). */
|
|
2227
|
+
declare function FilterPill({ current, className, ...rest }: AnchorHTMLAttributes<HTMLAnchorElement> & {
|
|
2228
|
+
current?: boolean;
|
|
2229
|
+
}): react.JSX.Element;
|
|
2230
|
+
|
|
2231
|
+
interface FaqItem {
|
|
2232
|
+
question: ReactNode;
|
|
2233
|
+
answer: ReactNode;
|
|
2234
|
+
}
|
|
2235
|
+
interface BlockFaqProps extends Omit<HTMLAttributes<HTMLElement>, "title"> {
|
|
2236
|
+
eyebrow?: ReactNode;
|
|
2237
|
+
title: ReactNode;
|
|
2238
|
+
lead?: ReactNode;
|
|
2239
|
+
items: FaqItem[];
|
|
2240
|
+
/** Index of the item that starts open (default 0, -1 = none). */
|
|
2241
|
+
openIndex?: number;
|
|
2242
|
+
/** Closing line, e.g. "Still have questions?" + a link. */
|
|
2243
|
+
more?: ReactNode;
|
|
2244
|
+
/** Head left, questions right. */
|
|
2245
|
+
split?: boolean;
|
|
2246
|
+
/** Name of the details group (one open at a time). Generated when empty. */
|
|
2247
|
+
name?: string;
|
|
2248
|
+
}
|
|
2249
|
+
/** `.oc-block-faq`: title + exclusive accordion on native <details name>. */
|
|
2250
|
+
declare const BlockFaq: react.ForwardRefExoticComponent<BlockFaqProps & react.RefAttributes<HTMLElement>>;
|
|
2251
|
+
|
|
2252
|
+
interface Feature {
|
|
2253
|
+
/** Glyph, emoji or inline SVG. */
|
|
2254
|
+
icon?: ReactNode;
|
|
2255
|
+
title: ReactNode;
|
|
2256
|
+
description?: ReactNode;
|
|
2257
|
+
}
|
|
2258
|
+
interface BlockFeaturesProps extends Omit<HTMLAttributes<HTMLDivElement>, "title"> {
|
|
2259
|
+
title?: ReactNode;
|
|
2260
|
+
description?: ReactNode;
|
|
2261
|
+
features: Feature[];
|
|
2262
|
+
}
|
|
2263
|
+
/** `.oc-block-features`: heading plus a grid of feature cards. */
|
|
2264
|
+
declare const BlockFeatures: react.ForwardRefExoticComponent<BlockFeaturesProps & react.RefAttributes<HTMLDivElement>>;
|
|
2265
|
+
|
|
2266
|
+
interface FooterLink {
|
|
2267
|
+
label: ReactNode;
|
|
2268
|
+
href: string;
|
|
2269
|
+
}
|
|
2270
|
+
interface FooterColumn {
|
|
2271
|
+
title: ReactNode;
|
|
2272
|
+
links: FooterLink[];
|
|
2273
|
+
}
|
|
2274
|
+
interface BlockFooterProps extends HTMLAttributes<HTMLDivElement> {
|
|
2275
|
+
columns: FooterColumn[];
|
|
2276
|
+
/** Left text of the bottom bar. */
|
|
2277
|
+
copyright?: ReactNode;
|
|
2278
|
+
/** Right text of the bottom bar. */
|
|
2279
|
+
credit?: ReactNode;
|
|
2280
|
+
}
|
|
2281
|
+
/** `.oc-block-footer`: multi-column site footer. */
|
|
2282
|
+
declare const BlockFooter: react.ForwardRefExoticComponent<BlockFooterProps & react.RefAttributes<HTMLDivElement>>;
|
|
2283
|
+
|
|
2284
|
+
interface BlockFormPageProps extends FormHTMLAttributes<HTMLFormElement> {
|
|
2285
|
+
/** Sticky action bar content (cancel + save buttons). */
|
|
2286
|
+
actions?: ReactNode;
|
|
2287
|
+
}
|
|
2288
|
+
/** `form.oc-block-formpage`: collapsible sections (children) with a sticky action bar. */
|
|
2289
|
+
declare const BlockFormPage: react.ForwardRefExoticComponent<BlockFormPageProps & react.RefAttributes<HTMLFormElement>>;
|
|
2290
|
+
/** `.oc-block-formpage-grid`: two-column field grid from 40rem. */
|
|
2291
|
+
declare function BlockFormPageGrid({ className, ...rest }: HTMLAttributes<HTMLDivElement>): react.JSX.Element;
|
|
2292
|
+
|
|
2293
|
+
interface BlockHeroProps extends Omit<HTMLAttributes<HTMLDivElement>, "title"> {
|
|
2294
|
+
/** Small badge above the headline. */
|
|
2295
|
+
badge?: ReactNode;
|
|
2296
|
+
title: ReactNode;
|
|
2297
|
+
description?: ReactNode;
|
|
2298
|
+
/** Buttons row (`oc-block-hero-actions`). */
|
|
2299
|
+
actions?: ReactNode;
|
|
2300
|
+
}
|
|
2301
|
+
/** `.oc-block-hero`: centered hero with badge, headline, text and actions. */
|
|
2302
|
+
declare const BlockHero: react.ForwardRefExoticComponent<BlockHeroProps & react.RefAttributes<HTMLDivElement>>;
|
|
2303
|
+
|
|
2304
|
+
interface HeroTile {
|
|
2305
|
+
glyph: ReactNode;
|
|
2306
|
+
accent: string;
|
|
2307
|
+
style: CSSProperties;
|
|
2308
|
+
}
|
|
2309
|
+
interface BlockHeroCodeProps extends Omit<HTMLAttributes<HTMLElement>, "title"> {
|
|
2310
|
+
eyebrow?: ReactNode;
|
|
2311
|
+
/** Display title; wrap a word in `<span className="oc-text-gradient">`. */
|
|
2312
|
+
title: ReactNode;
|
|
2313
|
+
lead?: ReactNode;
|
|
2314
|
+
/** Buttons (usually two `oc-btn--gradient` / `oc-btn--glass` links). */
|
|
2315
|
+
actions?: ReactNode;
|
|
2316
|
+
/** File name in the code window bar. */
|
|
2317
|
+
codeTitle?: ReactNode;
|
|
2318
|
+
/** Code shown in the window. */
|
|
2319
|
+
code: string;
|
|
2320
|
+
/** Floating icon tiles (accent name from the accent palette + position style). */
|
|
2321
|
+
tiles?: HeroTile[];
|
|
2322
|
+
}
|
|
2323
|
+
/** Landing hero: eyebrow, display title, lead, buttons and a code window with floating icon tiles. */
|
|
2324
|
+
declare const BlockHeroCode: react.ForwardRefExoticComponent<BlockHeroCodeProps & react.RefAttributes<HTMLElement>>;
|
|
2325
|
+
|
|
2326
|
+
interface HeroOrbitMark {
|
|
2327
|
+
glyph: ReactNode;
|
|
2328
|
+
/** Accent preset (green, violet, orange, cyan, red, yellow, blue). */
|
|
2329
|
+
accent: string;
|
|
2330
|
+
}
|
|
2331
|
+
interface BlockHeroOrbitProps extends Omit<HTMLAttributes<HTMLElement>, "title"> {
|
|
2332
|
+
eyebrow?: ReactNode;
|
|
2333
|
+
/** Display title; wrap a word in `<span className="oc-text-gradient">`. */
|
|
2334
|
+
title: ReactNode;
|
|
2335
|
+
lead?: ReactNode;
|
|
2336
|
+
actions?: ReactNode;
|
|
2337
|
+
/** Marks on the ring; they are spread evenly. */
|
|
2338
|
+
marks?: HeroOrbitMark[];
|
|
2339
|
+
codeTitle?: ReactNode;
|
|
2340
|
+
code?: string;
|
|
2341
|
+
/** Replaces the code window in the center. Give it className="oc-block-orbit-center". */
|
|
2342
|
+
center?: ReactNode;
|
|
2343
|
+
/** One turn, e.g. "30s" (default 60s). */
|
|
2344
|
+
duration?: string;
|
|
2345
|
+
}
|
|
2346
|
+
/** Hero with a code window and product marks that orbit around it. */
|
|
2347
|
+
declare const BlockHeroOrbit: react.ForwardRefExoticComponent<BlockHeroOrbitProps & react.RefAttributes<HTMLElement>>;
|
|
2348
|
+
|
|
2349
|
+
interface BlockHeroSplitProps extends Omit<HTMLAttributes<HTMLDivElement>, "title"> {
|
|
2350
|
+
title: ReactNode;
|
|
2351
|
+
description?: ReactNode;
|
|
2352
|
+
actions?: ReactNode;
|
|
2353
|
+
/** Right column (image, screenshot, placeholder). */
|
|
2354
|
+
visual?: ReactNode;
|
|
2355
|
+
}
|
|
2356
|
+
/** `.oc-block-hero-split`: text on the left, visual on the right. */
|
|
2357
|
+
declare const BlockHeroSplit: react.ForwardRefExoticComponent<BlockHeroSplitProps & react.RefAttributes<HTMLDivElement>>;
|
|
2358
|
+
|
|
2359
|
+
interface BlockModuleHeaderProps extends Omit<HTMLAttributes<HTMLElement>, "title"> {
|
|
2360
|
+
/** Inline SVG in the icon tile. */
|
|
2361
|
+
icon?: ReactNode;
|
|
2362
|
+
title: ReactNode;
|
|
2363
|
+
intro?: ReactNode;
|
|
2364
|
+
/** Badges under the title. */
|
|
2365
|
+
meta?: ReactNode;
|
|
2366
|
+
/** Buttons below the band (back link, primary action). */
|
|
2367
|
+
actions?: ReactNode;
|
|
2368
|
+
}
|
|
2369
|
+
/** `.oc-block-modulehead`: page header with icon tile, title, intro, meta badges and actions. */
|
|
2370
|
+
declare const BlockModuleHeader: react.ForwardRefExoticComponent<BlockModuleHeaderProps & react.RefAttributes<HTMLElement>>;
|
|
2371
|
+
|
|
2372
|
+
interface BlockPageHeroProps extends Omit<HTMLAttributes<HTMLElement>, "title"> {
|
|
2373
|
+
eyebrow?: ReactNode;
|
|
2374
|
+
title: ReactNode;
|
|
2375
|
+
description?: ReactNode;
|
|
2376
|
+
actions?: ReactNode;
|
|
2377
|
+
}
|
|
2378
|
+
/** `.oc-hero`: page header with eyebrow, title, text and actions. */
|
|
2379
|
+
declare const BlockPageHero: react.ForwardRefExoticComponent<BlockPageHeroProps & react.RefAttributes<HTMLElement>>;
|
|
2380
|
+
|
|
2381
|
+
type PortfolioGridProject = ProjectCardProps & {
|
|
2382
|
+
/** Accent preset for the card (green, violet, ...). */
|
|
2383
|
+
accent?: string;
|
|
2384
|
+
};
|
|
2385
|
+
interface BlockPortfolioGridProps extends Omit<HTMLAttributes<HTMLElement>, "title"> {
|
|
2386
|
+
eyebrow?: ReactNode;
|
|
2387
|
+
/** Display title; wrap a word in `<span className="oc-text-gradient">`. */
|
|
2388
|
+
title: ReactNode;
|
|
2389
|
+
lead?: ReactNode;
|
|
2390
|
+
/** Link at the right of the head, e.g. <LinkArrow href="/work">All projects</LinkArrow>. */
|
|
2391
|
+
link?: ReactNode;
|
|
2392
|
+
projects: PortfolioGridProject[];
|
|
2393
|
+
/** Wider cards. */
|
|
2394
|
+
two?: boolean;
|
|
2395
|
+
}
|
|
2396
|
+
/** `.oc-block-portfolio`: heading plus a grid of project cards. */
|
|
2397
|
+
declare const BlockPortfolioGrid: react.ForwardRefExoticComponent<BlockPortfolioGridProps & react.RefAttributes<HTMLElement>>;
|
|
2398
|
+
|
|
2399
|
+
interface PricingPlan {
|
|
2400
|
+
name: ReactNode;
|
|
2401
|
+
description?: ReactNode;
|
|
2402
|
+
price: ReactNode;
|
|
2403
|
+
/** e.g. `/month` */
|
|
2404
|
+
period?: ReactNode;
|
|
2405
|
+
features: ReactNode[];
|
|
2406
|
+
/** Highlighted plan (`oc-block-pricing-card--featured`, primary button). */
|
|
2407
|
+
featured?: boolean;
|
|
2408
|
+
/** Button label. */
|
|
2409
|
+
action: ReactNode;
|
|
2410
|
+
/** Renders the action as a link when set. */
|
|
2411
|
+
href?: string;
|
|
2412
|
+
onAction?: () => void;
|
|
2413
|
+
}
|
|
2414
|
+
interface BlockPricingProps extends Omit<HTMLAttributes<HTMLDivElement>, "title"> {
|
|
2415
|
+
title?: ReactNode;
|
|
2416
|
+
description?: ReactNode;
|
|
2417
|
+
plans: PricingPlan[];
|
|
2418
|
+
}
|
|
2419
|
+
/** `.oc-block-pricing`: pricing cards with a featured plan. */
|
|
2420
|
+
declare const BlockPricing: react.ForwardRefExoticComponent<BlockPricingProps & react.RefAttributes<HTMLDivElement>>;
|
|
2421
|
+
|
|
2422
|
+
interface ProcessStep {
|
|
2423
|
+
title: ReactNode;
|
|
2424
|
+
text?: ReactNode;
|
|
2425
|
+
}
|
|
2426
|
+
interface BlockProcessProps extends Omit<HTMLAttributes<HTMLElement>, "title"> {
|
|
2427
|
+
eyebrow?: ReactNode;
|
|
2428
|
+
/** Display title; wrap a word in `<span className="oc-text-gradient">`. */
|
|
2429
|
+
title: ReactNode;
|
|
2430
|
+
steps: ProcessStep[];
|
|
2431
|
+
/** Items of the endless marquee (strings). The list is repeated once for the seamless loop. */
|
|
2432
|
+
marquee?: string[];
|
|
2433
|
+
marqueeLabel?: string;
|
|
2434
|
+
}
|
|
2435
|
+
/** Numbered steps (CSS counter) plus an optional marquee of technologies. */
|
|
2436
|
+
declare const BlockProcess: react.ForwardRefExoticComponent<BlockProcessProps & react.RefAttributes<HTMLElement>>;
|
|
2437
|
+
|
|
2438
|
+
interface Product {
|
|
2439
|
+
href: string;
|
|
2440
|
+
/** Accent name (`green`, `orange`, `violet`, `cyan`, ...), applied as `oc-accent--{accent}`. */
|
|
2441
|
+
accent?: string;
|
|
2442
|
+
/** Glyph or inline SVG in the icon tile. */
|
|
2443
|
+
icon?: ReactNode;
|
|
2444
|
+
/** Pill label (`Own product`, `Tool`...). */
|
|
2445
|
+
pill?: ReactNode;
|
|
2446
|
+
name: ReactNode;
|
|
2447
|
+
tagline?: ReactNode;
|
|
2448
|
+
summary?: ReactNode;
|
|
2449
|
+
/** "Discover ..." link text. */
|
|
2450
|
+
more?: ReactNode;
|
|
2451
|
+
}
|
|
2452
|
+
interface BlockProductGridProps extends Omit<HTMLAttributes<HTMLElement>, "title"> {
|
|
2453
|
+
eyebrow?: ReactNode;
|
|
2454
|
+
/** Display title; wrap a word in `<span className="oc-text-gradient">`. */
|
|
2455
|
+
title: ReactNode;
|
|
2456
|
+
products: Product[];
|
|
2457
|
+
}
|
|
2458
|
+
/** Section title plus a grid of accent-colored product cards. */
|
|
2459
|
+
declare const BlockProductGrid: react.ForwardRefExoticComponent<BlockProductGridProps & react.RefAttributes<HTMLElement>>;
|
|
2460
|
+
|
|
2461
|
+
interface ProfileHeaderTab {
|
|
2462
|
+
label: ReactNode;
|
|
2463
|
+
href: string;
|
|
2464
|
+
current?: boolean;
|
|
2465
|
+
}
|
|
2466
|
+
interface BlockProfileHeaderProps extends HTMLAttributes<HTMLElement> {
|
|
2467
|
+
name: ReactNode;
|
|
2468
|
+
meta?: ReactNode;
|
|
2469
|
+
bio?: ReactNode;
|
|
2470
|
+
/** Initials, or an <img> for the avatar. */
|
|
2471
|
+
avatar: ReactNode;
|
|
2472
|
+
/** Banner image URL; without it the banner is an accent gradient. */
|
|
2473
|
+
banner?: string;
|
|
2474
|
+
actions?: ReactNode;
|
|
2475
|
+
tabs?: ProfileHeaderTab[];
|
|
2476
|
+
tabsLabel?: string;
|
|
2477
|
+
compact?: boolean;
|
|
2478
|
+
/** Heading level of the name (h1 on a profile page, h2 inside a page). */
|
|
2479
|
+
headingLevel?: 1 | 2;
|
|
2480
|
+
}
|
|
2481
|
+
/** `.oc-block-profile`: banner, overhanging avatar, name, meta, actions and link tabs. */
|
|
2482
|
+
declare const BlockProfileHeader: react.ForwardRefExoticComponent<BlockProfileHeaderProps & react.RefAttributes<HTMLElement>>;
|
|
2483
|
+
|
|
2484
|
+
interface ShowcaseProject {
|
|
2485
|
+
href: string;
|
|
2486
|
+
accent?: string;
|
|
2487
|
+
/** CSS `background` of the browser frame body (e.g. a gradient of palette variables) or an image URL via `image`. */
|
|
2488
|
+
background?: string;
|
|
2489
|
+
image?: string;
|
|
2490
|
+
imageAlt?: string;
|
|
2491
|
+
pill?: ReactNode;
|
|
2492
|
+
name: ReactNode;
|
|
2493
|
+
summary?: ReactNode;
|
|
2494
|
+
more?: ReactNode;
|
|
2495
|
+
}
|
|
2496
|
+
interface BlockShowcaseProps extends Omit<HTMLAttributes<HTMLElement>, "title"> {
|
|
2497
|
+
eyebrow?: ReactNode;
|
|
2498
|
+
/** Display title; wrap a word in `<span className="oc-text-gradient">`. */
|
|
2499
|
+
title: ReactNode;
|
|
2500
|
+
projects: ShowcaseProject[];
|
|
2501
|
+
/** Minimum card width (`--oc-card-min`, default 26rem). */
|
|
2502
|
+
cardMin?: string;
|
|
2503
|
+
}
|
|
2504
|
+
/** Portfolio grid: project cards with a browser frame around the screenshot. */
|
|
2505
|
+
declare const BlockShowcase: react.ForwardRefExoticComponent<BlockShowcaseProps & react.RefAttributes<HTMLElement>>;
|
|
2506
|
+
|
|
2507
|
+
interface SiteFooterColumn {
|
|
2508
|
+
title: ReactNode;
|
|
2509
|
+
/** Link list column. */
|
|
2510
|
+
links?: FooterLink[];
|
|
2511
|
+
/** Address column: children are rendered in an `<address class="oc-site-footer__list">`. */
|
|
2512
|
+
address?: ReactNode;
|
|
2513
|
+
}
|
|
2514
|
+
interface BlockSiteFooterProps extends Omit<HTMLAttributes<HTMLElement>, "about"> {
|
|
2515
|
+
/** Brand link content, e.g. icon tile + name (rendered in `oc-site-header__brand`). */
|
|
2516
|
+
brand: ReactNode;
|
|
2517
|
+
brandHref?: string;
|
|
2518
|
+
about?: ReactNode;
|
|
2519
|
+
columns: SiteFooterColumn[];
|
|
2520
|
+
copyright?: ReactNode;
|
|
2521
|
+
credit?: ReactNode;
|
|
2522
|
+
}
|
|
2523
|
+
/** `.oc-site-footer`: brand column, link columns and a bottom bar. */
|
|
2524
|
+
declare const BlockSiteFooter: react.ForwardRefExoticComponent<BlockSiteFooterProps & react.RefAttributes<HTMLElement>>;
|
|
2525
|
+
|
|
2526
|
+
interface SiteHeaderLink {
|
|
2527
|
+
label: ReactNode;
|
|
2528
|
+
href: string;
|
|
2529
|
+
current?: boolean;
|
|
2530
|
+
}
|
|
2531
|
+
interface BlockSiteHeaderProps extends HTMLAttributes<HTMLElement> {
|
|
2532
|
+
/** Brand link content, e.g. icon tile + name. */
|
|
2533
|
+
brand: ReactNode;
|
|
2534
|
+
brandHref?: string;
|
|
2535
|
+
links: SiteHeaderLink[];
|
|
2536
|
+
/** Trailing call to action inside the nav (e.g. a `ButtonLink` with `variant="gradient"`). */
|
|
2537
|
+
cta?: ReactNode;
|
|
2538
|
+
/** Accessible name of the mobile menu button. */
|
|
2539
|
+
menuLabel?: string;
|
|
2540
|
+
}
|
|
2541
|
+
/** `.oc-site-header`: sticky header, mobile menu on a native popover (no JavaScript). */
|
|
2542
|
+
declare const BlockSiteHeader: react.ForwardRefExoticComponent<BlockSiteHeaderProps & react.RefAttributes<HTMLElement>>;
|
|
2543
|
+
|
|
2544
|
+
interface SpotlightModule {
|
|
2545
|
+
icon?: ReactNode;
|
|
2546
|
+
label: ReactNode;
|
|
2547
|
+
}
|
|
2548
|
+
interface BlockSpotlightProps extends Omit<HTMLAttributes<HTMLElement>, "title"> {
|
|
2549
|
+
/** Accent name (`green`, `violet`...), applied as `oc-accent--{accent}`. */
|
|
2550
|
+
accent?: string;
|
|
2551
|
+
/** Pill text (with a status dot). */
|
|
2552
|
+
badge?: ReactNode;
|
|
2553
|
+
/** Glyph or SVG in the big icon tile. */
|
|
2554
|
+
icon?: ReactNode;
|
|
2555
|
+
title: ReactNode;
|
|
2556
|
+
tagline?: ReactNode;
|
|
2557
|
+
lead?: ReactNode;
|
|
2558
|
+
/** Call to action (e.g. a `ButtonLink` with `variant="gradient" size="lg"`). */
|
|
2559
|
+
action?: ReactNode;
|
|
2560
|
+
modules?: SpotlightModule[];
|
|
2561
|
+
}
|
|
2562
|
+
/** `.oc-spotlight`: highlighted flagship product with a module list. */
|
|
2563
|
+
declare const BlockSpotlight: react.ForwardRefExoticComponent<BlockSpotlightProps & react.RefAttributes<HTMLElement>>;
|
|
2564
|
+
|
|
2565
|
+
interface Stat {
|
|
2566
|
+
value: ReactNode;
|
|
2567
|
+
label: ReactNode;
|
|
2568
|
+
}
|
|
2569
|
+
interface BlockStatsProps extends HTMLAttributes<HTMLDivElement> {
|
|
2570
|
+
stats: Stat[];
|
|
2571
|
+
}
|
|
2572
|
+
/** `.oc-block-stats`: key figures row. */
|
|
2573
|
+
declare const BlockStats: react.ForwardRefExoticComponent<BlockStatsProps & react.RefAttributes<HTMLDivElement>>;
|
|
2574
|
+
|
|
2575
|
+
interface CounterStat {
|
|
2576
|
+
to: number;
|
|
2577
|
+
suffix?: string;
|
|
2578
|
+
label: ReactNode;
|
|
2579
|
+
}
|
|
2580
|
+
interface BlockStatsCounterProps extends HTMLAttributes<HTMLDivElement> {
|
|
2581
|
+
stats: CounterStat[];
|
|
2582
|
+
}
|
|
2583
|
+
/** `.oc-block-stats` whose values count up when scrolled into view (CSS only). */
|
|
2584
|
+
declare const BlockStatsCounter: react.ForwardRefExoticComponent<BlockStatsCounterProps & react.RefAttributes<HTMLDivElement>>;
|
|
2585
|
+
|
|
2586
|
+
interface TeamMember {
|
|
2587
|
+
name: ReactNode;
|
|
2588
|
+
email?: ReactNode;
|
|
2589
|
+
initials?: string;
|
|
2590
|
+
avatarSrc?: string;
|
|
2591
|
+
/** Role / status badge text. */
|
|
2592
|
+
role?: ReactNode;
|
|
2593
|
+
roleVariant?: BadgeVariant;
|
|
2594
|
+
/** Row action menu content (`DropdownItem`s). Adds a "..." trigger when set. */
|
|
2595
|
+
menu?: ReactNode;
|
|
2596
|
+
menuLabel?: string;
|
|
2597
|
+
}
|
|
2598
|
+
interface BlockTeamListProps extends HTMLAttributes<HTMLDivElement> {
|
|
2599
|
+
members: TeamMember[];
|
|
2600
|
+
}
|
|
2601
|
+
/** `.oc-block-team`: member rows with avatar, role badge and a row action menu. */
|
|
2602
|
+
declare const BlockTeamList: react.ForwardRefExoticComponent<BlockTeamListProps & react.RefAttributes<HTMLDivElement>>;
|
|
2603
|
+
|
|
2604
|
+
interface BlockTwoFactorProps extends Omit<HTMLAttributes<HTMLDivElement>, "onSubmit"> {
|
|
2605
|
+
/** QR code image / svg; a labelled placeholder box is rendered when omitted. */
|
|
2606
|
+
qr?: ReactNode;
|
|
2607
|
+
setupKey: string;
|
|
2608
|
+
recoveryCodes?: string[];
|
|
2609
|
+
codeLength?: number;
|
|
2610
|
+
/** Called with the entered code when the form is submitted. */
|
|
2611
|
+
onSubmit?: (code: string) => void;
|
|
2612
|
+
submitLabel?: ReactNode;
|
|
2613
|
+
}
|
|
2614
|
+
/** `.oc-block-twofactor`: authenticator setup with QR, copyable key, OTP input and recovery codes. */
|
|
2615
|
+
declare const BlockTwoFactor: react.ForwardRefExoticComponent<BlockTwoFactorProps & react.RefAttributes<HTMLDivElement>>;
|
|
2616
|
+
|
|
2617
|
+
interface WizardStep {
|
|
2618
|
+
label: ReactNode;
|
|
2619
|
+
/** Step content (only the active step is rendered). */
|
|
2620
|
+
content: ReactNode;
|
|
2621
|
+
}
|
|
2622
|
+
interface BlockWizardDialogProps extends Omit<DialogHTMLAttributes<HTMLDialogElement>, "open" | "onClose" | "title">, DialogState {
|
|
2623
|
+
steps: WizardStep[];
|
|
2624
|
+
/** Active step (0-based, controlled). */
|
|
2625
|
+
step?: number;
|
|
2626
|
+
defaultStep?: number;
|
|
2627
|
+
onStepChange?: (step: number) => void;
|
|
2628
|
+
/** Called when "Finish" is pressed on the last step. */
|
|
2629
|
+
onFinish?: () => void;
|
|
2630
|
+
backLabel?: ReactNode;
|
|
2631
|
+
nextLabel?: ReactNode;
|
|
2632
|
+
finishLabel?: ReactNode;
|
|
2633
|
+
/** Text under the title; defaults to `Step {n} of {total}`. */
|
|
2634
|
+
description?: ReactNode;
|
|
2635
|
+
stepperLabel?: string;
|
|
2636
|
+
}
|
|
2637
|
+
/** `dialog.oc-modal` wizard: stepper rail on the left, step content and Back / Next footer. */
|
|
2638
|
+
declare const BlockWizardDialog: react.ForwardRefExoticComponent<BlockWizardDialogProps & react.RefAttributes<HTMLDialogElement>>;
|
|
2639
|
+
|
|
2640
|
+
export { Accordion, AccordionAccent, AccordionAccentMeta, type AccordionAccentPreset, type AccordionAccentProps, type AccordionAccentTone, AccordionItem, type AccordionItemProps, AffixInput, type AffixInputProps, type AffixInputVariant, Alert, AlertDialog, type AlertDialogProps, type AlertDialogType, type AlertProps, type AlertVariant, AlphaTabs, type AlphaTabsProps, type AppHeaderNavItem, Attachment, type AttachmentFile, AttachmentImage, type AttachmentImageProps, AttachmentList, type AttachmentListProps, type AttachmentProps, AttachmentThumb, type AttachmentThumbProps, type AttachmentType, Avatar, AvatarGroup, type AvatarProps, type AvatarSize, BackLink, Badge, type BadgeProps, type BadgeVariant, BarcodeInput, type BarcodeInputProps, BlockAboutTimeline, type BlockAboutTimelineProps, BlockAppHeader, type BlockAppHeaderProps, BlockAppShell, type BlockAppShellProps, BlockAuth, type BlockAuthProps, BlockAuthSplit, type BlockAuthSplitProps, BlockContactGrid, type BlockContactGridProps, BlockCta, type BlockCtaProps, BlockDataTable, type BlockDataTableProps, BlockDataTableSpacer, BlockFaq, type BlockFaqProps, BlockFeatures, type BlockFeaturesProps, BlockFooter, type BlockFooterProps, BlockFormPage, BlockFormPageGrid, type BlockFormPageProps, BlockHero, BlockHeroCode, type BlockHeroCodeProps, BlockHeroOrbit, type BlockHeroOrbitProps, type BlockHeroProps, BlockHeroSplit, type BlockHeroSplitProps, BlockModuleHeader, type BlockModuleHeaderProps, BlockPageHero, type BlockPageHeroProps, BlockPortfolioGrid, type BlockPortfolioGridProps, BlockPricing, type BlockPricingProps, BlockProcess, type BlockProcessProps, BlockProductGrid, type BlockProductGridProps, BlockProfileHeader, type BlockProfileHeaderProps, BlockShowcase, type BlockShowcaseProps, BlockSiteFooter, type BlockSiteFooterProps, BlockSiteHeader, type BlockSiteHeaderProps, BlockSpotlight, type BlockSpotlightProps, BlockStats, BlockStatsCounter, type BlockStatsCounterProps, type BlockStatsProps, BlockTeamList, type BlockTeamListProps, BlockTwoFactor, type BlockTwoFactorProps, BlockWizardDialog, type BlockWizardDialogProps, Breadcrumb, type BreadcrumbItemData, type BreadcrumbProps, BrowserFrame, type BrowserFrameProps, BusyOverlay, type BusyOverlayProps, Button, ButtonLink, type ButtonLinkProps, type ButtonProps, type ButtonSize, type ButtonVariant, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ChartLine, type ChartLineProps, type ChartLineSeries, ChatComposer, type ChatComposerProps, Checkbox, type CheckboxProps, Checklist, ChecklistItem, type ChecklistItemProps, type ChecklistProps, ChipFilter, type ChipFilterOption, type ChipFilterProps, Collapsible, type CollapsibleProps, ColorField, type ColorFieldProps, ColorSelect, type ColorSelectOption, type ColorSelectProps, ColumnMenu, type ColumnMenuColumn, type ColumnMenuProps, Command, type CommandGroupData, type CommandItemData, type CommandProps, ConfirmDialog, type ConfirmDialogProps, type ConsentChoice, type ContactGridCard, type ContactGridLine, type CookieCategory, CookieConsent, type CookieConsentProps, CopyField, type CopyFieldProps, Counter, type CounterProps, type CounterStat, DataTable, type DataTableColumn, type DataTableProps, type DataTableRow, DecimalInput, type DecimalInputProps, type DefinitionItem, DefinitionList, type DefinitionListProps, DialogContext, type DialogState, DocViewer, type DocViewerItem, type DocViewerProps, Dropdown, DropdownItem, DropdownLabel, type DropdownProps, DropdownSeparator, Dropzone, type DropzoneProps, type EmojiGroup, EmojiPicker, type EmojiPickerProps, EmptyState, type EmptyStateProps, EntityCard, type EntityCardProps, FactList, type FactListProps, type FactListRow, type FaqItem, type Feature, FieldGroup, FilterCounts, type FilterCountsOption, type FilterCountsProps, FilterPill, FilterPills, FlipCard, type FlipCardProps, type FooterColumn, type FooterLink, FormField, type FormFieldProps, Greeting, type GreetingProps, type GreetingTimeOfDay, Heading, type HeadingProps, type HeroOrbitMark, type HeroTile, Icon, type IconProps, ImageZoom, type ImageZoomProps, Input, InputGroup, type InputGroupProps, type InputProps, LanguageSelect, type LanguageSelectOption, type LanguageSelectProps, LauncherCard, type LauncherCardProps, Lightbox, type LightboxImage, type LightboxProps, LinkArrow, type LinkArrowDirection, type LinkArrowProps, ListToolbar, type ListToolbarProps, type ListToolbarView, Marquee, type MarqueeProps, MediaCard, type MediaCardProps, MediaRow, MediaRowList, type MediaRowListProps, type MediaRowProps, MediaThumb, type MediaThumbProps, Message, type MessageAction, type MessageAttachment, MessageAttachments, type MessageData, MessageDivider, type MessageDividerProps, MessageList, type MessageListItem, type MessageListProps, type MessageProps, MessageThread, type MessageThreadProps, Modal, ModalClose, type ModalProps, type ModalSize, Navmenu, NavmenuDropdown, type NavmenuDropdownProps, NavmenuItem, NavmenuLink, type NavmenuLinkProps, type NavmenuProps, NextTeaser, type NextTeaserProps, NumberInput, type NumberInputProps, OtpInput, type OtpInputProps, PageHeader, type PageHeaderProps, Pagination, type PaginationProps, PasswordInput, type PasswordInputProps, PasswordRequirements, type PasswordRequirementsProps, type PasswordRule, type PhoneCountry, PhoneInput, type PhoneInputProps, Popover, type PopoverProps, type PortfolioGridProject, PriceCard, type PriceCardFeature, type PriceCardPrice, type PriceCardProps, type PricingPlan, type ProcessStep, type Product, ProductMark, type ProductMarkAccent, type ProductMarkProps, type ProductMarkSize, type ProfileHeaderTab, Progress, type ProgressProps, ProjectCard, type ProjectCardProps, Prose, ProseLead, type ProseProps, RecoveryCodes, type RecoveryCodesProps, Segmented, type SegmentedOption, type SegmentedProps, Select, type SelectOption, type SelectProps, SeverityCard, type SeverityCardProps, type SeverityLevel, Sheet, type SheetProps, type SheetSide, type ShowcaseProject, Sidebar, SidebarCollapsible, type SidebarCollapsibleProps, SidebarGroup, type SidebarGroupProps, SidebarMenu, SidebarMenuButton, type SidebarMenuButtonProps, SidebarMenuItem, type SidebarProps, SidebarSeparator, type SiteFooterColumn, type SiteHeaderLink, Skeleton, type SkeletonProps, SortableRow, type SortableRowProps, type SpotlightModule, StackCard, type StackCardProps, StackList, type StackListItem, type StackListProps, type Stat, StatCard, StatCardGrid, type StatCardProps, Stepper, type StepperProps, type StepperStep, Switch, type SwitchProps, type TabItem, Table, TableActionIcon, type TableActionTone, TableActions, TableActionsMenu, type TableActionsMenuProps, TableCompact, type TableCompactColumn, type TableCompactProps, TableEmpty, type TableProps, TableRowAction, TableSort, type TableSortProps, Tabs, type TabsProps, TagInput, type TagInputProps, type TeamMember, TerminalLog, type TerminalLogLevel, type TerminalLogLine, type TerminalLogProps, Textarea, type TextareaProps, type ThemeMode, ThemeSwitch, type ThemeSwitchProps, type ThreadMenuItem, type ThreadParticipant, TimeInput, type TimeInputProps, Timeline, type TimelineEntry, type TimelineProps, Toast, ToastContainer, type ToastOptions, type ToastProps, ToastProvider, type ToastProviderProps, type ToastVariant, ToggleField, type ToggleFieldProps, Tooltip, type TooltipProps, TopProgress, type TopProgressProps, type TopProgressTone, Tree, type TreeItem, type TreeProps, UpgradeBanner, type UpgradeBannerProps, type UpgradeBannerUsage, User, type UserProps, VersionBanner, type VersionBannerProps, type WizardStep, attachmentMeta, attrs, buttonClass, callAll, chartLinePath, closeMenuOf, cx, defaultPasswordRules, formatDecimal, formatPhoneNational, formatTime24h, greetingTimeOfDay, handleMenuKeyDown, menuItems, mod, niceMax, parseDecimal, useControllable, useDialog, useDialogContext, useMenuAutofocus, useMergedRef, useToast };
|