@collective-intelligence/ui-react 0.0.0-stage → 0.1.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.
Files changed (43) hide show
  1. package/README.md +108 -2
  2. package/dist/components/icons/index.d.ts +175 -0
  3. package/dist/components/icons/index.js +1 -0
  4. package/dist/components/illustrations/index.d.ts +180 -0
  5. package/dist/components/illustrations/index.js +1 -0
  6. package/dist/components/ui/index.d.ts +516 -0
  7. package/dist/components/ui/index.js +2 -0
  8. package/dist/components/ui-extensions/atoms/ThemeToggle/index.d.ts +23 -0
  9. package/dist/components/ui-extensions/atoms/ThemeToggle/index.js +2 -0
  10. package/dist/components/ui-extensions/hooks/use-mobile.d.ts +5 -0
  11. package/dist/components/ui-extensions/hooks/use-mobile.js +1 -0
  12. package/dist/components/ui-extensions/index.d.ts +1147 -0
  13. package/dist/components/ui-extensions/index.js +24 -0
  14. package/dist/hooks/index.d.ts +26 -0
  15. package/dist/hooks/index.js +1 -0
  16. package/dist/hooks/operations.d.ts +16 -0
  17. package/dist/hooks/operations.js +1 -0
  18. package/dist/hooks/use-debounced-callback.d.ts +9 -0
  19. package/dist/hooks/use-debounced-callback.js +1 -0
  20. package/dist/hooks/use-mount-action.d.ts +9 -0
  21. package/dist/hooks/use-mount-action.js +1 -0
  22. package/dist/index-225zhfvs.js +2 -0
  23. package/dist/index-4djc1w16.js +2 -0
  24. package/dist/index-5m33z54y.js +25 -0
  25. package/dist/index-eevg910d.js +2 -0
  26. package/dist/index-f91yzwpm.js +2 -0
  27. package/dist/index-fdh3nr3r.js +2 -0
  28. package/dist/index-fmpwyc92.js +2 -0
  29. package/dist/index-gzgwcnnv.js +42 -0
  30. package/dist/index-kghpgv95.js +2 -0
  31. package/dist/index-m283d3wz.js +2 -0
  32. package/dist/index-mtc4857g.js +2 -0
  33. package/dist/index-y8r5sgrk.js +2 -0
  34. package/dist/index-yaz3187s.js +2 -0
  35. package/dist/index.d.ts +27 -0
  36. package/dist/index.js +1 -0
  37. package/dist/resources.d.ts +138 -0
  38. package/dist/resources.js +2 -0
  39. package/dist/tokens/theme.d.ts +19 -0
  40. package/dist/tokens/theme.js +1 -0
  41. package/dist/utils/cn.d.ts +11 -0
  42. package/dist/utils/cn.js +1 -0
  43. package/package.json +192 -4
@@ -0,0 +1,1147 @@
1
+ // Generated by dts-bundle-generator v9.5.1
2
+
3
+ import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
4
+ import * as PopoverPrimitive from '@radix-ui/react-popover';
5
+ import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
6
+ import { VariantProps } from 'class-variance-authority';
7
+ import * as React$1 from 'react';
8
+ import React$1 from 'react';
9
+ import { ComponentProps, ComponentType, ReactNode } from 'react';
10
+
11
+ declare const buttonVariants: (props?: ({
12
+ size?: "default" | "icon" | "lg" | "sm" | null | undefined;
13
+ variant?: "default" | "destructive" | "ghost" | "link" | "outline" | "secondary" | null | undefined;
14
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
15
+ declare const Button: ({ className, variant, size, asChild, ...props }: React$1.ComponentProps<"button"> & VariantProps<typeof buttonVariants> & {
16
+ asChild?: boolean;
17
+ }) => React$1.JSX.Element;
18
+ export interface ActionButtonProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
19
+ loading?: boolean;
20
+ fullWidth?: boolean;
21
+ }
22
+ export declare const ActionButton: React$1.FC<ActionButtonProps>;
23
+ export type AddItemButtonProps = React$1.ButtonHTMLAttributes<HTMLButtonElement>;
24
+ export declare const AddItemButton: React$1.ForwardRefExoticComponent<AddItemButtonProps & React$1.RefAttributes<HTMLButtonElement>>;
25
+ export type DateInputProps = Omit<React$1.ComponentProps<"input">, "type">;
26
+ /**
27
+ * Date input that accepts pasted values in common human formats
28
+ * (dd/mm/yyyy, dd-mm-yyyy, dd.mm.yyyy) and converts them to the
29
+ * ISO format required by `<input type="date">`.
30
+ *
31
+ * Works as a drop-in replacement for `<Input type="date" />` and is
32
+ * compatible with react-hook-form by dispatching a native input event
33
+ * via the prototype value setter so registered onChange handlers fire.
34
+ */
35
+ export declare const DateInput: import("react").ForwardRefExoticComponent<Omit<DateInputProps, "ref"> & import("react").RefAttributes<HTMLInputElement>>;
36
+ export declare const displayHeadingVariants: (props?: ({
37
+ size?: "lg" | "sm" | "md" | "xl" | null | undefined;
38
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
39
+ export interface DisplayHeadingProps extends React$1.HTMLAttributes<HTMLHeadingElement>, VariantProps<typeof displayHeadingVariants> {
40
+ as?: "h1" | "h2" | "h3" | "h4" | "div" | "span";
41
+ }
42
+ export declare const DisplayHeading: React$1.ForwardRefExoticComponent<DisplayHeadingProps & React$1.RefAttributes<HTMLHeadingElement>>;
43
+ export interface CopyButtonProps extends Omit<React$1.ButtonHTMLAttributes<HTMLButtonElement>, "onCopy"> {
44
+ /** The text written to the clipboard. */
45
+ value: string;
46
+ /** Accessible name for what is being copied, e.g. "Server URL". */
47
+ label: string;
48
+ /**
49
+ * "icon" renders a compact square icon button; "button" renders an outline
50
+ * button with a visible Copy/Copied label.
51
+ */
52
+ variant?: "icon" | "button";
53
+ /** Visible labels for the "button" variant. */
54
+ copyLabel?: React$1.ReactNode;
55
+ copiedLabel?: React$1.ReactNode;
56
+ /** Toast message when the clipboard write fails. */
57
+ errorMessage?: string;
58
+ /** How long the copied state persists, in milliseconds. */
59
+ resetDelay?: number;
60
+ }
61
+ export declare const CopyButton: React$1.ForwardRefExoticComponent<CopyButtonProps & React$1.RefAttributes<HTMLButtonElement>>;
62
+ export type CollectiveIntelligenceLoaderProps = Omit<React$1.ComponentProps<"svg">, "children">;
63
+ export declare const CollectiveIntelligenceLoader: {
64
+ ({ className, ...props }: CollectiveIntelligenceLoaderProps): React$1.JSX.Element;
65
+ displayName: string;
66
+ };
67
+ export interface ErrorMessageProps {
68
+ children: React$1.ReactNode;
69
+ className?: string;
70
+ }
71
+ export declare const ErrorMessage: ({ children, className }: ErrorMessageProps) => React$1.JSX.Element;
72
+ export interface FormattedNumberProps extends React$1.HTMLAttributes<HTMLSpanElement> {
73
+ value: number | null | undefined;
74
+ fallback?: React$1.ReactNode;
75
+ locale?: string;
76
+ }
77
+ export declare const FormattedNumber: React$1.ForwardRefExoticComponent<FormattedNumberProps & React$1.RefAttributes<HTMLSpanElement>>;
78
+ export type IconTileTone = "accent" | "sage" | "gold" | "sky" | "violet" | "neutral";
79
+ export interface IconTileProps extends React$1.HTMLAttributes<HTMLSpanElement> {
80
+ tone?: IconTileTone;
81
+ size?: "sm" | "md" | "lg";
82
+ /**
83
+ * Short text rendered instead of an icon child — typically a single
84
+ * initial. Ignored when `children` is provided.
85
+ */
86
+ initial?: string;
87
+ }
88
+ /**
89
+ * App-icon style identity tile: a softly tinted square holding either an
90
+ * icon or an initial letter. Use it to give list items (extensions, apps,
91
+ * connectors) a recognisable face; pick the tone from the item's category
92
+ * so groups become scannable without reading.
93
+ */
94
+ export declare const IconTile: React$1.ForwardRefExoticComponent<IconTileProps & React$1.RefAttributes<HTMLSpanElement>>;
95
+ export interface KickerProps extends React$1.HTMLAttributes<HTMLSpanElement> {
96
+ as?: React$1.ElementType;
97
+ tone?: "default" | "muted" | "accent" | "copper";
98
+ }
99
+ export declare const Kicker: React$1.ForwardRefExoticComponent<KickerProps & React$1.RefAttributes<HTMLSpanElement>>;
100
+ export interface ShowMoreTagProps extends Omit<React$1.ButtonHTMLAttributes<HTMLButtonElement>, "children" | "type"> {
101
+ expanded: boolean;
102
+ hiddenCount: number;
103
+ collapsedLabel?: (hiddenCount: number) => React$1.ReactNode;
104
+ expandedLabel?: React$1.ReactNode;
105
+ onToggle: () => void;
106
+ }
107
+ export declare const ShowMoreTag: React$1.ForwardRefExoticComponent<ShowMoreTagProps & React$1.RefAttributes<HTMLButtonElement>>;
108
+ declare const serifNumeralVariants: (props?: ({
109
+ size?: "lg" | "sm" | "md" | "xl" | null | undefined;
110
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
111
+ export interface SerifNumeralProps extends React$1.HTMLAttributes<HTMLSpanElement>, VariantProps<typeof serifNumeralVariants> {
112
+ }
113
+ export declare const SerifNumeral: React$1.ForwardRefExoticComponent<SerifNumeralProps & React$1.RefAttributes<HTMLSpanElement>>;
114
+ export declare const Ring: {
115
+ ({ className, classes, label, max, min, title, value, "aria-label": ariaLabel, ...props }: RingProps): React$1.JSX.Element;
116
+ displayName: string;
117
+ };
118
+ export interface RingProps extends Omit<React$1.ComponentProps<"span">, "children"> {
119
+ label: string;
120
+ value: number;
121
+ max?: number;
122
+ min?: number;
123
+ classes?: {
124
+ root?: string;
125
+ svg?: string;
126
+ track?: string;
127
+ indicator?: string;
128
+ };
129
+ }
130
+ export type ThemeToggleValue = "light" | "dark" | "system";
131
+ export interface ThemeToggleProps {
132
+ onThemeChange: (theme: ThemeToggleValue) => void;
133
+ value?: ThemeToggleValue;
134
+ labels?: ThemeToggleLabels;
135
+ className?: string;
136
+ }
137
+ export interface ThemeToggleLabels {
138
+ title: string;
139
+ toggle: string;
140
+ light: string;
141
+ dark: string;
142
+ system: string;
143
+ }
144
+ export declare const ThemeToggle: ({ onThemeChange, value, labels, className }: ThemeToggleProps) => React$1.JSX.Element;
145
+ export type StatusDotTone = "success" | "warning" | "danger" | "primary" | "neutral";
146
+ export interface StatusDotProps extends React$1.HTMLAttributes<HTMLSpanElement> {
147
+ tone?: StatusDotTone;
148
+ /** Renders an expanding ping halo for "live right now" states. */
149
+ pulse?: boolean;
150
+ size?: "sm" | "md";
151
+ }
152
+ export declare const StatusDot: React$1.ForwardRefExoticComponent<StatusDotProps & React$1.RefAttributes<HTMLSpanElement>>;
153
+ declare const badgeVariants: (props?: ({
154
+ variant?: "default" | "destructive" | "outline" | "secondary" | "mono" | "soft" | null | undefined;
155
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
156
+ declare const Badge: ({ className, variant, asChild, ...props }: React$1.ComponentProps<"span"> & VariantProps<typeof badgeVariants> & {
157
+ asChild?: boolean;
158
+ }) => React$1.JSX.Element;
159
+ export type TooltipBadgeTone = "neutral" | "warning";
160
+ export interface TooltipBadgeProps extends Omit<React$1.ComponentProps<typeof Badge>, "variant" | "asChild"> {
161
+ /** Explanation shown on hover/focus; the badge label stays compact. */
162
+ tooltip: React$1.ReactNode;
163
+ tone?: TooltipBadgeTone;
164
+ icon?: React$1.ReactNode;
165
+ }
166
+ export declare const TooltipBadge: React$1.ForwardRefExoticComponent<Omit<TooltipBadgeProps, "ref"> & React$1.RefAttributes<HTMLSpanElement>>;
167
+ export type TypographyVariant = "h1" | "h2" | "h3" | "h4" | "subtitle1" | "subtitle2" | "body1" | "body2";
168
+ export interface TypographyProps extends React$1.HTMLAttributes<HTMLElement> {
169
+ variant?: TypographyVariant;
170
+ as?: React$1.ElementType;
171
+ }
172
+ export declare const Typography: React$1.ForwardRefExoticComponent<TypographyProps & React$1.RefAttributes<HTMLElement>>;
173
+ export type FormFrameProps = React$1.HTMLAttributes<HTMLDivElement> & {
174
+ children: React$1.ReactNode;
175
+ as?: React$1.ElementType;
176
+ onSubmit?: (event: React$1.SubmitEvent<HTMLFormElement>) => void;
177
+ };
178
+ export declare const FormFrame: ({ children, as: Component, className, onSubmit, ...props }: FormFrameProps) => React$1.JSX.Element;
179
+ export interface GridCols {
180
+ cols?: number;
181
+ colsSm?: number;
182
+ colsMd?: number;
183
+ colsLg?: number;
184
+ colsXl?: number;
185
+ cols2xl?: number;
186
+ }
187
+ export interface GridProps extends React$1.HTMLAttributes<HTMLDivElement> {
188
+ cols?: GridCols;
189
+ children: React$1.ReactNode;
190
+ }
191
+ /**
192
+ * Responsive Grid component using CSS variables and Tailwind for breakpoints.
193
+ *
194
+ * @param cols - Object specifying column counts for each breakpoint.
195
+ * @param children - Grid content.
196
+ * @param rest - Other div props.
197
+ */
198
+ export declare const Grid: React$1.FC<GridProps>;
199
+ export type PageRootProps = React$1.ComponentProps<"div"> & {
200
+ spaced?: boolean;
201
+ };
202
+ export declare const PageRoot: ({ className, spaced, ...props }: PageRootProps) => React$1.JSX.Element;
203
+ export interface PageTitleProps {
204
+ title: React$1.ReactNode;
205
+ description?: React$1.ReactNode;
206
+ /**
207
+ * Optional decorative icon. Rendered inside an accent-tinted square.
208
+ */
209
+ icon?: React$1.ReactNode;
210
+ /**
211
+ * Breadcrumb-style label rendered above the title (e.g. "AI · Skills").
212
+ */
213
+ kicker?: React$1.ReactNode;
214
+ /**
215
+ * Right-aligned content that sits inline with the title (e.g. status pill).
216
+ */
217
+ status?: React$1.ReactNode;
218
+ /**
219
+ * Action buttons aligned with the title row on the right.
220
+ */
221
+ actions?: React$1.ReactNode;
222
+ className?: string;
223
+ }
224
+ export declare const PageTitle: ({ title, description, icon, kicker, status, actions, className }: PageTitleProps) => React$1.JSX.Element;
225
+ export interface SectionHeaderProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title"> {
226
+ /** Optional glyph rendered inside a muted square. */
227
+ icon?: React$1.ReactNode;
228
+ title: React$1.ReactNode;
229
+ description?: React$1.ReactNode;
230
+ /** Right-aligned trailing content (e.g. a small action button). */
231
+ action?: React$1.ReactNode;
232
+ }
233
+ export declare const SectionHeader: React$1.ForwardRefExoticComponent<SectionHeaderProps & React$1.RefAttributes<HTMLDivElement>>;
234
+ export interface TableHeadProps {
235
+ title: string;
236
+ toolbar?: React$1.ReactNode;
237
+ }
238
+ export declare const TableHead: ({ title, toolbar }: TableHeadProps) => React$1.JSX.Element;
239
+ declare const Input: ({ className, type, ...props }: React$1.ComponentProps<"input">) => React$1.JSX.Element;
240
+ export interface ArrayInputItemProps<Value> {
241
+ disabled: boolean;
242
+ id: string;
243
+ index: number;
244
+ validationMessage?: string;
245
+ onValueChange: (value: Value) => void;
246
+ value: Value;
247
+ }
248
+ export interface ArrayInputProps<Value = string> extends Omit<React$1.ComponentProps<"div">, "defaultValue" | "onChange"> {
249
+ /** Controlled list of input values. */
250
+ values?: Value[];
251
+ /** Initial values when the component is uncontrolled. */
252
+ defaultValues?: Value[];
253
+ /** Called with the complete list whenever an item changes. */
254
+ onValuesChange?: (values: Value[]) => void;
255
+ /** Visible label for the add action. */
256
+ addLabel: string;
257
+ /** Accessible label for an item input. */
258
+ getItemLabel: (index: number) => string;
259
+ /** Accessible label for an item's remove action. */
260
+ getRemoveLabel: (index: number) => string;
261
+ /** Optional action aligned opposite the add control. */
262
+ actions?: React$1.ReactNode;
263
+ placeholder?: string;
264
+ minItems?: number;
265
+ required?: boolean;
266
+ disabled?: boolean;
267
+ /** Supplies a domain-specific item control while ArrayInput owns list actions. */
268
+ renderItem?: (props: ArrayInputItemProps<Value>) => React$1.ReactNode;
269
+ /** Creates an item for the add action when values are not plain strings. */
270
+ createItem?: () => Value;
271
+ /** Returns a row-specific validation message, if any. */
272
+ validateItem?: (value: Value, index: number) => string | undefined;
273
+ inputProps?: Omit<React$1.ComponentProps<typeof Input>, "aria-label" | "defaultValue" | "disabled" | "id" | "onChange" | "placeholder" | "required" | "value">;
274
+ classes?: {
275
+ root?: string;
276
+ row?: string;
277
+ input?: string;
278
+ removeButton?: string;
279
+ addButton?: string;
280
+ actionRow?: string;
281
+ actions?: string;
282
+ };
283
+ }
284
+ export type CustomArrayInputProps<Value> = ArrayInputProps<Value> & {
285
+ createItem: () => Value;
286
+ renderItem: (props: ArrayInputItemProps<Value>) => React$1.ReactNode;
287
+ };
288
+ export interface ArrayInputComponent {
289
+ <Value>(props: CustomArrayInputProps<Value>): React$1.ReactElement;
290
+ (props: ArrayInputProps): React$1.ReactElement;
291
+ displayName?: string;
292
+ }
293
+ export declare const ArrayInput: ArrayInputComponent;
294
+ export declare const CronBuilder: ({ value, onChange, className, showPreview, timezone, onTimezoneChange }: CronBuilderProps) => React$1.JSX.Element;
295
+ export interface CronBuilderProps {
296
+ value: string;
297
+ onChange: (cron: string) => void;
298
+ className?: string;
299
+ /** Show the compact human-readable summary below the controls. Default: true. */
300
+ showPreview?: boolean;
301
+ /** Selected IANA timezone. When provided, renders a timezone picker. */
302
+ timezone?: string;
303
+ onTimezoneChange?: (timezone: string) => void;
304
+ }
305
+ export type CronMode = "minutes" | "hours" | "day" | "days" | "week" | "weeks" | "month";
306
+ export interface CronSimpleState {
307
+ mode: CronMode;
308
+ interval: number;
309
+ hour: number;
310
+ minute: number;
311
+ weekdays: number[];
312
+ monthday: number;
313
+ }
314
+ export declare const defaultSimpleState: CronSimpleState;
315
+ export declare const parseCron: (cron: string) => CronSimpleState | null;
316
+ export declare const buildCron: (s: CronSimpleState) => string;
317
+ export declare const describeCron: (cron: string) => string;
318
+ export declare const isValidCron: (cron: string) => boolean;
319
+ export interface TimezonePickerProps {
320
+ value: string;
321
+ onChange: (value: string) => void;
322
+ className?: string;
323
+ width?: string;
324
+ disabled?: boolean;
325
+ placeholder?: string;
326
+ }
327
+ export declare const TimezonePicker: ({ value, onChange, className, width, disabled, placeholder }: TimezonePickerProps) => React$1.JSX.Element;
328
+ export interface TimezoneOption {
329
+ value: string;
330
+ label: string;
331
+ }
332
+ export declare const getTimezoneOptions: () => TimezoneOption[];
333
+ export type CoverImageFill = "horizontal" | "vertical" | "both" | "none";
334
+ export interface CoverImageProps {
335
+ src: string;
336
+ alt?: string;
337
+ className?: string;
338
+ width?: number;
339
+ height?: number;
340
+ fill?: CoverImageFill;
341
+ style?: React$1.CSSProperties;
342
+ }
343
+ export declare const CoverImage: React$1.FC<CoverImageProps>;
344
+ export interface SummaryListProps extends Omit<React$1.HTMLAttributes<HTMLElement>, "title"> {
345
+ /** Optional heading shown above the list. */
346
+ title?: React$1.ReactNode;
347
+ }
348
+ export declare const SummaryList: ({ title, className, children, ...props }: SummaryListProps) => React$1.JSX.Element;
349
+ export interface SummaryItemProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
350
+ label: React$1.ReactNode;
351
+ value: React$1.ReactNode;
352
+ /** Mutes the value, e.g. for "Not set" placeholders. */
353
+ muted?: boolean;
354
+ }
355
+ export declare const SummaryItem: ({ label, value, muted, className, ...props }: SummaryItemProps) => React$1.JSX.Element;
356
+ export type ChoiceCardGroupProps = React$1.ComponentProps<typeof RadioGroupPrimitive.Root>;
357
+ export declare const ChoiceCardGroup: ({ className, ...props }: ChoiceCardGroupProps) => React$1.JSX.Element;
358
+ export interface ChoiceCardProps extends Omit<React$1.ComponentProps<typeof RadioGroupPrimitive.Item>, "title" | "children"> {
359
+ title: React$1.ReactNode;
360
+ description?: React$1.ReactNode;
361
+ /** Leading visual, typically an `IconTile`. */
362
+ media?: React$1.ReactNode;
363
+ /** Extra content under the description, pinned to the card bottom. */
364
+ footer?: React$1.ReactNode;
365
+ }
366
+ export declare const ChoiceCard: ({ title, description, media, footer, className, ...props }: ChoiceCardProps) => React$1.JSX.Element;
367
+ declare const cardVariants: (props?: ({
368
+ variant?: "default" | "sheet" | "island" | null | undefined;
369
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
370
+ declare const Card: ({ children, className, variant, visual, ...props }: CardProps) => React$1.JSX.Element;
371
+ export interface CardProps extends React$1.ComponentProps<"div">, VariantProps<typeof cardVariants> {
372
+ visual?: "accent_gradient";
373
+ }
374
+ declare const DropdownMenu: ({ ...props }: React$1.ComponentProps<typeof DropdownMenuPrimitive.Root>) => React$1.JSX.Element;
375
+ declare const DropdownMenuContent: ({ className, sideOffset, ...props }: React$1.ComponentProps<typeof DropdownMenuPrimitive.Content>) => React$1.JSX.Element;
376
+ declare const PopoverContent: ({ className, align, sideOffset, ...props }: React$1.ComponentProps<typeof PopoverPrimitive.Content>) => React$1.JSX.Element;
377
+ declare const RadioGroup: ({ className, ...props }: React$1.ComponentProps<typeof RadioGroupPrimitive.Root>) => React$1.JSX.Element;
378
+ export type CardOptionsBlockProps = React$1.HTMLAttributes<HTMLDivElement>;
379
+ export declare const CardOptionsBlock: React$1.ForwardRefExoticComponent<CardOptionsBlockProps & React$1.RefAttributes<HTMLDivElement>>;
380
+ export declare const RadioCardOptionsBlock: {
381
+ ({ className, ...props }: RadioCardOptionsBlockProps): React$1.JSX.Element;
382
+ displayName: string;
383
+ };
384
+ export declare const CardOption: React$1.ForwardRefExoticComponent<CardOptionProps & React$1.RefAttributes<HTMLLabelElement>>;
385
+ export declare const RadioCardOption: ({ value, title, radioLabel, disabled, onClick, ...props }: RadioCardOptionProps) => React$1.JSX.Element;
386
+ export declare const CheckboxCardOption: ({ checked, title, checkboxLabel, disabled, onClick, onCheckedChange, ...props }: CheckboxCardOptionProps) => React$1.JSX.Element;
387
+ export type RadioCardOptionsBlockProps = React$1.ComponentProps<typeof RadioGroup>;
388
+ export interface CardOptionProps extends Omit<React$1.LabelHTMLAttributes<HTMLLabelElement>, "title"> {
389
+ title: React$1.ReactNode;
390
+ description?: React$1.ReactNode;
391
+ disabled?: boolean;
392
+ control: React$1.ReactNode;
393
+ }
394
+ export interface RadioCardOptionProps extends Omit<CardOptionProps, "control"> {
395
+ value: string;
396
+ radioLabel?: string;
397
+ }
398
+ export interface CheckboxCardOptionProps extends Omit<CardOptionProps, "control"> {
399
+ checked: boolean;
400
+ checkboxLabel?: string;
401
+ onCheckedChange: (checked: boolean) => void;
402
+ }
403
+ export interface CommandStepProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title"> {
404
+ title: string;
405
+ description?: React$1.ReactNode;
406
+ /** The command shown verbatim and copied; may span several lines. */
407
+ command: string;
408
+ /** Accessible name of the copied value; defaults to `title`. */
409
+ copyLabel?: string;
410
+ /** Toast message when the clipboard write fails. */
411
+ copyErrorMessage?: string;
412
+ }
413
+ export declare const CommandStep: React$1.ForwardRefExoticComponent<CommandStepProps & React$1.RefAttributes<HTMLDivElement>>;
414
+ export interface CurrencyInputProps extends Omit<React$1.InputHTMLAttributes<HTMLInputElement>, "type" | "step"> {
415
+ currency: string;
416
+ label?: string;
417
+ hint?: string;
418
+ hideLabel?: boolean;
419
+ hideHint?: boolean;
420
+ error?: string;
421
+ wrapperClassName?: string;
422
+ decimals?: number;
423
+ step?: number;
424
+ }
425
+ export declare const CurrencyInput: import("react").ForwardRefExoticComponent<CurrencyInputProps & import("react").RefAttributes<HTMLInputElement>>;
426
+ export interface FieldRowProps extends React$1.HTMLAttributes<HTMLDivElement> {
427
+ index?: string;
428
+ label: string;
429
+ hint?: React$1.ReactNode;
430
+ }
431
+ export declare const FieldRow: React$1.ForwardRefExoticComponent<FieldRowProps & React$1.RefAttributes<HTMLDivElement>>;
432
+ export interface FileDropAreaProps {
433
+ /** Root props from dropzone (includes event handlers, ref, etc.) */
434
+ rootProps?: React$1.HTMLAttributes<HTMLDivElement>;
435
+ /** Input props from dropzone */
436
+ inputProps?: React$1.InputHTMLAttributes<HTMLInputElement> & React$1.RefAttributes<HTMLInputElement>;
437
+ /** Whether drag is currently active */
438
+ isDragActive?: boolean;
439
+ /** Selected file information */
440
+ selectedFile?: {
441
+ name: string;
442
+ size: number;
443
+ previewUrl?: string | null;
444
+ } | null;
445
+ /** Error message to display */
446
+ error?: string | null;
447
+ /** Handler for removing the selected file */
448
+ onRemoveFile?: (e: React$1.MouseEvent) => void;
449
+ /** Handler for downloading the selected file */
450
+ onDownloadFile?: (e: React$1.MouseEvent) => void;
451
+ /** Whether the selected file download is running */
452
+ isDownloadingFile?: boolean;
453
+ /** Whether the dropzone is disabled */
454
+ disabled?: boolean;
455
+ /** Custom className for the container */
456
+ className?: string;
457
+ /** Labels for customization */
458
+ labels?: {
459
+ dragActive?: string;
460
+ dragInactive?: string;
461
+ fileTypeHint?: string;
462
+ errorRetry?: string;
463
+ downloadFile?: string;
464
+ downloadingFile?: string;
465
+ };
466
+ }
467
+ export declare const FileDropArea: React$1.FC<FileDropAreaProps>;
468
+ export interface FilterChipOption {
469
+ value: string;
470
+ label: React$1.ReactNode;
471
+ /** Optional trailing count rendered as a quiet numeral. */
472
+ count?: number;
473
+ disabled?: boolean;
474
+ }
475
+ declare const chipVariants: (props?: ({
476
+ active?: boolean | null | undefined;
477
+ size?: "sm" | "md" | null | undefined;
478
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
479
+ export interface FilterChipsProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "onChange">, VariantProps<typeof chipVariants> {
480
+ options: FilterChipOption[];
481
+ value: string;
482
+ onValueChange: (value: string) => void;
483
+ /** Accessible name for the chip group. */
484
+ label: string;
485
+ className?: string;
486
+ classes?: {
487
+ root?: string;
488
+ chip?: string;
489
+ count?: string;
490
+ };
491
+ }
492
+ /**
493
+ * A single-select row of pill filters. Use it as the primary narrowing axis
494
+ * of a listing — one chip per bucket, with counts so the shape of the data
495
+ * is readable before any click.
496
+ */
497
+ export declare const FilterChips: {
498
+ ({ options, value, onValueChange, label, size, className, classes, ...props }: FilterChipsProps): React$1.JSX.Element;
499
+ displayName: string;
500
+ };
501
+ /**
502
+ * A left-to-right band of work where concurrency is drawn rather than
503
+ * flattened: sequential items sit on one line, concurrent ones leave it as
504
+ * parallel lanes and rejoin after the slowest finishes.
505
+ *
506
+ * The band owns geometry only. Callers render their own content inside
507
+ * `FlowStep` and `FlowBranch`, so labels, colour, and interaction stay with
508
+ * the domain that understands them.
509
+ */
510
+ export declare const FlowBand: ({ lanes, stepHeight, laneHeight, className, style, children, ...props }: FlowBandProps) => React$1.JSX.Element;
511
+ /** One item on the band's main line, centred against taller branches. */
512
+ export declare const FlowStep: ({ className, style, children, ...props }: FlowStepProps) => React$1.JSX.Element;
513
+ /** Concurrent work: the line splits into one lane per item and rejoins. */
514
+ export declare const FlowBranch: ({ lanes, fork, rejoin, label, className, ...props }: FlowBranchProps) => React$1.JSX.Element;
515
+ export interface FlowBandProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
516
+ /**
517
+ * Widest branch in the band. The band reserves enough height for that many
518
+ * lanes so the main line stays straight from the first step to the last.
519
+ */
520
+ lanes?: number;
521
+ stepHeight?: number;
522
+ laneHeight?: number;
523
+ children: React$1.ReactNode;
524
+ }
525
+ export interface FlowStepProps extends React$1.HTMLAttributes<HTMLDivElement> {
526
+ children: React$1.ReactNode;
527
+ }
528
+ export interface FlowLane {
529
+ key: string;
530
+ /** CSS colour tinting this lane's fork and merge curve. */
531
+ color?: string;
532
+ content: React$1.ReactNode;
533
+ }
534
+ export interface FlowBranchProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
535
+ lanes: FlowLane[];
536
+ /** Draw the bracket that leaves the main line. */
537
+ fork?: boolean;
538
+ /** Draw the bracket that returns to it. Turn off when nothing follows. */
539
+ rejoin?: boolean;
540
+ /** Names the group for assistive tech, e.g. "Steps ran in parallel". */
541
+ label?: string;
542
+ }
543
+ export interface GuideStepProps extends React$1.HTMLAttributes<HTMLDivElement> {
544
+ index: string;
545
+ }
546
+ export declare const GuideStep: React$1.ForwardRefExoticComponent<GuideStepProps & React$1.RefAttributes<HTMLDivElement>>;
547
+ export type HierarchyTreeProps = CardProps;
548
+ export declare const HierarchyTree: React$1.ForwardRefExoticComponent<Omit<CardProps, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
549
+ export interface HierarchyTreeHeaderProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title"> {
550
+ title: React$1.ReactNode;
551
+ icon?: React$1.ReactNode;
552
+ count?: React$1.ReactNode;
553
+ actions?: React$1.ReactNode;
554
+ }
555
+ export declare const HierarchyTreeHeader: React$1.ForwardRefExoticComponent<HierarchyTreeHeaderProps & React$1.RefAttributes<HTMLDivElement>>;
556
+ export type HierarchyTreeBodyProps = React$1.HTMLAttributes<HTMLDivElement>;
557
+ export declare const HierarchyTreeBody: React$1.ForwardRefExoticComponent<HierarchyTreeBodyProps & React$1.RefAttributes<HTMLDivElement>>;
558
+ export interface HierarchyTreeRowProps extends React$1.HTMLAttributes<HTMLDivElement> {
559
+ depth: number;
560
+ rails?: boolean[];
561
+ isLastChild?: boolean;
562
+ hasChildren?: boolean;
563
+ contentClassName?: string;
564
+ }
565
+ export declare const HierarchyTreeRow: React$1.ForwardRefExoticComponent<HierarchyTreeRowProps & React$1.RefAttributes<HTMLDivElement>>;
566
+ export interface HierarchyTreeToggleProps extends Omit<React$1.ComponentProps<typeof Button>, "children" | "size" | "variant"> {
567
+ expanded: boolean;
568
+ count: React$1.ReactNode;
569
+ visible?: boolean;
570
+ }
571
+ export declare const HierarchyTreeToggle: React$1.ForwardRefExoticComponent<Omit<HierarchyTreeToggleProps, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
572
+ declare const jsonViewerVariants: (props?: ({
573
+ size?: "lg" | "sm" | "md" | null | undefined;
574
+ variant?: "default" | "filled" | "outlined" | null | undefined;
575
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
576
+ export interface JsonViewerProps extends VariantProps<typeof jsonViewerVariants> {
577
+ /** Any caller-owned value; unsupported or cyclic values are normalized safely. */
578
+ data: unknown;
579
+ className?: string;
580
+ classes?: {
581
+ root?: string;
582
+ toolbar?: string;
583
+ content?: string;
584
+ };
585
+ expandAll?: boolean;
586
+ expandRoot?: boolean;
587
+ /**
588
+ * Take over how a primitive value is drawn, keeping the tree's structure and
589
+ * expand/collapse behaviour. Return `undefined` to fall back to the default
590
+ * colouring. Used to give some values their own meaning — a redacted field,
591
+ * a link, a unit — without forking the viewer.
592
+ */
593
+ renderValue?: (value: JsonPrimitive, path: string) => React$1.ReactNode;
594
+ indentSize?: number;
595
+ showLineNumbers?: boolean;
596
+ showToolbar?: boolean;
597
+ maxHeight?: number | string;
598
+ maxWidth?: number | string;
599
+ }
600
+ export type JsonPrimitive = boolean | null | number | string | undefined;
601
+ export declare const JsonViewer: React$1.FC<JsonViewerProps>;
602
+ export type MarkdownEditorPreviewMode = "write" | "preview";
603
+ export interface MarkdownEditorPreviewToggleLabels {
604
+ write: string;
605
+ preview: string;
606
+ writeTitle?: string;
607
+ previewTitle?: string;
608
+ }
609
+ export interface MarkdownEditorPreviewToggleProps {
610
+ mode: MarkdownEditorPreviewMode;
611
+ onModeChange: (mode: MarkdownEditorPreviewMode) => void;
612
+ labels: MarkdownEditorPreviewToggleLabels;
613
+ disabled?: boolean;
614
+ className?: string;
615
+ }
616
+ export declare const MarkdownEditorPreviewToggle: ({ mode, onModeChange, labels, disabled, className }: MarkdownEditorPreviewToggleProps) => React$1.JSX.Element;
617
+ export interface MarkdownEditorPreviewProps {
618
+ label: string;
619
+ value: string;
620
+ onValueChange: (value: string) => void;
621
+ emptyPreview: React$1.ReactNode;
622
+ toggleLabels: MarkdownEditorPreviewToggleLabels;
623
+ mode?: MarkdownEditorPreviewMode;
624
+ defaultMode?: MarkdownEditorPreviewMode;
625
+ onModeChange?: (mode: MarkdownEditorPreviewMode) => void;
626
+ previewValue?: string;
627
+ disabled?: boolean;
628
+ placeholder?: string;
629
+ editorId?: string;
630
+ showHeader?: boolean;
631
+ footer?: React$1.ReactNode;
632
+ className?: string;
633
+ editorClassName?: string;
634
+ previewClassName?: string;
635
+ textareaProps?: Omit<React$1.ComponentProps<"textarea">, "id" | "value" | "disabled" | "placeholder" | "onChange" | "className">;
636
+ }
637
+ export declare const MarkdownEditorPreview: ({ label, value, onValueChange, emptyPreview, toggleLabels, mode, defaultMode, onModeChange, previewValue, disabled, placeholder, editorId, showHeader, footer, className, editorClassName, previewClassName, textareaProps }: MarkdownEditorPreviewProps) => React$1.JSX.Element;
638
+ export interface JsonViewerDialogProps {
639
+ open: boolean;
640
+ onOpenChange: (open: boolean) => void;
641
+ title?: React$1.ReactNode;
642
+ data: unknown;
643
+ jsonViewerProps?: Omit<JsonViewerProps, "data">;
644
+ }
645
+ export declare const JsonViewerDialog: ({ open, onOpenChange, title, data, jsonViewerProps }: JsonViewerDialogProps) => React$1.JSX.Element;
646
+ export interface LinkComponentProps {
647
+ to: string;
648
+ className?: string;
649
+ children?: React$1.ReactNode;
650
+ }
651
+ export interface LinkedItemProps {
652
+ href: string;
653
+ children: React$1.ReactNode;
654
+ className?: string;
655
+ external?: boolean;
656
+ linkComponent?: React$1.ComponentType<LinkComponentProps>;
657
+ }
658
+ export declare const LinkedItem: ({ href, children, className, external, linkComponent: LinkComponent }: LinkedItemProps) => React$1.JSX.Element;
659
+ export interface MaskedValueProps {
660
+ value: string;
661
+ isSensitive?: boolean;
662
+ className?: string;
663
+ maskChar?: string;
664
+ showToggle?: boolean;
665
+ }
666
+ export declare const MaskedValue: ({ value, isSensitive, className, maskChar, showToggle }: MaskedValueProps) => React$1.JSX.Element;
667
+ export interface MutedPlaceholderProps extends React$1.HTMLAttributes<HTMLDivElement> {
668
+ icon?: React$1.ReactNode;
669
+ text: React$1.ReactNode;
670
+ trailing?: React$1.ReactNode;
671
+ }
672
+ export declare const MutedPlaceholder: React$1.ForwardRefExoticComponent<MutedPlaceholderProps & React$1.RefAttributes<HTMLDivElement>>;
673
+ export interface ObjectSchemaExplorerProps {
674
+ /** A caller-owned schema value normalized at the component boundary. */
675
+ schema: unknown;
676
+ className?: string;
677
+ defaultExpandedDepth?: number;
678
+ emptyLabel?: string;
679
+ }
680
+ /**
681
+ * A compact, human-readable explorer for JSON Schema-shaped objects.
682
+ * It intentionally renders schema semantics rather than raw JSON.
683
+ */
684
+ export declare const ObjectSchemaExplorer: ({ schema, className, defaultExpandedDepth, emptyLabel }: ObjectSchemaExplorerProps) => React$1.JSX.Element;
685
+ export interface SortableListProps<T extends {
686
+ id: string;
687
+ }> {
688
+ items: T[];
689
+ onReorder: (newOrder: T[]) => void;
690
+ /** Provides an item-specific accessible name for the drag handle. */
691
+ getItemLabel?: (item: T) => string;
692
+ /** Renders a row given the item and a drag-handle node to mount somewhere
693
+ * inside it. The handle is the only mouse target that initiates a drag —
694
+ * click handlers on the rest of the row keep working normally. */
695
+ renderItem: (item: T, handle: React$1.ReactNode) => React$1.ReactNode;
696
+ /** Renders the rows without drag affordances, for orders the caller cannot
697
+ * change (e.g. an order inherited from elsewhere). */
698
+ disabled?: boolean;
699
+ }
700
+ /**
701
+ * Thin wrapper around @dnd-kit/sortable that handles the boilerplate of
702
+ * sensors, keyboard support, drag-end → arrayMove, and per-row transform
703
+ * styles. The caller is responsible for translating the new order into
704
+ * persistence (typically writing each row's `order_index`).
705
+ *
706
+ * Designed to be reusable: items only need a stable `id` field; everything
707
+ * else is up to the caller's `renderItem`.
708
+ */
709
+ export declare const SortableList: <T extends {
710
+ id: string;
711
+ }>({ items, onReorder, getItemLabel, renderItem, disabled }: SortableListProps<T>) => React$1.JSX.Element | React$1.JSX.Element[];
712
+ export interface ConfirmDialogProps {
713
+ open: boolean;
714
+ onOpenChange: (open: boolean) => void;
715
+ title: string;
716
+ description: React$1.ReactNode;
717
+ confirmLabel: string;
718
+ cancelLabel?: string;
719
+ confirmVariant?: "default" | "destructive";
720
+ /** Label shown on the confirm button while `onConfirm` is pending. */
721
+ pendingLabel?: string;
722
+ /** Awaited before closing; the dialog stays open if it throws. */
723
+ onConfirm: () => Promise<void> | void;
724
+ }
725
+ export declare const ConfirmDialog: {
726
+ ({ open, onOpenChange, title, description, confirmLabel, cancelLabel, confirmVariant, pendingLabel, onConfirm }: ConfirmDialogProps): React$1.JSX.Element;
727
+ displayName: string;
728
+ };
729
+ export interface StageHeaderProps extends React$1.HTMLAttributes<HTMLDivElement> {
730
+ step: number;
731
+ total: number;
732
+ title: string;
733
+ helper: string;
734
+ action?: React$1.ReactNode;
735
+ }
736
+ export declare const StageHeader: React$1.ForwardRefExoticComponent<StageHeaderProps & React$1.RefAttributes<HTMLDivElement>>;
737
+ declare const chipVariants$1: (props?: ({
738
+ tone?: "default" | "accent" | "success" | "warning" | "danger" | null | undefined;
739
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
740
+ export interface StatTileProps extends Omit<React$1.ComponentProps<typeof Card>, "children" | "variant">, VariantProps<typeof chipVariants$1> {
741
+ /**
742
+ * "tile" is the icon-led showcase card for summary strips; "compact" is the
743
+ * dense left-aligned form for stat rows inside busier pages.
744
+ */
745
+ variant?: "tile" | "compact";
746
+ /** Lucide icon (or any node). Chip on "tile", small inline glyph on "compact". */
747
+ icon?: React$1.ReactNode;
748
+ /** Short uppercase caption describing the metric. */
749
+ label: React$1.ReactNode;
750
+ /** The headline figure — kept in primary text color for legibility. */
751
+ value: React$1.ReactNode;
752
+ /** Secondary qualifier under the figure (e.g. "Current failures"). */
753
+ detail?: React$1.ReactNode;
754
+ }
755
+ /**
756
+ * The canonical dashboard metric. Lay several out in a
757
+ * `grid grid-cols-2 md:grid-cols-4` to build a summary strip; do not
758
+ * re-implement one-off stat blocks in page templates.
759
+ */
760
+ export declare const StatTile: {
761
+ ({ variant, icon, label, value, detail, tone, className, ...props }: StatTileProps): React$1.JSX.Element;
762
+ displayName: string;
763
+ };
764
+ export type StatusPillTone = "neutral" | "success" | "warning" | "danger" | "live";
765
+ export interface StatusPillProps extends React$1.HTMLAttributes<HTMLDivElement> {
766
+ /**
767
+ * Semantic state. "live" renders a pulsing accent dot for in-flight
768
+ * activity. When set, `tone` wins over the legacy `active` flag.
769
+ */
770
+ tone?: StatusPillTone;
771
+ active?: boolean;
772
+ /**
773
+ * Optional convenience label rendered as the pill text. If `children` is
774
+ * provided it takes precedence so consumers can compose richer content.
775
+ */
776
+ label?: React$1.ReactNode;
777
+ }
778
+ export declare const StatusPill: React$1.ForwardRefExoticComponent<StatusPillProps & React$1.RefAttributes<HTMLDivElement>>;
779
+ declare const searchFieldVariants: (props?: ({
780
+ size?: "sm" | "md" | null | undefined;
781
+ variant?: "pill" | "plain" | null | undefined;
782
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
783
+ export interface SearchFieldProps extends Omit<React$1.InputHTMLAttributes<HTMLInputElement>, "onChange" | "value" | "defaultValue" | "size" | "type">, VariantProps<typeof searchFieldVariants> {
784
+ /** Controlled value. Omit to run uncontrolled with `defaultValue`. */
785
+ value?: string;
786
+ defaultValue?: string;
787
+ onValueChange?: (value: string) => void;
788
+ /** Accessible label for the clear button. Hidden when empty. */
789
+ clearLabel?: string;
790
+ className?: string;
791
+ classes?: {
792
+ root?: string;
793
+ icon?: string;
794
+ input?: string;
795
+ clear?: string;
796
+ };
797
+ }
798
+ /**
799
+ * Search input with a leading magnifier and an optional clear affordance.
800
+ * The canonical way to filter a listing — reach for this instead of
801
+ * restyling a bare `Input` per page.
802
+ */
803
+ export declare const SearchField: {
804
+ ({ value, defaultValue, onValueChange, clearLabel, variant, size, className, classes, ...props }: SearchFieldProps): React$1.JSX.Element;
805
+ displayName: string;
806
+ };
807
+ export interface SectionSwitcherOption {
808
+ value: string;
809
+ label: string;
810
+ ariaLabel?: string;
811
+ disabled?: boolean;
812
+ }
813
+ export interface SectionSwitcherProps extends Omit<React$1.HTMLAttributes<HTMLElement>, "onChange" | "title"> {
814
+ title: React$1.ReactNode;
815
+ description?: React$1.ReactNode;
816
+ value: string;
817
+ options: SectionSwitcherOption[];
818
+ onValueChange: (value: string) => void;
819
+ align?: "start" | "center";
820
+ }
821
+ export declare const SectionSwitcher: {
822
+ ({ title, description, value, options, onValueChange, align, className, ...props }: SectionSwitcherProps): React$1.JSX.Element;
823
+ displayName: string;
824
+ };
825
+ export interface StepperProps extends React$1.ComponentProps<"div"> {
826
+ value?: number;
827
+ defaultValue?: number;
828
+ indicators?: {
829
+ completed?: React$1.ReactNode;
830
+ loading?: React$1.ReactNode;
831
+ };
832
+ }
833
+ export declare const Stepper: ({ value, defaultValue, indicators, className, ...props }: StepperProps) => React$1.JSX.Element;
834
+ export declare const StepperNav: ({ className, ...props }: React$1.ComponentProps<"nav">) => React$1.JSX.Element;
835
+ export interface StepperItemProps extends React$1.ComponentProps<"div"> {
836
+ step: number;
837
+ loading?: boolean;
838
+ }
839
+ export declare const StepperItem: ({ step, loading, className, ...props }: StepperItemProps) => React$1.JSX.Element;
840
+ export declare const StepperTrigger: ({ className, ...props }: React$1.ComponentProps<"div">) => React$1.JSX.Element;
841
+ export declare const StepperIndicator: ({ className, children, ...props }: React$1.ComponentProps<"div">) => React$1.JSX.Element;
842
+ export declare const StepperTitle: ({ className, ...props }: React$1.ComponentProps<"span">) => React$1.JSX.Element;
843
+ export declare const StepperSeparator: ({ className, ...props }: React$1.ComponentProps<"div">) => React$1.JSX.Element;
844
+ export declare const StepperPanel: ({ className, ...props }: React$1.ComponentProps<"div">) => React$1.JSX.Element;
845
+ export interface StepperContentProps extends React$1.ComponentProps<"div"> {
846
+ value: number;
847
+ }
848
+ export declare const StepperContent: ({ value: stepValue, className, ...props }: StepperContentProps) => React$1.JSX.Element | null;
849
+ export type SplitButtonStyle = Pick<VariantProps<typeof buttonVariants>, "size" | "variant">;
850
+ /**
851
+ * A primary action joined to a menu of related actions. Compose it from
852
+ * `SplitButtonAction` and `SplitButtonMenu`; both halves share `variant` and
853
+ * `size`.
854
+ */
855
+ export declare const SplitButton: ({ className, size, variant, ...props }: React$1.ComponentProps<"fieldset"> & SplitButtonStyle) => React$1.JSX.Element;
856
+ /** The main action: the left half of the split button. */
857
+ export declare const SplitButtonAction: ({ className, ...props }: Omit<React$1.ComponentProps<typeof Button>, "size" | "variant">) => React$1.JSX.Element;
858
+ /**
859
+ * The right half: a chevron that opens the related actions. Children are
860
+ * dropdown menu items.
861
+ */
862
+ export declare const SplitButtonMenu: ({ align, children, contentClassName, disabled, label, modal, onOpenChange, open }: Pick<React$1.ComponentProps<typeof DropdownMenu>, "modal" | "onOpenChange" | "open"> & Pick<React$1.ComponentProps<typeof DropdownMenuContent>, "align"> & {
863
+ children: React$1.ReactNode;
864
+ contentClassName?: string;
865
+ disabled?: boolean;
866
+ /** Accessible name of the chevron, e.g. "More actions". */
867
+ label: string;
868
+ }) => React$1.JSX.Element;
869
+ export interface TechnicalDetailsItem {
870
+ label: string;
871
+ value: string;
872
+ /** Show a copy-to-clipboard button next to the value. Defaults to true. */
873
+ copyable?: boolean;
874
+ }
875
+ export interface TechnicalDetailsPopoverProps {
876
+ items: TechnicalDetailsItem[];
877
+ /** Heading shown at the top of the popover. */
878
+ title?: React$1.ReactNode;
879
+ /** Accessible label for the info trigger button. */
880
+ triggerAriaLabel?: string;
881
+ /** Accessible label prefix for each copy button, e.g. "Copy". */
882
+ copyLabel?: string;
883
+ /** Custom trigger; replaces the default info icon button. */
884
+ trigger?: React$1.ReactNode;
885
+ align?: React$1.ComponentProps<typeof PopoverContent>["align"];
886
+ side?: React$1.ComponentProps<typeof PopoverContent>["side"];
887
+ onCopy?: (item: TechnicalDetailsItem) => void;
888
+ className?: string;
889
+ classes?: {
890
+ root?: string;
891
+ trigger?: string;
892
+ content?: string;
893
+ row?: string;
894
+ label?: string;
895
+ value?: string;
896
+ };
897
+ }
898
+ /**
899
+ * A quiet info affordance that keeps technical metadata (identifiers, FQNs,
900
+ * timestamps) off the surface of a card or row. Opens on click so its content
901
+ * stays interactive: values render in monospace with `select-all` (one click
902
+ * selects the whole value) and an optional copy button per row.
903
+ */
904
+ export declare const TechnicalDetailsPopover: ({ items, title, triggerAriaLabel, copyLabel, trigger, align, side, onCopy, className, classes }: TechnicalDetailsPopoverProps) => React$1.JSX.Element;
905
+ export interface TreeSelectNode {
906
+ /** Unique across the whole tree. */
907
+ id: string;
908
+ label: string;
909
+ /** When present the node is a group (folder) and cannot be selected. */
910
+ children?: readonly TreeSelectNode[];
911
+ /** Overrides the default icon of the row. */
912
+ icon?: React$1.ReactNode;
913
+ }
914
+ export interface TreeSelectProps {
915
+ nodes: readonly TreeSelectNode[];
916
+ /** The selected leaf id. */
917
+ value?: string;
918
+ onChange: (id: string) => void;
919
+ /** A durable label for a selected leaf that is not in `nodes`. */
920
+ selectedLabel?: string;
921
+ placeholder?: string;
922
+ searchPlaceholder?: string;
923
+ emptyMessage?: string;
924
+ id?: string;
925
+ className?: string;
926
+ width?: string;
927
+ disabled?: boolean;
928
+ /** Indicates that nodes are being fetched from a remote source. */
929
+ loading?: boolean;
930
+ /** Announced while remote nodes are loading. */
931
+ loadingMessage?: string;
932
+ /**
933
+ * Enables server-side search: the consumer filters `nodes`, and every leaf
934
+ * they contain is listed while a query is active.
935
+ */
936
+ onSearchChange?: (search: string) => void;
937
+ /** Enables modal focus and scroll handling for use inside another modal. */
938
+ modal?: boolean;
939
+ }
940
+ export declare const TreeSelect: React$1.ForwardRefExoticComponent<TreeSelectProps & React$1.RefAttributes<HTMLButtonElement>>;
941
+ export interface ValueRowProps extends React$1.HTMLAttributes<HTMLDivElement> {
942
+ value: React$1.ReactNode;
943
+ state?: "value" | "secret";
944
+ trailing?: React$1.ReactNode;
945
+ monospace?: boolean;
946
+ }
947
+ export declare const ValueRow: React$1.ForwardRefExoticComponent<ValueRowProps & React$1.RefAttributes<HTMLDivElement>>;
948
+ export interface VariableOption {
949
+ key: string;
950
+ description?: string;
951
+ }
952
+ export interface VariableRecord extends VariableOption {
953
+ value: string | null;
954
+ secret: boolean;
955
+ }
956
+ export type VariableFieldMode = "linked" | "inline";
957
+ export interface VariableReferenceFieldProps {
958
+ /** Stored primitive value. In ``linked`` mode this is the variable key
959
+ * (e.g. ``SQL_PG_CONNECTOR_PASSWORD``); in ``inline`` mode it's the
960
+ * literal value the user typed. */
961
+ value: string;
962
+ /** Whether this field references a stored variable or holds a literal. */
963
+ mode: VariableFieldMode;
964
+ /** Emit a new (value, mode) pair. ``mode`` reflects which side of the
965
+ * toggle the user is on; ``value`` always carries the primitive. */
966
+ onChange: (value: string, mode: VariableFieldMode) => void;
967
+ onBlur?: () => void;
968
+ /** Stored variables to choose from, supplied by the bridge. */
969
+ options: VariableOption[];
970
+ /** True while the bridge is performing its initial fetch. */
971
+ optionsLoading?: boolean;
972
+ /** True whenever the bridge is fetching (initial + background refetches). */
973
+ optionsFetching?: boolean;
974
+ onSearch?: (query: string) => void;
975
+ onCreate?: (input: {
976
+ key: string;
977
+ value: string;
978
+ secret?: boolean;
979
+ }) => Promise<VariableOption>;
980
+ /** Resolve a single variable record so the inline editor can show / save its value. */
981
+ onResolve?: (key: string) => Promise<VariableRecord | null>;
982
+ /** Persist a new value to an existing linked variable. */
983
+ onUpdate?: (input: {
984
+ key: string;
985
+ value: string;
986
+ }) => void | Promise<void>;
987
+ suggestedName?: string;
988
+ placeholder?: string;
989
+ disabled?: boolean;
990
+ className?: string;
991
+ /** Mask the value visually by default (forces a reveal toggle to read it). */
992
+ masked?: boolean;
993
+ }
994
+ export declare const VariableReferenceField: import("react").ForwardRefExoticComponent<VariableReferenceFieldProps & import("react").RefAttributes<HTMLButtonElement>>;
995
+ export interface XmlViewerDialogProps {
996
+ open: boolean;
997
+ onOpenChange: (open: boolean) => void;
998
+ title?: React$1.ReactNode;
999
+ data: string;
1000
+ }
1001
+ export declare const XmlViewerDialog: ({ open, onOpenChange, title, data }: XmlViewerDialogProps) => React$1.JSX.Element;
1002
+ export interface ErrorAlertProps {
1003
+ title?: React$1.ReactNode;
1004
+ children: React$1.ReactNode;
1005
+ details?: {
1006
+ label: string;
1007
+ content: React$1.ReactNode;
1008
+ };
1009
+ className?: string;
1010
+ open?: boolean;
1011
+ defaultOpen?: boolean;
1012
+ onOpenChange?: (open: boolean) => void;
1013
+ classes?: {
1014
+ root?: string;
1015
+ title?: string;
1016
+ message?: string;
1017
+ details?: string;
1018
+ trigger?: string;
1019
+ content?: string;
1020
+ };
1021
+ }
1022
+ export declare const ErrorAlert: ({ title, children, details, className, open, defaultOpen, onOpenChange, classes }: ErrorAlertProps) => React$1.JSX.Element;
1023
+ export type LaneProgressLane = Readonly<{
1024
+ fillClassName?: string;
1025
+ mode?: "determinate" | "indeterminate";
1026
+ value?: number;
1027
+ }>;
1028
+ export type LaneProgressProps = Readonly<{
1029
+ className?: string;
1030
+ detail?: string | null;
1031
+ label: string;
1032
+ lanes: readonly LaneProgressLane[];
1033
+ }>;
1034
+ export declare const LaneProgress: ({ className, detail, label, lanes }: LaneProgressProps) => React$1.JSX.Element;
1035
+ export type LifecycleStatusTone = "default" | "active" | "success" | "warning" | "danger" | "muted";
1036
+ export interface LifecycleStatusCardProgress {
1037
+ mode?: "determinate" | "indeterminate";
1038
+ value?: number;
1039
+ completed?: number;
1040
+ total?: number;
1041
+ label?: React$1.ReactNode;
1042
+ }
1043
+ export interface LifecycleStatusCardMilestone {
1044
+ id: string;
1045
+ label: React$1.ReactNode;
1046
+ description?: React$1.ReactNode;
1047
+ tone?: LifecycleStatusTone;
1048
+ }
1049
+ export interface LifecycleStatusCardError {
1050
+ title?: React$1.ReactNode;
1051
+ summary?: React$1.ReactNode;
1052
+ detail?: React$1.ReactNode;
1053
+ tone?: "default" | "destructive";
1054
+ }
1055
+ export interface LifecycleStatusCardModel {
1056
+ statusLabel: React$1.ReactNode;
1057
+ title: React$1.ReactNode;
1058
+ description: React$1.ReactNode;
1059
+ tone?: LifecycleStatusTone;
1060
+ icon?: React$1.ReactNode;
1061
+ iconAnimated?: boolean;
1062
+ currentStep?: React$1.ReactNode;
1063
+ progress?: LifecycleStatusCardProgress;
1064
+ milestones?: LifecycleStatusCardMilestone[];
1065
+ error?: LifecycleStatusCardError;
1066
+ completedState?: React$1.ReactNode;
1067
+ }
1068
+ export interface LifecycleStatusCardContext {
1069
+ model: LifecycleStatusCardModel;
1070
+ statusLabel: React$1.ReactNode;
1071
+ title: React$1.ReactNode;
1072
+ description: React$1.ReactNode;
1073
+ }
1074
+ export type LifecycleStatusCardSlot = React$1.ReactNode | ((context: LifecycleStatusCardContext) => React$1.ReactNode);
1075
+ export interface LifecycleStatusCardSlots {
1076
+ shell?: (context: LifecycleStatusCardContext & {
1077
+ children: React$1.ReactNode;
1078
+ }) => React$1.ReactNode;
1079
+ header?: LifecycleStatusCardSlot;
1080
+ icon?: LifecycleStatusCardSlot;
1081
+ title?: LifecycleStatusCardSlot;
1082
+ description?: LifecycleStatusCardSlot;
1083
+ progressBody?: LifecycleStatusCardSlot;
1084
+ milestoneList?: LifecycleStatusCardSlot;
1085
+ errorPanel?: LifecycleStatusCardSlot;
1086
+ actions?: LifecycleStatusCardSlot;
1087
+ completedState?: LifecycleStatusCardSlot;
1088
+ }
1089
+ export interface LifecycleStatusCardProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title"> {
1090
+ model: LifecycleStatusCardModel;
1091
+ slots?: LifecycleStatusCardSlots;
1092
+ }
1093
+ export declare const LifecycleStatusCard: ({ model, slots, className, ...props }: LifecycleStatusCardProps) => React$1.ReactNode;
1094
+ export interface SkeletonRowsProps extends React$1.HTMLAttributes<HTMLDivElement> {
1095
+ /** Number of placeholder rows. Match the typical page size, not a random N. */
1096
+ rows?: number;
1097
+ /** Classes applied to each row (height, radius). Default is a table row. */
1098
+ rowClassName?: string;
1099
+ }
1100
+ export declare const SkeletonRows: React$1.ForwardRefExoticComponent<SkeletonRowsProps & React$1.RefAttributes<HTMLDivElement>>;
1101
+ export interface EmptyStateProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title"> {
1102
+ icon?: React$1.ReactNode;
1103
+ /**
1104
+ * Larger spot illustration shown above the title in place of the icon tile.
1105
+ * Takes precedence over `icon`. Pair with `@collective-intelligence/ui-react/illustrations`.
1106
+ */
1107
+ illustration?: React$1.ReactNode;
1108
+ title: React$1.ReactNode;
1109
+ description?: React$1.ReactNode;
1110
+ action?: React$1.ReactNode;
1111
+ secondaryAction?: React$1.ReactNode;
1112
+ size?: "sm" | "md";
1113
+ variant?: "framed" | "bare";
1114
+ }
1115
+ export declare const EmptyState: React$1.ForwardRefExoticComponent<EmptyStateProps & React$1.RefAttributes<HTMLDivElement>>;
1116
+ export interface TechnicalErrorDisclosureProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title"> {
1117
+ title?: React$1.ReactNode;
1118
+ message: React$1.ReactNode;
1119
+ detail?: React$1.ReactNode;
1120
+ detailLabel?: React$1.ReactNode;
1121
+ detailHeading?: React$1.ReactNode;
1122
+ defaultOpen?: boolean;
1123
+ }
1124
+ export declare const TechnicalErrorDisclosure: React$1.ForwardRefExoticComponent<TechnicalErrorDisclosureProps & React$1.RefAttributes<HTMLDivElement>>;
1125
+ export interface AppLoadingLayoutProps {
1126
+ icon?: React$1.ReactNode;
1127
+ title?: React$1.ReactNode;
1128
+ className?: string;
1129
+ spinnerSize?: number;
1130
+ }
1131
+ export declare const AppLoadingLayout: ({ icon, title, className, spinnerSize }: AppLoadingLayoutProps) => React$1.JSX.Element;
1132
+ export interface SplashScreenLayoutProps {
1133
+ children?: React$1.ReactNode;
1134
+ className?: string;
1135
+ classes?: {
1136
+ root?: string;
1137
+ content?: string;
1138
+ left?: string;
1139
+ right?: string;
1140
+ };
1141
+ loading?: boolean;
1142
+ coverImage?: React$1.ReactNode;
1143
+ }
1144
+ export declare const SplashScreenLayout: ({ children, className, classes, loading, coverImage }: SplashScreenLayoutProps) => React$1.JSX.Element;
1145
+ export declare const useIsMobile: () => boolean;
1146
+
1147
+ export {};