@primereact/mcp 11.0.0 → 11.2.0

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 (189) hide show
  1. package/data/llms/headless/components/accordion/api.json +9 -9
  2. package/data/llms/headless/components/animateonscroll/api.json +2 -2
  3. package/data/llms/headless/components/autocomplete/api.json +33 -33
  4. package/data/llms/headless/components/avatar/api.json +1 -1
  5. package/data/llms/headless/components/carousel/api.json +15 -15
  6. package/data/llms/headless/components/checkbox/api.json +18 -18
  7. package/data/llms/headless/components/collapsible/api.json +14 -14
  8. package/data/llms/headless/components/compare/api.json +3 -3
  9. package/data/llms/headless/components/contextmenu/api.json +2 -2
  10. package/data/llms/headless/components/datatable/api.json +19 -19
  11. package/data/llms/headless/components/dataview/api.json +3 -3
  12. package/data/llms/headless/components/datepicker/api.json +43 -43
  13. package/data/llms/headless/components/dialog/api.json +19 -19
  14. package/data/llms/headless/components/divider/api.json +3 -3
  15. package/data/llms/headless/components/drawer/api.json +13 -13
  16. package/data/llms/headless/components/fieldset/api.json +9 -9
  17. package/data/llms/headless/components/fileupload/api.json +5 -5
  18. package/data/llms/headless/components/focustrap/api.json +4 -4
  19. package/data/llms/headless/components/gallery/api.json +23 -23
  20. package/data/llms/headless/components/inplace/api.json +3 -3
  21. package/data/llms/headless/components/inputcolor/api.json +6 -6
  22. package/data/llms/headless/components/inputcolor.md +0 -1
  23. package/data/llms/headless/components/inputnumber/api.json +8 -8
  24. package/data/llms/headless/components/inputotp/api.json +7 -7
  25. package/data/llms/headless/components/inputpassword/api.json +4 -4
  26. package/data/llms/headless/components/inputpassword.md +3 -3
  27. package/data/llms/headless/components/inputtags/api.json +8 -8
  28. package/data/llms/headless/components/inputtext/api.json +1 -1
  29. package/data/llms/headless/components/knob/api.json +18 -18
  30. package/data/llms/headless/components/listbox/api.json +27 -27
  31. package/data/llms/headless/components/menu/api.json +10 -10
  32. package/data/llms/headless/components/message/api.json +1 -1
  33. package/data/llms/headless/components/metergroup/api.json +3 -3
  34. package/data/llms/headless/components/motion/api.json +1 -1
  35. package/data/llms/headless/components/navigationmenu/api.json +5 -5
  36. package/data/llms/headless/components/orderlist/api.json +5 -5
  37. package/data/llms/headless/components/organizationchart/api.json +6 -6
  38. package/data/llms/headless/components/paginator/api.json +5 -5
  39. package/data/llms/headless/components/panel/api.json +9 -9
  40. package/data/llms/headless/components/picklist/api.json +5 -5
  41. package/data/llms/headless/components/popover/api.json +16 -16
  42. package/data/llms/headless/components/positioner/api.json +7 -7
  43. package/data/llms/headless/components/progressbar/api.json +3 -3
  44. package/data/llms/headless/components/progressspinner/api.json +3 -3
  45. package/data/llms/headless/components/radiobutton/api.json +16 -16
  46. package/data/llms/headless/components/rating/api.json +5 -5
  47. package/data/llms/headless/components/scrollarea/api.json +6 -6
  48. package/data/llms/headless/components/select/api.json +34 -34
  49. package/data/llms/headless/components/sidebar/api.json +1116 -141
  50. package/data/llms/headless/components/sidebar.md +4 -2
  51. package/data/llms/headless/components/slider/api.json +3 -3
  52. package/data/llms/headless/components/speeddial/api.json +4 -4
  53. package/data/llms/headless/components/splitter/api.json +5 -5
  54. package/data/llms/headless/components/stepper/api.json +13 -13
  55. package/data/llms/headless/components/styleclass/api.json +1 -1
  56. package/data/llms/headless/components/tabs/api.json +17 -17
  57. package/data/llms/headless/components/terminal/api.json +1 -1
  58. package/data/llms/headless/components/toast/api.json +4 -4
  59. package/data/llms/headless/components/togglebutton/api.json +27 -3
  60. package/data/llms/headless/components/toggleswitch/api.json +3 -3
  61. package/data/llms/headless/components/tooltip/api.json +17 -17
  62. package/data/llms/headless/components/tree/api.json +20 -20
  63. package/data/llms/headless/components/tree.md +1 -0
  64. package/data/llms/headless/components/treetable/api.json +19 -19
  65. package/data/llms/headless/guides/misc/internationalization.md +282 -0
  66. package/data/llms/hooks/use-filter.md +2 -2
  67. package/data/llms/hooks/use-tree-filter.md +3 -1
  68. package/data/llms/llms-full.txt +10444 -1743
  69. package/data/llms/llms.txt +15 -0
  70. package/data/llms/primitive/components/accordion/api.json +39 -39
  71. package/data/llms/primitive/components/animateonscroll/api.json +5 -5
  72. package/data/llms/primitive/components/autocomplete/api.json +105 -105
  73. package/data/llms/primitive/components/avatar/api.json +14 -14
  74. package/data/llms/primitive/components/badge/api.json +6 -6
  75. package/data/llms/primitive/components/breadcrumb/api.json +27 -27
  76. package/data/llms/primitive/components/button/api.json +8 -8
  77. package/data/llms/primitive/components/buttongroup/api.json +3 -3
  78. package/data/llms/primitive/components/card/api.json +24 -24
  79. package/data/llms/primitive/components/carousel/api.json +28 -28
  80. package/data/llms/primitive/components/checkbox/api.json +14 -14
  81. package/data/llms/primitive/components/checkboxgroup/api.json +5 -5
  82. package/data/llms/primitive/components/chip/api.json +19 -19
  83. package/data/llms/primitive/components/collapsible/api.json +18 -18
  84. package/data/llms/primitive/components/compare/api.json +18 -18
  85. package/data/llms/primitive/components/contextmenu/api.json +150 -1141
  86. package/data/llms/primitive/components/datatable/api.json +215 -164
  87. package/data/llms/primitive/components/dataview/api.json +17 -17
  88. package/data/llms/primitive/components/datepicker/api.json +230 -230
  89. package/data/llms/primitive/components/dialog/api.json +63 -63
  90. package/data/llms/primitive/components/divider/api.json +3 -3
  91. package/data/llms/primitive/components/drawer/api.json +47 -47
  92. package/data/llms/primitive/components/fieldset/api.json +31 -31
  93. package/data/llms/primitive/components/fileupload/api.json +53 -53
  94. package/data/llms/primitive/components/floatlabel/api.json +3 -3
  95. package/data/llms/primitive/components/focustrap/api.json +7 -7
  96. package/data/llms/primitive/components/gallery/api.json +91 -91
  97. package/data/llms/primitive/components/iconfield/api.json +7 -7
  98. package/data/llms/primitive/components/iftalabel/api.json +3 -3
  99. package/data/llms/primitive/components/inplace/api.json +18 -18
  100. package/data/llms/primitive/components/inputcolor/api.json +51 -51
  101. package/data/llms/primitive/components/inputnumber/api.json +10 -10
  102. package/data/llms/primitive/components/inputotp/api.json +12 -12
  103. package/data/llms/primitive/components/inputpassword/api.json +7 -7
  104. package/data/llms/primitive/components/inputtags/api.json +6 -6
  105. package/data/llms/primitive/components/inputtext/api.json +4 -4
  106. package/data/llms/primitive/components/knob/api.json +19 -19
  107. package/data/llms/primitive/components/label/api.json +3 -3
  108. package/data/llms/primitive/components/listbox/api.json +57 -57
  109. package/data/llms/primitive/components/menu/api.json +87 -279
  110. package/data/llms/primitive/components/message/api.json +22 -22
  111. package/data/llms/primitive/components/metergroup/api.json +27 -27
  112. package/data/llms/primitive/components/navigationmenu/api.json +8 -8
  113. package/data/llms/primitive/components/paginator/api.json +43 -43
  114. package/data/llms/primitive/components/panel/api.json +34 -34
  115. package/data/llms/primitive/components/popover/api.json +67 -67
  116. package/data/llms/primitive/components/portal/api.json +4 -4
  117. package/data/llms/primitive/components/progressbar/api.json +22 -22
  118. package/data/llms/primitive/components/progressspinner/api.json +18 -18
  119. package/data/llms/primitive/components/radiobutton/api.json +16 -16
  120. package/data/llms/primitive/components/rating/api.json +20 -20
  121. package/data/llms/primitive/components/scrollarea/api.json +23 -23
  122. package/data/llms/primitive/components/select/api.json +95 -95
  123. package/data/llms/primitive/components/sidebar/api.json +215 -121
  124. package/data/llms/primitive/components/sidebar.md +2 -1
  125. package/data/llms/primitive/components/skeleton/api.json +3 -3
  126. package/data/llms/primitive/components/slider/api.json +22 -22
  127. package/data/llms/primitive/components/speeddial/api.json +22 -22
  128. package/data/llms/primitive/components/splitter/api.json +18 -18
  129. package/data/llms/primitive/components/stepper/api.json +64 -64
  130. package/data/llms/primitive/components/tabs/api.json +51 -51
  131. package/data/llms/primitive/components/tag/api.json +3 -3
  132. package/data/llms/primitive/components/terminal/api.json +44 -44
  133. package/data/llms/primitive/components/textarea/api.json +4 -4
  134. package/data/llms/primitive/components/timeline/api.json +27 -27
  135. package/data/llms/primitive/components/toast/api.json +48 -48
  136. package/data/llms/primitive/components/togglebutton/api.json +10 -10
  137. package/data/llms/primitive/components/togglebuttongroup/api.json +5 -5
  138. package/data/llms/primitive/components/toggleswitch/api.json +12 -12
  139. package/data/llms/primitive/components/toolbar/api.json +15 -15
  140. package/data/llms/primitive/components/tooltip/api.json +52 -52
  141. package/data/llms/primitive/components/tree/api.json +73 -73
  142. package/data/llms/primitive/components/visuallyhidden/api.json +3 -3
  143. package/data/llms/primitive/guides/migration/updating-to-v11.md +2219 -0
  144. package/data/llms/primitive/guides/misc/internationalization.md +287 -0
  145. package/data/llms/styled/add-ons/designer/ci.md +273 -0
  146. package/data/llms/styled/add-ons/designer/guide.md +99 -0
  147. package/data/llms/styled/add-ons/designer/overview.md +194 -0
  148. package/data/llms/styled/add-ons/uikit/guide/v3.md +182 -0
  149. package/data/llms/styled/add-ons/uikit/guide/v4.md +163 -0
  150. package/data/llms/styled/add-ons/uikit/overview.md +204 -0
  151. package/data/llms/styled/components/button/api.json +8 -8
  152. package/data/llms/styled/components/carousel.md +65 -0
  153. package/data/llms/styled/components/datatable.md +101 -88
  154. package/data/llms/styled/components/floatlabel/api.json +3 -3
  155. package/data/llms/styled/components/fluid/api.json +3 -3
  156. package/data/llms/styled/components/iconfield/api.json +7 -7
  157. package/data/llms/styled/components/iftalabel/api.json +3 -3
  158. package/data/llms/styled/components/inputcolor.md +3 -0
  159. package/data/llms/styled/components/inputgroup/api.json +7 -7
  160. package/data/llms/styled/components/label/api.json +3 -3
  161. package/data/llms/styled/components/menu.md +39 -41
  162. package/data/llms/styled/components/organizationchart/api.json +33 -33
  163. package/data/llms/styled/components/rating/api.json +11 -11
  164. package/data/llms/styled/components/select.md +6 -0
  165. package/data/llms/styled/components/sidebar.md +12 -8
  166. package/data/llms/styled/components/tree.md +5 -0
  167. package/data/llms/styled/components/treetable.md +171 -62
  168. package/data/llms/styled/guides/configuration.md +223 -0
  169. package/data/llms/styled/guides/form/formik.md +448 -0
  170. package/data/llms/styled/guides/form/react-hook-form.md +503 -0
  171. package/data/llms/styled/guides/form/tanstack.md +502 -0
  172. package/data/llms/styled/guides/migration/updating-to-v11.md +2219 -0
  173. package/data/llms/styled/guides/misc/internationalization.md +379 -0
  174. package/data/llms/styled/guides/theming/tailwind.md +25 -0
  175. package/data/llms/tailwind/components/button/api.json +8 -8
  176. package/data/llms/tailwind/components/datatable.md +33 -42
  177. package/data/llms/tailwind/components/inputgroup.md +0 -1
  178. package/data/llms/tailwind/components/menu.md +5 -5
  179. package/data/llms/tailwind/components/select.md +3 -0
  180. package/data/llms/tailwind/components/sidebar.md +16 -11
  181. package/data/llms/tailwind/components/tooltip.md +4 -13
  182. package/data/llms/tailwind/guides/misc/internationalization.md +287 -0
  183. package/data/manifest.json +1089 -779
  184. package/data/mcp-data.json +263 -32
  185. package/dist/index.d.ts +7 -2
  186. package/dist/index.js +1 -1
  187. package/package.json +9 -8
  188. package/data/llms/styled/guides/installation/configuration.md +0 -135
  189. package/data/llms/tailwind/guides/theming/guide.md +0 -179
@@ -181,7 +181,7 @@
181
181
  },
182
182
  {
183
183
  "name": "dropNode",
184
- "type": "TreeNodeData",
184
+ "type": "null | TreeNodeData",
185
185
  "default": "",
186
186
  "description": "The drop target node, or null if dropped at the root level."
187
187
  },
@@ -206,7 +206,7 @@
206
206
  "props": [
207
207
  {
208
208
  "name": "value",
209
- "type": "string",
209
+ "type": "null | string",
210
210
  "default": "",
211
211
  "description": "The new focused key, or null when focus leaves the tree."
212
212
  }
@@ -358,7 +358,7 @@
358
358
  {
359
359
  "name": "loading",
360
360
  "type": "boolean",
361
- "default": "",
361
+ "default": "false",
362
362
  "description": "Displays a loading overlay over the tree. Pair with `Tree.Loading` to render\nthe spinner / message of your choice."
363
363
  }
364
364
  ],
@@ -370,19 +370,19 @@
370
370
  "props": [
371
371
  {
372
372
  "name": "expandedKeys",
373
- "type": "TreeExpandedKeys",
373
+ "type": "undefined | TreeExpandedKeys",
374
374
  "default": "",
375
375
  "description": "The current expanded keys of the tree."
376
376
  },
377
377
  {
378
378
  "name": "selectionKeys",
379
- "type": "TreeSelectionKeys | TreeCheckboxSelectionKeys",
379
+ "type": "undefined | TreeSelectionKeys | TreeCheckboxSelectionKeys",
380
380
  "default": "",
381
381
  "description": "The current selected keys of the tree."
382
382
  },
383
383
  {
384
384
  "name": "focusedKey",
385
- "type": "string",
385
+ "type": "null | string",
386
386
  "default": "",
387
387
  "description": "The key of the currently focused node, or null when none."
388
388
  },
@@ -474,13 +474,13 @@
474
474
  },
475
475
  {
476
476
  "name": "findNodeByKey",
477
- "type": "(key: string) => TreeNodeData",
477
+ "type": "(key: string) => undefined | TreeNodeData",
478
478
  "default": "",
479
479
  "description": "Look up a node by key in O(1)."
480
480
  },
481
481
  {
482
482
  "name": "findNodeInfo",
483
- "type": "(key: string) => { level: number; posInSet: number; setSize: number; parentKey: string }",
483
+ "type": "(key: string) => { level: number; posInSet: number; setSize: number; parentKey: null | string }",
484
484
  "default": "",
485
485
  "description": "Look up a node's position metadata by key."
486
486
  },
@@ -492,13 +492,13 @@
492
492
  },
493
493
  {
494
494
  "name": "setFocusedKey",
495
- "type": "(key: string) => void",
495
+ "type": "(key: null | string) => void",
496
496
  "default": "",
497
497
  "description": "Set the focused key explicitly (e.g. from a click handler)."
498
498
  },
499
499
  {
500
500
  "name": "setSelectionKeys",
501
- "type": "(keys: TreeSelectionKeys | TreeCheckboxSelectionKeys, event?: SyntheticEvent) => void",
501
+ "type": "(keys: TreeSelectionKeys | TreeCheckboxSelectionKeys, event?: SyntheticEvent<Element, Event>) => void",
502
502
  "default": "",
503
503
  "description": "Replace the entire selection map."
504
504
  },
@@ -706,7 +706,7 @@
706
706
  "props": [
707
707
  {
708
708
  "name": "id",
709
- "type": "string",
709
+ "type": "undefined | string",
710
710
  "default": "",
711
711
  "description": "Unique identifier for the root element."
712
712
  },
@@ -791,19 +791,19 @@
791
791
  },
792
792
  {
793
793
  "name": "aria-expanded",
794
- "type": "boolean",
794
+ "type": "undefined | boolean",
795
795
  "default": "",
796
796
  "description": "Whether the node is expanded. Omitted for leaf nodes."
797
797
  },
798
798
  {
799
799
  "name": "aria-selected",
800
- "type": "boolean",
800
+ "type": "undefined | boolean",
801
801
  "default": "",
802
802
  "description": "Whether the node is selected (single/multiple selection mode)."
803
803
  },
804
804
  {
805
805
  "name": "aria-checked",
806
- "type": "boolean | \"mixed\"",
806
+ "type": "undefined | boolean | \"mixed\"",
807
807
  "default": "",
808
808
  "description": "Whether the node is checked (checkbox selection mode); `'mixed'` for partial."
809
809
  },
@@ -821,7 +821,7 @@
821
821
  },
822
822
  {
823
823
  "name": "data-node-key",
824
- "type": "string",
824
+ "type": "undefined | string",
825
825
  "default": "",
826
826
  "description": "The key of the node for identification."
827
827
  },
@@ -991,13 +991,13 @@
991
991
  },
992
992
  {
993
993
  "name": "context",
994
- "type": "UseTreeInstance",
994
+ "type": "null | UseTreeInstance",
995
995
  "default": "",
996
996
  "description": "The parent tree instance providing state and methods."
997
997
  },
998
998
  {
999
999
  "name": "parentContext",
1000
- "type": "UseTreeNodeInstance",
1000
+ "type": "null | UseTreeNodeInstance",
1001
1001
  "default": "",
1002
1002
  "description": "The parent tree node instance (if this is a nested node)."
1003
1003
  },
@@ -1022,7 +1022,7 @@
1022
1022
  },
1023
1023
  {
1024
1024
  "name": "selected",
1025
- "type": "boolean",
1025
+ "type": "undefined | boolean",
1026
1026
  "default": "",
1027
1027
  "description": "Whether the node is selected (single/multiple mode)."
1028
1028
  },
@@ -1107,13 +1107,13 @@
1107
1107
  },
1108
1108
  {
1109
1109
  "name": "parentNode",
1110
- "type": "UseTreeNodeInstance",
1110
+ "type": "undefined | null | UseTreeNodeInstance",
1111
1111
  "default": "",
1112
1112
  "description": "The parent tree node instance (for nested traversal)."
1113
1113
  },
1114
1114
  {
1115
1115
  "name": "nodeProps",
1116
- "type": "UseTreeNodeProps",
1116
+ "type": "undefined | UseTreeNodeProps",
1117
1117
  "default": "",
1118
1118
  "description": "Pre-built props for the node root element (li)."
1119
1119
  },
@@ -55,6 +55,7 @@ export default function BasicDemo() {
55
55
  <ul {...getNodesProps()} className="m-0 p-0 list-none">
56
56
  {visibleKeys.map((key) => {
57
57
  const node = findNodeByKey(key);
58
+
58
59
  if (!node) return null;
59
60
 
60
61
  const info = findNodeInfo(key);
@@ -379,7 +379,7 @@
379
379
  },
380
380
  {
381
381
  "name": "onDragEnd",
382
- "type": "(event?: DragEvent) => void",
382
+ "type": "(event?: DragEvent<Element>) => void",
383
383
  "default": "",
384
384
  "description": "Handles drag end."
385
385
  },
@@ -411,7 +411,7 @@
411
411
  "props": [
412
412
  {
413
413
  "name": "originalEvent",
414
- "type": "SyntheticEvent",
414
+ "type": "SyntheticEvent<Element, Event>",
415
415
  "default": ""
416
416
  },
417
417
  {
@@ -451,7 +451,7 @@
451
451
  },
452
452
  {
453
453
  "name": "globalFilter",
454
- "type": "string",
454
+ "type": "null | string",
455
455
  "default": ""
456
456
  }
457
457
  ],
@@ -524,7 +524,7 @@
524
524
  },
525
525
  {
526
526
  "name": "registerDropTarget",
527
- "type": "(columnIndex: number, notify: (state: { side: \"start\" | \"end\" }) => void) => () => void",
527
+ "type": "(columnIndex: number, notify: (state: null | { side: \"start\" | \"end\" }) => void) => () => void",
528
528
  "default": "",
529
529
  "description": "Registers a drop-target for a specific column index. The hook calls `notify` with `{ side }` \nwhen this column becomes the active drop target and with `null` when it stops being active.\nReturns an unregister function to call on unmount."
530
530
  },
@@ -561,7 +561,7 @@
561
561
  },
562
562
  {
563
563
  "name": "registerIndicator",
564
- "type": "(element: HTMLElement) => void",
564
+ "type": "(element: null | HTMLElement) => void",
565
565
  "default": "",
566
566
  "description": "Registers a DOM element that the hook will use as the visual resize indicator.\nPass `null` to unregister (e.g. on component unmount)."
567
567
  },
@@ -671,7 +671,7 @@
671
671
  },
672
672
  {
673
673
  "name": "getRowToggleProps",
674
- "type": "(rowKey: string | number, item?: Record<string, unknown>) => { isSpacer: true; spacerProps: Record<string, any> } | { isSpacer: false; rootProps: Record<string, any>; isExpanded: boolean }",
674
+ "type": "(rowKey: undefined | string | number, item?: null | Record<string, unknown>) => { isSpacer: true; spacerProps: Record<string, any> } | { isSpacer: false; rootProps: Record<string, any>; isExpanded: boolean }",
675
675
  "default": "",
676
676
  "description": "Returns props for the row toggle element. The shape distinguishes between a \"spacer\"\n(rendered for tree-mode leaves) and a real button."
677
677
  }
@@ -881,25 +881,25 @@
881
881
  "props": [
882
882
  {
883
883
  "name": "data",
884
- "type": "Record<string, unknown>[] | object[]",
884
+ "type": "null | Record<string, unknown>[] | object[]",
885
885
  "default": "null",
886
886
  "description": "An array of objects to display."
887
887
  },
888
888
  {
889
889
  "name": "defaultValue",
890
- "type": "string",
890
+ "type": "null | string",
891
891
  "default": "null",
892
892
  "description": "Default sort value for uncontrolled mode."
893
893
  },
894
894
  {
895
895
  "name": "value",
896
- "type": "string",
896
+ "type": "null | string",
897
897
  "default": "null",
898
898
  "description": "Sort field value for controlled mode."
899
899
  },
900
900
  {
901
901
  "name": "dataKey",
902
- "type": "string",
902
+ "type": "null | string",
903
903
  "default": "null",
904
904
  "description": "A property to uniquely identify each row in the data."
905
905
  },
@@ -929,7 +929,7 @@
929
929
  },
930
930
  {
931
931
  "name": "scrollHeight",
932
- "type": "string",
932
+ "type": "null | string",
933
933
  "default": "null",
934
934
  "description": "Height of the scroll viewport in fixed pixels or the \"flex\" keyword for a dynamic size."
935
935
  },
@@ -989,7 +989,7 @@
989
989
  },
990
990
  {
991
991
  "name": "selectionMode",
992
- "type": "\"multiple\" | \"single\"",
992
+ "type": "null | \"multiple\" | \"single\"",
993
993
  "default": "null",
994
994
  "description": "Defines the selection mode. 'single' allows one row, 'multiple' allows many."
995
995
  },
@@ -1201,7 +1201,7 @@
1201
1201
  },
1202
1202
  {
1203
1203
  "name": "globalFilter",
1204
- "type": "string",
1204
+ "type": "null | string",
1205
1205
  "default": "null",
1206
1206
  "description": "Global filter value applied across globalFilterFields."
1207
1207
  },
@@ -1237,7 +1237,7 @@
1237
1237
  },
1238
1238
  {
1239
1239
  "name": "rowClassName",
1240
- "type": "(data: Record<string, unknown>, options: { index: number; props: UseDataTableProps }) => string",
1240
+ "type": "(data: Record<string, unknown>, options: { index: number; props: UseDataTableProps }) => undefined | string",
1241
1241
  "default": "",
1242
1242
  "description": "A function that returns a className for a given row."
1243
1243
  },
@@ -1400,7 +1400,7 @@
1400
1400
  },
1401
1401
  {
1402
1402
  "name": "editingCell",
1403
- "type": "{ rowIndex: number; field: string; rowKey?: string | number }",
1403
+ "type": "null | { rowIndex: number; field: string; rowKey?: string | number }",
1404
1404
  "default": "",
1405
1405
  "description": "The currently editing cell, if any."
1406
1406
  },
@@ -1412,7 +1412,7 @@
1412
1412
  },
1413
1413
  {
1414
1414
  "name": "globalFilter",
1415
- "type": "string",
1415
+ "type": "null | string",
1416
1416
  "default": "",
1417
1417
  "description": "The current global filter value."
1418
1418
  }
@@ -1590,7 +1590,7 @@
1590
1590
  },
1591
1591
  {
1592
1592
  "name": "keyboard",
1593
- "type": "{ getRowTabIndex: (index: number) => number; onRowKeyDown: (event: KeyboardEvent<HTMLTableRowElement>, index: number) => void; focusRow: (tbody: HTMLElement, index: number) => void }",
1593
+ "type": "{ getRowTabIndex: (index: number) => number; onRowKeyDown: (event: KeyboardEvent<HTMLTableRowElement>, index: number) => void; focusRow: (tbody: null | HTMLElement, index: number) => void }",
1594
1594
  "default": "",
1595
1595
  "description": "Keyboard navigation methods."
1596
1596
  }
@@ -1619,7 +1619,7 @@
1619
1619
  "props": [
1620
1620
  {
1621
1621
  "name": "item",
1622
- "type": "Record<string, unknown>",
1622
+ "type": "null | Record<string, unknown>",
1623
1623
  "default": "null",
1624
1624
  "description": "The data object for this row."
1625
1625
  },
@@ -1631,7 +1631,7 @@
1631
1631
  },
1632
1632
  {
1633
1633
  "name": "context",
1634
- "type": "UseDataTableInstance",
1634
+ "type": "null | UseDataTableInstance",
1635
1635
  "default": "",
1636
1636
  "description": "The parent datatable instance providing state and methods."
1637
1637
  }
@@ -0,0 +1,282 @@
1
+ # Internationalization and Localization
2
+
3
+ Translating component messages and configuring regional settings such as date formats and the first day of the week.
4
+
5
+ ## Overview
6
+
7
+ Components ship with a set of built-in messages such as filter operator labels, month names and ARIA descriptions. These messages live in a locale registry that is shared across PrimeReact, PrimeVue and PrimeNG through the `@primeuix/locale` package, and are re-exported from `@primereact/core/locale`.
8
+
9
+ English is registered by default, so no configuration is required until another language is needed.
10
+
11
+ Setting a language is enough for components to pick it up. No per-component prop is involved. A DatePicker then renders its month and day names in that language, with the first day of the week adjusted to match.
12
+
13
+ ```jsx
14
+ import { PrimeReactProvider } from '@primereact/core';
15
+ import { de } from 'primelocale/js/de.js';
16
+
17
+ <PrimeReactProvider locale="de" locales={{ de }}>
18
+ <App />
19
+ </PrimeReactProvider>;
20
+ ```
21
+
22
+ ## Import
23
+
24
+ ```js
25
+ import { $t, $l, defineLocale, updateLocale, useLocale, Locale, LocaleService, en } from '@primereact/core/locale';
26
+ ```
27
+
28
+ ## Setting the Language
29
+
30
+ `Locale.use` selects the active language. Every component reading a message re-renders when it changes, so this works both at startup and later in response to a language switcher.
31
+
32
+ ```js
33
+ import { Locale } from '@primereact/core/locale';
34
+
35
+ Locale.use('de');
36
+ ```
37
+
38
+ Only `en` is built in, so any other language has to be registered first. See [Adding a Language](#adding-a-language) below.
39
+
40
+ `PrimeReactProvider` also accepts a `locale` prop, which sets the initial language for the components beneath it.
41
+
42
+ ```jsx
43
+ import { PrimeReactProvider } from '@primereact/core';
44
+
45
+ <PrimeReactProvider locale="de">
46
+ <App />
47
+ </PrimeReactProvider>;
48
+ ```
49
+
50
+ ## Adding a Language
51
+
52
+ `defineLocale` registers a new language.
53
+
54
+ ```js
55
+ import { defineLocale, Locale } from '@primereact/core/locale';
56
+
57
+ defineLocale('es', {
58
+ clear: 'Limpiar',
59
+ apply: 'Aplicar',
60
+ accept: 'Sí',
61
+ reject: 'No',
62
+ dayNames: ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'],
63
+ dayNamesShort: ['dom', 'lun', 'mar', 'mié', 'jue', 'vie', 'sáb'],
64
+ dayNamesMin: ['D', 'L', 'M', 'X', 'J', 'V', 'S'],
65
+ monthNames: ['enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre'],
66
+ monthNamesShort: ['ene', 'feb', 'mar', 'abr', 'may', 'jun', 'jul', 'ago', 'sep', 'oct', 'nov', 'dic']
67
+ });
68
+
69
+ Locale.use('es');
70
+ ```
71
+
72
+ A registered language must be complete. Keys that are left out resolve to `undefined` rather than falling back to English, which renders as an empty label. The practical approach is to spread the built-in English messages and override from there:
73
+
74
+ ```js
75
+ import { defineLocale, en } from '@primereact/core/locale';
76
+
77
+ defineLocale('es', {
78
+ ...en,
79
+ clear: 'Limpiar',
80
+ apply: 'Aplicar'
81
+ });
82
+ ```
83
+
84
+ The `en` object holds the built-in English messages and is exported for exactly this purpose. Ready-made translations from [PrimeLocale](#ready-made-translations) already cover every key, so spreading is only needed for hand-written translations.
85
+
86
+ The provider accepts a `locales` map, which registers languages and selects one in a single step. Anything listed here is registered before `locale` is applied.
87
+
88
+ ```jsx
89
+ import { PrimeReactProvider } from '@primereact/core';
90
+
91
+ <PrimeReactProvider locale="es" locales={{ es: spanishMessages }}>
92
+ <App />
93
+ </PrimeReactProvider>;
94
+ ```
95
+
96
+ ## Updating an Existing Language
97
+
98
+ `updateLocale` merges new values into a language that is already registered, leaving the remaining keys untouched. It is useful for overriding a handful of labels without redefining a full translation.
99
+
100
+ ```js
101
+ import { updateLocale } from '@primereact/core/locale';
102
+
103
+ updateLocale('en', {
104
+ clear: 'Reset',
105
+ apply: 'Confirm'
106
+ });
107
+ ```
108
+
109
+ If the language does not exist yet, `updateLocale` registers it, behaving like `defineLocale`.
110
+
111
+ ## Reading Messages
112
+
113
+ ### In Components
114
+
115
+ `useLocale` is the React hook for reading the active locale. It re-renders the calling component when the language changes.
116
+
117
+ ```jsx
118
+ import { useLocale } from '@primereact/core/locale';
119
+
120
+ function ClearFilterButton({ onClear }) {
121
+ const { t } = useLocale();
122
+
123
+ return <button onClick={onClear}>{t('clear')}</button>;
124
+ }
125
+ ```
126
+
127
+ | Field | Description |
128
+ | ---------- | --------------------------------------------- |
129
+ | `lang` | Active language code, such as `en` or `de`. |
130
+ | `messages` | Full message object of the active language. |
131
+ | `t` | Translates a key against the active language. |
132
+
133
+ Re-rendering on a language change relies on the context published by `PrimeReactProvider`, which applications normally have at their root. A component rendered outside any provider still reads the correct messages on first render, but will not update when the language changes later.
134
+
135
+ ### Outside Components
136
+
137
+ `$t` performs the same lookup without a React context, which suits utilities, event handlers and module-level code.
138
+
139
+ ```js
140
+ import { $t } from '@primereact/core/locale';
141
+
142
+ $t('clear'); // 'Clear'
143
+ ```
144
+
145
+ Nested keys use dot notation.
146
+
147
+ ```js
148
+ $t('aria.selectRow'); // 'Row Selected'
149
+ ```
150
+
151
+ Messages containing placeholders accept replacement values. Positional placeholders such as `{0}` are filled from the argument order, while named ones are filled from an object.
152
+
153
+ ```js
154
+ $t('searchMessage', 5); // '5 results are available'
155
+ $t('selectionMessage', 3); // '3 items selected'
156
+ $t('aria.stars', { star: 4 }); // '4 stars'
157
+ ```
158
+
159
+ ## Reacting to Language Changes
160
+
161
+ Language changes emit a `locale:change` event. Components handle this automatically through `useLocale`; the event is only needed for code living outside React, such as syncing a third-party library.
162
+
163
+ ```js
164
+ import { LocaleService } from '@primereact/core/locale';
165
+
166
+ const onChange = ({ lang }) => console.log('Language is now', lang);
167
+
168
+ LocaleService.on('locale:change', onChange);
169
+
170
+ // remove the listener when it is no longer needed
171
+ LocaleService.off('locale:change', onChange);
172
+ ```
173
+
174
+ ## Inspecting the Registry
175
+
176
+ `$l` returns a facade over the registry, which helps when building a language switcher.
177
+
178
+ ```js
179
+ import { $l } from '@primereact/core/locale';
180
+
181
+ $l().langs; // ['en', 'es']
182
+ $l().get('es'); // message object of the Spanish locale
183
+ ```
184
+
185
+ ## Message Keys
186
+
187
+ These components read their labels from the active language:
188
+
189
+ | Component | Keys |
190
+ | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
191
+ | DatePicker | `dayNames`, `dayNamesShort`, `dayNamesMin`, `monthNames`, `monthNamesShort`, `today`, `weekHeader`, `clear`, `am`, `pm`, `firstDayOfWeek`, `dateFormat` |
192
+ | FileUpload | `fileSizeTypes` |
193
+ | Paginator | `aria.firstPageLabel`, `aria.prevPageLabel`, `aria.nextPageLabel`, `aria.lastPageLabel`, `aria.pageLabel` |
194
+ | Sidebar | `aria.toggleSidebar` |
195
+
196
+ The registry holds a larger set covering filter operators, password strength labels, empty-state messages and the remaining `aria` labels. Those are reserved for components that do not consume them yet, so translating them has no visible effect today.
197
+
198
+ Not every entry is a string. `firstDayOfWeek` is a number, `showMonthAfterYear` is a boolean, and `dayNames`, `monthNames` and `fileSizeTypes` are arrays. `searchMessage` and similar entries carry a `{0}` placeholder.
199
+
200
+ The full set with default English values is exported as `en`, which can also be inspected at runtime:
201
+
202
+ ```js
203
+ import { en } from '@primereact/core/locale';
204
+
205
+ Object.keys(en); // every top-level key
206
+ ```
207
+
208
+ ## Ready-Made Translations
209
+
210
+ Writing a translation from scratch is rarely necessary. The community maintained [PrimeLocale](https://github.com/primefaces/primelocale) repository publishes complete translations for 70+ languages, shared across all Prime libraries. Each file covers every built-in message key, so nothing is left resolving to `undefined`.
211
+
212
+ ### Copying a File
213
+
214
+ Grab the JSON file for the desired language from the repository, for example `es.json`, and place it in the project.
215
+
216
+ Each file wraps its messages in a single key named after the language:
217
+
218
+ ```json
219
+ {
220
+ "es": {
221
+ "clear": "Limpiar",
222
+ "apply": "Aplicar",
223
+ "aria": { "selectRow": "Seleccionar fila" }
224
+ }
225
+ }
226
+ ```
227
+
228
+ That wrapper has to be unwrapped before registering, otherwise every lookup resolves to `undefined`:
229
+
230
+ ```js
231
+ import { defineLocale, Locale } from '@primereact/core/locale';
232
+ import es from './locales/es.json';
233
+
234
+ defineLocale('es', es.es);
235
+ Locale.use('es');
236
+ ```
237
+
238
+ The same unwrapping applies when the language is registered through the provider:
239
+
240
+ ```jsx
241
+ import { PrimeReactProvider } from '@primereact/core';
242
+ import es from './locales/es.json';
243
+
244
+ <PrimeReactProvider locale="es" locales={{ es: es.es }}>
245
+ <App />
246
+ </PrimeReactProvider>;
247
+ ```
248
+
249
+ ### Installing the Package
250
+
251
+ The translations are also published to npm, which avoids maintaining copies by hand.
252
+
253
+ ```bash
254
+ npm install primelocale
255
+ ```
256
+
257
+ ```js
258
+ import { defineLocale, Locale } from '@primereact/core/locale';
259
+ import { es } from 'primelocale/js/es.js';
260
+
261
+ defineLocale('es', es);
262
+ Locale.use('es');
263
+ ```
264
+
265
+ The package entry points export the messages directly, so no unwrapping is needed there.
266
+
267
+ Regional variants are named with an underscore in the package and a hyphen in the JSON files. Brazilian Portuguese is `primelocale/js/pt_BR.js` when imported and `pt-BR.json` when copied.
268
+
269
+ ### Adjusting a Translation
270
+
271
+ A ready-made translation can be tuned without editing the file, by layering overrides on top of it:
272
+
273
+ ```js
274
+ defineLocale('es', es.es);
275
+ updateLocale('es', { clear: 'Borrar' });
276
+ ```
277
+
278
+ Contributions of new languages and corrections are welcome in the PrimeLocale repository, and benefit every Prime library at once.
279
+
280
+ ## Coming from v10
281
+
282
+ The locale helpers from `primereact/api` were replaced. The [migration guide](/docs/primitive/guides/migration/updating-to-v11) maps each one to its replacement.
@@ -95,7 +95,7 @@ export default function BasicDemo() {
95
95
  type="search"
96
96
  placeholder="Search name, category, code..."
97
97
  value={search}
98
- onChange={(e: any) => setSearch(e.target.value)}
98
+ onChange={(e: React.ChangeEvent<HTMLInputElement>) => setSearch(e.target.value)}
99
99
  className="w-full"
100
100
  />
101
101
  </IconField.Root>
@@ -189,7 +189,7 @@ export default function AdvancedDemo() {
189
189
  placeholder="Name contains..."
190
190
  size="small"
191
191
  value={(nameRule?.value as string) ?? ''}
192
- onChange={(e: any) => nameRule?.setValue(e.target.value)}
192
+ onChange={(e: React.ChangeEvent<HTMLInputElement>) => nameRule?.setValue(e.target.value)}
193
193
  className="w-full"
194
194
  />
195
195
  </IconField.Root>
@@ -119,7 +119,9 @@ export default function TreeDemo() {
119
119
  type="search"
120
120
  placeholder="Search nodes..."
121
121
  value={search}
122
- onChange={(e: any) => setRules([{ field: 'name', value: e.target.value, matchMode: 'contains' }])}
122
+ onChange={(e: React.ChangeEvent<HTMLInputElement>) =>
123
+ setRules([{ field: 'name', value: e.target.value, matchMode: 'contains' }])
124
+ }
123
125
  />
124
126
  </IconField.Root>
125
127