@nori-ui/core 0.0.5 → 1.0.2

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 (387) hide show
  1. package/dist/animation/animated-view.cjs +13 -0
  2. package/dist/animation/animated-view.cjs.map +1 -0
  3. package/dist/animation/animated-view.d.cts +6 -0
  4. package/dist/animation/animated-view.d.ts +6 -0
  5. package/dist/animation/animated-view.js +4 -0
  6. package/dist/animation/animated-view.js.map +1 -0
  7. package/dist/animation/animated-view.web.cjs +9 -0
  8. package/dist/animation/animated-view.web.cjs.map +1 -0
  9. package/dist/animation/animated-view.web.d.cts +5 -0
  10. package/dist/animation/animated-view.web.d.ts +5 -0
  11. package/dist/animation/animated-view.web.js +8 -0
  12. package/dist/animation/animated-view.web.js.map +1 -0
  13. package/dist/animation/use-animated-number.cjs +80 -0
  14. package/dist/animation/use-animated-number.cjs.map +1 -0
  15. package/dist/animation/use-animated-number.d.cts +8 -0
  16. package/dist/animation/use-animated-number.d.ts +8 -0
  17. package/dist/animation/use-animated-number.js +4 -0
  18. package/dist/animation/use-animated-number.js.map +1 -0
  19. package/dist/animation/use-animated-number.web.cjs +28 -0
  20. package/dist/animation/use-animated-number.web.cjs.map +1 -0
  21. package/dist/animation/use-animated-number.web.d.cts +8 -0
  22. package/dist/animation/use-animated-number.web.d.ts +8 -0
  23. package/dist/animation/use-animated-number.web.js +25 -0
  24. package/dist/animation/use-animated-number.web.js.map +1 -0
  25. package/dist/{chunk-RX7UULY3.js → chunk-33S7ADWM.js} +3 -3
  26. package/dist/{chunk-RX7UULY3.js.map → chunk-33S7ADWM.js.map} +1 -1
  27. package/dist/chunk-3BDDPFCI.js +108 -0
  28. package/dist/chunk-3BDDPFCI.js.map +1 -0
  29. package/dist/chunk-3F4TXKDY.js +314 -0
  30. package/dist/chunk-3F4TXKDY.js.map +1 -0
  31. package/dist/chunk-5A2QOOVN.js +15 -0
  32. package/dist/chunk-5A2QOOVN.js.map +1 -0
  33. package/dist/chunk-5XEGZFG5.js +208 -0
  34. package/dist/chunk-5XEGZFG5.js.map +1 -0
  35. package/dist/chunk-6AD6KCVB.js +178 -0
  36. package/dist/chunk-6AD6KCVB.js.map +1 -0
  37. package/dist/chunk-7GPDNQSX.js +967 -0
  38. package/dist/chunk-7GPDNQSX.js.map +1 -0
  39. package/dist/chunk-7UKRN73P.js +42 -0
  40. package/dist/chunk-7UKRN73P.js.map +1 -0
  41. package/dist/chunk-7Z4NMNX6.js +64 -0
  42. package/dist/chunk-7Z4NMNX6.js.map +1 -0
  43. package/dist/chunk-ACLHDHX3.js +29 -0
  44. package/dist/chunk-ACLHDHX3.js.map +1 -0
  45. package/dist/chunk-BZLT6R62.js +80 -0
  46. package/dist/chunk-BZLT6R62.js.map +1 -0
  47. package/dist/chunk-CCUXO2HN.js +450 -0
  48. package/dist/chunk-CCUXO2HN.js.map +1 -0
  49. package/dist/chunk-CHXHRJNZ.js +43 -0
  50. package/dist/chunk-CHXHRJNZ.js.map +1 -0
  51. package/dist/chunk-DDGMLLS3.js +188 -0
  52. package/dist/chunk-DDGMLLS3.js.map +1 -0
  53. package/dist/chunk-EWWQQ5DB.js +654 -0
  54. package/dist/chunk-EWWQQ5DB.js.map +1 -0
  55. package/dist/chunk-FEPTH5RV.js +169 -0
  56. package/dist/chunk-FEPTH5RV.js.map +1 -0
  57. package/dist/{chunk-SSTXLK5I.js → chunk-FT2XBBQJ.js} +42 -6
  58. package/dist/chunk-FT2XBBQJ.js.map +1 -0
  59. package/dist/chunk-IKLA2CVQ.js +260 -0
  60. package/dist/chunk-IKLA2CVQ.js.map +1 -0
  61. package/dist/chunk-JQQ3FBN7.js +18 -0
  62. package/dist/chunk-JQQ3FBN7.js.map +1 -0
  63. package/dist/chunk-JSAG5YO7.js +69 -0
  64. package/dist/chunk-JSAG5YO7.js.map +1 -0
  65. package/dist/chunk-JZ774T7U.js +76 -0
  66. package/dist/chunk-JZ774T7U.js.map +1 -0
  67. package/dist/chunk-KWRDJPP3.js +10 -0
  68. package/dist/chunk-KWRDJPP3.js.map +1 -0
  69. package/dist/chunk-LVWNMQGR.js +1106 -0
  70. package/dist/chunk-LVWNMQGR.js.map +1 -0
  71. package/dist/chunk-LWLK6HSW.js +143 -0
  72. package/dist/chunk-LWLK6HSW.js.map +1 -0
  73. package/dist/chunk-MDOZGILD.js +134 -0
  74. package/dist/chunk-MDOZGILD.js.map +1 -0
  75. package/dist/chunk-MKSDYRWQ.js +446 -0
  76. package/dist/chunk-MKSDYRWQ.js.map +1 -0
  77. package/dist/chunk-MRJWPRCX.js +80 -0
  78. package/dist/chunk-MRJWPRCX.js.map +1 -0
  79. package/dist/chunk-NRYWNOG5.js +410 -0
  80. package/dist/chunk-NRYWNOG5.js.map +1 -0
  81. package/dist/chunk-OMU4R4Y5.js +144 -0
  82. package/dist/chunk-OMU4R4Y5.js.map +1 -0
  83. package/dist/chunk-PNP7L4TA.js +103 -0
  84. package/dist/chunk-PNP7L4TA.js.map +1 -0
  85. package/dist/chunk-QI6646JZ.js +3 -0
  86. package/dist/{chunk-UAKFCMWK.js.map → chunk-QI6646JZ.js.map} +1 -1
  87. package/dist/chunk-QJNV7YQP.js +138 -0
  88. package/dist/chunk-QJNV7YQP.js.map +1 -0
  89. package/dist/chunk-R5JMDDCB.js +292 -0
  90. package/dist/chunk-R5JMDDCB.js.map +1 -0
  91. package/dist/chunk-RB3YBWQ4.js +77 -0
  92. package/dist/chunk-RB3YBWQ4.js.map +1 -0
  93. package/dist/chunk-RFW5SRZA.js +23 -0
  94. package/dist/chunk-RFW5SRZA.js.map +1 -0
  95. package/dist/chunk-RGJ3NBKE.js +8 -0
  96. package/dist/chunk-RGJ3NBKE.js.map +1 -0
  97. package/dist/chunk-SFNDR6DI.js +485 -0
  98. package/dist/chunk-SFNDR6DI.js.map +1 -0
  99. package/dist/chunk-SWC5CNKE.js +13 -0
  100. package/dist/chunk-SWC5CNKE.js.map +1 -0
  101. package/dist/chunk-TLS54G6Y.js +15 -0
  102. package/dist/chunk-TLS54G6Y.js.map +1 -0
  103. package/dist/chunk-WCQVDF3K.js +12 -0
  104. package/dist/{chunk-7QVYU63E.js.map → chunk-WCQVDF3K.js.map} +1 -1
  105. package/dist/chunk-WGT345SV.js +427 -0
  106. package/dist/chunk-WGT345SV.js.map +1 -0
  107. package/dist/chunk-X7APG7G2.js +1566 -0
  108. package/dist/chunk-X7APG7G2.js.map +1 -0
  109. package/dist/chunk-XALU6LOT.js +306 -0
  110. package/dist/chunk-XALU6LOT.js.map +1 -0
  111. package/dist/chunk-YNKKEO2A.js +336 -0
  112. package/dist/chunk-YNKKEO2A.js.map +1 -0
  113. package/dist/chunk-ZBW3BA5R.js +148 -0
  114. package/dist/chunk-ZBW3BA5R.js.map +1 -0
  115. package/dist/{chunk-FXKIWONG.js → chunk-ZIBNLXIV.js} +12 -6
  116. package/dist/chunk-ZIBNLXIV.js.map +1 -0
  117. package/dist/chunk-ZMSIYLSI.js +563 -0
  118. package/dist/chunk-ZMSIYLSI.js.map +1 -0
  119. package/dist/chunk-ZQMNGPLE.js +981 -0
  120. package/dist/chunk-ZQMNGPLE.js.map +1 -0
  121. package/dist/chunk-ZRD4FQBT.js +153 -0
  122. package/dist/chunk-ZRD4FQBT.js.map +1 -0
  123. package/dist/client.cjs +11289 -439
  124. package/dist/client.cjs.map +1 -1
  125. package/dist/client.d.cts +68 -117
  126. package/dist/client.d.ts +68 -117
  127. package/dist/client.js +58 -40
  128. package/dist/client.js.map +1 -1
  129. package/dist/components/Accordion/index.cjs +900 -0
  130. package/dist/components/Accordion/index.cjs.map +1 -0
  131. package/dist/components/Accordion/index.d.cts +72 -0
  132. package/dist/components/Accordion/index.d.ts +72 -0
  133. package/dist/components/Accordion/index.js +10 -0
  134. package/dist/components/Accordion/index.js.map +1 -0
  135. package/dist/components/Alert/index.cjs +567 -0
  136. package/dist/components/Alert/index.cjs.map +1 -0
  137. package/dist/components/Alert/index.d.cts +41 -0
  138. package/dist/components/Alert/index.d.ts +41 -0
  139. package/dist/components/Alert/index.js +8 -0
  140. package/dist/components/Alert/index.js.map +1 -0
  141. package/dist/components/AlertDialog/index.cjs +892 -0
  142. package/dist/components/AlertDialog/index.cjs.map +1 -0
  143. package/dist/components/AlertDialog/index.d.cts +68 -0
  144. package/dist/components/AlertDialog/index.d.ts +68 -0
  145. package/dist/components/AlertDialog/index.js +9 -0
  146. package/dist/components/AlertDialog/index.js.map +1 -0
  147. package/dist/components/Avatar/index.cjs +427 -0
  148. package/dist/components/Avatar/index.cjs.map +1 -0
  149. package/dist/components/Avatar/index.d.cts +40 -0
  150. package/dist/components/Avatar/index.d.ts +40 -0
  151. package/dist/components/Avatar/index.js +7 -0
  152. package/dist/components/Avatar/index.js.map +1 -0
  153. package/dist/components/Badge/index.cjs +433 -0
  154. package/dist/components/Badge/index.cjs.map +1 -0
  155. package/dist/components/Badge/index.d.cts +35 -0
  156. package/dist/components/Badge/index.d.ts +35 -0
  157. package/dist/components/Badge/index.js +7 -0
  158. package/dist/components/Badge/index.js.map +1 -0
  159. package/dist/components/Box/index.cjs +415 -0
  160. package/dist/components/Box/index.cjs.map +1 -0
  161. package/dist/components/Box/index.d.cts +24 -0
  162. package/dist/components/Box/index.d.ts +24 -0
  163. package/dist/components/Box/index.js +9 -0
  164. package/dist/components/Box/index.js.map +1 -0
  165. package/dist/components/Breadcrumb/index.cjs +1939 -0
  166. package/dist/components/Breadcrumb/index.cjs.map +1 -0
  167. package/dist/components/Breadcrumb/index.d.cts +186 -0
  168. package/dist/components/Breadcrumb/index.d.ts +186 -0
  169. package/dist/components/Breadcrumb/index.js +11 -0
  170. package/dist/components/Breadcrumb/index.js.map +1 -0
  171. package/dist/components/Button/index.cjs +631 -0
  172. package/dist/components/Button/index.cjs.map +1 -0
  173. package/dist/components/Button/index.d.cts +27 -0
  174. package/dist/components/Button/index.d.ts +27 -0
  175. package/dist/components/Button/index.js +9 -0
  176. package/dist/components/Button/index.js.map +1 -0
  177. package/dist/components/Calendar/index.cjs +3017 -0
  178. package/dist/components/Calendar/index.cjs.map +1 -0
  179. package/dist/components/Calendar/index.d.cts +169 -0
  180. package/dist/components/Calendar/index.d.ts +169 -0
  181. package/dist/components/Calendar/index.js +11 -0
  182. package/dist/components/Calendar/index.js.map +1 -0
  183. package/dist/components/Card/index.cjs +469 -0
  184. package/dist/components/Card/index.cjs.map +1 -0
  185. package/dist/components/Card/index.d.cts +33 -0
  186. package/dist/components/Card/index.d.ts +33 -0
  187. package/dist/components/Card/index.js +7 -0
  188. package/dist/components/Card/index.js.map +1 -0
  189. package/dist/components/Checkbox/index.cjs +590 -0
  190. package/dist/components/Checkbox/index.cjs.map +1 -0
  191. package/dist/components/Checkbox/index.d.cts +22 -0
  192. package/dist/components/Checkbox/index.d.ts +22 -0
  193. package/dist/components/Checkbox/index.js +9 -0
  194. package/dist/components/Checkbox/index.js.map +1 -0
  195. package/dist/components/Dialog/index.cjs +888 -0
  196. package/dist/components/Dialog/index.cjs.map +1 -0
  197. package/dist/components/Dialog/index.d.cts +56 -0
  198. package/dist/components/Dialog/index.d.ts +56 -0
  199. package/dist/components/Dialog/index.js +10 -0
  200. package/dist/components/Dialog/index.js.map +1 -0
  201. package/dist/components/FloatButton/index.cjs +1254 -0
  202. package/dist/components/FloatButton/index.cjs.map +1 -0
  203. package/dist/components/FloatButton/index.d.cts +133 -0
  204. package/dist/components/FloatButton/index.d.ts +133 -0
  205. package/dist/components/FloatButton/index.js +11 -0
  206. package/dist/components/FloatButton/index.js.map +1 -0
  207. package/dist/components/HStack/index.cjs +480 -0
  208. package/dist/components/HStack/index.cjs.map +1 -0
  209. package/dist/components/HStack/index.d.cts +24 -0
  210. package/dist/components/HStack/index.d.ts +24 -0
  211. package/dist/components/HStack/index.js +9 -0
  212. package/dist/components/HStack/index.js.map +1 -0
  213. package/dist/components/InputGroup/index.cjs +638 -0
  214. package/dist/components/InputGroup/index.cjs.map +1 -0
  215. package/dist/components/InputGroup/index.d.cts +33 -0
  216. package/dist/components/InputGroup/index.d.ts +33 -0
  217. package/dist/components/InputGroup/index.js +7 -0
  218. package/dist/components/InputGroup/index.js.map +1 -0
  219. package/dist/components/Pagination/index.cjs +2501 -0
  220. package/dist/components/Pagination/index.cjs.map +1 -0
  221. package/dist/components/Pagination/index.d.cts +164 -0
  222. package/dist/components/Pagination/index.d.ts +164 -0
  223. package/dist/components/Pagination/index.js +12 -0
  224. package/dist/components/Pagination/index.js.map +1 -0
  225. package/dist/components/Popover/index.cjs +739 -0
  226. package/dist/components/Popover/index.cjs.map +1 -0
  227. package/dist/components/Popover/index.d.cts +44 -0
  228. package/dist/components/Popover/index.d.ts +44 -0
  229. package/dist/components/Popover/index.js +8 -0
  230. package/dist/components/Popover/index.js.map +1 -0
  231. package/dist/components/Progress/index.cjs +493 -0
  232. package/dist/components/Progress/index.cjs.map +1 -0
  233. package/dist/components/Progress/index.d.cts +63 -0
  234. package/dist/components/Progress/index.d.ts +63 -0
  235. package/dist/components/Progress/index.js +7 -0
  236. package/dist/components/Progress/index.js.map +1 -0
  237. package/dist/components/Radio/index.cjs +584 -0
  238. package/dist/components/Radio/index.cjs.map +1 -0
  239. package/dist/components/Radio/index.d.cts +51 -0
  240. package/dist/components/Radio/index.d.ts +51 -0
  241. package/dist/components/Radio/index.js +7 -0
  242. package/dist/components/Radio/index.js.map +1 -0
  243. package/dist/components/SegmentedControl/index.cjs +502 -0
  244. package/dist/components/SegmentedControl/index.cjs.map +1 -0
  245. package/dist/components/SegmentedControl/index.d.cts +45 -0
  246. package/dist/components/SegmentedControl/index.d.ts +45 -0
  247. package/dist/components/SegmentedControl/index.js +7 -0
  248. package/dist/components/SegmentedControl/index.js.map +1 -0
  249. package/dist/components/Select/index.cjs +1359 -0
  250. package/dist/components/Select/index.cjs.map +1 -0
  251. package/dist/components/Select/index.d.cts +140 -0
  252. package/dist/components/Select/index.d.ts +140 -0
  253. package/dist/components/Select/index.js +8 -0
  254. package/dist/components/Select/index.js.map +1 -0
  255. package/dist/components/Separator/index.cjs +358 -0
  256. package/dist/components/Separator/index.cjs.map +1 -0
  257. package/dist/components/Separator/index.d.cts +28 -0
  258. package/dist/components/Separator/index.d.ts +28 -0
  259. package/dist/components/Separator/index.js +6 -0
  260. package/dist/components/Separator/index.js.map +1 -0
  261. package/dist/components/Skeleton/index.cjs +384 -0
  262. package/dist/components/Skeleton/index.cjs.map +1 -0
  263. package/dist/components/Skeleton/index.d.cts +30 -0
  264. package/dist/components/Skeleton/index.d.ts +30 -0
  265. package/dist/components/Skeleton/index.js +6 -0
  266. package/dist/components/Skeleton/index.js.map +1 -0
  267. package/dist/components/Slider/index.cjs +880 -0
  268. package/dist/components/Slider/index.cjs.map +1 -0
  269. package/dist/components/Slider/index.d.cts +84 -0
  270. package/dist/components/Slider/index.d.ts +84 -0
  271. package/dist/components/Slider/index.js +6 -0
  272. package/dist/components/Slider/index.js.map +1 -0
  273. package/dist/components/Spinner/index.cjs +32 -0
  274. package/dist/components/Spinner/index.cjs.map +1 -0
  275. package/dist/components/Spinner/index.d.cts +25 -0
  276. package/dist/components/Spinner/index.d.ts +25 -0
  277. package/dist/components/Spinner/index.js +4 -0
  278. package/dist/components/Spinner/index.js.map +1 -0
  279. package/dist/components/Switch/index.cjs +623 -0
  280. package/dist/components/Switch/index.cjs.map +1 -0
  281. package/dist/components/Switch/index.d.cts +22 -0
  282. package/dist/components/Switch/index.d.ts +22 -0
  283. package/dist/components/Switch/index.js +10 -0
  284. package/dist/components/Switch/index.js.map +1 -0
  285. package/dist/components/Tabs/index.cjs +630 -0
  286. package/dist/components/Tabs/index.cjs.map +1 -0
  287. package/dist/components/Tabs/index.d.cts +63 -0
  288. package/dist/components/Tabs/index.d.ts +63 -0
  289. package/dist/components/Tabs/index.js +7 -0
  290. package/dist/components/Tabs/index.js.map +1 -0
  291. package/dist/components/Text/index.cjs +401 -0
  292. package/dist/components/Text/index.cjs.map +1 -0
  293. package/dist/components/Text/index.d.cts +24 -0
  294. package/dist/components/Text/index.d.ts +24 -0
  295. package/dist/components/Text/index.js +7 -0
  296. package/dist/components/Text/index.js.map +1 -0
  297. package/dist/components/TextArea/index.cjs +482 -0
  298. package/dist/components/TextArea/index.cjs.map +1 -0
  299. package/dist/components/TextArea/index.d.cts +25 -0
  300. package/dist/components/TextArea/index.d.ts +25 -0
  301. package/dist/components/TextArea/index.js +8 -0
  302. package/dist/components/TextArea/index.js.map +1 -0
  303. package/dist/components/TextInput/index.cjs +477 -0
  304. package/dist/components/TextInput/index.cjs.map +1 -0
  305. package/dist/components/TextInput/index.d.cts +33 -0
  306. package/dist/components/TextInput/index.d.ts +33 -0
  307. package/dist/components/TextInput/index.js +7 -0
  308. package/dist/components/TextInput/index.js.map +1 -0
  309. package/dist/components/Toast/index.cjs +167 -0
  310. package/dist/components/Toast/index.cjs.map +1 -0
  311. package/dist/components/Toast/index.d.cts +143 -0
  312. package/dist/components/Toast/index.d.ts +143 -0
  313. package/dist/components/Toast/index.js +4 -0
  314. package/dist/components/Toast/index.js.map +1 -0
  315. package/dist/components/Toggle/index.cjs +770 -0
  316. package/dist/components/Toggle/index.cjs.map +1 -0
  317. package/dist/components/Toggle/index.d.cts +83 -0
  318. package/dist/components/Toggle/index.d.ts +83 -0
  319. package/dist/components/Toggle/index.js +7 -0
  320. package/dist/components/Toggle/index.js.map +1 -0
  321. package/dist/components/Tooltip/index.cjs +813 -0
  322. package/dist/components/Tooltip/index.cjs.map +1 -0
  323. package/dist/components/Tooltip/index.d.cts +55 -0
  324. package/dist/components/Tooltip/index.d.ts +55 -0
  325. package/dist/components/Tooltip/index.js +8 -0
  326. package/dist/components/Tooltip/index.js.map +1 -0
  327. package/dist/components/VStack/index.cjs +480 -0
  328. package/dist/components/VStack/index.cjs.map +1 -0
  329. package/dist/components/VStack/index.d.cts +19 -0
  330. package/dist/components/VStack/index.d.ts +19 -0
  331. package/dist/components/VStack/index.js +9 -0
  332. package/dist/components/VStack/index.js.map +1 -0
  333. package/dist/i18n/index.cjs +39 -3
  334. package/dist/i18n/index.cjs.map +1 -1
  335. package/dist/i18n/index.d.cts +4 -60
  336. package/dist/i18n/index.d.ts +4 -60
  337. package/dist/i18n/index.js +3 -2
  338. package/dist/icons/index.cjs +326 -26
  339. package/dist/icons/index.cjs.map +1 -1
  340. package/dist/icons/index.js +4 -3
  341. package/dist/index-D3_M3G6U.d.ts +19 -0
  342. package/dist/index-uXPK_Rg8.d.cts +19 -0
  343. package/dist/index.cjs +11176 -463
  344. package/dist/index.cjs.map +1 -1
  345. package/dist/index.d.cts +39 -183
  346. package/dist/index.d.ts +39 -183
  347. package/dist/index.js +49 -9
  348. package/dist/resolve-D-GOaxZy.d.cts +60 -0
  349. package/dist/resolve-D-GOaxZy.d.ts +60 -0
  350. package/dist/slot/index.cjs +9 -3
  351. package/dist/slot/index.cjs.map +1 -1
  352. package/dist/slot/index.js +2 -2
  353. package/dist/stories/index.cjs +108 -0
  354. package/dist/stories/index.cjs.map +1 -0
  355. package/dist/stories/index.d.cts +46 -0
  356. package/dist/stories/index.d.ts +46 -0
  357. package/dist/stories/index.js +94 -0
  358. package/dist/stories/index.js.map +1 -0
  359. package/dist/theme/index.cjs +259 -26
  360. package/dist/theme/index.cjs.map +1 -1
  361. package/dist/theme/index.d.cts +26 -0
  362. package/dist/theme/index.d.ts +26 -0
  363. package/dist/theme/index.js +4 -3
  364. package/dist/use-theme-CoqfnvRs.d.cts +112 -0
  365. package/dist/use-theme-CoqfnvRs.d.ts +112 -0
  366. package/dist/utils/cn.cjs +18 -6
  367. package/dist/utils/cn.cjs.map +1 -1
  368. package/dist/utils/cn.js +2 -2
  369. package/package.json +41 -10
  370. package/dist/chunk-6OABNXBY.js +0 -213
  371. package/dist/chunk-6OABNXBY.js.map +0 -1
  372. package/dist/chunk-7QVYU63E.js +0 -6
  373. package/dist/chunk-FXKIWONG.js.map +0 -1
  374. package/dist/chunk-NDEDMCHT.js +0 -40
  375. package/dist/chunk-NDEDMCHT.js.map +0 -1
  376. package/dist/chunk-SSTXLK5I.js.map +0 -1
  377. package/dist/chunk-UAKFCMWK.js +0 -3
  378. package/dist/chunk-X3AJNNF6.js +0 -539
  379. package/dist/chunk-X3AJNNF6.js.map +0 -1
  380. package/dist/chunk-XGM2K4TT.js +0 -31
  381. package/dist/chunk-XGM2K4TT.js.map +0 -1
  382. package/dist/stories/story-registry.cjs +0 -776
  383. package/dist/stories/story-registry.cjs.map +0 -1
  384. package/dist/stories/story-registry.d.cts +0 -13
  385. package/dist/stories/story-registry.d.ts +0 -13
  386. package/dist/stories/story-registry.js +0 -106
  387. package/dist/stories/story-registry.js.map +0 -1
@@ -0,0 +1,446 @@
1
+ import { px } from './chunk-5A2QOOVN.js';
2
+ import { cn } from './chunk-CHXHRJNZ.js';
3
+ import { useThemeColors } from './chunk-R5JMDDCB.js';
4
+ import { __name } from './chunk-WCQVDF3K.js';
5
+ import { createContext, useState, useCallback, useRef, useEffect, useMemo, useContext } from 'react';
6
+ import { View, Pressable, Text } from 'react-native';
7
+ import { jsx } from 'nativewind/jsx-runtime';
8
+
9
+ var SIZE_TOKENS = {
10
+ sm: { height: 32, paddingHKey: "2", fontKey: "sm", iconSize: 14 },
11
+ // 8px (closest to legacy 10) / fontSize sm 14
12
+ md: { height: 40, paddingHKey: "3", fontKey: "sm", iconSize: 16 },
13
+ // 12px / fontSize sm 14
14
+ lg: { height: 48, paddingHKey: "4", fontKey: "md", iconSize: 20 }
15
+ // 16px / fontSize md 16
16
+ };
17
+ var ToggleRoot = /* @__PURE__ */ __name(({
18
+ pressed,
19
+ defaultPressed = false,
20
+ onChange,
21
+ variant = "default",
22
+ size = "md",
23
+ disabled = false,
24
+ children,
25
+ "aria-label": ariaLabel,
26
+ accessibilityLabel,
27
+ className,
28
+ testID
29
+ }) => {
30
+ const [inner, setInner] = useState(defaultPressed);
31
+ const isControlled = pressed !== void 0;
32
+ const isOn = isControlled ? Boolean(pressed) : inner;
33
+ const handlePress = useCallback(() => {
34
+ if (disabled) {
35
+ return;
36
+ }
37
+ const next = !isOn;
38
+ if (!isControlled) {
39
+ setInner(next);
40
+ }
41
+ onChange?.(next);
42
+ }, [disabled, isControlled, isOn, onChange]);
43
+ return /* @__PURE__ */ jsx(
44
+ ToggleVisual,
45
+ {
46
+ isOn,
47
+ disabled,
48
+ variant,
49
+ size,
50
+ onPress: handlePress,
51
+ ariaLabel: ariaLabel ?? accessibilityLabel,
52
+ className,
53
+ testID,
54
+ children
55
+ }
56
+ );
57
+ }, "ToggleRoot");
58
+ var ToggleVisual = /* @__PURE__ */ __name(({
59
+ isOn,
60
+ disabled,
61
+ variant,
62
+ size,
63
+ onPress,
64
+ onKeyDown,
65
+ onFocus,
66
+ ariaLabel,
67
+ className,
68
+ testID,
69
+ children,
70
+ tabIndex,
71
+ borderRadius,
72
+ suppressRightBorder,
73
+ forceBorder,
74
+ refCallback
75
+ }) => {
76
+ const colors = useThemeColors();
77
+ const tokens = SIZE_TOKENS[size];
78
+ const paddingH = px(colors.spacing[tokens.paddingHKey]);
79
+ const fontSize = px(colors.fontSize[tokens.fontKey]);
80
+ const radiusEach = borderRadius && typeof borderRadius !== "number" ? borderRadius : void 0;
81
+ const radiusValue = typeof borderRadius === "number" ? borderRadius : radiusEach ? void 0 : px(colors.radius.md);
82
+ const baseStyle = {
83
+ height: tokens.height,
84
+ paddingHorizontal: paddingH,
85
+ flexDirection: "row",
86
+ alignItems: "center",
87
+ justifyContent: "center",
88
+ gap: px(colors.spacing["2"]) - 2,
89
+ // closest theme-rooted approximation of legacy 6
90
+ ...radiusValue !== void 0 ? { borderRadius: radiusValue } : null,
91
+ ...radiusEach ? {
92
+ borderTopLeftRadius: radiusEach.topLeft,
93
+ borderTopRightRadius: radiusEach.topRight,
94
+ borderBottomLeftRadius: radiusEach.bottomLeft,
95
+ borderBottomRightRadius: radiusEach.bottomRight
96
+ } : null,
97
+ // 200ms color/background transition. Web only; native ignores it.
98
+ ...{
99
+ transitionProperty: "background-color, border-color, color",
100
+ transitionDuration: "200ms",
101
+ transitionTimingFunction: "ease"
102
+ }
103
+ };
104
+ const surfaceFor = /* @__PURE__ */ __name((hovered) => {
105
+ if (variant === "outline" || forceBorder) {
106
+ return {
107
+ backgroundColor: isOn ? variant === "outline" ? colors.semantic.background.subtle : colors.semantic.interactive.primary : hovered ? colors.semantic.background.subtle : "transparent",
108
+ borderWidth: 1,
109
+ borderColor: isOn ? colors.semantic.interactive.primary : colors.semantic.border.default,
110
+ ...suppressRightBorder ? { borderRightWidth: 0 } : null
111
+ };
112
+ }
113
+ return {
114
+ backgroundColor: isOn ? colors.semantic.interactive.primary : hovered ? colors.semantic.background.subtle : colors.semantic.background.elevated,
115
+ borderWidth: 1,
116
+ borderColor: isOn ? colors.semantic.interactive.primary : colors.semantic.border.default
117
+ };
118
+ }, "surfaceFor");
119
+ const textColor = variant === "outline" ? isOn ? colors.semantic.interactive.primary : colors.semantic.text.default : isOn ? colors.semantic.text.inverted : colors.semantic.text.default;
120
+ const accessibilityProps = {
121
+ role: "button",
122
+ accessibilityRole: "button",
123
+ "aria-pressed": isOn,
124
+ accessibilityState: { selected: isOn, disabled },
125
+ ...ariaLabel ? { "aria-label": ariaLabel, accessibilityLabel: ariaLabel } : {},
126
+ ...disabled ? { "aria-disabled": true } : {},
127
+ ...testID !== void 0 ? { testID } : {},
128
+ ...tabIndex !== void 0 ? { tabIndex } : {},
129
+ ...onKeyDown ? { onKeyDown } : {},
130
+ ...onFocus ? { onFocus } : {}
131
+ };
132
+ const surfaceStatic = surfaceFor(false);
133
+ return /* @__PURE__ */ jsx(
134
+ Pressable,
135
+ {
136
+ ref: (node) => {
137
+ refCallback?.(node);
138
+ },
139
+ disabled,
140
+ onPress: () => {
141
+ if (!disabled) {
142
+ onPress();
143
+ }
144
+ },
145
+ ...accessibilityProps,
146
+ className: cn(
147
+ "inline-flex flex-row items-center justify-center select-none",
148
+ disabled ? "opacity-50" : void 0,
149
+ className
150
+ ),
151
+ style: [baseStyle, surfaceStatic, disabled ? { opacity: 0.5 } : null],
152
+ children: /* @__PURE__ */ jsx(
153
+ Text,
154
+ {
155
+ style: {
156
+ color: textColor,
157
+ fontFamily: colors.fontFamily.body,
158
+ fontSize,
159
+ fontWeight: colors.fontWeight.medium
160
+ },
161
+ children
162
+ }
163
+ )
164
+ }
165
+ );
166
+ }, "ToggleVisual");
167
+ var ToggleGroupContext = createContext(null);
168
+ var useToggleGroupContext = /* @__PURE__ */ __name(() => {
169
+ const ctx = useContext(ToggleGroupContext);
170
+ if (!ctx) {
171
+ throw new Error("<ToggleGroupItem> must be rendered inside a <ToggleGroup>.");
172
+ }
173
+ return ctx;
174
+ }, "useToggleGroupContext");
175
+ var ToggleGroup = /* @__PURE__ */ __name((props) => {
176
+ const {
177
+ type,
178
+ disabled = false,
179
+ variant = "default",
180
+ size = "md",
181
+ children,
182
+ className,
183
+ testID,
184
+ "aria-label": ariaLabel,
185
+ accessibilityLabel
186
+ } = props;
187
+ const [innerSingle, setInnerSingle] = useState(
188
+ type === "single" ? props.defaultValue : void 0
189
+ );
190
+ const [innerMultiple, setInnerMultiple] = useState(
191
+ type === "multiple" ? props.defaultValue ?? [] : []
192
+ );
193
+ const isSingle = type === "single";
194
+ const isControlled = isSingle ? props.value !== void 0 : props.value !== void 0;
195
+ const setValue = useCallback(
196
+ (next) => {
197
+ if (disabled) {
198
+ return;
199
+ }
200
+ if (isSingle) {
201
+ const current = isControlled ? props.value : innerSingle;
202
+ const updated = current === next ? void 0 : next;
203
+ if (!isControlled) {
204
+ setInnerSingle(updated);
205
+ }
206
+ props.onChange?.(updated);
207
+ } else {
208
+ const current = (isControlled ? props.value : innerMultiple) ?? [];
209
+ const updated = current.includes(next) ? current.filter((v) => v !== next) : [...current, next];
210
+ if (!isControlled) {
211
+ setInnerMultiple(updated);
212
+ }
213
+ props.onChange?.(updated);
214
+ }
215
+ },
216
+ [disabled, isSingle, isControlled, innerSingle, innerMultiple, props]
217
+ );
218
+ const isPressed = useCallback(
219
+ (v) => {
220
+ if (isSingle) {
221
+ const current2 = isControlled ? props.value : innerSingle;
222
+ return current2 === v;
223
+ }
224
+ const current = (isControlled ? props.value : innerMultiple) ?? [];
225
+ return current.includes(v);
226
+ },
227
+ [isSingle, isControlled, innerSingle, innerMultiple, props]
228
+ );
229
+ const refs = useRef(/* @__PURE__ */ new Map());
230
+ const [order, setOrder] = useState([]);
231
+ const [rovingValue, setRovingValueState] = useState(void 0);
232
+ const register = useCallback((v, ref) => {
233
+ refs.current.set(v, ref);
234
+ setOrder((prev) => prev.includes(v) ? prev : [...prev, v]);
235
+ setRovingValueState((current) => current ?? v);
236
+ }, []);
237
+ const unregister = useCallback((v) => {
238
+ refs.current.delete(v);
239
+ setOrder((prev) => prev.filter((x) => x !== v));
240
+ setRovingValueState((current) => current === v ? void 0 : current);
241
+ }, []);
242
+ const focusValue = useCallback((v) => {
243
+ refs.current.get(v)?.current?.focus?.();
244
+ }, []);
245
+ const setRovingValue = useCallback((v) => setRovingValueState(v), []);
246
+ const moveBy = useCallback(
247
+ (delta, current) => {
248
+ const list = order;
249
+ if (list.length === 0) {
250
+ return;
251
+ }
252
+ const idx = list.indexOf(current);
253
+ const start = idx === -1 ? 0 : idx;
254
+ const next = list[(start + delta + list.length) % list.length];
255
+ if (!next) {
256
+ return;
257
+ }
258
+ setRovingValueState(next);
259
+ focusValue(next);
260
+ },
261
+ [order, focusValue]
262
+ );
263
+ const moveTo = useCallback(
264
+ (position) => {
265
+ const list = order;
266
+ if (list.length === 0) {
267
+ return;
268
+ }
269
+ const next = position === "first" ? list[0] : list[list.length - 1];
270
+ if (!next) {
271
+ return;
272
+ }
273
+ setRovingValueState(next);
274
+ focusValue(next);
275
+ },
276
+ [order, focusValue]
277
+ );
278
+ const ctxValue = useMemo(
279
+ () => ({
280
+ type,
281
+ setValue,
282
+ isPressed,
283
+ disabled,
284
+ variant,
285
+ size,
286
+ register,
287
+ unregister,
288
+ rovingValue,
289
+ setRovingValue,
290
+ moveBy,
291
+ moveTo,
292
+ order
293
+ }),
294
+ [
295
+ type,
296
+ setValue,
297
+ isPressed,
298
+ disabled,
299
+ variant,
300
+ size,
301
+ register,
302
+ unregister,
303
+ rovingValue,
304
+ setRovingValue,
305
+ moveBy,
306
+ moveTo,
307
+ order
308
+ ]
309
+ );
310
+ const groupRole = isSingle ? "radiogroup" : "group";
311
+ const label = ariaLabel ?? accessibilityLabel;
312
+ const groupProps = {
313
+ role: groupRole,
314
+ accessibilityRole: groupRole,
315
+ ...label ? { "aria-label": label, accessibilityLabel: label } : {},
316
+ ...disabled ? { "aria-disabled": true } : {},
317
+ ...testID !== void 0 ? { testID } : {}
318
+ };
319
+ const colors = useThemeColors();
320
+ const containerStyle = variant === "default" ? { flexDirection: "row", alignItems: "stretch", gap: 0 } : { flexDirection: "row", alignItems: "stretch", gap: px(colors.spacing["1"]) };
321
+ return /* @__PURE__ */ jsx(ToggleGroupContext.Provider, { value: ctxValue, children: /* @__PURE__ */ jsx(
322
+ View,
323
+ {
324
+ ...groupProps,
325
+ className: cn(
326
+ "inline-flex flex-row items-stretch",
327
+ variant === "default" ? "gap-0" : "gap-1",
328
+ disabled ? "opacity-60" : void 0,
329
+ className
330
+ ),
331
+ style: [containerStyle, disabled ? { opacity: 0.6 } : null],
332
+ children
333
+ }
334
+ ) });
335
+ }, "ToggleGroup");
336
+ var ToggleGroupItem = /* @__PURE__ */ __name(({
337
+ value,
338
+ disabled,
339
+ children,
340
+ "aria-label": ariaLabel,
341
+ accessibilityLabel,
342
+ className,
343
+ testID
344
+ }) => {
345
+ const ctx = useToggleGroupContext();
346
+ const ownRef = useRef(null);
347
+ const registryRef = useRef({ register: ctx.register, unregister: ctx.unregister });
348
+ registryRef.current = { register: ctx.register, unregister: ctx.unregister };
349
+ useEffect(() => {
350
+ const holder = {
351
+ get current() {
352
+ return ownRef.current;
353
+ },
354
+ set current(_v) {
355
+ }
356
+ };
357
+ registryRef.current.register(value, holder);
358
+ return () => registryRef.current.unregister(value);
359
+ }, [value]);
360
+ const isOn = ctx.isPressed(value);
361
+ const isDisabled = disabled || ctx.disabled;
362
+ const isRoving = ctx.rovingValue === value;
363
+ const handleKeyDown = useCallback(
364
+ (event) => {
365
+ switch (event.key) {
366
+ case "ArrowRight":
367
+ case "ArrowDown": {
368
+ event.preventDefault();
369
+ ctx.moveBy(1, value);
370
+ return;
371
+ }
372
+ case "ArrowLeft":
373
+ case "ArrowUp": {
374
+ event.preventDefault();
375
+ ctx.moveBy(-1, value);
376
+ return;
377
+ }
378
+ case "Home": {
379
+ event.preventDefault();
380
+ ctx.moveTo("first");
381
+ return;
382
+ }
383
+ case "End": {
384
+ event.preventDefault();
385
+ ctx.moveTo("last");
386
+ return;
387
+ }
388
+ case " ":
389
+ case "Enter": {
390
+ event.preventDefault();
391
+ if (!isDisabled) {
392
+ ctx.setValue(value);
393
+ }
394
+ return;
395
+ }
396
+ }
397
+ },
398
+ [ctx, isDisabled, value]
399
+ );
400
+ const handleFocus = useCallback(() => {
401
+ ctx.setRovingValue(value);
402
+ }, [ctx, value]);
403
+ const colors = useThemeColors();
404
+ const idx = ctx.order.indexOf(value);
405
+ const isFirst = idx === 0;
406
+ const isLast = idx === ctx.order.length - 1;
407
+ const sharedRadius = px(colors.radius.md);
408
+ const isClustered = ctx.order.length > 1;
409
+ const borderRadius = isClustered ? {
410
+ topLeft: isFirst ? sharedRadius : 0,
411
+ bottomLeft: isFirst ? sharedRadius : 0,
412
+ topRight: isLast ? sharedRadius : 0,
413
+ bottomRight: isLast ? sharedRadius : 0
414
+ } : sharedRadius;
415
+ return /* @__PURE__ */ jsx(
416
+ ToggleVisual,
417
+ {
418
+ isOn,
419
+ disabled: Boolean(isDisabled),
420
+ variant: ctx.variant,
421
+ size: ctx.size,
422
+ onPress: () => ctx.setValue(value),
423
+ onKeyDown: handleKeyDown,
424
+ onFocus: handleFocus,
425
+ ariaLabel: ariaLabel ?? accessibilityLabel,
426
+ className,
427
+ testID,
428
+ tabIndex: isRoving ? 0 : -1,
429
+ borderRadius,
430
+ forceBorder: ctx.variant === "default" && isClustered,
431
+ suppressRightBorder: isClustered && !isLast,
432
+ refCallback: (node) => {
433
+ ownRef.current = node;
434
+ },
435
+ children
436
+ }
437
+ );
438
+ }, "ToggleGroupItem");
439
+ var Toggle = Object.assign(ToggleRoot, {
440
+ Group: ToggleGroup,
441
+ Item: ToggleGroupItem
442
+ });
443
+
444
+ export { Toggle };
445
+ //# sourceMappingURL=chunk-MKSDYRWQ.js.map
446
+ //# sourceMappingURL=chunk-MKSDYRWQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Toggle/Toggle.tsx"],"names":["RNText","current"],"mappings":"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","file":"chunk-MKSDYRWQ.js","sourcesContent":["'use client';\n\nimport type { Theme } from '@nori-ui/tokens';\nimport {\n createContext,\n type KeyboardEvent,\n type ReactNode,\n type RefObject,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport type { ViewStyle } from 'react-native';\nimport { Pressable, Text as RNText, View } from 'react-native';\nimport { px } from '../../theme/px';\nimport { useThemeColors } from '../../theme/use-theme-colors';\nimport { cn } from '../../utils/cn';\n\nexport type ToggleVariant = 'default' | 'outline';\nexport type ToggleSize = 'sm' | 'md' | 'lg';\n\ntype SizeTokens = {\n height: number; // component-density literal — not from theme\n paddingHKey: keyof Theme['spacing'];\n fontKey: keyof Theme['fontSize'];\n iconSize: number; // component-density literal — not from theme\n};\n\n// Heights and icon sizes are intentionally hardcoded — they're tightly\n// coupled to the toggle's overall density. PaddingH and fontSize are\n// pulled from the active theme so a custom theme that scales the\n// spacing / fontSize ramps also scales every Toggle on the page.\nconst SIZE_TOKENS: Record<ToggleSize, SizeTokens> = {\n sm: { height: 32, paddingHKey: '2', fontKey: 'sm', iconSize: 14 }, // 8px (closest to legacy 10) / fontSize sm 14\n md: { height: 40, paddingHKey: '3', fontKey: 'sm', iconSize: 16 }, // 12px / fontSize sm 14\n lg: { height: 48, paddingHKey: '4', fontKey: 'md', iconSize: 20 }, // 16px / fontSize md 16\n};\n\n// ---------- standalone <Toggle> -----------------------------------------------\n\nexport type ToggleProps = {\n /** Controlled pressed state. Pair with `onChange`. */\n pressed?: boolean;\n /** Uncontrolled initial pressed state. Ignored when `pressed` is provided. */\n defaultPressed?: boolean;\n /** Fires with the next pressed state when the user toggles. */\n onChange?: (next: boolean) => void;\n /**\n * Visual treatment.\n * - `default` — transparent when off, filled with `interactive.primary` when on.\n * - `outline` — bordered when off, tinted background + accent border when on.\n * @defaultValue 'default'\n */\n variant?: ToggleVariant;\n /** @defaultValue 'md' */\n size?: ToggleSize;\n /** Group-level disable (also forwarded by `<ToggleGroup>` to its items). */\n disabled?: boolean;\n /** Visible label or icon content. */\n children?: ReactNode;\n /** Required when `children` is icon-only. */\n 'aria-label'?: string;\n accessibilityLabel?: string;\n className?: string;\n testID?: string;\n};\n\n/**\n * A two-state button — like the bold / italic buttons in a rich-text\n * toolbar. Use `<Toggle>` standalone for a single bistable action; reach\n * for `<ToggleGroup>` when you need a clustered set with shared selection\n * semantics.\n *\n * Reach for `<Switch>` instead when the control flips a setting in a form\n * (a \"darkmode on/off\" preference). Reach for `<Checkbox>` when the\n * control selects a value inside a form. `<Toggle>` is for buttons that\n * carry an on/off visual.\n */\nconst ToggleRoot = ({\n pressed,\n defaultPressed = false,\n onChange,\n variant = 'default',\n size = 'md',\n disabled = false,\n children,\n 'aria-label': ariaLabel,\n accessibilityLabel,\n className,\n testID,\n}: ToggleProps) => {\n const [inner, setInner] = useState<boolean>(defaultPressed);\n const isControlled = pressed !== undefined;\n const isOn = isControlled ? Boolean(pressed) : inner;\n\n const handlePress = useCallback(() => {\n if (disabled) {\n return;\n }\n const next = !isOn;\n if (!isControlled) {\n setInner(next);\n }\n onChange?.(next);\n }, [disabled, isControlled, isOn, onChange]);\n\n return (\n <ToggleVisual\n isOn={isOn}\n disabled={disabled}\n variant={variant}\n size={size}\n onPress={handlePress}\n ariaLabel={ariaLabel ?? accessibilityLabel}\n className={className}\n testID={testID}\n >\n {children}\n </ToggleVisual>\n );\n};\n\n// ---------- shared visual -----------------------------------------------------\n\ntype ToggleVisualProps = {\n isOn: boolean;\n disabled: boolean;\n variant: ToggleVariant;\n size: ToggleSize;\n onPress: () => void;\n onKeyDown?: ((event: KeyboardEvent<HTMLElement>) => void) | undefined;\n onFocus?: (() => void) | undefined;\n ariaLabel?: string | undefined;\n className?: string | undefined;\n testID?: string | undefined;\n children?: ReactNode | undefined;\n /**\n * Group-aware roving tabindex. `undefined` means \"the natural tab\n * stop\" (standalone Toggle); inside a group, a number is supplied.\n */\n tabIndex?: number | undefined;\n /** Border-radius override for grouped items (square middle, rounded ends). */\n borderRadius?: number | { topLeft: number; topRight: number; bottomLeft: number; bottomRight: number } | undefined;\n /** Suppress the right border so adjacent items share a single seam. */\n suppressRightBorder?: boolean | undefined;\n /** Force the bordered look (used by grouped `default` items so the row reads as one chip). */\n forceBorder?: boolean | undefined;\n refCallback?: ((node: HTMLElement | null) => void) | undefined;\n};\n\nconst ToggleVisual = ({\n isOn,\n disabled,\n variant,\n size,\n onPress,\n onKeyDown,\n onFocus,\n ariaLabel,\n className,\n testID,\n children,\n tabIndex,\n borderRadius,\n suppressRightBorder,\n forceBorder,\n refCallback,\n}: ToggleVisualProps) => {\n const colors = useThemeColors();\n const tokens = SIZE_TOKENS[size];\n const paddingH = px(colors.spacing[tokens.paddingHKey]);\n const fontSize = px(colors.fontSize[tokens.fontKey]);\n\n const radiusEach = borderRadius && typeof borderRadius !== 'number' ? borderRadius : undefined;\n const radiusValue = typeof borderRadius === 'number' ? borderRadius : radiusEach ? undefined : px(colors.radius.md);\n\n const baseStyle: ViewStyle = {\n height: tokens.height,\n paddingHorizontal: paddingH,\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n gap: px(colors.spacing['2']) - 2, // closest theme-rooted approximation of legacy 6\n ...(radiusValue !== undefined ? { borderRadius: radiusValue } : null),\n ...(radiusEach\n ? {\n borderTopLeftRadius: radiusEach.topLeft,\n borderTopRightRadius: radiusEach.topRight,\n borderBottomLeftRadius: radiusEach.bottomLeft,\n borderBottomRightRadius: radiusEach.bottomRight,\n }\n : null),\n // 200ms color/background transition. Web only; native ignores it.\n ...({\n transitionProperty: 'background-color, border-color, color',\n transitionDuration: '200ms',\n transitionTimingFunction: 'ease',\n } as ViewStyle),\n };\n\n const surfaceFor = (hovered: boolean): ViewStyle => {\n if (variant === 'outline' || forceBorder) {\n return {\n backgroundColor: isOn\n ? variant === 'outline'\n ? colors.semantic.background.subtle\n : colors.semantic.interactive.primary\n : hovered\n ? colors.semantic.background.subtle\n : 'transparent',\n borderWidth: 1,\n borderColor: isOn ? colors.semantic.interactive.primary : colors.semantic.border.default,\n ...(suppressRightBorder ? { borderRightWidth: 0 } : null),\n };\n }\n // Default variant, standalone — give the off state a subtle\n // resting bg + 1px border so the control reads as a button. The\n // earlier \"transparent off\" look only made sense inside a group\n // where the cluster's shared seams told the eye \"this is a row of\n // buttons\"; standalone it just looked like text.\n return {\n backgroundColor: isOn\n ? colors.semantic.interactive.primary\n : hovered\n ? colors.semantic.background.subtle\n : colors.semantic.background.elevated,\n borderWidth: 1,\n borderColor: isOn ? colors.semantic.interactive.primary : colors.semantic.border.default,\n };\n };\n\n // Text color: inverted on the filled-on surface, accent-colored on the\n // outline-on surface, default text otherwise.\n const textColor =\n variant === 'outline'\n ? isOn\n ? colors.semantic.interactive.primary\n : colors.semantic.text.default\n : isOn\n ? colors.semantic.text.inverted\n : colors.semantic.text.default;\n\n const accessibilityProps: Record<string, unknown> = {\n role: 'button',\n accessibilityRole: 'button',\n 'aria-pressed': isOn,\n accessibilityState: { selected: isOn, disabled },\n ...(ariaLabel ? { 'aria-label': ariaLabel, accessibilityLabel: ariaLabel } : {}),\n ...(disabled ? { 'aria-disabled': true } : {}),\n ...(testID !== undefined ? { testID } : {}),\n ...(tabIndex !== undefined ? { tabIndex } : {}),\n ...(onKeyDown ? { onKeyDown } : {}),\n ...(onFocus ? { onFocus } : {}),\n };\n\n // RN-Web's Pressable on web doesn't reliably invoke the style callback\n // (the hovered/pressed state isn't always wired through to a re-render\n // — at least in the version we ship against). Compute the static style\n // upfront with `hovered=false` and overlay a `:hover` color via CSS\n // class for the off-state hover. Active-state hover is for outline\n // variant only and doesn't change the look enough to justify the\n // complexity of a style-callback path here.\n const surfaceStatic = surfaceFor(false);\n\n return (\n <Pressable\n ref={(node: unknown) => {\n refCallback?.(node as HTMLElement | null);\n }}\n disabled={disabled}\n onPress={() => {\n if (!disabled) {\n onPress();\n }\n }}\n {...accessibilityProps}\n className={cn(\n 'inline-flex flex-row items-center justify-center select-none',\n disabled ? 'opacity-50' : undefined,\n className\n )}\n style={[baseStyle, surfaceStatic, disabled ? { opacity: 0.5 } : null]}\n >\n {/* Always wrap children in an RNText so the dynamic\n * `textColor` (inverted on the on-state surface, default\n * otherwise) reaches both string children and arbitrary\n * inline elements (B/I/U spans, lucide icons, etc.) via\n * CSS color inheritance. Without this wrapper, non-string\n * children render with their parent's color regardless of\n * selected state — so an italic \"I\" stays dark on the\n * dark filled-on background and disappears.\n */}\n <RNText\n style={{\n color: textColor,\n fontFamily: colors.fontFamily.body,\n fontSize,\n fontWeight: colors.fontWeight.medium as '500',\n }}\n >\n {children}\n </RNText>\n </Pressable>\n );\n};\n\n// ---------- <ToggleGroup> + context ------------------------------------------\n\ntype ToggleGroupContextValue = {\n type: 'single' | 'multiple';\n setValue: (value: string) => void;\n isPressed: (value: string) => boolean;\n disabled: boolean;\n variant: ToggleVariant;\n size: ToggleSize;\n register: (value: string, ref: RefObject<HTMLElement | null>) => void;\n unregister: (value: string) => void;\n rovingValue: string | undefined;\n setRovingValue: (next: string) => void;\n moveBy: (delta: 1 | -1, current: string) => void;\n moveTo: (position: 'first' | 'last') => void;\n /** Live ordered list of registered item values — drives border math. */\n order: string[];\n};\n\nconst ToggleGroupContext = createContext<ToggleGroupContextValue | null>(null);\n\nconst useToggleGroupContext = () => {\n const ctx = useContext(ToggleGroupContext);\n if (!ctx) {\n throw new Error('<ToggleGroupItem> must be rendered inside a <ToggleGroup>.');\n }\n return ctx;\n};\n\ntype ToggleGroupCommonProps = {\n /** Group-level disable. Each item's `disabled` is OR-ed with this. */\n disabled?: boolean;\n /** @defaultValue 'default' */\n variant?: ToggleVariant;\n /** @defaultValue 'md' */\n size?: ToggleSize;\n children?: ReactNode;\n className?: string;\n testID?: string;\n 'aria-label'?: string;\n accessibilityLabel?: string;\n};\n\nexport type ToggleGroupSingleProps = ToggleGroupCommonProps & {\n /** Multi-select gives an array; single-select gives a string (or undefined). */\n type: 'single';\n // `| undefined` is intentional under exactOptionalPropertyTypes — clicking\n // the active item clears the selection, so consumers MUST be allowed to\n // pass `undefined` as the controlled value, not just omit the prop.\n value?: string | undefined;\n defaultValue?: string | undefined;\n onChange?: (next: string | undefined) => void;\n};\n\nexport type ToggleGroupMultipleProps = ToggleGroupCommonProps & {\n type: 'multiple';\n value?: string[] | undefined;\n defaultValue?: string[] | undefined;\n onChange?: (next: string[]) => void;\n};\n\nexport type ToggleGroupProps = ToggleGroupSingleProps | ToggleGroupMultipleProps;\n\n/**\n * Cluster of `<ToggleGroupItem>`s with shared selection semantics.\n *\n * - `type=\"multiple\"` — value is `string[]`. Clicking toggles a value\n * in/out of the array. ARIA exposes a plain `role=\"group\"`.\n * - `type=\"single\"` — value is `string | undefined`. Clicking sets it;\n * re-clicking the active one clears it. ARIA exposes `role=\"radiogroup\"`\n * so AT users hear \"1 of N selected\" semantics.\n *\n * Keyboard: `ArrowRight` / `ArrowLeft` move focus between items (roving\n * tabindex), `Home` / `End` jump to the ends, and `Space` / `Enter`\n * toggle the focused item.\n */\nexport const ToggleGroup = (props: ToggleGroupProps) => {\n const {\n type,\n disabled = false,\n variant = 'default',\n size = 'md',\n children,\n className,\n testID,\n 'aria-label': ariaLabel,\n accessibilityLabel,\n } = props;\n\n // Controlled / uncontrolled state, branching on `type`.\n const [innerSingle, setInnerSingle] = useState<string | undefined>(\n type === 'single' ? (props as ToggleGroupSingleProps).defaultValue : undefined\n );\n const [innerMultiple, setInnerMultiple] = useState<string[]>(\n type === 'multiple' ? ((props as ToggleGroupMultipleProps).defaultValue ?? []) : []\n );\n\n const isSingle = type === 'single';\n const isControlled = isSingle\n ? (props as ToggleGroupSingleProps).value !== undefined\n : (props as ToggleGroupMultipleProps).value !== undefined;\n\n const setValue = useCallback(\n (next: string) => {\n if (disabled) {\n return;\n }\n if (isSingle) {\n const current = isControlled ? (props as ToggleGroupSingleProps).value : innerSingle;\n const updated = current === next ? undefined : next;\n if (!isControlled) {\n setInnerSingle(updated);\n }\n (props as ToggleGroupSingleProps).onChange?.(updated);\n } else {\n const current: string[] =\n (isControlled ? (props as ToggleGroupMultipleProps).value : innerMultiple) ?? [];\n const updated = current.includes(next) ? current.filter((v) => v !== next) : [...current, next];\n if (!isControlled) {\n setInnerMultiple(updated);\n }\n (props as ToggleGroupMultipleProps).onChange?.(updated);\n }\n },\n [disabled, isSingle, isControlled, innerSingle, innerMultiple, props]\n );\n\n const isPressed = useCallback(\n (v: string) => {\n if (isSingle) {\n const current = isControlled ? (props as ToggleGroupSingleProps).value : innerSingle;\n return current === v;\n }\n const current = (isControlled ? (props as ToggleGroupMultipleProps).value : innerMultiple) ?? [];\n return current.includes(v);\n },\n [isSingle, isControlled, innerSingle, innerMultiple, props]\n );\n\n // --- roving tabindex order management ---\n const refs = useRef<Map<string, RefObject<HTMLElement | null>>>(new Map());\n // Live ordered list — re-render the group whenever items register so\n // border math (first/last) and roving init see the current order.\n const [order, setOrder] = useState<string[]>([]);\n const [rovingValue, setRovingValueState] = useState<string | undefined>(undefined);\n\n const register = useCallback((v: string, ref: RefObject<HTMLElement | null>) => {\n refs.current.set(v, ref);\n setOrder((prev) => (prev.includes(v) ? prev : [...prev, v]));\n setRovingValueState((current) => current ?? v);\n }, []);\n\n const unregister = useCallback((v: string) => {\n refs.current.delete(v);\n setOrder((prev) => prev.filter((x) => x !== v));\n setRovingValueState((current) => (current === v ? undefined : current));\n }, []);\n\n const focusValue = useCallback((v: string) => {\n refs.current.get(v)?.current?.focus?.();\n }, []);\n\n const setRovingValue = useCallback((v: string) => setRovingValueState(v), []);\n\n const moveBy = useCallback(\n (delta: 1 | -1, current: string) => {\n const list = order;\n if (list.length === 0) {\n return;\n }\n const idx = list.indexOf(current);\n const start = idx === -1 ? 0 : idx;\n const next = list[(start + delta + list.length) % list.length];\n if (!next) {\n return;\n }\n setRovingValueState(next);\n focusValue(next);\n },\n [order, focusValue]\n );\n\n const moveTo = useCallback(\n (position: 'first' | 'last') => {\n const list = order;\n if (list.length === 0) {\n return;\n }\n const next = position === 'first' ? list[0] : list[list.length - 1];\n if (!next) {\n return;\n }\n setRovingValueState(next);\n focusValue(next);\n },\n [order, focusValue]\n );\n\n const ctxValue = useMemo<ToggleGroupContextValue>(\n () => ({\n type,\n setValue,\n isPressed,\n disabled,\n variant,\n size,\n register,\n unregister,\n rovingValue,\n setRovingValue,\n moveBy,\n moveTo,\n order,\n }),\n [\n type,\n setValue,\n isPressed,\n disabled,\n variant,\n size,\n register,\n unregister,\n rovingValue,\n setRovingValue,\n moveBy,\n moveTo,\n order,\n ]\n );\n\n const groupRole = isSingle ? 'radiogroup' : 'group';\n const label = ariaLabel ?? accessibilityLabel;\n\n const groupProps: Record<string, unknown> = {\n role: groupRole,\n accessibilityRole: groupRole,\n ...(label ? { 'aria-label': label, accessibilityLabel: label } : {}),\n ...(disabled ? { 'aria-disabled': true } : {}),\n ...(testID !== undefined ? { testID } : {}),\n };\n\n // For the `default` variant we render items zero-gap so they share\n // borders, like a UISegmentedControl. For `outline` we keep a small\n // gap so the bordered cells don't double up their seams.\n const colors = useThemeColors();\n const containerStyle: ViewStyle =\n variant === 'default'\n ? { flexDirection: 'row', alignItems: 'stretch', gap: 0 }\n : { flexDirection: 'row', alignItems: 'stretch', gap: px(colors.spacing['1']) };\n\n return (\n <ToggleGroupContext.Provider value={ctxValue}>\n <View\n {...groupProps}\n className={cn(\n 'inline-flex flex-row items-stretch',\n variant === 'default' ? 'gap-0' : 'gap-1',\n disabled ? 'opacity-60' : undefined,\n className\n )}\n style={[containerStyle, disabled ? { opacity: 0.6 } : null]}\n >\n {children}\n </View>\n </ToggleGroupContext.Provider>\n );\n};\n\nexport type ToggleGroupItemProps = {\n /** Unique identifier within the group — written into `value` when pressed. */\n value: string;\n /** Disable just this item (OR-ed with group-level `disabled`). */\n disabled?: boolean;\n children?: ReactNode;\n 'aria-label'?: string;\n accessibilityLabel?: string;\n className?: string;\n testID?: string;\n};\n\n/**\n * One toggle inside a `<ToggleGroup>`. Throws with a clear message when\n * rendered outside of one.\n */\nexport const ToggleGroupItem = ({\n value,\n disabled,\n children,\n 'aria-label': ariaLabel,\n accessibilityLabel,\n className,\n testID,\n}: ToggleGroupItemProps) => {\n const ctx = useToggleGroupContext();\n const ownRef = useRef<HTMLElement | null>(null);\n // Capture register/unregister in a ref so the effect's deps stay\n // value-only — otherwise a new context object on every render (driven\n // by setOrder inside register) would re-fire the effect → setState\n // loop → \"Maximum update depth exceeded\".\n const registryRef = useRef({ register: ctx.register, unregister: ctx.unregister });\n registryRef.current = { register: ctx.register, unregister: ctx.unregister };\n\n useEffect(() => {\n // Read-through holder so the registered ref always sees the latest node.\n const holder: RefObject<HTMLElement | null> = {\n get current() {\n return ownRef.current;\n },\n set current(_v) {\n /* no-op — read-through to ownRef */\n },\n } as unknown as RefObject<HTMLElement | null>;\n registryRef.current.register(value, holder);\n return () => registryRef.current.unregister(value);\n }, [value]);\n\n const isOn = ctx.isPressed(value);\n const isDisabled = disabled || ctx.disabled;\n const isRoving = ctx.rovingValue === value;\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLElement>) => {\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowDown': {\n event.preventDefault();\n ctx.moveBy(1, value);\n return;\n }\n case 'ArrowLeft':\n case 'ArrowUp': {\n event.preventDefault();\n ctx.moveBy(-1, value);\n return;\n }\n case 'Home': {\n event.preventDefault();\n ctx.moveTo('first');\n return;\n }\n case 'End': {\n event.preventDefault();\n ctx.moveTo('last');\n return;\n }\n case ' ':\n case 'Enter': {\n event.preventDefault();\n if (!isDisabled) {\n ctx.setValue(value);\n }\n return;\n }\n }\n },\n [ctx, isDisabled, value]\n );\n\n const handleFocus = useCallback(() => {\n ctx.setRovingValue(value);\n }, [ctx, value]);\n\n // Items inside a `default`-variant group share borders: only the first\n // rounds the left, the last rounds the right; everything else is square.\n const colors = useThemeColors();\n const idx = ctx.order.indexOf(value);\n const isFirst = idx === 0;\n const isLast = idx === ctx.order.length - 1;\n const sharedRadius = px(colors.radius.md);\n const isClustered = ctx.order.length > 1;\n const borderRadius = isClustered\n ? {\n topLeft: isFirst ? sharedRadius : 0,\n bottomLeft: isFirst ? sharedRadius : 0,\n topRight: isLast ? sharedRadius : 0,\n bottomRight: isLast ? sharedRadius : 0,\n }\n : sharedRadius;\n\n return (\n <ToggleVisual\n isOn={isOn}\n disabled={Boolean(isDisabled)}\n variant={ctx.variant}\n size={ctx.size}\n onPress={() => ctx.setValue(value)}\n onKeyDown={handleKeyDown}\n onFocus={handleFocus}\n ariaLabel={ariaLabel ?? accessibilityLabel}\n className={className}\n testID={testID}\n tabIndex={isRoving ? 0 : -1}\n borderRadius={borderRadius}\n forceBorder={ctx.variant === 'default' && isClustered}\n suppressRightBorder={isClustered && !isLast}\n refCallback={(node) => {\n ownRef.current = node;\n }}\n >\n {children}\n </ToggleVisual>\n );\n};\n\n/**\n * Public `Toggle` value — the standalone toggle plus its `.Group` and `.Item`\n * static members. Use `<Toggle.Group>` to wrap a list of `<Toggle.Item>`s.\n *\n * `Object.assign` produces a value whose inferred type carries the static\n * properties, so `.d.ts` consumers can write `<Toggle.Group>` without a\n * separate import.\n */\nexport const Toggle = Object.assign(ToggleRoot, {\n Group: ToggleGroup,\n Item: ToggleGroupItem,\n});\n"]}
@@ -0,0 +1,80 @@
1
+ import { wrapStringChildren } from './chunk-JQQ3FBN7.js';
2
+ import { cn } from './chunk-CHXHRJNZ.js';
3
+ import { __name } from './chunk-WCQVDF3K.js';
4
+ import { View } from 'react-native';
5
+ import { jsx } from 'nativewind/jsx-runtime';
6
+
7
+ var ALIGN_CLASS = {
8
+ start: "items-start",
9
+ center: "items-center",
10
+ end: "items-end",
11
+ stretch: "items-stretch",
12
+ baseline: "items-baseline"
13
+ };
14
+ var JUSTIFY_CLASS = {
15
+ start: "justify-start",
16
+ center: "justify-center",
17
+ end: "justify-end",
18
+ between: "justify-between",
19
+ around: "justify-around",
20
+ evenly: "justify-evenly"
21
+ };
22
+ var ALIGN_STYLE = {
23
+ start: "flex-start",
24
+ center: "center",
25
+ end: "flex-end",
26
+ stretch: "stretch",
27
+ baseline: "baseline"
28
+ };
29
+ var JUSTIFY_STYLE = {
30
+ start: "flex-start",
31
+ center: "center",
32
+ end: "flex-end",
33
+ between: "space-between",
34
+ around: "space-around",
35
+ evenly: "space-evenly"
36
+ };
37
+ var GAP_PX = {
38
+ 0: 0,
39
+ 1: 4,
40
+ 2: 8,
41
+ 3: 12,
42
+ 4: 16,
43
+ 5: 20,
44
+ 6: 24,
45
+ 8: 32,
46
+ 10: 40,
47
+ 12: 48
48
+ };
49
+ var VStack = /* @__PURE__ */ __name(({ gap, align, justify, className, children, style, ...rest }) => {
50
+ const inline = { flexDirection: "column" };
51
+ if (gap !== void 0 && gap !== 0) {
52
+ inline.gap = GAP_PX[gap];
53
+ }
54
+ if (align !== void 0) {
55
+ inline.alignItems = ALIGN_STYLE[align];
56
+ }
57
+ if (justify !== void 0) {
58
+ inline.justifyContent = JUSTIFY_STYLE[justify];
59
+ }
60
+ const merged = style === void 0 ? inline : [inline, style];
61
+ return /* @__PURE__ */ jsx(
62
+ View,
63
+ {
64
+ ...rest,
65
+ style: merged,
66
+ className: cn(
67
+ "flex-col",
68
+ gap !== void 0 && gap !== 0 ? `gap-${gap}` : void 0,
69
+ align !== void 0 ? ALIGN_CLASS[align] : void 0,
70
+ justify !== void 0 ? JUSTIFY_CLASS[justify] : void 0,
71
+ className
72
+ ),
73
+ children: wrapStringChildren(children)
74
+ }
75
+ );
76
+ }, "VStack");
77
+
78
+ export { VStack };
79
+ //# sourceMappingURL=chunk-MRJWPRCX.js.map
80
+ //# sourceMappingURL=chunk-MRJWPRCX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/VStack/VStack.tsx"],"names":[],"mappings":";;;;;;AAcA,IAAM,WAAA,GAA0C;AAAA,EAC5C,KAAA,EAAO,aAAA;AAAA,EACP,MAAA,EAAQ,cAAA;AAAA,EACR,GAAA,EAAK,WAAA;AAAA,EACL,OAAA,EAAS,eAAA;AAAA,EACT,QAAA,EAAU;AACd,CAAA;AAEA,IAAM,aAAA,GAA8C;AAAA,EAChD,KAAA,EAAO,eAAA;AAAA,EACP,MAAA,EAAQ,gBAAA;AAAA,EACR,GAAA,EAAK,aAAA;AAAA,EACL,OAAA,EAAS,iBAAA;AAAA,EACT,MAAA,EAAQ,gBAAA;AAAA,EACR,MAAA,EAAQ;AACZ,CAAA;AAEA,IAAM,WAAA,GAA2D;AAAA,EAC7D,KAAA,EAAO,YAAA;AAAA,EACP,MAAA,EAAQ,QAAA;AAAA,EACR,GAAA,EAAK,UAAA;AAAA,EACL,OAAA,EAAS,SAAA;AAAA,EACT,QAAA,EAAU;AACd,CAAA;AAEA,IAAM,aAAA,GAAmE;AAAA,EACrE,KAAA,EAAO,YAAA;AAAA,EACP,MAAA,EAAQ,QAAA;AAAA,EACR,GAAA,EAAK,UAAA;AAAA,EACL,OAAA,EAAS,eAAA;AAAA,EACT,MAAA,EAAQ,cAAA;AAAA,EACR,MAAA,EAAQ;AACZ,CAAA;AAEA,IAAM,MAAA,GAAmC;AAAA,EACrC,CAAA,EAAG,CAAA;AAAA,EACH,CAAA,EAAG,CAAA;AAAA,EACH,CAAA,EAAG,CAAA;AAAA,EACH,CAAA,EAAG,EAAA;AAAA,EACH,CAAA,EAAG,EAAA;AAAA,EACH,CAAA,EAAG,EAAA;AAAA,EACH,CAAA,EAAG,EAAA;AAAA,EACH,CAAA,EAAG,EAAA;AAAA,EACH,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI;AACR,CAAA;AAOO,IAAM,MAAA,mBAAS,MAAA,CAAA,CAAC,EAAE,GAAA,EAAK,KAAA,EAAO,OAAA,EAAS,SAAA,EAAW,QAAA,EAAU,KAAA,EAAO,GAAG,IAAA,EAAK,KAAmB;AACjG,EAAA,MAAM,MAAA,GAAoB,EAAE,aAAA,EAAe,QAAA,EAAS;AACpD,EAAA,IAAI,GAAA,KAAQ,MAAA,IAAa,GAAA,KAAQ,CAAA,EAAG;AAChC,IAAA,MAAA,CAAO,GAAA,GAAM,OAAO,GAAG,CAAA;AAAA,EAC3B;AACA,EAAA,IAAI,UAAU,MAAA,EAAW;AACrB,IAAA,MAAA,CAAO,UAAA,GAAa,YAAY,KAAK,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAY,MAAA,EAAW;AACvB,IAAA,MAAA,CAAO,cAAA,GAAiB,cAAc,OAAO,CAAA;AAAA,EACjD;AACA,EAAA,MAAM,SAAS,KAAA,KAAU,MAAA,GAAY,MAAA,GAAU,CAAC,QAAQ,KAAK,CAAA;AAC7D,EAAA,uBACI,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACI,GAAG,IAAA;AAAA,MACJ,KAAA,EAAO,MAAA;AAAA,MACP,SAAA,EAAW,EAAA;AAAA,QACP,UAAA;AAAA,QACA,QAAQ,MAAA,IAAa,GAAA,KAAQ,CAAA,GAAI,CAAA,IAAA,EAAO,GAAG,CAAA,CAAA,GAAK,MAAA;AAAA,QAChD,KAAA,KAAU,MAAA,GAAY,WAAA,CAAY,KAAK,CAAA,GAAI,MAAA;AAAA,QAC3C,OAAA,KAAY,MAAA,GAAY,aAAA,CAAc,OAAO,CAAA,GAAI,MAAA;AAAA,QACjD;AAAA,OACJ;AAAA,MAEC,6BAAmB,QAAQ;AAAA;AAAA,GAChC;AAER,CAAA,EA3BsB,QAAA","file":"chunk-MRJWPRCX.js","sourcesContent":["import type { ViewProps, ViewStyle } from 'react-native';\nimport { View } from 'react-native';\nimport { cn } from '../../utils/cn';\nimport { wrapStringChildren } from '../../utils/wrap-string-children';\nimport type { StackAlign, StackGap, StackJustify } from '../HStack/HStack';\n\nexport type VStackProps = ViewProps & {\n gap?: StackGap;\n align?: StackAlign;\n justify?: StackJustify;\n className?: string;\n testID?: string;\n};\n\nconst ALIGN_CLASS: Record<StackAlign, string> = {\n start: 'items-start',\n center: 'items-center',\n end: 'items-end',\n stretch: 'items-stretch',\n baseline: 'items-baseline',\n};\n\nconst JUSTIFY_CLASS: Record<StackJustify, string> = {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n between: 'justify-between',\n around: 'justify-around',\n evenly: 'justify-evenly',\n};\n\nconst ALIGN_STYLE: Record<StackAlign, ViewStyle['alignItems']> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n stretch: 'stretch',\n baseline: 'baseline',\n};\n\nconst JUSTIFY_STYLE: Record<StackJustify, ViewStyle['justifyContent']> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n between: 'space-between',\n around: 'space-around',\n evenly: 'space-evenly',\n};\n\nconst GAP_PX: Record<StackGap, number> = {\n 0: 0,\n 1: 4,\n 2: 8,\n 3: 12,\n 4: 16,\n 5: 20,\n 6: 24,\n 8: 32,\n 10: 40,\n 12: 48,\n};\n\n/**\n * Vertical flex layout primitive. RSC-safe.\n *\n * Layout is driven by inline style; see HStack for the rationale.\n */\nexport const VStack = ({ gap, align, justify, className, children, style, ...rest }: VStackProps) => {\n const inline: ViewStyle = { flexDirection: 'column' };\n if (gap !== undefined && gap !== 0) {\n inline.gap = GAP_PX[gap];\n }\n if (align !== undefined) {\n inline.alignItems = ALIGN_STYLE[align];\n }\n if (justify !== undefined) {\n inline.justifyContent = JUSTIFY_STYLE[justify];\n }\n const merged = style === undefined ? inline : ([inline, style] as ViewStyle[]);\n return (\n <View\n {...rest}\n style={merged}\n className={cn(\n 'flex-col',\n gap !== undefined && gap !== 0 ? `gap-${gap}` : undefined,\n align !== undefined ? ALIGN_CLASS[align] : undefined,\n justify !== undefined ? JUSTIFY_CLASS[justify] : undefined,\n className\n )}\n >\n {wrapStringChildren(children)}\n </View>\n );\n};\n"]}