cekat-ui 1.3.6 → 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 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;