@12-apps/ui 6.6.0 → 6.8.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 (436) hide show
  1. package/dist/{chunk-QLBYAYUG.js → chunk-KR2BP7NK.js} +4 -4
  2. package/dist/chunk-KR2BP7NK.js.map +1 -0
  3. package/dist/{chunk-DFVRZ3UK.js → chunk-KXARS46L.js} +3 -3
  4. package/dist/chunk-KXARS46L.js.map +1 -0
  5. package/dist/{chunk-JP55QWVR.js → chunk-L7L6SX64.js} +5 -2
  6. package/dist/chunk-L7L6SX64.js.map +1 -0
  7. package/dist/{chunk-QZZVHY6U.js → chunk-PVLDKXKR.js} +7 -3
  8. package/dist/chunk-PVLDKXKR.js.map +1 -0
  9. package/dist/{chunk-3KWD5Y5O.js → chunk-RXE5CUUE.js} +8 -4
  10. package/dist/chunk-RXE5CUUE.js.map +1 -0
  11. package/dist/{chunk-H7UAGTVW.js → chunk-TSG5C7MP.js} +4 -3
  12. package/dist/chunk-TSG5C7MP.js.map +1 -0
  13. package/dist/{chunk-NUCLEOHF.js → chunk-UNM7KFDX.js} +44 -14
  14. package/dist/chunk-UNM7KFDX.js.map +1 -0
  15. package/dist/{chunk-CEKPLUQV.js → chunk-UY7UF7IN.js} +19 -13
  16. package/dist/chunk-UY7UF7IN.js.map +1 -0
  17. package/dist/data-display/Alert.js +1 -1
  18. package/dist/data-display/AsyncStateContainer.js +2 -1
  19. package/dist/data-display/AsyncStateContainer.js.map +1 -1
  20. package/dist/data-display/Banner.js +4 -2
  21. package/dist/data-display/Banner.js.map +1 -1
  22. package/dist/data-display/CardKit.js +3 -1
  23. package/dist/data-display/CardKit.js.map +1 -1
  24. package/dist/data-display/Carousel.js +5 -2
  25. package/dist/data-display/Carousel.js.map +1 -1
  26. package/dist/data-display/DataGrid.js +1 -1
  27. package/dist/data-display/DataViews.js +90 -66
  28. package/dist/data-display/DataViews.js.map +1 -1
  29. package/dist/data-display/HoverCard.js +4 -1
  30. package/dist/data-display/HoverCard.js.map +1 -1
  31. package/dist/data-display/Lightbox.js +147 -117
  32. package/dist/data-display/Lightbox.js.map +1 -1
  33. package/dist/data-display/MapPreview.js +14 -10
  34. package/dist/data-display/MapPreview.js.map +1 -1
  35. package/dist/data-display/Table.js +4 -2
  36. package/dist/data-display/Table.js.map +1 -1
  37. package/dist/data-display/TimingDiagram.js +3 -2
  38. package/dist/data-display/TimingDiagram.js.map +1 -1
  39. package/dist/feedback/Sonner.js +5 -4
  40. package/dist/feedback/Sonner.js.map +1 -1
  41. package/dist/feedback/StackedModal.js +1 -1
  42. package/dist/feedback/TutorialOverlay.js +19 -5
  43. package/dist/feedback/TutorialOverlay.js.map +1 -1
  44. package/dist/form/AddressAutocomplete.js +16 -8
  45. package/dist/form/AddressAutocomplete.js.map +1 -1
  46. package/dist/form/Autocomplete.js +9 -7
  47. package/dist/form/Autocomplete.js.map +1 -1
  48. package/dist/form/Calendar.js +1 -1
  49. package/dist/form/CodeEditor.js +14 -9
  50. package/dist/form/CodeEditor.js.map +1 -1
  51. package/dist/form/DateRangePicker.js +10 -3
  52. package/dist/form/DateRangePicker.js.map +1 -1
  53. package/dist/form/Menubar.js +4 -1
  54. package/dist/form/Menubar.js.map +1 -1
  55. package/dist/form/PasswordStrength.js +48 -28
  56. package/dist/form/PasswordStrength.js.map +1 -1
  57. package/dist/form/PhoneInput.js +11 -5
  58. package/dist/form/PhoneInput.js.map +1 -1
  59. package/dist/form/SearchPalette.js +4 -1
  60. package/dist/form/SearchPalette.js.map +1 -1
  61. package/dist/form/Textarea.js +21 -19
  62. package/dist/form/Textarea.js.map +1 -1
  63. package/dist/form/UploadButton.js +16 -11
  64. package/dist/form/UploadButton.js.map +1 -1
  65. package/dist/layout/ContentToolbar.js +1 -1
  66. package/dist/layout/Dashboard.js +2 -1
  67. package/dist/layout/Dashboard.js.map +1 -1
  68. package/dist/layout/ScrollArea.js +9 -3
  69. package/dist/layout/ScrollArea.js.map +1 -1
  70. package/dist/layout/TableFilter.js +1 -1
  71. package/dist/navigation/Breadcrumbs.js +9 -3
  72. package/dist/navigation/Breadcrumbs.js.map +1 -1
  73. package/dist/navigation/CommandPalette.js +20 -7
  74. package/dist/navigation/CommandPalette.js.map +1 -1
  75. package/dist/navigation/Pagination.js +1 -1
  76. package/dist/navigation/Tabs.js +7 -3
  77. package/dist/navigation/Tabs.js.map +1 -1
  78. package/dist/pt-BR.js +192 -5
  79. package/dist/pt-BR.js.map +1 -1
  80. package/dist/types/components/data-display/Alert/Alert.d.ts +9 -2
  81. package/dist/types/components/data-display/Alert/Alert.d.ts.map +1 -1
  82. package/dist/types/components/data-display/Alert/Alert.types.d.ts +25 -9
  83. package/dist/types/components/data-display/Alert/Alert.types.d.ts.map +1 -1
  84. package/dist/types/components/data-display/AsyncStateContainer/AsyncStateContainer.d.ts.map +1 -1
  85. package/dist/types/components/data-display/AsyncStateContainer/AsyncStateContainer.types.d.ts +6 -0
  86. package/dist/types/components/data-display/AsyncStateContainer/AsyncStateContainer.types.d.ts.map +1 -1
  87. package/dist/types/components/data-display/Banner/Banner.d.ts.map +1 -1
  88. package/dist/types/components/data-display/Banner/Banner.types.d.ts +2 -0
  89. package/dist/types/components/data-display/Banner/Banner.types.d.ts.map +1 -1
  90. package/dist/types/components/data-display/CardKit/card-actions-context.d.ts +3 -1
  91. package/dist/types/components/data-display/CardKit/card-actions-context.d.ts.map +1 -1
  92. package/dist/types/components/data-display/Carousel/Carousel.chrome.d.ts +3 -0
  93. package/dist/types/components/data-display/Carousel/Carousel.chrome.d.ts.map +1 -1
  94. package/dist/types/components/data-display/Carousel/Carousel.parts.d.ts.map +1 -1
  95. package/dist/types/components/data-display/Carousel/Carousel.types.d.ts +7 -0
  96. package/dist/types/components/data-display/Carousel/Carousel.types.d.ts.map +1 -1
  97. package/dist/types/components/data-display/DataGrid/DataGrid.states.d.ts +1 -0
  98. package/dist/types/components/data-display/DataGrid/DataGrid.states.d.ts.map +1 -1
  99. package/dist/types/components/data-display/DataGrid/DataGrid.types.d.ts +5 -0
  100. package/dist/types/components/data-display/DataGrid/DataGrid.types.d.ts.map +1 -1
  101. package/dist/types/components/data-display/DataViews/data-views-category-pill.d.ts.map +1 -1
  102. package/dist/types/components/data-display/DataViews/data-views-copy.d.ts +29 -1
  103. package/dist/types/components/data-display/DataViews/data-views-copy.d.ts.map +1 -1
  104. package/dist/types/components/data-display/DataViews/data-views-day-input.d.ts +12 -1
  105. package/dist/types/components/data-display/DataViews/data-views-day-input.d.ts.map +1 -1
  106. package/dist/types/components/data-display/DataViews/data-views-filter-panel.d.ts.map +1 -1
  107. package/dist/types/components/data-display/DataViews/data-views-grid-bodies.d.ts.map +1 -1
  108. package/dist/types/components/data-display/DataViews/data-views-grid-parts.d.ts.map +1 -1
  109. package/dist/types/components/data-display/DataViews/data-views-more-fields.d.ts.map +1 -1
  110. package/dist/types/components/data-display/DataViews/data-views-pagination.d.ts.map +1 -1
  111. package/dist/types/components/data-display/DataViews/data-views-range-pill.d.ts.map +1 -1
  112. package/dist/types/components/data-display/DataViews/data-views-table-parts.d.ts.map +1 -1
  113. package/dist/types/components/data-display/DataViews/data-views-toolbar.d.ts.map +1 -1
  114. package/dist/types/components/data-display/HoverCard/HoverCard.content.d.ts +1 -1
  115. package/dist/types/components/data-display/HoverCard/HoverCard.content.d.ts.map +1 -1
  116. package/dist/types/components/data-display/HoverCard/HoverCard.d.ts.map +1 -1
  117. package/dist/types/components/data-display/HoverCard/HoverCard.types.d.ts +2 -0
  118. package/dist/types/components/data-display/HoverCard/HoverCard.types.d.ts.map +1 -1
  119. package/dist/types/components/data-display/Lightbox/Lightbox.d.ts.map +1 -1
  120. package/dist/types/components/data-display/Lightbox/Lightbox.types.d.ts +9 -0
  121. package/dist/types/components/data-display/Lightbox/Lightbox.types.d.ts.map +1 -1
  122. package/dist/types/components/data-display/Lightbox/LightboxControls.d.ts.map +1 -1
  123. package/dist/types/components/data-display/Lightbox/lightbox-copy-context.d.ts +17 -0
  124. package/dist/types/components/data-display/Lightbox/lightbox-copy-context.d.ts.map +1 -0
  125. package/dist/types/components/data-display/MapPreview/MapControlBar.d.ts +7 -0
  126. package/dist/types/components/data-display/MapPreview/MapControlBar.d.ts.map +1 -1
  127. package/dist/types/components/data-display/MapPreview/MapLayers.d.ts.map +1 -1
  128. package/dist/types/components/data-display/MapPreview/MapPreview.types.d.ts +9 -0
  129. package/dist/types/components/data-display/MapPreview/MapPreview.types.d.ts.map +1 -1
  130. package/dist/types/components/data-display/MapPreview/MapSearchBar.d.ts +2 -0
  131. package/dist/types/components/data-display/MapPreview/MapSearchBar.d.ts.map +1 -1
  132. package/dist/types/components/data-display/Table/Table.d.ts.map +1 -1
  133. package/dist/types/components/data-display/Table/Table.types.d.ts +5 -0
  134. package/dist/types/components/data-display/Table/Table.types.d.ts.map +1 -1
  135. package/dist/types/components/data-display/Table/TableStates.d.ts +3 -1
  136. package/dist/types/components/data-display/Table/TableStates.d.ts.map +1 -1
  137. package/dist/types/components/data-display/TimingDiagram/TimingDiagram.d.ts.map +1 -1
  138. package/dist/types/components/data-display/TimingDiagram/TimingDiagram.types.d.ts +3 -0
  139. package/dist/types/components/data-display/TimingDiagram/TimingDiagram.types.d.ts.map +1 -1
  140. package/dist/types/components/feedback/Sonner/Sonner.d.ts +8 -0
  141. package/dist/types/components/feedback/Sonner/Sonner.d.ts.map +1 -1
  142. package/dist/types/components/feedback/Sonner/Sonner.types.d.ts +2 -0
  143. package/dist/types/components/feedback/Sonner/Sonner.types.d.ts.map +1 -1
  144. package/dist/types/components/feedback/Sonner/SonnerToast.d.ts.map +1 -1
  145. package/dist/types/components/feedback/StackedModal/StackedModal.d.ts.map +1 -1
  146. package/dist/types/components/feedback/StackedModal/StackedModal.parts.d.ts +2 -0
  147. package/dist/types/components/feedback/StackedModal/StackedModal.parts.d.ts.map +1 -1
  148. package/dist/types/components/feedback/StackedModal/StackedModal.types.d.ts +2 -0
  149. package/dist/types/components/feedback/StackedModal/StackedModal.types.d.ts.map +1 -1
  150. package/dist/types/components/feedback/TutorialOverlay/TutorialOverlay.d.ts.map +1 -1
  151. package/dist/types/components/feedback/TutorialOverlay/TutorialOverlay.types.d.ts +3 -0
  152. package/dist/types/components/feedback/TutorialOverlay/TutorialOverlay.types.d.ts.map +1 -1
  153. package/dist/types/components/feedback/TutorialOverlay/TutorialStepBody.d.ts +2 -0
  154. package/dist/types/components/feedback/TutorialOverlay/TutorialStepBody.d.ts.map +1 -1
  155. package/dist/types/components/form/AddressAutocomplete/AddressAutocomplete.types.d.ts +7 -0
  156. package/dist/types/components/form/AddressAutocomplete/AddressAutocomplete.types.d.ts.map +1 -1
  157. package/dist/types/components/form/AddressAutocomplete/AddressAutocompleteField.d.ts.map +1 -1
  158. package/dist/types/components/form/AddressAutocomplete/AddressFallbackField.d.ts +1 -0
  159. package/dist/types/components/form/AddressAutocomplete/AddressFallbackField.d.ts.map +1 -1
  160. package/dist/types/components/form/AddressAutocomplete/AddressInputField.d.ts +1 -0
  161. package/dist/types/components/form/AddressAutocomplete/AddressInputField.d.ts.map +1 -1
  162. package/dist/types/components/form/Autocomplete/Autocomplete.d.ts.map +1 -1
  163. package/dist/types/components/form/Autocomplete/Autocomplete.parts.d.ts +9 -3
  164. package/dist/types/components/form/Autocomplete/Autocomplete.parts.d.ts.map +1 -1
  165. package/dist/types/components/form/Autocomplete/Autocomplete.types.d.ts +7 -0
  166. package/dist/types/components/form/Autocomplete/Autocomplete.types.d.ts.map +1 -1
  167. package/dist/types/components/form/Calendar/Calendar.types.d.ts +6 -0
  168. package/dist/types/components/form/Calendar/Calendar.types.d.ts.map +1 -1
  169. package/dist/types/components/form/CodeEditor/CodeEditor.d.ts.map +1 -1
  170. package/dist/types/components/form/CodeEditor/CodeEditor.types.d.ts +7 -0
  171. package/dist/types/components/form/CodeEditor/CodeEditor.types.d.ts.map +1 -1
  172. package/dist/types/components/form/CodeEditor/CodeEditorToolbar.d.ts +2 -0
  173. package/dist/types/components/form/CodeEditor/CodeEditorToolbar.d.ts.map +1 -1
  174. package/dist/types/components/form/DateRangePicker/DateRangePicker.d.ts.map +1 -1
  175. package/dist/types/components/form/DateRangePicker/DateRangePicker.range.d.ts.map +1 -1
  176. package/dist/types/components/form/DateRangePicker/DateRangePicker.types.d.ts +11 -0
  177. package/dist/types/components/form/DateRangePicker/DateRangePicker.types.d.ts.map +1 -1
  178. package/dist/types/components/form/DateRangePicker/DateRangePickerFields.d.ts.map +1 -1
  179. package/dist/types/components/form/Menubar/Menubar.d.ts.map +1 -1
  180. package/dist/types/components/form/Menubar/Menubar.toolbar.d.ts +1 -0
  181. package/dist/types/components/form/Menubar/Menubar.toolbar.d.ts.map +1 -1
  182. package/dist/types/components/form/Menubar/Menubar.types.d.ts +5 -0
  183. package/dist/types/components/form/Menubar/Menubar.types.d.ts.map +1 -1
  184. package/dist/types/components/form/PasswordStrength/PasswordStrength.d.ts.map +1 -1
  185. package/dist/types/components/form/PasswordStrength/PasswordStrength.helpers.d.ts +4 -2
  186. package/dist/types/components/form/PasswordStrength/PasswordStrength.helpers.d.ts.map +1 -1
  187. package/dist/types/components/form/PasswordStrength/PasswordStrength.types.d.ts +8 -0
  188. package/dist/types/components/form/PasswordStrength/PasswordStrength.types.d.ts.map +1 -1
  189. package/dist/types/components/form/PhoneInput/PhoneInput.d.ts.map +1 -1
  190. package/dist/types/components/form/PhoneInput/PhoneInput.types.d.ts +7 -0
  191. package/dist/types/components/form/PhoneInput/PhoneInput.types.d.ts.map +1 -1
  192. package/dist/types/components/form/SearchPalette/SearchPalette.d.ts.map +1 -1
  193. package/dist/types/components/form/SearchPalette/SearchPalette.parts.d.ts +2 -0
  194. package/dist/types/components/form/SearchPalette/SearchPalette.parts.d.ts.map +1 -1
  195. package/dist/types/components/form/SearchPalette/SearchPalette.types.d.ts +6 -0
  196. package/dist/types/components/form/SearchPalette/SearchPalette.types.d.ts.map +1 -1
  197. package/dist/types/components/form/Textarea/Textarea.d.ts.map +1 -1
  198. package/dist/types/components/form/Textarea/Textarea.types.d.ts +16 -1
  199. package/dist/types/components/form/Textarea/Textarea.types.d.ts.map +1 -1
  200. package/dist/types/components/form/Textarea/TextareaRichEditor.d.ts +7 -0
  201. package/dist/types/components/form/Textarea/TextareaRichEditor.d.ts.map +1 -1
  202. package/dist/types/components/form/UploadButton/UploadButton.d.ts.map +1 -1
  203. package/dist/types/components/form/UploadButton/UploadButton.parts.d.ts +6 -3
  204. package/dist/types/components/form/UploadButton/UploadButton.parts.d.ts.map +1 -1
  205. package/dist/types/components/form/UploadButton/UploadButton.types.d.ts +7 -0
  206. package/dist/types/components/form/UploadButton/UploadButton.types.d.ts.map +1 -1
  207. package/dist/types/components/layout/ContentToolbar/ContentToolbar.d.ts +1 -1
  208. package/dist/types/components/layout/ContentToolbar/ContentToolbar.d.ts.map +1 -1
  209. package/dist/types/components/layout/ContentToolbar/ContentToolbar.types.d.ts +12 -0
  210. package/dist/types/components/layout/ContentToolbar/ContentToolbar.types.d.ts.map +1 -1
  211. package/dist/types/components/layout/ContentToolbar/MultiSelectDropdown.d.ts +1 -1
  212. package/dist/types/components/layout/ContentToolbar/MultiSelectDropdown.d.ts.map +1 -1
  213. package/dist/types/components/layout/ContentToolbar/SortByDropdown.d.ts +1 -1
  214. package/dist/types/components/layout/ContentToolbar/SortByDropdown.d.ts.map +1 -1
  215. package/dist/types/components/layout/ContentToolbar/ViewSelector.d.ts +1 -1
  216. package/dist/types/components/layout/ContentToolbar/ViewSelector.d.ts.map +1 -1
  217. package/dist/types/components/layout/Dashboard/Dashboard.d.ts +1 -1
  218. package/dist/types/components/layout/Dashboard/Dashboard.types.d.ts +4 -0
  219. package/dist/types/components/layout/Dashboard/Dashboard.types.d.ts.map +1 -1
  220. package/dist/types/components/layout/Dashboard/DashboardParts.d.ts +1 -1
  221. package/dist/types/components/layout/Dashboard/DashboardParts.d.ts.map +1 -1
  222. package/dist/types/components/layout/ScrollArea/ScrollArea.d.ts.map +1 -1
  223. package/dist/types/components/layout/ScrollArea/ScrollArea.types.d.ts +21 -3
  224. package/dist/types/components/layout/ScrollArea/ScrollArea.types.d.ts.map +1 -1
  225. package/dist/types/components/layout/ScrollArea/ScrollViewport.d.ts +2 -0
  226. package/dist/types/components/layout/ScrollArea/ScrollViewport.d.ts.map +1 -1
  227. package/dist/types/components/layout/TableFilter/TableFilter.d.ts +1 -1
  228. package/dist/types/components/layout/TableFilter/TableFilter.d.ts.map +1 -1
  229. package/dist/types/components/layout/TableFilter/TableFilter.types.d.ts +7 -0
  230. package/dist/types/components/layout/TableFilter/TableFilter.types.d.ts.map +1 -1
  231. package/dist/types/components/layout/TableFilter/TableFilterContext.d.ts +9 -0
  232. package/dist/types/components/layout/TableFilter/TableFilterContext.d.ts.map +1 -1
  233. package/dist/types/components/navigation/Breadcrumbs/BreadcrumbEntry.d.ts +2 -0
  234. package/dist/types/components/navigation/Breadcrumbs/BreadcrumbEntry.d.ts.map +1 -1
  235. package/dist/types/components/navigation/Breadcrumbs/Breadcrumbs.d.ts.map +1 -1
  236. package/dist/types/components/navigation/Breadcrumbs/Breadcrumbs.types.d.ts +3 -0
  237. package/dist/types/components/navigation/Breadcrumbs/Breadcrumbs.types.d.ts.map +1 -1
  238. package/dist/types/components/navigation/CommandPalette/CommandPalette.d.ts.map +1 -1
  239. package/dist/types/components/navigation/CommandPalette/CommandPalette.types.d.ts +3 -0
  240. package/dist/types/components/navigation/CommandPalette/CommandPalette.types.d.ts.map +1 -1
  241. package/dist/types/components/navigation/CommandPalette/CommandPaletteResults.d.ts +2 -0
  242. package/dist/types/components/navigation/CommandPalette/CommandPaletteResults.d.ts.map +1 -1
  243. package/dist/types/components/navigation/Pagination/Pagination.d.ts.map +1 -1
  244. package/dist/types/components/navigation/Pagination/Pagination.types.d.ts +2 -0
  245. package/dist/types/components/navigation/Pagination/Pagination.types.d.ts.map +1 -1
  246. package/dist/types/components/navigation/Pagination/PaginationParts.d.ts +2 -0
  247. package/dist/types/components/navigation/Pagination/PaginationParts.d.ts.map +1 -1
  248. package/dist/types/components/navigation/Tabs/Tabs.d.ts.map +1 -1
  249. package/dist/types/components/navigation/Tabs/Tabs.types.d.ts +2 -0
  250. package/dist/types/components/navigation/Tabs/Tabs.types.d.ts.map +1 -1
  251. package/dist/types/components/utility/InfiniteScroll/InfiniteScroll.d.ts.map +1 -1
  252. package/dist/types/components/utility/InfiniteScroll/InfiniteScroll.parts.d.ts +6 -2
  253. package/dist/types/components/utility/InfiniteScroll/InfiniteScroll.parts.d.ts.map +1 -1
  254. package/dist/types/components/utility/InfiniteScroll/InfiniteScroll.types.d.ts +6 -0
  255. package/dist/types/components/utility/InfiniteScroll/InfiniteScroll.types.d.ts.map +1 -1
  256. package/dist/types/components/utility/InstallPrompt/InstallPrompt.d.ts +4 -2
  257. package/dist/types/components/utility/InstallPrompt/InstallPrompt.d.ts.map +1 -1
  258. package/dist/types/components/utility/InstallPrompt/InstallPrompt.types.d.ts +8 -7
  259. package/dist/types/components/utility/InstallPrompt/InstallPrompt.types.d.ts.map +1 -1
  260. package/dist/types/copy/data-display.d.ts +56 -0
  261. package/dist/types/copy/data-display.d.ts.map +1 -0
  262. package/dist/types/copy/feedback.d.ts +38 -0
  263. package/dist/types/copy/feedback.d.ts.map +1 -0
  264. package/dist/types/copy/form.d.ts +146 -0
  265. package/dist/types/copy/form.d.ts.map +1 -0
  266. package/dist/types/copy/layout.d.ts +18 -0
  267. package/dist/types/copy/layout.d.ts.map +1 -0
  268. package/dist/types/copy/navigation.d.ts +24 -0
  269. package/dist/types/copy/navigation.d.ts.map +1 -0
  270. package/dist/types/copy/shared.d.ts +119 -0
  271. package/dist/types/copy/shared.d.ts.map +1 -0
  272. package/dist/types/copy/utility.d.ts +35 -0
  273. package/dist/types/copy/utility.d.ts.map +1 -0
  274. package/dist/types/copy.d.ts +13 -113
  275. package/dist/types/copy.d.ts.map +1 -1
  276. package/dist/types/pt-BR.d.ts +15 -18
  277. package/dist/types/pt-BR.d.ts.map +1 -1
  278. package/dist/types/pt-BR.data-display.d.ts +13 -0
  279. package/dist/types/pt-BR.data-display.d.ts.map +1 -0
  280. package/dist/types/pt-BR.feedback.d.ts +8 -0
  281. package/dist/types/pt-BR.feedback.d.ts.map +1 -0
  282. package/dist/types/pt-BR.form.d.ts +13 -0
  283. package/dist/types/pt-BR.form.d.ts.map +1 -0
  284. package/dist/types/pt-BR.layout.d.ts +7 -0
  285. package/dist/types/pt-BR.layout.d.ts.map +1 -0
  286. package/dist/types/pt-BR.navigation.d.ts +8 -0
  287. package/dist/types/pt-BR.navigation.d.ts.map +1 -0
  288. package/dist/types/pt-BR.shared.d.ts +21 -0
  289. package/dist/types/pt-BR.shared.d.ts.map +1 -0
  290. package/dist/types/pt-BR.utility.d.ts +8 -0
  291. package/dist/types/pt-BR.utility.d.ts.map +1 -0
  292. package/dist/types/user-avatar/user-avatar.d.ts +7 -1
  293. package/dist/types/user-avatar/user-avatar.d.ts.map +1 -1
  294. package/dist/user-avatar.js +2 -2
  295. package/dist/user-avatar.js.map +1 -1
  296. package/dist/utility/InfiniteScroll.js +7 -5
  297. package/dist/utility/InfiniteScroll.js.map +1 -1
  298. package/dist/utility/InstallPrompt.js +14 -13
  299. package/dist/utility/InstallPrompt.js.map +1 -1
  300. package/package.json +1 -1
  301. package/src/components/data-display/Alert/Alert.tsx +22 -5
  302. package/src/components/data-display/Alert/Alert.types.ts +20 -10
  303. package/src/components/data-display/AsyncStateContainer/AsyncStateContainer.tsx +2 -1
  304. package/src/components/data-display/AsyncStateContainer/AsyncStateContainer.types.ts +6 -0
  305. package/src/components/data-display/Banner/Banner.tsx +5 -2
  306. package/src/components/data-display/Banner/Banner.types.ts +2 -0
  307. package/src/components/data-display/CardKit/card-actions-context.tsx +4 -0
  308. package/src/components/data-display/Carousel/Carousel.chrome.tsx +5 -0
  309. package/src/components/data-display/Carousel/Carousel.parts.tsx +4 -3
  310. package/src/components/data-display/Carousel/Carousel.types.ts +7 -0
  311. package/src/components/data-display/DataGrid/DataGrid.states.tsx +3 -3
  312. package/src/components/data-display/DataGrid/DataGrid.tsx +1 -1
  313. package/src/components/data-display/DataGrid/DataGrid.types.ts +5 -0
  314. package/src/components/data-display/DataViews/data-views-category-pill.tsx +2 -0
  315. package/src/components/data-display/DataViews/data-views-copy.ts +29 -1
  316. package/src/components/data-display/DataViews/data-views-day-input.tsx +14 -3
  317. package/src/components/data-display/DataViews/data-views-filter-panel.tsx +2 -1
  318. package/src/components/data-display/DataViews/data-views-grid-bodies.tsx +3 -0
  319. package/src/components/data-display/DataViews/data-views-grid-parts.tsx +9 -10
  320. package/src/components/data-display/DataViews/data-views-more-fields.tsx +3 -1
  321. package/src/components/data-display/DataViews/data-views-pagination.tsx +3 -0
  322. package/src/components/data-display/DataViews/data-views-range-pill.tsx +3 -1
  323. package/src/components/data-display/DataViews/data-views-table-parts.tsx +1 -0
  324. package/src/components/data-display/DataViews/data-views-toolbar.tsx +2 -0
  325. package/src/components/data-display/HoverCard/HoverCard.content.tsx +10 -2
  326. package/src/components/data-display/HoverCard/HoverCard.tsx +2 -3
  327. package/src/components/data-display/HoverCard/HoverCard.types.ts +2 -0
  328. package/src/components/data-display/Lightbox/Lightbox.tsx +3 -0
  329. package/src/components/data-display/Lightbox/Lightbox.types.ts +9 -0
  330. package/src/components/data-display/Lightbox/LightboxControls.tsx +28 -15
  331. package/src/components/data-display/Lightbox/lightbox-copy-context.tsx +42 -0
  332. package/src/components/data-display/MapPreview/MapControlBar.tsx +17 -9
  333. package/src/components/data-display/MapPreview/MapLayers.tsx +2 -0
  334. package/src/components/data-display/MapPreview/MapPreview.types.ts +10 -0
  335. package/src/components/data-display/MapPreview/MapSearchBar.tsx +4 -1
  336. package/src/components/data-display/Table/Table.tsx +7 -2
  337. package/src/components/data-display/Table/Table.types.ts +5 -0
  338. package/src/components/data-display/Table/TableStates.tsx +2 -2
  339. package/src/components/data-display/TimingDiagram/TimingDiagram.tsx +3 -2
  340. package/src/components/data-display/TimingDiagram/TimingDiagram.types.ts +3 -0
  341. package/src/components/feedback/Sonner/Sonner.tsx +15 -3
  342. package/src/components/feedback/Sonner/Sonner.types.ts +2 -0
  343. package/src/components/feedback/Sonner/SonnerToast.tsx +2 -1
  344. package/src/components/feedback/StackedModal/StackedModal.parts.tsx +10 -3
  345. package/src/components/feedback/StackedModal/StackedModal.tsx +2 -1
  346. package/src/components/feedback/StackedModal/StackedModal.types.ts +2 -0
  347. package/src/components/feedback/TutorialOverlay/TutorialOverlay.tsx +13 -1
  348. package/src/components/feedback/TutorialOverlay/TutorialOverlay.types.ts +3 -0
  349. package/src/components/feedback/TutorialOverlay/TutorialStepBody.tsx +10 -4
  350. package/src/components/form/AddressAutocomplete/AddressAutocomplete.types.ts +7 -0
  351. package/src/components/form/AddressAutocomplete/AddressAutocompleteField.tsx +2 -0
  352. package/src/components/form/AddressAutocomplete/AddressFallbackField.tsx +4 -2
  353. package/src/components/form/AddressAutocomplete/AddressInputField.tsx +13 -6
  354. package/src/components/form/Autocomplete/Autocomplete.parts.tsx +9 -6
  355. package/src/components/form/Autocomplete/Autocomplete.tsx +2 -1
  356. package/src/components/form/Autocomplete/Autocomplete.types.ts +7 -0
  357. package/src/components/form/Calendar/Calendar.tsx +2 -2
  358. package/src/components/form/Calendar/Calendar.types.ts +7 -0
  359. package/src/components/form/CodeEditor/CodeEditor.tsx +6 -4
  360. package/src/components/form/CodeEditor/CodeEditor.types.ts +7 -0
  361. package/src/components/form/CodeEditor/CodeEditorToolbar.tsx +12 -5
  362. package/src/components/form/DateRangePicker/DateRangePicker.range.ts +2 -0
  363. package/src/components/form/DateRangePicker/DateRangePicker.tsx +4 -0
  364. package/src/components/form/DateRangePicker/DateRangePicker.types.ts +11 -0
  365. package/src/components/form/DateRangePicker/DateRangePickerFields.tsx +2 -0
  366. package/src/components/form/Menubar/Menubar.toolbar.tsx +3 -1
  367. package/src/components/form/Menubar/Menubar.tsx +2 -1
  368. package/src/components/form/Menubar/Menubar.types.ts +5 -0
  369. package/src/components/form/PasswordStrength/PasswordStrength.helpers.tsx +33 -17
  370. package/src/components/form/PasswordStrength/PasswordStrength.tsx +29 -13
  371. package/src/components/form/PasswordStrength/PasswordStrength.types.ts +9 -0
  372. package/src/components/form/PhoneInput/PhoneInput.tsx +15 -5
  373. package/src/components/form/PhoneInput/PhoneInput.types.ts +7 -0
  374. package/src/components/form/SearchPalette/SearchPalette.parts.tsx +4 -1
  375. package/src/components/form/SearchPalette/SearchPalette.tsx +4 -1
  376. package/src/components/form/SearchPalette/SearchPalette.types.ts +6 -0
  377. package/src/components/form/Textarea/Textarea.tsx +6 -1
  378. package/src/components/form/Textarea/Textarea.types.ts +14 -1
  379. package/src/components/form/Textarea/TextareaRichEditor.tsx +28 -18
  380. package/src/components/form/UploadButton/UploadButton.parts.tsx +16 -7
  381. package/src/components/form/UploadButton/UploadButton.tsx +4 -1
  382. package/src/components/form/UploadButton/UploadButton.types.ts +8 -0
  383. package/src/components/layout/ContentToolbar/ContentToolbar.tsx +10 -2
  384. package/src/components/layout/ContentToolbar/ContentToolbar.types.ts +12 -0
  385. package/src/components/layout/ContentToolbar/MultiSelectDropdown.tsx +15 -4
  386. package/src/components/layout/ContentToolbar/SortByDropdown.tsx +12 -3
  387. package/src/components/layout/ContentToolbar/ViewSelector.tsx +2 -1
  388. package/src/components/layout/Dashboard/Dashboard.types.ts +4 -0
  389. package/src/components/layout/Dashboard/DashboardParts.tsx +2 -1
  390. package/src/components/layout/ScrollArea/ScrollArea.tsx +16 -3
  391. package/src/components/layout/ScrollArea/ScrollArea.types.ts +19 -4
  392. package/src/components/layout/ScrollArea/ScrollViewport.tsx +4 -1
  393. package/src/components/layout/TableFilter/TableFilter.tsx +19 -11
  394. package/src/components/layout/TableFilter/TableFilter.types.ts +8 -0
  395. package/src/components/layout/TableFilter/TableFilterContext.tsx +10 -0
  396. package/src/components/navigation/Breadcrumbs/BreadcrumbEntry.tsx +11 -4
  397. package/src/components/navigation/Breadcrumbs/Breadcrumbs.tsx +2 -0
  398. package/src/components/navigation/Breadcrumbs/Breadcrumbs.types.ts +3 -0
  399. package/src/components/navigation/CommandPalette/CommandPalette.tsx +15 -5
  400. package/src/components/navigation/CommandPalette/CommandPalette.types.ts +3 -0
  401. package/src/components/navigation/CommandPalette/CommandPaletteResults.tsx +5 -2
  402. package/src/components/navigation/Pagination/Pagination.tsx +2 -0
  403. package/src/components/navigation/Pagination/Pagination.types.ts +2 -0
  404. package/src/components/navigation/Pagination/PaginationParts.tsx +4 -1
  405. package/src/components/navigation/Tabs/Tabs.tsx +8 -3
  406. package/src/components/navigation/Tabs/Tabs.types.ts +2 -0
  407. package/src/components/utility/InfiniteScroll/InfiniteScroll.parts.tsx +4 -4
  408. package/src/components/utility/InfiniteScroll/InfiniteScroll.tsx +4 -2
  409. package/src/components/utility/InfiniteScroll/InfiniteScroll.types.ts +6 -0
  410. package/src/components/utility/InstallPrompt/InstallPrompt.tsx +18 -13
  411. package/src/components/utility/InstallPrompt/InstallPrompt.types.ts +9 -7
  412. package/src/copy/data-display.ts +60 -0
  413. package/src/copy/feedback.ts +39 -0
  414. package/src/copy/form.ts +154 -0
  415. package/src/copy/layout.ts +18 -0
  416. package/src/copy/navigation.ts +25 -0
  417. package/src/copy/shared.ts +122 -0
  418. package/src/copy/utility.ts +36 -0
  419. package/src/copy.ts +13 -117
  420. package/src/pt-BR.data-display.ts +236 -0
  421. package/src/pt-BR.feedback.ts +25 -0
  422. package/src/pt-BR.form.ts +96 -0
  423. package/src/pt-BR.layout.ts +15 -0
  424. package/src/pt-BR.navigation.ts +21 -0
  425. package/src/pt-BR.shared.ts +94 -0
  426. package/src/pt-BR.ts +15 -267
  427. package/src/pt-BR.utility.ts +21 -0
  428. package/src/user-avatar/user-avatar.tsx +8 -2
  429. package/dist/chunk-3KWD5Y5O.js.map +0 -1
  430. package/dist/chunk-CEKPLUQV.js.map +0 -1
  431. package/dist/chunk-DFVRZ3UK.js.map +0 -1
  432. package/dist/chunk-H7UAGTVW.js.map +0 -1
  433. package/dist/chunk-JP55QWVR.js.map +0 -1
  434. package/dist/chunk-NUCLEOHF.js.map +0 -1
  435. package/dist/chunk-QLBYAYUG.js.map +0 -1
  436. package/dist/chunk-QZZVHY6U.js.map +0 -1
@@ -119,6 +119,11 @@ export interface GridEditing<T = Record<string, unknown>> {
119
119
  }
120
120
 
121
121
  export interface DataGridProps<T = Record<string, unknown>> extends React.HTMLAttributes<HTMLElement> {
122
+ /**
123
+ * What an empty result reads as. REQUIRED — the fallback was the English
124
+ * "No data available", on the package every host renders.
125
+ */
126
+ emptyText: string;
122
127
  /** Dataset (client mode uses this array; server mode renders current page) */
123
128
  rows: T[];
124
129
  /** Stable row id accessor */
@@ -84,6 +84,8 @@ export function PillControl<T extends Record<string, unknown>>({
84
84
  }
85
85
  return (
86
86
  <MultiSelectDropdown
87
+ extraOptionsHeading={copy.filters.optionsHeading}
88
+ clearText={copy.filters.clear}
87
89
  clearLabel={copy.filters.clearRange(pill.label)}
88
90
  label={pill.label}
89
91
  options={pill.options}
@@ -1,4 +1,4 @@
1
- import type { CategorySelectCopy, ConfirmActionCopy } from "../../../copy";
1
+ import type { CategorySelectCopy, ConfirmActionCopy, TableFilterCopy } from "../../../copy";
2
2
  import type { SavedViewsLabels } from "../../layout/ContentToolbar/ContentToolbar.types";
3
3
  /**
4
4
  * Every word the DataViews family renders, as REQUIRED host config (FUT-760).
@@ -177,6 +177,16 @@ export interface DataViewsFiltersCopy {
177
177
  * dates alone — and getting it wrong silently drops or adds a day's rows.
178
178
  */
179
179
  rangeInclusiveNote: string;
180
+ /** The FROM half of a range, in the box itself. */
181
+ rangeStart: string;
182
+ /**
183
+ * The day field's mask, which IS its placeholder — so the expected ORDER is
184
+ * on screen before the first keystroke rather than discovered by getting it
185
+ * wrong. `dd/mm/aaaa` is one locale's order and one locale's letters.
186
+ */
187
+ dayMask: string;
188
+ /** Drop every applied filter, spelled out in the panel where there is room. */
189
+ clearAllFilters: string;
180
190
  /** The day-range presets' labels, keyed by preset id. */
181
191
  rangePresets: Readonly<Record<string, string>>;
182
192
  scopesLabel: string;
@@ -197,6 +207,11 @@ export interface DataViewsFiltersCopy {
197
207
  allOption: string;
198
208
  optionSearchPlaceholder: string;
199
209
  optionsEmpty: string;
210
+ /**
211
+ * The heading over a dropdown's EXTRA toggles — the section below the option
212
+ * list, not the list itself. It only appears when a pill supplies extras.
213
+ */
214
+ optionsHeading: string;
200
215
  }
201
216
 
202
217
  export interface DataViewsSelectionCopy {
@@ -231,6 +246,12 @@ export interface DataViewsNavCopy {
231
246
  reset: string;
232
247
  /** The inline error when a view could not be refreshed or saved. */
233
248
  updateFailed: string;
249
+ /** The dismiss on that failure's alert — a glyph with no visible label. */
250
+ dismissError: string;
251
+ /** The filter panel's back arrow — a glyph with no visible label. */
252
+ goBack: string;
253
+ /** The label in front of the page-size select. */
254
+ pageSize: string;
234
255
  saveFailed: string;
235
256
  /** Reopen the save dialog over an existing view. */
236
257
  editView: string;
@@ -265,6 +286,13 @@ export interface DataViewsCopy {
265
286
  savedViewsMenu: SavedViewsLabels;
266
287
  confirmAction: ConfirmActionCopy;
267
288
  categorySelect: CategorySelectCopy;
289
+ /**
290
+ * The filter shell's own words. DataViews mounts three of its parts — the
291
+ * panel, the keyword box and the numeric range field — so all five are on
292
+ * screen; the range's two ends are `Mínimo`/`Máximo` rather than the day
293
+ * range's `De`/`Até`, which is why this cannot be derived from `filters`.
294
+ */
295
+ tableFilter: TableFilterCopy;
268
296
  board: DataViewsBoardCopy;
269
297
  deleteView: DeleteViewCopy;
270
298
  manageViews: ManageViewsCopy;
@@ -30,6 +30,7 @@
30
30
  import { TextField } from '@mui/material';
31
31
  import React, { useEffect, useState } from 'react';
32
32
 
33
+
33
34
  /** `AAAA-MM-DD` (the wire) → `dd/mm/aaaa` (what the merchant reads). */
34
35
  export function isoToBr(iso: string): string {
35
36
  const parts = /^(\d{4})-(\d{2})-(\d{2})$/.exec(iso);
@@ -112,6 +113,7 @@ export function DayBoundInput({
112
113
  testId,
113
114
  error = false,
114
115
  describedBy,
116
+ mask,
115
117
  }: {
116
118
  label: string;
117
119
  /** The applied bound, `AAAA-MM-DD`, or undefined when this end is open. */
@@ -127,6 +129,17 @@ export function DayBoundInput({
127
129
  error?: boolean;
128
130
  /** Id of the element carrying that complaint, so it is read WITH the field. */
129
131
  describedBy?: string;
132
+ /**
133
+ * The day mask, which IS the placeholder — so the expected ORDER is on
134
+ * screen before the first keystroke rather than discovered by getting it
135
+ * wrong. `dd/mm/aaaa` is one locale's order and one locale's letters.
136
+ *
137
+ * A PROP rather than a context read: this field has two callers, and only
138
+ * one of them is inside DataViews. `DateRangePicker` mounts it standalone
139
+ * with its own message table, so a context read here throws for every host
140
+ * of that picker — which is exactly what it did.
141
+ */
142
+ mask: string;
130
143
  }): React.JSX.Element {
131
144
  const applied = value ?? '';
132
145
  const [text, setText] = useState(() => isoToBr(applied));
@@ -146,9 +159,7 @@ export function DayBoundInput({
146
159
  type="text"
147
160
  label={label}
148
161
  error={error}
149
- // The mask IS the placeholder, so the expected order is on screen before
150
- // the first keystroke rather than discovered by getting it wrong.
151
- placeholder="dd/mm/aaaa"
162
+ placeholder={mask}
152
163
  value={text}
153
164
  onChange={(event) => {
154
165
  const next = maskBrDate(event.target.value);
@@ -159,6 +159,7 @@ export function FilterDialog<T extends Record<string, unknown>>({
159
159
  open={open}
160
160
  onClose={onClose}
161
161
  navigationTitle={copy.filters.panelTitle}
162
+ backLabel={copy.nav.goBack}
162
163
  modalId={`${props.testIdPrefix}-filters`}
163
164
  maxWidth="xs"
164
165
  dataTestId={`${props.testIdPrefix}-filter-dialog`}
@@ -174,7 +175,7 @@ export function FilterDialog<T extends Record<string, unknown>>({
174
175
  data-testid={`${props.testIdPrefix}-clear-filters`}
175
176
  sx={{ fontSize: "0.75rem", color: "text.secondary" }}
176
177
  >
177
- Clear All Filters
178
+ {copy.filters.clearAllFilters}
178
179
  </Link>
179
180
  </Box>
180
181
  <FilterControls {...props} />
@@ -19,6 +19,7 @@ import { SelectAllStrip } from "./data-views-select-all-strip";
19
19
  import { ListCardGroup, type ListGroupConfig } from "./list-card-rails";
20
20
  import type { DataViewCardSelection } from "./data-views-types";
21
21
  import type { DataViewsController } from "./use-data-views-state";
22
+ import { useDataViewsCopy } from "./data-views-copy-context";
22
23
 
23
24
  /* ── Body (grid) ─────────────────────────────────────────────────────────── */
24
25
 
@@ -52,6 +53,7 @@ function GridBody<T extends Record<string, unknown>>({
52
53
  dataTestId,
53
54
  emptyState,
54
55
  }: GridBodyProps<T>): React.JSX.Element {
56
+ const copy = useDataViewsCopy();
55
57
  return (
56
58
  <Box
57
59
  sx={{
@@ -77,6 +79,7 @@ function GridBody<T extends Record<string, unknown>>({
77
79
  sorting={{ mode: sortMode, sortBy, onChangeSortBy }}
78
80
  data-testid={dataTestId}
79
81
  emptyState={emptyState}
82
+ emptyText={copy.grid.emptyFilteredTitle}
80
83
  />
81
84
  </Box>
82
85
  );
@@ -20,6 +20,7 @@ import { toOverflowFields, useFilterOverflow, type OverflowSplit } from "./data-
20
20
  import { ShellToolbar } from "./data-views-shell-toolbar";
21
21
  import type { DisplayPanelView } from "./data-views-display-panel";
22
22
  import type { DataViewExport } from "./data-views-export";
23
+ import { useDataViewsCopy } from "./data-views-copy-context";
23
24
  import { DataViewsEmpty } from "./data-views-empty";
24
25
  import { DataViewsPagination } from "./data-views-pagination";
25
26
  import type { BoardConfig } from "./DataViewsBoard";
@@ -286,6 +287,7 @@ function ShellStack<T extends Record<string, unknown>>({
286
287
  props: GridShellProps<T>;
287
288
  filters: ReturnType<typeof useGridShellFilters<T>>;
288
289
  }): React.JSX.Element {
290
+ const copy = useDataViewsCopy();
289
291
  const { c, testIdPrefix, dataTestId, scopes = [], emptyState, inlineFilters = false } = props;
290
292
  const { showInline, useModal, inlineVisible, filterProps, split, onControlOpenChange } = filters;
291
293
  // The grid renders the FILTERED empty state itself — it is the only party
@@ -299,7 +301,10 @@ function ShellStack<T extends Record<string, unknown>>({
299
301
  />
300
302
  );
301
303
  return (
302
- <TableFilter open={c.filterOpen} onOpenChange={c.setFilterOpen} hasActiveFilters={c.activeFilterCount > 0}>
304
+ <TableFilter
305
+ copy={copy.tableFilter} open={c.filterOpen} onOpenChange={c.setFilterOpen}
306
+ hasActiveFilters={c.activeFilterCount > 0}
307
+ >
303
308
  <Stack spacing={0} data-testid={dataTestId ? `${dataTestId}-container` : undefined}>
304
309
  <GridHeaderRow title={props.title} headerActions={props.headerActions} testIdPrefix={testIdPrefix} />
305
310
  <ShellToolbar
@@ -311,9 +316,7 @@ function ShellStack<T extends Record<string, unknown>>({
311
316
  filterControls={
312
317
  inlineVisible ? (
313
318
  <InlineFilterControls
314
- {...filterProps}
315
- split={split}
316
- activeFilterCount={c.activeFilterCount}
319
+ {...filterProps} split={split} activeFilterCount={c.activeFilterCount}
317
320
  onControlOpenChange={onControlOpenChange}
318
321
  />
319
322
  ) : undefined
@@ -328,12 +331,8 @@ function ShellStack<T extends Record<string, unknown>>({
328
331
  showInline={showInline}
329
332
  />
330
333
  <ScopeTabsSlot
331
- scopes={scopes}
332
- scopeFieldId={props.scopeFieldId}
333
- board={props.board}
334
- value={c.scope}
335
- onChange={c.setScope}
336
- counts={c.scopeCounts}
334
+ scopes={scopes} scopeFieldId={props.scopeFieldId} board={props.board}
335
+ value={c.scope} onChange={c.setScope} counts={c.scopeCounts}
337
336
  testIdPrefix={testIdPrefix}
338
337
  />
339
338
  <TableFilter.Layout>
@@ -60,7 +60,9 @@ function OverflowPill<T extends Record<string, unknown>>({
60
60
  if (options.length > INLINE_OPTION_LIMIT) {
61
61
  return (
62
62
  <MultiSelectDropdown
63
- clearLabel={copy.filters.clearRange(field.label)}
63
+ extraOptionsHeading={copy.filters.optionsHeading}
64
+ clearText={copy.filters.clear}
65
+ clearLabel={copy.filters.clearRange(field.label)}
64
66
  label={field.pill?.label ?? field.label}
65
67
  options={options}
66
68
  selected={new Set(values)}
@@ -4,6 +4,7 @@ import { Box } from "../../../mui/Box";
4
4
  import { Pagination } from "../../navigation/Pagination";
5
5
 
6
6
  import type { DataViewsController } from "./use-data-views-state";
7
+ import { useDataViewsCopy } from "./data-views-copy-context";
7
8
 
8
9
  /**
9
10
  * The server-mode pagination control rendered beneath the grid — shown only
@@ -17,10 +18,12 @@ export function DataViewsPagination<T extends Record<string, unknown>>({
17
18
  c: DataViewsController<T>;
18
19
  testIdPrefix: string;
19
20
  }): React.JSX.Element | null {
21
+ const copy = useDataViewsCopy();
20
22
  if (!c.serverMode || c.serverPageCount <= 1) return null;
21
23
  return (
22
24
  <Box sx={{ mt: 2, display: "flex", justifyContent: "center" }}>
23
25
  <Pagination
26
+ pageSizeLabel={copy.nav.pageSize}
24
27
  page={c.serverPage}
25
28
  count={c.serverPageCount}
26
29
  onChange={(_event, page) => c.changePage(page)}
@@ -52,9 +52,11 @@ function BoundField<T extends Record<string, unknown>>({
52
52
  onChange: (bound: number | string | undefined) => void;
53
53
  testId: string;
54
54
  }): React.JSX.Element {
55
+ const copy = useDataViewsCopy();
55
56
  if (field.kind === 'day') {
56
57
  return (
57
58
  <DayBoundInput
59
+ mask={copy.filters.dayMask}
58
60
  label={label}
59
61
  value={value == null ? undefined : String(value)}
60
62
  onChange={onChange}
@@ -102,7 +104,7 @@ export function RangeBounds<T extends Record<string, unknown>>({
102
104
  <Box sx={{ display: 'flex', alignItems: 'center', gap: 1.5 }}>
103
105
  <BoundField
104
106
  field={field}
105
- label="De"
107
+ label={copy.filters.rangeStart}
106
108
  value={value.min}
107
109
  onChange={(min) => onChange({ ...value, min })}
108
110
  testId={`${testId}-min`}
@@ -36,6 +36,7 @@ export function ViewMutationErrorAlert({
36
36
  title={copy.nav.updateFailed}
37
37
  description={error}
38
38
  closable
39
+ closeLabel={copy.nav.dismissError}
39
40
  onClose={onClose}
40
41
  data-testid={`${testIdPrefix}-views-mutation-error`}
41
42
  />
@@ -153,6 +153,8 @@ export function GridToolbar<T extends Record<string, unknown>>(props: GridToolba
153
153
  >
154
154
  <ContentToolbar
155
155
  selectAllLabel={copy.selection.selectAll}
156
+ selectAllText={copy.selection.selectAllOnPage}
157
+ clearAllText={copy.filters.clearAll}
156
158
  hasSelection={selectedRows.length > 0}
157
159
  selectedCount={selectedRows.length}
158
160
  selectAll={props.selectAll}
@@ -19,7 +19,14 @@ const testId = (base: string | undefined, suffix: string, fallback: string) =>
19
19
  export interface HoverCardContentProps
20
20
  extends Pick<
21
21
  HoverCardProps,
22
- 'variant' | 'title' | 'description' | 'avatar' | 'loading' | 'loadingComponent' | 'children'
22
+ | 'variant'
23
+ | 'title'
24
+ | 'description'
25
+ | 'avatar'
26
+ | 'loading'
27
+ | 'loadingComponent'
28
+ | 'loadingText'
29
+ | 'children'
23
30
  > {
24
31
  dataTestId?: string;
25
32
  }
@@ -113,6 +120,7 @@ const DetailedContent: React.FC<HoverCardContentProps> = ({
113
120
  export const HoverCardContent: React.FC<HoverCardContentProps> = (props) => {
114
121
  const { variant, title, description, avatar, loading, loadingComponent, children, dataTestId } =
115
122
  props;
123
+ const { loadingText } = props;
116
124
 
117
125
  if (loading) {
118
126
  return (
@@ -120,7 +128,7 @@ export const HoverCardContent: React.FC<HoverCardContentProps> = (props) => {
120
128
  {loadingComponent || (
121
129
  <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>
122
130
  <CircularProgress size={20} />
123
- <Typography variant="body2">Loading...</Typography>
131
+ <Typography variant="body2">{loadingText}</Typography>
124
132
  </Box>
125
133
  )}
126
134
  </LoadingContainer>
@@ -62,7 +62,7 @@ const offsetMargin = (placement: HoverCardPlacement, offset: number) => {
62
62
  export const HoverCard = React.forwardRef<HTMLDivElement, HoverCardProps>((props, ref) => {
63
63
  const {
64
64
  variant, glow, pulse, title, description, avatar, trigger, placement, showArrow,
65
- animation, enterDelay, exitDelay, maxWidth, loading, loadingComponent, touchEnabled,
65
+ animation, enterDelay, exitDelay, maxWidth, loading, loadingComponent, loadingText, touchEnabled,
66
66
  offset, disabled, onOpen, onClose, children, dataTestId,
67
67
  ...rest
68
68
  } = withDefaults(props, DEFAULTS) as ResolvedProps;
@@ -122,8 +122,7 @@ export const HoverCard = React.forwardRef<HTMLDivElement, HoverCardProps>((props
122
122
  >
123
123
  <CardContent sx={{ p: padding, '&:last-child': { pb: padding } }}>
124
124
  <HoverCardContent
125
- variant={variant}
126
- title={title}
125
+ loadingText={loadingText} variant={variant} title={title}
127
126
  description={description}
128
127
  avatar={avatar}
129
128
  loading={loading}
@@ -9,6 +9,8 @@ export type HoverCardPlacement =
9
9
  export type HoverCardAnimation = 'fade' | 'scale' | 'slide-up' | 'slide-down' | 'slide-left' | 'slide-right';
10
10
 
11
11
  export interface HoverCardProps extends Omit<MuiPopoverProps, 'variant' | 'open' | 'anchorEl'> {
12
+ /** What the card says while its content is in flight. REQUIRED. */
13
+ loadingText: string;
12
14
  /**
13
15
  * The variant of the hover card
14
16
  */
@@ -3,6 +3,7 @@ import React from 'react';
3
3
 
4
4
  import { makeTestId } from './Lightbox.constants';
5
5
  import { resolveLightboxProps } from './Lightbox.helpers';
6
+ import { LightboxCopyProvider } from './lightbox-copy-context';
6
7
  import type { LightboxProps, LightboxRef } from './Lightbox.types';
7
8
  import { LightboxCurrentMedia } from './LightboxCurrentMedia';
8
9
  import { LightboxOverlay } from './LightboxOverlay';
@@ -32,6 +33,7 @@ export const Lightbox = React.forwardRef<LightboxRef, LightboxProps>((componentP
32
33
  const { currentIndex, currentItem, zoom } = lightbox;
33
34
 
34
35
  return (
36
+ <LightboxCopyProvider copy={props.copy}>
35
37
  <Dialog
36
38
  open={isOpen}
37
39
  onClose={lightbox.close}
@@ -98,6 +100,7 @@ export const Lightbox = React.forwardRef<LightboxRef, LightboxProps>((componentP
98
100
  }
99
101
  />
100
102
  </Dialog>
103
+ </LightboxCopyProvider>
101
104
  );
102
105
  });
103
106
 
@@ -1,4 +1,5 @@
1
1
  import type { CSSProperties } from 'react';
2
+ import type { LightboxCopy } from '../../../copy';
2
3
 
3
4
  export interface LightboxItem {
4
5
  src: string;
@@ -12,6 +13,14 @@ export interface AutoplayConfig {
12
13
  }
13
14
 
14
15
  export interface LightboxProps {
16
+ /**
17
+ * Every word this viewer renders — all of them aria-labels on glyph-only
18
+ * controls, so this object IS what a screen-reader user hears for the whole
19
+ * component. REQUIRED: a default could only be one language read aloud to
20
+ * everybody else's users, and the sighted path looks identical either way,
21
+ * which is why the English literals survived so long.
22
+ */
23
+ copy: LightboxCopy;
15
24
  /** Controls visibility; must lock body scroll when true */
16
25
  isOpen: boolean;
17
26
  /** Fired on close button, backdrop click, Esc, and swipe-down (mobile) */
@@ -11,22 +11,26 @@ import type { FC } from 'react';
11
11
  import React from 'react';
12
12
 
13
13
  import { navButtonSx, OVERLAY_Z_INDEX, overlayButtonSx } from './Lightbox.constants';
14
+ import { useLightboxCopy } from './lightbox-copy-context';
14
15
 
15
16
  type TestId = (suffix: string) => string;
16
17
 
17
18
  export const LightboxCloseButton: FC<{ testId: TestId; onClose: () => void }> = ({
18
19
  testId,
19
20
  onClose,
20
- }) => (
21
+ }) => {
22
+ const copy = useLightboxCopy();
23
+ return (
21
24
  <IconButton
22
25
  onClick={onClose}
23
26
  sx={{ ...overlayButtonSx, position: 'absolute', top: 16, right: 16, zIndex: OVERLAY_Z_INDEX }}
24
- aria-label="Close lightbox"
27
+ aria-label={copy.close}
25
28
  data-testid={testId('close')}
26
29
  >
27
30
  <CloseIcon />
28
31
  </IconButton>
29
- );
32
+ );
33
+ };
30
34
 
31
35
  const arrowSx = (side: 'left' | 'right') =>
32
36
  ({
@@ -52,13 +56,15 @@ export const LightboxNavButtons: FC<LightboxNavButtonsProps> = ({
52
56
  atEnd,
53
57
  onPrev,
54
58
  onNext,
55
- }) => (
59
+ }) => {
60
+ const copy = useLightboxCopy();
61
+ return (
56
62
  <>
57
63
  <IconButton
58
64
  onClick={onPrev}
59
65
  disabled={atStart}
60
66
  sx={arrowSx('left')}
61
- aria-label="Previous item"
67
+ aria-label={copy.previous}
62
68
  data-testid={testId('prev')}
63
69
  >
64
70
  <PrevIcon />
@@ -68,13 +74,14 @@ export const LightboxNavButtons: FC<LightboxNavButtonsProps> = ({
68
74
  onClick={onNext}
69
75
  disabled={atEnd}
70
76
  sx={arrowSx('right')}
71
- aria-label="Next item"
77
+ aria-label={copy.next}
72
78
  data-testid={testId('next')}
73
79
  >
74
80
  <NextIcon />
75
81
  </IconButton>
76
82
  </>
77
- );
83
+ );
84
+ };
78
85
 
79
86
  export interface LightboxZoomControlsProps {
80
87
  testId: TestId;
@@ -88,7 +95,9 @@ export const LightboxZoomControls: FC<LightboxZoomControlsProps> = ({
88
95
  onZoomIn,
89
96
  onZoomOut,
90
97
  onResetZoom,
91
- }) => (
98
+ }) => {
99
+ const copy = useLightboxCopy();
100
+ return (
92
101
  <Box
93
102
  sx={{
94
103
  position: 'absolute',
@@ -101,13 +110,13 @@ export const LightboxZoomControls: FC<LightboxZoomControlsProps> = ({
101
110
  }}
102
111
  data-testid={testId('zoom-controls')}
103
112
  >
104
- <IconButton onClick={onZoomIn} sx={overlayButtonSx} aria-label="Zoom in" data-testid={testId('zoom-in')}>
113
+ <IconButton onClick={onZoomIn} sx={overlayButtonSx} aria-label={copy.zoomIn} data-testid={testId('zoom-in')}>
105
114
  <ZoomInIcon />
106
115
  </IconButton>
107
116
  <IconButton
108
117
  onClick={onZoomOut}
109
118
  sx={overlayButtonSx}
110
- aria-label="Zoom out"
119
+ aria-label={copy.zoomOut}
111
120
  data-testid={testId('zoom-out')}
112
121
  >
113
122
  <ZoomOutIcon />
@@ -115,13 +124,14 @@ export const LightboxZoomControls: FC<LightboxZoomControlsProps> = ({
115
124
  <IconButton
116
125
  onClick={onResetZoom}
117
126
  sx={overlayButtonSx}
118
- aria-label="Reset zoom"
127
+ aria-label={copy.resetZoom}
119
128
  data-testid={testId('zoom-reset')}
120
129
  >
121
130
  <ResetZoomIcon />
122
131
  </IconButton>
123
132
  </Box>
124
- );
133
+ );
134
+ };
125
135
 
126
136
  export interface LightboxAutoplayButtonProps {
127
137
  testId: TestId;
@@ -133,7 +143,9 @@ export const LightboxAutoplayButton: FC<LightboxAutoplayButtonProps> = ({
133
143
  testId,
134
144
  isAutoPlaying,
135
145
  onToggle,
136
- }) => (
146
+ }) => {
147
+ const copy = useLightboxCopy();
148
+ return (
137
149
  <IconButton
138
150
  onClick={onToggle}
139
151
  sx={{
@@ -144,9 +156,10 @@ export const LightboxAutoplayButton: FC<LightboxAutoplayButtonProps> = ({
144
156
  transform: 'translateX(-50%)',
145
157
  zIndex: OVERLAY_Z_INDEX,
146
158
  }}
147
- aria-label={isAutoPlaying ? 'Pause slideshow' : 'Start slideshow'}
159
+ aria-label={isAutoPlaying ? copy.pause : copy.play}
148
160
  data-testid={testId('autoplay')}
149
161
  >
150
162
  {isAutoPlaying ? <PauseIcon /> : <PlayIcon />}
151
163
  </IconButton>
152
- );
164
+ );
165
+ };
@@ -0,0 +1,42 @@
1
+ 'use client';
2
+
3
+ import { createContext, useContext, type ReactNode } from 'react';
4
+ import React from 'react';
5
+
6
+ import type { LightboxCopy } from '../../../copy';
7
+
8
+ /**
9
+ * The lightbox's words, for the four control components that render them.
10
+ *
11
+ * A CONTEXT rather than props: the viewer is `Lightbox` → `LightboxOverlay` →
12
+ * three separate control clusters, and threading one object down three hops is
13
+ * how a copy port comes to exist, be required, and go unread. It stays a
14
+ * single REQUIRED prop at the mount, which is the only place a host answers.
15
+ */
16
+ const LightboxCopyContext = createContext<LightboxCopy | null>(null);
17
+
18
+ export function LightboxCopyProvider({
19
+ copy,
20
+ children,
21
+ }: {
22
+ copy: LightboxCopy;
23
+ children: ReactNode;
24
+ }): React.JSX.Element {
25
+ return <LightboxCopyContext.Provider value={copy}>{children}</LightboxCopyContext.Provider>;
26
+ }
27
+
28
+ /**
29
+ * The words this viewer renders — THROWS outside a provider rather than
30
+ * falling back.
31
+ *
32
+ * Every one of them is an aria-label on a glyph, so a fallback would be the
33
+ * one failure nobody sees in review: the sighted path renders identically
34
+ * whichever language it is in.
35
+ */
36
+ export function useLightboxCopy(): LightboxCopy {
37
+ const copy = useContext(LightboxCopyContext);
38
+ if (!copy) {
39
+ throw new Error('useLightboxCopy must be rendered inside a <LightboxCopyProvider>');
40
+ }
41
+ return copy;
42
+ }
@@ -9,6 +9,7 @@ import React from 'react';
9
9
 
10
10
  import { MAX_ZOOM, MIN_ZOOM } from './MapPreview.constants';
11
11
  import type { MapType } from './MapPreview.types';
12
+ import type { MapPreviewCopy } from '../../../copy';
12
13
 
13
14
  // Kept module-local: the inferred type of a styled() component cannot be named
14
15
  // across a module boundary here (TS2742).
@@ -41,6 +42,12 @@ const ControlButton = styled(IconButton)(({ theme }) => ({
41
42
  }));
42
43
 
43
44
  export interface MapControlBarProps {
45
+ /**
46
+ * The six controls' names. Every one is a glyph with a `title` AND an
47
+ * `aria-label`, so this object is both the tooltip and what a screen reader
48
+ * reads — REQUIRED, because a default is one language for every adopter.
49
+ */
50
+ copy: MapPreviewCopy;
44
51
  zoom: number;
45
52
  mapType: MapType;
46
53
  onZoomIn: () => void;
@@ -51,6 +58,7 @@ export interface MapControlBarProps {
51
58
  }
52
59
 
53
60
  export const MapControlBar: FC<MapControlBarProps> = ({
61
+ copy,
54
62
  zoom,
55
63
  mapType,
56
64
  onZoomIn,
@@ -60,33 +68,33 @@ export const MapControlBar: FC<MapControlBarProps> = ({
60
68
  onToggleFullscreen,
61
69
  }) => (
62
70
  <MapControls data-testid="map-controls">
63
- <Tooltip title="Zoom in" placement="left">
71
+ <Tooltip title={copy.zoomIn} placement="left">
64
72
  <ControlButton
65
73
  size="small"
66
74
  onClick={onZoomIn}
67
- aria-label="Zoom in"
75
+ aria-label={copy.zoomIn}
68
76
  data-testid="zoom-in-button"
69
77
  disabled={zoom >= MAX_ZOOM}
70
78
  >
71
79
  <ZoomInIcon fontSize="small" />
72
80
  </ControlButton>
73
81
  </Tooltip>
74
- <Tooltip title="Zoom out" placement="left">
82
+ <Tooltip title={copy.zoomOut} placement="left">
75
83
  <ControlButton
76
84
  size="small"
77
85
  onClick={onZoomOut}
78
- aria-label="Zoom out"
86
+ aria-label={copy.zoomOut}
79
87
  data-testid="zoom-out-button"
80
88
  disabled={zoom <= MIN_ZOOM}
81
89
  >
82
90
  <ZoomOutIcon fontSize="small" />
83
91
  </ControlButton>
84
92
  </Tooltip>
85
- <Tooltip title="Center map" placement="left">
93
+ <Tooltip title={copy.center} placement="left">
86
94
  <ControlButton
87
95
  size="small"
88
96
  onClick={onCenter}
89
- aria-label="Center map"
97
+ aria-label={copy.center}
90
98
  data-testid="center-button"
91
99
  >
92
100
  <CenterIcon fontSize="small" />
@@ -96,17 +104,17 @@ export const MapControlBar: FC<MapControlBarProps> = ({
96
104
  <ControlButton
97
105
  size="small"
98
106
  onClick={onToggleMapType}
99
- aria-label="Change map type"
107
+ aria-label={copy.mapType}
100
108
  data-testid="map-type-button"
101
109
  >
102
110
  <LayersIcon fontSize="small" />
103
111
  </ControlButton>
104
112
  </Tooltip>
105
- <Tooltip title="Toggle fullscreen" placement="left">
113
+ <Tooltip title={copy.fullscreen} placement="left">
106
114
  <ControlButton
107
115
  size="small"
108
116
  onClick={onToggleFullscreen}
109
- aria-label="Toggle fullscreen"
117
+ aria-label={copy.fullscreen}
110
118
  data-testid="fullscreen-button"
111
119
  >
112
120
  <FullscreenIcon fontSize="small" />