@protobase/ui 0.63.5 → 0.65.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 (277) hide show
  1. package/dist/account/change-email-dialog.js +1 -1
  2. package/dist/account/devices-section.js +11 -5
  3. package/dist/account/messages.js +2 -333
  4. package/dist/account/passkeys-section.js +2 -2
  5. package/dist/account/password-change-dialog.js +3 -3
  6. package/dist/account/sign-in-policy-form.js +6 -3
  7. package/dist/account/sign-in-providers-section.js +1 -1
  8. package/dist/account/staff-sign-in-log.js +4 -4
  9. package/dist/action-card/messages.js +2 -5
  10. package/dist/activity-chart/activity-chart.js +4 -6
  11. package/dist/activity-chart/messages.js +2 -11
  12. package/dist/app/app.js +1 -2
  13. package/dist/app/batch-failure.js +5 -1
  14. package/dist/app/bottom-bar-from-meta.js +2 -3
  15. package/dist/app/change-confirm/messages.js +2 -13
  16. package/dist/app/change-confirm/use-change-confirm.js +1 -1
  17. package/dist/app/charts/chart-groups.js +3 -1
  18. package/dist/app/charts/group-bars.js +1 -1
  19. package/dist/app/charts/messages.js +2 -23
  20. package/dist/app/charts/period-chart.js +1 -1
  21. package/dist/app/comments/messages.js +2 -19
  22. package/dist/app/confirm-sign-in-messages.js +2 -19
  23. package/dist/app/confirm-sign-in.js +1 -1
  24. package/dist/app/create/create-page.js +3 -3
  25. package/dist/app/create/create-record-form.js +2 -2
  26. package/dist/app/create/create-route.js +1 -1
  27. package/dist/app/create/messages.js +2 -29
  28. package/dist/app/custom-section.js +1 -2
  29. package/dist/app/delete/blocked-delete.js +5 -2
  30. package/dist/app/delete/dialogs.js +21 -8
  31. package/dist/app/delete/messages.js +2 -63
  32. package/dist/app/delete/use-delete-flow.js +5 -4
  33. package/dist/app/displays/board-column.js +1 -1
  34. package/dist/app/displays/board-columns.js +1 -1
  35. package/dist/app/displays/board-display.js +21 -9
  36. package/dist/app/displays/calendar-display.js +15 -6
  37. package/dist/app/displays/cards-display.js +1 -1
  38. package/dist/app/displays/custom-display.js +1 -2
  39. package/dist/app/displays/list-cards.js +1 -1
  40. package/dist/app/displays/map-display.js +19 -6
  41. package/dist/app/displays/messages.js +2 -147
  42. package/dist/app/displays/period-controls.js +2 -2
  43. package/dist/app/displays/timeline-display.js +15 -6
  44. package/dist/app/displays/timeline-range.js +1 -1
  45. package/dist/app/displays/use-board-move.js +3 -3
  46. package/dist/app/displays/use-calendar-move.js +1 -1
  47. package/dist/app/document-title.js +1 -1
  48. package/dist/app/embedded-list/cut-off-note.js +7 -1
  49. package/dist/app/embedded-list/embedded-row-targets.js +3 -3
  50. package/dist/app/embedded-list/messages.js +2 -21
  51. package/dist/app/export/builder-port.js +1 -1
  52. package/dist/app/export/export-dialog.js +14 -8
  53. package/dist/app/export/messages.js +2 -75
  54. package/dist/app/export/use-export-flow.js +9 -3
  55. package/dist/app/field-editor.js +2 -2
  56. package/dist/app/field-errors.js +18 -7
  57. package/dist/app/field-messages.js +2 -45
  58. package/dist/app/field-types/members/messages.js +2 -15
  59. package/dist/app/field-types/messages.js +2 -5
  60. package/dist/app/field-types/widget-part.js +1 -1
  61. package/dist/app/file-field.js +3 -3
  62. package/dist/app/gallery/gallery-section.js +5 -2
  63. package/dist/app/gallery/messages.js +2 -27
  64. package/dist/app/gallery/photo-details.js +2 -2
  65. package/dist/app/hand-order/hand-sorted-list.js +1 -2
  66. package/dist/app/hand-order/messages.js +2 -29
  67. package/dist/app/hand-order/use-hand-order.js +1 -1
  68. package/dist/app/history/describe-change.js +1 -1
  69. package/dist/app/history/messages.js +2 -29
  70. package/dist/app/import/convert.js +19 -10
  71. package/dist/app/import/import-check-step.js +5 -5
  72. package/dist/app/import/import-dialog.js +5 -2
  73. package/dist/app/import/import-file-step.js +1 -1
  74. package/dist/app/import/import-mapping-step.js +3 -3
  75. package/dist/app/import/messages.js +2 -197
  76. package/dist/app/import/prepare-rows.js +11 -4
  77. package/dist/app/import/sheet-cell.js +1 -1
  78. package/dist/app/import/xlsx-reader.js +2 -2
  79. package/dist/app/import/zip-reader.js +4 -1
  80. package/dist/app/list-actions/use-list-actions.js +4 -1
  81. package/dist/app/list-edit/messages.js +2 -11
  82. package/dist/app/list-empty-state.js +7 -4
  83. package/dist/app/list-group-chart.js +1 -1
  84. package/dist/app/list-messages.js +2 -53
  85. package/dist/app/list-page.js +9 -9
  86. package/dist/app/live-update/messages.js +2 -11
  87. package/dist/app/map/messages.js +2 -11
  88. package/dist/app/menu-icons.js +10 -3
  89. package/dist/app/messages.js +2 -139
  90. package/dist/app/meta-gate-messages.js +2 -13
  91. package/dist/app/nav-from-meta.js +8 -9
  92. package/dist/app/new-version/messages.js +2 -21
  93. package/dist/app/new-version/new-version-banner.js +1 -2
  94. package/dist/app/pages/action-inputs/action-inputs-dialog.js +1 -1
  95. package/dist/app/pages/action-inputs/input-answers.js +1 -1
  96. package/dist/app/pages/blocks/modal-form.js +1 -1
  97. package/dist/app/pages/blocks/settings.js +1 -1
  98. package/dist/app/pages/blocks/tabs.js +1 -1
  99. package/dist/app/pages/composed-page.js +1 -2
  100. package/dist/app/pages/custom-boundary.js +1 -2
  101. package/dist/app/pages/messages.js +2 -79
  102. package/dist/app/pages/render-node.js +2 -3
  103. package/dist/app/pages/use-run-action.js +14 -6
  104. package/dist/app/rank-after/dependency-rule.js +8 -2
  105. package/dist/app/rank-after/messages.js +2 -5
  106. package/dist/app/rank-after/ranked-place.js +7 -1
  107. package/dist/app/record-chart/messages.js +2 -25
  108. package/dist/app/record-lines-cell.js +4 -1
  109. package/dist/app/record-lines.js +2 -2
  110. package/dist/app/record-messages.js +2 -83
  111. package/dist/app/record-page.js +3 -3
  112. package/dist/app/record-row/messages.js +2 -23
  113. package/dist/app/record-row/record-row-body.js +1 -1
  114. package/dist/app/record-row/record-row.js +2 -2
  115. package/dist/app/record-row/saved-record-row.js +2 -2
  116. package/dist/app/related-cards/messages.js +2 -15
  117. package/dist/app/related-dots/dots-summary.js +1 -1
  118. package/dist/app/related-dots/messages.js +2 -5
  119. package/dist/app/related-dots/related-dots.js +2 -3
  120. package/dist/app/relation-picker.js +1 -1
  121. package/dist/app/runtime/messages.js +2 -55
  122. package/dist/app/runtime/runtime-status.js +12 -3
  123. package/dist/app/saved/messages.js +2 -19
  124. package/dist/app/saved/saved-list.js +2 -2
  125. package/dist/app/search/messages.js +2 -19
  126. package/dist/app/search/navigation-hits.js +1 -1
  127. package/dist/app/search/search-model.js +9 -3
  128. package/dist/app/searches/messages.js +2 -93
  129. package/dist/app/searches/save-search-button.js +3 -3
  130. package/dist/app/searches/saved-search-rows.js +2 -2
  131. package/dist/app/searches/saved-search-section.js +3 -3
  132. package/dist/app/searches/saved-searches.js +13 -11
  133. package/dist/app/searches/search-controls.js +1 -1
  134. package/dist/app/searches/search-diff.js +8 -2
  135. package/dist/app/searches/update-search-dialog.js +9 -3
  136. package/dist/app/searches/use-save-search.js +1 -1
  137. package/dist/app/searches/use-search-row.js +2 -2
  138. package/dist/app/sensitive-field.js +3 -3
  139. package/dist/app/source-notice.js +3 -3
  140. package/dist/app/staff-banner.js +12 -8
  141. package/dist/app/use-live-save.js +2 -2
  142. package/dist/app/user-menu-from-meta.js +2 -3
  143. package/dist/app/value-badge.js +3 -4
  144. package/dist/app-shell/global-search.js +2 -2
  145. package/dist/app-shell/messages.js +2 -63
  146. package/dist/app-shell/sidebar-group.js +2 -2
  147. package/dist/app-shell/sidebar.js +1 -2
  148. package/dist/app-shell/top-bar.js +1 -1
  149. package/dist/assistant-dock/messages.js +2 -23
  150. package/dist/auth/auth-gate.js +1 -1
  151. package/dist/auth/auth-messages.js +9 -88
  152. package/dist/auth/email-code-form.js +2 -3
  153. package/dist/auth/forgot-password-form.js +2 -3
  154. package/dist/auth/messages.js +2 -203
  155. package/dist/auth/provider-sign-in-page.js +3 -3
  156. package/dist/auth/resend-code-button.js +1 -1
  157. package/dist/auth/reset-password-form.js +1 -1
  158. package/dist/auth/reset-password-page.js +1 -1
  159. package/dist/auth/sign-in-form.js +2 -2
  160. package/dist/auth/sign-up-code-form.js +2 -3
  161. package/dist/auth/sign-up-details-form.js +3 -4
  162. package/dist/auth/staff-sign-in-form.js +3 -3
  163. package/dist/calls/call-guests-panel.js +1 -1
  164. package/dist/calls/call-lobby-notice.js +1 -1
  165. package/dist/calls/call-mark.js +1 -1
  166. package/dist/calls/call-people.js +1 -1
  167. package/dist/calls/call-tile.js +2 -2
  168. package/dist/calls/messages.js +2 -139
  169. package/dist/carousel/carousel-controls.js +4 -1
  170. package/dist/carousel/messages.js +2 -13
  171. package/dist/chat/messages.js +2 -19
  172. package/dist/compact-table/compact-table.js +1 -1
  173. package/dist/compact-table/messages.js +2 -15
  174. package/dist/data-grid/cell-text.js +6 -5
  175. package/dist/data-grid/cells.js +7 -4
  176. package/dist/data-grid/grid-footer.js +1 -1
  177. package/dist/data-grid/grid-row.js +1 -1
  178. package/dist/data-grid/header-menu.js +1 -1
  179. package/dist/data-grid/messages.js +2 -49
  180. package/dist/data-grid/resize-handle.js +1 -1
  181. package/dist/data-grid/row-reorder.js +20 -5
  182. package/dist/filter-panel/active-filter-chips.js +1 -1
  183. package/dist/filter-panel/date-presets.js +2 -2
  184. package/dist/filter-panel/facet-combobox.js +1 -1
  185. package/dist/filter-panel/facet-group.js +1 -1
  186. package/dist/filter-panel/messages.js +2 -49
  187. package/dist/filter-panel/range-filter.js +1 -1
  188. package/dist/format/date.js +4 -4
  189. package/dist/format/messages.js +2 -21
  190. package/dist/format/money.js +1 -1
  191. package/dist/format/number.js +5 -2
  192. package/dist/forms/messages.js +2 -21
  193. package/dist/inline-child-table/inline-child-table.js +19 -4
  194. package/dist/inline-child-table/line-row.js +2 -2
  195. package/dist/inline-child-table/messages.js +2 -35
  196. package/dist/invitations/link-notice.js +2 -3
  197. package/dist/invitations/messages.js +2 -21
  198. package/dist/invitations/pending-invitation-row.js +1 -1
  199. package/dist/lists/messages.js +2 -5
  200. package/dist/live/columns-from-model.js +14 -31
  201. package/dist/live/display-value.js +1 -1
  202. package/dist/live/messages.js +2 -15
  203. package/dist/live/value-color.js +13 -3
  204. package/dist/live/view-fields.js +4 -2
  205. package/dist/locale/en.js +1399 -0
  206. package/dist/locale/messages.js +38 -7
  207. package/dist/locale/nl.js +1399 -0
  208. package/dist/markdown/messages.js +2 -13
  209. package/dist/mentions/messages.js +2 -13
  210. package/dist/notifications/bell/messages.js +2 -35
  211. package/dist/notifications/bell/unread-label.js +1 -1
  212. package/dist/organizations/invitation-page.js +31 -13
  213. package/dist/organizations/invitations-page.js +1 -1
  214. package/dist/organizations/members-page.js +2 -2
  215. package/dist/organizations/messages.js +2 -187
  216. package/dist/organizations/organization-page.js +4 -4
  217. package/dist/organizations/organizations-page.js +1 -1
  218. package/dist/package.js +1 -1
  219. package/dist/plugins/load-plugin.js +2 -2
  220. package/dist/plugins/messages.js +2 -33
  221. package/dist/plugins/plugin-notice.js +7 -5
  222. package/dist/primitives/badge.d.ts +2 -1
  223. package/dist/primitives/messages.js +2 -13
  224. package/dist/primitives/token.js +1 -1
  225. package/dist/record-view/field.js +2 -2
  226. package/dist/record-view/messages.js +2 -33
  227. package/dist/record-view/record-header.js +2 -2
  228. package/dist/roles/messages.js +2 -11
  229. package/dist/shell/assets/app-BOuBCV1m.js +8 -0
  230. package/dist/shell/assets/{calls-CPiQcC70.js → calls-C22bYKio.js} +2 -2
  231. package/dist/shell/assets/export-worker-ClXdfeuq.js +15 -0
  232. package/dist/shell/assets/{index-_ZpZ2ro0.js → index-G0fdUd70.js} +2 -2
  233. package/dist/shell/assets/{maplibre-CjNYwEqW.js → maplibre-CRmpQfDl.js} +3 -3
  234. package/dist/shell/assets/parse-worker-DxsmAjef.js +18 -0
  235. package/dist/shell/assets/preload-helper-BgLOXTzV.js +2 -0
  236. package/dist/shell/assets/{record-map-DjqQGqZ2.js → record-map-DsP4sXes.js} +2 -2
  237. package/dist/shell/assets/{records-map-DU29d6QK.js → records-map-BtWK38Kn.js} +2 -2
  238. package/dist/shell/assets/shared-protobase-ui-xqMMtr7u.js +2 -0
  239. package/dist/shell/assets/vendor-Kvdo8Jrw.js +73 -0
  240. package/dist/shell/index.html +5 -5
  241. package/dist/shell/protobase.shell.json +2 -2
  242. package/dist/shell/protobase.sw.js +2 -2
  243. package/dist/shell-source-maps/assets/app-BOuBCV1m.js.map +1 -0
  244. package/dist/shell-source-maps/assets/{calls-CPiQcC70.js.map → calls-C22bYKio.js.map} +1 -1
  245. package/dist/shell-source-maps/assets/export-worker-ClXdfeuq.js.map +1 -0
  246. package/dist/shell-source-maps/assets/{index-_ZpZ2ro0.js.map → index-G0fdUd70.js.map} +1 -1
  247. package/dist/shell-source-maps/assets/{maplibre-CjNYwEqW.js.map → maplibre-CRmpQfDl.js.map} +1 -1
  248. package/dist/shell-source-maps/assets/parse-worker-DxsmAjef.js.map +1 -0
  249. package/dist/shell-source-maps/assets/preload-helper-BgLOXTzV.js.map +1 -0
  250. package/dist/shell-source-maps/assets/{record-map-DjqQGqZ2.js.map → record-map-DsP4sXes.js.map} +1 -1
  251. package/dist/shell-source-maps/assets/{records-map-DU29d6QK.js.map → records-map-BtWK38Kn.js.map} +1 -1
  252. package/dist/shell-source-maps/assets/shared-protobase-ui-xqMMtr7u.js.map +1 -0
  253. package/dist/shell-source-maps/assets/vendor-Kvdo8Jrw.js.map +1 -0
  254. package/dist/side-panel/messages.js +2 -5
  255. package/dist/status/messages.js +2 -59
  256. package/dist/toasts/messages.js +2 -5
  257. package/dist/users/create-user-form.js +1 -1
  258. package/dist/users/messages.js +2 -49
  259. package/package.json +5 -4
  260. package/dist/app/icons.js +0 -27
  261. package/dist/app-shell/nav.js +0 -85
  262. package/dist/locale/slotted.js +0 -14
  263. package/dist/mocks/activity.js +0 -24
  264. package/dist/mocks/rng.js +0 -20
  265. package/dist/mocks/users.js +0 -63
  266. package/dist/shell/assets/app-BPv_SjnU.js +0 -9
  267. package/dist/shell/assets/export-worker-3e4Zsv0a.js +0 -3
  268. package/dist/shell/assets/parse-worker-UhbwEjS0.js +0 -6
  269. package/dist/shell/assets/preload-helper-SYSsmQ2O.js +0 -2
  270. package/dist/shell/assets/shared-protobase-ui-Cab5nqST.js +0 -2
  271. package/dist/shell/assets/vendor-iwLB0x-s.js +0 -63
  272. package/dist/shell-source-maps/assets/app-BPv_SjnU.js.map +0 -1
  273. package/dist/shell-source-maps/assets/export-worker-3e4Zsv0a.js.map +0 -1
  274. package/dist/shell-source-maps/assets/parse-worker-UhbwEjS0.js.map +0 -1
  275. package/dist/shell-source-maps/assets/preload-helper-SYSsmQ2O.js.map +0 -1
  276. package/dist/shell-source-maps/assets/shared-protobase-ui-Cab5nqST.js.map +0 -1
  277. package/dist/shell-source-maps/assets/vendor-iwLB0x-s.js.map +0 -1
@@ -1,86 +1,5 @@
1
- import { defineMessages } from "../locale/messages.js";
1
+ import { messages } from "../locale/messages.js";
2
2
  //#region src/app/record-messages.ts
3
- const text = defineMessages({
4
- en: {
5
- details: "Details",
6
- history: "History",
7
- comments: "Comments",
8
- summary: "Summary",
9
- loading: "Loading",
10
- fetching: "Fetching the record.",
11
- noRecord: "This record does not exist, or you cannot see it.",
12
- openingElsewhere: "Opening the record in its organization.",
13
- couldNotLoad: "Could not load the record",
14
- someoneElse: "Someone else",
15
- justNow: "just now",
16
- saved: "Saved",
17
- save: "Save",
18
- cancel: "Cancel",
19
- unsavedChanges: "Unsaved changes",
20
- notSaved: "Not saved",
21
- linesChanged: "The lines were changed by someone else",
22
- linesReloaded: "The lines were reloaded. Your new order is kept: Save again to apply it.",
23
- unsavedKept: "You have unsaved changes to this record.",
24
- continueEditing: "Continue editing",
25
- discard: "Discard",
26
- unsavedRestored: "Your unsaved changes were restored.",
27
- keep: "Keep",
28
- savingSubject: (subject) => `Saving ${subject}...`,
29
- subjectSaved: (subject) => `${subject} saved`,
30
- changedBySomeoneElse: "Changed by someone else",
31
- couldNotSave: "Could not save",
32
- recordActions: "Record actions",
33
- edit: "Edit",
34
- delete: "Delete",
35
- nothingYet: "Nothing here yet.",
36
- couldNotLoadRelated: "Could not load",
37
- relatedRecords: "Related records",
38
- lines: "Lines",
39
- linesHelp: "What the document bills for. Edit a line in place, add one, or drag the handle to change the order; Save applies it all.",
40
- lineNumber: (place) => `Line ${place}`,
41
- lineField: (label, place) => `${label}, line ${place}`,
42
- tooManyLines: (limit) => `This record has more than ${limit} lines, so they show here read-only.`
43
- },
44
- nl: {
45
- details: "Details",
46
- history: "Geschiedenis",
47
- comments: "Opmerkingen",
48
- summary: "Overzicht",
49
- loading: "Laden",
50
- fetching: "Het record wordt opgehaald.",
51
- noRecord: "Dit record bestaat niet, of je mag het niet zien.",
52
- openingElsewhere: "Het record wordt in zijn organisatie geopend.",
53
- couldNotLoad: "Kon het record niet laden",
54
- someoneElse: "Iemand anders",
55
- justNow: "zojuist",
56
- saved: "Bewaard",
57
- save: "Bewaren",
58
- cancel: "Annuleren",
59
- unsavedChanges: "Niet bewaarde wijzigingen",
60
- notSaved: "Niet bewaard",
61
- linesChanged: "De regels zijn door iemand anders gewijzigd",
62
- linesReloaded: "De regels zijn opnieuw geladen. Je nieuwe volgorde is behouden: bewaar opnieuw om hem toe te passen.",
63
- unsavedKept: "Je hebt niet bewaarde wijzigingen in dit record.",
64
- continueEditing: "Verder bewerken",
65
- discard: "Weggooien",
66
- unsavedRestored: "Je niet bewaarde wijzigingen zijn teruggezet.",
67
- keep: "Houden",
68
- savingSubject: (subject) => `${subject} bewaren...`,
69
- subjectSaved: (subject) => `${subject} bewaard`,
70
- changedBySomeoneElse: "Gewijzigd door iemand anders",
71
- couldNotSave: "Kon niet bewaren",
72
- recordActions: "Recordacties",
73
- edit: "Bewerken",
74
- delete: "Verwijderen",
75
- nothingYet: "Hier staat nog niets.",
76
- couldNotLoadRelated: "Kon niet laden",
77
- relatedRecords: "Gerelateerde records",
78
- lines: "Regels",
79
- linesHelp: "Waar het document voor factureert. Wijzig een regel ter plekke, voeg er een toe, of sleep de greep om de volgorde te wijzigen; Bewaren past alles toe.",
80
- lineNumber: (place) => `Regel ${place}`,
81
- lineField: (label, place) => `${label}, regel ${place}`,
82
- tooManyLines: (limit) => `Dit record heeft meer dan ${limit} regels, dus ze staan hier alleen ter inzage.`
83
- }
84
- });
3
+ const text = messages("app/record");
85
4
  //#endregion
86
5
  export { text };
@@ -11,7 +11,7 @@ import { humanize } from "../live/naming.js";
11
11
  import { markdownExcerpt } from "../markdown/markdown-excerpt.js";
12
12
  import { isMarkdown } from "../markdown/markdown-hint.js";
13
13
  import { contactFormat } from "../live/contact-links.js";
14
- import { toneFor } from "../live/columns-from-model.js";
14
+ import { valueTone } from "../live/value-color.js";
15
15
  import { displayValue, valueTitle } from "../live/display-value.js";
16
16
  import { filledFields } from "./filled-fields.js";
17
17
  import { Skeleton } from "../primitives/skeleton.js";
@@ -107,7 +107,7 @@ const RecordPage = ({ resource, recordKey }) => {
107
107
  const record = useOpenedRecord(resource, recordKey);
108
108
  if (!model) return /* @__PURE__ */ jsx(Notice, {
109
109
  title: text("notFound"),
110
- children: text("noResource", resource)
110
+ children: text("noResource", { name: resource })
111
111
  });
112
112
  if (record.isPending) return /* @__PURE__ */ jsx(Notice, {
113
113
  title: text$1("loading"),
@@ -484,7 +484,7 @@ const LoadedRecord = ({ model, recordKey, stored, preview }) => {
484
484
  title,
485
485
  status: status ? {
486
486
  label: enumLabel(status, hint("status")?.valueLabels),
487
- tone: toneFor(status)
487
+ tone: valueTone(hint("status")?.valueColors, status)
488
488
  } : void 0
489
489
  }),
490
490
  editor.message && /* @__PURE__ */ jsx("div", {
@@ -1,26 +1,5 @@
1
- import { defineMessages } from "../../locale/messages.js";
1
+ import { messages } from "../../locale/messages.js";
2
2
  //#region src/app/record-row/messages.ts
3
- const text = defineMessages({
4
- en: {
5
- couldNotLoad: "Could not load",
6
- noneMatch: (plural) => `No ${plural} match.`,
7
- viewAll: "View all",
8
- new: "New",
9
- previous: (label) => `Previous ${label}`,
10
- next: (label) => `Next ${label}`,
11
- couldNotLoadYour: (plural) => `Could not load your ${plural}`,
12
- noneYet: (plural) => `No ${plural} yet.`
13
- },
14
- nl: {
15
- couldNotLoad: "Kon niet laden",
16
- noneMatch: (plural) => `Geen ${plural} gevonden.`,
17
- viewAll: "Alles bekijken",
18
- new: "Nieuw",
19
- previous: (label) => `Terug in ${label}`,
20
- next: (label) => `Verder in ${label}`,
21
- couldNotLoadYour: (plural) => `Kon je ${plural} niet laden`,
22
- noneYet: (plural) => `Nog geen ${plural}.`
23
- }
24
- });
3
+ const text = messages("app/record-row");
25
4
  //#endregion
26
5
  export { text };
@@ -82,7 +82,7 @@ const RecordRowBody = ({ model, view, filter, sort = "", display: named, limit,
82
82
  error: rows.error
83
83
  }) : !source || source.total === 0 ? /* @__PURE__ */ jsx("p", {
84
84
  className: "text-muted-foreground",
85
- children: empty ?? text("noneMatch", plural.toLowerCase())
85
+ children: empty ?? text("noneMatch", { plural: plural.toLowerCase() })
86
86
  }) : /* @__PURE__ */ jsx(RecordRow, {
87
87
  model,
88
88
  view,
@@ -70,7 +70,7 @@ const RecordRow = ({ model, view, display, source, label, isNew }) => {
70
70
  }),
71
71
  scroll.back && /* @__PURE__ */ jsx("button", {
72
72
  type: "button",
73
- "aria-label": text("previous", label.toLowerCase()),
73
+ "aria-label": text("previous", { label: label.toLowerCase() }),
74
74
  onClick: () => scroll.page(-1),
75
75
  className: `${arrowClass} -left-3`,
76
76
  children: /* @__PURE__ */ jsx(ChevronLeft, {
@@ -80,7 +80,7 @@ const RecordRow = ({ model, view, display, source, label, isNew }) => {
80
80
  }),
81
81
  scroll.on && /* @__PURE__ */ jsx("button", {
82
82
  type: "button",
83
- "aria-label": text("next", label.toLowerCase()),
83
+ "aria-label": text("next", { label: label.toLowerCase() }),
84
84
  onClick: () => scroll.page(1),
85
85
  className: `${arrowClass} -right-3`,
86
86
  children: /* @__PURE__ */ jsx(ChevronRight, {
@@ -20,14 +20,14 @@ const SavedRecordRow = ({ model, view, empty, ...props }) => {
20
20
  const plural = (view.names?.plural ?? humanize(model.name)).toLowerCase();
21
21
  if (!listed.listOf) return null;
22
22
  if (saved.error) return /* @__PURE__ */ jsx(ErrorBanner, {
23
- title: text("couldNotLoadYour", plural),
23
+ title: text("couldNotLoadYour", { plural }),
24
24
  error: saved.error
25
25
  });
26
26
  if (!saved.data) return /* @__PURE__ */ jsx(Skeleton, { className: "h-24" });
27
27
  const scope = savedScope(listed.model, saved.data);
28
28
  if (!scope) return /* @__PURE__ */ jsx("p", {
29
29
  className: "text-muted-foreground",
30
- children: empty ?? text("noneYet", plural)
30
+ children: empty ?? text("noneYet", { plural })
31
31
  });
32
32
  return /* @__PURE__ */ jsx(RecordRowBody, {
33
33
  ...props,
@@ -1,18 +1,5 @@
1
- import { defineMessages } from "../../locale/messages.js";
1
+ import { messages } from "../../locale/messages.js";
2
2
  //#region src/app/related-cards/messages.ts
3
- const text = defineMessages({
4
- en: {
5
- showMore: "Show more",
6
- showLess: "Show less",
7
- couldNotLoad: "Could not load",
8
- nothingYet: "Nothing here yet."
9
- },
10
- nl: {
11
- showMore: "Meer tonen",
12
- showLess: "Minder tonen",
13
- couldNotLoad: "Kon niet laden",
14
- nothingYet: "Hier staat nog niets."
15
- }
16
- });
3
+ const text = messages("app/related-cards");
17
4
  //#endregion
18
5
  export { text };
@@ -5,7 +5,7 @@ import { text } from "./messages.js";
5
5
  * of the status's values, such as "4 tasks: 1 To do, 3 Done". "No tasks" without any.
6
6
  */
7
7
  const dotsSummary = (statuses, { values, label, singular, plural }) => {
8
- if (statuses.length === 0) return text("none", plural);
8
+ if (statuses.length === 0) return text("none", { plural });
9
9
  const counts = /* @__PURE__ */ new Map();
10
10
  for (const status of statuses) if (status !== null && status !== void 0) counts.set(String(status), (counts.get(String(status)) ?? 0) + 1);
11
11
  const parts = [...values, ...[...counts.keys()].filter((value) => !values.includes(value))].filter((value) => counts.has(value)).map((value) => `${counts.get(value)} ${label(value)}`);
@@ -1,8 +1,5 @@
1
- import { defineMessages } from "../../locale/messages.js";
1
+ import { messages } from "../../locale/messages.js";
2
2
  //#region src/app/related-dots/messages.ts
3
- const text = defineMessages({
4
- en: { none: (plural) => `No ${plural}` },
5
- nl: { none: (plural) => `Geen ${plural}` }
6
- });
3
+ const text = messages("app/related-dots");
7
4
  //#endregion
8
5
  export { text };
@@ -2,11 +2,10 @@ import { cn } from "../../lib/cn.js";
2
2
  import { toneDots } from "../../primitives/badge.js";
3
3
  import { humanize } from "../../live/naming.js";
4
4
  import { recordTitleField } from "../../live/model-helpers.js";
5
- import { toneFor } from "../../live/columns-from-model.js";
5
+ import { valueColor, valueTone } from "../../live/value-color.js";
6
6
  import { displayValue } from "../../live/display-value.js";
7
7
  import { displayRow } from "../displays/list-displays.js";
8
8
  import { AppLink } from "../use-app-address.js";
9
- import { valueColor } from "../../live/value-color.js";
10
9
  import { placeCard } from "./card-place.js";
11
10
  import { dotCard } from "./dot-card.js";
12
11
  import { dotsSummary } from "./dots-summary.js";
@@ -153,7 +152,7 @@ const RelatedDots = ({ column, records, target, view, wrap = false, Card }) => {
153
152
  children: /* @__PURE__ */ jsx("span", {
154
153
  "aria-hidden": true,
155
154
  style: color === void 0 ? void 0 : { backgroundColor: color },
156
- className: cn(dotMark, color === void 0 && toneDots[toneFor(String(value))], shown?.key === row.key && "ring-2 ring-foreground/30")
155
+ className: cn(dotMark, color === void 0 && toneDots[valueTone(hints?.valueColors, value)], shown?.key === row.key && "ring-2 ring-foreground/30")
157
156
  })
158
157
  }, row.key);
159
158
  }),
@@ -47,7 +47,7 @@ const RelationPicker = ({ target, view, value, label, chosen = [value], several
47
47
  chosen,
48
48
  several,
49
49
  closedText: label ?? value,
50
- placeholder: text("searchPlural", (view?.names?.plural ?? humanize(target.name)).toLowerCase()),
50
+ placeholder: text("searchPlural", { plural: (view?.names?.plural ?? humanize(target.name)).toLowerCase() }),
51
51
  invalid,
52
52
  paging: {
53
53
  more: Boolean(rows.hasNextPage),
@@ -1,58 +1,5 @@
1
- import { defineMessages } from "../../locale/messages.js";
1
+ import { messages } from "../../locale/messages.js";
2
2
  //#region src/app/runtime/messages.ts
3
- const text = defineMessages({
4
- en: {
5
- immediate: "Updates as soon as a release is out",
6
- weekly: "Updates at a set time every week",
7
- scheduled: "Updates at the time set for this release",
8
- manual: "Updates only when asked to",
9
- job: "Preparing the update",
10
- build: "Building",
11
- updatingNow: "Updating now",
12
- started: (stage, ago) => `${stage}, started ${ago}`,
13
- nextOn: (policy, when) => `${policy}: next on ${when}`,
14
- succeeded: (version, when) => `Updated to ${version} on ${when}`,
15
- unchanged: (version, when) => `The update to ${version} on ${when} changed nothing`,
16
- failed: (version, when) => `The update to ${version} failed on ${when}`,
17
- alreadyLatest: "Already on the latest version, or an update is running.",
18
- onlyAdmin: "Only an admin can update the runtime.",
19
- couldNotStart: "The update could not be started. Try again later.",
20
- runtimeUpdate: "Runtime update",
21
- close: "Close",
22
- updating: "Updating…",
23
- updateNow: "Update now",
24
- currentVersion: "Current version",
25
- latestVersion: "Latest version",
26
- checkFailed: "The status could not be checked again; this is the last one read.",
27
- updateAvailable: "Update available",
28
- update: "Update"
29
- },
30
- nl: {
31
- immediate: "Werkt bij zodra er een release is",
32
- weekly: "Werkt elke week op een vast moment bij",
33
- scheduled: "Werkt bij op het moment dat voor deze release is ingesteld",
34
- manual: "Werkt alleen bij als erom wordt gevraagd",
35
- job: "De update voorbereiden",
36
- build: "Bouwen",
37
- updatingNow: "Nu aan het bijwerken",
38
- started: (stage, ago) => `${stage}, begonnen ${ago}`,
39
- nextOn: (policy, when) => `${policy}: volgende op ${when}`,
40
- succeeded: (version, when) => `Bijgewerkt naar ${version} op ${when}`,
41
- unchanged: (version, when) => `De update naar ${version} op ${when} veranderde niets`,
42
- failed: (version, when) => `De update naar ${version} mislukte op ${when}`,
43
- alreadyLatest: "Al op de nieuwste versie, of er loopt een update.",
44
- onlyAdmin: "Alleen een beheerder kan de runtime bijwerken.",
45
- couldNotStart: "De update kon niet worden gestart. Probeer het later opnieuw.",
46
- runtimeUpdate: "Runtime-update",
47
- close: "Sluiten",
48
- updating: "Bijwerken…",
49
- updateNow: "Nu bijwerken",
50
- currentVersion: "Huidige versie",
51
- latestVersion: "Nieuwste versie",
52
- checkFailed: "De status kon niet opnieuw worden gecontroleerd; dit is de laatst gelezen.",
53
- updateAvailable: "Update beschikbaar",
54
- update: "Bijwerken"
55
- }
56
- });
3
+ const text = messages("app/runtime");
57
4
  //#endregion
58
5
  export { text };
@@ -12,18 +12,27 @@ const runningText = (status, now) => {
12
12
  const label = text(status.updateStage);
13
13
  if (!status.updateStartedAt) return label;
14
14
  const seconds = Math.max(0, Math.floor((now - Date.parse(status.updateStartedAt)) / 1e3));
15
- return text("started", label, formatAgo(seconds));
15
+ return text("started", {
16
+ stage: label,
17
+ ago: formatAgo(seconds)
18
+ });
16
19
  };
17
20
  /** How far the running update is, or when the latest version will be applied on its own, in words; `now` in ms. */
18
21
  const nextUpdateText = (status, now = Date.now(), zone = viewerZone()) => {
19
22
  if (status.updating) return runningText(status, now);
20
- if (status.nextUpdateAt) return text("nextOn", text(status.policy), formatDateTime(Date.parse(status.nextUpdateAt), zone));
23
+ if (status.nextUpdateAt) return text("nextOn", {
24
+ policy: text(status.policy),
25
+ when: formatDateTime(Date.parse(status.nextUpdateAt), zone)
26
+ });
21
27
  return text(status.policy);
22
28
  };
23
29
  /** How the last update ended, in words, with the endpoint's message for the owner when it has one. */
24
30
  const lastUpdateText = (last, zone = viewerZone()) => {
25
31
  const when = formatDateTime(Date.parse(last.finishedAt), zone);
26
- const headline = text(last.outcome, last.toVersion, when);
32
+ const headline = text(last.outcome, {
33
+ version: last.toVersion,
34
+ when
35
+ });
27
36
  return last.message ? `${headline}: ${last.message}` : `${headline}.`;
28
37
  };
29
38
  /** Why "Update now" failed, in words: the endpoint's own message for a refusal, when it sends one. */
@@ -1,22 +1,5 @@
1
- import { defineMessages } from "../../locale/messages.js";
1
+ import { messages } from "../../locale/messages.js";
2
2
  //#region src/app/saved/messages.ts
3
- const text = defineMessages({
4
- en: {
5
- favorite: "Favorite",
6
- couldNotLoadYour: (plural) => `Could not load your ${plural}`,
7
- noneYet: (plural) => `No ${plural} yet.`,
8
- somethingWrong: "Something went wrong",
9
- couldNotTakeOff: "Could not take it off",
10
- couldNotSave: "Could not save it"
11
- },
12
- nl: {
13
- favorite: "Favoriet",
14
- couldNotLoadYour: (plural) => `Kon je ${plural} niet laden`,
15
- noneYet: (plural) => `Nog geen ${plural}.`,
16
- somethingWrong: "Er ging iets mis",
17
- couldNotTakeOff: "Kon het niet weghalen",
18
- couldNotSave: "Kon het niet bewaren"
19
- }
20
- });
3
+ const text = messages("app/saved");
21
4
  //#endregion
22
5
  export { text };
@@ -22,7 +22,7 @@ const SavedList = ({ model, view, target, children }) => {
22
22
  }), body]
23
23
  });
24
24
  if (saved.error) return frame(/* @__PURE__ */ jsx(ErrorBanner, {
25
- title: text("couldNotLoadYour", plural.toLowerCase()),
25
+ title: text("couldNotLoadYour", { plural: plural.toLowerCase() }),
26
26
  error: saved.error
27
27
  }));
28
28
  if (!saved.data) return frame(/* @__PURE__ */ jsx("div", {
@@ -32,7 +32,7 @@ const SavedList = ({ model, view, target, children }) => {
32
32
  const scope = savedScope(target, saved.data);
33
33
  if (!scope) return frame(/* @__PURE__ */ jsx("p", {
34
34
  className: "py-8 text-center text-muted-foreground",
35
- children: text("noneYet", plural.toLowerCase())
35
+ children: text("noneYet", { plural: plural.toLowerCase() })
36
36
  }));
37
37
  return children(scope);
38
38
  };
@@ -1,22 +1,5 @@
1
- import { defineMessages } from "../../locale/messages.js";
1
+ import { messages } from "../../locale/messages.js";
2
2
  //#region src/app/search/messages.ts
3
- const text = defineMessages({
4
- en: {
5
- search: "Search",
6
- searchOne: (name) => `Search ${name}`,
7
- searchTwo: (first, second) => `Search ${first} and ${second}`,
8
- searchMore: (first, second) => `Search ${first}, ${second} and more`,
9
- goTo: "Go to",
10
- create: "Create"
11
- },
12
- nl: {
13
- search: "Zoeken",
14
- searchOne: (name) => `Zoek in ${name}`,
15
- searchTwo: (first, second) => `Zoek in ${first} en ${second}`,
16
- searchMore: (first, second) => `Zoek in ${first}, ${second} en meer`,
17
- goTo: "Ga naar",
18
- create: "Maken"
19
- }
20
- });
3
+ const text = messages("app/search");
21
4
  //#endregion
22
5
  export { text };
@@ -18,7 +18,7 @@ const navigationHits = (meta, text$2, basePath = "") => {
18
18
  const view = meta.views[model.name];
19
19
  if (!view || view.nav?.hidden || !createOffered(view, meta.pages, meta.permissions[model.name] ?? allowEverything)) return [];
20
20
  const singular = view.names?.singular ?? humanize(model.name);
21
- const label = text("title", singular);
21
+ const label = text("title", { noun: singular });
22
22
  if (!matches(label, text$2) && !matches(singular, asked) && !matches(view.names?.plural ?? humanize(model.name), asked)) return [];
23
23
  return [{
24
24
  id: `new:${model.name}`,
@@ -19,9 +19,15 @@ const searchTargets = (meta) => Object.values(meta.resources).flatMap((model) =>
19
19
  const searchPlaceholder = (targets) => {
20
20
  const names = targets.map((target) => target.label.toLowerCase());
21
21
  if (names.length === 0) return text("search");
22
- if (names.length === 1) return text("searchOne", names[0]);
23
- if (names.length === 2) return text("searchTwo", names[0], names[1]);
24
- return text("searchMore", names[0], names[1]);
22
+ if (names.length === 1) return text("searchOne", { name: names[0] });
23
+ if (names.length === 2) return text("searchTwo", {
24
+ first: names[0],
25
+ second: names[1]
26
+ });
27
+ return text("searchMore", {
28
+ first: names[0],
29
+ second: names[1]
30
+ });
25
31
  };
26
32
  /** The list filter for the text: the server's partial-word `search(...)` over the resource's search fields. */
27
33
  const searchFilter = (text) => printFilter(where$1.search(text.trim()));
@@ -1,96 +1,5 @@
1
- import { defineMessages } from "../../locale/messages.js";
1
+ import { messages } from "../../locale/messages.js";
2
2
  //#region src/app/searches/messages.ts
3
- const text = defineMessages({
4
- en: {
5
- saveSearch: "Save search",
6
- saveAsNew: (noun) => `Save as new ${noun}`,
7
- updateName: (name) => `Update ${name}`,
8
- updateNameQuestion: (name) => `Update ${name}?`,
9
- updateNounQuestion: (noun) => `Update this ${noun}?`,
10
- couldNotLoadYour: (plural) => `Could not load your ${plural}`,
11
- noneYet: (plural) => `No ${plural} yet.`,
12
- somethingWrong: "Something went wrong",
13
- couldNotRename: "Could not rename the search",
14
- renameTitle: (title) => `Rename ${title}`,
15
- deleteTitle: (title) => `Delete ${title}`,
16
- unreadableFilter: "A filter that cannot be read",
17
- notFound: "Not found",
18
- noResource: "There is no resource called {}.",
19
- noSavedYet: (plural) => `No ${plural} yet. Filter the {} and save the search.`,
20
- on: "On",
21
- off: "Off",
22
- saved: (title) => `${title} saved`,
23
- couldNotChange: "Could not change the search",
24
- asMany: (plural) => `As many ${plural}`,
25
- more: (count, noun) => `${count} more ${noun}`,
26
- fewer: (count, noun) => `${count} fewer ${noun}`,
27
- cancel: "Cancel",
28
- save: "Save",
29
- optional: "Optional",
30
- added: "Added",
31
- removed: "Removed",
32
- changed: "Changed",
33
- filterChanges: "Filter changes",
34
- firstOf: (limit, total) => `The first ${limit} of ${total}.`,
35
- noPlural: (plural) => `No ${plural}.`,
36
- update: "Update",
37
- addedRemoved: (added, removed) => `${added} added, ${removed} removed`,
38
- searchSaved: "Search saved",
39
- openPlural: (plural) => `Open ${plural.toLowerCase()}`,
40
- couldNotSave: "Could not save the search",
41
- couldNotTakeOff: "Could not take the search off",
42
- searchUpdated: "Search updated",
43
- couldNotUpdate: "Could not update the search",
44
- noneMatch: (plural) => `No ${plural} match.`,
45
- noNew: (plural) => `No new ${plural} since you last looked.`,
46
- viewAll: "View all results",
47
- filters: "Filters"
48
- },
49
- nl: {
50
- saveSearch: "Zoekopdracht bewaren",
51
- saveAsNew: (noun) => `Als extra ${noun} bewaren`,
52
- updateName: (name) => `${name} bijwerken`,
53
- updateNameQuestion: (name) => `${name} bijwerken?`,
54
- updateNounQuestion: (noun) => `${noun} bijwerken?`,
55
- couldNotLoadYour: (plural) => `Kon je ${plural} niet laden`,
56
- noneYet: (plural) => `Nog geen ${plural}.`,
57
- somethingWrong: "Er ging iets mis",
58
- couldNotRename: "Kon de zoekopdracht niet hernoemen",
59
- renameTitle: (title) => `${title} hernoemen`,
60
- deleteTitle: (title) => `${title} verwijderen`,
61
- unreadableFilter: "Een filter dat niet kan worden gelezen",
62
- notFound: "Niet gevonden",
63
- noResource: "Er is geen onderdeel met de naam {}.",
64
- noSavedYet: (plural) => `Nog geen ${plural}. Filter de {} en bewaar de zoekopdracht.`,
65
- on: "Aan",
66
- off: "Uit",
67
- saved: (title) => `${title} bewaard`,
68
- couldNotChange: "Kon de zoekopdracht niet wijzigen",
69
- asMany: (plural) => `Evenveel ${plural}`,
70
- more: (count, noun) => `${count} ${noun} meer`,
71
- fewer: (count, noun) => `${count} ${noun} minder`,
72
- cancel: "Annuleren",
73
- save: "Bewaren",
74
- optional: "Optioneel",
75
- added: "Erbij",
76
- removed: "Eraf",
77
- changed: "Gewijzigd",
78
- filterChanges: "Wijzigingen in het filter",
79
- firstOf: (limit, total) => `De eerste ${limit} van ${total}.`,
80
- noPlural: (plural) => `Geen ${plural}.`,
81
- update: "Bijwerken",
82
- addedRemoved: (added, removed) => `${added} erbij, ${removed} eraf`,
83
- searchSaved: "Zoekopdracht bewaard",
84
- openPlural: (plural) => `${plural} openen`,
85
- couldNotSave: "Kon de zoekopdracht niet bewaren",
86
- couldNotTakeOff: "Kon de zoekopdracht niet weghalen",
87
- searchUpdated: "Zoekopdracht bijgewerkt",
88
- couldNotUpdate: "Kon de zoekopdracht niet bijwerken",
89
- noneMatch: (plural) => `Geen ${plural} gevonden.`,
90
- noNew: (plural) => `Geen nieuwe ${plural} sinds je laatst keek.`,
91
- viewAll: "Alle resultaten bekijken",
92
- filters: "Filters"
93
- }
94
- });
3
+ const text = messages("app/searches");
95
4
  //#endregion
96
5
  export { text };
@@ -51,7 +51,7 @@ const SaveSearchButton = ({ model, view, search, filter, chips, className }) =>
51
51
  });
52
52
  const opened = state.opened;
53
53
  if (opened) {
54
- const saveNewLabel = text("saveAsNew", state.noun);
54
+ const saveNewLabel = text("saveAsNew", { noun: state.noun });
55
55
  return /* @__PURE__ */ jsxs(Fragment$1, { children: [
56
56
  /* @__PURE__ */ jsxs(Button, {
57
57
  className,
@@ -63,7 +63,7 @@ const SaveSearchButton = ({ model, view, search, filter, chips, className }) =>
63
63
  "aria-hidden": true
64
64
  }), /* @__PURE__ */ jsx("span", {
65
65
  className: "max-w-60 truncate",
66
- children: text("updateName", opened.name ?? state.noun)
66
+ children: text("updateName", { name: opened.name ?? state.noun })
67
67
  })]
68
68
  }),
69
69
  /* @__PURE__ */ jsxs(Button, {
@@ -79,7 +79,7 @@ const SaveSearchButton = ({ model, view, search, filter, chips, className }) =>
79
79
  confirming && /* @__PURE__ */ jsx(UpdateSearchDialog, {
80
80
  model,
81
81
  view,
82
- title: opened.name ? text("updateNameQuestion", opened.name) : text("updateNounQuestion", state.noun),
82
+ title: opened.name ? text("updateNameQuestion", { name: opened.name }) : text("updateNounQuestion", { noun: state.noun }),
83
83
  before: opened.filter,
84
84
  after: filter,
85
85
  saveNewLabel,
@@ -51,13 +51,13 @@ const SavedSearchRows = ({ model, view, empty }) => {
51
51
  const plural = (view.names?.plural ?? humanize(model.name)).toLowerCase();
52
52
  if (!target) return null;
53
53
  if (saved.error) return /* @__PURE__ */ jsx(ErrorBanner, {
54
- title: text("couldNotLoadYour", plural),
54
+ title: text("couldNotLoadYour", { plural }),
55
55
  error: saved.error
56
56
  });
57
57
  if (!saved.data) return /* @__PURE__ */ jsx(Skeleton, { className: "h-40" });
58
58
  if (saved.data.length === 0) return /* @__PURE__ */ jsx("p", {
59
59
  className: "text-muted-foreground",
60
- children: empty ?? text("noneYet", plural)
60
+ children: empty ?? text("noneYet", { plural })
61
61
  });
62
62
  return /* @__PURE__ */ jsx("div", {
63
63
  className: "flex flex-col divide-y",
@@ -78,7 +78,7 @@ const SavedSearchSection = ({ model, view, of, target, targetView, row, recordKe
78
78
  }),
79
79
  canRename && nameField && /* @__PURE__ */ jsx(Button, {
80
80
  variant: "ghost",
81
- "aria-label": text("renameTitle", title),
81
+ "aria-label": text("renameTitle", { title }),
82
82
  "aria-haspopup": "dialog",
83
83
  onClick: () => setRenaming(true),
84
84
  children: /* @__PURE__ */ jsx(Pencil, {
@@ -88,7 +88,7 @@ const SavedSearchSection = ({ model, view, of, target, targetView, row, recordKe
88
88
  }),
89
89
  onDelete && /* @__PURE__ */ jsx(Button, {
90
90
  variant: "ghost",
91
- "aria-label": text("deleteTitle", title),
91
+ "aria-label": text("deleteTitle", { title }),
92
92
  onClick: () => onDelete(title),
93
93
  children: /* @__PURE__ */ jsx(Trash2, {
94
94
  className: "size-3.5",
@@ -99,7 +99,7 @@ const SavedSearchSection = ({ model, view, of, target, targetView, row, recordKe
99
99
  })]
100
100
  }),
101
101
  renaming && nameField && /* @__PURE__ */ jsx(SearchNameDialog, {
102
- title: text("renameTitle", title),
102
+ title: text("renameTitle", { title }),
103
103
  chips,
104
104
  label: view.fields[nameField.name]?.label ?? humanize(nameField.name),
105
105
  required: !nameField.nullable,