jfs-components 0.0.5 → 0.0.7

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 (358) hide show
  1. package/lib/commonjs/components/Accordion/Accordion.mdx +1 -1
  2. package/lib/commonjs/components/ActionFooter/ActionFooter.js +2 -14
  3. package/lib/commonjs/components/ActionFooter/ActionFooter.js.map +1 -1
  4. package/lib/commonjs/components/ActionFooter/ActionFooter.mdx +1 -1
  5. package/lib/commonjs/components/ActionTile/ActionTile.js +10 -1
  6. package/lib/commonjs/components/ActionTile/ActionTile.js.map +1 -1
  7. package/lib/commonjs/components/ActionTile/ActionTile.mdx +5 -1
  8. package/lib/commonjs/components/AppBar/AppBar.js +109 -231
  9. package/lib/commonjs/components/AppBar/AppBar.js.map +1 -1
  10. package/lib/commonjs/components/AppBar/AppBar.mdx +51 -39
  11. package/lib/commonjs/components/Avatar/Avatar.mdx +9 -1
  12. package/lib/commonjs/components/AvatarGroup/AvatarGroup.mdx +9 -1
  13. package/lib/commonjs/components/Badge/Badge.mdx +1 -1
  14. package/lib/commonjs/components/Balance/Balance.js +77 -0
  15. package/lib/commonjs/components/Balance/Balance.js.map +1 -0
  16. package/lib/commonjs/components/Balance/Balance.mdx +62 -0
  17. package/lib/commonjs/components/BottomNav/BottomNav.js +9 -1
  18. package/lib/commonjs/components/BottomNav/BottomNav.js.map +1 -1
  19. package/lib/commonjs/components/BottomNav/BottomNav.mdx +5 -1
  20. package/lib/commonjs/components/BottomNavItem/BottomNavItem.js +9 -1
  21. package/lib/commonjs/components/BottomNavItem/BottomNavItem.js.map +1 -1
  22. package/lib/commonjs/components/BottomNavItem/BottomNavItem.mdx +5 -1
  23. package/lib/commonjs/components/Button/Button.mdx +5 -1
  24. package/lib/commonjs/components/ButtonGroup/ButtonGroup.js +64 -0
  25. package/lib/commonjs/components/ButtonGroup/ButtonGroup.js.map +1 -0
  26. package/lib/commonjs/components/ButtonGroup/ButtonGroup.mdx +56 -0
  27. package/lib/commonjs/components/Card/Card.mdx +1 -1
  28. package/lib/commonjs/components/CardFeedback/CardFeedback.mdx +5 -1
  29. package/lib/commonjs/components/ChipGroup/ChipGroup.js +54 -0
  30. package/lib/commonjs/components/ChipGroup/ChipGroup.js.map +1 -0
  31. package/lib/commonjs/components/ChipGroup/ChipGroup.mdx +40 -0
  32. package/lib/commonjs/components/ChipSelect/ChipSelect.js +103 -0
  33. package/lib/commonjs/components/ChipSelect/ChipSelect.js.map +1 -0
  34. package/lib/commonjs/components/ChipSelect/ChipSelect.mdx +80 -0
  35. package/lib/commonjs/components/CtaCard/CtaCard.js +15 -20
  36. package/lib/commonjs/components/CtaCard/CtaCard.js.map +1 -1
  37. package/lib/commonjs/components/CtaCard/CtaCard.mdx +1 -1
  38. package/lib/commonjs/components/Disclaimer/Disclaimer.js +9 -1
  39. package/lib/commonjs/components/Disclaimer/Disclaimer.js.map +1 -1
  40. package/lib/commonjs/components/Disclaimer/Disclaimer.mdx +5 -1
  41. package/lib/commonjs/components/Divider/Divider.mdx +5 -1
  42. package/lib/commonjs/components/Drawer/Drawer.mdx +9 -1
  43. package/lib/commonjs/components/EmptyState/EmptyState.js +138 -0
  44. package/lib/commonjs/components/EmptyState/EmptyState.js.map +1 -0
  45. package/lib/commonjs/components/EmptyState/EmptyState.mdx +73 -0
  46. package/lib/commonjs/components/FilterBar/FilterBar.mdx +1 -1
  47. package/lib/commonjs/components/HStack/HStack.js +67 -0
  48. package/lib/commonjs/components/HStack/HStack.js.map +1 -0
  49. package/lib/commonjs/components/HStack/HStack.mdx +44 -0
  50. package/lib/commonjs/components/IconButton/IconButton.mdx +5 -1
  51. package/lib/commonjs/components/IconCapsule/IconCapsule.js +12 -4
  52. package/lib/commonjs/components/IconCapsule/IconCapsule.js.map +1 -1
  53. package/lib/commonjs/components/IconCapsule/IconCapsule.mdx +12 -4
  54. package/lib/commonjs/components/Introduction.mdx +3 -98
  55. package/lib/commonjs/components/LazyList/LazyList.mdx +1 -1
  56. package/lib/commonjs/components/ListGroup/ListGroup.js +3 -30
  57. package/lib/commonjs/components/ListGroup/ListGroup.js.map +1 -1
  58. package/lib/commonjs/components/ListGroup/ListGroup.mdx +5 -1
  59. package/lib/commonjs/components/ListItem/ListItem.js +5 -37
  60. package/lib/commonjs/components/ListItem/ListItem.js.map +1 -1
  61. package/lib/commonjs/components/ListItem/ListItem.mdx +5 -1
  62. package/lib/commonjs/components/MediaCard/MediaCard.mdx +5 -1
  63. package/lib/commonjs/components/MerchantProfile/MerchantProfile.mdx +1 -1
  64. package/lib/commonjs/components/MoneyValue/MoneyValue.mdx +6 -2
  65. package/lib/commonjs/components/NavArrow/NavArrow.js +42 -17
  66. package/lib/commonjs/components/NavArrow/NavArrow.js.map +1 -1
  67. package/lib/commonjs/components/NavArrow/NavArrow.mdx +5 -1
  68. package/lib/commonjs/components/PageTitle/PageTitle.js +10 -1
  69. package/lib/commonjs/components/PageTitle/PageTitle.js.map +1 -1
  70. package/lib/commonjs/components/PageTitle/PageTitle.mdx +5 -1
  71. package/lib/commonjs/components/Screen/Screen.js +53 -0
  72. package/lib/commonjs/components/Screen/Screen.js.map +1 -0
  73. package/lib/commonjs/components/Screen/Screen.mdx +58 -0
  74. package/lib/commonjs/components/Section/Section.js +3 -25
  75. package/lib/commonjs/components/Section/Section.js.map +1 -1
  76. package/lib/commonjs/components/Section/Section.mdx +5 -1
  77. package/lib/commonjs/components/Stepper/Step.mdx +5 -1
  78. package/lib/commonjs/components/Stepper/StepLabel.mdx +5 -1
  79. package/lib/commonjs/components/Stepper/Stepper.mdx +1 -1
  80. package/lib/commonjs/components/SupportText/SupportText.js +83 -0
  81. package/lib/commonjs/components/SupportText/SupportText.js.map +1 -0
  82. package/lib/commonjs/components/SupportText/SupportText.mdx +48 -0
  83. package/lib/commonjs/components/SupportText/SupportTextIcon.js +47 -0
  84. package/lib/commonjs/components/SupportText/SupportTextIcon.js.map +1 -0
  85. package/lib/commonjs/components/SupportText/SupportTextIcon.mdx +35 -0
  86. package/lib/commonjs/components/SupportText/index.js +21 -0
  87. package/lib/commonjs/components/SupportText/index.js.map +1 -0
  88. package/lib/commonjs/components/TextInput/TextInput.mdx +9 -1
  89. package/lib/commonjs/components/ThreadHero/ThreadHero.mdx +1 -1
  90. package/lib/commonjs/components/Tooltip/Tooltip.mdx +5 -1
  91. package/lib/commonjs/components/TransactionBubble/TransactionBubble.mdx +1 -1
  92. package/lib/commonjs/components/TransactionDetails/TransactionDetails.js +2 -24
  93. package/lib/commonjs/components/TransactionDetails/TransactionDetails.js.map +1 -1
  94. package/lib/commonjs/components/TransactionDetails/TransactionDetails.mdx +1 -1
  95. package/lib/commonjs/components/TransactionStatus/TransactionStatus.mdx +1 -1
  96. package/lib/commonjs/components/UpiHandle/UpiHandle.js +9 -1
  97. package/lib/commonjs/components/UpiHandle/UpiHandle.js.map +1 -1
  98. package/lib/commonjs/components/UpiHandle/UpiHandle.mdx +5 -1
  99. package/lib/commonjs/components/VStack/VStack.js +73 -0
  100. package/lib/commonjs/components/VStack/VStack.js.map +1 -0
  101. package/lib/commonjs/components/VStack/VStack.mdx +44 -0
  102. package/lib/commonjs/components/index.js +28 -0
  103. package/lib/commonjs/components/index.js.map +1 -1
  104. package/lib/commonjs/design-tokens/JFS Variables-variables-full.json +1 -18633
  105. package/lib/commonjs/icons/ic_info.svg +1 -0
  106. package/lib/commonjs/icons/ic_warning.svg +1 -0
  107. package/lib/commonjs/icons/registry.js +2 -2
  108. package/lib/commonjs/icons/registry.js.map +1 -1
  109. package/lib/commonjs/utils/react-utils.js +47 -0
  110. package/lib/commonjs/utils/react-utils.js.map +1 -0
  111. package/lib/module/components/Accordion/Accordion.mdx +1 -1
  112. package/lib/module/components/ActionFooter/ActionFooter.js +2 -14
  113. package/lib/module/components/ActionFooter/ActionFooter.js.map +1 -1
  114. package/lib/module/components/ActionFooter/ActionFooter.mdx +1 -1
  115. package/lib/module/components/ActionTile/ActionTile.js +10 -1
  116. package/lib/module/components/ActionTile/ActionTile.js.map +1 -1
  117. package/lib/module/components/ActionTile/ActionTile.mdx +5 -1
  118. package/lib/module/components/AppBar/AppBar.js +109 -231
  119. package/lib/module/components/AppBar/AppBar.js.map +1 -1
  120. package/lib/module/components/AppBar/AppBar.mdx +51 -39
  121. package/lib/module/components/Avatar/Avatar.mdx +9 -1
  122. package/lib/module/components/AvatarGroup/AvatarGroup.mdx +9 -1
  123. package/lib/module/components/Badge/Badge.mdx +1 -1
  124. package/lib/module/components/Balance/Balance.js +72 -0
  125. package/lib/module/components/Balance/Balance.js.map +1 -0
  126. package/lib/module/components/Balance/Balance.mdx +62 -0
  127. package/lib/module/components/BottomNav/BottomNav.js +9 -1
  128. package/lib/module/components/BottomNav/BottomNav.js.map +1 -1
  129. package/lib/module/components/BottomNav/BottomNav.mdx +5 -1
  130. package/lib/module/components/BottomNavItem/BottomNavItem.js +9 -1
  131. package/lib/module/components/BottomNavItem/BottomNavItem.js.map +1 -1
  132. package/lib/module/components/BottomNavItem/BottomNavItem.mdx +5 -1
  133. package/lib/module/components/Button/Button.mdx +5 -1
  134. package/lib/module/components/ButtonGroup/ButtonGroup.js +59 -0
  135. package/lib/module/components/ButtonGroup/ButtonGroup.js.map +1 -0
  136. package/lib/module/components/ButtonGroup/ButtonGroup.mdx +56 -0
  137. package/lib/module/components/Card/Card.mdx +1 -1
  138. package/lib/module/components/CardFeedback/CardFeedback.mdx +5 -1
  139. package/lib/module/components/ChipGroup/ChipGroup.js +49 -0
  140. package/lib/module/components/ChipGroup/ChipGroup.js.map +1 -0
  141. package/lib/module/components/ChipGroup/ChipGroup.mdx +40 -0
  142. package/lib/module/components/ChipSelect/ChipSelect.js +98 -0
  143. package/lib/module/components/ChipSelect/ChipSelect.js.map +1 -0
  144. package/lib/module/components/ChipSelect/ChipSelect.mdx +80 -0
  145. package/lib/module/components/CtaCard/CtaCard.js +15 -20
  146. package/lib/module/components/CtaCard/CtaCard.js.map +1 -1
  147. package/lib/module/components/CtaCard/CtaCard.mdx +1 -1
  148. package/lib/module/components/Disclaimer/Disclaimer.js +9 -1
  149. package/lib/module/components/Disclaimer/Disclaimer.js.map +1 -1
  150. package/lib/module/components/Disclaimer/Disclaimer.mdx +5 -1
  151. package/lib/module/components/Divider/Divider.mdx +5 -1
  152. package/lib/module/components/Drawer/Drawer.mdx +9 -1
  153. package/lib/module/components/EmptyState/EmptyState.js +132 -0
  154. package/lib/module/components/EmptyState/EmptyState.js.map +1 -0
  155. package/lib/module/components/EmptyState/EmptyState.mdx +73 -0
  156. package/lib/module/components/FilterBar/FilterBar.mdx +1 -1
  157. package/lib/module/components/HStack/HStack.js +61 -0
  158. package/lib/module/components/HStack/HStack.js.map +1 -0
  159. package/lib/module/components/HStack/HStack.mdx +44 -0
  160. package/lib/module/components/IconButton/IconButton.mdx +5 -1
  161. package/lib/module/components/IconCapsule/IconCapsule.js +12 -4
  162. package/lib/module/components/IconCapsule/IconCapsule.js.map +1 -1
  163. package/lib/module/components/IconCapsule/IconCapsule.mdx +12 -4
  164. package/lib/module/components/Introduction.mdx +3 -98
  165. package/lib/module/components/LazyList/LazyList.mdx +1 -1
  166. package/lib/module/components/ListGroup/ListGroup.js +1 -30
  167. package/lib/module/components/ListGroup/ListGroup.js.map +1 -1
  168. package/lib/module/components/ListGroup/ListGroup.mdx +5 -1
  169. package/lib/module/components/ListItem/ListItem.js +1 -35
  170. package/lib/module/components/ListItem/ListItem.js.map +1 -1
  171. package/lib/module/components/ListItem/ListItem.mdx +5 -1
  172. package/lib/module/components/MediaCard/MediaCard.mdx +5 -1
  173. package/lib/module/components/MerchantProfile/MerchantProfile.mdx +1 -1
  174. package/lib/module/components/MoneyValue/MoneyValue.mdx +6 -2
  175. package/lib/module/components/NavArrow/NavArrow.js +42 -17
  176. package/lib/module/components/NavArrow/NavArrow.js.map +1 -1
  177. package/lib/module/components/NavArrow/NavArrow.mdx +5 -1
  178. package/lib/module/components/PageTitle/PageTitle.js +10 -1
  179. package/lib/module/components/PageTitle/PageTitle.js.map +1 -1
  180. package/lib/module/components/PageTitle/PageTitle.mdx +5 -1
  181. package/lib/module/components/Screen/Screen.js +47 -0
  182. package/lib/module/components/Screen/Screen.js.map +1 -0
  183. package/lib/module/components/Screen/Screen.mdx +58 -0
  184. package/lib/module/components/Section/Section.js +1 -23
  185. package/lib/module/components/Section/Section.js.map +1 -1
  186. package/lib/module/components/Section/Section.mdx +5 -1
  187. package/lib/module/components/Stepper/Step.mdx +5 -1
  188. package/lib/module/components/Stepper/StepLabel.mdx +5 -1
  189. package/lib/module/components/Stepper/Stepper.mdx +1 -1
  190. package/lib/module/components/SupportText/SupportText.js +78 -0
  191. package/lib/module/components/SupportText/SupportText.js.map +1 -0
  192. package/lib/module/components/SupportText/SupportText.mdx +48 -0
  193. package/lib/module/components/SupportText/SupportTextIcon.js +42 -0
  194. package/lib/module/components/SupportText/SupportTextIcon.js.map +1 -0
  195. package/lib/module/components/SupportText/SupportTextIcon.mdx +35 -0
  196. package/lib/module/components/SupportText/index.js +5 -0
  197. package/lib/module/components/SupportText/index.js.map +1 -0
  198. package/lib/module/components/TextInput/TextInput.mdx +9 -1
  199. package/lib/module/components/ThreadHero/ThreadHero.mdx +1 -1
  200. package/lib/module/components/Tooltip/Tooltip.mdx +5 -1
  201. package/lib/module/components/TransactionBubble/TransactionBubble.mdx +1 -1
  202. package/lib/module/components/TransactionDetails/TransactionDetails.js +2 -26
  203. package/lib/module/components/TransactionDetails/TransactionDetails.js.map +1 -1
  204. package/lib/module/components/TransactionDetails/TransactionDetails.mdx +1 -1
  205. package/lib/module/components/TransactionStatus/TransactionStatus.mdx +1 -1
  206. package/lib/module/components/UpiHandle/UpiHandle.js +9 -1
  207. package/lib/module/components/UpiHandle/UpiHandle.js.map +1 -1
  208. package/lib/module/components/UpiHandle/UpiHandle.mdx +5 -1
  209. package/lib/module/components/VStack/VStack.js +67 -0
  210. package/lib/module/components/VStack/VStack.js.map +1 -0
  211. package/lib/module/components/VStack/VStack.mdx +44 -0
  212. package/lib/module/components/index.js +4 -0
  213. package/lib/module/components/index.js.map +1 -1
  214. package/lib/module/design-tokens/JFS Variables-variables-full.json +1 -18633
  215. package/lib/module/design-tokens/figma-variables-resolver.js +2 -2
  216. package/lib/module/design-tokens/figma-variables-resolver.js.map +1 -1
  217. package/lib/module/icons/ic_info.svg +1 -0
  218. package/lib/module/icons/ic_warning.svg +1 -0
  219. package/lib/module/icons/registry.js +2 -2
  220. package/lib/module/icons/registry.js.map +1 -1
  221. package/lib/module/utils/react-utils.js +43 -0
  222. package/lib/module/utils/react-utils.js.map +1 -0
  223. package/lib/typescript/components/ActionFooter/ActionFooter.d.ts.map +1 -1
  224. package/lib/typescript/components/ActionTile/ActionTile.d.ts +1 -1
  225. package/lib/typescript/components/ActionTile/ActionTile.d.ts.map +1 -1
  226. package/lib/typescript/components/AppBar/AppBar.d.ts +34 -68
  227. package/lib/typescript/components/AppBar/AppBar.d.ts.map +1 -1
  228. package/lib/typescript/components/Balance/Balance.d.ts +44 -0
  229. package/lib/typescript/components/Balance/Balance.d.ts.map +1 -0
  230. package/lib/typescript/components/BottomNav/BottomNav.d.ts +1 -1
  231. package/lib/typescript/components/BottomNav/BottomNav.d.ts.map +1 -1
  232. package/lib/typescript/components/BottomNavItem/BottomNavItem.d.ts +1 -1
  233. package/lib/typescript/components/BottomNavItem/BottomNavItem.d.ts.map +1 -1
  234. package/lib/typescript/components/ButtonGroup/ButtonGroup.d.ts +36 -0
  235. package/lib/typescript/components/ButtonGroup/ButtonGroup.d.ts.map +1 -0
  236. package/lib/typescript/components/ChipGroup/ChipGroup.d.ts +29 -0
  237. package/lib/typescript/components/ChipGroup/ChipGroup.d.ts.map +1 -0
  238. package/lib/typescript/components/ChipSelect/ChipSelect.d.ts +47 -0
  239. package/lib/typescript/components/ChipSelect/ChipSelect.d.ts.map +1 -0
  240. package/lib/typescript/components/CtaCard/CtaCard.d.ts +1 -1
  241. package/lib/typescript/components/CtaCard/CtaCard.d.ts.map +1 -1
  242. package/lib/typescript/components/Disclaimer/Disclaimer.d.ts +1 -1
  243. package/lib/typescript/components/Disclaimer/Disclaimer.d.ts.map +1 -1
  244. package/lib/typescript/components/EmptyState/EmptyState.d.ts +38 -0
  245. package/lib/typescript/components/EmptyState/EmptyState.d.ts.map +1 -0
  246. package/lib/typescript/components/HStack/HStack.d.ts +41 -0
  247. package/lib/typescript/components/HStack/HStack.d.ts.map +1 -0
  248. package/lib/typescript/components/IconCapsule/IconCapsule.d.ts +1 -1
  249. package/lib/typescript/components/IconCapsule/IconCapsule.d.ts.map +1 -1
  250. package/lib/typescript/components/ListGroup/ListGroup.d.ts.map +1 -1
  251. package/lib/typescript/components/ListItem/ListItem.d.ts.map +1 -1
  252. package/lib/typescript/components/NavArrow/NavArrow.d.ts +3 -3
  253. package/lib/typescript/components/NavArrow/NavArrow.d.ts.map +1 -1
  254. package/lib/typescript/components/PageTitle/PageTitle.d.ts +1 -1
  255. package/lib/typescript/components/PageTitle/PageTitle.d.ts.map +1 -1
  256. package/lib/typescript/components/Screen/Screen.d.ts +23 -0
  257. package/lib/typescript/components/Screen/Screen.d.ts.map +1 -0
  258. package/lib/typescript/components/Section/Section.d.ts.map +1 -1
  259. package/lib/typescript/components/SupportText/SupportText.d.ts +34 -0
  260. package/lib/typescript/components/SupportText/SupportText.d.ts.map +1 -0
  261. package/lib/typescript/components/SupportText/SupportTextIcon.d.ts +10 -0
  262. package/lib/typescript/components/SupportText/SupportTextIcon.d.ts.map +1 -0
  263. package/lib/typescript/components/SupportText/index.d.ts +3 -0
  264. package/lib/typescript/components/SupportText/index.d.ts.map +1 -0
  265. package/lib/typescript/components/TransactionDetails/TransactionDetails.d.ts.map +1 -1
  266. package/lib/typescript/components/UpiHandle/UpiHandle.d.ts +1 -1
  267. package/lib/typescript/components/UpiHandle/UpiHandle.d.ts.map +1 -1
  268. package/lib/typescript/components/VStack/VStack.d.ts +41 -0
  269. package/lib/typescript/components/VStack/VStack.d.ts.map +1 -0
  270. package/lib/typescript/components/index.d.ts +4 -0
  271. package/lib/typescript/components/index.d.ts.map +1 -1
  272. package/lib/typescript/icons/registry.d.ts +1 -1
  273. package/lib/typescript/icons/registry.d.ts.map +1 -1
  274. package/lib/typescript/utils/react-utils.d.ts +7 -0
  275. package/lib/typescript/utils/react-utils.d.ts.map +1 -0
  276. package/package.json +7 -5
  277. package/src/components/.token-metadata.json +468 -12
  278. package/src/components/Accordion/Accordion.mdx +1 -1
  279. package/src/components/ActionFooter/ActionFooter.mdx +1 -1
  280. package/src/components/ActionFooter/ActionFooter.tsx +3 -12
  281. package/src/components/ActionTile/ActionTile.mdx +5 -1
  282. package/src/components/ActionTile/ActionTile.tsx +5 -1
  283. package/src/components/AppBar/AppBar.mdx +51 -39
  284. package/src/components/AppBar/AppBar.tsx +149 -263
  285. package/src/components/Avatar/Avatar.mdx +9 -1
  286. package/src/components/AvatarGroup/AvatarGroup.mdx +9 -1
  287. package/src/components/Badge/Badge.mdx +1 -1
  288. package/src/components/Balance/Balance.mdx +62 -0
  289. package/src/components/Balance/Balance.tsx +107 -0
  290. package/src/components/BottomNav/BottomNav.mdx +5 -1
  291. package/src/components/BottomNav/BottomNav.tsx +6 -3
  292. package/src/components/BottomNavItem/BottomNavItem.mdx +5 -1
  293. package/src/components/BottomNavItem/BottomNavItem.tsx +19 -16
  294. package/src/components/Button/Button.mdx +5 -1
  295. package/src/components/ButtonGroup/ButtonGroup.mdx +56 -0
  296. package/src/components/ButtonGroup/ButtonGroup.tsx +78 -0
  297. package/src/components/Card/Card.mdx +1 -1
  298. package/src/components/CardFeedback/CardFeedback.mdx +5 -1
  299. package/src/components/ChipGroup/ChipGroup.mdx +40 -0
  300. package/src/components/ChipGroup/ChipGroup.tsx +67 -0
  301. package/src/components/ChipSelect/ChipSelect.mdx +80 -0
  302. package/src/components/ChipSelect/ChipSelect.tsx +138 -0
  303. package/src/components/CtaCard/CtaCard.mdx +1 -1
  304. package/src/components/CtaCard/CtaCard.tsx +16 -21
  305. package/src/components/Disclaimer/Disclaimer.mdx +5 -1
  306. package/src/components/Disclaimer/Disclaimer.tsx +6 -3
  307. package/src/components/Divider/Divider.mdx +5 -1
  308. package/src/components/Drawer/Drawer.mdx +9 -1
  309. package/src/components/EmptyState/EmptyState.mdx +73 -0
  310. package/src/components/EmptyState/EmptyState.tsx +181 -0
  311. package/src/components/FilterBar/FilterBar.mdx +1 -1
  312. package/src/components/HStack/HStack.mdx +44 -0
  313. package/src/components/HStack/HStack.tsx +95 -0
  314. package/src/components/IconButton/IconButton.mdx +5 -1
  315. package/src/components/IconCapsule/IconCapsule.mdx +12 -4
  316. package/src/components/IconCapsule/IconCapsule.tsx +13 -10
  317. package/src/components/Introduction.mdx +3 -98
  318. package/src/components/LazyList/LazyList.mdx +1 -1
  319. package/src/components/ListGroup/ListGroup.mdx +5 -1
  320. package/src/components/ListGroup/ListGroup.tsx +5 -43
  321. package/src/components/ListItem/ListItem.mdx +5 -1
  322. package/src/components/ListItem/ListItem.tsx +15 -60
  323. package/src/components/MediaCard/MediaCard.mdx +5 -1
  324. package/src/components/MerchantProfile/MerchantProfile.mdx +1 -1
  325. package/src/components/MoneyValue/MoneyValue.mdx +6 -2
  326. package/src/components/NavArrow/NavArrow.mdx +5 -1
  327. package/src/components/NavArrow/NavArrow.tsx +48 -16
  328. package/src/components/PageTitle/PageTitle.mdx +5 -1
  329. package/src/components/PageTitle/PageTitle.tsx +8 -4
  330. package/src/components/Screen/Screen.mdx +58 -0
  331. package/src/components/Screen/Screen.tsx +60 -0
  332. package/src/components/Section/Section.mdx +5 -1
  333. package/src/components/Section/Section.tsx +17 -46
  334. package/src/components/Stepper/Step.mdx +5 -1
  335. package/src/components/Stepper/StepLabel.mdx +5 -1
  336. package/src/components/Stepper/Stepper.mdx +1 -1
  337. package/src/components/SupportText/SupportText.mdx +48 -0
  338. package/src/components/SupportText/SupportText.tsx +104 -0
  339. package/src/components/SupportText/SupportTextIcon.mdx +35 -0
  340. package/src/components/SupportText/SupportTextIcon.tsx +45 -0
  341. package/src/components/SupportText/index.ts +2 -0
  342. package/src/components/TextInput/TextInput.mdx +9 -1
  343. package/src/components/ThreadHero/ThreadHero.mdx +1 -1
  344. package/src/components/Tooltip/Tooltip.mdx +5 -1
  345. package/src/components/TransactionBubble/TransactionBubble.mdx +1 -1
  346. package/src/components/TransactionDetails/TransactionDetails.mdx +1 -1
  347. package/src/components/TransactionDetails/TransactionDetails.tsx +1 -38
  348. package/src/components/TransactionStatus/TransactionStatus.mdx +1 -1
  349. package/src/components/UpiHandle/UpiHandle.mdx +5 -1
  350. package/src/components/UpiHandle/UpiHandle.tsx +4 -1
  351. package/src/components/VStack/VStack.mdx +44 -0
  352. package/src/components/VStack/VStack.tsx +100 -0
  353. package/src/components/index.ts +4 -0
  354. package/src/design-tokens/JFS Variables-variables-full.json +1 -18633
  355. package/src/icons/ic_info.svg +1 -0
  356. package/src/icons/ic_warning.svg +1 -0
  357. package/src/icons/registry.ts +9 -1
  358. package/src/utils/react-utils.ts +51 -0
@@ -0,0 +1,107 @@
1
+ import React from 'react'
2
+ import { View, Text, type StyleProp, type ViewStyle, type TextStyle } from 'react-native'
3
+ import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
4
+ import MoneyValue from '../MoneyValue/MoneyValue'
5
+
6
+ export type BalanceProps = {
7
+ /**
8
+ * Title text displayed above the balance amount.
9
+ * @default "Total owed to people"
10
+ */
11
+ title?: string;
12
+ /**
13
+ * Amount to display in the balance.
14
+ * @default "500"
15
+ */
16
+ amount?: string;
17
+ /**
18
+ * Currency symbol or code.
19
+ * @default "₹"
20
+ */
21
+ currency?: string;
22
+ /**
23
+ * Mode configuration for design tokens.
24
+ */
25
+ modes?: Record<string, any>;
26
+ /**
27
+ * Optional style overrides for the container.
28
+ */
29
+ style?: StyleProp<ViewStyle>;
30
+ /**
31
+ * Optional children content to render instead of the default MoneyValue.
32
+ * Use this slot for custom money value implementations.
33
+ */
34
+ children?: React.ReactNode;
35
+ };
36
+
37
+ /**
38
+ * Balance component that displays a title and a monetary value.
39
+ *
40
+ * @component
41
+ * @example
42
+ * ```jsx
43
+ * <Balance title="Total Balance" amount="12500" />
44
+ * ```
45
+ */
46
+ function Balance({
47
+ title = "Total owed to people",
48
+ amount = "500",
49
+ currency = "₹",
50
+ modes = {},
51
+ style,
52
+ children,
53
+ }: BalanceProps) {
54
+ // Resolve design tokens
55
+ const gap = getVariableByName('balance/gap', modes) ?? 6
56
+
57
+ // Title styles
58
+ const titleColor = getVariableByName('balance/title/foreground', modes) ?? '#0c0d10'
59
+ const titleFontSize = getVariableByName('balance/title/fontSize', modes) ?? 14
60
+ const titleFontFamily = getVariableByName('balance/title/fontFamily', modes) ?? 'System'
61
+ const titleLineHeight = getVariableByName('balance/title/lineHeight', modes) ?? 18
62
+ const titleFontWeightValue = getVariableByName('balance/title/fontWeight', modes) ?? 500
63
+ const titleFontWeight = typeof titleFontWeightValue === 'number'
64
+ ? titleFontWeightValue.toString()
65
+ : titleFontWeightValue
66
+
67
+ const containerStyle: ViewStyle = {
68
+ flexDirection: 'column',
69
+ alignItems: 'flex-start',
70
+ gap: gap,
71
+ }
72
+
73
+ const titleStyle: TextStyle = {
74
+ color: titleColor,
75
+ fontSize: titleFontSize,
76
+ fontFamily: titleFontFamily,
77
+ lineHeight: titleLineHeight,
78
+ fontWeight: titleFontWeight as any,
79
+ }
80
+
81
+ // Handle slot children or default content
82
+ const content = React.Children.map(children, (child) => {
83
+ if (React.isValidElement(child)) {
84
+ return React.cloneElement(child, { modes } as any)
85
+ }
86
+ return child
87
+ })
88
+
89
+ return (
90
+ <View style={[containerStyle, style]} data-node-id="1986:6203">
91
+ <Text style={titleStyle} data-node-id="1986:2613">
92
+ {title}
93
+ </Text>
94
+ {children ? (
95
+ content
96
+ ) : (
97
+ <MoneyValue
98
+ value={amount}
99
+ currency={currency}
100
+ modes={modes}
101
+ />
102
+ )}
103
+ </View>
104
+ )
105
+ }
106
+
107
+ export default Balance
@@ -1,4 +1,4 @@
1
- import { Meta, Story, Canvas, PureArgsTable as ArgsTable } from '@storybook/addon-docs/blocks';
1
+ import { Meta, Story, Canvas, Controls } from '@storybook/blocks';
2
2
  import * as BottomNavStories from './BottomNav.stories';
3
3
  import BottomNav from './BottomNav';
4
4
  import { AccessibilitySection, AnatomySection, UsageConstraintsSection } from '../docs/DocSections';
@@ -16,6 +16,10 @@ This component uses the following design token collections. Each collection supp
16
16
  ### Color Mode
17
17
  - **Modes:** Light | Dark
18
18
  - **Default:** Light
19
+
20
+ ### Colors Router
21
+ - **Modes:** POC | Old
22
+ - **Default:** POC
19
23
  ## Usage
20
24
 
21
25
  <Canvas>
@@ -1,6 +1,7 @@
1
1
  import React from 'react'
2
2
  import { View, type StyleProp, type ViewStyle } from 'react-native'
3
3
  import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
4
+ import { useTokens } from '../../design-tokens/JFSThemeProvider'
4
5
  import BottomNavItem from '../BottomNavItem/BottomNavItem'
5
6
 
6
7
  type BottomNavItemType = {
@@ -54,13 +55,15 @@ function BottomNav({
54
55
  { key: 'invest', label: 'Invest', iconName: 'ic_rupee_coin' },
55
56
  { key: 'explore', label: 'Explore', iconName: 'ic_search' },
56
57
  ],
57
- modes = {},
58
+ modes: propModes = {},
58
59
  onItemPress,
59
60
  style,
60
61
  accessibilityLabel = "Bottom navigation",
61
62
  accessibilityHint,
62
63
  ...rest
63
64
  }: BottomNavProps) {
65
+ const { modes: globalModes } = useTokens()
66
+ const modes = { ...globalModes, ...propModes }
64
67
  // Resolve container styling tokens
65
68
  const backgroundColor = getVariableByName('bottomNav/background', modes) || '#ffffff'
66
69
  const borderColor = getVariableByName('bottomNav/border/color', modes) || '#cccfd1'
@@ -108,7 +111,7 @@ function BottomNav({
108
111
  if (key === 'Enter' || key === ' ' || key === 'Spacebar') {
109
112
  handlePress()
110
113
  }
111
- ;(item as any)?.onKeyPress?.(e)
114
+ ; (item as any)?.onKeyPress?.(e)
112
115
  },
113
116
  } : {})}
114
117
  {...(item.disabled !== undefined ? { disabled: item.disabled } : {})}
@@ -121,7 +124,7 @@ function BottomNav({
121
124
  }
122
125
 
123
126
  return (
124
- <View
127
+ <View
125
128
  style={[containerStyle, style]}
126
129
  accessibilityRole="tablist"
127
130
  accessibilityLabel={accessibilityLabel}
@@ -1,4 +1,4 @@
1
- import { Meta, Story, Canvas, PureArgsTable as ArgsTable } from '@storybook/addon-docs/blocks';
1
+ import { Meta, Story, Canvas, Controls } from '@storybook/blocks';
2
2
  import * as BottomNavItemStories from './BottomNavItem.stories';
3
3
  import BottomNavItem from './BottomNavItem';
4
4
  import { AccessibilitySection, AnatomySection, UsageConstraintsSection } from '../docs/DocSections';
@@ -20,6 +20,10 @@ This component uses the following design token collections. Each collection supp
20
20
  ### Color Mode
21
21
  - **Modes:** Light | Dark
22
22
  - **Default:** Light
23
+
24
+ ### Colors Router
25
+ - **Modes:** POC | Old
26
+ - **Default:** POC
23
27
  ## Usage
24
28
 
25
29
  <Canvas>
@@ -9,6 +9,7 @@ import {
9
9
  type ViewStyle,
10
10
  } from 'react-native'
11
11
  import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
12
+ import { useTokens } from '../../design-tokens/JFSThemeProvider'
12
13
  import Icon from '../../icons/Icon'
13
14
  import { usePressableWebSupport, type SafePressableProps, type WebAccessibilityProps } from '../../utils/web-platform-utils'
14
15
 
@@ -56,7 +57,7 @@ type BottomNavItemProps = SafePressableProps & {
56
57
  function BottomNavItem({
57
58
  iconName = 'ic_home',
58
59
  label = 'Home',
59
- modes = {},
60
+ modes: propModes = {},
60
61
  onPress,
61
62
  disabled = false,
62
63
  style,
@@ -69,6 +70,8 @@ function BottomNavItem({
69
70
  webAccessibilityProps,
70
71
  ...rest
71
72
  }: BottomNavItemProps) {
73
+ const { modes: globalModes } = useTokens()
74
+ const modes = { ...globalModes, ...propModes }
72
75
  const [isFocused, setIsFocused] = useState(false)
73
76
  const [isHovered, setIsHovered] = useState(false)
74
77
  const pressedStyle = { opacity: 0.7 }
@@ -119,14 +122,14 @@ function BottomNavItem({
119
122
 
120
123
  const renderContent = () => (
121
124
  <>
122
- <Icon
123
- name={iconName}
124
- size={resolvedIconSize}
125
+ <Icon
126
+ name={iconName}
127
+ size={resolvedIconSize}
125
128
  color={resolvedIconColor}
126
129
  accessibilityElementsHidden={true}
127
130
  importantForAccessibility="no"
128
131
  />
129
- <Text
132
+ <Text
130
133
  style={[textStyle, labelStyle]}
131
134
  accessibilityElementsHidden={true}
132
135
  importantForAccessibility="no"
@@ -138,14 +141,14 @@ function BottomNavItem({
138
141
 
139
142
  if (!onPress) {
140
143
  return (
141
- <View
144
+ <View
142
145
  style={[baseContainerStyle, style]}
143
146
  accessibilityRole="tab"
144
147
  accessibilityLabel={defaultAccessibilityLabel}
145
148
  accessibilityHint={accessibilityHint}
146
- accessibilityState={{
149
+ accessibilityState={{
147
150
  disabled,
148
- ...accessibilityState
151
+ ...accessibilityState
149
152
  }}
150
153
  {...rest}
151
154
  >
@@ -159,34 +162,34 @@ function BottomNavItem({
159
162
  accessibilityRole="tab"
160
163
  accessibilityLabel={defaultAccessibilityLabel}
161
164
  accessibilityHint={accessibilityHint}
162
- accessibilityState={{
165
+ accessibilityState={{
163
166
  disabled,
164
167
  selected: accessibilityState?.selected,
165
- ...accessibilityState
168
+ ...accessibilityState
166
169
  }}
167
170
  onPress={onPress}
168
171
  disabled={disabled}
169
172
  onPressIn={(e: any) => {
170
- ;(rest as any)?.onPressIn?.(e)
173
+ ; (rest as any)?.onPressIn?.(e)
171
174
  }}
172
175
  onPressOut={(e: any) => {
173
- ;(rest as any)?.onPressOut?.(e)
176
+ ; (rest as any)?.onPressOut?.(e)
174
177
  }}
175
178
  onFocus={(e: any) => {
176
179
  setIsFocused(true)
177
- ;(rest as any)?.onFocus?.(e)
180
+ ; (rest as any)?.onFocus?.(e)
178
181
  }}
179
182
  onBlur={(e: any) => {
180
183
  setIsFocused(false)
181
- ;(rest as any)?.onBlur?.(e)
184
+ ; (rest as any)?.onBlur?.(e)
182
185
  }}
183
186
  onHoverIn={(e: any) => {
184
187
  setIsHovered(true)
185
- ;(rest as any)?.onHoverIn?.(e)
188
+ ; (rest as any)?.onHoverIn?.(e)
186
189
  }}
187
190
  onHoverOut={(e: any) => {
188
191
  setIsHovered(false)
189
- ;(rest as any)?.onHoverOut?.(e)
192
+ ; (rest as any)?.onHoverOut?.(e)
190
193
  }}
191
194
  style={({ pressed }) =>
192
195
  [
@@ -1,4 +1,4 @@
1
- import { Meta, Story, Canvas, PureArgsTable as ArgsTable } from '@storybook/addon-docs/blocks';
1
+ import { Meta, Story, Canvas, Controls } from '@storybook/blocks';
2
2
  import * as ButtonStories from './Button.stories';
3
3
  import Button from './Button';
4
4
  import { AccessibilitySection, AnatomySection, UsageConstraintsSection } from '../docs/DocSections';
@@ -29,6 +29,10 @@ This component uses the following design token collections. Each collection supp
29
29
  - **Modes:** Light | Dark
30
30
  - **Default:** Light
31
31
 
32
+ ### Colors Router
33
+ - **Modes:** POC | Old
34
+ - **Default:** POC
35
+
32
36
  ### Appearance.System
33
37
  - **Modes:** positive | warning | negative
34
38
  - **Default:** positive
@@ -0,0 +1,56 @@
1
+ {/* ButtonGroup.mdx */}
2
+
3
+ import { Canvas, Meta, Story, Controls } from '@storybook/blocks';
4
+ import * as ButtonGroupStories from './ButtonGroup.stories';
5
+
6
+ <Meta of={ButtonGroupStories} />
7
+
8
+ # Button Group
9
+
10
+ A layout container that organizes multiple buttons (typically `IconButton`) in a horizontal row with consistent spacing as defined by design tokens.
11
+
12
+ The `ButtonGroup` component automatically passes its `modes` prop down to all valid React children, ensuring that the entire group responds to theme or mode changes in unison.
13
+
14
+
15
+ ## Available Collections and Modes
16
+
17
+ This component does not use any design token collections with multiple modes.
18
+ ## Usage
19
+
20
+ ```tsx
21
+ import { ButtonGroup, IconButton } from 'jfs-components';
22
+
23
+ function MyHeader() {
24
+ return (
25
+ <ButtonGroup modes={{ "Appearance": "dark" }}>
26
+ <IconButton iconName="ic_qr_code" />
27
+ <IconButton iconName="ic_photo" />
28
+ </ButtonGroup>
29
+ );
30
+ }
31
+ ```
32
+
33
+ ## Props
34
+
35
+ <Controls />
36
+
37
+ ## Examples
38
+
39
+ ### Default
40
+
41
+ <Canvas of={ButtonGroupStories.Default} />
42
+
43
+ ### With Custom Modes
44
+
45
+ <Canvas of={ButtonGroupStories.WithModes} />
46
+
47
+
48
+ ## Design Tokens
49
+
50
+ This component uses the following design tokens, resolved through `getVariableByName`:
51
+
52
+ - **`buttonGroup/padding/gap`**
53
+ - **`buttonGroup/padding/horizontal`**
54
+ - **`buttonGroup/padding/vertical`**
55
+
56
+ All tokens support mode-based theming through the `modes` prop.
@@ -0,0 +1,78 @@
1
+ import React from 'react'
2
+ import {
3
+ View,
4
+ type StyleProp,
5
+ type ViewStyle,
6
+ } from 'react-native'
7
+ import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
8
+
9
+ export type ButtonGroupProps = {
10
+ /**
11
+ * Child elements to be rendered inside the button group.
12
+ * Typically generic buttons or icon buttons.
13
+ */
14
+ children?: React.ReactNode;
15
+ /**
16
+ * Mode configuration for design tokens (e.g., {"Button / Size": "M", "Appearance": "high"})
17
+ * These modes are passed down to all child components.
18
+ */
19
+ modes?: Record<string, any>;
20
+ /**
21
+ * Additional styles for the container
22
+ */
23
+ style?: StyleProp<ViewStyle>;
24
+ };
25
+
26
+ /**
27
+ * ButtonGroup component that aggregates multiple buttons (e.g., IconButton)
28
+ * and handles their layout and styling/theming via design tokens.
29
+ *
30
+ * It passes the provided `modes` to all its immediate React Element children.
31
+ *
32
+ * @component
33
+ * @example
34
+ * ```jsx
35
+ * <ButtonGroup modes={{"Appearance": "light"}}>
36
+ * <IconButton iconName="ic_qr_code" />
37
+ * <IconButton iconName="ic_photo" />
38
+ * </ButtonGroup>
39
+ * ```
40
+ */
41
+ function ButtonGroup({
42
+ children,
43
+ modes = {},
44
+ style,
45
+ }: ButtonGroupProps) {
46
+ // Resolve design tokens
47
+ const gap = getVariableByName('buttonGroup/padding/gap', modes) ?? 12
48
+ const paddingHorizontal = getVariableByName('buttonGroup/padding/horizontal', modes) ?? 0
49
+ const paddingVertical = getVariableByName('buttonGroup/padding/vertical', modes) ?? 0
50
+
51
+ // Container style
52
+ const containerStyle: ViewStyle = {
53
+ flexDirection: 'row',
54
+ alignItems: 'center',
55
+ gap: gap,
56
+ paddingHorizontal: paddingHorizontal,
57
+ paddingVertical: paddingVertical,
58
+ }
59
+
60
+ // Clone children to pass `modes` prop
61
+ const childrenWithModes = React.Children.map(children, (child) => {
62
+ if (React.isValidElement(child)) {
63
+ // We safely try to pass `modes` to the child.
64
+ // If the child doesn't accept `modes`, it will just be an extra prop which is usually fine in React,
65
+ // but ideally children should be components that respect `modes`.
66
+ return React.cloneElement(child, { modes: modes } as any)
67
+ }
68
+ return child
69
+ })
70
+
71
+ return (
72
+ <View style={[containerStyle, style]}>
73
+ {childrenWithModes}
74
+ </View>
75
+ )
76
+ }
77
+
78
+ export default ButtonGroup
@@ -1,4 +1,4 @@
1
- import { Meta, Story, Canvas, PureArgsTable as ArgsTable } from '@storybook/addon-docs/blocks';
1
+ import { Meta, Story, Canvas, Controls } from '@storybook/blocks';
2
2
  import * as CardStories from './Card.stories';
3
3
  import Card from './Card';
4
4
  import { AnatomySection, UsageConstraintsSection } from '../docs/DocSections';
@@ -1,4 +1,4 @@
1
- import { Meta, Story, Canvas, PureArgsTable as ArgsTable } from '@storybook/addon-docs/blocks';
1
+ import { Meta, Story, Canvas, Controls } from '@storybook/blocks';
2
2
  import * as CardFeedbackStories from './CardFeedback.stories';
3
3
  import CardFeedback from './CardFeedback';
4
4
  import { AccessibilitySection, AnatomySection, UsageConstraintsSection } from '../docs/DocSections';
@@ -21,6 +21,10 @@ This component uses the following design token collections. Each collection supp
21
21
  - **Modes:** Light | Dark
22
22
  - **Default:** Light
23
23
 
24
+ ### Colors Router
25
+ - **Modes:** POC | Old
26
+ - **Default:** POC
27
+
24
28
  ### Appearance.Brand
25
29
  - **Modes:** Primary | Secondary | Neutral
26
30
  - **Default:** Primary
@@ -0,0 +1,40 @@
1
+ import { Meta, Title, Subtitle, Description, Primary, Controls, Stories, Story } from '@storybook/addon-docs';
2
+ import * as ChipGroupStories from './ChipGroup.stories';
3
+
4
+ <Meta of={ChipGroupStories} />
5
+
6
+ <Title />
7
+ <Subtitle />
8
+ <Description />
9
+
10
+
11
+ ## Available Collections and Modes
12
+
13
+ This component does not use any design token collections with multiple modes.
14
+ ## Usage
15
+
16
+ ```tsx
17
+ import { ChipGroup } from 'jfs-components';
18
+ import { ChipSelect } from 'jfs-components';
19
+
20
+ const MyComponent = () => (
21
+ <ChipGroup>
22
+ <ChipSelect label="Option 1" />
23
+ <ChipSelect label="Option 2" />
24
+ <ChipSelect label="Option 3" />
25
+ </ChipGroup>
26
+ );
27
+ ```
28
+
29
+ <Primary />
30
+ <Controls />
31
+ <Stories />
32
+
33
+
34
+ ## Design Tokens
35
+
36
+ This component uses the following design tokens, resolved through `getVariableByName`:
37
+
38
+ - **`chipGroup/gap`**
39
+
40
+ All tokens support mode-based theming through the `modes` prop.
@@ -0,0 +1,67 @@
1
+ import React from 'react';
2
+ import { View, type StyleProp, type ViewStyle } from 'react-native';
3
+ import { getVariableByName } from '../../design-tokens/figma-variables-resolver';
4
+
5
+ export type ChipGroupProps = {
6
+ /**
7
+ * Child elements to be rendered inside the chip group.
8
+ * Expects ChipSelect components.
9
+ */
10
+ children?: React.ReactNode;
11
+ /**
12
+ * Mode configuration for design tokens.
13
+ * These modes are passed down to all child components.
14
+ */
15
+ modes?: Record<string, any>;
16
+ /**
17
+ * Additional styles for the container.
18
+ */
19
+ style?: StyleProp<ViewStyle>;
20
+ /**
21
+ * Test ID for testing.
22
+ */
23
+ testID?: string;
24
+ };
25
+
26
+ /**
27
+ * ChipGroup component that handles layout and spacing for ChipSelect components.
28
+ * Based on Figma Node 1905-5123.
29
+ */
30
+ function ChipGroup({
31
+ children,
32
+ modes = {},
33
+ style,
34
+ testID,
35
+ }: ChipGroupProps) {
36
+ // --- Token Resolution ---
37
+ const gap = parseInt(getVariableByName('chipGroup/gap', modes), 10) || 8;
38
+
39
+ // --- Styles ---
40
+ const containerStyle: ViewStyle = {
41
+ flexDirection: 'row',
42
+ alignItems: 'flex-start',
43
+ flexWrap: 'wrap',
44
+ gap: gap,
45
+ };
46
+
47
+ // Clone children to pass `modes` prop
48
+ const childrenWithModes = React.Children.map(children, (child) => {
49
+ if (React.isValidElement(child)) {
50
+ // Pass merged modes (parent modes + child modes)
51
+ // Note: We don't have access to child's existing props here to merge modes perfectly if they were passed directly to child
52
+ // But usually we want parent modes to override or augment.
53
+ // For now, simpler approach: just pass the parent modes, assuming child will handle merging if it needs to.
54
+ // Actually, based on previous ButtonGroup example, we just pass { modes: modes }.
55
+ return React.cloneElement(child, { modes: modes } as any);
56
+ }
57
+ return child;
58
+ });
59
+
60
+ return (
61
+ <View style={[containerStyle, style]} testID={testID}>
62
+ {childrenWithModes}
63
+ </View>
64
+ );
65
+ }
66
+
67
+ export default ChipGroup;
@@ -0,0 +1,80 @@
1
+ import { Meta, Title, Subtitle, Description, Primary, Controls, Stories } from '@storybook/blocks';
2
+ import * as ChipSelectStories from './ChipSelect.stories';
3
+
4
+ <Meta of={ChipSelectStories} />
5
+
6
+ <Title />
7
+ <Subtitle>
8
+ A selection chip component that toggles between Idle and Active states.
9
+ </Subtitle>
10
+
11
+ <Description>
12
+ The `ChipSelect` component is used for making selections, such as dates or filters.
13
+ It supports two states driven by the `active` prop:
14
+ - **Idle (`active={false}`)**: Customize with an icon and label.
15
+ - **Active (`active={true}`)**: Displays the label and a close icon. The start icon remains visible if provided.
16
+
17
+ Styling is driven by Figma tokens via `getVariableByName`.
18
+ </Description>
19
+
20
+ <Primary />
21
+
22
+ <Controls />
23
+
24
+
25
+ ## Available Collections and Modes
26
+
27
+ This component uses the following design token collections. Each collection supports multiple modes that can be configured via the `modes` prop.
28
+
29
+ ### ChipSelect State
30
+ - **Modes:** Idle | Active
31
+ - **Default:** Idle
32
+
33
+ ### Color Mode
34
+ - **Modes:** Light | Dark
35
+ - **Default:** Light
36
+
37
+ ### Colors Router
38
+ - **Modes:** POC | Old
39
+ - **Default:** POC
40
+ ## Usage
41
+
42
+ ```tsx
43
+ import ChipSelect from './ChipSelect';
44
+
45
+ // Idle State (Icon + Label)
46
+ <ChipSelect
47
+ label="Select Date"
48
+ active={false}
49
+ icon="ic_calendar_week"
50
+ />
51
+
52
+ // Active State (Icon + Label + Close Icon)
53
+ <ChipSelect
54
+ label="12 Oct 2023"
55
+ active={true}
56
+ icon="ic_calendar_week"
57
+ close={true}
58
+ />
59
+ ```
60
+
61
+ <Stories />
62
+
63
+
64
+ ## Design Tokens
65
+
66
+ This component uses the following design tokens, resolved through `getVariableByName`:
67
+
68
+ - **`chipSelect/background`**
69
+ - **`chipSelect/fontFamily`**
70
+ - **`chipSelect/fontSize`**
71
+ - **`chipSelect/fontWeight`**
72
+ - **`chipSelect/foreground`**
73
+ - **`chipSelect/gap`**
74
+ - **`chipSelect/icon/size`**
75
+ - **`chipSelect/lineHeight`**
76
+ - **`chipSelect/padding/horizontal`**
77
+ - **`chipSelect/padding/vertical`**
78
+ - **`chipSelect/radius`**
79
+
80
+ All tokens support mode-based theming through the `modes` prop.