@cdx-ui/primitives 0.0.1-beta.132 → 0.0.1-beta.133

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.
@@ -50,10 +50,46 @@ const ButtonRoot = exports.ButtonRoot = /*#__PURE__*/(0, _react.forwardRef)(({
50
50
  focusVisible: isFocusVisibleProp || isFocusVisible
51
51
  };
52
52
  }, [isHovered, isHoveredProp, isFocused, isFocusedProp, isActive, isActiveProp, isDisabled, isFocusVisible, isFocusVisibleProp]);
53
- const Comp = asChild ? _slot.Slot : _reactNative.Pressable;
53
+ if (asChild) {
54
+ // Dedicated asChild path: composing Button onto a child (e.g. `<Link>`) must not
55
+ // force `role="button"` or leak ButtonRoot's internal usePress/useHover/useFocus
56
+ // handlers onto it — doing so overrides the child's own role and behavior (DEVEX-6442).
57
+ // The hooks above still run unconditionally (rules of hooks) so ButtonProvider can
58
+ // expose interaction state to sub-components, but their handler props are
59
+ // intentionally not spread onto the child here.
60
+ const {
61
+ onPress,
62
+ ...restProps
63
+ } = props;
64
+ const slotProps = {
65
+ ...restProps,
66
+ disabled: isDisabled
67
+ };
68
+
69
+ // Only pass onPress when Button itself was given one — preserves the child's own
70
+ // handler (e.g. Link's navigation onPress) when Button has none of its own.
71
+ if (onPress) {
72
+ slotProps.onPress = onPress;
73
+ }
74
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_context.ButtonProvider, {
75
+ value: contextValue,
76
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_slot.Slot, {
77
+ ref: ref,
78
+ ...slotProps,
79
+ ...(0, _dataAttributes.mergeDataAttributes)(props, (0, _dataAttributes.dataAttributes)({
80
+ hover: isHoveredProp || isHovered,
81
+ focus: isFocusedProp || isFocused,
82
+ active: isActiveProp || isActive,
83
+ disabled: !!isDisabled,
84
+ focusVisible: isFocusVisibleProp || isFocusVisible
85
+ })),
86
+ children: typeof children === 'function' ? children(contextValue) : children
87
+ })
88
+ });
89
+ }
54
90
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_context.ButtonProvider, {
55
91
  value: contextValue,
56
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Comp, {
92
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Pressable, {
57
93
  ref: ref,
58
94
  role: props?.role || 'button',
59
95
  disabled: isDisabled,
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_reactNative","_utils","_focus","_interactions","_slot","_dataAttributes","_context","_jsxRuntime","ButtonRoot","exports","forwardRef","asChild","children","isDisabled","isHovered","isHoveredProp","isActive","isActiveProp","isFocused","isFocusedProp","isFocusVisible","isFocusVisibleProp","props","ref","focusProps","useFocus","focusRingProps","useFocusRing","pressProps","pressableProps","isPressed","usePress","hoverProps","useHover","contextValue","useMemo","hover","focus","active","disabled","focusVisible","Comp","Slot","Pressable","jsx","ButtonProvider","value","role","mergeDataAttributes","dataAttributes","onPressIn","composeEventHandlers","onPressOut","onHoverIn","onHoverOut","onFocus","onBlur","displayName"],"sourceRoot":"../../../src","sources":["button/ButtonRoot.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_reactNative","_utils","_focus","_interactions","_slot","_dataAttributes","_context","_jsxRuntime","ButtonRoot","exports","forwardRef","asChild","children","isDisabled","isHovered","isHoveredProp","isActive","isActiveProp","isFocused","isFocusedProp","isFocusVisible","isFocusVisibleProp","props","ref","focusProps","useFocus","focusRingProps","useFocusRing","pressProps","pressableProps","isPressed","usePress","hoverProps","useHover","contextValue","useMemo","hover","focus","active","disabled","focusVisible","onPress","restProps","slotProps","jsx","ButtonProvider","value","Slot","mergeDataAttributes","dataAttributes","Pressable","role","onPressIn","composeEventHandlers","onPressOut","onHoverIn","onHoverOut","onFocus","onBlur","displayName"],"sourceRoot":"../../../src","sources":["button/ButtonRoot.tsx"],"mappings":"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","ignoreList":[]}
@@ -46,10 +46,46 @@ export const ButtonRoot = /*#__PURE__*/forwardRef(({
46
46
  focusVisible: isFocusVisibleProp || isFocusVisible
47
47
  };
48
48
  }, [isHovered, isHoveredProp, isFocused, isFocusedProp, isActive, isActiveProp, isDisabled, isFocusVisible, isFocusVisibleProp]);
49
- const Comp = asChild ? Slot : Pressable;
49
+ if (asChild) {
50
+ // Dedicated asChild path: composing Button onto a child (e.g. `<Link>`) must not
51
+ // force `role="button"` or leak ButtonRoot's internal usePress/useHover/useFocus
52
+ // handlers onto it — doing so overrides the child's own role and behavior (DEVEX-6442).
53
+ // The hooks above still run unconditionally (rules of hooks) so ButtonProvider can
54
+ // expose interaction state to sub-components, but their handler props are
55
+ // intentionally not spread onto the child here.
56
+ const {
57
+ onPress,
58
+ ...restProps
59
+ } = props;
60
+ const slotProps = {
61
+ ...restProps,
62
+ disabled: isDisabled
63
+ };
64
+
65
+ // Only pass onPress when Button itself was given one — preserves the child's own
66
+ // handler (e.g. Link's navigation onPress) when Button has none of its own.
67
+ if (onPress) {
68
+ slotProps.onPress = onPress;
69
+ }
70
+ return /*#__PURE__*/_jsx(ButtonProvider, {
71
+ value: contextValue,
72
+ children: /*#__PURE__*/_jsx(Slot, {
73
+ ref: ref,
74
+ ...slotProps,
75
+ ...mergeDataAttributes(props, dataAttributes({
76
+ hover: isHoveredProp || isHovered,
77
+ focus: isFocusedProp || isFocused,
78
+ active: isActiveProp || isActive,
79
+ disabled: !!isDisabled,
80
+ focusVisible: isFocusVisibleProp || isFocusVisible
81
+ })),
82
+ children: typeof children === 'function' ? children(contextValue) : children
83
+ })
84
+ });
85
+ }
50
86
  return /*#__PURE__*/_jsx(ButtonProvider, {
51
87
  value: contextValue,
52
- children: /*#__PURE__*/_jsx(Comp, {
88
+ children: /*#__PURE__*/_jsx(Pressable, {
53
89
  ref: ref,
54
90
  role: props?.role || 'button',
55
91
  disabled: isDisabled,
@@ -1 +1 @@
1
- {"version":3,"names":["forwardRef","useMemo","Pressable","composeEventHandlers","useFocus","useFocusRing","useHover","usePress","Slot","dataAttributes","mergeDataAttributes","ButtonProvider","jsx","_jsx","ButtonRoot","asChild","children","isDisabled","isHovered","isHoveredProp","isActive","isActiveProp","isFocused","isFocusedProp","isFocusVisible","isFocusVisibleProp","props","ref","focusProps","focusRingProps","pressProps","pressableProps","isPressed","hoverProps","contextValue","hover","focus","active","disabled","focusVisible","Comp","value","role","onPressIn","onPressOut","onHoverIn","onHoverOut","onFocus","onBlur","displayName"],"sourceRoot":"../../../src","sources":["button/ButtonRoot.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["forwardRef","useMemo","Pressable","composeEventHandlers","useFocus","useFocusRing","useHover","usePress","Slot","dataAttributes","mergeDataAttributes","ButtonProvider","jsx","_jsx","ButtonRoot","asChild","children","isDisabled","isHovered","isHoveredProp","isActive","isActiveProp","isFocused","isFocusedProp","isFocusVisible","isFocusVisibleProp","props","ref","focusProps","focusRingProps","pressProps","pressableProps","isPressed","hoverProps","contextValue","hover","focus","active","disabled","focusVisible","onPress","restProps","slotProps","value","role","onPressIn","onPressOut","onHoverIn","onHoverOut","onFocus","onBlur","displayName"],"sourceRoot":"../../../src","sources":["button/ButtonRoot.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"ButtonRoot.d.ts","sourceRoot":"","sources":["../../../src/button/ButtonRoot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAIjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC;IACrE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,gBAAgB,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC;CAC7E;AAED,eAAO,MAAM,UAAU,qGA+FtB,CAAC"}
1
+ {"version":3,"file":"ButtonRoot.d.ts","sourceRoot":"","sources":["../../../src/button/ButtonRoot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAIjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC;IACrE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,gBAAgB,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC;CAC7E;AAED,eAAO,MAAM,UAAU,qGAuItB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cdx-ui/primitives",
3
- "version": "0.0.1-beta.132",
3
+ "version": "0.0.1-beta.133",
4
4
  "main": "lib/commonjs/index.js",
5
5
  "module": "lib/module/index.js",
6
6
  "react-native": "src/index.ts",
@@ -60,7 +60,7 @@
60
60
  "@react-stately/checkbox": "3.7.4",
61
61
  "@react-stately/radio": "3.12.0",
62
62
  "@react-stately/toggle": "3.9.4",
63
- "@cdx-ui/utils": "0.0.1-beta.132"
63
+ "@cdx-ui/utils": "0.0.1-beta.133"
64
64
  },
65
65
  "devDependencies": {
66
66
  "@types/react": "19.1.17",
@@ -59,11 +59,51 @@ export const ButtonRoot = forwardRef<React.ComponentRef<typeof Pressable>, Butto
59
59
  isFocusVisibleProp,
60
60
  ]);
61
61
 
62
- const Comp = asChild ? Slot : Pressable;
62
+ if (asChild) {
63
+ // Dedicated asChild path: composing Button onto a child (e.g. `<Link>`) must not
64
+ // force `role="button"` or leak ButtonRoot's internal usePress/useHover/useFocus
65
+ // handlers onto it — doing so overrides the child's own role and behavior (DEVEX-6442).
66
+ // The hooks above still run unconditionally (rules of hooks) so ButtonProvider can
67
+ // expose interaction state to sub-components, but their handler props are
68
+ // intentionally not spread onto the child here.
69
+ const { onPress, ...restProps } = props;
70
+
71
+ const slotProps: Record<string, unknown> = {
72
+ ...restProps,
73
+ disabled: isDisabled,
74
+ };
75
+
76
+ // Only pass onPress when Button itself was given one — preserves the child's own
77
+ // handler (e.g. Link's navigation onPress) when Button has none of its own.
78
+ if (onPress) {
79
+ slotProps.onPress = onPress;
80
+ }
81
+
82
+ return (
83
+ <ButtonProvider value={contextValue}>
84
+ <Slot
85
+ ref={ref}
86
+ {...(slotProps as PressableProps)}
87
+ {...mergeDataAttributes(
88
+ props,
89
+ dataAttributes({
90
+ hover: isHoveredProp || isHovered,
91
+ focus: isFocusedProp || isFocused,
92
+ active: isActiveProp || isActive,
93
+ disabled: !!isDisabled,
94
+ focusVisible: isFocusVisibleProp || isFocusVisible,
95
+ }),
96
+ )}
97
+ >
98
+ {typeof children === 'function' ? children(contextValue) : children}
99
+ </Slot>
100
+ </ButtonProvider>
101
+ );
102
+ }
63
103
 
64
104
  return (
65
105
  <ButtonProvider value={contextValue}>
66
- <Comp
106
+ <Pressable
67
107
  ref={ref}
68
108
  role={props?.role || 'button'}
69
109
  disabled={isDisabled}
@@ -106,7 +146,7 @@ export const ButtonRoot = forwardRef<React.ComponentRef<typeof Pressable>, Butto
106
146
  focusVisible: isFocusVisibleProp || isFocusVisible,
107
147
  })
108
148
  : children}
109
- </Comp>
149
+ </Pressable>
110
150
  </ButtonProvider>
111
151
  );
112
152
  },