reshaped 3.8.0-canary.2 → 3.8.0-canary.21
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/bundle.css +1 -1
 - package/dist/bundle.d.ts +2 -1
 - package/dist/bundle.js +11 -11
 - package/dist/components/Accordion/AccordionControlled.js +1 -0
 - package/dist/components/Actionable/Actionable.js +17 -3
 - package/dist/components/Actionable/Actionable.module.css +1 -1
 - package/dist/components/Actionable/Actionable.types.d.ts +15 -3
 - package/dist/components/Actionable/tests/Actionable.stories.d.ts +13 -1
 - package/dist/components/Actionable/tests/Actionable.stories.js +127 -7
 - package/dist/components/Alert/tests/Alert.stories.d.ts +6 -5
 - package/dist/components/Alert/tests/Alert.stories.js +15 -2
 - package/dist/components/Autocomplete/Autocomplete.js +2 -2
 - package/dist/components/Autocomplete/Autocomplete.types.d.ts +1 -1
 - package/dist/components/Badge/Badge.module.css +1 -1
 - package/dist/components/Badge/tests/Badge.stories.d.ts +5 -0
 - package/dist/components/Badge/tests/Badge.stories.js +34 -0
 - package/dist/components/Breadcrumbs/Breadcrumbs.js +1 -0
 - package/dist/components/Breadcrumbs/tests/Breadcrumbs.stories.d.ts +8 -4
 - package/dist/components/Breadcrumbs/tests/Breadcrumbs.stories.js +57 -1
 - package/dist/components/Button/Button.js +2 -2
 - package/dist/components/Button/Button.module.css +1 -1
 - package/dist/components/Button/Button.types.d.ts +1 -1
 - package/dist/components/Button/tests/Button.stories.d.ts +54 -12
 - package/dist/components/Button/tests/Button.stories.js +725 -588
 - package/dist/components/Calendar/CalendarMonth.js +1 -0
 - package/dist/components/Card/Card.d.ts +1 -1
 - package/dist/components/Card/Card.module.css +1 -1
 - package/dist/components/Card/tests/Card.stories.d.ts +29 -7
 - package/dist/components/Card/tests/Card.stories.js +110 -65
 - package/dist/components/Carousel/Carousel.js +1 -0
 - package/dist/components/Carousel/Carousel.module.css +1 -1
 - package/dist/components/Checkbox/Checkbox.module.css +1 -1
 - package/dist/components/Checkbox/tests/Checkbox.stories.d.ts +20 -4
 - package/dist/components/Checkbox/tests/Checkbox.stories.js +150 -79
 - package/dist/components/CheckboxGroup/tests/CheckboxGroup.stories.d.ts +9 -2
 - package/dist/components/CheckboxGroup/tests/CheckboxGroup.stories.js +67 -35
 - package/dist/components/Container/tests/Container.stories.d.ts +2 -0
 - package/dist/components/Container/tests/Container.stories.js +14 -0
 - package/dist/components/ContextMenu/tests/ContextMenu.stories.d.ts +10 -1
 - package/dist/components/ContextMenu/tests/ContextMenu.stories.js +57 -13
 - package/dist/components/Dismissible/tests/Dismissible.stories.d.ts +5 -0
 - package/dist/components/Dismissible/tests/Dismissible.stories.js +30 -1
 - package/dist/components/Divider/tests/Divider.stories.d.ts +8 -3
 - package/dist/components/Divider/tests/Divider.stories.js +71 -41
 - package/dist/components/DropdownMenu/DropdownMenu.js +4 -4
 - package/dist/components/DropdownMenu/DropdownMenu.types.d.ts +2 -2
 - package/dist/components/DropdownMenu/tests/DropdownMenu.stories.d.ts +35 -6
 - package/dist/components/DropdownMenu/tests/DropdownMenu.stories.js +222 -115
 - package/dist/components/FileUpload/FileUpload.module.css +1 -1
 - package/dist/components/Flyout/Flyout.module.css +1 -1
 - package/dist/components/Flyout/Flyout.types.d.ts +7 -7
 - package/dist/components/Flyout/FlyoutContent.js +4 -1
 - package/dist/components/Flyout/FlyoutControlled.js +10 -3
 - package/dist/components/Flyout/index.d.ts +1 -1
 - package/dist/components/Flyout/tests/Flyout.stories.d.ts +8 -0
 - package/dist/components/Flyout/tests/Flyout.stories.js +81 -33
 - package/dist/components/Flyout/useFlyout.d.ts +1 -7
 - package/dist/components/Flyout/useFlyout.js +5 -1
 - package/dist/components/Flyout/utilities/calculatePosition.d.ts +3 -2
 - package/dist/components/Flyout/utilities/calculatePosition.js +47 -22
 - package/dist/components/Flyout/utilities/flyout.js +3 -2
 - package/dist/components/Flyout/utilities/getPositionFallbacks.js +3 -3
 - package/dist/components/Flyout/utilities/isFullyVisible.d.ts +0 -2
 - package/dist/components/Flyout/utilities/isFullyVisible.js +5 -7
 - package/dist/components/FormControl/FormControl.context.d.ts +1 -1
 - package/dist/components/FormControl/tests/FormControl.stories.d.ts +2 -0
 - package/dist/components/FormControl/tests/FormControl.stories.js +35 -0
 - package/dist/components/Hidden/tests/Hidden.stories.d.ts +2 -0
 - package/dist/components/Hidden/tests/Hidden.stories.js +9 -0
 - package/dist/components/HiddenVisually/tests/HiddenVisually.stories.d.ts +2 -0
 - package/dist/components/HiddenVisually/tests/HiddenVisually.stories.js +9 -0
 - package/dist/components/Hotkey/tests/Hotkey.stories.d.ts +2 -0
 - package/dist/components/Hotkey/tests/Hotkey.stories.js +15 -0
 - package/dist/components/Icon/Icon.js +2 -2
 - package/dist/components/Icon/Icon.types.d.ts +1 -1
 - package/dist/components/Icon/tests/Icon.stories.d.ts +3 -0
 - package/dist/components/Icon/tests/Icon.stories.js +29 -1
 - package/dist/components/Link/Link.d.ts +1 -1
 - package/dist/components/Link/Link.js +2 -2
 - package/dist/components/Link/Link.types.d.ts +1 -1
 - package/dist/components/Link/tests/Link.stories.d.ts +29 -6
 - package/dist/components/Link/tests/Link.stories.js +141 -58
 - package/dist/components/Loader/tests/Loader.stories.d.ts +11 -2
 - package/dist/components/Loader/tests/Loader.stories.js +52 -25
 - package/dist/components/MenuItem/MenuItem.js +2 -2
 - package/dist/components/MenuItem/MenuItem.module.css +1 -1
 - package/dist/components/MenuItem/MenuItem.types.d.ts +1 -1
 - package/dist/components/MenuItem/tests/MenuItem.stories.d.ts +37 -7
 - package/dist/components/MenuItem/tests/MenuItem.stories.js +218 -112
 - package/dist/components/Modal/Modal.js +1 -1
 - package/dist/components/Modal/Modal.module.css +1 -1
 - package/dist/components/Modal/tests/Modal.stories.d.ts +49 -10
 - package/dist/components/Modal/tests/Modal.stories.js +350 -210
 - package/dist/components/Overlay/Overlay.js +2 -1
 - package/dist/components/Overlay/tests/Overlay.stories.d.ts +15 -1
 - package/dist/components/Overlay/tests/Overlay.stories.js +135 -1
 - package/dist/components/Pagination/tests/Pagination.stories.d.ts +14 -1
 - package/dist/components/Pagination/tests/Pagination.stories.js +93 -15
 - package/dist/components/PinField/tests/PinField.stories.d.ts +1 -1
 - package/dist/components/PinField/tests/PinField.stories.js +1 -1
 - package/dist/components/Popover/Popover.js +2 -2
 - package/dist/components/Popover/Popover.module.css +1 -1
 - package/dist/components/Popover/Popover.types.d.ts +3 -1
 - package/dist/components/Progress/tests/Progress.stories.d.ts +19 -4
 - package/dist/components/Progress/tests/Progress.stories.js +85 -49
 - package/dist/components/Radio/Radio.module.css +1 -1
 - package/dist/components/Radio/tests/Radio.stories.d.ts +25 -4
 - package/dist/components/Radio/tests/Radio.stories.js +147 -65
 - package/dist/components/RadioGroup/tests/RadioGroup.stories.d.ts +9 -2
 - package/dist/components/RadioGroup/tests/RadioGroup.stories.js +64 -38
 - package/dist/components/Reshaped/Reshaped.css +1 -1
 - package/dist/components/Scrim/tests/Scrim.stories.d.ts +10 -2
 - package/dist/components/Scrim/tests/Scrim.stories.js +51 -31
 - package/dist/components/ScrollArea/ScrollArea.module.css +1 -1
 - package/dist/components/Select/Select.d.ts +8 -1
 - package/dist/components/Select/Select.js +22 -48
 - package/dist/components/Select/Select.module.css +1 -1
 - package/dist/components/Select/Select.types.d.ts +83 -38
 - package/dist/components/Select/SelectCustom.d.ts +3 -0
 - package/dist/components/Select/SelectCustom.js +12 -0
 - package/dist/components/Select/SelectCustomControlled.d.ts +4 -0
 - package/dist/components/Select/SelectCustomControlled.js +105 -0
 - package/dist/components/Select/SelectCustomUncontrolled.d.ts +4 -0
 - package/dist/components/Select/SelectCustomUncontrolled.js +18 -0
 - package/dist/components/Select/SelectEndContent.d.ts +3 -0
 - package/dist/components/Select/SelectEndContent.js +12 -0
 - package/dist/components/Select/SelectNative.d.ts +4 -0
 - package/dist/components/Select/SelectNative.js +29 -0
 - package/dist/components/Select/SelectOption.d.ts +4 -0
 - package/dist/components/Select/SelectOption.js +13 -0
 - package/dist/components/Select/SelectOptionGroup.d.ts +4 -0
 - package/dist/components/Select/SelectOptionGroup.js +9 -0
 - package/dist/components/Select/SelectRoot.d.ts +4 -0
 - package/dist/components/Select/SelectRoot.js +21 -0
 - package/dist/components/Select/SelectStartContent.d.ts +3 -0
 - package/dist/components/Select/SelectStartContent.js +20 -0
 - package/dist/components/Select/SelectTrigger.d.ts +4 -0
 - package/dist/components/Select/SelectTrigger.js +16 -0
 - package/dist/components/Select/tests/Select.stories.d.ts +38 -10
 - package/dist/components/Select/tests/Select.stories.js +504 -175
 - package/dist/components/Skeleton/tests/Skeleton.stories.d.ts +10 -2
 - package/dist/components/Skeleton/tests/Skeleton.stories.js +46 -28
 - package/dist/components/Slider/Slider.module.css +1 -1
 - package/dist/components/Stepper/Stepper.js +2 -2
 - package/dist/components/Stepper/Stepper.types.d.ts +2 -0
 - package/dist/components/Stepper/tests/Stepper.stories.d.ts +18 -3
 - package/dist/components/Stepper/tests/Stepper.stories.js +99 -47
 - package/dist/components/Switch/Switch.module.css +1 -1
 - package/dist/components/Switch/tests/Switch.stories.d.ts +10 -2
 - package/dist/components/Switch/tests/Switch.stories.js +77 -23
 - package/dist/components/Switch/tests/Switch.test.stories.d.ts +0 -10
 - package/dist/components/Switch/tests/Switch.test.stories.js +0 -68
 - package/dist/components/Table/Table.js +5 -3
 - package/dist/components/Table/Table.module.css +1 -1
 - package/dist/components/Table/tests/Table.stories.d.ts +25 -5
 - package/dist/components/Table/tests/Table.stories.js +274 -177
 - package/dist/components/Tabs/Tabs.module.css +1 -1
 - package/dist/components/Tabs/TabsControlled.js +1 -0
 - package/dist/components/Tabs/TabsList.js +3 -20
 - package/dist/components/Text/Text.module.css +1 -1
 - package/dist/components/TextArea/TextArea.module.css +1 -1
 - package/dist/components/TextArea/tests/TextArea.stories.d.ts +41 -9
 - package/dist/components/TextArea/tests/TextArea.stories.js +179 -93
 - package/dist/components/TextField/TextField.js +11 -3
 - package/dist/components/TextField/TextField.module.css +1 -1
 - package/dist/components/TextField/TextField.types.d.ts +5 -1
 - package/dist/components/TextField/tests/TextField.stories.d.ts +41 -11
 - package/dist/components/TextField/tests/TextField.stories.js +209 -129
 - package/dist/components/Theme/Theme.module.css +1 -1
 - package/dist/components/Timeline/Timeline.js +2 -2
 - package/dist/components/Timeline/tests/Timeline.stories.d.ts +10 -2
 - package/dist/components/Timeline/tests/Timeline.stories.js +69 -45
 - package/dist/components/Toast/ToastContainer.js +1 -0
 - package/dist/components/Toast/ToastRegion.js +1 -0
 - package/dist/components/Toast/tests/Toast.stories.d.ts +32 -8
 - package/dist/components/Toast/tests/Toast.stories.js +111 -37
 - package/dist/components/ToggleButton/ToggleButton.types.d.ts +5 -1
 - package/dist/components/ToggleButton/ToggleButtonControlled.js +9 -2
 - package/dist/components/ToggleButton/tests/ToggleButton.stories.d.ts +4 -0
 - package/dist/components/ToggleButton/tests/ToggleButton.stories.js +10 -0
 - package/dist/components/ToggleButtonGroup/ToggleButtonGroup.types.d.ts +10 -0
 - package/dist/components/ToggleButtonGroup/ToggleButtonGroupControlled.js +6 -41
 - package/dist/components/ToggleButtonGroup/tests/ToggleButtonGroup.stories.d.ts +1 -0
 - package/dist/components/ToggleButtonGroup/tests/ToggleButtonGroup.stories.js +17 -0
 - package/dist/components/Tooltip/Tooltip.js +1 -1
 - package/dist/components/Tooltip/Tooltip.types.d.ts +2 -2
 - package/dist/components/Tooltip/tests/Tooltip.stories.d.ts +18 -4
 - package/dist/components/Tooltip/tests/Tooltip.stories.js +139 -107
 - package/dist/components/View/View.js +11 -4
 - package/dist/components/View/View.types.d.ts +1 -1
 - package/dist/components/View/tests/View.stories.d.ts +4 -0
 - package/dist/components/View/tests/View.stories.js +39 -0
 - package/dist/components/_private/Expandable/Expandable.js +3 -1
 - package/dist/components/_private/Portal/Portal.js +4 -1
 - package/dist/hooks/_private/useIsDismissible.d.ts +1 -0
 - package/dist/hooks/_private/useIsDismissible.js +6 -6
 - package/dist/hooks/_private/usePrevious.js +1 -0
 - package/dist/hooks/tests/useDrag.stories.js +1 -1
 - package/dist/{components/Toast/tests/Toast.test.stories.d.ts → hooks/tests/useKeyboardArrowNavigation.stories.d.ts} +4 -5
 - package/dist/hooks/tests/useKeyboardArrowNavigation.stories.js +128 -0
 - package/dist/hooks/useKeyboardArrowNavigation.d.ts +9 -0
 - package/dist/hooks/useKeyboardArrowNavigation.js +62 -0
 - package/dist/hooks/useOnClickOutside.js +0 -2
 - package/dist/hooks/useScrollLock.js +5 -3
 - package/dist/index.d.ts +2 -1
 - package/dist/index.js +1 -0
 - package/dist/styles/resolvers/align/align.css +1 -1
 - package/dist/styles/resolvers/aspectRatio/aspectRatio.css +1 -1
 - package/dist/styles/resolvers/bleed/bleed.module.css +1 -1
 - package/dist/styles/resolvers/justify/justify.css +1 -1
 - package/dist/styles/resolvers/maxHeight/maxHeight.module.css +1 -1
 - package/dist/styles/resolvers/maxWidth/maxWidth.module.css +1 -1
 - package/dist/styles/resolvers/minHeight/minHeight.module.css +1 -1
 - package/dist/styles/resolvers/minWidth/minWidth.module.css +1 -1
 - package/dist/styles/resolvers/position/position.css +1 -1
 - package/dist/styles/resolvers/textAlign/textAlign.css +1 -1
 - package/dist/styles/resolvers/width/width.module.css +1 -1
 - package/dist/utilities/a11y/focus.d.ts +21 -4
 - package/dist/utilities/a11y/focus.js +4 -3
 - package/dist/utilities/scroll/disable.js +2 -2
 - package/dist/utilities/scroll/index.d.ts +1 -1
 - package/dist/utilities/scroll/index.js +1 -1
 - package/dist/utilities/scroll/lock.d.ts +1 -2
 - package/dist/utilities/scroll/lock.js +16 -15
 - package/dist/utilities/scroll/lockSafari.js +1 -0
 - package/package.json +195 -201
 - package/CHANGELOG-extra.md +0 -3
 - package/CHANGELOG.md +0 -57
 - package/dist/components/Actionable/tests/Actionable.test.stories.d.ts +0 -32
 - package/dist/components/Actionable/tests/Actionable.test.stories.js +0 -130
 - package/dist/components/Alert/tests/Alert.test.stories.d.ts +0 -15
 - package/dist/components/Alert/tests/Alert.test.stories.js +0 -26
 - package/dist/components/Badge/tests/Badge.test.stories.d.ts +0 -20
 - package/dist/components/Badge/tests/Badge.test.stories.js +0 -46
 - package/dist/components/Breadcrumbs/tests/Breadcrumbs.test.stories.d.ts +0 -23
 - package/dist/components/Breadcrumbs/tests/Breadcrumbs.test.stories.js +0 -76
 - package/dist/components/Button/tests/Button.test.stories.d.ts +0 -27
 - package/dist/components/Button/tests/Button.test.stories.js +0 -112
 - package/dist/components/Card/tests/Card.test.stories.d.ts +0 -35
 - package/dist/components/Card/tests/Card.test.stories.js +0 -54
 - package/dist/components/Checkbox/tests/Checkbox.test.stories.d.ts +0 -25
 - package/dist/components/Checkbox/tests/Checkbox.test.stories.js +0 -104
 - package/dist/components/CheckboxGroup/tests/CheckboxGroup.test.stories.d.ts +0 -22
 - package/dist/components/CheckboxGroup/tests/CheckboxGroup.test.stories.js +0 -78
 - package/dist/components/Container/tests/Container.test.stories.d.ts +0 -15
 - package/dist/components/Container/tests/Container.test.stories.js +0 -26
 - package/dist/components/ContextMenu/tests/ContextMenu.test.stories.d.ts +0 -25
 - package/dist/components/ContextMenu/tests/ContextMenu.test.stories.js +0 -53
 - package/dist/components/Dismissible/tests/Dismissible.test.stories.d.ts +0 -19
 - package/dist/components/Dismissible/tests/Dismissible.test.stories.js +0 -42
 - package/dist/components/Divider/tests/Divider.test.stories.d.ts +0 -18
 - package/dist/components/Divider/tests/Divider.test.stories.js +0 -47
 - package/dist/components/DropdownMenu/tests/DropdownMenu.test.stories.d.ts +0 -36
 - package/dist/components/DropdownMenu/tests/DropdownMenu.test.stories.js +0 -117
 - package/dist/components/FormControl/tests/FormControl.test.stories.d.ts +0 -20
 - package/dist/components/FormControl/tests/FormControl.test.stories.js +0 -49
 - package/dist/components/Hidden/tests/Hidden.test.stories.d.ts +0 -15
 - package/dist/components/Hidden/tests/Hidden.test.stories.js +0 -20
 - package/dist/components/HiddenVisually/tests/HiddenVisually.test.stories.d.ts +0 -15
 - package/dist/components/HiddenVisually/tests/HiddenVisually.test.stories.js +0 -20
 - package/dist/components/Hotkey/tests/Hotkey.test.stories.d.ts +0 -15
 - package/dist/components/Hotkey/tests/Hotkey.test.stories.js +0 -26
 - package/dist/components/Icon/tests/Icon.test.stories.d.ts +0 -16
 - package/dist/components/Icon/tests/Icon.test.stories.js +0 -35
 - package/dist/components/Link/tests/Link.test.stories.d.ts +0 -29
 - package/dist/components/Link/tests/Link.test.stories.js +0 -87
 - package/dist/components/Loader/tests/Loader.test.stories.d.ts +0 -16
 - package/dist/components/Loader/tests/Loader.test.stories.js +0 -32
 - package/dist/components/MenuItem/tests/MenuItem.test.stories.d.ts +0 -26
 - package/dist/components/MenuItem/tests/MenuItem.test.stories.js +0 -100
 - package/dist/components/Modal/tests/Modal.test.stories.d.ts +0 -31
 - package/dist/components/Modal/tests/Modal.test.stories.js +0 -149
 - package/dist/components/Overlay/tests/Overlay.test.stories.d.ts +0 -28
 - package/dist/components/Overlay/tests/Overlay.test.stories.js +0 -148
 - package/dist/components/Pagination/tests/Pagination.test.stories.d.ts +0 -23
 - package/dist/components/Pagination/tests/Pagination.test.stories.js +0 -86
 - package/dist/components/Progress/tests/Progress.test.stories.d.ts +0 -16
 - package/dist/components/Progress/tests/Progress.test.stories.js +0 -35
 - package/dist/components/Radio/tests/Radio.test.stories.d.ts +0 -30
 - package/dist/components/Radio/tests/Radio.test.stories.js +0 -118
 - package/dist/components/RadioGroup/tests/RadioGroup.test.stories.d.ts +0 -22
 - package/dist/components/RadioGroup/tests/RadioGroup.test.stories.js +0 -78
 - package/dist/components/Scrim/tests/Scrim.test.stories.d.ts +0 -15
 - package/dist/components/Scrim/tests/Scrim.test.stories.js +0 -25
 - package/dist/components/Select/tests/Select.test.stories.d.ts +0 -27
 - package/dist/components/Select/tests/Select.test.stories.js +0 -132
 - package/dist/components/Skeleton/tests/Skeleton.test.stories.d.ts +0 -15
 - package/dist/components/Skeleton/tests/Skeleton.test.stories.js +0 -23
 - package/dist/components/Stepper/tests/Stepper.test.stories.d.ts +0 -20
 - package/dist/components/Stepper/tests/Stepper.test.stories.js +0 -28
 - package/dist/components/Table/tests/Table.test.stories.d.ts +0 -24
 - package/dist/components/Table/tests/Table.test.stories.js +0 -93
 - package/dist/components/TextArea/tests/TextArea.test.stories.d.ts +0 -28
 - package/dist/components/TextArea/tests/TextArea.test.stories.js +0 -99
 - package/dist/components/TextField/tests/TextField.test.stories.d.ts +0 -28
 - package/dist/components/TextField/tests/TextField.test.stories.js +0 -99
 - package/dist/components/Timeline/tests/Timeline.test.stories.d.ts +0 -17
 - package/dist/components/Timeline/tests/Timeline.test.stories.js +0 -32
 - package/dist/components/Toast/tests/Toast.test.stories.js +0 -101
 - package/dist/components/Tooltip/tests/Tooltip.test.stories.d.ts +0 -19
 - package/dist/components/Tooltip/tests/Tooltip.test.stories.js +0 -40
 - package/dist/components/View/tests/View.test.stories.d.ts +0 -24
 - package/dist/components/View/tests/View.test.stories.js +0 -50
 
| 
         @@ -1,10 +1,11 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            import React from "react";
         
     | 
| 
       2 
2 
     | 
    
         
             
            import type * as G from "../../types/global";
         
     | 
| 
       3 
     | 
    
         
            -
            import type { FormControlProps } from "../FormControl";
         
     | 
| 
       4 
     | 
    
         
            -
            import type { ActionableProps } from "../Actionable";
         
     | 
| 
       5 
3 
     | 
    
         
             
            import type { IconProps } from "../Icon";
         
     | 
| 
      
 4 
     | 
    
         
            +
            import type { ActionableProps } from "../Actionable";
         
     | 
| 
      
 5 
     | 
    
         
            +
            import type { MenuItemProps } from "../MenuItem";
         
     | 
| 
      
 6 
     | 
    
         
            +
            import { DropdownMenuProps } from "../DropdownMenu";
         
     | 
| 
       6 
7 
     | 
    
         
             
            type Size = G.Responsive<"small" | "medium" | "large" | "xlarge">;
         
     | 
| 
       7 
     | 
    
         
            -
            type  
     | 
| 
      
 8 
     | 
    
         
            +
            type NativeOption = {
         
     | 
| 
       8 
9 
     | 
    
         
             
                /** Option text label */
         
     | 
| 
       9 
10 
     | 
    
         
             
                label: string;
         
     | 
| 
       10 
11 
     | 
    
         
             
                /** Option value used in the form submission */
         
     | 
| 
         @@ -12,40 +13,14 @@ type Option = { 
     | 
|
| 
       12 
13 
     | 
    
         
             
                /** Disable the option from the selection */
         
     | 
| 
       13 
14 
     | 
    
         
             
                disabled?: boolean;
         
     | 
| 
       14 
15 
     | 
    
         
             
            };
         
     | 
| 
       15 
     | 
    
         
            -
            export type  
     | 
| 
       16 
     | 
    
         
            -
                 
     | 
| 
       17 
     | 
    
         
            -
                onClick?: () => void;
         
     | 
| 
       18 
     | 
    
         
            -
                /** Node for inserting children */
         
     | 
| 
       19 
     | 
    
         
            -
                children?: React.ReactNode;
         
     | 
| 
       20 
     | 
    
         
            -
                /** Additional attributes for the input element */
         
     | 
| 
       21 
     | 
    
         
            -
                inputAttributes?: ActionableProps["attributes"];
         
     | 
| 
       22 
     | 
    
         
            -
                /** Callback when the input is focused */
         
     | 
| 
       23 
     | 
    
         
            -
                onFocus?: (e: React.FocusEvent<HTMLButtonElement>) => void;
         
     | 
| 
       24 
     | 
    
         
            -
                /** Callback when the input is blurred */
         
     | 
| 
       25 
     | 
    
         
            -
                onBlur?: (e: React.FocusEvent<HTMLButtonElement>) => void;
         
     | 
| 
       26 
     | 
    
         
            -
                /** Options for the select */
         
     | 
| 
       27 
     | 
    
         
            -
                options?: never;
         
     | 
| 
       28 
     | 
    
         
            -
                /** Callback when the input value changes */
         
     | 
| 
       29 
     | 
    
         
            -
                onChange?: never;
         
     | 
| 
      
 16 
     | 
    
         
            +
            export type OptionProps = Pick<MenuItemProps, "attributes" | "children" | "className" | "disabled" | "endSlot" | "startSlot" | "icon" | "onClick"> & {
         
     | 
| 
      
 17 
     | 
    
         
            +
                value: string;
         
     | 
| 
       30 
18 
     | 
    
         
             
            };
         
     | 
| 
       31 
     | 
    
         
            -
            export type  
     | 
| 
       32 
     | 
    
         
            -
                 
     | 
| 
       33 
     | 
    
         
            -
                 
     | 
| 
       34 
     | 
    
         
            -
                /** Callback when the input value changes */
         
     | 
| 
       35 
     | 
    
         
            -
                onChange?: G.ChangeHandler<string, React.ChangeEvent<HTMLSelectElement>>;
         
     | 
| 
       36 
     | 
    
         
            -
                /** Callback when the input is focused */
         
     | 
| 
       37 
     | 
    
         
            -
                onFocus?: (e: React.FocusEvent<HTMLSelectElement>) => void;
         
     | 
| 
       38 
     | 
    
         
            -
                /** Callback when the input is blurred */
         
     | 
| 
       39 
     | 
    
         
            -
                onBlur?: (e: React.FocusEvent<HTMLSelectElement>) => void;
         
     | 
| 
       40 
     | 
    
         
            -
                /** Additional attributes for the input element */
         
     | 
| 
       41 
     | 
    
         
            -
                inputAttributes?: G.Attributes<"select">;
         
     | 
| 
       42 
     | 
    
         
            -
                /** Callback when the button is clicked */
         
     | 
| 
       43 
     | 
    
         
            -
                onClick?: never;
         
     | 
| 
       44 
     | 
    
         
            -
                /** Node for inserting children */
         
     | 
| 
       45 
     | 
    
         
            -
                children?: never;
         
     | 
| 
      
 19 
     | 
    
         
            +
            export type OptionGroupProps = {
         
     | 
| 
      
 20 
     | 
    
         
            +
                label: string;
         
     | 
| 
      
 21 
     | 
    
         
            +
                children: React.ReactNode;
         
     | 
| 
       46 
22 
     | 
    
         
             
            };
         
     | 
| 
       47 
     | 
    
         
            -
            type  
     | 
| 
       48 
     | 
    
         
            -
                /** Unique identifier for the select */
         
     | 
| 
      
 23 
     | 
    
         
            +
            type BaseFragment = {
         
     | 
| 
       49 
24 
     | 
    
         
             
                id?: string;
         
     | 
| 
       50 
25 
     | 
    
         
             
                /** Name of the input element */
         
     | 
| 
       51 
26 
     | 
    
         
             
                name: string;
         
     | 
| 
         @@ -61,18 +36,88 @@ type BaseProps = ((ButtonTriggerProps | SelectTriggerProps) & Pick<FormControlPr 
     | 
|
| 
       61 
36 
     | 
    
         
             
                icon?: IconProps["svg"];
         
     | 
| 
       62 
37 
     | 
    
         
             
                /** Node for inserting content before the select value */
         
     | 
| 
       63 
38 
     | 
    
         
             
                startSlot?: React.ReactNode;
         
     | 
| 
      
 39 
     | 
    
         
            +
                /** Show an error state, automatically inherited when component is used inside FormControl */
         
     | 
| 
      
 40 
     | 
    
         
            +
                hasError?: boolean;
         
     | 
| 
      
 41 
     | 
    
         
            +
                /** Callback when the trigger is clicked */
         
     | 
| 
      
 42 
     | 
    
         
            +
                onClick?: ActionableProps["onClick"];
         
     | 
| 
       64 
43 
     | 
    
         
             
                /** Additional classname for the root element */
         
     | 
| 
       65 
44 
     | 
    
         
             
                className?: G.ClassName;
         
     | 
| 
       66 
45 
     | 
    
         
             
                /** Additional attributes for the root element */
         
     | 
| 
       67 
46 
     | 
    
         
             
                attributes?: G.Attributes<"div">;
         
     | 
| 
      
 47 
     | 
    
         
            +
                /** Node for inserting children */
         
     | 
| 
      
 48 
     | 
    
         
            +
                children?: React.ReactNode;
         
     | 
| 
       68 
49 
     | 
    
         
             
            };
         
     | 
| 
       69 
     | 
    
         
            -
            export type  
     | 
| 
      
 50 
     | 
    
         
            +
            export type CustomFragment = {
         
     | 
| 
      
 51 
     | 
    
         
            +
                /** Options for the select */
         
     | 
| 
      
 52 
     | 
    
         
            +
                options?: never;
         
     | 
| 
      
 53 
     | 
    
         
            +
                /** Callback when the input is focused */
         
     | 
| 
      
 54 
     | 
    
         
            +
                onFocus?: (e: React.FocusEvent<HTMLButtonElement>) => void;
         
     | 
| 
      
 55 
     | 
    
         
            +
                /** Callback when the input is blurred */
         
     | 
| 
      
 56 
     | 
    
         
            +
                onBlur?: (e: React.FocusEvent<HTMLButtonElement>) => void;
         
     | 
| 
      
 57 
     | 
    
         
            +
                /** Additional attributes for the trigger element */
         
     | 
| 
      
 58 
     | 
    
         
            +
                inputAttributes?: ActionableProps["attributes"];
         
     | 
| 
      
 59 
     | 
    
         
            +
            } & Pick<DropdownMenuProps, "position" | "width" | "fallbackPositions">;
         
     | 
| 
      
 60 
     | 
    
         
            +
            export type NativeFragment = {
         
     | 
| 
      
 61 
     | 
    
         
            +
                /** Options for the select */
         
     | 
| 
      
 62 
     | 
    
         
            +
                /** @deprecated Use <option /> children instead */
         
     | 
| 
      
 63 
     | 
    
         
            +
                options?: NativeOption[];
         
     | 
| 
      
 64 
     | 
    
         
            +
                /** Callback when the input is focused */
         
     | 
| 
      
 65 
     | 
    
         
            +
                onFocus?: (e: React.FocusEvent<HTMLSelectElement>) => void;
         
     | 
| 
      
 66 
     | 
    
         
            +
                /** Callback when the input is blurred */
         
     | 
| 
      
 67 
     | 
    
         
            +
                onBlur?: (e: React.FocusEvent<HTMLSelectElement>) => void;
         
     | 
| 
      
 68 
     | 
    
         
            +
                /** Additional attributes for the input element */
         
     | 
| 
      
 69 
     | 
    
         
            +
                inputAttributes?: G.Attributes<"select">;
         
     | 
| 
      
 70 
     | 
    
         
            +
            };
         
     | 
| 
      
 71 
     | 
    
         
            +
            export type NativeControlledFragment = {
         
     | 
| 
       70 
72 
     | 
    
         
             
                value: string;
         
     | 
| 
       71 
73 
     | 
    
         
             
                defaultValue?: never;
         
     | 
| 
      
 74 
     | 
    
         
            +
                /** Callback when the input value changes */
         
     | 
| 
      
 75 
     | 
    
         
            +
                onChange?: G.ChangeHandler<string, React.ChangeEvent<HTMLSelectElement>>;
         
     | 
| 
       72 
76 
     | 
    
         
             
            };
         
     | 
| 
       73 
     | 
    
         
            -
            export type  
     | 
| 
      
 77 
     | 
    
         
            +
            export type NativeUncontrolledFragment = {
         
     | 
| 
       74 
78 
     | 
    
         
             
                value?: never;
         
     | 
| 
       75 
79 
     | 
    
         
             
                defaultValue?: string;
         
     | 
| 
      
 80 
     | 
    
         
            +
                /** Callback when the input value changes */
         
     | 
| 
      
 81 
     | 
    
         
            +
                onChange?: G.ChangeHandler<string, React.ChangeEvent<HTMLSelectElement>>;
         
     | 
| 
      
 82 
     | 
    
         
            +
            };
         
     | 
| 
      
 83 
     | 
    
         
            +
            export type CustomControlledFragment = {
         
     | 
| 
      
 84 
     | 
    
         
            +
                multiple?: false;
         
     | 
| 
      
 85 
     | 
    
         
            +
                value: string;
         
     | 
| 
      
 86 
     | 
    
         
            +
                defaultValue?: never;
         
     | 
| 
      
 87 
     | 
    
         
            +
                /** Callback when the input value changes */
         
     | 
| 
      
 88 
     | 
    
         
            +
                onChange?: G.ChangeHandler<string>;
         
     | 
| 
      
 89 
     | 
    
         
            +
            } | {
         
     | 
| 
      
 90 
     | 
    
         
            +
                multiple: true;
         
     | 
| 
      
 91 
     | 
    
         
            +
                value: string[];
         
     | 
| 
      
 92 
     | 
    
         
            +
                defaultValue?: never[];
         
     | 
| 
      
 93 
     | 
    
         
            +
                /** Callback when the input value changes */
         
     | 
| 
      
 94 
     | 
    
         
            +
                onChange?: G.ChangeHandler<string[]>;
         
     | 
| 
      
 95 
     | 
    
         
            +
            };
         
     | 
| 
      
 96 
     | 
    
         
            +
            export type CustomUncontrolledFragment = {
         
     | 
| 
      
 97 
     | 
    
         
            +
                multiple?: false;
         
     | 
| 
      
 98 
     | 
    
         
            +
                value?: never;
         
     | 
| 
      
 99 
     | 
    
         
            +
                defaultValue?: string;
         
     | 
| 
      
 100 
     | 
    
         
            +
                /** Callback when the input value changes */
         
     | 
| 
      
 101 
     | 
    
         
            +
                onChange?: G.ChangeHandler<string>;
         
     | 
| 
      
 102 
     | 
    
         
            +
            } | {
         
     | 
| 
      
 103 
     | 
    
         
            +
                multiple: true;
         
     | 
| 
      
 104 
     | 
    
         
            +
                value?: never[];
         
     | 
| 
      
 105 
     | 
    
         
            +
                defaultValue?: string[];
         
     | 
| 
      
 106 
     | 
    
         
            +
                /** Callback when the input value changes */
         
     | 
| 
      
 107 
     | 
    
         
            +
                onChange?: G.ChangeHandler<string[]>;
         
     | 
| 
      
 108 
     | 
    
         
            +
            };
         
     | 
| 
      
 109 
     | 
    
         
            +
            export type NativeControlledProps = BaseFragment & NativeFragment & NativeControlledFragment;
         
     | 
| 
      
 110 
     | 
    
         
            +
            export type NativeUncontrolledProps = BaseFragment & NativeFragment & NativeUncontrolledFragment;
         
     | 
| 
      
 111 
     | 
    
         
            +
            export type CustomControlledProps = BaseFragment & CustomFragment & CustomControlledFragment;
         
     | 
| 
      
 112 
     | 
    
         
            +
            export type CustomUncontrolledProps = BaseFragment & CustomFragment & CustomUncontrolledFragment;
         
     | 
| 
      
 113 
     | 
    
         
            +
            export type NativeProps = NativeControlledProps | NativeUncontrolledProps;
         
     | 
| 
      
 114 
     | 
    
         
            +
            export type CustomProps = CustomControlledProps | CustomUncontrolledProps;
         
     | 
| 
      
 115 
     | 
    
         
            +
            export type Props = NativeControlledProps | NativeUncontrolledProps | CustomControlledProps | CustomUncontrolledProps;
         
     | 
| 
      
 116 
     | 
    
         
            +
            export type TriggerProps = Pick<CustomControlledProps, "disabled" | "onClick" | "onFocus" | "onBlur" | "inputAttributes" | "startSlot" | "icon" | "size" | "placeholder" | "value" | "name" | "id"> & {
         
     | 
| 
      
 117 
     | 
    
         
            +
                children?: React.ReactNode;
         
     | 
| 
      
 118 
     | 
    
         
            +
            };
         
     | 
| 
      
 119 
     | 
    
         
            +
            export type RootProps = Omit<Props, "children"> & {
         
     | 
| 
      
 120 
     | 
    
         
            +
                children: (props: Omit<Props, "children">) => React.ReactNode;
         
     | 
| 
       76 
121 
     | 
    
         
             
            };
         
     | 
| 
       77 
     | 
    
         
            -
            export type  
     | 
| 
      
 122 
     | 
    
         
            +
            export type SelectContextProps = CustomControlledProps;
         
     | 
| 
       78 
123 
     | 
    
         
             
            export {};
         
     | 
| 
         @@ -0,0 +1,12 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            import { jsx as _jsx } from "react/jsx-runtime";
         
     | 
| 
      
 2 
     | 
    
         
            +
            import SelectCustomControlled from "./SelectCustomControlled.js";
         
     | 
| 
      
 3 
     | 
    
         
            +
            import SelectCustomUncontrolled from "./SelectCustomUncontrolled.js";
         
     | 
| 
      
 4 
     | 
    
         
            +
            const SelectCustom = (props) => {
         
     | 
| 
      
 5 
     | 
    
         
            +
                const { value } = props;
         
     | 
| 
      
 6 
     | 
    
         
            +
                if (value !== undefined) {
         
     | 
| 
      
 7 
     | 
    
         
            +
                    return _jsx(SelectCustomControlled, { ...props });
         
     | 
| 
      
 8 
     | 
    
         
            +
                }
         
     | 
| 
      
 9 
     | 
    
         
            +
                return _jsx(SelectCustomUncontrolled, { ...props });
         
     | 
| 
      
 10 
     | 
    
         
            +
            };
         
     | 
| 
      
 11 
     | 
    
         
            +
            SelectCustom.displayName = "SelectCustom";
         
     | 
| 
      
 12 
     | 
    
         
            +
            export default SelectCustom;
         
     | 
| 
         @@ -0,0 +1,105 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
         
     | 
| 
      
 2 
     | 
    
         
            +
            import React from "react";
         
     | 
| 
      
 3 
     | 
    
         
            +
            import DropdownMenu from "../DropdownMenu/index.js";
         
     | 
| 
      
 4 
     | 
    
         
            +
            import Icon from "../Icon/index.js";
         
     | 
| 
      
 5 
     | 
    
         
            +
            import CheckmarkIcon from "../../icons/Checkmark.js";
         
     | 
| 
      
 6 
     | 
    
         
            +
            import { responsivePropDependency } from "../../utilities/props.js";
         
     | 
| 
      
 7 
     | 
    
         
            +
            import SelectRoot from "./SelectRoot.js";
         
     | 
| 
      
 8 
     | 
    
         
            +
            import SelectTrigger from "./SelectTrigger.js";
         
     | 
| 
      
 9 
     | 
    
         
            +
            import SelectOption from "./SelectOption.js";
         
     | 
| 
      
 10 
     | 
    
         
            +
            import SelectOptionGroup from "./SelectOptionGroup.js";
         
     | 
| 
      
 11 
     | 
    
         
            +
            const SelectCustomControlled = (props) => {
         
     | 
| 
      
 12 
     | 
    
         
            +
                const { children, value, name, placeholder, size, multiple, width = "trigger", position, fallbackPositions, } = props;
         
     | 
| 
      
 13 
     | 
    
         
            +
                const initialFocusRef = React.useRef(null);
         
     | 
| 
      
 14 
     | 
    
         
            +
                const searchStringRef = React.useRef("");
         
     | 
| 
      
 15 
     | 
    
         
            +
                const searchTimeoutRef = React.useRef(null);
         
     | 
| 
      
 16 
     | 
    
         
            +
                const dropdownRef = React.useRef(null);
         
     | 
| 
      
 17 
     | 
    
         
            +
                const indexedOptions = [];
         
     | 
| 
      
 18 
     | 
    
         
            +
                const selectedOptions = [];
         
     | 
| 
      
 19 
     | 
    
         
            +
                const hasValue = multiple ? value.length > 0 : value;
         
     | 
| 
      
 20 
     | 
    
         
            +
                const traverseOptionList = (children) => {
         
     | 
| 
      
 21 
     | 
    
         
            +
                    return React.Children.map(children, (child, index) => {
         
     | 
| 
      
 22 
     | 
    
         
            +
                        if (!React.isValidElement(child))
         
     | 
| 
      
 23 
     | 
    
         
            +
                            return null;
         
     | 
| 
      
 24 
     | 
    
         
            +
                        if (child.type === SelectOption) {
         
     | 
| 
      
 25 
     | 
    
         
            +
                            const component = child;
         
     | 
| 
      
 26 
     | 
    
         
            +
                            const option = component.props;
         
     | 
| 
      
 27 
     | 
    
         
            +
                            const matchingValue = multiple ? value.includes(option.value) : option.value === value;
         
     | 
| 
      
 28 
     | 
    
         
            +
                            const selected = matchingValue || (!placeholder && !value && index === 0);
         
     | 
| 
      
 29 
     | 
    
         
            +
                            if (selected)
         
     | 
| 
      
 30 
     | 
    
         
            +
                                selectedOptions.push(option);
         
     | 
| 
      
 31 
     | 
    
         
            +
                            indexedOptions.push({
         
     | 
| 
      
 32 
     | 
    
         
            +
                                value: option.value,
         
     | 
| 
      
 33 
     | 
    
         
            +
                                text: typeof option.children === "string" ? option.children : option.value,
         
     | 
| 
      
 34 
     | 
    
         
            +
                            });
         
     | 
| 
      
 35 
     | 
    
         
            +
                            return React.cloneElement(component, {
         
     | 
| 
      
 36 
     | 
    
         
            +
                                key: option.value,
         
     | 
| 
      
 37 
     | 
    
         
            +
                                onClick: (e) => {
         
     | 
| 
      
 38 
     | 
    
         
            +
                                    option.onClick?.(e);
         
     | 
| 
      
 39 
     | 
    
         
            +
                                    if (multiple) {
         
     | 
| 
      
 40 
     | 
    
         
            +
                                        const nextValue = selected
         
     | 
| 
      
 41 
     | 
    
         
            +
                                            ? value.filter((v) => v !== option.value)
         
     | 
| 
      
 42 
     | 
    
         
            +
                                            : [...value, option.value];
         
     | 
| 
      
 43 
     | 
    
         
            +
                                        props.onChange?.({ value: nextValue, name });
         
     | 
| 
      
 44 
     | 
    
         
            +
                                    }
         
     | 
| 
      
 45 
     | 
    
         
            +
                                    else {
         
     | 
| 
      
 46 
     | 
    
         
            +
                                        props.onChange?.({ value: option.value, name });
         
     | 
| 
      
 47 
     | 
    
         
            +
                                    }
         
     | 
| 
      
 48 
     | 
    
         
            +
                                },
         
     | 
| 
      
 49 
     | 
    
         
            +
                                startSlot: option?.startSlot || (hasValue && _jsx(Icon, { svg: selected ? CheckmarkIcon : null })),
         
     | 
| 
      
 50 
     | 
    
         
            +
                                attributes: {
         
     | 
| 
      
 51 
     | 
    
         
            +
                                    ...component.props.attributes,
         
     | 
| 
      
 52 
     | 
    
         
            +
                                    ref: selected ? initialFocusRef : undefined,
         
     | 
| 
      
 53 
     | 
    
         
            +
                                },
         
     | 
| 
      
 54 
     | 
    
         
            +
                            });
         
     | 
| 
      
 55 
     | 
    
         
            +
                        }
         
     | 
| 
      
 56 
     | 
    
         
            +
                        if (child.type === SelectOptionGroup) {
         
     | 
| 
      
 57 
     | 
    
         
            +
                            const component = child;
         
     | 
| 
      
 58 
     | 
    
         
            +
                            const optionGroup = component.props;
         
     | 
| 
      
 59 
     | 
    
         
            +
                            return React.cloneElement(component, {
         
     | 
| 
      
 60 
     | 
    
         
            +
                                key: optionGroup.label,
         
     | 
| 
      
 61 
     | 
    
         
            +
                                children: traverseOptionList(optionGroup.children),
         
     | 
| 
      
 62 
     | 
    
         
            +
                            });
         
     | 
| 
      
 63 
     | 
    
         
            +
                        }
         
     | 
| 
      
 64 
     | 
    
         
            +
                        return null;
         
     | 
| 
      
 65 
     | 
    
         
            +
                    });
         
     | 
| 
      
 66 
     | 
    
         
            +
                };
         
     | 
| 
      
 67 
     | 
    
         
            +
                // eslint-disable-next-line react-hooks/refs
         
     | 
| 
      
 68 
     | 
    
         
            +
                const resolvedChildren = traverseOptionList(children);
         
     | 
| 
      
 69 
     | 
    
         
            +
                const handleKeyDown = (e) => {
         
     | 
| 
      
 70 
     | 
    
         
            +
                    const key = e.key;
         
     | 
| 
      
 71 
     | 
    
         
            +
                    // Only handle alphanumeric and space characters for type-ahead
         
     | 
| 
      
 72 
     | 
    
         
            +
                    if (key.length !== 1 || !key.match(/[\w\s]/))
         
     | 
| 
      
 73 
     | 
    
         
            +
                        return;
         
     | 
| 
      
 74 
     | 
    
         
            +
                    if (searchTimeoutRef.current)
         
     | 
| 
      
 75 
     | 
    
         
            +
                        clearTimeout(searchTimeoutRef.current);
         
     | 
| 
      
 76 
     | 
    
         
            +
                    searchStringRef.current += key.toLowerCase();
         
     | 
| 
      
 77 
     | 
    
         
            +
                    const matchingOption = indexedOptions.find((option) => option.text.toLowerCase().startsWith(searchStringRef.current));
         
     | 
| 
      
 78 
     | 
    
         
            +
                    if (matchingOption && dropdownRef.current) {
         
     | 
| 
      
 79 
     | 
    
         
            +
                        const button = dropdownRef.current.querySelector(`[value="${matchingOption.value}"]`);
         
     | 
| 
      
 80 
     | 
    
         
            +
                        button?.focus();
         
     | 
| 
      
 81 
     | 
    
         
            +
                    }
         
     | 
| 
      
 82 
     | 
    
         
            +
                    searchTimeoutRef.current = setTimeout(() => {
         
     | 
| 
      
 83 
     | 
    
         
            +
                        searchStringRef.current = "";
         
     | 
| 
      
 84 
     | 
    
         
            +
                    }, 1000);
         
     | 
| 
      
 85 
     | 
    
         
            +
                };
         
     | 
| 
      
 86 
     | 
    
         
            +
                return (_jsx(SelectRoot, { ...props, children: (props) => {
         
     | 
| 
      
 87 
     | 
    
         
            +
                        return (_jsxs(DropdownMenu, { width: width, disableHideAnimation: true, position: position ?? "bottom", fallbackPositions: fallbackPositions ?? (position ? undefined : ["bottom", "top"]), fallbackAdjustLayout: true, fallbackMinHeight: "150px", borderRadius: responsivePropDependency(size, (size) => size === "large" || size === "xlarge" ? "medium" : "small"), initialFocusRef: initialFocusRef, children: [_jsx(DropdownMenu.Trigger, { children: (attributes) => {
         
     | 
| 
      
 88 
     | 
    
         
            +
                                        const triggerProps = {
         
     | 
| 
      
 89 
     | 
    
         
            +
                                            ...props,
         
     | 
| 
      
 90 
     | 
    
         
            +
                                            inputAttributes: {
         
     | 
| 
      
 91 
     | 
    
         
            +
                                                ...props.inputAttributes,
         
     | 
| 
      
 92 
     | 
    
         
            +
                                                ...attributes,
         
     | 
| 
      
 93 
     | 
    
         
            +
                                            },
         
     | 
| 
      
 94 
     | 
    
         
            +
                                        };
         
     | 
| 
      
 95 
     | 
    
         
            +
                                        return (_jsx(SelectTrigger, { ...triggerProps, value: value, children: selectedOptions?.map((option) => option.children).join(", ") }));
         
     | 
| 
      
 96 
     | 
    
         
            +
                                    } }), _jsx(DropdownMenu.Content, { attributes: {
         
     | 
| 
      
 97 
     | 
    
         
            +
                                        ref: dropdownRef,
         
     | 
| 
      
 98 
     | 
    
         
            +
                                        onKeyDown: handleKeyDown,
         
     | 
| 
      
 99 
     | 
    
         
            +
                                        // Ignore the default menu role since we're using options
         
     | 
| 
      
 100 
     | 
    
         
            +
                                        role: undefined,
         
     | 
| 
      
 101 
     | 
    
         
            +
                                    }, children: resolvedChildren })] }));
         
     | 
| 
      
 102 
     | 
    
         
            +
                    } }));
         
     | 
| 
      
 103 
     | 
    
         
            +
            };
         
     | 
| 
      
 104 
     | 
    
         
            +
            SelectCustomControlled.displayName = "SelectCustomControlled";
         
     | 
| 
      
 105 
     | 
    
         
            +
            export default SelectCustomControlled;
         
     | 
| 
         @@ -0,0 +1,18 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            "use client";
         
     | 
| 
      
 2 
     | 
    
         
            +
            import { jsx as _jsx } from "react/jsx-runtime";
         
     | 
| 
      
 3 
     | 
    
         
            +
            import React from "react";
         
     | 
| 
      
 4 
     | 
    
         
            +
            import SelectCustomControlled from "./SelectCustomControlled.js";
         
     | 
| 
      
 5 
     | 
    
         
            +
            const SelectCustomUncontrolled = (props) => {
         
     | 
| 
      
 6 
     | 
    
         
            +
                const { defaultValue, onChange, multiple, ...controlledProps } = props;
         
     | 
| 
      
 7 
     | 
    
         
            +
                const [value, setValue] = React.useState(defaultValue || (multiple ? [] : ""));
         
     | 
| 
      
 8 
     | 
    
         
            +
                return (
         
     | 
| 
      
 9 
     | 
    
         
            +
                // @ts-expect-error -- avoid complicating the types and implementation
         
     | 
| 
      
 10 
     | 
    
         
            +
                _jsx(SelectCustomControlled, { ...controlledProps, multiple: multiple, value: value, 
         
     | 
| 
      
 11 
     | 
    
         
            +
                    // @ts-expect-error -- avoid complicating the types and implementation
         
     | 
| 
      
 12 
     | 
    
         
            +
                    onChange: (args) => {
         
     | 
| 
      
 13 
     | 
    
         
            +
                        setValue(args.value);
         
     | 
| 
      
 14 
     | 
    
         
            +
                        onChange?.(args);
         
     | 
| 
      
 15 
     | 
    
         
            +
                    } }));
         
     | 
| 
      
 16 
     | 
    
         
            +
            };
         
     | 
| 
      
 17 
     | 
    
         
            +
            SelectCustomUncontrolled.displayName = "SelectCustomUncontrolled";
         
     | 
| 
      
 18 
     | 
    
         
            +
            export default SelectCustomUncontrolled;
         
     | 
| 
         @@ -0,0 +1,12 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            import { jsx as _jsx } from "react/jsx-runtime";
         
     | 
| 
      
 2 
     | 
    
         
            +
            import Icon from "../Icon/index.js";
         
     | 
| 
      
 3 
     | 
    
         
            +
            import { responsivePropDependency } from "../../utilities/props.js";
         
     | 
| 
      
 4 
     | 
    
         
            +
            import IconArrow from "../../icons/ChevronVertical.js";
         
     | 
| 
      
 5 
     | 
    
         
            +
            import s from "./Select.module.css";
         
     | 
| 
      
 6 
     | 
    
         
            +
            const SelectEndContent = (props) => {
         
     | 
| 
      
 7 
     | 
    
         
            +
                const { disabled, size } = props;
         
     | 
| 
      
 8 
     | 
    
         
            +
                return (_jsx("div", { className: s.arrow, children: _jsx(Icon, { svg: IconArrow, color: disabled ? "disabled" : "neutral-faded", size: responsivePropDependency(size, (size) => {
         
     | 
| 
      
 9 
     | 
    
         
            +
                            return size === "large" || size === "xlarge" ? 5 : 4;
         
     | 
| 
      
 10 
     | 
    
         
            +
                        }) }) }));
         
     | 
| 
      
 11 
     | 
    
         
            +
            };
         
     | 
| 
      
 12 
     | 
    
         
            +
            export default SelectEndContent;
         
     | 
| 
         @@ -0,0 +1,29 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            "use client";
         
     | 
| 
      
 2 
     | 
    
         
            +
            import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
         
     | 
| 
      
 3 
     | 
    
         
            +
            import React from "react";
         
     | 
| 
      
 4 
     | 
    
         
            +
            import { classNames } from "../../utilities/props.js";
         
     | 
| 
      
 5 
     | 
    
         
            +
            import SelectStartContent from "./SelectStartContent.js";
         
     | 
| 
      
 6 
     | 
    
         
            +
            import SelectEndContent from "./SelectEndContent.js";
         
     | 
| 
      
 7 
     | 
    
         
            +
            import s from "./Select.module.css";
         
     | 
| 
      
 8 
     | 
    
         
            +
            const SelectNative = (props) => {
         
     | 
| 
      
 9 
     | 
    
         
            +
                const { startSlot, icon, size, inputAttributes, onFocus, onBlur, disabled, name, value, defaultValue, onChange, onClick, placeholder, id, children, } = props;
         
     | 
| 
      
 10 
     | 
    
         
            +
                const [empty, setEmpty] = React.useState(value === undefined ? !defaultValue : !value);
         
     | 
| 
      
 11 
     | 
    
         
            +
                const selectClassNames = classNames(s.input, placeholder && empty && s["input--placeholder"]);
         
     | 
| 
      
 12 
     | 
    
         
            +
                const handleChange = (event) => {
         
     | 
| 
      
 13 
     | 
    
         
            +
                    const nextValue = event.target.value;
         
     | 
| 
      
 14 
     | 
    
         
            +
                    // Uncontrolled placeholder
         
     | 
| 
      
 15 
     | 
    
         
            +
                    if (value === undefined)
         
     | 
| 
      
 16 
     | 
    
         
            +
                        setEmpty(!nextValue);
         
     | 
| 
      
 17 
     | 
    
         
            +
                    if (!onChange)
         
     | 
| 
      
 18 
     | 
    
         
            +
                        return;
         
     | 
| 
      
 19 
     | 
    
         
            +
                    onChange({ name, value: nextValue, event });
         
     | 
| 
      
 20 
     | 
    
         
            +
                };
         
     | 
| 
      
 21 
     | 
    
         
            +
                // Controlled placeholder
         
     | 
| 
      
 22 
     | 
    
         
            +
                React.useEffect(() => {
         
     | 
| 
      
 23 
     | 
    
         
            +
                    if (value === undefined)
         
     | 
| 
      
 24 
     | 
    
         
            +
                        return;
         
     | 
| 
      
 25 
     | 
    
         
            +
                    setEmpty(!value);
         
     | 
| 
      
 26 
     | 
    
         
            +
                }, [value]);
         
     | 
| 
      
 27 
     | 
    
         
            +
                return (_jsxs(_Fragment, { children: [_jsx(SelectStartContent, { startSlot: startSlot, icon: icon, size: size }), _jsxs("select", { ...inputAttributes, onFocus: onFocus || inputAttributes?.onFocus, onBlur: onBlur || inputAttributes?.onBlur, onClick: onClick || inputAttributes?.onClick, className: selectClassNames, disabled: disabled, name: name, value: value, defaultValue: defaultValue, onChange: handleChange, id: id, children: [placeholder && _jsx("option", { value: "", children: placeholder }), children] }), _jsx(SelectEndContent, { disabled: disabled, size: size })] }));
         
     | 
| 
      
 28 
     | 
    
         
            +
            };
         
     | 
| 
      
 29 
     | 
    
         
            +
            export default SelectNative;
         
     | 
| 
         @@ -0,0 +1,13 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            import { jsx as _jsx } from "react/jsx-runtime";
         
     | 
| 
      
 2 
     | 
    
         
            +
            import DropdownMenu from "../DropdownMenu/index.js";
         
     | 
| 
      
 3 
     | 
    
         
            +
            import s from "./Select.module.css";
         
     | 
| 
      
 4 
     | 
    
         
            +
            const SelectOption = (props) => {
         
     | 
| 
      
 5 
     | 
    
         
            +
                const { value, ...menuItemProps } = props;
         
     | 
| 
      
 6 
     | 
    
         
            +
                return (_jsx(DropdownMenu.Item, { ...menuItemProps, className: [menuItemProps.className, s.option], color: "neutral", attributes: {
         
     | 
| 
      
 7 
     | 
    
         
            +
                        ...menuItemProps.attributes,
         
     | 
| 
      
 8 
     | 
    
         
            +
                        value,
         
     | 
| 
      
 9 
     | 
    
         
            +
                        role: "option",
         
     | 
| 
      
 10 
     | 
    
         
            +
                    } }));
         
     | 
| 
      
 11 
     | 
    
         
            +
            };
         
     | 
| 
      
 12 
     | 
    
         
            +
            SelectOption.displayName = "Select.Option";
         
     | 
| 
      
 13 
     | 
    
         
            +
            export default SelectOption;
         
     | 
| 
         @@ -0,0 +1,9 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
         
     | 
| 
      
 2 
     | 
    
         
            +
            import View from "../View/index.js";
         
     | 
| 
      
 3 
     | 
    
         
            +
            import Text from "../Text/index.js";
         
     | 
| 
      
 4 
     | 
    
         
            +
            const SelectOptionGroup = (props) => {
         
     | 
| 
      
 5 
     | 
    
         
            +
                const { label, children } = props;
         
     | 
| 
      
 6 
     | 
    
         
            +
                return (_jsxs(View, { attributes: { role: "group" }, gap: 1, children: [_jsx(View, { paddingInline: 3, paddingTop: 3, children: _jsx(Text, { variant: "caption-1", color: "neutral-faded", children: label }) }), _jsx(View.Item, { children: children })] }));
         
     | 
| 
      
 7 
     | 
    
         
            +
            };
         
     | 
| 
      
 8 
     | 
    
         
            +
            SelectOptionGroup.displayName = "Select.OptionGroup";
         
     | 
| 
      
 9 
     | 
    
         
            +
            export default SelectOptionGroup;
         
     | 
| 
         @@ -0,0 +1,21 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            "use client";
         
     | 
| 
      
 2 
     | 
    
         
            +
            import { jsx as _jsx } from "react/jsx-runtime";
         
     | 
| 
      
 3 
     | 
    
         
            +
            import useElementId from "../../hooks/useElementId.js";
         
     | 
| 
      
 4 
     | 
    
         
            +
            import { useFormControl } from "../FormControl/index.js";
         
     | 
| 
      
 5 
     | 
    
         
            +
            import { classNames, responsiveClassNames } from "../../utilities/props.js";
         
     | 
| 
      
 6 
     | 
    
         
            +
            import s from "./Select.module.css";
         
     | 
| 
      
 7 
     | 
    
         
            +
            const SelectRoot = (passedProps) => {
         
     | 
| 
      
 8 
     | 
    
         
            +
                const formControl = useFormControl();
         
     | 
| 
      
 9 
     | 
    
         
            +
                const internalId = useElementId(passedProps.id);
         
     | 
| 
      
 10 
     | 
    
         
            +
                const props = {
         
     | 
| 
      
 11 
     | 
    
         
            +
                    ...passedProps,
         
     | 
| 
      
 12 
     | 
    
         
            +
                    id: formControl?.attributes?.id || passedProps.inputAttributes?.id || internalId,
         
     | 
| 
      
 13 
     | 
    
         
            +
                    disabled: formControl?.disabled || passedProps.disabled,
         
     | 
| 
      
 14 
     | 
    
         
            +
                    hasError: formControl?.hasError || passedProps.hasError,
         
     | 
| 
      
 15 
     | 
    
         
            +
                    inputAttributes: { ...passedProps.inputAttributes, ...formControl?.attributes },
         
     | 
| 
      
 16 
     | 
    
         
            +
                };
         
     | 
| 
      
 17 
     | 
    
         
            +
                const { children, className, size = "medium", variant = "outline", hasError, disabled, attributes, } = props;
         
     | 
| 
      
 18 
     | 
    
         
            +
                const rootClassName = classNames(s.root, className, size && responsiveClassNames(s, "--size", size), hasError && s["--status-error"], disabled && s["--disabled"], variant && s[`--variant-${variant}`]);
         
     | 
| 
      
 19 
     | 
    
         
            +
                return (_jsx("div", { ...attributes, className: rootClassName, children: children(props) }));
         
     | 
| 
      
 20 
     | 
    
         
            +
            };
         
     | 
| 
      
 21 
     | 
    
         
            +
            export default SelectRoot;
         
     | 
| 
         @@ -0,0 +1,20 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            import { jsx as _jsx } from "react/jsx-runtime";
         
     | 
| 
      
 2 
     | 
    
         
            +
            import Icon from "../Icon/index.js";
         
     | 
| 
      
 3 
     | 
    
         
            +
            import { responsivePropDependency } from "../../utilities/props.js";
         
     | 
| 
      
 4 
     | 
    
         
            +
            import s from "./Select.module.css";
         
     | 
| 
      
 5 
     | 
    
         
            +
            const SelectStartContent = (props) => {
         
     | 
| 
      
 6 
     | 
    
         
            +
                const { startSlot, icon, size } = props;
         
     | 
| 
      
 7 
     | 
    
         
            +
                if (!startSlot && !icon)
         
     | 
| 
      
 8 
     | 
    
         
            +
                    return null;
         
     | 
| 
      
 9 
     | 
    
         
            +
                if (icon) {
         
     | 
| 
      
 10 
     | 
    
         
            +
                    return (_jsx("div", { className: s.slot, children: _jsx(Icon, { size: responsivePropDependency(size, (size) => {
         
     | 
| 
      
 11 
     | 
    
         
            +
                                if (size === "large")
         
     | 
| 
      
 12 
     | 
    
         
            +
                                    return 5;
         
     | 
| 
      
 13 
     | 
    
         
            +
                                if (size === "xlarge")
         
     | 
| 
      
 14 
     | 
    
         
            +
                                    return 6;
         
     | 
| 
      
 15 
     | 
    
         
            +
                                return 4;
         
     | 
| 
      
 16 
     | 
    
         
            +
                            }), svg: icon }) }));
         
     | 
| 
      
 17 
     | 
    
         
            +
                }
         
     | 
| 
      
 18 
     | 
    
         
            +
                return _jsx("div", { className: s.slot, children: startSlot });
         
     | 
| 
      
 19 
     | 
    
         
            +
            };
         
     | 
| 
      
 20 
     | 
    
         
            +
            export default SelectStartContent;
         
     | 
| 
         @@ -0,0 +1,16 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            "use client";
         
     | 
| 
      
 2 
     | 
    
         
            +
            import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
         
     | 
| 
      
 3 
     | 
    
         
            +
            import Actionable from "../Actionable/index.js";
         
     | 
| 
      
 4 
     | 
    
         
            +
            import Text from "../Text/index.js";
         
     | 
| 
      
 5 
     | 
    
         
            +
            import SelectStartContent from "./SelectStartContent.js";
         
     | 
| 
      
 6 
     | 
    
         
            +
            import s from "./Select.module.css";
         
     | 
| 
      
 7 
     | 
    
         
            +
            import SelectEndContent from "./SelectEndContent.js";
         
     | 
| 
      
 8 
     | 
    
         
            +
            const SelectTrigger = (props) => {
         
     | 
| 
      
 9 
     | 
    
         
            +
                const { children, disabled, onClick, onFocus, onBlur, inputAttributes, startSlot, icon, size, placeholder, value, name, id, } = props;
         
     | 
| 
      
 10 
     | 
    
         
            +
                return (_jsxs(_Fragment, { children: [_jsxs(Actionable, { className: s.input, disabled: disabled, disableFocusRing: true, onClick: onClick, attributes: {
         
     | 
| 
      
 11 
     | 
    
         
            +
                                onFocus: onFocus || inputAttributes?.onFocus,
         
     | 
| 
      
 12 
     | 
    
         
            +
                                onBlur: onBlur || inputAttributes?.onBlur,
         
     | 
| 
      
 13 
     | 
    
         
            +
                                ...inputAttributes,
         
     | 
| 
      
 14 
     | 
    
         
            +
                            }, children: [_jsx(SelectStartContent, { startSlot: startSlot, icon: icon, size: size }), children ? _jsx(Text, { maxLines: 1, children: children }) : null, placeholder && !children ? _jsx(Text, { color: "disabled", children: placeholder }) : null, _jsx(SelectEndContent, { disabled: disabled, size: size })] }), _jsx("input", { type: "hidden", value: typeof value === "string" ? value : JSON.stringify(value), name: name, id: id })] }));
         
     | 
| 
      
 15 
     | 
    
         
            +
            };
         
     | 
| 
      
 16 
     | 
    
         
            +
            export default SelectTrigger;
         
     | 
| 
         @@ -1,6 +1,13 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            import React from "react";
         
     | 
| 
      
 2 
     | 
    
         
            +
            import { Mock } from "storybook/test";
         
     | 
| 
      
 3 
     | 
    
         
            +
            import { StoryObj } from "@storybook/react-vite";
         
     | 
| 
       1 
4 
     | 
    
         
             
            declare const _default: {
         
     | 
| 
       2 
5 
     | 
    
         
             
                title: string;
         
     | 
| 
       3 
     | 
    
         
            -
                component:  
     | 
| 
      
 6 
     | 
    
         
            +
                component: React.FC<import("../Select.types").NativeProps> & {
         
     | 
| 
      
 7 
     | 
    
         
            +
                    Custom: React.FC<import("../Select.types").CustomProps>;
         
     | 
| 
      
 8 
     | 
    
         
            +
                    Option: React.FC<import("../Select.types").OptionProps>;
         
     | 
| 
      
 9 
     | 
    
         
            +
                    OptionGroup: React.FC<import("../Select.types").OptionGroupProps>;
         
     | 
| 
      
 10 
     | 
    
         
            +
                };
         
     | 
| 
       4 
11 
     | 
    
         
             
                parameters: {
         
     | 
| 
       5 
12 
     | 
    
         
             
                    iframe: {
         
     | 
| 
       6 
13 
     | 
    
         
             
                        url: string;
         
     | 
| 
         @@ -8,12 +15,33 @@ declare const _default: { 
     | 
|
| 
       8 
15 
     | 
    
         
             
                };
         
     | 
| 
       9 
16 
     | 
    
         
             
            };
         
     | 
| 
       10 
17 
     | 
    
         
             
            export default _default;
         
     | 
| 
       11 
     | 
    
         
            -
            export declare const  
     | 
| 
       12 
     | 
    
         
            -
            export declare const  
     | 
| 
       13 
     | 
    
         
            -
            export declare const  
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
      
 18 
     | 
    
         
            +
            export declare const nativeRender: StoryObj;
         
     | 
| 
      
 19 
     | 
    
         
            +
            export declare const customRender: StoryObj;
         
     | 
| 
      
 20 
     | 
    
         
            +
            export declare const nativeHandlers: StoryObj<{
         
     | 
| 
      
 21 
     | 
    
         
            +
                handleChange: Mock;
         
     | 
| 
      
 22 
     | 
    
         
            +
                handleControlledChange: Mock;
         
     | 
| 
      
 23 
     | 
    
         
            +
                handleFocus: Mock;
         
     | 
| 
      
 24 
     | 
    
         
            +
                handleBlur: Mock;
         
     | 
| 
      
 25 
     | 
    
         
            +
                handleClick: Mock;
         
     | 
| 
      
 26 
     | 
    
         
            +
            }>;
         
     | 
| 
      
 27 
     | 
    
         
            +
            export declare const customHandlers: StoryObj<{
         
     | 
| 
      
 28 
     | 
    
         
            +
                handleChange: Mock;
         
     | 
| 
      
 29 
     | 
    
         
            +
                handleControlledChange: Mock;
         
     | 
| 
      
 30 
     | 
    
         
            +
                handleFocus: Mock;
         
     | 
| 
      
 31 
     | 
    
         
            +
                handleBlur: Mock;
         
     | 
| 
      
 32 
     | 
    
         
            +
                handleClick: Mock;
         
     | 
| 
      
 33 
     | 
    
         
            +
            }>;
         
     | 
| 
      
 34 
     | 
    
         
            +
            export declare const triggerOnly: StoryObj<{
         
     | 
| 
      
 35 
     | 
    
         
            +
                handleClick: Mock;
         
     | 
| 
      
 36 
     | 
    
         
            +
            }>;
         
     | 
| 
      
 37 
     | 
    
         
            +
            export declare const multiple: StoryObj<{
         
     | 
| 
      
 38 
     | 
    
         
            +
                handleChange: Mock;
         
     | 
| 
      
 39 
     | 
    
         
            +
            }>;
         
     | 
| 
      
 40 
     | 
    
         
            +
            export declare const variant: StoryObj;
         
     | 
| 
      
 41 
     | 
    
         
            +
            export declare const size: StoryObj;
         
     | 
| 
      
 42 
     | 
    
         
            +
            export declare const startSlot: StoryObj;
         
     | 
| 
      
 43 
     | 
    
         
            +
            export declare const error: StoryObj;
         
     | 
| 
      
 44 
     | 
    
         
            +
            export declare const disabled: StoryObj;
         
     | 
| 
      
 45 
     | 
    
         
            +
            export declare const className: StoryObj;
         
     | 
| 
      
 46 
     | 
    
         
            +
            export declare const fallback: StoryObj;
         
     | 
| 
      
 47 
     | 
    
         
            +
            export declare const formControl: StoryObj;
         
     |