@sincpro/web-ui 0.2.0 → 1.1.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 (132) hide show
  1. package/README.md +3 -3
  2. package/dist/components/activity/ActivityBadge.d.ts +16 -0
  3. package/dist/components/activity/ActivityBadge.js +29 -0
  4. package/dist/components/activity/index.d.ts +1 -0
  5. package/dist/components/activity/index.js +1 -0
  6. package/dist/components/calendar/RecordCalendar.d.ts +48 -0
  7. package/dist/components/calendar/RecordCalendar.js +101 -0
  8. package/dist/components/calendar/index.d.ts +1 -0
  9. package/dist/components/calendar/index.js +1 -0
  10. package/dist/components/form/Sheet.js +5 -1
  11. package/dist/components/gantt/RecordGantt.d.ts +44 -0
  12. package/dist/components/gantt/RecordGantt.js +110 -0
  13. package/dist/components/gantt/index.d.ts +1 -0
  14. package/dist/components/gantt/index.js +1 -0
  15. package/dist/components/index.d.ts +3 -0
  16. package/dist/components/index.js +3 -0
  17. package/dist/components/lines/LineItems.d.ts +5 -2
  18. package/dist/components/lines/LineItems.js +3 -3
  19. package/dist/components/listing/BoardColumns.d.ts +39 -0
  20. package/dist/components/listing/BoardColumns.js +138 -0
  21. package/dist/components/listing/ListingBar.d.ts +5 -0
  22. package/dist/components/listing/ListingBar.js +5 -2
  23. package/dist/components/listing/PivotExplorer.d.ts +34 -0
  24. package/dist/components/listing/PivotExplorer.js +86 -0
  25. package/dist/components/listing/RecordCard.d.ts +6 -8
  26. package/dist/components/listing/RecordCard.js +13 -7
  27. package/dist/components/listing/Row.d.ts +21 -2
  28. package/dist/components/listing/Row.js +29 -13
  29. package/dist/components/listing/index.d.ts +2 -0
  30. package/dist/components/listing/index.js +2 -0
  31. package/dist/components/listing/set.d.ts +1 -1
  32. package/dist/components/navigation/index.d.ts +0 -2
  33. package/dist/components/navigation/index.js +2 -3
  34. package/dist/components/record/RecordAudit.d.ts +17 -0
  35. package/dist/components/record/RecordAudit.js +27 -0
  36. package/dist/components/record/RecordHeader.d.ts +7 -1
  37. package/dist/components/record/RecordHeader.js +30 -18
  38. package/dist/components/record/RecordRibbon.d.ts +13 -0
  39. package/dist/components/record/RecordRibbon.js +22 -0
  40. package/dist/components/record/index.d.ts +2 -0
  41. package/dist/components/record/index.js +2 -0
  42. package/dist/components/search/CriteriaChips.d.ts +6 -1
  43. package/dist/components/search/CriteriaChips.js +71 -20
  44. package/dist/components/search/SearchBar.d.ts +15 -1
  45. package/dist/components/search/SearchBar.js +34 -16
  46. package/dist/components/search/query.d.ts +14 -11
  47. package/dist/components/search/query.js +36 -3
  48. package/dist/components/timeline/RecordTimeline.d.ts +60 -0
  49. package/dist/components/timeline/RecordTimeline.js +214 -0
  50. package/dist/components/timeline/TimelineToolbar.d.ts +30 -0
  51. package/dist/components/timeline/TimelineToolbar.js +31 -0
  52. package/dist/components/timeline/index.d.ts +3 -0
  53. package/dist/components/timeline/index.js +3 -0
  54. package/dist/components/timeline/time.d.ts +43 -0
  55. package/dist/components/timeline/time.js +135 -0
  56. package/dist/foundations/copy.d.ts +110 -14
  57. package/dist/foundations/copy.es.js +85 -9
  58. package/dist/foundations/copy.js +85 -9
  59. package/dist/foundations/grouping.d.ts +3 -0
  60. package/dist/foundations/index.d.ts +1 -1
  61. package/dist/foundations/match.d.ts +23 -0
  62. package/dist/foundations/match.js +63 -0
  63. package/dist/foundations/slots.d.ts +1 -1
  64. package/dist/foundations/slots.js +8 -3
  65. package/dist/foundations/types.d.ts +7 -0
  66. package/dist/foundations/types.js +0 -36
  67. package/dist/primitives/block/index.d.ts +1 -1
  68. package/dist/primitives/block/index.js +1 -1
  69. package/dist/primitives/cell/CellStack.d.ts +7 -1
  70. package/dist/primitives/cell/CellStack.js +5 -2
  71. package/dist/primitives/choice/ComboBox.js +8 -4
  72. package/dist/primitives/choice/KanbanState.d.ts +14 -0
  73. package/dist/primitives/choice/KanbanState.js +37 -0
  74. package/dist/primitives/choice/Priority.d.ts +20 -0
  75. package/dist/primitives/choice/Priority.js +41 -0
  76. package/dist/primitives/choice/Slider.d.ts +6 -1
  77. package/dist/primitives/choice/Slider.js +2 -2
  78. package/dist/primitives/choice/index.d.ts +2 -0
  79. package/dist/primitives/choice/index.js +2 -0
  80. package/dist/primitives/dialog/Dialog.d.ts +9 -3
  81. package/dist/primitives/dialog/Dialog.js +41 -5
  82. package/dist/primitives/dialog/index.d.ts +0 -1
  83. package/dist/primitives/dialog/index.js +0 -2
  84. package/dist/primitives/notice/index.d.ts +1 -1
  85. package/dist/primitives/notice/index.js +1 -1
  86. package/dist/primitives/overlay/Preview.js +13 -4
  87. package/dist/primitives/picker/MatchedText.d.ts +10 -0
  88. package/dist/primitives/picker/MatchedText.js +12 -0
  89. package/dist/primitives/picker/Picker.d.ts +42 -7
  90. package/dist/primitives/picker/Picker.js +107 -29
  91. package/dist/primitives/table/EditableTable.d.ts +6 -1
  92. package/dist/primitives/table/EditableTable.js +70 -9
  93. package/dist/primitives/table/ReportTable.js +2 -1
  94. package/dist/primitives/table/RowActions.js +7 -2
  95. package/dist/primitives/table/Table.d.ts +5 -0
  96. package/dist/primitives/table/Table.js +17 -8
  97. package/dist/primitives/tag/Tags.d.ts +2 -0
  98. package/dist/primitives/tag/Tags.js +2 -1
  99. package/dist/primitives/tag/TagsField.d.ts +17 -0
  100. package/dist/primitives/tag/TagsField.js +46 -11
  101. package/dist/primitives/tag/choices.d.ts +6 -1
  102. package/dist/primitives/tag/choices.js +6 -2
  103. package/dist/primitives/value/Avatar.d.ts +16 -0
  104. package/dist/primitives/value/Avatar.js +91 -0
  105. package/dist/primitives/value/Person.d.ts +6 -51
  106. package/dist/primitives/value/Person.js +9 -148
  107. package/dist/primitives/value/Relation.d.ts +21 -9
  108. package/dist/primitives/value/Relation.js +35 -24
  109. package/dist/primitives/value/contact.d.ts +30 -0
  110. package/dist/primitives/value/contact.js +51 -0
  111. package/dist/primitives/value/index.d.ts +1 -1
  112. package/dist/primitives/value/index.js +1 -1
  113. package/dist/tokens.css +136 -1
  114. package/dist/views/list/List.d.ts +25 -2
  115. package/dist/views/list/List.js +48 -8
  116. package/dist/views/list/ListView.d.ts +1 -1
  117. package/dist/views/list/ListView.js +40 -9
  118. package/dist/views/list/columns.js +8 -1
  119. package/dist/views/list/presentations.d.ts +5 -2
  120. package/dist/views/list/presentations.js +32 -2
  121. package/dist/views/list/types.d.ts +44 -0
  122. package/dist/views/list/useNarrowList.d.ts +10 -0
  123. package/dist/views/list/useNarrowList.js +20 -6
  124. package/dist/views/record/Record.d.ts +14 -0
  125. package/dist/views/record/Record.js +22 -7
  126. package/package.json +11 -4
  127. package/dist/components/navigation/CommandPalette.d.ts +0 -40
  128. package/dist/components/navigation/CommandPalette.js +0 -114
  129. package/dist/components/navigation/commands.d.ts +0 -30
  130. package/dist/components/navigation/commands.js +0 -30
  131. package/dist/primitives/dialog/Drill.d.ts +0 -90
  132. package/dist/primitives/dialog/Drill.js +0 -172
@@ -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;
@@ -76,6 +81,9 @@ export type UiCopy = {
76
81
  noticeMany: string;
77
82
  /** The accessible name of the band of what is wrong with the record. */
78
83
  blocking: string;
84
+ /** The paper's last line (`Record.Audit`): «{by}» and «{at}» are already written. */
85
+ created: string;
86
+ updated: string;
79
87
  };
80
88
  shell: {
81
89
  modules: string;
@@ -88,8 +96,6 @@ export type UiCopy = {
88
96
  closePreview: string;
89
97
  account: string;
90
98
  openAsPanel: string;
91
- /** The accessible name of the command palette's dialog. */
92
- commandPalette: string;
93
99
  };
94
100
  field: {
95
101
  drop: string;
@@ -131,6 +137,14 @@ export type UiCopy = {
131
137
  groupedBy: string;
132
138
  /** Lo que encabeza el corchete de los recortes. */
133
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;
134
148
  /** Cambiar la conjunción entre búsquedas: todas a la vez, o cualquiera. */
135
149
  switchJoin: string;
136
150
  /**
@@ -168,6 +182,10 @@ export type UiCopy = {
168
182
  askField: string;
169
183
  /** Cuando se escribió `#`: lo que sigue es el nombre de un campo. */
170
184
  askAttribute: string;
185
+ /** The set's own search over what was typed — every field it searches, at once — as it
186
+ * is offered («Buscar») and as the chip reads once put («Buscar «Globex»»). */
187
+ literal: string;
188
+ literalChip: string;
171
189
  askOp: string;
172
190
  /** El encabezado de un nodo del árbol: cómo se juntan las reglas de abajo. */
173
191
  askJoin: string;
@@ -229,6 +247,10 @@ export type UiCopy = {
229
247
  * one: «1 records» is wrong in every language this ships in. */
230
248
  countOne: string;
231
249
  count: string;
250
+ /** A row's two ways in, named on their buttons: a look without leaving the list, and the
251
+ * record itself. */
252
+ peek: string;
253
+ open: string;
232
254
  };
233
255
  /** La historia de un registro: eventos y mensajes. */
234
256
  /** The panel of everything around a record: its notices, its conversation and its
@@ -372,6 +394,9 @@ export type UiCopy = {
372
394
  addRow: string;
373
395
  empty: string;
374
396
  remove: string;
397
+ /** The grip that changes a row's place (`EditableTable onReorder`). */
398
+ reorder: string;
399
+ reorderHint: string;
375
400
  };
376
401
  picker: {
377
402
  placeholder: string;
@@ -382,8 +407,23 @@ export type UiCopy = {
382
407
  refine: string;
383
408
  open: string;
384
409
  browseAll: string;
410
+ /** The option that creates a record from the typed text. `{name}` is that text. */
411
+ create: string;
412
+ /** The option that opens the full form of a new record, with the typed text as its name. */
413
+ createAndEdit: string;
414
+ /** Why an option whose name does not match is listed: the hidden code it matched. */
415
+ matched: string;
385
416
  /** The quiet row at the end of a list that is fetching its next page. */
386
417
  loadingMore: string;
418
+ /** Where a many2one's record opens (`OpenTarget`), on its buttons and its menu. */
419
+ openIn: {
420
+ modal: string;
421
+ peek: string;
422
+ page: string;
423
+ side: string;
424
+ window: string;
425
+ };
426
+ openMore: string;
387
427
  };
388
428
  cell: {
389
429
  missing: string;
@@ -395,13 +435,6 @@ export type UiCopy = {
395
435
  invalid: string;
396
436
  noDate: string;
397
437
  };
398
- /** The dialog that holds a stack of contexts opened from a record (`Drill`). */
399
- drill: {
400
- /** Up one level. `{name}` is the context it goes back to. */
401
- back: string;
402
- /** The accessible name of the trail of contexts this one was opened from. */
403
- trail: string;
404
- };
405
438
  dialog: {
406
439
  expand: string;
407
440
  /** The wizard's own buttons: leave, go back, go on, end — and what the main
@@ -498,17 +531,22 @@ export type UiCopy = {
498
531
  rows: string;
499
532
  /** Abrir un cruce: qué filas cayeron ahí. */
500
533
  open: string;
534
+ /** The pivot's own controls (`PivotExplorer`). */
535
+ measures: string;
536
+ rowsAxis: string;
537
+ columnsAxis: string;
538
+ addLevel: string;
539
+ removeLevel: string;
540
+ swap: string;
541
+ download: string;
542
+ fromSearch: string;
501
543
  };
502
544
  /** A person as a value: who is not there, and the ways to reach who is. */
503
545
  person: {
504
546
  unassigned: string;
505
- /** The title of the contact card that opens from a person. */
506
- contact: string;
507
547
  email: string;
508
548
  call: string;
509
549
  whatsapp: string;
510
- /** Go to the person's own record. */
511
- open: string;
512
550
  };
513
551
  /** The sub-list of lines inside a record: the lines of an order, of an entry. */
514
552
  lines: {
@@ -545,6 +583,60 @@ export type UiCopy = {
545
583
  table: string;
546
584
  };
547
585
  /** A field that points to another record: going there, and pointing nowhere. */
586
+ /** The stars of `Priority`. */
587
+ priority: {
588
+ label: string;
589
+ level: string;
590
+ none: string;
591
+ };
592
+ /** The board by stages (`BoardColumns`). */
593
+ board: {
594
+ emptyLane: string;
595
+ moveHint: string;
596
+ moved: string;
597
+ quickCreate: string;
598
+ quickPlaceholder: string;
599
+ fold: string;
600
+ unfold: string;
601
+ addColumn: string;
602
+ addColumnPlaceholder: string;
603
+ };
604
+ /** A timeline of records and its toolbar (`RecordTimeline`, `TimelineToolbar`). */
605
+ timeline: {
606
+ prev: string;
607
+ next: string;
608
+ today: string;
609
+ goTo: string;
610
+ zoom: string;
611
+ zoomIn: string;
612
+ zoomOut: string;
613
+ fullscreen: string;
614
+ exitFullscreen: string;
615
+ scale: string;
616
+ scales: {
617
+ day: string;
618
+ week: string;
619
+ month: string;
620
+ year: string;
621
+ };
622
+ moveHint: string;
623
+ moved: string;
624
+ create: string;
625
+ };
626
+ /** Odoo's kanban state — the traffic light on a card (`KanbanState`). */
627
+ kanbanState: {
628
+ label: string;
629
+ normal: string;
630
+ done: string;
631
+ blocked: string;
632
+ };
633
+ /** The planned activities of a record, on its card (`ActivityBadge`). */
634
+ activityState: {
635
+ none: string;
636
+ overdue: string;
637
+ today: string;
638
+ planned: string;
639
+ };
548
640
  relation: {
549
641
  open: string;
550
642
  /** No record chosen. It is an answer, not a hole. */
@@ -675,7 +767,6 @@ export type UiCopyOverride = {
675
767
  picker?: Partial<UiCopy["picker"]>;
676
768
  cell?: Partial<UiCopy["cell"]>;
677
769
  time?: Partial<UiCopy["time"]>;
678
- drill?: Partial<UiCopy["drill"]>;
679
770
  dialog?: Partial<UiCopy["dialog"]>;
680
771
  report?: Partial<UiCopy["report"]>;
681
772
  builder?: Partial<UiCopy["builder"]>;
@@ -683,6 +774,11 @@ export type UiCopyOverride = {
683
774
  person?: Partial<UiCopy["person"]>;
684
775
  lines?: Partial<UiCopy["lines"]>;
685
776
  lineItems?: Partial<UiCopy["lineItems"]>;
777
+ priority?: Partial<UiCopy["priority"]>;
778
+ board?: Partial<UiCopy["board"]>;
779
+ kanbanState?: Partial<UiCopy["kanbanState"]>;
780
+ timeline?: Partial<UiCopy["timeline"]>;
781
+ activityState?: Partial<UiCopy["activityState"]>;
686
782
  relation?: Partial<UiCopy["relation"]>;
687
783
  relationCard?: Partial<UiCopy["relationCard"]>;
688
784
  totals?: Partial<UiCopy["totals"]>;
@@ -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",
@@ -76,6 +80,8 @@ export const SPANISH_COPY = {
76
80
  noticeOne: "{count} aviso",
77
81
  noticeMany: "{count} avisos",
78
82
  blocking: "Lo que está mal en este registro",
83
+ created: "Creado por {by} · {at}",
84
+ updated: "Modificado por última vez por {by} · {at}",
79
85
  },
80
86
  shell: {
81
87
  close: "Cerrar",
@@ -88,7 +94,6 @@ export const SPANISH_COPY = {
88
94
  closePreview: "Cerrar la vista previa",
89
95
  account: "Mi cuenta",
90
96
  openAsPanel: "Abrir como panel",
91
- commandPalette: "Paleta de comandos",
92
97
  },
93
98
  field: {
94
99
  drop: "Soltá un archivo acá, o elegí uno.",
@@ -131,6 +136,10 @@ export const SPANISH_COPY = {
131
136
  or: "o",
132
137
  groupedBy: "agrupado por",
133
138
  narrowedBy: "mostrando",
139
+ moreFacets: "+{count}",
140
+ fewerFacets: "ver menos",
141
+ removeGrouping: "Dejar de agrupar",
142
+ clearAll: "Quitar todos los filtros y el agrupado",
134
143
  placeholder: "buscar…",
135
144
  switchJoin: "Todas, cualquiera o ninguna",
136
145
  joins: { all: "todas", any: "cualquiera", none: "ninguna" },
@@ -146,6 +155,8 @@ export const SPANISH_COPY = {
146
155
  openBuilderHere: "Abrir esta condición en el constructor",
147
156
  askField: "en qué campo",
148
157
  askAttribute: "elegí un atributo",
158
+ literal: "Buscar",
159
+ literalChip: "Buscar «{text}»",
149
160
  askOp: "comparado cómo",
150
161
  askJoin: "tienen que coincidir",
151
162
  askValue: "contra qué",
@@ -193,6 +204,8 @@ export const SPANISH_COPY = {
193
204
  emptyFiltered: "Nada coincide con lo que está puesto.",
194
205
  countOne: "1 registro",
195
206
  count: "{count} registros",
207
+ peek: "Vista previa",
208
+ open: "Abrir",
196
209
  },
197
210
  activity: {
198
211
  bySystem: "el sistema",
@@ -265,6 +278,8 @@ export const SPANISH_COPY = {
265
278
  addRow: "agregar una fila",
266
279
  empty: "nada todavía",
267
280
  remove: "quitar",
281
+ reorder: "Mover la fila",
282
+ reorderHint: "Arrastrala, o Alt + ↑ / ↓",
268
283
  },
269
284
  picker: {
270
285
  placeholder: "elegí uno…",
@@ -274,14 +289,21 @@ export const SPANISH_COPY = {
274
289
  more: "{count} más",
275
290
  refine: "— afiná el filtro",
276
291
  open: "Abrir",
277
- browseAll: "ver todos…",
292
+ browseAll: "Buscar más…",
293
+ create: "Crear «{name}»",
294
+ createAndEdit: "Crear y editar…",
295
+ matched: "coincide",
278
296
  loadingMore: "cargando más…",
297
+ openIn: {
298
+ modal: "Abrir en un modal",
299
+ peek: "Vista previa",
300
+ page: "Abrir como página",
301
+ side: "Abrir al costado",
302
+ window: "Abrir en una ventana",
303
+ },
304
+ openMore: "Abrir en…",
279
305
  },
280
306
  cell: { empty: "—", missing: "falta", emptyBin: "(vacío)" },
281
- drill: {
282
- back: "Volver a {name}",
283
- trail: "Abierto desde",
284
- },
285
307
  dialog: {
286
308
  expand: "Agrandar a panel",
287
309
  cancel: "Cancelar",
@@ -341,14 +363,24 @@ export const SPANISH_COPY = {
341
363
  dropOrderBy: "quitar el orden por {field}",
342
364
  dropLevel: "quitar el nivel {field}",
343
365
  },
344
- pivot: { total: "Total", rows: "filas", open: "Abrir {row} × {column}" },
366
+ pivot: {
367
+ total: "Total",
368
+ rows: "filas",
369
+ open: "Abrir {row} × {column}",
370
+ measures: "Medidas",
371
+ rowsAxis: "Filas",
372
+ columnsAxis: "Columnas",
373
+ addLevel: "Agregar a {axis}",
374
+ removeLevel: "Quitar {level}",
375
+ swap: "Intercambiar filas y columnas",
376
+ download: "Descargar",
377
+ fromSearch: "del agrupado del buscador",
378
+ },
345
379
  person: {
346
380
  unassigned: "sin asignar",
347
- contact: "Contacto",
348
381
  email: "Escribir un correo",
349
382
  call: "Llamar",
350
383
  whatsapp: "WhatsApp",
351
- open: "Ver ficha",
352
384
  },
353
385
  lines: {
354
386
  add: "Agregar una línea",
@@ -372,6 +404,50 @@ export const SPANISH_COPY = {
372
404
  undo: "Deshacer",
373
405
  table: "Líneas",
374
406
  },
407
+ priority: {
408
+ label: "Prioridad",
409
+ level: "{value} de {max}",
410
+ none: "sin prioridad",
411
+ },
412
+ board: {
413
+ emptyLane: "Nada en esta etapa.",
414
+ moveHint: "Arrastrala, o Alt + ← / → para pasarla a otra etapa",
415
+ moved: "{name} pasó a {column}",
416
+ quickCreate: "Crear rápido en {column}",
417
+ quickPlaceholder: "Nombre… (Enter crea)",
418
+ fold: "Plegar {column}",
419
+ unfold: "Desplegar {column}",
420
+ addColumn: "Agregar etapa",
421
+ addColumnPlaceholder: "Nombre de la etapa… (Enter agrega)",
422
+ },
423
+ timeline: {
424
+ prev: "Anterior",
425
+ next: "Siguiente",
426
+ today: "Hoy",
427
+ goTo: "Ir a una fecha",
428
+ zoom: "Zoom",
429
+ zoomIn: "Acercar",
430
+ zoomOut: "Alejar",
431
+ fullscreen: "Pantalla completa",
432
+ exitFullscreen: "Salir de pantalla completa",
433
+ scale: "Escala",
434
+ scales: { day: "Día", week: "Semana", month: "Mes", year: "Año" },
435
+ moveHint: "Arrastrala para moverla, su borde derecho para estirarla; Alt + flechas con el teclado",
436
+ moved: "{name}: {range}",
437
+ create: "Crear en {row} · {at}",
438
+ },
439
+ kanbanState: {
440
+ label: "Estado",
441
+ normal: "En curso",
442
+ done: "Listo para la siguiente etapa",
443
+ blocked: "Bloqueado",
444
+ },
445
+ activityState: {
446
+ none: "Sin actividades",
447
+ overdue: "Vencida",
448
+ today: "Para hoy",
449
+ planned: "Planificada",
450
+ },
375
451
  relation: { open: "Abrir", none: "Sin asignar" },
376
452
  relationCard: { summary: "Resumen de {name}" },
377
453
  totals: {
@@ -10,6 +10,9 @@ export const ENGLISH_COPY = {
10
10
  sheet: "Sheet",
11
11
  report: "Report",
12
12
  pivot: "Pivot",
13
+ calendar: "Calendar",
14
+ gantt: "Gantt",
15
+ timeline: "Planning",
13
16
  chart: "Chart",
14
17
  group: "How to view",
15
18
  },
@@ -31,6 +34,7 @@ export const ENGLISH_COPY = {
31
34
  named: "Select {name}",
32
35
  more: "More actions",
33
36
  moreOf: "More actions for {name}",
37
+ allMatching: "Select all {count} that match",
34
38
  },
35
39
  pager: {
36
40
  size: "Rows per page",
@@ -53,6 +57,8 @@ export const ENGLISH_COPY = {
53
57
  noticeOne: "{count} notice",
54
58
  noticeMany: "{count} notices",
55
59
  blocking: "What is wrong with this record",
60
+ created: "Created by {by} · {at}",
61
+ updated: "Last changed by {by} · {at}",
56
62
  },
57
63
  shell: {
58
64
  modules: "All modules",
@@ -65,7 +71,6 @@ export const ENGLISH_COPY = {
65
71
  closePreview: "Close preview",
66
72
  account: "My account",
67
73
  openAsPanel: "Open as panel",
68
- commandPalette: "Command palette",
69
74
  },
70
75
  field: {
71
76
  drop: "Drop a file here, or choose one.",
@@ -94,6 +99,10 @@ export const ENGLISH_COPY = {
94
99
  or: "or",
95
100
  groupedBy: "grouped by",
96
101
  narrowedBy: "showing",
102
+ moreFacets: "+{count}",
103
+ fewerFacets: "show less",
104
+ removeGrouping: "Stop grouping",
105
+ clearAll: "Clear every filter and grouping",
97
106
  switchJoin: "All of them, or any of them",
98
107
  joins: { all: "all", any: "any", none: "none" },
99
108
  notWord: "not",
@@ -106,6 +115,8 @@ export const ENGLISH_COPY = {
106
115
  openBuilderHere: "Open this condition in the builder",
107
116
  askField: "ask about",
108
117
  askAttribute: "pick an attribute",
118
+ literal: "Search",
119
+ literalChip: "Search “{text}”",
109
120
  askOp: "compared how",
110
121
  askJoin: "these rules match",
111
122
  unreadable: "We cannot read this filter as a tree — here it is as it stands. It can still be edited as JSON below.",
@@ -142,6 +153,8 @@ export const ENGLISH_COPY = {
142
153
  emptyFiltered: "Nothing matches what is on.",
143
154
  countOne: "1 record",
144
155
  count: "{count} records",
156
+ peek: "Quick look",
157
+ open: "Open",
145
158
  },
146
159
  activity: {
147
160
  bySystem: "the system",
@@ -243,6 +256,8 @@ export const ENGLISH_COPY = {
243
256
  addRow: "Add a row",
244
257
  empty: "No lines yet.",
245
258
  remove: "Remove the line",
259
+ reorder: "Move the row",
260
+ reorderHint: "Drag it, or Alt + ↑ / ↓",
246
261
  },
247
262
  picker: {
248
263
  placeholder: "pick one…",
@@ -252,8 +267,19 @@ export const ENGLISH_COPY = {
252
267
  more: "{count} more",
253
268
  refine: "— narrow the filter",
254
269
  open: "Open",
255
- browseAll: "see all…",
270
+ browseAll: "Search more…",
271
+ create: "Create «{name}»",
272
+ createAndEdit: "Create and edit…",
273
+ matched: "matches",
256
274
  loadingMore: "loading more…",
275
+ openIn: {
276
+ modal: "Open in a modal",
277
+ peek: "Quick look",
278
+ page: "Open as the page",
279
+ side: "Open beside",
280
+ window: "Open in a window",
281
+ },
282
+ openMore: "Open in…",
257
283
  },
258
284
  cell: {
259
285
  missing: "missing",
@@ -265,10 +291,6 @@ export const ENGLISH_COPY = {
265
291
  invalid: "invalid date",
266
292
  noDate: "no date",
267
293
  },
268
- drill: {
269
- back: "Back to {name}",
270
- trail: "Opened from",
271
- },
272
294
  dialog: {
273
295
  expand: "Expand to a panel",
274
296
  cancel: "Cancel",
@@ -336,14 +358,20 @@ export const ENGLISH_COPY = {
336
358
  total: "Total",
337
359
  rows: "rows",
338
360
  open: "Open {row} × {column}",
361
+ measures: "Measures",
362
+ rowsAxis: "Rows",
363
+ columnsAxis: "Columns",
364
+ addLevel: "Add to {axis}",
365
+ removeLevel: "Remove {level}",
366
+ swap: "Swap rows and columns",
367
+ download: "Download",
368
+ fromSearch: "from the search's grouping",
339
369
  },
340
370
  person: {
341
371
  unassigned: "unassigned",
342
- contact: "Contact",
343
372
  email: "Write an email",
344
373
  call: "Call",
345
374
  whatsapp: "WhatsApp",
346
- open: "Open profile",
347
375
  },
348
376
  lines: {
349
377
  add: "Add a line",
@@ -367,6 +395,50 @@ export const ENGLISH_COPY = {
367
395
  undo: "Undo",
368
396
  table: "Lines",
369
397
  },
398
+ priority: {
399
+ label: "Priority",
400
+ level: "{value} of {max}",
401
+ none: "no priority",
402
+ },
403
+ board: {
404
+ emptyLane: "Nothing in this stage.",
405
+ moveHint: "Drag it, or Alt + ← / → to move it to another stage",
406
+ moved: "{name} moved to {column}",
407
+ quickCreate: "Quick create in {column}",
408
+ quickPlaceholder: "Name… (Enter creates)",
409
+ fold: "Fold {column}",
410
+ unfold: "Unfold {column}",
411
+ addColumn: "Add a stage",
412
+ addColumnPlaceholder: "Stage name… (Enter adds)",
413
+ },
414
+ timeline: {
415
+ prev: "Previous",
416
+ next: "Next",
417
+ today: "Today",
418
+ goTo: "Go to a date",
419
+ zoom: "Zoom",
420
+ zoomIn: "Zoom in",
421
+ zoomOut: "Zoom out",
422
+ fullscreen: "Full screen",
423
+ exitFullscreen: "Exit full screen",
424
+ scale: "Scale",
425
+ scales: { day: "Day", week: "Week", month: "Month", year: "Year" },
426
+ moveHint: "Drag it to move it, its right edge to stretch it; Alt + arrows from the keyboard",
427
+ moved: "{name}: {range}",
428
+ create: "Create in {row} · {at}",
429
+ },
430
+ kanbanState: {
431
+ label: "State",
432
+ normal: "In progress",
433
+ done: "Ready for the next stage",
434
+ blocked: "Blocked",
435
+ },
436
+ activityState: {
437
+ none: "No activities",
438
+ overdue: "Overdue",
439
+ today: "Due today",
440
+ planned: "Planned",
441
+ },
370
442
  relation: {
371
443
  open: "Open",
372
444
  none: "Not set",
@@ -480,7 +552,6 @@ export function mergeCopy(over) {
480
552
  picker: { ...ENGLISH_COPY.picker, ...over.picker },
481
553
  cell: { ...ENGLISH_COPY.cell, ...over.cell },
482
554
  time: { ...ENGLISH_COPY.time, ...over.time },
483
- drill: { ...ENGLISH_COPY.drill, ...over.drill },
484
555
  dialog: { ...ENGLISH_COPY.dialog, ...over.dialog },
485
556
  report: { ...ENGLISH_COPY.report, ...over.report },
486
557
  builder: { ...ENGLISH_COPY.builder, ...over.builder },
@@ -488,6 +559,11 @@ export function mergeCopy(over) {
488
559
  person: { ...ENGLISH_COPY.person, ...over.person },
489
560
  lines: { ...ENGLISH_COPY.lines, ...over.lines },
490
561
  lineItems: { ...ENGLISH_COPY.lineItems, ...over.lineItems },
562
+ priority: { ...ENGLISH_COPY.priority, ...over.priority },
563
+ board: { ...ENGLISH_COPY.board, ...over.board },
564
+ kanbanState: { ...ENGLISH_COPY.kanbanState, ...over.kanbanState },
565
+ timeline: { ...ENGLISH_COPY.timeline, ...over.timeline },
566
+ activityState: { ...ENGLISH_COPY.activityState, ...over.activityState },
491
567
  relation: { ...ENGLISH_COPY.relation, ...over.relation },
492
568
  relationCard: { ...ENGLISH_COPY.relationCard, ...over.relationCard },
493
569
  totals: { ...ENGLISH_COPY.totals, ...over.totals },
@@ -97,6 +97,9 @@ export type Pile<T> = {
97
97
  * montones los cuenta quien guarda los datos, este número viene de allá.
98
98
  */
99
99
  count: number;
100
+ /** What the pile ADDS UP TO, already written — «Total Bs 1.204.933» — summed by whoever
101
+ * keeps the data over EVERY row in it, like the count. Drawn in the pile's header. */
102
+ detail?: string;
100
103
  /** Las filas, en el nivel MÁS PROFUNDO. Vacío en los de arriba: un montón que
101
104
  * tiene montones adentro no tiene filas propias. */
102
105
  items: readonly T[];
@@ -2,7 +2,7 @@ export { currentCopy, currentCopyLocale, ENGLISH_COPY, fillCopy, installCopy, me
2
2
  export { byDensity, type Density, DensityProvider, useDensity, } from "./density.js";
3
3
  export { bySurface, SurfaceProvider, useSurface } from "./surface.js";
4
4
  export { applyTheme, isTheme, type ResolvedTheme, resolveTheme, type Theme, THEME_ATTRIBUTE, ThemeProvider, type ThemeProviderProps, THEMES, useTheme, } from "./theme.js";
5
- export type { Size, Surface, Tone } from "./types.js";
5
+ export type { OpenTarget, Size, Surface, Tone } from "./types.js";
6
6
  /** El castellano del sistema, para quien lo quiera instalar entero. */
7
7
  export { SPANISH_COPY } from "./copy.es.js";
8
8
  export { flatten, loose, pick, pickAll, propsOf, slot, slotOf, type Slotted, } from "./slots.js";
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Where a typed search falls inside a text — «tería» inside «Ferretería» — so a list can SHOW
3
+ * why each option is there.
4
+ *
5
+ * Context: a picker filters accent- and case-insensitively (React Aria's `useFilter`, base
6
+ * sensitivity): «ferreteria» finds «Ferretería». Highlighting has to agree with it, or the
7
+ * option is listed with nothing marked and reads as a wrong match. So the text is folded the
8
+ * same way — decomposed, marks dropped, lower-cased in the locale — while remembering which
9
+ * original character each folded one came from, and the spans are cut on the ORIGINAL text:
10
+ * what is drawn keeps its accents.
11
+ */
12
+ export type MatchSpan = {
13
+ text: string;
14
+ hit: boolean;
15
+ };
16
+ /** The text cut into what matched the query and what did not, in order. An empty query (or
17
+ * one that does not occur) is one span with no hit. */
18
+ export declare function matchSpans(text: string, query: string, locale?: string): MatchSpan[];
19
+ /** Whether the query occurs in the text, folded the same way as `matchSpans`. */
20
+ export declare function matches(text: string, query: string, locale?: string): boolean;
21
+ /** The word of a hidden search text where the query fell — the code «CEM-IP30» out of
22
+ * «CEM-IP30 7771234000017» — to say why an option whose name does not match is listed. */
23
+ export declare function matchedWord(text: string, query: string, locale?: string): string | null;