@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,178 @@
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 { useState, useCallback } from 'react';
6
+ import { View, Pressable, Text } from 'react-native';
7
+ import { jsx } from 'nativewind/jsx-runtime';
8
+
9
+ var CONTAINER_LAYOUT_BASE = {
10
+ flexDirection: "row",
11
+ alignItems: "stretch"
12
+ };
13
+ var SEGMENT_LAYOUT_BASE = {
14
+ flex: 1,
15
+ alignItems: "center",
16
+ justifyContent: "center"
17
+ };
18
+ var SEGMENT_SIZE_KEYS = {
19
+ sm: { paddingV: "1", paddingH: "2", font: "sm" },
20
+ // 4 / 8 / 14 — closest to legacy 4/10/13
21
+ md: { paddingV: "2", paddingH: "3", font: "sm" }
22
+ // 8 / 12 / 14 — closest to legacy 6/12/14
23
+ };
24
+ var SEGMENT_SELECTED_BASE = {
25
+ // Subtle elevation that says "this one is on" without overshadowing
26
+ // the unselected segments next to it. Web uses boxShadow (CSS-style);
27
+ // native uses elevation. The legacy RN `shadow*` props were deprecated
28
+ // by react-native-web in favor of `boxShadow`.
29
+ ...{ boxShadow: "0 1px 2px rgba(0, 0, 0, 0.06)" },
30
+ elevation: 1
31
+ };
32
+ var SegmentedControl = /* @__PURE__ */ __name(({
33
+ value,
34
+ defaultValue,
35
+ onChange,
36
+ options,
37
+ disabled = false,
38
+ size = "md",
39
+ label,
40
+ className,
41
+ testID
42
+ }) => {
43
+ const colors = useThemeColors();
44
+ const [inner, setInner] = useState(defaultValue);
45
+ const isControlled = value !== void 0;
46
+ const current = isControlled ? value : inner;
47
+ const select = useCallback(
48
+ (next) => {
49
+ if (disabled) {
50
+ return;
51
+ }
52
+ if (!isControlled) {
53
+ setInner(next);
54
+ }
55
+ onChange?.(next);
56
+ },
57
+ [disabled, isControlled, onChange]
58
+ );
59
+ const handleKeyDown = useCallback(
60
+ (event) => {
61
+ if (options.length === 0) {
62
+ return;
63
+ }
64
+ const idx = options.findIndex((o) => o.value === current);
65
+ const start = idx === -1 ? 0 : idx;
66
+ const offset = event.key === "ArrowRight" || event.key === "ArrowDown" ? 1 : event.key === "ArrowLeft" || event.key === "ArrowUp" ? -1 : 0;
67
+ if (offset === 0 && event.key !== "Home" && event.key !== "End") {
68
+ return;
69
+ }
70
+ event.preventDefault();
71
+ let nextIdx;
72
+ if (event.key === "Home") {
73
+ nextIdx = 0;
74
+ } else if (event.key === "End") {
75
+ nextIdx = options.length - 1;
76
+ } else {
77
+ nextIdx = (start + offset + options.length) % options.length;
78
+ }
79
+ const direction = offset === 0 ? 1 : offset;
80
+ for (let attempts = 0; attempts < options.length; attempts += 1) {
81
+ const candidate = options[nextIdx];
82
+ if (candidate && !candidate.disabled) {
83
+ select(candidate.value);
84
+ return;
85
+ }
86
+ nextIdx = (nextIdx + direction + options.length) % options.length;
87
+ }
88
+ },
89
+ [current, options, select]
90
+ );
91
+ const sizeKeys = SEGMENT_SIZE_KEYS[size];
92
+ const segmentPadV = px(colors.spacing[sizeKeys.paddingV]);
93
+ const segmentPadH = px(colors.spacing[sizeKeys.paddingH]);
94
+ const segmentFontSize = px(colors.fontSize[sizeKeys.font]);
95
+ const groupProps = {
96
+ role: "radiogroup",
97
+ accessibilityRole: "radiogroup",
98
+ onKeyDown: handleKeyDown,
99
+ ...label !== void 0 ? { "aria-label": label, accessibilityLabel: label } : {},
100
+ ...disabled ? { "aria-disabled": true } : {},
101
+ ...testID !== void 0 ? { testID } : {}
102
+ };
103
+ const containerStyle = {
104
+ ...CONTAINER_LAYOUT_BASE,
105
+ borderRadius: px(colors.radius.lg),
106
+ padding: px(colors.spacing["1"]),
107
+ gap: px(colors.spacing["1"]),
108
+ backgroundColor: colors.semantic.background.subtle
109
+ };
110
+ const segmentBaseStyle = {
111
+ ...SEGMENT_LAYOUT_BASE,
112
+ borderRadius: px(colors.radius.md)
113
+ };
114
+ const segmentSelectedStyle = {
115
+ ...SEGMENT_SELECTED_BASE,
116
+ backgroundColor: colors.semantic.background.elevated
117
+ };
118
+ return /* @__PURE__ */ jsx(
119
+ View,
120
+ {
121
+ ...groupProps,
122
+ className: cn(
123
+ "inline-flex flex-row items-stretch rounded-lg bg-neutral-100 dark:bg-neutral-800 p-1 gap-1",
124
+ disabled ? "opacity-60" : void 0,
125
+ className
126
+ ),
127
+ style: [containerStyle, disabled ? { opacity: 0.6 } : null],
128
+ children: options.map((option) => {
129
+ const selected = option.value === current;
130
+ const isOptDisabled = disabled || option.disabled;
131
+ return /* @__PURE__ */ jsx(
132
+ Pressable,
133
+ {
134
+ role: "radio",
135
+ accessibilityRole: "radio",
136
+ "aria-checked": selected,
137
+ accessibilityState: { selected, disabled: Boolean(isOptDisabled) },
138
+ tabIndex: selected || current === void 0 && options[0]?.value === option.value ? 0 : -1,
139
+ onPress: () => {
140
+ if (!isOptDisabled) {
141
+ select(option.value);
142
+ }
143
+ },
144
+ ...isOptDisabled ? { "aria-disabled": true, disabled: true } : {},
145
+ className: cn(
146
+ "flex-1 items-center justify-center rounded-md",
147
+ selected ? "bg-semantic-background-elevated shadow-sm" : "",
148
+ isOptDisabled ? "opacity-50" : ""
149
+ ),
150
+ style: [
151
+ segmentBaseStyle,
152
+ { paddingVertical: segmentPadV, paddingHorizontal: segmentPadH },
153
+ selected ? segmentSelectedStyle : null,
154
+ isOptDisabled ? { opacity: 0.5 } : null
155
+ ],
156
+ children: typeof option.label === "string" ? /* @__PURE__ */ jsx(
157
+ Text,
158
+ {
159
+ style: {
160
+ color: selected ? colors.semantic.text.default : colors.semantic.text.muted,
161
+ fontFamily: colors.fontFamily.body,
162
+ fontSize: segmentFontSize,
163
+ fontWeight: selected ? colors.fontWeight.semibold : colors.fontWeight.medium
164
+ },
165
+ children: option.label
166
+ }
167
+ ) : option.label
168
+ },
169
+ option.value
170
+ );
171
+ })
172
+ }
173
+ );
174
+ }, "SegmentedControl");
175
+
176
+ export { SegmentedControl };
177
+ //# sourceMappingURL=chunk-6AD6KCVB.js.map
178
+ //# sourceMappingURL=chunk-6AD6KCVB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/SegmentedControl/SegmentedControl.tsx"],"names":["RNText"],"mappings":"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","file":"chunk-6AD6KCVB.js","sourcesContent":["'use client';\n\nimport type { Theme } from '@nori-ui/tokens';\nimport { type KeyboardEvent, type ReactNode, useCallback, useState } 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 SegmentedControlSize = 'sm' | 'md';\n\nexport type SegmentedControlOption<T extends string = string> = {\n value: T;\n label: ReactNode;\n /** Disable just this option. */\n disabled?: boolean;\n};\n\nexport type SegmentedControlProps<T extends string = string> = {\n /** Controlled value. */\n value?: T;\n /** Uncontrolled initial value. Required if you don't pass `value`. */\n defaultValue?: T;\n /** Fires when the user selects a different segment. */\n onChange?: (next: T) => void;\n /** The set of selectable segments. */\n options: ReadonlyArray<SegmentedControlOption<T>>;\n /** Group-level disable. */\n disabled?: boolean;\n /**\n * Visual size. `sm` is denser for inline filters; `md` is the default\n * for top-of-view tab switchers.\n * @defaultValue 'md'\n */\n size?: SegmentedControlSize;\n /** Hide the visible labels — when set, segments must have `aria-label`. */\n label?: string;\n className?: string;\n testID?: string;\n};\n\n// Layout-only bases; theme-driven dimensions are merged inside the component.\nconst CONTAINER_LAYOUT_BASE: ViewStyle = {\n flexDirection: 'row',\n alignItems: 'stretch',\n};\n\nconst SEGMENT_LAYOUT_BASE: ViewStyle = {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n};\n\n// Token keys per size; resolved to px inside the component so theme\n// overrides take effect.\ntype SegmentSizeKeys = {\n paddingV: keyof Theme['spacing'];\n paddingH: keyof Theme['spacing'];\n font: keyof Theme['fontSize'];\n};\nconst SEGMENT_SIZE_KEYS: Record<SegmentedControlSize, SegmentSizeKeys> = {\n sm: { paddingV: '1', paddingH: '2', font: 'sm' }, // 4 / 8 / 14 — closest to legacy 4/10/13\n md: { paddingV: '2', paddingH: '3', font: 'sm' }, // 8 / 12 / 14 — closest to legacy 6/12/14\n};\n\nconst SEGMENT_SELECTED_BASE: ViewStyle = {\n // Subtle elevation that says \"this one is on\" without overshadowing\n // the unselected segments next to it. Web uses boxShadow (CSS-style);\n // native uses elevation. The legacy RN `shadow*` props were deprecated\n // by react-native-web in favor of `boxShadow`.\n ...({ boxShadow: '0 1px 2px rgba(0, 0, 0, 0.06)' } as ViewStyle),\n elevation: 1,\n};\n\n/**\n * Single-select segmented switcher — the \"beautiful UISegmentedControl\"\n * pattern. Use for binary or small (3–5 option) choices that fit inline\n * with their surrounding content. Reach for `Tabs` when each option owns\n * a distinct content region.\n *\n * Keyboard nav follows the WAI-ARIA radiogroup pattern: arrow keys move\n * between options (selection follows focus), `Home` / `End` jump to first\n * / last, with wrap-around at the edges.\n */\nexport const SegmentedControl = <T extends string>({\n value,\n defaultValue,\n onChange,\n options,\n disabled = false,\n size = 'md',\n label,\n className,\n testID,\n}: SegmentedControlProps<T>) => {\n const colors = useThemeColors();\n const [inner, setInner] = useState<T | undefined>(defaultValue);\n const isControlled = value !== undefined;\n const current = isControlled ? value : inner;\n\n const select = useCallback(\n (next: T) => {\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 handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n if (options.length === 0) {\n return;\n }\n const idx = options.findIndex((o) => o.value === current);\n const start = idx === -1 ? 0 : idx;\n const offset =\n event.key === 'ArrowRight' || event.key === 'ArrowDown'\n ? 1\n : event.key === 'ArrowLeft' || event.key === 'ArrowUp'\n ? -1\n : 0;\n if (offset === 0 && event.key !== 'Home' && event.key !== 'End') {\n return;\n }\n event.preventDefault();\n let nextIdx: number;\n if (event.key === 'Home') {\n nextIdx = 0;\n } else if (event.key === 'End') {\n nextIdx = options.length - 1;\n } else {\n nextIdx = (start + offset + options.length) % options.length;\n }\n // Skip past disabled options in the chosen direction.\n const direction = offset === 0 ? 1 : offset;\n for (let attempts = 0; attempts < options.length; attempts += 1) {\n const candidate = options[nextIdx];\n if (candidate && !candidate.disabled) {\n select(candidate.value);\n return;\n }\n nextIdx = (nextIdx + direction + options.length) % options.length;\n }\n },\n [current, options, select]\n );\n\n const sizeKeys = SEGMENT_SIZE_KEYS[size];\n const segmentPadV = px(colors.spacing[sizeKeys.paddingV]);\n const segmentPadH = px(colors.spacing[sizeKeys.paddingH]);\n const segmentFontSize = px(colors.fontSize[sizeKeys.font]);\n\n const groupProps: Record<string, unknown> = {\n role: 'radiogroup',\n accessibilityRole: 'radiogroup',\n onKeyDown: handleKeyDown,\n ...(label !== undefined ? { 'aria-label': label, accessibilityLabel: label } : {}),\n ...(disabled ? { 'aria-disabled': true } : {}),\n ...(testID !== undefined ? { testID } : {}),\n };\n\n const containerStyle: ViewStyle = {\n ...CONTAINER_LAYOUT_BASE,\n borderRadius: px(colors.radius.lg),\n padding: px(colors.spacing['1']),\n gap: px(colors.spacing['1']),\n backgroundColor: colors.semantic.background.subtle,\n };\n const segmentBaseStyle: ViewStyle = {\n ...SEGMENT_LAYOUT_BASE,\n borderRadius: px(colors.radius.md),\n };\n const segmentSelectedStyle: ViewStyle = {\n ...SEGMENT_SELECTED_BASE,\n backgroundColor: colors.semantic.background.elevated,\n };\n\n return (\n <View\n {...groupProps}\n className={cn(\n 'inline-flex flex-row items-stretch rounded-lg bg-neutral-100 dark:bg-neutral-800 p-1 gap-1',\n disabled ? 'opacity-60' : undefined,\n className\n )}\n style={[containerStyle, disabled ? { opacity: 0.6 } : null]}\n >\n {options.map((option) => {\n const selected = option.value === current;\n const isOptDisabled = disabled || option.disabled;\n return (\n <Pressable\n key={option.value}\n role=\"radio\"\n accessibilityRole=\"radio\"\n aria-checked={selected}\n accessibilityState={{ selected, disabled: Boolean(isOptDisabled) }}\n tabIndex={selected || (current === undefined && options[0]?.value === option.value) ? 0 : -1}\n onPress={() => {\n if (!isOptDisabled) {\n select(option.value);\n }\n }}\n {...(isOptDisabled ? { 'aria-disabled': true, disabled: true } : {})}\n className={cn(\n 'flex-1 items-center justify-center rounded-md',\n selected ? 'bg-semantic-background-elevated shadow-sm' : '',\n isOptDisabled ? 'opacity-50' : ''\n )}\n style={[\n segmentBaseStyle,\n { paddingVertical: segmentPadV, paddingHorizontal: segmentPadH },\n selected ? segmentSelectedStyle : null,\n isOptDisabled ? { opacity: 0.5 } : null,\n ]}\n >\n {typeof option.label === 'string' ? (\n <RNText\n style={{\n color: selected ? colors.semantic.text.default : colors.semantic.text.muted,\n fontFamily: colors.fontFamily.body,\n fontSize: segmentFontSize,\n fontWeight: selected\n ? (colors.fontWeight.semibold as '600')\n : (colors.fontWeight.medium as '500'),\n }}\n >\n {option.label}\n </RNText>\n ) : (\n option.label\n )}\n </Pressable>\n );\n })}\n </View>\n );\n};\n"]}