jfs-components 0.0.6 → 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 (315) 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.mdx +5 -1
  6. package/lib/commonjs/components/AppBar/AppBar.js +100 -238
  7. package/lib/commonjs/components/AppBar/AppBar.js.map +1 -1
  8. package/lib/commonjs/components/AppBar/AppBar.mdx +51 -39
  9. package/lib/commonjs/components/Avatar/Avatar.mdx +9 -1
  10. package/lib/commonjs/components/AvatarGroup/AvatarGroup.mdx +9 -1
  11. package/lib/commonjs/components/Badge/Badge.mdx +1 -1
  12. package/lib/commonjs/components/Balance/Balance.js +77 -0
  13. package/lib/commonjs/components/Balance/Balance.js.map +1 -0
  14. package/lib/commonjs/components/Balance/Balance.mdx +62 -0
  15. package/lib/commonjs/components/BottomNav/BottomNav.mdx +5 -1
  16. package/lib/commonjs/components/BottomNavItem/BottomNavItem.mdx +5 -1
  17. package/lib/commonjs/components/Button/Button.mdx +5 -1
  18. package/lib/commonjs/components/ButtonGroup/ButtonGroup.js +64 -0
  19. package/lib/commonjs/components/ButtonGroup/ButtonGroup.js.map +1 -0
  20. package/lib/commonjs/components/ButtonGroup/ButtonGroup.mdx +56 -0
  21. package/lib/commonjs/components/Card/Card.mdx +1 -1
  22. package/lib/commonjs/components/CardFeedback/CardFeedback.mdx +5 -1
  23. package/lib/commonjs/components/ChipGroup/ChipGroup.js +54 -0
  24. package/lib/commonjs/components/ChipGroup/ChipGroup.js.map +1 -0
  25. package/lib/commonjs/components/ChipGroup/ChipGroup.mdx +40 -0
  26. package/lib/commonjs/components/ChipSelect/ChipSelect.js +103 -0
  27. package/lib/commonjs/components/ChipSelect/ChipSelect.js.map +1 -0
  28. package/lib/commonjs/components/ChipSelect/ChipSelect.mdx +80 -0
  29. package/lib/commonjs/components/CtaCard/CtaCard.js +5 -18
  30. package/lib/commonjs/components/CtaCard/CtaCard.js.map +1 -1
  31. package/lib/commonjs/components/CtaCard/CtaCard.mdx +1 -1
  32. package/lib/commonjs/components/Disclaimer/Disclaimer.mdx +5 -1
  33. package/lib/commonjs/components/Divider/Divider.mdx +5 -1
  34. package/lib/commonjs/components/Drawer/Drawer.mdx +9 -1
  35. package/lib/commonjs/components/EmptyState/EmptyState.js +138 -0
  36. package/lib/commonjs/components/EmptyState/EmptyState.js.map +1 -0
  37. package/lib/commonjs/components/EmptyState/EmptyState.mdx +73 -0
  38. package/lib/commonjs/components/FilterBar/FilterBar.mdx +1 -1
  39. package/lib/commonjs/components/HStack/HStack.js +67 -0
  40. package/lib/commonjs/components/HStack/HStack.js.map +1 -0
  41. package/lib/commonjs/components/HStack/HStack.mdx +44 -0
  42. package/lib/commonjs/components/IconButton/IconButton.mdx +5 -1
  43. package/lib/commonjs/components/IconCapsule/IconCapsule.js +3 -3
  44. package/lib/commonjs/components/IconCapsule/IconCapsule.js.map +1 -1
  45. package/lib/commonjs/components/IconCapsule/IconCapsule.mdx +12 -4
  46. package/lib/commonjs/components/Introduction.mdx +3 -98
  47. package/lib/commonjs/components/LazyList/LazyList.mdx +1 -1
  48. package/lib/commonjs/components/ListGroup/ListGroup.js +3 -30
  49. package/lib/commonjs/components/ListGroup/ListGroup.js.map +1 -1
  50. package/lib/commonjs/components/ListGroup/ListGroup.mdx +5 -1
  51. package/lib/commonjs/components/ListItem/ListItem.js +5 -37
  52. package/lib/commonjs/components/ListItem/ListItem.js.map +1 -1
  53. package/lib/commonjs/components/ListItem/ListItem.mdx +5 -1
  54. package/lib/commonjs/components/MediaCard/MediaCard.mdx +5 -1
  55. package/lib/commonjs/components/MerchantProfile/MerchantProfile.mdx +1 -1
  56. package/lib/commonjs/components/MoneyValue/MoneyValue.mdx +6 -2
  57. package/lib/commonjs/components/NavArrow/NavArrow.js +42 -17
  58. package/lib/commonjs/components/NavArrow/NavArrow.js.map +1 -1
  59. package/lib/commonjs/components/NavArrow/NavArrow.mdx +5 -1
  60. package/lib/commonjs/components/PageTitle/PageTitle.mdx +5 -1
  61. package/lib/commonjs/components/Screen/Screen.js +53 -0
  62. package/lib/commonjs/components/Screen/Screen.js.map +1 -0
  63. package/lib/commonjs/components/Screen/Screen.mdx +58 -0
  64. package/lib/commonjs/components/Section/Section.js +3 -25
  65. package/lib/commonjs/components/Section/Section.js.map +1 -1
  66. package/lib/commonjs/components/Section/Section.mdx +5 -1
  67. package/lib/commonjs/components/Stepper/Step.mdx +5 -1
  68. package/lib/commonjs/components/Stepper/StepLabel.mdx +5 -1
  69. package/lib/commonjs/components/Stepper/Stepper.mdx +1 -1
  70. package/lib/commonjs/components/SupportText/SupportText.js +83 -0
  71. package/lib/commonjs/components/SupportText/SupportText.js.map +1 -0
  72. package/lib/commonjs/components/SupportText/SupportText.mdx +48 -0
  73. package/lib/commonjs/components/SupportText/SupportTextIcon.js +47 -0
  74. package/lib/commonjs/components/SupportText/SupportTextIcon.js.map +1 -0
  75. package/lib/commonjs/components/SupportText/SupportTextIcon.mdx +35 -0
  76. package/lib/commonjs/components/SupportText/index.js +21 -0
  77. package/lib/commonjs/components/SupportText/index.js.map +1 -0
  78. package/lib/commonjs/components/TextInput/TextInput.mdx +9 -1
  79. package/lib/commonjs/components/ThreadHero/ThreadHero.mdx +1 -1
  80. package/lib/commonjs/components/Tooltip/Tooltip.mdx +5 -1
  81. package/lib/commonjs/components/TransactionBubble/TransactionBubble.mdx +1 -1
  82. package/lib/commonjs/components/TransactionDetails/TransactionDetails.js +2 -24
  83. package/lib/commonjs/components/TransactionDetails/TransactionDetails.js.map +1 -1
  84. package/lib/commonjs/components/TransactionDetails/TransactionDetails.mdx +1 -1
  85. package/lib/commonjs/components/TransactionStatus/TransactionStatus.mdx +1 -1
  86. package/lib/commonjs/components/UpiHandle/UpiHandle.mdx +5 -1
  87. package/lib/commonjs/components/VStack/VStack.js +73 -0
  88. package/lib/commonjs/components/VStack/VStack.js.map +1 -0
  89. package/lib/commonjs/components/VStack/VStack.mdx +44 -0
  90. package/lib/commonjs/components/index.js +28 -0
  91. package/lib/commonjs/components/index.js.map +1 -1
  92. package/lib/commonjs/design-tokens/JFS Variables-variables-full.json +1 -18633
  93. package/lib/commonjs/design-tokens/figma-variables-resolver.js +3 -9
  94. package/lib/commonjs/design-tokens/figma-variables-resolver.js.map +1 -2
  95. package/lib/commonjs/icons/ic_info.svg +1 -0
  96. package/lib/commonjs/icons/ic_warning.svg +1 -0
  97. package/lib/commonjs/icons/registry.js +2 -2
  98. package/lib/commonjs/icons/registry.js.map +1 -1
  99. package/lib/commonjs/utils/react-utils.js +47 -0
  100. package/lib/commonjs/utils/react-utils.js.map +1 -0
  101. package/lib/module/components/Accordion/Accordion.mdx +1 -1
  102. package/lib/module/components/ActionFooter/ActionFooter.js +2 -14
  103. package/lib/module/components/ActionFooter/ActionFooter.js.map +1 -1
  104. package/lib/module/components/ActionFooter/ActionFooter.mdx +1 -1
  105. package/lib/module/components/ActionTile/ActionTile.mdx +5 -1
  106. package/lib/module/components/AppBar/AppBar.js +100 -238
  107. package/lib/module/components/AppBar/AppBar.js.map +1 -1
  108. package/lib/module/components/AppBar/AppBar.mdx +51 -39
  109. package/lib/module/components/Avatar/Avatar.mdx +9 -1
  110. package/lib/module/components/AvatarGroup/AvatarGroup.mdx +9 -1
  111. package/lib/module/components/Badge/Badge.mdx +1 -1
  112. package/lib/module/components/Balance/Balance.js +72 -0
  113. package/lib/module/components/Balance/Balance.js.map +1 -0
  114. package/lib/module/components/Balance/Balance.mdx +62 -0
  115. package/lib/module/components/BottomNav/BottomNav.mdx +5 -1
  116. package/lib/module/components/BottomNavItem/BottomNavItem.mdx +5 -1
  117. package/lib/module/components/Button/Button.mdx +5 -1
  118. package/lib/module/components/ButtonGroup/ButtonGroup.js +59 -0
  119. package/lib/module/components/ButtonGroup/ButtonGroup.js.map +1 -0
  120. package/lib/module/components/ButtonGroup/ButtonGroup.mdx +56 -0
  121. package/lib/module/components/Card/Card.mdx +1 -1
  122. package/lib/module/components/CardFeedback/CardFeedback.mdx +5 -1
  123. package/lib/module/components/ChipGroup/ChipGroup.js +49 -0
  124. package/lib/module/components/ChipGroup/ChipGroup.js.map +1 -0
  125. package/lib/module/components/ChipGroup/ChipGroup.mdx +40 -0
  126. package/lib/module/components/ChipSelect/ChipSelect.js +98 -0
  127. package/lib/module/components/ChipSelect/ChipSelect.js.map +1 -0
  128. package/lib/module/components/ChipSelect/ChipSelect.mdx +80 -0
  129. package/lib/module/components/CtaCard/CtaCard.js +5 -18
  130. package/lib/module/components/CtaCard/CtaCard.js.map +1 -1
  131. package/lib/module/components/CtaCard/CtaCard.mdx +1 -1
  132. package/lib/module/components/Disclaimer/Disclaimer.mdx +5 -1
  133. package/lib/module/components/Divider/Divider.mdx +5 -1
  134. package/lib/module/components/Drawer/Drawer.mdx +9 -1
  135. package/lib/module/components/EmptyState/EmptyState.js +132 -0
  136. package/lib/module/components/EmptyState/EmptyState.js.map +1 -0
  137. package/lib/module/components/EmptyState/EmptyState.mdx +73 -0
  138. package/lib/module/components/FilterBar/FilterBar.mdx +1 -1
  139. package/lib/module/components/HStack/HStack.js +61 -0
  140. package/lib/module/components/HStack/HStack.js.map +1 -0
  141. package/lib/module/components/HStack/HStack.mdx +44 -0
  142. package/lib/module/components/IconButton/IconButton.mdx +5 -1
  143. package/lib/module/components/IconCapsule/IconCapsule.js +3 -3
  144. package/lib/module/components/IconCapsule/IconCapsule.js.map +1 -1
  145. package/lib/module/components/IconCapsule/IconCapsule.mdx +12 -4
  146. package/lib/module/components/Introduction.mdx +3 -98
  147. package/lib/module/components/LazyList/LazyList.mdx +1 -1
  148. package/lib/module/components/ListGroup/ListGroup.js +1 -30
  149. package/lib/module/components/ListGroup/ListGroup.js.map +1 -1
  150. package/lib/module/components/ListGroup/ListGroup.mdx +5 -1
  151. package/lib/module/components/ListItem/ListItem.js +1 -35
  152. package/lib/module/components/ListItem/ListItem.js.map +1 -1
  153. package/lib/module/components/ListItem/ListItem.mdx +5 -1
  154. package/lib/module/components/MediaCard/MediaCard.mdx +5 -1
  155. package/lib/module/components/MerchantProfile/MerchantProfile.mdx +1 -1
  156. package/lib/module/components/MoneyValue/MoneyValue.mdx +6 -2
  157. package/lib/module/components/NavArrow/NavArrow.js +42 -17
  158. package/lib/module/components/NavArrow/NavArrow.js.map +1 -1
  159. package/lib/module/components/NavArrow/NavArrow.mdx +5 -1
  160. package/lib/module/components/PageTitle/PageTitle.mdx +5 -1
  161. package/lib/module/components/Screen/Screen.js +47 -0
  162. package/lib/module/components/Screen/Screen.js.map +1 -0
  163. package/lib/module/components/Screen/Screen.mdx +58 -0
  164. package/lib/module/components/Section/Section.js +1 -23
  165. package/lib/module/components/Section/Section.js.map +1 -1
  166. package/lib/module/components/Section/Section.mdx +5 -1
  167. package/lib/module/components/Stepper/Step.mdx +5 -1
  168. package/lib/module/components/Stepper/StepLabel.mdx +5 -1
  169. package/lib/module/components/Stepper/Stepper.mdx +1 -1
  170. package/lib/module/components/SupportText/SupportText.js +78 -0
  171. package/lib/module/components/SupportText/SupportText.js.map +1 -0
  172. package/lib/module/components/SupportText/SupportText.mdx +48 -0
  173. package/lib/module/components/SupportText/SupportTextIcon.js +42 -0
  174. package/lib/module/components/SupportText/SupportTextIcon.js.map +1 -0
  175. package/lib/module/components/SupportText/SupportTextIcon.mdx +35 -0
  176. package/lib/module/components/SupportText/index.js +5 -0
  177. package/lib/module/components/SupportText/index.js.map +1 -0
  178. package/lib/module/components/TextInput/TextInput.mdx +9 -1
  179. package/lib/module/components/ThreadHero/ThreadHero.mdx +1 -1
  180. package/lib/module/components/Tooltip/Tooltip.mdx +5 -1
  181. package/lib/module/components/TransactionBubble/TransactionBubble.mdx +1 -1
  182. package/lib/module/components/TransactionDetails/TransactionDetails.js +2 -26
  183. package/lib/module/components/TransactionDetails/TransactionDetails.js.map +1 -1
  184. package/lib/module/components/TransactionDetails/TransactionDetails.mdx +1 -1
  185. package/lib/module/components/TransactionStatus/TransactionStatus.mdx +1 -1
  186. package/lib/module/components/UpiHandle/UpiHandle.mdx +5 -1
  187. package/lib/module/components/VStack/VStack.js +67 -0
  188. package/lib/module/components/VStack/VStack.js.map +1 -0
  189. package/lib/module/components/VStack/VStack.mdx +44 -0
  190. package/lib/module/components/index.js +4 -0
  191. package/lib/module/components/index.js.map +1 -1
  192. package/lib/module/design-tokens/JFS Variables-variables-full.json +1 -18633
  193. package/lib/module/design-tokens/figma-variables-resolver.js +2 -2
  194. package/lib/module/design-tokens/figma-variables-resolver.js.map +0 -1
  195. package/lib/module/icons/ic_info.svg +1 -0
  196. package/lib/module/icons/ic_warning.svg +1 -0
  197. package/lib/module/icons/registry.js +2 -2
  198. package/lib/module/icons/registry.js.map +1 -1
  199. package/lib/module/utils/react-utils.js +43 -0
  200. package/lib/module/utils/react-utils.js.map +1 -0
  201. package/lib/typescript/components/ActionFooter/ActionFooter.d.ts.map +1 -1
  202. package/lib/typescript/components/AppBar/AppBar.d.ts +34 -68
  203. package/lib/typescript/components/AppBar/AppBar.d.ts.map +1 -1
  204. package/lib/typescript/components/Balance/Balance.d.ts +44 -0
  205. package/lib/typescript/components/Balance/Balance.d.ts.map +1 -0
  206. package/lib/typescript/components/ButtonGroup/ButtonGroup.d.ts +36 -0
  207. package/lib/typescript/components/ButtonGroup/ButtonGroup.d.ts.map +1 -0
  208. package/lib/typescript/components/ChipGroup/ChipGroup.d.ts +29 -0
  209. package/lib/typescript/components/ChipGroup/ChipGroup.d.ts.map +1 -0
  210. package/lib/typescript/components/ChipSelect/ChipSelect.d.ts +47 -0
  211. package/lib/typescript/components/ChipSelect/ChipSelect.d.ts.map +1 -0
  212. package/lib/typescript/components/CtaCard/CtaCard.d.ts.map +1 -1
  213. package/lib/typescript/components/EmptyState/EmptyState.d.ts +38 -0
  214. package/lib/typescript/components/EmptyState/EmptyState.d.ts.map +1 -0
  215. package/lib/typescript/components/HStack/HStack.d.ts +41 -0
  216. package/lib/typescript/components/HStack/HStack.d.ts.map +1 -0
  217. package/lib/typescript/components/ListGroup/ListGroup.d.ts.map +1 -1
  218. package/lib/typescript/components/ListItem/ListItem.d.ts.map +1 -1
  219. package/lib/typescript/components/NavArrow/NavArrow.d.ts +3 -3
  220. package/lib/typescript/components/NavArrow/NavArrow.d.ts.map +1 -1
  221. package/lib/typescript/components/Screen/Screen.d.ts +23 -0
  222. package/lib/typescript/components/Screen/Screen.d.ts.map +1 -0
  223. package/lib/typescript/components/Section/Section.d.ts.map +1 -1
  224. package/lib/typescript/components/SupportText/SupportText.d.ts +34 -0
  225. package/lib/typescript/components/SupportText/SupportText.d.ts.map +1 -0
  226. package/lib/typescript/components/SupportText/SupportTextIcon.d.ts +10 -0
  227. package/lib/typescript/components/SupportText/SupportTextIcon.d.ts.map +1 -0
  228. package/lib/typescript/components/SupportText/index.d.ts +3 -0
  229. package/lib/typescript/components/SupportText/index.d.ts.map +1 -0
  230. package/lib/typescript/components/TransactionDetails/TransactionDetails.d.ts.map +1 -1
  231. package/lib/typescript/components/VStack/VStack.d.ts +41 -0
  232. package/lib/typescript/components/VStack/VStack.d.ts.map +1 -0
  233. package/lib/typescript/components/index.d.ts +4 -0
  234. package/lib/typescript/components/index.d.ts.map +1 -1
  235. package/lib/typescript/icons/registry.d.ts +1 -1
  236. package/lib/typescript/icons/registry.d.ts.map +1 -1
  237. package/lib/typescript/utils/react-utils.d.ts +7 -0
  238. package/lib/typescript/utils/react-utils.d.ts.map +1 -0
  239. package/package.json +7 -5
  240. package/src/components/.token-metadata.json +468 -12
  241. package/src/components/Accordion/Accordion.mdx +1 -1
  242. package/src/components/ActionFooter/ActionFooter.mdx +1 -1
  243. package/src/components/ActionFooter/ActionFooter.tsx +3 -12
  244. package/src/components/ActionTile/ActionTile.mdx +5 -1
  245. package/src/components/AppBar/AppBar.mdx +51 -39
  246. package/src/components/AppBar/AppBar.tsx +140 -261
  247. package/src/components/Avatar/Avatar.mdx +9 -1
  248. package/src/components/AvatarGroup/AvatarGroup.mdx +9 -1
  249. package/src/components/Badge/Badge.mdx +1 -1
  250. package/src/components/Balance/Balance.mdx +62 -0
  251. package/src/components/Balance/Balance.tsx +107 -0
  252. package/src/components/BottomNav/BottomNav.mdx +5 -1
  253. package/src/components/BottomNavItem/BottomNavItem.mdx +5 -1
  254. package/src/components/Button/Button.mdx +5 -1
  255. package/src/components/ButtonGroup/ButtonGroup.mdx +56 -0
  256. package/src/components/ButtonGroup/ButtonGroup.tsx +78 -0
  257. package/src/components/Card/Card.mdx +1 -1
  258. package/src/components/CardFeedback/CardFeedback.mdx +5 -1
  259. package/src/components/ChipGroup/ChipGroup.mdx +40 -0
  260. package/src/components/ChipGroup/ChipGroup.tsx +67 -0
  261. package/src/components/ChipSelect/ChipSelect.mdx +80 -0
  262. package/src/components/ChipSelect/ChipSelect.tsx +138 -0
  263. package/src/components/CtaCard/CtaCard.mdx +1 -1
  264. package/src/components/CtaCard/CtaCard.tsx +12 -20
  265. package/src/components/Disclaimer/Disclaimer.mdx +5 -1
  266. package/src/components/Divider/Divider.mdx +5 -1
  267. package/src/components/Drawer/Drawer.mdx +9 -1
  268. package/src/components/EmptyState/EmptyState.mdx +73 -0
  269. package/src/components/EmptyState/EmptyState.tsx +181 -0
  270. package/src/components/FilterBar/FilterBar.mdx +1 -1
  271. package/src/components/HStack/HStack.mdx +44 -0
  272. package/src/components/HStack/HStack.tsx +95 -0
  273. package/src/components/IconButton/IconButton.mdx +5 -1
  274. package/src/components/IconCapsule/IconCapsule.mdx +12 -4
  275. package/src/components/IconCapsule/IconCapsule.tsx +3 -3
  276. package/src/components/Introduction.mdx +3 -98
  277. package/src/components/LazyList/LazyList.mdx +1 -1
  278. package/src/components/ListGroup/ListGroup.mdx +5 -1
  279. package/src/components/ListGroup/ListGroup.tsx +5 -43
  280. package/src/components/ListItem/ListItem.mdx +5 -1
  281. package/src/components/ListItem/ListItem.tsx +15 -60
  282. package/src/components/MediaCard/MediaCard.mdx +5 -1
  283. package/src/components/MerchantProfile/MerchantProfile.mdx +1 -1
  284. package/src/components/MoneyValue/MoneyValue.mdx +6 -2
  285. package/src/components/NavArrow/NavArrow.mdx +5 -1
  286. package/src/components/NavArrow/NavArrow.tsx +48 -16
  287. package/src/components/PageTitle/PageTitle.mdx +5 -1
  288. package/src/components/Screen/Screen.mdx +58 -0
  289. package/src/components/Screen/Screen.tsx +60 -0
  290. package/src/components/Section/Section.mdx +5 -1
  291. package/src/components/Section/Section.tsx +17 -46
  292. package/src/components/Stepper/Step.mdx +5 -1
  293. package/src/components/Stepper/StepLabel.mdx +5 -1
  294. package/src/components/Stepper/Stepper.mdx +1 -1
  295. package/src/components/SupportText/SupportText.mdx +48 -0
  296. package/src/components/SupportText/SupportText.tsx +104 -0
  297. package/src/components/SupportText/SupportTextIcon.mdx +35 -0
  298. package/src/components/SupportText/SupportTextIcon.tsx +45 -0
  299. package/src/components/SupportText/index.ts +2 -0
  300. package/src/components/TextInput/TextInput.mdx +9 -1
  301. package/src/components/ThreadHero/ThreadHero.mdx +1 -1
  302. package/src/components/Tooltip/Tooltip.mdx +5 -1
  303. package/src/components/TransactionBubble/TransactionBubble.mdx +1 -1
  304. package/src/components/TransactionDetails/TransactionDetails.mdx +1 -1
  305. package/src/components/TransactionDetails/TransactionDetails.tsx +1 -38
  306. package/src/components/TransactionStatus/TransactionStatus.mdx +1 -1
  307. package/src/components/UpiHandle/UpiHandle.mdx +5 -1
  308. package/src/components/VStack/VStack.mdx +44 -0
  309. package/src/components/VStack/VStack.tsx +100 -0
  310. package/src/components/index.ts +4 -0
  311. package/src/design-tokens/JFS Variables-variables-full.json +1 -18633
  312. package/src/icons/ic_info.svg +1 -0
  313. package/src/icons/ic_warning.svg +1 -0
  314. package/src/icons/registry.ts +9 -1
  315. package/src/utils/react-utils.ts +51 -0
@@ -0,0 +1,60 @@
1
+ import React, { ReactNode } from 'react'
2
+ import { View, StyleProp, ViewStyle } from 'react-native'
3
+ import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
4
+ import { useTokens } from '../../design-tokens/JFSThemeProvider'
5
+
6
+ /**
7
+ * Helper function to recursively clone children and pass modes prop to components that accept it.
8
+ * This ensures that all child components in slots receive the modes prop from the parent.
9
+ */
10
+ import { cloneChildrenWithModes } from '../../utils/react-utils'
11
+
12
+ export interface ScreenProps {
13
+ /**
14
+ * The content to display inside the screen.
15
+ */
16
+ children?: ReactNode;
17
+ /**
18
+ * Modes object to override default variable values.
19
+ */
20
+ modes?: Record<string, any>;
21
+ /**
22
+ * Optional style overrides for the container.
23
+ */
24
+ style?: StyleProp<ViewStyle>;
25
+ }
26
+
27
+ /**
28
+ * Screen component that acts as the outer most container providing the background color.
29
+ * Matches Figma node 201:49.
30
+ */
31
+ export const Screen = ({
32
+ children,
33
+ modes: propModes = {},
34
+ style
35
+ }: ScreenProps) => {
36
+ const { modes: globalModes } = useTokens()
37
+ const modes = { ...globalModes, ...propModes }
38
+
39
+ const backgroundColor = getVariableByName('screen/body/background', modes)
40
+
41
+ const containerStyle: ViewStyle = {
42
+ flex: 1,
43
+ backgroundColor,
44
+ width: '100%',
45
+ height: '100%',
46
+ }
47
+
48
+ // Pass modes down to children
49
+ const processedChildren = children
50
+ ? cloneChildrenWithModes(React.Children.toArray(children), modes)
51
+ : null
52
+
53
+ return (
54
+ <View style={[containerStyle, style]} data-node-id="201:49">
55
+ {processedChildren}
56
+ </View>
57
+ )
58
+ }
59
+
60
+ export default Screen
@@ -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 SectionStories from './Section.stories';
3
3
  import Section from './Section';
4
4
  import { AccessibilitySection, AnatomySection, UsageConstraintsSection } from '../docs/DocSections';
@@ -17,6 +17,10 @@ This component uses the following design token collections. Each collection supp
17
17
  - **Modes:** Light | Dark
18
18
  - **Default:** Light
19
19
 
20
+ ### Colors Router
21
+ - **Modes:** POC | Old
22
+ - **Default:** POC
23
+
20
24
  ### Padding
21
25
  - **Modes:** Default | None
22
26
  - **Default:** Default
@@ -3,6 +3,7 @@ import { View, Text, Pressable, type StyleProp, type ViewStyle, type PressableSt
3
3
  import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
4
4
  import Icon from '../../icons/Icon'
5
5
  import { usePressableWebSupport, type WebAccessibilityProps } from '../../utils/web-platform-utils'
6
+ import { cloneChildrenWithModes } from '../../utils/react-utils'
6
7
 
7
8
  type SectionProps = {
8
9
  title?: string;
@@ -135,7 +136,7 @@ function Section({
135
136
  }
136
137
 
137
138
  // Generate default accessibility label from title and supportText
138
- const defaultAccessibilityLabel = accessibilityLabel ||
139
+ const defaultAccessibilityLabel = accessibilityLabel ||
139
140
  (showSupportText ? `${title}. ${supportText}` : title)
140
141
 
141
142
  // Get web platform support props (only used when onPress is defined)
@@ -150,8 +151,8 @@ function Section({
150
151
  const headerContent = (
151
152
  <>
152
153
  <View style={headerWrapStyle}>
153
- <Text
154
- style={titleStyle}
154
+ <Text
155
+ style={titleStyle}
155
156
  numberOfLines={1}
156
157
  accessibilityElementsHidden={true}
157
158
  importantForAccessibility="no"
@@ -159,9 +160,9 @@ function Section({
159
160
  {title}
160
161
  </Text>
161
162
  {onPress && (
162
- <Icon
163
- name="ic_chevron_right"
164
- size={24}
163
+ <Icon
164
+ name="ic_chevron_right"
165
+ size={24}
165
166
  color={titleColor}
166
167
  accessibilityElementsHidden={true}
167
168
  importantForAccessibility="no"
@@ -169,8 +170,8 @@ function Section({
169
170
  )}
170
171
  </View>
171
172
  {showSupportText && (
172
- <Text
173
- style={supportTextStyle}
173
+ <Text
174
+ style={supportTextStyle}
174
175
  numberOfLines={2}
175
176
  accessibilityElementsHidden={true}
176
177
  importantForAccessibility="no"
@@ -182,7 +183,7 @@ function Section({
182
183
  )
183
184
 
184
185
  return (
185
- <View
186
+ <View
186
187
  style={[containerStyle, style]}
187
188
  accessibilityRole={'region' as any}
188
189
  accessibilityLabel={defaultAccessibilityLabel}
@@ -197,27 +198,27 @@ function Section({
197
198
  onPress={onPress}
198
199
  onPressIn={(e: any) => {
199
200
  setIsHeaderPressed(true)
200
- ;(rest as any)?.onPressIn?.(e)
201
+ ; (rest as any)?.onPressIn?.(e)
201
202
  }}
202
203
  onPressOut={(e: any) => {
203
204
  setIsHeaderPressed(false)
204
- ;(rest as any)?.onPressOut?.(e)
205
+ ; (rest as any)?.onPressOut?.(e)
205
206
  }}
206
207
  onFocus={(e: any) => {
207
208
  setIsHeaderFocused(true)
208
- ;(rest as any)?.onFocus?.(e)
209
+ ; (rest as any)?.onFocus?.(e)
209
210
  }}
210
211
  onBlur={(e: any) => {
211
212
  setIsHeaderFocused(false)
212
- ;(rest as any)?.onBlur?.(e)
213
+ ; (rest as any)?.onBlur?.(e)
213
214
  }}
214
215
  onHoverIn={(e: any) => {
215
216
  setIsHeaderHovered(true)
216
- ;(rest as any)?.onHoverIn?.(e)
217
+ ; (rest as any)?.onHoverIn?.(e)
217
218
  }}
218
219
  onHoverOut={(e: any) => {
219
220
  setIsHeaderHovered(false)
220
- ;(rest as any)?.onHoverOut?.(e)
221
+ ; (rest as any)?.onHoverOut?.(e)
221
222
  }}
222
223
  style={({ pressed }: PressableStateCallbackType) => [
223
224
  headerStyle,
@@ -298,37 +299,7 @@ function SectionBento({
298
299
  gap,
299
300
  }
300
301
 
301
- // Helper function to clone children with modes (same as in Section component)
302
- const cloneChildrenWithModes = (
303
- children: React.ReactNode,
304
- modes: Record<string, any>
305
- ): React.ReactNode[] => {
306
- const result = React.Children.map(children, (child) => {
307
- if (!React.isValidElement(child)) {
308
- return child
309
- }
310
302
 
311
- const childChildren = (child.props as any)?.children
312
- const hasChildren = childChildren !== undefined && childChildren !== null
313
- const existingModes = (child.props as any)?.modes
314
- // Merge order: parent modes first, then child's explicit modes override them
315
- const mergedModes = existingModes ? { ...modes, ...existingModes } : modes
316
-
317
- const processedChildren: React.ReactNode | undefined = hasChildren
318
- ? cloneChildrenWithModes(React.Children.toArray(childChildren), modes)
319
- : undefined
320
-
321
- return React.cloneElement(
322
- child,
323
- {
324
- ...(child.props as any),
325
- modes: mergedModes,
326
- },
327
- processedChildren
328
- )
329
- })
330
- return result || []
331
- }
332
303
 
333
304
  // Process slots to pass modes to children
334
305
  const processedNavSlot = navSlot
@@ -340,7 +311,7 @@ function SectionBento({
340
311
  : null
341
312
 
342
313
  return (
343
- <View
314
+ <View
344
315
  style={[containerStyle, style]}
345
316
  accessibilityRole={'region' as any}
346
317
  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 StepStories from './Step.stories';
3
3
  import { Step } from './Step';
4
4
 
@@ -19,6 +19,10 @@ This component uses the following design token collections. Each collection supp
19
19
  ### Color Mode
20
20
  - **Modes:** Light | Dark
21
21
  - **Default:** Light
22
+
23
+ ### Colors Router
24
+ - **Modes:** POC | Old
25
+ - **Default:** POC
22
26
  ## Usage
23
27
 
24
28
  <Canvas>
@@ -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 StepLabelStories from './StepLabel.stories';
3
3
  import { StepLabel } from './StepLabel';
4
4
 
@@ -15,6 +15,10 @@ This component uses the following design token collections. Each collection supp
15
15
  ### Color Mode
16
16
  - **Modes:** Light | Dark
17
17
  - **Default:** Light
18
+
19
+ ### Colors Router
20
+ - **Modes:** POC | Old
21
+ - **Default:** POC
18
22
  ## Usage
19
23
 
20
24
  <Canvas>
@@ -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 StepperStories from './Stepper.stories';
3
3
  import Stepper from './Stepper';
4
4
 
@@ -0,0 +1,48 @@
1
+ import { Canvas, Meta, Story, Controls } from '@storybook/blocks';
2
+ import * as SupportTextStories from './SupportText.stories';
3
+ import SupportText from './SupportText';
4
+
5
+ <Meta of={SupportTextStories} />
6
+
7
+ # SupportText
8
+
9
+ A component for displaying status messages with icons.
10
+
11
+ <Canvas>
12
+ <Story of={SupportTextStories.Default} />
13
+ </Canvas>
14
+
15
+ ## Props
16
+
17
+ <Controls />
18
+
19
+
20
+ ## Available Collections and Modes
21
+
22
+ This component uses the following design token collections. Each collection supports multiple modes that can be configured via the `modes` prop.
23
+
24
+ ### Status
25
+ - **Modes:** Neutral | Warning | Error | Success
26
+ - **Default:** Neutral
27
+ ## Usage
28
+
29
+ ```tsx
30
+ import { SupportText } from 'jfs-components';
31
+
32
+ <SupportText status="Success" label="Operation successful" />
33
+ <SupportText status="Error" label="Something went wrong" />
34
+ ```
35
+
36
+
37
+ ## Design Tokens
38
+
39
+ This component uses the following design tokens, resolved through `getVariableByName`:
40
+
41
+ - **`supportText/fontFamily`**
42
+ - **`supportText/fontSize`**
43
+ - **`supportText/fontWeight`**
44
+ - **`supportText/foreground`**
45
+ - **`supportText/gap`**
46
+ - **`supportText/lineHeight`**
47
+
48
+ All tokens support mode-based theming through the `modes` prop.
@@ -0,0 +1,104 @@
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 { useTokens } from '../../design-tokens/JFSThemeProvider';
5
+ import SupportTextIcon, { type SupportTextStatus } from './SupportTextIcon';
6
+
7
+ type SupportTextProps = {
8
+ /**
9
+ * Text to display
10
+ */
11
+ label?: string;
12
+ /**
13
+ * Status of the support text (Neutral, Warning, Error, Success)
14
+ */
15
+ status?: SupportTextStatus;
16
+ /**
17
+ * Optional custom slot for the icon.
18
+ * Overrides default SupportTextIcon.
19
+ */
20
+ iconSlot?: React.ReactNode;
21
+ /**
22
+ * Optional custom slot for the text area.
23
+ * Overrides default Text.
24
+ */
25
+ textSlot?: React.ReactNode;
26
+ /**
27
+ * Modes object for design token resolution.
28
+ */
29
+ modes?: Record<string, any>;
30
+
31
+ style?: StyleProp<ViewStyle>;
32
+ };
33
+
34
+ /**
35
+ * SupportText component displaying a status icon and label.
36
+ */
37
+ function SupportText({
38
+ label = 'Support Text',
39
+ status = 'Neutral',
40
+ iconSlot,
41
+ textSlot,
42
+ modes: propModes = {},
43
+ style,
44
+ }: SupportTextProps) {
45
+ const { modes: globalModes } = useTokens();
46
+
47
+ // Merge modes. We might want to inject the status mode here if we knew the collection name.
48
+ // For now, we rely on the parent passing the correct mode or the status prop driving logic outside tokens if needed (but tokens are preferred).
49
+ // Strategy: We pass 'modes' as is. If the user wants "Success" styling (green), they should likely pass modes={{ 'SupportText': 'Success' }} AND status="Success".
50
+ // However, for convenience, we could eventually map status to modes if we determine the key.
51
+ const modes = { ...globalModes, ...propModes };
52
+
53
+ // --- Token Resolution ---
54
+ const gap = parseInt(getVariableByName('supportText/gap', modes), 10) || 4;
55
+
56
+ const textColor = getVariableByName('supportText/foreground', modes) || '#0c0d10';
57
+ const fontFamily = getVariableByName('supportText/fontFamily', modes) || 'JioType Var';
58
+ const fontSize = parseInt(getVariableByName('supportText/fontSize', modes), 10) || 12;
59
+ const lineHeight = parseInt(getVariableByName('supportText/lineHeight', modes), 10) || 16;
60
+ const fontWeight = getVariableByName('supportText/fontWeight', modes) || '500';
61
+
62
+ // --- Styles ---
63
+ const containerStyle: ViewStyle = {
64
+ flexDirection: 'row',
65
+ alignItems: 'center',
66
+ gap: gap,
67
+ };
68
+
69
+ const textStyle: TextStyle = {
70
+ color: textColor,
71
+ fontFamily,
72
+ fontSize,
73
+ lineHeight,
74
+ fontWeight: fontWeight as any,
75
+ flexShrink: 1, // Ensure text wraps if needed
76
+ };
77
+
78
+ const renderSlot = (slot: React.ReactNode) => {
79
+ if (React.isValidElement(slot)) {
80
+ return React.cloneElement(slot as React.ReactElement<any>, {
81
+ modes: { ...modes, ...(slot as any).props.modes },
82
+ });
83
+ }
84
+ return slot;
85
+ };
86
+
87
+ return (
88
+ <View style={[containerStyle, style]}>
89
+ {iconSlot ? (
90
+ renderSlot(iconSlot)
91
+ ) : (
92
+ <SupportTextIcon status={status} modes={modes} />
93
+ )}
94
+
95
+ {textSlot ? (
96
+ renderSlot(textSlot)
97
+ ) : (
98
+ <Text style={textStyle}>{label}</Text>
99
+ )}
100
+ </View>
101
+ );
102
+ }
103
+
104
+ export default SupportText;
@@ -0,0 +1,35 @@
1
+ import { Meta, Story, Canvas, Controls } from '@storybook/blocks';
2
+ import * as SupportTextIconStories from './SupportTextIcon.stories';
3
+ import SupportTextIcon from './SupportTextIcon';
4
+
5
+ <Meta of={SupportTextIconStories} />
6
+
7
+ # SupportTextIcon
8
+
9
+ SupportTextIcon component with design-token-driven styling.
10
+
11
+ ## Available Collections and Modes
12
+
13
+ This component uses the following design token collections. Each collection supports multiple modes that can be configured via the `modes` prop.
14
+
15
+ ### Status
16
+ - **Modes:** Neutral | Warning | Error | Success
17
+ - **Default:** Neutral
18
+ ## Usage
19
+
20
+ <Canvas>
21
+ <Story of={SupportTextIconStories.Default} />
22
+ </Canvas>
23
+
24
+ ## Props
25
+
26
+ <Controls of={SupportTextIconStories.Default} />
27
+
28
+ ## Design Tokens
29
+
30
+ This component uses the following design tokens, resolved through `getVariableByName`:
31
+
32
+ - **`supportText/foreground`**
33
+ - **`supportText/icon/size`**
34
+
35
+ All tokens support mode-based theming through the `modes` prop.
@@ -0,0 +1,45 @@
1
+ import React from 'react';
2
+ import { View, type ViewStyle } from 'react-native';
3
+ import { getVariableByName } from '../../design-tokens/figma-variables-resolver';
4
+ import Icon from '../../icons/Icon';
5
+
6
+ export type SupportTextStatus = 'Neutral' | 'Warning' | 'Error' | 'Success';
7
+
8
+ export type SupportTextIconProps = {
9
+ status?: SupportTextStatus;
10
+ modes?: Record<string, any>;
11
+ style?: ViewStyle;
12
+ };
13
+
14
+ const STATUS_ICON_MAP: Record<SupportTextStatus, string> = {
15
+ Neutral: 'ic_info',
16
+ Warning: 'ic_warning', // Using ic_warning for Warning
17
+ Error: 'ic_warning', // Using ic_warning for Error
18
+ Success: 'ic_status_successful',
19
+ };
20
+
21
+ function SupportTextIcon({
22
+ status = 'Neutral',
23
+ modes = {},
24
+ style,
25
+ }: SupportTextIconProps) {
26
+ const iconName = STATUS_ICON_MAP[status] || 'ic_info';
27
+
28
+ // Resolve icon size
29
+ const size = parseInt(getVariableByName('supportText/icon/size', modes), 10) || 16;
30
+
31
+ // Resolve icon color
32
+ // Assuming supportText/foreground applies to icon as well, or there might be specific icon color tokens.
33
+ // Using supportText/foreground as default based on common patterns if no specific icon token.
34
+ // If specific tokens exist like 'supportText/icon/color', they should be used.
35
+ // Detailed variables only showed supportText/foreground.
36
+ const color = getVariableByName('supportText/foreground', modes) || '#0c0d10';
37
+
38
+ return (
39
+ <View style={style}>
40
+ <Icon name={iconName} size={size} color={color} />
41
+ </View>
42
+ );
43
+ }
44
+
45
+ export default SupportTextIcon;
@@ -0,0 +1,2 @@
1
+ export { default as SupportText } from './SupportText';
2
+ export { default as SupportTextIcon } from './SupportTextIcon';
@@ -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 TextInputStories from './TextInput.stories';
3
3
  import TextInput from './TextInput';
4
4
  import { AccessibilitySection, AnatomySection, UsageConstraintsSection } from '../docs/DocSections';
@@ -13,9 +13,17 @@ Helper function to recursively clone children and pass modes prop to components
13
13
 
14
14
  This component uses the following design token collections. Each collection supports multiple modes that can be configured via the `modes` prop.
15
15
 
16
+ ### InputState
17
+ - **Modes:** Idle | Active
18
+ - **Default:** Idle
19
+
16
20
  ### Color Mode
17
21
  - **Modes:** Light | Dark
18
22
  - **Default:** Light
23
+
24
+ ### Colors Router
25
+ - **Modes:** POC | Old
26
+ - **Default:** POC
19
27
  ## Usage
20
28
 
21
29
  <Canvas>
@@ -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 ThreadHeroStories from './ThreadHero.stories';
3
3
  import ThreadHero from './ThreadHero';
4
4
 
@@ -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 TooltipStories from './Tooltip.stories';
3
3
  import { Tooltip } from './Tooltip';
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,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 TransactionBubbleStories from './TransactionBubble.stories';
3
3
  import TransactionBubble from './TransactionBubble';
4
4
 
@@ -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 TransactionDetailsStories from './TransactionDetails.stories';
3
3
  import TransactionDetails from './TransactionDetails';
4
4
  import { AccessibilitySection, AnatomySection, UsageConstraintsSection } from '../docs/DocSections';
@@ -2,44 +2,7 @@ import React from 'react'
2
2
  import { View, Text, type StyleProp, type ViewStyle, type TextStyle } from 'react-native'
3
3
  import { getVariableByName } from '../../design-tokens/figma-variables-resolver'
4
4
 
5
- /**
6
- * Helper function to recursively clone children and pass modes prop to components that accept it.
7
- */
8
- function cloneChildrenWithModes(
9
- children: React.ReactNode,
10
- modes: Record<string, any>
11
- ): React.ReactNode[] {
12
- const result = React.Children.map(children, (child) => {
13
- if (!React.isValidElement(child)) {
14
- return child
15
- }
16
-
17
- const childChildren = (child.props as any)?.children
18
- const hasChildren = childChildren !== undefined && childChildren !== null
19
-
20
- const existingModes = (child.props as any)?.modes
21
- const mergedModes = existingModes
22
- ? { ...modes, ...existingModes }
23
- : modes
24
-
25
- const processedChildren: React.ReactNode | undefined = hasChildren
26
- ? cloneChildrenWithModes(
27
- React.Children.toArray(childChildren),
28
- modes
29
- )
30
- : undefined
31
-
32
- return React.cloneElement(
33
- child,
34
- {
35
- ...(child.props as any),
36
- modes: mergedModes,
37
- },
38
- processedChildren
39
- )
40
- })
41
- return result || []
42
- }
5
+ import { cloneChildrenWithModes } from '../../utils/react-utils'
43
6
 
44
7
  // ===== Item Subcomponent =====
45
8
 
@@ -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 TransactionStatusStories from './TransactionStatus.stories';
3
3
  import TransactionStatus from './TransactionStatus';
4
4
 
@@ -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 UpiHandleStories from './UpiHandle.stories';
3
3
  import UpiHandle from './UpiHandle';
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>
@@ -0,0 +1,44 @@
1
+ import { Meta, Story, Canvas, Controls } from '@storybook/blocks';
2
+ import * as VStackStories from './VStack.stories';
3
+ import VStack from './VStack';
4
+
5
+ <Meta of={VStackStories} />
6
+
7
+ # VStack
8
+
9
+ `VStack` arranges its children in a vertical line. It uses design tokens for spacing and gap.
10
+
11
+
12
+ ## Available Collections and Modes
13
+
14
+ This component does not use any design token collections with multiple modes.
15
+ ## Usage
16
+
17
+ ```tsx
18
+ import { VStack } from 'jfs-components';
19
+
20
+ <VStack alignHorizontal="center" modes={{ 'vstack/gap': 16 }}>
21
+ <View>Item 1</View>
22
+ <View>Item 2</View>
23
+ </VStack>
24
+ ```
25
+
26
+ <Canvas>
27
+ <Story of={VStackStories.Default} />
28
+ </Canvas>
29
+
30
+ ## Props
31
+
32
+ <Controls of={VStackStories.Default} />
33
+
34
+ ## Design Tokens
35
+
36
+ This component uses the following design tokens, resolved through `getVariableByName`:
37
+
38
+ - **`vstack/gap`**
39
+ - **`vstack/padding/bottom`**
40
+ - **`vstack/padding/left`**
41
+ - **`vstack/padding/right`**
42
+ - **`vstack/padding/top`**
43
+
44
+ All tokens support mode-based theming through the `modes` prop.