@cdx-ui/primitives 0.0.1-beta.14 → 0.0.1-beta.140

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 (1281) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +78 -33
  3. package/lib/commonjs/CLAUDE.md +86 -0
  4. package/lib/commonjs/avatar/AvatarRoot.js +38 -0
  5. package/lib/commonjs/avatar/AvatarRoot.js.map +1 -0
  6. package/lib/commonjs/avatar/index.js +14 -24
  7. package/lib/commonjs/avatar/index.js.map +1 -1
  8. package/lib/commonjs/breadcrumbs/BreadcrumbsRoot.js +50 -0
  9. package/lib/commonjs/breadcrumbs/BreadcrumbsRoot.js.map +1 -0
  10. package/lib/commonjs/breadcrumbs/context.js +11 -0
  11. package/lib/commonjs/breadcrumbs/context.js.map +1 -0
  12. package/lib/commonjs/breadcrumbs/index.js +27 -0
  13. package/lib/commonjs/breadcrumbs/index.js.map +1 -0
  14. package/lib/commonjs/breadcrumbs/types.js +8 -0
  15. package/lib/commonjs/breadcrumbs/types.js.map +1 -0
  16. package/lib/commonjs/button/ButtonRoot.js +121 -0
  17. package/lib/commonjs/button/ButtonRoot.js.map +1 -0
  18. package/lib/commonjs/button/index.js +7 -24
  19. package/lib/commonjs/button/index.js.map +1 -1
  20. package/lib/commonjs/checkbox/CheckboxGroup.js +52 -0
  21. package/lib/commonjs/checkbox/CheckboxGroup.js.map +1 -0
  22. package/lib/commonjs/checkbox/CheckboxRoot.js +103 -0
  23. package/lib/commonjs/checkbox/CheckboxRoot.js.map +1 -0
  24. package/lib/commonjs/checkbox/CheckboxRoot.web.js +94 -0
  25. package/lib/commonjs/checkbox/CheckboxRoot.web.js.map +1 -0
  26. package/lib/commonjs/checkbox/index.js +21 -24
  27. package/lib/commonjs/checkbox/index.js.map +1 -1
  28. package/lib/commonjs/chip/ChipRoot.js +147 -0
  29. package/lib/commonjs/chip/ChipRoot.js.map +1 -0
  30. package/lib/commonjs/chip/context.js +11 -0
  31. package/lib/commonjs/chip/context.js.map +1 -0
  32. package/lib/commonjs/chip/index.js +20 -0
  33. package/lib/commonjs/chip/index.js.map +1 -0
  34. package/lib/commonjs/chip/types.js.map +1 -0
  35. package/lib/commonjs/dialog/DialogClose.js +32 -0
  36. package/lib/commonjs/dialog/DialogClose.js.map +1 -0
  37. package/lib/commonjs/dialog/DialogContent.js +80 -0
  38. package/lib/commonjs/dialog/DialogContent.js.map +1 -0
  39. package/lib/commonjs/dialog/DialogOverlay.js +54 -0
  40. package/lib/commonjs/dialog/DialogOverlay.js.map +1 -0
  41. package/lib/commonjs/dialog/DialogPopup.js +161 -0
  42. package/lib/commonjs/dialog/DialogPopup.js.map +1 -0
  43. package/lib/commonjs/dialog/DialogPortal.js +37 -0
  44. package/lib/commonjs/dialog/DialogPortal.js.map +1 -0
  45. package/lib/commonjs/dialog/DialogRoot.js +57 -0
  46. package/lib/commonjs/dialog/DialogRoot.js.map +1 -0
  47. package/lib/commonjs/dialog/DialogTrigger.js +32 -0
  48. package/lib/commonjs/dialog/DialogTrigger.js.map +1 -0
  49. package/lib/commonjs/dialog/index.js +49 -41
  50. package/lib/commonjs/dialog/index.js.map +1 -1
  51. package/lib/commonjs/field/FieldLabel.js +48 -0
  52. package/lib/commonjs/field/FieldLabel.js.map +1 -0
  53. package/lib/commonjs/field/FieldLabel.web.js +60 -0
  54. package/lib/commonjs/field/FieldLabel.web.js.map +1 -0
  55. package/lib/commonjs/field/FieldRoot.js +38 -0
  56. package/lib/commonjs/field/FieldRoot.js.map +1 -0
  57. package/lib/commonjs/field/index.js +14 -40
  58. package/lib/commonjs/field/index.js.map +1 -1
  59. package/lib/commonjs/form/FormRoot.js +25 -0
  60. package/lib/commonjs/form/FormRoot.js.map +1 -0
  61. package/lib/commonjs/form/FormRoot.web.js +27 -0
  62. package/lib/commonjs/form/FormRoot.web.js.map +1 -0
  63. package/lib/commonjs/form/index.js +7 -9
  64. package/lib/commonjs/form/index.js.map +1 -1
  65. package/lib/commonjs/full-window-overlay/index.js +47 -0
  66. package/lib/commonjs/full-window-overlay/index.js.map +1 -0
  67. package/lib/commonjs/full-window-overlay/index.web.js +19 -0
  68. package/lib/commonjs/full-window-overlay/index.web.js.map +1 -0
  69. package/lib/commonjs/index.js +157 -5
  70. package/lib/commonjs/index.js.map +1 -1
  71. package/lib/commonjs/input/InputField.android.js +98 -0
  72. package/lib/commonjs/input/InputField.android.js.map +1 -0
  73. package/lib/commonjs/input/InputField.js +92 -0
  74. package/lib/commonjs/input/InputField.js.map +1 -0
  75. package/lib/commonjs/input/InputField.web.js +131 -0
  76. package/lib/commonjs/input/InputField.web.js.map +1 -0
  77. package/lib/commonjs/input/InputRoot.js +92 -0
  78. package/lib/commonjs/input/InputRoot.js.map +1 -0
  79. package/lib/commonjs/input/index.js +21 -16
  80. package/lib/commonjs/input/index.js.map +1 -1
  81. package/lib/commonjs/link/LinkRoot.js +88 -0
  82. package/lib/commonjs/link/LinkRoot.js.map +1 -0
  83. package/lib/commonjs/link/context.js +11 -0
  84. package/lib/commonjs/link/context.js.map +1 -0
  85. package/lib/commonjs/link/index.js +16 -3
  86. package/lib/commonjs/link/index.js.map +1 -1
  87. package/lib/commonjs/list-item/ListItemRoot.js +149 -0
  88. package/lib/commonjs/list-item/ListItemRoot.js.map +1 -0
  89. package/lib/commonjs/list-item/context.js.map +1 -1
  90. package/lib/commonjs/list-item/index.js +7 -36
  91. package/lib/commonjs/list-item/index.js.map +1 -1
  92. package/lib/commonjs/otp-input/OtpInputField.js +120 -0
  93. package/lib/commonjs/otp-input/OtpInputField.js.map +1 -0
  94. package/lib/commonjs/otp-input/index.js +39 -16
  95. package/lib/commonjs/otp-input/index.js.map +1 -1
  96. package/lib/commonjs/otp-input/useOtpInput.js +120 -0
  97. package/lib/commonjs/otp-input/useOtpInput.js.map +1 -0
  98. package/lib/commonjs/overlay/useAnchorPosition.js +60 -11
  99. package/lib/commonjs/overlay/useAnchorPosition.js.map +1 -1
  100. package/lib/commonjs/overlay/useDismissOverlay.js +0 -2
  101. package/lib/commonjs/overlay/useDismissOverlay.js.map +1 -1
  102. package/lib/commonjs/overlay/useEscapeKey.js +0 -2
  103. package/lib/commonjs/overlay/useEscapeKey.js.map +1 -1
  104. package/lib/commonjs/portal/index.js +17 -0
  105. package/lib/commonjs/portal/index.js.map +1 -0
  106. package/lib/commonjs/portal/portal.js +110 -0
  107. package/lib/commonjs/portal/portal.js.map +1 -0
  108. package/lib/commonjs/progress-bar/ProgressBarIndicator.js +45 -0
  109. package/lib/commonjs/progress-bar/ProgressBarIndicator.js.map +1 -0
  110. package/lib/commonjs/progress-bar/ProgressBarRoot.js +100 -0
  111. package/lib/commonjs/progress-bar/ProgressBarRoot.js.map +1 -0
  112. package/lib/commonjs/progress-bar/context.js.map +1 -0
  113. package/lib/commonjs/progress-bar/index.js +27 -0
  114. package/lib/commonjs/progress-bar/index.js.map +1 -0
  115. package/lib/commonjs/progress-bar/types.js +6 -0
  116. package/lib/commonjs/progress-bar/types.js.map +1 -0
  117. package/lib/commonjs/radio/RadioGroup.js +74 -0
  118. package/lib/commonjs/radio/RadioGroup.js.map +1 -0
  119. package/lib/commonjs/radio/RadioRoot.js +99 -0
  120. package/lib/commonjs/radio/RadioRoot.js.map +1 -0
  121. package/lib/commonjs/radio/RadioRoot.web.js +91 -0
  122. package/lib/commonjs/radio/RadioRoot.web.js.map +1 -0
  123. package/lib/commonjs/radio/index.js +21 -20
  124. package/lib/commonjs/radio/index.js.map +1 -1
  125. package/lib/commonjs/select/SelectContent.js +105 -0
  126. package/lib/commonjs/select/SelectContent.js.map +1 -0
  127. package/lib/commonjs/select/SelectItem.js +104 -0
  128. package/lib/commonjs/select/SelectItem.js.map +1 -0
  129. package/lib/commonjs/select/SelectRoot.js +105 -0
  130. package/lib/commonjs/select/SelectRoot.js.map +1 -0
  131. package/lib/commonjs/select/SelectTrigger.js +72 -0
  132. package/lib/commonjs/select/SelectTrigger.js.map +1 -0
  133. package/lib/commonjs/select/SelectTrigger.web.js +175 -0
  134. package/lib/commonjs/select/SelectTrigger.web.js.map +1 -0
  135. package/lib/commonjs/select/context.js +3 -12
  136. package/lib/commonjs/select/context.js.map +1 -1
  137. package/lib/commonjs/select/index.js +41 -32
  138. package/lib/commonjs/select/index.js.map +1 -1
  139. package/lib/commonjs/select/useContentFocus.js +1 -1
  140. package/lib/commonjs/select/useSelectTrigger.js +214 -0
  141. package/lib/commonjs/select/useSelectTrigger.js.map +1 -0
  142. package/lib/commonjs/select/useSelectTrigger.web.js +201 -0
  143. package/lib/commonjs/select/useSelectTrigger.web.js.map +1 -0
  144. package/lib/commonjs/slider/SliderRail.js +131 -0
  145. package/lib/commonjs/slider/SliderRail.js.map +1 -0
  146. package/lib/commonjs/slider/SliderRoot.js +186 -0
  147. package/lib/commonjs/slider/SliderRoot.js.map +1 -0
  148. package/lib/commonjs/slider/SliderThumb.js +228 -0
  149. package/lib/commonjs/slider/SliderThumb.js.map +1 -0
  150. package/lib/commonjs/slider/context.js +11 -0
  151. package/lib/commonjs/slider/context.js.map +1 -0
  152. package/lib/commonjs/slider/index.js +65 -0
  153. package/lib/commonjs/slider/index.js.map +1 -0
  154. package/lib/commonjs/slider/types.js +6 -0
  155. package/lib/commonjs/slider/types.js.map +1 -0
  156. package/lib/commonjs/slider/useSliderPointer.js +116 -0
  157. package/lib/commonjs/slider/useSliderPointer.js.map +1 -0
  158. package/lib/commonjs/slider/utils.js +155 -0
  159. package/lib/commonjs/slider/utils.js.map +1 -0
  160. package/lib/commonjs/slot/index.js +141 -0
  161. package/lib/commonjs/slot/index.js.map +1 -0
  162. package/lib/commonjs/switch/index.js +7 -9
  163. package/lib/commonjs/switch/index.js.map +1 -1
  164. package/lib/commonjs/switch/useSwitch.js +81 -0
  165. package/lib/commonjs/switch/useSwitch.js.map +1 -0
  166. package/lib/commonjs/tabs/Tab.js +122 -0
  167. package/lib/commonjs/tabs/Tab.js.map +1 -0
  168. package/lib/commonjs/tabs/TabPanel.js +53 -0
  169. package/lib/commonjs/tabs/TabPanel.js.map +1 -0
  170. package/lib/commonjs/tabs/TabsList.js +58 -0
  171. package/lib/commonjs/tabs/TabsList.js.map +1 -0
  172. package/lib/commonjs/tabs/TabsRoot.js +79 -0
  173. package/lib/commonjs/tabs/TabsRoot.js.map +1 -0
  174. package/lib/commonjs/tabs/context.js +19 -0
  175. package/lib/commonjs/tabs/context.js.map +1 -0
  176. package/lib/commonjs/tabs/index.js +47 -0
  177. package/lib/commonjs/tabs/index.js.map +1 -0
  178. package/lib/commonjs/tabs/types.js +6 -0
  179. package/lib/commonjs/tabs/types.js.map +1 -0
  180. package/lib/commonjs/tabs/useTabsNavigation.js +84 -0
  181. package/lib/commonjs/tabs/useTabsNavigation.js.map +1 -0
  182. package/lib/commonjs/tile/TileGroup.js +111 -0
  183. package/lib/commonjs/tile/TileGroup.js.map +1 -0
  184. package/lib/commonjs/tile/TileRoot.js +129 -0
  185. package/lib/commonjs/tile/TileRoot.js.map +1 -0
  186. package/lib/commonjs/tile/index.js +14 -36
  187. package/lib/commonjs/tile/index.js.map +1 -1
  188. package/lib/commonjs/toast/ToastRoot.js +41 -0
  189. package/lib/commonjs/toast/ToastRoot.js.map +1 -0
  190. package/lib/commonjs/toast/context.js +11 -0
  191. package/lib/commonjs/toast/context.js.map +1 -0
  192. package/lib/commonjs/toast/index.js +26 -0
  193. package/lib/commonjs/toast/index.js.map +1 -0
  194. package/lib/commonjs/toast/types.js +6 -0
  195. package/lib/commonjs/toast/types.js.map +1 -0
  196. package/lib/commonjs/utils/assignRef.js +16 -0
  197. package/lib/commonjs/utils/assignRef.js.map +1 -0
  198. package/lib/commonjs/utils/createPortal.js +3 -1
  199. package/lib/commonjs/utils/createPortal.js.map +1 -1
  200. package/lib/commonjs/utils/dataAttributes.js +12 -25
  201. package/lib/commonjs/utils/dataAttributes.js.map +1 -1
  202. package/lib/commonjs/utils/dataAttributes.web.js +25 -0
  203. package/lib/commonjs/utils/dataAttributes.web.js.map +1 -1
  204. package/lib/commonjs/utils/domDataAttributes.js +64 -0
  205. package/lib/commonjs/utils/domDataAttributes.js.map +1 -0
  206. package/lib/module/CLAUDE.md +86 -0
  207. package/lib/module/avatar/AvatarRoot.js +34 -0
  208. package/lib/module/avatar/AvatarRoot.js.map +1 -0
  209. package/lib/module/avatar/index.js +2 -23
  210. package/lib/module/avatar/index.js.map +1 -1
  211. package/lib/module/breadcrumbs/BreadcrumbsRoot.js +46 -0
  212. package/lib/module/breadcrumbs/BreadcrumbsRoot.js.map +1 -0
  213. package/lib/module/breadcrumbs/context.js +5 -0
  214. package/lib/module/breadcrumbs/context.js.map +1 -0
  215. package/lib/module/breadcrumbs/index.js +6 -0
  216. package/lib/module/breadcrumbs/index.js.map +1 -0
  217. package/lib/module/breadcrumbs/types.js +4 -0
  218. package/lib/module/breadcrumbs/types.js.map +1 -0
  219. package/lib/module/button/ButtonRoot.js +117 -0
  220. package/lib/module/button/ButtonRoot.js.map +1 -0
  221. package/lib/module/button/index.js +1 -23
  222. package/lib/module/button/index.js.map +1 -1
  223. package/lib/module/checkbox/CheckboxGroup.js +48 -0
  224. package/lib/module/checkbox/CheckboxGroup.js.map +1 -0
  225. package/lib/module/checkbox/CheckboxRoot.js +99 -0
  226. package/lib/module/checkbox/CheckboxRoot.js.map +1 -0
  227. package/lib/module/checkbox/CheckboxRoot.web.js +90 -0
  228. package/lib/module/checkbox/CheckboxRoot.web.js.map +1 -0
  229. package/lib/module/checkbox/index.js +3 -23
  230. package/lib/module/checkbox/index.js.map +1 -1
  231. package/lib/module/chip/ChipRoot.js +142 -0
  232. package/lib/module/chip/ChipRoot.js.map +1 -0
  233. package/lib/module/chip/context.js +5 -0
  234. package/lib/module/chip/context.js.map +1 -0
  235. package/lib/module/chip/index.js +5 -0
  236. package/lib/module/chip/index.js.map +1 -0
  237. package/lib/module/chip/types.js.map +1 -0
  238. package/lib/module/dialog/DialogClose.js +28 -0
  239. package/lib/module/dialog/DialogClose.js.map +1 -0
  240. package/lib/module/dialog/DialogContent.js +76 -0
  241. package/lib/module/dialog/DialogContent.js.map +1 -0
  242. package/lib/module/dialog/DialogOverlay.js +50 -0
  243. package/lib/module/dialog/DialogOverlay.js.map +1 -0
  244. package/lib/module/dialog/DialogPopup.js +157 -0
  245. package/lib/module/dialog/DialogPopup.js.map +1 -0
  246. package/lib/module/dialog/DialogPortal.js +33 -0
  247. package/lib/module/dialog/DialogPortal.js.map +1 -0
  248. package/lib/module/dialog/DialogRoot.js +53 -0
  249. package/lib/module/dialog/DialogRoot.js.map +1 -0
  250. package/lib/module/dialog/DialogTrigger.js +28 -0
  251. package/lib/module/dialog/DialogTrigger.js.map +1 -0
  252. package/lib/module/dialog/index.js +8 -42
  253. package/lib/module/dialog/index.js.map +1 -1
  254. package/lib/module/field/FieldLabel.js +44 -0
  255. package/lib/module/field/FieldLabel.js.map +1 -0
  256. package/lib/module/field/FieldLabel.web.js +55 -0
  257. package/lib/module/field/FieldLabel.web.js.map +1 -0
  258. package/lib/module/field/FieldRoot.js +34 -0
  259. package/lib/module/field/FieldRoot.js.map +1 -0
  260. package/lib/module/field/index.js +2 -39
  261. package/lib/module/field/index.js.map +1 -1
  262. package/lib/module/form/FormRoot.js +21 -0
  263. package/lib/module/form/FormRoot.js.map +1 -0
  264. package/lib/module/form/FormRoot.web.js +22 -0
  265. package/lib/module/form/FormRoot.web.js.map +1 -0
  266. package/lib/module/form/index.js +1 -8
  267. package/lib/module/form/index.js.map +1 -1
  268. package/lib/module/full-window-overlay/index.js +43 -0
  269. package/lib/module/full-window-overlay/index.js.map +1 -0
  270. package/lib/module/full-window-overlay/index.web.js +15 -0
  271. package/lib/module/full-window-overlay/index.web.js.map +1 -0
  272. package/lib/module/index.js +15 -2
  273. package/lib/module/index.js.map +1 -1
  274. package/lib/module/input/InputField.android.js +94 -0
  275. package/lib/module/input/InputField.android.js.map +1 -0
  276. package/lib/module/input/InputField.js +88 -0
  277. package/lib/module/input/InputField.js.map +1 -0
  278. package/lib/module/input/InputField.web.js +126 -0
  279. package/lib/module/input/InputField.web.js.map +1 -0
  280. package/lib/module/input/InputRoot.js +88 -0
  281. package/lib/module/input/InputRoot.js.map +1 -0
  282. package/lib/module/input/index.js +3 -15
  283. package/lib/module/input/index.js.map +1 -1
  284. package/lib/module/link/LinkRoot.js +84 -0
  285. package/lib/module/link/LinkRoot.js.map +1 -0
  286. package/lib/module/link/context.js +5 -0
  287. package/lib/module/link/context.js.map +1 -0
  288. package/lib/module/link/index.js +2 -1
  289. package/lib/module/link/index.js.map +1 -1
  290. package/lib/module/list-item/ListItemRoot.js +144 -0
  291. package/lib/module/list-item/ListItemRoot.js.map +1 -0
  292. package/lib/module/list-item/context.js.map +1 -1
  293. package/lib/module/list-item/index.js +1 -35
  294. package/lib/module/list-item/index.js.map +1 -1
  295. package/lib/module/otp-input/OtpInputField.js +116 -0
  296. package/lib/module/otp-input/OtpInputField.js.map +1 -0
  297. package/lib/module/otp-input/index.js +3 -15
  298. package/lib/module/otp-input/index.js.map +1 -1
  299. package/lib/module/otp-input/useOtpInput.js +116 -0
  300. package/lib/module/otp-input/useOtpInput.js.map +1 -0
  301. package/lib/module/overlay/useAnchorPosition.js +60 -11
  302. package/lib/module/overlay/useAnchorPosition.js.map +1 -1
  303. package/lib/module/overlay/useDismissOverlay.js +0 -2
  304. package/lib/module/overlay/useDismissOverlay.js.map +1 -1
  305. package/lib/module/overlay/useEscapeKey.js +0 -2
  306. package/lib/module/overlay/useEscapeKey.js.map +1 -1
  307. package/lib/module/portal/index.js +4 -0
  308. package/lib/module/portal/index.js.map +1 -0
  309. package/lib/module/portal/portal.js +103 -0
  310. package/lib/module/portal/portal.js.map +1 -0
  311. package/lib/module/progress-bar/ProgressBarIndicator.js +41 -0
  312. package/lib/module/progress-bar/ProgressBarIndicator.js.map +1 -0
  313. package/lib/module/progress-bar/ProgressBarRoot.js +96 -0
  314. package/lib/module/progress-bar/ProgressBarRoot.js.map +1 -0
  315. package/lib/module/progress-bar/context.js.map +1 -0
  316. package/lib/module/progress-bar/index.js +6 -0
  317. package/lib/module/progress-bar/index.js.map +1 -0
  318. package/lib/module/progress-bar/types.js +4 -0
  319. package/lib/module/progress-bar/types.js.map +1 -0
  320. package/lib/module/radio/RadioGroup.js +70 -0
  321. package/lib/module/radio/RadioGroup.js.map +1 -0
  322. package/lib/module/radio/RadioRoot.js +95 -0
  323. package/lib/module/radio/RadioRoot.js.map +1 -0
  324. package/lib/module/radio/RadioRoot.web.js +87 -0
  325. package/lib/module/radio/RadioRoot.web.js.map +1 -0
  326. package/lib/module/radio/index.js +3 -19
  327. package/lib/module/radio/index.js.map +1 -1
  328. package/lib/module/select/SelectContent.js +100 -0
  329. package/lib/module/select/SelectContent.js.map +1 -0
  330. package/lib/module/select/SelectItem.js +100 -0
  331. package/lib/module/select/SelectItem.js.map +1 -0
  332. package/lib/module/select/SelectRoot.js +101 -0
  333. package/lib/module/select/SelectRoot.js.map +1 -0
  334. package/lib/module/select/SelectTrigger.js +67 -0
  335. package/lib/module/select/SelectTrigger.js.map +1 -0
  336. package/lib/module/select/SelectTrigger.web.js +170 -0
  337. package/lib/module/select/SelectTrigger.web.js.map +1 -0
  338. package/lib/module/select/context.js +1 -8
  339. package/lib/module/select/context.js.map +1 -1
  340. package/lib/module/select/index.js +5 -31
  341. package/lib/module/select/index.js.map +1 -1
  342. package/lib/module/select/useContentFocus.js +1 -1
  343. package/lib/module/select/useSelectTrigger.js +210 -0
  344. package/lib/module/select/useSelectTrigger.js.map +1 -0
  345. package/lib/module/select/useSelectTrigger.web.js +197 -0
  346. package/lib/module/select/useSelectTrigger.web.js.map +1 -0
  347. package/lib/module/slider/SliderRail.js +127 -0
  348. package/lib/module/slider/SliderRail.js.map +1 -0
  349. package/lib/module/slider/SliderRoot.js +182 -0
  350. package/lib/module/slider/SliderRoot.js.map +1 -0
  351. package/lib/module/slider/SliderThumb.js +224 -0
  352. package/lib/module/slider/SliderThumb.js.map +1 -0
  353. package/lib/module/slider/context.js +5 -0
  354. package/lib/module/slider/context.js.map +1 -0
  355. package/lib/module/slider/index.js +8 -0
  356. package/lib/module/slider/index.js.map +1 -0
  357. package/lib/module/slider/types.js +4 -0
  358. package/lib/module/slider/types.js.map +1 -0
  359. package/lib/module/slider/useSliderPointer.js +110 -0
  360. package/lib/module/slider/useSliderPointer.js.map +1 -0
  361. package/lib/module/slider/utils.js +138 -0
  362. package/lib/module/slider/utils.js.map +1 -0
  363. package/lib/module/slot/index.js +135 -0
  364. package/lib/module/slot/index.js.map +1 -0
  365. package/lib/module/switch/index.js +1 -8
  366. package/lib/module/switch/index.js.map +1 -1
  367. package/lib/module/switch/useSwitch.js +77 -0
  368. package/lib/module/switch/useSwitch.js.map +1 -0
  369. package/lib/module/tabs/Tab.js +118 -0
  370. package/lib/module/tabs/Tab.js.map +1 -0
  371. package/lib/module/tabs/TabPanel.js +49 -0
  372. package/lib/module/tabs/TabPanel.js.map +1 -0
  373. package/lib/module/tabs/TabsList.js +54 -0
  374. package/lib/module/tabs/TabsList.js.map +1 -0
  375. package/lib/module/tabs/TabsRoot.js +75 -0
  376. package/lib/module/tabs/TabsRoot.js.map +1 -0
  377. package/lib/module/tabs/context.js +11 -0
  378. package/lib/module/tabs/context.js.map +1 -0
  379. package/lib/module/tabs/index.js +8 -0
  380. package/lib/module/tabs/index.js.map +1 -0
  381. package/lib/module/tabs/types.js +4 -0
  382. package/lib/module/tabs/types.js.map +1 -0
  383. package/lib/module/tabs/useTabsNavigation.js +81 -0
  384. package/lib/module/tabs/useTabsNavigation.js.map +1 -0
  385. package/lib/module/tile/TileGroup.js +107 -0
  386. package/lib/module/tile/TileGroup.js.map +1 -0
  387. package/lib/module/tile/TileRoot.js +125 -0
  388. package/lib/module/tile/TileRoot.js.map +1 -0
  389. package/lib/module/tile/index.js +2 -35
  390. package/lib/module/tile/index.js.map +1 -1
  391. package/lib/module/toast/ToastRoot.js +37 -0
  392. package/lib/module/toast/ToastRoot.js.map +1 -0
  393. package/lib/module/toast/context.js +5 -0
  394. package/lib/module/toast/context.js.map +1 -0
  395. package/lib/module/toast/index.js +5 -0
  396. package/lib/module/toast/index.js.map +1 -0
  397. package/lib/module/toast/types.js +4 -0
  398. package/lib/module/toast/types.js.map +1 -0
  399. package/lib/module/utils/assignRef.js +12 -0
  400. package/lib/module/utils/assignRef.js.map +1 -0
  401. package/lib/module/utils/createPortal.js +3 -1
  402. package/lib/module/utils/createPortal.js.map +1 -1
  403. package/lib/module/utils/dataAttributes.js +4 -22
  404. package/lib/module/utils/dataAttributes.js.map +1 -1
  405. package/lib/module/utils/dataAttributes.web.js +24 -0
  406. package/lib/module/utils/dataAttributes.web.js.map +1 -1
  407. package/lib/module/utils/domDataAttributes.js +59 -0
  408. package/lib/module/utils/domDataAttributes.js.map +1 -0
  409. package/lib/typescript/avatar/AvatarRoot.d.ts +8 -0
  410. package/lib/typescript/avatar/AvatarRoot.d.ts.map +1 -0
  411. package/lib/typescript/avatar/index.d.ts +3 -10
  412. package/lib/typescript/avatar/index.d.ts.map +1 -1
  413. package/lib/typescript/avatar/types.d.ts +1 -17
  414. package/lib/typescript/avatar/types.d.ts.map +1 -1
  415. package/lib/typescript/breadcrumbs/BreadcrumbsRoot.d.ts +7 -0
  416. package/lib/typescript/breadcrumbs/BreadcrumbsRoot.d.ts.map +1 -0
  417. package/lib/typescript/breadcrumbs/context.d.ts +6 -0
  418. package/lib/typescript/breadcrumbs/context.d.ts.map +1 -0
  419. package/lib/typescript/breadcrumbs/index.d.ts +4 -0
  420. package/lib/typescript/breadcrumbs/index.d.ts.map +1 -0
  421. package/lib/typescript/breadcrumbs/types.d.ts +21 -0
  422. package/lib/typescript/breadcrumbs/types.d.ts.map +1 -0
  423. package/lib/typescript/button/ButtonRoot.d.ts +9 -0
  424. package/lib/typescript/button/ButtonRoot.d.ts.map +1 -0
  425. package/lib/typescript/button/index.d.ts +1 -9
  426. package/lib/typescript/button/index.d.ts.map +1 -1
  427. package/lib/typescript/button/types.d.ts +5 -34
  428. package/lib/typescript/button/types.d.ts.map +1 -1
  429. package/lib/typescript/checkbox/CheckboxGroup.d.ts +9 -0
  430. package/lib/typescript/checkbox/CheckboxGroup.d.ts.map +1 -0
  431. package/lib/typescript/checkbox/CheckboxRoot.d.ts +6 -0
  432. package/lib/typescript/checkbox/CheckboxRoot.d.ts.map +1 -0
  433. package/lib/typescript/checkbox/CheckboxRoot.web.d.ts +6 -0
  434. package/lib/typescript/checkbox/CheckboxRoot.web.d.ts.map +1 -0
  435. package/lib/typescript/checkbox/index.d.ts +4 -10
  436. package/lib/typescript/checkbox/index.d.ts.map +1 -1
  437. package/lib/typescript/checkbox/types.d.ts +0 -17
  438. package/lib/typescript/checkbox/types.d.ts.map +1 -1
  439. package/lib/typescript/checkbox/useCheckboxRoot.d.ts +3 -1
  440. package/lib/typescript/checkbox/useCheckboxRoot.d.ts.map +1 -1
  441. package/lib/typescript/chip/ChipRoot.d.ts +7 -0
  442. package/lib/typescript/chip/ChipRoot.d.ts.map +1 -0
  443. package/lib/typescript/chip/context.d.ts +6 -0
  444. package/lib/typescript/chip/context.d.ts.map +1 -0
  445. package/lib/typescript/chip/index.d.ts +4 -0
  446. package/lib/typescript/chip/index.d.ts.map +1 -0
  447. package/lib/typescript/chip/types.d.ts +16 -0
  448. package/lib/typescript/chip/types.d.ts.map +1 -0
  449. package/lib/typescript/dialog/DialogClose.d.ts +5 -0
  450. package/lib/typescript/dialog/DialogClose.d.ts.map +1 -0
  451. package/lib/typescript/dialog/DialogContent.d.ts +16 -0
  452. package/lib/typescript/dialog/DialogContent.d.ts.map +1 -0
  453. package/lib/typescript/dialog/DialogOverlay.d.ts +11 -0
  454. package/lib/typescript/dialog/DialogOverlay.d.ts.map +1 -0
  455. package/lib/typescript/dialog/DialogPopup.d.ts +14 -0
  456. package/lib/typescript/dialog/DialogPopup.d.ts.map +1 -0
  457. package/lib/typescript/dialog/DialogPortal.d.ts +16 -0
  458. package/lib/typescript/dialog/DialogPortal.d.ts.map +1 -0
  459. package/lib/typescript/dialog/DialogRoot.d.ts +7 -0
  460. package/lib/typescript/dialog/DialogRoot.d.ts.map +1 -0
  461. package/lib/typescript/dialog/DialogTrigger.d.ts +5 -0
  462. package/lib/typescript/dialog/DialogTrigger.d.ts.map +1 -0
  463. package/lib/typescript/dialog/index.d.ts +9 -17
  464. package/lib/typescript/dialog/index.d.ts.map +1 -1
  465. package/lib/typescript/dialog/types.d.ts +34 -21
  466. package/lib/typescript/dialog/types.d.ts.map +1 -1
  467. package/lib/typescript/field/FieldLabel.d.ts +12 -0
  468. package/lib/typescript/field/FieldLabel.d.ts.map +1 -0
  469. package/lib/typescript/field/FieldLabel.web.d.ts +24 -0
  470. package/lib/typescript/field/FieldLabel.web.d.ts.map +1 -0
  471. package/lib/typescript/field/FieldRoot.d.ts +8 -0
  472. package/lib/typescript/field/FieldRoot.d.ts.map +1 -0
  473. package/lib/typescript/field/index.d.ts +3 -12
  474. package/lib/typescript/field/index.d.ts.map +1 -1
  475. package/lib/typescript/field/types.d.ts +0 -20
  476. package/lib/typescript/field/types.d.ts.map +1 -1
  477. package/lib/typescript/form/FormRoot.d.ts +8 -0
  478. package/lib/typescript/form/FormRoot.d.ts.map +1 -0
  479. package/lib/typescript/form/FormRoot.web.d.ts +8 -0
  480. package/lib/typescript/form/FormRoot.web.d.ts.map +1 -0
  481. package/lib/typescript/form/index.d.ts +2 -5
  482. package/lib/typescript/form/index.d.ts.map +1 -1
  483. package/lib/typescript/form/types.d.ts +8 -9
  484. package/lib/typescript/form/types.d.ts.map +1 -1
  485. package/lib/typescript/full-window-overlay/index.d.ts +46 -0
  486. package/lib/typescript/full-window-overlay/index.d.ts.map +1 -0
  487. package/lib/typescript/full-window-overlay/index.web.d.ts +29 -0
  488. package/lib/typescript/full-window-overlay/index.web.d.ts.map +1 -0
  489. package/lib/typescript/index.d.ts +15 -2
  490. package/lib/typescript/index.d.ts.map +1 -1
  491. package/lib/typescript/input/InputField.android.d.ts +5 -0
  492. package/lib/typescript/input/InputField.android.d.ts.map +1 -0
  493. package/lib/typescript/input/InputField.d.ts +5 -0
  494. package/lib/typescript/input/InputField.d.ts.map +1 -0
  495. package/lib/typescript/input/InputField.web.d.ts +6 -0
  496. package/lib/typescript/input/InputField.web.d.ts.map +1 -0
  497. package/lib/typescript/input/InputRoot.d.ts +5 -0
  498. package/lib/typescript/input/InputRoot.d.ts.map +1 -0
  499. package/lib/typescript/input/index.d.ts +4 -8
  500. package/lib/typescript/input/index.d.ts.map +1 -1
  501. package/lib/typescript/input/types.d.ts +22 -35
  502. package/lib/typescript/input/types.d.ts.map +1 -1
  503. package/lib/typescript/link/LinkRoot.d.ts +9 -0
  504. package/lib/typescript/link/LinkRoot.d.ts.map +1 -0
  505. package/lib/typescript/link/context.d.ts +10 -0
  506. package/lib/typescript/link/context.d.ts.map +1 -0
  507. package/lib/typescript/link/index.d.ts +3 -1
  508. package/lib/typescript/link/index.d.ts.map +1 -1
  509. package/lib/typescript/link/types.d.ts +21 -0
  510. package/lib/typescript/link/types.d.ts.map +1 -1
  511. package/lib/typescript/list-item/ListItemRoot.d.ts +7 -0
  512. package/lib/typescript/list-item/ListItemRoot.d.ts.map +1 -0
  513. package/lib/typescript/list-item/context.d.ts +3 -3
  514. package/lib/typescript/list-item/context.d.ts.map +1 -1
  515. package/lib/typescript/list-item/index.d.ts +2 -14
  516. package/lib/typescript/list-item/index.d.ts.map +1 -1
  517. package/lib/typescript/list-item/types.d.ts +5 -59
  518. package/lib/typescript/list-item/types.d.ts.map +1 -1
  519. package/lib/typescript/otp-input/OtpInputField.d.ts +19 -0
  520. package/lib/typescript/otp-input/OtpInputField.d.ts.map +1 -0
  521. package/lib/typescript/otp-input/index.d.ts +4 -8
  522. package/lib/typescript/otp-input/index.d.ts.map +1 -1
  523. package/lib/typescript/otp-input/types.d.ts +0 -9
  524. package/lib/typescript/otp-input/types.d.ts.map +1 -1
  525. package/lib/typescript/otp-input/useOtpInput.d.ts +19 -0
  526. package/lib/typescript/otp-input/useOtpInput.d.ts.map +1 -0
  527. package/lib/typescript/overlay/useAnchorPosition.d.ts +7 -1
  528. package/lib/typescript/overlay/useAnchorPosition.d.ts.map +1 -1
  529. package/lib/typescript/overlay/useDismissOverlay.d.ts.map +1 -1
  530. package/lib/typescript/overlay/useEscapeKey.d.ts.map +1 -1
  531. package/lib/typescript/portal/index.d.ts +2 -0
  532. package/lib/typescript/portal/index.d.ts.map +1 -0
  533. package/lib/typescript/portal/portal.d.ts +25 -0
  534. package/lib/typescript/portal/portal.d.ts.map +1 -0
  535. package/lib/typescript/progress-bar/ProgressBarIndicator.d.ts +6 -0
  536. package/lib/typescript/progress-bar/ProgressBarIndicator.d.ts.map +1 -0
  537. package/lib/typescript/progress-bar/ProgressBarRoot.d.ts +6 -0
  538. package/lib/typescript/progress-bar/ProgressBarRoot.d.ts.map +1 -0
  539. package/lib/typescript/progress-bar/context.d.ts.map +1 -0
  540. package/lib/typescript/progress-bar/index.d.ts +6 -0
  541. package/lib/typescript/progress-bar/index.d.ts.map +1 -0
  542. package/lib/typescript/progress-bar/types.d.ts +22 -0
  543. package/lib/typescript/progress-bar/types.d.ts.map +1 -0
  544. package/lib/typescript/radio/RadioGroup.d.ts +9 -0
  545. package/lib/typescript/radio/RadioGroup.d.ts.map +1 -0
  546. package/lib/typescript/radio/RadioRoot.d.ts +6 -0
  547. package/lib/typescript/radio/RadioRoot.d.ts.map +1 -0
  548. package/lib/typescript/radio/RadioRoot.web.d.ts +6 -0
  549. package/lib/typescript/radio/RadioRoot.web.d.ts.map +1 -0
  550. package/lib/typescript/radio/index.d.ts +4 -9
  551. package/lib/typescript/radio/index.d.ts.map +1 -1
  552. package/lib/typescript/radio/types.d.ts +0 -11
  553. package/lib/typescript/radio/types.d.ts.map +1 -1
  554. package/lib/typescript/radio/useRadioRoot.d.ts +3 -1
  555. package/lib/typescript/radio/useRadioRoot.d.ts.map +1 -1
  556. package/lib/typescript/select/SelectContent.d.ts +9 -0
  557. package/lib/typescript/select/SelectContent.d.ts.map +1 -0
  558. package/lib/typescript/select/SelectItem.d.ts +8 -0
  559. package/lib/typescript/select/SelectItem.d.ts.map +1 -0
  560. package/lib/typescript/select/SelectRoot.d.ts +8 -0
  561. package/lib/typescript/select/SelectRoot.d.ts.map +1 -0
  562. package/lib/typescript/select/SelectTrigger.d.ts +9 -0
  563. package/lib/typescript/select/SelectTrigger.d.ts.map +1 -0
  564. package/lib/typescript/select/SelectTrigger.web.d.ts +13 -0
  565. package/lib/typescript/select/SelectTrigger.web.d.ts.map +1 -0
  566. package/lib/typescript/select/context.d.ts +1 -11
  567. package/lib/typescript/select/context.d.ts.map +1 -1
  568. package/lib/typescript/select/index.d.ts +6 -12
  569. package/lib/typescript/select/index.d.ts.map +1 -1
  570. package/lib/typescript/select/types.d.ts +8 -9
  571. package/lib/typescript/select/types.d.ts.map +1 -1
  572. package/lib/typescript/select/useContentFocus.d.ts +1 -1
  573. package/lib/typescript/select/useSelectTrigger.d.ts +78 -0
  574. package/lib/typescript/select/useSelectTrigger.d.ts.map +1 -0
  575. package/lib/typescript/select/useSelectTrigger.web.d.ts +16 -0
  576. package/lib/typescript/select/useSelectTrigger.web.d.ts.map +1 -0
  577. package/lib/typescript/slider/SliderRail.d.ts +6 -0
  578. package/lib/typescript/slider/SliderRail.d.ts.map +1 -0
  579. package/lib/typescript/slider/SliderRoot.d.ts +7 -0
  580. package/lib/typescript/slider/SliderRoot.d.ts.map +1 -0
  581. package/lib/typescript/slider/SliderThumb.d.ts +6 -0
  582. package/lib/typescript/slider/SliderThumb.d.ts.map +1 -0
  583. package/lib/typescript/slider/context.d.ts +37 -0
  584. package/lib/typescript/slider/context.d.ts.map +1 -0
  585. package/lib/typescript/slider/index.d.ts +8 -0
  586. package/lib/typescript/slider/index.d.ts.map +1 -0
  587. package/lib/typescript/slider/types.d.ts +37 -0
  588. package/lib/typescript/slider/types.d.ts.map +1 -0
  589. package/lib/typescript/slider/useSliderPointer.d.ts +23 -0
  590. package/lib/typescript/slider/useSliderPointer.d.ts.map +1 -0
  591. package/lib/typescript/slider/utils.d.ts +23 -0
  592. package/lib/typescript/slider/utils.d.ts.map +1 -0
  593. package/lib/typescript/slot/index.d.ts +8 -0
  594. package/lib/typescript/slot/index.d.ts.map +1 -0
  595. package/lib/typescript/switch/index.d.ts +2 -6
  596. package/lib/typescript/switch/index.d.ts.map +1 -1
  597. package/lib/typescript/switch/types.d.ts +35 -6
  598. package/lib/typescript/switch/types.d.ts.map +1 -1
  599. package/lib/typescript/switch/useSwitch.d.ts +20 -0
  600. package/lib/typescript/switch/useSwitch.d.ts.map +1 -0
  601. package/lib/typescript/tabs/Tab.d.ts +8 -0
  602. package/lib/typescript/tabs/Tab.d.ts.map +1 -0
  603. package/lib/typescript/tabs/TabPanel.d.ts +9 -0
  604. package/lib/typescript/tabs/TabPanel.d.ts.map +1 -0
  605. package/lib/typescript/tabs/TabsList.d.ts +8 -0
  606. package/lib/typescript/tabs/TabsList.d.ts.map +1 -0
  607. package/lib/typescript/tabs/TabsRoot.d.ts +8 -0
  608. package/lib/typescript/tabs/TabsRoot.d.ts.map +1 -0
  609. package/lib/typescript/tabs/context.d.ts +14 -0
  610. package/lib/typescript/tabs/context.d.ts.map +1 -0
  611. package/lib/typescript/tabs/index.d.ts +7 -0
  612. package/lib/typescript/tabs/index.d.ts.map +1 -0
  613. package/lib/typescript/tabs/types.d.ts +88 -0
  614. package/lib/typescript/tabs/types.d.ts.map +1 -0
  615. package/lib/typescript/tabs/useTabsNavigation.d.ts +14 -0
  616. package/lib/typescript/tabs/useTabsNavigation.d.ts.map +1 -0
  617. package/lib/typescript/tile/TileGroup.d.ts +5 -0
  618. package/lib/typescript/tile/TileGroup.d.ts.map +1 -0
  619. package/lib/typescript/tile/TileRoot.d.ts +5 -0
  620. package/lib/typescript/tile/TileRoot.d.ts.map +1 -0
  621. package/lib/typescript/tile/index.d.ts +3 -13
  622. package/lib/typescript/tile/index.d.ts.map +1 -1
  623. package/lib/typescript/tile/types.d.ts +7 -18
  624. package/lib/typescript/tile/types.d.ts.map +1 -1
  625. package/lib/typescript/toast/ToastRoot.d.ts +7 -0
  626. package/lib/typescript/toast/ToastRoot.d.ts.map +1 -0
  627. package/lib/typescript/toast/context.d.ts +6 -0
  628. package/lib/typescript/toast/context.d.ts.map +1 -0
  629. package/lib/typescript/toast/index.d.ts +3 -0
  630. package/lib/typescript/toast/index.d.ts.map +1 -0
  631. package/lib/typescript/toast/types.d.ts +16 -0
  632. package/lib/typescript/toast/types.d.ts.map +1 -0
  633. package/lib/typescript/utils/assignRef.d.ts +3 -0
  634. package/lib/typescript/utils/assignRef.d.ts.map +1 -0
  635. package/lib/typescript/utils/createPortal.d.ts.map +1 -1
  636. package/lib/typescript/utils/dataAttributes.d.ts +4 -10
  637. package/lib/typescript/utils/dataAttributes.d.ts.map +1 -1
  638. package/lib/typescript/utils/dataAttributes.web.d.ts +16 -0
  639. package/lib/typescript/utils/dataAttributes.web.d.ts.map +1 -1
  640. package/lib/typescript/utils/domDataAttributes.d.ts +28 -0
  641. package/lib/typescript/utils/domDataAttributes.d.ts.map +1 -0
  642. package/package.json +6 -5
  643. package/src/CLAUDE.md +86 -0
  644. package/src/avatar/AvatarRoot.tsx +39 -0
  645. package/src/avatar/index.ts +3 -43
  646. package/src/avatar/types.ts +1 -47
  647. package/src/breadcrumbs/BreadcrumbsRoot.tsx +64 -0
  648. package/src/breadcrumbs/context.tsx +5 -0
  649. package/src/breadcrumbs/index.ts +8 -0
  650. package/src/breadcrumbs/types.ts +31 -0
  651. package/src/button/ButtonRoot.tsx +155 -0
  652. package/src/button/index.ts +3 -0
  653. package/src/button/types.ts +5 -52
  654. package/src/checkbox/CheckboxGroup.tsx +50 -0
  655. package/src/checkbox/CheckboxRoot.tsx +102 -0
  656. package/src/checkbox/CheckboxRoot.web.tsx +92 -0
  657. package/src/checkbox/index.ts +4 -42
  658. package/src/checkbox/types.ts +1 -32
  659. package/src/chip/ChipRoot.tsx +168 -0
  660. package/src/chip/context.tsx +4 -0
  661. package/src/chip/index.ts +3 -0
  662. package/src/chip/types.ts +20 -0
  663. package/src/dialog/DialogClose.tsx +26 -0
  664. package/src/dialog/DialogContent.tsx +78 -0
  665. package/src/dialog/DialogOverlay.tsx +51 -0
  666. package/src/dialog/DialogPopup.tsx +162 -0
  667. package/src/dialog/DialogPortal.tsx +29 -0
  668. package/src/dialog/DialogRoot.tsx +72 -0
  669. package/src/dialog/DialogTrigger.tsx +26 -0
  670. package/src/dialog/index.tsx +11 -86
  671. package/src/dialog/types.ts +38 -54
  672. package/src/field/FieldLabel.tsx +43 -0
  673. package/src/field/FieldLabel.web.tsx +71 -0
  674. package/src/field/FieldRoot.tsx +39 -0
  675. package/src/field/index.tsx +3 -68
  676. package/src/field/types.tsx +0 -34
  677. package/src/form/FormRoot.tsx +18 -0
  678. package/src/form/FormRoot.web.tsx +17 -0
  679. package/src/form/index.tsx +2 -12
  680. package/src/form/types.tsx +9 -11
  681. package/src/full-window-overlay/index.tsx +65 -0
  682. package/src/full-window-overlay/index.web.tsx +32 -0
  683. package/src/index.ts +19 -2
  684. package/src/input/InputField.android.tsx +107 -0
  685. package/src/input/InputField.tsx +100 -0
  686. package/src/input/InputField.web.tsx +141 -0
  687. package/src/input/InputRoot.tsx +115 -0
  688. package/src/input/index.tsx +4 -38
  689. package/src/input/types.ts +23 -49
  690. package/src/link/LinkRoot.tsx +108 -0
  691. package/src/link/context.tsx +10 -0
  692. package/src/link/index.tsx +3 -1
  693. package/src/link/types.ts +21 -0
  694. package/src/list-item/ListItemRoot.tsx +183 -0
  695. package/src/list-item/context.tsx +2 -2
  696. package/src/list-item/index.ts +1 -80
  697. package/src/list-item/types.ts +5 -89
  698. package/src/otp-input/OtpInputField.tsx +122 -0
  699. package/src/otp-input/index.ts +16 -0
  700. package/src/otp-input/types.ts +0 -23
  701. package/src/otp-input/useOtpInput.ts +156 -0
  702. package/src/overlay/useAnchorPosition.ts +79 -11
  703. package/src/overlay/useDismissOverlay.ts +0 -2
  704. package/src/overlay/useEscapeKey.ts +0 -2
  705. package/src/portal/index.ts +1 -0
  706. package/src/portal/portal.tsx +116 -0
  707. package/src/progress-bar/ProgressBarIndicator.tsx +34 -0
  708. package/src/progress-bar/ProgressBarRoot.tsx +117 -0
  709. package/src/progress-bar/index.ts +5 -0
  710. package/src/progress-bar/types.ts +24 -0
  711. package/src/radio/RadioGroup.tsx +85 -0
  712. package/src/radio/RadioRoot.tsx +98 -0
  713. package/src/radio/RadioRoot.web.tsx +90 -0
  714. package/src/radio/index.ts +4 -36
  715. package/src/radio/types.ts +0 -22
  716. package/src/select/SelectContent.tsx +120 -0
  717. package/src/select/SelectItem.tsx +139 -0
  718. package/src/select/SelectRoot.tsx +154 -0
  719. package/src/select/SelectTrigger.tsx +82 -0
  720. package/src/select/SelectTrigger.web.tsx +238 -0
  721. package/src/select/context.tsx +1 -10
  722. package/src/select/index.ts +17 -0
  723. package/src/select/types.ts +8 -32
  724. package/src/select/useContentFocus.ts +1 -1
  725. package/src/select/useSelectTrigger.ts +359 -0
  726. package/src/select/useSelectTrigger.web.ts +280 -0
  727. package/src/slider/SliderRail.tsx +143 -0
  728. package/src/slider/SliderRoot.tsx +266 -0
  729. package/src/slider/SliderThumb.tsx +268 -0
  730. package/src/slider/context.tsx +38 -0
  731. package/src/slider/index.ts +19 -0
  732. package/src/slider/types.ts +44 -0
  733. package/src/slider/useSliderPointer.ts +157 -0
  734. package/src/slider/utils.ts +181 -0
  735. package/src/slot/index.tsx +162 -0
  736. package/src/switch/index.ts +7 -16
  737. package/src/switch/types.ts +35 -10
  738. package/src/switch/useSwitch.ts +75 -0
  739. package/src/tabs/Tab.tsx +158 -0
  740. package/src/tabs/TabPanel.tsx +52 -0
  741. package/src/tabs/TabsList.tsx +64 -0
  742. package/src/tabs/TabsRoot.tsx +115 -0
  743. package/src/tabs/context.tsx +10 -0
  744. package/src/tabs/index.ts +17 -0
  745. package/src/tabs/types.ts +93 -0
  746. package/src/tabs/useTabsNavigation.ts +97 -0
  747. package/src/tile/TileGroup.tsx +137 -0
  748. package/src/tile/TileRoot.tsx +137 -0
  749. package/src/tile/index.ts +2 -72
  750. package/src/tile/types.ts +7 -39
  751. package/src/toast/ToastRoot.tsx +39 -0
  752. package/src/toast/context.tsx +4 -0
  753. package/src/toast/index.ts +2 -0
  754. package/src/toast/types.ts +17 -0
  755. package/src/uniwind.d.ts +1 -0
  756. package/src/utils/assignRef.ts +11 -0
  757. package/src/utils/createPortal.ts +3 -1
  758. package/src/utils/dataAttributes.ts +7 -25
  759. package/src/utils/dataAttributes.web.ts +24 -0
  760. package/src/utils/domDataAttributes.ts +63 -0
  761. package/lib/commonjs/avatar/createAvatarBadge.js +0 -20
  762. package/lib/commonjs/avatar/createAvatarBadge.js.map +0 -1
  763. package/lib/commonjs/avatar/createAvatarIcon.js +0 -30
  764. package/lib/commonjs/avatar/createAvatarIcon.js.map +0 -1
  765. package/lib/commonjs/avatar/createAvatarImage.js +0 -51
  766. package/lib/commonjs/avatar/createAvatarImage.js.map +0 -1
  767. package/lib/commonjs/avatar/createAvatarRoot.js +0 -34
  768. package/lib/commonjs/avatar/createAvatarRoot.js.map +0 -1
  769. package/lib/commonjs/avatar/createAvatarText.js +0 -42
  770. package/lib/commonjs/avatar/createAvatarText.js.map +0 -1
  771. package/lib/commonjs/button/createButtonGroup.js +0 -80
  772. package/lib/commonjs/button/createButtonGroup.js.map +0 -1
  773. package/lib/commonjs/button/createButtonIcon.js +0 -18
  774. package/lib/commonjs/button/createButtonIcon.js.map +0 -1
  775. package/lib/commonjs/button/createButtonRoot.js +0 -81
  776. package/lib/commonjs/button/createButtonRoot.js.map +0 -1
  777. package/lib/commonjs/button/createButtonSpinner.js +0 -34
  778. package/lib/commonjs/button/createButtonSpinner.js.map +0 -1
  779. package/lib/commonjs/button/createButtonText.js +0 -38
  780. package/lib/commonjs/button/createButtonText.js.map +0 -1
  781. package/lib/commonjs/checkbox/createCheckboxGroup.js +0 -44
  782. package/lib/commonjs/checkbox/createCheckboxGroup.js.map +0 -1
  783. package/lib/commonjs/checkbox/createCheckboxIcon.js +0 -29
  784. package/lib/commonjs/checkbox/createCheckboxIcon.js.map +0 -1
  785. package/lib/commonjs/checkbox/createCheckboxIndicator.js +0 -47
  786. package/lib/commonjs/checkbox/createCheckboxIndicator.js.map +0 -1
  787. package/lib/commonjs/checkbox/createCheckboxLabel.js +0 -46
  788. package/lib/commonjs/checkbox/createCheckboxLabel.js.map +0 -1
  789. package/lib/commonjs/checkbox/createCheckboxRoot.js +0 -99
  790. package/lib/commonjs/checkbox/createCheckboxRoot.js.map +0 -1
  791. package/lib/commonjs/checkbox/createCheckboxRoot.web.js +0 -90
  792. package/lib/commonjs/checkbox/createCheckboxRoot.web.js.map +0 -1
  793. package/lib/commonjs/dialog/createDialogBody.js +0 -21
  794. package/lib/commonjs/dialog/createDialogBody.js.map +0 -1
  795. package/lib/commonjs/dialog/createDialogClose.js +0 -37
  796. package/lib/commonjs/dialog/createDialogClose.js.map +0 -1
  797. package/lib/commonjs/dialog/createDialogContent.js +0 -141
  798. package/lib/commonjs/dialog/createDialogContent.js.map +0 -1
  799. package/lib/commonjs/dialog/createDialogDescription.js +0 -30
  800. package/lib/commonjs/dialog/createDialogDescription.js.map +0 -1
  801. package/lib/commonjs/dialog/createDialogFooter.js +0 -21
  802. package/lib/commonjs/dialog/createDialogFooter.js.map +0 -1
  803. package/lib/commonjs/dialog/createDialogHeader.js +0 -21
  804. package/lib/commonjs/dialog/createDialogHeader.js.map +0 -1
  805. package/lib/commonjs/dialog/createDialogRoot.js +0 -54
  806. package/lib/commonjs/dialog/createDialogRoot.js.map +0 -1
  807. package/lib/commonjs/dialog/createDialogTitle.js +0 -21
  808. package/lib/commonjs/dialog/createDialogTitle.js.map +0 -1
  809. package/lib/commonjs/dialog/createDialogTrigger.js +0 -37
  810. package/lib/commonjs/dialog/createDialogTrigger.js.map +0 -1
  811. package/lib/commonjs/field/createFieldError.js +0 -41
  812. package/lib/commonjs/field/createFieldError.js.map +0 -1
  813. package/lib/commonjs/field/createFieldErrorIcon.js +0 -18
  814. package/lib/commonjs/field/createFieldErrorIcon.js.map +0 -1
  815. package/lib/commonjs/field/createFieldErrorText.js +0 -18
  816. package/lib/commonjs/field/createFieldErrorText.js.map +0 -1
  817. package/lib/commonjs/field/createFieldHelper.js +0 -41
  818. package/lib/commonjs/field/createFieldHelper.js.map +0 -1
  819. package/lib/commonjs/field/createFieldHelperText.js +0 -18
  820. package/lib/commonjs/field/createFieldHelperText.js.map +0 -1
  821. package/lib/commonjs/field/createFieldLabel.js +0 -36
  822. package/lib/commonjs/field/createFieldLabel.js.map +0 -1
  823. package/lib/commonjs/field/createFieldRoot.js +0 -35
  824. package/lib/commonjs/field/createFieldRoot.js.map +0 -1
  825. package/lib/commonjs/form/createFormRoot.js +0 -21
  826. package/lib/commonjs/form/createFormRoot.js.map +0 -1
  827. package/lib/commonjs/input/createInputField.js +0 -95
  828. package/lib/commonjs/input/createInputField.js.map +0 -1
  829. package/lib/commonjs/input/createInputRoot.js +0 -82
  830. package/lib/commonjs/input/createInputRoot.js.map +0 -1
  831. package/lib/commonjs/input/createInputSlot.js +0 -44
  832. package/lib/commonjs/input/createInputSlot.js.map +0 -1
  833. package/lib/commonjs/link/createLink.js +0 -74
  834. package/lib/commonjs/link/createLink.js.map +0 -1
  835. package/lib/commonjs/list-item/createListItemContent.js +0 -30
  836. package/lib/commonjs/list-item/createListItemContent.js.map +0 -1
  837. package/lib/commonjs/list-item/createListItemDescription.js +0 -25
  838. package/lib/commonjs/list-item/createListItemDescription.js.map +0 -1
  839. package/lib/commonjs/list-item/createListItemLeadingSlot.js +0 -34
  840. package/lib/commonjs/list-item/createListItemLeadingSlot.js.map +0 -1
  841. package/lib/commonjs/list-item/createListItemMeta.js +0 -25
  842. package/lib/commonjs/list-item/createListItemMeta.js.map +0 -1
  843. package/lib/commonjs/list-item/createListItemRoot.js +0 -157
  844. package/lib/commonjs/list-item/createListItemRoot.js.map +0 -1
  845. package/lib/commonjs/list-item/createListItemSectionHeader.js +0 -54
  846. package/lib/commonjs/list-item/createListItemSectionHeader.js.map +0 -1
  847. package/lib/commonjs/list-item/createListItemTitle.js +0 -25
  848. package/lib/commonjs/list-item/createListItemTitle.js.map +0 -1
  849. package/lib/commonjs/list-item/createListItemTrailingSlot.js +0 -28
  850. package/lib/commonjs/list-item/createListItemTrailingSlot.js.map +0 -1
  851. package/lib/commonjs/otp-input/createOtpInputCell.js +0 -29
  852. package/lib/commonjs/otp-input/createOtpInputCell.js.map +0 -1
  853. package/lib/commonjs/otp-input/createOtpInputField.js +0 -104
  854. package/lib/commonjs/otp-input/createOtpInputField.js.map +0 -1
  855. package/lib/commonjs/otp-input/createOtpInputRoot.js +0 -136
  856. package/lib/commonjs/otp-input/createOtpInputRoot.js.map +0 -1
  857. package/lib/commonjs/progress/context.js.map +0 -1
  858. package/lib/commonjs/progress/createProgressIndicator.js +0 -42
  859. package/lib/commonjs/progress/createProgressIndicator.js.map +0 -1
  860. package/lib/commonjs/progress/createProgressRoot.js +0 -96
  861. package/lib/commonjs/progress/createProgressRoot.js.map +0 -1
  862. package/lib/commonjs/progress/index.js +0 -25
  863. package/lib/commonjs/progress/index.js.map +0 -1
  864. package/lib/commonjs/progress/types.js.map +0 -1
  865. package/lib/commonjs/radio/createRadioGroup.js +0 -66
  866. package/lib/commonjs/radio/createRadioGroup.js.map +0 -1
  867. package/lib/commonjs/radio/createRadioIndicator.js +0 -43
  868. package/lib/commonjs/radio/createRadioIndicator.js.map +0 -1
  869. package/lib/commonjs/radio/createRadioLabel.js +0 -38
  870. package/lib/commonjs/radio/createRadioLabel.js.map +0 -1
  871. package/lib/commonjs/radio/createRadioRoot.js +0 -95
  872. package/lib/commonjs/radio/createRadioRoot.js.map +0 -1
  873. package/lib/commonjs/radio/createRadioRoot.web.js +0 -87
  874. package/lib/commonjs/radio/createRadioRoot.web.js.map +0 -1
  875. package/lib/commonjs/select/createSelectContent.js +0 -102
  876. package/lib/commonjs/select/createSelectContent.js.map +0 -1
  877. package/lib/commonjs/select/createSelectIcon.js +0 -41
  878. package/lib/commonjs/select/createSelectIcon.js.map +0 -1
  879. package/lib/commonjs/select/createSelectItem.js +0 -101
  880. package/lib/commonjs/select/createSelectItem.js.map +0 -1
  881. package/lib/commonjs/select/createSelectItemLabel.js +0 -41
  882. package/lib/commonjs/select/createSelectItemLabel.js.map +0 -1
  883. package/lib/commonjs/select/createSelectRoot.js +0 -102
  884. package/lib/commonjs/select/createSelectRoot.js.map +0 -1
  885. package/lib/commonjs/select/createSelectTrigger.js +0 -179
  886. package/lib/commonjs/select/createSelectTrigger.js.map +0 -1
  887. package/lib/commonjs/select/createSelectValue.js +0 -53
  888. package/lib/commonjs/select/createSelectValue.js.map +0 -1
  889. package/lib/commonjs/switch/createSwitchRoot.js +0 -73
  890. package/lib/commonjs/switch/createSwitchRoot.js.map +0 -1
  891. package/lib/commonjs/tile/createTileContent.js +0 -30
  892. package/lib/commonjs/tile/createTileContent.js.map +0 -1
  893. package/lib/commonjs/tile/createTileDescription.js +0 -28
  894. package/lib/commonjs/tile/createTileDescription.js.map +0 -1
  895. package/lib/commonjs/tile/createTileGroup.js +0 -112
  896. package/lib/commonjs/tile/createTileGroup.js.map +0 -1
  897. package/lib/commonjs/tile/createTileIndicator.js +0 -46
  898. package/lib/commonjs/tile/createTileIndicator.js.map +0 -1
  899. package/lib/commonjs/tile/createTileLeadingSlot.js +0 -34
  900. package/lib/commonjs/tile/createTileLeadingSlot.js.map +0 -1
  901. package/lib/commonjs/tile/createTileRoot.js +0 -133
  902. package/lib/commonjs/tile/createTileRoot.js.map +0 -1
  903. package/lib/commonjs/tile/createTileTitle.js +0 -28
  904. package/lib/commonjs/tile/createTileTitle.js.map +0 -1
  905. package/lib/commonjs/tile/createTileTrailingSlot.js +0 -35
  906. package/lib/commonjs/tile/createTileTrailingSlot.js.map +0 -1
  907. package/lib/module/avatar/createAvatarBadge.js +0 -15
  908. package/lib/module/avatar/createAvatarBadge.js.map +0 -1
  909. package/lib/module/avatar/createAvatarIcon.js +0 -25
  910. package/lib/module/avatar/createAvatarIcon.js.map +0 -1
  911. package/lib/module/avatar/createAvatarImage.js +0 -46
  912. package/lib/module/avatar/createAvatarImage.js.map +0 -1
  913. package/lib/module/avatar/createAvatarRoot.js +0 -29
  914. package/lib/module/avatar/createAvatarRoot.js.map +0 -1
  915. package/lib/module/avatar/createAvatarText.js +0 -37
  916. package/lib/module/avatar/createAvatarText.js.map +0 -1
  917. package/lib/module/button/createButtonGroup.js +0 -74
  918. package/lib/module/button/createButtonGroup.js.map +0 -1
  919. package/lib/module/button/createButtonIcon.js +0 -13
  920. package/lib/module/button/createButtonIcon.js.map +0 -1
  921. package/lib/module/button/createButtonRoot.js +0 -76
  922. package/lib/module/button/createButtonRoot.js.map +0 -1
  923. package/lib/module/button/createButtonSpinner.js +0 -29
  924. package/lib/module/button/createButtonSpinner.js.map +0 -1
  925. package/lib/module/button/createButtonText.js +0 -33
  926. package/lib/module/button/createButtonText.js.map +0 -1
  927. package/lib/module/checkbox/createCheckboxGroup.js +0 -39
  928. package/lib/module/checkbox/createCheckboxGroup.js.map +0 -1
  929. package/lib/module/checkbox/createCheckboxIcon.js +0 -24
  930. package/lib/module/checkbox/createCheckboxIcon.js.map +0 -1
  931. package/lib/module/checkbox/createCheckboxIndicator.js +0 -42
  932. package/lib/module/checkbox/createCheckboxIndicator.js.map +0 -1
  933. package/lib/module/checkbox/createCheckboxLabel.js +0 -41
  934. package/lib/module/checkbox/createCheckboxLabel.js.map +0 -1
  935. package/lib/module/checkbox/createCheckboxRoot.js +0 -94
  936. package/lib/module/checkbox/createCheckboxRoot.js.map +0 -1
  937. package/lib/module/checkbox/createCheckboxRoot.web.js +0 -85
  938. package/lib/module/checkbox/createCheckboxRoot.web.js.map +0 -1
  939. package/lib/module/dialog/createDialogBody.js +0 -15
  940. package/lib/module/dialog/createDialogBody.js.map +0 -1
  941. package/lib/module/dialog/createDialogClose.js +0 -31
  942. package/lib/module/dialog/createDialogClose.js.map +0 -1
  943. package/lib/module/dialog/createDialogContent.js +0 -136
  944. package/lib/module/dialog/createDialogContent.js.map +0 -1
  945. package/lib/module/dialog/createDialogDescription.js +0 -24
  946. package/lib/module/dialog/createDialogDescription.js.map +0 -1
  947. package/lib/module/dialog/createDialogFooter.js +0 -15
  948. package/lib/module/dialog/createDialogFooter.js.map +0 -1
  949. package/lib/module/dialog/createDialogHeader.js +0 -15
  950. package/lib/module/dialog/createDialogHeader.js.map +0 -1
  951. package/lib/module/dialog/createDialogRoot.js +0 -49
  952. package/lib/module/dialog/createDialogRoot.js.map +0 -1
  953. package/lib/module/dialog/createDialogTitle.js +0 -15
  954. package/lib/module/dialog/createDialogTitle.js.map +0 -1
  955. package/lib/module/dialog/createDialogTrigger.js +0 -31
  956. package/lib/module/dialog/createDialogTrigger.js.map +0 -1
  957. package/lib/module/field/createFieldError.js +0 -35
  958. package/lib/module/field/createFieldError.js.map +0 -1
  959. package/lib/module/field/createFieldErrorIcon.js +0 -13
  960. package/lib/module/field/createFieldErrorIcon.js.map +0 -1
  961. package/lib/module/field/createFieldErrorText.js +0 -13
  962. package/lib/module/field/createFieldErrorText.js.map +0 -1
  963. package/lib/module/field/createFieldHelper.js +0 -35
  964. package/lib/module/field/createFieldHelper.js.map +0 -1
  965. package/lib/module/field/createFieldHelperText.js +0 -13
  966. package/lib/module/field/createFieldHelperText.js.map +0 -1
  967. package/lib/module/field/createFieldLabel.js +0 -31
  968. package/lib/module/field/createFieldLabel.js.map +0 -1
  969. package/lib/module/field/createFieldRoot.js +0 -29
  970. package/lib/module/field/createFieldRoot.js.map +0 -1
  971. package/lib/module/form/createFormRoot.js +0 -15
  972. package/lib/module/form/createFormRoot.js.map +0 -1
  973. package/lib/module/input/createInputField.js +0 -90
  974. package/lib/module/input/createInputField.js.map +0 -1
  975. package/lib/module/input/createInputRoot.js +0 -76
  976. package/lib/module/input/createInputRoot.js.map +0 -1
  977. package/lib/module/input/createInputSlot.js +0 -39
  978. package/lib/module/input/createInputSlot.js.map +0 -1
  979. package/lib/module/link/createLink.js +0 -68
  980. package/lib/module/link/createLink.js.map +0 -1
  981. package/lib/module/list-item/createListItemContent.js +0 -24
  982. package/lib/module/list-item/createListItemContent.js.map +0 -1
  983. package/lib/module/list-item/createListItemDescription.js +0 -19
  984. package/lib/module/list-item/createListItemDescription.js.map +0 -1
  985. package/lib/module/list-item/createListItemLeadingSlot.js +0 -28
  986. package/lib/module/list-item/createListItemLeadingSlot.js.map +0 -1
  987. package/lib/module/list-item/createListItemMeta.js +0 -19
  988. package/lib/module/list-item/createListItemMeta.js.map +0 -1
  989. package/lib/module/list-item/createListItemRoot.js +0 -151
  990. package/lib/module/list-item/createListItemRoot.js.map +0 -1
  991. package/lib/module/list-item/createListItemSectionHeader.js +0 -48
  992. package/lib/module/list-item/createListItemSectionHeader.js.map +0 -1
  993. package/lib/module/list-item/createListItemTitle.js +0 -19
  994. package/lib/module/list-item/createListItemTitle.js.map +0 -1
  995. package/lib/module/list-item/createListItemTrailingSlot.js +0 -22
  996. package/lib/module/list-item/createListItemTrailingSlot.js.map +0 -1
  997. package/lib/module/otp-input/createOtpInputCell.js +0 -24
  998. package/lib/module/otp-input/createOtpInputCell.js.map +0 -1
  999. package/lib/module/otp-input/createOtpInputField.js +0 -99
  1000. package/lib/module/otp-input/createOtpInputField.js.map +0 -1
  1001. package/lib/module/otp-input/createOtpInputRoot.js +0 -131
  1002. package/lib/module/otp-input/createOtpInputRoot.js.map +0 -1
  1003. package/lib/module/progress/context.js.map +0 -1
  1004. package/lib/module/progress/createProgressIndicator.js +0 -37
  1005. package/lib/module/progress/createProgressIndicator.js.map +0 -1
  1006. package/lib/module/progress/createProgressRoot.js +0 -91
  1007. package/lib/module/progress/createProgressRoot.js.map +0 -1
  1008. package/lib/module/progress/index.js +0 -15
  1009. package/lib/module/progress/index.js.map +0 -1
  1010. package/lib/module/progress/types.js.map +0 -1
  1011. package/lib/module/radio/createRadioGroup.js +0 -61
  1012. package/lib/module/radio/createRadioGroup.js.map +0 -1
  1013. package/lib/module/radio/createRadioIndicator.js +0 -38
  1014. package/lib/module/radio/createRadioIndicator.js.map +0 -1
  1015. package/lib/module/radio/createRadioLabel.js +0 -33
  1016. package/lib/module/radio/createRadioLabel.js.map +0 -1
  1017. package/lib/module/radio/createRadioRoot.js +0 -90
  1018. package/lib/module/radio/createRadioRoot.js.map +0 -1
  1019. package/lib/module/radio/createRadioRoot.web.js +0 -82
  1020. package/lib/module/radio/createRadioRoot.web.js.map +0 -1
  1021. package/lib/module/select/createSelectContent.js +0 -97
  1022. package/lib/module/select/createSelectContent.js.map +0 -1
  1023. package/lib/module/select/createSelectIcon.js +0 -36
  1024. package/lib/module/select/createSelectIcon.js.map +0 -1
  1025. package/lib/module/select/createSelectItem.js +0 -96
  1026. package/lib/module/select/createSelectItem.js.map +0 -1
  1027. package/lib/module/select/createSelectItemLabel.js +0 -36
  1028. package/lib/module/select/createSelectItemLabel.js.map +0 -1
  1029. package/lib/module/select/createSelectRoot.js +0 -97
  1030. package/lib/module/select/createSelectRoot.js.map +0 -1
  1031. package/lib/module/select/createSelectTrigger.js +0 -174
  1032. package/lib/module/select/createSelectTrigger.js.map +0 -1
  1033. package/lib/module/select/createSelectValue.js +0 -48
  1034. package/lib/module/select/createSelectValue.js.map +0 -1
  1035. package/lib/module/switch/createSwitchRoot.js +0 -67
  1036. package/lib/module/switch/createSwitchRoot.js.map +0 -1
  1037. package/lib/module/tile/createTileContent.js +0 -24
  1038. package/lib/module/tile/createTileContent.js.map +0 -1
  1039. package/lib/module/tile/createTileDescription.js +0 -22
  1040. package/lib/module/tile/createTileDescription.js.map +0 -1
  1041. package/lib/module/tile/createTileGroup.js +0 -106
  1042. package/lib/module/tile/createTileGroup.js.map +0 -1
  1043. package/lib/module/tile/createTileIndicator.js +0 -40
  1044. package/lib/module/tile/createTileIndicator.js.map +0 -1
  1045. package/lib/module/tile/createTileLeadingSlot.js +0 -28
  1046. package/lib/module/tile/createTileLeadingSlot.js.map +0 -1
  1047. package/lib/module/tile/createTileRoot.js +0 -127
  1048. package/lib/module/tile/createTileRoot.js.map +0 -1
  1049. package/lib/module/tile/createTileTitle.js +0 -22
  1050. package/lib/module/tile/createTileTitle.js.map +0 -1
  1051. package/lib/module/tile/createTileTrailingSlot.js +0 -29
  1052. package/lib/module/tile/createTileTrailingSlot.js.map +0 -1
  1053. package/lib/typescript/avatar/createAvatarBadge.d.ts +0 -4
  1054. package/lib/typescript/avatar/createAvatarBadge.d.ts.map +0 -1
  1055. package/lib/typescript/avatar/createAvatarIcon.d.ts +0 -4
  1056. package/lib/typescript/avatar/createAvatarIcon.d.ts.map +0 -1
  1057. package/lib/typescript/avatar/createAvatarImage.d.ts +0 -4
  1058. package/lib/typescript/avatar/createAvatarImage.d.ts.map +0 -1
  1059. package/lib/typescript/avatar/createAvatarRoot.d.ts +0 -4
  1060. package/lib/typescript/avatar/createAvatarRoot.d.ts.map +0 -1
  1061. package/lib/typescript/avatar/createAvatarText.d.ts +0 -4
  1062. package/lib/typescript/avatar/createAvatarText.d.ts.map +0 -1
  1063. package/lib/typescript/button/createButtonGroup.d.ts +0 -4
  1064. package/lib/typescript/button/createButtonGroup.d.ts.map +0 -1
  1065. package/lib/typescript/button/createButtonIcon.d.ts +0 -2
  1066. package/lib/typescript/button/createButtonIcon.d.ts.map +0 -1
  1067. package/lib/typescript/button/createButtonRoot.d.ts +0 -6
  1068. package/lib/typescript/button/createButtonRoot.d.ts.map +0 -1
  1069. package/lib/typescript/button/createButtonSpinner.d.ts +0 -4
  1070. package/lib/typescript/button/createButtonSpinner.d.ts.map +0 -1
  1071. package/lib/typescript/button/createButtonText.d.ts +0 -4
  1072. package/lib/typescript/button/createButtonText.d.ts.map +0 -1
  1073. package/lib/typescript/checkbox/createCheckboxGroup.d.ts +0 -3
  1074. package/lib/typescript/checkbox/createCheckboxGroup.d.ts.map +0 -1
  1075. package/lib/typescript/checkbox/createCheckboxIcon.d.ts +0 -3
  1076. package/lib/typescript/checkbox/createCheckboxIcon.d.ts.map +0 -1
  1077. package/lib/typescript/checkbox/createCheckboxIndicator.d.ts +0 -5
  1078. package/lib/typescript/checkbox/createCheckboxIndicator.d.ts.map +0 -1
  1079. package/lib/typescript/checkbox/createCheckboxLabel.d.ts +0 -5
  1080. package/lib/typescript/checkbox/createCheckboxLabel.d.ts.map +0 -1
  1081. package/lib/typescript/checkbox/createCheckboxRoot.d.ts +0 -2
  1082. package/lib/typescript/checkbox/createCheckboxRoot.d.ts.map +0 -1
  1083. package/lib/typescript/checkbox/createCheckboxRoot.web.d.ts +0 -2
  1084. package/lib/typescript/checkbox/createCheckboxRoot.web.d.ts.map +0 -1
  1085. package/lib/typescript/dialog/createDialogBody.d.ts +0 -4
  1086. package/lib/typescript/dialog/createDialogBody.d.ts.map +0 -1
  1087. package/lib/typescript/dialog/createDialogClose.d.ts +0 -4
  1088. package/lib/typescript/dialog/createDialogClose.d.ts.map +0 -1
  1089. package/lib/typescript/dialog/createDialogContent.d.ts +0 -4
  1090. package/lib/typescript/dialog/createDialogContent.d.ts.map +0 -1
  1091. package/lib/typescript/dialog/createDialogDescription.d.ts +0 -4
  1092. package/lib/typescript/dialog/createDialogDescription.d.ts.map +0 -1
  1093. package/lib/typescript/dialog/createDialogFooter.d.ts +0 -4
  1094. package/lib/typescript/dialog/createDialogFooter.d.ts.map +0 -1
  1095. package/lib/typescript/dialog/createDialogHeader.d.ts +0 -4
  1096. package/lib/typescript/dialog/createDialogHeader.d.ts.map +0 -1
  1097. package/lib/typescript/dialog/createDialogRoot.d.ts +0 -4
  1098. package/lib/typescript/dialog/createDialogRoot.d.ts.map +0 -1
  1099. package/lib/typescript/dialog/createDialogTitle.d.ts +0 -4
  1100. package/lib/typescript/dialog/createDialogTitle.d.ts.map +0 -1
  1101. package/lib/typescript/dialog/createDialogTrigger.d.ts +0 -4
  1102. package/lib/typescript/dialog/createDialogTrigger.d.ts.map +0 -1
  1103. package/lib/typescript/field/createFieldError.d.ts +0 -5
  1104. package/lib/typescript/field/createFieldError.d.ts.map +0 -1
  1105. package/lib/typescript/field/createFieldErrorIcon.d.ts +0 -5
  1106. package/lib/typescript/field/createFieldErrorIcon.d.ts.map +0 -1
  1107. package/lib/typescript/field/createFieldErrorText.d.ts +0 -5
  1108. package/lib/typescript/field/createFieldErrorText.d.ts.map +0 -1
  1109. package/lib/typescript/field/createFieldHelper.d.ts +0 -5
  1110. package/lib/typescript/field/createFieldHelper.d.ts.map +0 -1
  1111. package/lib/typescript/field/createFieldHelperText.d.ts +0 -5
  1112. package/lib/typescript/field/createFieldHelperText.d.ts.map +0 -1
  1113. package/lib/typescript/field/createFieldLabel.d.ts +0 -6
  1114. package/lib/typescript/field/createFieldLabel.d.ts.map +0 -1
  1115. package/lib/typescript/field/createFieldRoot.d.ts +0 -6
  1116. package/lib/typescript/field/createFieldRoot.d.ts.map +0 -1
  1117. package/lib/typescript/form/createFormRoot.d.ts +0 -4
  1118. package/lib/typescript/form/createFormRoot.d.ts.map +0 -1
  1119. package/lib/typescript/input/createInputField.d.ts +0 -4
  1120. package/lib/typescript/input/createInputField.d.ts.map +0 -1
  1121. package/lib/typescript/input/createInputRoot.d.ts +0 -4
  1122. package/lib/typescript/input/createInputRoot.d.ts.map +0 -1
  1123. package/lib/typescript/input/createInputSlot.d.ts +0 -4
  1124. package/lib/typescript/input/createInputSlot.d.ts.map +0 -1
  1125. package/lib/typescript/link/createLink.d.ts +0 -6
  1126. package/lib/typescript/link/createLink.d.ts.map +0 -1
  1127. package/lib/typescript/list-item/createListItemContent.d.ts +0 -3
  1128. package/lib/typescript/list-item/createListItemContent.d.ts.map +0 -1
  1129. package/lib/typescript/list-item/createListItemDescription.d.ts +0 -3
  1130. package/lib/typescript/list-item/createListItemDescription.d.ts.map +0 -1
  1131. package/lib/typescript/list-item/createListItemLeadingSlot.d.ts +0 -4
  1132. package/lib/typescript/list-item/createListItemLeadingSlot.d.ts.map +0 -1
  1133. package/lib/typescript/list-item/createListItemMeta.d.ts +0 -3
  1134. package/lib/typescript/list-item/createListItemMeta.d.ts.map +0 -1
  1135. package/lib/typescript/list-item/createListItemRoot.d.ts +0 -4
  1136. package/lib/typescript/list-item/createListItemRoot.d.ts.map +0 -1
  1137. package/lib/typescript/list-item/createListItemSectionHeader.d.ts +0 -4
  1138. package/lib/typescript/list-item/createListItemSectionHeader.d.ts.map +0 -1
  1139. package/lib/typescript/list-item/createListItemTitle.d.ts +0 -3
  1140. package/lib/typescript/list-item/createListItemTitle.d.ts.map +0 -1
  1141. package/lib/typescript/list-item/createListItemTrailingSlot.d.ts +0 -3
  1142. package/lib/typescript/list-item/createListItemTrailingSlot.d.ts.map +0 -1
  1143. package/lib/typescript/otp-input/createOtpInputCell.d.ts +0 -4
  1144. package/lib/typescript/otp-input/createOtpInputCell.d.ts.map +0 -1
  1145. package/lib/typescript/otp-input/createOtpInputField.d.ts +0 -4
  1146. package/lib/typescript/otp-input/createOtpInputField.d.ts.map +0 -1
  1147. package/lib/typescript/otp-input/createOtpInputRoot.d.ts +0 -4
  1148. package/lib/typescript/otp-input/createOtpInputRoot.d.ts.map +0 -1
  1149. package/lib/typescript/progress/context.d.ts.map +0 -1
  1150. package/lib/typescript/progress/createProgressIndicator.d.ts +0 -3
  1151. package/lib/typescript/progress/createProgressIndicator.d.ts.map +0 -1
  1152. package/lib/typescript/progress/createProgressRoot.d.ts +0 -4
  1153. package/lib/typescript/progress/createProgressRoot.d.ts.map +0 -1
  1154. package/lib/typescript/progress/index.d.ts +0 -10
  1155. package/lib/typescript/progress/index.d.ts.map +0 -1
  1156. package/lib/typescript/progress/types.d.ts +0 -25
  1157. package/lib/typescript/progress/types.d.ts.map +0 -1
  1158. package/lib/typescript/radio/createRadioGroup.d.ts +0 -3
  1159. package/lib/typescript/radio/createRadioGroup.d.ts.map +0 -1
  1160. package/lib/typescript/radio/createRadioIndicator.d.ts +0 -5
  1161. package/lib/typescript/radio/createRadioIndicator.d.ts.map +0 -1
  1162. package/lib/typescript/radio/createRadioLabel.d.ts +0 -5
  1163. package/lib/typescript/radio/createRadioLabel.d.ts.map +0 -1
  1164. package/lib/typescript/radio/createRadioRoot.d.ts +0 -3
  1165. package/lib/typescript/radio/createRadioRoot.d.ts.map +0 -1
  1166. package/lib/typescript/radio/createRadioRoot.web.d.ts +0 -3
  1167. package/lib/typescript/radio/createRadioRoot.web.d.ts.map +0 -1
  1168. package/lib/typescript/select/createSelectContent.d.ts +0 -4
  1169. package/lib/typescript/select/createSelectContent.d.ts.map +0 -1
  1170. package/lib/typescript/select/createSelectIcon.d.ts +0 -2
  1171. package/lib/typescript/select/createSelectIcon.d.ts.map +0 -1
  1172. package/lib/typescript/select/createSelectItem.d.ts +0 -6
  1173. package/lib/typescript/select/createSelectItem.d.ts.map +0 -1
  1174. package/lib/typescript/select/createSelectItemLabel.d.ts +0 -4
  1175. package/lib/typescript/select/createSelectItemLabel.d.ts.map +0 -1
  1176. package/lib/typescript/select/createSelectRoot.d.ts +0 -4
  1177. package/lib/typescript/select/createSelectRoot.d.ts.map +0 -1
  1178. package/lib/typescript/select/createSelectTrigger.d.ts +0 -7
  1179. package/lib/typescript/select/createSelectTrigger.d.ts.map +0 -1
  1180. package/lib/typescript/select/createSelectValue.d.ts +0 -4
  1181. package/lib/typescript/select/createSelectValue.d.ts.map +0 -1
  1182. package/lib/typescript/switch/createSwitchRoot.d.ts +0 -3
  1183. package/lib/typescript/switch/createSwitchRoot.d.ts.map +0 -1
  1184. package/lib/typescript/tile/createTileContent.d.ts +0 -3
  1185. package/lib/typescript/tile/createTileContent.d.ts.map +0 -1
  1186. package/lib/typescript/tile/createTileDescription.d.ts +0 -3
  1187. package/lib/typescript/tile/createTileDescription.d.ts.map +0 -1
  1188. package/lib/typescript/tile/createTileGroup.d.ts +0 -4
  1189. package/lib/typescript/tile/createTileGroup.d.ts.map +0 -1
  1190. package/lib/typescript/tile/createTileIndicator.d.ts +0 -4
  1191. package/lib/typescript/tile/createTileIndicator.d.ts.map +0 -1
  1192. package/lib/typescript/tile/createTileLeadingSlot.d.ts +0 -4
  1193. package/lib/typescript/tile/createTileLeadingSlot.d.ts.map +0 -1
  1194. package/lib/typescript/tile/createTileRoot.d.ts +0 -4
  1195. package/lib/typescript/tile/createTileRoot.d.ts.map +0 -1
  1196. package/lib/typescript/tile/createTileTitle.d.ts +0 -3
  1197. package/lib/typescript/tile/createTileTitle.d.ts.map +0 -1
  1198. package/lib/typescript/tile/createTileTrailingSlot.d.ts +0 -9
  1199. package/lib/typescript/tile/createTileTrailingSlot.d.ts.map +0 -1
  1200. package/src/avatar/createAvatarBadge.tsx +0 -12
  1201. package/src/avatar/createAvatarIcon.tsx +0 -16
  1202. package/src/avatar/createAvatarImage.tsx +0 -40
  1203. package/src/avatar/createAvatarRoot.tsx +0 -23
  1204. package/src/avatar/createAvatarText.tsx +0 -30
  1205. package/src/button/createButtonGroup.tsx +0 -88
  1206. package/src/button/createButtonIcon.tsx +0 -8
  1207. package/src/button/createButtonRoot.tsx +0 -102
  1208. package/src/button/createButtonSpinner.tsx +0 -20
  1209. package/src/button/createButtonText.tsx +0 -22
  1210. package/src/button/index.tsx +0 -53
  1211. package/src/checkbox/createCheckboxGroup.tsx +0 -32
  1212. package/src/checkbox/createCheckboxIcon.tsx +0 -18
  1213. package/src/checkbox/createCheckboxIndicator.tsx +0 -43
  1214. package/src/checkbox/createCheckboxLabel.tsx +0 -42
  1215. package/src/checkbox/createCheckboxRoot.tsx +0 -100
  1216. package/src/checkbox/createCheckboxRoot.web.tsx +0 -79
  1217. package/src/dialog/createDialogBody.tsx +0 -11
  1218. package/src/dialog/createDialogClose.tsx +0 -27
  1219. package/src/dialog/createDialogContent.tsx +0 -122
  1220. package/src/dialog/createDialogDescription.tsx +0 -20
  1221. package/src/dialog/createDialogFooter.tsx +0 -11
  1222. package/src/dialog/createDialogHeader.tsx +0 -11
  1223. package/src/dialog/createDialogRoot.tsx +0 -66
  1224. package/src/dialog/createDialogTitle.tsx +0 -11
  1225. package/src/dialog/createDialogTrigger.tsx +0 -27
  1226. package/src/field/createFieldError.tsx +0 -32
  1227. package/src/field/createFieldErrorIcon.tsx +0 -9
  1228. package/src/field/createFieldErrorText.tsx +0 -9
  1229. package/src/field/createFieldHelper.tsx +0 -28
  1230. package/src/field/createFieldHelperText.tsx +0 -9
  1231. package/src/field/createFieldLabel.tsx +0 -30
  1232. package/src/field/createFieldRoot.tsx +0 -27
  1233. package/src/form/createFormRoot.tsx +0 -13
  1234. package/src/input/createInputField.tsx +0 -114
  1235. package/src/input/createInputRoot.tsx +0 -92
  1236. package/src/input/createInputSlot.tsx +0 -39
  1237. package/src/link/createLink.tsx +0 -71
  1238. package/src/list-item/createListItemContent.tsx +0 -23
  1239. package/src/list-item/createListItemDescription.tsx +0 -19
  1240. package/src/list-item/createListItemLeadingSlot.tsx +0 -30
  1241. package/src/list-item/createListItemMeta.tsx +0 -17
  1242. package/src/list-item/createListItemRoot.tsx +0 -178
  1243. package/src/list-item/createListItemSectionHeader.tsx +0 -53
  1244. package/src/list-item/createListItemTitle.tsx +0 -17
  1245. package/src/list-item/createListItemTrailingSlot.tsx +0 -21
  1246. package/src/otp-input/createOtpInputCell.tsx +0 -22
  1247. package/src/otp-input/createOtpInputField.tsx +0 -98
  1248. package/src/otp-input/createOtpInputRoot.tsx +0 -179
  1249. package/src/otp-input/index.tsx +0 -34
  1250. package/src/progress/createProgressIndicator.tsx +0 -35
  1251. package/src/progress/createProgressRoot.tsx +0 -109
  1252. package/src/progress/index.ts +0 -28
  1253. package/src/progress/types.ts +0 -37
  1254. package/src/radio/createRadioGroup.tsx +0 -67
  1255. package/src/radio/createRadioIndicator.tsx +0 -32
  1256. package/src/radio/createRadioLabel.tsx +0 -28
  1257. package/src/radio/createRadioRoot.tsx +0 -100
  1258. package/src/radio/createRadioRoot.web.tsx +0 -81
  1259. package/src/select/createSelectContent.tsx +0 -115
  1260. package/src/select/createSelectIcon.tsx +0 -27
  1261. package/src/select/createSelectItem.tsx +0 -121
  1262. package/src/select/createSelectItemLabel.tsx +0 -30
  1263. package/src/select/createSelectRoot.tsx +0 -134
  1264. package/src/select/createSelectTrigger.tsx +0 -218
  1265. package/src/select/createSelectValue.tsx +0 -38
  1266. package/src/select/index.tsx +0 -73
  1267. package/src/switch/createSwitchRoot.tsx +0 -72
  1268. package/src/tile/createTileContent.tsx +0 -23
  1269. package/src/tile/createTileDescription.tsx +0 -19
  1270. package/src/tile/createTileGroup.tsx +0 -134
  1271. package/src/tile/createTileIndicator.tsx +0 -38
  1272. package/src/tile/createTileLeadingSlot.tsx +0 -30
  1273. package/src/tile/createTileRoot.tsx +0 -124
  1274. package/src/tile/createTileTitle.tsx +0 -19
  1275. package/src/tile/createTileTrailingSlot.tsx +0 -25
  1276. /package/lib/commonjs/{progress → chip}/types.js +0 -0
  1277. /package/lib/commonjs/{progress → progress-bar}/context.js +0 -0
  1278. /package/lib/module/{progress → chip}/types.js +0 -0
  1279. /package/lib/module/{progress → progress-bar}/context.js +0 -0
  1280. /package/lib/typescript/{progress → progress-bar}/context.d.ts +0 -0
  1281. /package/src/{progress → progress-bar}/context.tsx +0 -0
@@ -0,0 +1,156 @@
1
+ import { useCallback, useEffect, useLayoutEffect, useMemo, useRef } from 'react';
2
+ import type { TextInput, TextInputProps } from 'react-native';
3
+ import { useFormControlContext } from '@cdx-ui/utils';
4
+ import { applyOtpInputChange } from './utils/applyValueChange';
5
+ import { filterAllowedCharacters, filterByRegExp, filterDigits } from './utils/filterValue';
6
+ import type { IOtpInputRootProps, OtpInputContextValue } from './types';
7
+
8
+ export type UseOtpInputProps = Omit<IOtpInputRootProps, keyof import('react-native').ViewProps> & {
9
+ accessibilityLabel?: string;
10
+ };
11
+
12
+ export interface UseOtpInputReturn extends OtpInputContextValue {}
13
+
14
+ /**
15
+ * Headless behavioral primitive for OTP input.
16
+ *
17
+ * Owns the controlled value, focus management, masked-input handling, and the
18
+ * `onComplete` lifecycle. Exposes the context value the styled layer must provide
19
+ * to `OtpInputField` primitives via `OtpInputProvider`.
20
+ *
21
+ * Standards mapping:
22
+ * - Standard 3 #1 — controlled state + focus management state machine.
23
+ * - Standard 3 #4 — compound contract ownership (context value for Fields).
24
+ */
25
+ export function useOtpInput(props: UseOtpInputProps): UseOtpInputReturn {
26
+ const {
27
+ cellCount,
28
+ value,
29
+ onChangeText,
30
+ onComplete,
31
+ isDisabled: isDisabledProp,
32
+ isInvalid: isInvalidProp,
33
+ isReadOnly: isReadOnlyProp,
34
+ smsOtpAutofill = true,
35
+ filterInput,
36
+ allowedCharacters,
37
+ characterPattern,
38
+ getCellProps,
39
+ cellTestIdPrefix,
40
+ accessibilityLabel: rootAccessibilityLabel,
41
+ } = props;
42
+
43
+ const form = useFormControlContext();
44
+ const isDisabled = isDisabledProp ?? form.isDisabled ?? false;
45
+ const isInvalid = isInvalidProp ?? form.isInvalid ?? false;
46
+ const isReadOnly = isReadOnlyProp ?? form.isReadOnly ?? false;
47
+
48
+ const fieldRefs = useRef<(TextInput | null)[]>([]);
49
+ const focusAfterApply = useRef<number | null>(null);
50
+ const prevLenRef = useRef(value.length);
51
+ const prevValueRef = useRef(value);
52
+
53
+ const filter = useMemo(() => {
54
+ if (filterInput) {
55
+ return filterInput;
56
+ }
57
+ if (allowedCharacters !== undefined) {
58
+ return filterAllowedCharacters(allowedCharacters);
59
+ }
60
+ if (characterPattern !== undefined) {
61
+ return filterByRegExp(characterPattern);
62
+ }
63
+ return filterDigits;
64
+ }, [filterInput, allowedCharacters, characterPattern]);
65
+
66
+ const setFieldRef = useCallback((index: number, el: TextInput | null) => {
67
+ fieldRefs.current[index] = el;
68
+ }, []);
69
+
70
+ const focusCell = useCallback(
71
+ (index: number) => {
72
+ const safe = Math.max(0, Math.min(index, cellCount - 1));
73
+ fieldRefs.current[safe]?.focus();
74
+ },
75
+ [cellCount],
76
+ );
77
+
78
+ const handleFieldChange = useCallback(
79
+ (index: number, text: string) => {
80
+ const { nextValue, focusIndex } = applyOtpInputChange(value, index, text, cellCount, filter);
81
+ if (nextValue !== value) {
82
+ onChangeText(nextValue);
83
+ }
84
+ focusAfterApply.current = focusIndex;
85
+ },
86
+ [cellCount, filter, onChangeText, value],
87
+ );
88
+
89
+ const handleFieldKeyPress = useCallback(
90
+ (index: number, key: string) => {
91
+ if (key !== 'Backspace') {
92
+ return;
93
+ }
94
+ const char = index < value.length ? value[index] : '';
95
+ if (!char && index > 0) {
96
+ focusCell(index - 1);
97
+ }
98
+ },
99
+ [focusCell, value],
100
+ );
101
+
102
+ useLayoutEffect(() => {
103
+ if (focusAfterApply.current !== null) {
104
+ const i = focusAfterApply.current;
105
+ focusAfterApply.current = null;
106
+ fieldRefs.current[i]?.focus();
107
+ }
108
+ });
109
+
110
+ useEffect(() => {
111
+ const prevLen = prevLenRef.current;
112
+ const prevVal = prevValueRef.current;
113
+ const isFull = value.length === cellCount;
114
+ const becameFullByLength = isFull && prevLen < cellCount;
115
+ const correctedWhileFull = isFull && prevLen === cellCount && prevVal !== value;
116
+
117
+ if (becameFullByLength || correctedWhileFull) {
118
+ onComplete?.();
119
+ }
120
+ prevLenRef.current = value.length;
121
+ prevValueRef.current = value;
122
+ }, [cellCount, onComplete, value]);
123
+
124
+ return useMemo<OtpInputContextValue>(
125
+ () => ({
126
+ cellCount,
127
+ value,
128
+ isDisabled,
129
+ isInvalid,
130
+ isReadOnly,
131
+ smsOtpAutofill,
132
+ filter,
133
+ getCellProps: getCellProps as ((index: number) => Partial<TextInputProps>) | undefined,
134
+ cellTestIdPrefix,
135
+ rootAccessibilityLabel,
136
+ setFieldRef,
137
+ handleFieldChange,
138
+ handleFieldKeyPress,
139
+ }),
140
+ [
141
+ cellCount,
142
+ value,
143
+ isDisabled,
144
+ isInvalid,
145
+ isReadOnly,
146
+ smsOtpAutofill,
147
+ filter,
148
+ getCellProps,
149
+ cellTestIdPrefix,
150
+ rootAccessibilityLabel,
151
+ setFieldRef,
152
+ handleFieldChange,
153
+ handleFieldKeyPress,
154
+ ],
155
+ );
156
+ }
@@ -16,32 +16,79 @@ function measureWeb(element: any): AnchorLayout {
16
16
  return { x: rect.left, y: rect.top, width: rect.width, height: rect.height };
17
17
  }
18
18
 
19
+ function setLayoutIfChanged(
20
+ setLayout: React.Dispatch<React.SetStateAction<AnchorLayout | null>>,
21
+ next: AnchorLayout,
22
+ ) {
23
+ setLayout((prev) => {
24
+ if (
25
+ prev?.x === next.x &&
26
+ prev.y === next.y &&
27
+ prev.width === next.width &&
28
+ prev.height === next.height
29
+ ) {
30
+ return prev;
31
+ }
32
+ return next;
33
+ });
34
+ }
35
+
36
+ export interface UseAnchorPositionOptions {
37
+ /** Re-run layout measurement when this value changes (e.g. slider value percent). */
38
+ remeasureKey?: unknown;
39
+ /** Poll anchor position each animation frame while open (for anchors that move). */
40
+ trackWhileOpen?: boolean;
41
+ }
42
+
19
43
  /**
20
44
  * Measures an anchor element's position and size, re-measuring on scroll/resize
21
45
  * (web) so a positioned overlay can track its anchor across layout changes.
22
46
  *
23
47
  * Returns `null` until the first measurement completes.
24
48
  */
25
- export function useAnchorPosition(anchorRef: RefObject<any>, open: boolean): AnchorLayout | null {
49
+ export function useAnchorPosition(
50
+ anchorRef: RefObject<any>,
51
+ open: boolean,
52
+ options?: UseAnchorPositionOptions,
53
+ ): AnchorLayout | null {
54
+ const { remeasureKey, trackWhileOpen = false } = options ?? {};
26
55
  const [layout, setLayout] = useState<AnchorLayout | null>(null);
27
56
 
57
+ const measureAnchor = () => {
58
+ const anchor = anchorRef.current;
59
+ if (!anchor) {
60
+ return;
61
+ }
62
+
63
+ if (Platform.OS === 'web') {
64
+ setLayoutIfChanged(setLayout, measureWeb(anchor));
65
+ return;
66
+ }
67
+
68
+ anchor.measureInWindow((x: number, y: number, width: number, height: number) => {
69
+ setLayoutIfChanged(setLayout, { x, y, width, height });
70
+ });
71
+ };
72
+
28
73
  useIsomorphicLayoutEffect(() => {
29
74
  if (!open) {
30
75
  setLayout(null);
31
76
  return;
32
77
  }
33
78
 
34
- const anchor = anchorRef.current;
35
- if (!anchor) return;
36
-
37
79
  let cancelled = false;
38
80
 
39
81
  if (Platform.OS === 'web') {
40
- setLayout(measureWeb(anchor));
82
+ measureAnchor();
41
83
  } else {
84
+ const anchor = anchorRef.current;
85
+ if (!anchor) {
86
+ return;
87
+ }
88
+
42
89
  anchor.measureInWindow((x: number, y: number, width: number, height: number) => {
43
90
  if (!cancelled) {
44
- setLayout({ x, y, width, height });
91
+ setLayoutIfChanged(setLayout, { x, y, width, height });
45
92
  }
46
93
  });
47
94
  }
@@ -49,15 +96,36 @@ export function useAnchorPosition(anchorRef: RefObject<any>, open: boolean): Anc
49
96
  return () => {
50
97
  cancelled = true;
51
98
  };
52
- }, [open, anchorRef]);
99
+ }, [open, anchorRef, remeasureKey]);
53
100
 
54
101
  useEffect(() => {
55
- if (!open || Platform.OS !== 'web') return;
102
+ if (!open || !trackWhileOpen) {
103
+ return;
104
+ }
105
+
106
+ let frameId = 0;
107
+ const tick = () => {
108
+ measureAnchor();
109
+ frameId = requestAnimationFrame(tick);
110
+ };
111
+ frameId = requestAnimationFrame(tick);
112
+
113
+ return () => {
114
+ cancelAnimationFrame(frameId);
115
+ };
116
+ }, [open, anchorRef, remeasureKey, trackWhileOpen]);
117
+
118
+ useEffect(() => {
119
+ if (!open || Platform.OS !== 'web' || trackWhileOpen) {
120
+ return;
121
+ }
56
122
 
57
123
  const anchor = anchorRef.current;
58
- if (!anchor) return;
124
+ if (!anchor) {
125
+ return;
126
+ }
59
127
 
60
- const update = () => setLayout(measureWeb(anchor));
128
+ const update = () => setLayoutIfChanged(setLayout, measureWeb(anchor));
61
129
 
62
130
  window.addEventListener('scroll', update, true);
63
131
  window.addEventListener('resize', update);
@@ -66,7 +134,7 @@ export function useAnchorPosition(anchorRef: RefObject<any>, open: boolean): Anc
66
134
  window.removeEventListener('scroll', update, true);
67
135
  window.removeEventListener('resize', update);
68
136
  };
69
- }, [open, anchorRef]);
137
+ }, [open, anchorRef, remeasureKey, trackWhileOpen]);
70
138
 
71
139
  return layout;
72
140
  }
@@ -1,5 +1,3 @@
1
- /* eslint-disable @typescript-eslint/no-unused-vars */
2
-
3
1
  import type { RefObject } from 'react';
4
2
 
5
3
  /**
@@ -1,5 +1,3 @@
1
- /* eslint-disable @typescript-eslint/no-unused-vars */
2
-
3
1
  /**
4
2
  * No-op on native — Escape key dismissal is not applicable.
5
3
  * Native uses the system back gesture / hardware button via Modal.
@@ -0,0 +1 @@
1
+ export * from './portal';
@@ -0,0 +1,116 @@
1
+ import * as React from 'react';
2
+ import { useEffect, useSyncExternalStore } from 'react';
3
+ import { Platform, type View, type ViewStyle } from 'react-native';
4
+
5
+ const DEFAULT_PORTAL_HOST = 'FORGE_UI_DEFAULT_HOST_NAME';
6
+
7
+ type PortalMap = Map<string, React.ReactNode>;
8
+ type PortalHostMap = Map<string, PortalMap>;
9
+
10
+ interface PortalStore {
11
+ map: PortalHostMap;
12
+ listeners: Set<() => void>;
13
+ }
14
+
15
+ const store: PortalStore = {
16
+ map: new Map<string, PortalMap>().set(DEFAULT_PORTAL_HOST, new Map<string, React.ReactNode>()),
17
+ listeners: new Set(),
18
+ };
19
+
20
+ // --------------------------------------------------
21
+
22
+ function emit() {
23
+ for (const cb of store.listeners) cb();
24
+ }
25
+
26
+ function getSnapshot() {
27
+ return store.map;
28
+ }
29
+
30
+ function subscribe(cb: () => void) {
31
+ store.listeners.add(cb);
32
+ return () => {
33
+ store.listeners.delete(cb);
34
+ };
35
+ }
36
+
37
+ function updatePortal(hostName: string, name: string, children: React.ReactNode) {
38
+ const next = new Map(store.map);
39
+ const portal = next.get(hostName) ?? new Map<string, React.ReactNode>();
40
+ portal.set(name, children);
41
+ next.set(hostName, portal);
42
+ store.map = next;
43
+ emit();
44
+ }
45
+
46
+ function removePortal(hostName: string, name: string) {
47
+ const next = new Map(store.map);
48
+ const portal = next.get(hostName) ?? new Map<string, React.ReactNode>();
49
+ portal.delete(name);
50
+ next.set(hostName, portal);
51
+ store.map = next;
52
+ emit();
53
+ }
54
+
55
+ // --------------------------------------------------
56
+
57
+ export function PortalHost({ name = DEFAULT_PORTAL_HOST }: { name?: string }) {
58
+ const map = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
59
+ const portalMap = map.get(name) ?? new Map<string, React.ReactNode>();
60
+ if (portalMap.size === 0) return null;
61
+ return <>{Array.from(portalMap.values())}</>;
62
+ }
63
+
64
+ // --------------------------------------------------
65
+
66
+ export function Portal({
67
+ name,
68
+ hostName = DEFAULT_PORTAL_HOST,
69
+ children,
70
+ }: {
71
+ name: string;
72
+ hostName?: string;
73
+ children: React.ReactNode;
74
+ }) {
75
+ useEffect(() => {
76
+ updatePortal(hostName, name, children);
77
+ return () => {
78
+ removePortal(hostName, name);
79
+ };
80
+ }, [hostName, name, children]);
81
+
82
+ return null;
83
+ }
84
+
85
+ // --------------------------------------------------
86
+
87
+ const ROOT: ViewStyle = {
88
+ flex: 1,
89
+ };
90
+
91
+ /**
92
+ * @deprecated use `FullWindowOverlay` from `react-native-screens` instead
93
+ * @example
94
+ import { FullWindowOverlay } from "react-native-screens"
95
+ const WindowOverlay = Platform.OS === "ios" ? FullWindowOverlay : Fragment
96
+ // Wrap the `<PortalHost/>` with `<WindowOverlay/>`
97
+ <WindowOverlay><PortalHost/></WindowOverlay>
98
+ */
99
+ export function useModalPortalRoot() {
100
+ const ref = React.useRef<View>(null);
101
+ const [offset, setSideOffSet] = React.useState(0);
102
+
103
+ const onLayout = React.useCallback(() => {
104
+ if (Platform.OS === 'web') return;
105
+ ref.current?.measure((_x, _y, _width, _height, _pageX, pageY) => {
106
+ setSideOffSet(-pageY);
107
+ });
108
+ }, []);
109
+
110
+ return {
111
+ ref,
112
+ offset,
113
+ onLayout,
114
+ style: ROOT,
115
+ };
116
+ }
@@ -0,0 +1,34 @@
1
+ import { forwardRef, useMemo } from 'react';
2
+ import { View, type ViewProps, type ViewStyle } from 'react-native';
3
+ import { Slot } from '../slot';
4
+ import { dataAttributes } from '../utils/dataAttributes';
5
+ import { useProgressContext } from './context';
6
+
7
+ type PercentString = `${number}%`;
8
+
9
+ export interface ProgressBarIndicatorProps extends ViewProps {
10
+ readonly asChild?: boolean;
11
+ }
12
+
13
+ export const ProgressBarIndicator = forwardRef<View, ProgressBarIndicatorProps>(
14
+ ({ asChild, style, ...rest }, ref) => {
15
+ const { percent, state, max, value } = useProgressContext();
16
+
17
+ const filledStyle = useMemo((): ViewStyle => {
18
+ const pct = `${String(percent)}%` as PercentString;
19
+ return { width: pct, height: '100%' };
20
+ }, [percent]);
21
+
22
+ const dataAttrs = dataAttributes({
23
+ state,
24
+ value: value === null ? undefined : String(value),
25
+ max: String(max),
26
+ });
27
+
28
+ const Comp = asChild ? Slot : View;
29
+
30
+ return <Comp ref={ref} {...rest} {...dataAttrs} style={[filledStyle, style]} />;
31
+ },
32
+ );
33
+
34
+ ProgressBarIndicator.displayName = 'ProgressBarIndicator';
@@ -0,0 +1,117 @@
1
+ import { forwardRef, useMemo } from 'react';
2
+ import { View, type ViewProps } from 'react-native';
3
+ import { Slot } from '../slot';
4
+ import { dataAttributes } from '../utils/dataAttributes';
5
+ import { ProgressProvider } from './context';
6
+ import type { InterfaceProgressProps, ProgressDataState } from './types';
7
+
8
+ function clamp(n: number, min: number, max: number): number {
9
+ return Math.min(max, Math.max(min, n));
10
+ }
11
+
12
+ function resolveState(
13
+ value: number | null,
14
+ max: number,
15
+ clamped: number | null,
16
+ ): ProgressDataState {
17
+ if (value === null) {
18
+ return 'indeterminate';
19
+ }
20
+ if (max <= 0) {
21
+ return 'complete';
22
+ }
23
+ if (clamped !== null && clamped >= max) {
24
+ return 'complete';
25
+ }
26
+ return 'loading';
27
+ }
28
+
29
+ function defaultGetValueLabel(value: number, max: number): string {
30
+ if (max <= 0) {
31
+ return '0%';
32
+ }
33
+ return `${String(Math.round((value / max) * 100))}%`;
34
+ }
35
+
36
+ export const ProgressBarRoot = forwardRef<View, InterfaceProgressProps & { asChild?: boolean }>(
37
+ (props, ref) => {
38
+ const {
39
+ asChild,
40
+ value: valueProp = 0,
41
+ max: maxProp = 100,
42
+ getValueLabel = defaultGetValueLabel,
43
+ children,
44
+ accessibilityRole = 'progressbar',
45
+ accessibilityValue: accessibilityValueProp,
46
+ role = 'progressbar',
47
+ ...restProps
48
+ } = props;
49
+
50
+ const max = maxProp > 0 ? maxProp : 0;
51
+ const isIndeterminate = valueProp === null;
52
+ const clampedValue =
53
+ valueProp === null ? null : clamp(Number.isFinite(valueProp) ? valueProp : 0, 0, max);
54
+
55
+ const percent = useMemo(() => {
56
+ if (clampedValue === null || max <= 0) {
57
+ return 0;
58
+ }
59
+ return (clampedValue / max) * 100;
60
+ }, [clampedValue, max]);
61
+
62
+ const state = useMemo(
63
+ () => resolveState(valueProp, max, clampedValue),
64
+ [valueProp, max, clampedValue],
65
+ );
66
+
67
+ const contextValue = useMemo(
68
+ () => ({
69
+ value: clampedValue,
70
+ max,
71
+ percent,
72
+ state,
73
+ }),
74
+ [clampedValue, max, percent, state],
75
+ );
76
+
77
+ const dataAttrs = dataAttributes({
78
+ state,
79
+ value: clampedValue === null ? undefined : String(clampedValue),
80
+ max: String(max),
81
+ });
82
+
83
+ const accessibilityValue = useMemo(() => {
84
+ if (accessibilityValueProp !== undefined) {
85
+ return accessibilityValueProp;
86
+ }
87
+ if (isIndeterminate || clampedValue === null) {
88
+ return { min: 0, max, text: 'Indeterminate' };
89
+ }
90
+ return {
91
+ min: 0,
92
+ max,
93
+ now: clampedValue,
94
+ text: getValueLabel(clampedValue, max),
95
+ };
96
+ }, [accessibilityValueProp, isIndeterminate, clampedValue, max, getValueLabel]);
97
+
98
+ const Comp = asChild ? Slot : View;
99
+
100
+ return (
101
+ <ProgressProvider value={contextValue}>
102
+ <Comp
103
+ ref={ref}
104
+ {...(restProps as ViewProps)}
105
+ role={role}
106
+ accessibilityRole={accessibilityRole}
107
+ accessibilityValue={accessibilityValue}
108
+ {...dataAttrs}
109
+ >
110
+ {children}
111
+ </Comp>
112
+ </ProgressProvider>
113
+ );
114
+ },
115
+ );
116
+
117
+ ProgressBarRoot.displayName = 'ProgressBarRoot';
@@ -0,0 +1,5 @@
1
+ export type { IProgressProps, ProgressDataState } from './types';
2
+ export type { ProgressContextValue } from './context';
3
+ export { useProgressContext } from './context';
4
+ export { ProgressBarRoot } from './ProgressBarRoot';
5
+ export { ProgressBarIndicator, type ProgressBarIndicatorProps } from './ProgressBarIndicator';
@@ -0,0 +1,24 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { ViewProps } from 'react-native';
3
+
4
+ export type ProgressDataState = 'complete' | 'indeterminate' | 'loading';
5
+
6
+ export interface InterfaceProgressProps extends Omit<ViewProps, 'children'> {
7
+ /**
8
+ * Current value in the range [0, max], or `null` for indeterminate progress.
9
+ * Omit or use a number for determinate progress; default is `0`.
10
+ */
11
+ readonly value?: number | null;
12
+ /**
13
+ * Maximum value (minimum is always 0).
14
+ * @default 100
15
+ */
16
+ readonly max?: number;
17
+ /**
18
+ * Optional label for `accessibilityValue.text` when determinate.
19
+ */
20
+ readonly getValueLabel?: (value: number, max: number) => string;
21
+ readonly children?: ReactNode;
22
+ }
23
+
24
+ export type IProgressProps = InterfaceProgressProps;
@@ -0,0 +1,85 @@
1
+ import { forwardRef } from 'react';
2
+ import { View, type ViewProps } from 'react-native';
3
+ import { useFormControlContext } from '@cdx-ui/utils';
4
+ import { useRadioGroup } from '@react-native-aria/radio';
5
+ import { useRadioGroupState } from '@react-stately/radio';
6
+ import { Slot } from '../slot';
7
+ import { dataAttributes, mergeDataAttributes } from '../utils/dataAttributes';
8
+ import { RadioGroupContext } from './context';
9
+ import type { IRadioGroupProps } from './types';
10
+
11
+ export interface RadioGroupRootProps extends IRadioGroupProps {
12
+ asChild?: boolean;
13
+ className?: string;
14
+ style?: ViewProps['style'];
15
+ }
16
+
17
+ export const RadioGroup = forwardRef<View, RadioGroupRootProps>(
18
+ ({ asChild, children, className, style, ...props }, ref) => {
19
+ const formControlContext = useFormControlContext();
20
+
21
+ const combinedProps = {
22
+ ...formControlContext,
23
+ ...props,
24
+ };
25
+
26
+ const radioGroupState = useRadioGroupState({
27
+ ...combinedProps,
28
+ validationState: combinedProps.isInvalid ? 'invalid' : 'valid',
29
+ });
30
+
31
+ const { radioGroupProps } = useRadioGroup(
32
+ {
33
+ ...combinedProps,
34
+ 'aria-label': combinedProps['aria-label'],
35
+ },
36
+ radioGroupState,
37
+ );
38
+
39
+ const isDisabled = combinedProps.isDisabled ?? false;
40
+ const isInvalid = combinedProps.isInvalid ?? false;
41
+ const isRequired = combinedProps.isRequired ?? false;
42
+ const isReadOnly = combinedProps.isReadOnly ?? false;
43
+
44
+ const Comp = asChild ? Slot : View;
45
+
46
+ return (
47
+ <RadioGroupContext.Provider
48
+ value={{
49
+ state: {
50
+ isDisabled,
51
+ isInvalid,
52
+ isRequired,
53
+ isReadOnly,
54
+ isSelected: (value: string) => radioGroupState.selectedValue === value,
55
+ selectValue: (value: string) => radioGroupState.setSelectedValue(value),
56
+ },
57
+ radioGroupState,
58
+ name: combinedProps.name,
59
+ }}
60
+ >
61
+ <Comp
62
+ {...radioGroupProps}
63
+ aria-label={combinedProps['aria-label']}
64
+ aria-labelledby={combinedProps['aria-labelledby']}
65
+ aria-required={isRequired || undefined}
66
+ aria-readonly={isReadOnly || undefined}
67
+ className={className}
68
+ style={style}
69
+ ref={ref}
70
+ {...mergeDataAttributes(
71
+ props,
72
+ dataAttributes({
73
+ disabled: isDisabled,
74
+ invalid: isInvalid,
75
+ }),
76
+ )}
77
+ >
78
+ {children}
79
+ </Comp>
80
+ </RadioGroupContext.Provider>
81
+ );
82
+ },
83
+ );
84
+
85
+ RadioGroup.displayName = 'RadioGroup';