reshaped 3.9.0-canary.1 → 3.9.0-canary.10

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 (174) hide show
  1. package/dist/bundle.css +1 -1
  2. package/dist/bundle.js +2 -31
  3. package/dist/cli/theming/index.js +4 -4
  4. package/dist/cli/theming/reshaped.config.js +1 -1
  5. package/dist/components/Accordion/Accordion.types.d.ts +1 -1
  6. package/dist/components/Accordion/AccordionControlled.js +2 -2
  7. package/dist/components/Accordion/AccordionTrigger.js +2 -2
  8. package/dist/components/Accordion/index.d.ts +1 -1
  9. package/dist/components/Accordion/index.js +1 -1
  10. package/dist/components/ActionBar/ActionBar.js +1 -1
  11. package/dist/components/ActionBar/ActionBar.types.d.ts +1 -1
  12. package/dist/components/Actionable/Actionable.js +1 -1
  13. package/dist/components/Alert/Alert.js +1 -1
  14. package/dist/components/Alert/Alert.types.d.ts +1 -1
  15. package/dist/components/Autocomplete/Autocomplete.js +6 -6
  16. package/dist/components/Autocomplete/Autocomplete.types.d.ts +3 -3
  17. package/dist/components/Avatar/Avatar.js +9 -26
  18. package/dist/components/Avatar/Avatar.module.css +1 -1
  19. package/dist/components/Badge/Badge.js +4 -4
  20. package/dist/components/Badge/Badge.module.css +1 -1
  21. package/dist/components/Badge/Badge.types.d.ts +1 -1
  22. package/dist/components/Breadcrumbs/Breadcrumbs.js +3 -3
  23. package/dist/components/Breadcrumbs/Breadcrumbs.types.d.ts +1 -1
  24. package/dist/components/Breadcrumbs/BreadcrumbsItem.js +1 -1
  25. package/dist/components/Button/Button.js +2 -2
  26. package/dist/components/Button/Button.types.d.ts +3 -3
  27. package/dist/components/Calendar/Calendar.types.d.ts +25 -6
  28. package/dist/components/Calendar/CalendarControlled.js +45 -10
  29. package/dist/components/Calendar/CalendarControls.js +11 -11
  30. package/dist/components/Calendar/CalendarDate.js +13 -11
  31. package/dist/components/Calendar/CalendarMonth.js +3 -3
  32. package/dist/components/Calendar/CalendarYear.js +1 -1
  33. package/dist/components/Calendar/useCalendarKeyboardNavigation.js +1 -1
  34. package/dist/components/Card/Card.js +2 -2
  35. package/dist/components/Card/Card.types.d.ts +1 -1
  36. package/dist/components/Carousel/Carousel.js +4 -4
  37. package/dist/components/Carousel/Carousel.types.d.ts +1 -1
  38. package/dist/components/Carousel/CarouselControl.d.ts +1 -1
  39. package/dist/components/Carousel/CarouselControl.js +3 -3
  40. package/dist/components/Checkbox/Checkbox.js +5 -15
  41. package/dist/components/CheckboxGroup/CheckboxGroup.types.d.ts +1 -1
  42. package/dist/components/Container/Container.js +1 -1
  43. package/dist/components/Container/Container.types.d.ts +1 -1
  44. package/dist/components/ContextMenu/ContextMenu.js +1 -1
  45. package/dist/components/Dismissible/Dismissible.js +1 -1
  46. package/dist/components/Divider/Divider.d.ts +1 -1
  47. package/dist/components/Divider/Divider.js +1 -1
  48. package/dist/components/DropdownMenu/DropdownMenu.js +5 -5
  49. package/dist/components/DropdownMenu/DropdownMenu.types.d.ts +4 -4
  50. package/dist/components/FileUpload/FileUpload.js +9 -7
  51. package/dist/components/FileUpload/FileUpload.module.css +1 -1
  52. package/dist/components/FileUpload/FileUpload.types.d.ts +3 -1
  53. package/dist/components/Flyout/Flyout.constants.d.ts +2 -3
  54. package/dist/components/Flyout/Flyout.js +1 -1
  55. package/dist/components/Flyout/Flyout.module.css +1 -1
  56. package/dist/components/Flyout/Flyout.types.d.ts +6 -7
  57. package/dist/components/Flyout/FlyoutContent.js +7 -7
  58. package/dist/components/Flyout/FlyoutControlled.js +14 -9
  59. package/dist/components/Flyout/index.d.ts +1 -1
  60. package/dist/components/Flyout/index.js +1 -1
  61. package/dist/components/Flyout/useFlyout.d.ts +2 -2
  62. package/dist/components/Flyout/useFlyout.js +5 -18
  63. package/dist/components/Flyout/utilities/calculatePosition.d.ts +6 -6
  64. package/dist/components/Flyout/utilities/calculatePosition.js +6 -6
  65. package/dist/components/Flyout/utilities/flyout.d.ts +1 -1
  66. package/dist/components/Flyout/utilities/flyout.js +5 -2
  67. package/dist/components/FormControl/FormControlCaption.js +1 -1
  68. package/dist/components/FormControl/FormControlLabel.js +1 -1
  69. package/dist/components/FormControl/index.d.ts +2 -2
  70. package/dist/components/FormControl/index.js +2 -2
  71. package/dist/components/Grid/Grid.js +1 -1
  72. package/dist/components/Grid/Grid.types.d.ts +2 -2
  73. package/dist/components/HiddenInput/HiddenInput.js +34 -0
  74. package/dist/components/HiddenInput/HiddenInput.types.d.ts +26 -0
  75. package/dist/components/Icon/Icon.js +1 -1
  76. package/dist/components/Image/Image.js +14 -9
  77. package/dist/components/Image/Image.module.css +1 -1
  78. package/dist/components/Image/Image.types.d.ts +4 -2
  79. package/dist/components/Link/Link.js +1 -1
  80. package/dist/components/MenuItem/MenuItem.js +1 -1
  81. package/dist/components/MenuItem/MenuItem.types.d.ts +2 -2
  82. package/dist/components/Modal/Modal.js +8 -8
  83. package/dist/components/Modal/Modal.module.css +1 -1
  84. package/dist/components/Modal/Modal.types.d.ts +1 -1
  85. package/dist/components/NumberField/NumberFieldControlled.js +7 -7
  86. package/dist/components/Overlay/Overlay.js +8 -8
  87. package/dist/components/PinField/PinFieldControlled.js +4 -4
  88. package/dist/components/Popover/Popover.js +3 -3
  89. package/dist/components/Popover/Popover.module.css +1 -1
  90. package/dist/components/Popover/Popover.types.d.ts +2 -2
  91. package/dist/components/Radio/Radio.js +5 -15
  92. package/dist/components/RadioGroup/RadioGroup.types.d.ts +1 -1
  93. package/dist/components/Reshaped/Reshaped.js +4 -4
  94. package/dist/components/Reshaped/Reshaped.types.d.ts +1 -1
  95. package/dist/components/Resizable/Resizable.js +2 -2
  96. package/dist/components/Resizable/Resizable.types.d.ts +1 -1
  97. package/dist/components/Resizable/ResizableHandle.js +1 -1
  98. package/dist/components/Scrim/Scrim.js +4 -3
  99. package/dist/components/Scrim/Scrim.module.css +1 -1
  100. package/dist/components/Scrim/Scrim.types.d.ts +2 -1
  101. package/dist/components/ScrollArea/ScrollArea.js +5 -5
  102. package/dist/components/Select/Select.types.d.ts +3 -3
  103. package/dist/components/Select/SelectCustomControlled.js +6 -3
  104. package/dist/components/Select/SelectEndContent.js +1 -1
  105. package/dist/components/Select/SelectGroup.js +1 -1
  106. package/dist/components/Select/SelectNative.js +2 -2
  107. package/dist/components/Select/SelectRoot.js +1 -1
  108. package/dist/components/Select/SelectTrigger.js +1 -1
  109. package/dist/components/Select/index.d.ts +1 -1
  110. package/dist/components/Select/index.js +1 -1
  111. package/dist/components/Skeleton/Skeleton.js +1 -1
  112. package/dist/components/Slider/SliderControlled.js +7 -7
  113. package/dist/components/Slider/SliderThumb.js +3 -3
  114. package/dist/components/Stepper/Stepper.js +4 -4
  115. package/dist/components/Switch/Switch.js +1 -1
  116. package/dist/components/Table/Table.js +2 -2
  117. package/dist/components/Tabs/Tabs.module.css +1 -1
  118. package/dist/components/Tabs/Tabs.types.d.ts +4 -2
  119. package/dist/components/Tabs/TabsContext.d.ts +1 -0
  120. package/dist/components/Tabs/TabsControlled.js +2 -1
  121. package/dist/components/Tabs/TabsItem.js +4 -4
  122. package/dist/components/Tabs/TabsList.js +17 -13
  123. package/dist/components/Tabs/TabsPanel.js +3 -3
  124. package/dist/components/Text/Text.js +3 -3
  125. package/dist/components/Text/Text.module.css +1 -1
  126. package/dist/components/Text/Text.types.d.ts +2 -0
  127. package/dist/components/TextArea/TextArea.js +1 -1
  128. package/dist/components/TextArea/TextArea.types.d.ts +1 -1
  129. package/dist/components/TextField/TextField.js +2 -2
  130. package/dist/components/TextField/TextField.types.d.ts +2 -2
  131. package/dist/components/Theme/GlobalColorMode.js +1 -1
  132. package/dist/components/Theme/Theme.js +2 -2
  133. package/dist/components/Timeline/Timeline.js +1 -1
  134. package/dist/components/Toast/Toast.js +2 -2
  135. package/dist/components/Toast/Toast.types.d.ts +1 -1
  136. package/dist/components/Toast/ToastContainer.js +3 -3
  137. package/dist/components/Toast/ToastProvider.js +1 -1
  138. package/dist/components/Toast/ToastRegion.js +2 -2
  139. package/dist/components/ToggleButtonGroup/ToggleButtonGroup.types.d.ts +1 -1
  140. package/dist/components/ToggleButtonGroup/ToggleButtonGroupControlled.js +1 -1
  141. package/dist/components/Tooltip/Tooltip.js +5 -3
  142. package/dist/components/View/View.js +2 -2
  143. package/dist/components/View/View.types.d.ts +1 -1
  144. package/dist/components/_private/Expandable/Expandable.js +2 -2
  145. package/dist/components/_private/Portal/Portal.js +1 -1
  146. package/dist/config/tailwind.js +2 -2
  147. package/dist/hooks/_private/useDrag.js +4 -4
  148. package/dist/hooks/_private/useFadeSide.js +1 -1
  149. package/dist/hooks/useResponsiveClientValue.js +1 -1
  150. package/dist/styles/mixin.js +1 -1
  151. package/dist/tests/ThemesPlayground.js +16 -16
  152. package/dist/themes/_generator/definitions/slate.js +1 -1
  153. package/dist/themes/_generator/tokens/color/utilities/generateColors.d.ts +1 -1
  154. package/dist/themes/_generator/tokens/color/utilities/generateMetaColors.d.ts +1 -1
  155. package/dist/themes/_generator/tokens/color/utilities/generateMetaColors.js +1 -1
  156. package/dist/themes/_generator/tokens/font/font.types.d.ts +2 -2
  157. package/dist/themes/_generator/tokens/transforms.js +1 -1
  158. package/dist/themes/_generator/tokens/types.d.ts +3 -3
  159. package/dist/themes/_generator/transform.d.ts +1 -1
  160. package/dist/themes/_generator/transform.js +3 -3
  161. package/dist/themes/index.d.ts +1 -1
  162. package/dist/types/config.d.ts +1 -1
  163. package/dist/utilities/a11y/TrapFocus.js +4 -4
  164. package/dist/utilities/scroll/lock.js +1 -1
  165. package/dist/utilities/scroll/lockStandard.js +1 -1
  166. package/dist/utilities/storybook/Example.js +1 -1
  167. package/package.json +4 -2
  168. package/dist/components/_private/HiddenInput/HiddenInput.js +0 -10
  169. package/dist/components/_private/HiddenInput/HiddenInput.types.d.ts +0 -15
  170. /package/dist/components/{_private/HiddenInput → HiddenInput}/HiddenInput.d.ts +0 -0
  171. /package/dist/components/{_private/HiddenInput → HiddenInput}/HiddenInput.module.css +0 -0
  172. /package/dist/components/{_private/HiddenInput → HiddenInput}/HiddenInput.types.js +0 -0
  173. /package/dist/components/{_private/HiddenInput → HiddenInput}/index.d.ts +0 -0
  174. /package/dist/components/{_private/HiddenInput → HiddenInput}/index.js +0 -0
@@ -1,10 +1,10 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { classNames, responsiveClassNames, responsivePropDependency } from "../../utilities/props.js";
4
- import HiddenInput from "../_private/HiddenInput/index.js";
5
- import Text from "../Text/index.js";
6
- import { useRadioGroup } from "../RadioGroup/index.js";
7
3
  import { useFormControl } from "../FormControl/index.js";
4
+ import HiddenInput from "../HiddenInput/index.js";
5
+ import { useRadioGroup } from "../RadioGroup/index.js";
6
+ import Text from "../Text/index.js";
7
+ import { classNames, responsiveClassNames, responsivePropDependency } from "../../utilities/props.js";
8
8
  import s from "./Radio.module.css";
9
9
  const Radio = (props) => {
10
10
  const { children, value, onChange, onFocus, onBlur, size = "medium", className, attributes, inputAttributes, } = props;
@@ -16,17 +16,7 @@ const Radio = (props) => {
16
16
  const defaultChecked = radioGroup ? undefined : props.defaultChecked;
17
17
  const name = radioGroup ? radioGroup.name : props.name;
18
18
  const rootClassName = classNames(s.root, className, hasError && s["--error"], disabled && s["--disabled"], size && responsiveClassNames(s, "--size", size));
19
- const handleChange = (event) => {
20
- if (!name)
21
- return;
22
- const { checked } = event.target;
23
- const changeArgs = { name, value, checked, event };
24
- if (onChange)
25
- onChange(changeArgs);
26
- if (radioGroup?.onChange)
27
- radioGroup.onChange(changeArgs);
28
- };
29
- return (_jsxs("label", { ...attributes, className: rootClassName, children: [_jsxs("span", { className: s.field, children: [_jsx(HiddenInput, { className: s.input, type: "radio", checked: checked, defaultChecked: defaultChecked, name: name, disabled: disabled, value: value, onChange: handleChange, onFocus: onFocus, onBlur: onBlur, attributes: inputAttributes }), _jsx("div", { className: s.decorator })] }), children && (_jsx(Text, { as: "span", variant: responsivePropDependency(size, (size) => {
19
+ return (_jsxs("label", { ...attributes, className: rootClassName, children: [_jsxs("span", { className: s.field, children: [_jsx(HiddenInput, { className: s.input, type: "radio", checked: checked, defaultChecked: defaultChecked, name: name, disabled: disabled, value: value, onChange: onChange, onFocus: onFocus, onBlur: onBlur, attributes: inputAttributes }), _jsx("div", { className: s.decorator })] }), children && (_jsx(Text, { as: "span", variant: responsivePropDependency(size, (size) => {
30
20
  if (size === "large")
31
21
  return "body-2";
32
22
  if (size === "small")
@@ -1,6 +1,6 @@
1
+ import type { RadioProps } from "../Radio";
1
2
  import type React from "react";
2
3
  import type * as G from "../../types/global";
3
- import type { RadioProps } from "../Radio";
4
4
  type BaseProps = {
5
5
  /** Unique identifier for the radio group */
6
6
  id?: string;
@@ -1,15 +1,15 @@
1
1
  "use client";
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import React from "react";
4
- import { classNames } from "../../utilities/props.js";
5
4
  import { GlobalColorMode, PrivateTheme } from "../Theme/index.js";
6
- import { ToastProvider } from "../Toast/index.js";
7
5
  import { useGlobalColorMode } from "../Theme/useTheme.js";
6
+ import { ToastProvider } from "../Toast/index.js";
8
7
  import { SingletonEnvironmentContext, useSingletonEnvironment, } from "../../hooks/_private/useSingletonEnvironment.js";
9
- import { SingletonKeyboardModeProvider } from "../../hooks/_private/useSingletonKeyboardMode.js";
10
8
  import { SingletonHotkeysProvider } from "../../hooks/_private/useSingletonHotkeys.js";
11
- import "./Reshaped.css";
9
+ import { SingletonKeyboardModeProvider } from "../../hooks/_private/useSingletonKeyboardMode.js";
10
+ import { classNames } from "../../utilities/props.js";
12
11
  import s from "./Reshaped.module.css";
12
+ import "./Reshaped.css";
13
13
  const ReshapedInner = (props) => {
14
14
  const { children, defaultRTL, defaultViewport = "s", toastOptions } = props;
15
15
  const rtlState = useSingletonEnvironment(defaultRTL);
@@ -1,6 +1,6 @@
1
- import type React from "react";
2
1
  import type { GlobalColorModeProps, ThemeProps } from "../Theme";
3
2
  import type { ToastProviderProps } from "../Toast";
3
+ import type React from "react";
4
4
  import type * as G from "../../types/global";
5
5
  export type Props = {
6
6
  /** Node for inserting children */
@@ -1,10 +1,10 @@
1
1
  "use client";
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import React from "react";
4
- import { classNames } from "../../utilities/props.js";
5
4
  import View from "../View/index.js";
6
- import { ResizableHandleContext } from "./ResizableHandle.js";
5
+ import { classNames } from "../../utilities/props.js";
7
6
  import s from "./Resizable.module.css";
7
+ import { ResizableHandleContext } from "./ResizableHandle.js";
8
8
  export const ResizableItem = () => null;
9
9
  const PrivateResizableItem = React.forwardRef((props, ref) => {
10
10
  const { children, defaultSize, minSize, maxSize } = props;
@@ -1,6 +1,6 @@
1
- import type React from "react";
2
1
  import type { ViewProps } from "../View";
3
2
  import type { UseDragCallbackArgs } from "../../hooks/_private/useDrag";
3
+ import type React from "react";
4
4
  export type Props = {
5
5
  /** Component render variant */
6
6
  variant?: "bordered" | "borderless";
@@ -1,9 +1,9 @@
1
1
  "use client";
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import React from "react";
4
- import { classNames } from "../../utilities/props.js";
5
4
  import View from "../View/index.js";
6
5
  import useDrag from "../../hooks/_private/useDrag.js";
6
+ import { classNames } from "../../utilities/props.js";
7
7
  import s from "./Resizable.module.css";
8
8
  export const ResizableHandleContext = React.createContext({});
9
9
  const ResizableHandle = (props) => {
@@ -1,11 +1,12 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import View from "../View/index.js";
2
3
  import { classNames } from "../../utilities/props.js";
3
4
  import s from "./Scrim.module.css";
4
5
  const Scrim = (props) => {
5
- const { children, backgroundSlot, position = "cover", attributes, className, scrimClassName, } = props;
6
- const rootClassNames = classNames(s.root, !!backgroundSlot && s["--with-background"], position && s[`--position-${position}`], className);
6
+ const { children, backgroundSlot, position = "cover", paddingInline, paddingBlock, padding, borderRadius, attributes, className, scrimClassName, } = props;
7
+ const rootClassNames = classNames(s.root, position && s[`--position-${position}`], className);
7
8
  const scrimClassNames = classNames(s.scrim, scrimClassName);
8
- return (_jsxs("div", { ...attributes, className: rootClassNames, children: [backgroundSlot, _jsx("div", { className: scrimClassNames, children: _jsx("div", { className: s.content, children: children }) })] }));
9
+ return (_jsxs(View, { borderRadius: borderRadius, attributes: attributes, className: rootClassNames, position: backgroundSlot ? "relative" : "absolute", inset: backgroundSlot ? undefined : 0, overflow: "hidden", children: [backgroundSlot, _jsx("div", { className: scrimClassNames, children: _jsx(View, { paddingInline: paddingInline ?? padding ?? 4, paddingBlock: paddingBlock ?? padding ?? 3, zIndex: 5, height: ["start", "end"].includes(position) ? "100%" : undefined, width: ["top", "bottom", "cover"].includes(position) ? "100%" : undefined, textAlign: position === "cover" ? "center" : undefined, children: children }) })] }));
9
10
  };
10
11
  Scrim.displayName = "Scrim";
11
12
  export default Scrim;
@@ -1 +1 @@
1
- .root,.scrim{inset:0;position:absolute}.root{--rs-overlay-gradient:rgba(var(--rs-color-rgb-black),0%),rgba(var(--rs-color-rgb-black),0.52%),rgba(var(--rs-color-rgb-black),2.13%),rgba(var(--rs-color-rgb-black),4.9%),rgba(var(--rs-color-rgb-black),8.84%),rgba(var(--rs-color-rgb-black),13.91%),rgba(var(--rs-color-rgb-black),19.91%),rgba(var(--rs-color-rgb-black),26.56%),rgba(var(--rs-color-rgb-black),33.44%),rgba(var(--rs-color-rgb-black),40.09%),rgba(var(--rs-color-rgb-black),46.09%),rgba(var(--rs-color-rgb-black),51.16%),rgba(var(--rs-color-rgb-black),55.1%),rgba(var(--rs-color-rgb-black),57.87%),rgba(var(--rs-color-rgb-black),59.48%),rgba(var(--rs-color-rgb-black),60%);pointer-events:none}.scrim{color:var(--rs-color-white);padding:var(--rs-unit-x3) var(--rs-unit-x4);transform:translateZ(0)}.content{pointer-events:all;position:relative;z-index:5}.--position-cover .scrim{align-items:center;display:flex;justify-content:center}.--position-cover .scrim:after{background-color:var(--rs-color-black);content:"";inset:0;opacity:.5;position:absolute}.--position-cover .content{text-align:center}.--position-bottom .content,.--position-cover .content,.--position-top .content{width:100%}.--position-end .content,.--position-start .content{height:100%}.--position-top .scrim{background:linear-gradient(to top,var(--rs-overlay-gradient));inset-block-end:auto;padding-block-end:calc(var(--rs-unit-x10) * 2)}.--position-bottom .scrim{background:linear-gradient(to bottom,var(--rs-overlay-gradient));inset-block-start:auto;padding-block-start:calc(var(--rs-unit-x10) * 2)}.--position-start .scrim{background:linear-gradient(to left,var(--rs-overlay-gradient));inset-inline-end:auto;padding-inline-end:calc(var(--rs-unit-x10) * 2);width:auto}.--position-end .scrim,[dir=rtl] .--position-start .scrim{background:linear-gradient(to right,var(--rs-overlay-gradient))}.--position-end .scrim{inset-inline-start:auto;padding-inline-start:calc(var(--rs-unit-x10) * 2);width:auto}[dir=rtl] .--position-end .scrim{background:linear-gradient(to left,var(--rs-overlay-gradient))}.--with-background{position:relative}
1
+ .root{--rs-scrim-gradient-padding:calc(var(--rs-unit-x1) * 16);--rs-scrim-gradient:rgba(var(--rs-color-rgb-black),0%),rgba(var(--rs-color-rgb-black),0.52%),rgba(var(--rs-color-rgb-black),2.13%),rgba(var(--rs-color-rgb-black),4.9%),rgba(var(--rs-color-rgb-black),8.84%),rgba(var(--rs-color-rgb-black),13.91%),rgba(var(--rs-color-rgb-black),19.91%),rgba(var(--rs-color-rgb-black),26.56%),rgba(var(--rs-color-rgb-black),33.44%),rgba(var(--rs-color-rgb-black),40.09%),rgba(var(--rs-color-rgb-black),46.09%),rgba(var(--rs-color-rgb-black),51.16%),rgba(var(--rs-color-rgb-black),55.1%),rgba(var(--rs-color-rgb-black),57.87%),rgba(var(--rs-color-rgb-black),59.48%),rgba(var(--rs-color-rgb-black),60%);pointer-events:none}.scrim{color:var(--rs-color-white);inset:0;position:absolute;transform:translateZ(0)}.--position-cover .scrim{align-items:center;display:flex;justify-content:center}.--position-cover .scrim:after{background-color:var(--rs-color-black);content:"";inset:0;opacity:.5;position:absolute}.--position-top .scrim{background:linear-gradient(to top,var(--rs-scrim-gradient));inset-block-end:auto;padding-block-end:var(--rs-scrim-gradient-padding)}.--position-bottom .scrim{background:linear-gradient(to bottom,var(--rs-scrim-gradient));inset-block-start:auto;padding-block-start:var(--rs-scrim-gradient-padding)}.--position-start .scrim{background:linear-gradient(to left,var(--rs-scrim-gradient));inset-inline-end:auto;padding-inline-end:var(--rs-scrim-gradient-padding);width:auto}.--position-end .scrim,[dir=rtl] .--position-start .scrim{background:linear-gradient(to right,var(--rs-scrim-gradient))}.--position-end .scrim{inset-inline-start:auto;padding-inline-start:var(--rs-scrim-gradient-padding);width:auto}[dir=rtl] .--position-end .scrim{background:linear-gradient(to left,var(--rs-scrim-gradient))}
@@ -1,4 +1,5 @@
1
1
  import React from "react";
2
+ import type { ViewProps } from "../View";
2
3
  import type * as G from "../../types/global";
3
4
  export type Props = {
4
5
  /** Node for inserting content */
@@ -13,4 +14,4 @@ export type Props = {
13
14
  className?: G.ClassName;
14
15
  /** Additional attributes for the root element */
15
16
  attributes?: G.Attributes<"div">;
16
- };
17
+ } & Pick<ViewProps, "paddingInline" | "paddingBlock" | "padding" | "borderRadius">;
@@ -1,12 +1,12 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import React, { forwardRef } from "react";
4
- import { classNames } from "../../utilities/props.js";
5
- import { disableUserSelect, enableUserSelect } from "../../utilities/dom/index.js";
6
- import { resolveMixin } from "../../styles/mixin.js";
4
+ import useHandlerRef from "../../hooks/useHandlerRef.js";
7
5
  import useIsomorphicLayoutEffect from "../../hooks/useIsomorphicLayoutEffect.js";
6
+ import { resolveMixin } from "../../styles/mixin.js";
7
+ import { disableUserSelect, enableUserSelect } from "../../utilities/dom/index.js";
8
+ import { classNames } from "../../utilities/props.js";
8
9
  import s from "./ScrollArea.module.css";
9
- import useHandlerRef from "../../hooks/useHandlerRef.js";
10
10
  const ScrollAreaBar = (props) => {
11
11
  const { ratio, position, vertical, onThumbMove } = props;
12
12
  const onThumbMoveRef = useHandlerRef(onThumbMove);
@@ -109,7 +109,7 @@ const ScrollArea = forwardRef((props, ref) => {
109
109
  const scrollableEl = scrollableRef.current;
110
110
  if (!scrollableEl)
111
111
  return;
112
- const value = scrollableEl.clientWidth * args.value;
112
+ const value = scrollableEl.scrollWidth * args.value;
113
113
  if (args.type === "absolute") {
114
114
  scrollableEl.scrollLeft = value;
115
115
  }
@@ -1,9 +1,9 @@
1
1
  import React from "react";
2
- import type * as G from "../../types/global";
3
- import type { IconProps } from "../Icon";
2
+ import { DropdownMenuProps } from "../DropdownMenu";
4
3
  import type { ActionableProps } from "../Actionable";
4
+ import type { IconProps } from "../Icon";
5
5
  import type { MenuItemProps } from "../MenuItem";
6
- import { DropdownMenuProps } from "../DropdownMenu";
6
+ import type * as G from "../../types/global";
7
7
  type Size = G.Responsive<"small" | "medium" | "large" | "xlarge">;
8
8
  type RenderSingleValue = (args: {
9
9
  value: string;
@@ -3,13 +3,13 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import React from "react";
4
4
  import DropdownMenu from "../DropdownMenu/index.js";
5
5
  import Icon from "../Icon/index.js";
6
+ import View from "../View/index.js";
6
7
  import CheckmarkIcon from "../../icons/Checkmark.js";
7
8
  import { responsivePropDependency } from "../../utilities/props.js";
9
+ import SelectGroup from "./SelectGroup.js";
10
+ import SelectOption from "./SelectOption.js";
8
11
  import SelectRoot from "./SelectRoot.js";
9
12
  import SelectTrigger from "./SelectTrigger.js";
10
- import SelectOption from "./SelectOption.js";
11
- import SelectGroup from "./SelectGroup.js";
12
- import View from "../View/index.js";
13
13
  const SelectCustomControlled = (props) => {
14
14
  const { children, value, name, placeholder, size, multiple, width = "trigger", position, fallbackPositions, positionRef, renderValue: passedRenderValue, } = props;
15
15
  const initialFocusRef = React.useRef(null);
@@ -72,6 +72,9 @@ const SelectCustomControlled = (props) => {
72
72
  const resolvedChildren = traverseOptionList(children);
73
73
  const handleKeyDown = (e) => {
74
74
  const key = e.key;
75
+ // Ignore search when user is typing, e.g. if there is a filter input inside the dropdown
76
+ if (document.activeElement?.tagName === "INPUT")
77
+ return;
75
78
  // Only handle alphanumeric and space characters for type-ahead
76
79
  if (key.length !== 1 || !key.match(/[\w\s]/))
77
80
  return;
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import Icon from "../Icon/index.js";
3
- import { responsivePropDependency } from "../../utilities/props.js";
4
3
  import IconArrow from "../../icons/ChevronVertical.js";
4
+ import { responsivePropDependency } from "../../utilities/props.js";
5
5
  import s from "./Select.module.css";
6
6
  const SelectEndContent = (props) => {
7
7
  const { disabled, size } = props;
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import View from "../View/index.js";
3
2
  import Text from "../Text/index.js";
3
+ import View from "../View/index.js";
4
4
  import s from "./Select.module.css";
5
5
  const SelectGroup = (props) => {
6
6
  const { label, children } = props;
@@ -2,9 +2,9 @@
2
2
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
3
  import React from "react";
4
4
  import { classNames } from "../../utilities/props.js";
5
- import SelectStartContent from "./SelectStartContent.js";
6
- import SelectEndContent from "./SelectEndContent.js";
7
5
  import s from "./Select.module.css";
6
+ import SelectEndContent from "./SelectEndContent.js";
7
+ import SelectStartContent from "./SelectStartContent.js";
8
8
  const SelectNative = (props) => {
9
9
  const { startSlot, icon, size, inputAttributes, onFocus, onBlur, disabled, name, value, defaultValue, onChange, onClick, placeholder, id, children, } = props;
10
10
  const [empty, setEmpty] = React.useState(value === undefined ? !defaultValue : !value);
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
- import useElementId from "../../hooks/useElementId.js";
4
3
  import { useFormControl } from "../FormControl/index.js";
4
+ import useElementId from "../../hooks/useElementId.js";
5
5
  import { classNames, responsiveClassNames } from "../../utilities/props.js";
6
6
  import s from "./Select.module.css";
7
7
  const SelectRoot = (passedProps) => {
@@ -2,9 +2,9 @@
2
2
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
3
  import Actionable from "../Actionable/index.js";
4
4
  import Text from "../Text/index.js";
5
- import SelectStartContent from "./SelectStartContent.js";
6
5
  import s from "./Select.module.css";
7
6
  import SelectEndContent from "./SelectEndContent.js";
7
+ import SelectStartContent from "./SelectStartContent.js";
8
8
  const SelectTrigger = (props) => {
9
9
  const { children, disabled, onClick, onFocus, onBlur, inputAttributes, startSlot, icon, size, placeholder, value, name, id, } = props;
10
10
  return (_jsxs(_Fragment, { children: [_jsxs(Actionable, { className: s.input, disabled: disabled, disableFocusRing: true, onClick: onClick, attributes: {
@@ -1,7 +1,7 @@
1
1
  import Select from "./Select";
2
2
  import SelectCustom from "./SelectCustom";
3
- import SelectOption from "./SelectOption";
4
3
  import SelectGroup from "./SelectGroup";
4
+ import SelectOption from "./SelectOption";
5
5
  declare const SelectRoot: typeof Select & {
6
6
  Custom: typeof SelectCustom;
7
7
  Option: typeof SelectOption;
@@ -1,7 +1,7 @@
1
1
  import Select from "./Select.js";
2
2
  import SelectCustom from "./SelectCustom.js";
3
- import SelectOption from "./SelectOption.js";
4
3
  import SelectGroup from "./SelectGroup.js";
4
+ import SelectOption from "./SelectOption.js";
5
5
  const SelectRoot = Select;
6
6
  SelectRoot.Custom = SelectCustom;
7
7
  SelectRoot.Option = SelectOption;
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { classNames } from "../../utilities/props.js";
3
2
  import View from "../View/index.js";
3
+ import { classNames } from "../../utilities/props.js";
4
4
  import s from "./Skeleton.module.css";
5
5
  const Skeleton = (props) => {
6
6
  const { borderRadius = "small", width, height, className, attributes } = props;
@@ -1,16 +1,16 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import React from "react";
4
- import { classNames } from "../../utilities/props.js";
4
+ import { useFormControl } from "../FormControl/index.js";
5
+ import useElementId from "../../hooks/useElementId.js";
6
+ import useHandlerRef from "../../hooks/useHandlerRef.js";
7
+ import useRTL from "../../hooks/useRTL.js";
5
8
  import { enableUserSelect, disableUserSelect, triggerChangeEvent } from "../../utilities/dom/index.js";
9
+ import { classNames } from "../../utilities/props.js";
6
10
  import { disableScroll, enableScroll } from "../../utilities/scroll/index.js";
7
- import useRTL from "../../hooks/useRTL.js";
8
- import useElementId from "../../hooks/useElementId.js";
9
- import { useFormControl } from "../FormControl/index.js";
10
- import SliderThumb from "./SliderThumb.js";
11
- import { applyStepToValue, getDragCoord } from "./Slider.utilities.js";
12
11
  import s from "./Slider.module.css";
13
- import useHandlerRef from "../../hooks/useHandlerRef.js";
12
+ import { applyStepToValue, getDragCoord } from "./Slider.utilities.js";
13
+ import SliderThumb from "./SliderThumb.js";
14
14
  const THUMB_SIZE = 16;
15
15
  const SliderControlled = (props) => {
16
16
  const { name, range, max, min, step = 1, onChange, onChangeCommit, renderValue, className, attributes, orientation = "horizontal", } = props;
@@ -1,11 +1,11 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import React from "react";
4
- import { classNames } from "../../utilities/props.js";
5
- import Theme from "../Theme/index.js";
6
4
  import Text from "../Text/index.js";
7
- import { getPrecision } from "./Slider.utilities.js";
5
+ import Theme from "../Theme/index.js";
6
+ import { classNames } from "../../utilities/props.js";
8
7
  import s from "./Slider.module.css";
8
+ import { getPrecision } from "./Slider.utilities.js";
9
9
  const SliderThumb = React.forwardRef((props, ref) => {
10
10
  const { name, value, disabled, active, position, max, min, step, onChange, onDragStart, renderValue, tooltipRef, inputRef, orientation, } = props;
11
11
  const id = React.useId();
@@ -1,13 +1,13 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import React from "react";
3
- import { responsivePropDependency } from "../../utilities/props.js";
4
3
  import Expandable from "../_private/Expandable/index.js";
5
- import View from "../View/index.js";
6
- import Text from "../Text/index.js";
7
4
  import Divider from "../Divider/index.js";
8
- import Icon from "../Icon/index.js";
9
5
  import Hidden from "../Hidden/index.js";
6
+ import Icon from "../Icon/index.js";
7
+ import Text from "../Text/index.js";
8
+ import View from "../View/index.js";
10
9
  import IconCheckmark from "../../icons/Checkmark.js";
10
+ import { responsivePropDependency } from "../../utilities/props.js";
11
11
  import s from "./Stepper.module.css";
12
12
  const StepperItemPrivate = (props) => {
13
13
  const { title, subtitle, children, direction, className, attributes, labelDisplay, step, completed, active, last, } = props;
@@ -1,9 +1,9 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { classNames, responsiveClassNames, responsivePropDependency } from "../../utilities/props.js";
4
3
  import { useFormControl } from "../FormControl/index.js";
5
4
  import Text from "../Text/index.js";
6
5
  import useElementId from "../../hooks/useElementId.js";
6
+ import { classNames, responsiveClassNames, responsivePropDependency } from "../../utilities/props.js";
7
7
  import s from "./Switch.module.css";
8
8
  const Switch = (props) => {
9
9
  const { children, name, checked, size = "medium", reversed, defaultChecked, onChange, onFocus, onBlur, className, attributes, } = props;
@@ -1,10 +1,10 @@
1
1
  "use client";
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import React, { isValidElement } from "react";
4
- import { classNames, responsiveVariables } from "../../utilities/props.js";
4
+ import useFadeSide from "../../hooks/_private/useFadeSide.js";
5
5
  import { resolveMixin } from "../../styles/mixin.js";
6
+ import { classNames, responsiveVariables } from "../../utilities/props.js";
6
7
  import s from "./Table.module.css";
7
- import useFadeSide from "../../hooks/_private/useFadeSide.js";
8
8
  const TableCellPrivate = (props) => {
9
9
  const { minWidth, rowSpan, colSpan, align, verticalAlign, tagName: TagName, padding, paddingInline, paddingBlock, children, className, attributes, } = props;
10
10
  const width = props.width === "auto" ? "0px" : props.width;
@@ -1 +1 @@
1
- @property --rs-tabs-mid-l{syntax:"<length>";initial-value:-24px;inherits:false}@property --rs-tabs-stop-l{syntax:"<length>";initial-value:0;inherits:false}@property --rs-tabs-stop-r{syntax:"<length-percentage>";initial-value:100%;inherits:false}@property --rs-tabs-mid-r{syntax:"<length-percentage>";initial-value:calc(100% + 24px);inherits:false}.root{box-sizing:initial;isolation:isolate;max-width:100%}.list,.root{position:relative}.list{--rs-tabs-gap:var(--rs-unit-x6);gap:var(--rs-tabs-gap)}.inner:after{background-color:var(--rs-color-border-neutral-faded);content:"";position:absolute;z-index:2}.listItem{flex-shrink:0;position:relative}.button{overflow:hidden;position:relative;z-index:1;-webkit-tap-highlight-color:transparent}.button,.buttonContent{border-radius:var(--rs-radius-medium);width:100%}.buttonContent{align-items:center;box-sizing:border-box;display:flex}.icon{color:inherit;transition:color var(--rs-duration-fast) var(--rs-easing-standard)}[data-rs-keyboard] .radio:focus+.buttonContent{box-shadow:var(--rs-shadow-focus-inset)}.icon:not(:last-child){margin-inline-end:var(--rs-unit-x2)}.item{color:var(--rs-color-foreground-neutral)}@media (hover:hover) and (pointer:fine){.item:not(.--item-disabled,.--item-active):hover{color:var(--rs-color-foreground-neutral-faded)}}.item.--item-disabled{color:var(--rs-color-foreground-disabled)}.--item-active:after{content:""}.--item-active:after,.selector{background:var(--rs-color-border-primary);border-radius:calc(var(--rs-radius-medium) - 1px);position:absolute;z-index:var(--rs-z-index-relative)}.selector{--rs-tab-selection-x:0;--rs-tab-selection-y:0;--rs-tab-selection-scale-x:0;--rs-tab-selection-scale-y:0;transform:translate(calc(var(--rs-tab-selection-x) * 1px),calc(var(--rs-tab-selection-y) * 1px)) translateZ(0);transform-origin:0 0}.--selector-hidden{visibility:hidden}.--selector-animated{transition:var(--rs-duration-medium) var(--rs-easing-decelerate);transition-property:transform,height,width;will-change:transform,height,width}.control{align-items:center;display:none;inset-block:0;opacity:0;pointer-events:none;position:absolute;transition:var(--rs-duration-medium) var(--rs-easing-decelerate);transition-property:opacity,transform;z-index:var(--rs-z-index-relative)}.control.control--active{opacity:1;pointer-events:all}[dir=rtl] .control{transform:scaleX(-1)}.control--next{inset-inline-end:0}.control--prev{inset-inline-start:0}.panel{outline:none}[data-rs-keyboard] .panel:focus{box-shadow:var(--rs-shadow-focus)}.--panel-hidden{display:none}.--scrollable .inner{overflow:auto;overflow:-moz-scrollbars-none;scrollbar-width:none;-ms-overflow-style:none;mask-image:linear-gradient(to right,transparent 0,transparent var(--rs-tabs-mid-l),#000 var(--rs-tabs-stop-l),#000 var(--rs-tabs-stop-r),transparent var(--rs-tabs-mid-r),transparent 100%);transition:var(--rs-duration-medium) var(--rs-easing-decelerate);transition-property:--rs-tabs-stop-l,--rs-tabs-stop-r,--rs-tabs-mid-l,--rs-tabs-mid-r}.--scrollable .inner::-webkit-scrollbar{display:none}.--direction-row .inner{white-space:nowrap}.--direction-row .inner:after{bottom:0;height:1px;inset-inline:0}.--direction-row .list{align-items:center;display:inline-flex;flex-wrap:nowrap;vertical-align:top}.--direction-row .--item-active:after{height:2px;inset-inline:0;bottom:0}.--direction-row .selector{bottom:0;height:2px;left:0;width:calc(var(--rs-tab-selection-scale-x) * 1px)}.--direction-row .button{box-sizing:initial;margin:var(--rs-unit-x1) calc(var(--rs-unit-x2) * -1);padding:0 var(--rs-unit-x2)}.--direction-row .buttonContent{justify-content:center;padding:var(--rs-tabs-item-p-v) 0}.--direction-column .inner:after{height:100%;inset-block:0;inset-inline-end:0;width:1px}.--direction-column .list{--rs-tabs-gap:var(--rs-unit-x1);display:flex;flex-direction:column}.--direction-column .item{padding-inline-end:var(--rs-unit-x1)}.--direction-column .--item-active:after{bottom:0}.--direction-column .--item-active:after,.--direction-column .selector{height:100%;inset-inline-end:0;width:2px}.--direction-column .selector{height:calc(var(--rs-tab-selection-scale-y) * 1px);top:0}.--direction-column .button{margin-inline-start:calc(var(--rs-unit-x2) * -1);padding:var(--rs-unit-x2);width:calc(100% + var(--rs-unit-x1))}.--direction-column .buttonContent{justify-content:flex-start}.--variant-borderless .inner:after,.--variant-pills .inner:after,.--variant-pills-elevated .inner:after{content:none}.--variant-pills .button,.--variant-pills-elevated .button{margin:0;padding:0}.--variant-pills .buttonContent,.--variant-pills-elevated .buttonContent{margin:0;padding:var(--rs-tabs-item-p-v) var(--rs-tabs-item-p-h)}@media (hover:hover) and (pointer:fine){.--variant-pills .buttonContent:hover,.--variant-pills-elevated .buttonContent:hover{background:none}}.--variant-pills-elevated .buttonContent{padding:calc(var(--rs-tabs-item-p-v) - var(--rs-unit-x1) / 2) var(--rs-tabs-item-p-h)}.--variant-pills .list,.--variant-pills-elevated .list{--rs-tabs-gap:var(--rs-unit-x1)}.--variant-pills .selector,.--variant-pills-elevated .selector{background-color:var(--rs-color-background-neutral);height:calc(var(--rs-tab-selection-scale-y) * 1px);opacity:.6;width:calc(var(--rs-tab-selection-scale-x) * 1px);z-index:0}.--direction-column.--variant-pills .selector,.--direction-column.--variant-pills-elevated .selector{left:0}.--direction-row.--variant-pills .selector,.--direction-row.--variant-pills-elevated .selector{top:0}.--variant-pills .--item-active:after,.--variant-pills-elevated .--item-active:after{background-color:var(--rs-color-background-neutral);opacity:.6;z-index:0}.--direction-column.--variant-pills .--item-active:after,.--direction-column.--variant-pills-elevated .--item-active:after{width:100%}.--direction-row.--variant-pills .--item-active:after,.--direction-row.--variant-pills-elevated .--item-active:after{height:100%}.--variant-pills-elevated .list{background:var(--rs-color-background-neutral-faded);border:2px solid transparent;border-radius:var(--rs-radius-medium)}.--variant-pills-elevated .--item-active:after,.--variant-pills-elevated .selector{background:var(--rs-color-background-elevation-raised);box-shadow:var(--rs-shadow-raised);box-sizing:border-box;opacity:1}.--size-medium{--rs-tabs-item-p-v:var(--rs-unit-x2);--rs-tabs-item-p-h:var(--rs-unit-x3)}.--size-large{--rs-tabs-item-p-v:var(--rs-unit-x3);--rs-tabs-item-p-h:var(--rs-unit-x4)}.--item-width-equal{max-width:none}.--item-width-equal .inner{flex-wrap:wrap}.--item-width-equal .list{display:flex}.--item-width-equal .listItem{flex-basis:0;flex-grow:1;margin:0;overflow:hidden}.--item-width-equal .buttonText{overflow:hidden;text-overflow:ellipsis}.--fade-end .inner,[dir=rtl] .--fade-start .inner{--rs-tabs-mid-r:100%;--rs-tabs-stop-r:calc(100% - var(--rs-unit-x1) * 10)}.--fade-start .inner,[dir=rtl] .--fade-end .inner{--rs-tabs-mid-l:0px;--rs-tabs-stop-l:calc(var(--rs-unit-x1) * 10)}@media (pointer:fine){.control{display:flex}.--fade-end .inner,[dir=rtl] .--fade-start .inner{--rs-tabs-mid-r:calc(100% - var(--rs-unit-x1) * 4);--rs-tabs-stop-r:calc(100% - var(--rs-unit-x1) * 10)}.--fade-start .inner,[dir=rtl] .--fade-end .inner{--rs-tabs-mid-l:calc(var(--rs-unit-x1) * 4);--rs-tabs-stop-l:calc(var(--rs-unit-x1) * 10)}}
1
+ @property --rs-tabs-mid-l{syntax:"<length>";initial-value:-24px;inherits:false}@property --rs-tabs-stop-l{syntax:"<length>";initial-value:0;inherits:false}@property --rs-tabs-stop-r{syntax:"<length-percentage>";initial-value:100%;inherits:false}@property --rs-tabs-mid-r{syntax:"<length-percentage>";initial-value:calc(100% + 24px);inherits:false}.root{--rs-tabs-gap:var(--rs-unit-x6);box-sizing:initial;isolation:isolate;max-width:100%;position:relative}.inner:after{background-color:var(--rs-color-border-neutral-faded);content:"";position:absolute;z-index:2}.list{gap:var(--rs-tabs-gap)}.list,.listItem{position:relative}.listItem{flex-shrink:0}.button{overflow:hidden;position:relative;z-index:1;-webkit-tap-highlight-color:transparent}.button,.buttonContent{border-radius:var(--rs-radius-medium);width:100%}.buttonContent{align-items:center;box-sizing:border-box;display:flex}.icon{color:inherit;transition:color var(--rs-duration-fast) var(--rs-easing-standard)}.icon:not(:last-child){margin-inline-end:var(--rs-unit-x2)}[data-rs-keyboard] .radio:focus+.buttonContent{box-shadow:var(--rs-shadow-focus-inset)}.item{color:var(--rs-color-foreground-neutral)}.item:after{content:"";opacity:0;pointer-events:none}.item--active.item:after{opacity:1}.item.item--disabled{color:var(--rs-color-foreground-disabled)}.root:not(:has(.selector)) .item:after{transition:var(--rs-duration-fast) var(--rs-easing-standard);transition-property:opacity}.item:after,.selector{background:var(--rs-color-border-primary);border-radius:var(--rs-radius-medium);position:absolute;z-index:var(--rs-z-index-relative)}.selector{--rs-tab-selection-x:0;--rs-tab-selection-y:0;--rs-tab-selection-scale-x:0;--rs-tab-selection-scale-y:0;transform:translate(calc(var(--rs-tab-selection-x) * 1px),calc(var(--rs-tab-selection-y) * 1px)) translateZ(0);transform-origin:0 0}.selector.selector--hidden{visibility:hidden}.selector.selector--animated{transition:var(--rs-duration-medium) var(--rs-easing-decelerate);transition-property:transform,height,width;will-change:transform,height,width}.control{align-items:center;display:none;inset-block:0;opacity:0;pointer-events:none;position:absolute;transition:var(--rs-duration-medium) var(--rs-easing-decelerate);transition-property:opacity,transform;z-index:var(--rs-z-index-relative)}.control.control--active{opacity:1;pointer-events:all}[dir=rtl] .control{transform:scaleX(-1)}.control.control--next{inset-inline-end:0}.control.control--prev{inset-inline-start:0}.panel{outline:none}[data-rs-keyboard] .panel:focus{box-shadow:var(--rs-shadow-focus)}.panel.panel--hidden{display:none}.--scrollable .inner{overflow:auto;overflow:-moz-scrollbars-none;scrollbar-width:none;-ms-overflow-style:none;mask-image:linear-gradient(to right,transparent 0,transparent var(--rs-tabs-mid-l),#000 var(--rs-tabs-stop-l),#000 var(--rs-tabs-stop-r),transparent var(--rs-tabs-mid-r),transparent 100%);transition:var(--rs-duration-medium) var(--rs-easing-decelerate);transition-property:--rs-tabs-stop-l,--rs-tabs-stop-r,--rs-tabs-mid-l,--rs-tabs-mid-r}.--scrollable .inner::-webkit-scrollbar{display:none}.--direction-row .inner{white-space:nowrap}.--direction-row .inner:after{bottom:0;height:1px;inset-inline:0}.--direction-row .list{align-items:center;display:inline-flex;flex-wrap:nowrap;vertical-align:top}.--direction-row .item:after{inset-inline:0;bottom:0;height:2px}.--direction-row .selector{bottom:0;height:2px;left:0;width:calc(var(--rs-tab-selection-scale-x) * 1px)}.--direction-row .button{box-sizing:initial;margin:var(--rs-unit-x1) calc(var(--rs-unit-x2) * -1);padding:0 var(--rs-unit-x2)}.--direction-row .buttonContent{justify-content:center;padding:var(--rs-tabs-item-p-v) 0}.--direction-column{--rs-tabs-gap:var(--rs-unit-x1)}.--direction-column .inner:after{height:100%;inset-block:0;inset-inline-end:0;width:1px}.--direction-column .list{display:flex;flex-direction:column}.--direction-column .item{padding-inline-end:var(--rs-unit-x1)}.--direction-column .item:after{inset-block:0;inset-inline-end:0;width:2px}.--direction-column .selector{height:calc(var(--rs-tab-selection-scale-y) * 1px);inset-inline-end:0;top:0;width:2px}.--direction-column .button{margin-inline-start:calc(var(--rs-unit-x2) * -1);padding:var(--rs-unit-x2);width:calc(100% + var(--rs-unit-x1))}.--direction-column .buttonContent{justify-content:flex-start}.--variant-borderless .inner:after,.--variant-pills .inner:after,.--variant-pills-elevated .inner:after{content:none}.--variant-pills,.--variant-pills-elevated{--rs-tabs-gap:var(--rs-unit-x1)}.--variant-pills .button,.--variant-pills-elevated .button{margin:0;padding:0}.--variant-pills .buttonContent,.--variant-pills-elevated .buttonContent{margin:0;padding:var(--rs-tabs-item-p-v) var(--rs-tabs-item-p-h)}.--variant-pills .selector,.--variant-pills-elevated .selector{background-color:var(--rs-color-background-neutral);height:calc(var(--rs-tab-selection-scale-y) * 1px);width:calc(var(--rs-tab-selection-scale-x) * 1px);z-index:0}.--variant-pills .item:after,.--variant-pills-elevated .item:after{background-color:var(--rs-color-background-neutral);z-index:0}.--variant-pills-elevated.--direction-column .item:after,.--variant-pills.--direction-column .item:after{width:100%}.--variant-pills-elevated.--direction-column .selector,.--variant-pills.--direction-column .selector{left:0}.--variant-pills-elevated.--direction-row .item:after,.--variant-pills.--direction-row .item:after{height:100%}.--variant-pills-elevated.--direction-row .selector,.--variant-pills.--direction-row .selector{top:0}.--variant-pills .item--active:after,.--variant-pills .selector{opacity:.6}.--variant-pills-elevated .list{background:var(--rs-color-background-neutral-faded);border:2px solid transparent;border-radius:var(--rs-radius-medium)}.--variant-pills-elevated .buttonContent{padding:calc(var(--rs-tabs-item-p-v) - var(--rs-unit-x1) / 2) var(--rs-tabs-item-p-h)}.--variant-pills-elevated .item:after,.--variant-pills-elevated .selector{background:var(--rs-color-background-elevation-raised);border-radius:calc(var(--rs-radius-medium) - 1px);box-shadow:var(--rs-shadow-raised);box-sizing:border-box}.--size-medium{--rs-tabs-item-p-v:var(--rs-unit-x2);--rs-tabs-item-p-h:var(--rs-unit-x3)}.--size-large{--rs-tabs-item-p-v:var(--rs-unit-x3);--rs-tabs-item-p-h:var(--rs-unit-x4)}.--item-width-equal{max-width:none}.--item-width-equal .inner{flex-wrap:wrap}.--item-width-equal .list{display:flex}.--item-width-equal .listItem{flex-basis:0;flex-grow:1;margin:0;overflow:hidden}.--item-width-equal .buttonText{overflow:hidden;text-overflow:ellipsis}.--fade-end .inner,[dir=rtl] .--fade-start .inner{--rs-tabs-mid-r:100%;--rs-tabs-stop-r:calc(100% - var(--rs-unit-x1) * 10)}.--fade-start .inner,[dir=rtl] .--fade-end .inner{--rs-tabs-mid-l:0px;--rs-tabs-stop-l:calc(var(--rs-unit-x1) * 10)}@media (pointer:fine){.control{display:flex}.--fade-end .inner,[dir=rtl] .--fade-start .inner{--rs-tabs-mid-r:calc(100% - var(--rs-unit-x1) * 4);--rs-tabs-stop-r:calc(100% - var(--rs-unit-x1) * 10)}.--fade-start .inner,[dir=rtl] .--fade-end .inner{--rs-tabs-mid-l:calc(var(--rs-unit-x1) * 4);--rs-tabs-stop-l:calc(var(--rs-unit-x1) * 10)}}
@@ -1,5 +1,5 @@
1
- import type React from "react";
2
1
  import type { IconProps } from "../Icon";
2
+ import type React from "react";
3
3
  import type * as G from "../../types/global";
4
4
  export type SelectionState = {
5
5
  left: number;
@@ -53,6 +53,8 @@ export type BaseProps = {
53
53
  size?: "medium" | "large";
54
54
  /** Name of the tab buttons group when used as a form control */
55
55
  name?: string;
56
+ /** Disable the animation of the tab button selection */
57
+ disableSelectionAnimation?: boolean;
56
58
  /** Callback when the active tab value changes */
57
59
  onChange?: (args: {
58
60
  value: string;
@@ -75,7 +77,7 @@ export type UncontrolledProps = BaseProps & {
75
77
  defaultValue?: string;
76
78
  };
77
79
  export type Props = ControlledProps | UncontrolledProps;
78
- export type Context = Pick<BaseProps, "itemWidth" | "onChange" | "variant" | "name" | "direction"> & {
80
+ export type Context = Pick<BaseProps, "itemWidth" | "onChange" | "variant" | "name" | "direction" | "disableSelectionAnimation"> & {
79
81
  size: NonNullable<BaseProps["size"]>;
80
82
  value?: string;
81
83
  setDefaultValue: (value: string) => void;
@@ -12,6 +12,7 @@ export declare const useTabs: (value?: string) => {
12
12
  name?: string;
13
13
  }) => void) | undefined;
14
14
  itemWidth?: "equal" | undefined;
15
+ disableSelectionAnimation?: boolean | undefined;
15
16
  size: NonNullable<T.BaseProps["size"]>;
16
17
  value?: string;
17
18
  setDefaultValue: (value: string) => void;
@@ -4,7 +4,7 @@ import React from "react";
4
4
  import useElementId from "../../hooks/useElementId.js";
5
5
  import { TabsProvider } from "./TabsContext.js";
6
6
  const TabsControlled = (props) => {
7
- const { children, value, onChange, onSilentChange, itemWidth, variant, name, direction = "row", size = "medium", } = props;
7
+ const { children, value, onChange, onSilentChange, itemWidth, variant, name, disableSelectionAnimation, direction = "row", size = "medium", } = props;
8
8
  const id = useElementId();
9
9
  const elActiveRef = React.useRef(null);
10
10
  // eslint-disable-next-line react-hooks/refs
@@ -38,6 +38,7 @@ const TabsControlled = (props) => {
38
38
  elScrollableRef,
39
39
  selection,
40
40
  setSelection,
41
+ disableSelectionAnimation,
41
42
  }, children: children }));
42
43
  };
43
44
  TabsControlled.displayName = "TabsControlled";
@@ -1,22 +1,22 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import React from "react";
4
- import { classNames } from "../../utilities/props.js";
5
- import HiddenInput from "../_private/HiddenInput/index.js";
6
4
  import Actionable from "../Actionable/index.js";
5
+ import HiddenInput from "../HiddenInput/index.js";
7
6
  import Icon from "../Icon/index.js";
8
7
  import Text from "../Text/index.js";
9
8
  import useIsomorphicLayoutEffect from "../../hooks/useIsomorphicLayoutEffect.js";
10
9
  import { findParent } from "../../utilities/dom/index.js";
11
- import { useTabs } from "./TabsContext.js";
10
+ import { classNames } from "../../utilities/props.js";
12
11
  import s from "./Tabs.module.css";
12
+ import { useTabs } from "./TabsContext.js";
13
13
  const TabsItem = React.forwardRef((props, ref) => {
14
14
  const { value, children, icon, href, disabled, attributes } = props;
15
15
  const { onChange, panelId, buttonId, name, size, value: tabsValue, selection, elActiveRef, elPrevActiveRef, elScrollableRef, } = useTabs(value);
16
16
  const itemRef = React.useRef(null);
17
17
  const active = tabsValue === value;
18
18
  const visuallySelected = active && selection.status === "idle";
19
- const itemClassNames = classNames(s.item, visuallySelected && s["--item-active"], disabled && s["--item-disabled"]);
19
+ const itemClassNames = classNames(s.item, visuallySelected && s["item--active"], disabled && s["item--disabled"]);
20
20
  const isFormControl = !!name;
21
21
  const tabAttributes = {
22
22
  role: "tab",
@@ -1,18 +1,18 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import React from "react";
4
- import { classNames } from "../../utilities/props.js";
5
- import useRTL from "../../hooks/useRTL.js";
6
- import useIsomorphicLayoutEffect from "../../hooks/useIsomorphicLayoutEffect.js";
7
- import useKeyboardArrowNavigation from "../../hooks/useKeyboardArrowNavigation.js";
8
- import useFadeSide from "../../hooks/_private/useFadeSide.js";
9
4
  import Actionable from "../Actionable/index.js";
10
5
  import Icon from "../Icon/index.js";
11
- import IconChevronRight from "../../icons/ChevronRight.js";
6
+ import useFadeSide from "../../hooks/_private/useFadeSide.js";
7
+ import useIsomorphicLayoutEffect from "../../hooks/useIsomorphicLayoutEffect.js";
8
+ import useKeyboardArrowNavigation from "../../hooks/useKeyboardArrowNavigation.js";
9
+ import useRTL from "../../hooks/useRTL.js";
12
10
  import IconChevronLeft from "../../icons/ChevronLeft.js";
13
- import TabsItem from "./TabsItem.js";
14
- import { useTabs } from "./TabsContext.js";
11
+ import IconChevronRight from "../../icons/ChevronRight.js";
12
+ import { classNames } from "../../utilities/props.js";
15
13
  import s from "./Tabs.module.css";
14
+ import { useTabs } from "./TabsContext.js";
15
+ import TabsItem from "./TabsItem.js";
16
16
  const findParentItem = (el, rootEl) => {
17
17
  if (el === rootEl || !el)
18
18
  return null;
@@ -22,11 +22,11 @@ const findParentItem = (el, rootEl) => {
22
22
  };
23
23
  const TabsList = (props) => {
24
24
  const { children, className, attributes } = props;
25
- const { value, setDefaultValue, itemWidth, variant, name, direction, size, selection, setSelection, elActiveRef, elPrevActiveRef, elScrollableRef, } = useTabs();
25
+ const { value, setDefaultValue, itemWidth, variant, name, direction, size, selection, setSelection, elActiveRef, elPrevActiveRef, elScrollableRef, disableSelectionAnimation, } = useTabs();
26
26
  const [rtl] = useRTL();
27
27
  const fadeSide = useFadeSide(elScrollableRef, { disabled: itemWidth === "equal" });
28
28
  const rootClassNames = classNames(s.root, size && s[`--size-${size}`], direction && s[`--direction-${direction}`], itemWidth && s[`--item-width-${itemWidth}`], variant && s[`--variant-${variant}`], fadeSide && s["--scrollable"], (fadeSide === "start" || fadeSide === "both") && s["--fade-start"], (fadeSide === "end" || fadeSide === "both") && s["--fade-end"], className);
29
- const selectorClassNames = classNames(s.selector, selection.status === "idle" && s["--selector-hidden"], selection.status === "animated" && s["--selector-animated"]);
29
+ const selectorClassNames = classNames(s.selector, selection.status === "idle" && s["selector--hidden"], selection.status === "animated" && s["selector--animated"]);
30
30
  const handleNextClick = () => {
31
31
  elScrollableRef.current.scrollBy({
32
32
  // Using ceil here since during the second navigation half of the value may be
@@ -79,8 +79,12 @@ const TabsList = (props) => {
79
79
  const selectionStyle = getElementSelectionStyle(elPrevActiveRef.current);
80
80
  if (!selectionStyle)
81
81
  return;
82
+ if (disableSelectionAnimation) {
83
+ setSelection({ ...selectionStyle, status: "idle" });
84
+ return;
85
+ }
82
86
  setSelection({ ...selectionStyle, status: "prepared" });
83
- }, [value, getElementSelectionStyle]);
87
+ }, [value, getElementSelectionStyle, disableSelectionAnimation]);
84
88
  useIsomorphicLayoutEffect(() => {
85
89
  if (selection.status !== "prepared" || !elActiveRef.current)
86
90
  return;
@@ -94,12 +98,12 @@ const TabsList = (props) => {
94
98
  return null;
95
99
  const props = child.props;
96
100
  return (_jsx("div", { className: s.listItem, "data-rs-tabs-item": true, children: child }, props.value || child.key || index));
97
- }), _jsx("div", { onTransitionEnd: handleTransitionEnd, className: selectorClassNames, style: {
101
+ }), !disableSelectionAnimation && (_jsx("div", { onTransitionEnd: handleTransitionEnd, className: selectorClassNames, style: {
98
102
  "--rs-tab-selection-x": selection.left,
99
103
  "--rs-tab-selection-y": selection.top,
100
104
  "--rs-tab-selection-scale-x": selection.scaleX,
101
105
  "--rs-tab-selection-scale-y": selection.scaleY,
102
- } })] }) }), _jsx(Actionable, { onClick: handlePrevClick, touchHitbox: true, attributes: { "aria-hidden": true, tabIndex: -1 }, className: [
106
+ } }))] }) }), _jsx(Actionable, { onClick: handlePrevClick, touchHitbox: true, attributes: { "aria-hidden": true, tabIndex: -1 }, className: [
103
107
  s.control,
104
108
  s["control--prev"],
105
109
  (fadeSide === "start" || fadeSide === "both") && s["control--active"],
@@ -1,17 +1,17 @@
1
1
  "use client";
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import React from "react";
4
- import { classNames } from "../../utilities/props.js";
5
4
  import { getFocusableElements } from "../../utilities/a11y/index.js";
6
- import { useTabs } from "./TabsContext.js";
5
+ import { classNames } from "../../utilities/props.js";
7
6
  import s from "./Tabs.module.css";
7
+ import { useTabs } from "./TabsContext.js";
8
8
  const TabsPanel = (props) => {
9
9
  const { value: panelValue, children, className, attributes } = props;
10
10
  const { value, panelId, buttonId } = useTabs(panelValue);
11
11
  const [needsTabIndex, setNeedsTabIndex] = React.useState(true);
12
12
  const rootRef = React.useRef(null);
13
13
  const active = panelValue === value;
14
- const panelClassNames = classNames(s.panel, !active && s["--panel-hidden"], className);
14
+ const panelClassNames = classNames(s.panel, !active && s["panel--hidden"], className);
15
15
  React.useEffect(() => {
16
16
  const el = rootRef.current;
17
17
  if (!el)