cekat-ui 1.3.7 → 1.3.8
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/index.d.mts +197 -47
- package/dist/index.d.ts +197 -47
- package/dist/index.mjs +6794 -5326
- package/dist/index.umd.js +4 -4
- package/dist/style.css +479 -85
- package/package.json +1 -1
- package/tailwind.preset.cjs +2 -0
package/dist/index.d.mts
CHANGED
|
@@ -7,12 +7,20 @@ import { ColumnResizerProps as ColumnResizerProps_2 } from 'react-aria-component
|
|
|
7
7
|
import { default as default_2 } from 'react';
|
|
8
8
|
import { JSX as JSX_2 } from 'react/jsx-runtime';
|
|
9
9
|
import { Key } from 'react-aria-components';
|
|
10
|
+
import { ListBoxItemProps as ListBoxItemProps_2 } from 'react-aria-components';
|
|
11
|
+
import { ListBoxProps as ListBoxProps_2 } from 'react-aria-components';
|
|
12
|
+
import { MenuItemProps as MenuItemProps_2 } from 'react-aria-components';
|
|
13
|
+
import { MenuProps as MenuProps_2 } from 'react-aria-components';
|
|
14
|
+
import { MenuTrigger } from 'react-aria-components';
|
|
15
|
+
import { PopoverProps as PopoverProps_2 } from 'react-aria-components';
|
|
10
16
|
import { PressEvent } from 'react-aria-components';
|
|
11
17
|
import * as React_2 from 'react';
|
|
12
18
|
import { ReactNode } from 'react';
|
|
13
19
|
import { ResizableTableContainerProps } from 'react-aria-components';
|
|
14
20
|
import { RowProps as RowProps_2 } from 'react-aria-components';
|
|
15
21
|
import { SelectionIndicator } from 'react-aria-components';
|
|
22
|
+
import { SelectProps as SelectProps_2 } from 'react-aria-components';
|
|
23
|
+
import { SelectValueProps as SelectValueProps_2 } from 'react-aria-components';
|
|
16
24
|
import { TableBodyProps as TableBodyProps_2 } from 'react-aria-components';
|
|
17
25
|
import { TableFooterProps as TableFooterProps_2 } from 'react-aria-components';
|
|
18
26
|
import { TableHeaderProps as TableHeaderProps_2 } from 'react-aria-components';
|
|
@@ -344,53 +352,6 @@ export declare const ColumnResizer: React_2.ForwardRefExoticComponent<ColumnResi
|
|
|
344
352
|
export declare interface ColumnResizerProps extends ColumnResizerProps_2 {
|
|
345
353
|
}
|
|
346
354
|
|
|
347
|
-
export declare function Dropdown({ trigger, label, icon, avatarSrc, avatarInitials, header, items, open: openProp, defaultOpen, onOpenChange, disabled, align, className, menuClassName, }: DropdownProps): JSX_2.Element;
|
|
348
|
-
|
|
349
|
-
export declare interface DropdownHeader {
|
|
350
|
-
name: React_2.ReactNode;
|
|
351
|
-
subtitle?: React_2.ReactNode;
|
|
352
|
-
avatarSrc?: string;
|
|
353
|
-
avatarInitials?: React_2.ReactNode;
|
|
354
|
-
status?: AvatarStatus;
|
|
355
|
-
}
|
|
356
|
-
|
|
357
|
-
export declare interface DropdownMenuItem {
|
|
358
|
-
id: string;
|
|
359
|
-
/** Renders a horizontal divider instead of an item when true. */
|
|
360
|
-
divider?: boolean;
|
|
361
|
-
label?: string;
|
|
362
|
-
icon?: React_2.ReactNode;
|
|
363
|
-
/** Trailing shortcut hint (e.g. "⌘C"). */
|
|
364
|
-
shortcut?: string;
|
|
365
|
-
disabled?: boolean;
|
|
366
|
-
onClick?: () => void;
|
|
367
|
-
}
|
|
368
|
-
|
|
369
|
-
export declare interface DropdownProps {
|
|
370
|
-
/** "button" shows a labeled trigger, "icon" a kebab trigger, "avatar" the user's avatar. */
|
|
371
|
-
trigger?: DropdownTriggerType;
|
|
372
|
-
/** Label for the "button" trigger. */
|
|
373
|
-
label?: string;
|
|
374
|
-
/** Custom icon for the "icon" trigger (defaults to a vertical-dots icon). */
|
|
375
|
-
icon?: React_2.ReactNode;
|
|
376
|
-
/** Avatar image for the "avatar" trigger. */
|
|
377
|
-
avatarSrc?: string;
|
|
378
|
-
avatarInitials?: React_2.ReactNode;
|
|
379
|
-
/** Optional user summary rendered at the top of the menu. */
|
|
380
|
-
header?: DropdownHeader;
|
|
381
|
-
items: DropdownMenuItem[];
|
|
382
|
-
open?: boolean;
|
|
383
|
-
defaultOpen?: boolean;
|
|
384
|
-
onOpenChange?: (open: boolean) => void;
|
|
385
|
-
disabled?: boolean;
|
|
386
|
-
/** Which edge of the trigger the menu aligns to. */
|
|
387
|
-
align?: 'start' | 'end';
|
|
388
|
-
className?: ClassValue;
|
|
389
|
-
menuClassName?: ClassValue;
|
|
390
|
-
}
|
|
391
|
-
|
|
392
|
-
export declare type DropdownTriggerType = 'button' | 'icon' | 'avatar';
|
|
393
|
-
|
|
394
355
|
/**
|
|
395
356
|
* Standalone, not table-scoped — search results and filtered lists need it
|
|
396
357
|
* too. Structure follows the shipped "No Data Found" design (Figma
|
|
@@ -541,6 +502,43 @@ declare interface InputTrailingButtonSlot {
|
|
|
541
502
|
disabled?: boolean;
|
|
542
503
|
}
|
|
543
504
|
|
|
505
|
+
export declare const ListBox: <T extends object>(props: ListBoxProps<T> & {
|
|
506
|
+
ref?: React_2.Ref<HTMLDivElement>;
|
|
507
|
+
}) => React_2.ReactElement;
|
|
508
|
+
|
|
509
|
+
export declare const ListBoxItem: <T extends object>(props: ListBoxItemProps<T> & {
|
|
510
|
+
ref?: React_2.Ref<HTMLDivElement>;
|
|
511
|
+
}) => React_2.ReactElement;
|
|
512
|
+
|
|
513
|
+
/**
|
|
514
|
+
* Leading-content axis for an item. A single enum, not `icon`/`checkbox` booleans — no
|
|
515
|
+
* Figma variant combines them, and one axis makes the combination unrepresentable instead
|
|
516
|
+
* of just unused. Default `none`.
|
|
517
|
+
*/
|
|
518
|
+
export declare type ListBoxItemContent = 'none' | 'icon' | 'selection';
|
|
519
|
+
|
|
520
|
+
export declare interface ListBoxItemProps<T extends object = object> extends Omit<ListBoxItemProps_2<T>, 'className' | 'style'> {
|
|
521
|
+
content?: ListBoxItemContent;
|
|
522
|
+
/** Rendered in the leading slot when `content="icon"`. */
|
|
523
|
+
icon?: React_2.ReactNode;
|
|
524
|
+
/** Rendered right-aligned, e.g. a keyboard shortcut hint. */
|
|
525
|
+
shortcut?: React_2.ReactNode;
|
|
526
|
+
className?: ClassValue;
|
|
527
|
+
style?: React_2.CSSProperties;
|
|
528
|
+
}
|
|
529
|
+
|
|
530
|
+
export declare interface ListBoxProps<T extends object> extends Omit<ListBoxProps_2<T>, 'className' | 'style'> {
|
|
531
|
+
className?: ClassValue;
|
|
532
|
+
style?: React_2.CSSProperties;
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
/** A `Separator` element, not an item variant. */
|
|
536
|
+
export declare const ListBoxSeparator: ({ className }: ListBoxSeparatorProps) => JSX_2.Element;
|
|
537
|
+
|
|
538
|
+
export declare interface ListBoxSeparatorProps {
|
|
539
|
+
className?: string;
|
|
540
|
+
}
|
|
541
|
+
|
|
544
542
|
export declare const Loading: {
|
|
545
543
|
({ size, style, supportingText, label, className, }: LoadingProps): JSX_2.Element;
|
|
546
544
|
displayName: string;
|
|
@@ -558,6 +556,61 @@ export declare type LoadingSize = 'sm' | 'md' | 'lg' | 'xl';
|
|
|
558
556
|
|
|
559
557
|
export declare type LoadingStyle = 'line-simple' | 'line-spinner' | 'dot-circle';
|
|
560
558
|
|
|
559
|
+
export declare const Menu: <T extends object>(props: MenuProps<T> & {
|
|
560
|
+
ref?: React_2.Ref<HTMLDivElement>;
|
|
561
|
+
}) => React_2.ReactElement;
|
|
562
|
+
|
|
563
|
+
/**
|
|
564
|
+
* Figma `_Dropdown list header` (81:14786) has two authored forms — avatar-group and plain
|
|
565
|
+
* text. Shipped as one slot, not two variants: this component only owns the header's
|
|
566
|
+
* structural chrome (bottom border, padding); the consumer supplies whichever content.
|
|
567
|
+
*
|
|
568
|
+
* Built on RAC's own `<Header>` (`createLeafComponent(HeaderNode, ...)`), not a plain `<div>` —
|
|
569
|
+
* every child of `<Menu>` is routed through RAC's collection builder, which only recognizes
|
|
570
|
+
* proper collection node types (`MenuItem`, `MenuSection`, `Separator`, `Header`). A plain,
|
|
571
|
+
* unrecognized `<div>` here silently corrupts collection building: `state.collection.size`
|
|
572
|
+
* drops to 0 and every `MenuItem` disappears with no error thrown. Verified directly — swapping
|
|
573
|
+
* this back to a raw `<div>` reproduces zero rendered `role="menuitem"` elements on open, even
|
|
574
|
+
* with otherwise-unmodified content.
|
|
575
|
+
*/
|
|
576
|
+
export declare const MenuHeader: ({ children, className }: MenuHeaderProps) => JSX_2.Element;
|
|
577
|
+
|
|
578
|
+
export declare interface MenuHeaderProps {
|
|
579
|
+
children: React_2.ReactNode;
|
|
580
|
+
className?: string;
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
export declare const MenuItem: <T extends object>(props: MenuItemProps<T> & {
|
|
584
|
+
ref?: React_2.Ref<HTMLDivElement>;
|
|
585
|
+
}) => React_2.ReactElement;
|
|
586
|
+
|
|
587
|
+
/** Same enum as `ListBox`'s `content` axis. Default `none`. */
|
|
588
|
+
export declare type MenuItemContent = 'none' | 'icon' | 'selection';
|
|
589
|
+
|
|
590
|
+
export declare interface MenuItemProps<T extends object = object> extends Omit<MenuItemProps_2<T>, 'className' | 'style'> {
|
|
591
|
+
content?: MenuItemContent;
|
|
592
|
+
/** Rendered in the leading slot when `content="icon"`. */
|
|
593
|
+
icon?: React_2.ReactNode;
|
|
594
|
+
/** Figma `.Shortcut` (355:3773) — text-only, right-aligned. */
|
|
595
|
+
shortcut?: React_2.ReactNode;
|
|
596
|
+
className?: ClassValue;
|
|
597
|
+
style?: React_2.CSSProperties;
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
export declare interface MenuProps<T extends object> extends Omit<MenuProps_2<T>, 'className' | 'style'> {
|
|
601
|
+
className?: ClassValue;
|
|
602
|
+
style?: React_2.CSSProperties;
|
|
603
|
+
}
|
|
604
|
+
|
|
605
|
+
/** A `Separator` element, not an item variant. */
|
|
606
|
+
export declare const MenuSeparator: ({ className }: MenuSeparatorProps) => JSX_2.Element;
|
|
607
|
+
|
|
608
|
+
export declare interface MenuSeparatorProps {
|
|
609
|
+
className?: string;
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
export { MenuTrigger }
|
|
613
|
+
|
|
561
614
|
export declare function MultiSelectInput({ size, label, required, hint, error, disabled, placeholder, rightIcon, className, wrapperClassName, options, value, onChange, }: MultiSelectInputProps): JSX_2.Element;
|
|
562
615
|
|
|
563
616
|
declare interface MultiSelectInputProps {
|
|
@@ -601,6 +654,29 @@ declare interface PhoneInputProps {
|
|
|
601
654
|
wrapperClassName?: InputProps['wrapperClassName'];
|
|
602
655
|
}
|
|
603
656
|
|
|
657
|
+
/**
|
|
658
|
+
* Overlay foundation for the dropdown family (Menu, Select, ComboBox) and Tooltip. Wraps RAC's
|
|
659
|
+
* `Popover`, which already provides: portal to `document.body`,
|
|
660
|
+
* flip on the main axis and boundary-clamped shift on the cross axis when space runs out,
|
|
661
|
+
* `maxHeight` clamped to available viewport space, reposition on window resize and on trigger/
|
|
662
|
+
* overlay size change, Escape-to-close with focus restored to the trigger, and outside-press
|
|
663
|
+
* dismissal. This wrapper adds the two things RAC does not: reposition (not close) on ancestor
|
|
664
|
+
* scroll, and suppressing the ARIA role RAC would otherwise emit.
|
|
665
|
+
*/
|
|
666
|
+
export declare const Popover: React_2.ForwardRefExoticComponent<PopoverProps & React_2.RefAttributes<HTMLElement>>;
|
|
667
|
+
|
|
668
|
+
export declare interface PopoverProps extends Omit<PopoverProps_2, 'className' | 'style' | 'children'> {
|
|
669
|
+
children?: PopoverProps_2['children'];
|
|
670
|
+
/**
|
|
671
|
+
* Matches the panel's width to the trigger's width, via RAC's `--trigger-width` CSS
|
|
672
|
+
* var. Opt-in — most consumers (menus, comboboxes with long option labels) must not
|
|
673
|
+
* be clamped to trigger width. Default `false`.
|
|
674
|
+
*/
|
|
675
|
+
matchTriggerWidth?: boolean;
|
|
676
|
+
className?: ClassValue;
|
|
677
|
+
style?: React_2.CSSProperties;
|
|
678
|
+
}
|
|
679
|
+
|
|
604
680
|
export { PressEvent }
|
|
605
681
|
|
|
606
682
|
export declare const RadioGroup: ({ value, defaultValue, onValueChange, children, className, }: RadioGroupProps) => JSX_2.Element;
|
|
@@ -653,8 +729,63 @@ declare interface SaleAmountInputProps {
|
|
|
653
729
|
wrapperClassName?: InputProps['wrapperClassName'];
|
|
654
730
|
}
|
|
655
731
|
|
|
732
|
+
export declare const Select: <T extends object>(props: SelectProps<T> & {
|
|
733
|
+
ref?: React_2.Ref<HTMLDivElement>;
|
|
734
|
+
}) => React_2.ReactElement;
|
|
735
|
+
|
|
656
736
|
export { SelectionIndicator }
|
|
657
737
|
|
|
738
|
+
/**
|
|
739
|
+
* `ListBoxItem` with the selected-row treatment baked in — see `selectItemSelectedStyles` for
|
|
740
|
+
* why it's a placeholder. This lives on `Select`'s own item rather than on the shared `ListBox`
|
|
741
|
+
* because `Menu` doesn't have a Selected state to render at all. `content="selection"` reuses
|
|
742
|
+
* `ListBox`'s leading-checkmark rendering unchanged.
|
|
743
|
+
*/
|
|
744
|
+
export declare function SelectItem<T extends object>({ className, ...props }: ListBoxItemProps<T>): JSX_2.Element;
|
|
745
|
+
|
|
746
|
+
/**
|
|
747
|
+
* Single-value by construction — RAC's `Select` also supports `selectionMode: 'multiple'`,
|
|
748
|
+
* deliberately not exposed here. A multi-value trigger is a different interaction (chips, no
|
|
749
|
+
* auto-close) that belongs to its own component, not a prop on this one.
|
|
750
|
+
*/
|
|
751
|
+
export declare interface SelectProps<T extends object> extends Omit<SelectProps_2<T, 'single'>, 'className' | 'style' | 'children' | 'selectionMode'> {
|
|
752
|
+
children: SelectProps_2<T, 'single'>['children'];
|
|
753
|
+
className?: ClassValue;
|
|
754
|
+
style?: React_2.CSSProperties;
|
|
755
|
+
}
|
|
756
|
+
|
|
757
|
+
export declare type SelectSize = 'xs' | 'sm' | 'md';
|
|
758
|
+
|
|
759
|
+
/**
|
|
760
|
+
* Wraps RAC's raw `Button`, not this library's own `Button` — a Select trigger has its own
|
|
761
|
+
* bordered-field chrome (matching `InputDropdown`'s size scale/tokens), not a button variant,
|
|
762
|
+
* and the extra `tone`/`variant`/`iconOnly` surface of the library `Button` doesn't apply here.
|
|
763
|
+
*/
|
|
764
|
+
export declare const SelectTrigger: React_2.ForwardRefExoticComponent<SelectTriggerProps & React_2.RefAttributes<HTMLButtonElement>>;
|
|
765
|
+
|
|
766
|
+
export declare interface SelectTriggerProps extends Omit<ButtonProps_2, 'className' | 'style' | 'children'> {
|
|
767
|
+
children: ButtonProps_2['children'];
|
|
768
|
+
size?: SelectSize;
|
|
769
|
+
/**
|
|
770
|
+
* Leading ornament slot — icon, `Avatar`, or a status dot all go through this one prop.
|
|
771
|
+
* Ornament is a slot, not a variant axis: three separate typed props would make "which
|
|
772
|
+
* ornament kind" a variant decision that isn't this component's to make — the consumer
|
|
773
|
+
* already has the icon/avatar/dot element.
|
|
774
|
+
*/
|
|
775
|
+
icon?: React_2.ReactNode;
|
|
776
|
+
className?: ClassValue;
|
|
777
|
+
style?: React_2.CSSProperties;
|
|
778
|
+
}
|
|
779
|
+
|
|
780
|
+
export declare const SelectValue: <T>(props: SelectValueProps<T> & {
|
|
781
|
+
ref?: React_2.Ref<HTMLSpanElement>;
|
|
782
|
+
}) => React_2.ReactElement;
|
|
783
|
+
|
|
784
|
+
export declare interface SelectValueProps<T> extends Omit<SelectValueProps_2<T>, 'className' | 'style'> {
|
|
785
|
+
className?: ClassValue;
|
|
786
|
+
style?: React_2.CSSProperties;
|
|
787
|
+
}
|
|
788
|
+
|
|
658
789
|
/**
|
|
659
790
|
* Shared by `Column` and `Cell`. Freezes the element during horizontal scroll
|
|
660
791
|
* — `'left'` pins it to the left edge, `'right'` to the right. Requires an
|
|
@@ -979,6 +1110,25 @@ declare type ToggleSize = 'sm' | 'md'
|
|
|
979
1110
|
|
|
980
1111
|
declare type ToggleVariant = 'default' | 'success';
|
|
981
1112
|
|
|
1113
|
+
/**
|
|
1114
|
+
* Routes through `Popover` — standalone (no trigger context: `triggerRef`/`isOpen` driven
|
|
1115
|
+
* directly, same as `Popover`'s own standalone-usage support), with `isNonModal` so RAC skips
|
|
1116
|
+
* everything a tooltip must never do: `role="dialog"`, focus containment, a `DismissButton`,
|
|
1117
|
+
* stealing focus on open, and body-scroll locking (all gated on `!isNonModal` inside RAC's
|
|
1118
|
+
* `usePopover`/`PopoverInner` — confirmed against source, not just docs). `isNonModal` also
|
|
1119
|
+
* switches RAC's ancestor-scroll handling from Popover's own custom reposition-on-scroll to
|
|
1120
|
+
* RAC's own close-on-scroll — acceptable here since a tooltip is ephemeral and hover-driven;
|
|
1121
|
+
* closing instead of chasing the trigger across a scrolling container is reasonable, arguably
|
|
1122
|
+
* better than for a menu/select where closing loses navigation context.
|
|
1123
|
+
*
|
|
1124
|
+
* This replaces the previous hand-rolled `createPortal` + manual measurement (`getBoundingClientRect`
|
|
1125
|
+
* math per `side`) + `ResizeObserver` + scroll/resize listeners with RAC's own positioning:
|
|
1126
|
+
* portal-to-body, flip-on-both-axes (the old implementation had none — always rendered at the
|
|
1127
|
+
* exact requested `side` regardless of viewport edges), and `maxHeight` clamping, none of which
|
|
1128
|
+
* existed before. `OverlayArrow` needs no wiring on `Popover`'s side — RAC's `Popover` always
|
|
1129
|
+
* provides `OverlayArrowContext` to its children regardless of whether anything consumes it, so
|
|
1130
|
+
* it "just works" as a child here with zero changes to `Popover.tsx`.
|
|
1131
|
+
*/
|
|
982
1132
|
export declare const Tooltip: {
|
|
983
1133
|
({ content, supportingText, side, open, defaultOpen, disabled, delay, className, children, }: TooltipProps): JSX_2.Element;
|
|
984
1134
|
displayName: string;
|
package/dist/index.d.ts
CHANGED
|
@@ -7,12 +7,20 @@ import { ColumnResizerProps as ColumnResizerProps_2 } from 'react-aria-component
|
|
|
7
7
|
import { default as default_2 } from 'react';
|
|
8
8
|
import { JSX as JSX_2 } from 'react/jsx-runtime';
|
|
9
9
|
import { Key } from 'react-aria-components';
|
|
10
|
+
import { ListBoxItemProps as ListBoxItemProps_2 } from 'react-aria-components';
|
|
11
|
+
import { ListBoxProps as ListBoxProps_2 } from 'react-aria-components';
|
|
12
|
+
import { MenuItemProps as MenuItemProps_2 } from 'react-aria-components';
|
|
13
|
+
import { MenuProps as MenuProps_2 } from 'react-aria-components';
|
|
14
|
+
import { MenuTrigger } from 'react-aria-components';
|
|
15
|
+
import { PopoverProps as PopoverProps_2 } from 'react-aria-components';
|
|
10
16
|
import { PressEvent } from 'react-aria-components';
|
|
11
17
|
import * as React_2 from 'react';
|
|
12
18
|
import { ReactNode } from 'react';
|
|
13
19
|
import { ResizableTableContainerProps } from 'react-aria-components';
|
|
14
20
|
import { RowProps as RowProps_2 } from 'react-aria-components';
|
|
15
21
|
import { SelectionIndicator } from 'react-aria-components';
|
|
22
|
+
import { SelectProps as SelectProps_2 } from 'react-aria-components';
|
|
23
|
+
import { SelectValueProps as SelectValueProps_2 } from 'react-aria-components';
|
|
16
24
|
import { TableBodyProps as TableBodyProps_2 } from 'react-aria-components';
|
|
17
25
|
import { TableFooterProps as TableFooterProps_2 } from 'react-aria-components';
|
|
18
26
|
import { TableHeaderProps as TableHeaderProps_2 } from 'react-aria-components';
|
|
@@ -344,53 +352,6 @@ export declare const ColumnResizer: React_2.ForwardRefExoticComponent<ColumnResi
|
|
|
344
352
|
export declare interface ColumnResizerProps extends ColumnResizerProps_2 {
|
|
345
353
|
}
|
|
346
354
|
|
|
347
|
-
export declare function Dropdown({ trigger, label, icon, avatarSrc, avatarInitials, header, items, open: openProp, defaultOpen, onOpenChange, disabled, align, className, menuClassName, }: DropdownProps): JSX_2.Element;
|
|
348
|
-
|
|
349
|
-
export declare interface DropdownHeader {
|
|
350
|
-
name: React_2.ReactNode;
|
|
351
|
-
subtitle?: React_2.ReactNode;
|
|
352
|
-
avatarSrc?: string;
|
|
353
|
-
avatarInitials?: React_2.ReactNode;
|
|
354
|
-
status?: AvatarStatus;
|
|
355
|
-
}
|
|
356
|
-
|
|
357
|
-
export declare interface DropdownMenuItem {
|
|
358
|
-
id: string;
|
|
359
|
-
/** Renders a horizontal divider instead of an item when true. */
|
|
360
|
-
divider?: boolean;
|
|
361
|
-
label?: string;
|
|
362
|
-
icon?: React_2.ReactNode;
|
|
363
|
-
/** Trailing shortcut hint (e.g. "⌘C"). */
|
|
364
|
-
shortcut?: string;
|
|
365
|
-
disabled?: boolean;
|
|
366
|
-
onClick?: () => void;
|
|
367
|
-
}
|
|
368
|
-
|
|
369
|
-
export declare interface DropdownProps {
|
|
370
|
-
/** "button" shows a labeled trigger, "icon" a kebab trigger, "avatar" the user's avatar. */
|
|
371
|
-
trigger?: DropdownTriggerType;
|
|
372
|
-
/** Label for the "button" trigger. */
|
|
373
|
-
label?: string;
|
|
374
|
-
/** Custom icon for the "icon" trigger (defaults to a vertical-dots icon). */
|
|
375
|
-
icon?: React_2.ReactNode;
|
|
376
|
-
/** Avatar image for the "avatar" trigger. */
|
|
377
|
-
avatarSrc?: string;
|
|
378
|
-
avatarInitials?: React_2.ReactNode;
|
|
379
|
-
/** Optional user summary rendered at the top of the menu. */
|
|
380
|
-
header?: DropdownHeader;
|
|
381
|
-
items: DropdownMenuItem[];
|
|
382
|
-
open?: boolean;
|
|
383
|
-
defaultOpen?: boolean;
|
|
384
|
-
onOpenChange?: (open: boolean) => void;
|
|
385
|
-
disabled?: boolean;
|
|
386
|
-
/** Which edge of the trigger the menu aligns to. */
|
|
387
|
-
align?: 'start' | 'end';
|
|
388
|
-
className?: ClassValue;
|
|
389
|
-
menuClassName?: ClassValue;
|
|
390
|
-
}
|
|
391
|
-
|
|
392
|
-
export declare type DropdownTriggerType = 'button' | 'icon' | 'avatar';
|
|
393
|
-
|
|
394
355
|
/**
|
|
395
356
|
* Standalone, not table-scoped — search results and filtered lists need it
|
|
396
357
|
* too. Structure follows the shipped "No Data Found" design (Figma
|
|
@@ -541,6 +502,43 @@ declare interface InputTrailingButtonSlot {
|
|
|
541
502
|
disabled?: boolean;
|
|
542
503
|
}
|
|
543
504
|
|
|
505
|
+
export declare const ListBox: <T extends object>(props: ListBoxProps<T> & {
|
|
506
|
+
ref?: React_2.Ref<HTMLDivElement>;
|
|
507
|
+
}) => React_2.ReactElement;
|
|
508
|
+
|
|
509
|
+
export declare const ListBoxItem: <T extends object>(props: ListBoxItemProps<T> & {
|
|
510
|
+
ref?: React_2.Ref<HTMLDivElement>;
|
|
511
|
+
}) => React_2.ReactElement;
|
|
512
|
+
|
|
513
|
+
/**
|
|
514
|
+
* Leading-content axis for an item. A single enum, not `icon`/`checkbox` booleans — no
|
|
515
|
+
* Figma variant combines them, and one axis makes the combination unrepresentable instead
|
|
516
|
+
* of just unused. Default `none`.
|
|
517
|
+
*/
|
|
518
|
+
export declare type ListBoxItemContent = 'none' | 'icon' | 'selection';
|
|
519
|
+
|
|
520
|
+
export declare interface ListBoxItemProps<T extends object = object> extends Omit<ListBoxItemProps_2<T>, 'className' | 'style'> {
|
|
521
|
+
content?: ListBoxItemContent;
|
|
522
|
+
/** Rendered in the leading slot when `content="icon"`. */
|
|
523
|
+
icon?: React_2.ReactNode;
|
|
524
|
+
/** Rendered right-aligned, e.g. a keyboard shortcut hint. */
|
|
525
|
+
shortcut?: React_2.ReactNode;
|
|
526
|
+
className?: ClassValue;
|
|
527
|
+
style?: React_2.CSSProperties;
|
|
528
|
+
}
|
|
529
|
+
|
|
530
|
+
export declare interface ListBoxProps<T extends object> extends Omit<ListBoxProps_2<T>, 'className' | 'style'> {
|
|
531
|
+
className?: ClassValue;
|
|
532
|
+
style?: React_2.CSSProperties;
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
/** A `Separator` element, not an item variant. */
|
|
536
|
+
export declare const ListBoxSeparator: ({ className }: ListBoxSeparatorProps) => JSX_2.Element;
|
|
537
|
+
|
|
538
|
+
export declare interface ListBoxSeparatorProps {
|
|
539
|
+
className?: string;
|
|
540
|
+
}
|
|
541
|
+
|
|
544
542
|
export declare const Loading: {
|
|
545
543
|
({ size, style, supportingText, label, className, }: LoadingProps): JSX_2.Element;
|
|
546
544
|
displayName: string;
|
|
@@ -558,6 +556,61 @@ export declare type LoadingSize = 'sm' | 'md' | 'lg' | 'xl';
|
|
|
558
556
|
|
|
559
557
|
export declare type LoadingStyle = 'line-simple' | 'line-spinner' | 'dot-circle';
|
|
560
558
|
|
|
559
|
+
export declare const Menu: <T extends object>(props: MenuProps<T> & {
|
|
560
|
+
ref?: React_2.Ref<HTMLDivElement>;
|
|
561
|
+
}) => React_2.ReactElement;
|
|
562
|
+
|
|
563
|
+
/**
|
|
564
|
+
* Figma `_Dropdown list header` (81:14786) has two authored forms — avatar-group and plain
|
|
565
|
+
* text. Shipped as one slot, not two variants: this component only owns the header's
|
|
566
|
+
* structural chrome (bottom border, padding); the consumer supplies whichever content.
|
|
567
|
+
*
|
|
568
|
+
* Built on RAC's own `<Header>` (`createLeafComponent(HeaderNode, ...)`), not a plain `<div>` —
|
|
569
|
+
* every child of `<Menu>` is routed through RAC's collection builder, which only recognizes
|
|
570
|
+
* proper collection node types (`MenuItem`, `MenuSection`, `Separator`, `Header`). A plain,
|
|
571
|
+
* unrecognized `<div>` here silently corrupts collection building: `state.collection.size`
|
|
572
|
+
* drops to 0 and every `MenuItem` disappears with no error thrown. Verified directly — swapping
|
|
573
|
+
* this back to a raw `<div>` reproduces zero rendered `role="menuitem"` elements on open, even
|
|
574
|
+
* with otherwise-unmodified content.
|
|
575
|
+
*/
|
|
576
|
+
export declare const MenuHeader: ({ children, className }: MenuHeaderProps) => JSX_2.Element;
|
|
577
|
+
|
|
578
|
+
export declare interface MenuHeaderProps {
|
|
579
|
+
children: React_2.ReactNode;
|
|
580
|
+
className?: string;
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
export declare const MenuItem: <T extends object>(props: MenuItemProps<T> & {
|
|
584
|
+
ref?: React_2.Ref<HTMLDivElement>;
|
|
585
|
+
}) => React_2.ReactElement;
|
|
586
|
+
|
|
587
|
+
/** Same enum as `ListBox`'s `content` axis. Default `none`. */
|
|
588
|
+
export declare type MenuItemContent = 'none' | 'icon' | 'selection';
|
|
589
|
+
|
|
590
|
+
export declare interface MenuItemProps<T extends object = object> extends Omit<MenuItemProps_2<T>, 'className' | 'style'> {
|
|
591
|
+
content?: MenuItemContent;
|
|
592
|
+
/** Rendered in the leading slot when `content="icon"`. */
|
|
593
|
+
icon?: React_2.ReactNode;
|
|
594
|
+
/** Figma `.Shortcut` (355:3773) — text-only, right-aligned. */
|
|
595
|
+
shortcut?: React_2.ReactNode;
|
|
596
|
+
className?: ClassValue;
|
|
597
|
+
style?: React_2.CSSProperties;
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
export declare interface MenuProps<T extends object> extends Omit<MenuProps_2<T>, 'className' | 'style'> {
|
|
601
|
+
className?: ClassValue;
|
|
602
|
+
style?: React_2.CSSProperties;
|
|
603
|
+
}
|
|
604
|
+
|
|
605
|
+
/** A `Separator` element, not an item variant. */
|
|
606
|
+
export declare const MenuSeparator: ({ className }: MenuSeparatorProps) => JSX_2.Element;
|
|
607
|
+
|
|
608
|
+
export declare interface MenuSeparatorProps {
|
|
609
|
+
className?: string;
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
export { MenuTrigger }
|
|
613
|
+
|
|
561
614
|
export declare function MultiSelectInput({ size, label, required, hint, error, disabled, placeholder, rightIcon, className, wrapperClassName, options, value, onChange, }: MultiSelectInputProps): JSX_2.Element;
|
|
562
615
|
|
|
563
616
|
declare interface MultiSelectInputProps {
|
|
@@ -601,6 +654,29 @@ declare interface PhoneInputProps {
|
|
|
601
654
|
wrapperClassName?: InputProps['wrapperClassName'];
|
|
602
655
|
}
|
|
603
656
|
|
|
657
|
+
/**
|
|
658
|
+
* Overlay foundation for the dropdown family (Menu, Select, ComboBox) and Tooltip. Wraps RAC's
|
|
659
|
+
* `Popover`, which already provides: portal to `document.body`,
|
|
660
|
+
* flip on the main axis and boundary-clamped shift on the cross axis when space runs out,
|
|
661
|
+
* `maxHeight` clamped to available viewport space, reposition on window resize and on trigger/
|
|
662
|
+
* overlay size change, Escape-to-close with focus restored to the trigger, and outside-press
|
|
663
|
+
* dismissal. This wrapper adds the two things RAC does not: reposition (not close) on ancestor
|
|
664
|
+
* scroll, and suppressing the ARIA role RAC would otherwise emit.
|
|
665
|
+
*/
|
|
666
|
+
export declare const Popover: React_2.ForwardRefExoticComponent<PopoverProps & React_2.RefAttributes<HTMLElement>>;
|
|
667
|
+
|
|
668
|
+
export declare interface PopoverProps extends Omit<PopoverProps_2, 'className' | 'style' | 'children'> {
|
|
669
|
+
children?: PopoverProps_2['children'];
|
|
670
|
+
/**
|
|
671
|
+
* Matches the panel's width to the trigger's width, via RAC's `--trigger-width` CSS
|
|
672
|
+
* var. Opt-in — most consumers (menus, comboboxes with long option labels) must not
|
|
673
|
+
* be clamped to trigger width. Default `false`.
|
|
674
|
+
*/
|
|
675
|
+
matchTriggerWidth?: boolean;
|
|
676
|
+
className?: ClassValue;
|
|
677
|
+
style?: React_2.CSSProperties;
|
|
678
|
+
}
|
|
679
|
+
|
|
604
680
|
export { PressEvent }
|
|
605
681
|
|
|
606
682
|
export declare const RadioGroup: ({ value, defaultValue, onValueChange, children, className, }: RadioGroupProps) => JSX_2.Element;
|
|
@@ -653,8 +729,63 @@ declare interface SaleAmountInputProps {
|
|
|
653
729
|
wrapperClassName?: InputProps['wrapperClassName'];
|
|
654
730
|
}
|
|
655
731
|
|
|
732
|
+
export declare const Select: <T extends object>(props: SelectProps<T> & {
|
|
733
|
+
ref?: React_2.Ref<HTMLDivElement>;
|
|
734
|
+
}) => React_2.ReactElement;
|
|
735
|
+
|
|
656
736
|
export { SelectionIndicator }
|
|
657
737
|
|
|
738
|
+
/**
|
|
739
|
+
* `ListBoxItem` with the selected-row treatment baked in — see `selectItemSelectedStyles` for
|
|
740
|
+
* why it's a placeholder. This lives on `Select`'s own item rather than on the shared `ListBox`
|
|
741
|
+
* because `Menu` doesn't have a Selected state to render at all. `content="selection"` reuses
|
|
742
|
+
* `ListBox`'s leading-checkmark rendering unchanged.
|
|
743
|
+
*/
|
|
744
|
+
export declare function SelectItem<T extends object>({ className, ...props }: ListBoxItemProps<T>): JSX_2.Element;
|
|
745
|
+
|
|
746
|
+
/**
|
|
747
|
+
* Single-value by construction — RAC's `Select` also supports `selectionMode: 'multiple'`,
|
|
748
|
+
* deliberately not exposed here. A multi-value trigger is a different interaction (chips, no
|
|
749
|
+
* auto-close) that belongs to its own component, not a prop on this one.
|
|
750
|
+
*/
|
|
751
|
+
export declare interface SelectProps<T extends object> extends Omit<SelectProps_2<T, 'single'>, 'className' | 'style' | 'children' | 'selectionMode'> {
|
|
752
|
+
children: SelectProps_2<T, 'single'>['children'];
|
|
753
|
+
className?: ClassValue;
|
|
754
|
+
style?: React_2.CSSProperties;
|
|
755
|
+
}
|
|
756
|
+
|
|
757
|
+
export declare type SelectSize = 'xs' | 'sm' | 'md';
|
|
758
|
+
|
|
759
|
+
/**
|
|
760
|
+
* Wraps RAC's raw `Button`, not this library's own `Button` — a Select trigger has its own
|
|
761
|
+
* bordered-field chrome (matching `InputDropdown`'s size scale/tokens), not a button variant,
|
|
762
|
+
* and the extra `tone`/`variant`/`iconOnly` surface of the library `Button` doesn't apply here.
|
|
763
|
+
*/
|
|
764
|
+
export declare const SelectTrigger: React_2.ForwardRefExoticComponent<SelectTriggerProps & React_2.RefAttributes<HTMLButtonElement>>;
|
|
765
|
+
|
|
766
|
+
export declare interface SelectTriggerProps extends Omit<ButtonProps_2, 'className' | 'style' | 'children'> {
|
|
767
|
+
children: ButtonProps_2['children'];
|
|
768
|
+
size?: SelectSize;
|
|
769
|
+
/**
|
|
770
|
+
* Leading ornament slot — icon, `Avatar`, or a status dot all go through this one prop.
|
|
771
|
+
* Ornament is a slot, not a variant axis: three separate typed props would make "which
|
|
772
|
+
* ornament kind" a variant decision that isn't this component's to make — the consumer
|
|
773
|
+
* already has the icon/avatar/dot element.
|
|
774
|
+
*/
|
|
775
|
+
icon?: React_2.ReactNode;
|
|
776
|
+
className?: ClassValue;
|
|
777
|
+
style?: React_2.CSSProperties;
|
|
778
|
+
}
|
|
779
|
+
|
|
780
|
+
export declare const SelectValue: <T>(props: SelectValueProps<T> & {
|
|
781
|
+
ref?: React_2.Ref<HTMLSpanElement>;
|
|
782
|
+
}) => React_2.ReactElement;
|
|
783
|
+
|
|
784
|
+
export declare interface SelectValueProps<T> extends Omit<SelectValueProps_2<T>, 'className' | 'style'> {
|
|
785
|
+
className?: ClassValue;
|
|
786
|
+
style?: React_2.CSSProperties;
|
|
787
|
+
}
|
|
788
|
+
|
|
658
789
|
/**
|
|
659
790
|
* Shared by `Column` and `Cell`. Freezes the element during horizontal scroll
|
|
660
791
|
* — `'left'` pins it to the left edge, `'right'` to the right. Requires an
|
|
@@ -979,6 +1110,25 @@ declare type ToggleSize = 'sm' | 'md'
|
|
|
979
1110
|
|
|
980
1111
|
declare type ToggleVariant = 'default' | 'success';
|
|
981
1112
|
|
|
1113
|
+
/**
|
|
1114
|
+
* Routes through `Popover` — standalone (no trigger context: `triggerRef`/`isOpen` driven
|
|
1115
|
+
* directly, same as `Popover`'s own standalone-usage support), with `isNonModal` so RAC skips
|
|
1116
|
+
* everything a tooltip must never do: `role="dialog"`, focus containment, a `DismissButton`,
|
|
1117
|
+
* stealing focus on open, and body-scroll locking (all gated on `!isNonModal` inside RAC's
|
|
1118
|
+
* `usePopover`/`PopoverInner` — confirmed against source, not just docs). `isNonModal` also
|
|
1119
|
+
* switches RAC's ancestor-scroll handling from Popover's own custom reposition-on-scroll to
|
|
1120
|
+
* RAC's own close-on-scroll — acceptable here since a tooltip is ephemeral and hover-driven;
|
|
1121
|
+
* closing instead of chasing the trigger across a scrolling container is reasonable, arguably
|
|
1122
|
+
* better than for a menu/select where closing loses navigation context.
|
|
1123
|
+
*
|
|
1124
|
+
* This replaces the previous hand-rolled `createPortal` + manual measurement (`getBoundingClientRect`
|
|
1125
|
+
* math per `side`) + `ResizeObserver` + scroll/resize listeners with RAC's own positioning:
|
|
1126
|
+
* portal-to-body, flip-on-both-axes (the old implementation had none — always rendered at the
|
|
1127
|
+
* exact requested `side` regardless of viewport edges), and `maxHeight` clamping, none of which
|
|
1128
|
+
* existed before. `OverlayArrow` needs no wiring on `Popover`'s side — RAC's `Popover` always
|
|
1129
|
+
* provides `OverlayArrowContext` to its children regardless of whether anything consumes it, so
|
|
1130
|
+
* it "just works" as a child here with zero changes to `Popover.tsx`.
|
|
1131
|
+
*/
|
|
982
1132
|
export declare const Tooltip: {
|
|
983
1133
|
({ content, supportingText, side, open, defaultOpen, disabled, delay, className, children, }: TooltipProps): JSX_2.Element;
|
|
984
1134
|
displayName: string;
|