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

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 (351) 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 +12 -1
  8. package/lib/commonjs/components/Button/index.js.map +1 -1
  9. package/lib/commonjs/components/Button/styles.js +26 -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/metro/withCdxMetroConfig.js +7 -18
  105. package/lib/commonjs/metro/withCdxMetroConfig.js.map +1 -1
  106. package/lib/commonjs/metro/withForgeMetroConfig.js +24 -0
  107. package/lib/commonjs/metro/withForgeMetroConfig.js.map +1 -0
  108. package/lib/commonjs/styles/primitives.js +43 -6
  109. package/lib/commonjs/styles/primitives.js.map +1 -1
  110. package/lib/module/components/AlertDialog/index.js +1 -1
  111. package/lib/module/components/AlertDialog/index.js.map +1 -1
  112. package/lib/module/components/Avatar/index.js +1 -1
  113. package/lib/module/components/Avatar/styles.js +36 -29
  114. package/lib/module/components/Avatar/styles.js.map +1 -1
  115. package/lib/module/components/Button/index.js +13 -2
  116. package/lib/module/components/Button/index.js.map +1 -1
  117. package/lib/module/components/Button/styles.js +26 -26
  118. package/lib/module/components/Button/styles.js.map +1 -1
  119. package/lib/module/components/CLAUDE.md +90 -0
  120. package/lib/module/components/Card/index.js +23 -4
  121. package/lib/module/components/Card/index.js.map +1 -1
  122. package/lib/module/components/Card/styles.js +27 -4
  123. package/lib/module/components/Card/styles.js.map +1 -1
  124. package/lib/module/components/Checkbox/index.js +6 -30
  125. package/lib/module/components/Checkbox/index.js.map +1 -1
  126. package/lib/module/components/Checkbox/styles.js +40 -48
  127. package/lib/module/components/Checkbox/styles.js.map +1 -1
  128. package/lib/module/components/Chip/index.js +82 -13
  129. package/lib/module/components/Chip/index.js.map +1 -1
  130. package/lib/module/components/Chip/styles.js +206 -20
  131. package/lib/module/components/Chip/styles.js.map +1 -1
  132. package/lib/module/components/Field/index.js +9 -3
  133. package/lib/module/components/Field/index.js.map +1 -1
  134. package/lib/module/components/Field/styles.js +4 -4
  135. package/lib/module/components/Field/styles.js.map +1 -1
  136. package/lib/module/components/Heading/styles.js +1 -1
  137. package/lib/module/components/Heading/styles.js.map +1 -1
  138. package/lib/module/components/Icon/index.js +3 -4
  139. package/lib/module/components/Icon/index.js.map +1 -1
  140. package/lib/module/components/IconButton/index.js +6 -1
  141. package/lib/module/components/IconButton/index.js.map +1 -1
  142. package/lib/module/components/IconButton/styles.js +135 -10
  143. package/lib/module/components/IconButton/styles.js.map +1 -1
  144. package/lib/module/components/Input/styles.js +7 -6
  145. package/lib/module/components/Input/styles.js.map +1 -1
  146. package/lib/module/components/Link/index.js +25 -6
  147. package/lib/module/components/Link/index.js.map +1 -1
  148. package/lib/module/components/Link/styles.js +55 -6
  149. package/lib/module/components/Link/styles.js.map +1 -1
  150. package/lib/module/components/ListItem/styles.js +10 -10
  151. package/lib/module/components/ListItem/styles.js.map +1 -1
  152. package/lib/module/components/ProgressSegmented/index.js +25 -11
  153. package/lib/module/components/ProgressSegmented/index.js.map +1 -1
  154. package/lib/module/components/Radio/index.js +164 -0
  155. package/lib/module/components/Radio/index.js.map +1 -0
  156. package/lib/module/components/Radio/styles.js +27 -0
  157. package/lib/module/components/Radio/styles.js.map +1 -0
  158. package/lib/module/components/ScopedTheme/index.js +19 -0
  159. package/lib/module/components/ScopedTheme/index.js.map +1 -0
  160. package/lib/module/components/Select/SelectTriggerHost.web.js +4 -0
  161. package/lib/module/components/Select/SelectTriggerHost.web.js.map +1 -1
  162. package/lib/module/components/Select/index.js +10 -4
  163. package/lib/module/components/Select/index.js.map +1 -1
  164. package/lib/module/components/Select/styles.js +18 -21
  165. package/lib/module/components/Select/styles.js.map +1 -1
  166. package/lib/module/components/Text/styles.js +2 -2
  167. package/lib/module/components/Text/styles.js.map +1 -1
  168. package/lib/module/components/Tile/index.js +243 -0
  169. package/lib/module/components/Tile/index.js.map +1 -0
  170. package/lib/module/components/Tile/styles.js +48 -0
  171. package/lib/module/components/Tile/styles.js.map +1 -0
  172. package/lib/module/components/index.js +3 -0
  173. package/lib/module/components/index.js.map +1 -1
  174. package/lib/module/figma/Avatar.figma.js +48 -0
  175. package/lib/module/figma/Avatar.figma.js.map +1 -0
  176. package/lib/module/figma/Button.figma.js +28 -15
  177. package/lib/module/figma/Button.figma.js.map +1 -1
  178. package/lib/module/figma/CLAUDE.md +30 -0
  179. package/lib/module/figma/Card.Header.figma.js +22 -0
  180. package/lib/module/figma/Card.Header.figma.js.map +1 -0
  181. package/lib/module/figma/Card.figma.js +36 -0
  182. package/lib/module/figma/Card.figma.js.map +1 -0
  183. package/lib/module/figma/Checkbox.figma.js +49 -0
  184. package/lib/module/figma/Checkbox.figma.js.map +1 -0
  185. package/lib/module/figma/Chip.figma.js +62 -0
  186. package/lib/module/figma/Chip.figma.js.map +1 -0
  187. package/lib/module/figma/Field.Input.figma.js +51 -0
  188. package/lib/module/figma/Field.Input.figma.js.map +1 -0
  189. package/lib/module/figma/Field.Select.figma.js +51 -0
  190. package/lib/module/figma/Field.Select.figma.js.map +1 -0
  191. package/lib/module/figma/Heading.figma.js +24 -0
  192. package/lib/module/figma/Heading.figma.js.map +1 -0
  193. package/lib/module/figma/Icon.figma.js +14 -0
  194. package/lib/module/figma/Icon.figma.js.map +1 -0
  195. package/lib/module/figma/IconButton.figma.js +41 -0
  196. package/lib/module/figma/IconButton.figma.js.map +1 -0
  197. package/lib/module/figma/Input.figma.js +46 -0
  198. package/lib/module/figma/Input.figma.js.map +1 -0
  199. package/lib/module/figma/Link.figma.js +24 -0
  200. package/lib/module/figma/Link.figma.js.map +1 -0
  201. package/lib/module/figma/ProgressSegmented.figma.js +33 -0
  202. package/lib/module/figma/ProgressSegmented.figma.js.map +1 -0
  203. package/lib/module/figma/Radio.figma.js +34 -0
  204. package/lib/module/figma/Radio.figma.js.map +1 -0
  205. package/lib/module/figma/Select.figma.js +47 -0
  206. package/lib/module/figma/Select.figma.js.map +1 -0
  207. package/lib/module/figma/Text.figma.js +23 -0
  208. package/lib/module/figma/Text.figma.js.map +1 -0
  209. package/lib/module/figma/icons.figma.batch.js +22 -0
  210. package/lib/module/figma/icons.figma.batch.js.map +1 -0
  211. package/lib/module/figma/icons.figma.batch.json +17705 -0
  212. package/lib/module/metro/withCdxMetroConfig.js +3 -17
  213. package/lib/module/metro/withCdxMetroConfig.js.map +1 -1
  214. package/lib/module/metro/withForgeMetroConfig.js +20 -0
  215. package/lib/module/metro/withForgeMetroConfig.js.map +1 -0
  216. package/lib/module/styles/primitives.js +43 -6
  217. package/lib/module/styles/primitives.js.map +1 -1
  218. package/lib/typescript/components/Avatar/styles.d.ts +4 -4
  219. package/lib/typescript/components/Avatar/styles.d.ts.map +1 -1
  220. package/lib/typescript/components/Button/index.d.ts +13 -1
  221. package/lib/typescript/components/Button/index.d.ts.map +1 -1
  222. package/lib/typescript/components/Button/styles.d.ts +3 -3
  223. package/lib/typescript/components/Card/index.d.ts +4 -3
  224. package/lib/typescript/components/Card/index.d.ts.map +1 -1
  225. package/lib/typescript/components/Card/styles.d.ts +13 -3
  226. package/lib/typescript/components/Card/styles.d.ts.map +1 -1
  227. package/lib/typescript/components/Checkbox/index.d.ts +1 -2
  228. package/lib/typescript/components/Checkbox/index.d.ts.map +1 -1
  229. package/lib/typescript/components/Checkbox/styles.d.ts +4 -14
  230. package/lib/typescript/components/Checkbox/styles.d.ts.map +1 -1
  231. package/lib/typescript/components/Chip/index.d.ts +19 -6
  232. package/lib/typescript/components/Chip/index.d.ts.map +1 -1
  233. package/lib/typescript/components/Chip/styles.d.ts +13 -4
  234. package/lib/typescript/components/Chip/styles.d.ts.map +1 -1
  235. package/lib/typescript/components/Field/FieldLabel.web.d.ts +2 -2
  236. package/lib/typescript/components/Field/FieldLabel.web.d.ts.map +1 -1
  237. package/lib/typescript/components/Field/index.d.ts.map +1 -1
  238. package/lib/typescript/components/Field/styles.d.ts.map +1 -1
  239. package/lib/typescript/components/Heading/styles.d.ts +1 -1
  240. package/lib/typescript/components/Icon/index.d.ts +5 -5
  241. package/lib/typescript/components/Icon/index.d.ts.map +1 -1
  242. package/lib/typescript/components/IconButton/index.d.ts +3 -3
  243. package/lib/typescript/components/IconButton/index.d.ts.map +1 -1
  244. package/lib/typescript/components/IconButton/styles.d.ts +6 -2
  245. package/lib/typescript/components/IconButton/styles.d.ts.map +1 -1
  246. package/lib/typescript/components/Input/styles.d.ts.map +1 -1
  247. package/lib/typescript/components/Link/index.d.ts +2 -2
  248. package/lib/typescript/components/Link/index.d.ts.map +1 -1
  249. package/lib/typescript/components/Link/styles.d.ts +9 -2
  250. package/lib/typescript/components/Link/styles.d.ts.map +1 -1
  251. package/lib/typescript/components/ListItem/styles.d.ts.map +1 -1
  252. package/lib/typescript/components/ProgressSegmented/index.d.ts +14 -3
  253. package/lib/typescript/components/ProgressSegmented/index.d.ts.map +1 -1
  254. package/lib/typescript/components/Radio/index.d.ts +40 -0
  255. package/lib/typescript/components/Radio/index.d.ts.map +1 -0
  256. package/lib/typescript/components/Radio/styles.d.ts +8 -0
  257. package/lib/typescript/components/Radio/styles.d.ts.map +1 -0
  258. package/lib/typescript/components/ScopedTheme/index.d.ts +16 -0
  259. package/lib/typescript/components/ScopedTheme/index.d.ts.map +1 -0
  260. package/lib/typescript/components/Select/SelectTriggerHost.web.d.ts +3 -0
  261. package/lib/typescript/components/Select/SelectTriggerHost.web.d.ts.map +1 -1
  262. package/lib/typescript/components/Select/index.d.ts +1 -1
  263. package/lib/typescript/components/Select/index.d.ts.map +1 -1
  264. package/lib/typescript/components/Select/styles.d.ts.map +1 -1
  265. package/lib/typescript/components/Stack/styles.d.ts +2 -2
  266. package/lib/typescript/components/Text/styles.d.ts +1 -1
  267. package/lib/typescript/components/Tile/index.d.ts +70 -0
  268. package/lib/typescript/components/Tile/index.d.ts.map +1 -0
  269. package/lib/typescript/components/Tile/styles.d.ts +18 -0
  270. package/lib/typescript/components/Tile/styles.d.ts.map +1 -0
  271. package/lib/typescript/components/index.d.ts +3 -0
  272. package/lib/typescript/components/index.d.ts.map +1 -1
  273. package/lib/typescript/figma/Avatar.figma.d.ts +8 -0
  274. package/lib/typescript/figma/Avatar.figma.d.ts.map +1 -0
  275. package/lib/typescript/figma/Button.figma.d.ts.map +1 -1
  276. package/lib/typescript/figma/Card.Header.figma.d.ts +8 -0
  277. package/lib/typescript/figma/Card.Header.figma.d.ts.map +1 -0
  278. package/lib/typescript/figma/Card.figma.d.ts +8 -0
  279. package/lib/typescript/figma/Card.figma.d.ts.map +1 -0
  280. package/lib/typescript/figma/Checkbox.figma.d.ts +8 -0
  281. package/lib/typescript/figma/Checkbox.figma.d.ts.map +1 -0
  282. package/lib/typescript/figma/Chip.figma.d.ts +8 -0
  283. package/lib/typescript/figma/Chip.figma.d.ts.map +1 -0
  284. package/lib/typescript/figma/Field.Input.figma.d.ts +8 -0
  285. package/lib/typescript/figma/Field.Input.figma.d.ts.map +1 -0
  286. package/lib/typescript/figma/Field.Select.figma.d.ts +8 -0
  287. package/lib/typescript/figma/Field.Select.figma.d.ts.map +1 -0
  288. package/lib/typescript/figma/Heading.figma.d.ts +8 -0
  289. package/lib/typescript/figma/Heading.figma.d.ts.map +1 -0
  290. package/lib/typescript/figma/Icon.figma.d.ts +8 -0
  291. package/lib/typescript/figma/Icon.figma.d.ts.map +1 -0
  292. package/lib/typescript/figma/IconButton.figma.d.ts +8 -0
  293. package/lib/typescript/figma/IconButton.figma.d.ts.map +1 -0
  294. package/lib/typescript/figma/Input.figma.d.ts +8 -0
  295. package/lib/typescript/figma/Input.figma.d.ts.map +1 -0
  296. package/lib/typescript/figma/Link.figma.d.ts +8 -0
  297. package/lib/typescript/figma/Link.figma.d.ts.map +1 -0
  298. package/lib/typescript/figma/ProgressSegmented.figma.d.ts +8 -0
  299. package/lib/typescript/figma/ProgressSegmented.figma.d.ts.map +1 -0
  300. package/lib/typescript/figma/Radio.figma.d.ts +8 -0
  301. package/lib/typescript/figma/Radio.figma.d.ts.map +1 -0
  302. package/lib/typescript/figma/Select.figma.d.ts +8 -0
  303. package/lib/typescript/figma/Select.figma.d.ts.map +1 -0
  304. package/lib/typescript/figma/Text.figma.d.ts +8 -0
  305. package/lib/typescript/figma/Text.figma.d.ts.map +1 -0
  306. package/lib/typescript/figma/icons.figma.batch.d.ts +14 -0
  307. package/lib/typescript/figma/icons.figma.batch.d.ts.map +1 -0
  308. package/lib/typescript/metro/withCdxMetroConfig.d.ts +4 -18
  309. package/lib/typescript/metro/withCdxMetroConfig.d.ts.map +1 -1
  310. package/lib/typescript/metro/withForgeMetroConfig.d.ts +19 -0
  311. package/lib/typescript/metro/withForgeMetroConfig.d.ts.map +1 -0
  312. package/lib/typescript/styles/primitives.d.ts +38 -0
  313. package/lib/typescript/styles/primitives.d.ts.map +1 -1
  314. package/package.json +8 -8
  315. package/src/components/AlertDialog/index.tsx +1 -1
  316. package/src/components/Avatar/index.tsx +1 -1
  317. package/src/components/Avatar/styles.ts +49 -34
  318. package/src/components/Button/index.tsx +37 -3
  319. package/src/components/Button/styles.ts +27 -27
  320. package/src/components/CLAUDE.md +90 -0
  321. package/src/components/Card/index.tsx +41 -16
  322. package/src/components/Card/styles.ts +42 -15
  323. package/src/components/Checkbox/index.tsx +8 -19
  324. package/src/components/Checkbox/styles.ts +82 -86
  325. package/src/components/Chip/index.tsx +104 -27
  326. package/src/components/Chip/styles.ts +232 -18
  327. package/src/components/Field/FieldLabel.web.tsx +1 -1
  328. package/src/components/Field/index.tsx +10 -3
  329. package/src/components/Field/styles.ts +5 -4
  330. package/src/components/Heading/styles.ts +1 -1
  331. package/src/components/Icon/index.tsx +6 -7
  332. package/src/components/IconButton/index.tsx +7 -6
  333. package/src/components/IconButton/styles.ts +136 -10
  334. package/src/components/Input/styles.ts +15 -9
  335. package/src/components/Link/index.tsx +22 -9
  336. package/src/components/Link/styles.ts +49 -9
  337. package/src/components/ListItem/styles.ts +12 -19
  338. package/src/components/ProgressSegmented/index.tsx +50 -14
  339. package/src/components/Radio/index.tsx +192 -0
  340. package/src/components/Radio/styles.ts +59 -0
  341. package/src/components/ScopedTheme/index.tsx +17 -0
  342. package/src/components/Select/SelectTriggerHost.web.tsx +8 -1
  343. package/src/components/Select/index.tsx +9 -4
  344. package/src/components/Select/styles.ts +49 -51
  345. package/src/components/Text/styles.ts +2 -2
  346. package/src/components/Tile/index.tsx +296 -0
  347. package/src/components/Tile/styles.ts +82 -0
  348. package/src/components/index.ts +3 -0
  349. package/src/metro/withCdxMetroConfig.ts +4 -29
  350. package/src/metro/withForgeMetroConfig.ts +29 -0
  351. package/src/styles/primitives.ts +43 -6
@@ -1,40 +1,92 @@
1
- import { forwardRef, type ReactNode } from 'react';
2
- import { View, Text as RNText, type ViewProps, type TextProps } from 'react-native';
3
- import { cn, useStyleContext, withStyleContext } from '@cdx-ui/utils';
1
+ import { forwardRef, useMemo, type ReactNode } from 'react';
2
+ import { Pressable, Text as RNText, View, type TextProps } from 'react-native';
3
+ import { createChip, type IChipProps } from '@cdx-ui/primitives';
4
+ import {
5
+ cn,
6
+ ParentContext,
7
+ useParentContext,
8
+ useStyleContext,
9
+ withStyleContext,
10
+ type WithStyleContextProps,
11
+ } from '@cdx-ui/utils';
12
+ import { Avatar, type AvatarProps } from '../Avatar';
4
13
  import { Icon, type IconProps } from '../Icon';
5
- import { chipRootVariants, chipLabelVariants, chipIconVariants, ChipVariants } from './styles';
14
+ import {
15
+ chipAvatarVariants,
16
+ chipIconVariants,
17
+ chipLabelVariants,
18
+ chipRootVariants,
19
+ type ChipVariantProps,
20
+ } from './styles';
6
21
 
7
22
  const SCOPE = 'CHIP';
8
23
 
9
- const Root = withStyleContext(View, SCOPE);
24
+ const RootView = withStyleContext(View, SCOPE);
25
+ const RootPressable = withStyleContext(Pressable, SCOPE);
10
26
 
11
- const useChipStyleContext = () => useStyleContext(SCOPE) as ChipVariants;
27
+ const ChipPrimitive = createChip({
28
+ View: RootView,
29
+ Pressable: RootPressable,
30
+ });
31
+
32
+ const useChipStyleContext = () => useStyleContext(SCOPE) as ChipVariantProps;
12
33
 
13
34
  // =============================================================================
14
- // STYLED ROOT COMPONENT
35
+ // ROOT
15
36
  // =============================================================================
16
37
 
17
- export interface ChipProps extends ViewProps, ChipVariants {
18
- children?: ReactNode;
38
+ export interface ChipProps extends IChipProps, ChipVariantProps, WithStyleContextProps {
19
39
  className?: string;
40
+ children?: ReactNode;
20
41
  }
21
42
 
22
43
  const ChipRoot = forwardRef<View, ChipProps>(
23
- ({ children, color = 'default', className, style, ...props }, ref) => {
24
- const computedClassName = cn(chipRootVariants({ color }), className);
44
+ (
45
+ {
46
+ children,
47
+ variant = 'tint',
48
+ size = 'default',
49
+ color = 'default',
50
+ className,
51
+ style,
52
+ asChild,
53
+ ...props
54
+ },
55
+ ref,
56
+ ) => {
57
+ const parentContextValues = useParentContext();
58
+ const styleContextValues = useMemo(
59
+ () => ({ ...parentContextValues, [SCOPE]: { variant, size, color } }),
60
+ [parentContextValues, variant, size, color],
61
+ );
25
62
 
26
- return (
27
- <Root ref={ref} className={computedClassName} style={style} context={{ color }} {...props}>
63
+ const computedClassName = cn(chipRootVariants({ variant, size, color }), className);
64
+
65
+ const root = (
66
+ <ChipPrimitive
67
+ ref={ref as never}
68
+ asChild={asChild}
69
+ className={computedClassName}
70
+ context={{ variant, size, color }}
71
+ style={style}
72
+ {...props}
73
+ >
28
74
  {children}
29
- </Root>
75
+ </ChipPrimitive>
30
76
  );
77
+
78
+ if (asChild) {
79
+ return <ParentContext.Provider value={styleContextValues}>{root}</ParentContext.Provider>;
80
+ }
81
+
82
+ return root;
31
83
  },
32
84
  );
33
85
 
34
86
  ChipRoot.displayName = 'Chip';
35
87
 
36
88
  // =============================================================================
37
- // STYLED LABEL COMPONENT
89
+ // LABEL
38
90
  // =============================================================================
39
91
 
40
92
  export interface ChipLabelProps extends TextProps {
@@ -44,9 +96,8 @@ export interface ChipLabelProps extends TextProps {
44
96
 
45
97
  const ChipLabel = forwardRef<RNText, ChipLabelProps>(
46
98
  ({ className, children, style, ...props }, ref) => {
47
- const { color } = useChipStyleContext();
48
-
49
- const computedClassName = cn(chipLabelVariants({ color }), className);
99
+ const { size, variant, color } = useChipStyleContext();
100
+ const computedClassName = cn(chipLabelVariants({ size, variant, color }), className);
50
101
 
51
102
  return (
52
103
  <RNText ref={ref} className={computedClassName} style={style} {...props}>
@@ -59,33 +110,59 @@ const ChipLabel = forwardRef<RNText, ChipLabelProps>(
59
110
  ChipLabel.displayName = 'Chip.Label';
60
111
 
61
112
  // =============================================================================
62
- // STYLED ICON COMPONENT
113
+ // ICON
63
114
  // =============================================================================
64
115
 
65
- export interface ChipIconProps extends Omit<IconProps, 'children'> {}
66
-
67
- const ChipIcon = ({ className, style, as, ...props }: ChipIconProps) => {
68
- const { color } = useChipStyleContext();
69
-
70
- const computedClassName = cn(chipIconVariants({ color }), className);
116
+ export interface ChipIconProps extends Omit<IconProps, 'children'> {
117
+ /** Leading (default) or trailing slot — applies the correct negative margin offset. */
118
+ slot?: 'leading' | 'trailing';
119
+ className?: string;
120
+ }
71
121
 
122
+ const ChipIcon = ({ className, style, as, slot, ...props }: ChipIconProps) => {
123
+ const { size, color } = useChipStyleContext();
124
+ const computedClassName = cn(chipIconVariants({ size, color, slot }), className);
72
125
  return <Icon as={as} className={computedClassName} style={style} {...props} />;
73
126
  };
74
127
 
75
128
  ChipIcon.displayName = 'Chip.Icon';
76
129
 
77
130
  // =============================================================================
78
- // COMPOUND COMPONENT EXPORT
131
+ // AVATAR
132
+ // =============================================================================
133
+
134
+ export interface ChipAvatarProps extends Omit<AvatarProps, 'size'> {}
135
+
136
+ const ChipAvatar = ({ className, style, children, ...props }: ChipAvatarProps) => {
137
+ const { size } = useChipStyleContext();
138
+ // chipAvatarVariants sets w/h and the leading slot negative margin.
139
+ // Avatar renders with size="sm" (its smallest named size) but chipAvatarVariants
140
+ // overrides the w/h via tailwind-merge so the chip size wins.
141
+ const computedClassName = cn(chipAvatarVariants({ size }), className);
142
+
143
+ return (
144
+ <Avatar size="sm" className={computedClassName} style={style} {...props}>
145
+ {children}
146
+ </Avatar>
147
+ );
148
+ };
149
+
150
+ ChipAvatar.displayName = 'Chip.Avatar';
151
+
152
+ // =============================================================================
153
+ // COMPOUND EXPORT
79
154
  // =============================================================================
80
155
 
81
156
  type ChipCompoundComponent = typeof ChipRoot & {
82
157
  Label: typeof ChipLabel;
83
158
  Icon: typeof ChipIcon;
159
+ Avatar: typeof ChipAvatar;
84
160
  };
85
161
 
86
162
  export const Chip = Object.assign(ChipRoot, {
87
163
  Label: ChipLabel,
88
164
  Icon: ChipIcon,
165
+ Avatar: ChipAvatar,
89
166
  }) as ChipCompoundComponent;
90
167
 
91
- export { type ChipVariants } from './styles';
168
+ export { type ChipVariantProps } from './styles';
@@ -1,52 +1,266 @@
1
+ import { Platform } from 'react-native';
1
2
  import { cva, type VariantProps } from 'class-variance-authority';
3
+ import { DISABLED_CURSOR, TRANSITION_COLORS } from '../../styles/primitives';
4
+
5
+ const chipInteractiveRoot = [
6
+ TRANSITION_COLORS,
7
+ 'data-[disabled=true]:opacity-[var(--opacity-disabled)]',
8
+ DISABLED_CURSOR,
9
+ Platform.select({
10
+ web: [
11
+ 'outline-none',
12
+ 'web:data-[focus-visible=true]:ring-2 web:data-[focus-visible=true]:ring-stroke-focus web:data-[focus-visible=true]:ring-offset-2',
13
+ ].join(' '),
14
+ default: '',
15
+ }),
16
+ ];
2
17
 
3
18
  export const chipRootVariants = cva(
4
- ['flex-row items-center justify-center rounded-full px-2 py-1 gap-1.5 self-start'],
19
+ ['flex-row items-center justify-center self-start overflow-hidden', ...chipInteractiveRoot],
5
20
  {
6
21
  variants: {
22
+ variant: {
23
+ tint: [],
24
+ outline: ['bg-transparent', 'border'],
25
+ },
7
26
  color: {
8
- default: 'bg-surface-neutral-tint',
9
- error: 'bg-surface-danger-tint',
10
- info: 'bg-surface-info-tint',
11
- success: 'bg-surface-success-tint',
12
- warning: 'bg-surface-warning-tint',
27
+ default: [],
28
+ action: [],
29
+ danger: [],
30
+ warning: [],
31
+ success: [],
32
+ info: [],
33
+ },
34
+ size: {
35
+ default: 'h-8 max-h-8 min-h-8 gap-1.5 px-3 rounded-lg',
36
+ small: 'h-6 max-h-6 min-h-6 gap-1 px-1.5 rounded-md',
37
+ xsmall: 'h-4 max-h-4 min-h-4 gap-0.5 px-1 rounded-sm',
13
38
  },
14
39
  },
40
+ compoundVariants: [
41
+ // ── tint × color ────────────────────────────────────────────────────
42
+ {
43
+ variant: 'tint',
44
+ color: 'default',
45
+ className: [
46
+ 'bg-surface-neutral-tint',
47
+ Platform.select({
48
+ default: 'data-[active=true]:bg-surface-neutral-tint-active',
49
+ web: 'data-[hover=true]:bg-surface-neutral-tint-hover data-[active=true]:data-[hover=true]:bg-surface-neutral-tint-active',
50
+ }),
51
+ ],
52
+ },
53
+ {
54
+ variant: 'tint',
55
+ color: 'action',
56
+ className: [
57
+ 'bg-surface-action-tint',
58
+ Platform.select({
59
+ default: 'data-[active=true]:bg-surface-action-tint-active',
60
+ web: 'data-[hover=true]:bg-surface-action-tint-hover data-[active=true]:data-[hover=true]:bg-surface-action-tint-active',
61
+ }),
62
+ ],
63
+ },
64
+ {
65
+ variant: 'tint',
66
+ color: 'danger',
67
+ className: [
68
+ 'bg-surface-danger-tint',
69
+ Platform.select({
70
+ default: 'data-[active=true]:bg-surface-danger-tint-active',
71
+ web: 'data-[hover=true]:bg-surface-danger-tint-hover data-[active=true]:data-[hover=true]:bg-surface-danger-tint-active',
72
+ }),
73
+ ],
74
+ },
75
+ {
76
+ variant: 'tint',
77
+ color: 'warning',
78
+ className: [
79
+ 'bg-surface-warning-tint',
80
+ Platform.select({
81
+ default: 'data-[active=true]:bg-surface-warning-tint-active',
82
+ web: 'data-[hover=true]:bg-surface-warning-tint-hover data-[active=true]:data-[hover=true]:bg-surface-warning-tint-active',
83
+ }),
84
+ ],
85
+ },
86
+ {
87
+ variant: 'tint',
88
+ color: 'success',
89
+ className: [
90
+ 'bg-surface-success-tint',
91
+ Platform.select({
92
+ default: 'data-[active=true]:bg-surface-success-tint-active',
93
+ web: 'data-[hover=true]:bg-surface-success-tint-hover data-[active=true]:data-[hover=true]:bg-surface-success-tint-active',
94
+ }),
95
+ ],
96
+ },
97
+ {
98
+ variant: 'tint',
99
+ color: 'info',
100
+ className: [
101
+ 'bg-surface-info-tint',
102
+ Platform.select({
103
+ default: 'data-[active=true]:bg-surface-info-tint-active',
104
+ web: 'data-[hover=true]:bg-surface-info-tint-hover data-[active=true]:data-[hover=true]:bg-surface-info-tint-active',
105
+ }),
106
+ ],
107
+ },
108
+
109
+ // ── outline × color ───────────────────────────────────────────────────
110
+ {
111
+ variant: 'outline',
112
+ color: 'default',
113
+ className: [
114
+ 'border-stroke-primary',
115
+ Platform.select({
116
+ default: 'data-[active=true]:bg-surface-neutral-tint',
117
+ web: 'data-[hover=true]:bg-surface-neutral-tint-hover data-[active=true]:data-[hover=true]:bg-surface-neutral-tint-active',
118
+ }),
119
+ ],
120
+ },
121
+ {
122
+ variant: 'outline',
123
+ color: 'action',
124
+ className: [
125
+ 'border-stroke-action',
126
+ Platform.select({
127
+ default: 'data-[active=true]:bg-surface-action-tint',
128
+ web: 'data-[hover=true]:bg-surface-action-tint-hover data-[active=true]:data-[hover=true]:bg-surface-action-tint-active',
129
+ }),
130
+ ],
131
+ },
132
+ {
133
+ variant: 'outline',
134
+ color: 'danger',
135
+ className: [
136
+ 'border-stroke-danger',
137
+ Platform.select({
138
+ default: 'data-[active=true]:bg-surface-danger-tint',
139
+ web: 'data-[hover=true]:bg-surface-danger-tint-hover data-[active=true]:data-[hover=true]:bg-surface-danger-tint-active',
140
+ }),
141
+ ],
142
+ },
143
+ {
144
+ variant: 'outline',
145
+ color: 'warning',
146
+ className: [
147
+ 'border-stroke-warning',
148
+ Platform.select({
149
+ default: 'data-[active=true]:bg-surface-warning-tint',
150
+ web: 'data-[hover=true]:bg-surface-warning-tint-hover data-[active=true]:data-[hover=true]:bg-surface-warning-tint-active',
151
+ }),
152
+ ],
153
+ },
154
+ {
155
+ variant: 'outline',
156
+ color: 'success',
157
+ className: [
158
+ 'border-stroke-success',
159
+ Platform.select({
160
+ default: 'data-[active=true]:bg-surface-success-tint',
161
+ web: 'data-[hover=true]:bg-surface-success-tint-hover data-[active=true]:data-[hover=true]:bg-surface-success-tint-active',
162
+ }),
163
+ ],
164
+ },
165
+ {
166
+ variant: 'outline',
167
+ color: 'info',
168
+ className: [
169
+ 'border-stroke-info',
170
+ Platform.select({
171
+ default: 'data-[active=true]:bg-surface-info-tint',
172
+ web: 'data-[hover=true]:bg-surface-info-tint-hover data-[active=true]:data-[hover=true]:bg-surface-info-tint-active',
173
+ }),
174
+ ],
175
+ },
176
+ ],
15
177
  defaultVariants: {
178
+ variant: 'tint',
16
179
  color: 'default',
180
+ size: 'default',
17
181
  },
18
182
  },
19
183
  );
20
184
 
21
- // TODO: letter-spacing values (tracking-wider) are not working on web, but the font-mono-medium is.
22
- export const chipLabelVariants = cva(['label-sm font-mono-medium'], {
185
+ export const chipLabelVariants = cva(['font-medium'], {
23
186
  variants: {
187
+ variant: {
188
+ tint: 'text-content-primary',
189
+ outline: 'text-content-primary',
190
+ },
24
191
  color: {
25
- default: 'text-content-primary',
26
- error: 'text-content-primary',
27
- info: 'text-content-primary',
28
- success: 'text-content-primary',
29
- warning: 'text-content-primary',
192
+ default: [],
193
+ action: [],
194
+ danger: [],
195
+ warning: [],
196
+ success: [],
197
+ info: [],
198
+ },
199
+ size: {
200
+ default: 'body-md',
201
+ small: 'body-sm',
202
+ xsmall: 'body-xs',
30
203
  },
31
204
  },
205
+ compoundVariants: [
206
+ { variant: 'outline', color: 'action', className: 'text-content-action' },
207
+ { variant: 'outline', color: 'danger', className: 'text-content-danger' },
208
+ { variant: 'outline', color: 'warning', className: 'text-content-warning' },
209
+ { variant: 'outline', color: 'success', className: 'text-content-success' },
210
+ { variant: 'outline', color: 'info', className: 'text-content-info' },
211
+ ],
32
212
  defaultVariants: {
213
+ variant: 'tint',
33
214
  color: 'default',
215
+ size: 'default',
34
216
  },
35
217
  });
36
218
 
37
- export const chipIconVariants = cva(['size-4'], {
219
+ export const chipIconVariants = cva(['shrink-0'], {
38
220
  variants: {
221
+ size: {
222
+ default: 'size-5',
223
+ small: 'size-4',
224
+ xsmall: 'size-2.5',
225
+ },
39
226
  color: {
40
227
  default: 'text-content-primary',
41
- error: 'text-content-danger',
42
- info: 'text-content-info',
43
- success: 'text-content-success',
228
+ action: 'text-content-action',
229
+ danger: 'text-content-danger',
44
230
  warning: 'text-content-warning',
231
+ success: 'text-content-success',
232
+ info: 'text-content-info',
233
+ },
234
+ slot: {
235
+ leading: '',
236
+ trailing: '',
45
237
  },
46
238
  },
239
+ compoundVariants: [
240
+ { slot: 'leading', size: 'default', className: '-ml-1.5' },
241
+ { slot: 'leading', size: 'small', className: '-ml-0.5' },
242
+ { slot: 'leading', size: 'xsmall', className: '-ml-px' },
243
+ { slot: 'trailing', size: 'default', className: '-mr-1.5' },
244
+ { slot: 'trailing', size: 'small', className: '-mr-0.5' },
245
+ { slot: 'trailing', size: 'xsmall', className: '-mr-px' },
246
+ ],
47
247
  defaultVariants: {
248
+ size: 'default',
48
249
  color: 'default',
49
250
  },
50
251
  });
51
252
 
52
- export type ChipVariants = VariantProps<typeof chipRootVariants>;
253
+ export const chipAvatarVariants = cva(['shrink-0 rounded-full overflow-hidden'], {
254
+ variants: {
255
+ size: {
256
+ default: 'size-5 -ml-1.5',
257
+ small: 'size-4 -ml-0.5',
258
+ xsmall: 'size-2.5 -ml-px',
259
+ },
260
+ },
261
+ defaultVariants: {
262
+ size: 'default',
263
+ },
264
+ });
265
+
266
+ export type ChipVariantProps = VariantProps<typeof chipRootVariants>;
@@ -7,7 +7,7 @@ export type BaseFieldLabelProps = ViewProps & {
7
7
  htmlFor?: string;
8
8
  children?: ReactNode;
9
9
  /** @platform native — ignored on DOM `<label>`; set by form primitive for Uniwind. */
10
- dataSet?: Record<string, string>;
10
+ dataSet?: Record<string, boolean | string>;
11
11
  };
12
12
 
13
13
  /** Real `<label>` so clicking the label focuses the associated control (`htmlFor` → input `id`). */
@@ -8,7 +8,7 @@ import {
8
8
  IFieldLabelProps,
9
9
  type IFieldRootProps,
10
10
  } from '@cdx-ui/primitives';
11
- import { cn } from '@cdx-ui/utils';
11
+ import { cn, useFormControlContext } from '@cdx-ui/utils';
12
12
  import { Icon } from '../Icon';
13
13
  import { BaseFieldLabel } from './FieldLabel';
14
14
  import {
@@ -70,7 +70,14 @@ export interface FieldLabelProps extends IFieldLabelProps, FieldLabelVariantProp
70
70
 
71
71
  const FieldLabel = forwardRef<View, FieldLabelProps>(
72
72
  ({ className, children, style, htmlFor, ...props }, ref) => {
73
- const labelClassName = cn(fieldLabelVariants(), className);
73
+ const { isLabelFocused, isInvalid } = useFormControlContext();
74
+ // Native: inject text-content-action via context (group-has CSS handles web).
75
+ // native: prefix keeps this class inert on web so it never conflicts with text-content-primary.
76
+ const labelClassName = cn(
77
+ fieldLabelVariants(),
78
+ isLabelFocused && !isInvalid && 'native:text-content-action',
79
+ className,
80
+ );
74
81
 
75
82
  return (
76
83
  <FieldPrimitive.Label
@@ -79,7 +86,7 @@ const FieldLabel = forwardRef<View, FieldLabelProps>(
79
86
  style={style}
80
87
  htmlFor={htmlFor}
81
88
  requiredIndicator={
82
- <Text className="text-red-500" aria-hidden>
89
+ <Text className="text-content-danger" aria-hidden>
83
90
  {' *'}
84
91
  </Text>
85
92
  }
@@ -1,23 +1,24 @@
1
1
  import { cva, type VariantProps } from 'class-variance-authority';
2
2
  import { DISABLED_OPACITY } from '../../styles/primitives';
3
3
 
4
- export const fieldRootVariants = cva(['flex-col gap-2', 'web:last:mb-0', DISABLED_OPACITY]);
4
+ export const fieldRootVariants = cva(['group flex-col gap-2', 'web:last:mb-0', DISABLED_OPACITY]);
5
5
 
6
6
  export const fieldLabelVariants = cva([
7
7
  'body-md',
8
8
  'font-medium',
9
9
  'text-content-primary',
10
10
  'flex-row items-center',
11
- DISABLED_OPACITY,
11
+ 'overflow-hidden',
12
12
  'web:cursor-pointer',
13
+ 'web:group-has-[[data-focus=true]]:data-[invalid=false]:text-content-action',
13
14
  'data-[invalid=true]:text-content-danger',
14
15
  ]);
15
16
 
16
- export const fieldHelperVariants = cva(['flex-row items-center']);
17
+ export const fieldHelperVariants = cva(['flex-row items-center min-h-4']);
17
18
 
18
19
  export const fieldHelperTextVariants = cva(['body-sm', 'text-content-tertiary']);
19
20
 
20
- export const fieldErrorVariants = cva(['flex-row items-center gap-1']);
21
+ export const fieldErrorVariants = cva(['flex-row items-center gap-0.5 min-h-4']);
21
22
 
22
23
  export const fieldErrorTextVariants = cva(['body-sm', 'text-content-danger']);
23
24
 
@@ -5,7 +5,7 @@ export const headingStyle = cva(
5
5
  [
6
6
  `text-content-primary my-0`,
7
7
  Platform.select({
8
- web: 'bg-transparent display-inline no-underline',
8
+ web: 'bg-transparent no-underline',
9
9
  default: '',
10
10
  }),
11
11
  ],
@@ -1,11 +1,10 @@
1
1
  import { withUniwind } from 'uniwind';
2
2
  import { cn } from '@cdx-ui/utils';
3
- import type { CdxIcon, CdxIconProps } from '@cdx-ui/icons';
4
- import { COLOR_TEXT_PRIMARY } from '../../styles/primitives';
3
+ import type { ForgeIcon, ForgeIconProps } from '@cdx-ui/icons';
5
4
 
6
- export type IconProps = CdxIconProps & {
5
+ export type IconProps = ForgeIconProps & {
7
6
  className?: string; // TODO: Why does this need to specified manually?
8
- as: CdxIcon;
7
+ as: ForgeIcon;
9
8
  };
10
9
 
11
10
  function IconImpl({ as: IconComponent, ...props }: IconProps) {
@@ -38,16 +37,16 @@ const StyledIcon = withUniwind(IconImpl, {
38
37
  * <Icon as={ArrowRight} className="text-red-500 size-4" />
39
38
  * ```
40
39
  *
41
- * @param {CdxIcon} as - The CDX icon component to render.
40
+ * @param {ForgeIcon} as - The Forge icon component to render.
42
41
  * @param {string} className - Utility classes to style the icon using Uniwind.
43
42
  * @param {number} size - Icon size (overrides the size class).
44
- * @param {...CdxIconProps} ...props - Additional icon props passed to the "as" icon.
43
+ * @param {...ForgeIconProps} ...props - Additional icon props passed to the "as" icon.
45
44
  */
46
45
  export function Icon({ as: IconComponent, className, ...props }: IconProps) {
47
46
  return (
48
47
  <StyledIcon
49
48
  as={IconComponent}
50
- className={cn(COLOR_TEXT_PRIMARY, 'size-5', className)}
49
+ className={cn('text-content-primary size-5', className)}
51
50
  {...props}
52
51
  />
53
52
  );
@@ -6,7 +6,7 @@ import {
6
6
  type IButtonProps,
7
7
  useButtonContext,
8
8
  } from '@cdx-ui/primitives';
9
- import type { CdxIcon } from '@cdx-ui/icons';
9
+ import type { ForgeIcon } from '@cdx-ui/icons';
10
10
  import { cn } from '@cdx-ui/utils';
11
11
  import { Icon, type IconProps } from '../Icon';
12
12
  import {
@@ -24,7 +24,7 @@ const IconButtonPrimitive = createButton({
24
24
  Icon: View,
25
25
  });
26
26
 
27
- function IconButtonGlyph({ as: IconComponent, className }: { as: CdxIcon; className: string }) {
27
+ function IconButtonGlyph({ as: IconComponent, className }: { as: ForgeIcon; className: string }) {
28
28
  const { hover, focus, active, disabled, focusVisible } = useButtonContext();
29
29
  return (
30
30
  <Icon
@@ -43,8 +43,8 @@ function IconButtonGlyph({ as: IconComponent, className }: { as: CdxIcon; classN
43
43
 
44
44
  export interface IconButtonProps extends PressableProps, IButtonProps, IconButtonVariantProps {
45
45
  className?: string;
46
- /** CDX icon component to render (icon-only control). */
47
- as: CdxIcon;
46
+ /** Forge icon component to render (icon-only control). */
47
+ as: ForgeIcon;
48
48
  /** Passed through to the underlying `Icon`. */
49
49
  iconClassName?: IconProps['className'];
50
50
  }
@@ -53,6 +53,7 @@ const IconButtonRoot = forwardRef<View, IconButtonProps>(
53
53
  (
54
54
  {
55
55
  variant = 'solid',
56
+ color = 'neutral',
56
57
  size = 'default',
57
58
  className,
58
59
  style,
@@ -63,11 +64,11 @@ const IconButtonRoot = forwardRef<View, IconButtonProps>(
63
64
  },
64
65
  ref,
65
66
  ) => {
66
- const rootClassName = cn(iconButtonRootVariants({ variant, size }), className);
67
+ const rootClassName = cn(iconButtonRootVariants({ variant, color, size }), className);
67
68
 
68
69
  const glyphClassName = cn(
69
70
  iconButtonGlyphVariants({ size }),
70
- iconButtonIconColorVariants(),
71
+ iconButtonIconColorVariants({ variant, color }),
71
72
  iconClassName,
72
73
  );
73
74