@coinbase/cds-web 8.43.2 → 8.44.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -8,6 +8,12 @@ All notable changes to this project will be documented in this file.
8
8
 
9
9
  <!-- template-start -->
10
10
 
11
+ ## 8.44.0 (2/9/2026 PST)
12
+
13
+ #### 🚀 Updates
14
+
15
+ - Add new tray design. [[#349](https://github.com/coinbase/cds/pull/349)]
16
+
11
17
  ## 8.43.2 ((2/9/2026, 09:05 AM PST))
12
18
 
13
19
  This is an artificial version bump with no new change.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Select.figma.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Select.figma.d.ts","sourceRoot":"","sources":["../../../src/alpha/__figma__/Select.figma.tsx"],"names":[],"mappings":""}
@@ -4,7 +4,6 @@ import type { CellBaseProps } from '../../cells/Cell';
4
4
  import type { InputStackBaseProps } from '../../controls/InputStack';
5
5
  import type { AriaHasPopupType } from '../../hooks/useA11yControlledVisibility';
6
6
  import type { BoxDefaultElement, BoxProps } from '../../layout/Box';
7
- import type { TrayProps } from '../../overlays/tray/Tray';
8
7
  import type { PressableDefaultElement, PressableProps } from '../../system';
9
8
  import type { InteractableBlendStyles } from '../../system/Interactable';
10
9
  export type SelectType = 'single' | 'multi';
@@ -254,7 +253,6 @@ export type SelectDropdownProps<
254
253
  > = SelectState<Type, SelectOptionValue> &
255
254
  Pick<SharedAccessibilityProps, 'accessibilityLabel'> &
256
255
  Omit<BoxProps<BoxDefaultElement>, 'onChange'> &
257
- Pick<TrayProps, 'header' | 'footer'> &
258
256
  Pick<SelectOptionProps<Type>, 'accessory' | 'media' | 'end'> & {
259
257
  /** Whether this is for single or multi-select */
260
258
  type?: Type;
@@ -278,6 +276,10 @@ export type SelectDropdownProps<
278
276
  hideSelectAll?: boolean;
279
277
  /** Reference to the control element for positioning */
280
278
  controlRef: React.MutableRefObject<HTMLElement | null>;
279
+ /** Optional header content to render at the top of the dropdown */
280
+ header?: React.ReactNode;
281
+ /** Optional footer content to render at the bottom of the dropdown */
282
+ footer?: React.ReactNode;
281
283
  /** Inline styles for the dropdown */
282
284
  style?: React.CSSProperties;
283
285
  /** Custom styles for dropdown elements */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/alpha/select/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/alpha/select/types.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
1
  import React from 'react';
2
2
  import type { ReactElement } from 'react';
3
3
  export type FocusTrapProps = {
4
- children: ReactElement;
4
+ children: ReactElement & {
5
+ ref?: React.Ref<HTMLElement>;
6
+ };
5
7
  onEscPress?: () => void;
6
8
  /**
7
9
  * Use for editable Search Input components to ensure focus is correctly applied
@@ -1 +1 @@
1
- {"version":3,"file":"FocusTrap.d.ts","sourceRoot":"","sources":["../../src/overlays/FocusTrap.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwD,MAAM,OAAO,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,OAAO,CAAC;AAMrD,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,YAAY,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;OAEG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAGF,eAAO,MAAM,eAAe,UAAiD,CAAC;AA+B9E,eAAO,MAAM,SAAS,4CAiSpB,CAAC"}
1
+ {"version":3,"file":"FocusTrap.d.ts","sourceRoot":"","sources":["../../src/overlays/FocusTrap.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwD,MAAM,OAAO,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,OAAO,CAAC;AAOrD,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,YAAY,GAAG;QAAE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;KAAE,CAAC;IAC1D,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;OAEG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAGF,eAAO,MAAM,eAAe,UAAiD,CAAC;AA+B9E,eAAO,MAAM,SAAS,4CAmSpB,CAAC"}
@@ -0,0 +1,44 @@
1
+ import React from 'react';
2
+ import { type BoxBaseProps, type BoxDefaultElement, type BoxProps } from '../../layout';
3
+ /**
4
+ * A draggable handle indicator for overlay components like Tray.
5
+ * @note Web only supports inside handlebar.
6
+ */
7
+ export type HandleBarBaseProps = Omit<BoxBaseProps, 'children' | 'background'> & {
8
+ /**
9
+ * Callback fired when the handlebar is closed via keyboard (Enter/Space) or click.
10
+ * When provided, the handle element becomes a focusable button and drag styling is enabled.
11
+ */
12
+ onClose?: () => void;
13
+ };
14
+ export type HandleBarProps = Omit<BoxProps<BoxDefaultElement>, 'children' | 'background'> &
15
+ HandleBarBaseProps & {
16
+ /** Class names for the handlebar elements */
17
+ classNames?: {
18
+ /** Class name for the root container */
19
+ root?: string;
20
+ /** Class name for the handle element */
21
+ handle?: string;
22
+ };
23
+ /** Inline styles for the handlebar elements */
24
+ styles?: {
25
+ /** Styles for the root container */
26
+ root?: React.CSSProperties;
27
+ /** Styles for the handle element */
28
+ handle?: React.CSSProperties;
29
+ };
30
+ };
31
+ export declare const HandleBar: React.MemoExoticComponent<
32
+ ({
33
+ testID,
34
+ onClose,
35
+ accessibilityLabel,
36
+ accessibilityHint,
37
+ classNames,
38
+ styles,
39
+ className,
40
+ style,
41
+ ...props
42
+ }: HandleBarProps) => import('react/jsx-runtime').JSX.Element
43
+ >;
44
+ //# sourceMappingURL=HandleBar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HandleBar.d.ts","sourceRoot":"","sources":["../../../src/overlays/handlebar/HandleBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAK7C,OAAO,EAAO,KAAK,YAAY,EAAE,KAAK,iBAAiB,EAAE,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAgC7F;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,YAAY,EAAE,UAAU,GAAG,YAAY,CAAC,GAAG;IAC/E;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC,GACvF,kBAAkB,GAAG;IACnB,6CAA6C;IAC7C,UAAU,CAAC,EAAE;QACX,wCAAwC;QACxC,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,wCAAwC;QACxC,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,+CAA+C;IAC/C,MAAM,CAAC,EAAE;QACP,oCAAoC;QACpC,IAAI,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAC3B,oCAAoC;QACpC,MAAM,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;KAC9B,CAAC;CACH,CAAC;AAEJ,eAAO,MAAM,SAAS,yIAWjB,cAAc,6CAyClB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './HandleBar';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/overlays/handlebar/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
@@ -1,16 +1,21 @@
1
1
  import React from 'react';
2
- import type { SharedAccessibilityProps } from '@coinbase/cds-common';
2
+ import type { PinningDirection, SharedAccessibilityProps } from '@coinbase/cds-common';
3
3
  export type TrayRenderChildren = React.FC<{
4
4
  handleClose: () => void;
5
5
  }>;
6
6
  export type TrayBaseProps = {
7
- children: React.ReactNode | TrayRenderChildren;
8
- /** ReactNode to render as the Drawer header */
9
- header?: React.ReactNode;
10
- /** ReactNode to render as the Drawer footer */
11
- footer?: React.ReactNode;
7
+ children?: React.ReactNode | TrayRenderChildren;
8
+ /** ReactNode to render as the Drawer header. Can be a ReactNode or a function that receives { handleClose }. */
9
+ header?: React.ReactNode | TrayRenderChildren;
10
+ /** ReactNode to render as the Drawer footer. Can be a ReactNode or a function that receives { handleClose }. */
11
+ footer?: React.ReactNode | TrayRenderChildren;
12
12
  /** HTML ID for the tray */
13
13
  id?: string;
14
+ /**
15
+ * Pin the tray to one side of the screen
16
+ * @default 'bottom'
17
+ */
18
+ pin?: PinningDirection;
14
19
  /** Callback fired when the overlay is pressed, or swipe to close */
15
20
  onBlur?: () => void;
16
21
  /** Action that will happen when tray is dismissed */
@@ -23,8 +28,16 @@ export type TrayBaseProps = {
23
28
  * multiselect was toggled into or out of view
24
29
  */
25
30
  onVisibilityChange?: (context: 'visible' | 'hidden') => void;
26
- /** Prevents a user from dismissing the tray by pressing the overlay or swiping */
31
+ /**
32
+ * Prevents a user from dismissing the tray by pressing the overlay or swiping
33
+ * @note hides closeButton when `true`
34
+ */
27
35
  preventDismiss?: boolean;
36
+ /**
37
+ * Hide the close icon on the top right.
38
+ * @default `true` when handlebar is shown, false otherwise.
39
+ */
40
+ hideCloseButton?: boolean;
28
41
  /**
29
42
  * WAI-ARIA Roles
30
43
  * @link https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles
@@ -33,8 +46,10 @@ export type TrayBaseProps = {
33
46
  /** Text or ReactNode for optional Tray title */
34
47
  title?: React.ReactNode;
35
48
  /**
36
- * Allow user of component to define maximum percentage of screen that can be taken up by the Drawer
49
+ * Allow user of component to define maximum percentage of screen that can be taken up by the Drawer when pinned to the bottom or top.
50
+ * @note not used when `pin` is `"left"` or `"right"`.
37
51
  * @example if you want a Drawer to take up 50% of the screen, you would pass a value of `"50%"`
52
+ * @default "85%"
38
53
  */
39
54
  verticalDrawerPercentageOfView?: string;
40
55
  /** z-index for the tray overlay */
@@ -42,7 +57,6 @@ export type TrayBaseProps = {
42
57
  /**
43
58
  * Allow any element with `tabIndex` attribute to be focusable in FocusTrap, rather than only focusing specific interactive element types like button.
44
59
  * This can be useful when having long content in a Modal.
45
- * @default false
46
60
  */
47
61
  focusTabIndexElements?: boolean;
48
62
  /**
@@ -69,21 +83,79 @@ export type TrayBaseProps = {
69
83
  * @link https://reactnative.dev/docs/accessibility#accessibilityhint
70
84
  */
71
85
  closeAccessibilityHint?: SharedAccessibilityProps['accessibilityHint'];
72
- } & Pick<SharedAccessibilityProps, 'accessibilityLabel'>;
73
- export type TrayProps = TrayBaseProps;
86
+ /**
87
+ * Show a handle bar indicator at the top of the tray.
88
+ * The handle bar is positioned inside the tray content area.
89
+ * @note only appears when `pin="bottom"`.
90
+ *
91
+ * When enabled, the handle bar provides swipe-to-dismiss functionality (drag down to close)
92
+ * and is keyboard accessible (Tab to focus, Enter/Space to close).
93
+ * The close button is hidden by default when the handle bar is shown.
94
+ */
95
+ showHandleBar?: boolean;
96
+ } & Pick<SharedAccessibilityProps, 'accessibilityLabel' | 'accessibilityLabelledBy'>;
97
+ export type TrayProps = TrayBaseProps & {
98
+ /** Inline styles for the tray elements */
99
+ styles?: {
100
+ /** Styles for the root container element */
101
+ root?: React.CSSProperties;
102
+ /** Styles for the overlay backdrop */
103
+ overlay?: React.CSSProperties;
104
+ /** Styles for the animated sliding container */
105
+ container?: React.CSSProperties;
106
+ /** Styles for the header section */
107
+ header?: React.CSSProperties;
108
+ /** Styles for the title text */
109
+ title?: React.CSSProperties;
110
+ /** Styles for the content area */
111
+ content?: React.CSSProperties;
112
+ /** Styles for the handle bar container */
113
+ handleBar?: React.CSSProperties;
114
+ /** Styles for the handle bar element */
115
+ handleBarHandle?: React.CSSProperties;
116
+ /** Styles for the close button */
117
+ closeButton?: React.CSSProperties;
118
+ };
119
+ /** Class names for the tray elements */
120
+ classNames?: {
121
+ /** Class name for the root container element */
122
+ root?: string;
123
+ /** Class name for the overlay backdrop */
124
+ overlay?: string;
125
+ /** Class name for the animated sliding container */
126
+ container?: string;
127
+ /** Class name for the header section */
128
+ header?: string;
129
+ /** Class name for the title text */
130
+ title?: string;
131
+ /** Class name for the content area */
132
+ content?: string;
133
+ /** Class name for the handle bar container */
134
+ handleBar?: string;
135
+ /** Class name for the handle bar element */
136
+ handleBarHandle?: string;
137
+ /** Class name for the close button */
138
+ closeButton?: string;
139
+ };
140
+ };
74
141
  export type TrayRefProps = {
75
142
  close: () => void;
76
143
  };
77
144
  export declare const Tray: React.MemoExoticComponent<
78
145
  React.ForwardRefExoticComponent<
79
146
  {
80
- children: React.ReactNode | TrayRenderChildren;
81
- /** ReactNode to render as the Drawer header */
82
- header?: React.ReactNode;
83
- /** ReactNode to render as the Drawer footer */
84
- footer?: React.ReactNode;
147
+ children?: React.ReactNode | TrayRenderChildren;
148
+ /** ReactNode to render as the Drawer header. Can be a ReactNode or a function that receives { handleClose }. */
149
+ header?: React.ReactNode | TrayRenderChildren;
150
+ /** ReactNode to render as the Drawer footer. Can be a ReactNode or a function that receives { handleClose }. */
151
+ footer?: React.ReactNode | TrayRenderChildren;
85
152
  /** HTML ID for the tray */
86
153
  id?: string;
154
+ /**
155
+ * Pin the tray to one side of the screen
156
+ * @default 'bottom'
157
+ */
158
+ pin?: PinningDirection;
87
159
  /** Callback fired when the overlay is pressed, or swipe to close */
88
160
  onBlur?: () => void;
89
161
  /** Action that will happen when tray is dismissed */
@@ -96,8 +168,16 @@ export declare const Tray: React.MemoExoticComponent<
96
168
  * multiselect was toggled into or out of view
97
169
  */
98
170
  onVisibilityChange?: (context: 'visible' | 'hidden') => void;
99
- /** Prevents a user from dismissing the tray by pressing the overlay or swiping */
171
+ /**
172
+ * Prevents a user from dismissing the tray by pressing the overlay or swiping
173
+ * @note hides closeButton when `true`
174
+ */
100
175
  preventDismiss?: boolean;
176
+ /**
177
+ * Hide the close icon on the top right.
178
+ * @default `true` when handlebar is shown, false otherwise.
179
+ */
180
+ hideCloseButton?: boolean;
101
181
  /**
102
182
  * WAI-ARIA Roles
103
183
  * @link https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles
@@ -106,8 +186,10 @@ export declare const Tray: React.MemoExoticComponent<
106
186
  /** Text or ReactNode for optional Tray title */
107
187
  title?: React.ReactNode;
108
188
  /**
109
- * Allow user of component to define maximum percentage of screen that can be taken up by the Drawer
189
+ * Allow user of component to define maximum percentage of screen that can be taken up by the Drawer when pinned to the bottom or top.
190
+ * @note not used when `pin` is `"left"` or `"right"`.
110
191
  * @example if you want a Drawer to take up 50% of the screen, you would pass a value of `"50%"`
192
+ * @default "85%"
111
193
  */
112
194
  verticalDrawerPercentageOfView?: string;
113
195
  /** z-index for the tray overlay */
@@ -115,7 +197,6 @@ export declare const Tray: React.MemoExoticComponent<
115
197
  /**
116
198
  * Allow any element with `tabIndex` attribute to be focusable in FocusTrap, rather than only focusing specific interactive element types like button.
117
199
  * This can be useful when having long content in a Modal.
118
- * @default false
119
200
  */
120
201
  focusTabIndexElements?: boolean;
121
202
  /**
@@ -142,8 +223,60 @@ export declare const Tray: React.MemoExoticComponent<
142
223
  * @link https://reactnative.dev/docs/accessibility#accessibilityhint
143
224
  */
144
225
  closeAccessibilityHint?: SharedAccessibilityProps['accessibilityHint'];
145
- } & Pick<SharedAccessibilityProps, 'accessibilityLabel'> &
146
- React.RefAttributes<TrayRefProps>
226
+ /**
227
+ * Show a handle bar indicator at the top of the tray.
228
+ * The handle bar is positioned inside the tray content area.
229
+ * @note only appears when `pin="bottom"`.
230
+ *
231
+ * When enabled, the handle bar provides swipe-to-dismiss functionality (drag down to close)
232
+ * and is keyboard accessible (Tab to focus, Enter/Space to close).
233
+ * The close button is hidden by default when the handle bar is shown.
234
+ */
235
+ showHandleBar?: boolean;
236
+ } & Pick<SharedAccessibilityProps, 'accessibilityLabel' | 'accessibilityLabelledBy'> & {
237
+ /** Inline styles for the tray elements */
238
+ styles?: {
239
+ /** Styles for the root container element */
240
+ root?: React.CSSProperties;
241
+ /** Styles for the overlay backdrop */
242
+ overlay?: React.CSSProperties;
243
+ /** Styles for the animated sliding container */
244
+ container?: React.CSSProperties;
245
+ /** Styles for the header section */
246
+ header?: React.CSSProperties;
247
+ /** Styles for the title text */
248
+ title?: React.CSSProperties;
249
+ /** Styles for the content area */
250
+ content?: React.CSSProperties;
251
+ /** Styles for the handle bar container */
252
+ handleBar?: React.CSSProperties;
253
+ /** Styles for the handle bar element */
254
+ handleBarHandle?: React.CSSProperties;
255
+ /** Styles for the close button */
256
+ closeButton?: React.CSSProperties;
257
+ };
258
+ /** Class names for the tray elements */
259
+ classNames?: {
260
+ /** Class name for the root container element */
261
+ root?: string;
262
+ /** Class name for the overlay backdrop */
263
+ overlay?: string;
264
+ /** Class name for the animated sliding container */
265
+ container?: string;
266
+ /** Class name for the header section */
267
+ header?: string;
268
+ /** Class name for the title text */
269
+ title?: string;
270
+ /** Class name for the content area */
271
+ content?: string;
272
+ /** Class name for the handle bar container */
273
+ handleBar?: string;
274
+ /** Class name for the handle bar element */
275
+ handleBarHandle?: string;
276
+ /** Class name for the close button */
277
+ closeButton?: string;
278
+ };
279
+ } & React.RefAttributes<TrayRefProps>
147
280
  >
148
281
  >;
149
282
  //# sourceMappingURL=Tray.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tray.d.ts","sourceRoot":"","sources":["../../../src/overlays/tray/Tray.tsx"],"names":[],"mappings":"AAAA,OAAO,KAQN,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAiBrE,MAAM,MAAM,kBAAkB,GAAG,KAAK,CAAC,EAAE,CAAC;IAAE,WAAW,EAAE,MAAM,IAAI,CAAA;CAAE,CAAC,CAAC;AAEvE,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,GAAG,kBAAkB,CAAC;IAC/C,+CAA+C;IAC/C,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,+CAA+C;IAC/C,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,2BAA2B;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,qDAAqD;IACrD,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,GAAG,QAAQ,KAAK,IAAI,CAAC;IAC7D,kFAAkF;IAClF,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,aAAa,CAAC,CAAC;IACzD,gDAAgD;IAChD,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB;;;OAGG;IACH,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;;;;OAMG;IACH,uBAAuB,CAAC,EAAE,wBAAwB,CAAC,oBAAoB,CAAC,CAAC;IACzE;;;;;;;OAOG;IACH,sBAAsB,CAAC,EAAE,wBAAwB,CAAC,mBAAmB,CAAC,CAAC;CACxE,GAAG,IAAI,CAAC,wBAAwB,EAAE,oBAAoB,CAAC,CAAC;AAuBzD,MAAM,MAAM,SAAS,GAAG,aAAa,CAAC;AAGtC,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,IAAI;cA/FL,KAAK,CAAC,SAAS,GAAG,kBAAkB;IAC9C,+CAA+C;aACtC,KAAK,CAAC,SAAS;IACxB,+CAA+C;aACtC,KAAK,CAAC,SAAS;IACxB,2BAA2B;SACtB,MAAM;IACX,oEAAoE;aAC3D,MAAM,IAAI;IACnB,qDAAqD;cAC3C,MAAM,IAAI;IACpB,qDAAqD;qBACpC,MAAM,IAAI;IAC3B;;;;OAIG;yBACkB,CAAC,OAAO,EAAE,SAAS,GAAG,QAAQ,KAAK,IAAI;IAC5D,kFAAkF;qBACjE,OAAO;IACxB;;;OAGG;WACI,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,aAAa,CAAC;IACxD,gDAAgD;YACxC,KAAK,CAAC,SAAS;IACvB;;;OAGG;qCAC8B,MAAM;IACvC,mCAAmC;aAC1B,MAAM;IACf;;;;OAIG;4BACqB,OAAO;IAC/B;;;;;OAKG;4BACqB,OAAO;IAC/B;;;;;;OAMG;8BACuB,wBAAwB,CAAC,oBAAoB,CAAC;IACxE;;;;;;;OAOG;6BACsB,wBAAwB,CAAC,mBAAmB,CAAC;8FAuMvE,CAAC"}
1
+ {"version":3,"file":"Tray.d.ts","sourceRoot":"","sources":["../../../src/overlays/tray/Tray.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ const _excluded = ["type", "value"];
2
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
5
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
6
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
7
+ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
8
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
9
+ import { figma } from '@figma/code-connect';
10
+ import { Select } from '../select/Select';
11
+ import { jsx as _jsx } from "react/jsx-runtime";
12
+ const selectOptions = [{
13
+ value: 'apple',
14
+ label: 'Apple'
15
+ }, {
16
+ value: 'banana',
17
+ label: 'Banana'
18
+ }, {
19
+ value: 'orange',
20
+ label: 'Orange',
21
+ description: 'Citrus'
22
+ }];
23
+ figma.connect(Select, 'https://www.figma.com/design/k5CtyJccNQUGMI5bI4lJ2g/✨-CDS-Components?node-id=71762-14938', {
24
+ imports: ["import { Select } from '@coinbase/cds-web/alpha/select/Select'"],
25
+ props: {
26
+ type: figma.enum('type', {
27
+ 'single select': 'single',
28
+ 'multi-select': 'multi'
29
+ }),
30
+ disabled: figma.boolean('disabled'),
31
+ compact: figma.boolean('compact'),
32
+ label: figma.boolean('show label', {
33
+ true: figma.boolean('show info icon') ? "<HStack alignItems=\"center\">\n <InputLabel>".concat(figma.string('label string'), "</InputLabel>\n <Tooltip content=\"This will be visible to other users.\">\n <Icon active color=\"fg\" name=\"info\" padding={0.75} size=\"xs\" tabIndex={0} />\n </Tooltip>\n </HStack>") : figma.string('label string'),
34
+ false: undefined
35
+ }),
36
+ start: figma.boolean('show start', {
37
+ true: figma.instance('start'),
38
+ false: undefined
39
+ }),
40
+ helperText: figma.boolean('show helper text', {
41
+ true: figma.string('helper text'),
42
+ false: undefined
43
+ }),
44
+ placeholder: figma.string('placeholderText'),
45
+ variant: figma.enum('state', {
46
+ default: undefined,
47
+ positive: 'positive',
48
+ negative: 'negative'
49
+ }),
50
+ value: figma.enum('type', {
51
+ 'single select': 'Item 1',
52
+ 'multi-select': ['Item 1', 'Item 2']
53
+ })
54
+ },
55
+ example: _ref => {
56
+ let {
57
+ type,
58
+ value
59
+ } = _ref,
60
+ props = _objectWithoutProperties(_ref, _excluded);
61
+ return /*#__PURE__*/_jsx(Select, _objectSpread(_objectSpread({}, props), {}, {
62
+ onChange: () => {},
63
+ options: selectOptions,
64
+ type: type,
65
+ value: value
66
+ }));
67
+ }
68
+ });
@@ -1,4 +1,5 @@
1
1
  import React, { memo, useCallback, useEffect, useMemo, useRef } from 'react';
2
+ import { useMergeRefs } from '@coinbase/cds-common/hooks/useMergeRefs';
2
3
  import { FOCUSABLE_ELEMENTS } from '@coinbase/cds-common/tokens/overlays';
3
4
  import { debounce } from '@coinbase/cds-common/utils/debounce';
4
5
  import { getBrowserGlobals } from '../utils/browser';
@@ -203,12 +204,13 @@ export const FocusTrap = /*#__PURE__*/memo(function FocusTrap(_ref) {
203
204
 
204
205
  // only works for single child
205
206
  const onlyChild = React.Children.only(children);
207
+ const mergedRef = useMergeRefs(childrenRef, children === null || children === void 0 ? void 0 : children.ref);
206
208
  if (!onlyChild) {
207
209
  return /*#__PURE__*/_jsx(_Fragment, {
208
210
  children: children
209
211
  });
210
212
  }
211
213
  return /*#__PURE__*/React.cloneElement(children, {
212
- ref: childrenRef
214
+ ref: mergedRef
213
215
  });
214
216
  });
@@ -0,0 +1,3 @@
1
+ @layer cds{.containerBaseCss-c1oq904k{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;padding-top:var(--space-2);padding-bottom:var(--space-2);}
2
+ .containerPressableCss-cya0rqx{width:100%;cursor:-webkit-grab;cursor:-moz-grab;cursor:grab;touch-action:none;}.containerPressableCss-cya0rqx:active{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing;}
3
+ .handleCss-h1mpswnh{width:32px;height:4px;border-radius:var(--borderRadius-1000);opacity:0.4;}}
@@ -0,0 +1,66 @@
1
+ const _excluded = ["testID", "onClose", "accessibilityLabel", "accessibilityHint", "classNames", "styles", "className", "style"];
2
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
5
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
6
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
7
+ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
8
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
9
+ import React, { memo, useMemo } from 'react';
10
+ import { handleBarHeight } from '@coinbase/cds-common/tokens/drawer';
11
+ import { cx } from '../../cx';
12
+ import { Box } from '../../layout';
13
+ import { Pressable } from '../../system/Pressable';
14
+
15
+ // Fixed pixel values used intentionally — handle size should not scale with theme density.
16
+ import { jsx as _jsx } from "react/jsx-runtime";
17
+ const HANDLE_WIDTH = 32;
18
+ const HANDLE_OPACITY = 0.4;
19
+ const containerBaseCss = "containerBaseCss-c1oq904k";
20
+ const containerPressableCss = "containerPressableCss-cya0rqx";
21
+ const handleCss = "handleCss-h1mpswnh";
22
+
23
+ /**
24
+ * A draggable handle indicator for overlay components like Tray.
25
+ * @note Web only supports inside handlebar.
26
+ */
27
+
28
+ export const HandleBar = /*#__PURE__*/memo(_ref => {
29
+ var _classNames$root;
30
+ let {
31
+ testID = 'handleBar',
32
+ onClose,
33
+ accessibilityLabel,
34
+ accessibilityHint,
35
+ classNames,
36
+ styles,
37
+ className,
38
+ style
39
+ } = _ref,
40
+ props = _objectWithoutProperties(_ref, _excluded);
41
+ const rootStyle = useMemo(() => style || styles !== null && styles !== void 0 && styles.root ? _objectSpread(_objectSpread({}, style), styles === null || styles === void 0 ? void 0 : styles.root) : undefined, [style, styles === null || styles === void 0 ? void 0 : styles.root]);
42
+ const handleClassName = cx(handleCss, classNames === null || classNames === void 0 ? void 0 : classNames.handle);
43
+ return /*#__PURE__*/_jsx(Box, _objectSpread(_objectSpread({
44
+ className: cx(containerBaseCss, onClose && containerPressableCss, (_classNames$root = classNames === null || classNames === void 0 ? void 0 : classNames.root) !== null && _classNames$root !== void 0 ? _classNames$root : className),
45
+ "data-testid": testID,
46
+ style: rootStyle
47
+ }, props), {}, {
48
+ children: onClose ? /*#__PURE__*/_jsx(Pressable, {
49
+ noScaleOnPress: true,
50
+ accessibilityHint: accessibilityHint,
51
+ accessibilityLabel: accessibilityLabel,
52
+ background: "bgInverse",
53
+ borderColor: "transparent",
54
+ className: handleClassName,
55
+ onClick: onClose,
56
+ style: styles === null || styles === void 0 ? void 0 : styles.handle
57
+ }) : /*#__PURE__*/_jsx(Box, {
58
+ accessibilityHint: accessibilityHint,
59
+ accessibilityLabel: accessibilityLabel,
60
+ background: "bgInverse",
61
+ className: handleClassName,
62
+ style: styles === null || styles === void 0 ? void 0 : styles.handle
63
+ })
64
+ }));
65
+ });
66
+ import "./HandleBar.css";
@@ -0,0 +1 @@
1
+ export * from './HandleBar';
@@ -0,0 +1,7 @@
1
+ @layer cds{.trayHeaderBorderBaseCss-t552jyb{border-bottom-width:var(--borderWidth-100);border-bottom-style:solid;border-bottom-color:transparent;}
2
+ .trayHeaderBorderVisibleCss-tx59ve0{border-bottom-color:var(--color-bgLine);}
3
+ .trayContainerBaseCss-t1gubbn2{z-index:1;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;overflow:hidden;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;min-height:0;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}
4
+ .trayContainerPinBottomCss-ttp17ir{border-top-left-radius:var(--borderRadius-600);border-top-right-radius:var(--borderRadius-600);}
5
+ .trayContainerPinTopCss-t1ql0a7m{border-bottom-left-radius:var(--borderRadius-600);border-bottom-right-radius:var(--borderRadius-600);}
6
+ .trayContainerPinLeftCss-tddpnpb{border-top-right-radius:var(--borderRadius-600);border-bottom-right-radius:var(--borderRadius-600);}
7
+ .trayContainerPinRightCss-t17d10kx{border-top-left-radius:var(--borderRadius-600);border-bottom-left-radius:var(--borderRadius-600);}}
@@ -1,45 +1,71 @@
1
- import React, { forwardRef, memo, useCallback, useEffect, useImperativeHandle, useRef, useState } from 'react';
1
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
4
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
5
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
6
+ import React, { forwardRef, memo, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';
7
+ import { DISMISSAL_DRAG_THRESHOLD, DISMISSAL_VELOCITY_THRESHOLD } from '@coinbase/cds-common/animation/drawer';
2
8
  import { OverlayContentContext } from '@coinbase/cds-common/overlays/OverlayContentContext';
3
- import { m, useAnimation } from 'framer-motion';
9
+ import { domMax, LazyMotion, m as motion, useAnimate, useDragControls } from 'framer-motion';
4
10
  import { IconButton } from '../../buttons';
11
+ import { cx } from '../../cx';
12
+ import { useDimensions } from '../../hooks/useDimensions';
5
13
  import { useScrollBlocker } from '../../hooks/useScrollBlocker';
14
+ import { useTheme } from '../../hooks/useTheme';
6
15
  import { Box, HStack } from '../../layout';
7
16
  import { VStack } from '../../layout/VStack';
8
17
  import { Text } from '../../typography/Text';
9
18
  import { FocusTrap } from '../FocusTrap';
19
+ import { HandleBar } from '../handlebar/HandleBar';
10
20
  import { Overlay } from '../overlay/Overlay';
11
21
  import { Portal } from '../Portal';
12
22
  import { trayContainerId } from '../PortalProvider';
13
23
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
14
- // Animation constants
15
- const ANIMATIONS = {
16
- SLIDE_IN: {
17
- y: 0,
24
+ const DISMISSAL_DRAG_PERCENTAGE = 0.4;
25
+ const MotionVStack = motion(Box);
26
+
27
+ /**
28
+ * Conditionally wraps children in LazyMotion with domMax features to support dragging.
29
+ */
30
+ const DragMotionProvider = _ref => {
31
+ let {
32
+ enabled,
33
+ children
34
+ } = _ref;
35
+ if (!enabled) {
36
+ return children;
37
+ }
38
+ return /*#__PURE__*/_jsx(LazyMotion, {
39
+ features: domMax,
40
+ children: children
41
+ });
42
+ };
43
+ const trayHeaderBorderBaseCss = "trayHeaderBorderBaseCss-t552jyb";
44
+ const trayHeaderBorderVisibleCss = "trayHeaderBorderVisibleCss-tx59ve0";
45
+ const trayContainerBaseCss = "trayContainerBaseCss-t1gubbn2";
46
+ const trayContainerPinBottomCss = "trayContainerPinBottomCss-ttp17ir";
47
+ const trayContainerPinTopCss = "trayContainerPinTopCss-t1ql0a7m";
48
+ const trayContainerPinLeftCss = "trayContainerPinLeftCss-tddpnpb";
49
+ const trayContainerPinRightCss = "trayContainerPinRightCss-t17d10kx";
50
+
51
+ // Extended ref type for web implementation
52
+
53
+ const animationConfig = {
54
+ slideIn: {
18
55
  transition: {
19
56
  duration: 0.3
20
57
  }
21
58
  },
22
- SLIDE_OUT: {
23
- y: '100%',
59
+ slideOut: {
24
60
  transition: {
25
61
  duration: 0.3
26
62
  }
27
- },
28
- SNAP_BACK: {
29
- y: 0,
30
- transition: {
31
- type: 'spring',
32
- stiffness: 300,
33
- damping: 30
34
- }
35
63
  }
36
64
  };
37
-
38
- // Extended props for web-specific functionality
39
-
40
- // Extended ref type for web implementation
41
-
42
- export const Tray = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(function Tray(_ref, ref) {
65
+ const overlayContentContextValue = {
66
+ isDrawer: true
67
+ };
68
+ export const Tray = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(function Tray(_ref2, ref) {
43
69
  let {
44
70
  children,
45
71
  header,
@@ -50,146 +76,282 @@ export const Tray = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(function Tray(_ref
50
76
  onBlur,
51
77
  onClose,
52
78
  onCloseComplete,
53
- preventDismiss = false,
79
+ preventDismiss,
54
80
  id,
55
81
  role = 'dialog',
56
82
  accessibilityLabel = 'Tray',
57
- focusTabIndexElements = false,
83
+ accessibilityLabelledBy,
84
+ focusTabIndexElements,
58
85
  restoreFocusOnUnmount = true,
59
86
  closeAccessibilityLabel = 'Close',
60
- closeAccessibilityHint
61
- } = _ref;
87
+ closeAccessibilityHint,
88
+ styles,
89
+ classNames,
90
+ zIndex,
91
+ pin = 'bottom',
92
+ showHandleBar,
93
+ hideCloseButton
94
+ } = _ref2;
95
+ const theme = useTheme();
62
96
  const [isOpen, setIsOpen] = useState(true);
97
+ const [hasScrolledDown, setHasScrolledDown] = useState(false);
63
98
  const trayRef = useRef(null);
64
- const controls = useAnimation();
99
+ const {
100
+ observe: observeTraySize,
101
+ height: trayHeight
102
+ } = useDimensions();
103
+ const contentRef = useRef(null);
104
+ const [scope, animate] = useAnimate();
105
+ const dragControls = useDragControls();
106
+ const isSideTray = pin === 'right' || pin === 'left';
107
+ const horizontalPadding = useMemo(() => pin !== 'bottom' || showHandleBar ? {
108
+ base: 4,
109
+ phone: 3
110
+ } : 6, [showHandleBar, pin]);
65
111
  const blockScroll = useScrollBlocker();
66
-
67
- // prevent body scroll when modal is open
68
112
  useEffect(() => {
69
113
  blockScroll(isOpen);
70
- return () => {
71
- blockScroll(false);
72
- };
114
+ return () => blockScroll(false);
73
115
  }, [isOpen, blockScroll]);
74
-
75
- // Setup initial animation
76
116
  useEffect(() => {
77
- controls.start(ANIMATIONS.SLIDE_IN);
78
- }, [controls]);
79
-
80
- // Unified dismissal function
117
+ onVisibilityChange === null || onVisibilityChange === void 0 || onVisibilityChange('visible');
118
+ return () => onVisibilityChange === null || onVisibilityChange === void 0 ? void 0 : onVisibilityChange('hidden');
119
+ }, [onVisibilityChange]);
81
120
  const handleClose = useCallback(() => {
82
- // Run the animation
83
- controls.start(ANIMATIONS.SLIDE_OUT).then(() => {
84
- // Then set state after animation completes
121
+ if (!scope.current) return;
122
+ animate(scope.current, isSideTray ? {
123
+ x: pin === 'right' ? '100%' : '-100%'
124
+ } : {
125
+ y: pin === 'bottom' ? '100%' : '-100%'
126
+ }, animationConfig.slideOut.transition).then(() => {
127
+ setIsOpen(false);
128
+ onClose === null || onClose === void 0 || onClose();
129
+ onCloseComplete === null || onCloseComplete === void 0 || onCloseComplete();
130
+ });
131
+ }, [animate, scope, isSideTray, pin, onClose, onCloseComplete]);
132
+ const handleSwipeClose = useCallback(() => {
133
+ if (!scope.current) return;
134
+ animate(scope.current, {
135
+ y: '100%'
136
+ }, {
137
+ duration: 0.15,
138
+ ease: 'easeOut'
139
+ }).then(() => {
85
140
  setIsOpen(false);
141
+ onBlur === null || onBlur === void 0 || onBlur();
86
142
  onClose === null || onClose === void 0 || onClose();
87
143
  onCloseComplete === null || onCloseComplete === void 0 || onCloseComplete();
88
144
  });
89
- }, [onClose, onCloseComplete, controls]);
90
- const handleOverlayPress = useCallback(() => {
145
+ }, [animate, scope, onBlur, onClose, onCloseComplete]);
146
+ useImperativeHandle(ref, () => ({
147
+ close: handleClose
148
+ }), [handleClose]);
149
+ const handleOverlayClick = useCallback(() => {
91
150
  if (!preventDismiss) {
92
151
  onBlur === null || onBlur === void 0 || onBlur();
93
152
  handleClose();
94
153
  }
95
154
  }, [handleClose, preventDismiss, onBlur]);
155
+ const handleDragEnd = useCallback((_event, info) => {
156
+ const offsetY = info.offset.y;
157
+ const velocityY = info.velocity.y;
158
+ const dragThreshold = trayHeight ? Math.min(trayHeight * DISMISSAL_DRAG_PERCENTAGE, DISMISSAL_DRAG_THRESHOLD) : DISMISSAL_DRAG_THRESHOLD;
96
159
 
97
- // Use imperative handle for cleaner ref implementation
98
- useImperativeHandle(ref, () => ({
99
- close: handleClose
100
- }), [handleClose]);
160
+ // Close if dragged past threshold OR if flicked down with high velocity
161
+ if (offsetY >= dragThreshold || velocityY >= DISMISSAL_VELOCITY_THRESHOLD) {
162
+ handleSwipeClose();
163
+ } else {
164
+ // Snap back to closed position
165
+ animate(scope.current, {
166
+ y: 0
167
+ }, {
168
+ duration: 0.2,
169
+ ease: 'easeOut'
170
+ });
171
+ }
172
+ }, [trayHeight, handleSwipeClose, animate, scope]);
173
+ const initialAnimationValue = useMemo(() => isSideTray ? {
174
+ x: pin === 'right' ? '100%' : '-100%'
175
+ } : {
176
+ y: pin === 'bottom' ? '100%' : '-100%'
177
+ }, [isSideTray, pin]);
178
+ const animateValue = useMemo(() => isSideTray ? {
179
+ x: 0
180
+ } : {
181
+ y: 0
182
+ }, [isSideTray]);
101
183
 
102
- // Handle visibility changes
184
+ // Handle bar only shows for bottom-pinned trays (matching mobile behavior)
185
+ const shouldShowHandleBar = showHandleBar && pin === 'bottom';
186
+ const shouldShrinkPadding = pin !== 'bottom' || showHandleBar;
187
+ const shouldShowCloseButton = !preventDismiss && !(hideCloseButton !== null && hideCloseButton !== void 0 ? hideCloseButton : shouldShowHandleBar);
188
+ const shouldShowTitle = title || shouldShowCloseButton;
103
189
  useEffect(() => {
104
- onVisibilityChange === null || onVisibilityChange === void 0 || onVisibilityChange('visible');
105
- return () => {
106
- onVisibilityChange === null || onVisibilityChange === void 0 || onVisibilityChange('hidden');
190
+ const content = contentRef.current;
191
+ if (!content || !shouldShrinkPadding) return;
192
+ const handleScroll = () => {
193
+ setHasScrolledDown(content.scrollTop > 0);
107
194
  };
108
- }, [onVisibilityChange]);
109
- const overlayContentContextValue = {
110
- isDrawer: true
111
- };
195
+ content.addEventListener('scroll', handleScroll, {
196
+ passive: true
197
+ });
198
+ return () => content.removeEventListener('scroll', handleScroll);
199
+ }, [shouldShrinkPadding]);
200
+ const headerContent = useMemo(() => typeof header === 'function' ? header({
201
+ handleClose
202
+ }) : header, [header, handleClose]);
203
+ const content = useMemo(() => typeof children === 'function' ? children({
204
+ handleClose
205
+ }) : children, [children, handleClose]);
206
+ const footerContent = useMemo(() => typeof footer === 'function' ? footer({
207
+ handleClose
208
+ }) : footer, [footer, handleClose]);
209
+ const trayContainerPinCss = useMemo(() => {
210
+ switch (pin) {
211
+ case 'top':
212
+ return trayContainerPinTopCss;
213
+ case 'left':
214
+ return trayContainerPinLeftCss;
215
+ case 'right':
216
+ return trayContainerPinRightCss;
217
+ case 'bottom':
218
+ default:
219
+ return trayContainerPinBottomCss;
220
+ }
221
+ }, [pin]);
112
222
  if (!isOpen) return null;
113
223
  return /*#__PURE__*/_jsx(OverlayContentContext.Provider, {
114
224
  value: overlayContentContextValue,
115
225
  children: /*#__PURE__*/_jsx(Portal, {
116
226
  containerId: trayContainerId,
117
227
  children: /*#__PURE__*/_jsxs(Box, {
228
+ ref: trayRef,
229
+ className: classNames === null || classNames === void 0 ? void 0 : classNames.root,
118
230
  height: "100vh",
119
231
  pin: "all",
120
232
  position: "fixed",
233
+ style: styles === null || styles === void 0 ? void 0 : styles.root,
121
234
  width: "100vw",
235
+ zIndex: zIndex,
122
236
  children: [/*#__PURE__*/_jsx(Overlay, {
123
- onClick: handleOverlayPress,
237
+ className: classNames === null || classNames === void 0 ? void 0 : classNames.overlay,
238
+ onClick: handleOverlayClick,
239
+ style: styles === null || styles === void 0 ? void 0 : styles.overlay,
124
240
  testID: "tray-overlay"
125
- }), /*#__PURE__*/_jsx(FocusTrap, {
126
- focusTabIndexElements: focusTabIndexElements,
127
- onEscPress: preventDismiss ? undefined : handleClose,
128
- restoreFocusOnUnmount: restoreFocusOnUnmount,
129
- children: /*#__PURE__*/_jsx(m.div, {
130
- animate: controls,
131
- initial: {
132
- y: '100%'
133
- },
134
- style: {
135
- width: '100%',
136
- position: 'absolute',
137
- bottom: 0,
138
- left: 0,
139
- right: 0,
140
- zIndex: 1,
141
- maxHeight: verticalDrawerPercentageOfView,
142
- overflowY: 'auto'
143
- },
144
- tabIndex: 0,
145
- children: /*#__PURE__*/_jsx(VStack, {
146
- ref: trayRef,
241
+ }), /*#__PURE__*/_jsx(DragMotionProvider, {
242
+ enabled: !preventDismiss,
243
+ children: /*#__PURE__*/_jsx(FocusTrap, {
244
+ focusTabIndexElements: focusTabIndexElements,
245
+ onEscPress: preventDismiss ? undefined : handleClose,
246
+ restoreFocusOnUnmount: restoreFocusOnUnmount,
247
+ children: /*#__PURE__*/_jsx(MotionVStack, {
248
+ ref: scope,
147
249
  accessibilityLabel: accessibilityLabel,
148
- alignItems: "center",
250
+ accessibilityLabelledBy: accessibilityLabelledBy,
251
+ animate: animateValue,
149
252
  "aria-modal": "true",
150
- background: "bg",
151
- borderTopLeftRadius: 400,
152
- borderTopRightRadius: 400,
253
+ bordered: theme.activeColorScheme === 'dark',
254
+ className: cx(trayContainerBaseCss, trayContainerPinCss, classNames === null || classNames === void 0 ? void 0 : classNames.container),
153
255
  "data-testid": "tray",
154
- height: "100%",
256
+ drag: !preventDismiss ? 'y' : undefined,
257
+ dragConstraints: {
258
+ top: 0,
259
+ bottom: 0
260
+ },
261
+ dragControls: dragControls,
262
+ dragElastic: {
263
+ top: 0.5,
264
+ bottom: 0.5
265
+ },
266
+ dragListener: false,
267
+ elevation: 2,
155
268
  id: id,
156
- justifyContent: "center",
157
- minHeight: 200,
269
+ initial: initialAnimationValue,
158
270
  onClick: e => e.stopPropagation(),
271
+ onDragEnd: !preventDismiss ? handleDragEnd : undefined,
272
+ pin: pin,
159
273
  role: role,
274
+ style: _objectSpread({
275
+ maxHeight: isSideTray ? undefined : verticalDrawerPercentageOfView,
276
+ touchAction: !preventDismiss && pin === 'bottom' ? 'none' : undefined
277
+ }, styles === null || styles === void 0 ? void 0 : styles.container),
278
+ tabIndex: 0,
279
+ transition: animationConfig.slideIn.transition,
280
+ width: isSideTray ? 'min(400px, 100vw)' : undefined,
160
281
  children: /*#__PURE__*/_jsxs(VStack, {
161
- maxWidth: "70em",
162
- paddingX: 6,
282
+ ref: observeTraySize,
283
+ flexGrow: 1,
284
+ maxWidth: isSideTray ? undefined : '70em',
285
+ minHeight: 0,
163
286
  width: "100%",
164
- children: [header, /*#__PURE__*/_jsxs(HStack, {
165
- alignItems: "center",
166
- justifyContent: title ? 'space-between' : 'flex-end',
167
- paddingBottom: 1,
168
- paddingTop: 3,
169
- position: "sticky",
170
- top: 0,
171
- children: [title && (typeof title === 'string' ? /*#__PURE__*/_jsx(Text, {
172
- font: "title3",
173
- children: title
174
- }) : title), !preventDismiss && /*#__PURE__*/_jsx(IconButton, {
175
- transparent: true,
287
+ children: [(shouldShowTitle || headerContent || shouldShowHandleBar) && /*#__PURE__*/_jsxs(VStack, {
288
+ className: cx(shouldShrinkPadding && trayHeaderBorderBaseCss, shouldShrinkPadding && hasScrolledDown && trayHeaderBorderVisibleCss, classNames === null || classNames === void 0 ? void 0 : classNames.header),
289
+ flexShrink: 0,
290
+ overflow: "hidden",
291
+ paddingBottom: shouldShrinkPadding ? 0.75 : 1,
292
+ paddingTop: !shouldShrinkPadding ? 3 : shouldShowHandleBar ? 0 : isSideTray ? 4 : 2,
293
+ style: styles === null || styles === void 0 ? void 0 : styles.header,
294
+ children: [shouldShowHandleBar && (preventDismiss ? /*#__PURE__*/_jsx(HandleBar, {
295
+ classNames: {
296
+ root: classNames === null || classNames === void 0 ? void 0 : classNames.handleBar,
297
+ handle: classNames === null || classNames === void 0 ? void 0 : classNames.handleBarHandle
298
+ },
299
+ styles: {
300
+ root: styles === null || styles === void 0 ? void 0 : styles.handleBar,
301
+ handle: styles === null || styles === void 0 ? void 0 : styles.handleBarHandle
302
+ }
303
+ }) : /*#__PURE__*/_jsx(HandleBar, {
176
304
  accessibilityHint: closeAccessibilityHint,
177
305
  accessibilityLabel: closeAccessibilityLabel,
178
- name: "close",
179
- onClick: handleClose,
180
- testID: "tray-close-button"
181
- })]
306
+ classNames: {
307
+ root: classNames === null || classNames === void 0 ? void 0 : classNames.handleBar,
308
+ handle: classNames === null || classNames === void 0 ? void 0 : classNames.handleBarHandle
309
+ },
310
+ onClose: handleClose,
311
+ onPointerDown: e => {
312
+ dragControls.start(e);
313
+ },
314
+ styles: {
315
+ root: styles === null || styles === void 0 ? void 0 : styles.handleBar,
316
+ handle: _objectSpread(_objectSpread({}, styles === null || styles === void 0 ? void 0 : styles.handleBarHandle), {}, {
317
+ touchAction: 'none'
318
+ })
319
+ }
320
+ })), shouldShowTitle && /*#__PURE__*/_jsxs(HStack, {
321
+ alignItems: isSideTray ? 'flex-start' : 'center',
322
+ justifyContent: title ? 'space-between' : 'flex-end',
323
+ paddingX: horizontalPadding,
324
+ children: [title && (typeof title === 'string' ? /*#__PURE__*/_jsx(Text, {
325
+ className: classNames === null || classNames === void 0 ? void 0 : classNames.title,
326
+ font: "title3",
327
+ style: styles === null || styles === void 0 ? void 0 : styles.title,
328
+ children: title
329
+ }) : title), shouldShowCloseButton && /*#__PURE__*/_jsx(IconButton, {
330
+ transparent: true,
331
+ accessibilityHint: closeAccessibilityHint,
332
+ accessibilityLabel: closeAccessibilityLabel,
333
+ className: classNames === null || classNames === void 0 ? void 0 : classNames.closeButton,
334
+ margin: isSideTray ? -1.5 : undefined,
335
+ name: "close",
336
+ onClick: handleClose,
337
+ style: styles === null || styles === void 0 ? void 0 : styles.closeButton,
338
+ testID: "tray-close-button"
339
+ })]
340
+ }), headerContent]
182
341
  }), /*#__PURE__*/_jsx(VStack, {
342
+ ref: contentRef,
343
+ className: classNames === null || classNames === void 0 ? void 0 : classNames.content,
344
+ flexGrow: 1,
183
345
  minHeight: 0,
184
- paddingBottom: 2,
185
- paddingTop: 1,
186
- style: {
346
+ overflow: "hidden",
347
+ paddingBottom: shouldShrinkPadding ? 0 : 2,
348
+ paddingTop: shouldShrinkPadding ? 0 : 1,
349
+ paddingX: horizontalPadding,
350
+ style: _objectSpread({
187
351
  overflowY: 'auto'
188
- },
189
- children: typeof children === 'function' ? children({
190
- handleClose
191
- }) : children
192
- }), footer]
352
+ }, styles === null || styles === void 0 ? void 0 : styles.content),
353
+ children: content
354
+ }), footerContent]
193
355
  })
194
356
  })
195
357
  })
@@ -197,4 +359,5 @@ export const Tray = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(function Tray(_ref
197
359
  })
198
360
  })
199
361
  });
200
- }));
362
+ }));
363
+ import "./Tray.css";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coinbase/cds-web",
3
- "version": "8.43.2",
3
+ "version": "8.44.0",
4
4
  "description": "Coinbase Design System - Web",
5
5
  "repository": {
6
6
  "type": "git",
@@ -207,7 +207,7 @@
207
207
  "react-dom": "^18.3.1"
208
208
  },
209
209
  "dependencies": {
210
- "@coinbase/cds-common": "^8.43.2",
210
+ "@coinbase/cds-common": "^8.44.0",
211
211
  "@coinbase/cds-icons": "^5.11.0",
212
212
  "@coinbase/cds-illustrations": "^4.31.0",
213
213
  "@coinbase/cds-lottie-files": "^3.3.4",