@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.
- package/README.md +10 -9
- package/data/llms/headless/components/carousel/api.json +1 -1
- package/data/llms/headless/components/contextmenu/api.json +2 -2
- package/data/llms/headless/components/inputcolor/api.json +1 -1
- package/data/llms/headless/components/menu/api.json +2 -2
- package/data/llms/headless/components/textarea/api.json +6 -0
- package/data/llms/headless/guides/ai/mcp.md +113 -0
- package/data/llms/headless/guides/ai/plugin.md +139 -0
- package/data/llms/headless/guides/installation.md +1 -1
- package/data/llms/hooks/use-filter.md +2 -5
- package/data/llms/llms-full.txt +1199 -266
- package/data/llms/llms.txt +8 -0
- package/data/llms/primitive/components/carousel/api.json +1 -1
- package/data/llms/primitive/components/contextmenu/api.json +2 -2
- package/data/llms/primitive/components/inputcolor/api.json +1 -1
- package/data/llms/primitive/components/menu/api.json +8 -8
- package/data/llms/primitive/components/textarea/api.json +6 -6
- package/data/llms/primitive/guides/ai/mcp.md +113 -0
- package/data/llms/primitive/guides/ai/plugin.md +139 -0
- package/data/llms/primitive/guides/icons/primeicons.md +3 -3
- package/data/llms/primitive/guides/installation.md +1 -1
- package/data/llms/styled/components/datatable.md +20 -40
- package/data/llms/styled/components/dataview.md +12 -17
- package/data/llms/styled/components/dialog.md +11 -17
- package/data/llms/styled/components/fileupload.md +3 -3
- package/data/llms/styled/components/inputgroup.md +0 -65
- package/data/llms/styled/components/select.md +3 -5
- package/data/llms/styled/components/slider.md +1 -2
- package/data/llms/styled/components/stepper.md +1 -2
- package/data/llms/styled/components/toolbar.md +10 -10
- package/data/llms/styled/components/tooltip.md +46 -0
- package/data/llms/styled/guides/ai/mcp.md +113 -0
- package/data/llms/styled/guides/ai/plugin.md +139 -0
- package/data/llms/styled/guides/icons/primeicons.md +3 -3
- package/data/llms/styled/guides/installation/astro.md +1 -1
- package/data/llms/styled/guides/installation/configuration.md +135 -0
- package/data/llms/styled/guides/installation/nextjs.md +1 -1
- package/data/llms/styled/guides/installation/react-router.md +1 -1
- package/data/llms/styled/guides/installation/tanstack.md +1 -1
- package/data/llms/styled/guides/installation/vite.md +1 -1
- package/data/llms/tailwind/components/datatable.md +17 -34
- package/data/llms/tailwind/components/dataview.md +12 -17
- package/data/llms/tailwind/components/dialog.md +12 -17
- package/data/llms/tailwind/components/select.md +1 -2
- package/data/llms/tailwind/components/slider.md +1 -2
- package/data/llms/tailwind/components/toolbar.md +10 -7
- package/data/llms/tailwind/guides/ai/mcp.md +113 -0
- package/data/llms/tailwind/guides/ai/plugin.md +139 -0
- package/data/llms/tailwind/guides/icons/primeicons.md +3 -3
- package/data/llms/tailwind/guides/installation/astro.md +1 -1
- package/data/llms/tailwind/guides/installation/nextjs.md +1 -1
- package/data/llms/tailwind/guides/installation/react-router.md +1 -1
- package/data/llms/tailwind/guides/installation/tanstack.md +1 -1
- package/data/llms/tailwind/guides/installation/vite.md +1 -1
- package/data/manifest.json +2400 -1694
- package/data/mcp-data.json +1375 -542
- package/dist/index.d.ts +2 -3
- package/dist/index.js +1 -1
- package/package.json +9 -4
- package/data/llms/manifest.json +0 -12409
- 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
|
-
<
|
|
253
|
-
|
|
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 {
|
|
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
|
-
<
|
|
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
|
-
<
|
|
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
|
|
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
|
|
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
|
|
108
|
-
<Cog
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
60
|
+
npm install primereact @primeicons/react tailwindcss-primeui tailwind-merge
|
|
61
61
|
```
|
|
62
62
|
|
|
63
63
|
</DocStep>
|