Problem
Components 4 centralizes locale plus paginator/date messages, while other owned labels still rely on English defaults or per-instance overrides. Existing consumers can migrate, but large localized products must repeat configuration for dialog actions, Dropdown clear/show behavior, table row selection, column filter labels/match modes, toast dismissal/actions, Toolbar names, and similar owned chrome.
Direction
Expand CratisComponentsMessages by owned surface without creating one monolithic renderer locale object:
- dialog actions/dismissal;
- Dropdown selection/clear/filter labels;
- DataTable selection/search/filter/match-mode labels;
- notification dismissal/action labels;
- Toolbar default names and folder/fan-out conventions;
- other audited Components-owned English strings.
Precedence should remain explicit: named component prop → provider message → English fallback. Platform/React Aria locale data should not be copied into Components messages.
Acceptance
- Inventory every user-facing literal in shipped Components source.
- Add typed message groups and TSDoc.
- Cover
nb-NO and English provider examples.
- Keep per-instance overrides.
- Add a gate/spec that prevents an owned label from becoming unlocalizable.
Problem
Components 4 centralizes locale plus paginator/date messages, while other owned labels still rely on English defaults or per-instance overrides. Existing consumers can migrate, but large localized products must repeat configuration for dialog actions, Dropdown clear/show behavior, table row selection, column filter labels/match modes, toast dismissal/actions, Toolbar names, and similar owned chrome.
Direction
Expand
CratisComponentsMessagesby owned surface without creating one monolithic renderer locale object:Precedence should remain explicit: named component prop → provider message → English fallback. Platform/React Aria locale data should not be copied into Components messages.
Acceptance
nb-NOand English provider examples.