@primereact/mcp 11.0.0-rc.2 → 11.0.0-rc.4

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 (61) hide show
  1. package/README.md +10 -9
  2. package/data/llms/headless/components/carousel/api.json +1 -1
  3. package/data/llms/headless/components/contextmenu/api.json +2 -2
  4. package/data/llms/headless/components/inputcolor/api.json +1 -1
  5. package/data/llms/headless/components/menu/api.json +2 -2
  6. package/data/llms/headless/components/textarea/api.json +6 -0
  7. package/data/llms/headless/guides/ai/mcp.md +113 -0
  8. package/data/llms/headless/guides/ai/plugin.md +139 -0
  9. package/data/llms/headless/guides/installation.md +1 -1
  10. package/data/llms/hooks/use-filter.md +2 -5
  11. package/data/llms/llms-full.txt +1199 -266
  12. package/data/llms/llms.txt +8 -0
  13. package/data/llms/primitive/components/carousel/api.json +1 -1
  14. package/data/llms/primitive/components/contextmenu/api.json +2 -2
  15. package/data/llms/primitive/components/inputcolor/api.json +1 -1
  16. package/data/llms/primitive/components/menu/api.json +8 -8
  17. package/data/llms/primitive/components/textarea/api.json +6 -6
  18. package/data/llms/primitive/guides/ai/mcp.md +113 -0
  19. package/data/llms/primitive/guides/ai/plugin.md +139 -0
  20. package/data/llms/primitive/guides/icons/primeicons.md +3 -3
  21. package/data/llms/primitive/guides/installation.md +1 -1
  22. package/data/llms/styled/components/datatable.md +20 -40
  23. package/data/llms/styled/components/dataview.md +12 -17
  24. package/data/llms/styled/components/dialog.md +11 -17
  25. package/data/llms/styled/components/fileupload.md +3 -3
  26. package/data/llms/styled/components/inputgroup.md +0 -65
  27. package/data/llms/styled/components/select.md +3 -5
  28. package/data/llms/styled/components/slider.md +1 -2
  29. package/data/llms/styled/components/stepper.md +1 -2
  30. package/data/llms/styled/components/toolbar.md +10 -10
  31. package/data/llms/styled/components/tooltip.md +46 -0
  32. package/data/llms/styled/guides/ai/mcp.md +113 -0
  33. package/data/llms/styled/guides/ai/plugin.md +139 -0
  34. package/data/llms/styled/guides/icons/primeicons.md +3 -3
  35. package/data/llms/styled/guides/installation/astro.md +1 -1
  36. package/data/llms/styled/guides/installation/configuration.md +135 -0
  37. package/data/llms/styled/guides/installation/nextjs.md +1 -1
  38. package/data/llms/styled/guides/installation/react-router.md +1 -1
  39. package/data/llms/styled/guides/installation/tanstack.md +1 -1
  40. package/data/llms/styled/guides/installation/vite.md +1 -1
  41. package/data/llms/tailwind/components/datatable.md +17 -34
  42. package/data/llms/tailwind/components/dataview.md +12 -17
  43. package/data/llms/tailwind/components/dialog.md +12 -17
  44. package/data/llms/tailwind/components/select.md +1 -2
  45. package/data/llms/tailwind/components/slider.md +1 -2
  46. package/data/llms/tailwind/components/toolbar.md +10 -7
  47. package/data/llms/tailwind/guides/ai/mcp.md +113 -0
  48. package/data/llms/tailwind/guides/ai/plugin.md +139 -0
  49. package/data/llms/tailwind/guides/icons/primeicons.md +3 -3
  50. package/data/llms/tailwind/guides/installation/astro.md +1 -1
  51. package/data/llms/tailwind/guides/installation/nextjs.md +1 -1
  52. package/data/llms/tailwind/guides/installation/react-router.md +1 -1
  53. package/data/llms/tailwind/guides/installation/tanstack.md +1 -1
  54. package/data/llms/tailwind/guides/installation/vite.md +1 -1
  55. package/data/manifest.json +2400 -1694
  56. package/data/mcp-data.json +1375 -542
  57. package/dist/index.d.ts +2 -3
  58. package/dist/index.js +1 -1
  59. package/package.json +9 -4
  60. package/data/llms/manifest.json +0 -12409
  61. package/data/llms/mcp-data.json +0 -14481
@@ -56,7 +56,7 @@ export default function Preview() {
56
56
  <Label htmlFor="tw-name" className="text-sm font-semibold">
57
57
  Name
58
58
  </Label>
59
- <InputText id="tw-name" defaultValue="Amanda Miller" />
59
+ <InputText data-autofocus id="tw-name" defaultValue="Amanda Miller" />
60
60
  </div>
61
61
  <div className="flex flex-col gap-1">
62
62
  <Label htmlFor="tw-username" className="text-sm font-semibold">
@@ -181,7 +181,7 @@ export default function BasicDemo() {
181
181
  <div className="flex flex-col gap-4">
182
182
  <div className="flex flex-col gap-1.5">
183
183
  <Label htmlFor="name">Name</Label>
184
- <InputText id="name" defaultValue="Amanda Miller" />
184
+ <InputText id="name" defaultValue="Amanda Miller" data-autofocus />
185
185
  </div>
186
186
  <div className="flex flex-col gap-1.5">
187
187
  <Label htmlFor="email">Email</Label>
@@ -226,6 +226,7 @@ import {
226
226
  DialogTitle,
227
227
  DialogTrigger
228
228
  } from '@/components/ui/dialog';
229
+ import { Textarea } from '@/components/ui/textarea';
229
230
 
230
231
  export default function DraggableDemo() {
231
232
  return (
@@ -249,8 +250,10 @@ export default function DraggableDemo() {
249
250
  <p className="text-sm text-surface-500 dark:text-surface-400 mt-0 mb-0">
250
251
  Drag this dialog by its header to reposition it anywhere on the screen.
251
252
  </p>
252
- <textarea
253
- className="w-full h-32 p-3 rounded-md border border-surface-200 dark:border-surface-700 bg-surface-0 dark:bg-surface-900 text-surface-700 dark:text-surface-0 text-sm resize-none focus:outline-none focus:ring-2 focus:ring-primary-500"
253
+ <Textarea
254
+ data-autofocus
255
+ rows={4}
256
+ className="w-full resize-none"
254
257
  placeholder="Type your note here..."
255
258
  defaultValue="Remember to review the design specs for the new dashboard layout before the meeting tomorrow."
256
259
  />
@@ -292,7 +295,7 @@ import {
292
295
  } from '@/components/ui/dialog';
293
296
  import { InputText } from '@/components/ui/inputtext';
294
297
  import { Label } from '@/components/ui/label';
295
- import { ArrowDown, ArrowDownLeft, ArrowDownRight, ArrowLeft, ArrowRight, ArrowUp, ArrowUpLeft, ArrowUpRight, Times } from '@primeicons/react';
298
+ import { Times } from '@primeicons/react';
296
299
  import { DialogRootChangeEvent, DialogRootProps } from 'primereact/dialog';
297
300
  import * as React from 'react';
298
301
 
@@ -310,39 +313,31 @@ export default function PositionDemo() {
310
313
  <div className="flex flex-wrap justify-center gap-2 mb-2">
311
314
  <Button onClick={() => openPosition('left')} severity="secondary" style={{ minWidth: '10rem' }}>
312
315
  Left
313
- <ArrowLeft />
314
316
  </Button>
315
317
  <Button onClick={() => openPosition('right')} severity="secondary" style={{ minWidth: '10rem' }}>
316
318
  Right
317
- <ArrowRight />
318
319
  </Button>
319
320
  </div>
320
321
  <div className="flex flex-wrap justify-center gap-2 mb-2">
321
322
  <Button onClick={() => openPosition('topleft')} severity="secondary" style={{ minWidth: '10rem' }}>
322
323
  TopLeft
323
- <ArrowUpLeft />
324
324
  </Button>
325
325
  <Button onClick={() => openPosition('top')} severity="secondary" style={{ minWidth: '10rem' }}>
326
326
  Top
327
- <ArrowUp />
328
327
  </Button>
329
328
  <Button onClick={() => openPosition('topright')} severity="secondary" style={{ minWidth: '10rem' }}>
330
329
  TopRight
331
- <ArrowUpRight />
332
330
  </Button>
333
331
  </div>
334
332
  <div className="flex flex-wrap justify-center gap-2">
335
333
  <Button onClick={() => openPosition('bottomleft')} severity="secondary" style={{ minWidth: '10rem' }}>
336
334
  BottomLeft
337
- <ArrowDownLeft />
338
335
  </Button>
339
336
  <Button onClick={() => openPosition('bottom')} severity="secondary" style={{ minWidth: '10rem' }}>
340
337
  Bottom
341
- <ArrowDown />
342
338
  </Button>
343
339
  <Button onClick={() => openPosition('bottomright')} severity="secondary" style={{ minWidth: '10rem' }}>
344
340
  BottomRight
345
- <ArrowDownRight />
346
341
  </Button>
347
342
  </div>
348
343
  <Dialog open={open} onOpenChange={(e: DialogRootChangeEvent) => setOpen(e.value as boolean)} position={position}>
@@ -365,7 +360,7 @@ export default function PositionDemo() {
365
360
  <Label htmlFor="username" className="font-semibold">
366
361
  Username
367
362
  </Label>
368
- <InputText id="username" />
363
+ <InputText data-autofocus id="username" />
369
364
  </div>
370
365
  <div className="flex flex-col gap-1">
371
366
  <Label htmlFor="email" className="font-semibold">
@@ -590,7 +585,7 @@ export default function ModalDemo() {
590
585
  <Label htmlFor="username" className="font-semibold">
591
586
  Username
592
587
  </Label>
593
- <InputText id="username" />
588
+ <InputText data-autofocus id="username" />
594
589
  </div>
595
590
  <div className="flex flex-col gap-1">
596
591
  <Label htmlFor="email" className="font-semibold">
@@ -661,7 +656,7 @@ export default function WithoutModalDemo() {
661
656
  <Label htmlFor="username" className="font-semibold">
662
657
  Username
663
658
  </Label>
664
- <InputText id="username" />
659
+ <InputText data-autofocus id="username" />
665
660
  </div>
666
661
  <div className="flex flex-col gap-1">
667
662
  <Label htmlFor="email" className="font-semibold">
@@ -1147,7 +1142,7 @@ export default function ResponsiveDemo() {
1147
1142
  <Label htmlFor="eventName" className="text-sm font-semibold">
1148
1143
  Event Name
1149
1144
  </Label>
1150
- <InputText id="eventName" placeholder="e.g. Team Standup" />
1145
+ <InputText data-autofocus id="eventName" placeholder="e.g. Team Standup" />
1151
1146
  </div>
1152
1147
  <div className="flex flex-col md:flex-row gap-4">
1153
1148
  <div className="flex flex-col gap-1 flex-1">
@@ -469,7 +469,6 @@ import {
469
469
  SelectValue
470
470
  } from '@/components/ui/select';
471
471
  import { Search } from '@primeicons/react';
472
- import Image from 'next/image';
473
472
  import type { SelectValueChangeEvent } from 'primereact/select';
474
473
  import * as React from 'react';
475
474
 
@@ -532,7 +531,7 @@ export default function FilterDemo() {
532
531
  {filteredCountries.map((country, index) => (
533
532
  <SelectOption key={country.code} index={index} uKey={country.code}>
534
533
  <div className="flex items-center gap-2">
535
- <Image
534
+ <img
536
535
  alt={country.name}
537
536
  src="https://primefaces.org/cdn/primevue/images/flag/flag_placeholder.png"
538
537
  className={`flag flag-${country.code.toLowerCase()} mr-2`}
@@ -224,7 +224,6 @@ import type { ToggleButtonGroupValueChangeEvent } from 'primereact/togglebuttong
224
224
  import { Slider } from '@/components/ui/slider';
225
225
  import { ToggleButton } from '@/components/ui/togglebutton';
226
226
  import { ToggleButtonGroup } from '@/components/ui/togglebuttongroup';
227
- import Image from 'next/image';
228
227
  import * as React from 'react';
229
228
 
230
229
  export default function FilterDemo() {
@@ -239,7 +238,7 @@ export default function FilterDemo() {
239
238
 
240
239
  return (
241
240
  <div className="flex flex-col items-center justify-center">
242
- <Image
241
+ <img
243
242
  alt="user header"
244
243
  className="w-80 rounded mb-6"
245
244
  src="https://primefaces.org/cdn/primevue/images/galleria/galleria1.jpg"
@@ -135,7 +135,10 @@ import { Search } from '@primeicons/react';
135
135
 
136
136
  export default function CustomDemo() {
137
137
  return (
138
- <Toolbar style={{ borderRadius: '3rem', padding: '0.75rem 1rem 0.75rem 1.5rem', background: 'var(--p-surface-900)', border: 'none' }}>
138
+ <Toolbar
139
+ className="@container"
140
+ style={{ borderRadius: '3rem', padding: '0.75rem 1rem 0.75rem 1.5rem', background: 'var(--p-surface-900)', border: 'none' }}
141
+ >
139
142
  <ToolbarStart>
140
143
  <div className="flex items-center gap-1">
141
144
  <i className="pi pi-prime text-xl" style={{ color: 'var(--p-primary-400)' }} />
@@ -143,24 +146,24 @@ export default function CustomDemo() {
143
146
  Brand
144
147
  </span>
145
148
  </div>
146
- <div className="ml-6 flex gap-1">
147
- <Button variant="text" size="small" className="text-surface-0 hover:bg-surface-700">
149
+ <div className="ml-6 hidden @min-[620px]:flex gap-1">
150
+ <Button variant="text" size="small" className="text-surface-0! hover:bg-surface-700!">
148
151
  Products
149
152
  </Button>
150
- <Button variant="text" size="small" className="text-surface-0 hover:bg-surface-700">
153
+ <Button variant="text" size="small" className="text-surface-0! hover:bg-surface-700!">
151
154
  Solutions
152
155
  </Button>
153
- <Button variant="text" size="small" className="text-surface-0 hover:bg-surface-700">
156
+ <Button variant="text" size="small" className="text-surface-0! hover:bg-surface-700!">
154
157
  Resources
155
158
  </Button>
156
- <Button variant="text" size="small" className="text-surface-0 hover:bg-surface-700">
159
+ <Button variant="text" size="small" className="text-surface-0! hover:bg-surface-700!">
157
160
  Pricing
158
161
  </Button>
159
162
  </div>
160
163
  </ToolbarStart>
161
164
  <ToolbarEnd>
162
165
  <div className="flex items-center gap-2">
163
- <Button variant="text" size="small" iconOnly aria-label="Search" className="text-surface-0 hover:bg-surface-700">
166
+ <Button variant="text" size="small" iconOnly aria-label="Search" className="text-surface-0! hover:bg-surface-700!">
164
167
  <Search />
165
168
  </Button>
166
169
  <Button severity="contrast" size="small">
@@ -0,0 +1,113 @@
1
+ # MCP Server
2
+
3
+ Connect AI assistants to PrimeReact component documentation, guides, examples, setup, and API metadata.
4
+
5
+ ## Introduction
6
+
7
+ [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) lets AI assistants call external tools. The `@primereact/mcp` package uses those tools to search and read the PrimeReact documentation included with the package.
8
+
9
+ - Find components, guides, examples, setup instructions, and hooks.
10
+ - Read mode-scoped component APIs and documentation sections.
11
+ - Check component usage against documented properties and callbacks.
12
+ - Return links to the related PrimeReact documentation when available.
13
+
14
+ The server requires Node.js 22 or newer. It is read-only and does not change your project files or PrimeReact configuration.
15
+
16
+ ## CLI Setup
17
+
18
+ The recommended setup is the [PrimeReact Plugin](./plugin). It installs this MCP server together with the PrimeReact skills for implementation, setup, theming, accessibility, and troubleshooting.
19
+
20
+ ```bash
21
+ pnpm dlx @primeui/cli plugin install --tool copilot --library primereact
22
+ pnpm dlx @primeui/cli doctor --tool copilot --library primereact
23
+ ```
24
+
25
+ Replace `copilot` with `claude`, `codex`, `gemini`, or `cursor` for another supported assistant. Use Manual Setup when you want the MCP server without the plugin skills.
26
+
27
+ ## Manual Setup
28
+
29
+ ### Claude Code
30
+
31
+ Add the server to your user configuration to use it in every project, or omit `-s user` for the current project only.
32
+
33
+ ```bash
34
+ claude mcp add primereact -s user -- npx -y @primereact/mcp
35
+ ```
36
+
37
+ See the [Claude Code MCP documentation](https://docs.anthropic.com/en/docs/claude-code/mcp) for client-specific options.
38
+
39
+ ### VS Code
40
+
41
+ Create `.vscode/mcp.json` for project-level setup. To use the server across projects, add the same `servers` entry to your VS Code user MCP configuration.
42
+
43
+ ```json
44
+ {
45
+ "servers": {
46
+ "primereact": {
47
+ "command": "npx",
48
+ "args": ["-y", "@primereact/mcp"]
49
+ }
50
+ }
51
+ }
52
+ ```
53
+
54
+ See the [VS Code MCP documentation](https://code.visualstudio.com/docs/copilot/chat/mcp-servers) for more details.
55
+
56
+ ### OpenAI Codex
57
+
58
+ Add the server with the Codex CLI, or add the same configuration to `~/.codex/config.toml`.
59
+
60
+ ```bash
61
+ codex mcp add primereact -- npx -y @primereact/mcp
62
+ ```
63
+
64
+ ```toml
65
+ [mcp_servers.primereact]
66
+ command = "npx"
67
+ args = ["-y", "@primereact/mcp"]
68
+ ```
69
+
70
+ See the [OpenAI Codex MCP documentation](https://developers.openai.com/codex/mcp/) for more details.
71
+
72
+ ### Cursor
73
+
74
+ Create `.cursor/mcp.json` in your project or `~/.cursor/mcp.json` for global configuration.
75
+
76
+ ```json
77
+ {
78
+ "mcpServers": {
79
+ "primereact": {
80
+ "command": "npx",
81
+ "args": ["-y", "@primereact/mcp"]
82
+ }
83
+ }
84
+ }
85
+ ```
86
+
87
+ See the [Cursor MCP documentation](https://docs.cursor.com/context/model-context-protocol) for more details.
88
+
89
+ ## Tools
90
+
91
+ The PrimeReact MCP server provides eight tools.
92
+
93
+ | Tool | Purpose |
94
+ | ---------------- | ----------------------------------------------------------------------------------------- |
95
+ | `list` | List available components, guides, examples, resources, or modes. |
96
+ | `search` | Search generated component, guide, section, API, hook, and example text. |
97
+ | `get_component` | Read mode-scoped component or hook documentation, API metadata, and available sections. |
98
+ | `get_guide` | Read a generated PrimeReact guide and its source metadata. |
99
+ | `get_example` | Return an example from a documented component or hook section. |
100
+ | `get_setup` | Return setup guidance for a supported PrimeReact mode and environment. |
101
+ | `validate_usage` | Validate component usage against generated PrimeReact API metadata in one selected mode. |
102
+ | `version` | Report the server version and the status of its documentation data, tools, and resources. |
103
+
104
+ ## Data and Validation
105
+
106
+ The MCP package includes a generated copy of the PrimeReact documentation. This keeps the server usable without a PrimeReact source checkout and makes its answers match the installed package version. Results include a `primeui://primereact` resource URI and, when available, a link to the public documentation.
107
+
108
+ - The tools do not edit files, install dependencies, or update configuration.
109
+ - Component, setup, example, and validation calls stay in one selected mode: `styled`, `tailwind`, `primitive`, `headless`, or `hooks` where supported.
110
+ - `validate_usage` checks documented API metadata. If the required metadata is unavailable or the mode is ambiguous, it reports that limitation instead of guessing.
111
+ - Run your project type checks, tests, and browser checks after making changes. MCP validation does not replace them.
112
+
113
+ If you installed the PrimeReact Plugin, do not register the MCP server again with a manual configuration. Run the CLI `doctor` command if the server is missing or appears more than once.
@@ -0,0 +1,139 @@
1
+ # Plugin
2
+
3
+ Install PrimeReact workflow skills and the PrimeReact MCP server in a supported AI assistant.
4
+
5
+ ## Introduction
6
+
7
+ The PrimeReact Plugin adds PrimeReact skills and the PrimeReact MCP server to Claude Code, Codex, GitHub Copilot, Cursor, or Gemini CLI. Plugins installed through GitHub Copilot CLI are also available in VS Code. Install the plugin when you want the assistant to follow PrimeReact-specific, mode-aware workflows as well as read the current component documentation.
8
+
9
+ The plugin is published from the [primefaces/primeui-plugins](https://github.com/primefaces/primeui-plugins) repository. Use `@primeui/cli` for the same installation flow across supported assistants, or follow the manual setup for your client.
10
+
11
+ ## What It Installs
12
+
13
+ Installing the PrimeReact Plugin adds:
14
+
15
+ - Six focused skills covering routing, implementation, setup, theming, accessibility, and troubleshooting.
16
+ - The PrimeReact MCP server, configured with `@primereact/mcp`.
17
+ - The manifest required by the selected assistant.
18
+
19
+ PrimeVue and PrimeNG are separate plugins. Installing this plugin does not change your application or install PrimeReact dependencies in the project.
20
+
21
+ ## Skills
22
+
23
+ Each skill covers one type of PrimeReact work. The skills use `@primereact/mcp` when they need mode-scoped component APIs, examples, setup guides, hooks, or usage validation.
24
+
25
+ | Skill | Use it for |
26
+ | ------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
27
+ | `primereact-router` | Select the PrimeReact mode and choose the skill that matches the task. |
28
+ | `primereact-component-implementation` | Choose and implement components, composition, properties, callbacks, and documented hooks. |
29
+ | `primereact-setup-installation` | Configure a supported React environment in `styled`, `tailwind`, `primitive`, or `headless` mode. |
30
+ | `primereact-theming-customization` | Work with styled presets and tokens, Tailwind-owned components, primitives, headless markup, or pass-through APIs without mixing modes. |
31
+ | `primereact-accessibility-icons` | Review semantics, keyboard behavior, focus, accessible names, PrimeIcons, and custom icons in the selected mode. |
32
+ | `primereact-audit-troubleshooting` | Find invalid APIs and troubleshoot components, setup, MCP, plugin, or duplicate configurations. |
33
+
34
+ The current PrimeReact v11 documentation does not provide a supported version migration guide, so the plugin does not advertise a migration workflow.
35
+
36
+ Skill names use the `primereact-` prefix because assistants may keep skills from several plugins in one shared namespace.
37
+
38
+ ## How Skills Work
39
+
40
+ You do not need to select a skill manually. Describe the PrimeReact task and the router chooses the relevant workflow.
41
+
42
+ - The router checks that the project uses React and PrimeReact, then selects `styled`, `tailwind`, `primitive`, or `headless` from project evidence. It uses `hooks` only for a documented standalone hook.
43
+ - The selected skill reads only the component or guide information needed for that mode.
44
+ - When component metadata is available, the skill validates the final PrimeReact usage in the same mode.
45
+ - If project evidence is ambiguous or the documentation does not confirm an API, the skill reports the limitation instead of borrowing guidance from another mode.
46
+
47
+ After implementation, run the checks required by your project, including type checking, tests, browser behavior, accessibility, and visual review where applicable.
48
+
49
+ ## CLI Setup
50
+
51
+ Set `--tool` to the assistant you use. Keep `--library primereact` when you run the command outside a project or from a project that uses more than one PrimeUI library.
52
+
53
+ ```bash
54
+ pnpm dlx @primeui/cli plugin install --tool copilot --library primereact
55
+ ```
56
+
57
+ Supported tool values are `claude`, `codex`, `copilot`, `cursor`, and `gemini`. Use `copilot` for GitHub Copilot CLI and VS Code.
58
+
59
+ ## Lifecycle and Doctor
60
+
61
+ Use the same CLI to check the installation, update the plugin, or remove it. Each command applies only to PrimeReact in the selected assistant.
62
+
63
+ ```bash
64
+ pnpm dlx @primeui/cli plugin status --tool copilot --library primereact
65
+ pnpm dlx @primeui/cli plugin update --tool copilot --library primereact
66
+ pnpm dlx @primeui/cli plugin remove --tool copilot --library primereact
67
+ pnpm dlx @primeui/cli doctor --tool copilot --library primereact
68
+
69
+ # Machine-readable diagnostics
70
+ pnpm dlx @primeui/cli doctor --tool copilot --library primereact --json
71
+ ```
72
+
73
+ Run `doctor` when the plugin or MCP server is not working as expected. It checks the installation, starts the MCP server, confirms the available tools, and tests documentation retrieval and component validation. Checks that an assistant does not expose are reported as unsupported.
74
+
75
+ ## Manual Setup
76
+
77
+ ### Source
78
+
79
+ Claude Code, Codex, and GitHub Copilot can install the plugin directly from the public marketplace. For manual Cursor or Gemini CLI setup, clone the repository to a location you intend to keep because those clients use the selected `plugins/primereact` directory after installation.
80
+
81
+ ```bash
82
+ git clone --branch main https://github.com/primefaces/primeui-plugins.git ~/primeui-plugins
83
+ ls ~/primeui-plugins/plugins/primereact
84
+ ```
85
+
86
+ ### Claude Code
87
+
88
+ Add the PrimeUI marketplace, then install only the PrimeReact plugin.
89
+
90
+ ```bash
91
+ claude plugin marketplace add primefaces/primeui-plugins
92
+ claude plugin install primereact@primeui
93
+ claude plugin list --json
94
+ ```
95
+
96
+ ### Codex
97
+
98
+ Add the PrimeUI marketplace, inspect its catalog, then install only the PrimeReact plugin. Use the interactive plugin browser to manage enablement.
99
+
100
+ ```bash
101
+ codex plugin marketplace add primefaces/primeui-plugins
102
+ codex plugin list --available
103
+ codex plugin add primereact@primeui
104
+ codex plugin list
105
+ ```
106
+
107
+ ### VS Code Copilot
108
+
109
+ Install the PrimeReact Plugin through GitHub Copilot CLI. VS Code automatically discovers plugins installed by Copilot CLI, so it does not need a separate plugin configuration.
110
+
111
+ ```bash
112
+ copilot plugin marketplace add primefaces/primeui-plugins
113
+ copilot plugin install primereact@primeui
114
+ ```
115
+
116
+ The installation includes the seven PrimeReact skills and the PrimeReact MCP server. See the [VS Code Agent Plugins](https://code.visualstudio.com/docs/agent-customization/agent-plugins) and [GitHub Copilot CLI Plugins](https://docs.github.com/en/copilot/how-tos/copilot-cli/customize-copilot/plugins-finding-installing) documentation for client-specific details.
117
+
118
+ ### Cursor
119
+
120
+ For local setup, link the PrimeReact plugin directory into Cursor's local-plugin directory. Restart Cursor or run `Developer: Reload Window` after creating the link.
121
+
122
+ ```bash
123
+ mkdir -p ~/.cursor/plugins/local
124
+ ln -s ~/primeui-plugins/plugins/primereact ~/.cursor/plugins/local/primereact
125
+ ```
126
+
127
+ Use Cursor's Customize screen to manage the plugin, its skills, and its MCP server.
128
+
129
+ ### Gemini CLI
130
+
131
+ Validate the PrimeReact extension directory, then install it from the persistent checkout. Do not install from the repository root because it contains plugins for all three PrimeUI libraries.
132
+
133
+ ```bash
134
+ gemini extensions validate ~/primeui-plugins/plugins/primereact
135
+ gemini extensions install ~/primeui-plugins/plugins/primereact --consent
136
+ gemini extensions list --output-format json
137
+ ```
138
+
139
+ Gemini CLI 0.29.3 requires `experimental.extensionManagement` to be enabled. The installed extension contains the seven PrimeReact skills and the PrimeReact MCP server.
@@ -95,7 +95,7 @@ export default function ColorDemo() {
95
95
 
96
96
  ## Spin
97
97
 
98
- Use a spin animation utility like `animate-spin` from Tailwind apply rotation.
98
+ Use the `spin` property to apply a rotation animation to an icon. Alternatively, a spin animation utility such as `animate-spin` from Tailwind can also be used.
99
99
 
100
100
  ```tsx
101
101
  import { Cog } from '@primeicons/react/cog';
@@ -104,8 +104,8 @@ import { Spinner } from '@primeicons/react/spinner';
104
104
  export default function SpinDemo() {
105
105
  return (
106
106
  <div className="flex justify-center gap-4">
107
- <Spinner className="animate-spin" size={32} />
108
- <Cog className="animate-spin" size={32} />
107
+ <Spinner spin size={32} />
108
+ <Cog spin size={32} />
109
109
  </div>
110
110
  );
111
111
  }
@@ -57,7 +57,7 @@ PrimeReact Tailwind components are distributed through a shadcn-compatible regis
57
57
  Install PrimeReact along with the icon package and the Tailwind utilities the components rely on:
58
58
 
59
59
  ```bash
60
- npm install primereact@11.0.0-rc.2 @primeicons/react@8.0.0-rc.1 tailwindcss-primeui tailwind-merge
60
+ npm install primereact @primeicons/react tailwindcss-primeui tailwind-merge
61
61
  ```
62
62
 
63
63
  </DocStep>
@@ -57,7 +57,7 @@ PrimeReact Tailwind components are distributed through a shadcn-compatible regis
57
57
  Install PrimeReact along with the icon package and the Tailwind utilities the components rely on:
58
58
 
59
59
  ```bash
60
- npm install primereact@11.0.0-rc.2 @primeicons/react@8.0.0-rc.1 tailwindcss-primeui tailwind-merge
60
+ npm install primereact @primeicons/react tailwindcss-primeui tailwind-merge
61
61
  ```
62
62
 
63
63
  </DocStep>
@@ -57,7 +57,7 @@ PrimeReact Tailwind components are distributed through a shadcn-compatible regis
57
57
  Install PrimeReact along with the icon package and the Tailwind utilities the components rely on:
58
58
 
59
59
  ```bash
60
- npm install primereact@11.0.0-rc.2 @primeicons/react@8.0.0-rc.1 tailwindcss-primeui tailwind-merge
60
+ npm install primereact @primeicons/react tailwindcss-primeui tailwind-merge
61
61
  ```
62
62
 
63
63
  </DocStep>
@@ -57,7 +57,7 @@ PrimeReact Tailwind components are distributed through a shadcn-compatible regis
57
57
  Install PrimeReact along with the icon package and the Tailwind utilities the components rely on:
58
58
 
59
59
  ```bash
60
- npm install primereact@11.0.0-rc.2 @primeicons/react@8.0.0-rc.1 tailwindcss-primeui tailwind-merge
60
+ npm install primereact @primeicons/react tailwindcss-primeui tailwind-merge
61
61
  ```
62
62
 
63
63
  </DocStep>
@@ -57,7 +57,7 @@ PrimeReact Tailwind components are distributed through a shadcn-compatible regis
57
57
  Install PrimeReact along with the icon package and the Tailwind utilities the components rely on:
58
58
 
59
59
  ```bash
60
- npm install primereact@11.0.0-rc.2 @primeicons/react@8.0.0-rc.1 tailwindcss-primeui tailwind-merge
60
+ npm install primereact @primeicons/react tailwindcss-primeui tailwind-merge
61
61
  ```
62
62
 
63
63
  </DocStep>