@cdx-ui/components 0.0.1-beta.64 → 0.0.1-beta.66

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 (263) hide show
  1. package/lib/commonjs/components/AlertDialog/index.js +12 -10
  2. package/lib/commonjs/components/AlertDialog/index.js.map +1 -1
  3. package/lib/commonjs/components/Avatar/index.js +125 -25
  4. package/lib/commonjs/components/Avatar/index.js.map +1 -1
  5. package/lib/commonjs/components/Button/index.js +127 -28
  6. package/lib/commonjs/components/Button/index.js.map +1 -1
  7. package/lib/commonjs/components/Button/styles.js +9 -3
  8. package/lib/commonjs/components/Button/styles.js.map +1 -1
  9. package/lib/commonjs/components/CLAUDE.md +115 -11
  10. package/lib/commonjs/components/Checkbox/index.js +69 -22
  11. package/lib/commonjs/components/Checkbox/index.js.map +1 -1
  12. package/lib/commonjs/components/Checkbox/styles.js +1 -1
  13. package/lib/commonjs/components/Checkbox/styles.js.map +1 -1
  14. package/lib/commonjs/components/Chip/index.js +44 -36
  15. package/lib/commonjs/components/Chip/index.js.map +1 -1
  16. package/lib/commonjs/components/Chip/styles.js +6 -35
  17. package/lib/commonjs/components/Chip/styles.js.map +1 -1
  18. package/lib/commonjs/components/Dialog/index.js +92 -72
  19. package/lib/commonjs/components/Dialog/index.js.map +1 -1
  20. package/lib/commonjs/components/Field/index.js +70 -26
  21. package/lib/commonjs/components/Field/index.js.map +1 -1
  22. package/lib/commonjs/components/Form/index.js +5 -12
  23. package/lib/commonjs/components/Form/index.js.map +1 -1
  24. package/lib/commonjs/components/IconButton/index.js +5 -33
  25. package/lib/commonjs/components/IconButton/index.js.map +1 -1
  26. package/lib/commonjs/components/Input/index.js +50 -20
  27. package/lib/commonjs/components/Input/index.js.map +1 -1
  28. package/lib/commonjs/components/Link/index.js +14 -7
  29. package/lib/commonjs/components/Link/index.js.map +1 -1
  30. package/lib/commonjs/components/ListItem/index.js +129 -54
  31. package/lib/commonjs/components/ListItem/index.js.map +1 -1
  32. package/lib/commonjs/components/OtpInput/index.js +94 -28
  33. package/lib/commonjs/components/OtpInput/index.js.map +1 -1
  34. package/lib/commonjs/components/ProgressBar/index.js +8 -13
  35. package/lib/commonjs/components/ProgressBar/index.js.map +1 -1
  36. package/lib/commonjs/components/Radio/index.js +51 -53
  37. package/lib/commonjs/components/Radio/index.js.map +1 -1
  38. package/lib/commonjs/components/Select/index.js +112 -46
  39. package/lib/commonjs/components/Select/index.js.map +1 -1
  40. package/lib/commonjs/components/Select/styles.js +2 -2
  41. package/lib/commonjs/components/Select/styles.js.map +1 -1
  42. package/lib/commonjs/components/Skeleton/index.js +37 -0
  43. package/lib/commonjs/components/Skeleton/index.js.map +1 -0
  44. package/lib/commonjs/components/Skeleton/styles.js +9 -0
  45. package/lib/commonjs/components/Skeleton/styles.js.map +1 -0
  46. package/lib/commonjs/components/Switch/BaseSwitch.js +23 -13
  47. package/lib/commonjs/components/Switch/BaseSwitch.js.map +1 -1
  48. package/lib/commonjs/components/Switch/BaseSwitch.web.js +25 -21
  49. package/lib/commonjs/components/Switch/BaseSwitch.web.js.map +1 -1
  50. package/lib/commonjs/components/Switch/index.js +34 -3
  51. package/lib/commonjs/components/Switch/index.js.map +1 -1
  52. package/lib/commonjs/components/Tile/index.js +150 -77
  53. package/lib/commonjs/components/Tile/index.js.map +1 -1
  54. package/lib/commonjs/components/index.js +12 -0
  55. package/lib/commonjs/components/index.js.map +1 -1
  56. package/lib/commonjs/figma/Chip.figma.js +2 -2
  57. package/lib/commonjs/figma/Chip.figma.js.map +1 -1
  58. package/lib/commonjs/utils/positionToDataIcon.js +41 -0
  59. package/lib/commonjs/utils/positionToDataIcon.js.map +1 -0
  60. package/lib/module/components/AlertDialog/index.js +13 -11
  61. package/lib/module/components/AlertDialog/index.js.map +1 -1
  62. package/lib/module/components/Avatar/index.js +128 -28
  63. package/lib/module/components/Avatar/index.js.map +1 -1
  64. package/lib/module/components/Button/index.js +130 -32
  65. package/lib/module/components/Button/index.js.map +1 -1
  66. package/lib/module/components/Button/styles.js +8 -2
  67. package/lib/module/components/Button/styles.js.map +1 -1
  68. package/lib/module/components/CLAUDE.md +115 -11
  69. package/lib/module/components/Checkbox/index.js +72 -25
  70. package/lib/module/components/Checkbox/index.js.map +1 -1
  71. package/lib/module/components/Checkbox/styles.js +1 -1
  72. package/lib/module/components/Checkbox/styles.js.map +1 -1
  73. package/lib/module/components/Chip/index.js +47 -39
  74. package/lib/module/components/Chip/index.js.map +1 -1
  75. package/lib/module/components/Chip/styles.js +6 -35
  76. package/lib/module/components/Chip/styles.js.map +1 -1
  77. package/lib/module/components/Dialog/index.js +96 -76
  78. package/lib/module/components/Dialog/index.js.map +1 -1
  79. package/lib/module/components/Field/index.js +74 -31
  80. package/lib/module/components/Field/index.js.map +1 -1
  81. package/lib/module/components/Form/index.js +7 -14
  82. package/lib/module/components/Form/index.js.map +1 -1
  83. package/lib/module/components/IconButton/index.js +6 -34
  84. package/lib/module/components/IconButton/index.js.map +1 -1
  85. package/lib/module/components/Input/index.js +53 -23
  86. package/lib/module/components/Input/index.js.map +1 -1
  87. package/lib/module/components/Link/index.js +16 -8
  88. package/lib/module/components/Link/index.js.map +1 -1
  89. package/lib/module/components/ListItem/index.js +134 -59
  90. package/lib/module/components/ListItem/index.js.map +1 -1
  91. package/lib/module/components/OtpInput/index.js +94 -28
  92. package/lib/module/components/OtpInput/index.js.map +1 -1
  93. package/lib/module/components/ProgressBar/index.js +9 -14
  94. package/lib/module/components/ProgressBar/index.js.map +1 -1
  95. package/lib/module/components/Radio/index.js +54 -57
  96. package/lib/module/components/Radio/index.js.map +1 -1
  97. package/lib/module/components/Select/index.js +118 -52
  98. package/lib/module/components/Select/index.js.map +1 -1
  99. package/lib/module/components/Select/styles.js +2 -2
  100. package/lib/module/components/Select/styles.js.map +1 -1
  101. package/lib/module/components/Skeleton/index.js +32 -0
  102. package/lib/module/components/Skeleton/index.js.map +1 -0
  103. package/lib/module/components/Skeleton/styles.js +5 -0
  104. package/lib/module/components/Skeleton/styles.js.map +1 -0
  105. package/lib/module/components/Switch/BaseSwitch.js +24 -14
  106. package/lib/module/components/Switch/BaseSwitch.js.map +1 -1
  107. package/lib/module/components/Switch/BaseSwitch.web.js +26 -22
  108. package/lib/module/components/Switch/BaseSwitch.web.js.map +1 -1
  109. package/lib/module/components/Switch/index.js +35 -4
  110. package/lib/module/components/Switch/index.js.map +1 -1
  111. package/lib/module/components/Tile/index.js +155 -83
  112. package/lib/module/components/Tile/index.js.map +1 -1
  113. package/lib/module/components/index.js +1 -0
  114. package/lib/module/components/index.js.map +1 -1
  115. package/lib/module/figma/Chip.figma.js +2 -2
  116. package/lib/module/figma/Chip.figma.js.map +1 -1
  117. package/lib/module/utils/positionToDataIcon.js +38 -0
  118. package/lib/module/utils/positionToDataIcon.js.map +1 -0
  119. package/lib/typescript/components/AlertDialog/index.d.ts.map +1 -1
  120. package/lib/typescript/components/Avatar/index.d.ts +6 -2
  121. package/lib/typescript/components/Avatar/index.d.ts.map +1 -1
  122. package/lib/typescript/components/Button/index.d.ts +31 -8
  123. package/lib/typescript/components/Button/index.d.ts.map +1 -1
  124. package/lib/typescript/components/Button/styles.d.ts +2 -1
  125. package/lib/typescript/components/Button/styles.d.ts.map +1 -1
  126. package/lib/typescript/components/Checkbox/index.d.ts +3 -1
  127. package/lib/typescript/components/Checkbox/index.d.ts.map +1 -1
  128. package/lib/typescript/components/Chip/index.d.ts +19 -9
  129. package/lib/typescript/components/Chip/index.d.ts.map +1 -1
  130. package/lib/typescript/components/Chip/styles.d.ts +0 -1
  131. package/lib/typescript/components/Chip/styles.d.ts.map +1 -1
  132. package/lib/typescript/components/Dialog/index.d.ts +12 -6
  133. package/lib/typescript/components/Dialog/index.d.ts.map +1 -1
  134. package/lib/typescript/components/Dialog/styles.d.ts +1 -1
  135. package/lib/typescript/components/Field/index.d.ts +14 -7
  136. package/lib/typescript/components/Field/index.d.ts.map +1 -1
  137. package/lib/typescript/components/Form/index.d.ts +4 -4
  138. package/lib/typescript/components/Form/index.d.ts.map +1 -1
  139. package/lib/typescript/components/IconButton/index.d.ts.map +1 -1
  140. package/lib/typescript/components/Input/index.d.ts +11 -3
  141. package/lib/typescript/components/Input/index.d.ts.map +1 -1
  142. package/lib/typescript/components/Link/index.d.ts +2 -0
  143. package/lib/typescript/components/Link/index.d.ts.map +1 -1
  144. package/lib/typescript/components/ListItem/index.d.ts +28 -6
  145. package/lib/typescript/components/ListItem/index.d.ts.map +1 -1
  146. package/lib/typescript/components/OtpInput/index.d.ts +1 -1
  147. package/lib/typescript/components/OtpInput/index.d.ts.map +1 -1
  148. package/lib/typescript/components/ProgressBar/index.d.ts +4 -4
  149. package/lib/typescript/components/ProgressBar/index.d.ts.map +1 -1
  150. package/lib/typescript/components/Radio/index.d.ts +4 -0
  151. package/lib/typescript/components/Radio/index.d.ts.map +1 -1
  152. package/lib/typescript/components/Select/index.d.ts +35 -2
  153. package/lib/typescript/components/Select/index.d.ts.map +1 -1
  154. package/lib/typescript/components/Select/styles.d.ts.map +1 -1
  155. package/lib/typescript/components/Skeleton/index.d.ts +9 -0
  156. package/lib/typescript/components/Skeleton/index.d.ts.map +1 -0
  157. package/lib/typescript/components/Skeleton/styles.d.ts +4 -0
  158. package/lib/typescript/components/Skeleton/styles.d.ts.map +1 -0
  159. package/lib/typescript/components/Switch/BaseSwitch.d.ts +12 -5
  160. package/lib/typescript/components/Switch/BaseSwitch.d.ts.map +1 -1
  161. package/lib/typescript/components/Switch/BaseSwitch.web.d.ts +11 -5
  162. package/lib/typescript/components/Switch/BaseSwitch.web.d.ts.map +1 -1
  163. package/lib/typescript/components/Switch/index.d.ts +5 -1
  164. package/lib/typescript/components/Switch/index.d.ts.map +1 -1
  165. package/lib/typescript/components/Tile/index.d.ts +8 -2
  166. package/lib/typescript/components/Tile/index.d.ts.map +1 -1
  167. package/lib/typescript/components/index.d.ts +1 -0
  168. package/lib/typescript/components/index.d.ts.map +1 -1
  169. package/lib/typescript/utils/positionToDataIcon.d.ts +29 -0
  170. package/lib/typescript/utils/positionToDataIcon.d.ts.map +1 -0
  171. package/package.json +5 -5
  172. package/src/components/AlertDialog/index.tsx +13 -14
  173. package/src/components/Avatar/index.tsx +134 -44
  174. package/src/components/Button/index.tsx +216 -44
  175. package/src/components/Button/styles.ts +50 -38
  176. package/src/components/CLAUDE.md +115 -11
  177. package/src/components/Checkbox/index.tsx +93 -32
  178. package/src/components/Checkbox/styles.ts +1 -1
  179. package/src/components/Chip/index.tsx +88 -61
  180. package/src/components/Chip/styles.ts +6 -18
  181. package/src/components/Dialog/index.tsx +139 -99
  182. package/src/components/Field/index.tsx +113 -49
  183. package/src/components/Form/index.tsx +18 -14
  184. package/src/components/IconButton/index.tsx +7 -31
  185. package/src/components/Input/index.tsx +75 -32
  186. package/src/components/Link/index.tsx +38 -12
  187. package/src/components/ListItem/index.tsx +158 -73
  188. package/src/components/OtpInput/index.tsx +126 -43
  189. package/src/components/ProgressBar/index.tsx +11 -16
  190. package/src/components/Radio/index.tsx +76 -54
  191. package/src/components/Select/index.tsx +174 -59
  192. package/src/components/Select/styles.ts +1 -2
  193. package/src/components/Skeleton/index.tsx +42 -0
  194. package/src/components/Skeleton/styles.ts +5 -0
  195. package/src/components/Switch/BaseSwitch.tsx +38 -16
  196. package/src/components/Switch/BaseSwitch.web.tsx +28 -35
  197. package/src/components/Switch/index.tsx +51 -4
  198. package/src/components/Tile/index.tsx +145 -94
  199. package/src/components/index.ts +1 -0
  200. package/src/utils/positionToDataIcon.ts +34 -0
  201. package/lib/commonjs/components/Field/FieldLabel.js +0 -33
  202. package/lib/commonjs/components/Field/FieldLabel.js.map +0 -1
  203. package/lib/commonjs/components/Field/FieldLabel.web.js +0 -22
  204. package/lib/commonjs/components/Field/FieldLabel.web.js.map +0 -1
  205. package/lib/commonjs/components/Form/FormRoot.js +0 -25
  206. package/lib/commonjs/components/Form/FormRoot.js.map +0 -1
  207. package/lib/commonjs/components/Form/FormRoot.web.js +0 -17
  208. package/lib/commonjs/components/Form/FormRoot.web.js.map +0 -1
  209. package/lib/commonjs/components/Input/BaseInput.android.js +0 -20
  210. package/lib/commonjs/components/Input/BaseInput.android.js.map +0 -1
  211. package/lib/commonjs/components/Input/BaseInput.js +0 -13
  212. package/lib/commonjs/components/Input/BaseInput.js.map +0 -1
  213. package/lib/commonjs/components/Input/BaseInput.web.js +0 -50
  214. package/lib/commonjs/components/Input/BaseInput.web.js.map +0 -1
  215. package/lib/commonjs/components/Select/SelectTriggerHost.js +0 -10
  216. package/lib/commonjs/components/Select/SelectTriggerHost.js.map +0 -1
  217. package/lib/commonjs/components/Select/SelectTriggerHost.web.js +0 -102
  218. package/lib/commonjs/components/Select/SelectTriggerHost.web.js.map +0 -1
  219. package/lib/module/components/Field/FieldLabel.js +0 -29
  220. package/lib/module/components/Field/FieldLabel.js.map +0 -1
  221. package/lib/module/components/Field/FieldLabel.web.js +0 -17
  222. package/lib/module/components/Field/FieldLabel.web.js.map +0 -1
  223. package/lib/module/components/Form/FormRoot.js +0 -21
  224. package/lib/module/components/Form/FormRoot.js.map +0 -1
  225. package/lib/module/components/Form/FormRoot.web.js +0 -12
  226. package/lib/module/components/Form/FormRoot.web.js.map +0 -1
  227. package/lib/module/components/Input/BaseInput.android.js +0 -16
  228. package/lib/module/components/Input/BaseInput.android.js.map +0 -1
  229. package/lib/module/components/Input/BaseInput.js +0 -4
  230. package/lib/module/components/Input/BaseInput.js.map +0 -1
  231. package/lib/module/components/Input/BaseInput.web.js +0 -45
  232. package/lib/module/components/Input/BaseInput.web.js.map +0 -1
  233. package/lib/module/components/Select/SelectTriggerHost.js +0 -7
  234. package/lib/module/components/Select/SelectTriggerHost.js.map +0 -1
  235. package/lib/module/components/Select/SelectTriggerHost.web.js +0 -97
  236. package/lib/module/components/Select/SelectTriggerHost.web.js.map +0 -1
  237. package/lib/typescript/components/Field/FieldLabel.d.ts +0 -18
  238. package/lib/typescript/components/Field/FieldLabel.d.ts.map +0 -1
  239. package/lib/typescript/components/Field/FieldLabel.web.d.ts +0 -16
  240. package/lib/typescript/components/Field/FieldLabel.web.d.ts.map +0 -1
  241. package/lib/typescript/components/Form/FormRoot.d.ts +0 -14
  242. package/lib/typescript/components/Form/FormRoot.d.ts.map +0 -1
  243. package/lib/typescript/components/Form/FormRoot.web.d.ts +0 -10
  244. package/lib/typescript/components/Form/FormRoot.web.d.ts.map +0 -1
  245. package/lib/typescript/components/Input/BaseInput.android.d.ts +0 -3
  246. package/lib/typescript/components/Input/BaseInput.android.d.ts.map +0 -1
  247. package/lib/typescript/components/Input/BaseInput.d.ts +0 -2
  248. package/lib/typescript/components/Input/BaseInput.d.ts.map +0 -1
  249. package/lib/typescript/components/Input/BaseInput.web.d.ts +0 -3
  250. package/lib/typescript/components/Input/BaseInput.web.d.ts.map +0 -1
  251. package/lib/typescript/components/Select/SelectTriggerHost.d.ts +0 -3
  252. package/lib/typescript/components/Select/SelectTriggerHost.d.ts.map +0 -1
  253. package/lib/typescript/components/Select/SelectTriggerHost.web.d.ts +0 -16
  254. package/lib/typescript/components/Select/SelectTriggerHost.web.d.ts.map +0 -1
  255. package/src/components/Field/FieldLabel.tsx +0 -33
  256. package/src/components/Field/FieldLabel.web.tsx +0 -25
  257. package/src/components/Form/FormRoot.tsx +0 -20
  258. package/src/components/Form/FormRoot.web.tsx +0 -12
  259. package/src/components/Input/BaseInput.android.tsx +0 -13
  260. package/src/components/Input/BaseInput.tsx +0 -1
  261. package/src/components/Input/BaseInput.web.tsx +0 -41
  262. package/src/components/Select/SelectTriggerHost.tsx +0 -4
  263. package/src/components/Select/SelectTriggerHost.web.tsx +0 -143
@@ -1,22 +1,15 @@
1
1
  "use strict";
2
2
 
3
- import { forwardRef, useEffect } from 'react';
4
- import { ActivityIndicator, Pressable, Text, View } from 'react-native';
5
- import { createButton } from '@cdx-ui/primitives';
6
- import { cn, useStyleContext, withStyleContext } from '@cdx-ui/utils';
3
+ import React, { forwardRef, useEffect, useMemo } from 'react';
4
+ import { ActivityIndicator, Text, View } from 'react-native';
5
+ import { ButtonRoot as ButtonRootPrimitive, Slot, dataAttributes, mergeDataAttributes } from '@cdx-ui/primitives';
6
+ import { cn, flattenChildren, ParentContext, useParentContext, useStyleContext } from '@cdx-ui/utils';
7
7
  import { Icon } from '../Icon';
8
- import { buttonGroupVariants, buttonIconVariants, buttonRootVariants, buttonSpinnerVariants, buttonTextVariants } from './styles';
8
+ import { positionToDataIcon } from '../../utils/positionToDataIcon';
9
+ import { buttonGroupVariants, buttonIconVariants, buttonRootVariants, buttonSpinnerColorVariants, buttonSpinnerVariants, buttonTextVariants } from './styles';
9
10
  import { jsx as _jsx } from "react/jsx-runtime";
10
11
  const SCOPE = 'BUTTON';
11
- const Root = withStyleContext(Pressable, SCOPE);
12
12
  const useButtonStyleContext = () => useStyleContext(SCOPE);
13
- const ButtonPrimitive = createButton({
14
- Root,
15
- Text,
16
- Group: View,
17
- Spinner: ActivityIndicator,
18
- Icon: View
19
- });
20
13
 
21
14
  // =============================================================================
22
15
  // STYLED ROOT COMPONENT
@@ -49,27 +42,38 @@ const ButtonRoot = /*#__PURE__*/forwardRef(({
49
42
  size,
50
43
  fullWidth
51
44
  }), className);
52
- return /*#__PURE__*/_jsx(ButtonPrimitive, {
53
- ref: ref,
54
- className: computedClassName,
55
- style: style,
56
- context: {
45
+ const parent = useParentContext();
46
+ const ctx = useMemo(() => ({
47
+ ...parent,
48
+ [SCOPE]: {
57
49
  variant,
58
50
  color,
59
51
  size,
60
52
  fullWidth
61
- },
62
- ...props,
63
- children: children
53
+ }
54
+ }), [parent, variant, color, size, fullWidth]);
55
+ return /*#__PURE__*/_jsx(ParentContext.Provider, {
56
+ value: ctx,
57
+ children: /*#__PURE__*/_jsx(ButtonRootPrimitive, {
58
+ ref: ref,
59
+ className: computedClassName,
60
+ style: style,
61
+ ...props,
62
+ ...mergeDataAttributes(props, dataAttributes({
63
+ slot: 'button'
64
+ })),
65
+ children: children
66
+ })
64
67
  });
65
68
  });
66
69
  ButtonRoot.displayName = 'Button';
67
70
 
68
71
  // =============================================================================
69
- // STYLED TEXT COMPONENT
72
+ // STYLED LABEL COMPONENT
70
73
  // =============================================================================
71
74
 
72
75
  const ButtonLabel = /*#__PURE__*/forwardRef(({
76
+ asChild,
73
77
  className,
74
78
  children,
75
79
  style,
@@ -85,46 +89,110 @@ const ButtonLabel = /*#__PURE__*/forwardRef(({
85
89
  color,
86
90
  size
87
91
  }), className);
88
- return /*#__PURE__*/_jsx(ButtonPrimitive.Text, {
92
+ const Comp = asChild ? Slot : Text;
93
+ return /*#__PURE__*/_jsx(Comp, {
89
94
  ref: ref,
90
95
  className: computedClassName,
91
96
  style: style,
92
97
  ...props,
98
+ ...mergeDataAttributes(props, dataAttributes({
99
+ slot: 'button-label'
100
+ })),
93
101
  children: children
94
102
  });
95
103
  });
96
104
  ButtonLabel.displayName = 'Button.Label';
97
105
 
106
+ // =============================================================================
107
+ // STYLED GROUP COMPONENT
108
+ // =============================================================================
109
+
98
110
  // TODO: Use ButtonGroupVariantProps
99
111
 
100
112
  const ButtonGroup = /*#__PURE__*/forwardRef(({
113
+ asChild,
101
114
  className,
102
115
  children,
103
116
  style,
104
117
  flexDirection = 'row',
105
118
  isAttached,
119
+ isDisabled,
120
+ isReversed,
121
+ reversed,
106
122
  ...props
107
123
  }, ref) => {
124
+ const direction = flexDirection.includes('reverse') ? flexDirection === 'column-reverse' ? 'column' : 'row' : flexDirection;
125
+ let childrenArray = React.Children.toArray(flattenChildren(children));
126
+ childrenArray = isReversed || reversed ? [...childrenArray].reverse() : childrenArray;
127
+ const computedChildren = childrenArray.map((child, index) => {
128
+ if (typeof child === 'string' || typeof child === 'number') {
129
+ return child;
130
+ }
131
+ const attachedStyles = {};
132
+ if (index === 0) {
133
+ if (direction === 'column') {
134
+ attachedStyles.borderBottomLeftRadius = 0;
135
+ attachedStyles.borderBottomRightRadius = 0;
136
+ } else {
137
+ attachedStyles.borderTopRightRadius = 0;
138
+ attachedStyles.borderBottomRightRadius = 0;
139
+ }
140
+ } else if (index === childrenArray.length - 1) {
141
+ if (direction === 'column') {
142
+ attachedStyles.borderTopLeftRadius = 0;
143
+ attachedStyles.borderTopRightRadius = 0;
144
+ } else {
145
+ attachedStyles.borderTopLeftRadius = 0;
146
+ attachedStyles.borderBottomLeftRadius = 0;
147
+ }
148
+ } else {
149
+ attachedStyles.borderRadius = 0;
150
+ }
151
+ const childProps = {
152
+ isDisabled,
153
+ ...child.props,
154
+ style: {
155
+ ...(isAttached ? attachedStyles : {}),
156
+ ...child.props.style
157
+ }
158
+ };
159
+ return /*#__PURE__*/_jsx(React.Fragment, {
160
+ children: /*#__PURE__*/React.cloneElement(child, childProps)
161
+ }, child.key ?? `spaced-child-${index.toString()}`);
162
+ });
108
163
  const groupClassName = cn(buttonGroupVariants({
109
164
  flexDirection,
110
165
  isAttached: !!isAttached
111
166
  }), className);
112
- return /*#__PURE__*/_jsx(ButtonPrimitive.Group, {
167
+ const Comp = asChild ? Slot : View;
168
+ const gapProp = isAttached ? {
169
+ gap: 0
170
+ } : {};
171
+ return /*#__PURE__*/_jsx(Comp, {
113
172
  ref: ref,
114
173
  className: groupClassName,
115
174
  style: [{
116
175
  flexDirection
117
- }, style],
118
- isAttached: isAttached,
176
+ }, style, gapProp],
119
177
  ...props,
120
- children: children
178
+ ...mergeDataAttributes(props, dataAttributes({
179
+ slot: 'button-group'
180
+ })),
181
+ children: computedChildren
121
182
  });
122
183
  });
123
184
  ButtonGroup.displayName = 'Button.Group';
185
+
186
+ // =============================================================================
187
+ // STYLED ICON COMPONENT
188
+ // =============================================================================
189
+
124
190
  const ButtonIcon = ({
191
+ asChild,
125
192
  className,
126
193
  style,
127
194
  as,
195
+ position,
128
196
  ...props
129
197
  }) => {
130
198
  const {
@@ -137,34 +205,64 @@ const ButtonIcon = ({
137
205
  color,
138
206
  size
139
207
  }), className);
208
+ if (asChild) {
209
+ return /*#__PURE__*/_jsx(Slot, {
210
+ className: computedClassName,
211
+ style: style,
212
+ ...props,
213
+ ...mergeDataAttributes(props, dataAttributes({
214
+ slot: 'button-icon'
215
+ }), positionToDataIcon(position))
216
+ });
217
+ }
218
+ if (!as) {
219
+ return null;
220
+ }
140
221
  return /*#__PURE__*/_jsx(Icon, {
141
222
  as: as,
142
223
  className: computedClassName,
143
224
  style: style,
144
- ...props
225
+ ...props,
226
+ ...mergeDataAttributes(props, dataAttributes({
227
+ slot: 'button-icon'
228
+ }), positionToDataIcon(position))
145
229
  });
146
230
  };
147
231
  ButtonIcon.displayName = 'Button.Icon';
232
+
233
+ // =============================================================================
234
+ // STYLED SPINNER COMPONENT
235
+ // =============================================================================
236
+
148
237
  const ButtonSpinner = /*#__PURE__*/forwardRef(({
238
+ asChild,
149
239
  className,
150
240
  colorClassName,
151
241
  style,
242
+ position,
243
+ accessibilityLabel = 'Loading',
152
244
  ...props
153
245
  }, ref) => {
154
246
  const {
155
247
  variant,
156
248
  color
157
249
  } = useButtonStyleContext();
158
- const computedColorClassName = cn(buttonSpinnerVariants({
250
+ const computedClassName = cn(buttonSpinnerVariants(), className);
251
+ const computedColorClassName = cn(buttonSpinnerColorVariants({
159
252
  variant,
160
253
  color
161
254
  }), colorClassName);
162
- return /*#__PURE__*/_jsx(ButtonPrimitive.Spinner, {
255
+ const Comp = asChild ? Slot : ActivityIndicator;
256
+ return /*#__PURE__*/_jsx(Comp, {
163
257
  ref: ref,
164
- className: className,
258
+ className: computedClassName,
165
259
  colorClassName: computedColorClassName,
166
260
  style: style,
167
- ...props
261
+ accessibilityLabel: accessibilityLabel,
262
+ ...props,
263
+ ...mergeDataAttributes(props, dataAttributes({
264
+ slot: 'button-spinner'
265
+ }), positionToDataIcon(position))
168
266
  });
169
267
  });
170
268
  ButtonSpinner.displayName = 'Button.Spinner';
@@ -1 +1 @@
1
- {"version":3,"names":["forwardRef","useEffect","ActivityIndicator","Pressable","Text","View","createButton","cn","useStyleContext","withStyleContext","Icon","buttonGroupVariants","buttonIconVariants","buttonRootVariants","buttonSpinnerVariants","buttonTextVariants","jsx","_jsx","SCOPE","Root","useButtonStyleContext","ButtonPrimitive","Group","Spinner","hasWarnedStrongButtonVariant","ButtonRoot","variant","variantProp","color","size","fullWidth","className","children","style","props","ref","process","env","NODE_ENV","console","warn","computedClassName","context","displayName","ButtonLabel","ButtonGroup","flexDirection","isAttached","groupClassName","ButtonIcon","as","ButtonSpinner","colorClassName","computedColorClassName","Button","Object","assign","Label"],"sourceRoot":"../../../../src","sources":["components/Button/index.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","forwardRef","useEffect","useMemo","ActivityIndicator","Text","View","ButtonRoot","ButtonRootPrimitive","Slot","dataAttributes","mergeDataAttributes","cn","flattenChildren","ParentContext","useParentContext","useStyleContext","Icon","positionToDataIcon","buttonGroupVariants","buttonIconVariants","buttonRootVariants","buttonSpinnerColorVariants","buttonSpinnerVariants","buttonTextVariants","jsx","_jsx","SCOPE","useButtonStyleContext","hasWarnedStrongButtonVariant","variant","variantProp","color","size","fullWidth","className","children","style","props","ref","process","env","NODE_ENV","console","warn","computedClassName","parent","ctx","Provider","value","slot","displayName","ButtonLabel","asChild","Comp","ButtonGroup","flexDirection","isAttached","isDisabled","isReversed","reversed","direction","includes","childrenArray","Children","toArray","reverse","computedChildren","map","child","index","attachedStyles","borderBottomLeftRadius","borderBottomRightRadius","borderTopRightRadius","length","borderTopLeftRadius","borderRadius","childProps","Fragment","cloneElement","key","toString","groupClassName","gapProp","gap","ButtonIcon","as","position","ButtonSpinner","colorClassName","accessibilityLabel","computedColorClassName","Button","Object","assign","Label","Group","Spinner"],"sourceRoot":"../../../../src","sources":["components/Button/index.tsx"],"mappings":"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","ignoreList":[]}
@@ -219,7 +219,13 @@ export const buttonTextVariants = cva(['font-medium', 'text-center'], {
219
219
  size: 'default'
220
220
  }
221
221
  });
222
- export const buttonSpinnerVariants = cva([], {
222
+ export const buttonSpinnerVariants = cva(['data-[icon=inline-start]:me-1.5', 'data-[icon=inline-end]:ms-1.5']);
223
+
224
+ // Spinner color is set via Uniwind's `colorClassName` prop (maps to the native
225
+ // `color` prop on `ActivityIndicator`). `accent-*` utilities ONLY take effect
226
+ // when passed through `colorClassName` — putting them on `className` is a no-op
227
+ // because the underlying `color` prop is not part of the `style` object.
228
+ export const buttonSpinnerColorVariants = cva([], {
223
229
  variants: {
224
230
  variant: {
225
231
  solid: [],
@@ -314,7 +320,7 @@ export const buttonGroupVariants = cva([], {
314
320
  isAttached: false
315
321
  }
316
322
  });
317
- export const buttonIconVariants = cva([], {
323
+ export const buttonIconVariants = cva(['data-[icon=inline-start]:me-1.5', 'data-[icon=inline-end]:ms-1.5'], {
318
324
  variants: {
319
325
  variant: {
320
326
  solid: [],
@@ -1 +1 @@
1
- {"version":3,"names":["Platform","cva","DISABLED_CURSOR","TRANSITION_COLORS","buttonRootVariants","variants","variant","solid","outline","ghost","color","action","danger","warning","success","info","size","default","small","fullWidth","true","false","compoundVariants","className","select","web","defaultVariants","buttonTextVariants","buttonSpinnerVariants","buttonGroupVariants","flexDirection","row","column","isAttached","buttonIconVariants"],"sourceRoot":"../../../../src","sources":["components/Button/styles.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Platform","cva","DISABLED_CURSOR","TRANSITION_COLORS","buttonRootVariants","variants","variant","solid","outline","ghost","color","action","danger","warning","success","info","size","default","small","fullWidth","true","false","compoundVariants","className","select","web","defaultVariants","buttonTextVariants","buttonSpinnerVariants","buttonSpinnerColorVariants","buttonGroupVariants","flexDirection","row","column","isAttached","buttonIconVariants"],"sourceRoot":"../../../../src","sources":["components/Button/styles.ts"],"mappings":"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","ignoreList":[]}
@@ -13,17 +13,117 @@ Styled components in `@cdx-ui/components` follow a consistent pattern. Read the
13
13
  - `docs/internal/practices/types.md` — prop types, `I*Props` vs `*Props`, exporting
14
14
  - `docs/internal/practices/styling.md` — `cn()`, CVA, token classes, `Platform.select()`
15
15
  - `docs/internal/practices/state.md` — `useControllableState`, `composeEventHandlers`
16
- - `docs/internal/practices/data-attributes.md` — `data-[state]` and `data-slot`
16
+ - `docs/internal/practices/data-attributes.md` — `data-[state]`, `data-slot`, and `data-icon` conventions
17
+ - `docs/internal/practices/as-child.md` — styled-layer `asChild` via re-exported `Slot`
18
+
19
+ ## Six standards (Standards 4–6 apply here)
20
+
21
+ Standards 1–3 govern primitive-layer authoring (see `packages/primitives/src/CLAUDE.md`).
22
+ Standards 4–6 govern the styled layer:
23
+
24
+ ### Standard 4 — `data-slot` attributes
25
+
26
+ Every public styled slot emits a stable `data-slot="<component>-<part>"` attribute on its outermost rendered element. The convention is lowercase, kebab-case, `<component>` then `-<slot>` if not the root.
27
+
28
+ | Slot | Attribute |
29
+ | ------------------ | ---------------------------- |
30
+ | `<Button>` root | `data-slot="button"` |
31
+ | `<Button.Label>` | `data-slot="button-label"` |
32
+ | `<Button.Icon>` | `data-slot="button-icon"` |
33
+ | `<Button.Spinner>` | `data-slot="button-spinner"` |
34
+ | `<Button.Group>` | `data-slot="button-group"` |
35
+ | `<IconButton>` | `data-slot="icon-button"` |
36
+ | `<Dialog.Content>` | `data-slot="dialog-content"` |
37
+
38
+ Use `dataAttributes({ slot: '<component>-<part>' })` from `@cdx-ui/primitives` so the helper handles native (flat `data-*` keys) and web (RNW `dataSet`) correctly.
39
+
40
+ #### Combining multiple data-attribute sources — use `mergeDataAttributes`
41
+
42
+ When the same element receives `data-*` from more than one source (e.g. a slot identifier plus a position hint, or consumer-supplied data attrs flowing in through props), do **not** chain multiple `{...dataAttributes(...)}` spreads — on web each call returns `{ dataSet: {...} }` and a plain JSX spread replaces the `dataSet` key entirely, so the second source wipes out the first. Use `mergeDataAttributes(...)` from `@cdx-ui/primitives` to combine sources; later args win on key conflicts:
43
+
44
+ ```tsx
45
+ import { dataAttributes, mergeDataAttributes } from '@cdx-ui/primitives';
46
+
47
+ <Element
48
+ ref={ref}
49
+ className={...}
50
+ style={style}
51
+ {...props}
52
+ {...mergeDataAttributes(
53
+ props, // pulls in any consumer-supplied data attrs
54
+ dataAttributes({ slot: '<component>-<part>' }),
55
+ positionToDataIcon(position), // optional, may be undefined
56
+ )}
57
+ />
58
+ ```
59
+
60
+ Spread `{...props}` first, then the merge — so any keys that `mergeDataAttributes` produces overwrite their counterparts in props with the merged values.
61
+
62
+ When the styled component renders a primitive Root, the primitive Root applies the same pattern internally — incoming data attrs (slot from the styled layer) are merged with the primitive's own interaction-state data attrs and emitted once. The styled layer doesn't need to do anything special; just pass `data-slot` through and the primitive's merge does the rest.
63
+
64
+ ### Standard 5 — Static design variants vs. interaction state
65
+
66
+ Variant functions take only static design inputs (`variant`/`color`/`size`/`fullWidth`/etc.). Interaction states (`hover`/`focus`/`active`/`disabled`/`focus-visible`) are expressed as `data-[...]:` selectors **inside** CVA variant strings, never as variant inputs.
67
+
68
+ - CSS-layer state changes are free of React work: when the primitive flips `data-hover=true`, the CSS engine (web) and Uniwind's native style layer reconcile styles without re-rendering React, re-running CVA, or invoking `cn()`/`tailwind-merge`.
69
+ - Variant-input state changes cascade React work: CVA re-runs, `cn()` re-merges, and className-prop reconciliation cascades through the tree.
70
+ - Sub-slots can react to root state via parent selectors (`data-[hover=true]:`) without each slot subscribing to context (per Standard 1).
71
+
72
+ ### Standard 6 — Position hints (`data-icon="inline-start|inline-end"`)
73
+
74
+ Icon-/spinner-bearing styled slots accept an optional `position?: 'leading' | 'trailing'` prop that emits `data-icon="inline-start|inline-end"`. Spacing rules in CVA target the `data-icon` attribute via logical-property utilities (`me-*`/`ms-*`) so RTL is handled for free.
75
+
76
+ Mapping (via the shared `positionToDataIcon` helper at `packages/components/src/utils/positionToDataIcon.ts`):
77
+
78
+ - `position="leading"` → `data-icon="inline-start"`
79
+ - `position="trailing"` → `data-icon="inline-end"`
80
+ - `position` omitted → no `data-icon` attribute, baseline spacing applies
81
+
82
+ ```tsx
83
+ import { positionToDataIcon, type IconSlotPosition } from '../../utils/positionToDataIcon';
84
+
85
+ interface ButtonIconProps {
86
+ position?: IconSlotPosition;
87
+ // ...
88
+ }
89
+
90
+ <Icon {...positionToDataIcon(position)} {...props} />;
91
+ ```
92
+
93
+ ```tsx
94
+ <Button>
95
+ <Button.Icon as={CheckIcon} position="leading" />
96
+ <Button.Label>Confirm</Button.Label>
97
+ </Button>
98
+ ```
99
+
100
+ CVA expresses padding via logical-property selectors:
101
+
102
+ ```ts
103
+ cva(['data-[icon=inline-start]:me-1.5 data-[icon=inline-end]:ms-1.5'], { ... });
104
+ ```
105
+
106
+ Where: **styled layer.** Pure styling hint with no behavior or a11y semantics — fails Standard 3, so no primitive involvement.
107
+
108
+ ## Canonical reference
109
+
110
+ `packages/components/src/components/Button/index.tsx` + `Button/styles.ts` is the canonical example for Standards 4–6:
111
+
112
+ - `data-slot` on `Button`, `Button.Label`, `Button.Icon`, `Button.Spinner`, `Button.Group`
113
+ - `asChild` re-uses `Slot` from `@cdx-ui/primitives` — no new primitive needed for sub-slots
114
+ - `buttonIconVariants` / `buttonSpinnerVariants` carry `data-[icon=inline-start]:me-1.5 data-[icon=inline-end]:ms-1.5` so leading/trailing padding works without per-call overrides
115
+
116
+ `packages/components/src/components/IconButton/index.tsx` shows the second axis of Standard 1: a styled-layer slot (the glyph) is the place that opts into `useButtonContext()` when its styling reacts to interaction state. The pattern is the same as the primitive Root — call `useButtonContext()`, spread `dataAttributes({ ... })` — only it lives in the styled layer.
17
117
 
18
118
  ### Pattern summary
19
119
 
20
- Each component follows this structure (see `Button/index.tsx` as the canonical example):
120
+ Each component follows this structure (see `Button/index.tsx`):
21
121
 
22
- 1. **Imports** — RN base components, primitive from `@cdx-ui/primitives`, `cn` + style context from `@cdx-ui/utils`, variant functions from `./styles`
23
- 2. **Scope constant** — `const SCOPE = 'COMPONENT_NAME'` for `withStyleContext` / `useStyleContext`
24
- 3. **Root wrapping** — `const Root = withStyleContext(BaseRNComponent, SCOPE)`
25
- 4. **Primitive instantiation** — `const Primitive = createComponent({ Root, Text, ... })` using the primitive factory
26
- 5. **Styled sub-components** — each wraps a single element, uses `forwardRef`, destructures variant props with defaults, computes `cn(variantFn({ ...variants }), className)`, passes `context` to the primitive root
122
+ 1. **Imports** — RN base components, primitive `Root` and `Slot` from `@cdx-ui/primitives`, `cn` + style context from `@cdx-ui/utils`, variant functions from `./styles`
123
+ 2. **Scope constant** — `const SCOPE = 'COMPONENT_NAME'` for `withStyleContext` / `useStyleContext` (or a `ParentContext.Provider` wrapper for static variant context)
124
+ 3. **Root component** — renders the primitive Root (or a host element directly when no primitive exists), spreads `dataAttributes({ slot: '<component>' })`
125
+ 4. **Sub-slots** — each accepts `asChild`, renders a host element via `const Comp = asChild ? Slot : DefaultElement`, spreads `dataAttributes({ slot: '<component>-<slot>' })`. Sub-slots **do not** call `useButtonContext()` (or its equivalent) unless their own styling reacts to interaction state.
126
+ 5. **Position-aware sub-slots** — icon/spinner-style slots accept `position?: 'leading' | 'trailing'` and emit `data-icon` via `dataAttributes({ icon: '...' })`.
27
127
  6. **Compound export** — `Object.assign(RootComponent, { Sub1, Sub2 }) as CompoundType`
28
128
 
29
129
  ### Key rules
@@ -36,6 +136,9 @@ Each component follows this structure (see `Button/index.tsx` as the canonical e
36
136
  - Never hardcode colors — use semantic token classes (`bg-surface-*`, `text-content-*`, `border-stroke-*`)
37
137
  - Event handlers composed via `composeEventHandlers` from `@cdx-ui/utils`
38
138
  - Third-party libraries fully abstracted — no adopted library types leak to consumers
139
+ - **`data-slot`** emitted on every styled slot via `dataAttributes({ slot: '<component>-<part>' })`
140
+ - **`asChild`** supported on every styled slot — `const Comp = asChild ? Slot : DefaultElement`
141
+ - **`position`** prop on icon/spinner-style slots maps to `data-icon="inline-start|inline-end"`
39
142
 
40
143
  ---
41
144
 
@@ -44,7 +147,7 @@ Each component follows this structure (see `Button/index.tsx` as the canonical e
44
147
  Variant definitions live in co-located `styles.ts` files using CVA. Read the full guides before making changes:
45
148
 
46
149
  - `docs/internal/practices/styling.md` — `cn()`, CVA, token architecture, dark mode, `Platform.select()`
47
- - `docs/internal/practices/data-attributes.md` — `data-[state]` selectors for interaction states
150
+ - `docs/internal/practices/data-attributes.md` — `data-[state]` and `data-icon` selectors
48
151
 
49
152
  ### Pattern summary
50
153
 
@@ -57,11 +160,11 @@ import { DISABLED_CURSOR, TRANSITION_COLORS } from '../../styles/primitives';
57
160
 
58
161
  export const componentRootVariants = cva(
59
162
  [
60
- /* base classes */
163
+ /* base classes + interaction state selectors (data-[hover=true]:..., data-[active=true]:...) */
61
164
  ],
62
165
  {
63
166
  variants: {
64
- /* variant axes */
167
+ /* static design axes only — variant, color, size, fullWidth, etc. */
65
168
  },
66
169
  compoundVariants: [
67
170
  /* variant × variant combinations */
@@ -78,7 +181,8 @@ export type ComponentVariantProps = VariantProps<typeof componentRootVariants>;
78
181
  ### Key rules
79
182
 
80
183
  - **Semantic token classes only** — use `bg-surface-action-strong`, `text-content-primary`, `border-stroke-primary`, etc. Never hardcode hex colors, `bg-white`, `text-black`, or raw Tailwind color scales for themed values.
81
- - **`data-[state]` selectors** — use `data-[disabled=true]:`, `data-[hover=true]:`, `data-[active=true]:`, `data-[focus-visible=true]:` for interaction states. Primitives emit these data attributes.
184
+ - **`data-[state]` selectors** — use `data-[disabled=true]:`, `data-[hover=true]:`, `data-[active=true]:`, `data-[focus-visible=true]:` for interaction states. Primitives emit these data attributes (Standard 1). **Interaction state is never a CVA variant input** (Standard 5).
185
+ - **`data-[icon=inline-start|inline-end]` selectors** for icon/spinner position spacing (Standard 6) — pair with logical-property utilities (`me-*`/`ms-*`) so RTL flips automatically.
82
186
  - **`Platform.select()`** for platform-specific classes — web gets `data-[hover=true]` styles (hover exists on web); native responds only to `data-[active=true]` (press). Always set `default` (native) and `web` keys.
83
187
  - **Shared style primitives** — import `DISABLED_CURSOR`, `TRANSITION_COLORS`, etc. from `../../styles/primitives` for cross-component consistency.
84
188
  - **`web:` prefix** for web-only utilities — e.g., `web:outline-none`, `web:focus-visible:ring-2`.