@cdx-ui/components 0.0.1-beta.65 → 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 (242) 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/Switch/BaseSwitch.js +23 -13
  43. package/lib/commonjs/components/Switch/BaseSwitch.js.map +1 -1
  44. package/lib/commonjs/components/Switch/BaseSwitch.web.js +25 -21
  45. package/lib/commonjs/components/Switch/BaseSwitch.web.js.map +1 -1
  46. package/lib/commonjs/components/Switch/index.js +34 -3
  47. package/lib/commonjs/components/Switch/index.js.map +1 -1
  48. package/lib/commonjs/components/Tile/index.js +150 -77
  49. package/lib/commonjs/components/Tile/index.js.map +1 -1
  50. package/lib/commonjs/figma/Chip.figma.js +2 -2
  51. package/lib/commonjs/figma/Chip.figma.js.map +1 -1
  52. package/lib/commonjs/utils/positionToDataIcon.js +41 -0
  53. package/lib/commonjs/utils/positionToDataIcon.js.map +1 -0
  54. package/lib/module/components/AlertDialog/index.js +13 -11
  55. package/lib/module/components/AlertDialog/index.js.map +1 -1
  56. package/lib/module/components/Avatar/index.js +128 -28
  57. package/lib/module/components/Avatar/index.js.map +1 -1
  58. package/lib/module/components/Button/index.js +130 -32
  59. package/lib/module/components/Button/index.js.map +1 -1
  60. package/lib/module/components/Button/styles.js +8 -2
  61. package/lib/module/components/Button/styles.js.map +1 -1
  62. package/lib/module/components/CLAUDE.md +115 -11
  63. package/lib/module/components/Checkbox/index.js +72 -25
  64. package/lib/module/components/Checkbox/index.js.map +1 -1
  65. package/lib/module/components/Checkbox/styles.js +1 -1
  66. package/lib/module/components/Checkbox/styles.js.map +1 -1
  67. package/lib/module/components/Chip/index.js +47 -39
  68. package/lib/module/components/Chip/index.js.map +1 -1
  69. package/lib/module/components/Chip/styles.js +6 -35
  70. package/lib/module/components/Chip/styles.js.map +1 -1
  71. package/lib/module/components/Dialog/index.js +96 -76
  72. package/lib/module/components/Dialog/index.js.map +1 -1
  73. package/lib/module/components/Field/index.js +74 -31
  74. package/lib/module/components/Field/index.js.map +1 -1
  75. package/lib/module/components/Form/index.js +7 -14
  76. package/lib/module/components/Form/index.js.map +1 -1
  77. package/lib/module/components/IconButton/index.js +6 -34
  78. package/lib/module/components/IconButton/index.js.map +1 -1
  79. package/lib/module/components/Input/index.js +53 -23
  80. package/lib/module/components/Input/index.js.map +1 -1
  81. package/lib/module/components/Link/index.js +16 -8
  82. package/lib/module/components/Link/index.js.map +1 -1
  83. package/lib/module/components/ListItem/index.js +134 -59
  84. package/lib/module/components/ListItem/index.js.map +1 -1
  85. package/lib/module/components/OtpInput/index.js +94 -28
  86. package/lib/module/components/OtpInput/index.js.map +1 -1
  87. package/lib/module/components/ProgressBar/index.js +9 -14
  88. package/lib/module/components/ProgressBar/index.js.map +1 -1
  89. package/lib/module/components/Radio/index.js +54 -57
  90. package/lib/module/components/Radio/index.js.map +1 -1
  91. package/lib/module/components/Select/index.js +118 -52
  92. package/lib/module/components/Select/index.js.map +1 -1
  93. package/lib/module/components/Select/styles.js +2 -2
  94. package/lib/module/components/Select/styles.js.map +1 -1
  95. package/lib/module/components/Switch/BaseSwitch.js +24 -14
  96. package/lib/module/components/Switch/BaseSwitch.js.map +1 -1
  97. package/lib/module/components/Switch/BaseSwitch.web.js +26 -22
  98. package/lib/module/components/Switch/BaseSwitch.web.js.map +1 -1
  99. package/lib/module/components/Switch/index.js +35 -4
  100. package/lib/module/components/Switch/index.js.map +1 -1
  101. package/lib/module/components/Tile/index.js +155 -83
  102. package/lib/module/components/Tile/index.js.map +1 -1
  103. package/lib/module/figma/Chip.figma.js +2 -2
  104. package/lib/module/figma/Chip.figma.js.map +1 -1
  105. package/lib/module/utils/positionToDataIcon.js +38 -0
  106. package/lib/module/utils/positionToDataIcon.js.map +1 -0
  107. package/lib/typescript/components/AlertDialog/index.d.ts.map +1 -1
  108. package/lib/typescript/components/Avatar/index.d.ts +6 -2
  109. package/lib/typescript/components/Avatar/index.d.ts.map +1 -1
  110. package/lib/typescript/components/Button/index.d.ts +31 -8
  111. package/lib/typescript/components/Button/index.d.ts.map +1 -1
  112. package/lib/typescript/components/Button/styles.d.ts +2 -1
  113. package/lib/typescript/components/Button/styles.d.ts.map +1 -1
  114. package/lib/typescript/components/Checkbox/index.d.ts +3 -1
  115. package/lib/typescript/components/Checkbox/index.d.ts.map +1 -1
  116. package/lib/typescript/components/Chip/index.d.ts +19 -9
  117. package/lib/typescript/components/Chip/index.d.ts.map +1 -1
  118. package/lib/typescript/components/Chip/styles.d.ts +0 -1
  119. package/lib/typescript/components/Chip/styles.d.ts.map +1 -1
  120. package/lib/typescript/components/Dialog/index.d.ts +12 -6
  121. package/lib/typescript/components/Dialog/index.d.ts.map +1 -1
  122. package/lib/typescript/components/Dialog/styles.d.ts +1 -1
  123. package/lib/typescript/components/Field/index.d.ts +14 -7
  124. package/lib/typescript/components/Field/index.d.ts.map +1 -1
  125. package/lib/typescript/components/Form/index.d.ts +4 -4
  126. package/lib/typescript/components/Form/index.d.ts.map +1 -1
  127. package/lib/typescript/components/IconButton/index.d.ts.map +1 -1
  128. package/lib/typescript/components/Input/index.d.ts +11 -3
  129. package/lib/typescript/components/Input/index.d.ts.map +1 -1
  130. package/lib/typescript/components/Link/index.d.ts +2 -0
  131. package/lib/typescript/components/Link/index.d.ts.map +1 -1
  132. package/lib/typescript/components/ListItem/index.d.ts +28 -6
  133. package/lib/typescript/components/ListItem/index.d.ts.map +1 -1
  134. package/lib/typescript/components/OtpInput/index.d.ts +1 -1
  135. package/lib/typescript/components/OtpInput/index.d.ts.map +1 -1
  136. package/lib/typescript/components/ProgressBar/index.d.ts +4 -4
  137. package/lib/typescript/components/ProgressBar/index.d.ts.map +1 -1
  138. package/lib/typescript/components/Radio/index.d.ts +4 -0
  139. package/lib/typescript/components/Radio/index.d.ts.map +1 -1
  140. package/lib/typescript/components/Select/index.d.ts +35 -2
  141. package/lib/typescript/components/Select/index.d.ts.map +1 -1
  142. package/lib/typescript/components/Select/styles.d.ts.map +1 -1
  143. package/lib/typescript/components/Switch/BaseSwitch.d.ts +12 -5
  144. package/lib/typescript/components/Switch/BaseSwitch.d.ts.map +1 -1
  145. package/lib/typescript/components/Switch/BaseSwitch.web.d.ts +11 -5
  146. package/lib/typescript/components/Switch/BaseSwitch.web.d.ts.map +1 -1
  147. package/lib/typescript/components/Switch/index.d.ts +5 -1
  148. package/lib/typescript/components/Switch/index.d.ts.map +1 -1
  149. package/lib/typescript/components/Tile/index.d.ts +8 -2
  150. package/lib/typescript/components/Tile/index.d.ts.map +1 -1
  151. package/lib/typescript/utils/positionToDataIcon.d.ts +29 -0
  152. package/lib/typescript/utils/positionToDataIcon.d.ts.map +1 -0
  153. package/package.json +5 -5
  154. package/src/components/AlertDialog/index.tsx +13 -14
  155. package/src/components/Avatar/index.tsx +134 -44
  156. package/src/components/Button/index.tsx +216 -44
  157. package/src/components/Button/styles.ts +50 -38
  158. package/src/components/CLAUDE.md +115 -11
  159. package/src/components/Checkbox/index.tsx +93 -32
  160. package/src/components/Checkbox/styles.ts +1 -1
  161. package/src/components/Chip/index.tsx +88 -61
  162. package/src/components/Chip/styles.ts +6 -18
  163. package/src/components/Dialog/index.tsx +139 -99
  164. package/src/components/Field/index.tsx +113 -49
  165. package/src/components/Form/index.tsx +18 -14
  166. package/src/components/IconButton/index.tsx +7 -31
  167. package/src/components/Input/index.tsx +75 -32
  168. package/src/components/Link/index.tsx +38 -12
  169. package/src/components/ListItem/index.tsx +158 -73
  170. package/src/components/OtpInput/index.tsx +126 -43
  171. package/src/components/ProgressBar/index.tsx +11 -16
  172. package/src/components/Radio/index.tsx +76 -54
  173. package/src/components/Select/index.tsx +174 -59
  174. package/src/components/Select/styles.ts +1 -2
  175. package/src/components/Switch/BaseSwitch.tsx +38 -16
  176. package/src/components/Switch/BaseSwitch.web.tsx +28 -35
  177. package/src/components/Switch/index.tsx +51 -4
  178. package/src/components/Tile/index.tsx +145 -94
  179. package/src/utils/positionToDataIcon.ts +34 -0
  180. package/lib/commonjs/components/Field/FieldLabel.js +0 -33
  181. package/lib/commonjs/components/Field/FieldLabel.js.map +0 -1
  182. package/lib/commonjs/components/Field/FieldLabel.web.js +0 -22
  183. package/lib/commonjs/components/Field/FieldLabel.web.js.map +0 -1
  184. package/lib/commonjs/components/Form/FormRoot.js +0 -25
  185. package/lib/commonjs/components/Form/FormRoot.js.map +0 -1
  186. package/lib/commonjs/components/Form/FormRoot.web.js +0 -17
  187. package/lib/commonjs/components/Form/FormRoot.web.js.map +0 -1
  188. package/lib/commonjs/components/Input/BaseInput.android.js +0 -20
  189. package/lib/commonjs/components/Input/BaseInput.android.js.map +0 -1
  190. package/lib/commonjs/components/Input/BaseInput.js +0 -13
  191. package/lib/commonjs/components/Input/BaseInput.js.map +0 -1
  192. package/lib/commonjs/components/Input/BaseInput.web.js +0 -50
  193. package/lib/commonjs/components/Input/BaseInput.web.js.map +0 -1
  194. package/lib/commonjs/components/Select/SelectTriggerHost.js +0 -10
  195. package/lib/commonjs/components/Select/SelectTriggerHost.js.map +0 -1
  196. package/lib/commonjs/components/Select/SelectTriggerHost.web.js +0 -102
  197. package/lib/commonjs/components/Select/SelectTriggerHost.web.js.map +0 -1
  198. package/lib/module/components/Field/FieldLabel.js +0 -29
  199. package/lib/module/components/Field/FieldLabel.js.map +0 -1
  200. package/lib/module/components/Field/FieldLabel.web.js +0 -17
  201. package/lib/module/components/Field/FieldLabel.web.js.map +0 -1
  202. package/lib/module/components/Form/FormRoot.js +0 -21
  203. package/lib/module/components/Form/FormRoot.js.map +0 -1
  204. package/lib/module/components/Form/FormRoot.web.js +0 -12
  205. package/lib/module/components/Form/FormRoot.web.js.map +0 -1
  206. package/lib/module/components/Input/BaseInput.android.js +0 -16
  207. package/lib/module/components/Input/BaseInput.android.js.map +0 -1
  208. package/lib/module/components/Input/BaseInput.js +0 -4
  209. package/lib/module/components/Input/BaseInput.js.map +0 -1
  210. package/lib/module/components/Input/BaseInput.web.js +0 -45
  211. package/lib/module/components/Input/BaseInput.web.js.map +0 -1
  212. package/lib/module/components/Select/SelectTriggerHost.js +0 -7
  213. package/lib/module/components/Select/SelectTriggerHost.js.map +0 -1
  214. package/lib/module/components/Select/SelectTriggerHost.web.js +0 -97
  215. package/lib/module/components/Select/SelectTriggerHost.web.js.map +0 -1
  216. package/lib/typescript/components/Field/FieldLabel.d.ts +0 -18
  217. package/lib/typescript/components/Field/FieldLabel.d.ts.map +0 -1
  218. package/lib/typescript/components/Field/FieldLabel.web.d.ts +0 -16
  219. package/lib/typescript/components/Field/FieldLabel.web.d.ts.map +0 -1
  220. package/lib/typescript/components/Form/FormRoot.d.ts +0 -14
  221. package/lib/typescript/components/Form/FormRoot.d.ts.map +0 -1
  222. package/lib/typescript/components/Form/FormRoot.web.d.ts +0 -10
  223. package/lib/typescript/components/Form/FormRoot.web.d.ts.map +0 -1
  224. package/lib/typescript/components/Input/BaseInput.android.d.ts +0 -3
  225. package/lib/typescript/components/Input/BaseInput.android.d.ts.map +0 -1
  226. package/lib/typescript/components/Input/BaseInput.d.ts +0 -2
  227. package/lib/typescript/components/Input/BaseInput.d.ts.map +0 -1
  228. package/lib/typescript/components/Input/BaseInput.web.d.ts +0 -3
  229. package/lib/typescript/components/Input/BaseInput.web.d.ts.map +0 -1
  230. package/lib/typescript/components/Select/SelectTriggerHost.d.ts +0 -3
  231. package/lib/typescript/components/Select/SelectTriggerHost.d.ts.map +0 -1
  232. package/lib/typescript/components/Select/SelectTriggerHost.web.d.ts +0 -16
  233. package/lib/typescript/components/Select/SelectTriggerHost.web.d.ts.map +0 -1
  234. package/src/components/Field/FieldLabel.tsx +0 -33
  235. package/src/components/Field/FieldLabel.web.tsx +0 -25
  236. package/src/components/Form/FormRoot.tsx +0 -20
  237. package/src/components/Form/FormRoot.web.tsx +0 -12
  238. package/src/components/Input/BaseInput.android.tsx +0 -13
  239. package/src/components/Input/BaseInput.tsx +0 -1
  240. package/src/components/Input/BaseInput.web.tsx +0 -41
  241. package/src/components/Select/SelectTriggerHost.tsx +0 -4
  242. package/src/components/Select/SelectTriggerHost.web.tsx +0 -143
@@ -1 +0,0 @@
1
- {"version":3,"file":"BaseInput.android.d.ts","sourceRoot":"","sources":["../../../../src/components/Input/BaseInput.android.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAO9D,eAAO,MAAM,SAAS,sGAEpB,CAAC"}
@@ -1,2 +0,0 @@
1
- export { TextInput as BaseInput } from 'react-native';
2
- //# sourceMappingURL=BaseInput.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BaseInput.d.ts","sourceRoot":"","sources":["../../../../src/components/Input/BaseInput.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,SAAS,EAAE,MAAM,cAAc,CAAC"}
@@ -1,3 +0,0 @@
1
- import React from 'react';
2
- export declare const BaseInput: React.ForwardRefExoticComponent<Omit<any, "ref"> & React.RefAttributes<any>>;
3
- //# sourceMappingURL=BaseInput.web.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BaseInput.web.d.ts","sourceRoot":"","sources":["../../../../src/components/Input/BaseInput.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAG1C,eAAO,MAAM,SAAS,8EAmCpB,CAAC"}
@@ -1,3 +0,0 @@
1
- /** Native: `Pressable`. Web: `SelectTriggerHost.web` uses `<button>` so `<label htmlFor>` works. */
2
- export declare const SelectTriggerHost: import("react").ForwardRefExoticComponent<import("react-native").PressableProps & import("react").RefAttributes<import("react-native").View>>;
3
- //# sourceMappingURL=SelectTriggerHost.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SelectTriggerHost.d.ts","sourceRoot":"","sources":["../../../../src/components/Select/SelectTriggerHost.tsx"],"names":[],"mappings":"AAEA,oGAAoG;AACpG,eAAO,MAAM,iBAAiB,+IAAY,CAAC"}
@@ -1,16 +0,0 @@
1
- import React from 'react';
2
- import type { PressableProps } from 'react-native';
3
- import { type DomDataAttributeValue } from '@cdx-ui/primitives';
4
- export type SelectTriggerHostProps = PressableProps & {
5
- className?: string;
6
- dataSet?: Record<string, DomDataAttributeValue>;
7
- };
8
- /**
9
- * Native `<button type="button">` so the trigger is HTML-labelable (`<label htmlFor>` focuses it).
10
- * `Pressable` on web is a non-labelable div; no extra refs are needed for label association.
11
- */
12
- export declare const SelectTriggerHost: React.ForwardRefExoticComponent<PressableProps & {
13
- className?: string;
14
- dataSet?: Record<string, DomDataAttributeValue>;
15
- } & React.RefAttributes<HTMLButtonElement>>;
16
- //# sourceMappingURL=SelectTriggerHost.web.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SelectTriggerHost.web.d.ts","sourceRoot":"","sources":["../../../../src/components/Select/SelectTriggerHost.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAE1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAqB,KAAK,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEnF,MAAM,MAAM,sBAAsB,GAAG,cAAc,GAAG;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;CACjD,CAAC;AAwEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB;gBA9EhB,MAAM;cACR,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC;2CAqIhD,CAAC"}
@@ -1,33 +0,0 @@
1
- import { forwardRef } from 'react';
2
- import { Text, TextProps, type GestureResponderEvent } from 'react-native';
3
- import { composeEventHandlers, useFormControlContext } from '@cdx-ui/utils';
4
-
5
- export type BaseFieldLabelProps = TextProps & {
6
- /** @platform web — forwarded on web; ignored here (see `FieldLabelRoot.web`). */
7
- htmlFor?: string;
8
- /** Optional; composed with label tap-to-focus on native. */
9
- onPress?: ((event: GestureResponderEvent) => void) | null;
10
- };
11
-
12
- /**
13
- * Native: `Text` label row — tap focuses the field input via form context
14
- * (parity with `<label htmlFor>` on web).
15
- */
16
- export const BaseFieldLabel = forwardRef<Text, BaseFieldLabelProps>(
17
- ({ htmlFor: _omitHtmlFor, onPress, ...props }, ref) => {
18
- void _omitHtmlFor;
19
-
20
- const { focusInput, isDisabled } = useFormControlContext();
21
-
22
- return (
23
- <Text
24
- ref={ref}
25
- {...props}
26
- disabled={Boolean(isDisabled)}
27
- onPress={composeEventHandlers(onPress, () => focusInput?.())}
28
- />
29
- );
30
- },
31
- );
32
-
33
- BaseFieldLabel.displayName = 'BaseFieldLabel';
@@ -1,25 +0,0 @@
1
- import React, { forwardRef, type ReactNode } from 'react';
2
- import type { ViewProps } from 'react-native';
3
-
4
- // TODO: Why does dataSet need to be decomposed into individual data attributes?
5
-
6
- export type BaseFieldLabelProps = ViewProps & {
7
- htmlFor?: string;
8
- children?: ReactNode;
9
- /** @platform native — ignored on DOM `<label>`; set by form primitive for Uniwind. */
10
- dataSet?: Record<string, boolean | string>;
11
- };
12
-
13
- /** Real `<label>` so clicking the label focuses the associated control (`htmlFor` → input `id`). */
14
- export const BaseFieldLabel = forwardRef<HTMLLabelElement, BaseFieldLabelProps>((props, ref) => {
15
- return (
16
- <label
17
- ref={ref}
18
- {...(props as React.LabelHTMLAttributes<HTMLLabelElement>)}
19
- data-invalid={props.dataSet?.invalid}
20
- data-required={props.dataSet?.required}
21
- />
22
- );
23
- });
24
-
25
- BaseFieldLabel.displayName = 'BaseFieldLabel';
@@ -1,20 +0,0 @@
1
- import { forwardRef } from 'react';
2
- import { View, type ViewProps } from 'react-native';
3
-
4
- export type BaseFormRootProps = ViewProps & {
5
- onSubmit?: (e: React.SyntheticEvent) => void;
6
- action?: string | ((formData: FormData) => void | Promise<void>);
7
- method?: string;
8
- className?: string;
9
- };
10
-
11
- export const BaseFormRoot = forwardRef<View, BaseFormRootProps>(
12
- ({ onSubmit: _onSubmit, action: _action, method: _method, ...props }, ref) => {
13
- void _onSubmit;
14
- void _action;
15
- void _method;
16
- return <View ref={ref} {...props} />;
17
- },
18
- );
19
-
20
- BaseFormRoot.displayName = 'BaseFormRoot';
@@ -1,12 +0,0 @@
1
- import React, { forwardRef } from 'react';
2
-
3
- export type BaseFormRootProps = React.FormHTMLAttributes<HTMLFormElement> & {
4
- className?: string;
5
- children?: React.ReactNode;
6
- };
7
-
8
- export const BaseFormRoot = forwardRef<HTMLFormElement, BaseFormRootProps>((props, ref) => {
9
- return <form ref={ref} {...props} />;
10
- });
11
-
12
- BaseFormRoot.displayName = 'BaseFormRoot';
@@ -1,13 +0,0 @@
1
- import { forwardRef } from 'react';
2
- import { TextInput, type TextInputProps } from 'react-native';
3
-
4
- const androidDefaults = {
5
- includeFontPadding: false,
6
- textAlignVertical: 'center' as const,
7
- };
8
-
9
- export const BaseInput = forwardRef<TextInput, TextInputProps>((props, ref) => (
10
- <TextInput ref={ref} {...props} style={[androidDefaults, props.style]} />
11
- ));
12
-
13
- BaseInput.displayName = 'BaseInput';
@@ -1 +0,0 @@
1
- export { TextInput as BaseInput } from 'react-native';
@@ -1,41 +0,0 @@
1
- import React, { forwardRef } from 'react';
2
- import { TextInput } from 'react-native';
3
-
4
- export const BaseInput = forwardRef<any, any>((props, ref) => {
5
- if (props.type === 'file') {
6
- return React.createElement('input', {
7
- ref,
8
- type: 'file',
9
- accept: props.accept || undefined,
10
- multiple: props.multiple || undefined,
11
- capture: props.capture || undefined,
12
- disabled: props.disabled || undefined,
13
- 'aria-label': props['aria-label'],
14
- 'aria-required': props['aria-required'] || undefined,
15
- 'aria-invalid': props['aria-invalid'] || undefined,
16
- 'aria-disabled': props['aria-disabled'] || undefined,
17
- onChange: (e: any) => {
18
- const files = e.target.files;
19
- if (files && props.onFiles) {
20
- props.onFiles(Array.from(files));
21
- }
22
- },
23
- onFocus: props.onFocus,
24
- onBlur: props.onBlur,
25
- style: {
26
- flex: 1,
27
- minWidth: 0,
28
- border: 'none',
29
- outline: 'none',
30
- background: 'transparent',
31
- cursor: props.disabled ? 'not-allowed' : 'pointer',
32
- fontSize: 'inherit',
33
- fontFamily: 'inherit',
34
- },
35
- });
36
- }
37
-
38
- return <TextInput ref={ref} {...props} />;
39
- });
40
-
41
- BaseInput.displayName = 'BaseInput';
@@ -1,4 +0,0 @@
1
- import { Pressable } from 'react-native';
2
-
3
- /** Native: `Pressable`. Web: `SelectTriggerHost.web` uses `<button>` so `<label htmlFor>` works. */
4
- export const SelectTriggerHost = Pressable;
@@ -1,143 +0,0 @@
1
- import React, { forwardRef } from 'react';
2
- import { StyleSheet } from 'react-native';
3
- import type { PressableProps } from 'react-native';
4
- import { domDataAttributes, type DomDataAttributeValue } from '@cdx-ui/primitives';
5
-
6
- export type SelectTriggerHostProps = PressableProps & {
7
- className?: string;
8
- dataSet?: Record<string, DomDataAttributeValue>;
9
- };
10
-
11
- /** Props that must not be forwarded to a DOM `<button>`. */
12
- const OMIT = new Set<string>([
13
- 'hitSlop',
14
- 'pressRetentionOffset',
15
- 'android_ripple',
16
- 'android_disableSound',
17
- 'unstable_pressDelay',
18
- 'onLongPress',
19
- 'delayLongPress',
20
- 'onPress',
21
- 'onPressIn',
22
- 'onPressOut',
23
- 'onHoverIn',
24
- 'onHoverOut',
25
- 'disabled',
26
- 'style',
27
- 'className',
28
- 'testID',
29
- 'children',
30
- 'accessible',
31
- 'accessibilityActions',
32
- 'accessibilityElementsHidden',
33
- 'accessibilityHint',
34
- 'accessibilityIgnoresInvertColors',
35
- 'accessibilityLabel',
36
- 'accessibilityLabelledBy',
37
- 'accessibilityLiveRegion',
38
- 'accessibilityRole',
39
- 'accessibilityState',
40
- 'accessibilityValue',
41
- 'accessibilityViewIsModal',
42
- 'importantForAccessibility',
43
- 'needsOffscreenAlphaCompositing',
44
- 'collapsable',
45
- 'shouldRasterizeIOS',
46
- 'removeClippedSubviews',
47
- 'onAccessibilityAction',
48
- 'onAccessibilityEscape',
49
- 'onAccessibilityTap',
50
- ]);
51
-
52
- function resolveChildren(children: PressableProps['children']): React.ReactNode {
53
- if (typeof children === 'function') {
54
- return children({ pressed: false });
55
- }
56
- return children;
57
- }
58
-
59
- function filterDomProps(rest: object): React.ButtonHTMLAttributes<HTMLButtonElement> {
60
- const entries = Object.entries(rest).filter(([key]) => !OMIT.has(key));
61
- return Object.fromEntries(entries) as React.ButtonHTMLAttributes<HTMLButtonElement>;
62
- }
63
-
64
- /** UA `<button>` defaults (centered text, inline sizing) fight our flex + `justify-between` layout. */
65
- const webButtonLayoutStyle: React.CSSProperties = {
66
- display: 'flex',
67
- flexDirection: 'row',
68
- alignItems: 'center',
69
- justifyContent: 'space-between',
70
- width: '100%',
71
- minWidth: 0,
72
- textAlign: 'start',
73
- boxSizing: 'border-box',
74
- margin: 0,
75
- font: 'inherit',
76
- lineHeight: 'normal',
77
- WebkitAppearance: 'none',
78
- appearance: 'none',
79
- };
80
-
81
- /**
82
- * Native `<button type="button">` so the trigger is HTML-labelable (`<label htmlFor>` focuses it).
83
- * `Pressable` on web is a non-labelable div; no extra refs are needed for label association.
84
- */
85
- export const SelectTriggerHost = forwardRef<HTMLButtonElement, SelectTriggerHostProps>(
86
- function SelectTriggerHost(props, ref) {
87
- const {
88
- children,
89
- onPress,
90
- onPressIn,
91
- onPressOut,
92
- onHoverIn,
93
- onHoverOut,
94
- disabled,
95
- style,
96
- className,
97
- testID,
98
- dataSet,
99
- ...rest
100
- } = props;
101
-
102
- const domProps = filterDomProps(rest);
103
- const dataAttrs = domDataAttributes(dataSet ?? {});
104
- const flattened = StyleSheet.flatten(style) as React.CSSProperties | undefined;
105
-
106
- return (
107
- <button
108
- ref={ref}
109
- {...domProps}
110
- {...dataAttrs}
111
- type="button"
112
- disabled={!!disabled}
113
- className={typeof className === 'string' ? className : undefined}
114
- style={{ ...webButtonLayoutStyle, ...(flattened ?? {}) }}
115
- data-testid={testID}
116
- onClick={(e) => {
117
- if (!disabled) {
118
- onPress?.(e as unknown as Parameters<NonNullable<PressableProps['onPress']>>[0]);
119
- }
120
- }}
121
- onPointerDown={(e) => {
122
- onPressIn?.(e as unknown as Parameters<NonNullable<PressableProps['onPressIn']>>[0]);
123
- }}
124
- onPointerUp={(e) => {
125
- onPressOut?.(e as unknown as Parameters<NonNullable<PressableProps['onPressOut']>>[0]);
126
- }}
127
- onPointerCancel={(e) => {
128
- onPressOut?.(e as unknown as Parameters<NonNullable<PressableProps['onPressOut']>>[0]);
129
- }}
130
- onMouseEnter={(e) => {
131
- onHoverIn?.(e as unknown as Parameters<NonNullable<PressableProps['onHoverIn']>>[0]);
132
- }}
133
- onMouseLeave={(e) => {
134
- onHoverOut?.(e as unknown as Parameters<NonNullable<PressableProps['onHoverOut']>>[0]);
135
- }}
136
- >
137
- {resolveChildren(children)}
138
- </button>
139
- );
140
- },
141
- );
142
-
143
- SelectTriggerHost.displayName = 'SelectTriggerHost';