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

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 (52) hide show
  1. package/README.md +10 -8
  2. package/data/llms/headless/components/textarea/api.json +6 -0
  3. package/data/llms/headless/guides/ai/mcp.md +113 -0
  4. package/data/llms/headless/guides/ai/plugin.md +138 -0
  5. package/data/llms/headless/guides/installation.md +1 -1
  6. package/data/llms/hooks/use-filter.md +2 -5
  7. package/data/llms/llms-full.txt +1170 -247
  8. package/data/llms/llms.txt +8 -0
  9. package/data/llms/primitive/components/textarea/api.json +6 -6
  10. package/data/llms/primitive/guides/ai/mcp.md +113 -0
  11. package/data/llms/primitive/guides/ai/plugin.md +138 -0
  12. package/data/llms/primitive/guides/icons/primeicons.md +3 -3
  13. package/data/llms/primitive/guides/installation.md +1 -1
  14. package/data/llms/styled/components/datatable.md +20 -40
  15. package/data/llms/styled/components/dataview.md +12 -17
  16. package/data/llms/styled/components/dialog.md +0 -9
  17. package/data/llms/styled/components/inputgroup.md +0 -65
  18. package/data/llms/styled/components/select.md +3 -5
  19. package/data/llms/styled/components/slider.md +1 -2
  20. package/data/llms/styled/components/stepper.md +1 -2
  21. package/data/llms/styled/components/toolbar.md +10 -10
  22. package/data/llms/styled/components/tooltip.md +46 -0
  23. package/data/llms/styled/guides/ai/mcp.md +113 -0
  24. package/data/llms/styled/guides/ai/plugin.md +138 -0
  25. package/data/llms/styled/guides/icons/primeicons.md +3 -3
  26. package/data/llms/styled/guides/installation/astro.md +1 -1
  27. package/data/llms/styled/guides/installation/configuration.md +135 -0
  28. package/data/llms/styled/guides/installation/nextjs.md +1 -1
  29. package/data/llms/styled/guides/installation/react-router.md +1 -1
  30. package/data/llms/styled/guides/installation/tanstack.md +1 -1
  31. package/data/llms/styled/guides/installation/vite.md +1 -1
  32. package/data/llms/tailwind/components/datatable.md +17 -34
  33. package/data/llms/tailwind/components/dataview.md +12 -17
  34. package/data/llms/tailwind/components/dialog.md +1 -9
  35. package/data/llms/tailwind/components/select.md +1 -2
  36. package/data/llms/tailwind/components/slider.md +1 -2
  37. package/data/llms/tailwind/components/toolbar.md +10 -7
  38. package/data/llms/tailwind/guides/ai/mcp.md +113 -0
  39. package/data/llms/tailwind/guides/ai/plugin.md +138 -0
  40. package/data/llms/tailwind/guides/icons/primeicons.md +3 -3
  41. package/data/llms/tailwind/guides/installation/astro.md +1 -1
  42. package/data/llms/tailwind/guides/installation/nextjs.md +1 -1
  43. package/data/llms/tailwind/guides/installation/react-router.md +1 -1
  44. package/data/llms/tailwind/guides/installation/tanstack.md +1 -1
  45. package/data/llms/tailwind/guides/installation/vite.md +1 -1
  46. package/data/manifest.json +2379 -1673
  47. package/data/mcp-data.json +1375 -542
  48. package/dist/index.d.ts +2 -3
  49. package/dist/index.js +1 -1
  50. package/package.json +4 -3
  51. package/data/llms/manifest.json +0 -12409
  52. package/data/llms/mcp-data.json +0 -14481
@@ -35481,7 +35481,6 @@ import { StarFill } from '@primeicons/react/star-fill';
35481
35481
  import { DataTable } from '@primereact/ui/datatable';
35482
35482
  import { Rating } from '@primereact/ui/rating';
35483
35483
  import { Tag } from '@primereact/ui/tag';
35484
- import Image from 'next/image';
35485
35484
  import * as React from 'react';
35486
35485
 
35487
35486
  const statusSeverity: Record<string, 'success' | 'warn' | 'danger'> = {
@@ -35549,7 +35548,7 @@ export default function Preview() {
35549
35548
  <DataTable.Row key={item.id}>
35550
35549
  <DataTable.Cell>
35551
35550
  <div className="flex items-center gap-3">
35552
- <Image
35551
+ <img
35553
35552
  src={`https://primefaces.org/cdn/primevue/images/product/${item.image}`}
35554
35553
  alt={item.name}
35555
35554
  width={48}
@@ -36088,7 +36087,6 @@ One row at a time. Clicking a different row replaces the previous selection.
36088
36087
 
36089
36088
  ```tsx
36090
36089
  'use client';
36091
- import Image from 'next/image';
36092
36090
  import { Database } from '@primeicons/react/database';
36093
36091
  import { ProductService, type Product } from '@/shared/services/product.service';
36094
36092
  import type { DataTableSelectionEvent } from '@primereact/ui/datatable';
@@ -36151,7 +36149,7 @@ export default function SingleSelectionDemo() {
36151
36149
  <DataTable.Row key={item.id}>
36152
36150
  <DataTable.Cell>
36153
36151
  <div className="flex items-center gap-3">
36154
- <Image
36152
+ <img
36155
36153
  src={`https://primefaces.org/cdn/primevue/images/product/${item.image}`}
36156
36154
  alt={item.name}
36157
36155
  width={40}
@@ -36211,7 +36209,6 @@ Multiple rows without a dedicated column. Pair with `metaKeySelection` so Ctrl/C
36211
36209
 
36212
36210
  ```tsx
36213
36211
  'use client';
36214
- import Image from 'next/image';
36215
36212
  import { ProductService, type Product } from '@/shared/services/product.service';
36216
36213
  import { ShoppingCart } from '@primeicons/react/shopping-cart';
36217
36214
  import { Database } from '@primeicons/react/database';
@@ -36310,7 +36307,7 @@ export default function MultipleSelectionDemo() {
36310
36307
  <DataTable.Row key={item.id}>
36311
36308
  <DataTable.Cell>
36312
36309
  <div className="flex items-center gap-3">
36313
- <Image
36310
+ <img
36314
36311
  src={`https://primefaces.org/cdn/primevue/images/product/${item.image}`}
36315
36312
  alt={item.name}
36316
36313
  width={40}
@@ -36706,7 +36703,6 @@ Arrow Up/Down moves focus between rows, Space or Enter toggles the focused row,
36706
36703
 
36707
36704
  ```tsx
36708
36705
  'use client';
36709
- import Image from 'next/image';
36710
36706
  import { Database } from '@primeicons/react/database';
36711
36707
  import { ProductService, type Product } from '@/shared/services/product.service';
36712
36708
  import type { DataTableSelectionEvent } from '@primereact/ui/datatable';
@@ -36786,7 +36782,7 @@ export default function KeyboardDemo() {
36786
36782
  <DataTable.Row key={item.id}>
36787
36783
  <DataTable.Cell>
36788
36784
  <div className="flex items-center gap-3">
36789
- <Image
36785
+ <img
36790
36786
  src={`https://primefaces.org/cdn/primevue/images/product/${item.image}`}
36791
36787
  alt={item.name}
36792
36788
  width={36}
@@ -36861,7 +36857,6 @@ Clicking a column header cycles through ascending, descending, and unsorted.
36861
36857
 
36862
36858
  ```tsx
36863
36859
  'use client';
36864
- import Image from 'next/image';
36865
36860
  import { ProductService, type Product } from '@/shared/services/product.service';
36866
36861
  import type { DataTableSortOrderInstance } from '@primereact/ui/datatable';
36867
36862
  import { SortAlt } from '@primeicons/react/sort-alt';
@@ -36958,7 +36953,7 @@ export default function SortDemo() {
36958
36953
  <DataTable.Row key={item.id}>
36959
36954
  <DataTable.Cell>
36960
36955
  <div className="flex items-center gap-3">
36961
- <Image
36956
+ <img
36962
36957
  src={`https://primefaces.org/cdn/primevue/images/product/${item.image}`}
36963
36958
  alt={item.name}
36964
36959
  width={40}
@@ -37018,7 +37013,6 @@ Hold Ctrl/Cmd and click multiple column headers to sort by several fields at onc
37018
37013
 
37019
37014
  ```tsx
37020
37015
  'use client';
37021
- import Image from 'next/image';
37022
37016
  import { ProductService, type Product } from '@/shared/services/product.service';
37023
37017
  import type { DataTableSortOrderInstance } from '@primereact/ui/datatable';
37024
37018
  import { SortAlt } from '@primeicons/react/sort-alt';
@@ -37115,7 +37109,7 @@ export default function MultiSortDemo() {
37115
37109
  <DataTable.Row key={item.id}>
37116
37110
  <DataTable.Cell>
37117
37111
  <div className="flex items-center gap-3">
37118
- <Image
37112
+ <img
37119
37113
  src={`https://primefaces.org/cdn/primevue/images/product/${item.image}`}
37120
37114
  alt={item.name}
37121
37115
  width={40}
@@ -37181,7 +37175,6 @@ Apply an initial sort on mount. Use `defaultSortField` + `defaultSortOrder` for
37181
37175
 
37182
37176
  ```tsx
37183
37177
  'use client';
37184
- import Image from 'next/image';
37185
37178
  import { ProductService, type Product } from '@/shared/services/product.service';
37186
37179
  import type { DataTableSortOrderInstance } from '@primereact/ui/datatable';
37187
37180
  import { SortAlt } from '@primeicons/react/sort-alt';
@@ -37278,7 +37271,7 @@ export default function PresortDemo() {
37278
37271
  <DataTable.Row key={item.id}>
37279
37272
  <DataTable.Cell>
37280
37273
  <div className="flex items-center gap-3">
37281
- <Image
37274
+ <img
37282
37275
  src={`https://primefaces.org/cdn/primevue/images/product/${item.image}`}
37283
37276
  alt={item.name}
37284
37277
  width={40}
@@ -37360,7 +37353,6 @@ import { Badge } from '@primereact/ui/badge';
37360
37353
  import { DataTable } from '@primereact/ui/datatable';
37361
37354
  import { OverlayBadge } from '@primereact/ui/overlaybadge';
37362
37355
  import { Tag } from '@primereact/ui/tag';
37363
- import Image from 'next/image';
37364
37356
  import * as React from 'react';
37365
37357
 
37366
37358
  const statusSeverity: Record<string, 'success' | 'warn' | 'danger'> = {
@@ -37454,7 +37446,7 @@ export default function PresortMultiDemo() {
37454
37446
  <DataTable.Row key={item.id}>
37455
37447
  <DataTable.Cell>
37456
37448
  <div className="flex items-center gap-3">
37457
- <Image
37449
+ <img
37458
37450
  src={`https://primefaces.org/cdn/primevue/images/product/${item.image}`}
37459
37451
  alt={item.name}
37460
37452
  width={40}
@@ -37526,7 +37518,6 @@ import type { DataTablePaginationInstance } from '@primereact/ui/datatable';
37526
37518
  import { DataTable } from '@primereact/ui/datatable';
37527
37519
  import { Paginator } from '@primereact/ui/paginator';
37528
37520
  import { Tag } from '@primereact/ui/tag';
37529
- import Image from 'next/image';
37530
37521
  import type { PaginatorPagesInstance } from '@primereact/ui/paginator';
37531
37522
  import * as React from 'react';
37532
37523
 
@@ -37578,7 +37569,7 @@ export default function PaginationDemo() {
37578
37569
  <DataTable.Row key={item.id}>
37579
37570
  <DataTable.Cell>
37580
37571
  <div className="flex items-center gap-3">
37581
- <Image
37572
+ <img
37582
37573
  src={`https://primefaces.org/cdn/primevue/images/product/${item.image}`}
37583
37574
  alt={item.name}
37584
37575
  width={40}
@@ -38633,7 +38624,6 @@ Inline cell editing with `CellEditor`, `CellEditorDisplay` and `CellEditorConten
38633
38624
 
38634
38625
  ```tsx
38635
38626
  'use client';
38636
- import Image from 'next/image';
38637
38627
  import { ProductService, type Product } from '@/shared/services/product.service';
38638
38628
  import { ChevronDown } from '@primeicons/react/chevron-down';
38639
38629
  import { Database } from '@primeicons/react/database';
@@ -38721,7 +38711,7 @@ export default function CellEditDemo() {
38721
38711
  {({ item, index }: { item: any; index: number }) => (
38722
38712
  <DataTable.Row key={item.id}>
38723
38713
  <DataTable.Cell>
38724
- <Image
38714
+ <img
38725
38715
  src={`https://primefaces.org/cdn/primevue/images/product/${item.image}`}
38726
38716
  alt={item.name}
38727
38717
  width={40}
@@ -38870,7 +38860,6 @@ Cell editing composes with row selection: clicks inside an editable cell start e
38870
38860
 
38871
38861
  ```tsx
38872
38862
  'use client';
38873
- import Image from 'next/image';
38874
38863
  import { ProductService, type Product } from '@/shared/services/product.service';
38875
38864
  import { Check } from '@primeicons/react/check';
38876
38865
  import { Database } from '@primeicons/react/database';
@@ -39023,7 +39012,7 @@ export default function CellEditSelectionDemo() {
39023
39012
  </DataTable.Selection>
39024
39013
  </DataTable.Cell>
39025
39014
  <DataTable.Cell>
39026
- <Image
39015
+ <img
39027
39016
  src={`https://primefaces.org/cdn/primevue/images/product/${item.image}`}
39028
39017
  alt={item.name}
39029
39018
  width={36}
@@ -39174,7 +39163,6 @@ Row-level editing with `RowEditor`, `RowEditorInit`, `RowEditorSave` and `RowEdi
39174
39163
 
39175
39164
  ```tsx
39176
39165
  'use client';
39177
- import Image from 'next/image';
39178
39166
  import { ProductService, type Product } from '@/shared/services/product.service';
39179
39167
  import { Check } from '@primeicons/react/check';
39180
39168
  import { Database } from '@primeicons/react/database';
@@ -39283,7 +39271,7 @@ export default function RowEditDemo() {
39283
39271
  <DataTable.CellEditor field="name" rowIndex={index} rowData={item}>
39284
39272
  <DataTable.CellEditorDisplay>
39285
39273
  <div className="flex items-center gap-3">
39286
- <Image
39274
+ <img
39287
39275
  src={`https://primefaces.org/cdn/primevue/images/product/${item.image}`}
39288
39276
  alt={item.name}
39289
39277
  width={40}
@@ -39712,7 +39700,6 @@ import { ProductService, type Product } from '@/shared/services/product.service'
39712
39700
  import { Database } from '@primeicons/react/database';
39713
39701
  import { DataTable } from '@primereact/ui/datatable';
39714
39702
  import { Tag } from '@primereact/ui/tag';
39715
- import Image from 'next/image';
39716
39703
  import * as React from 'react';
39717
39704
 
39718
39705
  const statusSeverity: Record<string, 'success' | 'warn' | 'danger'> = {
@@ -39765,7 +39752,7 @@ export default function ResizeDemo() {
39765
39752
  <DataTable.Row key={item.id}>
39766
39753
  <DataTable.Cell>
39767
39754
  <div className="flex items-center gap-3">
39768
- <Image
39755
+ <img
39769
39756
  src={`https://primefaces.org/cdn/primevue/images/product/${item.image}`}
39770
39757
  alt={item.name}
39771
39758
  width={36}
@@ -39817,7 +39804,6 @@ export default function ResizeDemo() {
39817
39804
 
39818
39805
  ```tsx
39819
39806
  'use client';
39820
- import Image from 'next/image';
39821
39807
  import { Database } from '@primeicons/react/database';
39822
39808
  import { ProductService, type Product } from '@/shared/services/product.service';
39823
39809
  import { DataTable } from '@primereact/ui/datatable';
@@ -39877,7 +39863,7 @@ export default function ResizeExpandDemo() {
39877
39863
  <DataTable.Row key={item.id}>
39878
39864
  <DataTable.Cell>
39879
39865
  <div className="flex items-center gap-3">
39880
- <Image
39866
+ <img
39881
39867
  src={`https://primefaces.org/cdn/primevue/images/product/${item.image}`}
39882
39868
  alt={item.name}
39883
39869
  width={36}
@@ -39942,7 +39928,6 @@ import { Database } from '@primeicons/react/database';
39942
39928
  import type { DataTableColumnReorderEvent } from '@primereact/ui/datatable';
39943
39929
  import { DataTable } from '@primereact/ui/datatable';
39944
39930
  import { Tag } from '@primereact/ui/tag';
39945
- import Image from 'next/image';
39946
39931
  import * as React from 'react';
39947
39932
 
39948
39933
  const statusSeverity: Record<string, 'success' | 'warn' | 'danger'> = {
@@ -39975,7 +39960,7 @@ function renderCell(field: string, item: Product) {
39975
39960
  case 'name':
39976
39961
  return (
39977
39962
  <div className="flex items-center gap-3">
39978
- <Image
39963
+ <img
39979
39964
  src={`https://primefaces.org/cdn/primevue/images/product/${item.image}`}
39980
39965
  alt={item.name}
39981
39966
  width={36}
@@ -40084,7 +40069,6 @@ Drag and drop rows to reorder data.
40084
40069
 
40085
40070
  ```tsx
40086
40071
  'use client';
40087
- import Image from 'next/image';
40088
40072
  import { ProductService, type Product } from '@/shared/services/product.service';
40089
40073
  import { Bars } from '@primeicons/react/bars';
40090
40074
  import { Database } from '@primeicons/react/database';
@@ -40149,7 +40133,7 @@ export default function RowReorderDemo() {
40149
40133
  </DataTable.Cell>
40150
40134
  <DataTable.Cell>
40151
40135
  <div className="flex items-center gap-3">
40152
- <Image
40136
+ <img
40153
40137
  src={`https://primefaces.org/cdn/primevue/images/product/${item.image}`}
40154
40138
  alt={item.name}
40155
40139
  width={36}
@@ -40220,7 +40204,6 @@ import { Checkbox } from '@primereact/ui/checkbox';
40220
40204
  import { DataTable } from '@primereact/ui/datatable';
40221
40205
  import { Popover } from '@primereact/ui/popover';
40222
40206
  import { Tag } from '@primereact/ui/tag';
40223
- import Image from 'next/image';
40224
40207
  import * as React from 'react';
40225
40208
 
40226
40209
  interface ColumnDef {
@@ -40256,7 +40239,7 @@ function renderCell(field: string, item: Product) {
40256
40239
  case 'name':
40257
40240
  return (
40258
40241
  <div className="flex items-center gap-3">
40259
- <Image
40242
+ <img
40260
40243
  src={`https://primefaces.org/cdn/primevue/images/product/${item.image}`}
40261
40244
  alt={item.name}
40262
40245
  width={36}
@@ -41998,7 +41981,6 @@ Export table data to CSV with customizable fields and headers.
41998
41981
 
41999
41982
  ```tsx
42000
41983
  'use client';
42001
- import Image from 'next/image';
42002
41984
  import { ProductService, type Product } from '@/shared/services/product.service';
42003
41985
  import { FileExport } from '@primeicons/react/file-export';
42004
41986
  import { Database } from '@primeicons/react/database';
@@ -42066,7 +42048,7 @@ export default function ExportDemo() {
42066
42048
  <DataTable.Row key={item.id}>
42067
42049
  <DataTable.Cell>
42068
42050
  <div className="flex items-center gap-3">
42069
- <Image
42051
+ <img
42070
42052
  src={`https://primefaces.org/cdn/primevue/images/product/${item.image}`}
42071
42053
  alt={item.name}
42072
42054
  width={36}
@@ -42425,7 +42407,6 @@ import { Spinner } from '@primeicons/react/spinner';
42425
42407
  import { Button } from '@primereact/ui/button';
42426
42408
  import { DataTable } from '@primereact/ui/datatable';
42427
42409
  import { Tag } from '@primereact/ui/tag';
42428
- import Image from 'next/image';
42429
42410
  import * as React from 'react';
42430
42411
 
42431
42412
  const statusSeverity: Record<string, 'success' | 'warn' | 'danger'> = {
@@ -42490,7 +42471,7 @@ export default function LoadingOverlayDemo() {
42490
42471
  <DataTable.Row key={item.id}>
42491
42472
  <DataTable.Cell>
42492
42473
  <div className="flex items-center gap-3">
42493
- <Image
42474
+ <img
42494
42475
  src={`https://primefaces.org/cdn/primevue/images/product/${item.image}`}
42495
42476
  alt={item.name}
42496
42477
  width={40}
@@ -42542,7 +42523,6 @@ import { Button } from '@primereact/ui/button';
42542
42523
  import { DataTable } from '@primereact/ui/datatable';
42543
42524
  import { Skeleton } from '@primereact/ui/skeleton';
42544
42525
  import { Tag } from '@primereact/ui/tag';
42545
- import Image from 'next/image';
42546
42526
  import * as React from 'react';
42547
42527
 
42548
42528
  const statusSeverity: Record<string, 'success' | 'warn' | 'danger'> = {
@@ -42633,7 +42613,7 @@ export default function LoadingSkeletonDemo() {
42633
42613
  <DataTable.Row key={item.id}>
42634
42614
  <DataTable.Cell>
42635
42615
  <div className="flex items-center gap-3">
42636
- <Image
42616
+ <img
42637
42617
  src={`https://primefaces.org/cdn/primevue/images/product/${item.image}`}
42638
42618
  alt={item.name}
42639
42619
  width={40}
@@ -43737,7 +43717,6 @@ DataView displays data in grid or list layout with pagination and sorting featur
43737
43717
  import { ProductService } from '@/shared/services/product.service';
43738
43718
  import { Button } from '@primereact/ui/button';
43739
43719
  import { Tag } from '@primereact/ui/tag';
43740
- import Image from 'next/image';
43741
43720
  import { DataView } from '@primereact/ui/dataview';
43742
43721
  import * as React from 'react';
43743
43722
  import { Heart } from '@primeicons/react/heart';
@@ -43791,14 +43770,14 @@ export default function Preview() {
43791
43770
  className={`flex flex-col sm:flex-row sm:items-center p-6 gap-4 ${index !== 0 ? 'border-t border-surface-200 dark:border-surface-700' : ''}`}
43792
43771
  >
43793
43772
  <div className="md:w-40 relative">
43794
- <Image
43773
+ <img
43795
43774
  className="mx-auto rounded w-full"
43796
43775
  src={`https://primefaces.org/cdn/primevue/images/product/${product.image}`}
43797
43776
  alt={product.name}
43798
43777
  width={160}
43799
43778
  height={160}
43800
43779
  />
43801
- <Tag severity={getSeverity(product)} className="absolute top-1 left-1">
43780
+ <Tag severity={getSeverity(product)} className="absolute top-1 left-1 dark:bg-surface-900!">
43802
43781
  {product.inventoryStatus}
43803
43782
  </Tag>
43804
43783
  </div>
@@ -43872,7 +43851,6 @@ Displays a list of items with support for layout switching.
43872
43851
  import { ProductService } from '@/shared/services/product.service';
43873
43852
  import { Button } from '@primereact/ui/button';
43874
43853
  import { Tag } from '@primereact/ui/tag';
43875
- import Image from 'next/image';
43876
43854
  import { DataView } from '@primereact/ui/dataview';
43877
43855
  import * as React from 'react';
43878
43856
  import { Heart } from '@primeicons/react/heart';
@@ -43926,14 +43904,14 @@ export default function BasicDemo() {
43926
43904
  className={`flex flex-col sm:flex-row sm:items-center p-6 gap-4 ${index !== 0 ? 'border-t border-surface-200 dark:border-surface-700' : ''}`}
43927
43905
  >
43928
43906
  <div className="md:w-40 relative">
43929
- <Image
43907
+ <img
43930
43908
  className="mx-auto rounded w-full"
43931
43909
  src={`https://primefaces.org/cdn/primevue/images/product/${product.image}`}
43932
43910
  alt={product.name}
43933
43911
  width={160}
43934
43912
  height={160}
43935
43913
  />
43936
- <Tag severity={getSeverity(product)} className="absolute top-1 left-1">
43914
+ <Tag severity={getSeverity(product)} className="absolute top-1 left-1 dark:bg-surface-900!">
43937
43915
  {product.inventoryStatus}
43938
43916
  </Tag>
43939
43917
  </div>
@@ -43999,7 +43977,6 @@ import { StarFill } from '@primeicons/react/star-fill';
43999
43977
  import { Button } from '@primereact/ui/button';
44000
43978
  import { Paginator, type PaginatorPagesInstance, type PaginatorRootChangeEvent } from '@primereact/ui/paginator';
44001
43979
  import { Tag } from '@primereact/ui/tag';
44002
- import Image from 'next/image';
44003
43980
  import { DataView } from '@primereact/ui/dataview';
44004
43981
  import * as React from 'react';
44005
43982
 
@@ -44052,14 +44029,14 @@ export default function PaginationDemo() {
44052
44029
  className={`flex flex-col sm:flex-row sm:items-center p-6 gap-4 ${index !== 0 ? 'border-t border-surface-200 dark:border-surface-700' : ''}`}
44053
44030
  >
44054
44031
  <div className="md:w-40 relative">
44055
- <Image
44032
+ <img
44056
44033
  className="mx-auto rounded w-full"
44057
44034
  src={`https://primefaces.org/cdn/primevue/images/product/${product.image}`}
44058
44035
  alt={product.name}
44059
44036
  width={160}
44060
44037
  height={160}
44061
44038
  />
44062
- <Tag severity={getSeverity(product)} className="absolute top-1 left-1">
44039
+ <Tag severity={getSeverity(product)} className="absolute top-1 left-1 dark:bg-surface-900!">
44063
44040
  {product.inventoryStatus}
44064
44041
  </Tag>
44065
44042
  </div>
@@ -44155,7 +44132,6 @@ import { Button } from '@primereact/ui/button';
44155
44132
  import { Tag } from '@primereact/ui/tag';
44156
44133
  import { ToggleButton } from '@primereact/ui/togglebutton';
44157
44134
  import { ToggleButtonGroup, type ToggleButtonGroupValueChangeEvent } from '@primereact/ui/togglebuttongroup';
44158
- import Image from 'next/image';
44159
44135
  import { DataView } from '@primereact/ui/dataview';
44160
44136
  import * as React from 'react';
44161
44137
  import { Heart } from '@primeicons/react/heart';
@@ -44233,14 +44209,14 @@ export default function SortDemo() {
44233
44209
  className={`flex flex-col sm:flex-row sm:items-center p-6 gap-4 ${index !== 0 ? 'border-t border-surface-200 dark:border-surface-700' : ''}`}
44234
44210
  >
44235
44211
  <div className="md:w-40 relative">
44236
- <Image
44212
+ <img
44237
44213
  className="mx-auto rounded w-full"
44238
44214
  src={`https://primefaces.org/cdn/primevue/images/product/${product.image}`}
44239
44215
  alt={product.name}
44240
44216
  width={160}
44241
44217
  height={160}
44242
44218
  />
44243
- <Tag severity={getSeverity(product)} className="absolute top-1 left-1">
44219
+ <Tag severity={getSeverity(product)} className="absolute top-1 left-1 dark:bg-surface-900!">
44244
44220
  {product.inventoryStatus}
44245
44221
  </Tag>
44246
44222
  </div>
@@ -44305,7 +44281,6 @@ import { Button } from '@primereact/ui/button';
44305
44281
  import { Tag } from '@primereact/ui/tag';
44306
44282
  import { ToggleButton } from '@primereact/ui/togglebutton';
44307
44283
  import { ToggleButtonGroup, type ToggleButtonGroupValueChangeEvent } from '@primereact/ui/togglebuttongroup';
44308
- import Image from 'next/image';
44309
44284
  import { DataView } from '@primereact/ui/dataview';
44310
44285
  import * as React from 'react';
44311
44286
 
@@ -44355,14 +44330,14 @@ export default function LayoutDemo() {
44355
44330
  className={`flex flex-col sm:flex-row sm:items-center p-6 gap-4 ${index !== 0 ? 'border-t border-surface-200 dark:border-surface-700' : ''}`}
44356
44331
  >
44357
44332
  <div className="md:w-40 relative">
44358
- <Image
44333
+ <img
44359
44334
  className="mx-auto rounded w-full"
44360
44335
  src={`https://primefaces.org/cdn/primevue/images/product/${product.image}`}
44361
44336
  alt={product.name}
44362
44337
  width={160}
44363
44338
  height={160}
44364
44339
  />
44365
- <Tag severity={getSeverity(product)} className="absolute top-1 left-1">
44340
+ <Tag severity={getSeverity(product)} className="absolute top-1 left-1 dark:bg-surface-900!">
44366
44341
  {product.inventoryStatus}
44367
44342
  </Tag>
44368
44343
  </div>
@@ -44416,14 +44391,14 @@ export default function LayoutDemo() {
44416
44391
  <div className="p-6 border border-surface-200 dark:border-surface-700 bg-surface-0 dark:bg-surface-900 rounded flex flex-col">
44417
44392
  <div className="flex justify-center">
44418
44393
  <div className="relative mx-auto">
44419
- <Image
44394
+ <img
44420
44395
  src={`https://primefaces.org/cdn/primevue/images/product/${product.image}`}
44421
44396
  alt={product.name}
44422
44397
  width={300}
44423
44398
  height={200}
44424
44399
  className="rounded"
44425
44400
  />
44426
- <Tag severity={getSeverity(product)} className="absolute top-1 left-1">
44401
+ <Tag severity={getSeverity(product)} className="absolute top-1 left-1 dark:bg-surface-900!">
44427
44402
  {product.inventoryStatus}
44428
44403
  </Tag>
44429
44404
  </div>
@@ -47666,7 +47641,6 @@ The position of the dialog can be customized with the `position` property. The a
47666
47641
 
47667
47642
  ```tsx
47668
47643
  'use client';
47669
- import { ArrowDown, ArrowDownLeft, ArrowDownRight, ArrowLeft, ArrowRight, ArrowUp, ArrowUpLeft, ArrowUpRight } from '@primeicons/react';
47670
47644
  import { Times } from '@primeicons/react/times';
47671
47645
  import { DialogRootChangeEvent, DialogRootProps } from '@primereact/ui/dialog';
47672
47646
  import { Button } from '@primereact/ui/button';
@@ -47689,39 +47663,31 @@ export default function PositionDemo() {
47689
47663
  <div className="flex flex-wrap justify-center gap-2 mb-2">
47690
47664
  <Button onClick={() => openPosition('left')} severity="secondary" style={{ minWidth: '10rem' }}>
47691
47665
  Left
47692
- <ArrowLeft />
47693
47666
  </Button>
47694
47667
  <Button onClick={() => openPosition('right')} severity="secondary" style={{ minWidth: '10rem' }}>
47695
47668
  Right
47696
- <ArrowRight />
47697
47669
  </Button>
47698
47670
  </div>
47699
47671
  <div className="flex flex-wrap justify-center gap-2 mb-2">
47700
47672
  <Button onClick={() => openPosition('topleft')} severity="secondary" style={{ minWidth: '10rem' }}>
47701
47673
  TopLeft
47702
- <ArrowUpLeft />
47703
47674
  </Button>
47704
47675
  <Button onClick={() => openPosition('top')} severity="secondary" style={{ minWidth: '10rem' }}>
47705
47676
  Top
47706
- <ArrowUp />
47707
47677
  </Button>
47708
47678
  <Button onClick={() => openPosition('topright')} severity="secondary" style={{ minWidth: '10rem' }}>
47709
47679
  TopRight
47710
- <ArrowUpRight />
47711
47680
  </Button>
47712
47681
  </div>
47713
47682
  <div className="flex flex-wrap justify-center gap-2">
47714
47683
  <Button onClick={() => openPosition('bottomleft')} severity="secondary" style={{ minWidth: '10rem' }}>
47715
47684
  BottomLeft
47716
- <ArrowDownLeft />
47717
47685
  </Button>
47718
47686
  <Button onClick={() => openPosition('bottom')} severity="secondary" style={{ minWidth: '10rem' }}>
47719
47687
  Bottom
47720
- <ArrowDown />
47721
47688
  </Button>
47722
47689
  <Button onClick={() => openPosition('bottomright')} severity="secondary" style={{ minWidth: '10rem' }}>
47723
47690
  BottomRight
47724
- <ArrowDownRight />
47725
47691
  </Button>
47726
47692
  </div>
47727
47693
  <Dialog.Root open={open} onOpenChange={(e: DialogRootChangeEvent) => setOpen(e.value as boolean)} position={position} draggable={false}>
@@ -53323,71 +53289,6 @@ export default function SelectDemo() {
53323
53289
  }
53324
53290
  ```
53325
53291
 
53326
- ### File Upload
53327
-
53328
- File upload functionality can be integrated within an InputGroup for inline file selection.
53329
-
53330
- ```tsx
53331
- 'use client';
53332
- import { Tag as TagIcon } from '@primeicons/react';
53333
- import { CloudUpload } from '@primeicons/react/cloud-upload';
53334
- import { Upload } from '@primeicons/react/upload';
53335
- import { Button } from '@primereact/ui/button';
53336
- import { FileUpload, FileUploadRootInstance } from '@primereact/ui/fileupload';
53337
- import { InputGroup } from '@primereact/ui/inputgroup';
53338
- import { InputText } from '@primereact/ui/inputtext';
53339
-
53340
- export default function FileUploadDemo() {
53341
- return (
53342
- <div className="flex flex-col items-center justify-center gap-4 max-w-93 mx-auto">
53343
- <div className="flex flex-wrap items-center justify-center gap-4 w-full">
53344
- <InputGroup.Root className="w-fit!">
53345
- <FileUpload.Root as={InputGroup.Addon} name="demo2[]" accept="image/*" maxFileSize={1000000}>
53346
- {(instance: FileUploadRootInstance) => (
53347
- <Button severity="secondary" variant="text" onClick={instance.choose} className="justify-start border-none">
53348
- <Upload />
53349
- {instance.hasFiles ? instance.state.files.map((file) => file.name).join(', ') : 'Choose file'}
53350
- </Button>
53351
- )}
53352
- </FileUpload.Root>
53353
- <InputGroup.Addon>
53354
- <Button severity="secondary" variant="text" iconOnly>
53355
- <CloudUpload />
53356
- </Button>
53357
- </InputGroup.Addon>
53358
- </InputGroup.Root>
53359
- <InputGroup.Root className="flex-1! max-w-fit!">
53360
- <InputGroup.Addon>Upload</InputGroup.Addon>
53361
- <FileUpload.Root as={InputGroup.Addon} name="demo1[]" accept="image/*" maxFileSize={1000000}>
53362
- {(instance: FileUploadRootInstance) => (
53363
- <Button severity="secondary" variant="text" onClick={instance.choose} className="justify-start border-none">
53364
- <Upload />
53365
- {instance.hasFiles ? instance.state.files.map((file) => file.name).join(', ') : 'Choose file'}
53366
- </Button>
53367
- )}
53368
- </FileUpload.Root>
53369
- </InputGroup.Root>
53370
- </div>
53371
-
53372
- <InputGroup.Root>
53373
- <InputGroup.Addon>
53374
- <TagIcon />
53375
- </InputGroup.Addon>
53376
- <InputText placeholder="Label" />
53377
- <FileUpload.Root as={InputGroup.Addon} name="demo3[]" accept="image/*" maxFileSize={1000000}>
53378
- {(instance: FileUploadRootInstance) => (
53379
- <Button severity="secondary" variant="text" onClick={instance.choose} className="border-none">
53380
- <Upload />
53381
- {instance.hasFiles ? instance.state.files.map((file) => file.name).join(', ') : 'Browse'}
53382
- </Button>
53383
- )}
53384
- </FileUpload.Root>
53385
- </InputGroup.Root>
53386
- </div>
53387
- );
53388
- }
53389
- ```
53390
-
53391
53292
  ### Float Label
53392
53293
 
53393
53294
  FloatLabel visually integrates a label with its form element. Visit [FloatLabel](/docs/components/floatlabel) documentation for more information.
@@ -67374,7 +67275,6 @@ import { Search } from '@primeicons/react/search';
67374
67275
  import { IconField } from '@primereact/ui/iconfield';
67375
67276
  import { InputText } from '@primereact/ui/inputtext';
67376
67277
  import { Select, type SelectValueChangeEvent } from '@primereact/ui/select';
67377
- import Image from 'next/image';
67378
67278
  import * as React from 'react';
67379
67279
 
67380
67280
  type Language = {
@@ -67416,7 +67316,7 @@ export default function Preview() {
67416
67316
  <Select.Value placeholder="Select a language">
67417
67317
  {language && (
67418
67318
  <span className="flex items-center gap-2">
67419
- <Image
67319
+ <img
67420
67320
  alt={language.label}
67421
67321
  src="https://primefaces.org/cdn/primevue/images/flag/flag_placeholder.png"
67422
67322
  className={`flag flag-${language.code}`}
@@ -67453,7 +67353,7 @@ export default function Preview() {
67453
67353
  {filteredLanguages.map((l, index) => (
67454
67354
  <Select.Option key={l.value} index={index} uKey={l.value} className="justify-between">
67455
67355
  <div className="flex items-center gap-2">
67456
- <Image
67356
+ <img
67457
67357
  alt={l.label}
67458
67358
  src="https://primefaces.org/cdn/primevue/images/flag/flag_placeholder.png"
67459
67359
  className={`flag flag-${l.code}`}
@@ -68029,7 +67929,6 @@ import { SelectValueChangeEvent } from '@primereact/ui/select';
68029
67929
  import { IconField } from '@primereact/ui/iconfield';
68030
67930
  import { InputText } from '@primereact/ui/inputtext';
68031
67931
  import { Select } from '@primereact/ui/select';
68032
- import Image from 'next/image';
68033
67932
  import * as React from 'react';
68034
67933
 
68035
67934
  type Country = {
@@ -68094,7 +67993,7 @@ export default function FilterDemo() {
68094
67993
  {filteredCountries.map((country, index) => (
68095
67994
  <Select.Option key={country.code} index={index} uKey={country.code}>
68096
67995
  <div className="flex items-center gap-2">
68097
- <Image
67996
+ <img
68098
67997
  alt={country.name}
68099
67998
  src="https://primefaces.org/cdn/primevue/images/flag/flag_placeholder.png"
68100
67999
  className={`flag flag-${country.code.toLowerCase()} mr-2`}
@@ -71665,7 +71564,6 @@ Image filter implementation using multiple sliders.
71665
71564
  import { Slider } from '@primereact/ui/slider';
71666
71565
  import { ToggleButton } from '@primereact/ui/togglebutton';
71667
71566
  import { ToggleButtonGroup, type ToggleButtonGroupValueChangeEvent } from '@primereact/ui/togglebuttongroup';
71668
- import Image from 'next/image';
71669
71567
  import { SliderRootChangeEvent } from '@primereact/ui/slider';
71670
71568
  import * as React from 'react';
71671
71569
 
@@ -71681,7 +71579,7 @@ export default function FilterDemo() {
71681
71579
 
71682
71580
  return (
71683
71581
  <div className="flex flex-col items-center justify-center">
71684
- <Image
71582
+ <img
71685
71583
  alt="user header"
71686
71584
  className="w-80 rounded mb-6"
71687
71585
  src="https://primefaces.org/cdn/primevue/images/galleria/galleria1.jpg"
@@ -73401,7 +73299,6 @@ import { Divider } from '@primereact/ui/divider';
73401
73299
  import { InputText } from '@primereact/ui/inputtext';
73402
73300
  import { Stepper } from '@primereact/ui/stepper';
73403
73301
  import { ToggleButton } from '@primereact/ui/togglebutton';
73404
- import Image from 'next/image';
73405
73302
 
73406
73303
  export default function TemplateDemo() {
73407
73304
  return (
@@ -73576,7 +73473,7 @@ export default function TemplateDemo() {
73576
73473
  <div className="flex flex-col gap-2 mx-auto" style={{ minHeight: '16rem', maxWidth: '24rem' }}>
73577
73474
  <div className="text-center mt-4 mb-4 text-xl font-semibold">Account created successfully</div>
73578
73475
  <div className="flex justify-center">
73579
- <Image
73476
+ <img
73580
73477
  alt="logo"
73581
73478
  width={240}
73582
73479
  height={160}
@@ -77870,34 +77767,34 @@ import { Search } from '@primeicons/react/search';
77870
77767
  export default function CustomDemo() {
77871
77768
  return (
77872
77769
  <Toolbar.Root
77873
- className="max-[768px]:flex-col max-[768px]:items-start"
77770
+ className="@container"
77874
77771
  style={{ borderRadius: '3rem', padding: '0.75rem 1rem 0.75rem 1.5rem', background: 'var(--p-surface-900)', border: 'none' }}
77875
77772
  >
77876
- <Toolbar.Start className="max-[768px]:flex-wrap gap-y-2">
77773
+ <Toolbar.Start>
77877
77774
  <div className="flex items-center gap-1">
77878
77775
  <i className="pi pi-prime text-xl" style={{ color: 'var(--p-primary-400)' }} />
77879
77776
  <span className="font-bold text-lg ml-2" style={{ color: 'var(--p-surface-0)' }}>
77880
77777
  Brand
77881
77778
  </span>
77882
77779
  </div>
77883
- <div className="ml-6 flex gap-1 flex-wrap max-[768px]:ml-0">
77884
- <Button variant="text" size="small" className="text-surface-0 hover:bg-surface-700">
77780
+ <div className="ml-6 hidden @min-[620px]:flex gap-1">
77781
+ <Button variant="text" size="small" className="text-surface-0! hover:bg-surface-700!">
77885
77782
  Products
77886
77783
  </Button>
77887
- <Button variant="text" size="small" className="text-surface-0 hover:bg-surface-700">
77784
+ <Button variant="text" size="small" className="text-surface-0! hover:bg-surface-700!">
77888
77785
  Solutions
77889
77786
  </Button>
77890
- <Button variant="text" size="small" className="text-surface-0 hover:bg-surface-700">
77787
+ <Button variant="text" size="small" className="text-surface-0! hover:bg-surface-700!">
77891
77788
  Resources
77892
77789
  </Button>
77893
- <Button variant="text" size="small" className="text-surface-0 hover:bg-surface-700">
77790
+ <Button variant="text" size="small" className="text-surface-0! hover:bg-surface-700!">
77894
77791
  Pricing
77895
77792
  </Button>
77896
77793
  </div>
77897
77794
  </Toolbar.Start>
77898
- <Toolbar.End className="max-[768px]:w-full">
77899
- <div className="flex items-center gap-2 flex-wrap">
77900
- <Button variant="text" size="small" className="text-surface-0 hover:bg-surface-700">
77795
+ <Toolbar.End>
77796
+ <div className="flex items-center gap-2">
77797
+ <Button variant="text" size="small" iconOnly aria-label="Search" className="text-surface-0! hover:bg-surface-700!">
77901
77798
  <Search />
77902
77799
  </Button>
77903
77800
  <Button severity="contrast" size="small">
@@ -78083,6 +77980,52 @@ export default function BasicDemo() {
78083
77980
  }
78084
77981
  ```
78085
77982
 
77983
+ ### Standalone
77984
+
77985
+ `Tooltip.Manager` only coordinates a group of tooltips, so moving between adjacent ones skips the open delay. A single tooltip doesn't need it, wrap just the `Tooltip.Root` and its `openDelay` is honored on its own.
77986
+
77987
+ ```tsx
77988
+ import { Button } from '@primereact/ui/button';
77989
+ import { Tooltip } from '@primereact/ui/tooltip';
77990
+
77991
+ export default function StandaloneDemo() {
77992
+ return (
77993
+ <div className="flex items-center justify-center gap-4">
77994
+ {/* No Tooltip.Manager wrapper — each Tooltip.Root works on its own */}
77995
+ <Tooltip.Root>
77996
+ <Tooltip.Trigger as={Button} variant="outlined" severity="secondary">
77997
+ Default delays
77998
+ </Tooltip.Trigger>
77999
+ <Tooltip.Portal>
78000
+ <Tooltip.Positioner sideOffset={8}>
78001
+ <Tooltip.Popup>
78002
+ <Tooltip.Arrow />
78003
+ <div className="font-semibold text-sm">No manager needed</div>
78004
+ <div className="opacity-75 text-sm mt-1">Used standalone, without a Tooltip.Manager.</div>
78005
+ </Tooltip.Popup>
78006
+ </Tooltip.Positioner>
78007
+ </Tooltip.Portal>
78008
+ </Tooltip.Root>
78009
+
78010
+ <Tooltip.Root openDelay={1200} closeDelay={800}>
78011
+ <Tooltip.Trigger as={Button} variant="outlined" severity="secondary">
78012
+ 1200ms open · 800ms close
78013
+ </Tooltip.Trigger>
78014
+ <Tooltip.Portal>
78015
+ <Tooltip.Positioner sideOffset={8}>
78016
+ <Tooltip.Popup>
78017
+ <Tooltip.Arrow />
78018
+ <div className="font-semibold text-sm">Independent timing</div>
78019
+ <div className="opacity-75 text-sm mt-1">Waits 1200ms to open, lingers 800ms after you leave.</div>
78020
+ </Tooltip.Popup>
78021
+ </Tooltip.Positioner>
78022
+ </Tooltip.Portal>
78023
+ </Tooltip.Root>
78024
+ </div>
78025
+ );
78026
+ }
78027
+ ```
78028
+
78086
78029
  ### Arrow
78087
78030
 
78088
78031
  Use `Tooltip.Arrow` to display an arrow on the tooltip.
@@ -92509,7 +92452,6 @@ import {
92509
92452
  import { Tag } from '@/components/ui/tag';
92510
92453
  import { ProductService, type Product } from '@/shared/services/product.service';
92511
92454
  import { Database } from '@primeicons/react/database';
92512
- import Image from 'next/image';
92513
92455
  import * as React from 'react';
92514
92456
 
92515
92457
  const statusSeverity: Record<string, 'success' | 'warn' | 'danger'> = {
@@ -92557,7 +92499,7 @@ export default function Preview() {
92557
92499
  <DataTableRow key={item.id}>
92558
92500
  <DataTableCell>
92559
92501
  <div className="flex items-center gap-3">
92560
- <Image
92502
+ <img
92561
92503
  src={`https://primefaces.org/cdn/primevue/images/product/${item.image}`}
92562
92504
  alt={item.name}
92563
92505
  width={48}
@@ -92694,7 +92636,6 @@ import {
92694
92636
  } from '@/components/ui/datatable';
92695
92637
  import { Tag } from '@/components/ui/tag';
92696
92638
  import { ProductService, type Product } from '@/shared/services/product.service';
92697
- import Image from 'next/image';
92698
92639
  import * as React from 'react';
92699
92640
 
92700
92641
  const statusSeverity: Record<string, 'success' | 'warn' | 'danger'> = {
@@ -92742,7 +92683,7 @@ export default function BasicDemo() {
92742
92683
  <DataTableRow key={item.id}>
92743
92684
  <DataTableCell>
92744
92685
  <div className="flex items-center gap-3">
92745
- <Image
92686
+ <img
92746
92687
  src={`https://primefaces.org/cdn/primevue/images/product/${item.image}`}
92747
92688
  alt={item.name}
92748
92689
  width={40}
@@ -92885,7 +92826,6 @@ One row at a time. Clicking a different row replaces the previous selection.
92885
92826
 
92886
92827
  ```tsx
92887
92828
  'use client';
92888
- import Image from 'next/image';
92889
92829
  import { Database } from '@primeicons/react/database';
92890
92830
  import { ProductService, type Product } from '@/shared/services/product.service';
92891
92831
  import type { DataTableSelectionEvent } from 'primereact/datatable';
@@ -92960,7 +92900,7 @@ export default function SingleSelectionDemo() {
92960
92900
  <DataTableRow key={item.id}>
92961
92901
  <DataTableCell>
92962
92902
  <div className="flex items-center gap-3">
92963
- <Image
92903
+ <img
92964
92904
  src={`https://primefaces.org/cdn/primevue/images/product/${item.image}`}
92965
92905
  alt={item.name}
92966
92906
  width={40}
@@ -93020,7 +92960,6 @@ Multiple rows without a dedicated column. Pair with `metaKeySelection` so Ctrl/C
93020
92960
 
93021
92961
  ```tsx
93022
92962
  'use client';
93023
- import Image from 'next/image';
93024
92963
  import { ProductService, type Product } from '@/shared/services/product.service';
93025
92964
  import { ShoppingCart } from '@primeicons/react/shopping-cart';
93026
92965
  import { Database } from '@primeicons/react/database';
@@ -93131,7 +93070,7 @@ export default function MultipleSelectionDemo() {
93131
93070
  <DataTableRow key={item.id}>
93132
93071
  <DataTableCell>
93133
93072
  <div className="flex items-center gap-3">
93134
- <Image
93073
+ <img
93135
93074
  src={`https://primefaces.org/cdn/primevue/images/product/${item.image}`}
93136
93075
  alt={item.name}
93137
93076
  width={40}
@@ -93315,7 +93254,6 @@ Arrow Up/Down moves focus between rows, Space or Enter toggles the focused row,
93315
93254
 
93316
93255
  ```tsx
93317
93256
  'use client';
93318
- import Image from 'next/image';
93319
93257
  import { Database } from '@primeicons/react/database';
93320
93258
  import { ProductService, type Product } from '@/shared/services/product.service';
93321
93259
  import type { DataTableSelectionEvent } from 'primereact/datatable';
@@ -93407,7 +93345,7 @@ export default function KeyboardDemo() {
93407
93345
  <DataTableRow key={item.id}>
93408
93346
  <DataTableCell>
93409
93347
  <div className="flex items-center gap-3">
93410
- <Image
93348
+ <img
93411
93349
  src={`https://primefaces.org/cdn/primevue/images/product/${item.image}`}
93412
93350
  alt={item.name}
93413
93351
  width={36}
@@ -93493,7 +93431,6 @@ import { SortAlt } from '@primeicons/react/sort-alt';
93493
93431
  import { SortAmountDown } from '@primeicons/react/sort-amount-down';
93494
93432
  import { SortAmountUpAlt } from '@primeicons/react/sort-amount-up-alt';
93495
93433
  import type { DataTableSortOrderInstance } from 'primereact/datatable';
93496
- import Image from 'next/image';
93497
93434
  import * as React from 'react';
93498
93435
 
93499
93436
  const statusSeverity: Record<string, 'success' | 'warn' | 'danger'> = {
@@ -93580,7 +93517,7 @@ export default function SortDemo() {
93580
93517
  <DataTableRow key={item.id}>
93581
93518
  <DataTableCell>
93582
93519
  <div className="flex items-center gap-3">
93583
- <Image
93520
+ <img
93584
93521
  src={`https://primefaces.org/cdn/primevue/images/product/${item.image}`}
93585
93522
  alt={item.name}
93586
93523
  width={40}
@@ -93640,7 +93577,6 @@ Hold Ctrl/Cmd and click multiple column headers to sort by several fields at onc
93640
93577
 
93641
93578
  ```tsx
93642
93579
  'use client';
93643
- import Image from 'next/image';
93644
93580
  import { ProductService, type Product } from '@/shared/services/product.service';
93645
93581
  import type { DataTableSortOrderInstance } from 'primereact/datatable';
93646
93582
  import { SortAlt } from '@primeicons/react/sort-alt';
@@ -93752,7 +93688,7 @@ export default function MultiSortDemo() {
93752
93688
  <DataTableRow key={item.id}>
93753
93689
  <DataTableCell>
93754
93690
  <div className="flex items-center gap-3">
93755
- <Image
93691
+ <img
93756
93692
  src={`https://primefaces.org/cdn/primevue/images/product/${item.image}`}
93757
93693
  alt={item.name}
93758
93694
  width={40}
@@ -93812,7 +93748,6 @@ Apply an initial sort on mount via `defaultSortField` + `defaultSortOrder`.
93812
93748
 
93813
93749
  ```tsx
93814
93750
  'use client';
93815
- import Image from 'next/image';
93816
93751
  import { ProductService, type Product } from '@/shared/services/product.service';
93817
93752
  import type { DataTableSortOrderInstance } from 'primereact/datatable';
93818
93753
  import { SortAlt } from '@primeicons/react/sort-alt';
@@ -93924,7 +93859,7 @@ export default function PresortDemo() {
93924
93859
  <DataTableRow key={item.id}>
93925
93860
  <DataTableCell>
93926
93861
  <div className="flex items-center gap-3">
93927
- <Image
93862
+ <img
93928
93863
  src={`https://primefaces.org/cdn/primevue/images/product/${item.image}`}
93929
93864
  alt={item.name}
93930
93865
  width={40}
@@ -94007,7 +93942,6 @@ import {
94007
93942
  } from '@/components/ui/datatable';
94008
93943
  import { OverlayBadge } from '@/components/ui/overlaybadge';
94009
93944
  import { Tag } from '@/components/ui/tag';
94010
- import Image from 'next/image';
94011
93945
  import * as React from 'react';
94012
93946
 
94013
93947
  const statusSeverity: Record<string, 'success' | 'warn' | 'danger'> = {
@@ -94101,7 +94035,7 @@ export default function PresortMultiDemo() {
94101
94035
  <DataTableRow key={item.id}>
94102
94036
  <DataTableCell>
94103
94037
  <div className="flex items-center gap-3">
94104
- <Image
94038
+ <img
94105
94039
  src={`https://primefaces.org/cdn/primevue/images/product/${item.image}`}
94106
94040
  alt={item.name}
94107
94041
  width={40}
@@ -94934,7 +94868,6 @@ import {
94934
94868
  DataTableTableContainer
94935
94869
  } from '@/components/ui/datatable';
94936
94870
  import { Tag } from '@/components/ui/tag';
94937
- import Image from 'next/image';
94938
94871
  import * as React from 'react';
94939
94872
 
94940
94873
  const statusSeverity: Record<string, 'success' | 'warn' | 'danger'> = {
@@ -94987,7 +94920,7 @@ export default function ResizeDemo() {
94987
94920
  <DataTableRow key={item.id}>
94988
94921
  <DataTableCell>
94989
94922
  <div className="flex items-center gap-3">
94990
- <Image
94923
+ <img
94991
94924
  src={`https://primefaces.org/cdn/primevue/images/product/${item.image}`}
94992
94925
  alt={item.name}
94993
94926
  width={36}
@@ -95041,7 +94974,6 @@ Dragging grows or shrinks the whole table; adjacent columns keep their widths.
95041
94974
 
95042
94975
  ```tsx
95043
94976
  'use client';
95044
- import Image from 'next/image';
95045
94977
  import { Database } from '@primeicons/react/database';
95046
94978
  import { ProductService, type Product } from '@/shared/services/product.service';
95047
94979
  import {
@@ -95115,7 +95047,7 @@ export default function ResizeExpandDemo() {
95115
95047
  <DataTableRow key={item.id}>
95116
95048
  <DataTableCell>
95117
95049
  <div className="flex items-center gap-3">
95118
- <Image
95050
+ <img
95119
95051
  src={`https://primefaces.org/cdn/primevue/images/product/${item.image}`}
95120
95052
  alt={item.name}
95121
95053
  width={36}
@@ -95172,7 +95104,6 @@ Drag and drop column headers to reorder columns.
95172
95104
 
95173
95105
  ```tsx
95174
95106
  'use client';
95175
- import Image from 'next/image';
95176
95107
  import { ProductService, type Product } from '@/shared/services/product.service';
95177
95108
  import type { DataTableColumnReorderEvent } from 'primereact/datatable';
95178
95109
  import { ArrowDown } from '@primeicons/react/arrow-down';
@@ -95229,7 +95160,7 @@ function renderCell(field: string, item: Product) {
95229
95160
  case 'name':
95230
95161
  return (
95231
95162
  <div className="flex items-center gap-3">
95232
- <Image
95163
+ <img
95233
95164
  src={`https://primefaces.org/cdn/primevue/images/product/${item.image}`}
95234
95165
  alt={item.name}
95235
95166
  width={36}
@@ -95338,7 +95269,6 @@ Drag and drop rows to reorder data.
95338
95269
 
95339
95270
  ```tsx
95340
95271
  'use client';
95341
- import Image from 'next/image';
95342
95272
  import { ProductService, type Product } from '@/shared/services/product.service';
95343
95273
  import { Bars } from '@primeicons/react/bars';
95344
95274
  import { Database } from '@primeicons/react/database';
@@ -95416,7 +95346,7 @@ export default function RowReorderDemo() {
95416
95346
  </DataTableCell>
95417
95347
  <DataTableCell>
95418
95348
  <div className="flex items-center gap-3">
95419
- <Image
95349
+ <img
95420
95350
  src={`https://primefaces.org/cdn/primevue/images/product/${item.image}`}
95421
95351
  alt={item.name}
95422
95352
  width={36}
@@ -95950,7 +95880,6 @@ import {
95950
95880
  } from '@/components/ui/datatable';
95951
95881
  import { Tag } from '@/components/ui/tag';
95952
95882
  import { ProductService, type Product } from '@/shared/services/product.service';
95953
- import Image from 'next/image';
95954
95883
  import * as React from 'react';
95955
95884
 
95956
95885
  const statusSeverity: Record<string, 'success' | 'warn' | 'danger'> = {
@@ -95996,7 +95925,7 @@ export default function TemplateDemo() {
95996
95925
  <DataTableRow key={item.id}>
95997
95926
  <DataTableCell>
95998
95927
  <div className="flex items-center gap-3">
95999
- <Image
95928
+ <img
96000
95929
  src={`https://primefaces.org/cdn/primevue/images/product/${item.image}`}
96001
95930
  alt={item.name}
96002
95931
  width={40}
@@ -96037,7 +95966,6 @@ Export table data to CSV with customizable fields and headers.
96037
95966
 
96038
95967
  ```tsx
96039
95968
  'use client';
96040
- import Image from 'next/image';
96041
95969
  import { ProductService, type Product } from '@/shared/services/product.service';
96042
95970
  import { FileExport } from '@primeicons/react/file-export';
96043
95971
  import { Database } from '@primeicons/react/database';
@@ -96119,7 +96047,7 @@ export default function ExportDemo() {
96119
96047
  <DataTableRow key={item.id}>
96120
96048
  <DataTableCell>
96121
96049
  <div className="flex items-center gap-3">
96122
- <Image
96050
+ <img
96123
96051
  src={`https://primefaces.org/cdn/primevue/images/product/${item.image}`}
96124
96052
  alt={item.name}
96125
96053
  width={36}
@@ -96199,7 +96127,6 @@ import {
96199
96127
  DataTableTableContainer
96200
96128
  } from '@/components/ui/datatable';
96201
96129
  import { Tag } from '@/components/ui/tag';
96202
- import Image from 'next/image';
96203
96130
  import * as React from 'react';
96204
96131
 
96205
96132
  const statusSeverity: Record<string, 'success' | 'warn' | 'danger'> = {
@@ -96264,7 +96191,7 @@ export default function LoadingOverlayDemo() {
96264
96191
  <DataTableRow key={item.id}>
96265
96192
  <DataTableCell>
96266
96193
  <div className="flex items-center gap-3">
96267
- <Image
96194
+ <img
96268
96195
  src={`https://primefaces.org/cdn/primevue/images/product/${item.image}`}
96269
96196
  alt={item.name}
96270
96197
  width={40}
@@ -96327,7 +96254,6 @@ import {
96327
96254
  } from '@/components/ui/datatable';
96328
96255
  import { Skeleton } from '@/components/ui/skeleton';
96329
96256
  import { Tag } from '@/components/ui/tag';
96330
- import Image from 'next/image';
96331
96257
  import * as React from 'react';
96332
96258
 
96333
96259
  const statusSeverity: Record<string, 'success' | 'warn' | 'danger'> = {
@@ -96418,7 +96344,7 @@ export default function LoadingSkeletonDemo() {
96418
96344
  <DataTableRow key={item.id}>
96419
96345
  <DataTableCell>
96420
96346
  <div className="flex items-center gap-3">
96421
- <Image
96347
+ <img
96422
96348
  src={`https://primefaces.org/cdn/primevue/images/product/${item.image}`}
96423
96349
  alt={item.name}
96424
96350
  width={40}
@@ -96561,7 +96487,6 @@ import { DataView, DataViewContent } from '@/components/ui/dataview';
96561
96487
  import { Tag } from '@/components/ui/tag';
96562
96488
  import { ProductService } from '@/shared/services/product.service';
96563
96489
  import { Heart, ShoppingCart, StarFill } from '@primeicons/react';
96564
- import Image from 'next/image';
96565
96490
  import * as React from 'react';
96566
96491
 
96567
96492
  interface Product {
@@ -96611,14 +96536,14 @@ export default function Preview() {
96611
96536
  className={`flex flex-col sm:flex-row sm:items-center p-6 gap-4 ${index !== 0 ? 'border-t border-surface-200 dark:border-surface-700' : ''}`}
96612
96537
  >
96613
96538
  <div className="md:w-40 relative">
96614
- <Image
96539
+ <img
96615
96540
  className="mx-auto rounded w-full"
96616
96541
  src={`https://primefaces.org/cdn/primevue/images/product/${product.image}`}
96617
96542
  alt={product.name}
96618
96543
  width={160}
96619
96544
  height={160}
96620
96545
  />
96621
- <Tag severity={getSeverity(product)} className="absolute top-1 left-1">
96546
+ <Tag severity={getSeverity(product)} className="absolute top-1 left-1 dark:bg-surface-900!">
96622
96547
  {product.inventoryStatus}
96623
96548
  </Tag>
96624
96549
  </div>
@@ -96713,7 +96638,6 @@ import { DataView, DataViewContent } from '@/components/ui/dataview';
96713
96638
  import { Tag } from '@/components/ui/tag';
96714
96639
  import { ProductService } from '@/shared/services/product.service';
96715
96640
  import { Heart, ShoppingCart, StarFill } from '@primeicons/react';
96716
- import Image from 'next/image';
96717
96641
  import * as React from 'react';
96718
96642
 
96719
96643
  interface Product {
@@ -96763,14 +96687,14 @@ export default function BasicDemo() {
96763
96687
  className={`flex flex-col sm:flex-row sm:items-center p-6 gap-4 ${index !== 0 ? 'border-t border-surface-200 dark:border-surface-700' : ''}`}
96764
96688
  >
96765
96689
  <div className="md:w-40 relative">
96766
- <Image
96690
+ <img
96767
96691
  className="mx-auto rounded w-full"
96768
96692
  src={`https://primefaces.org/cdn/primevue/images/product/${product.image}`}
96769
96693
  alt={product.name}
96770
96694
  width={160}
96771
96695
  height={160}
96772
96696
  />
96773
- <Tag severity={getSeverity(product)} className="absolute top-1 left-1">
96697
+ <Tag severity={getSeverity(product)} className="absolute top-1 left-1 dark:bg-surface-900!">
96774
96698
  {product.inventoryStatus}
96775
96699
  </Tag>
96776
96700
  </div>
@@ -96831,7 +96755,6 @@ import { Paginator, PaginatorFirst, PaginatorLast, PaginatorNext, PaginatorPages
96831
96755
  import { Tag } from '@/components/ui/tag';
96832
96756
  import { ProductService } from '@/shared/services/product.service';
96833
96757
  import { Heart, ShoppingCart, StarFill } from '@primeicons/react';
96834
- import Image from 'next/image';
96835
96758
  import { PaginatorRootChangeEvent } from 'primereact/paginator';
96836
96759
  import * as React from 'react';
96837
96760
 
@@ -96884,14 +96807,14 @@ export default function PaginationDemo() {
96884
96807
  className={`flex flex-col sm:flex-row sm:items-center p-6 gap-4 ${index !== 0 ? 'border-t border-surface-200 dark:border-surface-700' : ''}`}
96885
96808
  >
96886
96809
  <div className="md:w-40 relative">
96887
- <Image
96810
+ <img
96888
96811
  className="mx-auto rounded w-full"
96889
96812
  src={`https://primefaces.org/cdn/primevue/images/product/${product.image}`}
96890
96813
  alt={product.name}
96891
96814
  width={160}
96892
96815
  height={160}
96893
96816
  />
96894
- <Tag severity={getSeverity(product)} className="absolute top-1 left-1">
96817
+ <Tag severity={getSeverity(product)} className="absolute top-1 left-1 dark:bg-surface-900!">
96895
96818
  {product.inventoryStatus}
96896
96819
  </Tag>
96897
96820
  </div>
@@ -96967,7 +96890,6 @@ import { ToggleButton } from '@/components/ui/togglebutton';
96967
96890
  import { ToggleButtonGroup } from '@/components/ui/togglebuttongroup';
96968
96891
  import { ProductService } from '@/shared/services/product.service';
96969
96892
  import { Heart, ShoppingCart, StarFill } from '@primeicons/react';
96970
- import Image from 'next/image';
96971
96893
  import { ToggleButtonGroupValueChangeEvent } from 'primereact/togglebuttongroup';
96972
96894
  import * as React from 'react';
96973
96895
 
@@ -97038,14 +96960,14 @@ export default function SortDemo() {
97038
96960
  className={`flex flex-col sm:flex-row sm:items-center p-6 gap-4 ${index !== 0 ? 'border-t border-surface-200 dark:border-surface-700' : ''}`}
97039
96961
  >
97040
96962
  <div className="md:w-40 relative">
97041
- <Image
96963
+ <img
97042
96964
  className="mx-auto rounded w-full"
97043
96965
  src={`https://primefaces.org/cdn/primevue/images/product/${product.image}`}
97044
96966
  alt={product.name}
97045
96967
  width={160}
97046
96968
  height={160}
97047
96969
  />
97048
- <Tag severity={getSeverity(product)} className="absolute top-1 left-1">
96970
+ <Tag severity={getSeverity(product)} className="absolute top-1 left-1 dark:bg-surface-900!">
97049
96971
  {product.inventoryStatus}
97050
96972
  </Tag>
97051
96973
  </div>
@@ -97107,7 +97029,6 @@ import { ToggleButton } from '@/components/ui/togglebutton';
97107
97029
  import { ToggleButtonGroup } from '@/components/ui/togglebuttongroup';
97108
97030
  import { ProductService } from '@/shared/services/product.service';
97109
97031
  import { Bars, Heart, ShoppingCart, StarFill, Table } from '@primeicons/react';
97110
- import Image from 'next/image';
97111
97032
  import { ToggleButtonGroupValueChangeEvent } from 'primereact/togglebuttongroup';
97112
97033
  import * as React from 'react';
97113
97034
 
@@ -97157,14 +97078,14 @@ export default function LayoutDemo() {
97157
97078
  className={`flex flex-col sm:flex-row sm:items-center p-6 gap-4 ${index !== 0 ? 'border-t border-surface-200 dark:border-surface-700' : ''}`}
97158
97079
  >
97159
97080
  <div className="md:w-40 relative">
97160
- <Image
97081
+ <img
97161
97082
  className="mx-auto rounded w-full"
97162
97083
  src={`https://primefaces.org/cdn/primevue/images/product/${product.image}`}
97163
97084
  alt={product.name}
97164
97085
  width={160}
97165
97086
  height={160}
97166
97087
  />
97167
- <Tag severity={getSeverity(product)} className="absolute top-1 left-1">
97088
+ <Tag severity={getSeverity(product)} className="absolute top-1 left-1 dark:bg-surface-900!">
97168
97089
  {product.inventoryStatus}
97169
97090
  </Tag>
97170
97091
  </div>
@@ -97218,14 +97139,14 @@ export default function LayoutDemo() {
97218
97139
  <div className="p-6 border border-surface-200 dark:border-surface-700 bg-surface-0 dark:bg-surface-900 rounded flex flex-col">
97219
97140
  <div className="bg-surface-50 flex justify-center rounded p-4">
97220
97141
  <div className="relative mx-auto">
97221
- <Image
97142
+ <img
97222
97143
  src={`https://primefaces.org/cdn/primevue/images/product/${product.image}`}
97223
97144
  alt={product.name}
97224
97145
  width={300}
97225
97146
  height={200}
97226
97147
  className="rounded"
97227
97148
  />
97228
- <Tag severity={getSeverity(product)} className="absolute top-1 left-1">
97149
+ <Tag severity={getSeverity(product)} className="absolute top-1 left-1 dark:bg-surface-900!">
97229
97150
  {product.inventoryStatus}
97230
97151
  </Tag>
97231
97152
  </div>
@@ -98533,7 +98454,7 @@ import {
98533
98454
  } from '@/components/ui/dialog';
98534
98455
  import { InputText } from '@/components/ui/inputtext';
98535
98456
  import { Label } from '@/components/ui/label';
98536
- import { ArrowDown, ArrowDownLeft, ArrowDownRight, ArrowLeft, ArrowRight, ArrowUp, ArrowUpLeft, ArrowUpRight, Times } from '@primeicons/react';
98457
+ import { Times } from '@primeicons/react';
98537
98458
  import { DialogRootChangeEvent, DialogRootProps } from 'primereact/dialog';
98538
98459
  import * as React from 'react';
98539
98460
 
@@ -98551,39 +98472,31 @@ export default function PositionDemo() {
98551
98472
  <div className="flex flex-wrap justify-center gap-2 mb-2">
98552
98473
  <Button onClick={() => openPosition('left')} severity="secondary" style={{ minWidth: '10rem' }}>
98553
98474
  Left
98554
- <ArrowLeft />
98555
98475
  </Button>
98556
98476
  <Button onClick={() => openPosition('right')} severity="secondary" style={{ minWidth: '10rem' }}>
98557
98477
  Right
98558
- <ArrowRight />
98559
98478
  </Button>
98560
98479
  </div>
98561
98480
  <div className="flex flex-wrap justify-center gap-2 mb-2">
98562
98481
  <Button onClick={() => openPosition('topleft')} severity="secondary" style={{ minWidth: '10rem' }}>
98563
98482
  TopLeft
98564
- <ArrowUpLeft />
98565
98483
  </Button>
98566
98484
  <Button onClick={() => openPosition('top')} severity="secondary" style={{ minWidth: '10rem' }}>
98567
98485
  Top
98568
- <ArrowUp />
98569
98486
  </Button>
98570
98487
  <Button onClick={() => openPosition('topright')} severity="secondary" style={{ minWidth: '10rem' }}>
98571
98488
  TopRight
98572
- <ArrowUpRight />
98573
98489
  </Button>
98574
98490
  </div>
98575
98491
  <div className="flex flex-wrap justify-center gap-2">
98576
98492
  <Button onClick={() => openPosition('bottomleft')} severity="secondary" style={{ minWidth: '10rem' }}>
98577
98493
  BottomLeft
98578
- <ArrowDownLeft />
98579
98494
  </Button>
98580
98495
  <Button onClick={() => openPosition('bottom')} severity="secondary" style={{ minWidth: '10rem' }}>
98581
98496
  Bottom
98582
- <ArrowDown />
98583
98497
  </Button>
98584
98498
  <Button onClick={() => openPosition('bottomright')} severity="secondary" style={{ minWidth: '10rem' }}>
98585
98499
  BottomRight
98586
- <ArrowDownRight />
98587
98500
  </Button>
98588
98501
  </div>
98589
98502
  <Dialog open={open} onOpenChange={(e: DialogRootChangeEvent) => setOpen(e.value as boolean)} position={position}>
@@ -110849,7 +110762,6 @@ import {
110849
110762
  SelectValue
110850
110763
  } from '@/components/ui/select';
110851
110764
  import { Search } from '@primeicons/react';
110852
- import Image from 'next/image';
110853
110765
  import type { SelectValueChangeEvent } from 'primereact/select';
110854
110766
  import * as React from 'react';
110855
110767
 
@@ -110912,7 +110824,7 @@ export default function FilterDemo() {
110912
110824
  {filteredCountries.map((country, index) => (
110913
110825
  <SelectOption key={country.code} index={index} uKey={country.code}>
110914
110826
  <div className="flex items-center gap-2">
110915
- <Image
110827
+ <img
110916
110828
  alt={country.name}
110917
110829
  src="https://primefaces.org/cdn/primevue/images/flag/flag_placeholder.png"
110918
110830
  className={`flag flag-${country.code.toLowerCase()} mr-2`}
@@ -113574,7 +113486,6 @@ import type { ToggleButtonGroupValueChangeEvent } from 'primereact/togglebuttong
113574
113486
  import { Slider } from '@/components/ui/slider';
113575
113487
  import { ToggleButton } from '@/components/ui/togglebutton';
113576
113488
  import { ToggleButtonGroup } from '@/components/ui/togglebuttongroup';
113577
- import Image from 'next/image';
113578
113489
  import * as React from 'react';
113579
113490
 
113580
113491
  export default function FilterDemo() {
@@ -113589,7 +113500,7 @@ export default function FilterDemo() {
113589
113500
 
113590
113501
  return (
113591
113502
  <div className="flex flex-col items-center justify-center">
113592
- <Image
113503
+ <img
113593
113504
  alt="user header"
113594
113505
  className="w-80 rounded mb-6"
113595
113506
  src="https://primefaces.org/cdn/primevue/images/galleria/galleria1.jpg"
@@ -116850,7 +116761,10 @@ import { Search } from '@primeicons/react';
116850
116761
 
116851
116762
  export default function CustomDemo() {
116852
116763
  return (
116853
- <Toolbar style={{ borderRadius: '3rem', padding: '0.75rem 1rem 0.75rem 1.5rem', background: 'var(--p-surface-900)', border: 'none' }}>
116764
+ <Toolbar
116765
+ className="@container"
116766
+ style={{ borderRadius: '3rem', padding: '0.75rem 1rem 0.75rem 1.5rem', background: 'var(--p-surface-900)', border: 'none' }}
116767
+ >
116854
116768
  <ToolbarStart>
116855
116769
  <div className="flex items-center gap-1">
116856
116770
  <i className="pi pi-prime text-xl" style={{ color: 'var(--p-primary-400)' }} />
@@ -116858,24 +116772,24 @@ export default function CustomDemo() {
116858
116772
  Brand
116859
116773
  </span>
116860
116774
  </div>
116861
- <div className="ml-6 flex gap-1">
116862
- <Button variant="text" size="small" className="text-surface-0 hover:bg-surface-700">
116775
+ <div className="ml-6 hidden @min-[620px]:flex gap-1">
116776
+ <Button variant="text" size="small" className="text-surface-0! hover:bg-surface-700!">
116863
116777
  Products
116864
116778
  </Button>
116865
- <Button variant="text" size="small" className="text-surface-0 hover:bg-surface-700">
116779
+ <Button variant="text" size="small" className="text-surface-0! hover:bg-surface-700!">
116866
116780
  Solutions
116867
116781
  </Button>
116868
- <Button variant="text" size="small" className="text-surface-0 hover:bg-surface-700">
116782
+ <Button variant="text" size="small" className="text-surface-0! hover:bg-surface-700!">
116869
116783
  Resources
116870
116784
  </Button>
116871
- <Button variant="text" size="small" className="text-surface-0 hover:bg-surface-700">
116785
+ <Button variant="text" size="small" className="text-surface-0! hover:bg-surface-700!">
116872
116786
  Pricing
116873
116787
  </Button>
116874
116788
  </div>
116875
116789
  </ToolbarStart>
116876
116790
  <ToolbarEnd>
116877
116791
  <div className="flex items-center gap-2">
116878
- <Button variant="text" size="small" iconOnly aria-label="Search" className="text-surface-0 hover:bg-surface-700">
116792
+ <Button variant="text" size="small" iconOnly aria-label="Search" className="text-surface-0! hover:bg-surface-700!">
116879
116793
  <Search />
116880
116794
  </Button>
116881
116795
  <Button severity="contrast" size="small">
@@ -117515,7 +117429,6 @@ import { useFilter } from '@primereact/hooks/use-filter';
117515
117429
  import { IconField } from '@primereact/ui/iconfield';
117516
117430
  import { InputText } from '@primereact/ui/inputtext';
117517
117431
  import { Tag } from '@primereact/ui/tag';
117518
- import Image from 'next/image';
117519
117432
  import * as React from 'react';
117520
117433
 
117521
117434
  const statusSeverity: Record<string, 'success' | 'warn' | 'danger'> = {
@@ -117558,12 +117471,10 @@ export default function BasicDemo() {
117558
117471
  {filteredData.map((item) => (
117559
117472
  <div key={item.id} className="p-3 border border-surface-200 dark:border-surface-700 rounded-md flex items-center gap-3">
117560
117473
  <div className="relative shrink-0 w-12 h-12 rounded-md shadow overflow-hidden">
117561
- <Image
117474
+ <img
117562
117475
  src={`https://primefaces.org/cdn/primevue/images/product/${item.image}`}
117563
117476
  alt={item.name}
117564
- fill
117565
- sizes="48px"
117566
- className="object-cover"
117477
+ className="w-full h-full object-cover"
117567
117478
  />
117568
117479
  </div>
117569
117480
  <div className="flex flex-col gap-1 flex-1 min-w-0">
@@ -119095,6 +119006,259 @@ Add a `.md` to a page’s URL to display a Markdown version of that page.
119095
119006
 
119096
119007
  <Button as="a" href="/docs/overview/llms.md" target="_blank">Open /docs/overview/llms.md</Button>
119097
119008
 
119009
+ # MCP Server
119010
+
119011
+ Connect AI assistants to PrimeReact component documentation, guides, examples, setup, and API metadata.
119012
+
119013
+ ## Introduction
119014
+
119015
+ [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) lets AI assistants call external tools. The `@primereact/mcp@11.0.0` package uses those tools to search and read the PrimeReact documentation included with the package.
119016
+
119017
+ - Find components, guides, examples, setup instructions, and hooks.
119018
+ - Read mode-scoped component APIs and documentation sections.
119019
+ - Check component usage against documented properties and callbacks.
119020
+ - Return links to the related PrimeReact documentation when available.
119021
+
119022
+ The server requires Node.js 22 or newer. It is read-only and does not change your project files or PrimeReact configuration.
119023
+
119024
+ ## CLI Setup
119025
+
119026
+ The recommended setup is the [PrimeReact Plugin](./plugin). It installs this MCP server together with the PrimeReact skills for implementation, setup, theming, migration, and troubleshooting.
119027
+
119028
+ ```bash
119029
+ pnpm dlx @primeui/cli@1.0.0 plugin install --tool copilot --library primereact
119030
+ pnpm dlx @primeui/cli@1.0.0 doctor --tool copilot --library primereact
119031
+ ```
119032
+
119033
+ 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.
119034
+
119035
+ ## Manual Setup
119036
+
119037
+ ### Claude Code
119038
+
119039
+ Add the server to your user configuration to use it in every project, or omit `-s user` for the current project only.
119040
+
119041
+ ```bash
119042
+ claude mcp add primereact -s user -- npx -y @primereact/mcp@11.0.0
119043
+ ```
119044
+
119045
+ See the [Claude Code MCP documentation](https://docs.anthropic.com/en/docs/claude-code/mcp) for client-specific options.
119046
+
119047
+ ### VS Code
119048
+
119049
+ 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.
119050
+
119051
+ ```json
119052
+ {
119053
+ "servers": {
119054
+ "primereact": {
119055
+ "command": "npx",
119056
+ "args": ["-y", "@primereact/mcp@11.0.0"]
119057
+ }
119058
+ }
119059
+ }
119060
+ ```
119061
+
119062
+ See the [VS Code MCP documentation](https://code.visualstudio.com/docs/copilot/chat/mcp-servers) for more details.
119063
+
119064
+ ### OpenAI Codex
119065
+
119066
+ Add the server with the Codex CLI, or add the same configuration to `~/.codex/config.toml`.
119067
+
119068
+ ```bash
119069
+ codex mcp add primereact -- npx -y @primereact/mcp@11.0.0
119070
+ ```
119071
+
119072
+ ```toml
119073
+ [mcp_servers.primereact]
119074
+ command = "npx"
119075
+ args = ["-y", "@primereact/mcp@11.0.0"]
119076
+ ```
119077
+
119078
+ See the [OpenAI Codex MCP documentation](https://developers.openai.com/codex/mcp/) for more details.
119079
+
119080
+ ### Cursor
119081
+
119082
+ Create `.cursor/mcp.json` in your project or `~/.cursor/mcp.json` for global configuration.
119083
+
119084
+ ```json
119085
+ {
119086
+ "mcpServers": {
119087
+ "primereact": {
119088
+ "command": "npx",
119089
+ "args": ["-y", "@primereact/mcp@11.0.0"]
119090
+ }
119091
+ }
119092
+ }
119093
+ ```
119094
+
119095
+ See the [Cursor MCP documentation](https://docs.cursor.com/context/model-context-protocol) for more details.
119096
+
119097
+ ## Tools
119098
+
119099
+ The PrimeReact MCP server provides eight tools.
119100
+
119101
+ | Tool | Purpose |
119102
+ | ---------------- | ----------------------------------------------------------------------------------------- |
119103
+ | `list` | List available components, guides, examples, resources, or modes. |
119104
+ | `search` | Search generated component, guide, section, API, hook, and example text. |
119105
+ | `get_component` | Read mode-scoped component or hook documentation, API metadata, and available sections. |
119106
+ | `get_guide` | Read a generated PrimeReact guide and its source metadata. |
119107
+ | `get_example` | Return an example from a documented component or hook section. |
119108
+ | `get_setup` | Return setup guidance for a supported PrimeReact mode and environment. |
119109
+ | `validate_usage` | Validate component usage against generated PrimeReact API metadata in one selected mode. |
119110
+ | `version` | Report the server version and the status of its documentation data, tools, and resources. |
119111
+
119112
+ ## Data and Validation
119113
+
119114
+ 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.
119115
+
119116
+ - The tools do not edit files, install dependencies, or update configuration.
119117
+ - Component, setup, example, and validation calls stay in one selected mode: `styled`, `tailwind`, `primitive`, `headless`, or `hooks` where supported.
119118
+ - `validate_usage` checks documented API metadata. If the required metadata is unavailable or the mode is ambiguous, it reports that limitation instead of guessing.
119119
+ - Run your project type checks, tests, and browser checks after making changes. MCP validation does not replace them.
119120
+
119121
+ 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.
119122
+
119123
+ # Plugin
119124
+
119125
+ Install PrimeReact workflow skills and the PrimeReact MCP server in a supported AI assistant.
119126
+
119127
+ ## Introduction
119128
+
119129
+ 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.
119130
+
119131
+ The plugin is published from the [primefaces/primeui-plugins](https://github.com/primefaces/primeui-plugins) repository. Use `@primeui/cli@1.0.0` for the same installation flow across supported assistants, or follow the manual setup for your client.
119132
+
119133
+ ## What It Installs
119134
+
119135
+ Installing the PrimeReact Plugin adds:
119136
+
119137
+ - Seven skills for PrimeReact implementation, setup, theming, accessibility, migration, and troubleshooting.
119138
+ - The PrimeReact MCP server, configured with `@primereact/mcp@11.0.0`.
119139
+ - The manifest required by the selected assistant.
119140
+
119141
+ PrimeVue and PrimeNG are separate plugins. Installing this plugin does not change your application or install PrimeReact dependencies in the project.
119142
+
119143
+ ## Skills
119144
+
119145
+ Each skill covers one type of PrimeReact work. The skills use `@primereact/mcp@11.0.0` when they need mode-scoped component APIs, examples, setup guides, hooks, or usage validation.
119146
+
119147
+ | Skill | Use it for |
119148
+ | ------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
119149
+ | `primereact-router` | Select the PrimeReact mode and choose the skill that matches the task. |
119150
+ | `primereact-component-implementation` | Choose and implement components, composition, properties, callbacks, and documented hooks. |
119151
+ | `primereact-setup-installation` | Configure a supported React environment in `styled`, `tailwind`, `primitive`, or `headless` mode. |
119152
+ | `primereact-theming-customization` | Work with styled presets and tokens, Tailwind-owned components, primitives, headless markup, or pass-through APIs without mixing modes. |
119153
+ | `primereact-accessibility-icons` | Review semantics, keyboard behavior, focus, accessible names, PrimeIcons, and custom icons in the selected mode. |
119154
+ | `primereact-migration` | Plan and apply source-backed version or mode changes using current PrimeReact guides. |
119155
+ | `primereact-audit-troubleshooting` | Find invalid APIs and troubleshoot components, setup, MCP, plugin, or duplicate configurations. |
119156
+
119157
+ Skill names use the `primereact-` prefix because assistants may keep skills from several plugins in one shared namespace.
119158
+
119159
+ ## How Skills Work
119160
+
119161
+ You do not need to select a skill manually. Describe the PrimeReact task and the router chooses the relevant workflow.
119162
+
119163
+ - 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.
119164
+ - The selected skill reads only the component or guide information needed for that mode.
119165
+ - When component metadata is available, the skill validates the final PrimeReact usage in the same mode.
119166
+ - 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.
119167
+
119168
+ After implementation, run the checks required by your project, including type checking, tests, browser behavior, accessibility, and visual review where applicable.
119169
+
119170
+ ## CLI Setup
119171
+
119172
+ 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.
119173
+
119174
+ ```bash
119175
+ pnpm dlx @primeui/cli@1.0.0 plugin install --tool copilot --library primereact
119176
+ ```
119177
+
119178
+ Supported tool values are `claude`, `codex`, `copilot`, `cursor`, and `gemini`. Use `copilot` for GitHub Copilot CLI and VS Code.
119179
+
119180
+ ## Lifecycle and Doctor
119181
+
119182
+ Use the same CLI to check the installation, update the plugin, or remove it. Each command applies only to PrimeReact in the selected assistant.
119183
+
119184
+ ```bash
119185
+ pnpm dlx @primeui/cli@1.0.0 plugin status --tool copilot --library primereact
119186
+ pnpm dlx @primeui/cli@1.0.0 plugin update --tool copilot --library primereact
119187
+ pnpm dlx @primeui/cli@1.0.0 plugin remove --tool copilot --library primereact
119188
+ pnpm dlx @primeui/cli@1.0.0 doctor --tool copilot --library primereact
119189
+
119190
+ # Machine-readable diagnostics
119191
+ pnpm dlx @primeui/cli@1.0.0 doctor --tool copilot --library primereact --json
119192
+ ```
119193
+
119194
+ 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.
119195
+
119196
+ ## Manual Setup
119197
+
119198
+ ### Source
119199
+
119200
+ 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.
119201
+
119202
+ ```bash
119203
+ git clone --branch main https://github.com/primefaces/primeui-plugins.git ~/primeui-plugins
119204
+ ls ~/primeui-plugins/plugins/primereact
119205
+ ```
119206
+
119207
+ ### Claude Code
119208
+
119209
+ Add the PrimeUI marketplace, then install only the PrimeReact plugin.
119210
+
119211
+ ```bash
119212
+ claude plugin marketplace add primefaces/primeui-plugins
119213
+ claude plugin install primereact@primeui
119214
+ claude plugin list --json
119215
+ ```
119216
+
119217
+ ### Codex
119218
+
119219
+ Add the PrimeUI marketplace, inspect its catalog, then install only the PrimeReact plugin. Use the interactive plugin browser to manage enablement.
119220
+
119221
+ ```bash
119222
+ codex plugin marketplace add primefaces/primeui-plugins
119223
+ codex plugin list --available
119224
+ codex plugin add primereact@primeui
119225
+ codex plugin list
119226
+ ```
119227
+
119228
+ ### VS Code Copilot
119229
+
119230
+ 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.
119231
+
119232
+ ```bash
119233
+ copilot plugin marketplace add primefaces/primeui-plugins
119234
+ copilot plugin install primereact@primeui
119235
+ ```
119236
+
119237
+ 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.
119238
+
119239
+ ### Cursor
119240
+
119241
+ 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.
119242
+
119243
+ ```bash
119244
+ mkdir -p ~/.cursor/plugins/local
119245
+ ln -s ~/primeui-plugins/plugins/primereact ~/.cursor/plugins/local/primereact
119246
+ ```
119247
+
119248
+ Use Cursor's Customize screen to manage the plugin, its skills, and its MCP server.
119249
+
119250
+ ### Gemini CLI
119251
+
119252
+ 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.
119253
+
119254
+ ```bash
119255
+ gemini extensions validate ~/primeui-plugins/plugins/primereact
119256
+ gemini extensions install ~/primeui-plugins/plugins/primereact --consent
119257
+ gemini extensions list --output-format json
119258
+ ```
119259
+
119260
+ Gemini CLI 0.29.3 requires `experimental.extensionManagement` to be enabled. The installed extension contains the seven PrimeReact skills and the PrimeReact MCP server.
119261
+
119098
119262
  # Installation
119099
119263
 
119100
119264
  Install PrimeReact's headless hooks and build fully custom components in your React project.
@@ -119113,7 +119277,7 @@ Headless hooks give you the behavior — state, keyboard navigation, focus and a
119113
119277
  Install the headless package using your favorite package manager:
119114
119278
 
119115
119279
  ```bash
119116
- npm install @primereact/headless@11.0.0-rc.2
119280
+ npm install @primereact/headless
119117
119281
  ```
119118
119282
 
119119
119283
  </DocStep>
@@ -119647,6 +119811,259 @@ Add a `.md` to a page’s URL to display a Markdown version of that page.
119647
119811
 
119648
119812
  <Button as="a" href="/docs/overview/llms.md" target="_blank">Open /docs/overview/llms.md</Button>
119649
119813
 
119814
+ # MCP Server
119815
+
119816
+ Connect AI assistants to PrimeReact component documentation, guides, examples, setup, and API metadata.
119817
+
119818
+ ## Introduction
119819
+
119820
+ [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) lets AI assistants call external tools. The `@primereact/mcp@11.0.0` package uses those tools to search and read the PrimeReact documentation included with the package.
119821
+
119822
+ - Find components, guides, examples, setup instructions, and hooks.
119823
+ - Read mode-scoped component APIs and documentation sections.
119824
+ - Check component usage against documented properties and callbacks.
119825
+ - Return links to the related PrimeReact documentation when available.
119826
+
119827
+ The server requires Node.js 22 or newer. It is read-only and does not change your project files or PrimeReact configuration.
119828
+
119829
+ ## CLI Setup
119830
+
119831
+ The recommended setup is the [PrimeReact Plugin](./plugin). It installs this MCP server together with the PrimeReact skills for implementation, setup, theming, migration, and troubleshooting.
119832
+
119833
+ ```bash
119834
+ pnpm dlx @primeui/cli@1.0.0 plugin install --tool copilot --library primereact
119835
+ pnpm dlx @primeui/cli@1.0.0 doctor --tool copilot --library primereact
119836
+ ```
119837
+
119838
+ 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.
119839
+
119840
+ ## Manual Setup
119841
+
119842
+ ### Claude Code
119843
+
119844
+ Add the server to your user configuration to use it in every project, or omit `-s user` for the current project only.
119845
+
119846
+ ```bash
119847
+ claude mcp add primereact -s user -- npx -y @primereact/mcp@11.0.0
119848
+ ```
119849
+
119850
+ See the [Claude Code MCP documentation](https://docs.anthropic.com/en/docs/claude-code/mcp) for client-specific options.
119851
+
119852
+ ### VS Code
119853
+
119854
+ 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.
119855
+
119856
+ ```json
119857
+ {
119858
+ "servers": {
119859
+ "primereact": {
119860
+ "command": "npx",
119861
+ "args": ["-y", "@primereact/mcp@11.0.0"]
119862
+ }
119863
+ }
119864
+ }
119865
+ ```
119866
+
119867
+ See the [VS Code MCP documentation](https://code.visualstudio.com/docs/copilot/chat/mcp-servers) for more details.
119868
+
119869
+ ### OpenAI Codex
119870
+
119871
+ Add the server with the Codex CLI, or add the same configuration to `~/.codex/config.toml`.
119872
+
119873
+ ```bash
119874
+ codex mcp add primereact -- npx -y @primereact/mcp@11.0.0
119875
+ ```
119876
+
119877
+ ```toml
119878
+ [mcp_servers.primereact]
119879
+ command = "npx"
119880
+ args = ["-y", "@primereact/mcp@11.0.0"]
119881
+ ```
119882
+
119883
+ See the [OpenAI Codex MCP documentation](https://developers.openai.com/codex/mcp/) for more details.
119884
+
119885
+ ### Cursor
119886
+
119887
+ Create `.cursor/mcp.json` in your project or `~/.cursor/mcp.json` for global configuration.
119888
+
119889
+ ```json
119890
+ {
119891
+ "mcpServers": {
119892
+ "primereact": {
119893
+ "command": "npx",
119894
+ "args": ["-y", "@primereact/mcp@11.0.0"]
119895
+ }
119896
+ }
119897
+ }
119898
+ ```
119899
+
119900
+ See the [Cursor MCP documentation](https://docs.cursor.com/context/model-context-protocol) for more details.
119901
+
119902
+ ## Tools
119903
+
119904
+ The PrimeReact MCP server provides eight tools.
119905
+
119906
+ | Tool | Purpose |
119907
+ | ---------------- | ----------------------------------------------------------------------------------------- |
119908
+ | `list` | List available components, guides, examples, resources, or modes. |
119909
+ | `search` | Search generated component, guide, section, API, hook, and example text. |
119910
+ | `get_component` | Read mode-scoped component or hook documentation, API metadata, and available sections. |
119911
+ | `get_guide` | Read a generated PrimeReact guide and its source metadata. |
119912
+ | `get_example` | Return an example from a documented component or hook section. |
119913
+ | `get_setup` | Return setup guidance for a supported PrimeReact mode and environment. |
119914
+ | `validate_usage` | Validate component usage against generated PrimeReact API metadata in one selected mode. |
119915
+ | `version` | Report the server version and the status of its documentation data, tools, and resources. |
119916
+
119917
+ ## Data and Validation
119918
+
119919
+ 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.
119920
+
119921
+ - The tools do not edit files, install dependencies, or update configuration.
119922
+ - Component, setup, example, and validation calls stay in one selected mode: `styled`, `tailwind`, `primitive`, `headless`, or `hooks` where supported.
119923
+ - `validate_usage` checks documented API metadata. If the required metadata is unavailable or the mode is ambiguous, it reports that limitation instead of guessing.
119924
+ - Run your project type checks, tests, and browser checks after making changes. MCP validation does not replace them.
119925
+
119926
+ 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.
119927
+
119928
+ # Plugin
119929
+
119930
+ Install PrimeReact workflow skills and the PrimeReact MCP server in a supported AI assistant.
119931
+
119932
+ ## Introduction
119933
+
119934
+ 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.
119935
+
119936
+ The plugin is published from the [primefaces/primeui-plugins](https://github.com/primefaces/primeui-plugins) repository. Use `@primeui/cli@1.0.0` for the same installation flow across supported assistants, or follow the manual setup for your client.
119937
+
119938
+ ## What It Installs
119939
+
119940
+ Installing the PrimeReact Plugin adds:
119941
+
119942
+ - Seven skills for PrimeReact implementation, setup, theming, accessibility, migration, and troubleshooting.
119943
+ - The PrimeReact MCP server, configured with `@primereact/mcp@11.0.0`.
119944
+ - The manifest required by the selected assistant.
119945
+
119946
+ PrimeVue and PrimeNG are separate plugins. Installing this plugin does not change your application or install PrimeReact dependencies in the project.
119947
+
119948
+ ## Skills
119949
+
119950
+ Each skill covers one type of PrimeReact work. The skills use `@primereact/mcp@11.0.0` when they need mode-scoped component APIs, examples, setup guides, hooks, or usage validation.
119951
+
119952
+ | Skill | Use it for |
119953
+ | ------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
119954
+ | `primereact-router` | Select the PrimeReact mode and choose the skill that matches the task. |
119955
+ | `primereact-component-implementation` | Choose and implement components, composition, properties, callbacks, and documented hooks. |
119956
+ | `primereact-setup-installation` | Configure a supported React environment in `styled`, `tailwind`, `primitive`, or `headless` mode. |
119957
+ | `primereact-theming-customization` | Work with styled presets and tokens, Tailwind-owned components, primitives, headless markup, or pass-through APIs without mixing modes. |
119958
+ | `primereact-accessibility-icons` | Review semantics, keyboard behavior, focus, accessible names, PrimeIcons, and custom icons in the selected mode. |
119959
+ | `primereact-migration` | Plan and apply source-backed version or mode changes using current PrimeReact guides. |
119960
+ | `primereact-audit-troubleshooting` | Find invalid APIs and troubleshoot components, setup, MCP, plugin, or duplicate configurations. |
119961
+
119962
+ Skill names use the `primereact-` prefix because assistants may keep skills from several plugins in one shared namespace.
119963
+
119964
+ ## How Skills Work
119965
+
119966
+ You do not need to select a skill manually. Describe the PrimeReact task and the router chooses the relevant workflow.
119967
+
119968
+ - 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.
119969
+ - The selected skill reads only the component or guide information needed for that mode.
119970
+ - When component metadata is available, the skill validates the final PrimeReact usage in the same mode.
119971
+ - 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.
119972
+
119973
+ After implementation, run the checks required by your project, including type checking, tests, browser behavior, accessibility, and visual review where applicable.
119974
+
119975
+ ## CLI Setup
119976
+
119977
+ 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.
119978
+
119979
+ ```bash
119980
+ pnpm dlx @primeui/cli@1.0.0 plugin install --tool copilot --library primereact
119981
+ ```
119982
+
119983
+ Supported tool values are `claude`, `codex`, `copilot`, `cursor`, and `gemini`. Use `copilot` for GitHub Copilot CLI and VS Code.
119984
+
119985
+ ## Lifecycle and Doctor
119986
+
119987
+ Use the same CLI to check the installation, update the plugin, or remove it. Each command applies only to PrimeReact in the selected assistant.
119988
+
119989
+ ```bash
119990
+ pnpm dlx @primeui/cli@1.0.0 plugin status --tool copilot --library primereact
119991
+ pnpm dlx @primeui/cli@1.0.0 plugin update --tool copilot --library primereact
119992
+ pnpm dlx @primeui/cli@1.0.0 plugin remove --tool copilot --library primereact
119993
+ pnpm dlx @primeui/cli@1.0.0 doctor --tool copilot --library primereact
119994
+
119995
+ # Machine-readable diagnostics
119996
+ pnpm dlx @primeui/cli@1.0.0 doctor --tool copilot --library primereact --json
119997
+ ```
119998
+
119999
+ 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.
120000
+
120001
+ ## Manual Setup
120002
+
120003
+ ### Source
120004
+
120005
+ 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.
120006
+
120007
+ ```bash
120008
+ git clone --branch main https://github.com/primefaces/primeui-plugins.git ~/primeui-plugins
120009
+ ls ~/primeui-plugins/plugins/primereact
120010
+ ```
120011
+
120012
+ ### Claude Code
120013
+
120014
+ Add the PrimeUI marketplace, then install only the PrimeReact plugin.
120015
+
120016
+ ```bash
120017
+ claude plugin marketplace add primefaces/primeui-plugins
120018
+ claude plugin install primereact@primeui
120019
+ claude plugin list --json
120020
+ ```
120021
+
120022
+ ### Codex
120023
+
120024
+ Add the PrimeUI marketplace, inspect its catalog, then install only the PrimeReact plugin. Use the interactive plugin browser to manage enablement.
120025
+
120026
+ ```bash
120027
+ codex plugin marketplace add primefaces/primeui-plugins
120028
+ codex plugin list --available
120029
+ codex plugin add primereact@primeui
120030
+ codex plugin list
120031
+ ```
120032
+
120033
+ ### VS Code Copilot
120034
+
120035
+ 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.
120036
+
120037
+ ```bash
120038
+ copilot plugin marketplace add primefaces/primeui-plugins
120039
+ copilot plugin install primereact@primeui
120040
+ ```
120041
+
120042
+ 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.
120043
+
120044
+ ### Cursor
120045
+
120046
+ 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.
120047
+
120048
+ ```bash
120049
+ mkdir -p ~/.cursor/plugins/local
120050
+ ln -s ~/primeui-plugins/plugins/primereact ~/.cursor/plugins/local/primereact
120051
+ ```
120052
+
120053
+ Use Cursor's Customize screen to manage the plugin, its skills, and its MCP server.
120054
+
120055
+ ### Gemini CLI
120056
+
120057
+ 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.
120058
+
120059
+ ```bash
120060
+ gemini extensions validate ~/primeui-plugins/plugins/primereact
120061
+ gemini extensions install ~/primeui-plugins/plugins/primereact --consent
120062
+ gemini extensions list --output-format json
120063
+ ```
120064
+
120065
+ Gemini CLI 0.29.3 requires `experimental.extensionManagement` to be enabled. The installed extension contains the seven PrimeReact skills and the PrimeReact MCP server.
120066
+
119650
120067
  # Custom Icons
119651
120068
 
119652
120069
  PrimeReact components can be used with any icon library using the templating features.
@@ -119792,7 +120209,7 @@ export default function ColorDemo() {
119792
120209
 
119793
120210
  ## Spin
119794
120211
 
119795
- Use a spin animation utility like `animate-spin` from Tailwind apply rotation.
120212
+ 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.
119796
120213
 
119797
120214
  ```tsx
119798
120215
  import { Cog } from '@primeicons/react/cog';
@@ -119801,8 +120218,8 @@ import { Spinner } from '@primeicons/react/spinner';
119801
120218
  export default function SpinDemo() {
119802
120219
  return (
119803
120220
  <div className="flex justify-center gap-4">
119804
- <Spinner className="animate-spin" size={32} />
119805
- <Cog className="animate-spin" size={32} />
120221
+ <Spinner spin size={32} />
120222
+ <Cog spin size={32} />
119806
120223
  </div>
119807
120224
  );
119808
120225
  }
@@ -119826,7 +120243,7 @@ Primitive components ship **unstyled** — you compose the behavior and bring yo
119826
120243
  Install PrimeReact using your favorite package manager:
119827
120244
 
119828
120245
  ```bash
119829
- npm install primereact@11.0.0-rc.2
120246
+ npm install primereact
119830
120247
  ```
119831
120248
 
119832
120249
  </DocStep>
@@ -120642,6 +121059,259 @@ Add a `.md` to a page’s URL to display a Markdown version of that page.
120642
121059
 
120643
121060
  <Button as="a" href="/docs/overview/llms.md" target="_blank">Open /docs/overview/llms.md</Button>
120644
121061
 
121062
+ # MCP Server
121063
+
121064
+ Connect AI assistants to PrimeReact component documentation, guides, examples, setup, and API metadata.
121065
+
121066
+ ## Introduction
121067
+
121068
+ [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) lets AI assistants call external tools. The `@primereact/mcp@11.0.0` package uses those tools to search and read the PrimeReact documentation included with the package.
121069
+
121070
+ - Find components, guides, examples, setup instructions, and hooks.
121071
+ - Read mode-scoped component APIs and documentation sections.
121072
+ - Check component usage against documented properties and callbacks.
121073
+ - Return links to the related PrimeReact documentation when available.
121074
+
121075
+ The server requires Node.js 22 or newer. It is read-only and does not change your project files or PrimeReact configuration.
121076
+
121077
+ ## CLI Setup
121078
+
121079
+ The recommended setup is the [PrimeReact Plugin](./plugin). It installs this MCP server together with the PrimeReact skills for implementation, setup, theming, migration, and troubleshooting.
121080
+
121081
+ ```bash
121082
+ pnpm dlx @primeui/cli@1.0.0 plugin install --tool copilot --library primereact
121083
+ pnpm dlx @primeui/cli@1.0.0 doctor --tool copilot --library primereact
121084
+ ```
121085
+
121086
+ 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.
121087
+
121088
+ ## Manual Setup
121089
+
121090
+ ### Claude Code
121091
+
121092
+ Add the server to your user configuration to use it in every project, or omit `-s user` for the current project only.
121093
+
121094
+ ```bash
121095
+ claude mcp add primereact -s user -- npx -y @primereact/mcp@11.0.0
121096
+ ```
121097
+
121098
+ See the [Claude Code MCP documentation](https://docs.anthropic.com/en/docs/claude-code/mcp) for client-specific options.
121099
+
121100
+ ### VS Code
121101
+
121102
+ 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.
121103
+
121104
+ ```json
121105
+ {
121106
+ "servers": {
121107
+ "primereact": {
121108
+ "command": "npx",
121109
+ "args": ["-y", "@primereact/mcp@11.0.0"]
121110
+ }
121111
+ }
121112
+ }
121113
+ ```
121114
+
121115
+ See the [VS Code MCP documentation](https://code.visualstudio.com/docs/copilot/chat/mcp-servers) for more details.
121116
+
121117
+ ### OpenAI Codex
121118
+
121119
+ Add the server with the Codex CLI, or add the same configuration to `~/.codex/config.toml`.
121120
+
121121
+ ```bash
121122
+ codex mcp add primereact -- npx -y @primereact/mcp@11.0.0
121123
+ ```
121124
+
121125
+ ```toml
121126
+ [mcp_servers.primereact]
121127
+ command = "npx"
121128
+ args = ["-y", "@primereact/mcp@11.0.0"]
121129
+ ```
121130
+
121131
+ See the [OpenAI Codex MCP documentation](https://developers.openai.com/codex/mcp/) for more details.
121132
+
121133
+ ### Cursor
121134
+
121135
+ Create `.cursor/mcp.json` in your project or `~/.cursor/mcp.json` for global configuration.
121136
+
121137
+ ```json
121138
+ {
121139
+ "mcpServers": {
121140
+ "primereact": {
121141
+ "command": "npx",
121142
+ "args": ["-y", "@primereact/mcp@11.0.0"]
121143
+ }
121144
+ }
121145
+ }
121146
+ ```
121147
+
121148
+ See the [Cursor MCP documentation](https://docs.cursor.com/context/model-context-protocol) for more details.
121149
+
121150
+ ## Tools
121151
+
121152
+ The PrimeReact MCP server provides eight tools.
121153
+
121154
+ | Tool | Purpose |
121155
+ | ---------------- | ----------------------------------------------------------------------------------------- |
121156
+ | `list` | List available components, guides, examples, resources, or modes. |
121157
+ | `search` | Search generated component, guide, section, API, hook, and example text. |
121158
+ | `get_component` | Read mode-scoped component or hook documentation, API metadata, and available sections. |
121159
+ | `get_guide` | Read a generated PrimeReact guide and its source metadata. |
121160
+ | `get_example` | Return an example from a documented component or hook section. |
121161
+ | `get_setup` | Return setup guidance for a supported PrimeReact mode and environment. |
121162
+ | `validate_usage` | Validate component usage against generated PrimeReact API metadata in one selected mode. |
121163
+ | `version` | Report the server version and the status of its documentation data, tools, and resources. |
121164
+
121165
+ ## Data and Validation
121166
+
121167
+ 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.
121168
+
121169
+ - The tools do not edit files, install dependencies, or update configuration.
121170
+ - Component, setup, example, and validation calls stay in one selected mode: `styled`, `tailwind`, `primitive`, `headless`, or `hooks` where supported.
121171
+ - `validate_usage` checks documented API metadata. If the required metadata is unavailable or the mode is ambiguous, it reports that limitation instead of guessing.
121172
+ - Run your project type checks, tests, and browser checks after making changes. MCP validation does not replace them.
121173
+
121174
+ 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.
121175
+
121176
+ # Plugin
121177
+
121178
+ Install PrimeReact workflow skills and the PrimeReact MCP server in a supported AI assistant.
121179
+
121180
+ ## Introduction
121181
+
121182
+ 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.
121183
+
121184
+ The plugin is published from the [primefaces/primeui-plugins](https://github.com/primefaces/primeui-plugins) repository. Use `@primeui/cli@1.0.0` for the same installation flow across supported assistants, or follow the manual setup for your client.
121185
+
121186
+ ## What It Installs
121187
+
121188
+ Installing the PrimeReact Plugin adds:
121189
+
121190
+ - Seven skills for PrimeReact implementation, setup, theming, accessibility, migration, and troubleshooting.
121191
+ - The PrimeReact MCP server, configured with `@primereact/mcp@11.0.0`.
121192
+ - The manifest required by the selected assistant.
121193
+
121194
+ PrimeVue and PrimeNG are separate plugins. Installing this plugin does not change your application or install PrimeReact dependencies in the project.
121195
+
121196
+ ## Skills
121197
+
121198
+ Each skill covers one type of PrimeReact work. The skills use `@primereact/mcp@11.0.0` when they need mode-scoped component APIs, examples, setup guides, hooks, or usage validation.
121199
+
121200
+ | Skill | Use it for |
121201
+ | ------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
121202
+ | `primereact-router` | Select the PrimeReact mode and choose the skill that matches the task. |
121203
+ | `primereact-component-implementation` | Choose and implement components, composition, properties, callbacks, and documented hooks. |
121204
+ | `primereact-setup-installation` | Configure a supported React environment in `styled`, `tailwind`, `primitive`, or `headless` mode. |
121205
+ | `primereact-theming-customization` | Work with styled presets and tokens, Tailwind-owned components, primitives, headless markup, or pass-through APIs without mixing modes. |
121206
+ | `primereact-accessibility-icons` | Review semantics, keyboard behavior, focus, accessible names, PrimeIcons, and custom icons in the selected mode. |
121207
+ | `primereact-migration` | Plan and apply source-backed version or mode changes using current PrimeReact guides. |
121208
+ | `primereact-audit-troubleshooting` | Find invalid APIs and troubleshoot components, setup, MCP, plugin, or duplicate configurations. |
121209
+
121210
+ Skill names use the `primereact-` prefix because assistants may keep skills from several plugins in one shared namespace.
121211
+
121212
+ ## How Skills Work
121213
+
121214
+ You do not need to select a skill manually. Describe the PrimeReact task and the router chooses the relevant workflow.
121215
+
121216
+ - 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.
121217
+ - The selected skill reads only the component or guide information needed for that mode.
121218
+ - When component metadata is available, the skill validates the final PrimeReact usage in the same mode.
121219
+ - 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.
121220
+
121221
+ After implementation, run the checks required by your project, including type checking, tests, browser behavior, accessibility, and visual review where applicable.
121222
+
121223
+ ## CLI Setup
121224
+
121225
+ 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.
121226
+
121227
+ ```bash
121228
+ pnpm dlx @primeui/cli@1.0.0 plugin install --tool copilot --library primereact
121229
+ ```
121230
+
121231
+ Supported tool values are `claude`, `codex`, `copilot`, `cursor`, and `gemini`. Use `copilot` for GitHub Copilot CLI and VS Code.
121232
+
121233
+ ## Lifecycle and Doctor
121234
+
121235
+ Use the same CLI to check the installation, update the plugin, or remove it. Each command applies only to PrimeReact in the selected assistant.
121236
+
121237
+ ```bash
121238
+ pnpm dlx @primeui/cli@1.0.0 plugin status --tool copilot --library primereact
121239
+ pnpm dlx @primeui/cli@1.0.0 plugin update --tool copilot --library primereact
121240
+ pnpm dlx @primeui/cli@1.0.0 plugin remove --tool copilot --library primereact
121241
+ pnpm dlx @primeui/cli@1.0.0 doctor --tool copilot --library primereact
121242
+
121243
+ # Machine-readable diagnostics
121244
+ pnpm dlx @primeui/cli@1.0.0 doctor --tool copilot --library primereact --json
121245
+ ```
121246
+
121247
+ 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.
121248
+
121249
+ ## Manual Setup
121250
+
121251
+ ### Source
121252
+
121253
+ 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.
121254
+
121255
+ ```bash
121256
+ git clone --branch main https://github.com/primefaces/primeui-plugins.git ~/primeui-plugins
121257
+ ls ~/primeui-plugins/plugins/primereact
121258
+ ```
121259
+
121260
+ ### Claude Code
121261
+
121262
+ Add the PrimeUI marketplace, then install only the PrimeReact plugin.
121263
+
121264
+ ```bash
121265
+ claude plugin marketplace add primefaces/primeui-plugins
121266
+ claude plugin install primereact@primeui
121267
+ claude plugin list --json
121268
+ ```
121269
+
121270
+ ### Codex
121271
+
121272
+ Add the PrimeUI marketplace, inspect its catalog, then install only the PrimeReact plugin. Use the interactive plugin browser to manage enablement.
121273
+
121274
+ ```bash
121275
+ codex plugin marketplace add primefaces/primeui-plugins
121276
+ codex plugin list --available
121277
+ codex plugin add primereact@primeui
121278
+ codex plugin list
121279
+ ```
121280
+
121281
+ ### VS Code Copilot
121282
+
121283
+ 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.
121284
+
121285
+ ```bash
121286
+ copilot plugin marketplace add primefaces/primeui-plugins
121287
+ copilot plugin install primereact@primeui
121288
+ ```
121289
+
121290
+ 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.
121291
+
121292
+ ### Cursor
121293
+
121294
+ 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.
121295
+
121296
+ ```bash
121297
+ mkdir -p ~/.cursor/plugins/local
121298
+ ln -s ~/primeui-plugins/plugins/primereact ~/.cursor/plugins/local/primereact
121299
+ ```
121300
+
121301
+ Use Cursor's Customize screen to manage the plugin, its skills, and its MCP server.
121302
+
121303
+ ### Gemini CLI
121304
+
121305
+ 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.
121306
+
121307
+ ```bash
121308
+ gemini extensions validate ~/primeui-plugins/plugins/primereact
121309
+ gemini extensions install ~/primeui-plugins/plugins/primereact --consent
121310
+ gemini extensions list --output-format json
121311
+ ```
121312
+
121313
+ Gemini CLI 0.29.3 requires `experimental.extensionManagement` to be enabled. The installed extension contains the seven PrimeReact skills and the PrimeReact MCP server.
121314
+
120645
121315
  # Configuration
120646
121316
 
120647
121317
  Application wide configuration for PrimeReact.
@@ -120939,7 +121609,7 @@ export default function ColorDemo() {
120939
121609
 
120940
121610
  ## Spin
120941
121611
 
120942
- Use a spin animation utility like `animate-spin` from Tailwind apply rotation.
121612
+ 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.
120943
121613
 
120944
121614
  ```tsx
120945
121615
  import { Cog } from '@primeicons/react/cog';
@@ -120948,8 +121618,8 @@ import { Spinner } from '@primeicons/react/spinner';
120948
121618
  export default function SpinDemo() {
120949
121619
  return (
120950
121620
  <div className="flex justify-center gap-4">
120951
- <Spinner className="animate-spin" size={32} />
120952
- <Cog className="animate-spin" size={32} />
121621
+ <Spinner spin size={32} />
121622
+ <Cog spin size={32} />
120953
121623
  </div>
120954
121624
  );
120955
121625
  }
@@ -121016,7 +121686,7 @@ Start from our <a href="https://github.com/primefaces/primereact-examples/tree/m
121016
121686
  Install PrimeReact and a theme package using your favorite package manager:
121017
121687
 
121018
121688
  ```bash
121019
- npm install @primereact/ui@11.0.0-rc.2 @primeuix/themes@3.0.0-rc.1 @primeicons/react@8.0.0-rc.1
121689
+ npm install @primereact/ui @primeuix/themes @primeicons/react
121020
121690
  ```
121021
121691
 
121022
121692
  </DocStep>
@@ -121118,7 +121788,7 @@ Start from our <a href="https://github.com/primefaces/primereact-examples/tree/m
121118
121788
  Install PrimeReact and a theme package using your favorite package manager:
121119
121789
 
121120
121790
  ```bash
121121
- npm install @primereact/ui@11.0.0-rc.2 @primeuix/themes@3.0.0-rc.1 @primeicons/react@8.0.0-rc.1
121791
+ npm install @primereact/ui @primeuix/themes @primeicons/react
121122
121792
  ```
121123
121793
 
121124
121794
  </DocStep>
@@ -121248,7 +121918,7 @@ Start from our <a href="https://github.com/primefaces/primereact-examples/tree/m
121248
121918
  Install PrimeReact and a theme package using your favorite package manager:
121249
121919
 
121250
121920
  ```bash
121251
- npm install @primereact/ui@11.0.0-rc.2 @primeuix/themes@3.0.0-rc.1 @primeicons/react@8.0.0-rc.1
121921
+ npm install @primereact/ui @primeuix/themes @primeicons/react
121252
121922
  ```
121253
121923
 
121254
121924
  </DocStep>
@@ -121337,7 +122007,7 @@ Start from our <a href="https://github.com/primefaces/primereact-examples/tree/m
121337
122007
  Install PrimeReact and a theme package using your favorite package manager:
121338
122008
 
121339
122009
  ```bash
121340
- npm install @primereact/ui@11.0.0-rc.2 @primeuix/themes@3.0.0-rc.1 @primeicons/react@8.0.0-rc.1
122010
+ npm install @primereact/ui @primeuix/themes @primeicons/react
121341
122011
  ```
121342
122012
 
121343
122013
  </DocStep>
@@ -121430,7 +122100,7 @@ Start from our <a href="https://github.com/primefaces/primereact-examples/tree/m
121430
122100
  Install PrimeReact and a theme package using your favorite package manager:
121431
122101
 
121432
122102
  ```bash
121433
- npm install @primereact/ui@11.0.0-rc.2 @primeuix/themes@3.0.0-rc.1 @primeicons/react@8.0.0-rc.1
122103
+ npm install @primereact/ui @primeuix/themes @primeicons/react
121434
122104
  ```
121435
122105
 
121436
122106
  </DocStep>
@@ -123680,6 +124350,259 @@ Add a `.md` to a page’s URL to display a Markdown version of that page.
123680
124350
 
123681
124351
  <Button as="a" href="/docs/overview/llms.md" target="_blank">Open /docs/overview/llms.md</Button>
123682
124352
 
124353
+ # MCP Server
124354
+
124355
+ Connect AI assistants to PrimeReact component documentation, guides, examples, setup, and API metadata.
124356
+
124357
+ ## Introduction
124358
+
124359
+ [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) lets AI assistants call external tools. The `@primereact/mcp@11.0.0` package uses those tools to search and read the PrimeReact documentation included with the package.
124360
+
124361
+ - Find components, guides, examples, setup instructions, and hooks.
124362
+ - Read mode-scoped component APIs and documentation sections.
124363
+ - Check component usage against documented properties and callbacks.
124364
+ - Return links to the related PrimeReact documentation when available.
124365
+
124366
+ The server requires Node.js 22 or newer. It is read-only and does not change your project files or PrimeReact configuration.
124367
+
124368
+ ## CLI Setup
124369
+
124370
+ The recommended setup is the [PrimeReact Plugin](./plugin). It installs this MCP server together with the PrimeReact skills for implementation, setup, theming, migration, and troubleshooting.
124371
+
124372
+ ```bash
124373
+ pnpm dlx @primeui/cli@1.0.0 plugin install --tool copilot --library primereact
124374
+ pnpm dlx @primeui/cli@1.0.0 doctor --tool copilot --library primereact
124375
+ ```
124376
+
124377
+ 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.
124378
+
124379
+ ## Manual Setup
124380
+
124381
+ ### Claude Code
124382
+
124383
+ Add the server to your user configuration to use it in every project, or omit `-s user` for the current project only.
124384
+
124385
+ ```bash
124386
+ claude mcp add primereact -s user -- npx -y @primereact/mcp@11.0.0
124387
+ ```
124388
+
124389
+ See the [Claude Code MCP documentation](https://docs.anthropic.com/en/docs/claude-code/mcp) for client-specific options.
124390
+
124391
+ ### VS Code
124392
+
124393
+ 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.
124394
+
124395
+ ```json
124396
+ {
124397
+ "servers": {
124398
+ "primereact": {
124399
+ "command": "npx",
124400
+ "args": ["-y", "@primereact/mcp@11.0.0"]
124401
+ }
124402
+ }
124403
+ }
124404
+ ```
124405
+
124406
+ See the [VS Code MCP documentation](https://code.visualstudio.com/docs/copilot/chat/mcp-servers) for more details.
124407
+
124408
+ ### OpenAI Codex
124409
+
124410
+ Add the server with the Codex CLI, or add the same configuration to `~/.codex/config.toml`.
124411
+
124412
+ ```bash
124413
+ codex mcp add primereact -- npx -y @primereact/mcp@11.0.0
124414
+ ```
124415
+
124416
+ ```toml
124417
+ [mcp_servers.primereact]
124418
+ command = "npx"
124419
+ args = ["-y", "@primereact/mcp@11.0.0"]
124420
+ ```
124421
+
124422
+ See the [OpenAI Codex MCP documentation](https://developers.openai.com/codex/mcp/) for more details.
124423
+
124424
+ ### Cursor
124425
+
124426
+ Create `.cursor/mcp.json` in your project or `~/.cursor/mcp.json` for global configuration.
124427
+
124428
+ ```json
124429
+ {
124430
+ "mcpServers": {
124431
+ "primereact": {
124432
+ "command": "npx",
124433
+ "args": ["-y", "@primereact/mcp@11.0.0"]
124434
+ }
124435
+ }
124436
+ }
124437
+ ```
124438
+
124439
+ See the [Cursor MCP documentation](https://docs.cursor.com/context/model-context-protocol) for more details.
124440
+
124441
+ ## Tools
124442
+
124443
+ The PrimeReact MCP server provides eight tools.
124444
+
124445
+ | Tool | Purpose |
124446
+ | ---------------- | ----------------------------------------------------------------------------------------- |
124447
+ | `list` | List available components, guides, examples, resources, or modes. |
124448
+ | `search` | Search generated component, guide, section, API, hook, and example text. |
124449
+ | `get_component` | Read mode-scoped component or hook documentation, API metadata, and available sections. |
124450
+ | `get_guide` | Read a generated PrimeReact guide and its source metadata. |
124451
+ | `get_example` | Return an example from a documented component or hook section. |
124452
+ | `get_setup` | Return setup guidance for a supported PrimeReact mode and environment. |
124453
+ | `validate_usage` | Validate component usage against generated PrimeReact API metadata in one selected mode. |
124454
+ | `version` | Report the server version and the status of its documentation data, tools, and resources. |
124455
+
124456
+ ## Data and Validation
124457
+
124458
+ 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.
124459
+
124460
+ - The tools do not edit files, install dependencies, or update configuration.
124461
+ - Component, setup, example, and validation calls stay in one selected mode: `styled`, `tailwind`, `primitive`, `headless`, or `hooks` where supported.
124462
+ - `validate_usage` checks documented API metadata. If the required metadata is unavailable or the mode is ambiguous, it reports that limitation instead of guessing.
124463
+ - Run your project type checks, tests, and browser checks after making changes. MCP validation does not replace them.
124464
+
124465
+ 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.
124466
+
124467
+ # Plugin
124468
+
124469
+ Install PrimeReact workflow skills and the PrimeReact MCP server in a supported AI assistant.
124470
+
124471
+ ## Introduction
124472
+
124473
+ 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.
124474
+
124475
+ The plugin is published from the [primefaces/primeui-plugins](https://github.com/primefaces/primeui-plugins) repository. Use `@primeui/cli@1.0.0` for the same installation flow across supported assistants, or follow the manual setup for your client.
124476
+
124477
+ ## What It Installs
124478
+
124479
+ Installing the PrimeReact Plugin adds:
124480
+
124481
+ - Seven skills for PrimeReact implementation, setup, theming, accessibility, migration, and troubleshooting.
124482
+ - The PrimeReact MCP server, configured with `@primereact/mcp@11.0.0`.
124483
+ - The manifest required by the selected assistant.
124484
+
124485
+ PrimeVue and PrimeNG are separate plugins. Installing this plugin does not change your application or install PrimeReact dependencies in the project.
124486
+
124487
+ ## Skills
124488
+
124489
+ Each skill covers one type of PrimeReact work. The skills use `@primereact/mcp@11.0.0` when they need mode-scoped component APIs, examples, setup guides, hooks, or usage validation.
124490
+
124491
+ | Skill | Use it for |
124492
+ | ------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
124493
+ | `primereact-router` | Select the PrimeReact mode and choose the skill that matches the task. |
124494
+ | `primereact-component-implementation` | Choose and implement components, composition, properties, callbacks, and documented hooks. |
124495
+ | `primereact-setup-installation` | Configure a supported React environment in `styled`, `tailwind`, `primitive`, or `headless` mode. |
124496
+ | `primereact-theming-customization` | Work with styled presets and tokens, Tailwind-owned components, primitives, headless markup, or pass-through APIs without mixing modes. |
124497
+ | `primereact-accessibility-icons` | Review semantics, keyboard behavior, focus, accessible names, PrimeIcons, and custom icons in the selected mode. |
124498
+ | `primereact-migration` | Plan and apply source-backed version or mode changes using current PrimeReact guides. |
124499
+ | `primereact-audit-troubleshooting` | Find invalid APIs and troubleshoot components, setup, MCP, plugin, or duplicate configurations. |
124500
+
124501
+ Skill names use the `primereact-` prefix because assistants may keep skills from several plugins in one shared namespace.
124502
+
124503
+ ## How Skills Work
124504
+
124505
+ You do not need to select a skill manually. Describe the PrimeReact task and the router chooses the relevant workflow.
124506
+
124507
+ - 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.
124508
+ - The selected skill reads only the component or guide information needed for that mode.
124509
+ - When component metadata is available, the skill validates the final PrimeReact usage in the same mode.
124510
+ - 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.
124511
+
124512
+ After implementation, run the checks required by your project, including type checking, tests, browser behavior, accessibility, and visual review where applicable.
124513
+
124514
+ ## CLI Setup
124515
+
124516
+ 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.
124517
+
124518
+ ```bash
124519
+ pnpm dlx @primeui/cli@1.0.0 plugin install --tool copilot --library primereact
124520
+ ```
124521
+
124522
+ Supported tool values are `claude`, `codex`, `copilot`, `cursor`, and `gemini`. Use `copilot` for GitHub Copilot CLI and VS Code.
124523
+
124524
+ ## Lifecycle and Doctor
124525
+
124526
+ Use the same CLI to check the installation, update the plugin, or remove it. Each command applies only to PrimeReact in the selected assistant.
124527
+
124528
+ ```bash
124529
+ pnpm dlx @primeui/cli@1.0.0 plugin status --tool copilot --library primereact
124530
+ pnpm dlx @primeui/cli@1.0.0 plugin update --tool copilot --library primereact
124531
+ pnpm dlx @primeui/cli@1.0.0 plugin remove --tool copilot --library primereact
124532
+ pnpm dlx @primeui/cli@1.0.0 doctor --tool copilot --library primereact
124533
+
124534
+ # Machine-readable diagnostics
124535
+ pnpm dlx @primeui/cli@1.0.0 doctor --tool copilot --library primereact --json
124536
+ ```
124537
+
124538
+ 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.
124539
+
124540
+ ## Manual Setup
124541
+
124542
+ ### Source
124543
+
124544
+ 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.
124545
+
124546
+ ```bash
124547
+ git clone --branch main https://github.com/primefaces/primeui-plugins.git ~/primeui-plugins
124548
+ ls ~/primeui-plugins/plugins/primereact
124549
+ ```
124550
+
124551
+ ### Claude Code
124552
+
124553
+ Add the PrimeUI marketplace, then install only the PrimeReact plugin.
124554
+
124555
+ ```bash
124556
+ claude plugin marketplace add primefaces/primeui-plugins
124557
+ claude plugin install primereact@primeui
124558
+ claude plugin list --json
124559
+ ```
124560
+
124561
+ ### Codex
124562
+
124563
+ Add the PrimeUI marketplace, inspect its catalog, then install only the PrimeReact plugin. Use the interactive plugin browser to manage enablement.
124564
+
124565
+ ```bash
124566
+ codex plugin marketplace add primefaces/primeui-plugins
124567
+ codex plugin list --available
124568
+ codex plugin add primereact@primeui
124569
+ codex plugin list
124570
+ ```
124571
+
124572
+ ### VS Code Copilot
124573
+
124574
+ 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.
124575
+
124576
+ ```bash
124577
+ copilot plugin marketplace add primefaces/primeui-plugins
124578
+ copilot plugin install primereact@primeui
124579
+ ```
124580
+
124581
+ 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.
124582
+
124583
+ ### Cursor
124584
+
124585
+ 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.
124586
+
124587
+ ```bash
124588
+ mkdir -p ~/.cursor/plugins/local
124589
+ ln -s ~/primeui-plugins/plugins/primereact ~/.cursor/plugins/local/primereact
124590
+ ```
124591
+
124592
+ Use Cursor's Customize screen to manage the plugin, its skills, and its MCP server.
124593
+
124594
+ ### Gemini CLI
124595
+
124596
+ 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.
124597
+
124598
+ ```bash
124599
+ gemini extensions validate ~/primeui-plugins/plugins/primereact
124600
+ gemini extensions install ~/primeui-plugins/plugins/primereact --consent
124601
+ gemini extensions list --output-format json
124602
+ ```
124603
+
124604
+ Gemini CLI 0.29.3 requires `experimental.extensionManagement` to be enabled. The installed extension contains the seven PrimeReact skills and the PrimeReact MCP server.
124605
+
123683
124606
  # Custom Icons
123684
124607
 
123685
124608
  PrimeReact components can be used with any icon library using the templating features.
@@ -123825,7 +124748,7 @@ export default function ColorDemo() {
123825
124748
 
123826
124749
  ## Spin
123827
124750
 
123828
- Use a spin animation utility like `animate-spin` from Tailwind apply rotation.
124751
+ 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.
123829
124752
 
123830
124753
  ```tsx
123831
124754
  import { Cog } from '@primeicons/react/cog';
@@ -123834,8 +124757,8 @@ import { Spinner } from '@primeicons/react/spinner';
123834
124757
  export default function SpinDemo() {
123835
124758
  return (
123836
124759
  <div className="flex justify-center gap-4">
123837
- <Spinner className="animate-spin" size={32} />
123838
- <Cog className="animate-spin" size={32} />
124760
+ <Spinner spin size={32} />
124761
+ <Cog spin size={32} />
123839
124762
  </div>
123840
124763
  );
123841
124764
  }
@@ -123943,7 +124866,7 @@ PrimeReact Tailwind components are distributed through a shadcn-compatible regis
123943
124866
  Install PrimeReact along with the icon package and the Tailwind utilities the components rely on:
123944
124867
 
123945
124868
  ```bash
123946
- npm install primereact@11.0.0-rc.2 @primeicons/react@8.0.0-rc.1 tailwindcss-primeui tailwind-merge
124869
+ npm install primereact @primeicons/react tailwindcss-primeui tailwind-merge
123947
124870
  ```
123948
124871
 
123949
124872
  </DocStep>
@@ -124113,7 +125036,7 @@ PrimeReact Tailwind components are distributed through a shadcn-compatible regis
124113
125036
  Install PrimeReact along with the icon package and the Tailwind utilities the components rely on:
124114
125037
 
124115
125038
  ```bash
124116
- npm install primereact@11.0.0-rc.2 @primeicons/react@8.0.0-rc.1 tailwindcss-primeui tailwind-merge
125039
+ npm install primereact @primeicons/react tailwindcss-primeui tailwind-merge
124117
125040
  ```
124118
125041
 
124119
125042
  </DocStep>
@@ -124283,7 +125206,7 @@ PrimeReact Tailwind components are distributed through a shadcn-compatible regis
124283
125206
  Install PrimeReact along with the icon package and the Tailwind utilities the components rely on:
124284
125207
 
124285
125208
  ```bash
124286
- npm install primereact@11.0.0-rc.2 @primeicons/react@8.0.0-rc.1 tailwindcss-primeui tailwind-merge
125209
+ npm install primereact @primeicons/react tailwindcss-primeui tailwind-merge
124287
125210
  ```
124288
125211
 
124289
125212
  </DocStep>
@@ -124441,7 +125364,7 @@ PrimeReact Tailwind components are distributed through a shadcn-compatible regis
124441
125364
  Install PrimeReact along with the icon package and the Tailwind utilities the components rely on:
124442
125365
 
124443
125366
  ```bash
124444
- npm install primereact@11.0.0-rc.2 @primeicons/react@8.0.0-rc.1 tailwindcss-primeui tailwind-merge
125367
+ npm install primereact @primeicons/react tailwindcss-primeui tailwind-merge
124445
125368
  ```
124446
125369
 
124447
125370
  </DocStep>
@@ -124603,7 +125526,7 @@ PrimeReact Tailwind components are distributed through a shadcn-compatible regis
124603
125526
  Install PrimeReact along with the icon package and the Tailwind utilities the components rely on:
124604
125527
 
124605
125528
  ```bash
124606
- npm install primereact@11.0.0-rc.2 @primeicons/react@8.0.0-rc.1 tailwindcss-primeui tailwind-merge
125529
+ npm install primereact @primeicons/react tailwindcss-primeui tailwind-merge
124607
125530
  ```
124608
125531
 
124609
125532
  </DocStep>