reshaped 3.9.0-canary.1 → 3.9.0-canary.11

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 +5 -5
  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,37 +1,26 @@
1
1
  import React from "react";
2
2
  import useRTL from "../../hooks/useRTL.js";
3
3
  import flyout from "./utilities/flyout.js";
4
- import { defaultStyles, resetStyles } from "./Flyout.constants.js";
5
4
  const flyoutReducer = (state, action) => {
6
5
  switch (action.type) {
7
6
  case "render":
8
- if (state.status !== "idle")
9
- return state;
10
7
  // Disable events before it's positioned to avoid mouseleave getting triggered
11
- return { ...state, status: "rendered", styles: { pointerEvents: "none", ...resetStyles } };
8
+ return { ...state, status: "rendered" };
12
9
  case "position":
13
- if (!action.payload.sync && state.status !== "rendered")
14
- return state;
15
- if (action.payload.sync && state.status !== "visible")
16
- return state;
17
10
  return {
18
11
  ...state,
19
- status: action.payload.sync ? "visible" : "positioned",
12
+ status: action.payload.sync ? state.status : "positioned",
20
13
  position: action.payload.position,
21
- styles: { ...defaultStyles, ...action.payload.styles },
22
14
  };
23
15
  case "show":
16
+ // Checking because we're positioning inside nextAnimationFrame
24
17
  if (state.status !== "positioned")
25
18
  return state;
26
19
  return { ...state, status: "visible" };
27
20
  case "hide":
28
- if (state.status !== "visible")
29
- return state;
30
21
  return { ...state, status: "hidden" };
31
22
  case "remove":
32
- if (state.status !== "hidden" && state.status !== "visible")
33
- return state;
34
- return { ...state, status: "idle", styles: resetStyles };
23
+ return { ...state, status: "idle" };
35
24
  default:
36
25
  throw new Error("[Reshaped] Invalid flyout reducer type");
37
26
  }
@@ -47,7 +36,6 @@ const useFlyout = (args) => {
47
36
  const [isRTL] = useRTL();
48
37
  const [state, dispatch] = React.useReducer(flyoutReducer, {
49
38
  position: defaultPosition,
50
- styles: defaultStyles,
51
39
  status: "idle",
52
40
  });
53
41
  const render = React.useCallback(() => {
@@ -114,13 +102,12 @@ const useFlyout = (args) => {
114
102
  }, [state.status, updatePosition]);
115
103
  return React.useMemo(() => ({
116
104
  position: state.position,
117
- styles: state.styles,
118
105
  status: state.status,
119
106
  updatePosition,
120
107
  render,
121
108
  hide,
122
109
  remove,
123
110
  show,
124
- }), [render, updatePosition, hide, remove, show, state.position, state.styles, state.status]);
111
+ }), [render, updatePosition, hide, remove, show, state.position, state.status]);
125
112
  };
126
113
  export default useFlyout;
@@ -13,13 +13,13 @@ declare const calculatePosition: (args: {
13
13
  } & Pick<T.Options, "position" | "rtl" | "width" | "contentGap" | "contentShift" | "fallbackAdjustLayout" | "fallbackMinWidth" | "fallbackMinHeight">) => {
14
14
  position: T.Position;
15
15
  styles: {
16
- left: number | undefined;
17
- right: number | undefined;
18
- top: number | undefined;
19
- bottom: number | undefined;
16
+ left: string | null;
17
+ right: string | null;
18
+ top: string | null;
19
+ bottom: string | null;
20
20
  transform: string;
21
- height: number | undefined;
22
- width: string | number | undefined;
21
+ height: string | null;
22
+ width: string | null;
23
23
  };
24
24
  boundaries: {
25
25
  left: number;
@@ -159,13 +159,13 @@ const calculatePosition = (args) => {
159
159
  return {
160
160
  position,
161
161
  styles: {
162
- left: right === null ? 0 : undefined,
163
- right: right === null ? undefined : 0,
164
- top: bottom === null ? 0 : undefined,
165
- bottom: bottom === null ? undefined : 0,
162
+ left: right === null ? "0px" : null,
163
+ right: right === null ? null : "0px",
164
+ top: bottom === null ? "0px" : null,
165
+ bottom: bottom === null ? null : "0px",
166
166
  transform: `translate(${translateX}px, ${translateY}px)`,
167
- height,
168
- width: width ?? passedWidth,
167
+ height: height !== undefined ? `${height}px` : null,
168
+ width: width !== undefined ? `${width}px` : (passedWidth ?? null),
169
169
  },
170
170
  boundaries: {
171
171
  left,
@@ -1,5 +1,5 @@
1
- import type * as G from "../../../types/global";
2
1
  import type * as T from "../Flyout.types";
2
+ import type * as G from "../../../types/global";
3
3
  /**
4
4
  * Set position of the target element to fit on the screen
5
5
  */
@@ -1,8 +1,8 @@
1
1
  import { getRectFromCoordinates, getShadowRoot, findClosestPositionContainer } from "../../../utilities/dom/index.js";
2
+ import { resetStyles } from "../Flyout.constants.js";
2
3
  import calculatePosition from "./calculatePosition.js";
3
4
  import getPositionFallbacks from "./getPositionFallbacks.js";
4
5
  import isFullyVisible from "./isFullyVisible.js";
5
- import { resetStyles } from "../Flyout.constants.js";
6
6
  /**
7
7
  * Set position of the target element to fit on the screen
8
8
  */
@@ -79,6 +79,9 @@ const flyout = (args) => {
79
79
  calculated = applyPosition(lastUsedPosition);
80
80
  onPositionChoose(calculated.position);
81
81
  targetClone.parentNode?.removeChild(targetClone);
82
- return calculated;
82
+ Object.entries(calculated.styles).forEach(([key, value]) => {
83
+ flyoutEl.style.setProperty(key, value);
84
+ });
85
+ return { position: calculated.position };
83
86
  };
84
87
  export default flyout;
@@ -2,8 +2,8 @@
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import Text from "../Text/index.js";
4
4
  import { useFormControlPrivate } from "./FormControl.context.js";
5
- import { getCaptionId } from "./FormControl.utilities.js";
6
5
  import s from "./FormControl.module.css";
6
+ import { getCaptionId } from "./FormControl.utilities.js";
7
7
  const FormControlCaption = (props) => {
8
8
  const { children, variant, disabled } = props;
9
9
  const { attributes, size, helperRef, errorRef } = useFormControlPrivate();
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { useFormControlPrivate } from "./FormControl.context.js";
4
3
  import Text from "../Text/index.js";
4
+ import { useFormControlPrivate } from "./FormControl.context.js";
5
5
  import s from "./FormControl.module.css";
6
6
  const FormControlLabel = (props) => {
7
7
  const { children } = props;
@@ -1,7 +1,7 @@
1
1
  import FormControl from "./FormControl";
2
- import FormControlLabel from "./FormControlLabel";
3
- import FormControlHelper from "./FormControlHelper";
4
2
  import FormControlError from "./FormControlError";
3
+ import FormControlHelper from "./FormControlHelper";
4
+ import FormControlLabel from "./FormControlLabel";
5
5
  declare const FormControlRoot: typeof FormControl & {
6
6
  Label: typeof FormControlLabel;
7
7
  Helper: typeof FormControlHelper;
@@ -1,7 +1,7 @@
1
1
  import FormControl from "./FormControl.js";
2
- import FormControlLabel from "./FormControlLabel.js";
3
- import FormControlHelper from "./FormControlHelper.js";
4
2
  import FormControlError from "./FormControlError.js";
3
+ import FormControlHelper from "./FormControlHelper.js";
4
+ import FormControlLabel from "./FormControlLabel.js";
5
5
  const FormControlRoot = FormControl;
6
6
  FormControlRoot.Label = FormControlLabel;
7
7
  FormControlRoot.Helper = FormControlHelper;
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { classNames, responsiveVariables, responsivePropDependency } from "../../utilities/props.js";
3
2
  import { resolveMixin } from "../../styles/mixin.js";
3
+ import { classNames, responsiveVariables, responsivePropDependency } from "../../utilities/props.js";
4
4
  import s from "./Grid.module.css";
5
5
  export const GridItem = (props) => {
6
6
  const { area, colStart, colEnd, colSpan, rowStart, rowEnd, rowSpan, children, className,
@@ -1,7 +1,7 @@
1
- import type React from "react";
2
1
  import type { Property } from "csstype";
3
- import type * as G from "../../types/global";
2
+ import type React from "react";
4
3
  import type * as TStyles from "../../styles/types";
4
+ import type * as G from "../../types/global";
5
5
  export type Props<TagName extends keyof React.JSX.IntrinsicElements = "div"> = {
6
6
  /** Gap between grid items */
7
7
  gap?: G.Responsive<number>;
@@ -0,0 +1,34 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useCheckboxGroup } from "../CheckboxGroup/index.js";
3
+ import { useFormControl } from "../FormControl/index.js";
4
+ import { useRadioGroup } from "../RadioGroup/index.js";
5
+ import { classNames } from "../../utilities/props.js";
6
+ import s from "./HiddenInput.module.css";
7
+ const HiddenInput = (props) => {
8
+ const { type, value, className, onBlur, onFocus, onChange, attributes } = props;
9
+ const rootClassNames = classNames(s.root, className);
10
+ const checkboxGroup = useCheckboxGroup();
11
+ const radioGroup = useRadioGroup();
12
+ const formControl = useFormControl();
13
+ const name = checkboxGroup?.name ?? radioGroup?.name ?? props.name;
14
+ const disabled = formControl?.disabled ?? props.disabled ?? checkboxGroup?.disabled ?? radioGroup?.disabled;
15
+ const checked = (value && checkboxGroup?.value?.includes(value)) ||
16
+ (value && radioGroup?.value === value) ||
17
+ props.checked;
18
+ const defaultChecked = checkboxGroup ? undefined : props.defaultChecked;
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 (checkboxGroup?.onChange)
27
+ checkboxGroup.onChange(changeArgs);
28
+ if (radioGroup?.onChange)
29
+ radioGroup.onChange(changeArgs);
30
+ };
31
+ return (_jsx("input", { ...attributes, className: rootClassNames, type: type, name: name, value: value, checked: checked, defaultChecked: defaultChecked, disabled: disabled, onChange: handleChange, onFocus: onFocus || attributes?.onFocus, onBlur: onBlur || attributes?.onBlur }));
32
+ };
33
+ HiddenInput.displayName = "HiddenInput";
34
+ export default HiddenInput;
@@ -0,0 +1,26 @@
1
+ import React from "react";
2
+ import type * as G from "../../types/global";
3
+ export type Props = {
4
+ /** Name of the input element */
5
+ name?: string;
6
+ /** Value of the input element that is used for form submission */
7
+ value?: string;
8
+ /** Checked state of the input element, enables controlled mode */
9
+ checked?: boolean;
10
+ /** Default checked state of the input element, enables uncontrolled mode */
11
+ defaultChecked?: boolean;
12
+ /** Disable the input element */
13
+ disabled?: boolean;
14
+ /** Callback when the input value changes */
15
+ onChange?: G.ChangeHandler<boolean>;
16
+ /** Callback when the input or label is focused */
17
+ onFocus?: (e: React.FocusEvent) => void;
18
+ /** Callback when the input or label is blurred */
19
+ onBlur?: (e: React.FocusEvent) => void;
20
+ /** Type of the input element */
21
+ type: "checkbox" | "radio";
22
+ /** Additional classname for the root element */
23
+ className?: G.ClassName;
24
+ /** Additional attributes for the input element */
25
+ attributes?: G.Attributes<"input">;
26
+ };
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import React from "react";
3
- import { classNames } from "../../utilities/props.js";
4
3
  import { resolveMixin } from "../../styles/mixin.js";
4
+ import { classNames } from "../../utilities/props.js";
5
5
  import s from "./Icon.module.css";
6
6
  const Icon = (props) => {
7
7
  const { svg: Component, className, color, size = "1em", autoWidth, attributes } = props;
@@ -1,16 +1,18 @@
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 { resolveMixin } from "../../styles/mixin.js";
5
+ import { classNames } from "../../utilities/props.js";
6
6
  import s from "./Image.module.css";
7
7
  const Image = (props) => {
8
- const { src, alt, width, maxWidth, height, aspectRatio, onLoad, onError, fallback, displayMode = "cover", borderRadius, className, attributes, imageAttributes: passedImageAttributes, renderImage, } = props;
8
+ const { src, alt, width, maxWidth, height, aspectRatio, onLoad, onError, fallback, outline, displayMode = "cover", borderRadius, className, attributes, imageAttributes: passedImageAttributes, renderImage, } = props;
9
9
  const [status, setStatus] = React.useState("loading");
10
10
  const mixinStyles = resolveMixin({ radius: borderRadius, width, height, maxWidth, aspectRatio });
11
- const baseClassNames = classNames(s.root, mixinStyles.classNames, displayMode && s[`--display-mode-${displayMode}`], className);
12
- const imgClassNames = classNames(s.image, baseClassNames);
13
- const fallbackClassNames = classNames(s.fallback, baseClassNames);
11
+ const rootClassNames = classNames(s.root, mixinStyles.classNames, outline && s["--outline"], className);
12
+ const imageClassNames = classNames([
13
+ s.image,
14
+ displayMode && s[`image--display-mode-${displayMode}`],
15
+ ]);
14
16
  const isFallback = (status === "error" || !src) && !!fallback;
15
17
  const style = {
16
18
  ...attributes?.style,
@@ -19,10 +21,12 @@ const Image = (props) => {
19
21
  const handleLoad = (e) => {
20
22
  setStatus("success");
21
23
  onLoad?.(e);
24
+ passedImageAttributes?.onLoad?.(e);
22
25
  };
23
26
  const handleError = (e) => {
24
27
  setStatus("error");
25
28
  onError?.(e);
29
+ passedImageAttributes?.onError?.(e);
26
30
  };
27
31
  React.useEffect(() => {
28
32
  setStatus("loading");
@@ -34,13 +38,13 @@ const Image = (props) => {
34
38
  src: fallback ?? "",
35
39
  alt: alt ?? "",
36
40
  role: alt ? undefined : "presentation",
37
- className: fallbackClassNames,
41
+ className: imageClassNames,
38
42
  style,
39
43
  };
40
44
  // eslint-disable-next-line jsx-a11y/alt-text
41
45
  return renderImage ? renderImage(imageAttributes) : _jsx("img", { ...imageAttributes });
42
46
  }
43
- return (_jsx("div", { ...attributes, className: fallbackClassNames, style: style, children: fallback }));
47
+ return (_jsx("div", { ...attributes, className: classNames([s.fallback, rootClassNames]), style: style, children: fallback }));
44
48
  }
45
49
  const imageAttributes = {
46
50
  ...attributes,
@@ -50,11 +54,12 @@ const Image = (props) => {
50
54
  role: alt ? undefined : "presentation",
51
55
  onLoad: handleLoad,
52
56
  onError: handleError,
53
- className: imgClassNames,
57
+ className: outline ? imageClassNames : classNames([imageClassNames, rootClassNames]),
54
58
  style,
55
59
  };
56
60
  // eslint-disable-next-line jsx-a11y/alt-text
57
- return renderImage ? renderImage(imageAttributes) : _jsx("img", { ...imageAttributes });
61
+ const imageNode = renderImage ? renderImage(imageAttributes) : _jsx("img", { ...imageAttributes });
62
+ return outline ? (_jsx("div", { ...attributes, className: rootClassNames, style: style, children: imageNode })) : (imageNode);
58
63
  };
59
64
  Image.displayName = "Image";
60
65
  export default Image;
@@ -1 +1 @@
1
- .root{display:block;max-width:100%}.fallback{align-items:center;background:var(--rs-color-background-neutral-faded);color:var(--rs-color-foreground-disabled);display:flex;justify-content:center}.--display-mode-cover{object-fit:cover!important}.--display-mode-contain{object-fit:scale-down!important}
1
+ .root{position:relative}.root .image{border-radius:inherit;height:100%;width:100%}.image{display:block;max-width:100%}.fallback{align-items:center;background:var(--rs-color-background-neutral-faded);color:var(--rs-color-foreground-disabled);display:flex;justify-content:center}.--outline:after{border:1px solid var(--rs-color-border-neutral-faded);border-radius:inherit;content:"";inset:0;pointer-events:none;position:absolute}.image--display-mode-cover{object-fit:cover!important}.image--display-mode-contain{object-fit:scale-down!important}
@@ -1,6 +1,6 @@
1
1
  import type React from "react";
2
- import type * as G from "../../types/global";
3
2
  import type * as TStyles from "../../styles/types";
3
+ import type * as G from "../../types/global";
4
4
  export type Props = {
5
5
  /** Image URL */
6
6
  src?: string;
@@ -15,9 +15,11 @@ export type Props = {
15
15
  /** Image aspect ratio, width / height */
16
16
  aspectRatio?: G.Responsive<number>;
17
17
  /** Image border radius, based on the radius tokens */
18
- borderRadius?: Extract<TStyles.Radius, "small" | "medium" | "large">;
18
+ borderRadius?: Extract<TStyles.Radius, "small" | "medium" | "large" | "circular">;
19
19
  /** Image display mode for controlling how it fits into the provided boundaries */
20
20
  displayMode?: "cover" | "contain";
21
+ /** Add a semi-transparent border on top of the image for better background contrast */
22
+ outline?: boolean;
21
23
  /** Image on load event */
22
24
  onLoad?: (e: React.SyntheticEvent) => void;
23
25
  /** Image on error event */
@@ -1,8 +1,8 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { forwardRef } from "react";
3
- import { classNames } from "../../utilities/props.js";
4
3
  import Actionable from "../Actionable/index.js";
5
4
  import Icon from "../Icon/index.js";
5
+ import { classNames } from "../../utilities/props.js";
6
6
  import s from "./Link.module.css";
7
7
  const Link = forwardRef((props, ref) => {
8
8
  const { icon, disabled, href, color = "primary", variant = "underline", className, children, attributes, type, onClick, stopPropagation, render, } = props;
@@ -1,9 +1,9 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { forwardRef } from "react";
3
- import { classNames, responsiveClassNames, responsivePropDependency } from "../../utilities/props.js";
4
3
  import Actionable from "../Actionable/index.js";
5
4
  import Icon from "../Icon/index.js";
6
5
  import View from "../View/index.js";
6
+ import { classNames, responsiveClassNames, responsivePropDependency } from "../../utilities/props.js";
7
7
  import s from "./MenuItem.module.css";
8
8
  const MenuItem = forwardRef((props, ref) => {
9
9
  const { icon, startSlot, endSlot, children, color = "primary", selected, highlighted, disabled, onClick, href, size = "medium", roundedCorners, stopPropagation, as, render, className, attributes, } = props;
@@ -1,6 +1,6 @@
1
- import type React from "react";
2
- import type { IconProps } from "../Icon";
3
1
  import type { ActionableProps } from "../Actionable";
2
+ import type { IconProps } from "../Icon";
3
+ import type React from "react";
4
4
  import type * as G from "../../types/global";
5
5
  export type Size = "small" | "medium" | "large";
6
6
  export type Props = Pick<ActionableProps, "attributes" | "className" | "disabled" | "children" | "href" | "onClick" | "as" | "stopPropagation" | "render"> & {
@@ -1,16 +1,16 @@
1
1
  "use client";
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import React from "react";
4
- import { classNames, responsiveVariables, responsiveClassNames, responsivePropDependency, } from "../../utilities/props.js";
5
- import { enableUserSelect, disableUserSelect } from "../../utilities/dom/index.js";
6
- import { enableScroll, disableScroll } from "../../utilities/scroll/index.js";
7
- import useResponsiveClientValue from "../../hooks/useResponsiveClientValue.js";
8
- import Text from "../Text/index.js";
9
4
  import Overlay from "../Overlay/index.js";
5
+ import Text from "../Text/index.js";
10
6
  import useElementId from "../../hooks/useElementId.js";
11
- import s from "./Modal.module.css";
12
- import { resolveMixin } from "../../styles/mixin.js";
13
7
  import useHandlerRef from "../../hooks/useHandlerRef.js";
8
+ import useResponsiveClientValue from "../../hooks/useResponsiveClientValue.js";
9
+ import { resolveMixin } from "../../styles/mixin.js";
10
+ import { enableUserSelect, disableUserSelect } from "../../utilities/dom/index.js";
11
+ import { classNames, responsiveVariables, responsiveClassNames } from "../../utilities/props.js";
12
+ import { enableScroll, disableScroll } from "../../utilities/scroll/index.js";
13
+ import s from "./Modal.module.css";
14
14
  const DRAG_THRESHOLD = 32;
15
15
  const DRAG_OPPOSITE_THRESHOLD = 100;
16
16
  const DRAG_EDGE_BOUNDARY = 32;
@@ -168,7 +168,7 @@ const Modal = (props) => {
168
168
  setHideProgress(progress / 2);
169
169
  dragDistanceRef.current = dragDistance;
170
170
  }, [dragDistance, clientPosition, rootRef]);
171
- return (_jsx(Overlay, { onClose: onClose, onOpen: onOpen, onAfterClose: onAfterClose, onAfterOpen: onAfterOpen, disableCloseOnClick: disableCloseOnOutsideClick, active: active, transparent: transparentOverlay || hideProgress, blurred: blurredOverlay, overflow: responsivePropDependency(position, (p) => (p === "center" ? "auto" : "hidden")), className: overlayClassName, containerRef: containerRef, attributes: {
171
+ return (_jsx(Overlay, { onClose: onClose, onOpen: onOpen, onAfterClose: onAfterClose, onAfterOpen: onAfterOpen, disableCloseOnClick: disableCloseOnOutsideClick, active: active, transparent: transparentOverlay || hideProgress, blurred: blurredOverlay, overflow: clientPosition === "center" ? "auto" : "hidden", className: overlayClassName, containerRef: containerRef, attributes: {
172
172
  onTouchStart: handleDragStart,
173
173
  }, children: ({ active }) => {
174
174
  const rootClassNames = classNames(s.root, className, active && s["--active"], dragging && s["--dragging"], overflow && s[`--overflow-${overflow}`], containerRef && s["--contained"], responsiveClassNames(s, "--position", position), mixinStyles.classNames);
@@ -1 +1 @@
1
- .root{--rs-modal-container-width:100vw;background:var(--rs-color-background-elevation-overlay);box-shadow:var(--rs-shadow-overlay);color:var(--rs-color-foreground-neutral);outline:none;transition:var(--rs-easing-accelerate) var(--rs-duration-fast);transition-property:transform,opacity;will-change:transform}[data-rs-keyboard] .root:focus{box-shadow:var(--rs-shadow-focus)}.root.--contained{--rs-modal-container-width:100%}.root{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);--rs-modal-size-m:var(--rs-modal-size-s);--rs-modal-size-l:var(--rs-modal-size-m);--rs-modal-size-xl:var(--rs-modal-size-l);--rs-modal-size:var(--rs-modal-size-s)}.--position-center{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:var(--rs-radius-large);height:auto;inset:0;margin:var(--rs-unit-x4);max-height:none;max-width:calc(var(--rs-modal-container-width) - var(--rs-unit-x8));opacity:0;overflow:hidden;position:relative;transform:scale(.96);width:var(--rs-modal-size)}.--position-center.--active,[dir=rtl] .--position-center.--active{opacity:1;transform:translate(0) scale(1)!important}.--position-bottom{--rs-modal-size-s:auto;border-radius:var(--rs-radius-large) var(--rs-radius-large) 0 0;height:var(--rs-modal-size);inset:0;inset-block-start:auto;margin:0;margin-top:var(--rs-unit-x4);max-height:calc(var(--rs-modal-container-width) - var(--rs-unit-x4));max-width:100%;opacity:1;overflow:auto;position:absolute;transform:translateY(100%);width:100%}.--position-bottom.--active,[dir=rtl] .--position-bottom.--active{transform:translateY(max(var(--rs-modal-drag,0px),0px)) scale(1)!important}.--position-start{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:0;height:100%;inset:0;inset-inline-end:auto;margin:0;margin-inline-end:var(--rs-unit-x4);max-height:100%;max-width:calc(var(--rs-modal-container-width) - var(--rs-unit-x4));opacity:1;overflow:auto;position:absolute;transform:translate(-100%);width:var(--rs-modal-size)}[dir=rtl] .--position-start{transform:translate(100%)}.--position-start.--active,[dir=rtl] .--position-start.--active{transform:translate(min(var(--rs-modal-drag,0px),0px)) scale(1)!important}.--position-end{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:0;height:100%;inset:0;inset-inline-start:auto;margin:0;margin-inline-start:var(--rs-unit-x4);max-height:100%;max-width:calc(var(--rs-modal-container-width) - var(--rs-unit-x4));opacity:1;overflow:auto;position:absolute;transform:translate(100%);width:var(--rs-modal-size)}[dir=rtl] .--position-end{transform:translate(-100%)}.--position-end.--active,[dir=rtl] .--position-end.--active{transform:translate(max(var(--rs-modal-drag,0px),0px)) scale(1)!important}.--position-full-screen{--rs-modal-size-s:100%;border-radius:0;height:100%;inset:0;inset-block-start:auto;margin:0;max-height:100%;max-width:var(--rs-modal-container-width);opacity:0;overflow:auto;position:absolute;transform:translateY(var(--rs-unit-x4));width:100%}.--position-full-screen.--active,[dir=rtl] .--position-full-screen.--active{opacity:1;transform:translate(0)!important}.--active,[dir=rtl] .--active{transition-timing-function:var(--rs-easing-decelerate)}.--dragging{transition:none}.--overflow-visible{overflow:visible}@media (--rs-viewport-m ){.root{--rs-modal-size:var(--rs-modal-size-m)}.--position-center--m{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:var(--rs-radius-large);height:auto;inset:0;margin:var(--rs-unit-x4);max-height:none;max-width:calc(var(--rs-modal-container-width) - var(--rs-unit-x8));opacity:0;overflow:hidden;position:relative;transform:scale(.96);width:var(--rs-modal-size)}.--position-center--m.--active,[dir=rtl] .--position-center--m.--active{opacity:1;transform:translate(0) scale(1)!important}.--position-bottom--m{--rs-modal-size-s:auto;border-radius:var(--rs-radius-large) var(--rs-radius-large) 0 0;height:var(--rs-modal-size);inset:0;inset-block-start:auto;margin:0;margin-top:var(--rs-unit-x4);max-height:calc(var(--rs-modal-container-width) - var(--rs-unit-x4));max-width:100%;opacity:1;overflow:auto;position:absolute;transform:translateY(100%);width:100%}.--position-bottom--m.--active,[dir=rtl] .--position-bottom--m.--active{transform:translateY(max(var(--rs-modal-drag,0px),0px)) scale(1)!important}.--position-start--m{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:0;height:100%;inset:0;inset-inline-end:auto;margin:0;margin-inline-end:var(--rs-unit-x4);max-height:100%;max-width:calc(var(--rs-modal-container-width) - var(--rs-unit-x4));opacity:1;overflow:auto;position:absolute;transform:translate(-100%);width:var(--rs-modal-size)}[dir=rtl] .--position-start--m{transform:translate(100%)}.--position-start--m.--active,[dir=rtl] .--position-start--m.--active{transform:translate(min(var(--rs-modal-drag,0px),0px)) scale(1)!important}.--position-end--m{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:0;height:100%;inset:0;inset-inline-start:auto;margin:0;margin-inline-start:var(--rs-unit-x4);max-height:100%;max-width:calc(var(--rs-modal-container-width) - var(--rs-unit-x4));opacity:1;overflow:auto;position:absolute;transform:translate(100%);width:var(--rs-modal-size)}[dir=rtl] .--position-end--m{transform:translate(-100%)}.--position-end--m.--active,[dir=rtl] .--position-end--m.--active{transform:translate(max(var(--rs-modal-drag,0px),0px)) scale(1)!important}.--position-full-screen--m{--rs-modal-size-s:100%;border-radius:0;height:100%;inset:0;inset-block-start:auto;margin:0;max-height:100%;max-width:var(--rs-modal-container-width);opacity:0;overflow:auto;position:absolute;transform:translateY(var(--rs-unit-x4));width:100%}.--position-full-screen--m.--active,[dir=rtl] .--position-full-screen--m.--active{opacity:1;transform:translate(0)!important}}@media (--rs-viewport-l ){.root{--rs-modal-size:var(--rs-modal-size-l)}.--position-center--l{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:var(--rs-radius-large);height:auto;inset:0;margin:var(--rs-unit-x4);max-height:none;max-width:calc(var(--rs-modal-container-width) - var(--rs-unit-x8));opacity:0;overflow:hidden;position:relative;transform:scale(.96);width:var(--rs-modal-size)}.--position-center--l.--active,[dir=rtl] .--position-center--l.--active{opacity:1;transform:translate(0) scale(1)!important}.--position-bottom--l{--rs-modal-size-s:auto;border-radius:var(--rs-radius-large) var(--rs-radius-large) 0 0;height:var(--rs-modal-size);inset:0;inset-block-start:auto;margin:0;margin-top:var(--rs-unit-x4);max-height:calc(var(--rs-modal-container-width) - var(--rs-unit-x4));max-width:100%;opacity:1;overflow:auto;position:absolute;transform:translateY(100%);width:100%}.--position-bottom--l.--active,[dir=rtl] .--position-bottom--l.--active{transform:translateY(max(var(--rs-modal-drag,0px),0px)) scale(1)!important}.--position-start--l{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:0;height:100%;inset:0;inset-inline-end:auto;margin:0;margin-inline-end:var(--rs-unit-x4);max-height:100%;max-width:calc(var(--rs-modal-container-width) - var(--rs-unit-x4));opacity:1;overflow:auto;position:absolute;transform:translate(-100%);width:var(--rs-modal-size)}[dir=rtl] .--position-start--l{transform:translate(100%)}.--position-start--l.--active,[dir=rtl] .--position-start--l.--active{transform:translate(min(var(--rs-modal-drag,0px),0px)) scale(1)!important}.--position-end--l{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:0;height:100%;inset:0;inset-inline-start:auto;margin:0;margin-inline-start:var(--rs-unit-x4);max-height:100%;max-width:calc(var(--rs-modal-container-width) - var(--rs-unit-x4));opacity:1;overflow:auto;position:absolute;transform:translate(100%);width:var(--rs-modal-size)}[dir=rtl] .--position-end--l{transform:translate(-100%)}.--position-end--l.--active,[dir=rtl] .--position-end--l.--active{transform:translate(max(var(--rs-modal-drag,0px),0px)) scale(1)!important}.--position-full-screen--l{--rs-modal-size-s:100%;border-radius:0;height:100%;inset:0;inset-block-start:auto;margin:0;max-height:100%;max-width:var(--rs-modal-container-width);opacity:0;overflow:auto;position:absolute;transform:translateY(var(--rs-unit-x4));width:100%}.--position-full-screen--l.--active,[dir=rtl] .--position-full-screen--l.--active{opacity:1;transform:translate(0)!important}}@media (--rs-viewport-xl ){.root{--rs-modal-size:var(--rs-modal-size-xl)}.--position-center--xl{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:var(--rs-radius-large);height:auto;inset:0;margin:var(--rs-unit-x4);max-height:none;max-width:calc(var(--rs-modal-container-width) - var(--rs-unit-x8));opacity:0;overflow:hidden;position:relative;transform:scale(.96);width:var(--rs-modal-size)}.--position-center--xl.--active,[dir=rtl] .--position-center--xl.--active{opacity:1;transform:translate(0) scale(1)!important}.--position-bottom--xl{--rs-modal-size-s:auto;border-radius:var(--rs-radius-large) var(--rs-radius-large) 0 0;height:var(--rs-modal-size);inset:0;inset-block-start:auto;margin:0;margin-top:var(--rs-unit-x4);max-height:calc(var(--rs-modal-container-width) - var(--rs-unit-x4));max-width:100%;opacity:1;overflow:auto;position:absolute;transform:translateY(100%);width:100%}.--position-bottom--xl.--active,[dir=rtl] .--position-bottom--xl.--active{transform:translateY(max(var(--rs-modal-drag,0px),0px)) scale(1)!important}.--position-start--xl{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:0;height:100%;inset:0;inset-inline-end:auto;margin:0;margin-inline-end:var(--rs-unit-x4);max-height:100%;max-width:calc(var(--rs-modal-container-width) - var(--rs-unit-x4));opacity:1;overflow:auto;position:absolute;transform:translate(-100%);width:var(--rs-modal-size)}[dir=rtl] .--position-start--xl{transform:translate(100%)}.--position-start--xl.--active,[dir=rtl] .--position-start--xl.--active{transform:translate(min(var(--rs-modal-drag,0px),0px)) scale(1)!important}.--position-end--xl{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:0;height:100%;inset:0;inset-inline-start:auto;margin:0;margin-inline-start:var(--rs-unit-x4);max-height:100%;max-width:calc(var(--rs-modal-container-width) - var(--rs-unit-x4));opacity:1;overflow:auto;position:absolute;transform:translate(100%);width:var(--rs-modal-size)}[dir=rtl] .--position-end--xl{transform:translate(-100%)}.--position-end--xl.--active,[dir=rtl] .--position-end--xl.--active{transform:translate(max(var(--rs-modal-drag,0px),0px)) scale(1)!important}.--position-full-screen--xl{--rs-modal-size-s:100%;border-radius:0;height:100%;inset:0;inset-block-start:auto;margin:0;max-height:100%;max-width:var(--rs-modal-container-width);opacity:0;overflow:auto;position:absolute;transform:translateY(var(--rs-unit-x4));width:100%}.--position-full-screen--xl.--active,[dir=rtl] .--position-full-screen--xl.--active{opacity:1;transform:translate(0)!important}}
1
+ .root{--rs-modal-container-width:100vw;background:var(--rs-color-background-elevation-overlay);box-shadow:var(--rs-shadow-raised);color:var(--rs-color-foreground-neutral);outline:none;transition:var(--rs-duration-fast) var(--rs-easing-accelerate);transition-property:transform,opacity;will-change:transform,opacity}[data-rs-keyboard] .root:focus{box-shadow:var(--rs-shadow-focus)}.root.--contained{--rs-modal-container-width:100%}.root{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);--rs-modal-size-m:var(--rs-modal-size-s);--rs-modal-size-l:var(--rs-modal-size-m);--rs-modal-size-xl:var(--rs-modal-size-l);--rs-modal-size:var(--rs-modal-size-s)}.--position-center{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:var(--rs-radius-large);height:auto;inset:0;margin:var(--rs-unit-x4);max-height:none;max-width:calc(var(--rs-modal-container-width) - var(--rs-unit-x8));opacity:0;overflow:hidden;position:relative;transform:translateY(var(--rs-unit-x4));width:var(--rs-modal-size)}.--position-center.--active,[dir=rtl] .--position-center.--active{opacity:1;transform:translate(0)!important}.--position-bottom{--rs-modal-size-s:auto;border-radius:var(--rs-radius-large) var(--rs-radius-large) 0 0;height:var(--rs-modal-size);inset:0;inset-block-start:auto;margin:0;margin-top:var(--rs-unit-x4);max-height:calc(var(--rs-modal-container-width) - var(--rs-unit-x4));max-width:100%;opacity:1;overflow:auto;position:absolute;transform:translateY(100%);width:100%}.--position-bottom.--active,[dir=rtl] .--position-bottom.--active{transform:translateY(max(var(--rs-modal-drag,0px),0px))!important}.--position-start{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:0;height:100%;inset:0;inset-inline-end:auto;margin:0;margin-inline-end:var(--rs-unit-x4);max-height:100%;max-width:calc(var(--rs-modal-container-width) - var(--rs-unit-x4));opacity:1;overflow:auto;position:absolute;transform:translate(-100%);width:var(--rs-modal-size)}[dir=rtl] .--position-start{transform:translate(100%)}.--position-start.--active,[dir=rtl] .--position-start.--active{transform:translate(min(var(--rs-modal-drag,0px),0px))!important}.--position-end{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:0;height:100%;inset:0;inset-inline-start:auto;margin:0;margin-inline-start:var(--rs-unit-x4);max-height:100%;max-width:calc(var(--rs-modal-container-width) - var(--rs-unit-x4));opacity:1;overflow:auto;position:absolute;transform:translate(100%);width:var(--rs-modal-size)}[dir=rtl] .--position-end{transform:translate(-100%)}.--position-end.--active,[dir=rtl] .--position-end.--active{transform:translate(max(var(--rs-modal-drag,0px),0px))!important}.--position-full-screen{--rs-modal-size-s:100%;border-radius:0;height:100%;inset:0;inset-block-start:auto;margin:0;max-height:100%;max-width:var(--rs-modal-container-width);opacity:0;overflow:auto;position:absolute;transform:translateY(var(--rs-unit-x4));width:100%}.--position-full-screen.--active,[dir=rtl] .--position-full-screen.--active{opacity:1;transform:translate(0)!important}.--active,[dir=rtl] .--active{transition-timing-function:var(--rs-easing-decelerate)}.--dragging{transition:none}.--overflow-visible{overflow:visible}@media (--rs-viewport-m ){.root{--rs-modal-size:var(--rs-modal-size-m)}.--position-center--m{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:var(--rs-radius-large);height:auto;inset:0;margin:var(--rs-unit-x4);max-height:none;max-width:calc(var(--rs-modal-container-width) - var(--rs-unit-x8));opacity:0;overflow:hidden;position:relative;transform:translateY(var(--rs-unit-x4));width:var(--rs-modal-size)}.--position-center--m.--active,[dir=rtl] .--position-center--m.--active{opacity:1;transform:translate(0)!important}.--position-bottom--m{--rs-modal-size-s:auto;border-radius:var(--rs-radius-large) var(--rs-radius-large) 0 0;height:var(--rs-modal-size);inset:0;inset-block-start:auto;margin:0;margin-top:var(--rs-unit-x4);max-height:calc(var(--rs-modal-container-width) - var(--rs-unit-x4));max-width:100%;opacity:1;overflow:auto;position:absolute;transform:translateY(100%);width:100%}.--position-bottom--m.--active,[dir=rtl] .--position-bottom--m.--active{transform:translateY(max(var(--rs-modal-drag,0px),0px))!important}.--position-start--m{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:0;height:100%;inset:0;inset-inline-end:auto;margin:0;margin-inline-end:var(--rs-unit-x4);max-height:100%;max-width:calc(var(--rs-modal-container-width) - var(--rs-unit-x4));opacity:1;overflow:auto;position:absolute;transform:translate(-100%);width:var(--rs-modal-size)}[dir=rtl] .--position-start--m{transform:translate(100%)}.--position-start--m.--active,[dir=rtl] .--position-start--m.--active{transform:translate(min(var(--rs-modal-drag,0px),0px))!important}.--position-end--m{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:0;height:100%;inset:0;inset-inline-start:auto;margin:0;margin-inline-start:var(--rs-unit-x4);max-height:100%;max-width:calc(var(--rs-modal-container-width) - var(--rs-unit-x4));opacity:1;overflow:auto;position:absolute;transform:translate(100%);width:var(--rs-modal-size)}[dir=rtl] .--position-end--m{transform:translate(-100%)}.--position-end--m.--active,[dir=rtl] .--position-end--m.--active{transform:translate(max(var(--rs-modal-drag,0px),0px))!important}.--position-full-screen--m{--rs-modal-size-s:100%;border-radius:0;height:100%;inset:0;inset-block-start:auto;margin:0;max-height:100%;max-width:var(--rs-modal-container-width);opacity:0;overflow:auto;position:absolute;transform:translateY(var(--rs-unit-x4));width:100%}.--position-full-screen--m.--active,[dir=rtl] .--position-full-screen--m.--active{opacity:1;transform:translate(0)!important}}@media (--rs-viewport-l ){.root{--rs-modal-size:var(--rs-modal-size-l)}.--position-center--l{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:var(--rs-radius-large);height:auto;inset:0;margin:var(--rs-unit-x4);max-height:none;max-width:calc(var(--rs-modal-container-width) - var(--rs-unit-x8));opacity:0;overflow:hidden;position:relative;transform:translateY(var(--rs-unit-x4));width:var(--rs-modal-size)}.--position-center--l.--active,[dir=rtl] .--position-center--l.--active{opacity:1;transform:translate(0)!important}.--position-bottom--l{--rs-modal-size-s:auto;border-radius:var(--rs-radius-large) var(--rs-radius-large) 0 0;height:var(--rs-modal-size);inset:0;inset-block-start:auto;margin:0;margin-top:var(--rs-unit-x4);max-height:calc(var(--rs-modal-container-width) - var(--rs-unit-x4));max-width:100%;opacity:1;overflow:auto;position:absolute;transform:translateY(100%);width:100%}.--position-bottom--l.--active,[dir=rtl] .--position-bottom--l.--active{transform:translateY(max(var(--rs-modal-drag,0px),0px))!important}.--position-start--l{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:0;height:100%;inset:0;inset-inline-end:auto;margin:0;margin-inline-end:var(--rs-unit-x4);max-height:100%;max-width:calc(var(--rs-modal-container-width) - var(--rs-unit-x4));opacity:1;overflow:auto;position:absolute;transform:translate(-100%);width:var(--rs-modal-size)}[dir=rtl] .--position-start--l{transform:translate(100%)}.--position-start--l.--active,[dir=rtl] .--position-start--l.--active{transform:translate(min(var(--rs-modal-drag,0px),0px))!important}.--position-end--l{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:0;height:100%;inset:0;inset-inline-start:auto;margin:0;margin-inline-start:var(--rs-unit-x4);max-height:100%;max-width:calc(var(--rs-modal-container-width) - var(--rs-unit-x4));opacity:1;overflow:auto;position:absolute;transform:translate(100%);width:var(--rs-modal-size)}[dir=rtl] .--position-end--l{transform:translate(-100%)}.--position-end--l.--active,[dir=rtl] .--position-end--l.--active{transform:translate(max(var(--rs-modal-drag,0px),0px))!important}.--position-full-screen--l{--rs-modal-size-s:100%;border-radius:0;height:100%;inset:0;inset-block-start:auto;margin:0;max-height:100%;max-width:var(--rs-modal-container-width);opacity:0;overflow:auto;position:absolute;transform:translateY(var(--rs-unit-x4));width:100%}.--position-full-screen--l.--active,[dir=rtl] .--position-full-screen--l.--active{opacity:1;transform:translate(0)!important}}@media (--rs-viewport-xl ){.root{--rs-modal-size:var(--rs-modal-size-xl)}.--position-center--xl{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:var(--rs-radius-large);height:auto;inset:0;margin:var(--rs-unit-x4);max-height:none;max-width:calc(var(--rs-modal-container-width) - var(--rs-unit-x8));opacity:0;overflow:hidden;position:relative;transform:translateY(var(--rs-unit-x4));width:var(--rs-modal-size)}.--position-center--xl.--active,[dir=rtl] .--position-center--xl.--active{opacity:1;transform:translate(0)!important}.--position-bottom--xl{--rs-modal-size-s:auto;border-radius:var(--rs-radius-large) var(--rs-radius-large) 0 0;height:var(--rs-modal-size);inset:0;inset-block-start:auto;margin:0;margin-top:var(--rs-unit-x4);max-height:calc(var(--rs-modal-container-width) - var(--rs-unit-x4));max-width:100%;opacity:1;overflow:auto;position:absolute;transform:translateY(100%);width:100%}.--position-bottom--xl.--active,[dir=rtl] .--position-bottom--xl.--active{transform:translateY(max(var(--rs-modal-drag,0px),0px))!important}.--position-start--xl{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:0;height:100%;inset:0;inset-inline-end:auto;margin:0;margin-inline-end:var(--rs-unit-x4);max-height:100%;max-width:calc(var(--rs-modal-container-width) - var(--rs-unit-x4));opacity:1;overflow:auto;position:absolute;transform:translate(-100%);width:var(--rs-modal-size)}[dir=rtl] .--position-start--xl{transform:translate(100%)}.--position-start--xl.--active,[dir=rtl] .--position-start--xl.--active{transform:translate(min(var(--rs-modal-drag,0px),0px))!important}.--position-end--xl{--rs-modal-size-s:calc(var(--rs-unit-x1) * 100);border-radius:0;height:100%;inset:0;inset-inline-start:auto;margin:0;margin-inline-start:var(--rs-unit-x4);max-height:100%;max-width:calc(var(--rs-modal-container-width) - var(--rs-unit-x4));opacity:1;overflow:auto;position:absolute;transform:translate(100%);width:var(--rs-modal-size)}[dir=rtl] .--position-end--xl{transform:translate(-100%)}.--position-end--xl.--active,[dir=rtl] .--position-end--xl.--active{transform:translate(max(var(--rs-modal-drag,0px),0px))!important}.--position-full-screen--xl{--rs-modal-size-s:100%;border-radius:0;height:100%;inset:0;inset-block-start:auto;margin:0;max-height:100%;max-width:var(--rs-modal-container-width);opacity:0;overflow:auto;position:absolute;transform:translateY(var(--rs-unit-x4));width:100%}.--position-full-screen--xl.--active,[dir=rtl] .--position-full-screen--xl.--active{opacity:1;transform:translate(0)!important}}
@@ -1,6 +1,6 @@
1
+ import type { OverlayProps, OverlayCloseReason } from "../Overlay";
1
2
  import type React from "react";
2
3
  import type * as G from "../../types/global";
3
- import type { OverlayProps, OverlayCloseReason } from "../Overlay";
4
4
  export type Context = {
5
5
  id: string;
6
6
  titleMounted: boolean;
@@ -2,17 +2,17 @@
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import React from "react";
4
4
  import Actionable from "../Actionable/index.js";
5
+ import { useFormControl } from "../FormControl/index.js";
5
6
  import Icon from "../Icon/index.js";
6
7
  import TextField from "../TextField/index.js";
7
- import { useFormControl } from "../FormControl/index.js";
8
- import IconChevronUp from "../../icons/ChevronUp.js";
9
- import IconChevronDown from "../../icons/ChevronDown.js";
10
- import IconPlus from "../../icons/Plus.js";
11
- import IconMinus from "../../icons/Minus.js";
8
+ import * as keys from "../../constants/keys.js";
12
9
  import useElementId from "../../hooks/useElementId.js";
13
- import useHotkeys from "../../hooks/useHotkeys.js";
14
10
  import useHandlerRef from "../../hooks/useHandlerRef.js";
15
- import * as keys from "../../constants/keys.js";
11
+ import useHotkeys from "../../hooks/useHotkeys.js";
12
+ import IconChevronDown from "../../icons/ChevronDown.js";
13
+ import IconChevronUp from "../../icons/ChevronUp.js";
14
+ import IconMinus from "../../icons/Minus.js";
15
+ import IconPlus from "../../icons/Plus.js";
16
16
  import { responsiveClassNames, responsivePropDependency } from "../../utilities/props.js";
17
17
  import s from "./NumberField.module.css";
18
18
  const NumberFieldControlled = (props) => {
@@ -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 { onNextFrame } from "../../utilities/animation.js";
5
- import { classNames } from "../../utilities/props.js";
6
- import { TrapFocus } from "../../utilities/a11y/index.js";
7
- import useToggle from "../../hooks/useToggle.js";
8
- import useIsomorphicLayoutEffect from "../../hooks/useIsomorphicLayoutEffect.js";
4
+ import Portal from "../_private/Portal/index.js";
5
+ import useIsDismissible from "../../hooks/_private/useIsDismissible.js";
6
+ import useHandlerRef from "../../hooks/useHandlerRef.js";
9
7
  import useHotkeys from "../../hooks/useHotkeys.js";
8
+ import useIsomorphicLayoutEffect from "../../hooks/useIsomorphicLayoutEffect.js";
10
9
  import useScrollLock from "../../hooks/useScrollLock.js";
11
- import useIsDismissible from "../../hooks/_private/useIsDismissible.js";
12
- import Portal from "../_private/Portal/index.js";
10
+ import useToggle from "../../hooks/useToggle.js";
11
+ import { TrapFocus } from "../../utilities/a11y/index.js";
12
+ import { onNextFrame } from "../../utilities/animation.js";
13
+ import { classNames } from "../../utilities/props.js";
13
14
  import s from "./Overlay.module.css";
14
- import useHandlerRef from "../../hooks/useHandlerRef.js";
15
15
  const Overlay = (props) => {
16
16
  const { active, children, transparent, blurred, overflow, onClose, onOpen, onAfterClose, onAfterOpen, disableCloseOnClick, containerRef, className, attributes, } = props;
17
17
  // Selectors wrapped with refs to simplify working with useEffect dependency array
@@ -1,13 +1,13 @@
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 { responsivePropDependency } from "../../utilities/props.js";
5
- import View from "../View/index.js";
4
+ import { useFormControl } from "../FormControl/index.js";
6
5
  import Text from "../Text/index.js";
6
+ import View from "../View/index.js";
7
+ import * as keys from "../../constants/keys.js";
7
8
  import useHotkeys from "../../hooks/useHotkeys.js";
8
- import { useFormControl } from "../FormControl/index.js";
9
9
  import { onNextFrame } from "../../utilities/animation.js";
10
- import * as keys from "../../constants/keys.js";
10
+ import { responsivePropDependency } from "../../utilities/props.js";
11
11
  import { regExpNumericChar, regExpAlphabeticChar, regExpAlphaNumericChar, } from "./PinField.constants.js";
12
12
  import s from "./PinField.module.css";
13
13
  const sizeMap = {
@@ -1,9 +1,9 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { classNames } from "../../utilities/props.js";
3
- import Flyout, { useFlyoutContext } from "../Flyout/index.js";
4
2
  import Dismissible from "../Dismissible/index.js";
5
- import s from "./Popover.module.css";
3
+ import Flyout, { useFlyoutContext } from "../Flyout/index.js";
6
4
  import { resolveMixin } from "../../styles/mixin.js";
5
+ import { classNames } from "../../utilities/props.js";
6
+ import s from "./Popover.module.css";
7
7
  const Popover = (props) => {
8
8
  const { width, variant = "elevated", triggerType = "click", position = "bottom", elevation, borderRadius, ...flyoutProps } = props;
9
9
  const padding = props.padding ?? (variant === "headless" ? 0 : 4);
@@ -1 +1 @@
1
- .content{max-width:360px}.content--variant-elevated{background:var(--rs-color-background-elevation-overlay);border-radius:var(--rs-radius-medium);box-shadow:0 0 0 1px var(--rs-color-border-neutral-faded) inset,var(--rs-shadow-overlay);color:var(--rs-color-foreground-neutral);min-width:220px}.content--variant-elevated.content--elevation-raised{box-shadow:0 0 0 1px var(--rs-color-border-neutral-faded) inset,var(--rs-shadow-raised)}.content--radius-small{border-radius:var(--rs-radius-small)}.content.content--has-width{max-width:none;min-width:0}@media (--rs-viewport-s ){.content{max-width:none}}
1
+ .content{--rs-border-w:1px;border:var(--rs-border-w) solid var(--rs-color-border-neutral-faded);max-width:360px}.content--variant-elevated{background:var(--rs-color-background-elevation-overlay);border-radius:var(--rs-radius-medium);box-shadow:var(--rs-shadow-overlay);color:var(--rs-color-foreground-neutral);min-width:220px}.content--variant-elevated.content--elevation-raised{box-shadow:var(--rs-shadow-raised)}.content--variant-headless{border:none}.content--radius-small{border-radius:var(--rs-radius-small)}.content.content--has-width{max-width:none;min-width:0}@media (--rs-viewport-s ){.content{max-width:none}}
@@ -1,7 +1,7 @@
1
- import type React from "react";
2
1
  import type { FlyoutProps, FlyoutInstance } from "../Flyout";
2
+ import type React from "react";
3
3
  export type Instance = FlyoutInstance;
4
- export type Props = Pick<FlyoutProps, "id" | "position" | "forcePosition" | "fallbackPositions" | "fallbackAdjustLayout" | "fallbackMinWidth" | "fallbackMinHeight" | "onOpen" | "onClose" | "width" | "trapFocusMode" | "active" | "defaultActive" | "contentGap" | "contentShift" | "instanceRef" | "triggerType" | "disableHideAnimation" | "disableContentHover" | "disableCloseOnOutsideClick" | "autoFocus" | "containerRef" | "positionRef" | "initialFocusRef" | "originCoordinates"> & {
4
+ export type Props = Pick<FlyoutProps, "id" | "position" | "forcePosition" | "fallbackPositions" | "fallbackAdjustLayout" | "fallbackMinWidth" | "fallbackMinHeight" | "onOpen" | "onClose" | "width" | "trapFocusMode" | "active" | "defaultActive" | "contentGap" | "contentShift" | "contentMaxHeight" | "instanceRef" | "triggerType" | "disableHideAnimation" | "disableContentHover" | "disableCloseOnOutsideClick" | "autoFocus" | "containerRef" | "positionRef" | "initialFocusRef" | "originCoordinates"> & {
5
5
  /** Node for inserting children */
6
6
  children?: React.ReactNode;
7
7
  /** Content element padding, unit token multiplier */