@ceebee/ui 0.5.2 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client.d.ts +603 -10
- package/dist/client.js +2342 -153
- package/dist/index.d.ts +325 -4
- package/dist/index.js +596 -21
- package/dist/styles.css +2221 -103
- package/package.json +13 -10
package/dist/client.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
|
-
import { ReactNode, ButtonHTMLAttributes, InputHTMLAttributes, TextareaHTMLAttributes
|
|
2
|
+
import { ReactNode, ButtonHTMLAttributes, ReactElement, InputHTMLAttributes, TextareaHTMLAttributes } from 'react';
|
|
3
3
|
import * as _base_ui_react from '@base-ui/react';
|
|
4
4
|
|
|
5
5
|
/**
|
|
@@ -117,6 +117,35 @@ interface ButtonProps extends NativeButtonProps {
|
|
|
117
117
|
}
|
|
118
118
|
declare const Button: react.ForwardRefExoticComponent<ButtonProps & react.RefAttributes<HTMLButtonElement>>;
|
|
119
119
|
|
|
120
|
+
type FloatButtonPlacement = 'bottom-start' | 'bottom-end';
|
|
121
|
+
type NativeFloatButtonProps = Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'aria-label' | 'aria-labelledby' | 'children' | 'className' | 'color' | 'role' | 'style'>;
|
|
122
|
+
type FloatButtonCommonProps = NativeFloatButtonProps & {
|
|
123
|
+
/** Required accessible name. It is also rendered when `visibleLabel` is enabled. */
|
|
124
|
+
label: string;
|
|
125
|
+
tone?: Tone;
|
|
126
|
+
size?: Size;
|
|
127
|
+
placement?: FloatButtonPlacement;
|
|
128
|
+
/** These native escape hatches are rejected so FloatButton owns its name and fixed layout. */
|
|
129
|
+
'aria-label'?: never;
|
|
130
|
+
'aria-labelledby'?: never;
|
|
131
|
+
style?: never;
|
|
132
|
+
};
|
|
133
|
+
type FloatButtonProps = FloatButtonCommonProps & ({
|
|
134
|
+
/** Renders `label` beside the optional icon. */
|
|
135
|
+
visibleLabel: true;
|
|
136
|
+
icon?: ReactNode;
|
|
137
|
+
} | {
|
|
138
|
+
/** An icon-only action must still expose a visible affordance. */
|
|
139
|
+
visibleLabel?: false;
|
|
140
|
+
icon: ReactElement;
|
|
141
|
+
});
|
|
142
|
+
/**
|
|
143
|
+
* A persistent, fixed-viewport action. It intentionally remains one native
|
|
144
|
+
* button: navigation, grouped actions, and scroll-to-top behaviour are separate
|
|
145
|
+
* contracts rather than variants of this component.
|
|
146
|
+
*/
|
|
147
|
+
declare const FloatButton: react.ForwardRefExoticComponent<FloatButtonProps & react.RefAttributes<HTMLButtonElement>>;
|
|
148
|
+
|
|
120
149
|
interface FieldWiring {
|
|
121
150
|
controlId: string;
|
|
122
151
|
describedBy: string | undefined;
|
|
@@ -436,6 +465,250 @@ interface NumberInputProps extends NumberBounds {
|
|
|
436
465
|
*/
|
|
437
466
|
declare function InputNumber({ value, defaultValue, onValueChange, min, max, step, size, disabled, invalid, name, placeholder, suffix, className, }: NumberInputProps): react.JSX.Element;
|
|
438
467
|
|
|
468
|
+
interface SliderSkeletonProps {
|
|
469
|
+
orientation?: SliderOrientation;
|
|
470
|
+
range?: boolean;
|
|
471
|
+
size?: Size;
|
|
472
|
+
}
|
|
473
|
+
/** Placeholder geometry for a one- or two-thumb Slider (ADR 0009). */
|
|
474
|
+
declare function SliderSkeleton({ orientation, range, size }: SliderSkeletonProps): react.JSX.Element;
|
|
475
|
+
|
|
476
|
+
type SliderOrientation = 'horizontal' | 'vertical';
|
|
477
|
+
type SliderRangeValue = readonly [number, number];
|
|
478
|
+
interface SliderCommonProps {
|
|
479
|
+
/** Names the value control. Range thumbs become “Minimum {label}” and “Maximum {label}”. */
|
|
480
|
+
label: string;
|
|
481
|
+
min?: number;
|
|
482
|
+
max?: number;
|
|
483
|
+
step?: number;
|
|
484
|
+
largeStep?: number;
|
|
485
|
+
minStepsBetweenValues?: number;
|
|
486
|
+
/** Disables visual thumb transitions without changing Slider state feedback. */
|
|
487
|
+
motion?: boolean;
|
|
488
|
+
disabled?: boolean;
|
|
489
|
+
orientation?: SliderOrientation;
|
|
490
|
+
tone?: Tone;
|
|
491
|
+
size?: Size;
|
|
492
|
+
name?: string;
|
|
493
|
+
/** Announces a formatted value without changing the numeric form value. */
|
|
494
|
+
getAriaValueText?: (value: number, index: number) => string;
|
|
495
|
+
}
|
|
496
|
+
type SliderProps = SliderCommonProps & ({
|
|
497
|
+
range?: false;
|
|
498
|
+
value?: number;
|
|
499
|
+
defaultValue?: number;
|
|
500
|
+
onValueChange?: (value: number) => void;
|
|
501
|
+
onValueCommitted?: (value: number) => void;
|
|
502
|
+
} | {
|
|
503
|
+
range: true;
|
|
504
|
+
value?: SliderRangeValue;
|
|
505
|
+
defaultValue?: SliderRangeValue;
|
|
506
|
+
onValueChange?: (value: SliderRangeValue) => void;
|
|
507
|
+
onValueCommitted?: (value: SliderRangeValue) => void;
|
|
508
|
+
});
|
|
509
|
+
/**
|
|
510
|
+
* A continuous numeric value, or two bounded values when `range` is true.
|
|
511
|
+
* Base UI owns the hidden range inputs, keyboard map, pointer and touch dragging,
|
|
512
|
+
* thumb collision, and form submission semantics.
|
|
513
|
+
*/
|
|
514
|
+
declare function SliderComponent(props: SliderProps): react.JSX.Element;
|
|
515
|
+
declare const Slider: typeof SliderComponent & {
|
|
516
|
+
Skeleton: typeof SliderSkeleton;
|
|
517
|
+
};
|
|
518
|
+
|
|
519
|
+
interface MentionsSkeletonProps {
|
|
520
|
+
rows?: number;
|
|
521
|
+
}
|
|
522
|
+
declare function MentionsSkeleton({ rows }: MentionsSkeletonProps): react.JSX.Element;
|
|
523
|
+
|
|
524
|
+
interface MentionOption {
|
|
525
|
+
/** Stable text inserted after the trigger character. */
|
|
526
|
+
value: string;
|
|
527
|
+
label: ReactNode;
|
|
528
|
+
searchText?: string;
|
|
529
|
+
disabled?: boolean;
|
|
530
|
+
}
|
|
531
|
+
interface MentionsProps {
|
|
532
|
+
options: MentionOption[];
|
|
533
|
+
value?: string;
|
|
534
|
+
defaultValue?: string;
|
|
535
|
+
onValueChange?: (value: string) => void;
|
|
536
|
+
trigger?: string;
|
|
537
|
+
separator?: string;
|
|
538
|
+
placeholder?: string;
|
|
539
|
+
rows?: number;
|
|
540
|
+
name?: string;
|
|
541
|
+
disabled?: boolean;
|
|
542
|
+
motion?: boolean;
|
|
543
|
+
}
|
|
544
|
+
/** Inline textarea editing with an anchored mention-list contract, not a text-field combobox. */
|
|
545
|
+
declare function MentionsRoot({ options, value, defaultValue, onValueChange, trigger, separator, placeholder, rows, name, disabled, motion, }: MentionsProps): react.JSX.Element;
|
|
546
|
+
declare const Mentions: typeof MentionsRoot & {
|
|
547
|
+
Skeleton: typeof MentionsSkeleton;
|
|
548
|
+
};
|
|
549
|
+
|
|
550
|
+
interface TransferSkeletonProps {
|
|
551
|
+
items?: number;
|
|
552
|
+
}
|
|
553
|
+
/** Static two-list loading geometry matching Transfer without controls or destination state. */
|
|
554
|
+
declare function TransferSkeleton({ items }: TransferSkeletonProps): react.JSX.Element;
|
|
555
|
+
|
|
556
|
+
interface TransferItem {
|
|
557
|
+
/** Stable identity. Keys must be unique within one Transfer. */
|
|
558
|
+
key: string;
|
|
559
|
+
label: ReactNode;
|
|
560
|
+
description?: ReactNode;
|
|
561
|
+
disabled?: boolean;
|
|
562
|
+
}
|
|
563
|
+
interface TransferProps {
|
|
564
|
+
/** The application supplies the complete, stable collection; Transfer never fetches it. */
|
|
565
|
+
items: TransferItem[];
|
|
566
|
+
/** Keys currently assigned to the target list. Supplying this makes assignment controlled. */
|
|
567
|
+
targetKeys?: string[];
|
|
568
|
+
defaultTargetKeys?: string[];
|
|
569
|
+
onTargetKeysChange?: (keys: string[]) => void;
|
|
570
|
+
sourceTitle?: ReactNode;
|
|
571
|
+
targetTitle?: ReactNode;
|
|
572
|
+
disabled?: boolean;
|
|
573
|
+
'aria-label'?: string;
|
|
574
|
+
}
|
|
575
|
+
/**
|
|
576
|
+
* Two persistent checkbox lists for assigning supplied records between source and target.
|
|
577
|
+
* `targetKeys` is controlled or uncontrolled assignment state; transient per-list checkbox
|
|
578
|
+
* selection is deliberately internal, cleared only for records that are moved.
|
|
579
|
+
*/
|
|
580
|
+
declare function TransferRoot({ items, targetKeys, defaultTargetKeys, onTargetKeysChange, sourceTitle, targetTitle, disabled, 'aria-label': ariaLabel, }: TransferProps): react.JSX.Element;
|
|
581
|
+
declare const Transfer: typeof TransferRoot & {
|
|
582
|
+
Skeleton: typeof TransferSkeleton;
|
|
583
|
+
};
|
|
584
|
+
|
|
585
|
+
interface TreeSkeletonProps {
|
|
586
|
+
items?: number;
|
|
587
|
+
size?: 'sm' | 'md' | 'lg';
|
|
588
|
+
tone?: 'neutral' | 'brand' | 'success' | 'warning' | 'danger' | 'info';
|
|
589
|
+
'aria-label'?: string;
|
|
590
|
+
}
|
|
591
|
+
/** Placeholder geometry for an inline tree whose static nodes are still loading. */
|
|
592
|
+
declare function TreeSkeleton({ items, size, tone, 'aria-label': ariaLabel }: TreeSkeletonProps): react.JSX.Element;
|
|
593
|
+
|
|
594
|
+
type TreeTone = 'neutral' | 'brand' | 'success' | 'warning' | 'danger' | 'info';
|
|
595
|
+
type TreeSize = 'sm' | 'md' | 'lg';
|
|
596
|
+
interface TreeNode {
|
|
597
|
+
key: string;
|
|
598
|
+
label: ReactNode;
|
|
599
|
+
/** Static supplementary content, such as a count or status. It must not introduce controls. */
|
|
600
|
+
content?: ReactNode;
|
|
601
|
+
disabled?: boolean;
|
|
602
|
+
children?: TreeNode[];
|
|
603
|
+
}
|
|
604
|
+
interface TreeProps {
|
|
605
|
+
nodes: TreeNode[];
|
|
606
|
+
expandedPaths?: string[];
|
|
607
|
+
defaultExpandedPaths?: string[];
|
|
608
|
+
onExpandedPathsChange?: (paths: string[]) => void;
|
|
609
|
+
selectedPath?: string;
|
|
610
|
+
defaultSelectedPath?: string;
|
|
611
|
+
onSelectedPathChange?: (path: string) => void;
|
|
612
|
+
size?: TreeSize;
|
|
613
|
+
tone?: TreeTone;
|
|
614
|
+
motion?: boolean;
|
|
615
|
+
'aria-label'?: string;
|
|
616
|
+
}
|
|
617
|
+
/**
|
|
618
|
+
* Inline hierarchy with the ARIA tree keyboard model. It is neither a navigation menu nor a
|
|
619
|
+
* disclosure: Tree owns one roving treeitem focus and independently controlled expansion.
|
|
620
|
+
*/
|
|
621
|
+
declare function TreeRoot({ nodes, expandedPaths, defaultExpandedPaths, onExpandedPathsChange, selectedPath, defaultSelectedPath, onSelectedPathChange, size, tone, motion, 'aria-label': ariaLabel, }: TreeProps): react.JSX.Element;
|
|
622
|
+
declare const Tree: typeof TreeRoot & {
|
|
623
|
+
Skeleton: typeof TreeSkeleton;
|
|
624
|
+
};
|
|
625
|
+
|
|
626
|
+
interface TreeSelectSkeletonProps {
|
|
627
|
+
size?: 'sm' | 'md' | 'lg';
|
|
628
|
+
}
|
|
629
|
+
declare function TreeSelectSkeleton({ size }: TreeSelectSkeletonProps): react.JSX.Element;
|
|
630
|
+
|
|
631
|
+
interface TreeSelectProps {
|
|
632
|
+
nodes: TreeNode[];
|
|
633
|
+
value?: string | null;
|
|
634
|
+
defaultValue?: string | null;
|
|
635
|
+
onValueChange?: (path: string) => void;
|
|
636
|
+
open?: boolean;
|
|
637
|
+
defaultOpen?: boolean;
|
|
638
|
+
onOpenChange?: (open: boolean) => void;
|
|
639
|
+
label: string;
|
|
640
|
+
placeholder?: string;
|
|
641
|
+
name?: string;
|
|
642
|
+
disabled?: boolean;
|
|
643
|
+
motion?: boolean;
|
|
644
|
+
}
|
|
645
|
+
/** One value chosen from injected hierarchy. Popover owns anchoring/dismissal; Tree owns traversal. */
|
|
646
|
+
declare function TreeSelectRoot({ nodes, value, defaultValue, onValueChange, open, defaultOpen, onOpenChange, label, placeholder, name, disabled, motion }: TreeSelectProps): react.JSX.Element;
|
|
647
|
+
declare const TreeSelect: typeof TreeSelectRoot & {
|
|
648
|
+
Skeleton: typeof TreeSelectSkeleton;
|
|
649
|
+
};
|
|
650
|
+
|
|
651
|
+
interface CascaderSkeletonProps {
|
|
652
|
+
rows?: number;
|
|
653
|
+
}
|
|
654
|
+
declare function CascaderSkeleton({ rows }: CascaderSkeletonProps): react.JSX.Element;
|
|
655
|
+
|
|
656
|
+
interface CascaderOption {
|
|
657
|
+
key: string;
|
|
658
|
+
label: ReactNode;
|
|
659
|
+
disabled?: boolean;
|
|
660
|
+
children?: CascaderOption[];
|
|
661
|
+
}
|
|
662
|
+
interface CascaderProps {
|
|
663
|
+
options: CascaderOption[];
|
|
664
|
+
label: string;
|
|
665
|
+
value?: string[];
|
|
666
|
+
defaultValue?: string[];
|
|
667
|
+
onValueChange?: (path: string[]) => void;
|
|
668
|
+
placeholder?: string;
|
|
669
|
+
disabled?: boolean;
|
|
670
|
+
motion?: boolean;
|
|
671
|
+
}
|
|
672
|
+
/** A hierarchical, column-by-column selection surface. It is not an inline tree or a flat Select. */
|
|
673
|
+
declare function CascaderRoot({ options, label, value, defaultValue, onValueChange, placeholder, disabled, motion, }: CascaderProps): react.JSX.Element;
|
|
674
|
+
declare const Cascader: typeof CascaderRoot & {
|
|
675
|
+
Skeleton: typeof CascaderSkeleton;
|
|
676
|
+
};
|
|
677
|
+
|
|
678
|
+
declare function ColorPickerSkeleton(): react.JSX.Element;
|
|
679
|
+
|
|
680
|
+
interface ColorPickerOption {
|
|
681
|
+
tone: Tone;
|
|
682
|
+
label: string;
|
|
683
|
+
disabled?: boolean;
|
|
684
|
+
}
|
|
685
|
+
interface ColorPickerProps {
|
|
686
|
+
label: string;
|
|
687
|
+
value?: Tone;
|
|
688
|
+
defaultValue?: Tone;
|
|
689
|
+
onValueChange?: (tone: Tone) => void;
|
|
690
|
+
open?: boolean;
|
|
691
|
+
defaultOpen?: boolean;
|
|
692
|
+
onOpenChange?: (open: boolean) => void;
|
|
693
|
+
options?: ColorPickerOption[];
|
|
694
|
+
name?: string;
|
|
695
|
+
disabled?: boolean;
|
|
696
|
+
motion?: boolean;
|
|
697
|
+
}
|
|
698
|
+
declare function ColorPickerRoot({ label, value, defaultValue, onValueChange, open, defaultOpen, onOpenChange, options, name, disabled, motion }: ColorPickerProps): react.JSX.Element;
|
|
699
|
+
declare const ColorPicker: typeof ColorPickerRoot & {
|
|
700
|
+
Skeleton: typeof ColorPickerSkeleton;
|
|
701
|
+
};
|
|
702
|
+
|
|
703
|
+
interface ModalSkeletonProps {
|
|
704
|
+
size?: 'sm' | 'md' | 'lg';
|
|
705
|
+
lines?: number;
|
|
706
|
+
withActions?: boolean;
|
|
707
|
+
className?: string;
|
|
708
|
+
}
|
|
709
|
+
/** Static loading geometry for content that will resolve into a Modal (ADR 0009). */
|
|
710
|
+
declare function ModalSkeleton({ size, lines, withActions, className, }: ModalSkeletonProps): react.JSX.Element;
|
|
711
|
+
|
|
439
712
|
interface DialogProps {
|
|
440
713
|
open?: boolean;
|
|
441
714
|
defaultOpen?: boolean;
|
|
@@ -456,7 +729,28 @@ interface DialogProps {
|
|
|
456
729
|
* (ADR 0003). Enter and exit are CSS transitions driven by Base UI's own state attributes,
|
|
457
730
|
* because Base UI owns this element's mount lifecycle — motion is used where we own it.
|
|
458
731
|
*/
|
|
459
|
-
declare function
|
|
732
|
+
declare function ModalRoot({ open, defaultOpen, onOpenChange, title, description, children, footer, size, placement, trigger, className, }: DialogProps): react.JSX.Element;
|
|
733
|
+
interface ModalConfirmProps extends Omit<DialogProps, 'children' | 'footer' | 'placement' | 'size'> {
|
|
734
|
+
/** Optional supporting content below the description. */
|
|
735
|
+
children?: ReactNode;
|
|
736
|
+
/** Action that dismisses without applying the decision. Rendered first. */
|
|
737
|
+
cancelAction?: ReactNode;
|
|
738
|
+
/** Action that applies the decision. Rendered last. */
|
|
739
|
+
confirmAction: ReactNode;
|
|
740
|
+
/** Semantic treatment for the confirmation icon and emphasis. */
|
|
741
|
+
tone?: Tone;
|
|
742
|
+
/** Replaces the semantic icon supplied by the consumer. */
|
|
743
|
+
icon?: ReactNode;
|
|
744
|
+
}
|
|
745
|
+
/**
|
|
746
|
+
* A composable counterpart to Ant's modal confirmation family. It intentionally reuses Modal's
|
|
747
|
+
* dialog contract: this is viewport-modal confirmation, never an anchored Popconfirm.
|
|
748
|
+
*/
|
|
749
|
+
declare function ModalConfirm({ title, description, children, cancelAction, confirmAction, tone, icon, className, ...rootProps }: ModalConfirmProps): react.JSX.Element;
|
|
750
|
+
declare const Modal: typeof ModalRoot & {
|
|
751
|
+
Confirm: typeof ModalConfirm;
|
|
752
|
+
Skeleton: typeof ModalSkeleton;
|
|
753
|
+
};
|
|
460
754
|
declare const DialogClose: react.ForwardRefExoticComponent<Omit<_base_ui_react.AlertDialogCloseProps, "ref"> & react.RefAttributes<HTMLButtonElement>>;
|
|
461
755
|
|
|
462
756
|
interface DrawerProps {
|
|
@@ -572,6 +866,41 @@ interface TooltipProps {
|
|
|
572
866
|
}
|
|
573
867
|
declare function Tooltip({ children, label, side, align, sideOffset, showArrow, delay, }: TooltipProps): react.JSX.Element;
|
|
574
868
|
|
|
869
|
+
interface PopconfirmSkeletonProps {
|
|
870
|
+
withDescription?: boolean;
|
|
871
|
+
withCancel?: boolean;
|
|
872
|
+
}
|
|
873
|
+
/** Static loading geometry matching the anchored confirmation surface. */
|
|
874
|
+
declare function PopconfirmSkeleton({ withDescription, withCancel, }: PopconfirmSkeletonProps): react.JSX.Element;
|
|
875
|
+
|
|
876
|
+
interface PopconfirmProps {
|
|
877
|
+
/** Native interactive element that anchors and opens the confirmation. */
|
|
878
|
+
trigger: ReactElement;
|
|
879
|
+
title: ReactNode;
|
|
880
|
+
description?: ReactNode;
|
|
881
|
+
/** Dismisses the confirmation after the rendered action handles its click. */
|
|
882
|
+
cancelAction?: ReactElement;
|
|
883
|
+
/** Dismisses the confirmation after the rendered action handles its click. */
|
|
884
|
+
confirmAction: ReactElement;
|
|
885
|
+
tone?: Extract<Tone, 'neutral' | 'warning' | 'danger'>;
|
|
886
|
+
icon?: ReactNode;
|
|
887
|
+
side?: Side;
|
|
888
|
+
align?: Align;
|
|
889
|
+
open?: boolean;
|
|
890
|
+
defaultOpen?: boolean;
|
|
891
|
+
onOpenChange?: (open: boolean) => void;
|
|
892
|
+
motion?: boolean;
|
|
893
|
+
}
|
|
894
|
+
/**
|
|
895
|
+
* Anchored, lightweight confirmation. Base UI owns anchoring, outside dismissal, Escape,
|
|
896
|
+
* initial focus, and focus restoration when dismissal does not move focus elsewhere.
|
|
897
|
+
* Viewport-modal confirmation remains Modal.Confirm.
|
|
898
|
+
*/
|
|
899
|
+
declare function PopconfirmRoot({ trigger, title, description, cancelAction, confirmAction, tone, icon, side, align, open, defaultOpen, onOpenChange, motion, }: PopconfirmProps): react.JSX.Element;
|
|
900
|
+
declare const Popconfirm: typeof PopconfirmRoot & {
|
|
901
|
+
Skeleton: typeof PopconfirmSkeleton;
|
|
902
|
+
};
|
|
903
|
+
|
|
575
904
|
interface TagProps {
|
|
576
905
|
children: ReactNode;
|
|
577
906
|
tone?: Tone;
|
|
@@ -676,6 +1005,33 @@ declare function useToast(): {
|
|
|
676
1005
|
promise: <Value, T extends any = any>(promise: Promise<Value>, options: _base_ui_react.ToastManagerPromiseOptions<Value, T>) => Promise<Value>;
|
|
677
1006
|
};
|
|
678
1007
|
|
|
1008
|
+
interface WatermarkSkeletonProps {
|
|
1009
|
+
content?: WatermarkContent;
|
|
1010
|
+
tone?: Tone;
|
|
1011
|
+
density?: WatermarkDensity;
|
|
1012
|
+
direction?: WatermarkDirection;
|
|
1013
|
+
lines?: number;
|
|
1014
|
+
}
|
|
1015
|
+
/** Matching marked content surface while the wrapped content is loading (ADR 0009). */
|
|
1016
|
+
declare function WatermarkSkeleton({ content, tone, density, direction, lines, }: WatermarkSkeletonProps): react.JSX.Element;
|
|
1017
|
+
|
|
1018
|
+
type WatermarkContent = string | string[];
|
|
1019
|
+
type WatermarkDensity = 'sm' | 'md' | 'lg';
|
|
1020
|
+
type WatermarkDirection = 'horizontal' | 'vertical';
|
|
1021
|
+
interface WatermarkProps {
|
|
1022
|
+
/** One mark, or a sequence that repeats in order across the overlay. */
|
|
1023
|
+
content: WatermarkContent;
|
|
1024
|
+
children: ReactNode;
|
|
1025
|
+
tone?: Tone;
|
|
1026
|
+
density?: WatermarkDensity;
|
|
1027
|
+
direction?: WatermarkDirection;
|
|
1028
|
+
}
|
|
1029
|
+
/** A presentational overlay that keeps its supplied content's semantics untouched. */
|
|
1030
|
+
declare function WatermarkRoot({ content, children, tone, density, direction, }: WatermarkProps): react.JSX.Element;
|
|
1031
|
+
declare const Watermark: typeof WatermarkRoot & {
|
|
1032
|
+
Skeleton: typeof WatermarkSkeleton;
|
|
1033
|
+
};
|
|
1034
|
+
|
|
679
1035
|
interface TabItem {
|
|
680
1036
|
value: string;
|
|
681
1037
|
label: ReactNode;
|
|
@@ -726,6 +1082,58 @@ type DropdownMenuProps = DropdownMenuBaseProps & ({
|
|
|
726
1082
|
/** Typeahead, roving focus, and dismissal are Base UI's; the surface and the rhythm are ours. */
|
|
727
1083
|
declare function Dropdown({ trigger, items, sections, align, side, className }: DropdownMenuProps): react.JSX.Element;
|
|
728
1084
|
|
|
1085
|
+
interface MenuSkeletonProps {
|
|
1086
|
+
items?: number;
|
|
1087
|
+
size?: 'sm' | 'md' | 'lg';
|
|
1088
|
+
tone?: 'neutral' | 'brand' | 'success' | 'warning' | 'danger' | 'info';
|
|
1089
|
+
'aria-label'?: string;
|
|
1090
|
+
}
|
|
1091
|
+
/** Placeholder rows for a persistent navigation menu whose destinations have not loaded yet. */
|
|
1092
|
+
declare function MenuSkeleton({ items, size, tone, 'aria-label': ariaLabel, }: MenuSkeletonProps): react.JSX.Element;
|
|
1093
|
+
|
|
1094
|
+
type MenuTone = 'neutral' | 'brand' | 'success' | 'warning' | 'danger' | 'info';
|
|
1095
|
+
type MenuSize = 'sm' | 'md' | 'lg';
|
|
1096
|
+
interface PersistentMenuLeaf {
|
|
1097
|
+
key: string;
|
|
1098
|
+
label: ReactNode;
|
|
1099
|
+
href: string;
|
|
1100
|
+
icon?: ReactNode;
|
|
1101
|
+
disabled?: boolean;
|
|
1102
|
+
}
|
|
1103
|
+
interface PersistentMenuBranch {
|
|
1104
|
+
key: string;
|
|
1105
|
+
label: ReactNode;
|
|
1106
|
+
/** Explicit accessible name for the disclosure control; labels may contain arbitrary React nodes. */
|
|
1107
|
+
ariaLabel: string;
|
|
1108
|
+
icon?: ReactNode;
|
|
1109
|
+
disabled?: boolean;
|
|
1110
|
+
children: PersistentMenuItem[];
|
|
1111
|
+
href?: never;
|
|
1112
|
+
}
|
|
1113
|
+
type PersistentMenuItem = PersistentMenuLeaf | PersistentMenuBranch;
|
|
1114
|
+
interface MenuProps {
|
|
1115
|
+
items: PersistentMenuItem[];
|
|
1116
|
+
selectedPath?: string;
|
|
1117
|
+
defaultSelectedPath?: string;
|
|
1118
|
+
onSelectedPathChange?: (path: string) => void;
|
|
1119
|
+
openKeys?: string[];
|
|
1120
|
+
defaultOpenKeys?: string[];
|
|
1121
|
+
onOpenKeysChange?: (keys: string[]) => void;
|
|
1122
|
+
size?: MenuSize;
|
|
1123
|
+
tone?: MenuTone;
|
|
1124
|
+
motion?: boolean;
|
|
1125
|
+
'aria-label'?: string;
|
|
1126
|
+
}
|
|
1127
|
+
/**
|
|
1128
|
+
* Persistent navigation in normal document flow. Native links retain their normal browser
|
|
1129
|
+
* behaviour; nested branches are disclosure buttons. This is intentionally not Dropdown:
|
|
1130
|
+
* Dropdown is an anchored, dismissible action menu with roving focus.
|
|
1131
|
+
*/
|
|
1132
|
+
declare function MenuRoot({ items, selectedPath, defaultSelectedPath, onSelectedPathChange, openKeys, defaultOpenKeys, onOpenKeysChange, size, tone, motion, 'aria-label': ariaLabel, }: MenuProps): react.JSX.Element;
|
|
1133
|
+
declare const Menu: typeof MenuRoot & {
|
|
1134
|
+
Skeleton: typeof MenuSkeleton;
|
|
1135
|
+
};
|
|
1136
|
+
|
|
729
1137
|
interface NavItem {
|
|
730
1138
|
label: ReactNode;
|
|
731
1139
|
icon?: ReactNode;
|
|
@@ -849,6 +1257,101 @@ interface PaginationProps {
|
|
|
849
1257
|
}
|
|
850
1258
|
declare function Pagination({ page, pageSize, total, onPageChange, showSummary, siblings, className, }: PaginationProps): react.JSX.Element;
|
|
851
1259
|
|
|
1260
|
+
interface CollapseSkeletonProps {
|
|
1261
|
+
items?: number;
|
|
1262
|
+
openItems?: number[];
|
|
1263
|
+
lines?: number;
|
|
1264
|
+
size?: 'sm' | 'md' | 'lg';
|
|
1265
|
+
bordered?: boolean;
|
|
1266
|
+
expandIconPosition?: 'start' | 'end';
|
|
1267
|
+
className?: string;
|
|
1268
|
+
}
|
|
1269
|
+
/** Matching disclosure-row geometry for a Collapse that has not loaded yet (ADR 0009). */
|
|
1270
|
+
declare function CollapseSkeleton({ items, openItems, lines, size, bordered, expandIconPosition, className, }: CollapseSkeletonProps): react.JSX.Element;
|
|
1271
|
+
|
|
1272
|
+
interface CollapseItem {
|
|
1273
|
+
key: string;
|
|
1274
|
+
label: ReactNode;
|
|
1275
|
+
children: ReactNode;
|
|
1276
|
+
disabled?: boolean;
|
|
1277
|
+
}
|
|
1278
|
+
interface CollapseProps {
|
|
1279
|
+
items: CollapseItem[];
|
|
1280
|
+
/** One key in single mode; an array of keys when `multiple` is true. */
|
|
1281
|
+
value?: string | string[];
|
|
1282
|
+
/** Initial key or keys for an uncontrolled Collapse. */
|
|
1283
|
+
defaultValue?: string | string[];
|
|
1284
|
+
onValueChange?: (value: string | string[] | undefined) => void;
|
|
1285
|
+
multiple?: boolean;
|
|
1286
|
+
size?: 'sm' | 'md' | 'lg';
|
|
1287
|
+
bordered?: boolean;
|
|
1288
|
+
expandIconPosition?: 'start' | 'end';
|
|
1289
|
+
headingLevel?: 2 | 3 | 4 | 5 | 6;
|
|
1290
|
+
disabled?: boolean;
|
|
1291
|
+
/** Keeps closed panels in the DOM, for content whose local state must survive toggles. */
|
|
1292
|
+
keepMounted?: boolean;
|
|
1293
|
+
/** Allows browser page search to reveal matching content in closed panels. */
|
|
1294
|
+
hiddenUntilFound?: boolean;
|
|
1295
|
+
motion?: boolean;
|
|
1296
|
+
className?: string;
|
|
1297
|
+
}
|
|
1298
|
+
declare function CollapseRoot({ items, value, defaultValue, onValueChange, multiple, size, bordered, expandIconPosition, headingLevel, disabled, keepMounted, hiddenUntilFound, motion, className, }: CollapseProps): react.JSX.Element;
|
|
1299
|
+
/** A disclosure group. Base UI owns expansion state, button semantics, and panel association. */
|
|
1300
|
+
declare const Collapse: typeof CollapseRoot & {
|
|
1301
|
+
Skeleton: typeof CollapseSkeleton;
|
|
1302
|
+
};
|
|
1303
|
+
|
|
1304
|
+
interface CalendarSkeletonProps {
|
|
1305
|
+
weekStartsOn?: 0 | 1;
|
|
1306
|
+
}
|
|
1307
|
+
/** A fixed six-week placeholder matching Calendar's inline month-grid geometry. */
|
|
1308
|
+
declare function CalendarSkeleton({ weekStartsOn }: CalendarSkeletonProps): react.JSX.Element;
|
|
1309
|
+
|
|
1310
|
+
interface CalendarDay {
|
|
1311
|
+
date: Date;
|
|
1312
|
+
inMonth: boolean;
|
|
1313
|
+
selected: boolean;
|
|
1314
|
+
today: boolean;
|
|
1315
|
+
disabled: boolean;
|
|
1316
|
+
}
|
|
1317
|
+
interface CalendarProps {
|
|
1318
|
+
/** Selected local calendar day. Supplying it makes date selection controlled. */
|
|
1319
|
+
value?: Date | null;
|
|
1320
|
+
defaultValue?: Date | null;
|
|
1321
|
+
onValueChange?: (value: Date) => void;
|
|
1322
|
+
/** Month being displayed. Supplying it makes month navigation controlled. */
|
|
1323
|
+
month?: Date;
|
|
1324
|
+
defaultMonth?: Date;
|
|
1325
|
+
onMonthChange?: (month: Date) => void;
|
|
1326
|
+
minDate?: Date;
|
|
1327
|
+
maxDate?: Date;
|
|
1328
|
+
disabledDate?: (date: Date) => boolean;
|
|
1329
|
+
/** Renders static, noninteractive content inside each day button without changing its grid or selection contract. */
|
|
1330
|
+
renderDay?: (day: CalendarDay) => ReactNode;
|
|
1331
|
+
locale?: string | string[];
|
|
1332
|
+
weekStartsOn?: 0 | 1;
|
|
1333
|
+
disabled?: boolean;
|
|
1334
|
+
}
|
|
1335
|
+
/** Inline month grid: it owns neither a field, a popup, nor dismissal. */
|
|
1336
|
+
declare function CalendarRoot({ value, defaultValue, onValueChange, month, defaultMonth, onMonthChange, minDate, maxDate, disabledDate, renderDay, locale, weekStartsOn, disabled, }: CalendarProps): react.JSX.Element;
|
|
1337
|
+
declare const Calendar: typeof CalendarRoot & {
|
|
1338
|
+
Skeleton: typeof CalendarSkeleton;
|
|
1339
|
+
};
|
|
1340
|
+
|
|
1341
|
+
interface ImageSkeletonProps {
|
|
1342
|
+
aspectRatio?: number;
|
|
1343
|
+
radius?: "none" | "sm" | "md" | "lg" | "xl";
|
|
1344
|
+
className?: string;
|
|
1345
|
+
}
|
|
1346
|
+
interface ImagePreviewGroupSkeletonProps extends ImageSkeletonProps {
|
|
1347
|
+
items?: number;
|
|
1348
|
+
}
|
|
1349
|
+
/** Reserves the same aspect-ratio and radius geometry as Image (ADR 0009). */
|
|
1350
|
+
declare function ImageSkeleton({ aspectRatio, radius, className, }: ImageSkeletonProps): react.JSX.Element;
|
|
1351
|
+
/** Mirrors the responsive thumbnail collection owned by Image.PreviewGroup. */
|
|
1352
|
+
declare function ImagePreviewGroupSkeleton({ items, aspectRatio, radius, className, }: ImagePreviewGroupSkeletonProps): react.JSX.Element;
|
|
1353
|
+
|
|
1354
|
+
type TokenReference = `var(--${string})`;
|
|
852
1355
|
interface ImageProps {
|
|
853
1356
|
src: string;
|
|
854
1357
|
/** Empty string is allowed, and means "decorative" — but it has to be said out loud. */
|
|
@@ -858,17 +1361,59 @@ interface ImageProps {
|
|
|
858
1361
|
/** A tiny data URI, blurred up while the real image loads. */
|
|
859
1362
|
blurDataUrl?: string;
|
|
860
1363
|
/** Flat colour to sit behind the image when there is no blur placeholder. */
|
|
861
|
-
background?:
|
|
862
|
-
fit?:
|
|
863
|
-
radius?:
|
|
864
|
-
loading?:
|
|
1364
|
+
background?: TokenReference;
|
|
1365
|
+
fit?: "cover" | "contain";
|
|
1366
|
+
radius?: "none" | "sm" | "md" | "lg" | "xl";
|
|
1367
|
+
loading?: "lazy" | "eager";
|
|
1368
|
+
/** Opts this image out of its loading fade without changing its visibility. */
|
|
1369
|
+
motion?: boolean;
|
|
1370
|
+
className?: string;
|
|
1371
|
+
}
|
|
1372
|
+
declare function ImageRoot({ src, alt, aspectRatio, blurDataUrl, background, fit, radius, loading, motion, className, }: ImageProps): react.JSX.Element;
|
|
1373
|
+
interface ImagePreviewItem extends ImageProps {
|
|
1374
|
+
/** Stable identity for React and controlled collections. */
|
|
1375
|
+
id: string;
|
|
1376
|
+
/** Optional larger source used only inside the preview. */
|
|
1377
|
+
previewSrc?: string;
|
|
1378
|
+
/** Optional content shown below the fullscreen image. */
|
|
1379
|
+
caption?: ReactNode;
|
|
1380
|
+
}
|
|
1381
|
+
interface ImagePreviewLabels {
|
|
1382
|
+
close: string;
|
|
1383
|
+
previous: string;
|
|
1384
|
+
next: string;
|
|
1385
|
+
zoomIn: string;
|
|
1386
|
+
zoomOut: string;
|
|
1387
|
+
resetZoom: string;
|
|
1388
|
+
open: (item: ImagePreviewItem, index: number) => string;
|
|
1389
|
+
position: (current: number, total: number) => string;
|
|
1390
|
+
}
|
|
1391
|
+
interface ImagePreviewGroupProps {
|
|
1392
|
+
items: readonly ImagePreviewItem[];
|
|
1393
|
+
/** Accessible name for the thumbnail collection. */
|
|
1394
|
+
label: string;
|
|
1395
|
+
open?: boolean;
|
|
1396
|
+
defaultOpen?: boolean;
|
|
1397
|
+
onOpenChange?: (open: boolean) => void;
|
|
1398
|
+
index?: number;
|
|
1399
|
+
defaultIndex?: number;
|
|
1400
|
+
onIndexChange?: (index: number) => void;
|
|
1401
|
+
loop?: boolean;
|
|
1402
|
+
labels?: Partial<ImagePreviewLabels>;
|
|
1403
|
+
motion?: boolean;
|
|
865
1404
|
className?: string;
|
|
866
1405
|
}
|
|
1406
|
+
declare function ImagePreviewGroupRoot({ items, label, open, defaultOpen, onOpenChange, index, defaultIndex, onIndexChange, loop, labels: labelOverrides, motion, className, }: ImagePreviewGroupProps): react.JSX.Element;
|
|
867
1407
|
/**
|
|
868
|
-
*
|
|
869
|
-
*
|
|
1408
|
+
* `Image` stays an image-loading composition. Preview is a separate compound contract because it
|
|
1409
|
+
* adds dialog semantics, keyboard navigation, focus ownership, and a zoom gesture (ADR 0014).
|
|
870
1410
|
*/
|
|
871
|
-
declare
|
|
1411
|
+
declare const Image: typeof ImageRoot & {
|
|
1412
|
+
PreviewGroup: typeof ImagePreviewGroupRoot & {
|
|
1413
|
+
Skeleton: typeof ImagePreviewGroupSkeleton;
|
|
1414
|
+
};
|
|
1415
|
+
Skeleton: typeof ImageSkeleton;
|
|
1416
|
+
};
|
|
872
1417
|
|
|
873
1418
|
interface CarouselProps {
|
|
874
1419
|
children: ReactNode;
|
|
@@ -1049,4 +1594,52 @@ interface StaggerProps {
|
|
|
1049
1594
|
/** Wraps each child in a Reveal with an increasing delay — the list arrives, it does not pop. */
|
|
1050
1595
|
declare function Stagger({ children, step, from, onView, className }: StaggerProps): react.JSX.Element;
|
|
1051
1596
|
|
|
1052
|
-
|
|
1597
|
+
interface BorderBeamProps {
|
|
1598
|
+
/** Content keeps its own semantics and interactions; the beam is decorative. */
|
|
1599
|
+
children: ReactNode;
|
|
1600
|
+
tone?: Tone;
|
|
1601
|
+
/** Controls the beam thickness and the geometry of its visible sweep. */
|
|
1602
|
+
size?: Size;
|
|
1603
|
+
/** Opt out of the decorative movement while retaining a visible border. */
|
|
1604
|
+
motion?: boolean;
|
|
1605
|
+
}
|
|
1606
|
+
/**
|
|
1607
|
+
* Wraps content with a decorative moving border. The overlay is deliberately
|
|
1608
|
+
* not an interaction layer: it is hidden from assistive technology and cannot
|
|
1609
|
+
* intercept pointer events.
|
|
1610
|
+
*/
|
|
1611
|
+
declare function BorderBeam({ children, tone, size, motion }: BorderBeamProps): react.JSX.Element;
|
|
1612
|
+
|
|
1613
|
+
interface SplitterSkeletonProps {
|
|
1614
|
+
orientation?: SplitterOrientation;
|
|
1615
|
+
size?: number;
|
|
1616
|
+
handleSize?: SplitterHandleSize;
|
|
1617
|
+
}
|
|
1618
|
+
declare function SplitterSkeleton({ orientation, size, handleSize, }: SplitterSkeletonProps): react.JSX.Element;
|
|
1619
|
+
|
|
1620
|
+
type SplitterOrientation = 'horizontal' | 'vertical';
|
|
1621
|
+
type SplitterHandleSize = 'sm' | 'md' | 'lg';
|
|
1622
|
+
interface SplitterProps {
|
|
1623
|
+
/** Percentage assigned to the first pane. Supplying this makes the Splitter controlled. */
|
|
1624
|
+
size?: number;
|
|
1625
|
+
/** Initial percentage assigned to the first pane when uncontrolled. */
|
|
1626
|
+
defaultSize?: number;
|
|
1627
|
+
/** Lowest allowed percentage for the first pane. */
|
|
1628
|
+
minSize?: number;
|
|
1629
|
+
/** Highest allowed percentage for the first pane. */
|
|
1630
|
+
maxSize?: number;
|
|
1631
|
+
onSizeChange?: (size: number) => void;
|
|
1632
|
+
orientation?: SplitterOrientation;
|
|
1633
|
+
/** Handle geometry only; it does not alter the resize contract. */
|
|
1634
|
+
handleSize?: SplitterHandleSize;
|
|
1635
|
+
disabled?: boolean;
|
|
1636
|
+
/** Accessible name for the separator. */
|
|
1637
|
+
handleLabel?: string;
|
|
1638
|
+
children: ReactNode;
|
|
1639
|
+
}
|
|
1640
|
+
declare function SplitterRoot({ size, defaultSize, minSize, maxSize, onSizeChange, orientation, handleSize, disabled, handleLabel, children, }: SplitterProps): react.JSX.Element;
|
|
1641
|
+
declare const Splitter: typeof SplitterRoot & {
|
|
1642
|
+
Skeleton: typeof SplitterSkeleton;
|
|
1643
|
+
};
|
|
1644
|
+
|
|
1645
|
+
export { Alert, type AlertProps, type Align, AutoComplete, type AutoplayConditions, BorderBeam, type BorderBeamProps, Button, type ButtonProps, Calendar, type CalendarDay, type CalendarProps, CalendarSkeleton, type CalendarSkeletonProps, Carousel, type CarouselProps, type CarouselSkeletonProps, type CarouselSlideProps, Cascader, type CascaderOption, type CascaderProps, CascaderSkeleton, type CascaderSkeletonProps, Checkbox, type CheckboxProps, Checklist, type ChecklistProps, type ChecklistTask, Coachmark, type CoachmarkProps, Collapse, type CollapseItem, type CollapseProps, CollapseSkeleton, type CollapseSkeletonProps, ColorPicker, type ColorPickerOption, type ColorPickerProps, ColorPickerSkeleton, type Column, type ComboboxOption, type ComboboxProps, type Command, CommandPalette, type CommandPaletteProps, DEFAULT_LABELS, type DataTableProps, type DataTableSkeletonProps, type DateInputProps, DatePicker, type DayCell, DialogClose, type DialogProps, Drawer, DrawerClose, type DrawerProps, Dropdown, type DropdownMenuProps, type DurationToken, Field, type FieldProps, type FileRules, FloatButton, type FloatButtonPlacement, type FloatButtonProps, Image, type ImagePreviewGroupProps, type ImagePreviewGroupSkeletonProps, type ImagePreviewItem, type ImagePreviewLabels, type ImageProps, type ImageSkeletonProps, Input, InputNumber, type Labels, LabelsProvider, type LabelsProviderProps, type MentionOption, Mentions, type MentionsProps, MentionsSkeleton, type MentionsSkeletonProps, Menu, type MenuItem, type MenuProps, type MenuSection, type MenuSize, MenuSkeleton, type MenuSkeletonProps, type MenuTone, Modal, type ModalConfirmProps, type ModalSkeletonProps, type MotionHelpers, MotionProvider, type MotionProviderProps, type MotionSettings, type NavItem, type NavSection, type NumberBounds, type NumberInputProps, type PageRange, Pagination, type PaginationProps, type PaletteCommand, type PersistentMenuItem, Popconfirm, type PopconfirmProps, PopconfirmSkeleton, type PopconfirmSkeletonProps, Popover, type PopoverProps, RadioGroup, type RadioGroupProps, type RadioOption, type RankedCommand, Rate, type RateProps, type Rejection, Reveal, type RevealProps, type SeenStore, Select, type SelectOption, type SelectProps, type Side, Sidebar, type SidebarProps, Slider, type SliderOrientation, type SliderProps, type SliderRangeValue, SliderSkeleton, type SliderSkeletonProps, type SortDirection, type SortState, Splitter, type SplitterHandleSize, type SplitterOrientation, type SplitterProps, SplitterSkeleton, type SplitterSkeletonProps, type SpringPreset, Stagger, type StaggerProps, type StepTarget, Switch, type SwitchProps, type TabItem, Table, Tabs, type TabsProps, Tag, type TagProps, type TextInputProps, Textarea, type TextareaProps, type ThemeChoice, ThemeProvider, type TimeInputProps, TimePicker, type TimeValue, type ToastOptions, type ToastPosition, ToastProvider, type ToastProviderProps, Tooltip, type TooltipProps, TopBar, type TopBarProps, Tour, type TourAction, type TourProps, type TourState, type TourStatus, type TourStep, Transfer, type TransferItem, type TransferProps, TransferSkeleton, type TransferSkeletonProps, Tree, type TreeNode, type TreeProps, TreeSelect, type TreeSelectProps, TreeSelectSkeleton, type TreeSelectSkeletonProps, type TreeSize, TreeSkeleton, type TreeSkeletonProps, type TreeTone, Upload, type UploadProps, Watermark, type WatermarkContent, type WatermarkDensity, type WatermarkDirection, type WatermarkProps, WatermarkSkeleton, type WatermarkSkeletonProps, ariaSortFor, canStep, clamp, decimalPlaces, describeAccept, filterCommands, formatISO, formatTime, groupCommands, hasEnded, initialTourState, isOutOfRange, isSameDay, isTimeOutOfRange, matchesAccept, monthMatrix, nextSort, pageRange, parseDateInput, parseNumber, parseTime, partitionFiles, rankCommand, resolveTarget, shouldAutoplay, startOfDay, stepBy, timeOptions, timeToMinutes, tourReducer, useFieldWiring, useLabels, useMotionSettings, useTheme, useToast };
|