@nori-ui/core 0.0.4 → 1.0.1

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
@@ -1,539 +0,0 @@
1
- import { theme } from './chunk-6OABNXBY.js';
2
- import { defaultSemanticIcons } from './chunk-NDEDMCHT.js';
3
- import { Slot } from './chunk-FXKIWONG.js';
4
- import { cn } from './chunk-XGM2K4TT.js';
5
- import { __name } from './chunk-7QVYU63E.js';
6
- import { Pressable, Text as Text$1, View, ActivityIndicator, TextInput as TextInput$1 } from 'react-native';
7
- import { jsx, jsxs } from 'nativewind/jsx-runtime';
8
- import { forwardRef, createContext, useContext, useState, useCallback, useId } from 'react';
9
-
10
- function Box({ className, children, ...rest }) {
11
- return /* @__PURE__ */ jsx(View, { ...rest, className: cn(className), children });
12
- }
13
- __name(Box, "Box");
14
- var SIZE_MAP = {
15
- sm: 12,
16
- md: 16,
17
- lg: 24,
18
- xl: 32
19
- };
20
- function Spinner({ label = "Loading", size = "md", testID, color, style, ...rest }) {
21
- const px = typeof size === "number" ? size : SIZE_MAP[size];
22
- return /* @__PURE__ */ jsx(
23
- ActivityIndicator,
24
- {
25
- ...rest,
26
- ...testID !== void 0 ? { testID } : {},
27
- accessibilityRole: "progressbar",
28
- accessibilityLabel: label,
29
- ...color !== void 0 ? { color } : {},
30
- size: px,
31
- style: [{ width: px, height: px }, style]
32
- }
33
- );
34
- }
35
- __name(Spinner, "Spinner");
36
- var VARIANT_CLASSES = {
37
- primary: "bg-semantic-interactive-primary hover:bg-semantic-interactive-primaryHover active:bg-semantic-interactive-primaryPressed",
38
- secondary: "bg-neutral-100 hover:bg-neutral-200 active:bg-neutral-300",
39
- ghost: "bg-transparent hover:bg-neutral-100 active:bg-neutral-200",
40
- destructive: "bg-semantic-interactive-destructive hover:opacity-90 active:opacity-80"
41
- };
42
- var SIZE_CLASSES = {
43
- sm: "h-8 px-3 text-sm",
44
- md: "h-10 px-4 text-md",
45
- lg: "h-12 px-5 text-lg"
46
- };
47
- var ICON_SIZE = { sm: 14, md: 16, lg: 20 };
48
- var BASE_CLASSES = "inline-flex flex-row items-center justify-center gap-2 rounded-md select-none";
49
- var VARIANT_STYLES = {
50
- primary: { backgroundColor: theme.color.primary["600"] },
51
- secondary: { backgroundColor: theme.color.neutral["100"] },
52
- ghost: { backgroundColor: "transparent" },
53
- destructive: { backgroundColor: theme.color.danger }
54
- };
55
- var VARIANT_TEXT_COLOR = {
56
- primary: "#ffffff",
57
- secondary: theme.color.neutral["900"],
58
- ghost: theme.color.neutral["900"],
59
- destructive: "#ffffff"
60
- };
61
- var SIZE_STYLES = {
62
- sm: { container: { height: 32, paddingHorizontal: 12 }, text: { fontSize: 14 } },
63
- md: { container: { height: 40, paddingHorizontal: 16 }, text: { fontSize: 16 } },
64
- lg: { container: { height: 48, paddingHorizontal: 20 }, text: { fontSize: 18 } }
65
- };
66
- var BASE_STYLE = {
67
- flexDirection: "row",
68
- alignItems: "center",
69
- justifyContent: "center",
70
- gap: 8,
71
- borderRadius: 6
72
- };
73
- var Button = forwardRef(/* @__PURE__ */ __name(function Button2({
74
- children,
75
- variant = "primary",
76
- size = "md",
77
- disabled,
78
- loading,
79
- leadingIcon: LeadingIcon,
80
- trailingIcon: TrailingIcon,
81
- asChild,
82
- className,
83
- onPress,
84
- testID,
85
- style,
86
- ...rest
87
- }, forwardedRef) {
88
- const isInoperative = Boolean(disabled) || Boolean(loading);
89
- const classes = cn(
90
- BASE_CLASSES,
91
- VARIANT_CLASSES[variant],
92
- SIZE_CLASSES[size],
93
- isInoperative ? "opacity-60" : void 0,
94
- className
95
- );
96
- const baseInlineStyle = [
97
- BASE_STYLE,
98
- VARIANT_STYLES[variant],
99
- SIZE_STYLES[size].container,
100
- isInoperative ? { opacity: 0.6 } : null
101
- ];
102
- const pressableStyle = typeof style === "function" ? (state) => [baseInlineStyle, style(state)] : [baseInlineStyle, style];
103
- const slotStyle = [baseInlineStyle, typeof style === "function" ? null : style];
104
- const textColor = VARIANT_TEXT_COLOR[variant];
105
- const textStyle = { color: textColor, fontSize: SIZE_STYLES[size].text.fontSize, fontWeight: "500" };
106
- const handlePress = /* @__PURE__ */ __name((ev) => {
107
- if (isInoperative) return;
108
- onPress?.(ev);
109
- }, "handlePress");
110
- if (asChild) {
111
- const slotProps = {
112
- ref: forwardedRef,
113
- className: classes,
114
- style: slotStyle,
115
- onClick: handlePress,
116
- ...rest
117
- };
118
- if (isInoperative) slotProps["aria-disabled"] = true;
119
- if (loading) slotProps["aria-busy"] = true;
120
- if (testID !== void 0) slotProps["data-testid"] = testID;
121
- return /* @__PURE__ */ jsx(Slot, { ...slotProps, children });
122
- }
123
- const pressableExtra = {};
124
- if (isInoperative) pressableExtra["aria-disabled"] = true;
125
- if (loading) pressableExtra["aria-busy"] = true;
126
- return /* @__PURE__ */ jsxs(
127
- Pressable,
128
- {
129
- ref: forwardedRef,
130
- ...testID !== void 0 ? { testID } : {},
131
- role: "button",
132
- accessibilityRole: "button",
133
- accessibilityState: { disabled: isInoperative, busy: Boolean(loading) },
134
- disabled: isInoperative,
135
- onPress: handlePress,
136
- className: classes,
137
- style: pressableStyle,
138
- ...pressableExtra,
139
- ...rest,
140
- children: [
141
- loading ? /* @__PURE__ */ jsx(Spinner, { size: ICON_SIZE[size], label: "Loading", color: textColor }) : LeadingIcon ? /* @__PURE__ */ jsx(LeadingIcon, { size: ICON_SIZE[size], color: textColor }) : null,
142
- /* @__PURE__ */ jsx(
143
- Text$1,
144
- {
145
- className: cn("font-medium", SIZE_CLASSES[size].includes("text-") ? void 0 : "text-md"),
146
- style: textStyle,
147
- children
148
- }
149
- ),
150
- TrailingIcon ? /* @__PURE__ */ jsx(TrailingIcon, { size: ICON_SIZE[size], color: textColor }) : null
151
- ]
152
- }
153
- );
154
- }, "Button"));
155
- Button.displayName = "Button";
156
- var SemanticIconsContext = createContext(defaultSemanticIcons);
157
- SemanticIconsContext.displayName = "SemanticIconsContext";
158
- function SemanticIconsProvider({ icons, children }) {
159
- const merged = icons ? { ...defaultSemanticIcons, ...icons } : defaultSemanticIcons;
160
- return /* @__PURE__ */ jsx(SemanticIconsContext.Provider, { value: merged, children });
161
- }
162
- __name(SemanticIconsProvider, "SemanticIconsProvider");
163
- function useSemanticIcon(name) {
164
- const icons = useContext(SemanticIconsContext);
165
- return icons[name];
166
- }
167
- __name(useSemanticIcon, "useSemanticIcon");
168
- var ROW_STYLE = { flexDirection: "row", alignItems: "center", gap: 8 };
169
- var BOX_STYLE = {
170
- width: 20,
171
- height: 20,
172
- borderRadius: 4,
173
- borderWidth: 1,
174
- borderColor: theme.color.neutral["300"],
175
- backgroundColor: "#ffffff",
176
- alignItems: "center",
177
- justifyContent: "center"
178
- };
179
- var BOX_STYLE_CHECKED = {
180
- backgroundColor: theme.color.primary["600"],
181
- borderColor: theme.color.primary["600"]
182
- };
183
- function Checkbox({
184
- checked,
185
- defaultChecked = false,
186
- indeterminate,
187
- disabled,
188
- onChange,
189
- label,
190
- className,
191
- testID,
192
- asChild,
193
- children
194
- }) {
195
- const [inner, setInner] = useState(defaultChecked);
196
- const isControlled = checked !== void 0;
197
- const value = isControlled ? Boolean(checked) : inner;
198
- const ariaChecked = indeterminate ? "mixed" : value ? "true" : "false";
199
- const isMarked = value || Boolean(indeterminate);
200
- const toggle = useCallback(() => {
201
- if (disabled) return;
202
- const next = !value;
203
- if (!isControlled) setInner(next);
204
- onChange?.(next);
205
- }, [disabled, value, isControlled, onChange]);
206
- const Check = useSemanticIcon("checkmark");
207
- const commonProps = {
208
- role: "checkbox",
209
- "aria-checked": ariaChecked,
210
- accessibilityRole: "checkbox",
211
- accessibilityState: { checked: value, disabled: Boolean(disabled) },
212
- testID
213
- };
214
- if (disabled) commonProps["aria-disabled"] = true;
215
- if (label !== void 0) {
216
- commonProps["aria-label"] = label;
217
- commonProps.accessibilityLabel = label;
218
- }
219
- if (asChild) {
220
- const slotProps = {
221
- role: "checkbox",
222
- "aria-checked": ariaChecked,
223
- onClick: toggle
224
- };
225
- if (disabled) slotProps["aria-disabled"] = true;
226
- if (label !== void 0) slotProps["aria-label"] = label;
227
- if (testID !== void 0) slotProps["data-testid"] = testID;
228
- if (className !== void 0) slotProps.className = className;
229
- return /* @__PURE__ */ jsx(Slot, { ...slotProps, children });
230
- }
231
- const boxClasses = cn("w-5 h-5 rounded-sm border border-semantic-border-strong items-center justify-center");
232
- return /* @__PURE__ */ jsxs(
233
- View,
234
- {
235
- className: cn("flex-row items-center gap-2", disabled ? "opacity-60" : void 0, className),
236
- style: [ROW_STYLE, disabled ? { opacity: 0.6 } : null],
237
- children: [
238
- /* @__PURE__ */ jsx(
239
- Pressable,
240
- {
241
- onPress: toggle,
242
- ...commonProps,
243
- className: boxClasses,
244
- style: [BOX_STYLE, isMarked && !disabled ? BOX_STYLE_CHECKED : null],
245
- children: isMarked && !disabled ? /* @__PURE__ */ jsx(Check, { size: 14, color: "#ffffff" }) : null
246
- }
247
- ),
248
- children ?? (label !== void 0 ? /* @__PURE__ */ jsx(Text$1, { style: { color: theme.color.neutral["900"], fontSize: 16 }, children: label }) : null)
249
- ]
250
- }
251
- );
252
- }
253
- __name(Checkbox, "Checkbox");
254
- var ALIGN_CLASS = {
255
- start: "items-start",
256
- center: "items-center",
257
- end: "items-end",
258
- stretch: "items-stretch",
259
- baseline: "items-baseline"
260
- };
261
- var JUSTIFY_CLASS = {
262
- start: "justify-start",
263
- center: "justify-center",
264
- end: "justify-end",
265
- between: "justify-between",
266
- around: "justify-around",
267
- evenly: "justify-evenly"
268
- };
269
- function HStack({ gap, align, justify, className, children, ...rest }) {
270
- return /* @__PURE__ */ jsx(
271
- View,
272
- {
273
- ...rest,
274
- className: cn(
275
- "flex-row",
276
- gap !== void 0 && gap !== 0 ? `gap-${gap}` : void 0,
277
- align !== void 0 ? ALIGN_CLASS[align] : void 0,
278
- justify !== void 0 ? JUSTIFY_CLASS[justify] : void 0,
279
- className
280
- ),
281
- children
282
- }
283
- );
284
- }
285
- __name(HStack, "HStack");
286
- var ROW_STYLE2 = { flexDirection: "row", alignItems: "center", gap: 8 };
287
- var TRACK_BASE = {
288
- width: 40,
289
- height: 24,
290
- borderRadius: 12,
291
- justifyContent: "center",
292
- paddingHorizontal: 2
293
- };
294
- var THUMB_STYLE = {
295
- width: 20,
296
- height: 20,
297
- borderRadius: 10,
298
- backgroundColor: "#ffffff",
299
- shadowColor: "#000",
300
- shadowOpacity: 0.15,
301
- shadowRadius: 2,
302
- shadowOffset: { width: 0, height: 1 },
303
- elevation: 2
304
- };
305
- function Switch({
306
- checked,
307
- defaultChecked = false,
308
- disabled,
309
- onChange,
310
- label,
311
- className,
312
- testID,
313
- asChild,
314
- children
315
- }) {
316
- const [inner, setInner] = useState(defaultChecked);
317
- const isControlled = checked !== void 0;
318
- const value = isControlled ? Boolean(checked) : inner;
319
- const toggle = useCallback(() => {
320
- if (disabled) return;
321
- const next = !value;
322
- if (!isControlled) setInner(next);
323
- onChange?.(next);
324
- }, [disabled, value, isControlled, onChange]);
325
- const ariaChecked = value ? "true" : "false";
326
- const commonProps = {
327
- role: "switch",
328
- "aria-checked": ariaChecked,
329
- accessibilityRole: "switch",
330
- accessibilityState: { checked: value, disabled: Boolean(disabled) },
331
- testID
332
- };
333
- if (disabled) commonProps["aria-disabled"] = true;
334
- if (label !== void 0) {
335
- commonProps["aria-label"] = label;
336
- commonProps.accessibilityLabel = label;
337
- }
338
- if (asChild) {
339
- const slotProps = {
340
- role: "switch",
341
- "aria-checked": ariaChecked,
342
- onClick: toggle
343
- };
344
- if (disabled) slotProps["aria-disabled"] = true;
345
- if (label !== void 0) slotProps["aria-label"] = label;
346
- if (testID !== void 0) slotProps["data-testid"] = testID;
347
- if (className !== void 0) slotProps.className = className;
348
- return /* @__PURE__ */ jsx(Slot, { ...slotProps, children });
349
- }
350
- const trackClasses = cn(
351
- "w-10 h-6 rounded-full justify-center px-0.5 transition-colors",
352
- value ? "bg-semantic-interactive-primary" : "bg-neutral-300",
353
- disabled ? "opacity-60" : void 0
354
- );
355
- const thumbClasses = cn("w-5 h-5 rounded-full bg-white shadow-sm", value ? "self-end" : "self-start");
356
- const trackStyle = [
357
- TRACK_BASE,
358
- { backgroundColor: value ? theme.color.primary["600"] : theme.color.neutral["300"] },
359
- disabled ? { opacity: 0.6 } : null
360
- ];
361
- const thumbStyle = [THUMB_STYLE, { alignSelf: value ? "flex-end" : "flex-start" }];
362
- return /* @__PURE__ */ jsxs(View, { className: cn("flex-row items-center gap-2", className), style: ROW_STYLE2, children: [
363
- /* @__PURE__ */ jsx(Pressable, { onPress: toggle, ...commonProps, className: trackClasses, style: trackStyle, children: /* @__PURE__ */ jsx(View, { className: thumbClasses, style: thumbStyle }) }),
364
- label ? /* @__PURE__ */ jsx(
365
- Text$1,
366
- {
367
- className: "text-md text-semantic-text-default",
368
- style: { color: theme.color.neutral["900"], fontSize: 16 },
369
- children: label
370
- }
371
- ) : null,
372
- children
373
- ] });
374
- }
375
- __name(Switch, "Switch");
376
- var VARIANT_CLASSES2 = {
377
- "body-xs": "text-xs leading-normal",
378
- "body-sm": "text-sm leading-normal",
379
- "body-md": "text-md leading-normal",
380
- "body-lg": "text-lg leading-relaxed",
381
- "heading-1": "text-4xl leading-tight font-bold",
382
- "heading-2": "text-3xl leading-tight font-semibold",
383
- "heading-3": "text-2xl leading-tight font-semibold"
384
- };
385
- var HEADING_VARIANTS = /* @__PURE__ */ new Set(["heading-1", "heading-2", "heading-3"]);
386
- function Text({ variant = "body-md", className, testID, children, ...rest }) {
387
- const isHeading = HEADING_VARIANTS.has(variant);
388
- const role = isHeading ? "header" : rest.accessibilityRole;
389
- return /* @__PURE__ */ jsx(
390
- Text$1,
391
- {
392
- testID,
393
- ...rest,
394
- ...role !== void 0 ? { accessibilityRole: role } : {},
395
- className: cn(VARIANT_CLASSES2[variant], className),
396
- children
397
- }
398
- );
399
- }
400
- __name(Text, "Text");
401
- var CONTAINER_STYLE = { flexDirection: "column", gap: 4 };
402
- var LABEL_STYLE = { fontSize: 14, fontWeight: "500", color: theme.color.neutral["900"] };
403
- var FIELD_BASE_STYLE = {
404
- flexDirection: "row",
405
- alignItems: "center",
406
- borderRadius: 6,
407
- borderWidth: 1,
408
- paddingHorizontal: 12
409
- };
410
- var INPUT_STYLE = {
411
- flex: 1,
412
- paddingVertical: 8,
413
- fontSize: 16,
414
- color: theme.color.neutral["900"]
415
- };
416
- var HELPER_STYLE = { fontSize: 14, color: theme.color.neutral["500"] };
417
- var ERROR_STYLE = { fontSize: 14, color: theme.color.danger };
418
- function TextInput({
419
- label,
420
- helperText,
421
- error,
422
- disabled,
423
- leading,
424
- trailing,
425
- containerClassName,
426
- className,
427
- testID,
428
- onChangeText,
429
- multiline,
430
- numberOfLines,
431
- ...rest
432
- }) {
433
- const reactId = useId();
434
- const inputId = testID ?? `nori-ui-input-${reactId}`;
435
- const describeId = `${inputId}-describe`;
436
- const hasError = Boolean(error);
437
- const describedBy = error || helperText ? describeId : void 0;
438
- const inputExtras = {};
439
- if (testID !== void 0) inputExtras.testID = testID;
440
- if (label !== void 0) inputExtras.accessibilityLabel = label;
441
- if (hasError) inputExtras["aria-invalid"] = true;
442
- if (describedBy !== void 0) inputExtras["aria-describedby"] = describedBy;
443
- if (multiline !== void 0) inputExtras.multiline = multiline;
444
- if (numberOfLines !== void 0) inputExtras.numberOfLines = numberOfLines;
445
- if (onChangeText !== void 0) inputExtras.onChangeText = onChangeText;
446
- const fieldStyle = [
447
- FIELD_BASE_STYLE,
448
- { borderColor: hasError ? theme.color.danger : theme.color.neutral["200"] },
449
- disabled ? { opacity: 0.6 } : null
450
- ];
451
- return /* @__PURE__ */ jsxs(View, { className: cn("flex flex-col gap-1", containerClassName), style: CONTAINER_STYLE, children: [
452
- label !== void 0 ? /* @__PURE__ */ jsx(
453
- "label",
454
- {
455
- htmlFor: inputId,
456
- className: "text-sm font-medium text-semantic-text-default",
457
- style: LABEL_STYLE,
458
- children: label
459
- }
460
- ) : null,
461
- /* @__PURE__ */ jsxs(
462
- View,
463
- {
464
- className: cn(
465
- "flex-row items-center rounded-md border px-3",
466
- hasError ? "border-semantic-interactive-destructive" : "border-semantic-border-default",
467
- disabled ? "opacity-60" : void 0
468
- ),
469
- style: fieldStyle,
470
- children: [
471
- leading ? /* @__PURE__ */ jsx(View, { className: "mr-2", style: { marginRight: 8 }, children: leading }) : null,
472
- /* @__PURE__ */ jsx(
473
- TextInput$1,
474
- {
475
- nativeID: inputId,
476
- editable: !disabled,
477
- className: cn("flex-1 py-2 text-md text-semantic-text-default outline-none", className),
478
- style: INPUT_STYLE,
479
- placeholderTextColor: theme.color.neutral["400"],
480
- ...inputExtras,
481
- ...rest
482
- }
483
- ),
484
- trailing ? /* @__PURE__ */ jsx(View, { className: "ml-2", style: { marginLeft: 8 }, children: trailing }) : null
485
- ]
486
- }
487
- ),
488
- error ? /* @__PURE__ */ jsx(
489
- Text$1,
490
- {
491
- nativeID: describeId,
492
- className: "text-sm text-semantic-interactive-destructive",
493
- style: ERROR_STYLE,
494
- children: error
495
- }
496
- ) : helperText ? /* @__PURE__ */ jsx(Text$1, { nativeID: describeId, className: "text-sm text-semantic-text-muted", style: HELPER_STYLE, children: helperText }) : null
497
- ] });
498
- }
499
- __name(TextInput, "TextInput");
500
- function TextArea({ numberOfLines = 4, ...rest }) {
501
- return /* @__PURE__ */ jsx(TextInput, { multiline: true, numberOfLines, ...rest });
502
- }
503
- __name(TextArea, "TextArea");
504
- var ALIGN_CLASS2 = {
505
- start: "items-start",
506
- center: "items-center",
507
- end: "items-end",
508
- stretch: "items-stretch",
509
- baseline: "items-baseline"
510
- };
511
- var JUSTIFY_CLASS2 = {
512
- start: "justify-start",
513
- center: "justify-center",
514
- end: "justify-end",
515
- between: "justify-between",
516
- around: "justify-around",
517
- evenly: "justify-evenly"
518
- };
519
- function VStack({ gap, align, justify, className, children, ...rest }) {
520
- return /* @__PURE__ */ jsx(
521
- View,
522
- {
523
- ...rest,
524
- className: cn(
525
- "flex-col",
526
- gap !== void 0 && gap !== 0 ? `gap-${gap}` : void 0,
527
- align !== void 0 ? ALIGN_CLASS2[align] : void 0,
528
- justify !== void 0 ? JUSTIFY_CLASS2[justify] : void 0,
529
- className
530
- ),
531
- children
532
- }
533
- );
534
- }
535
- __name(VStack, "VStack");
536
-
537
- export { Box, Button, Checkbox, HStack, SemanticIconsProvider, Spinner, Switch, Text, TextArea, TextInput, VStack, useSemanticIcon };
538
- //# sourceMappingURL=chunk-X3AJNNF6.js.map
539
- //# sourceMappingURL=chunk-X3AJNNF6.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/Box/Box.tsx","../src/components/Spinner/Spinner.tsx","../src/components/Button/Button.tsx","../src/icons/semantic-context.tsx","../src/icons/use-semantic-icon.ts","../src/components/Checkbox/Checkbox.tsx","../src/components/HStack/HStack.tsx","../src/components/Switch/Switch.tsx","../src/components/Text/Text.tsx","../src/components/TextInput/TextInput.tsx","../src/components/TextArea/TextArea.tsx","../src/components/VStack/VStack.tsx"],"names":["jsx","Button","RNText","jsxs","View","Pressable","ROW_STYLE","useState","useCallback","VARIANT_CLASSES","RNTextInput","ALIGN_CLASS","JUSTIFY_CLASS"],"mappings":"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","file":"chunk-X3AJNNF6.js","sourcesContent":["import type { ViewProps } from 'react-native';\nimport { View } from 'react-native';\nimport { cn } from '../../utils/cn';\n\nexport type BoxProps = ViewProps & {\n className?: string;\n testID?: string;\n};\n\n/**\n * Generic layout primitive. Wraps react-native's <View> with className support.\n * RSC-safe.\n */\nexport function Box({ className, children, ...rest }: BoxProps) {\n return (\n <View {...rest} className={cn(className)}>\n {children}\n </View>\n );\n}\n","import type { ActivityIndicatorProps } from 'react-native';\nimport { ActivityIndicator } from 'react-native';\n\nexport type SpinnerSize = 'sm' | 'md' | 'lg' | 'xl' | number;\n\nexport type SpinnerProps = Omit<ActivityIndicatorProps, 'size'> & {\n /** Visible (a11y) label. Defaults to the i18n \"common.loading\" default (\"Loading\"). */\n label?: string;\n size?: SpinnerSize;\n testID?: string;\n className?: string;\n};\n\nconst SIZE_MAP: Record<Exclude<SpinnerSize, number>, number> = {\n sm: 12,\n md: 16,\n lg: 24,\n xl: 32,\n};\n\n/**\n * Loading indicator.\n *\n * a11y: rendered with `role=\"progressbar\"` and an `aria-label` so screen\n * readers announce it. Respects `prefers-reduced-motion` — on web, react-native-web's\n * ActivityIndicator will render without animation when the media query matches;\n * on native, React Native's ActivityIndicator honors the OS reduce-motion setting\n * automatically.\n *\n * RSC-safe: pure render, no hooks.\n */\nexport function Spinner({ label = 'Loading', size = 'md', testID, color, style, ...rest }: SpinnerProps) {\n const px = typeof size === 'number' ? size : SIZE_MAP[size];\n return (\n <ActivityIndicator\n {...rest}\n {...(testID !== undefined ? { testID } : {})}\n accessibilityRole=\"progressbar\"\n accessibilityLabel={label}\n {...(color !== undefined ? { color } : {})}\n size={px}\n style={[{ width: px, height: px }, style]}\n />\n );\n}\n","import { theme } from '@nori-ui/tokens';\nimport type { ComponentType, ReactNode } from 'react';\nimport { forwardRef } from 'react';\nimport type { PressableProps, StyleProp, ViewStyle } from 'react-native';\nimport { Pressable, Text as RNText } from 'react-native';\nimport { Slot } from '../../slot';\nimport { cn } from '../../utils/cn';\nimport { Spinner } from '../Spinner';\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'ghost' | 'destructive';\nexport type ButtonSize = 'sm' | 'md' | 'lg';\n\ntype IconSlot = ComponentType<{ size?: number; color?: string }>;\n\nexport type ButtonProps = Omit<PressableProps, 'disabled' | 'children'> & {\n children?: ReactNode;\n variant?: ButtonVariant;\n size?: ButtonSize;\n disabled?: boolean;\n loading?: boolean;\n leadingIcon?: IconSlot;\n trailingIcon?: IconSlot;\n /** If true, the single child becomes the interactive element (Slot pattern). */\n asChild?: boolean;\n className?: string;\n testID?: string;\n};\n\nconst VARIANT_CLASSES: Record<ButtonVariant, string> = {\n primary:\n 'bg-semantic-interactive-primary hover:bg-semantic-interactive-primaryHover active:bg-semantic-interactive-primaryPressed',\n secondary: 'bg-neutral-100 hover:bg-neutral-200 active:bg-neutral-300',\n ghost: 'bg-transparent hover:bg-neutral-100 active:bg-neutral-200',\n destructive: 'bg-semantic-interactive-destructive hover:opacity-90 active:opacity-80',\n};\n\nconst SIZE_CLASSES: Record<ButtonSize, string> = {\n sm: 'h-8 px-3 text-sm',\n md: 'h-10 px-4 text-md',\n lg: 'h-12 px-5 text-lg',\n};\n\nconst ICON_SIZE: Record<ButtonSize, number> = { sm: 14, md: 16, lg: 20 };\n\nconst BASE_CLASSES = 'inline-flex flex-row items-center justify-center gap-2 rounded-md select-none';\n\n// Inline fallback styles mirror the NativeWind classes above. They ship so\n// the component renders correctly when NativeWind is NOT active (e.g. Expo\n// Snack's sandbox, or apps that don't configure NativeWind). When NativeWind\n// IS active, its compiled className styles merge with and (where intended)\n// override these defaults.\nconst VARIANT_STYLES: Record<ButtonVariant, ViewStyle> = {\n primary: { backgroundColor: theme.color.primary['600'] },\n secondary: { backgroundColor: theme.color.neutral['100'] },\n ghost: { backgroundColor: 'transparent' },\n destructive: { backgroundColor: theme.color.danger },\n};\n\nconst VARIANT_TEXT_COLOR: Record<ButtonVariant, string> = {\n primary: '#ffffff',\n secondary: theme.color.neutral['900'],\n ghost: theme.color.neutral['900'],\n destructive: '#ffffff',\n};\n\nconst SIZE_STYLES: Record<ButtonSize, { container: ViewStyle; text: { fontSize: number } }> = {\n sm: { container: { height: 32, paddingHorizontal: 12 }, text: { fontSize: 14 } },\n md: { container: { height: 40, paddingHorizontal: 16 }, text: { fontSize: 16 } },\n lg: { container: { height: 48, paddingHorizontal: 20 }, text: { fontSize: 18 } },\n};\n\nconst BASE_STYLE: ViewStyle = {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n gap: 8,\n borderRadius: 6,\n};\n\nexport const Button = forwardRef<unknown, ButtonProps>(function Button(\n {\n children,\n variant = 'primary',\n size = 'md',\n disabled,\n loading,\n leadingIcon: LeadingIcon,\n trailingIcon: TrailingIcon,\n asChild,\n className,\n onPress,\n testID,\n style,\n ...rest\n },\n forwardedRef\n) {\n const isInoperative = Boolean(disabled) || Boolean(loading);\n const classes = cn(\n BASE_CLASSES,\n VARIANT_CLASSES[variant],\n SIZE_CLASSES[size],\n isInoperative ? 'opacity-60' : undefined,\n className\n );\n\n const baseInlineStyle: StyleProp<ViewStyle> = [\n BASE_STYLE,\n VARIANT_STYLES[variant],\n SIZE_STYLES[size].container,\n isInoperative ? { opacity: 0.6 } : null,\n ];\n const pressableStyle: PressableProps['style'] =\n typeof style === 'function' ? (state) => [baseInlineStyle, style(state)] : [baseInlineStyle, style];\n const slotStyle: StyleProp<ViewStyle> = [baseInlineStyle, typeof style === 'function' ? null : style];\n\n const textColor = VARIANT_TEXT_COLOR[variant];\n const textStyle = { color: textColor, fontSize: SIZE_STYLES[size].text.fontSize, fontWeight: '500' as const };\n\n const handlePress: NonNullable<PressableProps['onPress']> = (ev) => {\n if (isInoperative) return;\n onPress?.(ev);\n };\n\n if (asChild) {\n const slotProps: Record<string, unknown> = {\n ref: forwardedRef,\n className: classes,\n style: slotStyle,\n onClick: handlePress as unknown as (...args: unknown[]) => unknown,\n ...rest,\n };\n if (isInoperative) slotProps['aria-disabled'] = true;\n if (loading) slotProps['aria-busy'] = true;\n if (testID !== undefined) slotProps['data-testid'] = testID;\n return <Slot {...slotProps}>{children}</Slot>;\n }\n\n const pressableExtra: Record<string, unknown> = {};\n if (isInoperative) pressableExtra['aria-disabled'] = true;\n if (loading) pressableExtra['aria-busy'] = true;\n\n return (\n <Pressable\n ref={forwardedRef as never}\n {...(testID !== undefined ? { testID } : {})}\n role=\"button\"\n accessibilityRole=\"button\"\n accessibilityState={{ disabled: isInoperative, busy: Boolean(loading) }}\n disabled={isInoperative}\n onPress={handlePress}\n className={classes}\n style={pressableStyle}\n {...pressableExtra}\n {...rest}\n >\n {loading ? (\n <Spinner size={ICON_SIZE[size]} label=\"Loading\" color={textColor} />\n ) : LeadingIcon ? (\n <LeadingIcon size={ICON_SIZE[size]} color={textColor} />\n ) : null}\n <RNText\n className={cn('font-medium', SIZE_CLASSES[size].includes('text-') ? undefined : 'text-md')}\n style={textStyle}\n >\n {children}\n </RNText>\n {TrailingIcon ? <TrailingIcon size={ICON_SIZE[size]} color={textColor} /> : null}\n </Pressable>\n );\n});\nButton.displayName = 'Button';\n","'use client';\n\nimport type { ReactNode } from 'react';\nimport { createContext } from 'react';\nimport { defaultSemanticIcons, type SemanticIcons } from './default-semantic-icons';\n\nexport const SemanticIconsContext = createContext<SemanticIcons>(defaultSemanticIcons);\nSemanticIconsContext.displayName = 'SemanticIconsContext';\n\nexport type SemanticIconsProviderProps = {\n icons?: Partial<SemanticIcons>;\n children?: ReactNode;\n};\n\nexport function SemanticIconsProvider({ icons, children }: SemanticIconsProviderProps) {\n const merged: SemanticIcons = icons ? { ...defaultSemanticIcons, ...icons } : defaultSemanticIcons;\n return <SemanticIconsContext.Provider value={merged}>{children}</SemanticIconsContext.Provider>;\n}\n","'use client';\n\nimport { useContext } from 'react';\nimport type { SemanticIcons } from './default-semantic-icons';\nimport { SemanticIconsContext } from './semantic-context';\n\nexport function useSemanticIcon<K extends keyof SemanticIcons>(name: K): SemanticIcons[K] {\n const icons = useContext(SemanticIconsContext);\n return icons[name];\n}\n","'use client';\n\nimport { theme } from '@nori-ui/tokens';\nimport type { ReactNode } from 'react';\nimport { useCallback, useState } from 'react';\nimport type { ViewStyle } from 'react-native';\nimport { Pressable, Text as RNText, View } from 'react-native';\nimport { useSemanticIcon } from '../../icons/use-semantic-icon';\nimport { Slot } from '../../slot';\nimport { cn } from '../../utils/cn';\n\nexport type CheckboxProps = {\n checked?: boolean;\n defaultChecked?: boolean;\n indeterminate?: boolean;\n disabled?: boolean;\n onChange?: (next: boolean) => void;\n label?: string;\n className?: string;\n testID?: string;\n asChild?: boolean;\n children?: ReactNode;\n};\n\n// Inline defaults so the checkbox renders correctly without NativeWind.\nconst ROW_STYLE: ViewStyle = { flexDirection: 'row', alignItems: 'center', gap: 8 };\nconst BOX_STYLE: ViewStyle = {\n width: 20,\n height: 20,\n borderRadius: 4,\n borderWidth: 1,\n borderColor: theme.color.neutral['300'],\n backgroundColor: '#ffffff',\n alignItems: 'center',\n justifyContent: 'center',\n};\nconst BOX_STYLE_CHECKED: ViewStyle = {\n backgroundColor: theme.color.primary['600'],\n borderColor: theme.color.primary['600'],\n};\n\n/**\n * Checkbox — supports controlled + uncontrolled state, indeterminate (aria-checked=\"mixed\"),\n * asChild (via Slot), and a visible label that doubles as the accessibility label.\n */\nexport function Checkbox({\n checked,\n defaultChecked = false,\n indeterminate,\n disabled,\n onChange,\n label,\n className,\n testID,\n asChild,\n children,\n}: CheckboxProps) {\n const [inner, setInner] = useState<boolean>(defaultChecked);\n const isControlled = checked !== undefined;\n const value = isControlled ? Boolean(checked) : inner;\n\n const ariaChecked: 'true' | 'false' | 'mixed' = indeterminate ? 'mixed' : value ? 'true' : 'false';\n const isMarked = value || Boolean(indeterminate);\n\n const toggle = useCallback(() => {\n if (disabled) return;\n const next = !value;\n if (!isControlled) setInner(next);\n onChange?.(next);\n }, [disabled, value, isControlled, onChange]);\n\n const Check = useSemanticIcon('checkmark');\n\n const commonProps: Record<string, unknown> = {\n role: 'checkbox',\n 'aria-checked': ariaChecked,\n accessibilityRole: 'checkbox' as const,\n accessibilityState: { checked: value, disabled: Boolean(disabled) },\n testID,\n };\n if (disabled) commonProps['aria-disabled'] = true;\n if (label !== undefined) {\n commonProps['aria-label'] = label;\n commonProps.accessibilityLabel = label;\n }\n\n if (asChild) {\n const slotProps: Record<string, unknown> = {\n role: 'checkbox',\n 'aria-checked': ariaChecked,\n onClick: toggle,\n };\n if (disabled) slotProps['aria-disabled'] = true;\n if (label !== undefined) slotProps['aria-label'] = label;\n if (testID !== undefined) slotProps['data-testid'] = testID;\n if (className !== undefined) slotProps.className = className;\n return <Slot {...slotProps}>{children}</Slot>;\n }\n\n const boxClasses = cn('w-5 h-5 rounded-sm border border-semantic-border-strong items-center justify-center');\n\n return (\n <View\n className={cn('flex-row items-center gap-2', disabled ? 'opacity-60' : undefined, className)}\n style={[ROW_STYLE, disabled ? { opacity: 0.6 } : null]}\n >\n <Pressable\n onPress={toggle}\n {...commonProps}\n className={boxClasses}\n style={[BOX_STYLE, isMarked && !disabled ? BOX_STYLE_CHECKED : null]}\n >\n {isMarked && !disabled ? <Check size={14} color=\"#ffffff\" /> : null}\n </Pressable>\n {children ??\n (label !== undefined ? (\n <RNText style={{ color: theme.color.neutral['900'], fontSize: 16 }}>{label}</RNText>\n ) : null)}\n </View>\n );\n}\n","import type { ViewProps } from 'react-native';\nimport { View } from 'react-native';\nimport { cn } from '../../utils/cn';\n\nexport type StackGap = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12;\nexport type StackAlign = 'start' | 'center' | 'end' | 'stretch' | 'baseline';\nexport type StackJustify = 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';\n\nexport type HStackProps = 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\n/**\n * Horizontal flex layout primitive. RSC-safe.\n */\nexport function HStack({ gap, align, justify, className, children, ...rest }: HStackProps) {\n return (\n <View\n {...rest}\n className={cn(\n 'flex-row',\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 {children}\n </View>\n );\n}\n","'use client';\n\nimport { theme } from '@nori-ui/tokens';\nimport type { ReactNode } from 'react';\nimport { useCallback, useState } from 'react';\nimport type { ViewStyle } from 'react-native';\nimport { Pressable, Text as RNText, View } from 'react-native';\nimport { Slot } from '../../slot';\nimport { cn } from '../../utils/cn';\n\nexport type SwitchProps = {\n checked?: boolean;\n defaultChecked?: boolean;\n disabled?: boolean;\n onChange?: (next: boolean) => void;\n label?: string;\n className?: string;\n testID?: string;\n asChild?: boolean;\n children?: ReactNode;\n};\n\nconst ROW_STYLE: ViewStyle = { flexDirection: 'row', alignItems: 'center', gap: 8 };\nconst TRACK_BASE: ViewStyle = {\n width: 40,\n height: 24,\n borderRadius: 12,\n justifyContent: 'center',\n paddingHorizontal: 2,\n};\nconst THUMB_STYLE: ViewStyle = {\n width: 20,\n height: 20,\n borderRadius: 10,\n backgroundColor: '#ffffff',\n shadowColor: '#000',\n shadowOpacity: 0.15,\n shadowRadius: 2,\n shadowOffset: { width: 0, height: 1 },\n elevation: 2,\n};\n\n/**\n * Switch — a toggle control with role=\"switch\". Supports controlled + uncontrolled,\n * disabled state, asChild (via Slot), and a visible label that doubles as the\n * accessibility label.\n */\nexport function Switch({\n checked,\n defaultChecked = false,\n disabled,\n onChange,\n label,\n className,\n testID,\n asChild,\n children,\n}: SwitchProps) {\n const [inner, setInner] = useState<boolean>(defaultChecked);\n const isControlled = checked !== undefined;\n const value = isControlled ? Boolean(checked) : inner;\n\n const toggle = useCallback(() => {\n if (disabled) return;\n const next = !value;\n if (!isControlled) setInner(next);\n onChange?.(next);\n }, [disabled, value, isControlled, onChange]);\n\n const ariaChecked: 'true' | 'false' = value ? 'true' : 'false';\n\n const commonProps: Record<string, unknown> = {\n role: 'switch',\n 'aria-checked': ariaChecked,\n accessibilityRole: 'switch' as const,\n accessibilityState: { checked: value, disabled: Boolean(disabled) },\n testID,\n };\n if (disabled) commonProps['aria-disabled'] = true;\n if (label !== undefined) {\n commonProps['aria-label'] = label;\n commonProps.accessibilityLabel = label;\n }\n\n if (asChild) {\n const slotProps: Record<string, unknown> = {\n role: 'switch',\n 'aria-checked': ariaChecked,\n onClick: toggle,\n };\n if (disabled) slotProps['aria-disabled'] = true;\n if (label !== undefined) slotProps['aria-label'] = label;\n if (testID !== undefined) slotProps['data-testid'] = testID;\n if (className !== undefined) slotProps.className = className;\n return <Slot {...slotProps}>{children}</Slot>;\n }\n\n const trackClasses = cn(\n 'w-10 h-6 rounded-full justify-center px-0.5 transition-colors',\n value ? 'bg-semantic-interactive-primary' : 'bg-neutral-300',\n disabled ? 'opacity-60' : undefined\n );\n const thumbClasses = cn('w-5 h-5 rounded-full bg-white shadow-sm', value ? 'self-end' : 'self-start');\n\n const trackStyle = [\n TRACK_BASE,\n { backgroundColor: value ? theme.color.primary['600'] : theme.color.neutral['300'] },\n disabled ? { opacity: 0.6 } : null,\n ];\n const thumbStyle = [THUMB_STYLE, { alignSelf: value ? 'flex-end' : 'flex-start' } as ViewStyle];\n\n return (\n <View className={cn('flex-row items-center gap-2', className)} style={ROW_STYLE}>\n <Pressable onPress={toggle} {...commonProps} className={trackClasses} style={trackStyle}>\n <View className={thumbClasses} style={thumbStyle} />\n </Pressable>\n {label ? (\n <RNText\n className=\"text-md text-semantic-text-default\"\n style={{ color: theme.color.neutral['900'], fontSize: 16 }}\n >\n {label}\n </RNText>\n ) : null}\n {children}\n </View>\n );\n}\n","import type { TextProps as RNTextProps } from 'react-native';\nimport { Text as RNText } from 'react-native';\nimport { cn } from '../../utils/cn';\n\nexport type TextVariant = 'body-xs' | 'body-sm' | 'body-md' | 'body-lg' | 'heading-1' | 'heading-2' | 'heading-3';\n\nexport type TextProps = RNTextProps & {\n variant?: TextVariant;\n className?: string;\n testID?: string;\n};\n\nconst VARIANT_CLASSES: Record<TextVariant, string> = {\n 'body-xs': 'text-xs leading-normal',\n 'body-sm': 'text-sm leading-normal',\n 'body-md': 'text-md leading-normal',\n 'body-lg': 'text-lg leading-relaxed',\n 'heading-1': 'text-4xl leading-tight font-bold',\n 'heading-2': 'text-3xl leading-tight font-semibold',\n 'heading-3': 'text-2xl leading-tight font-semibold',\n};\n\nconst HEADING_VARIANTS: Readonly<Set<TextVariant>> = new Set(['heading-1', 'heading-2', 'heading-3']);\n\n/**\n * Typography primitive. Renders a react-native <Text>; on web via RN-Web\n * it becomes a <div role=\"...\"> with the appropriate className.\n *\n * RSC-safe: pure render, no hooks.\n */\nexport function Text({ variant = 'body-md', className, testID, children, ...rest }: TextProps) {\n const isHeading = HEADING_VARIANTS.has(variant);\n const role = isHeading ? 'header' : rest.accessibilityRole;\n return (\n <RNText\n testID={testID}\n {...rest}\n {...(role !== undefined ? { accessibilityRole: role } : {})}\n className={cn(VARIANT_CLASSES[variant], className)}\n >\n {children}\n </RNText>\n );\n}\n","import { theme } from '@nori-ui/tokens';\nimport type { ReactNode } from 'react';\nimport { useId } from 'react';\nimport type { TextInputProps as RNTextInputProps, TextStyle, ViewStyle } from 'react-native';\nimport { Text as RNText, TextInput as RNTextInput, View } from 'react-native';\nimport { cn } from '../../utils/cn';\n\nexport type TextInputProps = Omit<RNTextInputProps, 'editable'> & {\n label?: string;\n helperText?: string;\n error?: string;\n disabled?: boolean;\n leading?: ReactNode;\n trailing?: ReactNode;\n /** Pass through a custom wrapper className */\n containerClassName?: string;\n className?: string;\n testID?: string;\n /** Controlled text handler. Optional so uncontrolled usage works too. */\n onChangeText?: (text: string) => void;\n /** Multi-line mode — flipped by TextArea. Default false. */\n multiline?: boolean;\n numberOfLines?: number;\n};\n\nconst CONTAINER_STYLE: ViewStyle = { flexDirection: 'column', gap: 4 };\nconst LABEL_STYLE: TextStyle = { fontSize: 14, fontWeight: '500', color: theme.color.neutral['900'] };\nconst FIELD_BASE_STYLE: ViewStyle = {\n flexDirection: 'row',\n alignItems: 'center',\n borderRadius: 6,\n borderWidth: 1,\n paddingHorizontal: 12,\n};\nconst INPUT_STYLE: TextStyle = {\n flex: 1,\n paddingVertical: 8,\n fontSize: 16,\n color: theme.color.neutral['900'],\n};\nconst HELPER_STYLE: TextStyle = { fontSize: 14, color: theme.color.neutral['500'] };\nconst ERROR_STYLE: TextStyle = { fontSize: 14, color: theme.color.danger };\n\n/**\n * Single-line text input with label, helper, error, and leading/trailing slots.\n *\n * a11y: label is a <label for={id}>; the input is `aria-invalid=true` + labelled\n * by the error/helper text via aria-describedby when present.\n *\n * Notionally RSC-safe — uses only useId() which React 19 guarantees is safe on\n * the server. No \"use client\" required.\n */\nexport function TextInput({\n label,\n helperText,\n error,\n disabled,\n leading,\n trailing,\n containerClassName,\n className,\n testID,\n onChangeText,\n multiline,\n numberOfLines,\n ...rest\n}: TextInputProps) {\n const reactId = useId();\n const inputId = testID ?? `nori-ui-input-${reactId}`;\n const describeId = `${inputId}-describe`;\n const hasError = Boolean(error);\n const describedBy = error || helperText ? describeId : undefined;\n\n const inputExtras: Record<string, unknown> = {};\n if (testID !== undefined) inputExtras.testID = testID;\n if (label !== undefined) inputExtras.accessibilityLabel = label;\n if (hasError) inputExtras['aria-invalid'] = true;\n if (describedBy !== undefined) inputExtras['aria-describedby'] = describedBy;\n if (multiline !== undefined) inputExtras.multiline = multiline;\n if (numberOfLines !== undefined) inputExtras.numberOfLines = numberOfLines;\n if (onChangeText !== undefined) inputExtras.onChangeText = onChangeText;\n\n const fieldStyle = [\n FIELD_BASE_STYLE,\n { borderColor: hasError ? theme.color.danger : theme.color.neutral['200'] },\n disabled ? { opacity: 0.6 } : null,\n ];\n\n return (\n <View className={cn('flex flex-col gap-1', containerClassName)} style={CONTAINER_STYLE}>\n {label !== undefined ? (\n <label\n htmlFor={inputId}\n className=\"text-sm font-medium text-semantic-text-default\"\n style={LABEL_STYLE as object}\n >\n {label}\n </label>\n ) : null}\n <View\n className={cn(\n 'flex-row items-center rounded-md border px-3',\n hasError ? 'border-semantic-interactive-destructive' : 'border-semantic-border-default',\n disabled ? 'opacity-60' : undefined\n )}\n style={fieldStyle}\n >\n {leading ? (\n <View className=\"mr-2\" style={{ marginRight: 8 }}>\n {leading}\n </View>\n ) : null}\n <RNTextInput\n nativeID={inputId}\n editable={!disabled}\n className={cn('flex-1 py-2 text-md text-semantic-text-default outline-none', className)}\n style={INPUT_STYLE}\n placeholderTextColor={theme.color.neutral['400']}\n {...inputExtras}\n {...rest}\n />\n {trailing ? (\n <View className=\"ml-2\" style={{ marginLeft: 8 }}>\n {trailing}\n </View>\n ) : null}\n </View>\n {error ? (\n <RNText\n nativeID={describeId}\n className=\"text-sm text-semantic-interactive-destructive\"\n style={ERROR_STYLE}\n >\n {error}\n </RNText>\n ) : helperText ? (\n <RNText nativeID={describeId} className=\"text-sm text-semantic-text-muted\" style={HELPER_STYLE}>\n {helperText}\n </RNText>\n ) : null}\n </View>\n );\n}\n","import type { TextInputProps } from '../TextInput';\nimport { TextInput } from '../TextInput';\n\nexport type TextAreaProps = TextInputProps;\n\n/**\n * Multi-line text input. Thin wrapper over TextInput that fixes `multiline=true`\n * and provides a sensible default for `numberOfLines`.\n */\nexport function TextArea({ numberOfLines = 4, ...rest }: TextAreaProps) {\n return <TextInput multiline numberOfLines={numberOfLines} {...rest} />;\n}\n","import type { ViewProps } from 'react-native';\nimport { View } from 'react-native';\nimport { cn } from '../../utils/cn';\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\n/**\n * Vertical flex layout primitive. RSC-safe.\n */\nexport function VStack({ gap, align, justify, className, children, ...rest }: VStackProps) {\n return (\n <View\n {...rest}\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 {children}\n </View>\n );\n}\n"]}