@cdx-ui/components 0.0.1-alpha.4 → 0.0.1-alpha.41

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 (437) hide show
  1. package/README.md +54 -3
  2. package/lib/commonjs/components/AlertDialog/index.js +117 -0
  3. package/lib/commonjs/components/AlertDialog/index.js.map +1 -0
  4. package/lib/commonjs/components/Avatar/index.js +156 -0
  5. package/lib/commonjs/components/Avatar/index.js.map +1 -0
  6. package/lib/commonjs/components/Avatar/styles.js +80 -0
  7. package/lib/commonjs/components/Avatar/styles.js.map +1 -0
  8. package/lib/commonjs/components/BottomSheet/index.js +248 -0
  9. package/lib/commonjs/components/BottomSheet/index.js.map +1 -0
  10. package/lib/commonjs/components/BottomSheet/styles.js +61 -0
  11. package/lib/commonjs/components/BottomSheet/styles.js.map +1 -0
  12. package/lib/commonjs/components/Box/Box.js +1 -0
  13. package/lib/commonjs/components/Box/Box.js.map +1 -1
  14. package/lib/commonjs/components/Button/index.js +20 -9
  15. package/lib/commonjs/components/Button/index.js.map +1 -1
  16. package/lib/commonjs/components/Button/styles.js +181 -162
  17. package/lib/commonjs/components/Button/styles.js.map +1 -1
  18. package/lib/commonjs/components/Card/index.js +104 -0
  19. package/lib/commonjs/components/Card/index.js.map +1 -0
  20. package/lib/commonjs/components/Card/styles.js +28 -0
  21. package/lib/commonjs/components/Card/styles.js.map +1 -0
  22. package/lib/commonjs/components/Checkbox/index.js +180 -0
  23. package/lib/commonjs/components/Checkbox/index.js.map +1 -0
  24. package/lib/commonjs/components/Checkbox/styles.js +68 -0
  25. package/lib/commonjs/components/Checkbox/styles.js.map +1 -0
  26. package/lib/commonjs/components/Chip/index.js +103 -0
  27. package/lib/commonjs/components/Chip/index.js.map +1 -0
  28. package/lib/commonjs/components/Chip/styles.js +52 -0
  29. package/lib/commonjs/components/Chip/styles.js.map +1 -0
  30. package/lib/commonjs/components/Dialog/index.js +275 -0
  31. package/lib/commonjs/components/Dialog/index.js.map +1 -0
  32. package/lib/commonjs/components/Dialog/styles.js +63 -0
  33. package/lib/commonjs/components/Dialog/styles.js.map +1 -0
  34. package/lib/commonjs/components/Field/FieldLabel.js +33 -0
  35. package/lib/commonjs/components/Field/FieldLabel.js.map +1 -0
  36. package/lib/commonjs/components/Field/FieldLabel.web.js +22 -0
  37. package/lib/commonjs/components/Field/FieldLabel.web.js.map +1 -0
  38. package/lib/commonjs/components/Field/index.js +158 -0
  39. package/lib/commonjs/components/Field/index.js.map +1 -0
  40. package/lib/commonjs/components/Field/styles.js +16 -0
  41. package/lib/commonjs/components/Field/styles.js.map +1 -0
  42. package/lib/commonjs/components/Form/FormRoot.js +25 -0
  43. package/lib/commonjs/components/Form/FormRoot.js.map +1 -0
  44. package/lib/commonjs/components/Form/FormRoot.web.js +17 -0
  45. package/lib/commonjs/components/Form/FormRoot.web.js.map +1 -0
  46. package/lib/commonjs/components/Form/index.js +48 -0
  47. package/lib/commonjs/components/Form/index.js.map +1 -0
  48. package/lib/commonjs/components/Form/styles.js +9 -0
  49. package/lib/commonjs/components/Form/styles.js.map +1 -0
  50. package/lib/commonjs/components/Heading/index.js +35 -0
  51. package/lib/commonjs/components/Heading/index.js.map +1 -0
  52. package/lib/commonjs/components/Heading/styles.js +23 -0
  53. package/lib/commonjs/components/Heading/styles.js.map +1 -0
  54. package/lib/commonjs/components/Icon/index.js +61 -0
  55. package/lib/commonjs/components/Icon/index.js.map +1 -0
  56. package/lib/commonjs/components/IconButton/index.js +75 -0
  57. package/lib/commonjs/components/IconButton/index.js.map +1 -0
  58. package/lib/commonjs/components/IconButton/styles.js +44 -0
  59. package/lib/commonjs/components/IconButton/styles.js.map +1 -0
  60. package/lib/commonjs/components/Image/Image.js +69 -0
  61. package/lib/commonjs/components/Image/Image.js.map +1 -0
  62. package/lib/commonjs/components/Image/index.js +13 -0
  63. package/lib/commonjs/components/Image/index.js.map +1 -0
  64. package/lib/commonjs/components/Input/BaseInput.android.js +20 -0
  65. package/lib/commonjs/components/Input/BaseInput.android.js.map +1 -0
  66. package/lib/commonjs/components/Input/index.js +10 -16
  67. package/lib/commonjs/components/Input/index.js.map +1 -1
  68. package/lib/commonjs/components/Input/styles.js +17 -30
  69. package/lib/commonjs/components/Input/styles.js.map +1 -1
  70. package/lib/commonjs/components/Link/index.js +94 -0
  71. package/lib/commonjs/components/Link/index.js.map +1 -0
  72. package/lib/commonjs/components/Link/styles.js +14 -0
  73. package/lib/commonjs/components/Link/styles.js.map +1 -0
  74. package/lib/commonjs/components/OtpInput/index.js +83 -0
  75. package/lib/commonjs/components/OtpInput/index.js.map +1 -0
  76. package/lib/commonjs/components/OtpInput/styles.js +48 -0
  77. package/lib/commonjs/components/OtpInput/styles.js.map +1 -0
  78. package/lib/commonjs/components/ProgressBar/index.js +45 -0
  79. package/lib/commonjs/components/ProgressBar/index.js.map +1 -0
  80. package/lib/commonjs/components/ProgressBar/styles.js +10 -0
  81. package/lib/commonjs/components/ProgressBar/styles.js.map +1 -0
  82. package/lib/commonjs/components/ProgressSegmented/index.js +62 -0
  83. package/lib/commonjs/components/ProgressSegmented/index.js.map +1 -0
  84. package/lib/commonjs/components/ProgressSegmented/styles.js +21 -0
  85. package/lib/commonjs/components/ProgressSegmented/styles.js.map +1 -0
  86. package/lib/commonjs/components/Select/SelectTriggerHost.js +10 -0
  87. package/lib/commonjs/components/Select/SelectTriggerHost.js.map +1 -0
  88. package/lib/commonjs/components/Select/SelectTriggerHost.web.js +98 -0
  89. package/lib/commonjs/components/Select/SelectTriggerHost.web.js.map +1 -0
  90. package/lib/commonjs/components/Select/index.js +13 -13
  91. package/lib/commonjs/components/Select/index.js.map +1 -1
  92. package/lib/commonjs/components/Select/styles.js +29 -53
  93. package/lib/commonjs/components/Select/styles.js.map +1 -1
  94. package/lib/commonjs/components/Stack/HStack.js +8 -21
  95. package/lib/commonjs/components/Stack/HStack.js.map +1 -1
  96. package/lib/commonjs/components/Stack/VStack.js +8 -21
  97. package/lib/commonjs/components/Stack/VStack.js.map +1 -1
  98. package/lib/commonjs/components/Stack/styles.js +44 -0
  99. package/lib/commonjs/components/Stack/styles.js.map +1 -0
  100. package/lib/commonjs/components/Switch/BaseSwitch.js +46 -0
  101. package/lib/commonjs/components/Switch/BaseSwitch.js.map +1 -0
  102. package/lib/commonjs/components/Switch/BaseSwitch.web.js +56 -0
  103. package/lib/commonjs/components/Switch/BaseSwitch.web.js.map +1 -0
  104. package/lib/commonjs/components/Switch/index.js +13 -0
  105. package/lib/commonjs/components/Switch/index.js.map +1 -0
  106. package/lib/commonjs/components/Switch/styles.js +128 -0
  107. package/lib/commonjs/components/Switch/styles.js.map +1 -0
  108. package/lib/commonjs/components/Text/index.js +18 -9
  109. package/lib/commonjs/components/Text/index.js.map +1 -1
  110. package/lib/commonjs/components/Text/styles.js +23 -0
  111. package/lib/commonjs/components/Text/styles.js.map +1 -0
  112. package/lib/commonjs/components/VirtualizedList/index.js +19 -0
  113. package/lib/commonjs/components/VirtualizedList/index.js.map +1 -0
  114. package/lib/commonjs/components/index.js +228 -0
  115. package/lib/commonjs/components/index.js.map +1 -1
  116. package/lib/commonjs/index.js +40 -0
  117. package/lib/commonjs/index.js.map +1 -1
  118. package/lib/commonjs/metro/withCdxMetroConfig.js +24 -0
  119. package/lib/commonjs/metro/withCdxMetroConfig.js.map +1 -0
  120. package/lib/commonjs/styles/index.js +17 -0
  121. package/lib/commonjs/styles/index.js.map +1 -0
  122. package/lib/commonjs/styles/primitives.js +123 -0
  123. package/lib/commonjs/styles/primitives.js.map +1 -0
  124. package/lib/module/components/AlertDialog/index.js +112 -0
  125. package/lib/module/components/AlertDialog/index.js.map +1 -0
  126. package/lib/module/components/Avatar/index.js +152 -0
  127. package/lib/module/components/Avatar/index.js.map +1 -0
  128. package/lib/module/components/Avatar/styles.js +77 -0
  129. package/lib/module/components/Avatar/styles.js.map +1 -0
  130. package/lib/module/components/BottomSheet/index.js +242 -0
  131. package/lib/module/components/BottomSheet/index.js.map +1 -0
  132. package/lib/module/components/BottomSheet/styles.js +58 -0
  133. package/lib/module/components/BottomSheet/styles.js.map +1 -0
  134. package/lib/module/components/Box/Box.js +1 -0
  135. package/lib/module/components/Box/Box.js.map +1 -1
  136. package/lib/module/components/Button/index.js +21 -10
  137. package/lib/module/components/Button/index.js.map +1 -1
  138. package/lib/module/components/Button/styles.js +180 -161
  139. package/lib/module/components/Button/styles.js.map +1 -1
  140. package/lib/module/components/Card/index.js +100 -0
  141. package/lib/module/components/Card/index.js.map +1 -0
  142. package/lib/module/components/Card/styles.js +25 -0
  143. package/lib/module/components/Card/styles.js.map +1 -0
  144. package/lib/module/components/Checkbox/index.js +176 -0
  145. package/lib/module/components/Checkbox/index.js.map +1 -0
  146. package/lib/module/components/Checkbox/styles.js +64 -0
  147. package/lib/module/components/Checkbox/styles.js.map +1 -0
  148. package/lib/module/components/Chip/index.js +99 -0
  149. package/lib/module/components/Chip/index.js.map +1 -0
  150. package/lib/module/components/Chip/styles.js +48 -0
  151. package/lib/module/components/Chip/styles.js.map +1 -0
  152. package/lib/module/components/Dialog/index.js +267 -0
  153. package/lib/module/components/Dialog/index.js.map +1 -0
  154. package/lib/module/components/Dialog/styles.js +60 -0
  155. package/lib/module/components/Dialog/styles.js.map +1 -0
  156. package/lib/module/components/Field/FieldLabel.js +29 -0
  157. package/lib/module/components/Field/FieldLabel.js.map +1 -0
  158. package/lib/module/components/Field/FieldLabel.web.js +17 -0
  159. package/lib/module/components/Field/FieldLabel.web.js.map +1 -0
  160. package/lib/module/components/Field/index.js +155 -0
  161. package/lib/module/components/Field/index.js.map +1 -0
  162. package/lib/module/components/Field/styles.js +12 -0
  163. package/lib/module/components/Field/styles.js.map +1 -0
  164. package/lib/module/components/Form/FormRoot.js +21 -0
  165. package/lib/module/components/Form/FormRoot.js.map +1 -0
  166. package/lib/module/components/Form/FormRoot.web.js +12 -0
  167. package/lib/module/components/Form/FormRoot.web.js.map +1 -0
  168. package/lib/module/components/Form/index.js +44 -0
  169. package/lib/module/components/Form/index.js.map +1 -0
  170. package/lib/module/components/Form/styles.js +5 -0
  171. package/lib/module/components/Form/styles.js.map +1 -0
  172. package/lib/module/components/Heading/index.js +31 -0
  173. package/lib/module/components/Heading/index.js.map +1 -0
  174. package/lib/module/components/Heading/styles.js +19 -0
  175. package/lib/module/components/Heading/styles.js.map +1 -0
  176. package/lib/module/components/Icon/index.js +57 -0
  177. package/lib/module/components/Icon/index.js.map +1 -0
  178. package/lib/module/components/IconButton/index.js +71 -0
  179. package/lib/module/components/IconButton/index.js.map +1 -0
  180. package/lib/module/components/IconButton/styles.js +40 -0
  181. package/lib/module/components/IconButton/styles.js.map +1 -0
  182. package/lib/module/components/Image/Image.js +67 -0
  183. package/lib/module/components/Image/Image.js.map +1 -0
  184. package/lib/module/components/Image/index.js +4 -0
  185. package/lib/module/components/Image/index.js.map +1 -0
  186. package/lib/module/components/Input/BaseInput.android.js +16 -0
  187. package/lib/module/components/Input/BaseInput.android.js.map +1 -0
  188. package/lib/module/components/Input/index.js +10 -16
  189. package/lib/module/components/Input/index.js.map +1 -1
  190. package/lib/module/components/Input/styles.js +17 -30
  191. package/lib/module/components/Input/styles.js.map +1 -1
  192. package/lib/module/components/Link/index.js +85 -0
  193. package/lib/module/components/Link/index.js.map +1 -0
  194. package/lib/module/components/Link/styles.js +11 -0
  195. package/lib/module/components/Link/styles.js.map +1 -0
  196. package/lib/module/components/OtpInput/index.js +79 -0
  197. package/lib/module/components/OtpInput/index.js.map +1 -0
  198. package/lib/module/components/OtpInput/styles.js +44 -0
  199. package/lib/module/components/OtpInput/styles.js.map +1 -0
  200. package/lib/module/components/ProgressBar/index.js +41 -0
  201. package/lib/module/components/ProgressBar/index.js.map +1 -0
  202. package/lib/module/components/ProgressBar/styles.js +6 -0
  203. package/lib/module/components/ProgressBar/styles.js.map +1 -0
  204. package/lib/module/components/ProgressSegmented/index.js +58 -0
  205. package/lib/module/components/ProgressSegmented/index.js.map +1 -0
  206. package/lib/module/components/ProgressSegmented/styles.js +17 -0
  207. package/lib/module/components/ProgressSegmented/styles.js.map +1 -0
  208. package/lib/module/components/Select/SelectTriggerHost.js +7 -0
  209. package/lib/module/components/Select/SelectTriggerHost.js.map +1 -0
  210. package/lib/module/components/Select/SelectTriggerHost.web.js +93 -0
  211. package/lib/module/components/Select/SelectTriggerHost.web.js.map +1 -0
  212. package/lib/module/components/Select/index.js +14 -14
  213. package/lib/module/components/Select/index.js.map +1 -1
  214. package/lib/module/components/Select/styles.js +29 -53
  215. package/lib/module/components/Select/styles.js.map +1 -1
  216. package/lib/module/components/Stack/HStack.js +8 -21
  217. package/lib/module/components/Stack/HStack.js.map +1 -1
  218. package/lib/module/components/Stack/VStack.js +8 -21
  219. package/lib/module/components/Stack/VStack.js.map +1 -1
  220. package/lib/module/components/Stack/styles.js +40 -0
  221. package/lib/module/components/Stack/styles.js.map +1 -0
  222. package/lib/module/components/Switch/BaseSwitch.js +42 -0
  223. package/lib/module/components/Switch/BaseSwitch.js.map +1 -0
  224. package/lib/module/components/Switch/BaseSwitch.web.js +52 -0
  225. package/lib/module/components/Switch/BaseSwitch.web.js.map +1 -0
  226. package/lib/module/components/Switch/index.js +9 -0
  227. package/lib/module/components/Switch/index.js.map +1 -0
  228. package/lib/module/components/Switch/styles.js +125 -0
  229. package/lib/module/components/Switch/styles.js.map +1 -0
  230. package/lib/module/components/Text/index.js +19 -1
  231. package/lib/module/components/Text/index.js.map +1 -1
  232. package/lib/module/components/Text/styles.js +19 -0
  233. package/lib/module/components/Text/styles.js.map +1 -0
  234. package/lib/module/components/VirtualizedList/index.js +15 -0
  235. package/lib/module/components/VirtualizedList/index.js.map +1 -0
  236. package/lib/module/components/index.js +19 -0
  237. package/lib/module/components/index.js.map +1 -1
  238. package/lib/module/index.js +3 -0
  239. package/lib/module/index.js.map +1 -1
  240. package/lib/module/metro/withCdxMetroConfig.js +20 -0
  241. package/lib/module/metro/withCdxMetroConfig.js.map +1 -0
  242. package/lib/module/styles/index.js +4 -0
  243. package/lib/module/styles/index.js.map +1 -0
  244. package/lib/module/styles/primitives.js +119 -0
  245. package/lib/module/styles/primitives.js.map +1 -0
  246. package/lib/typescript/components/AlertDialog/index.d.ts +30 -0
  247. package/lib/typescript/components/AlertDialog/index.d.ts.map +1 -0
  248. package/lib/typescript/components/Avatar/index.d.ts +40 -0
  249. package/lib/typescript/components/Avatar/index.d.ts.map +1 -0
  250. package/lib/typescript/components/Avatar/styles.d.ts +16 -0
  251. package/lib/typescript/components/Avatar/styles.d.ts.map +1 -0
  252. package/lib/typescript/components/BottomSheet/index.d.ts +61 -0
  253. package/lib/typescript/components/BottomSheet/index.d.ts.map +1 -0
  254. package/lib/typescript/components/BottomSheet/styles.d.ts +16 -0
  255. package/lib/typescript/components/BottomSheet/styles.d.ts.map +1 -0
  256. package/lib/typescript/components/Box/Box.d.ts +1 -0
  257. package/lib/typescript/components/Box/Box.d.ts.map +1 -1
  258. package/lib/typescript/components/Button/index.d.ts +6 -3
  259. package/lib/typescript/components/Button/index.d.ts.map +1 -1
  260. package/lib/typescript/components/Button/styles.d.ts +11 -8
  261. package/lib/typescript/components/Button/styles.d.ts.map +1 -1
  262. package/lib/typescript/components/Card/index.d.ts +30 -0
  263. package/lib/typescript/components/Card/index.d.ts.map +1 -0
  264. package/lib/typescript/components/Card/styles.d.ts +6 -0
  265. package/lib/typescript/components/Card/styles.d.ts.map +1 -0
  266. package/lib/typescript/components/Checkbox/index.d.ts +46 -0
  267. package/lib/typescript/components/Checkbox/index.d.ts.map +1 -0
  268. package/lib/typescript/components/Checkbox/styles.d.ts +18 -0
  269. package/lib/typescript/components/Checkbox/styles.d.ts.map +1 -0
  270. package/lib/typescript/components/Chip/index.d.ts +27 -0
  271. package/lib/typescript/components/Chip/index.d.ts.map +1 -0
  272. package/lib/typescript/components/Chip/styles.d.ts +12 -0
  273. package/lib/typescript/components/Chip/styles.d.ts.map +1 -0
  274. package/lib/typescript/components/Dialog/index.d.ts +61 -0
  275. package/lib/typescript/components/Dialog/index.d.ts.map +1 -0
  276. package/lib/typescript/components/Dialog/styles.d.ts +14 -0
  277. package/lib/typescript/components/Dialog/styles.d.ts.map +1 -0
  278. package/lib/typescript/components/Field/FieldLabel.d.ts +18 -0
  279. package/lib/typescript/components/Field/FieldLabel.d.ts.map +1 -0
  280. package/lib/typescript/components/Field/FieldLabel.web.d.ts +16 -0
  281. package/lib/typescript/components/Field/FieldLabel.web.d.ts.map +1 -0
  282. package/lib/typescript/components/Field/index.d.ts +26 -0
  283. package/lib/typescript/components/Field/index.d.ts.map +1 -0
  284. package/lib/typescript/components/Field/styles.d.ts +16 -0
  285. package/lib/typescript/components/Field/styles.d.ts.map +1 -0
  286. package/lib/typescript/components/Form/FormRoot.d.ts +14 -0
  287. package/lib/typescript/components/Form/FormRoot.d.ts.map +1 -0
  288. package/lib/typescript/components/Form/FormRoot.web.d.ts +10 -0
  289. package/lib/typescript/components/Form/FormRoot.web.d.ts.map +1 -0
  290. package/lib/typescript/components/Form/index.d.ts +7 -0
  291. package/lib/typescript/components/Form/index.d.ts.map +1 -0
  292. package/lib/typescript/components/Form/styles.d.ts +2 -0
  293. package/lib/typescript/components/Form/styles.d.ts.map +1 -0
  294. package/lib/typescript/components/Heading/index.d.ts +10 -0
  295. package/lib/typescript/components/Heading/index.d.ts.map +1 -0
  296. package/lib/typescript/components/Heading/styles.d.ts +6 -0
  297. package/lib/typescript/components/Heading/styles.d.ts.map +1 -0
  298. package/lib/typescript/components/Icon/index.d.ts +27 -0
  299. package/lib/typescript/components/Icon/index.d.ts.map +1 -0
  300. package/lib/typescript/components/IconButton/index.d.ts +15 -0
  301. package/lib/typescript/components/IconButton/index.d.ts.map +1 -0
  302. package/lib/typescript/components/IconButton/styles.d.ts +11 -0
  303. package/lib/typescript/components/IconButton/styles.d.ts.map +1 -0
  304. package/lib/typescript/components/Image/Image.d.ts +47 -0
  305. package/lib/typescript/components/Image/Image.d.ts.map +1 -0
  306. package/lib/typescript/components/Image/index.d.ts +2 -0
  307. package/lib/typescript/components/Image/index.d.ts.map +1 -0
  308. package/lib/typescript/components/Input/BaseInput.android.d.ts +3 -0
  309. package/lib/typescript/components/Input/BaseInput.android.d.ts.map +1 -0
  310. package/lib/typescript/components/Input/index.d.ts +7 -5
  311. package/lib/typescript/components/Input/index.d.ts.map +1 -1
  312. package/lib/typescript/components/Input/styles.d.ts +5 -7
  313. package/lib/typescript/components/Input/styles.d.ts.map +1 -1
  314. package/lib/typescript/components/Link/index.d.ts +26 -0
  315. package/lib/typescript/components/Link/index.d.ts.map +1 -0
  316. package/lib/typescript/components/Link/styles.d.ts +6 -0
  317. package/lib/typescript/components/Link/styles.d.ts.map +1 -0
  318. package/lib/typescript/components/OtpInput/index.d.ts +11 -0
  319. package/lib/typescript/components/OtpInput/index.d.ts.map +1 -0
  320. package/lib/typescript/components/OtpInput/styles.d.ts +14 -0
  321. package/lib/typescript/components/OtpInput/styles.d.ts.map +1 -0
  322. package/lib/typescript/components/ProgressBar/index.d.ts +17 -0
  323. package/lib/typescript/components/ProgressBar/index.d.ts.map +1 -0
  324. package/lib/typescript/components/ProgressBar/styles.d.ts +5 -0
  325. package/lib/typescript/components/ProgressBar/styles.d.ts.map +1 -0
  326. package/lib/typescript/components/ProgressSegmented/index.d.ts +15 -0
  327. package/lib/typescript/components/ProgressSegmented/index.d.ts.map +1 -0
  328. package/lib/typescript/components/ProgressSegmented/styles.d.ts +8 -0
  329. package/lib/typescript/components/ProgressSegmented/styles.d.ts.map +1 -0
  330. package/lib/typescript/components/Select/SelectTriggerHost.d.ts +3 -0
  331. package/lib/typescript/components/Select/SelectTriggerHost.d.ts.map +1 -0
  332. package/lib/typescript/components/Select/SelectTriggerHost.web.d.ts +13 -0
  333. package/lib/typescript/components/Select/SelectTriggerHost.web.d.ts.map +1 -0
  334. package/lib/typescript/components/Select/index.d.ts +7 -4
  335. package/lib/typescript/components/Select/index.d.ts.map +1 -1
  336. package/lib/typescript/components/Select/styles.d.ts +6 -8
  337. package/lib/typescript/components/Select/styles.d.ts.map +1 -1
  338. package/lib/typescript/components/Stack/HStack.d.ts +1 -12
  339. package/lib/typescript/components/Stack/HStack.d.ts.map +1 -1
  340. package/lib/typescript/components/Stack/VStack.d.ts +1 -12
  341. package/lib/typescript/components/Stack/VStack.d.ts.map +1 -1
  342. package/lib/typescript/components/Stack/styles.d.ts +23 -0
  343. package/lib/typescript/components/Stack/styles.d.ts.map +1 -0
  344. package/lib/typescript/components/Switch/BaseSwitch.d.ts +9 -0
  345. package/lib/typescript/components/Switch/BaseSwitch.d.ts.map +1 -0
  346. package/lib/typescript/components/Switch/BaseSwitch.web.d.ts +15 -0
  347. package/lib/typescript/components/Switch/BaseSwitch.web.d.ts.map +1 -0
  348. package/lib/typescript/components/Switch/index.d.ts +7 -0
  349. package/lib/typescript/components/Switch/index.d.ts.map +1 -0
  350. package/lib/typescript/components/Switch/styles.d.ts +26 -0
  351. package/lib/typescript/components/Switch/styles.d.ts.map +1 -0
  352. package/lib/typescript/components/Text/index.d.ts +9 -1
  353. package/lib/typescript/components/Text/index.d.ts.map +1 -1
  354. package/lib/typescript/components/Text/styles.d.ts +6 -0
  355. package/lib/typescript/components/Text/styles.d.ts.map +1 -0
  356. package/lib/typescript/components/VirtualizedList/index.d.ts +8 -0
  357. package/lib/typescript/components/VirtualizedList/index.d.ts.map +1 -0
  358. package/lib/typescript/components/index.d.ts +19 -0
  359. package/lib/typescript/components/index.d.ts.map +1 -1
  360. package/lib/typescript/index.d.ts +3 -0
  361. package/lib/typescript/index.d.ts.map +1 -1
  362. package/lib/typescript/metro/withCdxMetroConfig.d.ts +19 -0
  363. package/lib/typescript/metro/withCdxMetroConfig.d.ts.map +1 -0
  364. package/lib/typescript/styles/index.d.ts +2 -0
  365. package/lib/typescript/styles/index.d.ts.map +1 -0
  366. package/lib/typescript/styles/primitives.d.ts +85 -0
  367. package/lib/typescript/styles/primitives.d.ts.map +1 -0
  368. package/package.json +21 -10
  369. package/src/components/AlertDialog/index.tsx +124 -0
  370. package/src/components/Avatar/index.tsx +172 -0
  371. package/src/components/Avatar/styles.ts +83 -0
  372. package/src/components/BottomSheet/index.tsx +316 -0
  373. package/src/components/BottomSheet/styles.ts +79 -0
  374. package/src/components/Box/Box.tsx +1 -0
  375. package/src/components/Button/index.tsx +14 -9
  376. package/src/components/Button/styles.ts +159 -204
  377. package/src/components/Card/index.tsx +115 -0
  378. package/src/components/Card/styles.ts +41 -0
  379. package/src/components/Checkbox/index.tsx +207 -0
  380. package/src/components/Checkbox/styles.ts +103 -0
  381. package/src/components/Chip/index.tsx +91 -0
  382. package/src/components/Chip/styles.ts +52 -0
  383. package/src/components/Dialog/index.tsx +304 -0
  384. package/src/components/Dialog/styles.ts +88 -0
  385. package/src/components/Field/FieldLabel.tsx +33 -0
  386. package/src/components/Field/FieldLabel.web.tsx +25 -0
  387. package/src/components/Field/index.tsx +171 -0
  388. package/src/components/Field/styles.ts +32 -0
  389. package/src/components/Form/FormRoot.tsx +20 -0
  390. package/src/components/Form/FormRoot.web.tsx +12 -0
  391. package/src/components/Form/index.tsx +38 -0
  392. package/src/components/Form/styles.ts +3 -0
  393. package/src/components/Heading/index.tsx +36 -0
  394. package/src/components/Heading/styles.tsx +25 -0
  395. package/src/components/Icon/index.tsx +54 -0
  396. package/src/components/IconButton/index.tsx +92 -0
  397. package/src/components/IconButton/styles.ts +59 -0
  398. package/src/components/Image/Image.tsx +77 -0
  399. package/src/components/Image/index.ts +1 -0
  400. package/src/components/Input/BaseInput.android.tsx +13 -0
  401. package/src/components/Input/index.tsx +9 -22
  402. package/src/components/Input/styles.ts +36 -40
  403. package/src/components/Link/index.tsx +83 -0
  404. package/src/components/Link/styles.ts +21 -0
  405. package/src/components/OtpInput/index.tsx +79 -0
  406. package/src/components/OtpInput/styles.ts +45 -0
  407. package/src/components/ProgressBar/index.tsx +53 -0
  408. package/src/components/ProgressBar/styles.ts +9 -0
  409. package/src/components/ProgressSegmented/index.tsx +81 -0
  410. package/src/components/ProgressSegmented/styles.ts +20 -0
  411. package/src/components/Select/SelectTriggerHost.tsx +4 -0
  412. package/src/components/Select/SelectTriggerHost.web.tsx +136 -0
  413. package/src/components/Select/index.tsx +14 -14
  414. package/src/components/Select/styles.ts +68 -75
  415. package/src/components/Stack/HStack.tsx +8 -19
  416. package/src/components/Stack/VStack.tsx +8 -23
  417. package/src/components/Stack/styles.ts +42 -0
  418. package/src/components/Switch/BaseSwitch.tsx +38 -0
  419. package/src/components/Switch/BaseSwitch.web.tsx +69 -0
  420. package/src/components/Switch/index.tsx +11 -0
  421. package/src/components/Switch/styles.ts +120 -0
  422. package/src/components/Text/index.tsx +16 -0
  423. package/src/components/Text/styles.tsx +25 -0
  424. package/src/components/VirtualizedList/index.tsx +19 -0
  425. package/src/components/index.ts +19 -0
  426. package/src/index.ts +3 -0
  427. package/src/metro/withCdxMetroConfig.ts +29 -0
  428. package/src/styles/index.ts +1 -0
  429. package/src/styles/primitives.ts +107 -0
  430. package/lib/commonjs/components/Text/Text.js +0 -30
  431. package/lib/commonjs/components/Text/Text.js.map +0 -1
  432. package/lib/module/components/Text/Text.js +0 -26
  433. package/lib/module/components/Text/Text.js.map +0 -1
  434. package/lib/typescript/components/Text/Text.d.ts +0 -11
  435. package/lib/typescript/components/Text/Text.d.ts.map +0 -1
  436. package/src/components/Text/Text.tsx +0 -58
  437. package/src/components/Text/index.ts +0 -1
@@ -0,0 +1,304 @@
1
+ import { forwardRef, type ReactNode } from 'react';
2
+ import { Pressable, Text, View, type PressableProps, type ViewProps } from 'react-native';
3
+ import { Close as CloseIcon } from '@cdx-ui/icons';
4
+ import {
5
+ createDialog,
6
+ type IDialogBodyProps,
7
+ type IDialogCloseProps,
8
+ type IDialogContentProps,
9
+ type IDialogDescriptionProps,
10
+ type IDialogFooterProps,
11
+ type IDialogHeaderProps,
12
+ type IDialogRootProps,
13
+ type IDialogTitleProps,
14
+ type IDialogTriggerProps,
15
+ } from '@cdx-ui/primitives';
16
+ import { cn, useStyleContext, withStyleContext } from '@cdx-ui/utils';
17
+ import { Icon } from '../Icon';
18
+ import {
19
+ type DialogVariantProps,
20
+ dialogBodyVariants,
21
+ dialogCloseIconVariants,
22
+ dialogCloseVariants,
23
+ dialogContentVariants,
24
+ dialogDescriptionVariants,
25
+ dialogFooterVariants,
26
+ dialogHeaderVariants,
27
+ dialogOverlayVariants,
28
+ dialogTitleVariants,
29
+ } from './styles';
30
+
31
+ export { useDialog } from '@cdx-ui/primitives';
32
+
33
+ // =============================================================================
34
+ // STYLE CONTEXT
35
+ // =============================================================================
36
+
37
+ const SCOPE = 'DIALOG';
38
+
39
+ const Root = withStyleContext(View, SCOPE);
40
+
41
+ const useDialogStyleContext = () => useStyleContext(SCOPE) as DialogVariantProps;
42
+
43
+ // =============================================================================
44
+ // STYLED OVERLAY (internal — not consumer-facing)
45
+ // =============================================================================
46
+
47
+ const StyledOverlay = forwardRef<View, PressableProps & { className?: string }>(
48
+ ({ className, ...props }, ref) => (
49
+ <Pressable ref={ref} className={cn(dialogOverlayVariants(), className)} {...props} />
50
+ ),
51
+ );
52
+ StyledOverlay.displayName = 'Dialog.Overlay';
53
+
54
+ // =============================================================================
55
+ // CREATE DIALOG PRIMITIVE
56
+ // =============================================================================
57
+
58
+ const DialogPrimitive = createDialog({
59
+ Root,
60
+ Trigger: Pressable,
61
+ Overlay: StyledOverlay,
62
+ Content: View,
63
+ Header: View,
64
+ Title: Text,
65
+ Description: Text,
66
+ Body: View,
67
+ Footer: View,
68
+ Close: Pressable,
69
+ });
70
+
71
+ // =============================================================================
72
+ // STYLED ROOT
73
+ // =============================================================================
74
+
75
+ export interface DialogRootProps
76
+ extends Omit<ViewProps, 'children' | 'role'>, IDialogRootProps, DialogVariantProps {
77
+ className?: string;
78
+ }
79
+
80
+ const DialogRoot = forwardRef<View, DialogRootProps>(
81
+ ({ size = 'md', className, children, style, ...props }, ref) => (
82
+ <DialogPrimitive ref={ref} className={className} style={style} context={{ size }} {...props}>
83
+ {children}
84
+ </DialogPrimitive>
85
+ ),
86
+ );
87
+
88
+ DialogRoot.displayName = 'Dialog';
89
+
90
+ // =============================================================================
91
+ // STYLED TRIGGER
92
+ // =============================================================================
93
+
94
+ export interface DialogTriggerProps extends IDialogTriggerProps {
95
+ className?: string;
96
+ children?: ReactNode;
97
+ }
98
+
99
+ const DialogTrigger = forwardRef<View, DialogTriggerProps>(
100
+ ({ className, children, style, ...props }, ref) => (
101
+ <DialogPrimitive.Trigger ref={ref} className={className} style={style} {...props}>
102
+ {children}
103
+ </DialogPrimitive.Trigger>
104
+ ),
105
+ );
106
+
107
+ DialogTrigger.displayName = 'Dialog.Trigger';
108
+
109
+ // =============================================================================
110
+ // STYLED CONTENT
111
+ // =============================================================================
112
+
113
+ export interface DialogContentProps extends IDialogContentProps, DialogVariantProps {
114
+ className?: string;
115
+ children?: ReactNode;
116
+ }
117
+
118
+ const DialogContent = forwardRef<View, DialogContentProps>(
119
+ ({ size: sizeProp, className, children, style, ...props }, ref) => {
120
+ const { size: contextSize } = useDialogStyleContext();
121
+ const size = sizeProp ?? contextSize;
122
+ const computedClassName = cn(dialogContentVariants({ size }), className);
123
+
124
+ return (
125
+ <DialogPrimitive.Content ref={ref} className={computedClassName} style={style} {...props}>
126
+ {children}
127
+ </DialogPrimitive.Content>
128
+ );
129
+ },
130
+ );
131
+
132
+ DialogContent.displayName = 'Dialog.Content';
133
+
134
+ // =============================================================================
135
+ // STYLED HEADER
136
+ // =============================================================================
137
+
138
+ export interface DialogHeaderProps extends IDialogHeaderProps {
139
+ className?: string;
140
+ children?: ReactNode;
141
+ }
142
+
143
+ const DialogHeader = forwardRef<View, DialogHeaderProps>(
144
+ ({ className, children, style, ...props }, ref) => {
145
+ const computedClassName = cn(dialogHeaderVariants(), className);
146
+
147
+ return (
148
+ <DialogPrimitive.Header ref={ref} className={computedClassName} style={style} {...props}>
149
+ {children}
150
+ </DialogPrimitive.Header>
151
+ );
152
+ },
153
+ );
154
+
155
+ DialogHeader.displayName = 'Dialog.Header';
156
+
157
+ // =============================================================================
158
+ // STYLED TITLE
159
+ // =============================================================================
160
+
161
+ export interface DialogTitleProps extends IDialogTitleProps {
162
+ className?: string;
163
+ children?: ReactNode;
164
+ }
165
+
166
+ const DialogTitle = forwardRef<Text, DialogTitleProps>(
167
+ ({ className, children, style, ...props }, ref) => {
168
+ const computedClassName = cn(dialogTitleVariants(), className);
169
+
170
+ return (
171
+ <DialogPrimitive.Title ref={ref} className={computedClassName} style={style} {...props}>
172
+ {children}
173
+ </DialogPrimitive.Title>
174
+ );
175
+ },
176
+ );
177
+
178
+ DialogTitle.displayName = 'Dialog.Title';
179
+
180
+ // =============================================================================
181
+ // STYLED DESCRIPTION
182
+ // =============================================================================
183
+
184
+ export interface DialogDescriptionProps extends IDialogDescriptionProps {
185
+ className?: string;
186
+ children?: ReactNode;
187
+ }
188
+
189
+ const DialogDescription = forwardRef<Text, DialogDescriptionProps>(
190
+ ({ className, children, style, ...props }, ref) => {
191
+ const computedClassName = cn(dialogDescriptionVariants(), className);
192
+
193
+ return (
194
+ <DialogPrimitive.Description ref={ref} className={computedClassName} style={style} {...props}>
195
+ {children}
196
+ </DialogPrimitive.Description>
197
+ );
198
+ },
199
+ );
200
+
201
+ DialogDescription.displayName = 'Dialog.Description';
202
+
203
+ // =============================================================================
204
+ // STYLED BODY
205
+ // =============================================================================
206
+
207
+ export interface DialogBodyProps extends IDialogBodyProps {
208
+ className?: string;
209
+ children?: ReactNode;
210
+ }
211
+
212
+ const DialogBody = forwardRef<View, DialogBodyProps>(
213
+ ({ className, children, style, ...props }, ref) => {
214
+ const computedClassName = cn(dialogBodyVariants(), className);
215
+
216
+ return (
217
+ <DialogPrimitive.Body ref={ref} className={computedClassName} style={style} {...props}>
218
+ {children}
219
+ </DialogPrimitive.Body>
220
+ );
221
+ },
222
+ );
223
+
224
+ DialogBody.displayName = 'Dialog.Body';
225
+
226
+ // =============================================================================
227
+ // STYLED FOOTER
228
+ // =============================================================================
229
+
230
+ export interface DialogFooterProps extends IDialogFooterProps {
231
+ className?: string;
232
+ children?: ReactNode;
233
+ }
234
+
235
+ const DialogFooter = forwardRef<View, DialogFooterProps>(
236
+ ({ className, children, style, ...props }, ref) => {
237
+ const computedClassName = cn(dialogFooterVariants(), className);
238
+
239
+ return (
240
+ <DialogPrimitive.Footer ref={ref} className={computedClassName} style={style} {...props}>
241
+ {children}
242
+ </DialogPrimitive.Footer>
243
+ );
244
+ },
245
+ );
246
+
247
+ DialogFooter.displayName = 'Dialog.Footer';
248
+
249
+ // =============================================================================
250
+ // STYLED CLOSE
251
+ // =============================================================================
252
+
253
+ export interface DialogCloseProps extends IDialogCloseProps {
254
+ className?: string;
255
+ children?: ReactNode;
256
+ }
257
+
258
+ const DialogClose = forwardRef<View, DialogCloseProps>(
259
+ ({ className, accessibilityLabel = 'Close', children, style, ...props }, ref) => {
260
+ const computedClassName = cn(dialogCloseVariants(), className);
261
+
262
+ return (
263
+ <DialogPrimitive.Close
264
+ ref={ref}
265
+ className={computedClassName}
266
+ style={style}
267
+ hitSlop={12}
268
+ accessibilityRole="button"
269
+ accessibilityLabel={accessibilityLabel}
270
+ {...props}
271
+ >
272
+ {children ?? <Icon as={CloseIcon} className={dialogCloseIconVariants()} />}
273
+ </DialogPrimitive.Close>
274
+ );
275
+ },
276
+ );
277
+
278
+ DialogClose.displayName = 'Dialog.Close';
279
+
280
+ // =============================================================================
281
+ // COMPOUND COMPONENT
282
+ // =============================================================================
283
+
284
+ type DialogCompoundComponent = typeof DialogRoot & {
285
+ Trigger: typeof DialogTrigger;
286
+ Content: typeof DialogContent;
287
+ Header: typeof DialogHeader;
288
+ Title: typeof DialogTitle;
289
+ Description: typeof DialogDescription;
290
+ Body: typeof DialogBody;
291
+ Footer: typeof DialogFooter;
292
+ Close: typeof DialogClose;
293
+ };
294
+
295
+ export const Dialog = Object.assign(DialogRoot, {
296
+ Trigger: DialogTrigger,
297
+ Content: DialogContent,
298
+ Header: DialogHeader,
299
+ Title: DialogTitle,
300
+ Description: DialogDescription,
301
+ Body: DialogBody,
302
+ Footer: DialogFooter,
303
+ Close: DialogClose,
304
+ }) as DialogCompoundComponent;
@@ -0,0 +1,88 @@
1
+ import { Platform } from 'react-native';
2
+ import { cva, type VariantProps } from 'class-variance-authority';
3
+ import {
4
+ COLOR_BG_INVERSE,
5
+ COLOR_BG_PRIMARY,
6
+ COLOR_BORDER_DEFAULT,
7
+ COLOR_TEXT_PRIMARY,
8
+ COLOR_TEXT_SECONDARY,
9
+ RADIUS_MD,
10
+ SHADOW_MD,
11
+ TRANSITION_COLORS,
12
+ } from '../../styles/primitives';
13
+
14
+ // ── Overlay ─────────────────────────────────────────────────
15
+
16
+ export const dialogOverlayVariants = cva(['absolute inset-0', COLOR_BG_INVERSE, 'opacity-50']);
17
+
18
+ // ── Content ─────────────────────────────────────────────────
19
+
20
+ export const dialogContentVariants = cva(
21
+ [
22
+ COLOR_BG_PRIMARY,
23
+ `border ${COLOR_BORDER_DEFAULT}`,
24
+ RADIUS_MD,
25
+ Platform.select({ web: SHADOW_MD, default: '' }),
26
+ 'max-h-[85vh] overflow-hidden',
27
+ ],
28
+ {
29
+ variants: {
30
+ size: {
31
+ sm: 'w-[90%] max-w-sm',
32
+ md: 'w-[90%] max-w-md',
33
+ lg: 'w-[90%] max-w-lg',
34
+ full: 'w-full mx-4',
35
+ },
36
+ },
37
+ defaultVariants: {
38
+ size: 'md',
39
+ },
40
+ },
41
+ );
42
+
43
+ // ── Header ──────────────────────────────────────────────────
44
+
45
+ export const dialogHeaderVariants = cva([
46
+ 'flex-row items-center justify-between shrink-0',
47
+ 'px-6 pt-6 pb-2',
48
+ ]);
49
+
50
+ // ── Title ───────────────────────────────────────────────────
51
+
52
+ export const dialogTitleVariants = cva(['text-lg font-semibold', COLOR_TEXT_PRIMARY]);
53
+
54
+ // ── Description ─────────────────────────────────────────────
55
+
56
+ export const dialogDescriptionVariants = cva(['text-sm mt-1', COLOR_TEXT_SECONDARY]);
57
+
58
+ // ── Body ────────────────────────────────────────────────────
59
+
60
+ export const dialogBodyVariants = cva(['px-6 py-4 shrink min-h-0']);
61
+
62
+ // ── Footer ──────────────────────────────────────────────────
63
+
64
+ export const dialogFooterVariants = cva([
65
+ 'flex-row items-center justify-end shrink-0',
66
+ 'gap-3 px-6 pt-2 pb-6',
67
+ ]);
68
+
69
+ // ── Close ───────────────────────────────────────────────────
70
+
71
+ export const dialogCloseVariants = cva([
72
+ 'p-1 -m-1 rounded-full',
73
+ TRANSITION_COLORS,
74
+ Platform.select({
75
+ default: 'data-[active=true]:opacity-70',
76
+ web: [
77
+ 'data-[hover=true]:bg-slate-100',
78
+ 'data-[active=true]:bg-slate-200',
79
+ 'data-[focus-visible=true]:ring-2 data-[focus-visible=true]:ring-slate-400/50 data-[focus-visible=true]:ring-offset-2',
80
+ ].join(' '),
81
+ }),
82
+ ]);
83
+
84
+ // ── Close Icon ──────────────────────────────────────────────
85
+
86
+ export const dialogCloseIconVariants = cva(['size-5 text-slate-500']);
87
+
88
+ export type DialogVariantProps = VariantProps<typeof dialogContentVariants>;
@@ -0,0 +1,33 @@
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';
@@ -0,0 +1,25 @@
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, 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';
@@ -0,0 +1,171 @@
1
+ import { forwardRef } from 'react';
2
+ import { Text, View } from 'react-native';
3
+ import { ErrorIcon } from '@cdx-ui/icons';
4
+ import {
5
+ createField,
6
+ IFieldErrorProps,
7
+ IFieldHelperProps,
8
+ IFieldLabelProps,
9
+ type IFieldRootProps,
10
+ } from '@cdx-ui/primitives';
11
+ import { cn } from '@cdx-ui/utils';
12
+ import { Icon } from '../Icon';
13
+ import { BaseFieldLabel } from './FieldLabel';
14
+ import {
15
+ fieldErrorIconVariants,
16
+ fieldErrorTextVariants,
17
+ fieldErrorVariants,
18
+ fieldHelperVariants,
19
+ fieldHelperTextVariants,
20
+ fieldLabelVariants,
21
+ fieldRootVariants,
22
+ type FieldRootVariantProps,
23
+ type FieldLabelVariantProps,
24
+ type FieldHelperVariantProps,
25
+ type FieldErrorVariantProps,
26
+ } from './styles';
27
+
28
+ // =============================================================================
29
+ // PRIMITIVE
30
+ // =============================================================================
31
+
32
+ const FieldPrimitive = createField({
33
+ Root: View,
34
+ Label: BaseFieldLabel,
35
+ Helper: View,
36
+ HelperText: Text,
37
+ Error: View,
38
+ ErrorText: Text,
39
+ ErrorIcon: View,
40
+ });
41
+
42
+ // =============================================================================
43
+ // FIELD ROOT
44
+ // =============================================================================
45
+
46
+ /**
47
+ * Field wrapper + context. For **initial focus**, pass `autoFocus` on `Input.Field` (not here).
48
+ */
49
+ export interface FieldRootProps extends IFieldRootProps, FieldRootVariantProps {}
50
+
51
+ const FieldRoot = forwardRef<View, FieldRootProps>(
52
+ ({ className, children, style, ...props }, ref) => {
53
+ const computedClassName = cn(fieldRootVariants(), className);
54
+
55
+ return (
56
+ <FieldPrimitive ref={ref} className={computedClassName} style={style} {...props}>
57
+ {children}
58
+ </FieldPrimitive>
59
+ );
60
+ },
61
+ );
62
+
63
+ FieldRoot.displayName = 'Field';
64
+
65
+ // =============================================================================
66
+ // FIELD LABEL
67
+ // =============================================================================
68
+
69
+ export interface FieldLabelProps extends IFieldLabelProps, FieldLabelVariantProps {}
70
+
71
+ const FieldLabel = forwardRef<View, FieldLabelProps>(
72
+ ({ className, children, style, htmlFor, ...props }, ref) => {
73
+ const labelClassName = cn(fieldLabelVariants(), className);
74
+
75
+ return (
76
+ <FieldPrimitive.Label
77
+ ref={ref}
78
+ className={labelClassName}
79
+ style={style}
80
+ htmlFor={htmlFor}
81
+ requiredIndicator={
82
+ <Text className="text-red-500" aria-hidden>
83
+ {' *'}
84
+ </Text>
85
+ }
86
+ {...props}
87
+ >
88
+ {children}
89
+ </FieldPrimitive.Label>
90
+ );
91
+ },
92
+ );
93
+
94
+ FieldLabel.displayName = 'Field.Label';
95
+
96
+ // =============================================================================
97
+ // FIELD HELPER
98
+ // =============================================================================
99
+
100
+ export interface FieldHelperProps extends IFieldHelperProps, FieldHelperVariantProps {}
101
+
102
+ const FieldHelper = forwardRef<View, FieldHelperProps>(
103
+ ({ className, children, style, ...props }, ref) => {
104
+ const containerClassName = cn(fieldHelperVariants(), className);
105
+ const textClassName = cn(fieldHelperTextVariants());
106
+
107
+ return (
108
+ <FieldPrimitive.Helper ref={ref} className={containerClassName} style={style} {...props}>
109
+ <FieldPrimitive.HelperText className={textClassName}>{children}</FieldPrimitive.HelperText>
110
+ </FieldPrimitive.Helper>
111
+ );
112
+ },
113
+ );
114
+
115
+ FieldHelper.displayName = 'Field.Helper';
116
+
117
+ // =============================================================================
118
+ // FIELD ERROR (internal icon + text composition)
119
+ // =============================================================================
120
+
121
+ const FieldErrorIcon = ({ className, style, ...props }: { className?: string; style?: any }) => {
122
+ const computedClassName = cn(fieldErrorIconVariants(), className);
123
+
124
+ return (
125
+ <Icon
126
+ as={ErrorIcon}
127
+ className={computedClassName}
128
+ style={style}
129
+ aria-hidden={true}
130
+ {...props}
131
+ />
132
+ );
133
+ };
134
+
135
+ FieldErrorIcon.displayName = 'Field.ErrorIcon';
136
+
137
+ export interface FieldErrorProps extends IFieldErrorProps, FieldErrorVariantProps {}
138
+
139
+ const FieldError = forwardRef<View, FieldErrorProps>(
140
+ ({ className, children, style, ...props }, ref) => {
141
+ const containerClassName = cn(fieldErrorVariants(), className);
142
+ const textClassName = cn(fieldErrorTextVariants());
143
+
144
+ return (
145
+ <FieldPrimitive.Error ref={ref} className={containerClassName} style={style} {...props}>
146
+ <FieldPrimitive.ErrorIcon>
147
+ <FieldErrorIcon />
148
+ </FieldPrimitive.ErrorIcon>
149
+ <FieldPrimitive.ErrorText className={textClassName}>{children}</FieldPrimitive.ErrorText>
150
+ </FieldPrimitive.Error>
151
+ );
152
+ },
153
+ );
154
+
155
+ FieldError.displayName = 'Field.Error';
156
+
157
+ // =============================================================================
158
+ // COMPOUND EXPORT
159
+ // =============================================================================
160
+
161
+ type FieldCompoundComponent = typeof FieldRoot & {
162
+ Label: typeof FieldLabel;
163
+ Helper: typeof FieldHelper;
164
+ Error: typeof FieldError;
165
+ };
166
+
167
+ export const Field = Object.assign(FieldRoot, {
168
+ Label: FieldLabel,
169
+ Helper: FieldHelper,
170
+ Error: FieldError,
171
+ }) as FieldCompoundComponent;
@@ -0,0 +1,32 @@
1
+ import { cva, type VariantProps } from 'class-variance-authority';
2
+ import { DISABLED_OPACITY } from '../../styles/primitives';
3
+
4
+ export const fieldRootVariants = cva(['flex-col gap-2', 'web:last:mb-0', DISABLED_OPACITY]);
5
+
6
+ export const fieldLabelVariants = cva([
7
+ 'body-md',
8
+ 'font-medium',
9
+ 'text-content-primary',
10
+ 'flex-row items-center',
11
+ DISABLED_OPACITY,
12
+ 'web:cursor-pointer',
13
+ 'data-[invalid=true]:text-content-danger',
14
+ ]);
15
+
16
+ export const fieldHelperVariants = cva(['flex-row items-center']);
17
+
18
+ export const fieldHelperTextVariants = cva(['body-sm', 'text-content-tertiary']);
19
+
20
+ export const fieldErrorVariants = cva(['flex-row items-center gap-1']);
21
+
22
+ export const fieldErrorTextVariants = cva(['body-sm', 'text-content-danger']);
23
+
24
+ export const fieldErrorIconVariants = cva(['size-3.5', 'text-content-danger']);
25
+
26
+ export type FieldRootVariantProps = VariantProps<typeof fieldRootVariants>;
27
+ export type FieldLabelVariantProps = VariantProps<typeof fieldLabelVariants>;
28
+ export type FieldHelperVariantProps = VariantProps<typeof fieldHelperVariants>;
29
+ export type FieldHelperTextVariantProps = VariantProps<typeof fieldHelperTextVariants>;
30
+ export type FieldErrorVariantProps = VariantProps<typeof fieldErrorVariants>;
31
+ export type FieldErrorTextVariantProps = VariantProps<typeof fieldErrorTextVariants>;
32
+ export type FieldErrorIconVariantProps = VariantProps<typeof fieldErrorIconVariants>;
@@ -0,0 +1,20 @@
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';
@@ -0,0 +1,12 @@
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';