@12-apps/ui 6.7.0 → 6.9.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 (405) hide show
  1. package/dist/chunk-3X3JVF6E.js +438 -0
  2. package/dist/chunk-3X3JVF6E.js.map +1 -0
  3. package/dist/chunk-AL3W7TXN.js +465 -0
  4. package/dist/chunk-AL3W7TXN.js.map +1 -0
  5. package/dist/{chunk-QLBYAYUG.js → chunk-KR2BP7NK.js} +4 -4
  6. package/dist/chunk-KR2BP7NK.js.map +1 -0
  7. package/dist/{chunk-DFVRZ3UK.js → chunk-KXARS46L.js} +3 -3
  8. package/dist/chunk-KXARS46L.js.map +1 -0
  9. package/dist/{chunk-JP55QWVR.js → chunk-L7L6SX64.js} +5 -2
  10. package/dist/chunk-L7L6SX64.js.map +1 -0
  11. package/dist/{chunk-QZZVHY6U.js → chunk-PVLDKXKR.js} +7 -3
  12. package/dist/chunk-PVLDKXKR.js.map +1 -0
  13. package/dist/{chunk-H7UAGTVW.js → chunk-TSG5C7MP.js} +4 -3
  14. package/dist/chunk-TSG5C7MP.js.map +1 -0
  15. package/dist/{chunk-NUCLEOHF.js → chunk-UNM7KFDX.js} +44 -14
  16. package/dist/chunk-UNM7KFDX.js.map +1 -0
  17. package/dist/{chunk-CEKPLUQV.js → chunk-UY7UF7IN.js} +19 -13
  18. package/dist/chunk-UY7UF7IN.js.map +1 -0
  19. package/dist/data-display/DataGrid.js +1 -1
  20. package/dist/data-display/DataViews.js +88 -65
  21. package/dist/data-display/DataViews.js.map +1 -1
  22. package/dist/data-display/HoverCard.js +4 -1
  23. package/dist/data-display/HoverCard.js.map +1 -1
  24. package/dist/data-display/Table.js +4 -2
  25. package/dist/data-display/Table.js.map +1 -1
  26. package/dist/data-display/TimingDiagram.js +3 -2
  27. package/dist/data-display/TimingDiagram.js.map +1 -1
  28. package/dist/en-US.js +56 -0
  29. package/dist/en-US.js.map +1 -0
  30. package/dist/feedback/Sonner.js +5 -4
  31. package/dist/feedback/Sonner.js.map +1 -1
  32. package/dist/feedback/StackedModal.js +1 -1
  33. package/dist/feedback/TutorialOverlay.js +19 -5
  34. package/dist/feedback/TutorialOverlay.js.map +1 -1
  35. package/dist/form/AddressAutocomplete.js +16 -8
  36. package/dist/form/AddressAutocomplete.js.map +1 -1
  37. package/dist/form/Autocomplete.js +9 -7
  38. package/dist/form/Autocomplete.js.map +1 -1
  39. package/dist/form/Calendar.js +1 -1
  40. package/dist/form/CodeEditor.js +14 -9
  41. package/dist/form/CodeEditor.js.map +1 -1
  42. package/dist/form/DateRangePicker.js +10 -3
  43. package/dist/form/DateRangePicker.js.map +1 -1
  44. package/dist/form/Menubar.js +4 -1
  45. package/dist/form/Menubar.js.map +1 -1
  46. package/dist/form/PasswordStrength.js +48 -28
  47. package/dist/form/PasswordStrength.js.map +1 -1
  48. package/dist/form/PhoneInput.js +11 -5
  49. package/dist/form/PhoneInput.js.map +1 -1
  50. package/dist/form/SearchPalette.js +4 -1
  51. package/dist/form/SearchPalette.js.map +1 -1
  52. package/dist/form/Textarea.js +21 -19
  53. package/dist/form/Textarea.js.map +1 -1
  54. package/dist/form/UploadButton.js +16 -11
  55. package/dist/form/UploadButton.js.map +1 -1
  56. package/dist/layout/ContentToolbar.js +1 -1
  57. package/dist/layout/Dashboard.js +2 -1
  58. package/dist/layout/Dashboard.js.map +1 -1
  59. package/dist/layout/ScrollArea.js +9 -3
  60. package/dist/layout/ScrollArea.js.map +1 -1
  61. package/dist/layout/TableFilter.js +1 -1
  62. package/dist/locales.js +171 -0
  63. package/dist/locales.js.map +1 -0
  64. package/dist/navigation/Breadcrumbs.js +9 -3
  65. package/dist/navigation/Breadcrumbs.js.map +1 -1
  66. package/dist/navigation/CommandPalette.js +20 -7
  67. package/dist/navigation/CommandPalette.js.map +1 -1
  68. package/dist/navigation/Pagination.js +1 -1
  69. package/dist/navigation/Tabs.js +7 -3
  70. package/dist/navigation/Tabs.js.map +1 -1
  71. package/dist/pt-BR.js +42 -274
  72. package/dist/pt-BR.js.map +1 -1
  73. package/dist/types/components/data-display/DataGrid/DataGrid.states.d.ts +1 -0
  74. package/dist/types/components/data-display/DataGrid/DataGrid.states.d.ts.map +1 -1
  75. package/dist/types/components/data-display/DataGrid/DataGrid.types.d.ts +5 -0
  76. package/dist/types/components/data-display/DataGrid/DataGrid.types.d.ts.map +1 -1
  77. package/dist/types/components/data-display/DataViews/data-views-category-pill.d.ts.map +1 -1
  78. package/dist/types/components/data-display/DataViews/data-views-copy.d.ts +27 -1
  79. package/dist/types/components/data-display/DataViews/data-views-copy.d.ts.map +1 -1
  80. package/dist/types/components/data-display/DataViews/data-views-day-input.d.ts +12 -1
  81. package/dist/types/components/data-display/DataViews/data-views-day-input.d.ts.map +1 -1
  82. package/dist/types/components/data-display/DataViews/data-views-filter-panel.d.ts.map +1 -1
  83. package/dist/types/components/data-display/DataViews/data-views-grid-bodies.d.ts.map +1 -1
  84. package/dist/types/components/data-display/DataViews/data-views-grid-parts.d.ts.map +1 -1
  85. package/dist/types/components/data-display/DataViews/data-views-more-fields.d.ts.map +1 -1
  86. package/dist/types/components/data-display/DataViews/data-views-pagination.d.ts.map +1 -1
  87. package/dist/types/components/data-display/DataViews/data-views-range-pill.d.ts.map +1 -1
  88. package/dist/types/components/data-display/DataViews/data-views-toolbar.d.ts.map +1 -1
  89. package/dist/types/components/data-display/HoverCard/HoverCard.content.d.ts +1 -1
  90. package/dist/types/components/data-display/HoverCard/HoverCard.content.d.ts.map +1 -1
  91. package/dist/types/components/data-display/HoverCard/HoverCard.d.ts.map +1 -1
  92. package/dist/types/components/data-display/HoverCard/HoverCard.types.d.ts +2 -0
  93. package/dist/types/components/data-display/HoverCard/HoverCard.types.d.ts.map +1 -1
  94. package/dist/types/components/data-display/Table/Table.d.ts.map +1 -1
  95. package/dist/types/components/data-display/Table/Table.types.d.ts +5 -0
  96. package/dist/types/components/data-display/Table/Table.types.d.ts.map +1 -1
  97. package/dist/types/components/data-display/Table/TableStates.d.ts +3 -1
  98. package/dist/types/components/data-display/Table/TableStates.d.ts.map +1 -1
  99. package/dist/types/components/data-display/TimingDiagram/TimingDiagram.d.ts.map +1 -1
  100. package/dist/types/components/data-display/TimingDiagram/TimingDiagram.types.d.ts +3 -0
  101. package/dist/types/components/data-display/TimingDiagram/TimingDiagram.types.d.ts.map +1 -1
  102. package/dist/types/components/feedback/Sonner/Sonner.d.ts +8 -0
  103. package/dist/types/components/feedback/Sonner/Sonner.d.ts.map +1 -1
  104. package/dist/types/components/feedback/Sonner/Sonner.types.d.ts +2 -0
  105. package/dist/types/components/feedback/Sonner/Sonner.types.d.ts.map +1 -1
  106. package/dist/types/components/feedback/Sonner/SonnerToast.d.ts.map +1 -1
  107. package/dist/types/components/feedback/StackedModal/StackedModal.d.ts.map +1 -1
  108. package/dist/types/components/feedback/StackedModal/StackedModal.parts.d.ts +2 -0
  109. package/dist/types/components/feedback/StackedModal/StackedModal.parts.d.ts.map +1 -1
  110. package/dist/types/components/feedback/StackedModal/StackedModal.types.d.ts +2 -0
  111. package/dist/types/components/feedback/StackedModal/StackedModal.types.d.ts.map +1 -1
  112. package/dist/types/components/feedback/TutorialOverlay/TutorialOverlay.d.ts.map +1 -1
  113. package/dist/types/components/feedback/TutorialOverlay/TutorialOverlay.types.d.ts +3 -0
  114. package/dist/types/components/feedback/TutorialOverlay/TutorialOverlay.types.d.ts.map +1 -1
  115. package/dist/types/components/feedback/TutorialOverlay/TutorialStepBody.d.ts +2 -0
  116. package/dist/types/components/feedback/TutorialOverlay/TutorialStepBody.d.ts.map +1 -1
  117. package/dist/types/components/form/AddressAutocomplete/AddressAutocomplete.types.d.ts +7 -0
  118. package/dist/types/components/form/AddressAutocomplete/AddressAutocomplete.types.d.ts.map +1 -1
  119. package/dist/types/components/form/AddressAutocomplete/AddressAutocompleteField.d.ts.map +1 -1
  120. package/dist/types/components/form/AddressAutocomplete/AddressFallbackField.d.ts +1 -0
  121. package/dist/types/components/form/AddressAutocomplete/AddressFallbackField.d.ts.map +1 -1
  122. package/dist/types/components/form/AddressAutocomplete/AddressInputField.d.ts +1 -0
  123. package/dist/types/components/form/AddressAutocomplete/AddressInputField.d.ts.map +1 -1
  124. package/dist/types/components/form/Autocomplete/Autocomplete.d.ts.map +1 -1
  125. package/dist/types/components/form/Autocomplete/Autocomplete.parts.d.ts +9 -3
  126. package/dist/types/components/form/Autocomplete/Autocomplete.parts.d.ts.map +1 -1
  127. package/dist/types/components/form/Autocomplete/Autocomplete.types.d.ts +7 -0
  128. package/dist/types/components/form/Autocomplete/Autocomplete.types.d.ts.map +1 -1
  129. package/dist/types/components/form/Calendar/Calendar.types.d.ts +6 -0
  130. package/dist/types/components/form/Calendar/Calendar.types.d.ts.map +1 -1
  131. package/dist/types/components/form/CodeEditor/CodeEditor.d.ts.map +1 -1
  132. package/dist/types/components/form/CodeEditor/CodeEditor.types.d.ts +7 -0
  133. package/dist/types/components/form/CodeEditor/CodeEditor.types.d.ts.map +1 -1
  134. package/dist/types/components/form/CodeEditor/CodeEditorToolbar.d.ts +2 -0
  135. package/dist/types/components/form/CodeEditor/CodeEditorToolbar.d.ts.map +1 -1
  136. package/dist/types/components/form/DateRangePicker/DateRangePicker.d.ts.map +1 -1
  137. package/dist/types/components/form/DateRangePicker/DateRangePicker.range.d.ts.map +1 -1
  138. package/dist/types/components/form/DateRangePicker/DateRangePicker.types.d.ts +11 -0
  139. package/dist/types/components/form/DateRangePicker/DateRangePicker.types.d.ts.map +1 -1
  140. package/dist/types/components/form/DateRangePicker/DateRangePickerFields.d.ts.map +1 -1
  141. package/dist/types/components/form/Menubar/Menubar.d.ts.map +1 -1
  142. package/dist/types/components/form/Menubar/Menubar.toolbar.d.ts +1 -0
  143. package/dist/types/components/form/Menubar/Menubar.toolbar.d.ts.map +1 -1
  144. package/dist/types/components/form/Menubar/Menubar.types.d.ts +5 -0
  145. package/dist/types/components/form/Menubar/Menubar.types.d.ts.map +1 -1
  146. package/dist/types/components/form/PasswordStrength/PasswordStrength.d.ts.map +1 -1
  147. package/dist/types/components/form/PasswordStrength/PasswordStrength.helpers.d.ts +4 -2
  148. package/dist/types/components/form/PasswordStrength/PasswordStrength.helpers.d.ts.map +1 -1
  149. package/dist/types/components/form/PasswordStrength/PasswordStrength.types.d.ts +8 -0
  150. package/dist/types/components/form/PasswordStrength/PasswordStrength.types.d.ts.map +1 -1
  151. package/dist/types/components/form/PhoneInput/PhoneInput.d.ts.map +1 -1
  152. package/dist/types/components/form/PhoneInput/PhoneInput.types.d.ts +7 -0
  153. package/dist/types/components/form/PhoneInput/PhoneInput.types.d.ts.map +1 -1
  154. package/dist/types/components/form/SearchPalette/SearchPalette.d.ts.map +1 -1
  155. package/dist/types/components/form/SearchPalette/SearchPalette.parts.d.ts +2 -0
  156. package/dist/types/components/form/SearchPalette/SearchPalette.parts.d.ts.map +1 -1
  157. package/dist/types/components/form/SearchPalette/SearchPalette.types.d.ts +6 -0
  158. package/dist/types/components/form/SearchPalette/SearchPalette.types.d.ts.map +1 -1
  159. package/dist/types/components/form/Textarea/Textarea.d.ts.map +1 -1
  160. package/dist/types/components/form/Textarea/Textarea.types.d.ts +16 -1
  161. package/dist/types/components/form/Textarea/Textarea.types.d.ts.map +1 -1
  162. package/dist/types/components/form/Textarea/TextareaRichEditor.d.ts +7 -0
  163. package/dist/types/components/form/Textarea/TextareaRichEditor.d.ts.map +1 -1
  164. package/dist/types/components/form/UploadButton/UploadButton.d.ts.map +1 -1
  165. package/dist/types/components/form/UploadButton/UploadButton.parts.d.ts +6 -3
  166. package/dist/types/components/form/UploadButton/UploadButton.parts.d.ts.map +1 -1
  167. package/dist/types/components/form/UploadButton/UploadButton.types.d.ts +7 -0
  168. package/dist/types/components/form/UploadButton/UploadButton.types.d.ts.map +1 -1
  169. package/dist/types/components/layout/ContentToolbar/ContentToolbar.d.ts +1 -1
  170. package/dist/types/components/layout/ContentToolbar/ContentToolbar.d.ts.map +1 -1
  171. package/dist/types/components/layout/ContentToolbar/ContentToolbar.types.d.ts +12 -0
  172. package/dist/types/components/layout/ContentToolbar/ContentToolbar.types.d.ts.map +1 -1
  173. package/dist/types/components/layout/ContentToolbar/MultiSelectDropdown.d.ts +1 -1
  174. package/dist/types/components/layout/ContentToolbar/MultiSelectDropdown.d.ts.map +1 -1
  175. package/dist/types/components/layout/ContentToolbar/SortByDropdown.d.ts +1 -1
  176. package/dist/types/components/layout/ContentToolbar/SortByDropdown.d.ts.map +1 -1
  177. package/dist/types/components/layout/ContentToolbar/ViewSelector.d.ts +1 -1
  178. package/dist/types/components/layout/ContentToolbar/ViewSelector.d.ts.map +1 -1
  179. package/dist/types/components/layout/Dashboard/Dashboard.d.ts +1 -1
  180. package/dist/types/components/layout/Dashboard/Dashboard.types.d.ts +4 -0
  181. package/dist/types/components/layout/Dashboard/Dashboard.types.d.ts.map +1 -1
  182. package/dist/types/components/layout/Dashboard/DashboardParts.d.ts +1 -1
  183. package/dist/types/components/layout/Dashboard/DashboardParts.d.ts.map +1 -1
  184. package/dist/types/components/layout/ScrollArea/ScrollArea.d.ts.map +1 -1
  185. package/dist/types/components/layout/ScrollArea/ScrollArea.types.d.ts +21 -3
  186. package/dist/types/components/layout/ScrollArea/ScrollArea.types.d.ts.map +1 -1
  187. package/dist/types/components/layout/ScrollArea/ScrollViewport.d.ts +2 -0
  188. package/dist/types/components/layout/ScrollArea/ScrollViewport.d.ts.map +1 -1
  189. package/dist/types/components/layout/TableFilter/TableFilter.d.ts +1 -1
  190. package/dist/types/components/layout/TableFilter/TableFilter.d.ts.map +1 -1
  191. package/dist/types/components/layout/TableFilter/TableFilter.types.d.ts +7 -0
  192. package/dist/types/components/layout/TableFilter/TableFilter.types.d.ts.map +1 -1
  193. package/dist/types/components/layout/TableFilter/TableFilterContext.d.ts +9 -0
  194. package/dist/types/components/layout/TableFilter/TableFilterContext.d.ts.map +1 -1
  195. package/dist/types/components/navigation/Breadcrumbs/BreadcrumbEntry.d.ts +2 -0
  196. package/dist/types/components/navigation/Breadcrumbs/BreadcrumbEntry.d.ts.map +1 -1
  197. package/dist/types/components/navigation/Breadcrumbs/Breadcrumbs.d.ts.map +1 -1
  198. package/dist/types/components/navigation/Breadcrumbs/Breadcrumbs.types.d.ts +3 -0
  199. package/dist/types/components/navigation/Breadcrumbs/Breadcrumbs.types.d.ts.map +1 -1
  200. package/dist/types/components/navigation/CommandPalette/CommandPalette.d.ts.map +1 -1
  201. package/dist/types/components/navigation/CommandPalette/CommandPalette.types.d.ts +3 -0
  202. package/dist/types/components/navigation/CommandPalette/CommandPalette.types.d.ts.map +1 -1
  203. package/dist/types/components/navigation/CommandPalette/CommandPaletteResults.d.ts +2 -0
  204. package/dist/types/components/navigation/CommandPalette/CommandPaletteResults.d.ts.map +1 -1
  205. package/dist/types/components/navigation/Pagination/Pagination.d.ts.map +1 -1
  206. package/dist/types/components/navigation/Pagination/Pagination.types.d.ts +2 -0
  207. package/dist/types/components/navigation/Pagination/Pagination.types.d.ts.map +1 -1
  208. package/dist/types/components/navigation/Pagination/PaginationParts.d.ts +2 -0
  209. package/dist/types/components/navigation/Pagination/PaginationParts.d.ts.map +1 -1
  210. package/dist/types/components/navigation/Tabs/Tabs.d.ts.map +1 -1
  211. package/dist/types/components/navigation/Tabs/Tabs.types.d.ts +2 -0
  212. package/dist/types/components/navigation/Tabs/Tabs.types.d.ts.map +1 -1
  213. package/dist/types/components/utility/InfiniteScroll/InfiniteScroll.d.ts.map +1 -1
  214. package/dist/types/components/utility/InfiniteScroll/InfiniteScroll.parts.d.ts +6 -2
  215. package/dist/types/components/utility/InfiniteScroll/InfiniteScroll.parts.d.ts.map +1 -1
  216. package/dist/types/components/utility/InfiniteScroll/InfiniteScroll.types.d.ts +6 -0
  217. package/dist/types/components/utility/InfiniteScroll/InfiniteScroll.types.d.ts.map +1 -1
  218. package/dist/types/components/utility/InstallPrompt/InstallPrompt.d.ts +4 -2
  219. package/dist/types/components/utility/InstallPrompt/InstallPrompt.d.ts.map +1 -1
  220. package/dist/types/components/utility/InstallPrompt/InstallPrompt.types.d.ts +8 -7
  221. package/dist/types/components/utility/InstallPrompt/InstallPrompt.types.d.ts.map +1 -1
  222. package/dist/types/copy/data-display.d.ts +56 -0
  223. package/dist/types/copy/data-display.d.ts.map +1 -0
  224. package/dist/types/copy/feedback.d.ts +38 -0
  225. package/dist/types/copy/feedback.d.ts.map +1 -0
  226. package/dist/types/copy/form.d.ts +146 -0
  227. package/dist/types/copy/form.d.ts.map +1 -0
  228. package/dist/types/copy/layout.d.ts +18 -0
  229. package/dist/types/copy/layout.d.ts.map +1 -0
  230. package/dist/types/copy/navigation.d.ts +24 -0
  231. package/dist/types/copy/navigation.d.ts.map +1 -0
  232. package/dist/types/copy/shared.d.ts +119 -0
  233. package/dist/types/copy/shared.d.ts.map +1 -0
  234. package/dist/types/copy/utility.d.ts +35 -0
  235. package/dist/types/copy/utility.d.ts.map +1 -0
  236. package/dist/types/copy.d.ts +12 -165
  237. package/dist/types/copy.d.ts.map +1 -1
  238. package/dist/types/en-US.d.ts +24 -0
  239. package/dist/types/en-US.d.ts.map +1 -0
  240. package/dist/types/en-US.data-display.d.ts +13 -0
  241. package/dist/types/en-US.data-display.d.ts.map +1 -0
  242. package/dist/types/en-US.feedback.d.ts +8 -0
  243. package/dist/types/en-US.feedback.d.ts.map +1 -0
  244. package/dist/types/en-US.form.d.ts +13 -0
  245. package/dist/types/en-US.form.d.ts.map +1 -0
  246. package/dist/types/en-US.layout.d.ts +7 -0
  247. package/dist/types/en-US.layout.d.ts.map +1 -0
  248. package/dist/types/en-US.navigation.d.ts +8 -0
  249. package/dist/types/en-US.navigation.d.ts.map +1 -0
  250. package/dist/types/en-US.shared.d.ts +26 -0
  251. package/dist/types/en-US.shared.d.ts.map +1 -0
  252. package/dist/types/en-US.utility.d.ts +8 -0
  253. package/dist/types/en-US.utility.d.ts.map +1 -0
  254. package/dist/types/locales.d.ts +53 -0
  255. package/dist/types/locales.d.ts.map +1 -0
  256. package/dist/types/pt-BR.d.ts +15 -22
  257. package/dist/types/pt-BR.d.ts.map +1 -1
  258. package/dist/types/pt-BR.data-display.d.ts +13 -0
  259. package/dist/types/pt-BR.data-display.d.ts.map +1 -0
  260. package/dist/types/pt-BR.feedback.d.ts +8 -0
  261. package/dist/types/pt-BR.feedback.d.ts.map +1 -0
  262. package/dist/types/pt-BR.form.d.ts +13 -0
  263. package/dist/types/pt-BR.form.d.ts.map +1 -0
  264. package/dist/types/pt-BR.layout.d.ts +7 -0
  265. package/dist/types/pt-BR.layout.d.ts.map +1 -0
  266. package/dist/types/pt-BR.navigation.d.ts +8 -0
  267. package/dist/types/pt-BR.navigation.d.ts.map +1 -0
  268. package/dist/types/pt-BR.shared.d.ts +21 -0
  269. package/dist/types/pt-BR.shared.d.ts.map +1 -0
  270. package/dist/types/pt-BR.utility.d.ts +8 -0
  271. package/dist/types/pt-BR.utility.d.ts.map +1 -0
  272. package/dist/types/user-avatar/user-avatar.d.ts +7 -1
  273. package/dist/types/user-avatar/user-avatar.d.ts.map +1 -1
  274. package/dist/user-avatar.js +2 -2
  275. package/dist/user-avatar.js.map +1 -1
  276. package/dist/utility/InfiniteScroll.js +7 -5
  277. package/dist/utility/InfiniteScroll.js.map +1 -1
  278. package/dist/utility/InstallPrompt.js +14 -13
  279. package/dist/utility/InstallPrompt.js.map +1 -1
  280. package/package.json +10 -1
  281. package/src/components/data-display/DataGrid/DataGrid.states.tsx +3 -3
  282. package/src/components/data-display/DataGrid/DataGrid.tsx +1 -1
  283. package/src/components/data-display/DataGrid/DataGrid.types.ts +5 -0
  284. package/src/components/data-display/DataViews/data-views-category-pill.tsx +2 -0
  285. package/src/components/data-display/DataViews/data-views-copy.ts +27 -1
  286. package/src/components/data-display/DataViews/data-views-day-input.tsx +14 -3
  287. package/src/components/data-display/DataViews/data-views-filter-panel.tsx +2 -1
  288. package/src/components/data-display/DataViews/data-views-grid-bodies.tsx +3 -0
  289. package/src/components/data-display/DataViews/data-views-grid-parts.tsx +9 -10
  290. package/src/components/data-display/DataViews/data-views-more-fields.tsx +3 -1
  291. package/src/components/data-display/DataViews/data-views-pagination.tsx +3 -0
  292. package/src/components/data-display/DataViews/data-views-range-pill.tsx +3 -1
  293. package/src/components/data-display/DataViews/data-views-toolbar.tsx +2 -0
  294. package/src/components/data-display/HoverCard/HoverCard.content.tsx +10 -2
  295. package/src/components/data-display/HoverCard/HoverCard.tsx +2 -3
  296. package/src/components/data-display/HoverCard/HoverCard.types.ts +2 -0
  297. package/src/components/data-display/Table/Table.tsx +7 -2
  298. package/src/components/data-display/Table/Table.types.ts +5 -0
  299. package/src/components/data-display/Table/TableStates.tsx +2 -2
  300. package/src/components/data-display/TimingDiagram/TimingDiagram.tsx +3 -2
  301. package/src/components/data-display/TimingDiagram/TimingDiagram.types.ts +3 -0
  302. package/src/components/feedback/Sonner/Sonner.tsx +15 -3
  303. package/src/components/feedback/Sonner/Sonner.types.ts +2 -0
  304. package/src/components/feedback/Sonner/SonnerToast.tsx +2 -1
  305. package/src/components/feedback/StackedModal/StackedModal.parts.tsx +10 -3
  306. package/src/components/feedback/StackedModal/StackedModal.tsx +2 -1
  307. package/src/components/feedback/StackedModal/StackedModal.types.ts +2 -0
  308. package/src/components/feedback/TutorialOverlay/TutorialOverlay.tsx +13 -1
  309. package/src/components/feedback/TutorialOverlay/TutorialOverlay.types.ts +3 -0
  310. package/src/components/feedback/TutorialOverlay/TutorialStepBody.tsx +10 -4
  311. package/src/components/form/AddressAutocomplete/AddressAutocomplete.types.ts +7 -0
  312. package/src/components/form/AddressAutocomplete/AddressAutocompleteField.tsx +2 -0
  313. package/src/components/form/AddressAutocomplete/AddressFallbackField.tsx +4 -2
  314. package/src/components/form/AddressAutocomplete/AddressInputField.tsx +13 -6
  315. package/src/components/form/Autocomplete/Autocomplete.parts.tsx +9 -6
  316. package/src/components/form/Autocomplete/Autocomplete.tsx +2 -1
  317. package/src/components/form/Autocomplete/Autocomplete.types.ts +7 -0
  318. package/src/components/form/Calendar/Calendar.tsx +2 -2
  319. package/src/components/form/Calendar/Calendar.types.ts +7 -0
  320. package/src/components/form/CodeEditor/CodeEditor.tsx +6 -4
  321. package/src/components/form/CodeEditor/CodeEditor.types.ts +7 -0
  322. package/src/components/form/CodeEditor/CodeEditorToolbar.tsx +12 -5
  323. package/src/components/form/DateRangePicker/DateRangePicker.range.ts +2 -0
  324. package/src/components/form/DateRangePicker/DateRangePicker.tsx +4 -0
  325. package/src/components/form/DateRangePicker/DateRangePicker.types.ts +11 -0
  326. package/src/components/form/DateRangePicker/DateRangePickerFields.tsx +2 -0
  327. package/src/components/form/Menubar/Menubar.toolbar.tsx +3 -1
  328. package/src/components/form/Menubar/Menubar.tsx +2 -1
  329. package/src/components/form/Menubar/Menubar.types.ts +5 -0
  330. package/src/components/form/PasswordStrength/PasswordStrength.helpers.tsx +33 -17
  331. package/src/components/form/PasswordStrength/PasswordStrength.tsx +29 -13
  332. package/src/components/form/PasswordStrength/PasswordStrength.types.ts +9 -0
  333. package/src/components/form/PhoneInput/PhoneInput.tsx +15 -5
  334. package/src/components/form/PhoneInput/PhoneInput.types.ts +7 -0
  335. package/src/components/form/SearchPalette/SearchPalette.parts.tsx +4 -1
  336. package/src/components/form/SearchPalette/SearchPalette.tsx +4 -1
  337. package/src/components/form/SearchPalette/SearchPalette.types.ts +6 -0
  338. package/src/components/form/Textarea/Textarea.tsx +6 -1
  339. package/src/components/form/Textarea/Textarea.types.ts +14 -1
  340. package/src/components/form/Textarea/TextareaRichEditor.tsx +28 -18
  341. package/src/components/form/UploadButton/UploadButton.parts.tsx +16 -7
  342. package/src/components/form/UploadButton/UploadButton.tsx +4 -1
  343. package/src/components/form/UploadButton/UploadButton.types.ts +8 -0
  344. package/src/components/layout/ContentToolbar/ContentToolbar.tsx +10 -2
  345. package/src/components/layout/ContentToolbar/ContentToolbar.types.ts +12 -0
  346. package/src/components/layout/ContentToolbar/MultiSelectDropdown.tsx +15 -4
  347. package/src/components/layout/ContentToolbar/SortByDropdown.tsx +12 -3
  348. package/src/components/layout/ContentToolbar/ViewSelector.tsx +2 -1
  349. package/src/components/layout/Dashboard/Dashboard.types.ts +4 -0
  350. package/src/components/layout/Dashboard/DashboardParts.tsx +2 -1
  351. package/src/components/layout/ScrollArea/ScrollArea.tsx +16 -3
  352. package/src/components/layout/ScrollArea/ScrollArea.types.ts +19 -4
  353. package/src/components/layout/ScrollArea/ScrollViewport.tsx +4 -1
  354. package/src/components/layout/TableFilter/TableFilter.tsx +19 -11
  355. package/src/components/layout/TableFilter/TableFilter.types.ts +8 -0
  356. package/src/components/layout/TableFilter/TableFilterContext.tsx +10 -0
  357. package/src/components/navigation/Breadcrumbs/BreadcrumbEntry.tsx +11 -4
  358. package/src/components/navigation/Breadcrumbs/Breadcrumbs.tsx +2 -0
  359. package/src/components/navigation/Breadcrumbs/Breadcrumbs.types.ts +3 -0
  360. package/src/components/navigation/CommandPalette/CommandPalette.tsx +15 -5
  361. package/src/components/navigation/CommandPalette/CommandPalette.types.ts +3 -0
  362. package/src/components/navigation/CommandPalette/CommandPaletteResults.tsx +5 -2
  363. package/src/components/navigation/Pagination/Pagination.tsx +2 -0
  364. package/src/components/navigation/Pagination/Pagination.types.ts +2 -0
  365. package/src/components/navigation/Pagination/PaginationParts.tsx +4 -1
  366. package/src/components/navigation/Tabs/Tabs.tsx +8 -3
  367. package/src/components/navigation/Tabs/Tabs.types.ts +2 -0
  368. package/src/components/utility/InfiniteScroll/InfiniteScroll.parts.tsx +4 -4
  369. package/src/components/utility/InfiniteScroll/InfiniteScroll.tsx +4 -2
  370. package/src/components/utility/InfiniteScroll/InfiniteScroll.types.ts +6 -0
  371. package/src/components/utility/InstallPrompt/InstallPrompt.tsx +18 -13
  372. package/src/components/utility/InstallPrompt/InstallPrompt.types.ts +9 -7
  373. package/src/copy/data-display.ts +60 -0
  374. package/src/copy/feedback.ts +39 -0
  375. package/src/copy/form.ts +154 -0
  376. package/src/copy/layout.ts +18 -0
  377. package/src/copy/navigation.ts +25 -0
  378. package/src/copy/shared.ts +122 -0
  379. package/src/copy/utility.ts +36 -0
  380. package/src/copy.ts +12 -173
  381. package/src/en-US.data-display.ts +244 -0
  382. package/src/en-US.feedback.ts +25 -0
  383. package/src/en-US.form.ts +103 -0
  384. package/src/en-US.layout.ts +15 -0
  385. package/src/en-US.navigation.ts +23 -0
  386. package/src/en-US.shared.ts +105 -0
  387. package/src/en-US.ts +24 -0
  388. package/src/en-US.utility.ts +24 -0
  389. package/src/locales.ts +151 -0
  390. package/src/pt-BR.data-display.ts +236 -0
  391. package/src/pt-BR.feedback.ts +25 -0
  392. package/src/pt-BR.form.ts +96 -0
  393. package/src/pt-BR.layout.ts +15 -0
  394. package/src/pt-BR.navigation.ts +21 -0
  395. package/src/pt-BR.shared.ts +94 -0
  396. package/src/pt-BR.ts +15 -307
  397. package/src/pt-BR.utility.ts +21 -0
  398. package/src/user-avatar/user-avatar.tsx +8 -2
  399. package/dist/chunk-CEKPLUQV.js.map +0 -1
  400. package/dist/chunk-DFVRZ3UK.js.map +0 -1
  401. package/dist/chunk-H7UAGTVW.js.map +0 -1
  402. package/dist/chunk-JP55QWVR.js.map +0 -1
  403. package/dist/chunk-NUCLEOHF.js.map +0 -1
  404. package/dist/chunk-QLBYAYUG.js.map +0 -1
  405. package/dist/chunk-QZZVHY6U.js.map +0 -1
@@ -0,0 +1,8 @@
1
+ /**
2
+ * The en-US pack for the navigation family. Split the same way
3
+ * `pt-BR.navigation.ts` is — see `en-US.ts` for why.
4
+ */
5
+ import type { BreadcrumbCopy, CommandPaletteCopy } from './copy';
6
+ export declare const EN_US_COMMAND_PALETTE_COPY: CommandPaletteCopy;
7
+ export declare const EN_US_BREADCRUMB_COPY: BreadcrumbCopy;
8
+ //# sourceMappingURL=en-US.navigation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"en-US.navigation.d.ts","sourceRoot":"","sources":["../../src/en-US.navigation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EACnB,MAAM,QAAQ,CAAC;AAEhB,eAAO,MAAM,0BAA0B,EAAE,kBAQxC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,cAGnC,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * The en-US pack for the shared family. Split the same way `pt-BR.shared.ts`
3
+ * is — see `en-US.ts` for why.
4
+ */
5
+ import type { SavedViewsLabels } from "./components/layout/ContentToolbar/ContentToolbar.types";
6
+ import type { CategorySelectCopy, CepFieldCopy, ConfirmActionCopy, SectionOnboardingCopy } from './copy';
7
+ export declare const EN_US_SECTION_ONBOARDING_COPY: SectionOnboardingCopy;
8
+ export declare const EN_US_CONFIRM_ACTION_COPY: ConfirmActionCopy;
9
+ export declare const EN_US_CATEGORY_SELECT_COPY: CategorySelectCopy;
10
+ /**
11
+ * CEP is Brazil's postal code and is NOT translated: the field looks up a
12
+ * Brazilian address by a Brazilian code, and calling it a "ZIP code" in the
13
+ * error would send an English-reading operator hunting for a field that does
14
+ * not exist. The surrounding sentences are English; the code's name is a proper
15
+ * noun, the same way a vendor's own field name is.
16
+ */
17
+ export declare const EN_US_CEP_FIELD_COPY: CepFieldCopy;
18
+ /**
19
+ * The saved-views dropdown's labels.
20
+ *
21
+ * Typed as the package's OWN `SavedViewsLabels` rather than a parallel shape,
22
+ * for the reason `pt-BR.shared.ts` records: that interface already named every
23
+ * string, including the seven with no diacritics the copy gate could not see.
24
+ */
25
+ export declare const EN_US_SAVED_VIEWS_LABELS: SavedViewsLabels;
26
+ //# sourceMappingURL=en-US.shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"en-US.shared.d.ts","sourceRoot":"","sources":["../../src/en-US.shared.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yDAAyD,CAAC;AAChG,OAAO,KAAK,EACV,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,QAAQ,CAAC;AAEhB,eAAO,MAAM,6BAA6B,EAAE,qBAI3C,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,iBAQvC,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,kBAqCxC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,EAAE,YAIlC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,EAAE,gBAiBtC,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * The en-US pack for the utility family. Split the same way
3
+ * `pt-BR.utility.ts` is — see `en-US.ts` for why.
4
+ */
5
+ import type { InstallPromptCopy, UserAvatarCopy } from './copy';
6
+ export declare const EN_US_INSTALL_PROMPT_COPY: InstallPromptCopy;
7
+ export declare const EN_US_USER_AVATAR_COPY: UserAvatarCopy;
8
+ //# sourceMappingURL=en-US.utility.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"en-US.utility.d.ts","sourceRoot":"","sources":["../../src/en-US.utility.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EACf,MAAM,QAAQ,CAAC;AAEhB,eAAO,MAAM,yBAAyB,EAAE,iBAUvC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,cAEpC,CAAC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Every component family's copy, in both languages, keyed by tag.
3
+ *
4
+ * One pack per family rather than one giant pack, because that is how the
5
+ * components take it: six of these are mounted independently and each takes
6
+ * what it renders, while the DataViews family threads one object through a
7
+ * context. A single blob would force a host mounting one component to state
8
+ * copy for ninety.
9
+ *
10
+ * ```ts
11
+ * import { useLocaleCopy } from '@12-apps/i18n/react';
12
+ * const copy = useLocaleCopy(LIGHTBOX_COPY);
13
+ * ```
14
+ *
15
+ * `LocalePack` is mirrored here rather than imported from `@12-apps/i18n`: this
16
+ * package is the one EVERY host renders, and giving it a dependency to carry a
17
+ * type would push that dependency onto every adopter of every other package.
18
+ * The mirror buys the same key-checking for one line.
19
+ */
20
+ import type { DataViewsCopy } from './components/data-display/DataViews/data-views-copy';
21
+ import type { SavedViewsLabels } from './components/layout/ContentToolbar/ContentToolbar.types';
22
+ import type { AddressAutocompleteCopy, AutocompleteCopy, BreadcrumbCopy, CarouselCopy, CategorySelectCopy, CepFieldCopy, ChromeCopy, CodeEditorCopy, CommandPaletteCopy, ConfirmActionCopy, DataStateCopy, InstallPromptCopy, LightboxCopy, MapPreviewCopy, PasswordStrengthCopy, PhoneInputCopy, RichEditorToolbarCopy, SectionOnboardingCopy, TableFilterCopy, TimingDiagramCopy, TutorialCopy, UploadButtonCopy, UserAvatarCopy } from './copy';
23
+ type LocalePack<T> = {
24
+ readonly 'pt-BR': T;
25
+ readonly 'en-US': T;
26
+ };
27
+ export declare const LIGHTBOX_COPY: LocalePack<LightboxCopy>;
28
+ export declare const MAP_PREVIEW_COPY: LocalePack<MapPreviewCopy>;
29
+ export declare const CAROUSEL_COPY: LocalePack<CarouselCopy>;
30
+ export declare const TIMING_DIAGRAM_COPY: LocalePack<TimingDiagramCopy>;
31
+ export declare const DATA_STATE_COPY: LocalePack<DataStateCopy>;
32
+ export declare const DATA_VIEWS_COPY: LocalePack<DataViewsCopy>;
33
+ export declare const TUTORIAL_COPY: LocalePack<TutorialCopy>;
34
+ export declare const CHROME_COPY: LocalePack<ChromeCopy>;
35
+ export declare const ADDRESS_AUTOCOMPLETE_COPY: LocalePack<AddressAutocompleteCopy>;
36
+ export declare const AUTOCOMPLETE_COPY: LocalePack<AutocompleteCopy>;
37
+ export declare const CODE_EDITOR_COPY: LocalePack<CodeEditorCopy>;
38
+ export declare const PASSWORD_STRENGTH_COPY: LocalePack<PasswordStrengthCopy>;
39
+ export declare const RICH_EDITOR_TOOLBAR_COPY: LocalePack<RichEditorToolbarCopy>;
40
+ export declare const PHONE_INPUT_COPY: LocalePack<PhoneInputCopy>;
41
+ export declare const UPLOAD_BUTTON_COPY: LocalePack<UploadButtonCopy>;
42
+ export declare const TABLE_FILTER_COPY: LocalePack<TableFilterCopy>;
43
+ export declare const COMMAND_PALETTE_COPY: LocalePack<CommandPaletteCopy>;
44
+ export declare const BREADCRUMB_COPY: LocalePack<BreadcrumbCopy>;
45
+ export declare const SECTION_ONBOARDING_COPY: LocalePack<SectionOnboardingCopy>;
46
+ export declare const CONFIRM_ACTION_COPY: LocalePack<ConfirmActionCopy>;
47
+ export declare const CATEGORY_SELECT_COPY: LocalePack<CategorySelectCopy>;
48
+ export declare const CEP_FIELD_COPY: LocalePack<CepFieldCopy>;
49
+ export declare const SAVED_VIEWS_LABELS: LocalePack<SavedViewsLabels>;
50
+ export declare const INSTALL_PROMPT_COPY: LocalePack<InstallPromptCopy>;
51
+ export declare const USER_AVATAR_COPY: LocalePack<UserAvatarCopy>;
52
+ export {};
53
+ //# sourceMappingURL=locales.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locales.d.ts","sourceRoot":"","sources":["../../src/locales.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qDAAqD,CAAC;AACzF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yDAAyD,CAAC;AAChG,OAAO,KAAK,EACV,uBAAuB,EACvB,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACf,MAAM,QAAQ,CAAC;AAIhB,KAAK,UAAU,CAAC,CAAC,IAAI;IAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;CAAE,CAAC;AAKlE,eAAO,MAAM,aAAa,0BAAqE,CAAC;AAChG,eAAO,MAAM,gBAAgB,4BAG5B,CAAC;AACF,eAAO,MAAM,aAAa,0BAAqE,CAAC;AAChG,eAAO,MAAM,mBAAmB,+BAG/B,CAAC;AACF,eAAO,MAAM,eAAe,2BAG3B,CAAC;AACF,eAAO,MAAM,eAAe,2BAG3B,CAAC;AAGF,eAAO,MAAM,aAAa,0BAAqE,CAAC;AAChG,eAAO,MAAM,WAAW,wBAA+D,CAAC;AAGxF,eAAO,MAAM,yBAAyB,qCAGrC,CAAC;AACF,eAAO,MAAM,iBAAiB,8BAG7B,CAAC;AACF,eAAO,MAAM,gBAAgB,4BAG5B,CAAC;AACF,eAAO,MAAM,sBAAsB,kCAGlC,CAAC;AACF,eAAO,MAAM,wBAAwB,mCAGpC,CAAC;AACF,eAAO,MAAM,gBAAgB,4BAG5B,CAAC;AACF,eAAO,MAAM,kBAAkB,8BAG9B,CAAC;AAGF,eAAO,MAAM,iBAAiB,6BAG7B,CAAC;AAGF,eAAO,MAAM,oBAAoB,gCAGhC,CAAC;AACF,eAAO,MAAM,eAAe,4BAG3B,CAAC;AAGF,eAAO,MAAM,uBAAuB,mCAGnC,CAAC;AACF,eAAO,MAAM,mBAAmB,+BAG/B,CAAC;AACF,eAAO,MAAM,oBAAoB,gCAGhC,CAAC;AACF,eAAO,MAAM,cAAc,0BAAuE,CAAC;AACnG,eAAO,MAAM,kBAAkB,8BAG9B,CAAC;AAGF,eAAO,MAAM,mBAAmB,+BAG/B,CAAC;AACF,eAAO,MAAM,gBAAgB,4BAG5B,CAAC"}
@@ -1,6 +1,3 @@
1
- import type { DataViewsCopy } from "./components/data-display/DataViews/data-views-copy";
2
- import type { SavedViewsLabels } from "./components/layout/ContentToolbar/ContentToolbar.types";
3
- import type { CarouselCopy, CategorySelectCopy, CepFieldCopy, ConfirmActionCopy, DataStateCopy, LightboxCopy, MapPreviewCopy, SectionOnboardingCopy, TableFilterCopy } from './copy';
4
1
  /**
5
2
  * The pt-BR packs — NAMED constants a host passes by hand, never defaults.
6
3
  *
@@ -8,25 +5,21 @@ import type { CarouselCopy, CategorySelectCopy, CepFieldCopy, ConfirmActionCopy,
8
5
  * Portuguese may ship, it may not be silent. Every sentence is VERBATIM what
9
6
  * the components used to render, so a host adopting these sees no change on
10
7
  * screen — what changes is that the words are chosen in a diff.
11
- */
12
- export declare const PT_BR_SECTION_ONBOARDING_COPY: SectionOnboardingCopy;
13
- export declare const PT_BR_CONFIRM_ACTION_COPY: ConfirmActionCopy;
14
- export declare const PT_BR_CATEGORY_SELECT_COPY: CategorySelectCopy;
15
- export declare const PT_BR_CEP_FIELD_COPY: CepFieldCopy;
16
- /**
17
- * The saved-views dropdown's labels.
18
8
  *
19
- * Typed as the package's OWN `SavedViewsLabels` rather than a parallel shape:
20
- * that interface already named every string, including the seven with no
21
- * diacritics the copy gate could not see (`Aplicar`, `Fixar na barra lateral`,
22
- * `Editar`…). The prop was `Partial<SavedViewsLabels>` with a pt-BR default —
23
- * configurable in the type, inherited in practice.
9
+ * A BARREL over `./pt-BR.<family>.ts`, one module per component family. It was
10
+ * one file until the port made it 471 lines against this package's own
11
+ * 400-line budget — and the single list of every pack is exactly the file that
12
+ * grows on every port. Each part keeps `pt-BR` in its own FILENAME rather than
13
+ * sitting in a `pt-BR/` folder, because the gate's exemption is a filename
14
+ * rule (`NAMED_PACK` in `scripts/lib/shipped-source.mjs`): a folder would have
15
+ * put seven files full of Portuguese back in scope. Consumers are unaffected —
16
+ * `@12-apps/ui/pt-BR` still resolves here.
24
17
  */
25
- export declare const PT_BR_SAVED_VIEWS_LABELS: SavedViewsLabels;
26
- export declare const PT_BR_TABLE_FILTER_COPY: TableFilterCopy;
27
- export declare const PT_BR_LIGHTBOX_COPY: LightboxCopy;
28
- export declare const PT_BR_MAP_PREVIEW_COPY: MapPreviewCopy;
29
- export declare const PT_BR_CAROUSEL_COPY: CarouselCopy;
30
- export declare const PT_BR_DATA_STATE_COPY: DataStateCopy;
31
- export declare const PT_BR_DATA_VIEWS_COPY: DataViewsCopy;
18
+ export * from './pt-BR.data-display';
19
+ export * from './pt-BR.feedback';
20
+ export * from './pt-BR.form';
21
+ export * from './pt-BR.layout';
22
+ export * from './pt-BR.navigation';
23
+ export * from './pt-BR.shared';
24
+ export * from './pt-BR.utility';
32
25
  //# sourceMappingURL=pt-BR.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pt-BR.d.ts","sourceRoot":"","sources":["../../src/pt-BR.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qDAAqD,CAAC;AACzF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yDAAyD,CAAC;AAChG,OAAO,KAAK,EACV,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,cAAc,EACd,qBAAqB,EACrB,eAAe,EAChB,MAAM,QAAQ,CAAC;AAEhB;;;;;;;GAOG;AACH,eAAO,MAAM,6BAA6B,EAAE,qBAI3C,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,iBAKvC,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,kBAkCxC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,YAIlC,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,EAAE,gBAiBtC,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,eAIrC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,YASjC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,cAOpC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,YAGjC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,aAMnC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,aA2KnC,CAAC"}
1
+ {"version":3,"file":"pt-BR.d.ts","sourceRoot":"","sources":["../../src/pt-BR.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * The pt-BR pack for the data-display family. Split out of `pt-BR.ts`, which is a
3
+ * barrel over this folder — see that file for why.
4
+ */
5
+ import type { DataViewsCopy } from "./components/data-display/DataViews/data-views-copy";
6
+ import type { CarouselCopy, DataStateCopy, LightboxCopy, MapPreviewCopy, TimingDiagramCopy } from './copy';
7
+ export declare const PT_BR_LIGHTBOX_COPY: LightboxCopy;
8
+ export declare const PT_BR_MAP_PREVIEW_COPY: MapPreviewCopy;
9
+ export declare const PT_BR_CAROUSEL_COPY: CarouselCopy;
10
+ export declare const PT_BR_TIMING_DIAGRAM_COPY: TimingDiagramCopy;
11
+ export declare const PT_BR_DATA_STATE_COPY: DataStateCopy;
12
+ export declare const PT_BR_DATA_VIEWS_COPY: DataViewsCopy;
13
+ //# sourceMappingURL=pt-BR.data-display.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pt-BR.data-display.d.ts","sourceRoot":"","sources":["../../src/pt-BR.data-display.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qDAAqD,CAAC;AACzF,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,cAAc,EACd,iBAAiB,EAClB,MAAM,QAAQ,CAAC;AAQhB,eAAO,MAAM,mBAAmB,EAAE,YASjC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,cAOpC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,YAGjC,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,iBAGvC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,aAMnC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,aAkLnC,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * The pt-BR pack for the feedback family. Split out of `pt-BR.ts`, which is a
3
+ * barrel over this folder — see that file for why.
4
+ */
5
+ import type { ChromeCopy, TutorialCopy } from './copy';
6
+ export declare const PT_BR_TUTORIAL_COPY: TutorialCopy;
7
+ export declare const PT_BR_CHROME_COPY: ChromeCopy;
8
+ //# sourceMappingURL=pt-BR.feedback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pt-BR.feedback.d.ts","sourceRoot":"","sources":["../../src/pt-BR.feedback.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EACb,MAAM,QAAQ,CAAC;AAEhB,eAAO,MAAM,mBAAmB,EAAE,YAKjC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,UAQ/B,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * The pt-BR pack for the form family. Split out of `pt-BR.ts`, which is a
3
+ * barrel over this folder — see that file for why.
4
+ */
5
+ import type { AddressAutocompleteCopy, AutocompleteCopy, CodeEditorCopy, PasswordStrengthCopy, PhoneInputCopy, RichEditorToolbarCopy, UploadButtonCopy } from './copy';
6
+ export declare const PT_BR_ADDRESS_AUTOCOMPLETE_COPY: AddressAutocompleteCopy;
7
+ export declare const PT_BR_AUTOCOMPLETE_COPY: AutocompleteCopy;
8
+ export declare const PT_BR_CODE_EDITOR_COPY: CodeEditorCopy;
9
+ export declare const PT_BR_PASSWORD_STRENGTH_COPY: PasswordStrengthCopy;
10
+ export declare const PT_BR_RICH_EDITOR_TOOLBAR_COPY: RichEditorToolbarCopy;
11
+ export declare const PT_BR_PHONE_INPUT_COPY: PhoneInputCopy;
12
+ export declare const PT_BR_UPLOAD_BUTTON_COPY: UploadButtonCopy;
13
+ //# sourceMappingURL=pt-BR.form.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pt-BR.form.d.ts","sourceRoot":"","sources":["../../src/pt-BR.form.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EACV,uBAAuB,EACvB,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,QAAQ,CAAC;AAEhB,eAAO,MAAM,+BAA+B,EAAE,uBAK7C,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,gBAIrC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,cAUpC,CAAC;AAEF,eAAO,MAAM,4BAA4B,EAAE,oBAyB1C,CAAC;AAEF,eAAO,MAAM,8BAA8B,EAAE,qBAY5C,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,cAIpC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,gBAStC,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * The pt-BR pack for the layout family. Split out of `pt-BR.ts`, which is a
3
+ * barrel over this folder — see that file for why.
4
+ */
5
+ import type { TableFilterCopy } from './copy';
6
+ export declare const PT_BR_TABLE_FILTER_COPY: TableFilterCopy;
7
+ //# sourceMappingURL=pt-BR.layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pt-BR.layout.d.ts","sourceRoot":"","sources":["../../src/pt-BR.layout.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EACV,eAAe,EAChB,MAAM,QAAQ,CAAC;AAEhB,eAAO,MAAM,uBAAuB,EAAE,eAMrC,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * The pt-BR pack for the navigation family. Split out of `pt-BR.ts`, which is a
3
+ * barrel over this folder — see that file for why.
4
+ */
5
+ import type { BreadcrumbCopy, CommandPaletteCopy } from './copy';
6
+ export declare const PT_BR_COMMAND_PALETTE_COPY: CommandPaletteCopy;
7
+ export declare const PT_BR_BREADCRUMB_COPY: BreadcrumbCopy;
8
+ //# sourceMappingURL=pt-BR.navigation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pt-BR.navigation.d.ts","sourceRoot":"","sources":["../../src/pt-BR.navigation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EACnB,MAAM,QAAQ,CAAC;AAEhB,eAAO,MAAM,0BAA0B,EAAE,kBAMxC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,cAGnC,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * The pt-BR pack for the shared family. Split out of `pt-BR.ts`, which is a
3
+ * barrel over this folder — see that file for why.
4
+ */
5
+ import type { SavedViewsLabels } from "./components/layout/ContentToolbar/ContentToolbar.types";
6
+ import type { CategorySelectCopy, CepFieldCopy, ConfirmActionCopy, SectionOnboardingCopy } from './copy';
7
+ export declare const PT_BR_SECTION_ONBOARDING_COPY: SectionOnboardingCopy;
8
+ export declare const PT_BR_CONFIRM_ACTION_COPY: ConfirmActionCopy;
9
+ export declare const PT_BR_CATEGORY_SELECT_COPY: CategorySelectCopy;
10
+ export declare const PT_BR_CEP_FIELD_COPY: CepFieldCopy;
11
+ /**
12
+ * The saved-views dropdown's labels.
13
+ *
14
+ * Typed as the package's OWN `SavedViewsLabels` rather than a parallel shape:
15
+ * that interface already named every string, including the seven with no
16
+ * diacritics the copy gate could not see (`Aplicar`, `Fixar na barra lateral`,
17
+ * `Editar`…). The prop was `Partial<SavedViewsLabels>` with a pt-BR default —
18
+ * configurable in the type, inherited in practice.
19
+ */
20
+ export declare const PT_BR_SAVED_VIEWS_LABELS: SavedViewsLabels;
21
+ //# sourceMappingURL=pt-BR.shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pt-BR.shared.d.ts","sourceRoot":"","sources":["../../src/pt-BR.shared.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yDAAyD,CAAC;AAChG,OAAO,KAAK,EACV,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,QAAQ,CAAC;AAEhB,eAAO,MAAM,6BAA6B,EAAE,qBAI3C,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,iBAKvC,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,kBAkCxC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,YAIlC,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,EAAE,gBAiBtC,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * The pt-BR pack for the utility family. Split out of `pt-BR.ts`, which is a
3
+ * barrel over this folder — see that file for why.
4
+ */
5
+ import type { InstallPromptCopy, UserAvatarCopy } from './copy';
6
+ export declare const PT_BR_INSTALL_PROMPT_COPY: InstallPromptCopy;
7
+ export declare const PT_BR_USER_AVATAR_COPY: UserAvatarCopy;
8
+ //# sourceMappingURL=pt-BR.utility.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pt-BR.utility.d.ts","sourceRoot":"","sources":["../../src/pt-BR.utility.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EACf,MAAM,QAAQ,CAAC;AAEhB,eAAO,MAAM,yBAAyB,EAAE,iBAOvC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,cAEpC,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import * as React from 'react';
2
+ import type { UserAvatarCopy } from '../copy';
2
3
  export interface UserAvatarProps {
3
4
  src?: string | null;
4
5
  name?: string | null;
@@ -17,9 +18,14 @@ export interface UserMenuProps {
17
18
  image?: string | null;
18
19
  };
19
20
  onSignOut: () => void;
21
+ /**
22
+ * The card's one action. REQUIRED: this package ships no default copy, and
23
+ * the button is the only thing on this card a host does not already supply.
24
+ */
25
+ copy: UserAvatarCopy;
20
26
  }
21
27
  /**
22
28
  * User menu with avatar, info, and sign out button
23
29
  */
24
- export declare function UserMenu({ user, onSignOut }: UserMenuProps): React.ReactElement;
30
+ export declare function UserMenu({ user, onSignOut, copy }: UserMenuProps): React.ReactElement;
25
31
  //# sourceMappingURL=user-avatar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"user-avatar.d.ts","sourceRoot":"","sources":["../../../src/user-avatar/user-avatar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAoB/B,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACxC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EACzB,GAAG,EACH,IAAI,EACJ,IAAW,EACX,OAAO,EACP,WAAmB,GACpB,EAAE,eAAe,GAAG,KAAK,CAAC,YAAY,CActC;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE;QACJ,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACvB,CAAC;IACF,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,aAAa,GAAG,KAAK,CAAC,YAAY,CAkC/E"}
1
+ {"version":3,"file":"user-avatar.d.ts","sourceRoot":"","sources":["../../../src/user-avatar/user-avatar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAe9C,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACxC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EACzB,GAAG,EACH,IAAI,EACJ,IAAW,EACX,OAAO,EACP,WAAmB,GACpB,EAAE,eAAe,GAAG,KAAK,CAAC,YAAY,CActC;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE;QACJ,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACvB,CAAC;IACF,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB;;;OAGG;IACH,IAAI,EAAE,cAAc,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,aAAa,GAAG,KAAK,CAAC,YAAY,CAkCrF"}
@@ -45,7 +45,7 @@ function UserAvatar({
45
45
  }
46
46
  );
47
47
  }
48
- function UserMenu({ user, onSignOut }) {
48
+ function UserMenu({ user, onSignOut, copy }) {
49
49
  return /* @__PURE__ */ jsx(Card, { variant: "elevated", borderRadius: "md", children: /* @__PURE__ */ jsx(Box, { sx: { p: 2 }, children: /* @__PURE__ */ jsxs(Stack, { direction: "row", spacing: 2, alignItems: "center", children: [
50
50
  /* @__PURE__ */ jsx(
51
51
  UserAvatar,
@@ -66,7 +66,7 @@ function UserMenu({ user, onSignOut }) {
66
66
  color: "danger",
67
67
  size: "sm",
68
68
  onClick: onSignOut,
69
- children: "Sign out"
69
+ children: copy.signOut
70
70
  }
71
71
  )
72
72
  ] }) }) });
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/user-avatar/user-avatar.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from 'react';\nimport { Box, Stack } from '@mui/material';\nimport { Avatar } from '../components/data-display/Avatar';\nimport { Button } from '../components/form/Button';\nimport { Text } from '../components/typography/Text';\nimport { Card } from '../components/layout/Card';\n\n/**\n * Generate initials from a name\n */\nfunction getInitials(name: string): string {\n const parts = name.trim().split(/\\s+/);\n if (parts.length === 1) {\n return parts[0]?.substring(0, 2).toUpperCase() ?? \"\";\n }\n return (\n (parts[0]?.charAt(0) ?? \"\") + (parts[parts.length - 1]?.charAt(0) ?? \"\")\n ).toUpperCase();\n}\n\nexport interface UserAvatarProps {\n src?: string | null;\n name?: string | null;\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n onClick?: () => void;\n interactive?: boolean;\n}\n\n/**\n * User avatar using UI package Avatar component\n */\nexport function UserAvatar({\n src,\n name,\n size = 'md',\n onClick,\n interactive = false,\n}: UserAvatarProps): React.ReactElement {\n const fallbackText = name ? getInitials(name) : \"?\";\n\n return (\n <Avatar\n src={src ?? undefined}\n alt={name ?? \"User avatar\"}\n fallback={fallbackText}\n size={size}\n variant=\"circle\"\n interactive={interactive || !!onClick}\n onClick={onClick}\n />\n );\n}\n\nexport interface UserMenuProps {\n user: {\n name?: string | null;\n email?: string | null;\n image?: string | null;\n };\n onSignOut: () => void;\n}\n\n/**\n * User menu with avatar, info, and sign out button\n */\nexport function UserMenu({ user, onSignOut }: UserMenuProps): React.ReactElement {\n return (\n <Card variant=\"elevated\" borderRadius=\"md\">\n <Box sx={{ p: 2 }}>\n <Stack direction=\"row\" spacing={2} alignItems=\"center\">\n <UserAvatar\n src={user.image}\n name={user.name}\n size=\"md\"\n />\n\n <Stack spacing={0.5} sx={{ flex: 1, minWidth: 0 }}>\n <Text weight=\"semibold\" size=\"sm\">\n {user.name ?? \"User\"}\n </Text>\n {user.email && (\n <Text color=\"secondary\" size=\"xs\">\n {user.email}\n </Text>\n )}\n </Stack>\n\n <Button\n variant=\"outline\"\n color=\"danger\"\n size=\"sm\"\n onClick={onSignOut}\n >\n Sign out\n </Button>\n </Stack>\n </Box>\n </Card>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAGA,SAAS,KAAK,aAAa;AAwCvB,cAmCM,YAnCN;AA/BJ,SAAS,YAAY,MAAsB;AACzC,QAAM,QAAQ,KAAK,KAAK,EAAE,MAAM,KAAK;AACrC,MAAI,MAAM,WAAW,GAAG;AACtB,WAAO,MAAM,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,YAAY,KAAK;AAAA,EACpD;AACA,WACG,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,OAAO,MAAM,MAAM,SAAS,CAAC,GAAG,OAAO,CAAC,KAAK,KACrE,YAAY;AAChB;AAaO,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA,cAAc;AAChB,GAAwC;AACtC,QAAM,eAAe,OAAO,YAAY,IAAI,IAAI;AAEhD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,KAAK,OAAO;AAAA,MACZ,KAAK,QAAQ;AAAA,MACb,UAAU;AAAA,MACV;AAAA,MACA,SAAQ;AAAA,MACR,aAAa,eAAe,CAAC,CAAC;AAAA,MAC9B;AAAA;AAAA,EACF;AAEJ;AAcO,SAAS,SAAS,EAAE,MAAM,UAAU,GAAsC;AAC/E,SACE,oBAAC,QAAK,SAAQ,YAAW,cAAa,MACpC,8BAAC,OAAI,IAAI,EAAE,GAAG,EAAE,GACd,+BAAC,SAAM,WAAU,OAAM,SAAS,GAAG,YAAW,UAC5C;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,KAAK,KAAK;AAAA,QACV,MAAM,KAAK;AAAA,QACX,MAAK;AAAA;AAAA,IACP;AAAA,IAEA,qBAAC,SAAM,SAAS,KAAK,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,GAC9C;AAAA,0BAAC,QAAK,QAAO,YAAW,MAAK,MAC1B,eAAK,QAAQ,QAChB;AAAA,MACC,KAAK,SACJ,oBAAC,QAAK,OAAM,aAAY,MAAK,MAC1B,eAAK,OACR;AAAA,OAEJ;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACC,SAAQ;AAAA,QACR,OAAM;AAAA,QACN,MAAK;AAAA,QACL,SAAS;AAAA,QACV;AAAA;AAAA,IAED;AAAA,KACF,GACF,GACF;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../src/user-avatar/user-avatar.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from 'react';\nimport { Box, Stack } from '@mui/material';\nimport { Avatar } from '../components/data-display/Avatar';\nimport { Button } from '../components/form/Button';\nimport { Text } from '../components/typography/Text';\nimport { Card } from '../components/layout/Card';\nimport type { UserAvatarCopy } from '../copy';\n\n/**\n * Generate initials from a name\n */\nfunction getInitials(name: string): string {\n const parts = name.trim().split(/\\s+/);\n if (parts.length === 1) {\n return parts[0]?.substring(0, 2).toUpperCase() ?? \"\";\n }\n return (\n (parts[0]?.charAt(0) ?? \"\") + (parts[parts.length - 1]?.charAt(0) ?? \"\")\n ).toUpperCase();\n}\n\nexport interface UserAvatarProps {\n src?: string | null;\n name?: string | null;\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n onClick?: () => void;\n interactive?: boolean;\n}\n\n/**\n * User avatar using UI package Avatar component\n */\nexport function UserAvatar({\n src,\n name,\n size = 'md',\n onClick,\n interactive = false,\n}: UserAvatarProps): React.ReactElement {\n const fallbackText = name ? getInitials(name) : \"?\";\n\n return (\n <Avatar\n src={src ?? undefined}\n alt={name ?? \"User avatar\"}\n fallback={fallbackText}\n size={size}\n variant=\"circle\"\n interactive={interactive || !!onClick}\n onClick={onClick}\n />\n );\n}\n\nexport interface UserMenuProps {\n user: {\n name?: string | null;\n email?: string | null;\n image?: string | null;\n };\n onSignOut: () => void;\n /**\n * The card's one action. REQUIRED: this package ships no default copy, and\n * the button is the only thing on this card a host does not already supply.\n */\n copy: UserAvatarCopy;\n}\n\n/**\n * User menu with avatar, info, and sign out button\n */\nexport function UserMenu({ user, onSignOut, copy }: UserMenuProps): React.ReactElement {\n return (\n <Card variant=\"elevated\" borderRadius=\"md\">\n <Box sx={{ p: 2 }}>\n <Stack direction=\"row\" spacing={2} alignItems=\"center\">\n <UserAvatar\n src={user.image}\n name={user.name}\n size=\"md\"\n />\n\n <Stack spacing={0.5} sx={{ flex: 1, minWidth: 0 }}>\n <Text weight=\"semibold\" size=\"sm\">\n {user.name ?? \"User\"}\n </Text>\n {user.email && (\n <Text color=\"secondary\" size=\"xs\">\n {user.email}\n </Text>\n )}\n </Stack>\n\n <Button\n variant=\"outline\"\n color=\"danger\"\n size=\"sm\"\n onClick={onSignOut}\n >\n {copy.signOut}\n </Button>\n </Stack>\n </Box>\n </Card>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAGA,SAAS,KAAK,aAAa;AAyCvB,cAwCM,YAxCN;AA/BJ,SAAS,YAAY,MAAsB;AACzC,QAAM,QAAQ,KAAK,KAAK,EAAE,MAAM,KAAK;AACrC,MAAI,MAAM,WAAW,GAAG;AACtB,WAAO,MAAM,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,YAAY,KAAK;AAAA,EACpD;AACA,WACG,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,OAAO,MAAM,MAAM,SAAS,CAAC,GAAG,OAAO,CAAC,KAAK,KACrE,YAAY;AAChB;AAaO,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA,cAAc;AAChB,GAAwC;AACtC,QAAM,eAAe,OAAO,YAAY,IAAI,IAAI;AAEhD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,KAAK,OAAO;AAAA,MACZ,KAAK,QAAQ;AAAA,MACb,UAAU;AAAA,MACV;AAAA,MACA,SAAQ;AAAA,MACR,aAAa,eAAe,CAAC,CAAC;AAAA,MAC9B;AAAA;AAAA,EACF;AAEJ;AAmBO,SAAS,SAAS,EAAE,MAAM,WAAW,KAAK,GAAsC;AACrF,SACE,oBAAC,QAAK,SAAQ,YAAW,cAAa,MACpC,8BAAC,OAAI,IAAI,EAAE,GAAG,EAAE,GACd,+BAAC,SAAM,WAAU,OAAM,SAAS,GAAG,YAAW,UAC5C;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,KAAK,KAAK;AAAA,QACV,MAAM,KAAK;AAAA,QACX,MAAK;AAAA;AAAA,IACP;AAAA,IAEA,qBAAC,SAAM,SAAS,KAAK,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,GAC9C;AAAA,0BAAC,QAAK,QAAO,YAAW,MAAK,MAC1B,eAAK,QAAQ,QAChB;AAAA,MACC,KAAK,SACJ,oBAAC,QAAK,OAAM,aAAY,MAAK,MAC1B,eAAK,OACR;AAAA,OAEJ;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACC,SAAQ;AAAA,QACR,OAAM;AAAA,QACN,MAAK;AAAA,QACL,SAAS;AAAA,QAER,eAAK;AAAA;AAAA,IACR;AAAA,KACF,GACF,GACF;AAEJ;","names":[]}
@@ -85,11 +85,11 @@ var CENTERED = {
85
85
  alignItems: "center",
86
86
  p: 2
87
87
  };
88
- var DefaultLoader = () => /* @__PURE__ */ jsxs(Box, { sx: CENTERED, children: [
88
+ var DefaultLoader = ({ loadingText }) => /* @__PURE__ */ jsxs(Box, { sx: CENTERED, children: [
89
89
  /* @__PURE__ */ jsx(CircularProgress, { size: 24 }),
90
- /* @__PURE__ */ jsx(Typography, { variant: "body2", sx: { ml: 1 }, children: "Loading..." })
90
+ /* @__PURE__ */ jsx(Typography, { variant: "body2", sx: { ml: 1 }, children: loadingText })
91
91
  ] });
92
- var DefaultEndMessage = () => /* @__PURE__ */ jsx(Box, { sx: CENTERED, children: /* @__PURE__ */ jsx(Typography, { variant: "body2", color: "text.secondary", children: "No more items to load" }) });
92
+ var DefaultEndMessage = ({ endText }) => /* @__PURE__ */ jsx(Box, { sx: CENTERED, children: /* @__PURE__ */ jsx(Typography, { variant: "body2", color: "text.secondary", children: endText }) });
93
93
  var DefaultError = ({ error }) => /* @__PURE__ */ jsx(Alert, { severity: "error", sx: { m: 2 }, children: error.message || "An error occurred while loading more items" });
94
94
  var containerStyles = (variant, width) => {
95
95
  const horizontal = variant === "horizontal";
@@ -114,6 +114,8 @@ var InfiniteScroll = ({
114
114
  threshold = 150,
115
115
  loadMore,
116
116
  loader,
117
+ loadingText,
118
+ endText,
117
119
  endMessage,
118
120
  error,
119
121
  errorComponent,
@@ -137,9 +139,9 @@ var InfiniteScroll = ({
137
139
  testTriggerRef
138
140
  });
139
141
  const renderSentinel = () => {
140
- if (!hasMore) return endMessage || /* @__PURE__ */ jsx2(DefaultEndMessage, {});
142
+ if (!hasMore) return endMessage || /* @__PURE__ */ jsx2(DefaultEndMessage, { endText });
141
143
  if (error) return errorComponent || /* @__PURE__ */ jsx2(DefaultError, { error });
142
- if (loading) return loader || /* @__PURE__ */ jsx2(DefaultLoader, {});
144
+ if (loading) return loader || /* @__PURE__ */ jsx2(DefaultLoader, { loadingText });
143
145
  return /* @__PURE__ */ jsx2(
144
146
  "div",
145
147
  {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/utility/InfiniteScroll/InfiniteScroll.tsx","../../src/components/utility/InfiniteScroll/InfiniteScroll.hooks.ts","../../src/components/utility/InfiniteScroll/InfiniteScroll.parts.tsx"],"sourcesContent":["import { Box } from '@mui/material';\nimport React from 'react';\n\nimport { useLoadMore, useSentinel } from './InfiniteScroll.hooks';\nimport {\n containerStyles,\n DefaultEndMessage,\n DefaultError,\n DefaultLoader,\n} from './InfiniteScroll.parts';\nimport type { InfiniteScrollProps } from './InfiniteScroll.types';\n\nexport const InfiniteScroll: React.FC<InfiniteScrollProps> = ({\n children,\n variant = 'default',\n hasMore,\n loading,\n threshold = 150,\n loadMore,\n loader,\n endMessage,\n error,\n errorComponent,\n onError,\n className,\n style,\n width,\n scrollableTarget,\n testMode = false,\n testTriggerRef,\n}) => {\n const { sentinelRef, isIntersecting } = useSentinel({ testMode, threshold, scrollableTarget });\n\n useLoadMore({\n hasMore,\n loading,\n error,\n loadMore,\n onError,\n isIntersecting,\n testMode,\n testTriggerRef,\n });\n\n // The tail of the list is one of four things: the end message, an error, a\n // spinner, or the sentinel that asks for the next page.\n const renderSentinel = () => {\n if (!hasMore) return endMessage || <DefaultEndMessage />;\n if (error) return errorComponent || <DefaultError error={error} />;\n if (loading) return loader || <DefaultLoader />;\n\n return (\n <div\n ref={sentinelRef}\n data-testid=\"infinite-scroll-sentinel\"\n style={{\n height: variant === 'horizontal' ? '100%' : '1px',\n width: variant === 'horizontal' ? '1px' : '100%',\n }}\n />\n );\n };\n\n return (\n <Box\n className={className}\n sx={{\n ...containerStyles(variant, width),\n ...style,\n }}\n >\n {variant === 'reverse' && renderSentinel()}\n\n {variant === 'horizontal' ? (\n <Box sx={{ display: 'flex', flexDirection: 'row' }}>{children}</Box>\n ) : (\n children\n )}\n\n {variant !== 'reverse' && renderSentinel()}\n\n {variant === 'horizontal' && renderSentinel()}\n </Box>\n );\n};\n","import { useCallback, useEffect, useRef, useState } from 'react';\n\nimport type { InfiniteScrollProps } from './InfiniteScroll.types';\n\ntype ScrollableTarget = InfiniteScrollProps['scrollableTarget'];\n\n/** A string target is looked up by id first, then as a selector. */\nconst resolveScrollable = (scrollableTarget: ScrollableTarget): Element | null => {\n if (!scrollableTarget) return null;\n\n if (typeof scrollableTarget === 'string') {\n return (\n document.getElementById(scrollableTarget) || document.querySelector(scrollableTarget)\n );\n }\n\n return scrollableTarget;\n};\n\ninterface ObserverArgs {\n testMode: boolean;\n threshold: number;\n scrollableTarget: ScrollableTarget;\n}\n\n/**\n * Watches a zero-size sentinel at the end of the list. `rootMargin` is what makes\n * it fire before the sentinel is actually on screen, so the next page is already\n * loading by the time the user reaches the bottom.\n */\nexport const useSentinel = ({ testMode, threshold, scrollableTarget }: ObserverArgs) => {\n const sentinelRef = useRef<HTMLDivElement>(null);\n const [isIntersecting, setIsIntersecting] = useState(false);\n\n useEffect(() => {\n if (testMode || !sentinelRef.current) return;\n\n const observer = new window.IntersectionObserver(\n ([entry]) => {\n if (entry) {\n setIsIntersecting(entry.isIntersecting);\n }\n },\n {\n root: resolveScrollable(scrollableTarget) || undefined,\n rootMargin: `${threshold}px`,\n threshold: 0,\n },\n );\n\n observer.observe(sentinelRef.current);\n\n return () => observer.disconnect();\n }, [testMode, threshold, scrollableTarget]);\n\n return { sentinelRef, isIntersecting };\n};\n\ntype LoadArgs = Pick<\n InfiniteScrollProps,\n 'hasMore' | 'loading' | 'error' | 'loadMore' | 'onError' | 'testTriggerRef'\n> & {\n isIntersecting: boolean;\n testMode: boolean;\n};\n\n/**\n * A ref rather than state guards re-entry, so a second intersection landing while\n * the first `loadMore` is still in flight is dropped rather than queued.\n */\nexport const useLoadMore = ({\n hasMore,\n loading,\n error,\n loadMore,\n onError,\n isIntersecting,\n testMode,\n testTriggerRef,\n}: LoadArgs) => {\n const loadingRef = useRef(false);\n\n const handleLoadMore = useCallback(async () => {\n if (loadingRef.current || !hasMore || error) {\n return;\n }\n\n loadingRef.current = true;\n\n try {\n await loadMore();\n } catch (err) {\n const errorObj = err instanceof Error ? err : new Error('Unknown error');\n onError?.(errorObj);\n } finally {\n loadingRef.current = false;\n }\n }, [hasMore, error, loadMore, onError]);\n\n // Expose test trigger for test mode\n useEffect(() => {\n if (testMode && testTriggerRef) {\n testTriggerRef.current = handleLoadMore;\n }\n\n return () => {\n if (testMode && testTriggerRef) {\n testTriggerRef.current = undefined;\n }\n };\n }, [testMode, testTriggerRef, handleLoadMore]);\n\n useEffect(() => {\n if (isIntersecting && hasMore && !loading && !error) {\n handleLoadMore();\n }\n }, [isIntersecting, hasMore, loading, error, handleLoadMore]);\n};\n","import { Alert, Box, CircularProgress, Typography } from '@mui/material';\nimport React from 'react';\n\nimport type { InfiniteScrollProps } from './InfiniteScroll.types';\n\ntype Variant = NonNullable<InfiniteScrollProps['variant']>;\n\nconst CENTERED = {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n p: 2,\n} as const;\n\nexport const DefaultLoader: React.FC = () => (\n <Box sx={CENTERED}>\n <CircularProgress size={24} />\n <Typography variant=\"body2\" sx={{ ml: 1 }}>\n Loading...\n </Typography>\n </Box>\n);\n\nexport const DefaultEndMessage: React.FC = () => (\n <Box sx={CENTERED}>\n <Typography variant=\"body2\" color=\"text.secondary\">\n No more items to load\n </Typography>\n </Box>\n);\n\nexport const DefaultError: React.FC<{ error: Error }> = ({ error }) => (\n <Alert severity=\"error\" sx={{ m: 2 }}>\n {error.message || 'An error occurred while loading more items'}\n </Alert>\n);\n\n/**\n * `horizontal` scrolls along a row; `reverse` stacks bottom-up, for a chat log\n * that loads older messages as you scroll away from the newest.\n */\nexport const containerStyles = (variant: Variant, width?: number | string) => {\n const horizontal = variant === 'horizontal';\n const base = {\n width: horizontal ? width || '100%' : '100%',\n height: horizontal ? '100%' : 'auto',\n overflowX: horizontal ? 'auto' : 'hidden',\n overflowY: horizontal ? 'hidden' : 'visible',\n display: 'flex',\n flexDirection: horizontal ? 'row' : 'column',\n };\n\n return variant === 'reverse' ? { ...base, flexDirection: 'column-reverse' } : base;\n};\n"],"mappings":"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","names":["Box","jsx","jsxs","Box"]}
1
+ {"version":3,"sources":["../../src/components/utility/InfiniteScroll/InfiniteScroll.tsx","../../src/components/utility/InfiniteScroll/InfiniteScroll.hooks.ts","../../src/components/utility/InfiniteScroll/InfiniteScroll.parts.tsx"],"sourcesContent":["import { Box } from '@mui/material';\nimport React from 'react';\n\nimport { useLoadMore, useSentinel } from './InfiniteScroll.hooks';\nimport {\n containerStyles,\n DefaultEndMessage,\n DefaultError,\n DefaultLoader,\n} from './InfiniteScroll.parts';\nimport type { InfiniteScrollProps } from './InfiniteScroll.types';\n\nexport const InfiniteScroll: React.FC<InfiniteScrollProps> = ({\n children,\n variant = 'default',\n hasMore,\n loading,\n threshold = 150,\n loadMore,\n loader,\n loadingText,\n endText,\n endMessage,\n error,\n errorComponent,\n onError,\n className,\n style,\n width,\n scrollableTarget,\n testMode = false,\n testTriggerRef,\n}) => {\n const { sentinelRef, isIntersecting } = useSentinel({ testMode, threshold, scrollableTarget });\n\n useLoadMore({\n hasMore,\n loading,\n error,\n loadMore,\n onError,\n isIntersecting,\n testMode,\n testTriggerRef,\n });\n\n // The tail of the list is one of four things: the end message, an error, a\n // spinner, or the sentinel that asks for the next page.\n const renderSentinel = () => {\n if (!hasMore) return endMessage || <DefaultEndMessage endText={endText} />;\n if (error) return errorComponent || <DefaultError error={error} />;\n if (loading) return loader || <DefaultLoader loadingText={loadingText} />;\n\n return (\n <div\n ref={sentinelRef}\n data-testid=\"infinite-scroll-sentinel\"\n style={{\n height: variant === 'horizontal' ? '100%' : '1px',\n width: variant === 'horizontal' ? '1px' : '100%',\n }}\n />\n );\n };\n\n return (\n <Box\n className={className}\n sx={{\n ...containerStyles(variant, width),\n ...style,\n }}\n >\n {variant === 'reverse' && renderSentinel()}\n\n {variant === 'horizontal' ? (\n <Box sx={{ display: 'flex', flexDirection: 'row' }}>{children}</Box>\n ) : (\n children\n )}\n\n {variant !== 'reverse' && renderSentinel()}\n\n {variant === 'horizontal' && renderSentinel()}\n </Box>\n );\n};\n","import { useCallback, useEffect, useRef, useState } from 'react';\n\nimport type { InfiniteScrollProps } from './InfiniteScroll.types';\n\ntype ScrollableTarget = InfiniteScrollProps['scrollableTarget'];\n\n/** A string target is looked up by id first, then as a selector. */\nconst resolveScrollable = (scrollableTarget: ScrollableTarget): Element | null => {\n if (!scrollableTarget) return null;\n\n if (typeof scrollableTarget === 'string') {\n return (\n document.getElementById(scrollableTarget) || document.querySelector(scrollableTarget)\n );\n }\n\n return scrollableTarget;\n};\n\ninterface ObserverArgs {\n testMode: boolean;\n threshold: number;\n scrollableTarget: ScrollableTarget;\n}\n\n/**\n * Watches a zero-size sentinel at the end of the list. `rootMargin` is what makes\n * it fire before the sentinel is actually on screen, so the next page is already\n * loading by the time the user reaches the bottom.\n */\nexport const useSentinel = ({ testMode, threshold, scrollableTarget }: ObserverArgs) => {\n const sentinelRef = useRef<HTMLDivElement>(null);\n const [isIntersecting, setIsIntersecting] = useState(false);\n\n useEffect(() => {\n if (testMode || !sentinelRef.current) return;\n\n const observer = new window.IntersectionObserver(\n ([entry]) => {\n if (entry) {\n setIsIntersecting(entry.isIntersecting);\n }\n },\n {\n root: resolveScrollable(scrollableTarget) || undefined,\n rootMargin: `${threshold}px`,\n threshold: 0,\n },\n );\n\n observer.observe(sentinelRef.current);\n\n return () => observer.disconnect();\n }, [testMode, threshold, scrollableTarget]);\n\n return { sentinelRef, isIntersecting };\n};\n\ntype LoadArgs = Pick<\n InfiniteScrollProps,\n 'hasMore' | 'loading' | 'error' | 'loadMore' | 'onError' | 'testTriggerRef'\n> & {\n isIntersecting: boolean;\n testMode: boolean;\n};\n\n/**\n * A ref rather than state guards re-entry, so a second intersection landing while\n * the first `loadMore` is still in flight is dropped rather than queued.\n */\nexport const useLoadMore = ({\n hasMore,\n loading,\n error,\n loadMore,\n onError,\n isIntersecting,\n testMode,\n testTriggerRef,\n}: LoadArgs) => {\n const loadingRef = useRef(false);\n\n const handleLoadMore = useCallback(async () => {\n if (loadingRef.current || !hasMore || error) {\n return;\n }\n\n loadingRef.current = true;\n\n try {\n await loadMore();\n } catch (err) {\n const errorObj = err instanceof Error ? err : new Error('Unknown error');\n onError?.(errorObj);\n } finally {\n loadingRef.current = false;\n }\n }, [hasMore, error, loadMore, onError]);\n\n // Expose test trigger for test mode\n useEffect(() => {\n if (testMode && testTriggerRef) {\n testTriggerRef.current = handleLoadMore;\n }\n\n return () => {\n if (testMode && testTriggerRef) {\n testTriggerRef.current = undefined;\n }\n };\n }, [testMode, testTriggerRef, handleLoadMore]);\n\n useEffect(() => {\n if (isIntersecting && hasMore && !loading && !error) {\n handleLoadMore();\n }\n }, [isIntersecting, hasMore, loading, error, handleLoadMore]);\n};\n","import { Alert, Box, CircularProgress, Typography } from '@mui/material';\nimport React from 'react';\n\nimport type { InfiniteScrollProps } from './InfiniteScroll.types';\n\ntype Variant = NonNullable<InfiniteScrollProps['variant']>;\n\nconst CENTERED = {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n p: 2,\n} as const;\n\nexport const DefaultLoader: React.FC<{ loadingText: string }> = ({ loadingText }) => (\n <Box sx={CENTERED}>\n <CircularProgress size={24} />\n <Typography variant=\"body2\" sx={{ ml: 1 }}>\n {loadingText}\n </Typography>\n </Box>\n);\n\nexport const DefaultEndMessage: React.FC<{ endText: string }> = ({ endText }) => (\n <Box sx={CENTERED}>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {endText}\n </Typography>\n </Box>\n);\n\nexport const DefaultError: React.FC<{ error: Error }> = ({ error }) => (\n <Alert severity=\"error\" sx={{ m: 2 }}>\n {error.message || 'An error occurred while loading more items'}\n </Alert>\n);\n\n/**\n * `horizontal` scrolls along a row; `reverse` stacks bottom-up, for a chat log\n * that loads older messages as you scroll away from the newest.\n */\nexport const containerStyles = (variant: Variant, width?: number | string) => {\n const horizontal = variant === 'horizontal';\n const base = {\n width: horizontal ? width || '100%' : '100%',\n height: horizontal ? '100%' : 'auto',\n overflowX: horizontal ? 'auto' : 'hidden',\n overflowY: horizontal ? 'hidden' : 'visible',\n display: 'flex',\n flexDirection: horizontal ? 'row' : 'column',\n };\n\n return variant === 'reverse' ? { ...base, flexDirection: 'column-reverse' } : base;\n};\n"],"mappings":"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","names":["Box","jsx","jsxs","Box"]}
@@ -250,7 +250,7 @@ var usePwaInstall = (options = {}) => {
250
250
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
251
251
  var StyledInstallPrompt = styled(Box)(({ theme }) => installPromptStyles(theme));
252
252
  var testIdFor = (base, suffix) => base ? `${base}-${suffix}` : `install-prompt-${suffix}`;
253
- var IosInstructions = ({ instructions, dataTestId }) => /* @__PURE__ */ jsx(
253
+ var IosInstructions = ({ copy, instructions, dataTestId }) => /* @__PURE__ */ jsx(
254
254
  Typography,
255
255
  {
256
256
  className: "install-prompt-description",
@@ -259,13 +259,15 @@ var IosInstructions = ({ instructions, dataTestId }) => /* @__PURE__ */ jsx(
259
259
  "data-testid": testIdFor(dataTestId, "ios-instructions"),
260
260
  sx: { display: "flex", alignItems: "center", gap: 0.5, flexWrap: "wrap" },
261
261
  children: instructions ?? /* @__PURE__ */ jsxs(Fragment, { children: [
262
- "Tap ",
263
- /* @__PURE__ */ jsx(IosShare, { fontSize: "small", "aria-label": "Share" }),
264
- ' then "Add to Home Screen"'
262
+ copy.iosTapBefore,
263
+ " ",
264
+ /* @__PURE__ */ jsx(IosShare, { fontSize: "small", "aria-label": copy.shareLabel }),
265
+ " ",
266
+ copy.iosTapAfter
265
267
  ] })
266
268
  }
267
269
  );
268
- var InstallPromptBody = ({ icon, title, description, iosInstructions, platform, dataTestId }) => /* @__PURE__ */ jsxs(Fragment, { children: [
270
+ var InstallPromptBody = ({ copy, icon, title, description, iosInstructions, platform, dataTestId }) => /* @__PURE__ */ jsxs(Fragment, { children: [
269
271
  /* @__PURE__ */ jsx(Box, { className: "install-prompt-icon", "aria-hidden": "true", children: icon ?? /* @__PURE__ */ jsx(InstallMobile, {}) }),
270
272
  /* @__PURE__ */ jsxs(Box, { className: "install-prompt-content", children: [
271
273
  /* @__PURE__ */ jsx(
@@ -288,7 +290,7 @@ var InstallPromptBody = ({ icon, title, description, iosInstructions, platform,
288
290
  children: description
289
291
  }
290
292
  ),
291
- platform === "ios" && /* @__PURE__ */ jsx(IosInstructions, { instructions: iosInstructions, dataTestId })
293
+ platform === "ios" && /* @__PURE__ */ jsx(IosInstructions, { copy, instructions: iosInstructions, dataTestId })
292
294
  ] })
293
295
  ] });
294
296
  var InstallPromptActions = ({ platform, installLabel, dismissLabel, onInstallClick, onDismissClick, dataTestId }) => /* @__PURE__ */ jsxs(Box, { className: "install-prompt-actions", children: [
@@ -315,11 +317,9 @@ var InstallPromptActions = ({ platform, installLabel, dismissLabel, onInstallCli
315
317
  ] });
316
318
  var InstallPrompt = React.forwardRef(
317
319
  ({
318
- title = "Install this app",
320
+ copy,
319
321
  description,
320
- installLabel = "Install",
321
322
  iosInstructions,
322
- dismissLabel = "Dismiss install prompt",
323
323
  icon,
324
324
  onInstall,
325
325
  onDismiss,
@@ -349,7 +349,7 @@ var InstallPrompt = React.forwardRef(
349
349
  ref,
350
350
  className,
351
351
  role: "region",
352
- "aria-label": title,
352
+ "aria-label": copy.title,
353
353
  "data-testid": dataTestId,
354
354
  ...props,
355
355
  children: [
@@ -357,7 +357,8 @@ var InstallPrompt = React.forwardRef(
357
357
  InstallPromptBody,
358
358
  {
359
359
  icon,
360
- title,
360
+ copy,
361
+ title: copy.title,
361
362
  description,
362
363
  iosInstructions,
363
364
  platform,
@@ -368,8 +369,8 @@ var InstallPrompt = React.forwardRef(
368
369
  InstallPromptActions,
369
370
  {
370
371
  platform,
371
- installLabel,
372
- dismissLabel,
372
+ installLabel: copy.installLabel,
373
+ dismissLabel: copy.dismissLabel,
373
374
  onInstallClick: handleInstall,
374
375
  onDismissClick: handleDismiss,
375
376
  dataTestId