@sincpro/web-ui 0.1.0 → 1.0.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 (198) hide show
  1. package/README.md +40 -13
  2. package/dist/components/activity/Activity.d.ts +69 -0
  3. package/dist/components/activity/Activity.js +279 -0
  4. package/dist/components/activity/ActivityBadge.d.ts +16 -0
  5. package/dist/components/activity/ActivityBadge.js +29 -0
  6. package/dist/components/{chatter → activity}/Messages.d.ts +2 -2
  7. package/dist/components/{chatter → activity}/Messages.js +9 -6
  8. package/dist/components/activity/index.d.ts +4 -0
  9. package/dist/components/activity/index.js +5 -0
  10. package/dist/components/assist/AssistMark.d.ts +3 -3
  11. package/dist/components/assist/AssistMark.js +1 -1
  12. package/dist/components/assist/assist.d.ts +1 -1
  13. package/dist/components/assist/assist.js +1 -1
  14. package/dist/components/calendar/RecordCalendar.d.ts +48 -0
  15. package/dist/components/calendar/RecordCalendar.js +101 -0
  16. package/dist/components/calendar/index.d.ts +1 -0
  17. package/dist/components/calendar/index.js +1 -0
  18. package/dist/components/form/Sheet.d.ts +4 -0
  19. package/dist/components/form/Sheet.js +16 -5
  20. package/dist/components/gantt/RecordGantt.d.ts +44 -0
  21. package/dist/components/gantt/RecordGantt.js +110 -0
  22. package/dist/components/gantt/index.d.ts +1 -0
  23. package/dist/components/gantt/index.js +1 -0
  24. package/dist/components/index.d.ts +4 -1
  25. package/dist/components/index.js +4 -1
  26. package/dist/components/lines/LineItems.d.ts +45 -5
  27. package/dist/components/lines/LineItems.js +106 -18
  28. package/dist/components/listing/BoardColumns.d.ts +39 -0
  29. package/dist/components/listing/BoardColumns.js +138 -0
  30. package/dist/components/listing/Listing.js +1 -1
  31. package/dist/components/listing/ListingBar.d.ts +46 -2
  32. package/dist/components/listing/ListingBar.js +47 -5
  33. package/dist/components/listing/PivotExplorer.d.ts +34 -0
  34. package/dist/components/listing/PivotExplorer.js +86 -0
  35. package/dist/components/listing/RecordCard.d.ts +6 -8
  36. package/dist/components/listing/RecordCard.js +13 -7
  37. package/dist/components/listing/Row.d.ts +25 -2
  38. package/dist/components/listing/Row.js +30 -13
  39. package/dist/components/listing/index.d.ts +2 -0
  40. package/dist/components/listing/index.js +2 -0
  41. package/dist/components/listing/set.d.ts +1 -1
  42. package/dist/components/navigation/index.d.ts +0 -2
  43. package/dist/components/navigation/index.js +2 -3
  44. package/dist/components/record/RecordAudit.d.ts +17 -0
  45. package/dist/components/record/RecordAudit.js +27 -0
  46. package/dist/components/record/RecordHeader.d.ts +27 -17
  47. package/dist/components/record/RecordHeader.js +64 -20
  48. package/dist/components/record/RecordNotices.d.ts +37 -0
  49. package/dist/components/record/RecordNotices.js +75 -0
  50. package/dist/components/record/RecordRibbon.d.ts +13 -0
  51. package/dist/components/record/RecordRibbon.js +22 -0
  52. package/dist/components/record/ThumbBar.js +1 -1
  53. package/dist/components/record/index.d.ts +2 -0
  54. package/dist/components/record/index.js +2 -0
  55. package/dist/components/search/CriteriaChips.d.ts +6 -1
  56. package/dist/components/search/CriteriaChips.js +71 -20
  57. package/dist/components/search/SearchBar.d.ts +4 -1
  58. package/dist/components/search/SearchBar.js +15 -7
  59. package/dist/components/timeline/RecordTimeline.d.ts +60 -0
  60. package/dist/components/timeline/RecordTimeline.js +214 -0
  61. package/dist/components/timeline/TimelineToolbar.d.ts +30 -0
  62. package/dist/components/timeline/TimelineToolbar.js +31 -0
  63. package/dist/components/timeline/index.d.ts +3 -0
  64. package/dist/components/timeline/index.js +3 -0
  65. package/dist/components/timeline/time.d.ts +43 -0
  66. package/dist/components/timeline/time.js +135 -0
  67. package/dist/foundations/copy.d.ts +194 -18
  68. package/dist/foundations/copy.es.js +142 -15
  69. package/dist/foundations/copy.js +133 -11
  70. package/dist/foundations/index.d.ts +1 -1
  71. package/dist/foundations/match.d.ts +23 -0
  72. package/dist/foundations/match.js +63 -0
  73. package/dist/foundations/slots.d.ts +1 -1
  74. package/dist/foundations/slots.js +8 -3
  75. package/dist/foundations/types.d.ts +7 -0
  76. package/dist/foundations/types.js +0 -36
  77. package/dist/primitives/block/index.d.ts +1 -1
  78. package/dist/primitives/block/index.js +1 -1
  79. package/dist/primitives/cell/CellStack.d.ts +7 -1
  80. package/dist/primitives/cell/CellStack.js +5 -2
  81. package/dist/primitives/choice/ComboBox.d.ts +3 -0
  82. package/dist/primitives/choice/ComboBox.js +10 -6
  83. package/dist/primitives/choice/KanbanState.d.ts +14 -0
  84. package/dist/primitives/choice/KanbanState.js +37 -0
  85. package/dist/primitives/choice/Priority.d.ts +20 -0
  86. package/dist/primitives/choice/Priority.js +41 -0
  87. package/dist/primitives/choice/SearchField.d.ts +10 -1
  88. package/dist/primitives/choice/SearchField.js +21 -2
  89. package/dist/primitives/choice/Slider.d.ts +6 -1
  90. package/dist/primitives/choice/Slider.js +2 -2
  91. package/dist/primitives/choice/index.d.ts +2 -0
  92. package/dist/primitives/choice/index.js +2 -0
  93. package/dist/primitives/date/Calendar.js +30 -6
  94. package/dist/primitives/date/DatePicker.d.ts +11 -3
  95. package/dist/primitives/date/DatePicker.js +12 -8
  96. package/dist/primitives/date/DateTime.d.ts +35 -0
  97. package/dist/primitives/date/DateTime.js +100 -0
  98. package/dist/primitives/date/index.d.ts +1 -0
  99. package/dist/primitives/date/index.js +4 -2
  100. package/dist/primitives/dialog/Dialog.d.ts +9 -3
  101. package/dist/primitives/dialog/Dialog.js +41 -5
  102. package/dist/primitives/field/DropZone.js +1 -1
  103. package/dist/primitives/field/Field.d.ts +14 -2
  104. package/dist/primitives/field/Field.js +25 -14
  105. package/dist/primitives/field/copy.d.ts +16 -0
  106. package/dist/primitives/field/copy.js +69 -0
  107. package/dist/primitives/field/index.d.ts +2 -0
  108. package/dist/primitives/field/index.js +4 -0
  109. package/dist/primitives/field/note.d.ts +55 -0
  110. package/dist/primitives/field/note.js +117 -0
  111. package/dist/primitives/index.d.ts +1 -0
  112. package/dist/primitives/index.js +1 -0
  113. package/dist/primitives/menu/Menu.d.ts +28 -0
  114. package/dist/primitives/menu/Menu.js +47 -17
  115. package/dist/primitives/notice/Callout.js +1 -1
  116. package/dist/primitives/notice/Flag.d.ts +13 -0
  117. package/dist/primitives/notice/Flag.js +31 -0
  118. package/dist/primitives/notice/index.d.ts +2 -1
  119. package/dist/primitives/notice/index.js +2 -1
  120. package/dist/primitives/overlay/Preview.d.ts +19 -0
  121. package/dist/primitives/overlay/Preview.js +69 -0
  122. package/dist/primitives/overlay/index.d.ts +1 -0
  123. package/dist/primitives/overlay/index.js +3 -1
  124. package/dist/primitives/picker/MatchedText.d.ts +10 -0
  125. package/dist/primitives/picker/MatchedText.js +12 -0
  126. package/dist/primitives/picker/Picker.d.ts +67 -4
  127. package/dist/primitives/picker/Picker.js +142 -23
  128. package/dist/primitives/table/CellCopy.d.ts +20 -0
  129. package/dist/primitives/table/CellCopy.js +23 -0
  130. package/dist/primitives/table/DataTable.d.ts +55 -1
  131. package/dist/primitives/table/DataTable.js +126 -40
  132. package/dist/primitives/table/EditableTable.d.ts +102 -2
  133. package/dist/primitives/table/EditableTable.js +287 -32
  134. package/dist/primitives/table/ReportTable.js +2 -1
  135. package/dist/primitives/table/RowActions.js +7 -2
  136. package/dist/primitives/table/SheetTable.d.ts +4 -1
  137. package/dist/primitives/table/SheetTable.js +38 -5
  138. package/dist/primitives/table/Table.d.ts +5 -0
  139. package/dist/primitives/table/Table.js +17 -8
  140. package/dist/primitives/table/index.d.ts +2 -2
  141. package/dist/primitives/table/index.js +1 -1
  142. package/dist/primitives/tabs/Tabs.d.ts +2 -2
  143. package/dist/primitives/tabs/Tabs.js +1 -1
  144. package/dist/primitives/tag/Tags.d.ts +2 -0
  145. package/dist/primitives/tag/Tags.js +2 -1
  146. package/dist/primitives/tag/TagsField.d.ts +13 -0
  147. package/dist/primitives/tag/TagsField.js +39 -10
  148. package/dist/primitives/tag/choices.d.ts +2 -0
  149. package/dist/primitives/tree/Tree.d.ts +56 -0
  150. package/dist/primitives/tree/Tree.js +74 -0
  151. package/dist/primitives/tree/index.d.ts +1 -0
  152. package/dist/primitives/tree/index.js +3 -0
  153. package/dist/primitives/value/Avatar.d.ts +16 -0
  154. package/dist/primitives/value/Avatar.js +91 -0
  155. package/dist/primitives/value/Copyable.d.ts +11 -0
  156. package/dist/primitives/value/Copyable.js +27 -6
  157. package/dist/primitives/value/Fecha.js +10 -1
  158. package/dist/primitives/value/Person.d.ts +6 -51
  159. package/dist/primitives/value/Person.js +9 -148
  160. package/dist/primitives/value/ProgressBar.d.ts +31 -0
  161. package/dist/primitives/value/ProgressBar.js +53 -0
  162. package/dist/primitives/value/Relation.d.ts +22 -5
  163. package/dist/primitives/value/Relation.js +42 -14
  164. package/dist/primitives/value/Totals.d.ts +102 -7
  165. package/dist/primitives/value/Totals.js +52 -2
  166. package/dist/primitives/value/Value.d.ts +0 -37
  167. package/dist/primitives/value/Value.js +0 -39
  168. package/dist/primitives/value/contact.d.ts +30 -0
  169. package/dist/primitives/value/contact.js +51 -0
  170. package/dist/primitives/value/index.d.ts +5 -4
  171. package/dist/primitives/value/index.js +5 -4
  172. package/dist/tokens.css +179 -7
  173. package/dist/views/list/List.d.ts +32 -3
  174. package/dist/views/list/List.js +51 -7
  175. package/dist/views/list/ListView.d.ts +1 -1
  176. package/dist/views/list/ListView.js +70 -13
  177. package/dist/views/list/columns.js +8 -1
  178. package/dist/views/list/derive.d.ts +12 -1
  179. package/dist/views/list/derive.js +29 -3
  180. package/dist/views/list/presentations.d.ts +5 -2
  181. package/dist/views/list/presentations.js +35 -3
  182. package/dist/views/list/types.d.ts +57 -1
  183. package/dist/views/list/useNarrowList.d.ts +10 -0
  184. package/dist/views/list/useNarrowList.js +20 -6
  185. package/dist/views/record/Record.d.ts +41 -8
  186. package/dist/views/record/Record.js +113 -28
  187. package/dist/views/record/index.d.ts +1 -1
  188. package/package.json +15 -4
  189. package/dist/components/chatter/Chatter.d.ts +0 -161
  190. package/dist/components/chatter/Chatter.js +0 -232
  191. package/dist/components/chatter/index.d.ts +0 -3
  192. package/dist/components/chatter/index.js +0 -4
  193. package/dist/components/navigation/CommandPalette.d.ts +0 -40
  194. package/dist/components/navigation/CommandPalette.js +0 -114
  195. package/dist/components/navigation/commands.d.ts +0 -30
  196. package/dist/components/navigation/commands.js +0 -30
  197. /package/dist/components/{chatter → activity}/Timeline.d.ts +0 -0
  198. /package/dist/components/{chatter → activity}/Timeline.js +0 -0
@@ -27,6 +27,9 @@ export type UiCopy = {
27
27
  report: string;
28
28
  /** Dos preguntas a la vez: montones cruzados por montones. */
29
29
  pivot: string;
30
+ calendar: string;
31
+ gantt: string;
32
+ timeline: string;
30
33
  chart: string;
31
34
  group: string;
32
35
  };
@@ -48,6 +51,8 @@ export type UiCopy = {
48
51
  named: string;
49
52
  more: string;
50
53
  moreOf: string;
54
+ /** «Elegir los 187 que coinciden»: the whole result, not the page. */
55
+ allMatching: string;
51
56
  };
52
57
  pager: {
53
58
  size: string;
@@ -69,6 +74,16 @@ export type UiCopy = {
69
74
  /** Read aloud next to a stage that failed: the red fill alone says nothing to a
70
75
  * screen reader. */
71
76
  failed: string;
77
+ /** The title of the list of the record's notices, opened from the rail. */
78
+ notices: string;
79
+ /** The rail's indicator: how many notices, singular and plural. */
80
+ noticeOne: string;
81
+ noticeMany: string;
82
+ /** The accessible name of the band of what is wrong with the record. */
83
+ blocking: string;
84
+ /** The paper's last line (`Record.Audit`): «{by}» and «{at}» are already written. */
85
+ created: string;
86
+ updated: string;
72
87
  };
73
88
  shell: {
74
89
  modules: string;
@@ -81,8 +96,6 @@ export type UiCopy = {
81
96
  closePreview: string;
82
97
  account: string;
83
98
  openAsPanel: string;
84
- /** The accessible name of the command palette's dialog. */
85
- commandPalette: string;
86
99
  };
87
100
  field: {
88
101
  drop: string;
@@ -105,6 +118,10 @@ export type UiCopy = {
105
118
  choice: {
106
119
  /** What an open list says when what was typed matches nothing. */
107
120
  noResults: string;
121
+ /** The name of a search box nobody labelled — no `Field`, no `aria-label`, no
122
+ * placeholder. A field a screen reader announces as «edit text» is a field nobody
123
+ * can find. */
124
+ search: string;
108
125
  };
109
126
  search: {
110
127
  tools: string;
@@ -120,6 +137,14 @@ export type UiCopy = {
120
137
  groupedBy: string;
121
138
  /** Lo que encabeza el corchete de los recortes. */
122
139
  narrowedBy: string;
140
+ /** The «+N» chip that unfolds the facets the bar folded away. */
141
+ moreFacets: string;
142
+ /** Folds them back. */
143
+ fewerFacets: string;
144
+ /** The × of the grouping chain: drops every level at once. */
145
+ removeGrouping: string;
146
+ /** The × at the end of the bar: drops every filter and level. */
147
+ clearAll: string;
123
148
  /** Cambiar la conjunción entre búsquedas: todas a la vez, o cualquiera. */
124
149
  switchJoin: string;
125
150
  /**
@@ -183,6 +208,8 @@ export type UiCopy = {
183
208
  retry: string;
184
209
  };
185
210
  table: {
211
+ /** Under an editable list: write a new record as one more row. */
212
+ add: string;
186
213
  row: string;
187
214
  rows: string;
188
215
  yes: string;
@@ -212,9 +239,19 @@ export type UiCopy = {
212
239
  * filtro. Decir «todavía no hay nada» a quien tiene ciento ochenta y
213
240
  * escribió mal un nombre es contestar otra pregunta. */
214
241
  emptyFiltered: string;
242
+ /** How many records an embedded list holds, on its one-line bar. Two keys and not
243
+ * one: «1 records» is wrong in every language this ships in. */
244
+ countOne: string;
245
+ count: string;
246
+ /** A row's two ways in, named on their buttons: a look without leaving the list, and the
247
+ * record itself. */
248
+ peek: string;
249
+ open: string;
215
250
  };
216
251
  /** La historia de un registro: eventos y mensajes. */
217
- chatter: {
252
+ /** The panel of everything around a record: its notices, its conversation and its
253
+ * history (`Activity`). */
254
+ activity: {
218
255
  /** Quién hizo algo que no hizo nadie. Es una respuesta, no un hueco. */
219
256
  bySystem: string;
220
257
  /** Abrir y cerrar el error completo. */
@@ -232,18 +269,37 @@ export type UiCopy = {
232
269
  noRecipients: string;
233
270
  /** El campo vacío de un mensaje que sí sale. */
234
271
  messagePlaceholder: string;
235
- /** Un hilo donde todavía no pasó nada. */
236
- empty: string;
237
- /** The default name of the chatter, and what its fold and unfold buttons say
238
- * about it. */
239
- history: string;
272
+ /** Nobody wrote yet, and nothing was logged yet: two different answers. */
273
+ emptyMessages: string;
274
+ emptyEvents: string;
275
+ /** The panel's name, and what its fold and unfold buttons say about it. */
276
+ title: string;
240
277
  open: string;
241
278
  fold: string;
242
- /** The three tabs: everything mixed, only what people wrote, only what the
243
- * system logged. */
244
- tabAll: string;
245
- tabMessages: string;
246
- tabEvents: string;
279
+ /** The parts of the timeline: what is true now, what people wrote, what the system
280
+ * logged. */
281
+ alerts: string;
282
+ conversation: string;
283
+ history: string;
284
+ /** The name of the history, under the notices. */
285
+ viewTimeline: string;
286
+ /** The notices beyond the first three, folded: «Ver 4 más». */
287
+ moreAlerts: string;
288
+ fewerAlerts: string;
289
+ /** The timeline's filters: everything, or one kind of entry. */
290
+ filters: string;
291
+ filterAll: string;
292
+ filterConversation: string;
293
+ filterNotes: string;
294
+ filterEvents: string;
295
+ /** The day separators of the timeline that are not a date. */
296
+ today: string;
297
+ yesterday: string;
298
+ /** A filter that leaves nothing. */
299
+ emptyFilter: string;
300
+ /** A note in the timeline takes you to what it belongs to. `{owner}` is that field or
301
+ * line. */
302
+ goTo: string;
247
303
  /** The composer's buttons. */
248
304
  send: string;
249
305
  sending: string;
@@ -255,6 +311,10 @@ export type UiCopy = {
255
311
  done: string;
256
312
  /** Sin portapapeles —contexto no seguro, permiso negado— se dice. */
257
313
  failed: string;
314
+ /** The copy button of a field, named by the field: «Copiar «Cliente»». */
315
+ field: string;
316
+ /** A field with nothing in it: said, not a silent success. */
317
+ empty: string;
258
318
  };
259
319
  /** Ordenar, cuando la presentación no tiene encabezados donde hacer clic. */
260
320
  sorting: {
@@ -326,8 +386,13 @@ export type UiCopy = {
326
386
  };
327
387
  editable: {
328
388
  add: string;
389
+ /** The spreadsheet's: a row, not a line of a document. */
390
+ addRow: string;
329
391
  empty: string;
330
392
  remove: string;
393
+ /** The grip that changes a row's place (`EditableTable onReorder`). */
394
+ reorder: string;
395
+ reorderHint: string;
331
396
  };
332
397
  picker: {
333
398
  placeholder: string;
@@ -338,6 +403,23 @@ export type UiCopy = {
338
403
  refine: string;
339
404
  open: string;
340
405
  browseAll: string;
406
+ /** The option that creates a record from the typed text. `{name}` is that text. */
407
+ create: string;
408
+ /** The option that opens the full form of a new record, with the typed text as its name. */
409
+ createAndEdit: string;
410
+ /** Why an option whose name does not match is listed: the hidden code it matched. */
411
+ matched: string;
412
+ /** The quiet row at the end of a list that is fetching its next page. */
413
+ loadingMore: string;
414
+ /** Where a many2one's record opens (`OpenTarget`), on its buttons and its menu. */
415
+ openIn: {
416
+ modal: string;
417
+ peek: string;
418
+ page: string;
419
+ side: string;
420
+ window: string;
421
+ };
422
+ openMore: string;
341
423
  };
342
424
  cell: {
343
425
  missing: string;
@@ -445,17 +527,22 @@ export type UiCopy = {
445
527
  rows: string;
446
528
  /** Abrir un cruce: qué filas cayeron ahí. */
447
529
  open: string;
530
+ /** The pivot's own controls (`PivotExplorer`). */
531
+ measures: string;
532
+ rowsAxis: string;
533
+ columnsAxis: string;
534
+ addLevel: string;
535
+ removeLevel: string;
536
+ swap: string;
537
+ download: string;
538
+ fromSearch: string;
448
539
  };
449
540
  /** A person as a value: who is not there, and the ways to reach who is. */
450
541
  person: {
451
542
  unassigned: string;
452
- /** The title of the contact card that opens from a person. */
453
- contact: string;
454
543
  email: string;
455
544
  call: string;
456
545
  whatsapp: string;
457
- /** Go to the person's own record. */
458
- open: string;
459
546
  };
460
547
  /** The sub-list of lines inside a record: the lines of an order, of an entry. */
461
548
  lines: {
@@ -467,6 +554,12 @@ export type UiCopy = {
467
554
  empty: string;
468
555
  /** Closing the line being edited. */
469
556
  done: string;
557
+ /** Sections and notes among the lines (Odoo's `display_type`). */
558
+ addSection: string;
559
+ addNote: string;
560
+ /** The names of their text field, for a screen reader. */
561
+ section: string;
562
+ note: string;
470
563
  };
471
564
  /** `LineItems`, beyond the `lines` keys: counting, the editor of a new line, removing. */
472
565
  lineItems: {
@@ -486,6 +579,60 @@ export type UiCopy = {
486
579
  table: string;
487
580
  };
488
581
  /** A field that points to another record: going there, and pointing nowhere. */
582
+ /** The stars of `Priority`. */
583
+ priority: {
584
+ label: string;
585
+ level: string;
586
+ none: string;
587
+ };
588
+ /** The board by stages (`BoardColumns`). */
589
+ board: {
590
+ emptyLane: string;
591
+ moveHint: string;
592
+ moved: string;
593
+ quickCreate: string;
594
+ quickPlaceholder: string;
595
+ fold: string;
596
+ unfold: string;
597
+ addColumn: string;
598
+ addColumnPlaceholder: string;
599
+ };
600
+ /** A timeline of records and its toolbar (`RecordTimeline`, `TimelineToolbar`). */
601
+ timeline: {
602
+ prev: string;
603
+ next: string;
604
+ today: string;
605
+ goTo: string;
606
+ zoom: string;
607
+ zoomIn: string;
608
+ zoomOut: string;
609
+ fullscreen: string;
610
+ exitFullscreen: string;
611
+ scale: string;
612
+ scales: {
613
+ day: string;
614
+ week: string;
615
+ month: string;
616
+ year: string;
617
+ };
618
+ moveHint: string;
619
+ moved: string;
620
+ create: string;
621
+ };
622
+ /** Odoo's kanban state — the traffic light on a card (`KanbanState`). */
623
+ kanbanState: {
624
+ label: string;
625
+ normal: string;
626
+ done: string;
627
+ blocked: string;
628
+ };
629
+ /** The planned activities of a record, on its card (`ActivityBadge`). */
630
+ activityState: {
631
+ none: string;
632
+ overdue: string;
633
+ today: string;
634
+ planned: string;
635
+ };
489
636
  relation: {
490
637
  open: string;
491
638
  /** No record chosen. It is an answer, not a hole. */
@@ -496,6 +643,23 @@ export type UiCopy = {
496
643
  /** The name of the button that opens it, and of the card. `{name}` is the record. */
497
644
  summary: string;
498
645
  };
646
+ /** The money summary of a document once something is applied against it. */
647
+ totals: {
648
+ /** Read, not shown, before a deducted amount: «Pagado el 12/10/2026, menos Bs. 100». */
649
+ less: string;
650
+ /** The name of a deduction's `i`. `{label}` is the deduction — «Pagado el 12/10/2026». */
651
+ details: string;
652
+ /** Go to the applied record, from its detail. */
653
+ open: string;
654
+ /** Take a deduction back off the document, from its detail. */
655
+ unlink: string;
656
+ /** The title of what could still be applied. */
657
+ credits: string;
658
+ /** The visible word on each available credit's button. */
659
+ apply: string;
660
+ /** Its accessible name, which says WHICH. `{label}` is the credit — «NC/2026/0012». */
661
+ applyCredit: string;
662
+ };
499
663
  /** Changing a value where it is drawn: one more tag of a many2many, one cell of a list. */
500
664
  inlineEdit: {
501
665
  /** The inline input of a tags field, while it holds no tag yet. */
@@ -513,6 +677,11 @@ export type UiCopy = {
513
677
  light: string;
514
678
  dark: string;
515
679
  };
680
+ /** A hierarchy of records — a chart of accounts, product categories, locations. */
681
+ tree: {
682
+ /** What an empty tree says, unless the screen says something closer to its domain. */
683
+ empty: string;
684
+ };
516
685
  /** The assistant acting inside a screen: what it suggests, what it proposes to change,
517
686
  * what it set, and what it is still working on. */
518
687
  assist: {
@@ -589,7 +758,7 @@ export type UiCopyOverride = {
589
758
  ops?: Record<string, string>;
590
759
  sorting?: Partial<UiCopy["sorting"]>;
591
760
  copyable?: Partial<UiCopy["copyable"]>;
592
- chatter?: Partial<UiCopy["chatter"]>;
761
+ activity?: Partial<UiCopy["activity"]>;
593
762
  editable?: Partial<UiCopy["editable"]>;
594
763
  picker?: Partial<UiCopy["picker"]>;
595
764
  cell?: Partial<UiCopy["cell"]>;
@@ -601,10 +770,17 @@ export type UiCopyOverride = {
601
770
  person?: Partial<UiCopy["person"]>;
602
771
  lines?: Partial<UiCopy["lines"]>;
603
772
  lineItems?: Partial<UiCopy["lineItems"]>;
773
+ priority?: Partial<UiCopy["priority"]>;
774
+ board?: Partial<UiCopy["board"]>;
775
+ kanbanState?: Partial<UiCopy["kanbanState"]>;
776
+ timeline?: Partial<UiCopy["timeline"]>;
777
+ activityState?: Partial<UiCopy["activityState"]>;
604
778
  relation?: Partial<UiCopy["relation"]>;
605
779
  relationCard?: Partial<UiCopy["relationCard"]>;
780
+ totals?: Partial<UiCopy["totals"]>;
606
781
  inlineEdit?: Partial<UiCopy["inlineEdit"]>;
607
782
  theme?: Partial<UiCopy["theme"]>;
783
+ tree?: Partial<UiCopy["tree"]>;
608
784
  assist?: Partial<UiCopy["assist"]>;
609
785
  };
610
786
  export declare function mergeCopy(over?: UiCopyOverride): UiCopy;
@@ -31,6 +31,9 @@ export const SPANISH_COPY = {
31
31
  sheet: "Planilla",
32
32
  report: "Reporte",
33
33
  pivot: "Pivote",
34
+ calendar: "Calendario",
35
+ gantt: "Gantt",
36
+ timeline: "Planificación",
34
37
  chart: "Gráfico",
35
38
  group: "Cómo verlo",
36
39
  },
@@ -54,6 +57,7 @@ export const SPANISH_COPY = {
54
57
  named: "Elegir {name}",
55
58
  more: "Más acciones",
56
59
  moreOf: "Más acciones de {name}",
60
+ allMatching: "Elegir los {count} que coinciden",
57
61
  },
58
62
  pager: {
59
63
  size: "Filas por página",
@@ -72,6 +76,12 @@ export const SPANISH_COPY = {
72
76
  saving: "Guardando…",
73
77
  discard: "Descartar",
74
78
  failed: "falló",
79
+ notices: "Avisos sobre este registro",
80
+ noticeOne: "{count} aviso",
81
+ noticeMany: "{count} avisos",
82
+ blocking: "Lo que está mal en este registro",
83
+ created: "Creado por {by} · {at}",
84
+ updated: "Modificado por última vez por {by} · {at}",
75
85
  },
76
86
  shell: {
77
87
  close: "Cerrar",
@@ -84,7 +94,6 @@ export const SPANISH_COPY = {
84
94
  closePreview: "Cerrar la vista previa",
85
95
  account: "Mi cuenta",
86
96
  openAsPanel: "Abrir como panel",
87
- commandPalette: "Paleta de comandos",
88
97
  },
89
98
  field: {
90
99
  drop: "Soltá un archivo acá, o elegí uno.",
@@ -100,6 +109,7 @@ export const SPANISH_COPY = {
100
109
  },
101
110
  choice: {
102
111
  noResults: "Sin resultados",
112
+ search: "Buscar",
103
113
  },
104
114
  dates: {
105
115
  last: "últimos {count} {unit}",
@@ -126,6 +136,10 @@ export const SPANISH_COPY = {
126
136
  or: "o",
127
137
  groupedBy: "agrupado por",
128
138
  narrowedBy: "mostrando",
139
+ moreFacets: "+{count}",
140
+ fewerFacets: "ver menos",
141
+ removeGrouping: "Dejar de agrupar",
142
+ clearAll: "Quitar todos los filtros y el agrupado",
129
143
  placeholder: "buscar…",
130
144
  switchJoin: "Todas, cualquiera o ninguna",
131
145
  joins: { all: "todas", any: "cualquiera", none: "ninguna" },
@@ -172,6 +186,7 @@ export const SPANISH_COPY = {
172
186
  retry: "Reintentar",
173
187
  },
174
188
  table: {
189
+ add: "Agregar",
175
190
  row: "fila",
176
191
  rows: "filas",
177
192
  yes: "sí",
@@ -185,8 +200,12 @@ export const SPANISH_COPY = {
185
200
  list: {
186
201
  empty: "Todavía no hay nada acá.",
187
202
  emptyFiltered: "Nada coincide con lo que está puesto.",
203
+ countOne: "1 registro",
204
+ count: "{count} registros",
205
+ peek: "Vista previa",
206
+ open: "Abrir",
188
207
  },
189
- chatter: {
208
+ activity: {
190
209
  bySystem: "el sistema",
191
210
  more: "ver el error completo",
192
211
  less: "ver menos",
@@ -197,18 +216,37 @@ export const SPANISH_COPY = {
197
216
  recipients: "Quiénes lo reciben",
198
217
  noRecipients: "todavía no hay a quién mandarlo",
199
218
  messagePlaceholder: "Escribí un mensaje…",
200
- empty: "Todavía no pasó nada acá.",
201
- history: "historial",
202
- open: "Abrir el {label}",
203
- fold: "Plegar el {label}",
204
- tabAll: "todo",
205
- tabMessages: "mensajes",
206
- tabEvents: "eventos",
219
+ emptyMessages: "Todavía nadie escribió acá.",
220
+ emptyEvents: "Todavía no se registró nada.",
221
+ title: "Actividad",
222
+ open: "Abrir {label}",
223
+ fold: "Plegar {label}",
224
+ alerts: "Avisos",
225
+ conversation: "Conversación",
226
+ history: "Historial",
227
+ viewTimeline: "Línea de tiempo",
228
+ moreAlerts: "Ver {count} más",
229
+ fewerAlerts: "Ver menos",
230
+ filters: "Mostrar",
231
+ filterAll: "Todo",
232
+ filterConversation: "Mensajes",
233
+ filterNotes: "Notas",
234
+ filterEvents: "Eventos",
235
+ today: "Hoy",
236
+ yesterday: "Ayer",
237
+ emptyFilter: "Todavía no hay nada de esto.",
238
+ goTo: "Ir a {owner}",
207
239
  send: "Enviar",
208
240
  sending: "Enviando…",
209
241
  cancel: "Cancelar",
210
242
  },
211
- copyable: { label: "Copiar", done: "Copiado", failed: "No se pudo copiar" },
243
+ copyable: {
244
+ label: "Copiar",
245
+ done: "Copiado",
246
+ failed: "No se pudo copiar",
247
+ field: "Copiar «{label}»",
248
+ empty: "No hay nada que copiar",
249
+ },
212
250
  sorting: {
213
251
  label: "Ordenar",
214
252
  by: "ordenar por",
@@ -233,7 +271,14 @@ export const SPANISH_COPY = {
233
271
  clear: "dejar de agrupar",
234
272
  grain: "con qué corte",
235
273
  },
236
- editable: { add: "agregar", empty: "nada todavía", remove: "quitar" },
274
+ editable: {
275
+ add: "agregar",
276
+ addRow: "agregar una fila",
277
+ empty: "nada todavía",
278
+ remove: "quitar",
279
+ reorder: "Mover la fila",
280
+ reorderHint: "Arrastrala, o Alt + ↑ / ↓",
281
+ },
237
282
  picker: {
238
283
  placeholder: "elegí uno…",
239
284
  empty: "Nada coincide.",
@@ -242,7 +287,19 @@ export const SPANISH_COPY = {
242
287
  more: "{count} más",
243
288
  refine: "— afiná el filtro",
244
289
  open: "Abrir",
245
- browseAll: "ver todos…",
290
+ browseAll: "Buscar más…",
291
+ create: "Crear «{name}»",
292
+ createAndEdit: "Crear y editar…",
293
+ matched: "coincide",
294
+ loadingMore: "cargando más…",
295
+ openIn: {
296
+ modal: "Abrir en un modal",
297
+ peek: "Vista previa",
298
+ page: "Abrir como página",
299
+ side: "Abrir al costado",
300
+ window: "Abrir en una ventana",
301
+ },
302
+ openMore: "Abrir en…",
246
303
  },
247
304
  cell: { empty: "—", missing: "falta", emptyBin: "(vacío)" },
248
305
  dialog: {
@@ -304,14 +361,24 @@ export const SPANISH_COPY = {
304
361
  dropOrderBy: "quitar el orden por {field}",
305
362
  dropLevel: "quitar el nivel {field}",
306
363
  },
307
- pivot: { total: "Total", rows: "filas", open: "Abrir {row} × {column}" },
364
+ pivot: {
365
+ total: "Total",
366
+ rows: "filas",
367
+ open: "Abrir {row} × {column}",
368
+ measures: "Medidas",
369
+ rowsAxis: "Filas",
370
+ columnsAxis: "Columnas",
371
+ addLevel: "Agregar a {axis}",
372
+ removeLevel: "Quitar {level}",
373
+ swap: "Intercambiar filas y columnas",
374
+ download: "Descargar",
375
+ fromSearch: "del agrupado del buscador",
376
+ },
308
377
  person: {
309
378
  unassigned: "sin asignar",
310
- contact: "Contacto",
311
379
  email: "Escribir un correo",
312
380
  call: "Llamar",
313
381
  whatsapp: "WhatsApp",
314
- open: "Ver ficha",
315
382
  },
316
383
  lines: {
317
384
  add: "Agregar una línea",
@@ -320,6 +387,10 @@ export const SPANISH_COPY = {
320
387
  remove: "Quitar la línea",
321
388
  empty: "Todavía no hay líneas.",
322
389
  done: "Listo",
390
+ addSection: "Agregar una sección",
391
+ addNote: "Agregar una nota",
392
+ section: "Sección",
393
+ note: "Nota",
323
394
  },
324
395
  lineItems: {
325
396
  one: "{count} línea",
@@ -331,8 +402,61 @@ export const SPANISH_COPY = {
331
402
  undo: "Deshacer",
332
403
  table: "Líneas",
333
404
  },
405
+ priority: {
406
+ label: "Prioridad",
407
+ level: "{value} de {max}",
408
+ none: "sin prioridad",
409
+ },
410
+ board: {
411
+ emptyLane: "Nada en esta etapa.",
412
+ moveHint: "Arrastrala, o Alt + ← / → para pasarla a otra etapa",
413
+ moved: "{name} pasó a {column}",
414
+ quickCreate: "Crear rápido en {column}",
415
+ quickPlaceholder: "Nombre… (Enter crea)",
416
+ fold: "Plegar {column}",
417
+ unfold: "Desplegar {column}",
418
+ addColumn: "Agregar etapa",
419
+ addColumnPlaceholder: "Nombre de la etapa… (Enter agrega)",
420
+ },
421
+ timeline: {
422
+ prev: "Anterior",
423
+ next: "Siguiente",
424
+ today: "Hoy",
425
+ goTo: "Ir a una fecha",
426
+ zoom: "Zoom",
427
+ zoomIn: "Acercar",
428
+ zoomOut: "Alejar",
429
+ fullscreen: "Pantalla completa",
430
+ exitFullscreen: "Salir de pantalla completa",
431
+ scale: "Escala",
432
+ scales: { day: "Día", week: "Semana", month: "Mes", year: "Año" },
433
+ moveHint: "Arrastrala para moverla, su borde derecho para estirarla; Alt + flechas con el teclado",
434
+ moved: "{name}: {range}",
435
+ create: "Crear en {row} · {at}",
436
+ },
437
+ kanbanState: {
438
+ label: "Estado",
439
+ normal: "En curso",
440
+ done: "Listo para la siguiente etapa",
441
+ blocked: "Bloqueado",
442
+ },
443
+ activityState: {
444
+ none: "Sin actividades",
445
+ overdue: "Vencida",
446
+ today: "Para hoy",
447
+ planned: "Planificada",
448
+ },
334
449
  relation: { open: "Abrir", none: "Sin asignar" },
335
450
  relationCard: { summary: "Resumen de {name}" },
451
+ totals: {
452
+ less: "menos",
453
+ details: "Detalle: {label}",
454
+ open: "Abrir",
455
+ unlink: "Desvincular",
456
+ credits: "Créditos pendientes",
457
+ apply: "Aplicar",
458
+ applyCredit: "Aplicar {label}",
459
+ },
336
460
  inlineEdit: {
337
461
  addTag: "Agregar…",
338
462
  createTag: "Crear «{name}»",
@@ -344,6 +468,9 @@ export const SPANISH_COPY = {
344
468
  light: "Claro",
345
469
  dark: "Oscuro",
346
470
  },
471
+ tree: {
472
+ empty: "Todavía no hay nada acá.",
473
+ },
347
474
  assist: {
348
475
  assistant: "Asistente",
349
476
  suggests: "sugiere",