@cdx-ui/components 0.0.1-beta.5 → 0.0.1-beta.51

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 (401) hide show
  1. package/README.md +28 -18
  2. package/lib/commonjs/components/AlertDialog/index.js +1 -1
  3. package/lib/commonjs/components/AlertDialog/index.js.map +1 -1
  4. package/lib/commonjs/components/Avatar/index.js +1 -1
  5. package/lib/commonjs/components/Avatar/styles.js +36 -29
  6. package/lib/commonjs/components/Avatar/styles.js.map +1 -1
  7. package/lib/commonjs/components/Button/index.js +16 -1
  8. package/lib/commonjs/components/Button/index.js.map +1 -1
  9. package/lib/commonjs/components/Button/styles.js +85 -26
  10. package/lib/commonjs/components/Button/styles.js.map +1 -1
  11. package/lib/commonjs/components/CLAUDE.md +90 -0
  12. package/lib/commonjs/components/Card/index.js +22 -4
  13. package/lib/commonjs/components/Card/index.js.map +1 -1
  14. package/lib/commonjs/components/Card/styles.js +27 -4
  15. package/lib/commonjs/components/Card/styles.js.map +1 -1
  16. package/lib/commonjs/components/Checkbox/index.js +5 -29
  17. package/lib/commonjs/components/Checkbox/index.js.map +1 -1
  18. package/lib/commonjs/components/Checkbox/styles.js +39 -47
  19. package/lib/commonjs/components/Checkbox/styles.js.map +1 -1
  20. package/lib/commonjs/components/Chip/index.js +78 -9
  21. package/lib/commonjs/components/Chip/index.js.map +1 -1
  22. package/lib/commonjs/components/Chip/styles.js +207 -21
  23. package/lib/commonjs/components/Chip/styles.js.map +1 -1
  24. package/lib/commonjs/components/Field/index.js +8 -2
  25. package/lib/commonjs/components/Field/index.js.map +1 -1
  26. package/lib/commonjs/components/Field/styles.js +4 -4
  27. package/lib/commonjs/components/Field/styles.js.map +1 -1
  28. package/lib/commonjs/components/Heading/styles.js +1 -1
  29. package/lib/commonjs/components/Heading/styles.js.map +1 -1
  30. package/lib/commonjs/components/Icon/index.js +3 -4
  31. package/lib/commonjs/components/Icon/index.js.map +1 -1
  32. package/lib/commonjs/components/IconButton/index.js +6 -1
  33. package/lib/commonjs/components/IconButton/index.js.map +1 -1
  34. package/lib/commonjs/components/IconButton/styles.js +135 -10
  35. package/lib/commonjs/components/IconButton/styles.js.map +1 -1
  36. package/lib/commonjs/components/Input/styles.js +7 -6
  37. package/lib/commonjs/components/Input/styles.js.map +1 -1
  38. package/lib/commonjs/components/Link/index.js +22 -3
  39. package/lib/commonjs/components/Link/index.js.map +1 -1
  40. package/lib/commonjs/components/Link/styles.js +56 -6
  41. package/lib/commonjs/components/Link/styles.js.map +1 -1
  42. package/lib/commonjs/components/ListItem/styles.js +9 -9
  43. package/lib/commonjs/components/ListItem/styles.js.map +1 -1
  44. package/lib/commonjs/components/ProgressSegmented/index.js +24 -10
  45. package/lib/commonjs/components/ProgressSegmented/index.js.map +1 -1
  46. package/lib/commonjs/components/Radio/index.js +167 -0
  47. package/lib/commonjs/components/Radio/index.js.map +1 -0
  48. package/lib/commonjs/components/Radio/styles.js +31 -0
  49. package/lib/commonjs/components/Radio/styles.js.map +1 -0
  50. package/lib/commonjs/components/ScopedTheme/index.js +24 -0
  51. package/lib/commonjs/components/ScopedTheme/index.js.map +1 -0
  52. package/lib/commonjs/components/Select/SelectTriggerHost.web.js +4 -0
  53. package/lib/commonjs/components/Select/SelectTriggerHost.web.js.map +1 -1
  54. package/lib/commonjs/components/Select/index.js +9 -3
  55. package/lib/commonjs/components/Select/index.js.map +1 -1
  56. package/lib/commonjs/components/Select/styles.js +17 -20
  57. package/lib/commonjs/components/Select/styles.js.map +1 -1
  58. package/lib/commonjs/components/Text/styles.js +2 -2
  59. package/lib/commonjs/components/Text/styles.js.map +1 -1
  60. package/lib/commonjs/components/Tile/index.js +251 -0
  61. package/lib/commonjs/components/Tile/index.js.map +1 -0
  62. package/lib/commonjs/components/Tile/styles.js +52 -0
  63. package/lib/commonjs/components/Tile/styles.js.map +1 -0
  64. package/lib/commonjs/components/index.js +36 -0
  65. package/lib/commonjs/components/index.js.map +1 -1
  66. package/lib/commonjs/figma/Avatar.figma.js +54 -0
  67. package/lib/commonjs/figma/Avatar.figma.js.map +1 -0
  68. package/lib/commonjs/figma/Button.figma.js +28 -15
  69. package/lib/commonjs/figma/Button.figma.js.map +1 -1
  70. package/lib/commonjs/figma/CLAUDE.md +30 -0
  71. package/lib/commonjs/figma/Card.Header.figma.js +28 -0
  72. package/lib/commonjs/figma/Card.Header.figma.js.map +1 -0
  73. package/lib/commonjs/figma/Card.figma.js +42 -0
  74. package/lib/commonjs/figma/Card.figma.js.map +1 -0
  75. package/lib/commonjs/figma/Checkbox.figma.js +55 -0
  76. package/lib/commonjs/figma/Checkbox.figma.js.map +1 -0
  77. package/lib/commonjs/figma/Chip.figma.js +68 -0
  78. package/lib/commonjs/figma/Chip.figma.js.map +1 -0
  79. package/lib/commonjs/figma/Field.Input.figma.js +57 -0
  80. package/lib/commonjs/figma/Field.Input.figma.js.map +1 -0
  81. package/lib/commonjs/figma/Field.Select.figma.js +57 -0
  82. package/lib/commonjs/figma/Field.Select.figma.js.map +1 -0
  83. package/lib/commonjs/figma/Heading.figma.js +30 -0
  84. package/lib/commonjs/figma/Heading.figma.js.map +1 -0
  85. package/lib/commonjs/figma/Icon.figma.js +20 -0
  86. package/lib/commonjs/figma/Icon.figma.js.map +1 -0
  87. package/lib/commonjs/figma/IconButton.figma.js +47 -0
  88. package/lib/commonjs/figma/IconButton.figma.js.map +1 -0
  89. package/lib/commonjs/figma/Input.figma.js +52 -0
  90. package/lib/commonjs/figma/Input.figma.js.map +1 -0
  91. package/lib/commonjs/figma/Link.figma.js +30 -0
  92. package/lib/commonjs/figma/Link.figma.js.map +1 -0
  93. package/lib/commonjs/figma/ProgressSegmented.figma.js +39 -0
  94. package/lib/commonjs/figma/ProgressSegmented.figma.js.map +1 -0
  95. package/lib/commonjs/figma/Radio.figma.js +40 -0
  96. package/lib/commonjs/figma/Radio.figma.js.map +1 -0
  97. package/lib/commonjs/figma/Select.figma.js +53 -0
  98. package/lib/commonjs/figma/Select.figma.js.map +1 -0
  99. package/lib/commonjs/figma/Text.figma.js +29 -0
  100. package/lib/commonjs/figma/Text.figma.js.map +1 -0
  101. package/lib/commonjs/figma/icons.figma.batch.js +27 -0
  102. package/lib/commonjs/figma/icons.figma.batch.js.map +1 -0
  103. package/lib/commonjs/figma/icons.figma.batch.json +17705 -0
  104. package/lib/commonjs/hooks/index.js +19 -0
  105. package/lib/commonjs/hooks/index.js.map +1 -0
  106. package/lib/commonjs/hooks/useForgeBottomTabScreenOptions.js +246 -0
  107. package/lib/commonjs/hooks/useForgeBottomTabScreenOptions.js.map +1 -0
  108. package/lib/commonjs/index.js +24 -0
  109. package/lib/commonjs/index.js.map +1 -1
  110. package/lib/commonjs/metro/withCdxMetroConfig.js +7 -18
  111. package/lib/commonjs/metro/withCdxMetroConfig.js.map +1 -1
  112. package/lib/commonjs/metro/withForgeMetroConfig.js +24 -0
  113. package/lib/commonjs/metro/withForgeMetroConfig.js.map +1 -0
  114. package/lib/commonjs/navigation/forgeTabIcon.js +43 -0
  115. package/lib/commonjs/navigation/forgeTabIcon.js.map +1 -0
  116. package/lib/commonjs/navigation/forgeTabIcon.native.js +35 -0
  117. package/lib/commonjs/navigation/forgeTabIcon.native.js.map +1 -0
  118. package/lib/commonjs/navigation/index.js +13 -0
  119. package/lib/commonjs/navigation/index.js.map +1 -0
  120. package/lib/commonjs/navigation/types.js +40 -0
  121. package/lib/commonjs/navigation/types.js.map +1 -0
  122. package/lib/commonjs/styles/primitives.js +43 -6
  123. package/lib/commonjs/styles/primitives.js.map +1 -1
  124. package/lib/module/components/AlertDialog/index.js +1 -1
  125. package/lib/module/components/AlertDialog/index.js.map +1 -1
  126. package/lib/module/components/Avatar/index.js +1 -1
  127. package/lib/module/components/Avatar/styles.js +36 -29
  128. package/lib/module/components/Avatar/styles.js.map +1 -1
  129. package/lib/module/components/Button/index.js +17 -2
  130. package/lib/module/components/Button/index.js.map +1 -1
  131. package/lib/module/components/Button/styles.js +85 -26
  132. package/lib/module/components/Button/styles.js.map +1 -1
  133. package/lib/module/components/CLAUDE.md +90 -0
  134. package/lib/module/components/Card/index.js +23 -4
  135. package/lib/module/components/Card/index.js.map +1 -1
  136. package/lib/module/components/Card/styles.js +27 -4
  137. package/lib/module/components/Card/styles.js.map +1 -1
  138. package/lib/module/components/Checkbox/index.js +6 -30
  139. package/lib/module/components/Checkbox/index.js.map +1 -1
  140. package/lib/module/components/Checkbox/styles.js +40 -48
  141. package/lib/module/components/Checkbox/styles.js.map +1 -1
  142. package/lib/module/components/Chip/index.js +82 -13
  143. package/lib/module/components/Chip/index.js.map +1 -1
  144. package/lib/module/components/Chip/styles.js +206 -20
  145. package/lib/module/components/Chip/styles.js.map +1 -1
  146. package/lib/module/components/Field/index.js +9 -3
  147. package/lib/module/components/Field/index.js.map +1 -1
  148. package/lib/module/components/Field/styles.js +4 -4
  149. package/lib/module/components/Field/styles.js.map +1 -1
  150. package/lib/module/components/Heading/styles.js +1 -1
  151. package/lib/module/components/Heading/styles.js.map +1 -1
  152. package/lib/module/components/Icon/index.js +3 -4
  153. package/lib/module/components/Icon/index.js.map +1 -1
  154. package/lib/module/components/IconButton/index.js +6 -1
  155. package/lib/module/components/IconButton/index.js.map +1 -1
  156. package/lib/module/components/IconButton/styles.js +135 -10
  157. package/lib/module/components/IconButton/styles.js.map +1 -1
  158. package/lib/module/components/Input/styles.js +7 -6
  159. package/lib/module/components/Input/styles.js.map +1 -1
  160. package/lib/module/components/Link/index.js +25 -6
  161. package/lib/module/components/Link/index.js.map +1 -1
  162. package/lib/module/components/Link/styles.js +55 -6
  163. package/lib/module/components/Link/styles.js.map +1 -1
  164. package/lib/module/components/ListItem/styles.js +10 -10
  165. package/lib/module/components/ListItem/styles.js.map +1 -1
  166. package/lib/module/components/ProgressSegmented/index.js +25 -11
  167. package/lib/module/components/ProgressSegmented/index.js.map +1 -1
  168. package/lib/module/components/Radio/index.js +164 -0
  169. package/lib/module/components/Radio/index.js.map +1 -0
  170. package/lib/module/components/Radio/styles.js +27 -0
  171. package/lib/module/components/Radio/styles.js.map +1 -0
  172. package/lib/module/components/ScopedTheme/index.js +19 -0
  173. package/lib/module/components/ScopedTheme/index.js.map +1 -0
  174. package/lib/module/components/Select/SelectTriggerHost.web.js +4 -0
  175. package/lib/module/components/Select/SelectTriggerHost.web.js.map +1 -1
  176. package/lib/module/components/Select/index.js +10 -4
  177. package/lib/module/components/Select/index.js.map +1 -1
  178. package/lib/module/components/Select/styles.js +18 -21
  179. package/lib/module/components/Select/styles.js.map +1 -1
  180. package/lib/module/components/Text/styles.js +2 -2
  181. package/lib/module/components/Text/styles.js.map +1 -1
  182. package/lib/module/components/Tile/index.js +243 -0
  183. package/lib/module/components/Tile/index.js.map +1 -0
  184. package/lib/module/components/Tile/styles.js +48 -0
  185. package/lib/module/components/Tile/styles.js.map +1 -0
  186. package/lib/module/components/index.js +3 -0
  187. package/lib/module/components/index.js.map +1 -1
  188. package/lib/module/figma/Avatar.figma.js +48 -0
  189. package/lib/module/figma/Avatar.figma.js.map +1 -0
  190. package/lib/module/figma/Button.figma.js +28 -15
  191. package/lib/module/figma/Button.figma.js.map +1 -1
  192. package/lib/module/figma/CLAUDE.md +30 -0
  193. package/lib/module/figma/Card.Header.figma.js +22 -0
  194. package/lib/module/figma/Card.Header.figma.js.map +1 -0
  195. package/lib/module/figma/Card.figma.js +36 -0
  196. package/lib/module/figma/Card.figma.js.map +1 -0
  197. package/lib/module/figma/Checkbox.figma.js +49 -0
  198. package/lib/module/figma/Checkbox.figma.js.map +1 -0
  199. package/lib/module/figma/Chip.figma.js +62 -0
  200. package/lib/module/figma/Chip.figma.js.map +1 -0
  201. package/lib/module/figma/Field.Input.figma.js +51 -0
  202. package/lib/module/figma/Field.Input.figma.js.map +1 -0
  203. package/lib/module/figma/Field.Select.figma.js +51 -0
  204. package/lib/module/figma/Field.Select.figma.js.map +1 -0
  205. package/lib/module/figma/Heading.figma.js +24 -0
  206. package/lib/module/figma/Heading.figma.js.map +1 -0
  207. package/lib/module/figma/Icon.figma.js +14 -0
  208. package/lib/module/figma/Icon.figma.js.map +1 -0
  209. package/lib/module/figma/IconButton.figma.js +41 -0
  210. package/lib/module/figma/IconButton.figma.js.map +1 -0
  211. package/lib/module/figma/Input.figma.js +46 -0
  212. package/lib/module/figma/Input.figma.js.map +1 -0
  213. package/lib/module/figma/Link.figma.js +24 -0
  214. package/lib/module/figma/Link.figma.js.map +1 -0
  215. package/lib/module/figma/ProgressSegmented.figma.js +33 -0
  216. package/lib/module/figma/ProgressSegmented.figma.js.map +1 -0
  217. package/lib/module/figma/Radio.figma.js +34 -0
  218. package/lib/module/figma/Radio.figma.js.map +1 -0
  219. package/lib/module/figma/Select.figma.js +47 -0
  220. package/lib/module/figma/Select.figma.js.map +1 -0
  221. package/lib/module/figma/Text.figma.js +23 -0
  222. package/lib/module/figma/Text.figma.js.map +1 -0
  223. package/lib/module/figma/icons.figma.batch.js +22 -0
  224. package/lib/module/figma/icons.figma.batch.js.map +1 -0
  225. package/lib/module/figma/icons.figma.batch.json +17705 -0
  226. package/lib/module/hooks/index.js +4 -0
  227. package/lib/module/hooks/index.js.map +1 -0
  228. package/lib/module/hooks/useForgeBottomTabScreenOptions.js +242 -0
  229. package/lib/module/hooks/useForgeBottomTabScreenOptions.js.map +1 -0
  230. package/lib/module/index.js +2 -0
  231. package/lib/module/index.js.map +1 -1
  232. package/lib/module/metro/withCdxMetroConfig.js +3 -17
  233. package/lib/module/metro/withCdxMetroConfig.js.map +1 -1
  234. package/lib/module/metro/withForgeMetroConfig.js +20 -0
  235. package/lib/module/metro/withForgeMetroConfig.js.map +1 -0
  236. package/lib/module/navigation/forgeTabIcon.js +39 -0
  237. package/lib/module/navigation/forgeTabIcon.js.map +1 -0
  238. package/lib/module/navigation/forgeTabIcon.native.js +31 -0
  239. package/lib/module/navigation/forgeTabIcon.native.js.map +1 -0
  240. package/lib/module/navigation/index.js +4 -0
  241. package/lib/module/navigation/index.js.map +1 -0
  242. package/lib/module/navigation/types.js +38 -0
  243. package/lib/module/navigation/types.js.map +1 -0
  244. package/lib/module/styles/primitives.js +43 -6
  245. package/lib/module/styles/primitives.js.map +1 -1
  246. package/lib/typescript/components/Avatar/styles.d.ts +4 -4
  247. package/lib/typescript/components/Avatar/styles.d.ts.map +1 -1
  248. package/lib/typescript/components/Button/index.d.ts +13 -1
  249. package/lib/typescript/components/Button/index.d.ts.map +1 -1
  250. package/lib/typescript/components/Button/styles.d.ts +5 -3
  251. package/lib/typescript/components/Button/styles.d.ts.map +1 -1
  252. package/lib/typescript/components/Card/index.d.ts +4 -3
  253. package/lib/typescript/components/Card/index.d.ts.map +1 -1
  254. package/lib/typescript/components/Card/styles.d.ts +13 -3
  255. package/lib/typescript/components/Card/styles.d.ts.map +1 -1
  256. package/lib/typescript/components/Checkbox/index.d.ts +1 -2
  257. package/lib/typescript/components/Checkbox/index.d.ts.map +1 -1
  258. package/lib/typescript/components/Checkbox/styles.d.ts +4 -14
  259. package/lib/typescript/components/Checkbox/styles.d.ts.map +1 -1
  260. package/lib/typescript/components/Chip/index.d.ts +19 -6
  261. package/lib/typescript/components/Chip/index.d.ts.map +1 -1
  262. package/lib/typescript/components/Chip/styles.d.ts +13 -4
  263. package/lib/typescript/components/Chip/styles.d.ts.map +1 -1
  264. package/lib/typescript/components/Field/FieldLabel.web.d.ts +2 -2
  265. package/lib/typescript/components/Field/FieldLabel.web.d.ts.map +1 -1
  266. package/lib/typescript/components/Field/index.d.ts.map +1 -1
  267. package/lib/typescript/components/Field/styles.d.ts.map +1 -1
  268. package/lib/typescript/components/Heading/styles.d.ts +1 -1
  269. package/lib/typescript/components/Icon/index.d.ts +5 -5
  270. package/lib/typescript/components/Icon/index.d.ts.map +1 -1
  271. package/lib/typescript/components/IconButton/index.d.ts +3 -3
  272. package/lib/typescript/components/IconButton/index.d.ts.map +1 -1
  273. package/lib/typescript/components/IconButton/styles.d.ts +6 -2
  274. package/lib/typescript/components/IconButton/styles.d.ts.map +1 -1
  275. package/lib/typescript/components/Input/styles.d.ts.map +1 -1
  276. package/lib/typescript/components/Link/index.d.ts +2 -2
  277. package/lib/typescript/components/Link/index.d.ts.map +1 -1
  278. package/lib/typescript/components/Link/styles.d.ts +9 -2
  279. package/lib/typescript/components/Link/styles.d.ts.map +1 -1
  280. package/lib/typescript/components/ListItem/styles.d.ts.map +1 -1
  281. package/lib/typescript/components/ProgressSegmented/index.d.ts +14 -3
  282. package/lib/typescript/components/ProgressSegmented/index.d.ts.map +1 -1
  283. package/lib/typescript/components/Radio/index.d.ts +40 -0
  284. package/lib/typescript/components/Radio/index.d.ts.map +1 -0
  285. package/lib/typescript/components/Radio/styles.d.ts +8 -0
  286. package/lib/typescript/components/Radio/styles.d.ts.map +1 -0
  287. package/lib/typescript/components/ScopedTheme/index.d.ts +16 -0
  288. package/lib/typescript/components/ScopedTheme/index.d.ts.map +1 -0
  289. package/lib/typescript/components/Select/SelectTriggerHost.web.d.ts +3 -0
  290. package/lib/typescript/components/Select/SelectTriggerHost.web.d.ts.map +1 -1
  291. package/lib/typescript/components/Select/index.d.ts +1 -1
  292. package/lib/typescript/components/Select/index.d.ts.map +1 -1
  293. package/lib/typescript/components/Select/styles.d.ts.map +1 -1
  294. package/lib/typescript/components/Stack/styles.d.ts +2 -2
  295. package/lib/typescript/components/Text/styles.d.ts +1 -1
  296. package/lib/typescript/components/Tile/index.d.ts +70 -0
  297. package/lib/typescript/components/Tile/index.d.ts.map +1 -0
  298. package/lib/typescript/components/Tile/styles.d.ts +18 -0
  299. package/lib/typescript/components/Tile/styles.d.ts.map +1 -0
  300. package/lib/typescript/components/index.d.ts +3 -0
  301. package/lib/typescript/components/index.d.ts.map +1 -1
  302. package/lib/typescript/figma/Avatar.figma.d.ts +8 -0
  303. package/lib/typescript/figma/Avatar.figma.d.ts.map +1 -0
  304. package/lib/typescript/figma/Button.figma.d.ts.map +1 -1
  305. package/lib/typescript/figma/Card.Header.figma.d.ts +8 -0
  306. package/lib/typescript/figma/Card.Header.figma.d.ts.map +1 -0
  307. package/lib/typescript/figma/Card.figma.d.ts +8 -0
  308. package/lib/typescript/figma/Card.figma.d.ts.map +1 -0
  309. package/lib/typescript/figma/Checkbox.figma.d.ts +8 -0
  310. package/lib/typescript/figma/Checkbox.figma.d.ts.map +1 -0
  311. package/lib/typescript/figma/Chip.figma.d.ts +8 -0
  312. package/lib/typescript/figma/Chip.figma.d.ts.map +1 -0
  313. package/lib/typescript/figma/Field.Input.figma.d.ts +8 -0
  314. package/lib/typescript/figma/Field.Input.figma.d.ts.map +1 -0
  315. package/lib/typescript/figma/Field.Select.figma.d.ts +8 -0
  316. package/lib/typescript/figma/Field.Select.figma.d.ts.map +1 -0
  317. package/lib/typescript/figma/Heading.figma.d.ts +8 -0
  318. package/lib/typescript/figma/Heading.figma.d.ts.map +1 -0
  319. package/lib/typescript/figma/Icon.figma.d.ts +8 -0
  320. package/lib/typescript/figma/Icon.figma.d.ts.map +1 -0
  321. package/lib/typescript/figma/IconButton.figma.d.ts +8 -0
  322. package/lib/typescript/figma/IconButton.figma.d.ts.map +1 -0
  323. package/lib/typescript/figma/Input.figma.d.ts +8 -0
  324. package/lib/typescript/figma/Input.figma.d.ts.map +1 -0
  325. package/lib/typescript/figma/Link.figma.d.ts +8 -0
  326. package/lib/typescript/figma/Link.figma.d.ts.map +1 -0
  327. package/lib/typescript/figma/ProgressSegmented.figma.d.ts +8 -0
  328. package/lib/typescript/figma/ProgressSegmented.figma.d.ts.map +1 -0
  329. package/lib/typescript/figma/Radio.figma.d.ts +8 -0
  330. package/lib/typescript/figma/Radio.figma.d.ts.map +1 -0
  331. package/lib/typescript/figma/Select.figma.d.ts +8 -0
  332. package/lib/typescript/figma/Select.figma.d.ts.map +1 -0
  333. package/lib/typescript/figma/Text.figma.d.ts +8 -0
  334. package/lib/typescript/figma/Text.figma.d.ts.map +1 -0
  335. package/lib/typescript/figma/icons.figma.batch.d.ts +14 -0
  336. package/lib/typescript/figma/icons.figma.batch.d.ts.map +1 -0
  337. package/lib/typescript/hooks/index.d.ts +2 -0
  338. package/lib/typescript/hooks/index.d.ts.map +1 -0
  339. package/lib/typescript/hooks/useForgeBottomTabScreenOptions.d.ts +137 -0
  340. package/lib/typescript/hooks/useForgeBottomTabScreenOptions.d.ts.map +1 -0
  341. package/lib/typescript/index.d.ts +2 -0
  342. package/lib/typescript/index.d.ts.map +1 -1
  343. package/lib/typescript/metro/withCdxMetroConfig.d.ts +4 -18
  344. package/lib/typescript/metro/withCdxMetroConfig.d.ts.map +1 -1
  345. package/lib/typescript/metro/withForgeMetroConfig.d.ts +19 -0
  346. package/lib/typescript/metro/withForgeMetroConfig.d.ts.map +1 -0
  347. package/lib/typescript/navigation/forgeTabIcon.d.ts +27 -0
  348. package/lib/typescript/navigation/forgeTabIcon.d.ts.map +1 -0
  349. package/lib/typescript/navigation/forgeTabIcon.native.d.ts +15 -0
  350. package/lib/typescript/navigation/forgeTabIcon.native.d.ts.map +1 -0
  351. package/lib/typescript/navigation/index.d.ts +4 -0
  352. package/lib/typescript/navigation/index.d.ts.map +1 -0
  353. package/lib/typescript/navigation/types.d.ts +37 -0
  354. package/lib/typescript/navigation/types.d.ts.map +1 -0
  355. package/lib/typescript/styles/primitives.d.ts +38 -0
  356. package/lib/typescript/styles/primitives.d.ts.map +1 -1
  357. package/package.json +10 -8
  358. package/src/components/AlertDialog/index.tsx +1 -1
  359. package/src/components/Avatar/index.tsx +1 -1
  360. package/src/components/Avatar/styles.ts +49 -34
  361. package/src/components/Button/index.tsx +39 -5
  362. package/src/components/Button/styles.ts +56 -27
  363. package/src/components/CLAUDE.md +90 -0
  364. package/src/components/Card/index.tsx +41 -16
  365. package/src/components/Card/styles.ts +42 -15
  366. package/src/components/Checkbox/index.tsx +8 -19
  367. package/src/components/Checkbox/styles.ts +82 -86
  368. package/src/components/Chip/index.tsx +104 -27
  369. package/src/components/Chip/styles.ts +232 -18
  370. package/src/components/Field/FieldLabel.web.tsx +1 -1
  371. package/src/components/Field/index.tsx +10 -3
  372. package/src/components/Field/styles.ts +5 -4
  373. package/src/components/Heading/styles.ts +1 -1
  374. package/src/components/Icon/index.tsx +6 -7
  375. package/src/components/IconButton/index.tsx +7 -6
  376. package/src/components/IconButton/styles.ts +136 -10
  377. package/src/components/Input/styles.ts +15 -9
  378. package/src/components/Link/index.tsx +22 -9
  379. package/src/components/Link/styles.ts +49 -9
  380. package/src/components/ListItem/styles.ts +12 -19
  381. package/src/components/ProgressSegmented/index.tsx +50 -14
  382. package/src/components/Radio/index.tsx +192 -0
  383. package/src/components/Radio/styles.ts +59 -0
  384. package/src/components/ScopedTheme/index.tsx +17 -0
  385. package/src/components/Select/SelectTriggerHost.web.tsx +8 -1
  386. package/src/components/Select/index.tsx +9 -4
  387. package/src/components/Select/styles.ts +49 -51
  388. package/src/components/Text/styles.ts +2 -2
  389. package/src/components/Tile/index.tsx +296 -0
  390. package/src/components/Tile/styles.ts +82 -0
  391. package/src/components/index.ts +3 -0
  392. package/src/hooks/index.ts +5 -0
  393. package/src/hooks/useForgeBottomTabScreenOptions.ts +245 -0
  394. package/src/index.ts +2 -0
  395. package/src/metro/withCdxMetroConfig.ts +4 -29
  396. package/src/metro/withForgeMetroConfig.ts +29 -0
  397. package/src/navigation/forgeTabIcon.native.ts +36 -0
  398. package/src/navigation/forgeTabIcon.ts +33 -0
  399. package/src/navigation/index.ts +3 -0
  400. package/src/navigation/types.ts +55 -0
  401. package/src/styles/primitives.ts +43 -6
@@ -10,14 +10,14 @@ export const buttonRootVariants = cva(
10
10
  'rounded-[var(--border-radius-button)]',
11
11
  'web:outline-none web:focus:outline-none web:focus-visible:outline-none',
12
12
  TRANSITION_COLORS,
13
- 'data-[disabled=true]:opacity-[--opacity-disabled]',
13
+ 'data-[disabled=true]:opacity-[var(--opacity-disabled)]',
14
14
  DISABLED_CURSOR,
15
- 'web:data-[focus-visible=true]:ring-2 web:data-[focus-visible=true]:ring-[--color-stroke-focus] web:data-[focus-visible=true]:ring-offset-2',
15
+ 'web:data-[focus-visible=true]:ring-2 web:data-[focus-visible=true]:ring-stroke-focus web:data-[focus-visible=true]:ring-offset-2',
16
16
  ],
17
17
  {
18
18
  variants: {
19
19
  variant: {
20
- strong: ['border-b-1 border-black/75'], // TODO: Replace with token
20
+ solid: ['border-b-1 border-black/75'], // TODO: Replace with token
21
21
  outline: ['bg-transparent', 'border border-stroke-primary'],
22
22
  ghost: ['bg-transparent'],
23
23
  },
@@ -29,7 +29,7 @@ export const buttonRootVariants = cva(
29
29
  info: [],
30
30
  },
31
31
  size: {
32
- default: 'h-10 px-4 gap-2',
32
+ default: 'h-11 px-4 gap-2',
33
33
  small: 'h-8 px-3 gap-1.5',
34
34
  },
35
35
  fullWidth: {
@@ -38,9 +38,9 @@ export const buttonRootVariants = cva(
38
38
  },
39
39
  },
40
40
  compoundVariants: [
41
- // ── strong × color (filled surface) ──────────────────────────────
41
+ // ── solid × color (filled surface) ──────────────────────────────
42
42
  {
43
- variant: 'strong',
43
+ variant: 'solid',
44
44
  color: 'action',
45
45
  className: [
46
46
  'bg-surface-action-strong',
@@ -51,7 +51,7 @@ export const buttonRootVariants = cva(
51
51
  ],
52
52
  },
53
53
  {
54
- variant: 'strong',
54
+ variant: 'solid',
55
55
  color: 'danger',
56
56
  className: [
57
57
  'bg-surface-danger-strong',
@@ -62,7 +62,7 @@ export const buttonRootVariants = cva(
62
62
  ],
63
63
  },
64
64
  {
65
- variant: 'strong',
65
+ variant: 'solid',
66
66
  color: 'warning',
67
67
  className: [
68
68
  'bg-surface-warning-strong',
@@ -73,7 +73,7 @@ export const buttonRootVariants = cva(
73
73
  ],
74
74
  },
75
75
  {
76
- variant: 'strong',
76
+ variant: 'solid',
77
77
  color: 'success',
78
78
  className: [
79
79
  'bg-surface-success-strong',
@@ -84,7 +84,7 @@ export const buttonRootVariants = cva(
84
84
  ],
85
85
  },
86
86
  {
87
- variant: 'strong',
87
+ variant: 'solid',
88
88
  color: 'info',
89
89
  className: [
90
90
  'bg-surface-info-strong',
@@ -205,7 +205,7 @@ export const buttonRootVariants = cva(
205
205
  },
206
206
  ],
207
207
  defaultVariants: {
208
- variant: 'strong',
208
+ variant: 'solid',
209
209
  color: 'action',
210
210
  size: 'default',
211
211
  fullWidth: false,
@@ -216,7 +216,7 @@ export const buttonRootVariants = cva(
216
216
  export const buttonTextVariants = cva(['font-medium', 'text-center'], {
217
217
  variants: {
218
218
  variant: {
219
- strong: [],
219
+ solid: [],
220
220
  outline: [],
221
221
  ghost: [],
222
222
  },
@@ -233,12 +233,12 @@ export const buttonTextVariants = cva(['font-medium', 'text-center'], {
233
233
  },
234
234
  },
235
235
  compoundVariants: [
236
- // ── strong × color (filled foreground text) ──────────────────────
237
- { variant: 'strong', color: 'action', className: 'text-content-action-on-strong' },
238
- { variant: 'strong', color: 'danger', className: 'text-content-danger-on-strong' },
239
- { variant: 'strong', color: 'warning', className: 'text-content-warning-on-strong' },
240
- { variant: 'strong', color: 'success', className: 'text-content-success-on-strong' },
241
- { variant: 'strong', color: 'info', className: 'text-content-info-on-strong' },
236
+ // ── solid × color (filled foreground text) ──────────────────────
237
+ { variant: 'solid', color: 'action', className: 'text-content-action-on-strong' },
238
+ { variant: 'solid', color: 'danger', className: 'text-content-danger-on-strong' },
239
+ { variant: 'solid', color: 'warning', className: 'text-content-warning-on-strong' },
240
+ { variant: 'solid', color: 'success', className: 'text-content-success-on-strong' },
241
+ { variant: 'solid', color: 'info', className: 'text-content-info-on-strong' },
242
242
 
243
243
  // ── outline/ghost × color (transparent foreground text) ──────────
244
244
  { variant: ['outline', 'ghost'], color: 'action', className: 'text-content-action' },
@@ -248,7 +248,7 @@ export const buttonTextVariants = cva(['font-medium', 'text-center'], {
248
248
  { variant: ['outline', 'ghost'], color: 'info', className: 'text-content-info' },
249
249
  ],
250
250
  defaultVariants: {
251
- variant: 'strong',
251
+ variant: 'solid',
252
252
  color: 'action',
253
253
  size: 'default',
254
254
  },
@@ -257,7 +257,7 @@ export const buttonTextVariants = cva(['font-medium', 'text-center'], {
257
257
  export const buttonSpinnerVariants = cva([], {
258
258
  variants: {
259
259
  variant: {
260
- strong: [],
260
+ solid: [],
261
261
  outline: [],
262
262
  ghost: [],
263
263
  },
@@ -270,29 +270,29 @@ export const buttonSpinnerVariants = cva([], {
270
270
  },
271
271
  },
272
272
  compoundVariants: [
273
- // ── strong × color ───────────────────────────────────────────────
273
+ // ── solid × color ───────────────────────────────────────────────
274
274
  {
275
- variant: 'strong',
275
+ variant: 'solid',
276
276
  color: 'action',
277
277
  className: 'accent-[var(--color-content-action-on-strong)]',
278
278
  },
279
279
  {
280
- variant: 'strong',
280
+ variant: 'solid',
281
281
  color: 'danger',
282
282
  className: 'accent-[var(--color-content-danger-on-strong)]',
283
283
  },
284
284
  {
285
- variant: 'strong',
285
+ variant: 'solid',
286
286
  color: 'warning',
287
287
  className: 'accent-[var(--color-content-warning-on-strong)]',
288
288
  },
289
289
  {
290
- variant: 'strong',
290
+ variant: 'solid',
291
291
  color: 'success',
292
292
  className: 'accent-[var(--color-content-success-on-strong)]',
293
293
  },
294
294
  {
295
- variant: 'strong',
295
+ variant: 'solid',
296
296
  color: 'info',
297
297
  className: 'accent-[var(--color-content-info-on-strong)]',
298
298
  },
@@ -325,7 +325,7 @@ export const buttonSpinnerVariants = cva([], {
325
325
  },
326
326
  ],
327
327
  defaultVariants: {
328
- variant: 'strong',
328
+ variant: 'solid',
329
329
  color: 'action',
330
330
  },
331
331
  });
@@ -351,12 +351,41 @@ export const buttonGroupVariants = cva([], {
351
351
 
352
352
  export const buttonIconVariants = cva([], {
353
353
  variants: {
354
+ variant: {
355
+ solid: [],
356
+ outline: [],
357
+ ghost: [],
358
+ },
359
+ color: {
360
+ action: [],
361
+ danger: [],
362
+ warning: [],
363
+ success: [],
364
+ info: [],
365
+ },
354
366
  size: {
355
367
  default: 'size-5',
356
368
  small: 'size-4',
357
369
  },
358
370
  },
371
+ compoundVariants: [
372
+ // ── solid × color (filled foreground icon) ──────────────────────
373
+ { variant: 'solid', color: 'action', className: 'text-content-action-on-strong' },
374
+ { variant: 'solid', color: 'danger', className: 'text-content-danger-on-strong' },
375
+ { variant: 'solid', color: 'warning', className: 'text-content-warning-on-strong' },
376
+ { variant: 'solid', color: 'success', className: 'text-content-success-on-strong' },
377
+ { variant: 'solid', color: 'info', className: 'text-content-info-on-strong' },
378
+
379
+ // ── outline/ghost × color (transparent foreground icon) ──────────
380
+ { variant: ['outline', 'ghost'], color: 'action', className: 'text-content-action' },
381
+ { variant: ['outline', 'ghost'], color: 'danger', className: 'text-content-danger' },
382
+ { variant: ['outline', 'ghost'], color: 'warning', className: 'text-content-warning' },
383
+ { variant: ['outline', 'ghost'], color: 'success', className: 'text-content-success' },
384
+ { variant: ['outline', 'ghost'], color: 'info', className: 'text-content-info' },
385
+ ],
359
386
  defaultVariants: {
387
+ variant: 'solid',
388
+ color: 'action',
360
389
  size: 'default',
361
390
  },
362
391
  });
@@ -0,0 +1,90 @@
1
+ # Components — authoring & styling conventions
2
+
3
+ Auto-loaded when working in `packages/components/src/components/**`. Covers both the
4
+ styled component files (`index.tsx`) and their co-located CVA variant files (`styles.ts`).
5
+
6
+ ---
7
+
8
+ ## Component Authoring (`index.tsx`)
9
+
10
+ Styled components in `@cdx-ui/components` follow a consistent pattern. Read the full guides before making changes:
11
+
12
+ - `docs/internal/practices/composition.md` — compound component pattern, naming conventions
13
+ - `docs/internal/practices/types.md` — prop types, `I*Props` vs `*Props`, exporting
14
+ - `docs/internal/practices/styling.md` — `cn()`, CVA, token classes, `Platform.select()`
15
+ - `docs/internal/practices/state.md` — `useControllableState`, `composeEventHandlers`
16
+ - `docs/internal/practices/data-attributes.md` — `data-[state]` and `data-slot`
17
+
18
+ ### Pattern summary
19
+
20
+ Each component follows this structure (see `Button/index.tsx` as the canonical example):
21
+
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
27
+ 6. **Compound export** — `Object.assign(RootComponent, { Sub1, Sub2 }) as CompoundType`
28
+
29
+ ### Key rules
30
+
31
+ - Props interface extends RN base props + primitive `I*Props` + CVA `VariantProps` + `{ className?: string }`
32
+ - Always accept and spread `style` alongside `className`
33
+ - Variant defaults in destructuring must match CVA `defaultVariants`
34
+ - `displayName` set on every exported sub-component
35
+ - `className` is merged last via `cn()` so consumer overrides always win
36
+ - Never hardcode colors — use semantic token classes (`bg-surface-*`, `text-content-*`, `border-stroke-*`)
37
+ - Event handlers composed via `composeEventHandlers` from `@cdx-ui/utils`
38
+ - Third-party libraries fully abstracted — no adopted library types leak to consumers
39
+
40
+ ---
41
+
42
+ ## Styling Conventions (`styles.ts`)
43
+
44
+ Variant definitions live in co-located `styles.ts` files using CVA. Read the full guides before making changes:
45
+
46
+ - `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
48
+
49
+ ### Pattern summary
50
+
51
+ Each `styles.ts` exports CVA variant functions and their derived `VariantProps` types (see `Button/styles.ts` as the canonical example):
52
+
53
+ ```ts
54
+ import { Platform } from 'react-native';
55
+ import { cva, type VariantProps } from 'class-variance-authority';
56
+ import { DISABLED_CURSOR, TRANSITION_COLORS } from '../../styles/primitives';
57
+
58
+ export const componentRootVariants = cva(
59
+ [
60
+ /* base classes */
61
+ ],
62
+ {
63
+ variants: {
64
+ /* variant axes */
65
+ },
66
+ compoundVariants: [
67
+ /* variant × variant combinations */
68
+ ],
69
+ defaultVariants: {
70
+ /* defaults matching the component's destructured defaults */
71
+ },
72
+ },
73
+ );
74
+
75
+ export type ComponentVariantProps = VariantProps<typeof componentRootVariants>;
76
+ ```
77
+
78
+ ### Key rules
79
+
80
+ - **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.
82
+ - **`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
+ - **Shared style primitives** — import `DISABLED_CURSOR`, `TRANSITION_COLORS`, etc. from `../../styles/primitives` for cross-component consistency.
84
+ - **`web:` prefix** for web-only utilities — e.g., `web:outline-none`, `web:focus-visible:ring-2`.
85
+ - **`compoundVariants`** for variant × variant combinations where simple variant merging is insufficient.
86
+ - **`defaultVariants`** must match the destructured defaults in the component's `index.tsx`.
87
+ - **One `cva()` per sub-component** — root, text, icon, spinner, etc. each get their own variant function.
88
+ - **Export `VariantProps` types** — derived via `VariantProps<typeof variantFn>` for the component layer to consume.
89
+ - **No dynamic string construction** — all Tailwind class names must be statically detectable by the Tailwind scanner.
90
+ - **CSS variables for token values** — use `rounded-[var(--border-radius-button)]` syntax when referencing design tokens not mapped to Tailwind utilities.
@@ -1,31 +1,48 @@
1
1
  import { forwardRef, type ReactNode } from 'react';
2
2
  import { View, type ViewProps } from 'react-native';
3
- import { cn } from '@cdx-ui/utils';
3
+ import { cn, useStyleContext, withStyleContext } from '@cdx-ui/utils';
4
4
  import {
5
5
  cardContentVariants,
6
6
  cardFooterVariants,
7
7
  cardHeaderVariants,
8
8
  cardRootVariants,
9
+ type CardContentVariantProps,
10
+ type CardFooterVariantProps,
11
+ type CardVariantProps,
9
12
  } from './styles';
10
13
 
11
14
  // =============================================================================
12
15
  // STYLED ROOT COMPONENT
13
16
  // =============================================================================
14
17
 
15
- export interface CardProps extends ViewProps {
18
+ const SCOPE = 'CARD';
19
+
20
+ const Root = withStyleContext(View, SCOPE);
21
+
22
+ const useCardStyleContext = () => useStyleContext(SCOPE) as CardVariantProps;
23
+
24
+ export interface CardProps extends ViewProps, CardVariantProps {
16
25
  className?: string;
17
26
  children?: ReactNode;
18
27
  }
19
28
 
20
- const CardRoot = forwardRef<View, CardProps>(({ className, children, style, ...props }, ref) => {
21
- const computedClassName = cn(cardRootVariants(), className);
29
+ const CardRoot = forwardRef<View, CardProps>(
30
+ ({ className, children, style, fullBleed, ...props }, ref) => {
31
+ const computedClassName = cn(cardRootVariants(), className);
22
32
 
23
- return (
24
- <View ref={ref} className={computedClassName} style={style} {...props}>
25
- {children}
26
- </View>
27
- );
28
- });
33
+ return (
34
+ <Root
35
+ ref={ref}
36
+ className={computedClassName}
37
+ style={style}
38
+ context={{ fullBleed }}
39
+ {...props}
40
+ >
41
+ {children}
42
+ </Root>
43
+ );
44
+ },
45
+ );
29
46
 
30
47
  CardRoot.displayName = 'Card';
31
48
 
@@ -56,14 +73,18 @@ CardHeader.displayName = 'Card.Header';
56
73
  // STYLED CONTENT COMPONENT
57
74
  // =============================================================================
58
75
 
59
- export interface CardContentProps extends ViewProps {
76
+ export interface CardContentProps extends ViewProps, CardContentVariantProps {
60
77
  className?: string;
61
78
  children?: ReactNode;
62
79
  }
63
80
 
64
81
  const CardContent = forwardRef<View, CardContentProps>(
65
- ({ className, children, style, ...props }, ref) => {
66
- const computedClassName = cn(cardContentVariants(), className);
82
+ ({ className, children, style, fullBleed, ...props }, ref) => {
83
+ const { fullBleed: fullBleedFromContext } = useCardStyleContext();
84
+ const computedClassName = cn(
85
+ cardContentVariants({ fullBleed: fullBleed ?? fullBleedFromContext }),
86
+ className,
87
+ );
67
88
 
68
89
  return (
69
90
  <View ref={ref} className={computedClassName} style={style} {...props}>
@@ -79,14 +100,18 @@ CardContent.displayName = 'Card.Content';
79
100
  // STYLED FOOTER COMPONENT
80
101
  // =============================================================================
81
102
 
82
- export interface CardFooterProps extends ViewProps {
103
+ export interface CardFooterProps extends ViewProps, CardFooterVariantProps {
83
104
  className?: string;
84
105
  children?: ReactNode;
85
106
  }
86
107
 
87
108
  const CardFooter = forwardRef<View, CardFooterProps>(
88
- ({ className, children, style, ...props }, ref) => {
89
- const computedClassName = cn(cardFooterVariants(), className);
109
+ ({ className, children, style, fullBleed, ...props }, ref) => {
110
+ const { fullBleed: fullBleedFromContext } = useCardStyleContext();
111
+ const computedClassName = cn(
112
+ cardFooterVariants({ fullBleed: fullBleed ?? fullBleedFromContext }),
113
+ className,
114
+ );
90
115
 
91
116
  return (
92
117
  <View ref={ref} className={computedClassName} style={style} {...props}>
@@ -1,20 +1,31 @@
1
- import { cva } from 'class-variance-authority';
1
+ import { cva, VariantProps } from 'class-variance-authority';
2
2
 
3
3
  // ── Root ────────────────────────────────────────────────────
4
4
 
5
- export const cardRootVariants = cva([
6
- 'bg-surface-primary',
7
- 'border border-stroke-secondary',
8
- 'rounded-[var(--border-radius-default)]',
9
- 'overflow-hidden',
10
- ]);
5
+ export const cardRootVariants = cva(
6
+ [
7
+ 'bg-surface-primary',
8
+ 'border border-stroke-secondary',
9
+ 'rounded-[var(--border-radius-default)]',
10
+ 'overflow-hidden',
11
+ ],
12
+ {
13
+ variants: {
14
+ fullBleed: {
15
+ true: '',
16
+ false: '',
17
+ },
18
+ },
19
+ },
20
+ );
11
21
 
12
22
  // ── Header ──────────────────────────────────────────────────
13
23
 
14
24
  export const cardHeaderVariants = cva([
15
- 'flex-row items-center justify-between p-4',
16
25
  'border-t-8 border-t-surface-brand-strong',
17
- 'border-b border-b-solid border-b-stroke-secondary',
26
+ 'border-b border-solid border-b-stroke-secondary',
27
+ 'flex-row items-center justify-between gap-0.5',
28
+ 'px-5 py-3',
18
29
  ]);
19
30
 
20
31
  // ── Title ───────────────────────────────────────────────────
@@ -23,12 +34,28 @@ export const cardTitleVariants = cva(['flex-1']);
23
34
 
24
35
  // ── Content ─────────────────────────────────────────────────
25
36
 
26
- export const cardContentVariants = cva(['text-content-primary', 'p-4']);
37
+ export const cardContentVariants = cva(['text-content-primary', 'p-5'], {
38
+ variants: {
39
+ fullBleed: {
40
+ true: 'p-0',
41
+ },
42
+ },
43
+ });
27
44
 
28
45
  // ── Footer ──────────────────────────────────────────────────
29
46
 
30
- export const cardFooterVariants = cva([
31
- 'p-4 border-t',
32
- 'border-stroke-secondary',
33
- 'flex-row items-center gap-2',
34
- ]);
47
+ export const cardFooterVariants = cva(['flex-col items-stretch gap-2'], {
48
+ variants: {
49
+ fullBleed: {
50
+ true: 'p-5',
51
+ false: 'px-5 pb-5 pt-0',
52
+ },
53
+ },
54
+ defaultVariants: {
55
+ fullBleed: false,
56
+ },
57
+ });
58
+
59
+ export type CardVariantProps = VariantProps<typeof cardRootVariants>;
60
+ export type CardContentVariantProps = VariantProps<typeof cardContentVariants>;
61
+ export type CardFooterVariantProps = VariantProps<typeof cardFooterVariants>;
@@ -2,10 +2,9 @@ import { forwardRef, type ReactNode } from 'react';
2
2
  import { Pressable, Text, type TextProps, View, type ViewProps } from 'react-native';
3
3
  import { Check, CheckIndeterminateSmall } from '@cdx-ui/icons';
4
4
  import { createCheckbox, type ICheckboxProps } from '@cdx-ui/primitives';
5
- import { cn, useStyleContext, withStyleContext } from '@cdx-ui/utils';
5
+ import { cn } from '@cdx-ui/utils';
6
6
  import { Icon, IconProps } from '../Icon';
7
7
  import {
8
- type CheckboxVariantProps,
9
8
  checkboxGroupVariants,
10
9
  checkboxIconVariants,
11
10
  checkboxIndicatorVariants,
@@ -13,14 +12,8 @@ import {
13
12
  checkboxRootVariants,
14
13
  } from './styles';
15
14
 
16
- const SCOPE = 'CHECKBOX';
17
-
18
- const Root = withStyleContext(Pressable, SCOPE);
19
-
20
- const useCheckboxStyleContext = () => useStyleContext(SCOPE) as CheckboxVariantProps;
21
-
22
15
  const CheckboxPrimitive = createCheckbox({
23
- Root,
16
+ Root: Pressable,
24
17
  Indicator: View,
25
18
  Icon: View,
26
19
  Label: Text,
@@ -31,14 +24,14 @@ const CheckboxPrimitive = createCheckbox({
31
24
  // CHECKBOX ROOT
32
25
  // =============================================================================
33
26
 
34
- export interface CheckboxProps extends ICheckboxProps, CheckboxVariantProps {
27
+ export interface CheckboxProps extends ICheckboxProps {
35
28
  className?: string;
36
29
  children?: ReactNode;
37
30
  }
38
31
 
39
32
  const CheckboxRoot = forwardRef<View, CheckboxProps>(
40
- ({ size = 'default', className, isIndeterminate, children, style, ...props }, ref) => {
41
- const computedClassName = cn(checkboxRootVariants({ size }), className);
33
+ ({ className, isIndeterminate, children, style, ...props }, ref) => {
34
+ const computedClassName = cn(checkboxRootVariants(), className);
42
35
 
43
36
  return (
44
37
  <CheckboxPrimitive
@@ -46,7 +39,6 @@ const CheckboxRoot = forwardRef<View, CheckboxProps>(
46
39
  className={computedClassName}
47
40
  isIndeterminate={isIndeterminate}
48
41
  style={style}
49
- context={{ size }}
50
42
  {...props}
51
43
  >
52
44
  <CheckboxIndicator>
@@ -73,8 +65,7 @@ export interface CheckboxIndicatorProps extends ViewProps {
73
65
 
74
66
  const CheckboxIndicator = forwardRef<View, CheckboxIndicatorProps>(
75
67
  ({ className, children, style, ...props }, ref) => {
76
- const { size } = useCheckboxStyleContext();
77
- const computedClassName = cn(checkboxIndicatorVariants({ size }), className);
68
+ const computedClassName = cn(checkboxIndicatorVariants(), className);
78
69
 
79
70
  return (
80
71
  <CheckboxPrimitive.Indicator
@@ -98,8 +89,7 @@ CheckboxIndicator.displayName = 'Checkbox.Indicator';
98
89
  export interface CheckboxIconProps extends Omit<IconProps, 'children'> {}
99
90
 
100
91
  const CheckboxIcon = ({ className, style, ...props }: CheckboxIconProps) => {
101
- const { size } = useCheckboxStyleContext();
102
- const computedClassName = cn(checkboxIconVariants({ size }), className);
92
+ const computedClassName = cn(checkboxIconVariants(), className);
103
93
 
104
94
  return <Icon className={computedClassName} style={style} {...props} />;
105
95
  };
@@ -117,8 +107,7 @@ export interface CheckboxLabelProps extends TextProps {
117
107
 
118
108
  const CheckboxLabel = forwardRef<Text, CheckboxLabelProps>(
119
109
  ({ className, children, style, ...props }, ref) => {
120
- const { size } = useCheckboxStyleContext();
121
- const computedClassName = cn(checkboxLabelVariants({ size }), className);
110
+ const computedClassName = cn(checkboxLabelVariants(), className);
122
111
 
123
112
  return (
124
113
  <CheckboxPrimitive.Label