@primereact/mcp 11.1.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.
- package/data/llms/headless/components/accordion/api.json +9 -9
- package/data/llms/headless/components/animateonscroll/api.json +2 -2
- package/data/llms/headless/components/autocomplete/api.json +33 -33
- package/data/llms/headless/components/avatar/api.json +1 -1
- package/data/llms/headless/components/carousel/api.json +15 -15
- package/data/llms/headless/components/checkbox/api.json +18 -18
- package/data/llms/headless/components/collapsible/api.json +14 -14
- package/data/llms/headless/components/compare/api.json +3 -3
- package/data/llms/headless/components/contextmenu/api.json +2 -2
- package/data/llms/headless/components/datatable/api.json +19 -19
- package/data/llms/headless/components/dataview/api.json +3 -3
- package/data/llms/headless/components/datepicker/api.json +43 -43
- package/data/llms/headless/components/dialog/api.json +19 -19
- package/data/llms/headless/components/divider/api.json +3 -3
- package/data/llms/headless/components/drawer/api.json +13 -13
- package/data/llms/headless/components/fieldset/api.json +9 -9
- package/data/llms/headless/components/fileupload/api.json +5 -5
- package/data/llms/headless/components/focustrap/api.json +4 -4
- package/data/llms/headless/components/gallery/api.json +23 -23
- package/data/llms/headless/components/inplace/api.json +3 -3
- package/data/llms/headless/components/inputcolor/api.json +6 -6
- package/data/llms/headless/components/inputcolor.md +0 -1
- package/data/llms/headless/components/inputnumber/api.json +8 -8
- package/data/llms/headless/components/inputotp/api.json +7 -7
- package/data/llms/headless/components/inputpassword/api.json +4 -4
- package/data/llms/headless/components/inputpassword.md +3 -3
- package/data/llms/headless/components/inputtags/api.json +8 -8
- package/data/llms/headless/components/inputtext/api.json +1 -1
- package/data/llms/headless/components/knob/api.json +18 -18
- package/data/llms/headless/components/listbox/api.json +27 -27
- package/data/llms/headless/components/menu/api.json +10 -10
- package/data/llms/headless/components/message/api.json +1 -1
- package/data/llms/headless/components/metergroup/api.json +3 -3
- package/data/llms/headless/components/motion/api.json +1 -1
- package/data/llms/headless/components/navigationmenu/api.json +5 -5
- package/data/llms/headless/components/orderlist/api.json +5 -5
- package/data/llms/headless/components/organizationchart/api.json +6 -6
- package/data/llms/headless/components/paginator/api.json +5 -5
- package/data/llms/headless/components/panel/api.json +9 -9
- package/data/llms/headless/components/picklist/api.json +5 -5
- package/data/llms/headless/components/popover/api.json +16 -16
- package/data/llms/headless/components/positioner/api.json +7 -7
- package/data/llms/headless/components/progressbar/api.json +3 -3
- package/data/llms/headless/components/progressspinner/api.json +3 -3
- package/data/llms/headless/components/radiobutton/api.json +16 -16
- package/data/llms/headless/components/rating/api.json +5 -5
- package/data/llms/headless/components/scrollarea/api.json +6 -6
- package/data/llms/headless/components/select/api.json +34 -34
- package/data/llms/headless/components/sidebar/api.json +60 -60
- package/data/llms/headless/components/sidebar.md +4 -2
- package/data/llms/headless/components/slider/api.json +3 -3
- package/data/llms/headless/components/speeddial/api.json +4 -4
- package/data/llms/headless/components/splitter/api.json +5 -5
- package/data/llms/headless/components/stepper/api.json +13 -13
- package/data/llms/headless/components/styleclass/api.json +1 -1
- package/data/llms/headless/components/tabs/api.json +17 -17
- package/data/llms/headless/components/terminal/api.json +1 -1
- package/data/llms/headless/components/toast/api.json +4 -4
- package/data/llms/headless/components/togglebutton/api.json +27 -3
- package/data/llms/headless/components/toggleswitch/api.json +3 -3
- package/data/llms/headless/components/tooltip/api.json +17 -17
- package/data/llms/headless/components/tree/api.json +20 -20
- package/data/llms/headless/components/tree.md +1 -0
- package/data/llms/headless/components/treetable/api.json +19 -19
- package/data/llms/hooks/use-filter.md +2 -2
- package/data/llms/hooks/use-tree-filter.md +3 -1
- package/data/llms/llms-full.txt +485 -229
- package/data/llms/primitive/components/accordion/api.json +39 -39
- package/data/llms/primitive/components/animateonscroll/api.json +5 -5
- package/data/llms/primitive/components/autocomplete/api.json +105 -105
- package/data/llms/primitive/components/avatar/api.json +14 -14
- package/data/llms/primitive/components/badge/api.json +6 -6
- package/data/llms/primitive/components/breadcrumb/api.json +27 -27
- package/data/llms/primitive/components/button/api.json +8 -8
- package/data/llms/primitive/components/buttongroup/api.json +3 -3
- package/data/llms/primitive/components/card/api.json +24 -24
- package/data/llms/primitive/components/carousel/api.json +28 -28
- package/data/llms/primitive/components/checkbox/api.json +14 -14
- package/data/llms/primitive/components/checkboxgroup/api.json +5 -5
- package/data/llms/primitive/components/chip/api.json +19 -19
- package/data/llms/primitive/components/collapsible/api.json +18 -18
- package/data/llms/primitive/components/compare/api.json +18 -18
- package/data/llms/primitive/components/contextmenu/api.json +150 -1141
- package/data/llms/primitive/components/datatable/api.json +215 -164
- package/data/llms/primitive/components/dataview/api.json +17 -17
- package/data/llms/primitive/components/datepicker/api.json +230 -230
- package/data/llms/primitive/components/dialog/api.json +63 -63
- package/data/llms/primitive/components/divider/api.json +3 -3
- package/data/llms/primitive/components/drawer/api.json +47 -47
- package/data/llms/primitive/components/fieldset/api.json +31 -31
- package/data/llms/primitive/components/fileupload/api.json +53 -53
- package/data/llms/primitive/components/floatlabel/api.json +3 -3
- package/data/llms/primitive/components/focustrap/api.json +7 -7
- package/data/llms/primitive/components/gallery/api.json +91 -91
- package/data/llms/primitive/components/iconfield/api.json +7 -7
- package/data/llms/primitive/components/iftalabel/api.json +3 -3
- package/data/llms/primitive/components/inplace/api.json +18 -18
- package/data/llms/primitive/components/inputcolor/api.json +51 -51
- package/data/llms/primitive/components/inputnumber/api.json +10 -10
- package/data/llms/primitive/components/inputotp/api.json +12 -12
- package/data/llms/primitive/components/inputpassword/api.json +7 -7
- package/data/llms/primitive/components/inputtags/api.json +6 -6
- package/data/llms/primitive/components/inputtext/api.json +4 -4
- package/data/llms/primitive/components/knob/api.json +19 -19
- package/data/llms/primitive/components/label/api.json +3 -3
- package/data/llms/primitive/components/listbox/api.json +57 -57
- package/data/llms/primitive/components/menu/api.json +87 -279
- package/data/llms/primitive/components/message/api.json +22 -22
- package/data/llms/primitive/components/metergroup/api.json +27 -27
- package/data/llms/primitive/components/navigationmenu/api.json +8 -8
- package/data/llms/primitive/components/paginator/api.json +43 -43
- package/data/llms/primitive/components/panel/api.json +34 -34
- package/data/llms/primitive/components/popover/api.json +67 -67
- package/data/llms/primitive/components/portal/api.json +4 -4
- package/data/llms/primitive/components/progressbar/api.json +22 -22
- package/data/llms/primitive/components/progressspinner/api.json +18 -18
- package/data/llms/primitive/components/radiobutton/api.json +16 -16
- package/data/llms/primitive/components/rating/api.json +20 -20
- package/data/llms/primitive/components/scrollarea/api.json +23 -23
- package/data/llms/primitive/components/select/api.json +95 -95
- package/data/llms/primitive/components/sidebar/api.json +88 -88
- package/data/llms/primitive/components/sidebar.md +2 -1
- package/data/llms/primitive/components/skeleton/api.json +3 -3
- package/data/llms/primitive/components/slider/api.json +22 -22
- package/data/llms/primitive/components/speeddial/api.json +22 -22
- package/data/llms/primitive/components/splitter/api.json +18 -18
- package/data/llms/primitive/components/stepper/api.json +64 -64
- package/data/llms/primitive/components/tabs/api.json +51 -51
- package/data/llms/primitive/components/tag/api.json +3 -3
- package/data/llms/primitive/components/terminal/api.json +44 -44
- package/data/llms/primitive/components/textarea/api.json +4 -4
- package/data/llms/primitive/components/timeline/api.json +27 -27
- package/data/llms/primitive/components/toast/api.json +48 -48
- package/data/llms/primitive/components/togglebutton/api.json +10 -10
- package/data/llms/primitive/components/togglebuttongroup/api.json +5 -5
- package/data/llms/primitive/components/toggleswitch/api.json +12 -12
- package/data/llms/primitive/components/toolbar/api.json +15 -15
- package/data/llms/primitive/components/tooltip/api.json +52 -52
- package/data/llms/primitive/components/tree/api.json +73 -73
- package/data/llms/primitive/components/visuallyhidden/api.json +3 -3
- package/data/llms/primitive/guides/migration/updating-to-v11.md +2 -2
- package/data/llms/styled/add-ons/designer/ci.md +7 -7
- package/data/llms/styled/add-ons/uikit/guide/v3.md +1 -0
- package/data/llms/styled/components/button/api.json +8 -8
- package/data/llms/styled/components/carousel.md +65 -0
- package/data/llms/styled/components/datatable.md +94 -84
- package/data/llms/styled/components/floatlabel/api.json +3 -3
- package/data/llms/styled/components/fluid/api.json +3 -3
- package/data/llms/styled/components/iconfield/api.json +7 -7
- package/data/llms/styled/components/iftalabel/api.json +3 -3
- package/data/llms/styled/components/inputcolor.md +3 -0
- package/data/llms/styled/components/inputgroup/api.json +7 -7
- package/data/llms/styled/components/label/api.json +3 -3
- package/data/llms/styled/components/organizationchart/api.json +33 -33
- package/data/llms/styled/components/rating/api.json +11 -11
- package/data/llms/styled/components/select.md +6 -0
- package/data/llms/styled/components/sidebar.md +12 -8
- package/data/llms/styled/components/tree.md +5 -0
- package/data/llms/styled/components/treetable.md +171 -62
- package/data/llms/styled/guides/configuration.md +25 -0
- package/data/llms/styled/guides/migration/updating-to-v11.md +2 -2
- package/data/llms/styled/guides/theming/tailwind.md +25 -0
- package/data/llms/tailwind/components/button/api.json +8 -8
- package/data/llms/tailwind/components/datatable.md +33 -42
- package/data/llms/tailwind/components/inputgroup.md +0 -1
- package/data/llms/tailwind/components/select.md +3 -0
- package/data/llms/tailwind/components/sidebar.md +16 -11
- package/data/manifest.json +773 -778
- package/data/mcp-data.json +5 -29
- package/dist/index.d.ts +7 -2
- package/dist/index.js +1 -1
- package/package.json +9 -8
- package/data/llms/headless/guides/misc/locale.md +0 -280
- package/data/llms/primitive/guides/misc/locale.md +0 -280
- package/data/llms/styled/guides/installation/configuration.md +0 -135
- package/data/llms/styled/guides/misc/locale.md +0 -280
- package/data/llms/tailwind/guides/misc/locale.md +0 -280
- package/data/llms/tailwind/guides/theming/guide.md +0 -179
|
@@ -1,280 +0,0 @@
|
|
|
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
|
-
## Import
|
|
12
|
-
|
|
13
|
-
```js
|
|
14
|
-
import { $t, $l, defineLocale, updateLocale, useLocale, Locale, LocaleService, en } from '@primereact/core/locale';
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
## Setting the Language
|
|
18
|
-
|
|
19
|
-
`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.
|
|
20
|
-
|
|
21
|
-
```js
|
|
22
|
-
import { Locale } from '@primereact/core/locale';
|
|
23
|
-
|
|
24
|
-
Locale.use('de');
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
Only `en` is built in, so any other language has to be registered first — see [Adding a Language](#adding-a-language) below.
|
|
28
|
-
|
|
29
|
-
`PrimeReactProvider` also accepts a `locale` prop, which sets the initial language for the components beneath it.
|
|
30
|
-
|
|
31
|
-
```jsx
|
|
32
|
-
import { PrimeReactProvider } from '@primereact/core';
|
|
33
|
-
|
|
34
|
-
<PrimeReactProvider locale="de">
|
|
35
|
-
<App />
|
|
36
|
-
</PrimeReactProvider>;
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
## Adding a Language
|
|
40
|
-
|
|
41
|
-
`defineLocale` registers a new language.
|
|
42
|
-
|
|
43
|
-
```js
|
|
44
|
-
import { defineLocale, Locale } from '@primereact/core/locale';
|
|
45
|
-
|
|
46
|
-
defineLocale('es', {
|
|
47
|
-
clear: 'Limpiar',
|
|
48
|
-
apply: 'Aplicar',
|
|
49
|
-
accept: 'Sí',
|
|
50
|
-
reject: 'No',
|
|
51
|
-
dayNames: ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'],
|
|
52
|
-
dayNamesShort: ['dom', 'lun', 'mar', 'mié', 'jue', 'vie', 'sáb'],
|
|
53
|
-
dayNamesMin: ['D', 'L', 'M', 'X', 'J', 'V', 'S'],
|
|
54
|
-
monthNames: ['enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre'],
|
|
55
|
-
monthNamesShort: ['ene', 'feb', 'mar', 'abr', 'may', 'jun', 'jul', 'ago', 'sep', 'oct', 'nov', 'dic']
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
Locale.use('es');
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
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:
|
|
62
|
-
|
|
63
|
-
```js
|
|
64
|
-
import { defineLocale, en } from '@primereact/core/locale';
|
|
65
|
-
|
|
66
|
-
defineLocale('es', {
|
|
67
|
-
...en,
|
|
68
|
-
clear: 'Limpiar',
|
|
69
|
-
apply: 'Aplicar'
|
|
70
|
-
});
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
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.
|
|
74
|
-
|
|
75
|
-
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.
|
|
76
|
-
|
|
77
|
-
```jsx
|
|
78
|
-
import { PrimeReactProvider } from '@primereact/core';
|
|
79
|
-
|
|
80
|
-
<PrimeReactProvider locale="es" locales={{ es: spanishMessages }}>
|
|
81
|
-
<App />
|
|
82
|
-
</PrimeReactProvider>;
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
## Updating an Existing Language
|
|
86
|
-
|
|
87
|
-
`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.
|
|
88
|
-
|
|
89
|
-
```js
|
|
90
|
-
import { updateLocale } from '@primereact/core/locale';
|
|
91
|
-
|
|
92
|
-
updateLocale('en', {
|
|
93
|
-
clear: 'Reset',
|
|
94
|
-
apply: 'Confirm'
|
|
95
|
-
});
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
If the language does not exist yet, `updateLocale` registers it, behaving like `defineLocale`.
|
|
99
|
-
|
|
100
|
-
## Reading Messages
|
|
101
|
-
|
|
102
|
-
### In Components
|
|
103
|
-
|
|
104
|
-
`useLocale` is the React hook for reading the active locale. It re-renders the calling component when the language changes.
|
|
105
|
-
|
|
106
|
-
```jsx
|
|
107
|
-
import { useLocale } from '@primereact/core/locale';
|
|
108
|
-
|
|
109
|
-
function ClearButton() {
|
|
110
|
-
const { t, lang, messages } = useLocale();
|
|
111
|
-
|
|
112
|
-
return <button aria-label={t('clear')}>{t('clear')}</button>;
|
|
113
|
-
}
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
| Field | Description |
|
|
117
|
-
| ---------- | --------------------------------------------- |
|
|
118
|
-
| `lang` | Active language code, such as `en` or `de`. |
|
|
119
|
-
| `messages` | Full message object of the active language. |
|
|
120
|
-
| `t` | Translates a key against the active language. |
|
|
121
|
-
|
|
122
|
-
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.
|
|
123
|
-
|
|
124
|
-
### Outside Components
|
|
125
|
-
|
|
126
|
-
`$t` performs the same lookup without a React context, which suits utilities, event handlers and module-level code.
|
|
127
|
-
|
|
128
|
-
```js
|
|
129
|
-
import { $t } from '@primereact/core/locale';
|
|
130
|
-
|
|
131
|
-
$t('clear'); // 'Clear'
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
Nested keys use dot notation.
|
|
135
|
-
|
|
136
|
-
```js
|
|
137
|
-
$t('aria.selectRow'); // 'Row Selected'
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
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.
|
|
141
|
-
|
|
142
|
-
```js
|
|
143
|
-
$t('searchMessage', 5); // '5 results are available'
|
|
144
|
-
$t('selectionMessage', 3); // '3 items selected'
|
|
145
|
-
$t('aria.stars', { star: 4 }); // '4 stars'
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
## Reacting to Language Changes
|
|
149
|
-
|
|
150
|
-
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.
|
|
151
|
-
|
|
152
|
-
```js
|
|
153
|
-
import { LocaleService } from '@primereact/core/locale';
|
|
154
|
-
|
|
155
|
-
const onChange = ({ lang }) => console.log('Language is now', lang);
|
|
156
|
-
|
|
157
|
-
LocaleService.on('locale:change', onChange);
|
|
158
|
-
|
|
159
|
-
// remove the listener when it is no longer needed
|
|
160
|
-
LocaleService.off('locale:change', onChange);
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
## Inspecting the Registry
|
|
164
|
-
|
|
165
|
-
`$l` returns a facade over the registry, which helps when building a language switcher.
|
|
166
|
-
|
|
167
|
-
```js
|
|
168
|
-
import { $l } from '@primereact/core/locale';
|
|
169
|
-
|
|
170
|
-
$l().langs; // ['en', 'es']
|
|
171
|
-
$l().get('es'); // message object of the Spanish locale
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
## Message Keys
|
|
175
|
-
|
|
176
|
-
Built-in messages are grouped as follows.
|
|
177
|
-
|
|
178
|
-
| Group | Keys |
|
|
179
|
-
| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
180
|
-
| Filter operators | `startsWith`, `contains`, `notContains`, `endsWith`, `equals`, `notEquals`, `noFilter`, `lt`, `lte`, `gt`, `gte`, `dateIs`, `dateIsNot`, `dateBefore`, `dateAfter` |
|
|
181
|
-
| Filter menu | `clear`, `apply`, `matchAll`, `matchAny`, `addRule`, `removeRule` |
|
|
182
|
-
| Actions | `accept`, `reject`, `choose`, `upload`, `cancel`, `completed`, `pending` |
|
|
183
|
-
| Dates | `dayNames`, `dayNamesShort`, `dayNamesMin`, `monthNames`, `monthNamesShort`, `today`, `weekHeader`, `firstDayOfWeek`, `dateFormat` |
|
|
184
|
-
| Date navigation | `chooseYear`, `chooseMonth`, `chooseDate`, `prevDecade`, `nextDecade`, `prevYear`, `nextYear`, `prevMonth`, `nextMonth`, `prevHour`, `nextHour`, `prevMinute`, `nextMinute`, `prevSecond`, `nextSecond`, `am`, `pm` |
|
|
185
|
-
| Password strength | `weak`, `medium`, `strong`, `passwordPrompt` |
|
|
186
|
-
| Empty and status messages | `emptyMessage`, `emptyFilterMessage`, `emptySearchMessage`, `emptySelectionMessage`, `searchMessage`, `selectionMessage` |
|
|
187
|
-
| Files | `fileSizeTypes`, `fileChosenMessage`, `noFileChosenMessage` |
|
|
188
|
-
| Regional settings | `firstDayOfWeek`, `dateFormat`, `showMonthAfterYear` |
|
|
189
|
-
| Accessibility | Nested under `aria`, covering screen reader labels such as `aria.selectRow`, `aria.expandRow`, `aria.showFilterMenu`, `aria.zoomImage`, `aria.listLabel` and pagination labels. |
|
|
190
|
-
|
|
191
|
-
Not every entry is a string. `firstDayOfWeek` is a number, `showMonthAfterYear` is a boolean, and `dayNames`, `monthNames` and `fileSizeTypes` are arrays.
|
|
192
|
-
|
|
193
|
-
The complete list with default English values is in `packages/@primereact/core/src/locale/defaultLocale.ts`.
|
|
194
|
-
|
|
195
|
-
## Ready-Made Translations
|
|
196
|
-
|
|
197
|
-
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`.
|
|
198
|
-
|
|
199
|
-
### Copying a File
|
|
200
|
-
|
|
201
|
-
Grab the JSON file for the desired language from the repository, for example `tr.json`, and place it in the project.
|
|
202
|
-
|
|
203
|
-
Each file wraps its messages in a single key named after the language:
|
|
204
|
-
|
|
205
|
-
```json
|
|
206
|
-
{
|
|
207
|
-
"tr": {
|
|
208
|
-
"clear": "Temizle",
|
|
209
|
-
"apply": "Uygula",
|
|
210
|
-
"aria": { "selectRow": "Satır Seçildi" }
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
```
|
|
214
|
-
|
|
215
|
-
That wrapper has to be unwrapped before registering, otherwise every lookup resolves to `undefined`:
|
|
216
|
-
|
|
217
|
-
```js
|
|
218
|
-
import { defineLocale, Locale } from '@primereact/core/locale';
|
|
219
|
-
import tr from './locales/tr.json';
|
|
220
|
-
|
|
221
|
-
defineLocale('tr', tr.tr);
|
|
222
|
-
Locale.use('tr');
|
|
223
|
-
```
|
|
224
|
-
|
|
225
|
-
The same unwrapping applies when the language is registered through the provider:
|
|
226
|
-
|
|
227
|
-
```jsx
|
|
228
|
-
import { PrimeReactProvider } from '@primereact/core';
|
|
229
|
-
import tr from './locales/tr.json';
|
|
230
|
-
|
|
231
|
-
<PrimeReactProvider locale="tr" locales={{ tr: tr.tr }}>
|
|
232
|
-
<App />
|
|
233
|
-
</PrimeReactProvider>;
|
|
234
|
-
```
|
|
235
|
-
|
|
236
|
-
### Installing the Package
|
|
237
|
-
|
|
238
|
-
The translations are also published to npm, which avoids maintaining copies by hand.
|
|
239
|
-
|
|
240
|
-
```bash
|
|
241
|
-
npm install primelocale
|
|
242
|
-
```
|
|
243
|
-
|
|
244
|
-
```js
|
|
245
|
-
import { defineLocale, Locale } from '@primereact/core/locale';
|
|
246
|
-
import { tr } from 'primelocale/js/tr.js';
|
|
247
|
-
|
|
248
|
-
defineLocale('tr', tr);
|
|
249
|
-
Locale.use('tr');
|
|
250
|
-
```
|
|
251
|
-
|
|
252
|
-
The package entry points export the messages directly, so no unwrapping is needed there.
|
|
253
|
-
|
|
254
|
-
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.
|
|
255
|
-
|
|
256
|
-
### Adjusting a Translation
|
|
257
|
-
|
|
258
|
-
A ready-made translation can be tuned without editing the file, by layering overrides on top of it:
|
|
259
|
-
|
|
260
|
-
```js
|
|
261
|
-
defineLocale('tr', tr.tr);
|
|
262
|
-
updateLocale('tr', { clear: 'Sıfırla' });
|
|
263
|
-
```
|
|
264
|
-
|
|
265
|
-
Contributions of new languages and corrections are welcome in the PrimeLocale repository, and benefit every Prime library at once.
|
|
266
|
-
|
|
267
|
-
## Migrating from v10
|
|
268
|
-
|
|
269
|
-
The locale helpers previously imported from `primereact/api` have been replaced.
|
|
270
|
-
|
|
271
|
-
| v10 | v11 |
|
|
272
|
-
| -------------------------------------- | ---------------------------------------------------------------- |
|
|
273
|
-
| `locale('de')` | `Locale.use('de')`, or the `locale` prop on `PrimeReactProvider` |
|
|
274
|
-
| `addLocale('es', {...})` | `defineLocale('es', {...})` |
|
|
275
|
-
| `updateLocaleOption(key, value, lang)` | `updateLocale(lang, { key: value })` |
|
|
276
|
-
| `updateLocaleOptions({...}, lang)` | `updateLocale(lang, {...})` |
|
|
277
|
-
| `localeOption(key)` | `$t(key)`, or `t(key)` from `useLocale()` |
|
|
278
|
-
| `localeOptions(lang)` | `$l().get(lang)`, or `messages` from `useLocale()` |
|
|
279
|
-
|
|
280
|
-
One behavioural difference is worth noting: locale state is now shared with other Prime libraries in the same application rather than being private to PrimeReact. Setting a language from PrimeReact also affects PrimeVue or PrimeNG components running alongside it.
|
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
# Theming
|
|
2
|
-
|
|
3
|
-
Theme PrimeReact's Tailwind components with CSS variables and the tailwindcss-primeui plugin.
|
|
4
|
-
|
|
5
|
-
## Overview
|
|
6
|
-
|
|
7
|
-
Like shadcn/ui, the Tailwind components are themed entirely through **CSS variables**, design tokens defined on `:root`. The [`tailwindcss-primeui`](https://github.com/primefaces/tailwindcss-primeui) plugin maps those tokens to Tailwind utilities (`bg-primary`, `text-muted-color`, `border-surface`, …) that every component is built with, so editing a single variable re-themes the whole UI.
|
|
8
|
-
|
|
9
|
-
## How it works
|
|
10
|
-
|
|
11
|
-
Two pieces work together:
|
|
12
|
-
|
|
13
|
-
- **CSS variables**, PrimeUI design tokens (`--p-primary-*`, `--p-surface-*`, and semantic tokens) added to your global stylesheet's `:root`.
|
|
14
|
-
- **tailwindcss-primeui**, a Tailwind plugin that turns those tokens into utility classes (`bg-primary`, `text-surface-500`, `text-color`, `text-muted-color`, `border-surface`, `rounded-border`, …) and a dark-mode variant. Install it during [installation](/docs/tailwind/guides/installation) and import it in your global CSS:
|
|
15
|
-
|
|
16
|
-
```css title="app/globals.css"
|
|
17
|
-
@import 'tailwindcss';
|
|
18
|
-
|
|
19
|
-
@import 'tailwindcss-primeui';
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
## CSS Variables
|
|
23
|
-
|
|
24
|
-
The PrimeReact registry ships as a `registry:style`, so when you set it up these tokens are written to your global stylesheet. This is the default theme:
|
|
25
|
-
|
|
26
|
-
```css title="app/globals.css"
|
|
27
|
-
:root {
|
|
28
|
-
--p-primary-50: oklch(98.5% 0 0);
|
|
29
|
-
--p-primary-100: oklch(97% 0 0);
|
|
30
|
-
--p-primary-200: oklch(92.2% 0 0);
|
|
31
|
-
--p-primary-300: oklch(87% 0 0);
|
|
32
|
-
--p-primary-400: oklch(70.8% 0 0);
|
|
33
|
-
--p-primary-500: oklch(55.6% 0 0);
|
|
34
|
-
--p-primary-600: oklch(43.9% 0 0);
|
|
35
|
-
--p-primary-700: oklch(37.1% 0 0);
|
|
36
|
-
--p-primary-800: oklch(26.9% 0 0);
|
|
37
|
-
--p-primary-900: oklch(20.5% 0 0);
|
|
38
|
-
--p-primary-950: oklch(14.5% 0 0);
|
|
39
|
-
--p-surface-0: oklch(100% 0 0);
|
|
40
|
-
--p-surface-50: oklch(98.5% 0 0);
|
|
41
|
-
--p-surface-100: oklch(97% 0 0);
|
|
42
|
-
--p-surface-200: oklch(92.2% 0 0);
|
|
43
|
-
--p-surface-300: oklch(87% 0 0);
|
|
44
|
-
--p-surface-400: oklch(70.8% 0 0);
|
|
45
|
-
--p-surface-500: oklch(55.6% 0 0);
|
|
46
|
-
--p-surface-600: oklch(43.9% 0 0);
|
|
47
|
-
--p-surface-700: oklch(37.1% 0 0);
|
|
48
|
-
--p-surface-800: oklch(26.9% 0 0);
|
|
49
|
-
--p-surface-900: oklch(20.5% 0 0);
|
|
50
|
-
--p-surface-950: oklch(14.5% 0 0);
|
|
51
|
-
--p-content-border-radius: 6px;
|
|
52
|
-
--p-primary-color: var(--p-primary-500);
|
|
53
|
-
--p-primary-contrast-color: var(--p-surface-0);
|
|
54
|
-
--p-primary-hover-color: var(--p-primary-600);
|
|
55
|
-
--p-primary-active-color: var(--p-primary-700);
|
|
56
|
-
--p-content-border-color: var(--p-surface-200);
|
|
57
|
-
--p-content-hover-background: var(--p-surface-100);
|
|
58
|
-
--p-content-hover-color: var(--p-surface-800);
|
|
59
|
-
--p-highlight-background: var(--p-primary-50);
|
|
60
|
-
--p-highlight-color: var(--p-primary-700);
|
|
61
|
-
--p-highlight-focus-background: var(--p-primary-100);
|
|
62
|
-
--p-highlight-focus-color: var(--p-primary-800);
|
|
63
|
-
--p-text-color: var(--p-surface-700);
|
|
64
|
-
--p-text-hover-color: var(--p-surface-800);
|
|
65
|
-
--p-text-muted-color: var(--p-surface-500);
|
|
66
|
-
--p-text-hover-muted-color: var(--p-surface-600);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
@media (prefers-color-scheme: dark) {
|
|
70
|
-
:root {
|
|
71
|
-
--p-primary-color: var(--p-primary-400);
|
|
72
|
-
--p-primary-contrast-color: var(--p-surface-900);
|
|
73
|
-
--p-primary-hover-color: var(--p-primary-300);
|
|
74
|
-
--p-primary-active-color: var(--p-primary-200);
|
|
75
|
-
--p-content-border-color: var(--p-surface-700);
|
|
76
|
-
--p-content-hover-background: var(--p-surface-800);
|
|
77
|
-
--p-content-hover-color: var(--p-surface-0);
|
|
78
|
-
--p-highlight-background: color-mix(in srgb, var(--p-primary-400), transparent 84%);
|
|
79
|
-
--p-highlight-color: rgba(255, 255, 255, 0.87);
|
|
80
|
-
--p-highlight-focus-background: color-mix(in srgb, var(--p-primary-400), transparent 76%);
|
|
81
|
-
--p-highlight-focus-color: rgba(255, 255, 255, 0.87);
|
|
82
|
-
--p-text-color: var(--p-surface-0);
|
|
83
|
-
--p-text-hover-color: var(--p-surface-0);
|
|
84
|
-
--p-text-muted-color: var(--p-surface-400);
|
|
85
|
-
--p-text-hover-muted-color: var(--p-surface-300);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
### Token groups
|
|
91
|
-
|
|
92
|
-
- **Primary scale**, `--p-primary-50` … `--p-primary-950`, the accent ramp (neutral gray by default).
|
|
93
|
-
- **Surface scale**, `--p-surface-0` … `--p-surface-950`, the neutrals used for backgrounds, borders and text.
|
|
94
|
-
- **Semantic tokens**, resolve to the scales and are what components actually reference: `--p-primary-color`, `--p-primary-contrast-color`, `--p-primary-hover-color`, `--p-primary-active-color`, `--p-text-color`, `--p-text-muted-color`, `--p-content-border-color`, `--p-content-hover-background`, `--p-highlight-background` / `--p-highlight-color`, and `--p-content-border-radius` for rounding.
|
|
95
|
-
|
|
96
|
-
## Customizing the theme
|
|
97
|
-
|
|
98
|
-
### Primary color
|
|
99
|
-
|
|
100
|
-
The default primary ramp is neutral gray. Point it at any palette, for example Tailwind's built-in `blue`, whose tokens are exposed as `--color-*` variables in Tailwind v4:
|
|
101
|
-
|
|
102
|
-
```css title="app/globals.css"
|
|
103
|
-
:root {
|
|
104
|
-
--p-primary-50: var(--color-blue-50);
|
|
105
|
-
--p-primary-100: var(--color-blue-100);
|
|
106
|
-
--p-primary-200: var(--color-blue-200);
|
|
107
|
-
--p-primary-300: var(--color-blue-300);
|
|
108
|
-
--p-primary-400: var(--color-blue-400);
|
|
109
|
-
--p-primary-500: var(--color-blue-500);
|
|
110
|
-
--p-primary-600: var(--color-blue-600);
|
|
111
|
-
--p-primary-700: var(--color-blue-700);
|
|
112
|
-
--p-primary-800: var(--color-blue-800);
|
|
113
|
-
--p-primary-900: var(--color-blue-900);
|
|
114
|
-
--p-primary-950: var(--color-blue-950);
|
|
115
|
-
}
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
The semantic tokens (`--p-primary-color`, hover, active, contrast) follow the ramp automatically, so every component updates at once.
|
|
119
|
-
|
|
120
|
-
### Surface color
|
|
121
|
-
|
|
122
|
-
Remap `--p-surface-*` the same way to change the neutral tone, for example to one of Tailwind's neutral palettes like `zinc` (or `slate`, `stone`, `neutral`). Note `--p-surface-0` is pure white, so map it to `--color-white`:
|
|
123
|
-
|
|
124
|
-
```css title="app/globals.css"
|
|
125
|
-
:root {
|
|
126
|
-
--p-surface-0: var(--color-white);
|
|
127
|
-
--p-surface-50: var(--color-zinc-50);
|
|
128
|
-
--p-surface-100: var(--color-zinc-100);
|
|
129
|
-
--p-surface-200: var(--color-zinc-200);
|
|
130
|
-
--p-surface-300: var(--color-zinc-300);
|
|
131
|
-
--p-surface-400: var(--color-zinc-400);
|
|
132
|
-
--p-surface-500: var(--color-zinc-500);
|
|
133
|
-
--p-surface-600: var(--color-zinc-600);
|
|
134
|
-
--p-surface-700: var(--color-zinc-700);
|
|
135
|
-
--p-surface-800: var(--color-zinc-800);
|
|
136
|
-
--p-surface-900: var(--color-zinc-900);
|
|
137
|
-
--p-surface-950: var(--color-zinc-950);
|
|
138
|
-
}
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
### Border radius
|
|
142
|
-
|
|
143
|
-
`--p-content-border-radius` controls how rounded the components are:
|
|
144
|
-
|
|
145
|
-
```css title="app/globals.css"
|
|
146
|
-
:root {
|
|
147
|
-
--p-content-border-radius: 10px;
|
|
148
|
-
}
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
## Dark mode
|
|
152
|
-
|
|
153
|
-
By default the dark tokens apply under `@media (prefers-color-scheme: dark)`, following the user's system setting. To toggle dark mode yourself, move the dark overrides into a class selector and add that class to your `<html>` element:
|
|
154
|
-
|
|
155
|
-
```css title="app/globals.css"
|
|
156
|
-
.dark {
|
|
157
|
-
--p-primary-color: var(--p-primary-400);
|
|
158
|
-
--p-primary-contrast-color: var(--p-surface-900);
|
|
159
|
-
/* …rest of the dark overrides… */
|
|
160
|
-
}
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
```tsx
|
|
164
|
-
<html className="dark">...</html>
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
## Using tokens in your own markup
|
|
168
|
-
|
|
169
|
-
Because the tokens are exposed as utilities by `tailwindcss-primeui`, you can style your own elements to match the components:
|
|
170
|
-
|
|
171
|
-
```tsx
|
|
172
|
-
<div className="bg-surface-0 text-color border border-surface rounded-border p-4">
|
|
173
|
-
<span className="text-primary">Themed with the same tokens</span>
|
|
174
|
-
</div>
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
## Reference
|
|
178
|
-
|
|
179
|
-
- [tailwindcss-primeui](https://github.com/primefaces/tailwindcss-primeui), the Tailwind plugin and the full list of utilities it generates.
|