@12-apps/ui 6.7.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 (370) 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-H7UAGTVW.js → chunk-TSG5C7MP.js} +4 -3
  10. package/dist/chunk-TSG5C7MP.js.map +1 -0
  11. package/dist/{chunk-NUCLEOHF.js → chunk-UNM7KFDX.js} +44 -14
  12. package/dist/chunk-UNM7KFDX.js.map +1 -0
  13. package/dist/{chunk-CEKPLUQV.js → chunk-UY7UF7IN.js} +19 -13
  14. package/dist/chunk-UY7UF7IN.js.map +1 -0
  15. package/dist/data-display/DataGrid.js +1 -1
  16. package/dist/data-display/DataViews.js +88 -65
  17. package/dist/data-display/DataViews.js.map +1 -1
  18. package/dist/data-display/HoverCard.js +4 -1
  19. package/dist/data-display/HoverCard.js.map +1 -1
  20. package/dist/data-display/Table.js +4 -2
  21. package/dist/data-display/Table.js.map +1 -1
  22. package/dist/data-display/TimingDiagram.js +3 -2
  23. package/dist/data-display/TimingDiagram.js.map +1 -1
  24. package/dist/feedback/Sonner.js +5 -4
  25. package/dist/feedback/Sonner.js.map +1 -1
  26. package/dist/feedback/StackedModal.js +1 -1
  27. package/dist/feedback/TutorialOverlay.js +19 -5
  28. package/dist/feedback/TutorialOverlay.js.map +1 -1
  29. package/dist/form/AddressAutocomplete.js +16 -8
  30. package/dist/form/AddressAutocomplete.js.map +1 -1
  31. package/dist/form/Autocomplete.js +9 -7
  32. package/dist/form/Autocomplete.js.map +1 -1
  33. package/dist/form/Calendar.js +1 -1
  34. package/dist/form/CodeEditor.js +14 -9
  35. package/dist/form/CodeEditor.js.map +1 -1
  36. package/dist/form/DateRangePicker.js +10 -3
  37. package/dist/form/DateRangePicker.js.map +1 -1
  38. package/dist/form/Menubar.js +4 -1
  39. package/dist/form/Menubar.js.map +1 -1
  40. package/dist/form/PasswordStrength.js +48 -28
  41. package/dist/form/PasswordStrength.js.map +1 -1
  42. package/dist/form/PhoneInput.js +11 -5
  43. package/dist/form/PhoneInput.js.map +1 -1
  44. package/dist/form/SearchPalette.js +4 -1
  45. package/dist/form/SearchPalette.js.map +1 -1
  46. package/dist/form/Textarea.js +21 -19
  47. package/dist/form/Textarea.js.map +1 -1
  48. package/dist/form/UploadButton.js +16 -11
  49. package/dist/form/UploadButton.js.map +1 -1
  50. package/dist/layout/ContentToolbar.js +1 -1
  51. package/dist/layout/Dashboard.js +2 -1
  52. package/dist/layout/Dashboard.js.map +1 -1
  53. package/dist/layout/ScrollArea.js +9 -3
  54. package/dist/layout/ScrollArea.js.map +1 -1
  55. package/dist/layout/TableFilter.js +1 -1
  56. package/dist/navigation/Breadcrumbs.js +9 -3
  57. package/dist/navigation/Breadcrumbs.js.map +1 -1
  58. package/dist/navigation/CommandPalette.js +20 -7
  59. package/dist/navigation/CommandPalette.js.map +1 -1
  60. package/dist/navigation/Pagination.js +1 -1
  61. package/dist/navigation/Tabs.js +7 -3
  62. package/dist/navigation/Tabs.js.map +1 -1
  63. package/dist/pt-BR.js +159 -8
  64. package/dist/pt-BR.js.map +1 -1
  65. package/dist/types/components/data-display/DataGrid/DataGrid.states.d.ts +1 -0
  66. package/dist/types/components/data-display/DataGrid/DataGrid.states.d.ts.map +1 -1
  67. package/dist/types/components/data-display/DataGrid/DataGrid.types.d.ts +5 -0
  68. package/dist/types/components/data-display/DataGrid/DataGrid.types.d.ts.map +1 -1
  69. package/dist/types/components/data-display/DataViews/data-views-category-pill.d.ts.map +1 -1
  70. package/dist/types/components/data-display/DataViews/data-views-copy.d.ts +27 -1
  71. package/dist/types/components/data-display/DataViews/data-views-copy.d.ts.map +1 -1
  72. package/dist/types/components/data-display/DataViews/data-views-day-input.d.ts +12 -1
  73. package/dist/types/components/data-display/DataViews/data-views-day-input.d.ts.map +1 -1
  74. package/dist/types/components/data-display/DataViews/data-views-filter-panel.d.ts.map +1 -1
  75. package/dist/types/components/data-display/DataViews/data-views-grid-bodies.d.ts.map +1 -1
  76. package/dist/types/components/data-display/DataViews/data-views-grid-parts.d.ts.map +1 -1
  77. package/dist/types/components/data-display/DataViews/data-views-more-fields.d.ts.map +1 -1
  78. package/dist/types/components/data-display/DataViews/data-views-pagination.d.ts.map +1 -1
  79. package/dist/types/components/data-display/DataViews/data-views-range-pill.d.ts.map +1 -1
  80. package/dist/types/components/data-display/DataViews/data-views-toolbar.d.ts.map +1 -1
  81. package/dist/types/components/data-display/HoverCard/HoverCard.content.d.ts +1 -1
  82. package/dist/types/components/data-display/HoverCard/HoverCard.content.d.ts.map +1 -1
  83. package/dist/types/components/data-display/HoverCard/HoverCard.d.ts.map +1 -1
  84. package/dist/types/components/data-display/HoverCard/HoverCard.types.d.ts +2 -0
  85. package/dist/types/components/data-display/HoverCard/HoverCard.types.d.ts.map +1 -1
  86. package/dist/types/components/data-display/Table/Table.d.ts.map +1 -1
  87. package/dist/types/components/data-display/Table/Table.types.d.ts +5 -0
  88. package/dist/types/components/data-display/Table/Table.types.d.ts.map +1 -1
  89. package/dist/types/components/data-display/Table/TableStates.d.ts +3 -1
  90. package/dist/types/components/data-display/Table/TableStates.d.ts.map +1 -1
  91. package/dist/types/components/data-display/TimingDiagram/TimingDiagram.d.ts.map +1 -1
  92. package/dist/types/components/data-display/TimingDiagram/TimingDiagram.types.d.ts +3 -0
  93. package/dist/types/components/data-display/TimingDiagram/TimingDiagram.types.d.ts.map +1 -1
  94. package/dist/types/components/feedback/Sonner/Sonner.d.ts +8 -0
  95. package/dist/types/components/feedback/Sonner/Sonner.d.ts.map +1 -1
  96. package/dist/types/components/feedback/Sonner/Sonner.types.d.ts +2 -0
  97. package/dist/types/components/feedback/Sonner/Sonner.types.d.ts.map +1 -1
  98. package/dist/types/components/feedback/Sonner/SonnerToast.d.ts.map +1 -1
  99. package/dist/types/components/feedback/StackedModal/StackedModal.d.ts.map +1 -1
  100. package/dist/types/components/feedback/StackedModal/StackedModal.parts.d.ts +2 -0
  101. package/dist/types/components/feedback/StackedModal/StackedModal.parts.d.ts.map +1 -1
  102. package/dist/types/components/feedback/StackedModal/StackedModal.types.d.ts +2 -0
  103. package/dist/types/components/feedback/StackedModal/StackedModal.types.d.ts.map +1 -1
  104. package/dist/types/components/feedback/TutorialOverlay/TutorialOverlay.d.ts.map +1 -1
  105. package/dist/types/components/feedback/TutorialOverlay/TutorialOverlay.types.d.ts +3 -0
  106. package/dist/types/components/feedback/TutorialOverlay/TutorialOverlay.types.d.ts.map +1 -1
  107. package/dist/types/components/feedback/TutorialOverlay/TutorialStepBody.d.ts +2 -0
  108. package/dist/types/components/feedback/TutorialOverlay/TutorialStepBody.d.ts.map +1 -1
  109. package/dist/types/components/form/AddressAutocomplete/AddressAutocomplete.types.d.ts +7 -0
  110. package/dist/types/components/form/AddressAutocomplete/AddressAutocomplete.types.d.ts.map +1 -1
  111. package/dist/types/components/form/AddressAutocomplete/AddressAutocompleteField.d.ts.map +1 -1
  112. package/dist/types/components/form/AddressAutocomplete/AddressFallbackField.d.ts +1 -0
  113. package/dist/types/components/form/AddressAutocomplete/AddressFallbackField.d.ts.map +1 -1
  114. package/dist/types/components/form/AddressAutocomplete/AddressInputField.d.ts +1 -0
  115. package/dist/types/components/form/AddressAutocomplete/AddressInputField.d.ts.map +1 -1
  116. package/dist/types/components/form/Autocomplete/Autocomplete.d.ts.map +1 -1
  117. package/dist/types/components/form/Autocomplete/Autocomplete.parts.d.ts +9 -3
  118. package/dist/types/components/form/Autocomplete/Autocomplete.parts.d.ts.map +1 -1
  119. package/dist/types/components/form/Autocomplete/Autocomplete.types.d.ts +7 -0
  120. package/dist/types/components/form/Autocomplete/Autocomplete.types.d.ts.map +1 -1
  121. package/dist/types/components/form/Calendar/Calendar.types.d.ts +6 -0
  122. package/dist/types/components/form/Calendar/Calendar.types.d.ts.map +1 -1
  123. package/dist/types/components/form/CodeEditor/CodeEditor.d.ts.map +1 -1
  124. package/dist/types/components/form/CodeEditor/CodeEditor.types.d.ts +7 -0
  125. package/dist/types/components/form/CodeEditor/CodeEditor.types.d.ts.map +1 -1
  126. package/dist/types/components/form/CodeEditor/CodeEditorToolbar.d.ts +2 -0
  127. package/dist/types/components/form/CodeEditor/CodeEditorToolbar.d.ts.map +1 -1
  128. package/dist/types/components/form/DateRangePicker/DateRangePicker.d.ts.map +1 -1
  129. package/dist/types/components/form/DateRangePicker/DateRangePicker.range.d.ts.map +1 -1
  130. package/dist/types/components/form/DateRangePicker/DateRangePicker.types.d.ts +11 -0
  131. package/dist/types/components/form/DateRangePicker/DateRangePicker.types.d.ts.map +1 -1
  132. package/dist/types/components/form/DateRangePicker/DateRangePickerFields.d.ts.map +1 -1
  133. package/dist/types/components/form/Menubar/Menubar.d.ts.map +1 -1
  134. package/dist/types/components/form/Menubar/Menubar.toolbar.d.ts +1 -0
  135. package/dist/types/components/form/Menubar/Menubar.toolbar.d.ts.map +1 -1
  136. package/dist/types/components/form/Menubar/Menubar.types.d.ts +5 -0
  137. package/dist/types/components/form/Menubar/Menubar.types.d.ts.map +1 -1
  138. package/dist/types/components/form/PasswordStrength/PasswordStrength.d.ts.map +1 -1
  139. package/dist/types/components/form/PasswordStrength/PasswordStrength.helpers.d.ts +4 -2
  140. package/dist/types/components/form/PasswordStrength/PasswordStrength.helpers.d.ts.map +1 -1
  141. package/dist/types/components/form/PasswordStrength/PasswordStrength.types.d.ts +8 -0
  142. package/dist/types/components/form/PasswordStrength/PasswordStrength.types.d.ts.map +1 -1
  143. package/dist/types/components/form/PhoneInput/PhoneInput.d.ts.map +1 -1
  144. package/dist/types/components/form/PhoneInput/PhoneInput.types.d.ts +7 -0
  145. package/dist/types/components/form/PhoneInput/PhoneInput.types.d.ts.map +1 -1
  146. package/dist/types/components/form/SearchPalette/SearchPalette.d.ts.map +1 -1
  147. package/dist/types/components/form/SearchPalette/SearchPalette.parts.d.ts +2 -0
  148. package/dist/types/components/form/SearchPalette/SearchPalette.parts.d.ts.map +1 -1
  149. package/dist/types/components/form/SearchPalette/SearchPalette.types.d.ts +6 -0
  150. package/dist/types/components/form/SearchPalette/SearchPalette.types.d.ts.map +1 -1
  151. package/dist/types/components/form/Textarea/Textarea.d.ts.map +1 -1
  152. package/dist/types/components/form/Textarea/Textarea.types.d.ts +16 -1
  153. package/dist/types/components/form/Textarea/Textarea.types.d.ts.map +1 -1
  154. package/dist/types/components/form/Textarea/TextareaRichEditor.d.ts +7 -0
  155. package/dist/types/components/form/Textarea/TextareaRichEditor.d.ts.map +1 -1
  156. package/dist/types/components/form/UploadButton/UploadButton.d.ts.map +1 -1
  157. package/dist/types/components/form/UploadButton/UploadButton.parts.d.ts +6 -3
  158. package/dist/types/components/form/UploadButton/UploadButton.parts.d.ts.map +1 -1
  159. package/dist/types/components/form/UploadButton/UploadButton.types.d.ts +7 -0
  160. package/dist/types/components/form/UploadButton/UploadButton.types.d.ts.map +1 -1
  161. package/dist/types/components/layout/ContentToolbar/ContentToolbar.d.ts +1 -1
  162. package/dist/types/components/layout/ContentToolbar/ContentToolbar.d.ts.map +1 -1
  163. package/dist/types/components/layout/ContentToolbar/ContentToolbar.types.d.ts +12 -0
  164. package/dist/types/components/layout/ContentToolbar/ContentToolbar.types.d.ts.map +1 -1
  165. package/dist/types/components/layout/ContentToolbar/MultiSelectDropdown.d.ts +1 -1
  166. package/dist/types/components/layout/ContentToolbar/MultiSelectDropdown.d.ts.map +1 -1
  167. package/dist/types/components/layout/ContentToolbar/SortByDropdown.d.ts +1 -1
  168. package/dist/types/components/layout/ContentToolbar/SortByDropdown.d.ts.map +1 -1
  169. package/dist/types/components/layout/ContentToolbar/ViewSelector.d.ts +1 -1
  170. package/dist/types/components/layout/ContentToolbar/ViewSelector.d.ts.map +1 -1
  171. package/dist/types/components/layout/Dashboard/Dashboard.d.ts +1 -1
  172. package/dist/types/components/layout/Dashboard/Dashboard.types.d.ts +4 -0
  173. package/dist/types/components/layout/Dashboard/Dashboard.types.d.ts.map +1 -1
  174. package/dist/types/components/layout/Dashboard/DashboardParts.d.ts +1 -1
  175. package/dist/types/components/layout/Dashboard/DashboardParts.d.ts.map +1 -1
  176. package/dist/types/components/layout/ScrollArea/ScrollArea.d.ts.map +1 -1
  177. package/dist/types/components/layout/ScrollArea/ScrollArea.types.d.ts +21 -3
  178. package/dist/types/components/layout/ScrollArea/ScrollArea.types.d.ts.map +1 -1
  179. package/dist/types/components/layout/ScrollArea/ScrollViewport.d.ts +2 -0
  180. package/dist/types/components/layout/ScrollArea/ScrollViewport.d.ts.map +1 -1
  181. package/dist/types/components/layout/TableFilter/TableFilter.d.ts +1 -1
  182. package/dist/types/components/layout/TableFilter/TableFilter.d.ts.map +1 -1
  183. package/dist/types/components/layout/TableFilter/TableFilter.types.d.ts +7 -0
  184. package/dist/types/components/layout/TableFilter/TableFilter.types.d.ts.map +1 -1
  185. package/dist/types/components/layout/TableFilter/TableFilterContext.d.ts +9 -0
  186. package/dist/types/components/layout/TableFilter/TableFilterContext.d.ts.map +1 -1
  187. package/dist/types/components/navigation/Breadcrumbs/BreadcrumbEntry.d.ts +2 -0
  188. package/dist/types/components/navigation/Breadcrumbs/BreadcrumbEntry.d.ts.map +1 -1
  189. package/dist/types/components/navigation/Breadcrumbs/Breadcrumbs.d.ts.map +1 -1
  190. package/dist/types/components/navigation/Breadcrumbs/Breadcrumbs.types.d.ts +3 -0
  191. package/dist/types/components/navigation/Breadcrumbs/Breadcrumbs.types.d.ts.map +1 -1
  192. package/dist/types/components/navigation/CommandPalette/CommandPalette.d.ts.map +1 -1
  193. package/dist/types/components/navigation/CommandPalette/CommandPalette.types.d.ts +3 -0
  194. package/dist/types/components/navigation/CommandPalette/CommandPalette.types.d.ts.map +1 -1
  195. package/dist/types/components/navigation/CommandPalette/CommandPaletteResults.d.ts +2 -0
  196. package/dist/types/components/navigation/CommandPalette/CommandPaletteResults.d.ts.map +1 -1
  197. package/dist/types/components/navigation/Pagination/Pagination.d.ts.map +1 -1
  198. package/dist/types/components/navigation/Pagination/Pagination.types.d.ts +2 -0
  199. package/dist/types/components/navigation/Pagination/Pagination.types.d.ts.map +1 -1
  200. package/dist/types/components/navigation/Pagination/PaginationParts.d.ts +2 -0
  201. package/dist/types/components/navigation/Pagination/PaginationParts.d.ts.map +1 -1
  202. package/dist/types/components/navigation/Tabs/Tabs.d.ts.map +1 -1
  203. package/dist/types/components/navigation/Tabs/Tabs.types.d.ts +2 -0
  204. package/dist/types/components/navigation/Tabs/Tabs.types.d.ts.map +1 -1
  205. package/dist/types/components/utility/InfiniteScroll/InfiniteScroll.d.ts.map +1 -1
  206. package/dist/types/components/utility/InfiniteScroll/InfiniteScroll.parts.d.ts +6 -2
  207. package/dist/types/components/utility/InfiniteScroll/InfiniteScroll.parts.d.ts.map +1 -1
  208. package/dist/types/components/utility/InfiniteScroll/InfiniteScroll.types.d.ts +6 -0
  209. package/dist/types/components/utility/InfiniteScroll/InfiniteScroll.types.d.ts.map +1 -1
  210. package/dist/types/components/utility/InstallPrompt/InstallPrompt.d.ts +4 -2
  211. package/dist/types/components/utility/InstallPrompt/InstallPrompt.d.ts.map +1 -1
  212. package/dist/types/components/utility/InstallPrompt/InstallPrompt.types.d.ts +8 -7
  213. package/dist/types/components/utility/InstallPrompt/InstallPrompt.types.d.ts.map +1 -1
  214. package/dist/types/copy/data-display.d.ts +56 -0
  215. package/dist/types/copy/data-display.d.ts.map +1 -0
  216. package/dist/types/copy/feedback.d.ts +38 -0
  217. package/dist/types/copy/feedback.d.ts.map +1 -0
  218. package/dist/types/copy/form.d.ts +146 -0
  219. package/dist/types/copy/form.d.ts.map +1 -0
  220. package/dist/types/copy/layout.d.ts +18 -0
  221. package/dist/types/copy/layout.d.ts.map +1 -0
  222. package/dist/types/copy/navigation.d.ts +24 -0
  223. package/dist/types/copy/navigation.d.ts.map +1 -0
  224. package/dist/types/copy/shared.d.ts +119 -0
  225. package/dist/types/copy/shared.d.ts.map +1 -0
  226. package/dist/types/copy/utility.d.ts +35 -0
  227. package/dist/types/copy/utility.d.ts.map +1 -0
  228. package/dist/types/copy.d.ts +12 -165
  229. package/dist/types/copy.d.ts.map +1 -1
  230. package/dist/types/pt-BR.d.ts +15 -22
  231. package/dist/types/pt-BR.d.ts.map +1 -1
  232. package/dist/types/pt-BR.data-display.d.ts +13 -0
  233. package/dist/types/pt-BR.data-display.d.ts.map +1 -0
  234. package/dist/types/pt-BR.feedback.d.ts +8 -0
  235. package/dist/types/pt-BR.feedback.d.ts.map +1 -0
  236. package/dist/types/pt-BR.form.d.ts +13 -0
  237. package/dist/types/pt-BR.form.d.ts.map +1 -0
  238. package/dist/types/pt-BR.layout.d.ts +7 -0
  239. package/dist/types/pt-BR.layout.d.ts.map +1 -0
  240. package/dist/types/pt-BR.navigation.d.ts +8 -0
  241. package/dist/types/pt-BR.navigation.d.ts.map +1 -0
  242. package/dist/types/pt-BR.shared.d.ts +21 -0
  243. package/dist/types/pt-BR.shared.d.ts.map +1 -0
  244. package/dist/types/pt-BR.utility.d.ts +8 -0
  245. package/dist/types/pt-BR.utility.d.ts.map +1 -0
  246. package/dist/types/user-avatar/user-avatar.d.ts +7 -1
  247. package/dist/types/user-avatar/user-avatar.d.ts.map +1 -1
  248. package/dist/user-avatar.js +2 -2
  249. package/dist/user-avatar.js.map +1 -1
  250. package/dist/utility/InfiniteScroll.js +7 -5
  251. package/dist/utility/InfiniteScroll.js.map +1 -1
  252. package/dist/utility/InstallPrompt.js +14 -13
  253. package/dist/utility/InstallPrompt.js.map +1 -1
  254. package/package.json +1 -1
  255. package/src/components/data-display/DataGrid/DataGrid.states.tsx +3 -3
  256. package/src/components/data-display/DataGrid/DataGrid.tsx +1 -1
  257. package/src/components/data-display/DataGrid/DataGrid.types.ts +5 -0
  258. package/src/components/data-display/DataViews/data-views-category-pill.tsx +2 -0
  259. package/src/components/data-display/DataViews/data-views-copy.ts +27 -1
  260. package/src/components/data-display/DataViews/data-views-day-input.tsx +14 -3
  261. package/src/components/data-display/DataViews/data-views-filter-panel.tsx +2 -1
  262. package/src/components/data-display/DataViews/data-views-grid-bodies.tsx +3 -0
  263. package/src/components/data-display/DataViews/data-views-grid-parts.tsx +9 -10
  264. package/src/components/data-display/DataViews/data-views-more-fields.tsx +3 -1
  265. package/src/components/data-display/DataViews/data-views-pagination.tsx +3 -0
  266. package/src/components/data-display/DataViews/data-views-range-pill.tsx +3 -1
  267. package/src/components/data-display/DataViews/data-views-toolbar.tsx +2 -0
  268. package/src/components/data-display/HoverCard/HoverCard.content.tsx +10 -2
  269. package/src/components/data-display/HoverCard/HoverCard.tsx +2 -3
  270. package/src/components/data-display/HoverCard/HoverCard.types.ts +2 -0
  271. package/src/components/data-display/Table/Table.tsx +7 -2
  272. package/src/components/data-display/Table/Table.types.ts +5 -0
  273. package/src/components/data-display/Table/TableStates.tsx +2 -2
  274. package/src/components/data-display/TimingDiagram/TimingDiagram.tsx +3 -2
  275. package/src/components/data-display/TimingDiagram/TimingDiagram.types.ts +3 -0
  276. package/src/components/feedback/Sonner/Sonner.tsx +15 -3
  277. package/src/components/feedback/Sonner/Sonner.types.ts +2 -0
  278. package/src/components/feedback/Sonner/SonnerToast.tsx +2 -1
  279. package/src/components/feedback/StackedModal/StackedModal.parts.tsx +10 -3
  280. package/src/components/feedback/StackedModal/StackedModal.tsx +2 -1
  281. package/src/components/feedback/StackedModal/StackedModal.types.ts +2 -0
  282. package/src/components/feedback/TutorialOverlay/TutorialOverlay.tsx +13 -1
  283. package/src/components/feedback/TutorialOverlay/TutorialOverlay.types.ts +3 -0
  284. package/src/components/feedback/TutorialOverlay/TutorialStepBody.tsx +10 -4
  285. package/src/components/form/AddressAutocomplete/AddressAutocomplete.types.ts +7 -0
  286. package/src/components/form/AddressAutocomplete/AddressAutocompleteField.tsx +2 -0
  287. package/src/components/form/AddressAutocomplete/AddressFallbackField.tsx +4 -2
  288. package/src/components/form/AddressAutocomplete/AddressInputField.tsx +13 -6
  289. package/src/components/form/Autocomplete/Autocomplete.parts.tsx +9 -6
  290. package/src/components/form/Autocomplete/Autocomplete.tsx +2 -1
  291. package/src/components/form/Autocomplete/Autocomplete.types.ts +7 -0
  292. package/src/components/form/Calendar/Calendar.tsx +2 -2
  293. package/src/components/form/Calendar/Calendar.types.ts +7 -0
  294. package/src/components/form/CodeEditor/CodeEditor.tsx +6 -4
  295. package/src/components/form/CodeEditor/CodeEditor.types.ts +7 -0
  296. package/src/components/form/CodeEditor/CodeEditorToolbar.tsx +12 -5
  297. package/src/components/form/DateRangePicker/DateRangePicker.range.ts +2 -0
  298. package/src/components/form/DateRangePicker/DateRangePicker.tsx +4 -0
  299. package/src/components/form/DateRangePicker/DateRangePicker.types.ts +11 -0
  300. package/src/components/form/DateRangePicker/DateRangePickerFields.tsx +2 -0
  301. package/src/components/form/Menubar/Menubar.toolbar.tsx +3 -1
  302. package/src/components/form/Menubar/Menubar.tsx +2 -1
  303. package/src/components/form/Menubar/Menubar.types.ts +5 -0
  304. package/src/components/form/PasswordStrength/PasswordStrength.helpers.tsx +33 -17
  305. package/src/components/form/PasswordStrength/PasswordStrength.tsx +29 -13
  306. package/src/components/form/PasswordStrength/PasswordStrength.types.ts +9 -0
  307. package/src/components/form/PhoneInput/PhoneInput.tsx +15 -5
  308. package/src/components/form/PhoneInput/PhoneInput.types.ts +7 -0
  309. package/src/components/form/SearchPalette/SearchPalette.parts.tsx +4 -1
  310. package/src/components/form/SearchPalette/SearchPalette.tsx +4 -1
  311. package/src/components/form/SearchPalette/SearchPalette.types.ts +6 -0
  312. package/src/components/form/Textarea/Textarea.tsx +6 -1
  313. package/src/components/form/Textarea/Textarea.types.ts +14 -1
  314. package/src/components/form/Textarea/TextareaRichEditor.tsx +28 -18
  315. package/src/components/form/UploadButton/UploadButton.parts.tsx +16 -7
  316. package/src/components/form/UploadButton/UploadButton.tsx +4 -1
  317. package/src/components/form/UploadButton/UploadButton.types.ts +8 -0
  318. package/src/components/layout/ContentToolbar/ContentToolbar.tsx +10 -2
  319. package/src/components/layout/ContentToolbar/ContentToolbar.types.ts +12 -0
  320. package/src/components/layout/ContentToolbar/MultiSelectDropdown.tsx +15 -4
  321. package/src/components/layout/ContentToolbar/SortByDropdown.tsx +12 -3
  322. package/src/components/layout/ContentToolbar/ViewSelector.tsx +2 -1
  323. package/src/components/layout/Dashboard/Dashboard.types.ts +4 -0
  324. package/src/components/layout/Dashboard/DashboardParts.tsx +2 -1
  325. package/src/components/layout/ScrollArea/ScrollArea.tsx +16 -3
  326. package/src/components/layout/ScrollArea/ScrollArea.types.ts +19 -4
  327. package/src/components/layout/ScrollArea/ScrollViewport.tsx +4 -1
  328. package/src/components/layout/TableFilter/TableFilter.tsx +19 -11
  329. package/src/components/layout/TableFilter/TableFilter.types.ts +8 -0
  330. package/src/components/layout/TableFilter/TableFilterContext.tsx +10 -0
  331. package/src/components/navigation/Breadcrumbs/BreadcrumbEntry.tsx +11 -4
  332. package/src/components/navigation/Breadcrumbs/Breadcrumbs.tsx +2 -0
  333. package/src/components/navigation/Breadcrumbs/Breadcrumbs.types.ts +3 -0
  334. package/src/components/navigation/CommandPalette/CommandPalette.tsx +15 -5
  335. package/src/components/navigation/CommandPalette/CommandPalette.types.ts +3 -0
  336. package/src/components/navigation/CommandPalette/CommandPaletteResults.tsx +5 -2
  337. package/src/components/navigation/Pagination/Pagination.tsx +2 -0
  338. package/src/components/navigation/Pagination/Pagination.types.ts +2 -0
  339. package/src/components/navigation/Pagination/PaginationParts.tsx +4 -1
  340. package/src/components/navigation/Tabs/Tabs.tsx +8 -3
  341. package/src/components/navigation/Tabs/Tabs.types.ts +2 -0
  342. package/src/components/utility/InfiniteScroll/InfiniteScroll.parts.tsx +4 -4
  343. package/src/components/utility/InfiniteScroll/InfiniteScroll.tsx +4 -2
  344. package/src/components/utility/InfiniteScroll/InfiniteScroll.types.ts +6 -0
  345. package/src/components/utility/InstallPrompt/InstallPrompt.tsx +18 -13
  346. package/src/components/utility/InstallPrompt/InstallPrompt.types.ts +9 -7
  347. package/src/copy/data-display.ts +60 -0
  348. package/src/copy/feedback.ts +39 -0
  349. package/src/copy/form.ts +154 -0
  350. package/src/copy/layout.ts +18 -0
  351. package/src/copy/navigation.ts +25 -0
  352. package/src/copy/shared.ts +122 -0
  353. package/src/copy/utility.ts +36 -0
  354. package/src/copy.ts +12 -173
  355. package/src/pt-BR.data-display.ts +236 -0
  356. package/src/pt-BR.feedback.ts +25 -0
  357. package/src/pt-BR.form.ts +96 -0
  358. package/src/pt-BR.layout.ts +15 -0
  359. package/src/pt-BR.navigation.ts +21 -0
  360. package/src/pt-BR.shared.ts +94 -0
  361. package/src/pt-BR.ts +15 -307
  362. package/src/pt-BR.utility.ts +21 -0
  363. package/src/user-avatar/user-avatar.tsx +8 -2
  364. package/dist/chunk-CEKPLUQV.js.map +0 -1
  365. package/dist/chunk-DFVRZ3UK.js.map +0 -1
  366. package/dist/chunk-H7UAGTVW.js.map +0 -1
  367. package/dist/chunk-JP55QWVR.js.map +0 -1
  368. package/dist/chunk-NUCLEOHF.js.map +0 -1
  369. package/dist/chunk-QLBYAYUG.js.map +0 -1
  370. package/dist/chunk-QZZVHY6U.js.map +0 -1
@@ -21,6 +21,7 @@ import { useCommandPalette } from './CommandPalette.hooks';
21
21
  import { PaletteResults } from './CommandPaletteResults';
22
22
  import { ShortcutChip } from './ShortcutChip';
23
23
  import type { CommandPaletteProps } from './CommandPalette.types';
24
+ import type { CommandPaletteCopy } from '../../../copy';
24
25
 
25
26
  // Styled components
26
27
  const StyledDialog = styled(Dialog)(() => ({
@@ -98,7 +99,10 @@ const PaletteSearch: React.FC<{
98
99
  </SearchContainer>
99
100
  );
100
101
 
101
- const PaletteFooter: React.FC<{ commandCount: number }> = ({ commandCount }) => {
102
+ const PaletteFooter: React.FC<{ commandCount: number; copy: CommandPaletteCopy }> = ({
103
+ commandCount,
104
+ copy,
105
+ }) => {
102
106
  const theme = useTheme();
103
107
 
104
108
  return (
@@ -112,9 +116,13 @@ const PaletteFooter: React.FC<{ commandCount: number }> = ({ commandCount }) =>
112
116
  background: alpha(theme.palette.background.default, 0.4) }}
113
117
  >
114
118
  <Box sx={{ display: 'flex', gap: 1 }}>
115
- <ShortcutChip icon={<EnterIcon sx={{ fontSize: 12 }} />} label="Execute" size="small" />
116
- <ShortcutChip label="↑↓ Navigate" size="small" />
117
- <ShortcutChip label="ESC Close" size="small" />
119
+ <ShortcutChip
120
+ icon={<EnterIcon sx={{ fontSize: 12 }} />}
121
+ label={copy.execute}
122
+ size="small"
123
+ />
124
+ <ShortcutChip label={copy.navigate} size="small" />
125
+ <ShortcutChip label={copy.close} size="small" />
118
126
  </Box>
119
127
  <Typography variant="caption" color="text.secondary">
120
128
  {commandCount} commands
@@ -124,6 +132,7 @@ const PaletteFooter: React.FC<{ commandCount: number }> = ({ commandCount }) =>
124
132
  };
125
133
 
126
134
  export const CommandPalette: FC<CommandPaletteProps> = ({
135
+ copy,
127
136
  open,
128
137
  onClose,
129
138
  commands,
@@ -177,6 +186,7 @@ export const CommandPalette: FC<CommandPaletteProps> = ({
177
186
  />
178
187
 
179
188
  <PaletteResults
189
+ copy={copy}
180
190
  listRef={listRef}
181
191
  dataTestId={dataTestId}
182
192
  searchQuery={searchQuery}
@@ -190,7 +200,7 @@ export const CommandPalette: FC<CommandPaletteProps> = ({
190
200
  onExecute={executeCommand}
191
201
  />
192
202
 
193
- <PaletteFooter commandCount={filteredCommands.length} />
203
+ <PaletteFooter copy={copy} commandCount={filteredCommands.length} />
194
204
  </PaletteContainer>
195
205
  </DialogContent>
196
206
  </StyledDialog>
@@ -1,4 +1,5 @@
1
1
  import type React from 'react';
2
+ import type { CommandPaletteCopy } from '../../../copy';
2
3
 
3
4
  export interface PaletteCommand {
4
5
  id: string;
@@ -12,6 +13,8 @@ export interface PaletteCommand {
12
13
  }
13
14
 
14
15
  export interface CommandPaletteProps {
16
+ /** The footer's keyboard hints and the empty state's nudge. REQUIRED. */
17
+ copy: CommandPaletteCopy;
15
18
  open: boolean;
16
19
  onClose: () => void;
17
20
  commands: PaletteCommand[];
@@ -5,6 +5,7 @@ import React from 'react';
5
5
 
6
6
  import { ShortcutChip } from './ShortcutChip';
7
7
  import type { PaletteCommand } from './CommandPalette.types';
8
+ import type { CommandPaletteCopy } from '../../../copy';
8
9
 
9
10
  const ResultsList = styled(List)(({ theme }) => ({
10
11
  maxHeight: 400,
@@ -90,6 +91,7 @@ const slug = (value: string) => value.toLowerCase().replace(/\s+/g, '-');
90
91
  // has to stay consistent across both sections, so it is threaded through here
91
92
  // rather than mutated from inside the render as it was before.
92
93
  export const PaletteResults: React.FC<{
94
+ copy: CommandPaletteCopy;
93
95
  listRef: React.Ref<globalThis.HTMLUListElement>;
94
96
  dataTestId?: string;
95
97
  searchQuery: string;
@@ -102,6 +104,7 @@ export const PaletteResults: React.FC<{
102
104
  onSelect: (index: number) => void;
103
105
  onExecute: (command: PaletteCommand) => void;
104
106
  }> = ({
107
+ copy,
105
108
  listRef,
106
109
  dataTestId,
107
110
  searchQuery,
@@ -121,7 +124,7 @@ export const PaletteResults: React.FC<{
121
124
  No commands found for "{searchQuery}"
122
125
  </Typography>
123
126
  <Typography variant="caption" color="text.disabled" sx={{ mt: 1 }}>
124
- Try a different search term
127
+ {copy.tryAnotherTerm}
125
128
  </Typography>
126
129
  </NoResults>
127
130
  );
@@ -160,7 +163,7 @@ export const PaletteResults: React.FC<{
160
163
  <>
161
164
  <CategoryLabel data-testid={`${dataTestId}-group-recent`}>
162
165
  <RecentIcon sx={{ fontSize: 14, mr: 0.5, verticalAlign: 'middle' }} />
163
- Recent
166
+ {copy.recent}
164
167
  </CategoryLabel>
165
168
  {recent.map(row)}
166
169
  {filteredCommands.length > recentCommandIds.length && <Divider sx={{ my: 1 }} />}
@@ -152,6 +152,7 @@ export const Pagination = React.forwardRef<HTMLElement, PaginationProps>(
152
152
  (componentProps, ref) => {
153
153
  const resolved = resolvePaginationProps(componentProps);
154
154
  const {
155
+ pageSizeLabel,
155
156
  variant,
156
157
  size,
157
158
  page,
@@ -194,6 +195,7 @@ export const Pagination = React.forwardRef<HTMLElement, PaginationProps>(
194
195
  <PaginationContainer className={className} data-testid={dataTestId || 'pagination'}>
195
196
  {showItemsPerPage && onItemsPerPageChange && (
196
197
  <ItemsPerPageSelect
198
+ pageSizeLabel={pageSizeLabel}
197
199
  value={itemsPerPage}
198
200
  options={itemsPerPageOptions}
199
201
  size={size}
@@ -3,6 +3,8 @@ import type { PaginationProps as MuiPaginationProps } from '@mui/material';
3
3
  import type { ReactNode } from 'react';
4
4
 
5
5
  export interface PaginationProps extends Omit<MuiPaginationProps, 'variant' | 'size' | 'color'> {
6
+ /** The label in front of the page-size select. REQUIRED. */
7
+ pageSizeLabel: string;
6
8
  /**
7
9
  * The variant of the pagination
8
10
  */
@@ -20,6 +20,8 @@ const PageInfoContainer = styled(Box)(({ theme }) => ({
20
20
  }));
21
21
 
22
22
  export interface ItemsPerPageSelectProps {
23
+ /** The label in front of the select. REQUIRED — it was `"Show:"`. */
24
+ pageSizeLabel: string;
23
25
  value: number;
24
26
  options: number[];
25
27
  size: string;
@@ -29,6 +31,7 @@ export interface ItemsPerPageSelectProps {
29
31
  }
30
32
 
31
33
  export const ItemsPerPageSelect: FC<ItemsPerPageSelectProps> = ({
34
+ pageSizeLabel,
32
35
  value,
33
36
  options,
34
37
  size,
@@ -38,7 +41,7 @@ export const ItemsPerPageSelect: FC<ItemsPerPageSelectProps> = ({
38
41
  }) => (
39
42
  <ItemsPerPageContainer>
40
43
  <Typography variant="body2" color="text.secondary">
41
- Show:
44
+ {pageSizeLabel}
42
45
  </Typography>
43
46
  <FormControl size="small" sx={{ minWidth: 80 }}>
44
47
  <Select
@@ -105,8 +105,9 @@ const buildTabsSx = ({
105
105
  // A tab's label: icon, text, optional close affordance, optionally badged.
106
106
  const TabLabel: React.FC<{
107
107
  item: TabItem;
108
+ closeTabLabel: string;
108
109
  onClose: (event: React.MouseEvent | React.KeyboardEvent, tabId: string) => void;
109
- }> = ({ item, onClose }) => {
110
+ }> = ({ item, closeTabLabel, onClose }) => {
110
111
  const content = (
111
112
  <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>
112
113
  {item.icon}
@@ -116,7 +117,7 @@ const TabLabel: React.FC<{
116
117
  onClick={(e) => onClose(e, item.id)}
117
118
  role="button"
118
119
  tabIndex={0}
119
- aria-label="Close tab"
120
+ aria-label={closeTabLabel}
120
121
  onKeyDown={(e) => {
121
122
  if (e.key !== 'Enter' && e.key !== ' ') return;
122
123
  onClose(e, item.id);
@@ -176,7 +177,7 @@ const TabsBar: React.FC<
176
177
  <MuiTab
177
178
  key={item.id}
178
179
  value={item.id}
179
- label={<TabLabel item={item} onClose={onCloseTab} />}
180
+ label={<TabLabel closeTabLabel={p.closeTabLabel} item={item} onClose={onCloseTab} />}
180
181
  disabled={item.disabled || p.disabled}
181
182
  className={item.className}
182
183
  id={`tab-${item.id}`}
@@ -224,6 +225,10 @@ export const Tabs = React.forwardRef<HTMLDivElement, TabsProps>(
224
225
  (tabsProps, ref) => {
225
226
  const resolved = { ...TABS_DEFAULTS, ...definedProps(tabsProps) } as TabsProps;
226
227
  const {
228
+ // Destructured only to keep it OUT of `rest`, which is spread onto the
229
+ // DOM node — `{...resolved}` below is what actually carries it to
230
+ // `TabsBar`. Same reason as `value` on the next line.
231
+ closeTabLabel: _closeTabLabel,
227
232
  value: _value,
228
233
  onChange,
229
234
  onTabClose,
@@ -50,6 +50,8 @@ export interface TabItem {
50
50
  }
51
51
 
52
52
  export interface TabsProps extends Omit<MuiTabsProps, 'variant' | 'children' | 'indicatorColor' | 'scrollButtons'> {
53
+ /** A closable tab's dismiss — a glyph with no visible label. REQUIRED. */
54
+ closeTabLabel: string;
53
55
  /**
54
56
  * The visual variant of the tabs
55
57
  */
@@ -12,19 +12,19 @@ const CENTERED = {
12
12
  p: 2,
13
13
  } as const;
14
14
 
15
- export const DefaultLoader: React.FC = () => (
15
+ export const DefaultLoader: React.FC<{ loadingText: string }> = ({ loadingText }) => (
16
16
  <Box sx={CENTERED}>
17
17
  <CircularProgress size={24} />
18
18
  <Typography variant="body2" sx={{ ml: 1 }}>
19
- Loading...
19
+ {loadingText}
20
20
  </Typography>
21
21
  </Box>
22
22
  );
23
23
 
24
- export const DefaultEndMessage: React.FC = () => (
24
+ export const DefaultEndMessage: React.FC<{ endText: string }> = ({ endText }) => (
25
25
  <Box sx={CENTERED}>
26
26
  <Typography variant="body2" color="text.secondary">
27
- No more items to load
27
+ {endText}
28
28
  </Typography>
29
29
  </Box>
30
30
  );
@@ -18,6 +18,8 @@ export const InfiniteScroll: React.FC<InfiniteScrollProps> = ({
18
18
  threshold = 150,
19
19
  loadMore,
20
20
  loader,
21
+ loadingText,
22
+ endText,
21
23
  endMessage,
22
24
  error,
23
25
  errorComponent,
@@ -45,9 +47,9 @@ export const InfiniteScroll: React.FC<InfiniteScrollProps> = ({
45
47
  // The tail of the list is one of four things: the end message, an error, a
46
48
  // spinner, or the sentinel that asks for the next page.
47
49
  const renderSentinel = () => {
48
- if (!hasMore) return endMessage || <DefaultEndMessage />;
50
+ if (!hasMore) return endMessage || <DefaultEndMessage endText={endText} />;
49
51
  if (error) return errorComponent || <DefaultError error={error} />;
50
- if (loading) return loader || <DefaultLoader />;
52
+ if (loading) return loader || <DefaultLoader loadingText={loadingText} />;
51
53
 
52
54
  return (
53
55
  <div
@@ -3,6 +3,12 @@ import type { ReactNode } from 'react';
3
3
  export type InfiniteScrollVariant = 'default' | 'reverse' | 'horizontal';
4
4
 
5
5
  export interface InfiniteScrollProps {
6
+ /**
7
+ * The two states the scroller renders on its own: fetching the next page,
8
+ * and having reached the end. REQUIRED — both were English literals.
9
+ */
10
+ loadingText: string;
11
+ endText: string;
6
12
  children: ReactNode;
7
13
  variant?: InfiniteScrollVariant;
8
14
  hasMore: boolean;
@@ -8,6 +8,7 @@ import React from 'react';
8
8
  import { installPromptStyles } from './InstallPrompt.styles';
9
9
  import type { InstallPlatform, InstallPromptProps } from './InstallPrompt.types';
10
10
  import { usePwaInstall } from './usePwaInstall';
11
+ import type { InstallPromptCopy } from '../../../copy';
11
12
 
12
13
  const StyledInstallPrompt = styled(Box)(({ theme }) => installPromptStyles(theme));
13
14
 
@@ -20,9 +21,10 @@ const testIdFor = (base: string | undefined, suffix: string) =>
20
21
  * be a control that does nothing when pressed.
21
22
  */
22
23
  const IosInstructions: React.FC<{
24
+ copy: InstallPromptCopy;
23
25
  instructions?: React.ReactNode;
24
26
  dataTestId?: string;
25
- }> = ({ instructions, dataTestId }) => (
27
+ }> = ({ copy, instructions, dataTestId }) => (
26
28
  <Typography
27
29
  className="install-prompt-description"
28
30
  variant="body2"
@@ -32,20 +34,22 @@ const IosInstructions: React.FC<{
32
34
  >
33
35
  {instructions ?? (
34
36
  <>
35
- Tap <IosShare fontSize="small" aria-label="Share" /> then &quot;Add to Home Screen&quot;
37
+ {copy.iosTapBefore} <IosShare fontSize="small" aria-label={copy.shareLabel} />{' '}
38
+ {copy.iosTapAfter}
36
39
  </>
37
40
  )}
38
41
  </Typography>
39
42
  );
40
43
 
41
44
  const InstallPromptBody: React.FC<{
45
+ copy: InstallPromptCopy;
42
46
  icon?: React.ReactNode;
43
47
  title: string;
44
48
  description?: string;
45
49
  iosInstructions?: React.ReactNode;
46
50
  platform: InstallPlatform;
47
51
  dataTestId?: string;
48
- }> = ({ icon, title, description, iosInstructions, platform, dataTestId }) => (
52
+ }> = ({ copy, icon, title, description, iosInstructions, platform, dataTestId }) => (
49
53
  <>
50
54
  <Box className="install-prompt-icon" aria-hidden="true">
51
55
  {icon ?? <InstallMobile />}
@@ -73,7 +77,7 @@ const InstallPromptBody: React.FC<{
73
77
  )}
74
78
 
75
79
  {platform === 'ios' && (
76
- <IosInstructions instructions={iosInstructions} dataTestId={dataTestId} />
80
+ <IosInstructions copy={copy} instructions={iosInstructions} dataTestId={dataTestId} />
77
81
  )}
78
82
  </Box>
79
83
  </>
@@ -118,17 +122,17 @@ const InstallPromptActions: React.FC<{
118
122
  * browser with no install route at all — so it is safe to mount unconditionally
119
123
  * in a layout rather than gating it at the call site.
120
124
  *
121
- * The copy defaults to English and every string is a prop: this package stays
122
- * locale-neutral and the consuming app supplies its own wording.
125
+ * Every string is REQUIRED host config (`copy`): this package stays
126
+ * locale-neutral and the consuming app supplies its own wording. There is no
127
+ * English default to fall through to, so a missing word is a typecheck failure
128
+ * rather than an English sentence in a pt-BR store.
123
129
  */
124
130
  export const InstallPrompt = React.forwardRef<HTMLDivElement, InstallPromptProps>(
125
131
  (
126
132
  {
127
- title = 'Install this app',
133
+ copy,
128
134
  description,
129
- installLabel = 'Install',
130
135
  iosInstructions,
131
- dismissLabel = 'Dismiss install prompt',
132
136
  icon,
133
137
  onInstall,
134
138
  onDismiss,
@@ -163,13 +167,14 @@ export const InstallPrompt = React.forwardRef<HTMLDivElement, InstallPromptProps
163
167
  ref={ref}
164
168
  className={className}
165
169
  role="region"
166
- aria-label={title}
170
+ aria-label={copy.title}
167
171
  data-testid={dataTestId}
168
172
  {...props}
169
173
  >
170
174
  <InstallPromptBody
171
175
  icon={icon}
172
- title={title}
176
+ copy={copy}
177
+ title={copy.title}
173
178
  description={description}
174
179
  iosInstructions={iosInstructions}
175
180
  platform={platform}
@@ -178,8 +183,8 @@ export const InstallPrompt = React.forwardRef<HTMLDivElement, InstallPromptProps
178
183
 
179
184
  <InstallPromptActions
180
185
  platform={platform}
181
- installLabel={installLabel}
182
- dismissLabel={dismissLabel}
186
+ installLabel={copy.installLabel}
187
+ dismissLabel={copy.dismissLabel}
183
188
  onInstallClick={handleInstall}
184
189
  onDismissClick={handleDismiss}
185
190
  dataTestId={dataTestId}
@@ -1,5 +1,7 @@
1
1
  import type { ReactNode } from 'react';
2
2
 
3
+ import type { InstallPromptCopy } from '../../../copy';
4
+
3
5
  /**
4
6
  * The Chromium-only event that makes a PWA installable from inside the page.
5
7
  * It is NOT in TypeScript's DOM lib because it is not a standard: Safari and
@@ -70,16 +72,16 @@ export interface PwaInstallState {
70
72
  }
71
73
 
72
74
  export interface InstallPromptProps {
73
- /** Headline text. */
74
- title?: string;
75
+ /**
76
+ * Every word this prompt renders. REQUIRED: this package ships no default
77
+ * copy, and the iOS half is a GESTURE instruction — a shopper who cannot
78
+ * read it cannot install the app at all.
79
+ */
80
+ copy: InstallPromptCopy;
75
81
  /** Supporting line under the title. */
76
82
  description?: string;
77
- /** Label for the install button (Chromium only). */
78
- installLabel?: string;
79
- /** Replaces the built-in iOS Share → Add to Home Screen wording. */
83
+ /** Replaces the built-in iOS Share → Add to Home Screen wording outright. */
80
84
  iosInstructions?: ReactNode;
81
- /** Accessible label for the dismiss button. */
82
- dismissLabel?: string;
83
85
  /** Leading icon. Defaults to an install glyph. */
84
86
  icon?: ReactNode;
85
87
  /** Called with the outcome after the native prompt resolves. */
@@ -0,0 +1,60 @@
1
+ /**
2
+ * The display family's words — the lightbox and map viewers, the carousel,
3
+ * the timing diagram, and the shared empty/error states.
4
+ *
5
+ * Split out of `copy.ts`, which is a barrel over this folder: one file
6
+ * listing every family is the file that grows on every port, and it stopped
7
+ * fitting the 400-line budget the rest of this package holds itself to.
8
+ */
9
+
10
+ /**
11
+ * The lightbox's controls, every one of them a glyph with no text.
12
+ *
13
+ * So this object IS what a screen-reader user hears for the whole viewer —
14
+ * which is why it shipped as English literals for so long without anyone
15
+ * noticing: the sighted path renders identically either way.
16
+ */
17
+ export interface LightboxCopy {
18
+ close: string;
19
+ previous: string;
20
+ next: string;
21
+ zoomIn: string;
22
+ zoomOut: string;
23
+ resetZoom: string;
24
+ /** The slideshow toggle, in its two states. */
25
+ play: string;
26
+ pause: string;
27
+ }
28
+
29
+ /** The map preview's control bar — same shape, same reason, as the lightbox. */
30
+ export interface MapPreviewCopy {
31
+ zoomIn: string;
32
+ zoomOut: string;
33
+ center: string;
34
+ mapType: string;
35
+ fullscreen: string;
36
+ search: string;
37
+ }
38
+
39
+ /** The carousel's two arrows, which carry a glyph and nothing else. */
40
+ export interface CarouselCopy {
41
+ previous: string;
42
+ next: string;
43
+ }
44
+
45
+ /** The request-timing diagram's own two strings. */
46
+ export interface TimingDiagramCopy {
47
+ regionLabel: string;
48
+ heading: string;
49
+ }
50
+
51
+ export interface DataStateCopy {
52
+ /** No rows at all — distinct from "no rows for these filters". */
53
+ empty: string;
54
+ loading: string;
55
+ /** The infinite scroller reached the end. */
56
+ endOfList: string;
57
+ /** An alert's and a banner's dismiss, neither of which has a visible label. */
58
+ dismissAlert: string;
59
+ dismissBanner: string;
60
+ }
@@ -0,0 +1,39 @@
1
+ /**
2
+ * The feedback family's words — the tutorial overlay and the app chrome it
3
+ * points at.
4
+ *
5
+ * Split out of `copy.ts`, which is a barrel over this folder: one file
6
+ * listing every family is the file that grows on every port, and it stopped
7
+ * fitting the 400-line budget the rest of this package holds itself to.
8
+ */
9
+
10
+ /**
11
+ * The states a data surface can be in with nothing to draw, and the dismiss
12
+ * every banner-like surface carries.
13
+ *
14
+ * One object rather than six, because these are the same four sentences the
15
+ * table, the grid, the async container, the hover card and the infinite
16
+ * scroller each rendered their own copy of.
17
+ */
18
+ /** The guided tour's four controls, and the toast/modal chrome around it. */
19
+ export interface TutorialCopy {
20
+ skip: string;
21
+ previous: string;
22
+ next: string;
23
+ restart: string;
24
+ }
25
+
26
+ /** Chrome that carries a glyph and no text, across several small surfaces. */
27
+ export interface ChromeCopy {
28
+ /** The toast's dismiss, and the stacked modal's step-back arrow. */
29
+ dismissToast: string;
30
+ goBack: string;
31
+ /** A dashboard panel's close, and a tab's. */
32
+ closePanel: string;
33
+ closeTab: string;
34
+ /** The scroll region itself, and the button that returns to its top. */
35
+ scrollRegion: string;
36
+ scrollToTop: string;
37
+ /** The share affordance in the install prompt. */
38
+ share: string;
39
+ }
@@ -0,0 +1,154 @@
1
+ /**
2
+ * The form family's words. The largest group, and the one where the leak was
3
+ * least visible: half of these are tooltips and announcements that only a
4
+ * screen reader ever receives, so a language pass over the rendered text
5
+ * walked straight past them.
6
+ *
7
+ * Split out of `copy.ts`, which is a barrel over this folder: one file
8
+ * listing every family is the file that grows on every port, and it stopped
9
+ * fitting the 400-line budget the rest of this package holds itself to.
10
+ */
11
+
12
+ /**
13
+ * The address field's three sentences. Two of them are about Google Maps
14
+ * failing to arrive — read by the shopper while the field is unusable, which
15
+ * is the worst moment to be spoken to in the wrong language.
16
+ */
17
+ export interface AddressAutocompleteCopy {
18
+ /** Placeholder while the Maps script is still loading. */
19
+ loadingMaps: string;
20
+ /** The alert shown when the script never arrived. */
21
+ mapsLoadFailed: string;
22
+ /** The pin button's tooltip, which is also its accessible name. */
23
+ useCurrentLocation: string;
24
+ }
25
+
26
+ /** What an `Autocomplete` renders that is not one of the host's own options. */
27
+ export interface AutocompleteCopy {
28
+ /** The two rows shown in place of options: fetching, and came back empty. */
29
+ loading: string;
30
+ noResults: string;
31
+ /** The input's own prompt, used when the host does not override it. */
32
+ placeholder: string;
33
+ }
34
+
35
+ /**
36
+ * The code editor's chrome. Every one of the four action buttons is a glyph
37
+ * whose tooltip IS its accessible name, so this object is the whole of what a
38
+ * screen reader reads out for the toolbar.
39
+ */
40
+ export interface CodeEditorCopy {
41
+ /** Shown while the editor bundle is still arriving. */
42
+ loading: string;
43
+ /** The badge beside the language when the buffer cannot be edited. */
44
+ readOnly: string;
45
+ /** The format button's tooltip. Carries its own keyboard shortcut. */
46
+ formatCode: string;
47
+ /** The wrap toggle, in its two states. */
48
+ enableWrap: string;
49
+ disableWrap: string;
50
+ /** The copy button, before and after it has been pressed. */
51
+ copyToClipboard: string;
52
+ copied: string;
53
+ /** The fullscreen toggle, in its two states. */
54
+ enterFullscreen: string;
55
+ exitFullscreen: string;
56
+ }
57
+
58
+ /** The five strength bands, weakest first. */
59
+ export interface PasswordStrengthBandCopy {
60
+ veryWeak: string;
61
+ weak: string;
62
+ fair: string;
63
+ good: string;
64
+ strong: string;
65
+ }
66
+
67
+ /**
68
+ * One line per requirement. `minLength` takes the configured count because the
69
+ * number is part of the sentence, and a language may not put it where English
70
+ * does.
71
+ */
72
+ export interface PasswordRequirementCopy {
73
+ minLength(count: number): string;
74
+ uppercase: string;
75
+ lowercase: string;
76
+ numbers: string;
77
+ special: string;
78
+ }
79
+
80
+ /** Everything the password meter renders. */
81
+ export interface PasswordStrengthCopy {
82
+ /** The three headings: the meter, the checklist, the tips. */
83
+ strengthHeading: string;
84
+ requirementsHeading: string;
85
+ suggestionsHeading: string;
86
+ bands: PasswordStrengthBandCopy;
87
+ /** The checklist rows, and the tip shown for each unmet one. */
88
+ requirements: PasswordRequirementCopy;
89
+ suggestions: PasswordRequirementCopy;
90
+ }
91
+
92
+ /**
93
+ * The rich-text toolbar. Ten glyph buttons, every one of them named ONLY by
94
+ * its tooltip — so this object is the whole of what a screen reader reads out
95
+ * for the editor's controls.
96
+ */
97
+ export interface RichEditorToolbarCopy {
98
+ bold: string;
99
+ italic: string;
100
+ underline: string;
101
+ bulletList: string;
102
+ numberedList: string;
103
+ quote: string;
104
+ code: string;
105
+ insertLink: string;
106
+ textColor: string;
107
+ backgroundColor: string;
108
+ /** The browser prompt the link button opens, asking for the URL. */
109
+ linkPrompt: string;
110
+ }
111
+
112
+ /**
113
+ * What the phone field says on its own account. The picker's name is the whole
114
+ * of what a screen reader gets for a control rendered as a flag and a dial
115
+ * code, and the invalid sentence is read by the shopper at the checkout.
116
+ */
117
+ export interface PhoneInputCopy {
118
+ /** The country picker's accessible name. */
119
+ selectCountry: string;
120
+ /**
121
+ * The number does not validate for the chosen country. Takes the country's
122
+ * own name, because a language may not place it where English does.
123
+ */
124
+ invalidNumber(countryName: string): string;
125
+ /** Stands in for the country's name before one has been resolved. */
126
+ unknownCountry: string;
127
+ }
128
+
129
+ /**
130
+ * What the upload control says beyond the host's own button label. Three of
131
+ * the four are announcements a screen reader reads and nothing renders — which
132
+ * is why they stayed English through every language pass.
133
+ */
134
+ export interface UploadButtonCopy {
135
+ /** The control's own label, used when the host does not override it. */
136
+ buttonLabel: string;
137
+ /** The dropzone's second line, under the host's own label. */
138
+ dropzoneHint: string;
139
+ /**
140
+ * The dropzone's accessible name, which prefixes the host's label — it says
141
+ * what KIND of control this is before saying what it uploads.
142
+ */
143
+ dropzoneRole(label: string): string;
144
+ /** The button's label while an upload is in flight. */
145
+ uploading: string;
146
+ /** Announced when a dragged file is over the zone and would be accepted. */
147
+ dropReady: string;
148
+ /** The caption under the progress bar. */
149
+ percentUploaded(percent: number): string;
150
+ /** The same progress, announced rather than shown. */
151
+ uploadInProgress(percent: number): string;
152
+ /** The component's own error, announced. Takes the message it wraps. */
153
+ errorAnnouncement(message: string): string;
154
+ }