reshaped 3.5.3 → 3.6.0-canary.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/CHANGELOG.md +11 -21
  2. package/dist/bundle.css +1 -1
  3. package/dist/bundle.d.ts +36 -31
  4. package/dist/bundle.js +10 -10
  5. package/dist/components/Autocomplete/tests/Autocomplete.stories.js +0 -1
  6. package/dist/components/Button/Button.types.d.ts +1 -1
  7. package/dist/components/Card/Card.d.ts +1 -1
  8. package/dist/components/Checkbox/Checkbox.module.css +1 -1
  9. package/dist/components/DropdownMenu/DropdownMenu.js +1 -1
  10. package/dist/components/DropdownMenu/DropdownMenu.types.d.ts +1 -1
  11. package/dist/components/DropdownMenu/tests/DropdownMenu.stories.d.ts +1 -1
  12. package/dist/components/DropdownMenu/tests/DropdownMenu.test.stories.d.ts +1 -1
  13. package/dist/components/Flyout/Flyout.constants.d.ts +6 -0
  14. package/dist/components/Flyout/Flyout.constants.js +19 -0
  15. package/dist/components/{_private/Flyout → Flyout}/Flyout.types.d.ts +3 -3
  16. package/dist/components/{_private/Flyout → Flyout}/FlyoutContent.js +25 -20
  17. package/dist/components/{_private/Flyout → Flyout}/FlyoutControlled.js +9 -9
  18. package/dist/components/{_private/Flyout → Flyout}/tests/Flyout.stories.d.ts +6 -4
  19. package/dist/components/{_private/Flyout → Flyout}/tests/Flyout.stories.js +128 -118
  20. package/dist/components/{_private/Flyout → Flyout}/useFlyout.d.ts +1 -1
  21. package/dist/components/Flyout/useFlyout.js +116 -0
  22. package/dist/components/Flyout/utilities/calculatePosition.d.ts +30 -0
  23. package/dist/components/Flyout/utilities/calculatePosition.js +129 -0
  24. package/dist/components/Flyout/utilities/flyout.d.ts +11 -0
  25. package/dist/components/Flyout/utilities/flyout.js +79 -0
  26. package/dist/components/Flyout/utilities/isFullyVisible.d.ts +10 -0
  27. package/dist/components/Flyout/utilities/isFullyVisible.js +24 -0
  28. package/dist/components/Link/Link.d.ts +1 -1
  29. package/dist/components/Popover/Popover.d.ts +1 -1
  30. package/dist/components/Popover/Popover.js +1 -1
  31. package/dist/components/Popover/Popover.types.d.ts +2 -1
  32. package/dist/components/Popover/tests/Popover.stories.d.ts +2 -2
  33. package/dist/components/Popover/tests/Popover.test.stories.d.ts +2 -2
  34. package/dist/components/Radio/Radio.module.css +1 -1
  35. package/dist/components/ScrollArea/ScrollArea.js +6 -3
  36. package/dist/components/ScrollArea/tests/ScrollArea.stories.d.ts +4 -13
  37. package/dist/components/ScrollArea/tests/ScrollArea.stories.js +30 -129
  38. package/dist/components/ScrollArea/tests/ScrollArea.test.stories.d.ts +23 -0
  39. package/dist/components/ScrollArea/tests/ScrollArea.test.stories.js +66 -0
  40. package/dist/components/Tabs/TabsContext.d.ts +2 -2
  41. package/dist/components/Tooltip/Tooltip.js +1 -1
  42. package/dist/components/Tooltip/Tooltip.types.d.ts +1 -1
  43. package/dist/config/tailwind.d.ts +1 -1
  44. package/dist/hooks/useIsomorphicLayoutEffect.d.ts +1 -1
  45. package/dist/index.d.ts +36 -31
  46. package/dist/index.js +20 -16
  47. package/dist/utilities/dom/find.d.ts +6 -9
  48. package/dist/utilities/dom/find.js +17 -15
  49. package/dist/utilities/dom/index.d.ts +1 -1
  50. package/dist/utilities/dom/index.js +1 -1
  51. package/dist/utilities/scroll/lock.js +4 -3
  52. package/package.json +10 -9
  53. package/CHANGELOG-old.md +0 -14
  54. package/dist/components/_private/Flyout/Flyout.constants.d.ts +0 -3
  55. package/dist/components/_private/Flyout/Flyout.constants.js +0 -3
  56. package/dist/components/_private/Flyout/useFlyout.js +0 -211
  57. package/dist/components/_private/Flyout/utilities/calculatePosition.d.ts +0 -19
  58. package/dist/components/_private/Flyout/utilities/calculatePosition.js +0 -102
  59. package/dist/components/_private/Flyout/utilities/isFullyVisible.d.ts +0 -8
  60. package/dist/components/_private/Flyout/utilities/isFullyVisible.js +0 -16
  61. /package/dist/components/{_private/Flyout → Flyout}/Flyout.context.d.ts +0 -0
  62. /package/dist/components/{_private/Flyout → Flyout}/Flyout.context.js +0 -0
  63. /package/dist/components/{_private/Flyout → Flyout}/Flyout.d.ts +0 -0
  64. /package/dist/components/{_private/Flyout → Flyout}/Flyout.js +0 -0
  65. /package/dist/components/{_private/Flyout → Flyout}/Flyout.module.css +0 -0
  66. /package/dist/components/{_private/Flyout → Flyout}/Flyout.types.js +0 -0
  67. /package/dist/components/{_private/Flyout → Flyout}/FlyoutContent.d.ts +0 -0
  68. /package/dist/components/{_private/Flyout → Flyout}/FlyoutControlled.d.ts +0 -0
  69. /package/dist/components/{_private/Flyout → Flyout}/FlyoutTrigger.d.ts +0 -0
  70. /package/dist/components/{_private/Flyout → Flyout}/FlyoutTrigger.js +0 -0
  71. /package/dist/components/{_private/Flyout → Flyout}/FlyoutUncontrolled.d.ts +0 -0
  72. /package/dist/components/{_private/Flyout → Flyout}/FlyoutUncontrolled.js +0 -0
  73. /package/dist/components/{_private/Flyout → Flyout}/index.d.ts +0 -0
  74. /package/dist/components/{_private/Flyout → Flyout}/index.js +0 -0
  75. /package/dist/components/{_private/Flyout → Flyout}/utilities/cooldown.d.ts +0 -0
  76. /package/dist/components/{_private/Flyout → Flyout}/utilities/cooldown.js +0 -0
  77. /package/dist/components/{_private/Flyout → Flyout}/utilities/getPositionFallbacks.d.ts +0 -0
  78. /package/dist/components/{_private/Flyout → Flyout}/utilities/getPositionFallbacks.js +0 -0
@@ -56,7 +56,6 @@ export const active = {
56
56
  expect(args.handleClose).toHaveBeenCalledTimes(1);
57
57
  expect(args.handleClose).toHaveBeenLastCalledWith();
58
58
  });
59
- await sleep(500);
60
59
  await userEvent.click(input);
61
60
  await waitFor(() => {
62
61
  expect(args.handleOpen).toHaveBeenCalledTimes(1);
@@ -24,7 +24,7 @@ export type GroupProps = {
24
24
  };
25
25
  export type AlignerProps = BaseAlignerProps & {
26
26
  /**
27
- * @deprecated The method should not be used
27
+ * @deprecated use `side` instead, will be remove in v4
28
28
  */
29
29
  position?: BaseAlignerProps["side"];
30
30
  };
@@ -9,7 +9,7 @@ declare const Card: React.ForwardRefExoticComponent<{
9
9
  href?: string;
10
10
  as?: keyof React.JSX.IntrinsicElements | undefined;
11
11
  className?: import("../../types/global").ClassName;
12
- attributes?: (import("../../types/global").Attributes<keyof React.JSX.IntrinsicElements> & ((import("../../types/global").Attributes<"button"> & Omit<React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, "form" | "slot" | "style" | "title" | "disabled" | "className" | "color" | "hidden" | "content" | "ref" | "children" | "onToggle" | "value" | "type" | "key" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "name" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "autoCapitalize" | "autoFocus" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "enterKeyHint" | "id" | "lang" | "nonce" | "spellCheck" | "tabIndex" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "rel" | "resource" | "rev" | "typeof" | "vocab" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "popover" | "popoverTargetAction" | "popoverTarget" | "inert" | "inputMode" | "is" | "exportparts" | "part" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-braillelabel" | "aria-brailleroledescription" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colindextext" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-description" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowindextext" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onResize" | "onResizeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerLeave" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onScrollEnd" | "onScrollEndCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onBeforeToggle" | "onTransitionCancel" | "onTransitionCancelCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "onTransitionRun" | "onTransitionRunCapture" | "onTransitionStart" | "onTransitionStartCapture"> & {
12
+ attributes?: (import("../../types/global").Attributes<keyof React.JSX.IntrinsicElements> & ((import("../../types/global").Attributes<"button"> & Omit<React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, "form" | "slot" | "style" | "title" | "disabled" | "color" | "children" | "className" | "hidden" | "content" | "ref" | "aria-orientation" | "role" | "suppressHydrationWarning" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "value" | "dir" | "name" | "key" | "type" | "accessKey" | "autoCapitalize" | "autoFocus" | "contentEditable" | "contextMenu" | "draggable" | "enterKeyHint" | "id" | "lang" | "nonce" | "spellCheck" | "tabIndex" | "translate" | "radioGroup" | "about" | "datatype" | "inlist" | "prefix" | "property" | "rel" | "resource" | "rev" | "typeof" | "vocab" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "popover" | "popoverTargetAction" | "popoverTarget" | "inert" | "inputMode" | "is" | "exportparts" | "part" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-braillelabel" | "aria-brailleroledescription" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colindextext" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-description" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowindextext" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onResize" | "onResizeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerLeave" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onScrollEnd" | "onScrollEndCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onToggle" | "onBeforeToggle" | "onTransitionCancel" | "onTransitionCancelCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "onTransitionRun" | "onTransitionRunCapture" | "onTransitionStart" | "onTransitionStartCapture"> & {
13
13
  ref?: React.RefObject<HTMLButtonElement | HTMLAnchorElement | null>;
14
14
  }) | undefined)) | undefined;
15
15
  } & Pick<import("../View").ViewProps, "height"> & React.RefAttributes<HTMLElement>>;
@@ -1 +1 @@
1
- .root{align-items:center;cursor:pointer;display:inline-flex;gap:var(--rs-checkbox-gap);user-select:none;vertical-align:top;-webkit-tap-highlight-color:transparent}.root:hover .decorator{background:var(--rs-color-background-neutral-faded)}.field{position:relative}.decorator{background:var(--rs-color-background-elevation-base);border:1px solid var(--rs-color-border-neutral);border-radius:var(--rs-radius-small);color:var(--rs-color-on-background-primary);height:var(--rs-checkbox-line-height);transition:var(--rs-duration-fast) var(--rs-easing-standard);transition-property:background-color,border-color;width:var(--rs-checkbox-line-height)}.decorator:before{background:var(--rs-color-on-background-primary);border-radius:999px;content:"";height:1.5px;left:50%;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%) scale(0);transition:var(--rs-duration-fast) var(--rs-easing-standard);transition-property:opacity,transform;width:calc(var(--rs-checkbox-line-height) * .5)}.--size-small{--rs-checkbox-line-height:var(--rs-line-height-caption-1);--rs-checkbox-gap:var(--rs-unit-x1)}.--size-medium{--rs-checkbox-line-height:var(--rs-line-height-body-3);--rs-checkbox-gap:var(--rs-unit-x2)}.--size-large{--rs-checkbox-line-height:var(--rs-line-height-body-2);--rs-checkbox-gap:var(--rs-unit-x2)}.icon{left:50%;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%) scale(0);transition:var(--rs-duration-fast) var(--rs-easing-standard);transition-property:opacity,transform}[data-rs-keyboard] .input:focus-visible+.decorator{box-shadow:var(--rs-focus-shadow)}.root.--error .decorator{border-color:var(--rs-color-border-critical)}.input:checked+.decorator,.input:indeterminate+.decorator{background:var(--rs-color-background-primary);border-color:var(--rs-color-background-primary)}.input:checked+.decorator .icon,.input:indeterminate+.decorator:before{opacity:1;transform:translate(-50%,-50%) scale(1)}.root.--disabled{color:var(--rs-color-foreground-disabled);cursor:not-allowed}.root.--disabled .decorator{background:var(--rs-color-background-disabled-faded);border-color:var(--rs-color-border-disabled);color:var(--rs-color-foreground-disabled)}.root.--disabled .input:checked+.decorator,.root.--disabled .input:indeterminate+.decorator{background:var(--rs-color-background-disabled);border-color:transparent}.root.--disabled .input:checked+.decorator:before,.root.--disabled .input:indeterminate+.decorator:before{background-color:var(--rs-color-foreground-disabled)}@media (--rs-viewport-m ){.--size-small--m{--rs-checkbox-line-height:var(--rs-line-height-caption-1);--rs-checkbox-gap:var(--rs-unit-x1)}.--size-medium--m{--rs-checkbox-line-height:var(--rs-line-height-body-3);--rs-checkbox-gap:var(--rs-unit-x2)}.--size-large--m{--rs-checkbox-line-height:var(--rs-line-height-body-2);--rs-checkbox-gap:var(--rs-unit-x2)}}@media (--rs-viewport-l ){.--size-small--l{--rs-checkbox-line-height:var(--rs-line-height-caption-1);--rs-checkbox-gap:var(--rs-unit-x1)}.--size-medium--l{--rs-checkbox-line-height:var(--rs-line-height-body-3);--rs-checkbox-gap:var(--rs-unit-x2)}.--size-large--l{--rs-checkbox-line-height:var(--rs-line-height-body-2);--rs-checkbox-gap:var(--rs-unit-x2)}}@media (--rs-viewport-xl ){.--size-small--xl{--rs-checkbox-line-height:var(--rs-line-height-caption-1);--rs-checkbox-gap:var(--rs-unit-x1)}.--size-medium--xl{--rs-checkbox-line-height:var(--rs-line-height-body-3);--rs-checkbox-gap:var(--rs-unit-x2)}.--size-large--xl{--rs-checkbox-line-height:var(--rs-line-height-body-2);--rs-checkbox-gap:var(--rs-unit-x2)}}
1
+ @layer rs.checkbox.base;@layer rs.checkbox.error;@layer rs.checkbox.checked;@layer rs.checkbox.disabled;@layer rs.checkbox.base{.root{align-items:center;cursor:pointer;display:inline-flex;gap:var(--rs-checkbox-gap);user-select:none;vertical-align:top;-webkit-tap-highlight-color:transparent}.root:hover .decorator{background:var(--rs-color-background-neutral-faded)}.field{position:relative}.decorator{background:var(--rs-color-background-elevation-base);border:1px solid var(--rs-color-border-neutral);border-radius:var(--rs-radius-small);color:var(--rs-color-on-background-primary);height:var(--rs-checkbox-line-height);transition:var(--rs-duration-fast) var(--rs-easing-standard);transition-property:background-color,border-color;width:var(--rs-checkbox-line-height)}.decorator:before{background:var(--rs-color-on-background-primary);border-radius:999px;content:"";height:1.5px;left:50%;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%) scale(0);transition:var(--rs-duration-fast) var(--rs-easing-standard);transition-property:opacity,transform;width:calc(var(--rs-checkbox-line-height) * .5)}.--size-small{--rs-checkbox-line-height:var(--rs-line-height-caption-1);--rs-checkbox-gap:var(--rs-unit-x1)}.--size-medium{--rs-checkbox-line-height:var(--rs-line-height-body-3);--rs-checkbox-gap:var(--rs-unit-x2)}.--size-large{--rs-checkbox-line-height:var(--rs-line-height-body-2);--rs-checkbox-gap:var(--rs-unit-x2)}.icon{left:50%;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%) scale(0);transition:var(--rs-duration-fast) var(--rs-easing-standard);transition-property:opacity,transform}[data-rs-keyboard] .input:focus-visible+.decorator{box-shadow:var(--rs-focus-shadow)}}@layer rs.checkbox.error{.root.--error .decorator{border-color:var(--rs-color-border-critical)}}@layer rs.checkbox.checked{.input:checked+.decorator,.input:indeterminate+.decorator{background:var(--rs-color-background-primary);border-color:var(--rs-color-background-primary)}.input:checked+.decorator .icon,.input:indeterminate+.decorator:before{opacity:1;transform:translate(-50%,-50%) scale(1)}}@layer rs.checkbox.disabled{.root.--disabled{color:var(--rs-color-foreground-disabled);cursor:not-allowed}.root.--disabled .decorator{background:var(--rs-color-background-disabled-faded);border-color:var(--rs-color-border-disabled);color:var(--rs-color-foreground-disabled)}.root.--disabled .input:checked+.decorator,.root.--disabled .input:indeterminate+.decorator{background:var(--rs-color-background-disabled);border-color:transparent}.root.--disabled .input:checked+.decorator:before,.root.--disabled .input:indeterminate+.decorator:before{background-color:var(--rs-color-foreground-disabled)}}@media (--rs-viewport-m ){.--size-small--m{--rs-checkbox-line-height:var(--rs-line-height-caption-1);--rs-checkbox-gap:var(--rs-unit-x1)}.--size-medium--m{--rs-checkbox-line-height:var(--rs-line-height-body-3);--rs-checkbox-gap:var(--rs-unit-x2)}.--size-large--m{--rs-checkbox-line-height:var(--rs-line-height-body-2);--rs-checkbox-gap:var(--rs-unit-x2)}}@media (--rs-viewport-l ){.--size-small--l{--rs-checkbox-line-height:var(--rs-line-height-caption-1);--rs-checkbox-gap:var(--rs-unit-x1)}.--size-medium--l{--rs-checkbox-line-height:var(--rs-line-height-body-3);--rs-checkbox-gap:var(--rs-unit-x2)}.--size-large--l{--rs-checkbox-line-height:var(--rs-line-height-body-2);--rs-checkbox-gap:var(--rs-unit-x2)}}@media (--rs-viewport-xl ){.--size-small--xl{--rs-checkbox-line-height:var(--rs-line-height-caption-1);--rs-checkbox-gap:var(--rs-unit-x1)}.--size-medium--xl{--rs-checkbox-line-height:var(--rs-line-height-body-3);--rs-checkbox-gap:var(--rs-unit-x2)}.--size-large--xl{--rs-checkbox-line-height:var(--rs-line-height-body-2);--rs-checkbox-gap:var(--rs-unit-x2)}}
@@ -4,7 +4,7 @@ import React from "react";
4
4
  import Popover from "../Popover/index.js";
5
5
  import MenuItem from "../MenuItem/index.js";
6
6
  import Icon from "../Icon/index.js";
7
- import { useFlyoutContext } from "../_private/Flyout/index.js";
7
+ import { useFlyoutContext } from "../Flyout/index.js";
8
8
  import IconChevronRight from "../../icons/ChevronRight.js";
9
9
  import useHotkeys from "../../hooks/useHotkeys.js";
10
10
  import useRTL from "../../hooks/useRTL.js";
@@ -1,7 +1,7 @@
1
1
  import type React from "react";
2
2
  import type { PopoverProps, PopoverInstance } from "../Popover";
3
3
  import type { MenuItemProps } from "../MenuItem";
4
- import type { FlyoutContentProps } from "../_private/Flyout";
4
+ import type { FlyoutContentProps } from "../Flyout";
5
5
  export type Instance = PopoverInstance;
6
6
  export type Props = Pick<PopoverProps, "children" | "position" | "forcePosition" | "fallbackPositions" | "triggerType" | "contentGap" | "contentShift" | "onOpen" | "onClose" | "active" | "defaultActive" | "width" | "disableHideAnimation" | "disableCloseOnOutsideClick" | "instanceRef" | "containerRef" | "originCoordinates"> & {
7
7
  trapFocusMode?: Extract<PopoverProps["trapFocusMode"], "action-menu" | "selection-menu">;
@@ -2,7 +2,7 @@ declare const _default: {
2
2
  title: string;
3
3
  component: import("react").FC<import("./..").DropdownMenuProps> & {
4
4
  Dismissible: import("react").FC<import("../../Dismissible").DismissibleProps>;
5
- Trigger: import("react").FC<import("../../_private/Flyout").FlyoutTriggerProps>;
5
+ Trigger: import("react").FC<import("../../Flyout").FlyoutTriggerProps>;
6
6
  Content: import("react").FC<import("../DropdownMenu.types").ContentProps>;
7
7
  Section: import("react").FC<import("../DropdownMenu.types").SectionProps>;
8
8
  Item: import("react").FC<import("../DropdownMenu.types").ItemProps>;
@@ -4,7 +4,7 @@ declare const _default: {
4
4
  title: string;
5
5
  component: import("react").FC<import("./..").DropdownMenuProps> & {
6
6
  Dismissible: import("react").FC<import("../../Dismissible").DismissibleProps>;
7
- Trigger: import("react").FC<import("../../_private/Flyout").FlyoutTriggerProps>;
7
+ Trigger: import("react").FC<import("../../Flyout").FlyoutTriggerProps>;
8
8
  Content: import("react").FC<import("../DropdownMenu.types").ContentProps>;
9
9
  Section: import("react").FC<import("../DropdownMenu.types").SectionProps>;
10
10
  Item: import("react").FC<import("../DropdownMenu.types").ItemProps>;
@@ -0,0 +1,6 @@
1
+ import type * as T from "./Flyout.types";
2
+ export declare const mouseEnter = 800;
3
+ export declare const mouseEnterShort = 100;
4
+ export declare const mouseLeave = 150;
5
+ export declare const defaultStyles: T.Styles;
6
+ export declare const resetStyles: T.Styles;
@@ -0,0 +1,19 @@
1
+ export const mouseEnter = 800;
2
+ export const mouseEnterShort = 100;
3
+ export const mouseLeave = 150;
4
+ export const defaultStyles = {
5
+ left: 0,
6
+ top: 0,
7
+ width: "auto",
8
+ height: "auto",
9
+ zIndex: "var(--rs-z-index-flyout)",
10
+ };
11
+ export const resetStyles = {
12
+ left: 0,
13
+ top: 0,
14
+ position: "absolute",
15
+ visibility: "hidden",
16
+ animation: "none",
17
+ transition: "none",
18
+ zIndex: "var(--rs-z-index-flyout)",
19
+ };
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
- import type * as G from "../../../types/global";
3
- import type { TrapMode } from "../../../utilities/a11y";
2
+ import type * as G from "../../types/global";
3
+ import type { TrapMode } from "../../utilities/a11y";
4
4
  /**
5
5
  * Utility
6
6
  */
@@ -82,7 +82,7 @@ type BaseProps = {
82
82
  groupTimeouts?: boolean;
83
83
  position?: Position;
84
84
  /**
85
- * @deprecated Use fallbackPosition={false} instead
85
+ * @deprecated Use fallbackPosition={false} instead, will be removed in v4
86
86
  */
87
87
  forcePosition?: boolean;
88
88
  fallbackPositions?: Position[] | false;
@@ -1,30 +1,33 @@
1
1
  "use client";
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import React from "react";
4
- import { classNames, throttleHandler } from "../../../utilities/helpers.js";
5
- import useIsomorphicLayoutEffect from "../../../hooks/useIsomorphicLayoutEffect.js";
6
- import Portal from "../Portal/index.js";
7
- import { findClosestRenderContainer } from "../../../utilities/dom/index.js";
4
+ import { classNames, throttleHandler } from "../../utilities/helpers.js";
5
+ import useIsomorphicLayoutEffect from "../../hooks/useIsomorphicLayoutEffect.js";
6
+ import Portal from "../_private/Portal/index.js";
7
+ import { findClosestPositionContainer, findClosestScrollableContainer } from "../../utilities/dom/index.js";
8
8
  import cooldown from "./utilities/cooldown.js";
9
9
  import { useFlyoutContext, ContentProvider } from "./Flyout.context.js";
10
10
  import s from "./Flyout.module.css";
11
11
  const FlyoutContent = (props) => {
12
12
  const { children, className, attributes } = props;
13
- const { flyout, id, flyoutElRef, triggerElRef, handleClose, handleTransitionEnd, handleTransitionStart, triggerType, handleMouseEnter, handleMouseLeave, handleContentMouseDown, handleContentMouseUp, contentGap, contentClassName, contentAttributes, trapFocusMode, disableContentHover, width, containerRef, isSubmenu, } = useFlyoutContext();
13
+ const { flyout, id, flyoutElRef, triggerElRef, handleClose, handleTransitionEnd, handleTransitionStart, triggerType, handleMouseEnter, handleMouseLeave, handleContentMouseDown, handleContentMouseUp, contentGap, contentClassName, contentAttributes, trapFocusMode, disableContentHover, width, containerRef: passedContainerRef, isSubmenu, } = useFlyoutContext();
14
14
  const { styles, status, position } = flyout;
15
15
  const [mounted, setMounted] = React.useState(false);
16
- const closestContainer = React.useMemo(() => {
16
+ const closestFixedContainer = React.useMemo(() => {
17
+ if (!mounted)
18
+ return null;
19
+ if (!triggerElRef)
20
+ return null;
21
+ return findClosestPositionContainer({ el: triggerElRef.current });
22
+ }, [mounted, triggerElRef]);
23
+ const closestScrollableContainer = React.useMemo(() => {
17
24
  if (!mounted)
18
25
  return;
19
26
  if (!triggerElRef)
20
27
  return;
21
- return findClosestRenderContainer({ el: triggerElRef.current });
28
+ return findClosestScrollableContainer({ el: triggerElRef.current });
22
29
  }, [mounted, triggerElRef]);
23
- const scrollableRef = (mounted && closestContainer?.el === document.body) ||
24
- !closestContainer?.el ||
25
- closestContainer.scrollable
26
- ? undefined
27
- : { current: closestContainer.el };
30
+ const containerRef = passedContainerRef || { current: closestFixedContainer };
28
31
  useIsomorphicLayoutEffect(() => {
29
32
  setMounted(true);
30
33
  }, []);
@@ -39,10 +42,12 @@ const FlyoutContent = (props) => {
39
42
  return () => el.removeEventListener("transitionstart", handleTransitionStart);
40
43
  }, [handleTransitionStart, flyoutElRef, status]);
41
44
  React.useEffect(() => {
42
- if (!closestContainer?.scrollable)
45
+ if (closestScrollableContainer === document.body)
46
+ return;
47
+ if (!closestScrollableContainer)
43
48
  return;
44
49
  const triggerEl = triggerElRef?.current;
45
- const containerEl = closestContainer.el;
50
+ const containerEl = closestScrollableContainer;
46
51
  const handleScroll = throttleHandler(() => {
47
52
  const triggerBounds = triggerEl?.getBoundingClientRect();
48
53
  const containerBounds = containerEl.getBoundingClientRect();
@@ -57,12 +62,12 @@ const FlyoutContent = (props) => {
57
62
  flyout.updatePosition({ sync: true });
58
63
  }
59
64
  }, 16);
60
- closestContainer.el.addEventListener("scroll", handleScroll, { passive: true });
61
- return () => closestContainer.el.removeEventListener("scroll", handleScroll);
62
- }, [closestContainer, flyout, handleClose, triggerElRef]);
65
+ closestScrollableContainer.addEventListener("scroll", handleScroll, { passive: true });
66
+ return () => closestScrollableContainer.removeEventListener("scroll", handleScroll);
67
+ }, [closestScrollableContainer, flyout, handleClose, triggerElRef]);
63
68
  if (status === "idle" || !mounted)
64
69
  return null;
65
- const contentClassNames = classNames(s.content, triggerType === "hover" && s["--hover"], status === "visible" && s["--visible"],
70
+ const rootClassNames = classNames(s.content, triggerType === "hover" && s["--hover"], status === "visible" && s["--visible"],
66
71
  // animating only when we're opening the first flyout or closing the last flyout within the same cooldown
67
72
  // content is rendered only once flyout is already warm so checking for timer instead
68
73
  (cooldown.status === "cooling" || !cooldown.timer || isSubmenu || triggerType !== "hover") &&
@@ -85,11 +90,11 @@ const FlyoutContent = (props) => {
85
90
  else if (trapFocusMode === "action-bar") {
86
91
  role = "menubar";
87
92
  }
88
- const content = (_jsx(ContentProvider, { value: { elRef: flyoutElRef }, children: _jsx("div", { className: contentClassNames, style: {
93
+ const content = (_jsx(ContentProvider, { value: { elRef: flyoutElRef }, children: _jsx("div", { className: rootClassNames, style: {
89
94
  ...styles,
90
95
  "--rs-flyout-gap": contentGap,
91
96
  }, ref: flyoutElRef, onTransitionEnd: handleTransitionEnd, onMouseEnter: triggerType === "hover" ? handleMouseEnter : undefined, onMouseLeave: triggerType === "hover" ? handleMouseLeave : undefined, onMouseDown: handleContentMouseDown, onTouchStart: handleContentMouseDown, onMouseUp: handleContentMouseUp, onTouchEnd: handleContentMouseUp, children: _jsx("div", { role: role, ...attributes, id: id, "aria-modal": role === "dialog" ? true : undefined, style: contentAttributes?.style, className: innerClassNames, children: children }) }) }));
92
- return _jsx(Portal, { targetRef: containerRef || scrollableRef, children: content });
97
+ return _jsx(Portal, { targetRef: containerRef, children: content });
93
98
  };
94
99
  FlyoutContent.displayName = "Flyout.Content";
95
100
  export default FlyoutContent;
@@ -1,19 +1,19 @@
1
1
  "use client";
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import React from "react";
4
- import { TrapFocus, checkKeyboardMode } from "../../../utilities/a11y/index.js";
5
- import useIsDismissible from "../../../hooks/_private/useIsDismissible.js";
6
- import useElementId from "../../../hooks/useElementId.js";
7
- import useIsomorphicLayoutEffect from "../../../hooks/useIsomorphicLayoutEffect.js";
8
- import useHotkeys from "../../../hooks/useHotkeys.js";
9
- import useOnClickOutside from "../../../hooks/useOnClickOutside.js";
10
- import useRTL from "../../../hooks/useRTL.js";
11
- import { checkTransitions, onNextFrame } from "../../../utilities/animation.js";
4
+ import { TrapFocus, checkKeyboardMode } from "../../utilities/a11y/index.js";
5
+ import useIsDismissible from "../../hooks/_private/useIsDismissible.js";
6
+ import useElementId from "../../hooks/useElementId.js";
7
+ import useIsomorphicLayoutEffect from "../../hooks/useIsomorphicLayoutEffect.js";
8
+ import useHotkeys from "../../hooks/useHotkeys.js";
9
+ import useOnClickOutside from "../../hooks/useOnClickOutside.js";
10
+ import useRTL from "../../hooks/useRTL.js";
11
+ import { checkTransitions, onNextFrame } from "../../utilities/animation.js";
12
12
  import useFlyout from "./useFlyout.js";
13
13
  import * as timeouts from "./Flyout.constants.js";
14
14
  import cooldown from "./utilities/cooldown.js";
15
15
  import { Provider, useFlyoutTriggerContext, useFlyoutContext, useFlyoutContentContext, } from "./Flyout.context.js";
16
- import useHandlerRef from "../../../hooks/useHandlerRef.js";
16
+ import useHandlerRef from "../../hooks/useHandlerRef.js";
17
17
  const FlyoutControlled = (props) => {
18
18
  const { triggerType = "click", groupTimeouts, onOpen, onClose, children, disabled, forcePosition, trapFocusMode, width, disableHideAnimation, disableContentHover, disableCloseOnOutsideClick, originCoordinates, contentGap = 2, contentShift, contentClassName, contentAttributes, position: passedPosition, active: passedActive, id: passedId, instanceRef, containerRef, initialFocusRef, } = props;
19
19
  const fallbackPositions = props.fallbackPositions === false || forcePosition ? [] : props.fallbackPositions;
@@ -45,10 +45,7 @@ export declare const contentShift: {
45
45
  name: string;
46
46
  render: () => React.JSX.Element;
47
47
  };
48
- export declare const disableContentHover: {
49
- name: string;
50
- render: () => React.JSX.Element;
51
- };
48
+ export declare const disableContentHover: StoryObj;
52
49
  export declare const disableCloseOnOutsideClick: StoryObj;
53
50
  export declare const disableHideAnimation: {
54
51
  name: string;
@@ -82,3 +79,8 @@ export declare const testScopedTheming: {
82
79
  name: string;
83
80
  render: () => React.JSX.Element;
84
81
  };
82
+ export declare const testWithoutFocusable: StoryObj;
83
+ export declare const testChangeSize: {
84
+ name: string;
85
+ render: () => React.JSX.Element;
86
+ };