@primereact/mcp 11.0.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (546) hide show
  1. package/LICENSE.md +45 -0
  2. package/README.md +94 -0
  3. package/data/llms/headless/add-ons/introduction.md +16 -0
  4. package/data/llms/headless/components/accordion/api.json +252 -0
  5. package/data/llms/headless/components/accordion.md +196 -0
  6. package/data/llms/headless/components/animateonscroll/api.json +88 -0
  7. package/data/llms/headless/components/animateonscroll.md +141 -0
  8. package/data/llms/headless/components/autocomplete/api.json +787 -0
  9. package/data/llms/headless/components/autocomplete.md +249 -0
  10. package/data/llms/headless/components/avatar/api.json +154 -0
  11. package/data/llms/headless/components/avatar.md +149 -0
  12. package/data/llms/headless/components/badge/api.json +68 -0
  13. package/data/llms/headless/components/badge.md +150 -0
  14. package/data/llms/headless/components/breadcrumb/api.json +142 -0
  15. package/data/llms/headless/components/breadcrumb.md +149 -0
  16. package/data/llms/headless/components/button/api.json +62 -0
  17. package/data/llms/headless/components/button.md +73 -0
  18. package/data/llms/headless/components/card/api.json +36 -0
  19. package/data/llms/headless/components/card.md +96 -0
  20. package/data/llms/headless/components/carousel/api.json +793 -0
  21. package/data/llms/headless/components/carousel.md +196 -0
  22. package/data/llms/headless/components/checkbox/api.json +593 -0
  23. package/data/llms/headless/components/checkbox.md +184 -0
  24. package/data/llms/headless/components/chip/api.json +107 -0
  25. package/data/llms/headless/components/chip.md +141 -0
  26. package/data/llms/headless/components/collapsible/api.json +301 -0
  27. package/data/llms/headless/components/collapsible.md +136 -0
  28. package/data/llms/headless/components/compare/api.json +533 -0
  29. package/data/llms/headless/components/compare.md +142 -0
  30. package/data/llms/headless/components/contextmenu/api.json +495 -0
  31. package/data/llms/headless/components/contextmenu.md +282 -0
  32. package/data/llms/headless/components/datatable/api.json +1680 -0
  33. package/data/llms/headless/components/datatable.md +258 -0
  34. package/data/llms/headless/components/dataview/api.json +199 -0
  35. package/data/llms/headless/components/dataview.md +147 -0
  36. package/data/llms/headless/components/datepicker/api.json +2796 -0
  37. package/data/llms/headless/components/datepicker.md +456 -0
  38. package/data/llms/headless/components/dialog/api.json +626 -0
  39. package/data/llms/headless/components/dialog.md +280 -0
  40. package/data/llms/headless/components/divider/api.json +130 -0
  41. package/data/llms/headless/components/divider.md +92 -0
  42. package/data/llms/headless/components/drawer/api.json +425 -0
  43. package/data/llms/headless/components/drawer.md +220 -0
  44. package/data/llms/headless/components/fieldset/api.json +195 -0
  45. package/data/llms/headless/components/fieldset.md +154 -0
  46. package/data/llms/headless/components/fileupload/api.json +905 -0
  47. package/data/llms/headless/components/fileupload.md +323 -0
  48. package/data/llms/headless/components/floatlabel/api.json +36 -0
  49. package/data/llms/headless/components/floatlabel.md +19 -0
  50. package/data/llms/headless/components/fluid/api.json +36 -0
  51. package/data/llms/headless/components/fluid.md +19 -0
  52. package/data/llms/headless/components/focustrap/api.json +135 -0
  53. package/data/llms/headless/components/focustrap.md +125 -0
  54. package/data/llms/headless/components/gallery/api.json +1349 -0
  55. package/data/llms/headless/components/gallery.md +355 -0
  56. package/data/llms/headless/components/iconfield/api.json +62 -0
  57. package/data/llms/headless/components/iconfield.md +19 -0
  58. package/data/llms/headless/components/iftalabel/api.json +62 -0
  59. package/data/llms/headless/components/iftalabel.md +19 -0
  60. package/data/llms/headless/components/inplace/api.json +340 -0
  61. package/data/llms/headless/components/inplace.md +153 -0
  62. package/data/llms/headless/components/inputcolor/api.json +469 -0
  63. package/data/llms/headless/components/inputcolor.md +253 -0
  64. package/data/llms/headless/components/inputgroup/api.json +62 -0
  65. package/data/llms/headless/components/inputgroup.md +19 -0
  66. package/data/llms/headless/components/inputnumber/api.json +554 -0
  67. package/data/llms/headless/components/inputnumber.md +167 -0
  68. package/data/llms/headless/components/inputotp/api.json +276 -0
  69. package/data/llms/headless/components/inputotp.md +130 -0
  70. package/data/llms/headless/components/inputpassword/api.json +180 -0
  71. package/data/llms/headless/components/inputpassword.md +117 -0
  72. package/data/llms/headless/components/inputtags/api.json +497 -0
  73. package/data/llms/headless/components/inputtags.md +298 -0
  74. package/data/llms/headless/components/inputtext/api.json +81 -0
  75. package/data/llms/headless/components/inputtext.md +109 -0
  76. package/data/llms/headless/components/knob/api.json +429 -0
  77. package/data/llms/headless/components/knob.md +151 -0
  78. package/data/llms/headless/components/label/api.json +62 -0
  79. package/data/llms/headless/components/label.md +19 -0
  80. package/data/llms/headless/components/listbox/api.json +814 -0
  81. package/data/llms/headless/components/listbox.md +194 -0
  82. package/data/llms/headless/components/menu/api.json +1247 -0
  83. package/data/llms/headless/components/menu.md +283 -0
  84. package/data/llms/headless/components/message/api.json +131 -0
  85. package/data/llms/headless/components/message.md +143 -0
  86. package/data/llms/headless/components/metergroup/api.json +266 -0
  87. package/data/llms/headless/components/metergroup.md +129 -0
  88. package/data/llms/headless/components/motion/api.json +237 -0
  89. package/data/llms/headless/components/motion.md +160 -0
  90. package/data/llms/headless/components/navigationmenu/api.json +220 -0
  91. package/data/llms/headless/components/navigationmenu.md +166 -0
  92. package/data/llms/headless/components/orderlist/api.json +196 -0
  93. package/data/llms/headless/components/orderlist.md +221 -0
  94. package/data/llms/headless/components/organizationchart/api.json +372 -0
  95. package/data/llms/headless/components/organizationchart.md +254 -0
  96. package/data/llms/headless/components/paginator/api.json +311 -0
  97. package/data/llms/headless/components/paginator.md +187 -0
  98. package/data/llms/headless/components/panel/api.json +195 -0
  99. package/data/llms/headless/components/panel.md +150 -0
  100. package/data/llms/headless/components/picklist/api.json +293 -0
  101. package/data/llms/headless/components/picklist.md +270 -0
  102. package/data/llms/headless/components/popover/api.json +405 -0
  103. package/data/llms/headless/components/popover.md +301 -0
  104. package/data/llms/headless/components/portal/api.json +56 -0
  105. package/data/llms/headless/components/portal.md +102 -0
  106. package/data/llms/headless/components/positioner/api.json +165 -0
  107. package/data/llms/headless/components/positioner.md +181 -0
  108. package/data/llms/headless/components/progressbar/api.json +87 -0
  109. package/data/llms/headless/components/progressbar.md +122 -0
  110. package/data/llms/headless/components/progressspinner/api.json +337 -0
  111. package/data/llms/headless/components/progressspinner.md +128 -0
  112. package/data/llms/headless/components/radiobutton/api.json +569 -0
  113. package/data/llms/headless/components/radiobutton.md +195 -0
  114. package/data/llms/headless/components/rating/api.json +347 -0
  115. package/data/llms/headless/components/rating.md +181 -0
  116. package/data/llms/headless/components/scrollarea/api.json +730 -0
  117. package/data/llms/headless/components/scrollarea.md +232 -0
  118. package/data/llms/headless/components/select/api.json +829 -0
  119. package/data/llms/headless/components/select.md +262 -0
  120. package/data/llms/headless/components/sidebar/api.json +433 -0
  121. package/data/llms/headless/components/sidebar.md +266 -0
  122. package/data/llms/headless/components/skeleton/api.json +68 -0
  123. package/data/llms/headless/components/skeleton.md +95 -0
  124. package/data/llms/headless/components/slider/api.json +559 -0
  125. package/data/llms/headless/components/slider.md +158 -0
  126. package/data/llms/headless/components/speeddial/api.json +459 -0
  127. package/data/llms/headless/components/speeddial.md +181 -0
  128. package/data/llms/headless/components/splitter/api.json +582 -0
  129. package/data/llms/headless/components/splitter.md +159 -0
  130. package/data/llms/headless/components/stepper/api.json +385 -0
  131. package/data/llms/headless/components/stepper.md +183 -0
  132. package/data/llms/headless/components/styleclass/api.json +134 -0
  133. package/data/llms/headless/components/styleclass.md +129 -0
  134. package/data/llms/headless/components/tabs/api.json +336 -0
  135. package/data/llms/headless/components/tabs.md +158 -0
  136. package/data/llms/headless/components/tag/api.json +62 -0
  137. package/data/llms/headless/components/tag.md +121 -0
  138. package/data/llms/headless/components/terminal/api.json +117 -0
  139. package/data/llms/headless/components/terminal.md +183 -0
  140. package/data/llms/headless/components/textarea/api.json +81 -0
  141. package/data/llms/headless/components/textarea.md +110 -0
  142. package/data/llms/headless/components/timeline/api.json +270 -0
  143. package/data/llms/headless/components/timeline.md +117 -0
  144. package/data/llms/headless/components/toast/api.json +455 -0
  145. package/data/llms/headless/components/toast.md +277 -0
  146. package/data/llms/headless/components/togglebutton/api.json +357 -0
  147. package/data/llms/headless/components/togglebutton.md +183 -0
  148. package/data/llms/headless/components/toggleswitch/api.json +326 -0
  149. package/data/llms/headless/components/toggleswitch.md +164 -0
  150. package/data/llms/headless/components/toolbar/api.json +68 -0
  151. package/data/llms/headless/components/toolbar.md +96 -0
  152. package/data/llms/headless/components/tooltip/api.json +478 -0
  153. package/data/llms/headless/components/tooltip.md +233 -0
  154. package/data/llms/headless/components/tree/api.json +1297 -0
  155. package/data/llms/headless/components/tree.md +297 -0
  156. package/data/llms/headless/components/treetable/api.json +1680 -0
  157. package/data/llms/headless/components/treetable.md +177 -0
  158. package/data/llms/headless/guides/ai/llms.md +25 -0
  159. package/data/llms/headless/guides/installation.md +126 -0
  160. package/data/llms/headless/guides/introduction.md +20 -0
  161. package/data/llms/headless/guides/misc/accessibility.md +228 -0
  162. package/data/llms/headless/llms.md +25 -0
  163. package/data/llms/headless/resources/introduction.md +15 -0
  164. package/data/llms/hooks/gettingstarted/introduction.md +34 -0
  165. package/data/llms/hooks/gettingstarted/setup.md +54 -0
  166. package/data/llms/hooks/use-attr-selector.md +25 -0
  167. package/data/llms/hooks/use-controlled-state.md +31 -0
  168. package/data/llms/hooks/use-event-listener.md +37 -0
  169. package/data/llms/hooks/use-filter.md +312 -0
  170. package/data/llms/hooks/use-hot-key.md +40 -0
  171. package/data/llms/hooks/use-id.md +24 -0
  172. package/data/llms/hooks/use-intersection-observer.md +42 -0
  173. package/data/llms/hooks/use-is-mobile.md +24 -0
  174. package/data/llms/hooks/use-key-filter.md +139 -0
  175. package/data/llms/hooks/use-local-storage.md +28 -0
  176. package/data/llms/hooks/use-mask.md +53 -0
  177. package/data/llms/hooks/use-match-media.md +28 -0
  178. package/data/llms/hooks/use-mount-effect.md +25 -0
  179. package/data/llms/hooks/use-mounted.md +36 -0
  180. package/data/llms/hooks/use-number-formatter.md +48 -0
  181. package/data/llms/hooks/use-presence.md +44 -0
  182. package/data/llms/hooks/use-previous.md +28 -0
  183. package/data/llms/hooks/use-props.md +37 -0
  184. package/data/llms/hooks/use-queue-task.md +29 -0
  185. package/data/llms/hooks/use-scrolltop.md +87 -0
  186. package/data/llms/hooks/use-sortable-list.md +226 -0
  187. package/data/llms/hooks/use-tree-filter.md +216 -0
  188. package/data/llms/hooks/use-unmount-effect.md +23 -0
  189. package/data/llms/hooks/use-update-effect.md +27 -0
  190. package/data/llms/hooks/use-view-transition.md +31 -0
  191. package/data/llms/hooks/use-visibility-change.md +30 -0
  192. package/data/llms/llms-full.txt +125291 -0
  193. package/data/llms/llms.txt +379 -0
  194. package/data/llms/manifest.json +12409 -0
  195. package/data/llms/mcp-data.json +14481 -0
  196. package/data/llms/primitive/add-ons/introduction.md +16 -0
  197. package/data/llms/primitive/components/accordion/api.json +1411 -0
  198. package/data/llms/primitive/components/accordion.md +231 -0
  199. package/data/llms/primitive/components/animateonscroll/api.json +193 -0
  200. package/data/llms/primitive/components/animateonscroll.md +91 -0
  201. package/data/llms/primitive/components/autocomplete/api.json +3167 -0
  202. package/data/llms/primitive/components/autocomplete.md +344 -0
  203. package/data/llms/primitive/components/avatar/api.json +703 -0
  204. package/data/llms/primitive/components/avatar.md +134 -0
  205. package/data/llms/primitive/components/badge/api.json +363 -0
  206. package/data/llms/primitive/components/badge.md +118 -0
  207. package/data/llms/primitive/components/breadcrumb/api.json +1162 -0
  208. package/data/llms/primitive/components/breadcrumb.md +196 -0
  209. package/data/llms/primitive/components/button/api.json +246 -0
  210. package/data/llms/primitive/components/button.md +114 -0
  211. package/data/llms/primitive/components/buttongroup/api.json +168 -0
  212. package/data/llms/primitive/components/buttongroup.md +43 -0
  213. package/data/llms/primitive/components/card/api.json +1252 -0
  214. package/data/llms/primitive/components/card.md +159 -0
  215. package/data/llms/primitive/components/carousel/api.json +1374 -0
  216. package/data/llms/primitive/components/carousel.md +220 -0
  217. package/data/llms/primitive/components/checkbox/api.json +697 -0
  218. package/data/llms/primitive/components/checkbox.md +160 -0
  219. package/data/llms/primitive/components/checkboxgroup/api.json +252 -0
  220. package/data/llms/primitive/components/checkboxgroup.md +58 -0
  221. package/data/llms/primitive/components/chip/api.json +853 -0
  222. package/data/llms/primitive/components/chip.md +135 -0
  223. package/data/llms/primitive/components/collapsible/api.json +581 -0
  224. package/data/llms/primitive/components/collapsible.md +133 -0
  225. package/data/llms/primitive/components/compare/api.json +909 -0
  226. package/data/llms/primitive/components/compare.md +156 -0
  227. package/data/llms/primitive/components/contextmenu/api.json +3454 -0
  228. package/data/llms/primitive/components/contextmenu.md +483 -0
  229. package/data/llms/primitive/components/datatable/api.json +7832 -0
  230. package/data/llms/primitive/components/datatable.md +561 -0
  231. package/data/llms/primitive/components/dataview/api.json +819 -0
  232. package/data/llms/primitive/components/dataview.md +163 -0
  233. package/data/llms/primitive/components/datepicker/api.json +9055 -0
  234. package/data/llms/primitive/components/datepicker.md +760 -0
  235. package/data/llms/primitive/components/dialog/api.json +2491 -0
  236. package/data/llms/primitive/components/dialog.md +276 -0
  237. package/data/llms/primitive/components/divider/api.json +214 -0
  238. package/data/llms/primitive/components/divider.md +96 -0
  239. package/data/llms/primitive/components/drawer/api.json +1879 -0
  240. package/data/llms/primitive/components/drawer.md +220 -0
  241. package/data/llms/primitive/components/fieldset/api.json +1116 -0
  242. package/data/llms/primitive/components/fieldset.md +183 -0
  243. package/data/llms/primitive/components/fileupload/api.json +2445 -0
  244. package/data/llms/primitive/components/fileupload.md +282 -0
  245. package/data/llms/primitive/components/floatlabel/api.json +176 -0
  246. package/data/llms/primitive/components/floatlabel.md +47 -0
  247. package/data/llms/primitive/components/focustrap/api.json +241 -0
  248. package/data/llms/primitive/components/focustrap.md +93 -0
  249. package/data/llms/primitive/components/gallery/api.json +3622 -0
  250. package/data/llms/primitive/components/gallery.md +387 -0
  251. package/data/llms/primitive/components/iconfield/api.json +322 -0
  252. package/data/llms/primitive/components/iconfield.md +53 -0
  253. package/data/llms/primitive/components/iftalabel/api.json +177 -0
  254. package/data/llms/primitive/components/iftalabel.md +47 -0
  255. package/data/llms/primitive/components/inplace/api.json +783 -0
  256. package/data/llms/primitive/components/inplace.md +141 -0
  257. package/data/llms/primitive/components/inputcolor/api.json +2211 -0
  258. package/data/llms/primitive/components/inputcolor.md +295 -0
  259. package/data/llms/primitive/components/inputnumber/api.json +469 -0
  260. package/data/llms/primitive/components/inputnumber.md +99 -0
  261. package/data/llms/primitive/components/inputotp/api.json +469 -0
  262. package/data/llms/primitive/components/inputotp.md +121 -0
  263. package/data/llms/primitive/components/inputpassword/api.json +278 -0
  264. package/data/llms/primitive/components/inputpassword.md +84 -0
  265. package/data/llms/primitive/components/inputtags/api.json +407 -0
  266. package/data/llms/primitive/components/inputtags.md +243 -0
  267. package/data/llms/primitive/components/inputtext/api.json +207 -0
  268. package/data/llms/primitive/components/inputtext.md +81 -0
  269. package/data/llms/primitive/components/knob/api.json +841 -0
  270. package/data/llms/primitive/components/knob.md +148 -0
  271. package/data/llms/primitive/components/label/api.json +177 -0
  272. package/data/llms/primitive/components/label.md +44 -0
  273. package/data/llms/primitive/components/listbox/api.json +1741 -0
  274. package/data/llms/primitive/components/listbox.md +206 -0
  275. package/data/llms/primitive/components/menu/api.json +3836 -0
  276. package/data/llms/primitive/components/menu.md +479 -0
  277. package/data/llms/primitive/components/message/api.json +863 -0
  278. package/data/llms/primitive/components/message.md +151 -0
  279. package/data/llms/primitive/components/metergroup/api.json +1222 -0
  280. package/data/llms/primitive/components/metergroup.md +209 -0
  281. package/data/llms/primitive/components/motion.md +112 -0
  282. package/data/llms/primitive/components/navigationmenu/api.json +298 -0
  283. package/data/llms/primitive/components/navigationmenu.md +184 -0
  284. package/data/llms/primitive/components/organizationchart.md +133 -0
  285. package/data/llms/primitive/components/paginator/api.json +1637 -0
  286. package/data/llms/primitive/components/paginator.md +223 -0
  287. package/data/llms/primitive/components/panel/api.json +1270 -0
  288. package/data/llms/primitive/components/panel.md +186 -0
  289. package/data/llms/primitive/components/popover/api.json +2281 -0
  290. package/data/llms/primitive/components/popover.md +277 -0
  291. package/data/llms/primitive/components/portal/api.json +176 -0
  292. package/data/llms/primitive/components/portal.md +79 -0
  293. package/data/llms/primitive/components/progressbar/api.json +857 -0
  294. package/data/llms/primitive/components/progressbar.md +153 -0
  295. package/data/llms/primitive/components/progressspinner/api.json +725 -0
  296. package/data/llms/primitive/components/progressspinner.md +133 -0
  297. package/data/llms/primitive/components/radiobutton/api.json +929 -0
  298. package/data/llms/primitive/components/radiobutton.md +201 -0
  299. package/data/llms/primitive/components/rating/api.json +878 -0
  300. package/data/llms/primitive/components/rating.md +160 -0
  301. package/data/llms/primitive/components/scrollarea/api.json +1187 -0
  302. package/data/llms/primitive/components/scrollarea.md +255 -0
  303. package/data/llms/primitive/components/select/api.json +3167 -0
  304. package/data/llms/primitive/components/select.md +351 -0
  305. package/data/llms/primitive/components/sidebar/api.json +3699 -0
  306. package/data/llms/primitive/components/sidebar.md +444 -0
  307. package/data/llms/primitive/components/skeleton/api.json +213 -0
  308. package/data/llms/primitive/components/skeleton.md +80 -0
  309. package/data/llms/primitive/components/slider/api.json +1066 -0
  310. package/data/llms/primitive/components/slider.md +161 -0
  311. package/data/llms/primitive/components/speeddial/api.json +1002 -0
  312. package/data/llms/primitive/components/speeddial.md +197 -0
  313. package/data/llms/primitive/components/splitter/api.json +901 -0
  314. package/data/llms/primitive/components/splitter.md +137 -0
  315. package/data/llms/primitive/components/stepper/api.json +2102 -0
  316. package/data/llms/primitive/components/stepper.md +253 -0
  317. package/data/llms/primitive/components/styleclass.md +399 -0
  318. package/data/llms/primitive/components/tabs/api.json +1705 -0
  319. package/data/llms/primitive/components/tabs.md +200 -0
  320. package/data/llms/primitive/components/tag/api.json +189 -0
  321. package/data/llms/primitive/components/tag.md +100 -0
  322. package/data/llms/primitive/components/terminal/api.json +1709 -0
  323. package/data/llms/primitive/components/terminal.md +227 -0
  324. package/data/llms/primitive/components/textarea/api.json +213 -0
  325. package/data/llms/primitive/components/textarea.md +83 -0
  326. package/data/llms/primitive/components/timeline/api.json +1180 -0
  327. package/data/llms/primitive/components/timeline.md +185 -0
  328. package/data/llms/primitive/components/toast/api.json +2102 -0
  329. package/data/llms/primitive/components/toast.md +291 -0
  330. package/data/llms/primitive/components/togglebutton/api.json +433 -0
  331. package/data/llms/primitive/components/togglebutton.md +161 -0
  332. package/data/llms/primitive/components/togglebuttongroup/api.json +276 -0
  333. package/data/llms/primitive/components/togglebuttongroup.md +61 -0
  334. package/data/llms/primitive/components/toggleswitch/api.json +681 -0
  335. package/data/llms/primitive/components/toggleswitch.md +149 -0
  336. package/data/llms/primitive/components/toolbar/api.json +646 -0
  337. package/data/llms/primitive/components/toolbar.md +126 -0
  338. package/data/llms/primitive/components/tooltip/api.json +1534 -0
  339. package/data/llms/primitive/components/tooltip.md +202 -0
  340. package/data/llms/primitive/components/tree/api.json +2952 -0
  341. package/data/llms/primitive/components/tree.md +292 -0
  342. package/data/llms/primitive/components/treetable.md +187 -0
  343. package/data/llms/primitive/components/visuallyhidden/api.json +186 -0
  344. package/data/llms/primitive/components/visuallyhidden.md +87 -0
  345. package/data/llms/primitive/guides/ai/llms.md +25 -0
  346. package/data/llms/primitive/guides/icons/customicons.md +47 -0
  347. package/data/llms/primitive/guides/icons/primeicons.md +112 -0
  348. package/data/llms/primitive/guides/installation.md +115 -0
  349. package/data/llms/primitive/guides/introduction.md +20 -0
  350. package/data/llms/primitive/guides/misc/accessibility.md +215 -0
  351. package/data/llms/primitive/guides/misc/passthrough.md +95 -0
  352. package/data/llms/primitive/guides/misc/rtl.md +27 -0
  353. package/data/llms/primitive/llms.md +25 -0
  354. package/data/llms/primitive/resources/introduction.md +15 -0
  355. package/data/llms/styled/add-ons/introduction.md +16 -0
  356. package/data/llms/styled/components/accordion.md +735 -0
  357. package/data/llms/styled/components/animateonscroll.md +264 -0
  358. package/data/llms/styled/components/autocomplete.md +1597 -0
  359. package/data/llms/styled/components/avatar.md +313 -0
  360. package/data/llms/styled/components/badge.md +213 -0
  361. package/data/llms/styled/components/breadcrumb.md +461 -0
  362. package/data/llms/styled/components/button/api.json +246 -0
  363. package/data/llms/styled/components/button.md +641 -0
  364. package/data/llms/styled/components/buttongroup.md +614 -0
  365. package/data/llms/styled/components/card.md +228 -0
  366. package/data/llms/styled/components/carousel.md +388 -0
  367. package/data/llms/styled/components/checkbox.md +329 -0
  368. package/data/llms/styled/components/checkboxgroup.md +619 -0
  369. package/data/llms/styled/components/chip.md +300 -0
  370. package/data/llms/styled/components/compare.md +271 -0
  371. package/data/llms/styled/components/contextmenu.md +550 -0
  372. package/data/llms/styled/components/datatable.md +8259 -0
  373. package/data/llms/styled/components/dataview.md +907 -0
  374. package/data/llms/styled/components/datepicker.md +2807 -0
  375. package/data/llms/styled/components/dialog.md +1047 -0
  376. package/data/llms/styled/components/divider.md +207 -0
  377. package/data/llms/styled/components/drawer.md +470 -0
  378. package/data/llms/styled/components/fieldset.md +334 -0
  379. package/data/llms/styled/components/fileupload.md +747 -0
  380. package/data/llms/styled/components/floatlabel/api.json +210 -0
  381. package/data/llms/styled/components/floatlabel.md +231 -0
  382. package/data/llms/styled/components/fluid/api.json +204 -0
  383. package/data/llms/styled/components/fluid.md +177 -0
  384. package/data/llms/styled/components/focustrap.md +203 -0
  385. package/data/llms/styled/components/gallery.md +553 -0
  386. package/data/llms/styled/components/iconfield/api.json +382 -0
  387. package/data/llms/styled/components/iconfield.md +385 -0
  388. package/data/llms/styled/components/iftalabel/api.json +237 -0
  389. package/data/llms/styled/components/iftalabel.md +158 -0
  390. package/data/llms/styled/components/inplace.md +312 -0
  391. package/data/llms/styled/components/inputcolor.md +674 -0
  392. package/data/llms/styled/components/inputgroup/api.json +399 -0
  393. package/data/llms/styled/components/inputgroup.md +604 -0
  394. package/data/llms/styled/components/inputmask.md +282 -0
  395. package/data/llms/styled/components/inputnumber.md +563 -0
  396. package/data/llms/styled/components/inputotp.md +335 -0
  397. package/data/llms/styled/components/inputpassword.md +630 -0
  398. package/data/llms/styled/components/inputtags.md +727 -0
  399. package/data/llms/styled/components/inputtext.md +190 -0
  400. package/data/llms/styled/components/keyfilter.md +289 -0
  401. package/data/llms/styled/components/knob.md +305 -0
  402. package/data/llms/styled/components/label/api.json +237 -0
  403. package/data/llms/styled/components/label.md +224 -0
  404. package/data/llms/styled/components/listbox.md +807 -0
  405. package/data/llms/styled/components/menu.md +1175 -0
  406. package/data/llms/styled/components/message.md +570 -0
  407. package/data/llms/styled/components/metergroup.md +449 -0
  408. package/data/llms/styled/components/navigationmenu.md +926 -0
  409. package/data/llms/styled/components/orderlist.md +519 -0
  410. package/data/llms/styled/components/organizationchart/api.json +1457 -0
  411. package/data/llms/styled/components/organizationchart.md +791 -0
  412. package/data/llms/styled/components/overlaymanager.md +519 -0
  413. package/data/llms/styled/components/paginator.md +506 -0
  414. package/data/llms/styled/components/panel.md +394 -0
  415. package/data/llms/styled/components/picklist.md +1004 -0
  416. package/data/llms/styled/components/popover.md +372 -0
  417. package/data/llms/styled/components/progressbar.md +438 -0
  418. package/data/llms/styled/components/progressspinner.md +128 -0
  419. package/data/llms/styled/components/radiobutton.md +488 -0
  420. package/data/llms/styled/components/rating/api.json +766 -0
  421. package/data/llms/styled/components/rating.md +518 -0
  422. package/data/llms/styled/components/scrollarea.md +627 -0
  423. package/data/llms/styled/components/select.md +2122 -0
  424. package/data/llms/styled/components/sidebar.md +1587 -0
  425. package/data/llms/styled/components/skeleton.md +226 -0
  426. package/data/llms/styled/components/slider.md +453 -0
  427. package/data/llms/styled/components/speeddial.md +723 -0
  428. package/data/llms/styled/components/splitter.md +536 -0
  429. package/data/llms/styled/components/stepper.md +614 -0
  430. package/data/llms/styled/components/tabs.md +543 -0
  431. package/data/llms/styled/components/tag.md +263 -0
  432. package/data/llms/styled/components/terminal.md +543 -0
  433. package/data/llms/styled/components/textarea.md +257 -0
  434. package/data/llms/styled/components/timeline.md +620 -0
  435. package/data/llms/styled/components/toast.md +1013 -0
  436. package/data/llms/styled/components/togglebutton.md +287 -0
  437. package/data/llms/styled/components/togglebuttongroup.md +328 -0
  438. package/data/llms/styled/components/toggleswitch.md +262 -0
  439. package/data/llms/styled/components/toolbar.md +187 -0
  440. package/data/llms/styled/components/tooltip.md +430 -0
  441. package/data/llms/styled/components/tree.md +1386 -0
  442. package/data/llms/styled/components/treetable.md +6842 -0
  443. package/data/llms/styled/guides/ai/llms.md +25 -0
  444. package/data/llms/styled/guides/configuration.md +151 -0
  445. package/data/llms/styled/guides/icons/customicons.md +47 -0
  446. package/data/llms/styled/guides/icons/primeicons.md +112 -0
  447. package/data/llms/styled/guides/installation/astro.md +97 -0
  448. package/data/llms/styled/guides/installation/manual.md +3 -0
  449. package/data/llms/styled/guides/installation/nextjs.md +129 -0
  450. package/data/llms/styled/guides/installation/react-router.md +88 -0
  451. package/data/llms/styled/guides/installation/tanstack.md +92 -0
  452. package/data/llms/styled/guides/installation/vite.md +91 -0
  453. package/data/llms/styled/guides/installation.md +42 -0
  454. package/data/llms/styled/guides/introduction.md +20 -0
  455. package/data/llms/styled/guides/misc/accessibility.md +211 -0
  456. package/data/llms/styled/guides/misc/animations.md +389 -0
  457. package/data/llms/styled/guides/misc/passthrough.md +95 -0
  458. package/data/llms/styled/guides/misc/rtl.md +27 -0
  459. package/data/llms/styled/guides/theming/styled.md +779 -0
  460. package/data/llms/styled/guides/theming/tailwind.md +473 -0
  461. package/data/llms/styled/guides/theming/unstyled.md +115 -0
  462. package/data/llms/styled/resources/introduction.md +15 -0
  463. package/data/llms/tailwind/add-ons/introduction.md +16 -0
  464. package/data/llms/tailwind/components/accordion.md +383 -0
  465. package/data/llms/tailwind/components/autocomplete.md +1346 -0
  466. package/data/llms/tailwind/components/avatar.md +305 -0
  467. package/data/llms/tailwind/components/badge.md +207 -0
  468. package/data/llms/tailwind/components/breadcrumb.md +387 -0
  469. package/data/llms/tailwind/components/button/api.json +246 -0
  470. package/data/llms/tailwind/components/button.md +617 -0
  471. package/data/llms/tailwind/components/buttongroup.md +599 -0
  472. package/data/llms/tailwind/components/card.md +224 -0
  473. package/data/llms/tailwind/components/carousel.md +329 -0
  474. package/data/llms/tailwind/components/checkbox.md +179 -0
  475. package/data/llms/tailwind/components/checkboxgroup.md +279 -0
  476. package/data/llms/tailwind/components/chip.md +304 -0
  477. package/data/llms/tailwind/components/compare.md +295 -0
  478. package/data/llms/tailwind/components/contextmenu.md +415 -0
  479. package/data/llms/tailwind/components/datatable.md +4062 -0
  480. package/data/llms/tailwind/components/dataview.md +864 -0
  481. package/data/llms/tailwind/components/datepicker.md +823 -0
  482. package/data/llms/tailwind/components/dialog.md +1216 -0
  483. package/data/llms/tailwind/components/divider.md +205 -0
  484. package/data/llms/tailwind/components/drawer.md +500 -0
  485. package/data/llms/tailwind/components/fieldset.md +326 -0
  486. package/data/llms/tailwind/components/fluid.md +117 -0
  487. package/data/llms/tailwind/components/iconfield.md +197 -0
  488. package/data/llms/tailwind/components/inplace.md +324 -0
  489. package/data/llms/tailwind/components/inputcolor.md +493 -0
  490. package/data/llms/tailwind/components/inputgroup.md +375 -0
  491. package/data/llms/tailwind/components/inputnumber.md +463 -0
  492. package/data/llms/tailwind/components/inputotp.md +255 -0
  493. package/data/llms/tailwind/components/inputpassword.md +543 -0
  494. package/data/llms/tailwind/components/inputtext.md +141 -0
  495. package/data/llms/tailwind/components/label.md +100 -0
  496. package/data/llms/tailwind/components/listbox.md +886 -0
  497. package/data/llms/tailwind/components/menu.md +1049 -0
  498. package/data/llms/tailwind/components/message.md +575 -0
  499. package/data/llms/tailwind/components/metergroup.md +510 -0
  500. package/data/llms/tailwind/components/navigationmenu.md +528 -0
  501. package/data/llms/tailwind/components/overlaymanager.md +567 -0
  502. package/data/llms/tailwind/components/paginator.md +306 -0
  503. package/data/llms/tailwind/components/panel.md +395 -0
  504. package/data/llms/tailwind/components/popover.md +424 -0
  505. package/data/llms/tailwind/components/progressbar.md +313 -0
  506. package/data/llms/tailwind/components/radiobutton.md +366 -0
  507. package/data/llms/tailwind/components/rating.md +300 -0
  508. package/data/llms/tailwind/components/scrollarea.md +638 -0
  509. package/data/llms/tailwind/components/select.md +1220 -0
  510. package/data/llms/tailwind/components/sidebar.md +1511 -0
  511. package/data/llms/tailwind/components/skeleton.md +236 -0
  512. package/data/llms/tailwind/components/slider.md +291 -0
  513. package/data/llms/tailwind/components/splitter.md +546 -0
  514. package/data/llms/tailwind/components/tabs.md +462 -0
  515. package/data/llms/tailwind/components/tag.md +255 -0
  516. package/data/llms/tailwind/components/textarea.md +170 -0
  517. package/data/llms/tailwind/components/timeline.md +656 -0
  518. package/data/llms/tailwind/components/toast.md +246 -0
  519. package/data/llms/tailwind/components/togglebutton.md +264 -0
  520. package/data/llms/tailwind/components/togglebuttongroup.md +262 -0
  521. package/data/llms/tailwind/components/toggleswitch.md +203 -0
  522. package/data/llms/tailwind/components/toolbar.md +192 -0
  523. package/data/llms/tailwind/components/tooltip.md +449 -0
  524. package/data/llms/tailwind/guides/ai/llms.md +25 -0
  525. package/data/llms/tailwind/guides/icons/customicons.md +47 -0
  526. package/data/llms/tailwind/guides/icons/primeicons.md +112 -0
  527. package/data/llms/tailwind/guides/installation/astro.md +165 -0
  528. package/data/llms/tailwind/guides/installation/manual.md +3 -0
  529. package/data/llms/tailwind/guides/installation/nextjs.md +169 -0
  530. package/data/llms/tailwind/guides/installation/react-router.md +157 -0
  531. package/data/llms/tailwind/guides/installation/tanstack.md +161 -0
  532. package/data/llms/tailwind/guides/installation/vite.md +160 -0
  533. package/data/llms/tailwind/guides/installation.md +42 -0
  534. package/data/llms/tailwind/guides/introduction.md +20 -0
  535. package/data/llms/tailwind/guides/misc/accessibility.md +205 -0
  536. package/data/llms/tailwind/guides/misc/passthrough.md +95 -0
  537. package/data/llms/tailwind/guides/misc/rtl.md +27 -0
  538. package/data/llms/tailwind/guides/theming/guide.md +179 -0
  539. package/data/llms/tailwind/guides/theming.md +191 -0
  540. package/data/llms/tailwind/llms.md +25 -0
  541. package/data/llms/tailwind/resources/introduction.md +15 -0
  542. package/data/manifest.json +12409 -0
  543. package/data/mcp-data.json +14481 -0
  544. package/dist/index.d.ts +9 -0
  545. package/dist/index.js +2 -0
  546. package/package.json +61 -0
@@ -0,0 +1,301 @@
1
+ # usePopover
2
+
3
+ Hook that manages popover open state, outside click dismissal, escape key handling, and focus management.
4
+
5
+ ```tsx
6
+ 'use client';
7
+ import { Check } from '@primeicons/react/check';
8
+ import { Times } from '@primeicons/react/times';
9
+ import { usePopover } from '@primereact/headless/popover';
10
+ import { usePortal } from '@primereact/headless/portal';
11
+ import { usePositioner } from '@primereact/headless/positioner';
12
+ import * as React from 'react';
13
+ import { createPortal } from 'react-dom';
14
+
15
+ const arrowPositionStyles: Record<string, React.CSSProperties> = {
16
+ top: { bottom: '-0.25rem', left: 'var(--px-placer-arrow-x)', transform: 'translateX(-50%) rotate(225deg)' },
17
+ bottom: { top: '-0.25rem', left: 'var(--px-placer-arrow-x)', transform: 'translateX(-50%) rotate(45deg)' },
18
+ left: { right: '-0.25rem', top: 'var(--px-placer-arrow-y)', transform: 'translateY(-50%) rotate(315deg)' },
19
+ right: { left: '-0.25rem', top: 'var(--px-placer-arrow-y)', transform: 'translateY(-50%) rotate(135deg)' }
20
+ };
21
+
22
+ const team = [
23
+ { initials: 'AK', name: 'Alex Kim' },
24
+ { initials: 'MR', name: 'Maya Ross' },
25
+ { initials: 'SL', name: 'Sam Lee' }
26
+ ];
27
+
28
+ export default function BasicDemo() {
29
+ const { triggerProps, popupProps, positionerProps, arrowProps, closeProps, state } = usePopover();
30
+ const portal = usePortal();
31
+ const [copied, setCopied] = React.useState(false);
32
+
33
+ const positioner = usePositioner({
34
+ anchor: state.anchorElement,
35
+ content: state.positionerElement,
36
+ arrow: state.arrowElement,
37
+ side: 'bottom',
38
+ sideOffset: 12,
39
+ flip: true,
40
+ shift: true
41
+ });
42
+
43
+ const side = positioner.state.actualSide ?? 'bottom';
44
+
45
+ const handleCopy = () => {
46
+ navigator.clipboard.writeText('https://acme.io/project/design-system');
47
+ setCopied(true);
48
+ setTimeout(() => setCopied(false), 2000);
49
+ };
50
+
51
+ return (
52
+ <div className="flex justify-center min-h-48">
53
+ <button
54
+ {...triggerProps}
55
+ className="inline-flex items-center justify-center h-8 px-3 text-sm font-medium text-surface-700 dark:text-surface-0 bg-transparent border border-surface-200 dark:border-surface-700 rounded-lg cursor-pointer select-none transition-colors hover:bg-surface-50 dark:hover:bg-surface-800 focus-visible:outline-1 focus-visible:outline-primary focus-visible:outline-offset-2"
56
+ >
57
+ Share
58
+ </button>
59
+ {portal.state.mounted &&
60
+ state.open &&
61
+ createPortal(
62
+ <div {...positionerProps}>
63
+ <div
64
+ {...popupProps}
65
+ className="bg-surface-0 dark:bg-surface-900 rounded-xl shadow-lg border border-surface-200 dark:border-surface-700 w-80 outline-none relative"
66
+ >
67
+ <div
68
+ {...arrowProps}
69
+ className="absolute w-2 h-2 bg-surface-0 dark:bg-surface-900 border-l border-t border-surface-200 dark:border-surface-700"
70
+ style={arrowPositionStyles[side]}
71
+ />
72
+ <div className="flex items-center justify-between px-4 pt-4 pb-2">
73
+ <h3 className="text-sm font-semibold text-surface-900 dark:text-surface-0 m-0">Share Project</h3>
74
+ <button
75
+ {...closeProps}
76
+ className="flex items-center justify-center w-7 h-7 rounded-md bg-transparent border-none text-surface-500 dark:text-surface-400 cursor-pointer transition-colors hover:bg-surface-100 dark:hover:bg-surface-800 focus-visible:outline-1 focus-visible:outline-primary focus-visible:-outline-offset-1"
77
+ >
78
+ <Times className="w-3.5 h-3.5" />
79
+ </button>
80
+ </div>
81
+ <div className="px-4 pb-3">
82
+ <div className="flex gap-2">
83
+ <input
84
+ ref={(el) => {
85
+ if (el) {
86
+ el.focus({ preventScroll: true });
87
+ el.select();
88
+ }
89
+ }}
90
+ type="text"
91
+ readOnly
92
+ value="https://acme.io/project/design-system"
93
+ className="flex-1 min-w-0 px-3 py-1.5 text-sm bg-transparent text-surface-700 dark:text-surface-0 border border-surface-200 dark:border-surface-700 rounded-md outline-none focus:border-primary focus:ring-1 focus:ring-primary"
94
+ />
95
+ <button
96
+ onClick={handleCopy}
97
+ className="inline-flex items-center justify-center gap-1.5 min-w-24 px-3 py-1.5 text-sm font-medium rounded-md border-none cursor-pointer select-none transition-colors bg-primary text-primary-contrast hover:bg-primary-emphasis focus-visible:outline-1 focus-visible:outline-primary focus-visible:outline-offset-2"
98
+ >
99
+ {copied ? (
100
+ <>
101
+ <Check className="w-3.5 h-3.5" /> Copied!
102
+ </>
103
+ ) : (
104
+ 'Copy'
105
+ )}
106
+ </button>
107
+ </div>
108
+ </div>
109
+ <div className="px-4 pb-3">
110
+ <p className="text-xs font-medium text-surface-500 dark:text-surface-400 mt-0 mb-2">Team Members</p>
111
+ <div className="flex items-center gap-2">
112
+ {team.map((member) => (
113
+ <div
114
+ key={member.initials}
115
+ title={member.name}
116
+ className="w-8 h-8 rounded-full bg-primary/15 text-primary text-xs font-semibold flex items-center justify-center"
117
+ >
118
+ {member.initials}
119
+ </div>
120
+ ))}
121
+ <button className="w-8 h-8 rounded-full border border-dashed border-surface-300 dark:border-surface-600 bg-transparent text-surface-400 dark:text-surface-500 text-xs cursor-pointer flex items-center justify-center hover:border-primary hover:text-primary transition-colors">
122
+ +
123
+ </button>
124
+ </div>
125
+ </div>
126
+ <div className="px-4 pb-4">
127
+ <p className="text-xs text-surface-400 dark:text-surface-500 m-0">Anyone with the link can view this project.</p>
128
+ </div>
129
+ </div>
130
+ </div>,
131
+ document.body
132
+ )}
133
+ </div>
134
+ );
135
+ }
136
+ ```
137
+
138
+ ## Usage
139
+
140
+ ```tsx
141
+ import { usePopover } from '@primereact/headless/popover';
142
+ import { usePortal } from '@primereact/headless/portal';
143
+ import { usePositioner } from '@primereact/headless/positioner';
144
+ import { createPortal } from 'react-dom';
145
+ ```
146
+
147
+ ```tsx
148
+ const { triggerProps, popupProps, positionerProps, arrowProps, closeProps, state } = usePopover();
149
+ const portal = usePortal();
150
+
151
+ usePositioner({
152
+ anchor: state.anchorElement,
153
+ content: state.positionerElement,
154
+ arrow: state.arrowElement,
155
+ side: 'bottom',
156
+ flip: true,
157
+ shift: true
158
+ });
159
+ ```
160
+
161
+ `usePopover` manages open/close state, outside click dismissal, escape key handling, and optional focus trapping. Use [usePositioner](/docs/headless/components/positioner) for anchor-relative positioning and [usePortal](/docs/headless/components/portal) with `createPortal` for body portaling. See [Primitive](/docs/primitive/components/popover) for a component-based API.
162
+
163
+ ## Features
164
+
165
+ - **Open/close lifecycle**, controlled or uncontrolled state with outside-click dismissal and escape-key handling
166
+ - **Focus management**, optional focus trap plus `autoFocus` control over initial focus when the popup mounts
167
+ - **Anchor refs**, exposes `state.anchorElement`, `state.positionerElement`, and `state.arrowElement` for wiring into `usePositioner`
168
+ - **Arrow support**, `arrowProps` pairs with the positioner's CSS custom properties for per-side arrow placement
169
+ - **Portal-friendly**, `state.open` drives conditional rendering of portaled content without managing mount state yourself
170
+ - **Imperative controls**, `setOpen(open, event)` for programmatic toggling tied to a source event
171
+
172
+ ## Working with callbacks
173
+
174
+ ### Controlled open state
175
+
176
+ Pass `open` and `onOpenChange` to drive visibility from external state.
177
+
178
+ ```tsx
179
+ const [isOpen, setIsOpen] = React.useState(false);
180
+
181
+ const popover = usePopover({
182
+ open: isOpen,
183
+ onOpenChange: (e) => setIsOpen(e.open)
184
+ });
185
+
186
+ <>
187
+ <button {...triggerProps}></button>;
188
+ {
189
+ portal.state.mounted &&
190
+ state.open &&
191
+ createPortal(
192
+ <div {...positionerProps}>
193
+ <div {...popupProps}>
194
+ <div {...arrowProps} />
195
+ <button {...closeProps}></button>
196
+ </div>
197
+ </div>,
198
+ document.body
199
+ ```
200
+
201
+ ### Composing with usePositioner
202
+
203
+ `usePopover` manages state and element refs but not positioning. Feed the element refs from `state` into `usePositioner` to place the popup relative to the trigger.
204
+
205
+ ```tsx
206
+ const { triggerProps, popupProps, positionerProps, state } = usePopover();
207
+
208
+ usePositioner({
209
+ anchor: state.anchorElement,
210
+ content: state.positionerElement,
211
+ side: 'bottom',
212
+ flip: true,
213
+ shift: true
214
+ });
215
+ ```
216
+
217
+ ### Rendering into a portal
218
+
219
+ Gate the portal content on both `portal.state.mounted` and `state.open` so the popup renders only on the client and only when visible.
220
+
221
+ ```tsx
222
+ const portal = usePortal();
223
+
224
+ {
225
+ portal.state.mounted &&
226
+ state.open &&
227
+ createPortal(
228
+ <div {...positionerProps}>
229
+ <div {...popupProps}>...</div>
230
+ </div>,
231
+ document.body
232
+ );
233
+ }
234
+ ```
235
+
236
+ ### Arrow positioning
237
+
238
+ Spread `arrowProps` on an arrow element and pass `state.arrowElement` to the positioner. The positioner writes `--placer-arrow-x` and `--placer-arrow-y` for you to consume in CSS.
239
+
240
+ ```tsx
241
+ <div {...popupProps}>
242
+ <div {...arrowProps} />
243
+ </div>
244
+ ```
245
+
246
+ ```css
247
+ [data-scope='popover'][data-part='arrow'] {
248
+ position: absolute;
249
+ width: 0.5rem;
250
+ height: 0.5rem;
251
+ border-left: 1px solid var(--p-content-border-color);
252
+ border-top: 1px solid var(--p-content-border-color);
253
+ }
254
+ [data-part='arrow'][data-side='bottom'] {
255
+ top: -0.25rem;
256
+ left: var(--px-placer-arrow-x);
257
+ transform: translateX(-50%) rotate(45deg);
258
+ }
259
+ [data-part='arrow'][data-side='top'] {
260
+ bottom: -0.25rem;
261
+ left: var(--px-placer-arrow-x);
262
+ transform: translateX(-50%) rotate(225deg);
263
+ }
264
+ ```
265
+
266
+ ### Modal-like focus trap
267
+
268
+ Enable `trapped` for popovers that should behave like a mini-dialog, keeping keyboard focus inside until dismissed.
269
+
270
+ ```tsx
271
+ const popover = usePopover({ trapped: true });
272
+ ```
273
+
274
+ ## Styling with data attributes
275
+
276
+ The hook exposes state through `data-*` attributes on each part. Use them as CSS selectors, no className juggling.
277
+
278
+ | Scope | Part | States |
279
+ | --------- | --------- | -------------------------- |
280
+ | `popover` | `trigger` | `data-positioner-open` |
281
+ | `popover` | `popup` | `data-open`, `data-closed` |
282
+ | `popover` | `arrow` | `data-side` |
283
+
284
+ ```css
285
+ [data-scope='popover'][data-part='trigger'][data-positioner-open] {
286
+ background-color: light-dark(var(--p-surface-100), var(--p-surface-700));
287
+ }
288
+ [data-scope='popover'][data-part='popup'][data-open] {
289
+ opacity: 1;
290
+ }
291
+ ```
292
+
293
+ ## API
294
+
295
+ ### usePopover
296
+
297
+ <DocTable name="usePopover" category="api" />
298
+
299
+ ## Accessibility
300
+
301
+ Escape dismisses the popover, focus moves into the content when opened, and Tab cycles focusable children. See [Primitive](/docs/primitive/components/popover#accessibility) for full WAI-ARIA compliance details.
@@ -0,0 +1,56 @@
1
+ [
2
+ {
3
+ "name": "usePortal",
4
+ "source": "apps/showcase/assets/apidoc/useportal.json",
5
+ "data": {
6
+ "description": "The usePortal hook provides functionality to render content into a DOM node outside the component hierarchy.",
7
+ "interfaces": {
8
+ "UsePortalProps": {
9
+ "description": "Defines valid properties in usePortal.",
10
+ "relatedProp": "",
11
+ "props": [
12
+ {
13
+ "name": "onMounted",
14
+ "type": "() => void",
15
+ "default": "",
16
+ "description": "Callback function to invoke when the portal is mounted."
17
+ },
18
+ {
19
+ "name": "onUnmounted",
20
+ "type": "() => void",
21
+ "default": "",
22
+ "description": "Callback function to invoke when the portal is unmounted."
23
+ }
24
+ ],
25
+ "methods": []
26
+ },
27
+ "UsePortalState": {
28
+ "description": "Defines valid state in usePortal.",
29
+ "relatedProp": "",
30
+ "props": [
31
+ {
32
+ "name": "mounted",
33
+ "type": "boolean",
34
+ "default": "",
35
+ "description": "Current mount of the portal."
36
+ }
37
+ ],
38
+ "methods": []
39
+ },
40
+ "UsePortalExposes": {
41
+ "description": "Defines the methods and properties exposed by usePortal.",
42
+ "relatedProp": "",
43
+ "props": [],
44
+ "methods": []
45
+ }
46
+ },
47
+ "types": {
48
+ "UsePortalInstance": {
49
+ "description": "Instance of usePortal headless.",
50
+ "values": "HeadlessInstance<UsePortalProps, UsePortalState, UsePortalExposes>"
51
+ }
52
+ },
53
+ "variables": {}
54
+ }
55
+ }
56
+ ]
@@ -0,0 +1,102 @@
1
+ # usePortal
2
+
3
+ Hook that tracks client-side mount state for SSR-safe portal rendering.
4
+
5
+ ```tsx
6
+ 'use client';
7
+ import { usePortal } from '@primereact/headless/portal';
8
+ import * as React from 'react';
9
+ import { createPortal } from 'react-dom';
10
+
11
+ export default function BasicDemo() {
12
+ const portal = usePortal();
13
+ const [container, setContainer] = React.useState<HTMLElement | null>(null);
14
+
15
+ return (
16
+ <div className="flex flex-col gap-4">
17
+ <div className="border border-surface-200 rounded-lg p-4 text-sm text-surface-600">
18
+ <p className="font-semibold text-surface-900 mb-2">Portal Target</p>
19
+ <div ref={setContainer} className="border border-dashed border-surface-300 rounded p-3 min-h-10" />
20
+ </div>
21
+ {portal.state.mounted &&
22
+ container &&
23
+ createPortal(
24
+ <p className="text-sm text-primary-600 m-0">This content is rendered inside the target container via a portal.</p>,
25
+ container
26
+ )}
27
+ </div>
28
+ );
29
+ }
30
+ ```
31
+
32
+ ## Usage
33
+
34
+ ```tsx
35
+ import { usePortal } from '@primereact/headless/portal';
36
+ import { createPortal } from 'react-dom';
37
+ ```
38
+
39
+ ```tsx
40
+ const portal = usePortal();
41
+
42
+ {
43
+ portal.state.mounted && createPortal(<div></div>, document.body);
44
+ }
45
+ ```
46
+
47
+ `usePortal` provides SSR-safe mount detection so portaled content renders only on the client. See [Primitive](/docs/primitive/components/portal) for a component-based API.
48
+
49
+ ## Features
50
+
51
+ - **SSR-safe mount flag**, `state.mounted` stays `false` during server rendering and flips to `true` after client mount
52
+ - **Lifecycle callbacks**, `onMounted` and `onUnmounted` fire on the corresponding mount boundaries
53
+ - **Portal target agnostic**, pair the flag with any DOM node you want to render into
54
+
55
+ ## Working with callbacks
56
+
57
+ ### Guard `createPortal`
58
+
59
+ Use `state.mounted` to skip portal rendering on the server, which avoids hydration mismatches.
60
+
61
+ ```tsx
62
+ const portal = usePortal();
63
+
64
+ {
65
+ portal.state.mounted && createPortal(<div>Portaled content</div>, document.body);
66
+ }
67
+ ```
68
+
69
+ ### React to mount/unmount
70
+
71
+ Pass `onMounted` and `onUnmounted` when you need to run a side effect tied to the portal's lifecycle, locking scroll, syncing analytics, or closing neighbouring UI.
72
+
73
+ ```tsx
74
+ const portal = usePortal({
75
+ onMounted: () => lockScroll(),
76
+ onUnmounted: () => unlockScroll()
77
+ });
78
+ ```
79
+
80
+ ### Portal into a custom container
81
+
82
+ Combine `state.mounted` with a ref to a custom container for portaling into a specific element rather than `document.body`.
83
+
84
+ ```tsx
85
+ const portal = usePortal();
86
+ const [container, setContainer] = React.useState<HTMLElement | null>(null);
87
+
88
+ <div ref={setContainer} />;
89
+ {
90
+ portal.state.mounted && container && createPortal(<div>Content</div>, container);
91
+ }
92
+ ```
93
+
94
+ ## API
95
+
96
+ ### usePortal
97
+
98
+ <DocTable name="usePortal" category="api" />
99
+
100
+ ## Accessibility
101
+
102
+ No direct keyboard behavior, focus management follows the portaled content. See [Primitive](/docs/primitive/components/portal#accessibility) for full WAI-ARIA compliance details.
@@ -0,0 +1,165 @@
1
+ [
2
+ {
3
+ "name": "usePositioner",
4
+ "source": "apps/showcase/assets/apidoc/usepositioner.json",
5
+ "data": {
6
+ "description": "The usePositioner manages the state and functionality of a positioner component.",
7
+ "interfaces": {
8
+ "UsePositionerProps": {
9
+ "description": "Defines valid properties in usePositioner.",
10
+ "relatedProp": "",
11
+ "props": [
12
+ {
13
+ "name": "side",
14
+ "type": "SideType",
15
+ "default": "",
16
+ "description": "The side of the positioner."
17
+ },
18
+ {
19
+ "name": "align",
20
+ "type": "AlignType",
21
+ "default": "",
22
+ "description": "The align of the positioner."
23
+ },
24
+ {
25
+ "name": "sideOffset",
26
+ "type": "number",
27
+ "default": "",
28
+ "description": "The side offset of the positioner."
29
+ },
30
+ {
31
+ "name": "alignOffset",
32
+ "type": "number",
33
+ "default": "",
34
+ "description": "The align offset of the positioner."
35
+ },
36
+ {
37
+ "name": "flip",
38
+ "type": "boolean",
39
+ "default": "",
40
+ "description": "Whether to flip the positioner."
41
+ },
42
+ {
43
+ "name": "shift",
44
+ "type": "boolean",
45
+ "default": "",
46
+ "description": "Whether to shift the positioner."
47
+ },
48
+ {
49
+ "name": "hideWhenDetached",
50
+ "type": "boolean",
51
+ "default": "",
52
+ "description": "Whether to hide the positioner when detached."
53
+ },
54
+ {
55
+ "name": "strategy",
56
+ "type": "\"fixed\" | \"absolute\"",
57
+ "default": "'fixed'",
58
+ "description": "The positioning strategy."
59
+ },
60
+ {
61
+ "name": "boundary",
62
+ "type": "HTMLElement",
63
+ "default": "",
64
+ "description": "The boundary element that constrains the positioner placement.\nUsed in JS fallback mode only; CSS Anchor mode uses the containing block."
65
+ },
66
+ {
67
+ "name": "anchor",
68
+ "type": "HTMLElement",
69
+ "default": "",
70
+ "description": "The anchor element."
71
+ },
72
+ {
73
+ "name": "content",
74
+ "type": "HTMLDivElement",
75
+ "default": "",
76
+ "description": "The content element."
77
+ },
78
+ {
79
+ "name": "arrow",
80
+ "type": "HTMLDivElement",
81
+ "default": "",
82
+ "description": "The arrow element."
83
+ },
84
+ {
85
+ "name": "autoZIndex",
86
+ "type": "boolean",
87
+ "default": "true",
88
+ "description": "Whether to automatically manage layering."
89
+ },
90
+ {
91
+ "name": "baseZIndex",
92
+ "type": "number",
93
+ "default": "0",
94
+ "description": "Base zIndex value to use in layering."
95
+ },
96
+ {
97
+ "name": "onPlacementChange",
98
+ "type": "(placement: { side: SideType; align: AlignType }) => void",
99
+ "default": "",
100
+ "description": "Callback invoked when the actual placement changes due to flip or shift."
101
+ }
102
+ ],
103
+ "methods": []
104
+ },
105
+ "UsePositionerState": {
106
+ "description": "Defines valid state in usePositioner.",
107
+ "relatedProp": "",
108
+ "props": [
109
+ {
110
+ "name": "actualSide",
111
+ "type": "SideType",
112
+ "default": "",
113
+ "description": "Actual side after placement."
114
+ },
115
+ {
116
+ "name": "actualAlign",
117
+ "type": "AlignType",
118
+ "default": "",
119
+ "description": "Actual align after placement."
120
+ }
121
+ ],
122
+ "methods": []
123
+ },
124
+ "UsePositionerExposes": {
125
+ "description": "Defines the methods and properties exposed by usePositioner.",
126
+ "relatedProp": "",
127
+ "props": [
128
+ {
129
+ "name": "state",
130
+ "type": "UsePositionerState",
131
+ "default": "",
132
+ "description": "The state of the usePositioner."
133
+ },
134
+ {
135
+ "name": "getTransformOrigin",
136
+ "type": "() => string",
137
+ "default": "",
138
+ "description": "Computes the transform origin."
139
+ },
140
+ {
141
+ "name": "computePosition",
142
+ "type": "() => CSSProperties",
143
+ "default": "",
144
+ "description": "Computes the position."
145
+ },
146
+ {
147
+ "name": "updatePlacement",
148
+ "type": "() => void",
149
+ "default": "",
150
+ "description": "Updates the placement."
151
+ }
152
+ ],
153
+ "methods": []
154
+ }
155
+ },
156
+ "types": {
157
+ "UsePositionerInstance": {
158
+ "description": "Instance of usePositioner headless.",
159
+ "values": "HeadlessInstance<UsePositionerProps, UsePositionerState, UsePositionerExposes>"
160
+ }
161
+ },
162
+ "variables": {}
163
+ }
164
+ }
165
+ ]