@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,54 @@
1
+ # Setup
2
+
3
+ Install @primereact/hooks and start using it in any React project.
4
+
5
+ ## Install
6
+
7
+ `@primereact/hooks` is a standalone package. Install it on its own:
8
+
9
+ ```bash
10
+ npm install @primereact/hooks
11
+ ```
12
+
13
+ If you already use `primereact`, the hooks are bundled, you don't need a separate install, but you can still depend on `@primereact/hooks` directly if you prefer explicit versioning.
14
+
15
+ Peer dependency: **React 18+**.
16
+
17
+ ## Import
18
+
19
+ Each hook has its own sub-path entry for optimal tree-shaking:
20
+
21
+ ```tsx
22
+ import { useFilter } from '@primereact/hooks/use-filter';
23
+ import { useLocalStorage } from '@primereact/hooks/use-local-storage';
24
+ import { useMatchMedia } from '@primereact/hooks/use-match-media';
25
+ ```
26
+
27
+ The root entry re-exports everything when convenience matters more than the last few bytes:
28
+
29
+ ```tsx
30
+ import { useFilter, useLocalStorage } from '@primereact/hooks';
31
+ ```
32
+
33
+ ## TypeScript
34
+
35
+ Types ship with the package. Generic hooks infer from the data you pass in:
36
+
37
+ ```tsx
38
+ interface Customer {
39
+ id: number;
40
+ name: string;
41
+ country: string;
42
+ }
43
+
44
+ const { filteredData } = useFilter<Customer>({
45
+ data: customers,
46
+ field: 'name',
47
+ value: query
48
+ });
49
+ // filteredData is Customer[]
50
+ ```
51
+
52
+ ## SSR / Next.js
53
+
54
+ Hooks can be imported from server components without extra setup. Any file that touches the DOM is marked `'use client'` internally, so it moves to the client boundary on demand.
@@ -0,0 +1,25 @@
1
+ # useAttrSelector
2
+
3
+ Produce a stable, unique string from React.useId, handy for scoping CSS and DOM selectors.
4
+
5
+ ## Usage
6
+
7
+ ```tsx
8
+ import { useAttrSelector } from '@primereact/hooks/use-attr-selector';
9
+ ```
10
+
11
+ ```tsx
12
+ const selector = useAttrSelector('panel-'); // e.g. "panel-r0"
13
+ ```
14
+
15
+ Pass an optional prefix; the hook strips colons and other delimiters React adds to `useId()` so the result is safe to use inside attribute selectors like `[data-scope="panel-r0"]`.
16
+
17
+ ## Signature
18
+
19
+ ```ts
20
+ function useAttrSelector(prefix?: string): string;
21
+ ```
22
+
23
+ ## When to use it
24
+
25
+ Reach for this when you need a unique string that also works as a CSS selector fragment, scoped styles, data attributes, or query targets inside a single component instance.
@@ -0,0 +1,31 @@
1
+ # useControlledState
2
+
3
+ State that works controlled or uncontrolled, following the React convention of value + onChange with a defaultValue fallback.
4
+
5
+ ## Usage
6
+
7
+ ```tsx
8
+ import { useControlledState } from '@primereact/hooks/use-controlled-state';
9
+ ```
10
+
11
+ ```tsx
12
+ const [value, setValue, isControlled] = useControlledState({
13
+ value: props.value,
14
+ defaultValue: props.defaultValue,
15
+ onChange: props.onChange
16
+ });
17
+ ```
18
+
19
+ When the parent passes `value`, the hook stays controlled and delegates every update through `onChange`. When `value` is `undefined`, it owns the state internally, `defaultValue` seeds the first render.
20
+
21
+ ## Signature
22
+
23
+ ```ts
24
+ function useControlledState<T, E = T>(options: { value?: T; defaultValue?: T; onChange?: (next: E) => void }): [T | undefined, (next: T | ((prev?: T) => T)) => void, boolean];
25
+ ```
26
+
27
+ The returned tuple is `[value, setValue, isControlled]`. `isControlled` is a boolean frozen at mount, matching how React decides controlled vs uncontrolled inputs.
28
+
29
+ ## When to use it
30
+
31
+ Any reusable component that exposes both `value` / `onChange` and a `defaultValue`. This hook handles the glue so you don't branch on `value === undefined` everywhere.
@@ -0,0 +1,37 @@
1
+ # useEventListener
2
+
3
+ Attach DOM event listeners declaratively, with automatic cleanup and a bind/unbind pair for manual control.
4
+
5
+ ## Usage
6
+
7
+ ```tsx
8
+ import { useEventListener } from '@primereact/hooks/use-event-listener';
9
+ ```
10
+
11
+ ```tsx
12
+ const [bind, unbind] = useEventListener({
13
+ target: 'document',
14
+ type: 'click',
15
+ listener: (event) => console.log(event),
16
+ when: true
17
+ });
18
+ ```
19
+
20
+ The listener is attached when `when` is `true` and torn down automatically on unmount. Toggle `when` to pause without unmounting.
21
+
22
+ ## Options
23
+
24
+ - `target`, `'document' | 'window' | 'body' | HTMLElement | (() => HTMLElement) | Ref | string | null`. Accepts a selector string, a ref, or a function that resolves the element on demand.
25
+ - `type`, event name, e.g. `'click'`, `'keydown'`, or a custom event.
26
+ - `listener`, handler function.
27
+ - `options?`, standard `addEventListener` options (`capture`, `passive`, `once`).
28
+ - `when?`, defaults to `true`; set `false` to disable.
29
+
30
+ ## Manual control
31
+
32
+ The returned `[bind, unbind]` lets you attach/detach imperatively, useful when you want to listen in response to a user action rather than a prop:
33
+
34
+ ```tsx
35
+ <button onClick={() => bind()}>Listen</button>
36
+ <button onClick={() => unbind()}>Stop</button>
37
+ ```
@@ -0,0 +1,312 @@
1
+ # useFilter
2
+
3
+ Generic filter hook for flat collections, with built-in match modes, accent-insensitive matching, locale support, and custom matcher registration.
4
+
5
+ ## Usage
6
+
7
+ ```tsx
8
+ import { useFilter } from '@primereact/hooks/use-filter';
9
+ ```
10
+
11
+ ```tsx
12
+ const { filteredData, value, setValue, isFiltered } = useFilter({
13
+ data: products,
14
+ field: ['name', 'category'],
15
+ matchMode: 'contains'
16
+ });
17
+ ```
18
+
19
+ `useFilter` is a framework-level hook from `@primereact/hooks` that takes arbitrary data plus one or more filter rules and returns the filtered result. The same built-in matcher registry powers DataTable's filter feature, so behaviour stays consistent across any component built on top of it.
20
+
21
+ ## Signature
22
+
23
+ ```ts
24
+ function useFilter<T, TMode extends string = BuiltInMatchMode>(options: UseFilterOptions<T, TMode>): UseFilterReturn<T, TMode>;
25
+ ```
26
+
27
+ ## Rules
28
+
29
+ A rule targets one field (or an array of fields for multi-field search) with a value and a match mode.
30
+
31
+ ```tsx
32
+ defaultRules: [
33
+ { field: 'name', value: 'iphone', matchMode: 'startsWith' },
34
+ { field: ['name', 'category', 'description'], value: 'blue' },
35
+ { field: 'price', value: [100, 500], matchMode: 'between' }
36
+ ];
37
+ ```
38
+
39
+ Composite rules carry multiple constraints tied by an AND/OR operator:
40
+
41
+ ```tsx
42
+ {
43
+ field: 'name',
44
+ operator: 'and',
45
+ constraints: [
46
+ { value: 'A', matchMode: 'startsWith' },
47
+ { value: 'Z', matchMode: 'notEquals' }
48
+ ]
49
+ }
50
+ ```
51
+
52
+ ## Basic
53
+
54
+ For the common "single field/multi-field search" case you can skip the `rules` array and use the `field` / `value` / `matchMode` shorthand.
55
+
56
+ ```tsx
57
+ 'use client';
58
+ import { ProductService, type Product } from '@/shared/services/product.service';
59
+ import { Search } from '@primeicons/react/search';
60
+ import { useFilter } from '@primereact/hooks/use-filter';
61
+ import { IconField } from '@primereact/ui/iconfield';
62
+ import { InputText } from '@primereact/ui/inputtext';
63
+ import { Tag } from '@primereact/ui/tag';
64
+ import Image from 'next/image';
65
+ import * as React from 'react';
66
+
67
+ const statusSeverity: Record<string, 'success' | 'warn' | 'danger'> = {
68
+ INSTOCK: 'success',
69
+ LOWSTOCK: 'warn',
70
+ OUTOFSTOCK: 'danger'
71
+ };
72
+
73
+ export default function BasicDemo() {
74
+ const [products, setProducts] = React.useState<Product[]>([]);
75
+
76
+ React.useEffect(() => {
77
+ setProducts(ProductService.getProductsData().slice(0, 12));
78
+ }, []);
79
+
80
+ const [search, setSearch] = React.useState('');
81
+
82
+ const { filteredData } = useFilter<Product>({
83
+ data: products,
84
+ field: ['name', 'category', 'code'],
85
+ value: search,
86
+ matchMode: 'contains'
87
+ });
88
+
89
+ return (
90
+ <div className="w-full flex flex-col gap-3">
91
+ <IconField.Root className="w-full sm:max-w-sm">
92
+ <IconField.Inset>
93
+ <Search />
94
+ </IconField.Inset>
95
+ <InputText
96
+ type="search"
97
+ placeholder="Search name, category, code..."
98
+ value={search}
99
+ onChange={(e: any) => setSearch(e.target.value)}
100
+ className="w-full"
101
+ />
102
+ </IconField.Root>
103
+ <div className="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 gap-3">
104
+ {filteredData.map((item) => (
105
+ <div key={item.id} className="p-3 border border-surface-200 dark:border-surface-700 rounded-md flex items-center gap-3">
106
+ <div className="relative shrink-0 w-12 h-12 rounded-md shadow overflow-hidden">
107
+ <Image
108
+ src={`https://primefaces.org/cdn/primevue/images/product/${item.image}`}
109
+ alt={item.name}
110
+ fill
111
+ sizes="48px"
112
+ className="object-cover"
113
+ />
114
+ </div>
115
+ <div className="flex flex-col gap-1 flex-1 min-w-0">
116
+ <span className="font-medium truncate">{item.name}</span>
117
+ <span className="text-xs text-surface-500 dark:text-surface-400 truncate">{item.code}</span>
118
+ <div className="flex flex-wrap items-center gap-2 mt-1">
119
+ <Tag severity="secondary">{item.category}</Tag>
120
+ <Tag severity={statusSeverity[item.inventoryStatus] ?? 'secondary'}>{item.inventoryStatus}</Tag>
121
+ </div>
122
+ </div>
123
+ </div>
124
+ ))}
125
+ </div>
126
+ {filteredData.length === 0 && (
127
+ <div className="p-4 text-center text-sm text-surface-500 dark:text-surface-400">No products match the search.</div>
128
+ )}
129
+ </div>
130
+ );
131
+ }
132
+ ```
133
+
134
+ ## Advanced, multi-rule + custom matcher
135
+
136
+ Pass `matchers` to register an ad-hoc matcher for a single hook instance. The cursor API (`rule(index)`) gives a typed handle per rule.
137
+
138
+ ```tsx
139
+ 'use client';
140
+ import { ProductService, type Product } from '@/shared/services/product.service';
141
+ import { ChevronDown } from '@primeicons/react/chevron-down';
142
+ import { Search } from '@primeicons/react/search';
143
+ import { useFilter, type FilterMatcher } from '@primereact/hooks/use-filter';
144
+ import { Button } from '@primereact/ui/button';
145
+ import { IconField } from '@primereact/ui/iconfield';
146
+ import { InputText } from '@primereact/ui/inputtext';
147
+ import { Select, type SelectValueChangeEvent } from '@primereact/ui/select';
148
+ import { Tag } from '@primereact/ui/tag';
149
+ import * as React from 'react';
150
+
151
+ const statusOptions = [
152
+ { label: 'All statuses', value: '' },
153
+ { label: 'In Stock', value: 'INSTOCK' },
154
+ { label: 'Low Stock', value: 'LOWSTOCK' },
155
+ { label: 'Out of Stock', value: 'OUTOFSTOCK' }
156
+ ];
157
+
158
+ const extraMatchers: Record<string, FilterMatcher> = {
159
+ expensive: (value) => Number(value) >= 100
160
+ };
161
+
162
+ export default function AdvancedDemo() {
163
+ const [products, setProducts] = React.useState<Product[]>([]);
164
+
165
+ React.useEffect(() => {
166
+ setProducts(ProductService.getProductsData().slice(0, 12));
167
+ }, []);
168
+
169
+ const { filteredData, rule, isFiltered, clearAll } = useFilter<Product, 'contains' | 'equals' | 'expensive'>({
170
+ data: products,
171
+ defaultRules: [
172
+ { field: 'name', value: null, matchMode: 'contains' },
173
+ { field: 'inventoryStatus', value: null, matchMode: 'equals' },
174
+ { field: 'price', value: null, matchMode: 'expensive' }
175
+ ],
176
+ matchers: extraMatchers
177
+ });
178
+
179
+ const nameRule = rule(0);
180
+ const statusRule = rule(1);
181
+ const priceRule = rule(2);
182
+
183
+ return (
184
+ <div className="w-full flex flex-col gap-3">
185
+ <div className="flex flex-wrap items-center gap-2">
186
+ <IconField.Root className="w-full sm:w-auto sm:flex-1 sm:max-w-xs">
187
+ <IconField.Inset>
188
+ <Search />
189
+ </IconField.Inset>
190
+ <InputText
191
+ type="search"
192
+ placeholder="Name contains..."
193
+ size="small"
194
+ value={(nameRule?.value as string) ?? ''}
195
+ onChange={(e: any) => nameRule?.setValue(e.target.value)}
196
+ className="w-full"
197
+ />
198
+ </IconField.Root>
199
+
200
+ <Select.Root
201
+ value={(statusRule?.value as string) ?? ''}
202
+ onValueChange={(e: SelectValueChangeEvent) => statusRule?.setValue(e.value || null)}
203
+ options={statusOptions}
204
+ optionLabel="label"
205
+ optionValue="value"
206
+ size="small"
207
+ >
208
+ <Select.Trigger className="w-full sm:w-40">
209
+ <Select.Value placeholder="Status" />
210
+ <Select.Indicator>
211
+ <ChevronDown />
212
+ </Select.Indicator>
213
+ </Select.Trigger>
214
+ <Select.Portal>
215
+ <Select.Positioner>
216
+ <Select.Popup>
217
+ <Select.List />
218
+ </Select.Popup>
219
+ </Select.Positioner>
220
+ </Select.Portal>
221
+ </Select.Root>
222
+
223
+ <Button
224
+ variant={priceRule?.value === true ? undefined : 'outlined'}
225
+ severity={priceRule?.value === true ? 'primary' : 'secondary'}
226
+ size="small"
227
+ onClick={() => priceRule?.setValue(priceRule?.value === true ? null : true)}
228
+ >
229
+ ≥ $100
230
+ </Button>
231
+
232
+ {isFiltered && (
233
+ <Button variant="text" size="small" onClick={clearAll}>
234
+ Clear
235
+ </Button>
236
+ )}
237
+ </div>
238
+
239
+ <div className="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 gap-3">
240
+ {filteredData.map((item) => (
241
+ <div key={item.id} className="p-3 border border-surface-200 dark:border-surface-700 rounded-md flex flex-col gap-1">
242
+ <span className="font-medium">{item.name}</span>
243
+ <span className="text-xs text-surface-500 dark:text-surface-400">{item.code}</span>
244
+ <div className="flex items-center justify-between mt-2">
245
+ <Tag severity="secondary">{item.category}</Tag>
246
+ <span className="font-semibold">${item.price}</span>
247
+ </div>
248
+ </div>
249
+ ))}
250
+ </div>
251
+ {filteredData.length === 0 && (
252
+ <div className="p-4 text-center text-sm text-surface-500 dark:text-surface-400">No products match the filters.</div>
253
+ )}
254
+ </div>
255
+ );
256
+ }
257
+ ```
258
+
259
+ ## Global matcher registry
260
+
261
+ For matchers you want available everywhere, `registerMatcher` writes into a shared table the hook consults alongside the built-ins.
262
+
263
+ ```tsx
264
+ import { registerMatcher } from '@primereact/hooks/use-filter';
265
+
266
+ registerMatcher('greaterThanAvg', (value, filter) => Number(value) > Number(filter));
267
+ ```
268
+
269
+ Local `matchers` option always wins when both are present. Call `unregisterMatcher(name)` to remove an entry (useful in tests).
270
+
271
+ ## Lazy (server-side)
272
+
273
+ Set `lazy: true` to skip client-side filtering. `filteredData` is returned unchanged. Whenever the rules settle (respecting `filterDelay`), `onLazyLoad` fires with the current rule set, typically you turn that into a request and replace `data` with the server response.
274
+
275
+ ```tsx
276
+ const [data, setData] = React.useState<Customer[]>([]);
277
+ const [query, setQuery] = React.useState('');
278
+
279
+ useFilter<Customer>({
280
+ data,
281
+ lazy: true,
282
+ field: ['name', 'country'],
283
+ value: query,
284
+ onValueChange: (v) => setQuery((v as string) ?? ''),
285
+ filterDelay: 300,
286
+ onLazyLoad: async ({ rules }) => {
287
+ const res = await fetch('/api/customers?' + toQuery(rules));
288
+ setData(await res.json());
289
+ }
290
+ });
291
+ ```
292
+
293
+ ## Cursor API
294
+
295
+ Setters by index:
296
+
297
+ ```tsx
298
+ const { setValue, setMatchMode, setOperator, setConstraintValue } = useFilter({ ... });
299
+
300
+ setValue(0, 'amy');
301
+ setConstraintValue(0, 1, 'Z');
302
+ ```
303
+
304
+ Or scoped by rule:
305
+
306
+ ```tsx
307
+ const { rule } = useFilter({ ... });
308
+
309
+ rule(0)?.setValue('amy');
310
+ rule('name')?.addConstraint('equals');
311
+ rule('name')?.constraint(1)?.setValue('Z');
312
+ ```
@@ -0,0 +1,40 @@
1
+ # useHotKey
2
+
3
+ Bind keyboard shortcuts with modifier combinations, single key or array of keys, with enable flag for scoping.
4
+
5
+ ## Usage
6
+
7
+ ```tsx
8
+ import { useHotKey } from '@primereact/hooks/use-hot-key';
9
+ ```
10
+
11
+ ```tsx
12
+ useHotKey('ctrl+k', (event) => {
13
+ event.preventDefault();
14
+ openCommandPalette();
15
+ });
16
+ ```
17
+
18
+ Modifiers are case-insensitive and accept aliases: `ctrl`/`control`, `cmd`/`meta`/`command`, `alt`/`option`, `shift`. The special strings `space` and `spacebar` resolve to the space key.
19
+
20
+ Pass an array of specs to bind multiple shortcuts to the same handler:
21
+
22
+ ```tsx
23
+ useHotKey(['ctrl+k', 'meta+k'], openCommandPalette);
24
+ ```
25
+
26
+ ## Signature
27
+
28
+ ```ts
29
+ function useHotKey(
30
+ keys: string | string[],
31
+ handler: (event: KeyboardEvent) => void,
32
+ options?: {
33
+ target?: Document | HTMLElement | null;
34
+ event?: 'keydown' | 'keyup' | 'keypress';
35
+ when?: boolean;
36
+ }
37
+ ): void;
38
+ ```
39
+
40
+ Defaults: listens on `document` for `keydown` while `when` is true. Pass a target element to scope shortcuts to a specific region.
@@ -0,0 +1,24 @@
1
+ # useId
2
+
3
+ Stable unique identifier with an optional explicit override.
4
+
5
+ ## Usage
6
+
7
+ ```tsx
8
+ import { useId } from '@primereact/hooks/use-id';
9
+ ```
10
+
11
+ ```tsx
12
+ const id = useId(); // e.g. "pr_id_r0"
13
+ const fixed = useId('my-panel'); // "my-panel"
14
+ ```
15
+
16
+ Pass a value to opt out of the generated id, useful for components that accept an optional `id` prop but need a fallback.
17
+
18
+ ## Signature
19
+
20
+ ```ts
21
+ function useId(initialValue?: string): string;
22
+ ```
23
+
24
+ Internally wraps `React.useId()` and strips the characters React inserts (`:`, `«`, `»`) so the result is safe to use in selectors and HTML attributes.
@@ -0,0 +1,42 @@
1
+ # useIntersectionObserver
2
+
3
+ A thin wrapper over the IntersectionObserver API with imperative observe/unobserve controls.
4
+
5
+ ## Usage
6
+
7
+ ```tsx
8
+ import { useIntersectionObserver } from '@primereact/hooks/use-intersection-observer';
9
+ ```
10
+
11
+ ```tsx
12
+ const ref = React.useRef<HTMLDivElement>(null);
13
+ const { observe, isIntersecting } = useIntersectionObserver({
14
+ threshold: 0.5,
15
+ onIntersect: (entries) => console.log(entries)
16
+ });
17
+
18
+ React.useEffect(() => {
19
+ if (ref.current) observe(ref.current);
20
+ }, [observe]);
21
+
22
+ return <div ref={ref}>{isIntersecting ? 'visible' : 'off-screen'}</div>;
23
+ ```
24
+
25
+ ## Options
26
+
27
+ Standard `IntersectionObserverInit` fields (`root`, `rootMargin`, `threshold`) plus:
28
+
29
+ - `disabled?`, skip creating the observer entirely.
30
+ - `onIntersect?(entries, observer)`, called on every intersection change.
31
+ - `fallback?()`, invoked when `IntersectionObserver` is unavailable.
32
+
33
+ ## Returns
34
+
35
+ - `entries`, current entries from the last callback.
36
+ - `isIntersecting`, `true` if any observed element is intersecting.
37
+ - `observe(el)`, `unobserve(el)`, `disconnect()`, imperative controls.
38
+ - `observer`, the underlying `IntersectionObserver` instance (or `null` when disabled).
39
+
40
+ ## When to use it
41
+
42
+ Pick this hook when you need direct control, observing multiple elements, toggling dynamically, or integrating with virtualization. For simple "is this one element visible" cases, you may prefer the lighter-weight visibility patterns built on top of it.
@@ -0,0 +1,24 @@
1
+ # useIsMobile
2
+
3
+ Boolean flag that flips when the viewport crosses a mobile breakpoint.
4
+
5
+ ## Usage
6
+
7
+ ```tsx
8
+ import { useIsMobile } from '@primereact/hooks/use-is-mobile';
9
+ ```
10
+
11
+ ```tsx
12
+ const isMobile = useIsMobile(); // default breakpoint: 768px
13
+ const isTablet = useIsMobile(1024); // custom breakpoint
14
+ ```
15
+
16
+ Returns `true` when the viewport width is **below** the breakpoint. Implemented on top of `useMatchMedia`, so it updates live as the window resizes.
17
+
18
+ ## Signature
19
+
20
+ ```ts
21
+ function useIsMobile(breakpoint?: number): boolean;
22
+ ```
23
+
24
+ Default breakpoint is 768px. Pass any max-width you care about, the hook resolves the corresponding media query for you.