@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,260 @@
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, useRef, useEffect, useCallback, useState, useMemo, useContext } from 'react';
6
+ import { Pressable, View, Text } from 'react-native';
7
+ import { jsxs, jsx } from 'nativewind/jsx-runtime';
8
+
9
+ var RadioGroupContext = createContext(null);
10
+ var useRadioGroupContext = /* @__PURE__ */ __name(() => {
11
+ const ctx = useContext(RadioGroupContext);
12
+ if (!ctx) {
13
+ throw new Error("<Radio> must be rendered inside a <Radio.Group>.");
14
+ }
15
+ return ctx;
16
+ }, "useRadioGroupContext");
17
+ var ROW_LAYOUT_BASE = { flexDirection: "row", alignItems: "center" };
18
+ var DOT_OUTER_BASE = {
19
+ width: 18,
20
+ // component-density literal — not from theme
21
+ height: 18,
22
+ // component-density literal — not from theme
23
+ borderRadius: 9,
24
+ // perfect circle of dot diameter — not from theme
25
+ borderWidth: 1.5,
26
+ alignItems: "center",
27
+ justifyContent: "center"
28
+ };
29
+ var DOT_INNER_BASE = {
30
+ width: 8,
31
+ // component-density literal — not from theme
32
+ height: 8,
33
+ // component-density literal — not from theme
34
+ borderRadius: 4
35
+ // perfect circle — not from theme
36
+ };
37
+ var RadioGroup = /* @__PURE__ */ __name(({
38
+ value,
39
+ defaultValue,
40
+ onChange,
41
+ disabled = false,
42
+ orientation = "vertical",
43
+ name,
44
+ children,
45
+ className,
46
+ testID
47
+ }) => {
48
+ const [inner, setInner] = useState(defaultValue);
49
+ const isControlled = value !== void 0;
50
+ const current = isControlled ? value : inner;
51
+ const refs = useRef(/* @__PURE__ */ new Map());
52
+ const orderRef = useRef([]);
53
+ const register = useCallback((v, ref) => {
54
+ refs.current.set(v, ref);
55
+ if (!orderRef.current.includes(v)) {
56
+ orderRef.current.push(v);
57
+ }
58
+ }, []);
59
+ const unregister = useCallback((v) => {
60
+ refs.current.delete(v);
61
+ orderRef.current = orderRef.current.filter((x) => x !== v);
62
+ }, []);
63
+ const select = useCallback(
64
+ (next) => {
65
+ if (disabled) {
66
+ return;
67
+ }
68
+ if (!isControlled) {
69
+ setInner(next);
70
+ }
71
+ onChange?.(next);
72
+ },
73
+ [disabled, isControlled, onChange]
74
+ );
75
+ const focusValue = useCallback((next) => {
76
+ const ref = refs.current.get(next);
77
+ ref?.current?.focus?.();
78
+ }, []);
79
+ const moveBy = useCallback(
80
+ (offset) => {
81
+ const order = orderRef.current;
82
+ if (order.length === 0) {
83
+ return;
84
+ }
85
+ const idx = current ? order.indexOf(current) : -1;
86
+ const start = idx === -1 ? offset === 1 ? -1 : 0 : idx;
87
+ const len = order.length;
88
+ const next = order[(start + offset + len) % len];
89
+ if (!next) {
90
+ return;
91
+ }
92
+ select(next);
93
+ focusValue(next);
94
+ },
95
+ [current, focusValue, select]
96
+ );
97
+ const handleKeyDown = useCallback(
98
+ (event) => {
99
+ const order = orderRef.current;
100
+ if (order.length === 0) {
101
+ return;
102
+ }
103
+ switch (event.key) {
104
+ case "ArrowDown":
105
+ case "ArrowRight": {
106
+ event.preventDefault();
107
+ moveBy(1);
108
+ return;
109
+ }
110
+ case "ArrowUp":
111
+ case "ArrowLeft": {
112
+ event.preventDefault();
113
+ moveBy(-1);
114
+ return;
115
+ }
116
+ case "Home": {
117
+ event.preventDefault();
118
+ const first = order[0];
119
+ if (first) {
120
+ select(first);
121
+ focusValue(first);
122
+ }
123
+ return;
124
+ }
125
+ case "End": {
126
+ event.preventDefault();
127
+ const last = order[order.length - 1];
128
+ if (last) {
129
+ select(last);
130
+ focusValue(last);
131
+ }
132
+ return;
133
+ }
134
+ }
135
+ },
136
+ [focusValue, moveBy, select]
137
+ );
138
+ const ctxValue = useMemo(
139
+ () => ({ value: current, select, disabled, orientation, name, register, unregister }),
140
+ [current, select, disabled, orientation, name, register, unregister]
141
+ );
142
+ const groupProps = {
143
+ role: "radiogroup",
144
+ accessibilityRole: "radiogroup",
145
+ "aria-orientation": orientation,
146
+ "aria-disabled": disabled || void 0,
147
+ onKeyDown: handleKeyDown,
148
+ ...testID !== void 0 ? { testID } : {}
149
+ };
150
+ return /* @__PURE__ */ jsx(RadioGroupContext.Provider, { value: ctxValue, children: /* @__PURE__ */ jsx(
151
+ RadioGroupViewport,
152
+ {
153
+ groupProps,
154
+ orientation,
155
+ disabled,
156
+ ...className !== void 0 ? { className } : {},
157
+ children
158
+ }
159
+ ) });
160
+ }, "RadioGroup");
161
+ var RadioGroupViewport = /* @__PURE__ */ __name(({
162
+ groupProps,
163
+ orientation,
164
+ disabled,
165
+ className,
166
+ children
167
+ }) => {
168
+ const colors = useThemeColors();
169
+ return /* @__PURE__ */ jsx(
170
+ View,
171
+ {
172
+ ...groupProps,
173
+ className: cn(
174
+ orientation === "horizontal" ? "flex-row gap-4" : "flex-col gap-3",
175
+ disabled ? "opacity-60" : void 0,
176
+ className
177
+ ),
178
+ style: [
179
+ orientation === "horizontal" ? { flexDirection: "row", gap: px(colors.spacing["4"]) } : { flexDirection: "column", gap: px(colors.spacing["3"]) },
180
+ disabled ? { opacity: 0.6 } : null
181
+ ],
182
+ children
183
+ }
184
+ );
185
+ }, "RadioGroupViewport");
186
+ var RadioOption = /* @__PURE__ */ __name(({ value, label, disabled, children, className, testID }) => {
187
+ const ctx = useRadioGroupContext();
188
+ const colors = useThemeColors();
189
+ const ownRef = useRef(null);
190
+ const selected = ctx.value === value;
191
+ const isDisabled = disabled || ctx.disabled;
192
+ useEffect(() => {
193
+ ctx.register(value, ownRef);
194
+ return () => ctx.unregister(value);
195
+ }, [ctx, value]);
196
+ const onPress = useCallback(() => {
197
+ if (isDisabled) {
198
+ return;
199
+ }
200
+ ctx.select(value);
201
+ }, [ctx, value, isDisabled]);
202
+ const tabIndex = selected || ctx.value === void 0 && isFirstOption() ? 0 : -1;
203
+ const accessibilityLabel = label ?? value;
204
+ const radioProps = {
205
+ ref: /* @__PURE__ */ __name((node) => {
206
+ ownRef.current = node;
207
+ }, "ref"),
208
+ role: "radio",
209
+ accessibilityRole: "radio",
210
+ "aria-checked": selected,
211
+ accessibilityState: { checked: selected, disabled: Boolean(isDisabled) },
212
+ accessibilityLabel,
213
+ "aria-label": accessibilityLabel,
214
+ tabIndex,
215
+ onPress,
216
+ ...isDisabled ? { "aria-disabled": true, disabled: true } : {},
217
+ ...testID !== void 0 ? { testID } : {},
218
+ ...ctx.name ? { name: ctx.name } : {}
219
+ };
220
+ const dotOuterStyle = {
221
+ ...DOT_OUTER_BASE,
222
+ backgroundColor: colors.semantic.background.elevated,
223
+ borderColor: selected ? colors.semantic.interactive.primary : colors.color.neutral["400"]
224
+ };
225
+ const dotInnerStyle = { ...DOT_INNER_BASE, backgroundColor: colors.semantic.interactive.primary };
226
+ const rowStyle = { ...ROW_LAYOUT_BASE, gap: px(colors.spacing["2"]) };
227
+ return /* @__PURE__ */ jsxs(
228
+ Pressable,
229
+ {
230
+ ...radioProps,
231
+ className: cn("flex-row items-center gap-2", isDisabled ? "opacity-60" : void 0, className),
232
+ style: [rowStyle, isDisabled ? { opacity: 0.6 } : null],
233
+ children: [
234
+ /* @__PURE__ */ jsx(View, { style: dotOuterStyle, children: selected ? /* @__PURE__ */ jsx(View, { style: dotInnerStyle }) : null }),
235
+ children ?? (label !== void 0 ? /* @__PURE__ */ jsx(
236
+ Text,
237
+ {
238
+ style: {
239
+ color: colors.semantic.text.default,
240
+ fontFamily: colors.fontFamily.body,
241
+ fontSize: px(colors.fontSize.md)
242
+ },
243
+ children: label
244
+ }
245
+ ) : null)
246
+ ]
247
+ }
248
+ );
249
+ }, "RadioOption");
250
+ function isFirstOption(ctx, value) {
251
+ return true;
252
+ }
253
+ __name(isFirstOption, "isFirstOption");
254
+ var Radio = Object.assign(RadioOption, {
255
+ Group: RadioGroup
256
+ });
257
+
258
+ export { Radio };
259
+ //# sourceMappingURL=chunk-IKLA2CVQ.js.map
260
+ //# sourceMappingURL=chunk-IKLA2CVQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Radio/Radio.tsx"],"names":["RNText"],"mappings":"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","file":"chunk-IKLA2CVQ.js","sourcesContent":["'use client';\n\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 RadioGroupOrientation = 'horizontal' | 'vertical';\n\ntype RadioRefMap = Map<string, RefObject<HTMLElement | null>>;\n\ntype RadioGroupContextValue = {\n value: string | undefined;\n select: (next: string) => void;\n disabled: boolean;\n orientation: RadioGroupOrientation;\n name: string | undefined;\n register: (value: string, ref: RefObject<HTMLElement | null>) => void;\n unregister: (value: string) => void;\n};\n\nconst RadioGroupContext = createContext<RadioGroupContextValue | null>(null);\n\nconst useRadioGroupContext = (): RadioGroupContextValue => {\n const ctx = useContext(RadioGroupContext);\n if (!ctx) {\n throw new Error('<Radio> must be rendered inside a <Radio.Group>.');\n }\n return ctx;\n};\n\nexport type RadioGroupProps = {\n /** Controlled selected value. */\n value?: string;\n /** Uncontrolled initial value. */\n defaultValue?: string;\n /** Fires with the new value when the selection changes. */\n onChange?: (next: string) => void;\n /** When true, every Radio inside is non-interactive. Individual Radios can also opt in. */\n disabled?: boolean;\n /**\n * Layout orientation. Drives the keyboard nav axis (Down/Up for vertical,\n * Right/Left for horizontal — both pairs work in either orientation as a\n * usability bonus).\n * @defaultValue 'vertical'\n */\n orientation?: RadioGroupOrientation;\n /** HTML `name` for form integration on web. Optional but recommended. */\n name?: string;\n children?: ReactNode;\n className?: string;\n testID?: string;\n};\n\nexport type RadioProps = {\n /** Unique value within the group. Required. */\n value: string;\n /** Visible label that doubles as the accessibility label. */\n label?: string;\n /** Disable just this option. */\n disabled?: boolean;\n /** Custom content rendered next to the radio dot. Overrides `label`. */\n children?: ReactNode;\n className?: string;\n testID?: string;\n};\n\n// Layout-only base; theme-driven gap is merged inside Radio. The dot\n// dimensions are component-density literals — not from theme — because the\n// radio dot has a fixed visual ramp independent of the spacing scale.\nconst ROW_LAYOUT_BASE: ViewStyle = { flexDirection: 'row', alignItems: 'center' };\nconst DOT_OUTER_BASE: ViewStyle = {\n width: 18, // component-density literal — not from theme\n height: 18, // component-density literal — not from theme\n borderRadius: 9, // perfect circle of dot diameter — not from theme\n borderWidth: 1.5,\n alignItems: 'center',\n justifyContent: 'center',\n};\nconst DOT_INNER_BASE: ViewStyle = {\n width: 8, // component-density literal — not from theme\n height: 8, // component-density literal — not from theme\n borderRadius: 4, // perfect circle — not from theme\n};\n\n/**\n * Single-selection group of radio buttons. Container owns the value;\n * children declare their `value` and any extra disabled state.\n *\n * Keyboard nav follows the WAI-ARIA radiogroup pattern:\n * - Tab into the group → focus lands on the selected option (or the\n * first when nothing is selected). Tab out leaves the group.\n * - ArrowDown / ArrowRight → next option (wraps).\n * - ArrowUp / ArrowLeft → previous option (wraps).\n * - Home / End → first / last.\n * - Selection follows focus, so an arrow key both moves focus and\n * activates the option (the standard radiogroup behavior).\n */\nexport const RadioGroup = ({\n value,\n defaultValue,\n onChange,\n disabled = false,\n orientation = 'vertical',\n name,\n children,\n className,\n testID,\n}: RadioGroupProps) => {\n const [inner, setInner] = useState<string | undefined>(defaultValue);\n const isControlled = value !== undefined;\n const current = isControlled ? value : inner;\n\n const refs = useRef<RadioRefMap>(new Map());\n const orderRef = useRef<string[]>([]);\n\n const register = useCallback((v: string, ref: RefObject<HTMLElement | null>) => {\n refs.current.set(v, ref);\n if (!orderRef.current.includes(v)) {\n orderRef.current.push(v);\n }\n }, []);\n\n const unregister = useCallback((v: string) => {\n refs.current.delete(v);\n orderRef.current = orderRef.current.filter((x) => x !== v);\n }, []);\n\n const select = useCallback(\n (next: string) => {\n if (disabled) {\n return;\n }\n if (!isControlled) {\n setInner(next);\n }\n onChange?.(next);\n },\n [disabled, isControlled, onChange]\n );\n\n const focusValue = useCallback((next: string) => {\n const ref = refs.current.get(next);\n ref?.current?.focus?.();\n }, []);\n\n const moveBy = useCallback(\n (offset: 1 | -1) => {\n const order = orderRef.current;\n if (order.length === 0) {\n return;\n }\n const idx = current ? order.indexOf(current) : -1;\n const start = idx === -1 ? (offset === 1 ? -1 : 0) : idx;\n const len = order.length;\n const next = order[(start + offset + len) % len];\n if (!next) {\n return;\n }\n select(next);\n focusValue(next);\n },\n [current, focusValue, select]\n );\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n const order = orderRef.current;\n if (order.length === 0) {\n return;\n }\n switch (event.key) {\n case 'ArrowDown':\n case 'ArrowRight': {\n event.preventDefault();\n moveBy(1);\n return;\n }\n case 'ArrowUp':\n case 'ArrowLeft': {\n event.preventDefault();\n moveBy(-1);\n return;\n }\n case 'Home': {\n event.preventDefault();\n const first = order[0];\n if (first) {\n select(first);\n focusValue(first);\n }\n return;\n }\n case 'End': {\n event.preventDefault();\n const last = order[order.length - 1];\n if (last) {\n select(last);\n focusValue(last);\n }\n return;\n }\n }\n },\n [focusValue, moveBy, select]\n );\n\n const ctxValue = useMemo<RadioGroupContextValue>(\n () => ({ value: current, select, disabled, orientation, name, register, unregister }),\n [current, select, disabled, orientation, name, register, unregister]\n );\n\n // RN's View doesn't model onKeyDown in its TS surface but RN-Web passes\n // it through to the underlying div. Cast at the spread boundary.\n const groupProps: Record<string, unknown> = {\n role: 'radiogroup',\n accessibilityRole: 'radiogroup',\n 'aria-orientation': orientation,\n 'aria-disabled': disabled || undefined,\n onKeyDown: handleKeyDown,\n ...(testID !== undefined ? { testID } : {}),\n };\n\n return (\n <RadioGroupContext.Provider value={ctxValue}>\n <RadioGroupViewport\n groupProps={groupProps}\n orientation={orientation}\n disabled={disabled}\n {...(className !== undefined ? { className } : {})}\n >\n {children}\n </RadioGroupViewport>\n </RadioGroupContext.Provider>\n );\n};\n\n// Inner view so we can call useThemeColors() to source the orientation\n// gap from the spacing token scale (the parent owns hooks for state).\nconst RadioGroupViewport = ({\n groupProps,\n orientation,\n disabled,\n className,\n children,\n}: {\n groupProps: Record<string, unknown>;\n orientation: RadioGroupOrientation;\n disabled: boolean;\n className?: string;\n children?: ReactNode;\n}) => {\n const colors = useThemeColors();\n return (\n <View\n {...groupProps}\n className={cn(\n orientation === 'horizontal' ? 'flex-row gap-4' : 'flex-col gap-3',\n disabled ? 'opacity-60' : undefined,\n className\n )}\n style={[\n orientation === 'horizontal'\n ? { flexDirection: 'row', gap: px(colors.spacing['4']) }\n : { flexDirection: 'column', gap: px(colors.spacing['3']) },\n disabled ? { opacity: 0.6 } : null,\n ]}\n >\n {children}\n </View>\n );\n};\n\n/**\n * One option inside a `<Radio.Group>`. Must be rendered inside one — throws\n * with a clear message if not.\n */\nconst RadioOption = ({ value, label, disabled, children, className, testID }: RadioProps) => {\n const ctx = useRadioGroupContext();\n const colors = useThemeColors();\n const ownRef = useRef<HTMLElement | null>(null);\n const selected = ctx.value === value;\n const isDisabled = disabled || ctx.disabled;\n\n useEffect(() => {\n ctx.register(value, ownRef);\n return () => ctx.unregister(value);\n }, [ctx, value]);\n\n const onPress = useCallback(() => {\n if (isDisabled) {\n return;\n }\n ctx.select(value);\n }, [ctx, value, isDisabled]);\n\n // Roving tabindex: only the selected option (or the first when nothing\n // is selected) participates in the tab order.\n const tabIndex = selected || (ctx.value === undefined && isFirstOption(ctx, value)) ? 0 : -1;\n\n const accessibilityLabel = label ?? value;\n\n const radioProps: Record<string, unknown> = {\n ref: (node: HTMLElement | null) => {\n ownRef.current = node;\n },\n role: 'radio',\n accessibilityRole: 'radio',\n 'aria-checked': selected,\n accessibilityState: { checked: selected, disabled: Boolean(isDisabled) },\n accessibilityLabel,\n 'aria-label': accessibilityLabel,\n tabIndex,\n onPress,\n ...(isDisabled ? { 'aria-disabled': true, disabled: true } : {}),\n ...(testID !== undefined ? { testID } : {}),\n ...(ctx.name ? { name: ctx.name } : {}),\n };\n\n const dotOuterStyle: ViewStyle = {\n ...DOT_OUTER_BASE,\n backgroundColor: colors.semantic.background.elevated,\n borderColor: selected ? colors.semantic.interactive.primary : colors.color.neutral['400'],\n };\n const dotInnerStyle: ViewStyle = { ...DOT_INNER_BASE, backgroundColor: colors.semantic.interactive.primary };\n\n const rowStyle: ViewStyle = { ...ROW_LAYOUT_BASE, gap: px(colors.spacing['2']) };\n\n return (\n <Pressable\n {...radioProps}\n className={cn('flex-row items-center gap-2', isDisabled ? 'opacity-60' : undefined, className)}\n style={[rowStyle, isDisabled ? { opacity: 0.6 } : null]}\n >\n <View style={dotOuterStyle}>{selected ? <View style={dotInnerStyle} /> : null}</View>\n {children ??\n (label !== undefined ? (\n <RNText\n style={{\n color: colors.semantic.text.default,\n fontFamily: colors.fontFamily.body,\n fontSize: px(colors.fontSize.md),\n }}\n >\n {label}\n </RNText>\n ) : null)}\n </Pressable>\n );\n};\n\n// Tiny helper: when no value is selected yet, the first registered Radio is\n// the tabbable one. This is computed inside Radio (not the context) so we\n// don't have to re-render every Radio whenever the order changes.\nfunction isFirstOption(ctx: RadioGroupContextValue, value: string): boolean {\n // We only have access to register/unregister; Radio doesn't get a peek\n // at the order list. The simple-but-correct fallback: every Radio renders\n // tabIndex=0 when value is undefined, which is harmless for one-radio\n // groups and equivalent to the standard \"tab into the first\" for\n // multi-radio groups (browsers honor the first tabIndex=0 they hit).\n void ctx;\n void value;\n return true;\n}\n\n/**\n * Public `Radio` value — the per-option component plus its `.Group` static\n * member (the cluster). Use `<Radio.Group>` to wrap a list of `<Radio />`s.\n *\n * `Object.assign` produces a value whose inferred type carries the static\n * properties, so `.d.ts` consumers can write `<Radio.Group>` without a\n * separate import.\n */\nexport const Radio = Object.assign(RadioOption, {\n Group: RadioGroup,\n});\n"]}
@@ -0,0 +1,18 @@
1
+ import { Text } from './chunk-JZ774T7U.js';
2
+ import { __name } from './chunk-WCQVDF3K.js';
3
+ import { Children } from 'react';
4
+ import { jsx } from 'nativewind/jsx-runtime';
5
+
6
+ function wrapStringChildren(children) {
7
+ return Children.map(children, (child) => {
8
+ if (typeof child === "string" || typeof child === "number") {
9
+ return /* @__PURE__ */ jsx(Text, { children: child });
10
+ }
11
+ return child;
12
+ });
13
+ }
14
+ __name(wrapStringChildren, "wrapStringChildren");
15
+
16
+ export { wrapStringChildren };
17
+ //# sourceMappingURL=chunk-JQQ3FBN7.js.map
18
+ //# sourceMappingURL=chunk-JQQ3FBN7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/wrap-string-children.tsx"],"names":[],"mappings":";;;;;AAyBO,SAAS,mBAAmB,QAAA,EAAgC;AAC/D,EAAA,OAAO,QAAA,CAAS,GAAA,CAAI,QAAA,EAAU,CAAC,KAAA,KAAU;AACrC,IAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,OAAO,UAAU,QAAA,EAAU;AACxD,MAAA,uBAAO,GAAA,CAAC,QAAM,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,IACxB;AACA,IAAA,OAAO,KAAA;AAAA,EACX,CAAC,CAAA;AACL;AAPgB,MAAA,CAAA,kBAAA,EAAA,oBAAA,CAAA","file":"chunk-JQQ3FBN7.js","sourcesContent":["import { Children, type ReactNode } from 'react';\nimport { Text } from '../components/Text';\n\n/**\n * Walks a `ReactNode` (single, array, or fragment) and wraps every\n * string/number child in a themed `<Text>` so the same JSX renders\n * cleanly on web AND native. Non-string children are passed through\n * unchanged.\n *\n * On native, raw strings as children of any non-Text component throw\n * \"Text strings must be rendered within a <Text> component\". On web,\n * react-native-web silently tolerates them — but the rendered string\n * inherits no theme color, so dark mode never flips.\n *\n * Both bugs collapse to the same fix: wrap. Layout primitives\n * (`<HStack>`, `<VStack>`, `<Box>`) use this so consumers can write\n * `<HStack>Hello</HStack>` and have it Just Work on both platforms\n * and across light/dark mode.\n *\n * The wrapper is the lib's own `<Text>`, which reads from\n * `useThemeColors()` — so the wrapped string flips with the active\n * scheme. Importing a `'use client'` component from an RSC-safe file\n * is allowed; React's RSC model lets server components contain client\n * children.\n */\nexport function wrapStringChildren(children: ReactNode): ReactNode {\n return Children.map(children, (child) => {\n if (typeof child === 'string' || typeof child === 'number') {\n return <Text>{child}</Text>;\n }\n return child;\n });\n}\n"]}
@@ -0,0 +1,69 @@
1
+ import { cn } from './chunk-CHXHRJNZ.js';
2
+ import { useThemeColors, useColorScheme } from './chunk-R5JMDDCB.js';
3
+ import { __name } from './chunk-WCQVDF3K.js';
4
+ import { useRef, useEffect } from 'react';
5
+ import { Animated, Easing } from 'react-native';
6
+ import { jsx } from 'nativewind/jsx-runtime';
7
+
8
+ var PULSE_DURATION_MS = 900;
9
+ var PULSE_MIN = 0.55;
10
+ var PULSE_MAX = 1;
11
+ var Skeleton = /* @__PURE__ */ __name(({
12
+ width = "100%",
13
+ height = 16,
14
+ radius = 6,
15
+ static: isStatic = false,
16
+ className,
17
+ style,
18
+ testID
19
+ }) => {
20
+ const colors = useThemeColors();
21
+ const isDark = useColorScheme() === "dark";
22
+ const opacity = useRef(new Animated.Value(PULSE_MAX)).current;
23
+ useEffect(() => {
24
+ if (isStatic) {
25
+ return;
26
+ }
27
+ const loop = Animated.loop(
28
+ Animated.sequence([
29
+ Animated.timing(opacity, {
30
+ toValue: PULSE_MIN,
31
+ duration: PULSE_DURATION_MS,
32
+ easing: Easing.inOut(Easing.ease),
33
+ useNativeDriver: true
34
+ }),
35
+ Animated.timing(opacity, {
36
+ toValue: PULSE_MAX,
37
+ duration: PULSE_DURATION_MS,
38
+ easing: Easing.inOut(Easing.ease),
39
+ useNativeDriver: true
40
+ })
41
+ ])
42
+ );
43
+ loop.start();
44
+ return () => {
45
+ loop.stop();
46
+ };
47
+ }, [isStatic, opacity]);
48
+ const baseStyle = {
49
+ width,
50
+ height,
51
+ borderRadius: radius === "full" ? 9999 : radius,
52
+ backgroundColor: isDark ? colors.color.neutral["700"] : colors.color.neutral["200"]
53
+ };
54
+ return /* @__PURE__ */ jsx(
55
+ Animated.View,
56
+ {
57
+ ...testID !== void 0 ? { testID } : {},
58
+ "aria-hidden": true,
59
+ accessibilityElementsHidden: true,
60
+ importantForAccessibility: "no",
61
+ className: cn("bg-neutral-200 dark:bg-neutral-700", className),
62
+ style: [baseStyle, isStatic ? null : { opacity }, style]
63
+ }
64
+ );
65
+ }, "Skeleton");
66
+
67
+ export { Skeleton };
68
+ //# sourceMappingURL=chunk-JSAG5YO7.js.map
69
+ //# sourceMappingURL=chunk-JSAG5YO7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Skeleton/Skeleton.tsx"],"names":[],"mappings":";;;;;;;AAyBA,IAAM,iBAAA,GAAoB,GAAA;AAC1B,IAAM,SAAA,GAAY,IAAA;AAClB,IAAM,SAAA,GAAY,CAAA;AAUX,IAAM,2BAAW,MAAA,CAAA,CAAC;AAAA,EACrB,KAAA,GAAQ,MAAA;AAAA,EACR,MAAA,GAAS,EAAA;AAAA,EACT,MAAA,GAAS,CAAA;AAAA,EACT,QAAQ,QAAA,GAAW,KAAA;AAAA,EACnB,SAAA;AAAA,EACA,KAAA;AAAA,EACA;AACJ,CAAA,KAAqB;AACjB,EAAA,MAAM,SAAS,cAAA,EAAe;AAC9B,EAAA,MAAM,MAAA,GAAS,gBAAe,KAAM,MAAA;AACpC,EAAA,MAAM,UAAU,MAAA,CAAO,IAAI,SAAS,KAAA,CAAM,SAAS,CAAC,CAAA,CAAE,OAAA;AAEtD,EAAA,SAAA,CAAU,MAAM;AACZ,IAAA,IAAI,QAAA,EAAU;AACV,MAAA;AAAA,IACJ;AACA,IAAA,MAAM,OAAO,QAAA,CAAS,IAAA;AAAA,MAClB,SAAS,QAAA,CAAS;AAAA,QACd,QAAA,CAAS,OAAO,OAAA,EAAS;AAAA,UACrB,OAAA,EAAS,SAAA;AAAA,UACT,QAAA,EAAU,iBAAA;AAAA,UACV,MAAA,EAAQ,MAAA,CAAO,KAAA,CAAM,MAAA,CAAO,IAAI,CAAA;AAAA,UAChC,eAAA,EAAiB;AAAA,SACpB,CAAA;AAAA,QACD,QAAA,CAAS,OAAO,OAAA,EAAS;AAAA,UACrB,OAAA,EAAS,SAAA;AAAA,UACT,QAAA,EAAU,iBAAA;AAAA,UACV,MAAA,EAAQ,MAAA,CAAO,KAAA,CAAM,MAAA,CAAO,IAAI,CAAA;AAAA,UAChC,eAAA,EAAiB;AAAA,SACpB;AAAA,OACJ;AAAA,KACL;AACA,IAAA,IAAA,CAAK,KAAA,EAAM;AACX,IAAA,OAAO,MAAM;AACT,MAAA,IAAA,CAAK,IAAA,EAAK;AAAA,IACd,CAAA;AAAA,EACJ,CAAA,EAAG,CAAC,QAAA,EAAU,OAAO,CAAC,CAAA;AAWtB,EAAA,MAAM,SAAA,GAAuB;AAAA,IACzB,KAAA;AAAA,IACA,MAAA;AAAA,IACA,YAAA,EAAc,MAAA,KAAW,MAAA,GAAS,IAAA,GAAO,MAAA;AAAA,IACzC,eAAA,EAAiB,MAAA,GAAS,MAAA,CAAO,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAI,MAAA,CAAO,KAAA,CAAM,OAAA,CAAQ,KAAK;AAAA,GACtF;AAEA,EAAA,uBACI,GAAA;AAAA,IAAC,QAAA,CAAS,IAAA;AAAA,IAAT;AAAA,MACI,GAAI,MAAA,KAAW,MAAA,GAAY,EAAE,MAAA,KAAW,EAAC;AAAA,MAC1C,aAAA,EAAa,IAAA;AAAA,MACb,2BAAA,EAA2B,IAAA;AAAA,MAC3B,yBAAA,EAA0B,IAAA;AAAA,MAC1B,SAAA,EAAW,EAAA,CAAG,oCAAA,EAAsC,SAAS,CAAA;AAAA,MAC7D,KAAA,EAAO,CAAC,SAAA,EAAW,QAAA,GAAW,OAAO,EAAE,OAAA,IAAW,KAAK;AAAA;AAAA,GAC3D;AAER,CAAA,EAjEwB,UAAA","file":"chunk-JSAG5YO7.js","sourcesContent":["'use client';\n\nimport { useEffect, useRef } from 'react';\nimport { Animated, Easing, type ViewStyle } from 'react-native';\nimport { useColorScheme } from '../../theme/use-color-scheme';\nimport { useThemeColors } from '../../theme/use-theme-colors';\nimport { cn } from '../../utils/cn';\n\nexport type SkeletonProps = {\n /** Width — number of px or any RN dimension string. Default `100%`. */\n width?: number | `${number}%` | 'auto';\n /** Height — number of px. Default 16. */\n height?: number;\n /**\n * Border radius. Defaults to `theme.radius.md` (6px). Use `'full'`\n * (= 9999px) for circular skeletons (avatars).\n */\n radius?: number | 'full';\n /** Disable the pulse — useful when stacking many skeletons in a list. */\n static?: boolean;\n className?: string;\n style?: ViewStyle;\n testID?: string;\n};\n\nconst PULSE_DURATION_MS = 900;\nconst PULSE_MIN = 0.55;\nconst PULSE_MAX = 1;\n\n/**\n * Subtle loading placeholder. Pulses between full and 55% opacity to signal\n * \"content is loading here, in this shape\" without flashing or distracting.\n *\n * Uses RN `Animated` for the opacity loop — works on web and native with\n * the same code. Respects the `static` prop when you want to skip the\n * animation (e.g. when stacking many skeletons in a long list).\n */\nexport const Skeleton = ({\n width = '100%' as const,\n height = 16,\n radius = 6,\n static: isStatic = false,\n className,\n style,\n testID,\n}: SkeletonProps) => {\n const colors = useThemeColors();\n const isDark = useColorScheme() === 'dark';\n const opacity = useRef(new Animated.Value(PULSE_MAX)).current;\n\n useEffect(() => {\n if (isStatic) {\n return;\n }\n const loop = Animated.loop(\n Animated.sequence([\n Animated.timing(opacity, {\n toValue: PULSE_MIN,\n duration: PULSE_DURATION_MS,\n easing: Easing.inOut(Easing.ease),\n useNativeDriver: true,\n }),\n Animated.timing(opacity, {\n toValue: PULSE_MAX,\n duration: PULSE_DURATION_MS,\n easing: Easing.inOut(Easing.ease),\n useNativeDriver: true,\n }),\n ])\n );\n loop.start();\n return () => {\n loop.stop();\n };\n }, [isStatic, opacity]);\n\n // Skeleton intentionally uses a stronger neutral than the generic\n // semantic.background.subtle. The previous subtle-bg skeleton washed\n // out against the warm-paper page background — barely a hint of a\n // placeholder. A loading state must read as \"something will appear\n // here\", not \"page barely loading.\"\n //\n // On dark we step the other direction (neutral.700 ≈ #3f3f46) so the\n // skeleton is clearly lighter than the page bg (#18181b) without being\n // a glaring grey block.\n const baseStyle: ViewStyle = {\n width,\n height,\n borderRadius: radius === 'full' ? 9999 : radius,\n backgroundColor: isDark ? colors.color.neutral['700'] : colors.color.neutral['200'],\n };\n\n return (\n <Animated.View\n {...(testID !== undefined ? { testID } : {})}\n aria-hidden={true}\n accessibilityElementsHidden\n importantForAccessibility=\"no\"\n className={cn('bg-neutral-200 dark:bg-neutral-700', className)}\n style={[baseStyle, isStatic ? null : { opacity }, style]}\n />\n );\n};\n"]}
@@ -0,0 +1,76 @@
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 { Text as Text$1 } from 'react-native';
6
+ import { jsx } from 'nativewind/jsx-runtime';
7
+
8
+ var VARIANT_CLASSES = {
9
+ "body-xs": "text-xs leading-normal",
10
+ "body-sm": "text-sm leading-normal",
11
+ "body-md": "text-md leading-normal",
12
+ "body-lg": "text-lg leading-relaxed",
13
+ "heading-1": "text-4xl leading-tight font-bold",
14
+ "heading-2": "text-3xl leading-tight font-semibold",
15
+ "heading-3": "text-2xl leading-tight font-semibold"
16
+ };
17
+ var HEADING_VARIANTS = /* @__PURE__ */ new Set(["heading-1", "heading-2", "heading-3"]);
18
+ var VARIANT_KEYS = {
19
+ "body-xs": { fontSize: "xs", fontWeight: "regular", lineHeight: "normal" },
20
+ "body-sm": { fontSize: "sm", fontWeight: "regular", lineHeight: "normal" },
21
+ "body-md": { fontSize: "md", fontWeight: "regular", lineHeight: "normal" },
22
+ "body-lg": { fontSize: "lg", fontWeight: "regular", lineHeight: "relaxed" },
23
+ "heading-1": { fontSize: "4xl", fontWeight: "bold", lineHeight: "tight" },
24
+ "heading-2": {
25
+ fontSize: "3xl",
26
+ fontWeight: "semibold",
27
+ lineHeight: "tight"
28
+ },
29
+ "heading-3": {
30
+ fontSize: "2xl",
31
+ fontWeight: "semibold",
32
+ lineHeight: "tight"
33
+ }
34
+ };
35
+ var Text = /* @__PURE__ */ __name(({ variant = "body-md", className, testID, children, ...rest }) => {
36
+ const colors = useThemeColors();
37
+ const isHeading = HEADING_VARIANTS.has(variant);
38
+ const role = isHeading ? "header" : rest.accessibilityRole;
39
+ const keys = VARIANT_KEYS[variant];
40
+ const sizePx = px(colors.fontSize[keys.fontSize]);
41
+ const lhMultiplier = Number(colors.lineHeight[keys.lineHeight]);
42
+ const themedStyle = {
43
+ // Inline color is the ONLY color source. The Tailwind preset uses
44
+ // `darkMode: ['class', '[data-theme="dark"]']` — that requires a
45
+ // DOM, so on native the `dark:` variant never fires and a
46
+ // className-only color path would always emit the LIGHT variant
47
+ // (near-black), invisible on a dark surface. Sourcing color from
48
+ // `useThemeColors()` means it follows the OS scheme AND honors a
49
+ // forced `colorScheme` override on the provider.
50
+ color: colors.semantic.text.default,
51
+ fontFamily: isHeading ? colors.fontFamily.display : colors.fontFamily.body,
52
+ fontSize: sizePx,
53
+ // RN expects lineHeight in px, not unitless. Tokens carry it as a
54
+ // ratio (1.2 / 1.4 / 1.6) — multiply against the variant fontSize.
55
+ lineHeight: sizePx * lhMultiplier,
56
+ // The fontWeight token returns string literals like "500" / "700"
57
+ // which match RN's TextStyle.fontWeight enum.
58
+ fontWeight: colors.fontWeight[keys.fontWeight]
59
+ };
60
+ const styleProp = rest.style;
61
+ return /* @__PURE__ */ jsx(
62
+ Text$1,
63
+ {
64
+ testID,
65
+ ...rest,
66
+ ...role !== void 0 ? { accessibilityRole: role } : {},
67
+ className: cn(VARIANT_CLASSES[variant], className),
68
+ style: [themedStyle, styleProp],
69
+ children
70
+ }
71
+ );
72
+ }, "Text");
73
+
74
+ export { Text };
75
+ //# sourceMappingURL=chunk-JZ774T7U.js.map
76
+ //# sourceMappingURL=chunk-JZ774T7U.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Text/Text.tsx"],"names":["RNText"],"mappings":";;;;;;;AAgBA,IAAM,eAAA,GAA+C;AAAA,EACjD,SAAA,EAAW,wBAAA;AAAA,EACX,SAAA,EAAW,wBAAA;AAAA,EACX,SAAA,EAAW,wBAAA;AAAA,EACX,SAAA,EAAW,yBAAA;AAAA,EACX,WAAA,EAAa,kCAAA;AAAA,EACb,WAAA,EAAa,sCAAA;AAAA,EACb,WAAA,EAAa;AACjB,CAAA;AAEA,IAAM,mCAA+C,IAAI,GAAA,CAAI,CAAC,WAAA,EAAa,WAAA,EAAa,WAAW,CAAC,CAAA;AAUpG,IAAM,YAAA,GAAiD;AAAA,EACnD,WAAW,EAAE,QAAA,EAAU,MAAM,UAAA,EAAY,SAAA,EAAW,YAAY,QAAA,EAAS;AAAA,EACzE,WAAW,EAAE,QAAA,EAAU,MAAM,UAAA,EAAY,SAAA,EAAW,YAAY,QAAA,EAAS;AAAA,EACzE,WAAW,EAAE,QAAA,EAAU,MAAM,UAAA,EAAY,SAAA,EAAW,YAAY,QAAA,EAAS;AAAA,EACzE,WAAW,EAAE,QAAA,EAAU,MAAM,UAAA,EAAY,SAAA,EAAW,YAAY,SAAA,EAAU;AAAA,EAC1E,aAAa,EAAE,QAAA,EAAU,OAAO,UAAA,EAAY,MAAA,EAAQ,YAAY,OAAA,EAAQ;AAAA,EACxE,WAAA,EAAa;AAAA,IACT,QAAA,EAAU,KAAA;AAAA,IACV,UAAA,EAAY,UAAA;AAAA,IACZ,UAAA,EAAY;AAAA,GAChB;AAAA,EACA,WAAA,EAAa;AAAA,IACT,QAAA,EAAU,KAAA;AAAA,IACV,UAAA,EAAY,UAAA;AAAA,IACZ,UAAA,EAAY;AAAA;AAEpB,CAAA;AAcO,IAAM,IAAA,mBAAO,MAAA,CAAA,CAAC,EAAE,OAAA,GAAU,SAAA,EAAW,WAAW,MAAA,EAAQ,QAAA,EAAU,GAAG,IAAA,EAAK,KAAiB;AAC9F,EAAA,MAAM,SAAS,cAAA,EAAe;AAC9B,EAAA,MAAM,SAAA,GAAY,gBAAA,CAAiB,GAAA,CAAI,OAAO,CAAA;AAC9C,EAAA,MAAM,IAAA,GAAO,SAAA,GAAY,QAAA,GAAW,IAAA,CAAK,iBAAA;AAEzC,EAAA,MAAM,IAAA,GAAO,aAAa,OAAO,CAAA;AACjC,EAAA,MAAM,SAAS,EAAA,CAAG,MAAA,CAAO,QAAA,CAAS,IAAA,CAAK,QAAQ,CAAC,CAAA;AAChD,EAAA,MAAM,eAAe,MAAA,CAAO,MAAA,CAAO,UAAA,CAAW,IAAA,CAAK,UAAU,CAAC,CAAA;AAC9D,EAAA,MAAM,WAAA,GAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQ3B,KAAA,EAAO,MAAA,CAAO,QAAA,CAAS,IAAA,CAAK,OAAA;AAAA,IAC5B,YAAY,SAAA,GAAY,MAAA,CAAO,UAAA,CAAW,OAAA,GAAU,OAAO,UAAA,CAAW,IAAA;AAAA,IACtE,QAAA,EAAU,MAAA;AAAA;AAAA;AAAA,IAGV,YAAY,MAAA,GAAS,YAAA;AAAA;AAAA;AAAA,IAGrB,UAAA,EAAY,MAAA,CAAO,UAAA,CAAW,IAAA,CAAK,UAAU;AAAA,GACjD;AAIA,EAAA,MAAM,YAAa,IAAA,CAA6C,KAAA;AAEhE,EAAA,uBACI,GAAA;AAAA,IAACA,MAAA;AAAA,IAAA;AAAA,MACG,MAAA;AAAA,MACC,GAAG,IAAA;AAAA,MACH,GAAI,IAAA,KAAS,MAAA,GAAY,EAAE,iBAAA,EAAmB,IAAA,KAAS,EAAC;AAAA,MACzD,SAAA,EAAW,EAAA,CAAG,eAAA,CAAgB,OAAO,GAAG,SAAS,CAAA;AAAA,MACjD,KAAA,EAAO,CAAC,WAAA,EAAa,SAAS,CAAA;AAAA,MAE7B;AAAA;AAAA,GACL;AAER,CAAA,EA1CoB,MAAA","file":"chunk-JZ774T7U.js","sourcesContent":["'use client';\n\nimport type { TextProps as RNTextProps, TextStyle } from 'react-native';\nimport { Text as RNText } from 'react-native';\nimport { px } from '../../theme/px';\nimport { useThemeColors } from '../../theme/use-theme-colors';\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// Per-variant resolution from the active theme. Keys here name the\n// fontSize / fontWeight / lineHeight tokens the variant pulls from. The\n// fontFamily is picked separately (display for headings, body otherwise).\ntype VariantKeys = {\n fontSize: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl';\n fontWeight: 'regular' | 'medium' | 'semibold' | 'bold';\n lineHeight: 'tight' | 'normal' | 'relaxed';\n};\nconst VARIANT_KEYS: Record<TextVariant, VariantKeys> = {\n 'body-xs': { fontSize: 'xs', fontWeight: 'regular', lineHeight: 'normal' },\n 'body-sm': { fontSize: 'sm', fontWeight: 'regular', lineHeight: 'normal' },\n 'body-md': { fontSize: 'md', fontWeight: 'regular', lineHeight: 'normal' },\n 'body-lg': { fontSize: 'lg', fontWeight: 'regular', lineHeight: 'relaxed' },\n 'heading-1': { fontSize: '4xl', fontWeight: 'bold', lineHeight: 'tight' },\n 'heading-2': {\n fontSize: '3xl',\n fontWeight: 'semibold',\n lineHeight: 'tight',\n },\n 'heading-3': {\n fontSize: '2xl',\n fontWeight: 'semibold',\n lineHeight: 'tight',\n },\n};\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 * Inline style is sourced from the active `<NoriProvider theme={...}>`:\n * font family (display for headings, body for body variants), fontSize,\n * fontWeight, lineHeight all flow through. Override the whole variant by\n * passing a custom theme; override a single instance by passing `style`.\n *\n * The `className` path keeps the Tailwind dark-mode color flip — inline\n * style provides the typographic substance, className provides the color.\n */\nexport const Text = ({ variant = 'body-md', className, testID, children, ...rest }: TextProps) => {\n const colors = useThemeColors();\n const isHeading = HEADING_VARIANTS.has(variant);\n const role = isHeading ? 'header' : rest.accessibilityRole;\n\n const keys = VARIANT_KEYS[variant];\n const sizePx = px(colors.fontSize[keys.fontSize]);\n const lhMultiplier = Number(colors.lineHeight[keys.lineHeight]);\n const themedStyle: TextStyle = {\n // Inline color is the ONLY color source. The Tailwind preset uses\n // `darkMode: ['class', '[data-theme=\"dark\"]']` — that requires a\n // DOM, so on native the `dark:` variant never fires and a\n // className-only color path would always emit the LIGHT variant\n // (near-black), invisible on a dark surface. Sourcing color from\n // `useThemeColors()` means it follows the OS scheme AND honors a\n // forced `colorScheme` override on the provider.\n color: colors.semantic.text.default,\n fontFamily: isHeading ? colors.fontFamily.display : colors.fontFamily.body,\n fontSize: sizePx,\n // RN expects lineHeight in px, not unitless. Tokens carry it as a\n // ratio (1.2 / 1.4 / 1.6) — multiply against the variant fontSize.\n lineHeight: sizePx * lhMultiplier,\n // The fontWeight token returns string literals like \"500\" / \"700\"\n // which match RN's TextStyle.fontWeight enum.\n fontWeight: colors.fontWeight[keys.fontWeight] as TextStyle['fontWeight'],\n };\n\n // Caller-provided style wins (last in the array). The themed style is\n // the source of truth, the user's `style` prop the override.\n const styleProp = (rest as { style?: TextStyle | TextStyle[] }).style;\n\n return (\n <RNText\n testID={testID}\n {...rest}\n {...(role !== undefined ? { accessibilityRole: role } : {})}\n className={cn(VARIANT_CLASSES[variant], className)}\n style={[themedStyle, styleProp]}\n >\n {children}\n </RNText>\n );\n};\n"]}
@@ -0,0 +1,10 @@
1
+ import { __name } from './chunk-WCQVDF3K.js';
2
+
3
+ // src/components/Dialog/blur-backdrop.tsx
4
+ var BlurBackdrop = /* @__PURE__ */ __name((_props) => {
5
+ return null;
6
+ }, "BlurBackdrop");
7
+
8
+ export { BlurBackdrop };
9
+ //# sourceMappingURL=chunk-KWRDJPP3.js.map
10
+ //# sourceMappingURL=chunk-KWRDJPP3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Dialog/blur-backdrop.tsx"],"names":[],"mappings":";;;AAwBO,IAAM,YAAA,2BAAgB,MAAA,KAAmD;AAC5E,EAAA,OAAO,IAAA;AACX,CAAA,EAF4B,cAAA","file":"chunk-KWRDJPP3.js","sourcesContent":["'use client';\n\n// Web variant of the dialog blur backdrop. On web, the overlay's CSS\n// `backdrop-filter: blur(...)` (set directly on the DOM node by\n// Dialog/AlertDialog) handles the frosted look — there's nothing extra\n// to render here.\n//\n// Metro picks `blur-backdrop.native.tsx` for native bundles, which\n// statically imports `expo-blur`. The split keeps the static import\n// off the web bundle so web consumers don't drag a native module\n// through their build.\n\nimport type { ReactElement } from 'react';\nimport type { ViewProps } from 'react-native';\n\nexport type BlurBackdropProps = {\n /** 0..100. Maps to expo-blur's `intensity`. */\n intensity?: number;\n /** Match the active color scheme so the blur tint reads naturally. */\n tint?: 'light' | 'dark' | 'default';\n /** Style passed straight through (typically StyleSheet.absoluteFill). */\n style?: ViewProps['style'];\n};\n\nexport const BlurBackdrop = (_props: BlurBackdropProps): ReactElement | null => {\n return null;\n};\n"]}