@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.
- package/LICENSE.md +45 -0
- package/README.md +94 -0
- package/data/llms/headless/add-ons/introduction.md +16 -0
- package/data/llms/headless/components/accordion/api.json +252 -0
- package/data/llms/headless/components/accordion.md +196 -0
- package/data/llms/headless/components/animateonscroll/api.json +88 -0
- package/data/llms/headless/components/animateonscroll.md +141 -0
- package/data/llms/headless/components/autocomplete/api.json +787 -0
- package/data/llms/headless/components/autocomplete.md +249 -0
- package/data/llms/headless/components/avatar/api.json +154 -0
- package/data/llms/headless/components/avatar.md +149 -0
- package/data/llms/headless/components/badge/api.json +68 -0
- package/data/llms/headless/components/badge.md +150 -0
- package/data/llms/headless/components/breadcrumb/api.json +142 -0
- package/data/llms/headless/components/breadcrumb.md +149 -0
- package/data/llms/headless/components/button/api.json +62 -0
- package/data/llms/headless/components/button.md +73 -0
- package/data/llms/headless/components/card/api.json +36 -0
- package/data/llms/headless/components/card.md +96 -0
- package/data/llms/headless/components/carousel/api.json +793 -0
- package/data/llms/headless/components/carousel.md +196 -0
- package/data/llms/headless/components/checkbox/api.json +593 -0
- package/data/llms/headless/components/checkbox.md +184 -0
- package/data/llms/headless/components/chip/api.json +107 -0
- package/data/llms/headless/components/chip.md +141 -0
- package/data/llms/headless/components/collapsible/api.json +301 -0
- package/data/llms/headless/components/collapsible.md +136 -0
- package/data/llms/headless/components/compare/api.json +533 -0
- package/data/llms/headless/components/compare.md +142 -0
- package/data/llms/headless/components/contextmenu/api.json +495 -0
- package/data/llms/headless/components/contextmenu.md +282 -0
- package/data/llms/headless/components/datatable/api.json +1680 -0
- package/data/llms/headless/components/datatable.md +258 -0
- package/data/llms/headless/components/dataview/api.json +199 -0
- package/data/llms/headless/components/dataview.md +147 -0
- package/data/llms/headless/components/datepicker/api.json +2796 -0
- package/data/llms/headless/components/datepicker.md +456 -0
- package/data/llms/headless/components/dialog/api.json +626 -0
- package/data/llms/headless/components/dialog.md +280 -0
- package/data/llms/headless/components/divider/api.json +130 -0
- package/data/llms/headless/components/divider.md +92 -0
- package/data/llms/headless/components/drawer/api.json +425 -0
- package/data/llms/headless/components/drawer.md +220 -0
- package/data/llms/headless/components/fieldset/api.json +195 -0
- package/data/llms/headless/components/fieldset.md +154 -0
- package/data/llms/headless/components/fileupload/api.json +905 -0
- package/data/llms/headless/components/fileupload.md +323 -0
- package/data/llms/headless/components/floatlabel/api.json +36 -0
- package/data/llms/headless/components/floatlabel.md +19 -0
- package/data/llms/headless/components/fluid/api.json +36 -0
- package/data/llms/headless/components/fluid.md +19 -0
- package/data/llms/headless/components/focustrap/api.json +135 -0
- package/data/llms/headless/components/focustrap.md +125 -0
- package/data/llms/headless/components/gallery/api.json +1349 -0
- package/data/llms/headless/components/gallery.md +355 -0
- package/data/llms/headless/components/iconfield/api.json +62 -0
- package/data/llms/headless/components/iconfield.md +19 -0
- package/data/llms/headless/components/iftalabel/api.json +62 -0
- package/data/llms/headless/components/iftalabel.md +19 -0
- package/data/llms/headless/components/inplace/api.json +340 -0
- package/data/llms/headless/components/inplace.md +153 -0
- package/data/llms/headless/components/inputcolor/api.json +469 -0
- package/data/llms/headless/components/inputcolor.md +253 -0
- package/data/llms/headless/components/inputgroup/api.json +62 -0
- package/data/llms/headless/components/inputgroup.md +19 -0
- package/data/llms/headless/components/inputnumber/api.json +554 -0
- package/data/llms/headless/components/inputnumber.md +167 -0
- package/data/llms/headless/components/inputotp/api.json +276 -0
- package/data/llms/headless/components/inputotp.md +130 -0
- package/data/llms/headless/components/inputpassword/api.json +180 -0
- package/data/llms/headless/components/inputpassword.md +117 -0
- package/data/llms/headless/components/inputtags/api.json +497 -0
- package/data/llms/headless/components/inputtags.md +298 -0
- package/data/llms/headless/components/inputtext/api.json +81 -0
- package/data/llms/headless/components/inputtext.md +109 -0
- package/data/llms/headless/components/knob/api.json +429 -0
- package/data/llms/headless/components/knob.md +151 -0
- package/data/llms/headless/components/label/api.json +62 -0
- package/data/llms/headless/components/label.md +19 -0
- package/data/llms/headless/components/listbox/api.json +814 -0
- package/data/llms/headless/components/listbox.md +194 -0
- package/data/llms/headless/components/menu/api.json +1247 -0
- package/data/llms/headless/components/menu.md +283 -0
- package/data/llms/headless/components/message/api.json +131 -0
- package/data/llms/headless/components/message.md +143 -0
- package/data/llms/headless/components/metergroup/api.json +266 -0
- package/data/llms/headless/components/metergroup.md +129 -0
- package/data/llms/headless/components/motion/api.json +237 -0
- package/data/llms/headless/components/motion.md +160 -0
- package/data/llms/headless/components/navigationmenu/api.json +220 -0
- package/data/llms/headless/components/navigationmenu.md +166 -0
- package/data/llms/headless/components/orderlist/api.json +196 -0
- package/data/llms/headless/components/orderlist.md +221 -0
- package/data/llms/headless/components/organizationchart/api.json +372 -0
- package/data/llms/headless/components/organizationchart.md +254 -0
- package/data/llms/headless/components/paginator/api.json +311 -0
- package/data/llms/headless/components/paginator.md +187 -0
- package/data/llms/headless/components/panel/api.json +195 -0
- package/data/llms/headless/components/panel.md +150 -0
- package/data/llms/headless/components/picklist/api.json +293 -0
- package/data/llms/headless/components/picklist.md +270 -0
- package/data/llms/headless/components/popover/api.json +405 -0
- package/data/llms/headless/components/popover.md +301 -0
- package/data/llms/headless/components/portal/api.json +56 -0
- package/data/llms/headless/components/portal.md +102 -0
- package/data/llms/headless/components/positioner/api.json +165 -0
- package/data/llms/headless/components/positioner.md +181 -0
- package/data/llms/headless/components/progressbar/api.json +87 -0
- package/data/llms/headless/components/progressbar.md +122 -0
- package/data/llms/headless/components/progressspinner/api.json +337 -0
- package/data/llms/headless/components/progressspinner.md +128 -0
- package/data/llms/headless/components/radiobutton/api.json +569 -0
- package/data/llms/headless/components/radiobutton.md +195 -0
- package/data/llms/headless/components/rating/api.json +347 -0
- package/data/llms/headless/components/rating.md +181 -0
- package/data/llms/headless/components/scrollarea/api.json +730 -0
- package/data/llms/headless/components/scrollarea.md +232 -0
- package/data/llms/headless/components/select/api.json +829 -0
- package/data/llms/headless/components/select.md +262 -0
- package/data/llms/headless/components/sidebar/api.json +433 -0
- package/data/llms/headless/components/sidebar.md +266 -0
- package/data/llms/headless/components/skeleton/api.json +68 -0
- package/data/llms/headless/components/skeleton.md +95 -0
- package/data/llms/headless/components/slider/api.json +559 -0
- package/data/llms/headless/components/slider.md +158 -0
- package/data/llms/headless/components/speeddial/api.json +459 -0
- package/data/llms/headless/components/speeddial.md +181 -0
- package/data/llms/headless/components/splitter/api.json +582 -0
- package/data/llms/headless/components/splitter.md +159 -0
- package/data/llms/headless/components/stepper/api.json +385 -0
- package/data/llms/headless/components/stepper.md +183 -0
- package/data/llms/headless/components/styleclass/api.json +134 -0
- package/data/llms/headless/components/styleclass.md +129 -0
- package/data/llms/headless/components/tabs/api.json +336 -0
- package/data/llms/headless/components/tabs.md +158 -0
- package/data/llms/headless/components/tag/api.json +62 -0
- package/data/llms/headless/components/tag.md +121 -0
- package/data/llms/headless/components/terminal/api.json +117 -0
- package/data/llms/headless/components/terminal.md +183 -0
- package/data/llms/headless/components/textarea/api.json +81 -0
- package/data/llms/headless/components/textarea.md +110 -0
- package/data/llms/headless/components/timeline/api.json +270 -0
- package/data/llms/headless/components/timeline.md +117 -0
- package/data/llms/headless/components/toast/api.json +455 -0
- package/data/llms/headless/components/toast.md +277 -0
- package/data/llms/headless/components/togglebutton/api.json +357 -0
- package/data/llms/headless/components/togglebutton.md +183 -0
- package/data/llms/headless/components/toggleswitch/api.json +326 -0
- package/data/llms/headless/components/toggleswitch.md +164 -0
- package/data/llms/headless/components/toolbar/api.json +68 -0
- package/data/llms/headless/components/toolbar.md +96 -0
- package/data/llms/headless/components/tooltip/api.json +478 -0
- package/data/llms/headless/components/tooltip.md +233 -0
- package/data/llms/headless/components/tree/api.json +1297 -0
- package/data/llms/headless/components/tree.md +297 -0
- package/data/llms/headless/components/treetable/api.json +1680 -0
- package/data/llms/headless/components/treetable.md +177 -0
- package/data/llms/headless/guides/ai/llms.md +25 -0
- package/data/llms/headless/guides/installation.md +126 -0
- package/data/llms/headless/guides/introduction.md +20 -0
- package/data/llms/headless/guides/misc/accessibility.md +228 -0
- package/data/llms/headless/llms.md +25 -0
- package/data/llms/headless/resources/introduction.md +15 -0
- package/data/llms/hooks/gettingstarted/introduction.md +34 -0
- package/data/llms/hooks/gettingstarted/setup.md +54 -0
- package/data/llms/hooks/use-attr-selector.md +25 -0
- package/data/llms/hooks/use-controlled-state.md +31 -0
- package/data/llms/hooks/use-event-listener.md +37 -0
- package/data/llms/hooks/use-filter.md +312 -0
- package/data/llms/hooks/use-hot-key.md +40 -0
- package/data/llms/hooks/use-id.md +24 -0
- package/data/llms/hooks/use-intersection-observer.md +42 -0
- package/data/llms/hooks/use-is-mobile.md +24 -0
- package/data/llms/hooks/use-key-filter.md +139 -0
- package/data/llms/hooks/use-local-storage.md +28 -0
- package/data/llms/hooks/use-mask.md +53 -0
- package/data/llms/hooks/use-match-media.md +28 -0
- package/data/llms/hooks/use-mount-effect.md +25 -0
- package/data/llms/hooks/use-mounted.md +36 -0
- package/data/llms/hooks/use-number-formatter.md +48 -0
- package/data/llms/hooks/use-presence.md +44 -0
- package/data/llms/hooks/use-previous.md +28 -0
- package/data/llms/hooks/use-props.md +37 -0
- package/data/llms/hooks/use-queue-task.md +29 -0
- package/data/llms/hooks/use-scrolltop.md +87 -0
- package/data/llms/hooks/use-sortable-list.md +226 -0
- package/data/llms/hooks/use-tree-filter.md +216 -0
- package/data/llms/hooks/use-unmount-effect.md +23 -0
- package/data/llms/hooks/use-update-effect.md +27 -0
- package/data/llms/hooks/use-view-transition.md +31 -0
- package/data/llms/hooks/use-visibility-change.md +30 -0
- package/data/llms/llms-full.txt +125291 -0
- package/data/llms/llms.txt +379 -0
- package/data/llms/manifest.json +12409 -0
- package/data/llms/mcp-data.json +14481 -0
- package/data/llms/primitive/add-ons/introduction.md +16 -0
- package/data/llms/primitive/components/accordion/api.json +1411 -0
- package/data/llms/primitive/components/accordion.md +231 -0
- package/data/llms/primitive/components/animateonscroll/api.json +193 -0
- package/data/llms/primitive/components/animateonscroll.md +91 -0
- package/data/llms/primitive/components/autocomplete/api.json +3167 -0
- package/data/llms/primitive/components/autocomplete.md +344 -0
- package/data/llms/primitive/components/avatar/api.json +703 -0
- package/data/llms/primitive/components/avatar.md +134 -0
- package/data/llms/primitive/components/badge/api.json +363 -0
- package/data/llms/primitive/components/badge.md +118 -0
- package/data/llms/primitive/components/breadcrumb/api.json +1162 -0
- package/data/llms/primitive/components/breadcrumb.md +196 -0
- package/data/llms/primitive/components/button/api.json +246 -0
- package/data/llms/primitive/components/button.md +114 -0
- package/data/llms/primitive/components/buttongroup/api.json +168 -0
- package/data/llms/primitive/components/buttongroup.md +43 -0
- package/data/llms/primitive/components/card/api.json +1252 -0
- package/data/llms/primitive/components/card.md +159 -0
- package/data/llms/primitive/components/carousel/api.json +1374 -0
- package/data/llms/primitive/components/carousel.md +220 -0
- package/data/llms/primitive/components/checkbox/api.json +697 -0
- package/data/llms/primitive/components/checkbox.md +160 -0
- package/data/llms/primitive/components/checkboxgroup/api.json +252 -0
- package/data/llms/primitive/components/checkboxgroup.md +58 -0
- package/data/llms/primitive/components/chip/api.json +853 -0
- package/data/llms/primitive/components/chip.md +135 -0
- package/data/llms/primitive/components/collapsible/api.json +581 -0
- package/data/llms/primitive/components/collapsible.md +133 -0
- package/data/llms/primitive/components/compare/api.json +909 -0
- package/data/llms/primitive/components/compare.md +156 -0
- package/data/llms/primitive/components/contextmenu/api.json +3454 -0
- package/data/llms/primitive/components/contextmenu.md +483 -0
- package/data/llms/primitive/components/datatable/api.json +7832 -0
- package/data/llms/primitive/components/datatable.md +561 -0
- package/data/llms/primitive/components/dataview/api.json +819 -0
- package/data/llms/primitive/components/dataview.md +163 -0
- package/data/llms/primitive/components/datepicker/api.json +9055 -0
- package/data/llms/primitive/components/datepicker.md +760 -0
- package/data/llms/primitive/components/dialog/api.json +2491 -0
- package/data/llms/primitive/components/dialog.md +276 -0
- package/data/llms/primitive/components/divider/api.json +214 -0
- package/data/llms/primitive/components/divider.md +96 -0
- package/data/llms/primitive/components/drawer/api.json +1879 -0
- package/data/llms/primitive/components/drawer.md +220 -0
- package/data/llms/primitive/components/fieldset/api.json +1116 -0
- package/data/llms/primitive/components/fieldset.md +183 -0
- package/data/llms/primitive/components/fileupload/api.json +2445 -0
- package/data/llms/primitive/components/fileupload.md +282 -0
- package/data/llms/primitive/components/floatlabel/api.json +176 -0
- package/data/llms/primitive/components/floatlabel.md +47 -0
- package/data/llms/primitive/components/focustrap/api.json +241 -0
- package/data/llms/primitive/components/focustrap.md +93 -0
- package/data/llms/primitive/components/gallery/api.json +3622 -0
- package/data/llms/primitive/components/gallery.md +387 -0
- package/data/llms/primitive/components/iconfield/api.json +322 -0
- package/data/llms/primitive/components/iconfield.md +53 -0
- package/data/llms/primitive/components/iftalabel/api.json +177 -0
- package/data/llms/primitive/components/iftalabel.md +47 -0
- package/data/llms/primitive/components/inplace/api.json +783 -0
- package/data/llms/primitive/components/inplace.md +141 -0
- package/data/llms/primitive/components/inputcolor/api.json +2211 -0
- package/data/llms/primitive/components/inputcolor.md +295 -0
- package/data/llms/primitive/components/inputnumber/api.json +469 -0
- package/data/llms/primitive/components/inputnumber.md +99 -0
- package/data/llms/primitive/components/inputotp/api.json +469 -0
- package/data/llms/primitive/components/inputotp.md +121 -0
- package/data/llms/primitive/components/inputpassword/api.json +278 -0
- package/data/llms/primitive/components/inputpassword.md +84 -0
- package/data/llms/primitive/components/inputtags/api.json +407 -0
- package/data/llms/primitive/components/inputtags.md +243 -0
- package/data/llms/primitive/components/inputtext/api.json +207 -0
- package/data/llms/primitive/components/inputtext.md +81 -0
- package/data/llms/primitive/components/knob/api.json +841 -0
- package/data/llms/primitive/components/knob.md +148 -0
- package/data/llms/primitive/components/label/api.json +177 -0
- package/data/llms/primitive/components/label.md +44 -0
- package/data/llms/primitive/components/listbox/api.json +1741 -0
- package/data/llms/primitive/components/listbox.md +206 -0
- package/data/llms/primitive/components/menu/api.json +3836 -0
- package/data/llms/primitive/components/menu.md +479 -0
- package/data/llms/primitive/components/message/api.json +863 -0
- package/data/llms/primitive/components/message.md +151 -0
- package/data/llms/primitive/components/metergroup/api.json +1222 -0
- package/data/llms/primitive/components/metergroup.md +209 -0
- package/data/llms/primitive/components/motion.md +112 -0
- package/data/llms/primitive/components/navigationmenu/api.json +298 -0
- package/data/llms/primitive/components/navigationmenu.md +184 -0
- package/data/llms/primitive/components/organizationchart.md +133 -0
- package/data/llms/primitive/components/paginator/api.json +1637 -0
- package/data/llms/primitive/components/paginator.md +223 -0
- package/data/llms/primitive/components/panel/api.json +1270 -0
- package/data/llms/primitive/components/panel.md +186 -0
- package/data/llms/primitive/components/popover/api.json +2281 -0
- package/data/llms/primitive/components/popover.md +277 -0
- package/data/llms/primitive/components/portal/api.json +176 -0
- package/data/llms/primitive/components/portal.md +79 -0
- package/data/llms/primitive/components/progressbar/api.json +857 -0
- package/data/llms/primitive/components/progressbar.md +153 -0
- package/data/llms/primitive/components/progressspinner/api.json +725 -0
- package/data/llms/primitive/components/progressspinner.md +133 -0
- package/data/llms/primitive/components/radiobutton/api.json +929 -0
- package/data/llms/primitive/components/radiobutton.md +201 -0
- package/data/llms/primitive/components/rating/api.json +878 -0
- package/data/llms/primitive/components/rating.md +160 -0
- package/data/llms/primitive/components/scrollarea/api.json +1187 -0
- package/data/llms/primitive/components/scrollarea.md +255 -0
- package/data/llms/primitive/components/select/api.json +3167 -0
- package/data/llms/primitive/components/select.md +351 -0
- package/data/llms/primitive/components/sidebar/api.json +3699 -0
- package/data/llms/primitive/components/sidebar.md +444 -0
- package/data/llms/primitive/components/skeleton/api.json +213 -0
- package/data/llms/primitive/components/skeleton.md +80 -0
- package/data/llms/primitive/components/slider/api.json +1066 -0
- package/data/llms/primitive/components/slider.md +161 -0
- package/data/llms/primitive/components/speeddial/api.json +1002 -0
- package/data/llms/primitive/components/speeddial.md +197 -0
- package/data/llms/primitive/components/splitter/api.json +901 -0
- package/data/llms/primitive/components/splitter.md +137 -0
- package/data/llms/primitive/components/stepper/api.json +2102 -0
- package/data/llms/primitive/components/stepper.md +253 -0
- package/data/llms/primitive/components/styleclass.md +399 -0
- package/data/llms/primitive/components/tabs/api.json +1705 -0
- package/data/llms/primitive/components/tabs.md +200 -0
- package/data/llms/primitive/components/tag/api.json +189 -0
- package/data/llms/primitive/components/tag.md +100 -0
- package/data/llms/primitive/components/terminal/api.json +1709 -0
- package/data/llms/primitive/components/terminal.md +227 -0
- package/data/llms/primitive/components/textarea/api.json +213 -0
- package/data/llms/primitive/components/textarea.md +83 -0
- package/data/llms/primitive/components/timeline/api.json +1180 -0
- package/data/llms/primitive/components/timeline.md +185 -0
- package/data/llms/primitive/components/toast/api.json +2102 -0
- package/data/llms/primitive/components/toast.md +291 -0
- package/data/llms/primitive/components/togglebutton/api.json +433 -0
- package/data/llms/primitive/components/togglebutton.md +161 -0
- package/data/llms/primitive/components/togglebuttongroup/api.json +276 -0
- package/data/llms/primitive/components/togglebuttongroup.md +61 -0
- package/data/llms/primitive/components/toggleswitch/api.json +681 -0
- package/data/llms/primitive/components/toggleswitch.md +149 -0
- package/data/llms/primitive/components/toolbar/api.json +646 -0
- package/data/llms/primitive/components/toolbar.md +126 -0
- package/data/llms/primitive/components/tooltip/api.json +1534 -0
- package/data/llms/primitive/components/tooltip.md +202 -0
- package/data/llms/primitive/components/tree/api.json +2952 -0
- package/data/llms/primitive/components/tree.md +292 -0
- package/data/llms/primitive/components/treetable.md +187 -0
- package/data/llms/primitive/components/visuallyhidden/api.json +186 -0
- package/data/llms/primitive/components/visuallyhidden.md +87 -0
- package/data/llms/primitive/guides/ai/llms.md +25 -0
- package/data/llms/primitive/guides/icons/customicons.md +47 -0
- package/data/llms/primitive/guides/icons/primeicons.md +112 -0
- package/data/llms/primitive/guides/installation.md +115 -0
- package/data/llms/primitive/guides/introduction.md +20 -0
- package/data/llms/primitive/guides/misc/accessibility.md +215 -0
- package/data/llms/primitive/guides/misc/passthrough.md +95 -0
- package/data/llms/primitive/guides/misc/rtl.md +27 -0
- package/data/llms/primitive/llms.md +25 -0
- package/data/llms/primitive/resources/introduction.md +15 -0
- package/data/llms/styled/add-ons/introduction.md +16 -0
- package/data/llms/styled/components/accordion.md +735 -0
- package/data/llms/styled/components/animateonscroll.md +264 -0
- package/data/llms/styled/components/autocomplete.md +1597 -0
- package/data/llms/styled/components/avatar.md +313 -0
- package/data/llms/styled/components/badge.md +213 -0
- package/data/llms/styled/components/breadcrumb.md +461 -0
- package/data/llms/styled/components/button/api.json +246 -0
- package/data/llms/styled/components/button.md +641 -0
- package/data/llms/styled/components/buttongroup.md +614 -0
- package/data/llms/styled/components/card.md +228 -0
- package/data/llms/styled/components/carousel.md +388 -0
- package/data/llms/styled/components/checkbox.md +329 -0
- package/data/llms/styled/components/checkboxgroup.md +619 -0
- package/data/llms/styled/components/chip.md +300 -0
- package/data/llms/styled/components/compare.md +271 -0
- package/data/llms/styled/components/contextmenu.md +550 -0
- package/data/llms/styled/components/datatable.md +8259 -0
- package/data/llms/styled/components/dataview.md +907 -0
- package/data/llms/styled/components/datepicker.md +2807 -0
- package/data/llms/styled/components/dialog.md +1047 -0
- package/data/llms/styled/components/divider.md +207 -0
- package/data/llms/styled/components/drawer.md +470 -0
- package/data/llms/styled/components/fieldset.md +334 -0
- package/data/llms/styled/components/fileupload.md +747 -0
- package/data/llms/styled/components/floatlabel/api.json +210 -0
- package/data/llms/styled/components/floatlabel.md +231 -0
- package/data/llms/styled/components/fluid/api.json +204 -0
- package/data/llms/styled/components/fluid.md +177 -0
- package/data/llms/styled/components/focustrap.md +203 -0
- package/data/llms/styled/components/gallery.md +553 -0
- package/data/llms/styled/components/iconfield/api.json +382 -0
- package/data/llms/styled/components/iconfield.md +385 -0
- package/data/llms/styled/components/iftalabel/api.json +237 -0
- package/data/llms/styled/components/iftalabel.md +158 -0
- package/data/llms/styled/components/inplace.md +312 -0
- package/data/llms/styled/components/inputcolor.md +674 -0
- package/data/llms/styled/components/inputgroup/api.json +399 -0
- package/data/llms/styled/components/inputgroup.md +604 -0
- package/data/llms/styled/components/inputmask.md +282 -0
- package/data/llms/styled/components/inputnumber.md +563 -0
- package/data/llms/styled/components/inputotp.md +335 -0
- package/data/llms/styled/components/inputpassword.md +630 -0
- package/data/llms/styled/components/inputtags.md +727 -0
- package/data/llms/styled/components/inputtext.md +190 -0
- package/data/llms/styled/components/keyfilter.md +289 -0
- package/data/llms/styled/components/knob.md +305 -0
- package/data/llms/styled/components/label/api.json +237 -0
- package/data/llms/styled/components/label.md +224 -0
- package/data/llms/styled/components/listbox.md +807 -0
- package/data/llms/styled/components/menu.md +1175 -0
- package/data/llms/styled/components/message.md +570 -0
- package/data/llms/styled/components/metergroup.md +449 -0
- package/data/llms/styled/components/navigationmenu.md +926 -0
- package/data/llms/styled/components/orderlist.md +519 -0
- package/data/llms/styled/components/organizationchart/api.json +1457 -0
- package/data/llms/styled/components/organizationchart.md +791 -0
- package/data/llms/styled/components/overlaymanager.md +519 -0
- package/data/llms/styled/components/paginator.md +506 -0
- package/data/llms/styled/components/panel.md +394 -0
- package/data/llms/styled/components/picklist.md +1004 -0
- package/data/llms/styled/components/popover.md +372 -0
- package/data/llms/styled/components/progressbar.md +438 -0
- package/data/llms/styled/components/progressspinner.md +128 -0
- package/data/llms/styled/components/radiobutton.md +488 -0
- package/data/llms/styled/components/rating/api.json +766 -0
- package/data/llms/styled/components/rating.md +518 -0
- package/data/llms/styled/components/scrollarea.md +627 -0
- package/data/llms/styled/components/select.md +2122 -0
- package/data/llms/styled/components/sidebar.md +1587 -0
- package/data/llms/styled/components/skeleton.md +226 -0
- package/data/llms/styled/components/slider.md +453 -0
- package/data/llms/styled/components/speeddial.md +723 -0
- package/data/llms/styled/components/splitter.md +536 -0
- package/data/llms/styled/components/stepper.md +614 -0
- package/data/llms/styled/components/tabs.md +543 -0
- package/data/llms/styled/components/tag.md +263 -0
- package/data/llms/styled/components/terminal.md +543 -0
- package/data/llms/styled/components/textarea.md +257 -0
- package/data/llms/styled/components/timeline.md +620 -0
- package/data/llms/styled/components/toast.md +1013 -0
- package/data/llms/styled/components/togglebutton.md +287 -0
- package/data/llms/styled/components/togglebuttongroup.md +328 -0
- package/data/llms/styled/components/toggleswitch.md +262 -0
- package/data/llms/styled/components/toolbar.md +187 -0
- package/data/llms/styled/components/tooltip.md +430 -0
- package/data/llms/styled/components/tree.md +1386 -0
- package/data/llms/styled/components/treetable.md +6842 -0
- package/data/llms/styled/guides/ai/llms.md +25 -0
- package/data/llms/styled/guides/configuration.md +151 -0
- package/data/llms/styled/guides/icons/customicons.md +47 -0
- package/data/llms/styled/guides/icons/primeicons.md +112 -0
- package/data/llms/styled/guides/installation/astro.md +97 -0
- package/data/llms/styled/guides/installation/manual.md +3 -0
- package/data/llms/styled/guides/installation/nextjs.md +129 -0
- package/data/llms/styled/guides/installation/react-router.md +88 -0
- package/data/llms/styled/guides/installation/tanstack.md +92 -0
- package/data/llms/styled/guides/installation/vite.md +91 -0
- package/data/llms/styled/guides/installation.md +42 -0
- package/data/llms/styled/guides/introduction.md +20 -0
- package/data/llms/styled/guides/misc/accessibility.md +211 -0
- package/data/llms/styled/guides/misc/animations.md +389 -0
- package/data/llms/styled/guides/misc/passthrough.md +95 -0
- package/data/llms/styled/guides/misc/rtl.md +27 -0
- package/data/llms/styled/guides/theming/styled.md +779 -0
- package/data/llms/styled/guides/theming/tailwind.md +473 -0
- package/data/llms/styled/guides/theming/unstyled.md +115 -0
- package/data/llms/styled/resources/introduction.md +15 -0
- package/data/llms/tailwind/add-ons/introduction.md +16 -0
- package/data/llms/tailwind/components/accordion.md +383 -0
- package/data/llms/tailwind/components/autocomplete.md +1346 -0
- package/data/llms/tailwind/components/avatar.md +305 -0
- package/data/llms/tailwind/components/badge.md +207 -0
- package/data/llms/tailwind/components/breadcrumb.md +387 -0
- package/data/llms/tailwind/components/button/api.json +246 -0
- package/data/llms/tailwind/components/button.md +617 -0
- package/data/llms/tailwind/components/buttongroup.md +599 -0
- package/data/llms/tailwind/components/card.md +224 -0
- package/data/llms/tailwind/components/carousel.md +329 -0
- package/data/llms/tailwind/components/checkbox.md +179 -0
- package/data/llms/tailwind/components/checkboxgroup.md +279 -0
- package/data/llms/tailwind/components/chip.md +304 -0
- package/data/llms/tailwind/components/compare.md +295 -0
- package/data/llms/tailwind/components/contextmenu.md +415 -0
- package/data/llms/tailwind/components/datatable.md +4062 -0
- package/data/llms/tailwind/components/dataview.md +864 -0
- package/data/llms/tailwind/components/datepicker.md +823 -0
- package/data/llms/tailwind/components/dialog.md +1216 -0
- package/data/llms/tailwind/components/divider.md +205 -0
- package/data/llms/tailwind/components/drawer.md +500 -0
- package/data/llms/tailwind/components/fieldset.md +326 -0
- package/data/llms/tailwind/components/fluid.md +117 -0
- package/data/llms/tailwind/components/iconfield.md +197 -0
- package/data/llms/tailwind/components/inplace.md +324 -0
- package/data/llms/tailwind/components/inputcolor.md +493 -0
- package/data/llms/tailwind/components/inputgroup.md +375 -0
- package/data/llms/tailwind/components/inputnumber.md +463 -0
- package/data/llms/tailwind/components/inputotp.md +255 -0
- package/data/llms/tailwind/components/inputpassword.md +543 -0
- package/data/llms/tailwind/components/inputtext.md +141 -0
- package/data/llms/tailwind/components/label.md +100 -0
- package/data/llms/tailwind/components/listbox.md +886 -0
- package/data/llms/tailwind/components/menu.md +1049 -0
- package/data/llms/tailwind/components/message.md +575 -0
- package/data/llms/tailwind/components/metergroup.md +510 -0
- package/data/llms/tailwind/components/navigationmenu.md +528 -0
- package/data/llms/tailwind/components/overlaymanager.md +567 -0
- package/data/llms/tailwind/components/paginator.md +306 -0
- package/data/llms/tailwind/components/panel.md +395 -0
- package/data/llms/tailwind/components/popover.md +424 -0
- package/data/llms/tailwind/components/progressbar.md +313 -0
- package/data/llms/tailwind/components/radiobutton.md +366 -0
- package/data/llms/tailwind/components/rating.md +300 -0
- package/data/llms/tailwind/components/scrollarea.md +638 -0
- package/data/llms/tailwind/components/select.md +1220 -0
- package/data/llms/tailwind/components/sidebar.md +1511 -0
- package/data/llms/tailwind/components/skeleton.md +236 -0
- package/data/llms/tailwind/components/slider.md +291 -0
- package/data/llms/tailwind/components/splitter.md +546 -0
- package/data/llms/tailwind/components/tabs.md +462 -0
- package/data/llms/tailwind/components/tag.md +255 -0
- package/data/llms/tailwind/components/textarea.md +170 -0
- package/data/llms/tailwind/components/timeline.md +656 -0
- package/data/llms/tailwind/components/toast.md +246 -0
- package/data/llms/tailwind/components/togglebutton.md +264 -0
- package/data/llms/tailwind/components/togglebuttongroup.md +262 -0
- package/data/llms/tailwind/components/toggleswitch.md +203 -0
- package/data/llms/tailwind/components/toolbar.md +192 -0
- package/data/llms/tailwind/components/tooltip.md +449 -0
- package/data/llms/tailwind/guides/ai/llms.md +25 -0
- package/data/llms/tailwind/guides/icons/customicons.md +47 -0
- package/data/llms/tailwind/guides/icons/primeicons.md +112 -0
- package/data/llms/tailwind/guides/installation/astro.md +165 -0
- package/data/llms/tailwind/guides/installation/manual.md +3 -0
- package/data/llms/tailwind/guides/installation/nextjs.md +169 -0
- package/data/llms/tailwind/guides/installation/react-router.md +157 -0
- package/data/llms/tailwind/guides/installation/tanstack.md +161 -0
- package/data/llms/tailwind/guides/installation/vite.md +160 -0
- package/data/llms/tailwind/guides/installation.md +42 -0
- package/data/llms/tailwind/guides/introduction.md +20 -0
- package/data/llms/tailwind/guides/misc/accessibility.md +205 -0
- package/data/llms/tailwind/guides/misc/passthrough.md +95 -0
- package/data/llms/tailwind/guides/misc/rtl.md +27 -0
- package/data/llms/tailwind/guides/theming/guide.md +179 -0
- package/data/llms/tailwind/guides/theming.md +191 -0
- package/data/llms/tailwind/llms.md +25 -0
- package/data/llms/tailwind/resources/introduction.md +15 -0
- package/data/manifest.json +12409 -0
- package/data/mcp-data.json +14481 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +2 -0
- package/package.json +61 -0
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
# useToggleButton
|
|
2
|
+
|
|
3
|
+
Hooks that manage toggle button pressed state and group value selection with single or multiple modes.
|
|
4
|
+
|
|
5
|
+
```tsx
|
|
6
|
+
'use client';
|
|
7
|
+
import { AlignCenter } from '@primeicons/react/align-center';
|
|
8
|
+
import { AlignJustify } from '@primeicons/react/align-justify';
|
|
9
|
+
import { AlignLeft } from '@primeicons/react/align-left';
|
|
10
|
+
import { AlignRight } from '@primeicons/react/align-right';
|
|
11
|
+
import { Bookmark } from '@primeicons/react/bookmark';
|
|
12
|
+
import { useToggleButton, type UseToggleButtonChangeEvent } from '@primereact/headless/togglebutton';
|
|
13
|
+
import { useToggleButtonGroup } from '@primereact/headless/togglebuttongroup';
|
|
14
|
+
|
|
15
|
+
const alignOptions = [
|
|
16
|
+
{ value: 'left', icon: AlignLeft },
|
|
17
|
+
{ value: 'center', icon: AlignCenter },
|
|
18
|
+
{ value: 'right', icon: AlignRight },
|
|
19
|
+
{ value: 'justify', icon: AlignJustify }
|
|
20
|
+
];
|
|
21
|
+
|
|
22
|
+
export default function BasicDemo() {
|
|
23
|
+
const toggle = useToggleButton();
|
|
24
|
+
const rootProps = toggle.getRootProps(false, false);
|
|
25
|
+
const indicatorProps = toggle.getIndicatorProps(false, false);
|
|
26
|
+
|
|
27
|
+
const group = useToggleButtonGroup({ allowEmpty: false });
|
|
28
|
+
|
|
29
|
+
return (
|
|
30
|
+
<div className="flex flex-col items-center gap-6">
|
|
31
|
+
<button
|
|
32
|
+
{...rootProps}
|
|
33
|
+
className="inline-flex items-center justify-center size-8 rounded-lg border border-surface-200 dark:border-surface-700 bg-surface-100 dark:bg-surface-900 text-surface-500 dark:text-surface-400 data-[pressed]:text-primary data-[pressed]:border-primary/30 data-[pressed]:bg-primary/10 cursor-pointer select-none transition-colors duration-200 focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-primary disabled:opacity-60 disabled:pointer-events-none"
|
|
34
|
+
>
|
|
35
|
+
<span {...indicatorProps}>
|
|
36
|
+
<Bookmark />
|
|
37
|
+
</span>
|
|
38
|
+
</button>
|
|
39
|
+
|
|
40
|
+
<div {...group.rootProps} className="inline-flex rounded-lg border border-surface-200 dark:border-surface-700">
|
|
41
|
+
{alignOptions.map((option) => {
|
|
42
|
+
const btn = useToggleButton({
|
|
43
|
+
pressed: group.isPressed(group.state.value, option.value),
|
|
44
|
+
onPressedChange: (e: UseToggleButtonChangeEvent) => group.updateChange({ ...e, value: option.value })
|
|
45
|
+
});
|
|
46
|
+
const btnRootProps = btn.getRootProps(false, false);
|
|
47
|
+
const Icon = option.icon;
|
|
48
|
+
|
|
49
|
+
return (
|
|
50
|
+
<button
|
|
51
|
+
key={option.value}
|
|
52
|
+
{...btnRootProps}
|
|
53
|
+
className="inline-flex items-center justify-center size-8 bg-surface-100 dark:bg-surface-900 text-surface-500 dark:text-surface-400 data-[pressed]:bg-primary data-[pressed]:text-primary-contrast border-r border-surface-200 dark:border-surface-700 last:border-r-0 cursor-pointer select-none transition-colors duration-200 focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-primary focus-visible:z-10 disabled:opacity-60 disabled:pointer-events-none"
|
|
54
|
+
>
|
|
55
|
+
<Icon className="size-4" />
|
|
56
|
+
</button>
|
|
57
|
+
);
|
|
58
|
+
})}
|
|
59
|
+
</div>
|
|
60
|
+
</div>
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Usage
|
|
66
|
+
|
|
67
|
+
```tsx
|
|
68
|
+
import { useToggleButton } from '@primereact/headless/togglebutton';
|
|
69
|
+
import { useToggleButtonGroup } from '@primereact/headless/togglebuttongroup';
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
```tsx
|
|
73
|
+
const toggle = useToggleButton();
|
|
74
|
+
|
|
75
|
+
<button {...toggle.getRootProps()}>
|
|
76
|
+
<span {...toggle.getIndicatorProps()}></span>
|
|
77
|
+
</button>;
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
`useToggleButton` manages a boolean pressed state and returns prop getter functions for root and indicator elements. `useToggleButtonGroup` coordinates multiple toggle buttons with single or multiple selection. See [Primitive](/docs/primitive/components/togglebutton) for a component-based API.
|
|
81
|
+
|
|
82
|
+
## Features
|
|
83
|
+
|
|
84
|
+
- **Prop getter API**, `getRootProps` and `getIndicatorProps` accept resolved disabled and invalid state at call time
|
|
85
|
+
- **Controlled or uncontrolled**, `pressed`/`onPressedChange` for owned state, `defaultPressed` for hook-managed state
|
|
86
|
+
- **Group coordination**, `useToggleButtonGroup` manages shared value and exposes `isPressed` / `updateChange` for children
|
|
87
|
+
- **Single or multiple**, group switches between radio-like and multi-select behavior via the `multiple` flag
|
|
88
|
+
- **Minimum selection**, group `allowEmpty` guarantees at least one button stays pressed when set to `false`
|
|
89
|
+
|
|
90
|
+
## Working with callbacks
|
|
91
|
+
|
|
92
|
+
### Controlled pressed state
|
|
93
|
+
|
|
94
|
+
Pass `pressed` and `onPressedChange` to own the state externally, required when toggles drive other UI or persist across reloads.
|
|
95
|
+
|
|
96
|
+
```tsx
|
|
97
|
+
const [pressed, setPressed] = React.useState(false);
|
|
98
|
+
|
|
99
|
+
useToggleButton({
|
|
100
|
+
pressed,
|
|
101
|
+
onPressedChange: (e) => setPressed(e.pressed)
|
|
102
|
+
});
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Dynamic disabled / invalid
|
|
106
|
+
|
|
107
|
+
`getRootProps(disabled, invalid)` accepts booleans so you can compute state at render time from form context.
|
|
108
|
+
|
|
109
|
+
```tsx
|
|
110
|
+
const rootProps = toggle.getRootProps(isSubmitting, hasError);
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Group as a formatting toolbar
|
|
114
|
+
|
|
115
|
+
Use `useToggleButtonGroup` with `multiple: true` to build a toolbar where each button represents an independent flag.
|
|
116
|
+
|
|
117
|
+
```tsx
|
|
118
|
+
const group = useToggleButtonGroup({ multiple: true });
|
|
119
|
+
|
|
120
|
+
const bold = useToggleButton({
|
|
121
|
+
pressed: group.isPressed(group.state.value, 'bold'),
|
|
122
|
+
onPressedChange: (e) => group.updateChange({ ...e, value: 'bold' })
|
|
123
|
+
});
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### Require a selection
|
|
127
|
+
|
|
128
|
+
Set `allowEmpty: false` when the group represents a mandatory choice like view mode or alignment.
|
|
129
|
+
|
|
130
|
+
```tsx
|
|
131
|
+
const group = useToggleButtonGroup({ allowEmpty: false, defaultValue: 'left' });
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### Read live state for custom UI
|
|
135
|
+
|
|
136
|
+
Expose `state.pressed` or `state.value` to show counts, icons, or status text derived from the current selection.
|
|
137
|
+
|
|
138
|
+
```tsx
|
|
139
|
+
const group = useToggleButtonGroup({ multiple: true });
|
|
140
|
+
// group.state.value: unknown[]
|
|
141
|
+
|
|
142
|
+
const toggle = useToggleButton();
|
|
143
|
+
// toggle.state.pressed: boolean
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Styling with data attributes
|
|
147
|
+
|
|
148
|
+
The prop getters include data attributes for styling.
|
|
149
|
+
|
|
150
|
+
| Scope | Part | States |
|
|
151
|
+
| ------------------- | ------ | ------------------------------- |
|
|
152
|
+
| `togglebutton` | `root` | `data-pressed`, `data-disabled` |
|
|
153
|
+
| `togglebuttongroup` | `root` | `data-multiple` |
|
|
154
|
+
|
|
155
|
+
```css
|
|
156
|
+
button[data-pressed] {
|
|
157
|
+
background-color: var(--p-primary-color);
|
|
158
|
+
color: var(--p-primary-contrast-color);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
button[data-disabled] {
|
|
162
|
+
pointer-events: none;
|
|
163
|
+
opacity: 0.6;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
[data-scope='togglebuttongroup'][data-multiple] {
|
|
167
|
+
/* styles for multi-select group */
|
|
168
|
+
}
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
## API
|
|
172
|
+
|
|
173
|
+
### useToggleButton
|
|
174
|
+
|
|
175
|
+
<DocTable name="useToggleButton" category="api" />
|
|
176
|
+
|
|
177
|
+
### useToggleButtonGroup
|
|
178
|
+
|
|
179
|
+
<DocTable name="useToggleButtonGroup" category="api" />
|
|
180
|
+
|
|
181
|
+
## Accessibility
|
|
182
|
+
|
|
183
|
+
Space or Enter toggles the pressed state while focused. See [Primitive](/docs/primitive/components/togglebutton#accessibility) for full WAI-ARIA compliance details.
|
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"name": "useToggleSwitch",
|
|
4
|
+
"source": "apps/showcase/assets/apidoc/usetoggleswitch.json",
|
|
5
|
+
"data": {
|
|
6
|
+
"description": "The useToggleSwitch manages the state and functionality of a toggle switch component.",
|
|
7
|
+
"interfaces": {
|
|
8
|
+
"UseToggleSwitchChangeEvent": {
|
|
9
|
+
"description": "Event fired when the toggle switch's checked state changes.",
|
|
10
|
+
"relatedProp": "",
|
|
11
|
+
"props": [
|
|
12
|
+
{
|
|
13
|
+
"name": "originalEvent",
|
|
14
|
+
"type": "E",
|
|
15
|
+
"default": "",
|
|
16
|
+
"description": "The original event that triggered the change."
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"name": "checked",
|
|
20
|
+
"type": "boolean",
|
|
21
|
+
"default": "",
|
|
22
|
+
"description": "The checked state of the toggle switch."
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"methods": []
|
|
26
|
+
},
|
|
27
|
+
"UseToggleSwitchProps": {
|
|
28
|
+
"description": "Defines valid properties in useToggleSwitch.",
|
|
29
|
+
"relatedProp": "",
|
|
30
|
+
"props": [
|
|
31
|
+
{
|
|
32
|
+
"name": "checked",
|
|
33
|
+
"type": "boolean",
|
|
34
|
+
"default": "",
|
|
35
|
+
"description": "When present, it specifies the input's checked state."
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"name": "defaultChecked",
|
|
39
|
+
"type": "boolean",
|
|
40
|
+
"default": "",
|
|
41
|
+
"description": "The default value for the input when not controlled by `checked` and `onCheckedChange` ."
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"name": "disabled",
|
|
45
|
+
"type": "boolean",
|
|
46
|
+
"default": "false",
|
|
47
|
+
"description": "Whether the toggle switch is disabled."
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"name": "invalid",
|
|
51
|
+
"type": "boolean",
|
|
52
|
+
"default": "false",
|
|
53
|
+
"description": "When present, it specifies that the toggle switch value is invalid."
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"name": "tabIndex",
|
|
57
|
+
"type": "number",
|
|
58
|
+
"default": "",
|
|
59
|
+
"description": "Index of the element in tabbing order."
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"name": "ariaLabel",
|
|
63
|
+
"type": "string",
|
|
64
|
+
"default": "",
|
|
65
|
+
"description": "Establishes a string value that labels the component."
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"name": "ariaLabelledby",
|
|
69
|
+
"type": "string",
|
|
70
|
+
"default": "",
|
|
71
|
+
"description": "Establishes relationships between the component and label(s) where its value should be one or more element IDs."
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"name": "onFocus",
|
|
75
|
+
"type": "FocusEventHandler<HTMLInputElement>",
|
|
76
|
+
"default": "",
|
|
77
|
+
"description": "Callback function that is called when the toggle switch is focused."
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"name": "onBlur",
|
|
81
|
+
"type": "FocusEventHandler<HTMLInputElement>",
|
|
82
|
+
"default": "",
|
|
83
|
+
"description": "Callback function that is called when the toggle switch loses focus."
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"name": "onCheckedChange",
|
|
87
|
+
"type": "(event: UseToggleSwitchChangeEvent) => void",
|
|
88
|
+
"default": "",
|
|
89
|
+
"description": "Callback fired when the toggle switch's checked state changes."
|
|
90
|
+
}
|
|
91
|
+
],
|
|
92
|
+
"methods": []
|
|
93
|
+
},
|
|
94
|
+
"UseToggleSwitchState": {
|
|
95
|
+
"description": "Defines valid state in useToggleSwitch.",
|
|
96
|
+
"relatedProp": "",
|
|
97
|
+
"props": [
|
|
98
|
+
{
|
|
99
|
+
"name": "checked",
|
|
100
|
+
"type": "boolean",
|
|
101
|
+
"default": "",
|
|
102
|
+
"description": "The checked state of the useToggleSwitch."
|
|
103
|
+
}
|
|
104
|
+
],
|
|
105
|
+
"methods": []
|
|
106
|
+
},
|
|
107
|
+
"UseToggleSwitchRootProps": {
|
|
108
|
+
"description": "Pre-built props for the toggle switch root element.",
|
|
109
|
+
"relatedProp": "",
|
|
110
|
+
"props": [
|
|
111
|
+
{
|
|
112
|
+
"name": "data-checked",
|
|
113
|
+
"type": "\"\"",
|
|
114
|
+
"default": "",
|
|
115
|
+
"description": "Data attribute when checked."
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
"name": "data-unchecked",
|
|
119
|
+
"type": "\"\"",
|
|
120
|
+
"default": "",
|
|
121
|
+
"description": "Data attribute when unchecked."
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
"name": "data-disabled",
|
|
125
|
+
"type": "\"\"",
|
|
126
|
+
"default": "",
|
|
127
|
+
"description": "Data attribute when disabled."
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"name": "data-invalid",
|
|
131
|
+
"type": "\"\"",
|
|
132
|
+
"default": "",
|
|
133
|
+
"description": "Data attribute when invalid."
|
|
134
|
+
}
|
|
135
|
+
],
|
|
136
|
+
"methods": []
|
|
137
|
+
},
|
|
138
|
+
"UseToggleSwitchInputProps": {
|
|
139
|
+
"description": "Pre-built props for the toggle switch input element.",
|
|
140
|
+
"relatedProp": "",
|
|
141
|
+
"props": [
|
|
142
|
+
{
|
|
143
|
+
"name": "type",
|
|
144
|
+
"type": "\"checkbox\"",
|
|
145
|
+
"default": "",
|
|
146
|
+
"description": "Input type."
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
"name": "role",
|
|
150
|
+
"type": "\"switch\"",
|
|
151
|
+
"default": "",
|
|
152
|
+
"description": "ARIA role."
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
"name": "checked",
|
|
156
|
+
"type": "boolean",
|
|
157
|
+
"default": "",
|
|
158
|
+
"description": "Checked state."
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
"name": "aria-checked",
|
|
162
|
+
"type": "boolean",
|
|
163
|
+
"default": "",
|
|
164
|
+
"description": "ARIA checked state."
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"name": "aria-invalid",
|
|
168
|
+
"type": "true",
|
|
169
|
+
"default": "",
|
|
170
|
+
"description": "ARIA invalid state."
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
"name": "tabIndex",
|
|
174
|
+
"type": "number",
|
|
175
|
+
"default": "",
|
|
176
|
+
"description": "Tab index."
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
"name": "aria-labelledby",
|
|
180
|
+
"type": "string",
|
|
181
|
+
"default": "",
|
|
182
|
+
"description": "ID of the element that labels the toggle switch."
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"name": "aria-label",
|
|
186
|
+
"type": "string",
|
|
187
|
+
"default": "",
|
|
188
|
+
"description": "ARIA label."
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
"name": "onFocus",
|
|
192
|
+
"type": "FocusEventHandler<HTMLInputElement>",
|
|
193
|
+
"default": "",
|
|
194
|
+
"description": "Focus handler."
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
"name": "onBlur",
|
|
198
|
+
"type": "FocusEventHandler<HTMLInputElement>",
|
|
199
|
+
"default": "",
|
|
200
|
+
"description": "Blur handler."
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
"name": "onChange",
|
|
204
|
+
"type": "(event: UseToggleSwitchChangeEvent) => void",
|
|
205
|
+
"default": "",
|
|
206
|
+
"description": "Change handler."
|
|
207
|
+
}
|
|
208
|
+
],
|
|
209
|
+
"methods": []
|
|
210
|
+
},
|
|
211
|
+
"UseToggleSwitchControlProps": {
|
|
212
|
+
"description": "Pre-built props for the toggle switch control element.",
|
|
213
|
+
"relatedProp": "",
|
|
214
|
+
"props": [
|
|
215
|
+
{
|
|
216
|
+
"name": "data-checked",
|
|
217
|
+
"type": "\"\"",
|
|
218
|
+
"default": "",
|
|
219
|
+
"description": "Data attribute when checked."
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
"name": "data-unchecked",
|
|
223
|
+
"type": "\"\"",
|
|
224
|
+
"default": "",
|
|
225
|
+
"description": "Data attribute when unchecked."
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
"name": "data-disabled",
|
|
229
|
+
"type": "\"\"",
|
|
230
|
+
"default": "",
|
|
231
|
+
"description": "Data attribute when disabled."
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
"name": "data-invalid",
|
|
235
|
+
"type": "\"\"",
|
|
236
|
+
"default": "",
|
|
237
|
+
"description": "Data attribute when invalid."
|
|
238
|
+
}
|
|
239
|
+
],
|
|
240
|
+
"methods": []
|
|
241
|
+
},
|
|
242
|
+
"UseToggleSwitchHandleProps": {
|
|
243
|
+
"description": "Pre-built props for the toggle switch handle element.",
|
|
244
|
+
"relatedProp": "",
|
|
245
|
+
"props": [
|
|
246
|
+
{
|
|
247
|
+
"name": "data-checked",
|
|
248
|
+
"type": "\"\"",
|
|
249
|
+
"default": "",
|
|
250
|
+
"description": "Data attribute when checked."
|
|
251
|
+
},
|
|
252
|
+
{
|
|
253
|
+
"name": "data-unchecked",
|
|
254
|
+
"type": "\"\"",
|
|
255
|
+
"default": "",
|
|
256
|
+
"description": "Data attribute when unchecked."
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
"name": "data-disabled",
|
|
260
|
+
"type": "\"\"",
|
|
261
|
+
"default": "",
|
|
262
|
+
"description": "Data attribute when disabled."
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
"name": "data-invalid",
|
|
266
|
+
"type": "\"\"",
|
|
267
|
+
"default": "",
|
|
268
|
+
"description": "Data attribute when invalid."
|
|
269
|
+
}
|
|
270
|
+
],
|
|
271
|
+
"methods": []
|
|
272
|
+
},
|
|
273
|
+
"UseToggleSwitchExposes": {
|
|
274
|
+
"description": "Defines the methods and properties exposed by useToggleSwitch.",
|
|
275
|
+
"relatedProp": "",
|
|
276
|
+
"props": [
|
|
277
|
+
{
|
|
278
|
+
"name": "state",
|
|
279
|
+
"type": "UseToggleSwitchState",
|
|
280
|
+
"default": "",
|
|
281
|
+
"description": "The state of the useToggleSwitch."
|
|
282
|
+
},
|
|
283
|
+
{
|
|
284
|
+
"name": "onChange",
|
|
285
|
+
"type": "(event: UseToggleSwitchChangeEvent) => void",
|
|
286
|
+
"default": "",
|
|
287
|
+
"description": "Callback fired when the useToggleSwitch's checked state changes."
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
"name": "rootProps",
|
|
291
|
+
"type": "UseToggleSwitchRootProps",
|
|
292
|
+
"default": "",
|
|
293
|
+
"description": "Pre-built props for the root element."
|
|
294
|
+
},
|
|
295
|
+
{
|
|
296
|
+
"name": "inputProps",
|
|
297
|
+
"type": "UseToggleSwitchInputProps",
|
|
298
|
+
"default": "",
|
|
299
|
+
"description": "Pre-built props for the input element."
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
"name": "controlProps",
|
|
303
|
+
"type": "UseToggleSwitchControlProps",
|
|
304
|
+
"default": "",
|
|
305
|
+
"description": "Pre-built props for the control element."
|
|
306
|
+
},
|
|
307
|
+
{
|
|
308
|
+
"name": "handleProps",
|
|
309
|
+
"type": "UseToggleSwitchHandleProps",
|
|
310
|
+
"default": "",
|
|
311
|
+
"description": "Pre-built props for the handle element."
|
|
312
|
+
}
|
|
313
|
+
],
|
|
314
|
+
"methods": []
|
|
315
|
+
}
|
|
316
|
+
},
|
|
317
|
+
"types": {
|
|
318
|
+
"UseToggleSwitchInstance": {
|
|
319
|
+
"description": "Instance of useToggleSwitch headless.",
|
|
320
|
+
"values": "HeadlessInstance<UseToggleSwitchProps, UseToggleSwitchState, UseToggleSwitchExposes>"
|
|
321
|
+
}
|
|
322
|
+
},
|
|
323
|
+
"variables": {}
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
]
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
# useToggleSwitch
|
|
2
|
+
|
|
3
|
+
Hook that manages toggle switch state, checked/unchecked logic, and ARIA attributes.
|
|
4
|
+
|
|
5
|
+
```tsx
|
|
6
|
+
'use client';
|
|
7
|
+
import * as React from 'react';
|
|
8
|
+
import { useToggleSwitch } from '@primereact/headless/toggleswitch';
|
|
9
|
+
|
|
10
|
+
export default function BasicDemo() {
|
|
11
|
+
const { rootProps, inputProps, controlProps, handleProps } = useToggleSwitch({ defaultChecked: false });
|
|
12
|
+
|
|
13
|
+
return (
|
|
14
|
+
<div className="flex justify-center">
|
|
15
|
+
<div className="flex items-center gap-2">
|
|
16
|
+
<div
|
|
17
|
+
{...rootProps}
|
|
18
|
+
className="relative inline-flex items-center has-[input:focus-visible]:outline-1 has-[input:focus-visible]:outline-offset-2 has-[input:focus-visible]:outline-primary has-[input:focus-visible]:outline rounded-full"
|
|
19
|
+
>
|
|
20
|
+
<input
|
|
21
|
+
{...(inputProps as unknown as React.InputHTMLAttributes<HTMLInputElement>)}
|
|
22
|
+
id="basic-switch"
|
|
23
|
+
className="absolute z-2 inset-0 w-full h-full opacity-0 cursor-pointer appearance-none m-0 p-0 border border-transparent rounded-full"
|
|
24
|
+
/>
|
|
25
|
+
<div
|
|
26
|
+
{...controlProps}
|
|
27
|
+
className="relative w-10 h-6 rounded-full transition-colors duration-200 bg-surface-300 dark:bg-surface-600 data-[checked]:bg-primary"
|
|
28
|
+
>
|
|
29
|
+
<span
|
|
30
|
+
{...handleProps}
|
|
31
|
+
className="absolute top-1 block w-4 h-4 rounded-full bg-white shadow transition-transform duration-200 translate-x-1 data-[checked]:translate-x-5"
|
|
32
|
+
/>
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
35
|
+
<label htmlFor="basic-switch" className="cursor-pointer select-none text-sm">
|
|
36
|
+
Notifications
|
|
37
|
+
</label>
|
|
38
|
+
</div>
|
|
39
|
+
</div>
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Usage
|
|
45
|
+
|
|
46
|
+
```tsx
|
|
47
|
+
import { useToggleSwitch } from '@primereact/headless/toggleswitch';
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
```tsx
|
|
51
|
+
const { rootProps, inputProps, controlProps, handleProps } = useToggleSwitch({
|
|
52
|
+
defaultChecked: false
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
<div {...rootProps}>
|
|
56
|
+
<input {...inputProps} />
|
|
57
|
+
<div {...controlProps}>
|
|
58
|
+
<span {...handleProps} />
|
|
59
|
+
</div>
|
|
60
|
+
</div>;
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
`useToggleSwitch` manages boolean toggle state with a hidden native checkbox using `role="switch"`. See [Primitive](/docs/primitive/components/toggleswitch) for a component-based API.
|
|
64
|
+
|
|
65
|
+
## Features
|
|
66
|
+
|
|
67
|
+
- **Composable parts**, spreads props onto `root`, `input`, `control`, and `handle` elements so the visual track and handle are fully yours
|
|
68
|
+
- **Switch semantics**, hidden native checkbox with `role="switch"` preserves screen reader and keyboard behavior
|
|
69
|
+
- **Controlled or uncontrolled**, drive via `checked`/`onCheckedChange` or let the hook manage state from `defaultChecked`
|
|
70
|
+
- **Validation flags**, `invalid` and `disabled` emit `aria-invalid`, `data-invalid`, and `data-disabled` across the parts
|
|
71
|
+
- **Animation-ready**, `data-checked` on `control` and `handle` lets you transition the track color and handle position via CSS
|
|
72
|
+
|
|
73
|
+
## Working with callbacks
|
|
74
|
+
|
|
75
|
+
### Controlled toggle switch
|
|
76
|
+
|
|
77
|
+
Pass `checked` and `onCheckedChange` to own the state externally, needed for settings pages, async toggles, or validation flows.
|
|
78
|
+
|
|
79
|
+
```tsx
|
|
80
|
+
const [checked, setChecked] = React.useState(false);
|
|
81
|
+
|
|
82
|
+
useToggleSwitch({
|
|
83
|
+
checked,
|
|
84
|
+
onCheckedChange: (e) => setChecked(e.checked)
|
|
85
|
+
});
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
The callback receives `{ originalEvent, checked }` where `checked` is the new boolean.
|
|
89
|
+
|
|
90
|
+
### Async confirmation before commit
|
|
91
|
+
|
|
92
|
+
Intercept `onCheckedChange` to run a confirmation or network call before applying the new state.
|
|
93
|
+
|
|
94
|
+
```tsx
|
|
95
|
+
const [checked, setChecked] = React.useState(false);
|
|
96
|
+
|
|
97
|
+
useToggleSwitch({
|
|
98
|
+
checked,
|
|
99
|
+
onCheckedChange: async (e) => {
|
|
100
|
+
if (await confirmChange(e.checked)) setChecked(e.checked);
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Invalid state tied to form validation
|
|
106
|
+
|
|
107
|
+
Flip `invalid` from your form state so CSS can react via `data-invalid`.
|
|
108
|
+
|
|
109
|
+
```tsx
|
|
110
|
+
useToggleSwitch({
|
|
111
|
+
invalid: formState.errors.notifications != null
|
|
112
|
+
});
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## Styling with data attributes
|
|
116
|
+
|
|
117
|
+
Every prop object includes `data-scope="toggleswitch"` and a `data-part` attribute. State-dependent attributes are added automatically.
|
|
118
|
+
|
|
119
|
+
| Scope | Part | States |
|
|
120
|
+
| -------------- | --------- | ----------------------------------------------- |
|
|
121
|
+
| `toggleswitch` | `root` | `data-checked`, `data-disabled`, `data-invalid` |
|
|
122
|
+
| `toggleswitch` | `control` | `data-checked`, `data-disabled`, `data-invalid` |
|
|
123
|
+
| `toggleswitch` | `handle` | `data-checked`, `data-disabled`, `data-invalid` |
|
|
124
|
+
|
|
125
|
+
```css
|
|
126
|
+
[data-scope='toggleswitch'][data-part='control'] {
|
|
127
|
+
width: 2.5rem;
|
|
128
|
+
height: 1.5rem;
|
|
129
|
+
border-radius: 9999px;
|
|
130
|
+
background: #ccc;
|
|
131
|
+
transition: background 200ms;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
[data-scope='toggleswitch'][data-part='control'][data-checked] {
|
|
135
|
+
background: var(--p-primary-color);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
[data-scope='toggleswitch'][data-part='handle'] {
|
|
139
|
+
width: 1rem;
|
|
140
|
+
height: 1rem;
|
|
141
|
+
border-radius: 9999px;
|
|
142
|
+
background: white;
|
|
143
|
+
transition: transform 200ms;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
[data-scope='toggleswitch'][data-part='handle'][data-checked] {
|
|
147
|
+
transform: translateX(1rem);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
[data-scope='toggleswitch'][data-part='root'][data-disabled] {
|
|
151
|
+
opacity: 0.5;
|
|
152
|
+
cursor: not-allowed;
|
|
153
|
+
}
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
## API
|
|
157
|
+
|
|
158
|
+
### useToggleSwitch
|
|
159
|
+
|
|
160
|
+
<DocTable name="useToggleSwitch" category="api" />
|
|
161
|
+
|
|
162
|
+
## Accessibility
|
|
163
|
+
|
|
164
|
+
Space toggles the on/off state while focused, matching native checkbox keyboard behavior. See [Primitive](/docs/primitive/components/toggleswitch#accessibility) for full WAI-ARIA compliance details.
|