@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
@@ -1,92 +1,90 @@
1
1
  import { Platform } from 'react-native';
2
- import { cva, type VariantProps } from 'class-variance-authority';
3
- import {
4
- COLOR_BG_PRIMARY,
5
- COLOR_BORDER_STRONG,
6
- COLOR_TEXT_PRIMARY,
7
- DISABLED_CURSOR,
8
- DISABLED_OPACITY,
9
- TRANSITION_COLORS,
10
- } from '../../styles/primitives';
2
+ import { cva } from 'class-variance-authority';
3
+ import { DISABLED_CURSOR, DISABLED_OPACITY, TRANSITION_COLORS } from '../../styles/primitives';
11
4
 
12
- export const checkboxRootVariants = cva(
13
- ['flex-row items-center', DISABLED_OPACITY, DISABLED_CURSOR],
14
- {
15
- variants: {
16
- size: {
17
- small: 'gap-2',
18
- default: 'gap-2.5',
19
- },
20
- },
21
- defaultVariants: {
22
- size: 'default',
23
- },
24
- },
25
- );
5
+ export const checkboxRootVariants = cva([
6
+ 'flex-row items-center gap-2.5',
7
+ DISABLED_OPACITY,
8
+ DISABLED_CURSOR,
9
+ // Suppress stray outline on the Pressable/label wrapper; focus ring is drawn on Checkbox.Indicator (Radio pattern).
10
+ 'web:outline-none web:focus:outline-none web:focus-visible:outline-none',
11
+ ]);
26
12
 
27
- export const checkboxIndicatorVariants = cva(
28
- [
29
- 'items-center justify-center',
30
- 'rounded',
31
- 'border-2',
32
- COLOR_BORDER_STRONG,
33
- COLOR_BG_PRIMARY,
34
- 'data-[checked=true]:bg-slate-900 data-[checked=true]:border-slate-900',
35
- 'data-[indeterminate=true]:bg-slate-900 data-[indeterminate=true]:border-slate-900',
36
- 'data-[disabled=true]:opacity-50',
37
- 'data-[invalid=true]:border-red-500',
38
- 'data-[checked=true]:data-[invalid=true]:bg-red-500 data-[checked=true]:data-[invalid=true]:border-red-500',
39
- 'data-[indeterminate=true]:data-[invalid=true]:bg-red-500 data-[indeterminate=true]:data-[invalid=true]:border-red-500',
40
- Platform.select({
41
- web: [
42
- TRANSITION_COLORS,
43
- 'data-[hover=true]:data-[checked=false]:data-[indeterminate=false]:border-slate-400 data-[hover=true]:data-[checked=false]:data-[indeterminate=false]:bg-slate-50',
44
- 'data-[focus-visible=true]:ring-2 data-[focus-visible=true]:ring-slate-400/50 data-[focus-visible=true]:ring-offset-2',
45
- 'data-[invalid=true]:data-[hover=true]:border-red-400',
46
- 'data-[invalid=true]:data-[focus-visible=true]:ring-red-400/50',
47
- ].join(' '),
48
- default: '',
49
- }),
50
- ],
51
- {
52
- variants: {
53
- size: {
54
- small: 'h-4 w-4',
55
- default: 'h-5 w-5',
56
- },
57
- },
58
- defaultVariants: {
59
- size: 'default',
60
- },
61
- },
62
- );
13
+ export const checkboxIndicatorVariants = cva([
14
+ 'items-center justify-center',
15
+ 'h-5 w-5',
16
+ 'rounded',
17
+ 'border-2 border-solid',
18
+ 'data-[disabled=true]:opacity-50',
19
+ // Background — layered by specificity. checked=false acts as an explicit reset so the base bg
20
+ // reasserts when transitioning from checked/indeterminate on native (where absent attributes
21
+ // break data-[attr=false] selectors).
22
+ // IMPORTANT: On native (Uniwind), only the LAST data-[] condition in a compound chain is
23
+ // effectively evaluated. Place the most discriminating condition last to avoid false matches.
24
+ 'data-[checked=false]:bg-surface-primary',
25
+ 'data-[checked=true]:bg-surface-action-strong',
26
+ 'data-[indeterminate=true]:bg-surface-action-strong',
27
+ // Border — invalid (later) beats checked/indeterminate.
28
+ 'data-[checked=false]:border-content-secondary',
29
+ 'data-[checked=true]:border-stroke-action',
30
+ 'data-[indeterminate=true]:border-stroke-action',
31
+ 'data-[invalid=true]:border-stroke-danger',
32
+ Platform.select({
33
+ web: [
34
+ // Invalid bg — compound selectors evaluate correctly on web.
35
+ 'data-[invalid=true]:data-[checked=true]:bg-surface-danger-strong',
36
+ 'data-[invalid=true]:data-[indeterminate=true]:bg-surface-danger-strong',
37
+ TRANSITION_COLORS,
38
+ // Hover — unchecked (Figma: border unchanged, bg overlay at opacity/hover)
39
+ 'data-[hover=true]:data-[checked=false]:data-[indeterminate=false]:bg-content-secondary/[0.08]',
40
+ // Hover — unchecked + invalid (overlay uses danger token)
41
+ 'data-[hover=true]:data-[invalid=true]:data-[checked=false]:data-[indeterminate=false]:bg-surface-danger-strong/[0.08]',
42
+ // Hover — checked / indeterminate (bg + border darken together)
43
+ 'data-[hover=true]:data-[checked=true]:bg-surface-action-strong-hover',
44
+ 'data-[hover=true]:data-[checked=true]:border-[--color-surface-action-strong-hover]',
45
+ 'data-[hover=true]:data-[indeterminate=true]:bg-surface-action-strong-hover',
46
+ 'data-[hover=true]:data-[indeterminate=true]:border-[--color-surface-action-strong-hover]',
47
+ 'data-[hover=true]:data-[checked=true]:data-[invalid=true]:bg-surface-danger-strong-hover',
48
+ 'data-[hover=true]:data-[checked=true]:data-[invalid=true]:border-[--color-surface-danger-strong-hover]',
49
+ 'data-[hover=true]:data-[indeterminate=true]:data-[invalid=true]:bg-surface-danger-strong-hover',
50
+ 'data-[hover=true]:data-[indeterminate=true]:data-[invalid=true]:border-[--color-surface-danger-strong-hover]',
51
+ // Active — CSS :active pseudo-class (web root does not track press via data-active).
52
+ // data-[hover=true] guard ensures active beats hover by specificity (0,3,0 > 0,2,0).
53
+ 'web:active:data-[hover=true]:data-[checked=true]:bg-surface-action-strong-active',
54
+ 'web:active:data-[hover=true]:data-[checked=true]:border-[--color-surface-action-strong-active]',
55
+ 'web:active:data-[hover=true]:data-[indeterminate=true]:bg-surface-action-strong-active',
56
+ 'web:active:data-[hover=true]:data-[indeterminate=true]:border-[--color-surface-action-strong-active]',
57
+ 'web:active:data-[hover=true]:data-[checked=true]:data-[invalid=true]:bg-surface-danger-strong-active',
58
+ 'web:active:data-[hover=true]:data-[checked=true]:data-[invalid=true]:border-[--color-surface-danger-strong-active]',
59
+ 'web:active:data-[hover=true]:data-[indeterminate=true]:data-[invalid=true]:bg-surface-danger-strong-active',
60
+ 'web:active:data-[hover=true]:data-[indeterminate=true]:data-[invalid=true]:border-[--color-surface-danger-strong-active]',
61
+ // Focus ring
62
+ 'web:data-[focus-visible=true]:outline-none',
63
+ 'web:data-[focus-visible=true]:ring-2 web:data-[focus-visible=true]:ring-[--color-stroke-ring] web:data-[focus-visible=true]:ring-offset-2',
64
+ ].join(' '),
65
+ default: [
66
+ // Invalid bg is NOT styled on native. Compound data-[] selectors cannot express
67
+ // "invalid AND checked" without false-matching other states (Uniwind only evaluates
68
+ // the last condition). Invalid state is communicated via border-stroke-danger (single
69
+ // condition, always correct). The fill stays action-strong for checked/indeterminate.
70
+ //
71
+ // Active — native tracks press via data-[active] from usePress.
72
+ // Place data-[active=true] last so the rule only fires during press.
73
+ // 'data-[checked=false]:data-[invalid=true]:bg-transparent',
74
+ 'data-[checked=true]:data-[invalid=true]:bg-surface-danger-strong',
75
+ 'data-[checked=true]:data-[active=true]:bg-surface-action-strong-active',
76
+ 'data-[checked=true]:data-[active=true]:data-[invalid=true]:bg-surface-danger-strong-active',
77
+ 'data-[indeterminate=true]:data-[active=true]:bg-surface-action-strong-active',
78
+ ].join(' '),
79
+ }),
80
+ ]);
63
81
 
64
- export const checkboxIconVariants = cva(['text-white'], {
65
- variants: {
66
- size: {
67
- small: 'h-3 w-3',
68
- default: 'h-3.5 w-3.5',
69
- },
70
- },
71
- defaultVariants: {
72
- size: 'default',
73
- },
74
- });
82
+ export const checkboxIconVariants = cva(['text-white', 'h-5 w-5']);
75
83
 
76
- export const checkboxLabelVariants = cva(
77
- [COLOR_TEXT_PRIMARY, 'data-[disabled=true]:text-slate-400'],
78
- {
79
- variants: {
80
- size: {
81
- small: 'text-sm',
82
- default: 'text-base',
83
- },
84
- },
85
- defaultVariants: {
86
- size: 'default',
87
- },
88
- },
89
- );
84
+ export const checkboxLabelVariants = cva([
85
+ 'text-content-primary text-base',
86
+ 'data-[disabled=true]:text-content-tertiary',
87
+ ]);
90
88
 
91
89
  export const checkboxGroupVariants = cva([], {
92
90
  variants: {
@@ -99,5 +97,3 @@ export const checkboxGroupVariants = cva([], {
99
97
  direction: 'column',
100
98
  },
101
99
  });
102
-
103
- export type CheckboxVariantProps = VariantProps<typeof checkboxRootVariants>;
@@ -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`). */