@eifi1/ui-kit 0.39.0 → 0.40.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 (148) hide show
  1. package/README.md +8 -7
  2. package/dist/billing/billing-overview.d.ts +12 -2
  3. package/dist/billing/pay-page.js +1 -1
  4. package/dist/billing/pay-page.js.map +1 -1
  5. package/dist/bin/eifi1-pay-page.mjs +1 -1
  6. package/dist/components/autocomplete.js +5 -1
  7. package/dist/components/autocomplete.js.map +1 -1
  8. package/dist/components/combobox-core.d.ts +14 -1
  9. package/dist/components/combobox-core.js +4 -0
  10. package/dist/components/combobox-core.js.map +1 -1
  11. package/dist/components/combobox.js +9 -3
  12. package/dist/components/combobox.js.map +1 -1
  13. package/dist/components/data-table-labels.d.ts +5 -0
  14. package/dist/components/data-table-labels.js +2 -0
  15. package/dist/components/data-table-labels.js.map +1 -1
  16. package/dist/components/data-table-mobile.d.ts +36 -1
  17. package/dist/components/data-table-mobile.js +162 -15
  18. package/dist/components/data-table-mobile.js.map +1 -1
  19. package/dist/components/data-table.d.ts +39 -12
  20. package/dist/components/data-table.js +74 -13
  21. package/dist/components/data-table.js.map +1 -1
  22. package/dist/components/inline-entity-combobox.js +10 -3
  23. package/dist/components/inline-entity-combobox.js.map +1 -1
  24. package/dist/components/picker-sheet.d.ts +18 -1
  25. package/dist/components/picker-sheet.js +20 -2
  26. package/dist/components/picker-sheet.js.map +1 -1
  27. package/dist/components/tabs.d.ts +26 -2
  28. package/dist/components/tabs.js +41 -2
  29. package/dist/components/tabs.js.map +1 -1
  30. package/dist/components/translation-review-parts.d.ts +2 -1
  31. package/dist/components/translation-review-parts.js +1 -1
  32. package/dist/components/translation-review-parts.js.map +1 -1
  33. package/dist/components/ui-labels.js +3 -1
  34. package/dist/components/ui-labels.js.map +1 -1
  35. package/dist/eslint/index.js +1 -1
  36. package/dist/feedback/feedback-comment-thread.d.ts +8 -1
  37. package/dist/feedback/feedback-comment-thread.js +26 -1
  38. package/dist/feedback/feedback-comment-thread.js.map +1 -1
  39. package/dist/feedback/feedback-labels.d.ts +2 -1
  40. package/dist/feedback/feedback-labels.js +1 -0
  41. package/dist/feedback/feedback-labels.js.map +1 -1
  42. package/dist/feedback/feedback-menu-labels.js +3 -1
  43. package/dist/feedback/feedback-menu-labels.js.map +1 -1
  44. package/dist/feedback/feedback-menu.d.ts +31 -24
  45. package/dist/feedback/feedback-menu.js +16 -7
  46. package/dist/feedback/feedback-menu.js.map +1 -1
  47. package/dist/feedback/feedback-public-labels.d.ts +3 -2
  48. package/dist/feedback/feedback-public-labels.js +1 -1
  49. package/dist/feedback/feedback-public-labels.js.map +1 -1
  50. package/dist/feedback/feedback-public-list.js +1 -0
  51. package/dist/feedback/feedback-public-list.js.map +1 -1
  52. package/dist/feedback/feedback-public-types.d.ts +16 -3
  53. package/dist/feedback/feedback-record.d.ts +20 -3
  54. package/dist/feedback/feedback-record.js +15 -0
  55. package/dist/feedback/feedback-record.js.map +1 -1
  56. package/dist/feedback/feedback-replies.d.ts +13 -2
  57. package/dist/feedback/feedback-replies.js +67 -33
  58. package/dist/feedback/feedback-replies.js.map +1 -1
  59. package/dist/feedback/feedback-rework-entry-chip.d.ts +9 -0
  60. package/dist/feedback/feedback-rework-entry-chip.js +13 -0
  61. package/dist/feedback/feedback-rework-entry-chip.js.map +1 -0
  62. package/dist/feedback/feedback-row-detail.d.ts +31 -8
  63. package/dist/feedback/feedback-row-detail.js +31 -7
  64. package/dist/feedback/feedback-row-detail.js.map +1 -1
  65. package/dist/feedback/feedback-table-labels.js +1 -1
  66. package/dist/feedback/feedback-table-labels.js.map +1 -1
  67. package/dist/feedback/feedback-table.d.ts +5 -2
  68. package/dist/feedback/feedback-table.js +2 -2
  69. package/dist/feedback/feedback-table.js.map +1 -1
  70. package/dist/feedback/feedback-thread.js +3 -1
  71. package/dist/feedback/feedback-thread.js.map +1 -1
  72. package/dist/feedback/feedback-vocabulary.d.ts +9 -6
  73. package/dist/feedback/feedback-vocabulary.js +16 -1
  74. package/dist/feedback/feedback-vocabulary.js.map +1 -1
  75. package/dist/hooks/use-long-press.d.ts +30 -0
  76. package/dist/hooks/use-long-press.js +77 -0
  77. package/dist/hooks/use-long-press.js.map +1 -0
  78. package/dist/hooks/use-overlay-history.js +37 -3
  79. package/dist/hooks/use-overlay-history.js.map +1 -1
  80. package/dist/i18n/german.js +13 -5
  81. package/dist/i18n/german.js.map +1 -1
  82. package/dist/i18n/kit-labels.d.ts +3 -0
  83. package/dist/i18n/kit-labels.js.map +1 -1
  84. package/dist/i18n/locales/en.js +12 -5
  85. package/dist/i18n/locales/en.js.map +2 -2
  86. package/dist/i18n/locales/es.js +13 -5
  87. package/dist/i18n/locales/es.js.map +1 -1
  88. package/dist/i18n/locales/fr.js +13 -5
  89. package/dist/i18n/locales/fr.js.map +1 -1
  90. package/dist/i18n/locales/hu.js +13 -5
  91. package/dist/i18n/locales/hu.js.map +1 -1
  92. package/dist/i18n/locales/it.js +13 -5
  93. package/dist/i18n/locales/it.js.map +1 -1
  94. package/dist/i18n/locales/zh.js +13 -5
  95. package/dist/i18n/locales/zh.js.map +1 -1
  96. package/dist/i18n/shared-labels.js +1 -1
  97. package/dist/i18n/shared-labels.js.map +1 -1
  98. package/dist/pay/pay.js +1 -1
  99. package/dist/shell/app-shell.js +9 -0
  100. package/dist/shell/app-shell.js.map +1 -1
  101. package/dist/shell/fill-height.d.ts +38 -0
  102. package/dist/shell/fill-height.js +12 -0
  103. package/dist/shell/fill-height.js.map +1 -0
  104. package/dist/shell.d.ts +2 -0
  105. package/dist/shell.js +3 -0
  106. package/dist/shell.js.map +1 -1
  107. package/package.json +1 -1
  108. package/src/billing/billing-overview.ts +12 -2
  109. package/src/billing/pay-page.ts +1 -1
  110. package/src/components/autocomplete.tsx +5 -1
  111. package/src/components/combobox-core.tsx +20 -1
  112. package/src/components/combobox.tsx +9 -3
  113. package/src/components/data-table-labels.ts +7 -0
  114. package/src/components/data-table-mobile.tsx +193 -9
  115. package/src/components/data-table.tsx +141 -24
  116. package/src/components/inline-entity-combobox.tsx +12 -4
  117. package/src/components/picker-sheet.tsx +38 -1
  118. package/src/components/tabs.tsx +73 -3
  119. package/src/components/translation-review-parts.tsx +3 -2
  120. package/src/components/ui-labels.ts +2 -0
  121. package/src/feedback/feedback-comment-thread.tsx +39 -1
  122. package/src/feedback/feedback-labels.ts +3 -1
  123. package/src/feedback/feedback-menu-labels.ts +2 -0
  124. package/src/feedback/feedback-menu.tsx +48 -30
  125. package/src/feedback/feedback-public-labels.ts +4 -3
  126. package/src/feedback/feedback-public-list.tsx +4 -1
  127. package/src/feedback/feedback-public-types.ts +17 -3
  128. package/src/feedback/feedback-record.ts +34 -3
  129. package/src/feedback/feedback-replies.tsx +100 -31
  130. package/src/feedback/feedback-rework-entry-chip.tsx +18 -0
  131. package/src/feedback/feedback-row-detail.tsx +65 -12
  132. package/src/feedback/feedback-table-labels.ts +1 -1
  133. package/src/feedback/feedback-table.tsx +7 -4
  134. package/src/feedback/feedback-thread.tsx +5 -1
  135. package/src/feedback/feedback-vocabulary.ts +27 -6
  136. package/src/hooks/use-long-press.ts +126 -0
  137. package/src/hooks/use-overlay-history.ts +74 -3
  138. package/src/i18n/german.ts +10 -2
  139. package/src/i18n/kit-labels.tsx +3 -0
  140. package/src/i18n/locales/es.ts +10 -2
  141. package/src/i18n/locales/fr.ts +10 -2
  142. package/src/i18n/locales/hu.ts +10 -2
  143. package/src/i18n/locales/it.ts +10 -2
  144. package/src/i18n/locales/zh.ts +10 -2
  145. package/src/i18n/shared-labels.ts +1 -1
  146. package/src/shell/app-shell.tsx +9 -0
  147. package/src/shell/fill-height.tsx +45 -0
  148. package/src/shell.ts +3 -0
@@ -85,6 +85,7 @@ export function germanLabels(numberLocale: string): UiKitLabels {
85
85
  feedbackStatus: {
86
86
  OPEN: "Offen",
87
87
  READY: "Bereit zur Umsetzung",
88
+ REWORK: "Nacharbeit angefordert",
88
89
  IN_PROGRESS: "In Bearbeitung",
89
90
  IN_EVALUATION: "Zur Prüfung",
90
91
  NEEDS_LIVE_TEST: "Live testen",
@@ -122,11 +123,13 @@ export function germanLabels(numberLocale: string): UiKitLabels {
122
123
  myFeedback: "Mein Feedback",
123
124
  viewFeedback: "Feedback ansehen",
124
125
  allFeedback: "Alle Rückmeldungen",
126
+ discussion: "Feedback-Diskussion",
127
+ inbox: "Feedback-Eingang",
125
128
  },
126
129
  // 0.38.0 — docs/feedback-harmonization.md §9: the public pages and the two feedback
127
130
  // notification types. "Rückmeldungen" and "Eine Person" are the contract's (§9.2, §9.5).
128
131
  feedbackPublic: {
129
- title: "Alle Rückmeldungen",
132
+ title: "Feedback-Diskussion",
130
133
  sort: "Sortieren",
131
134
  sortNewest: "Neueste",
132
135
  sortVotes: "Meistgewünscht",
@@ -158,7 +161,7 @@ export function germanLabels(numberLocale: string): UiKitLabels {
158
161
  attachUrl: "Aktuelle Seiten-URL anhängen",
159
162
  },
160
163
  feedbackPage: {
161
- title: "Feedback",
164
+ title: "Feedback-Eingang",
162
165
  myTitle: "Mein Feedback",
163
166
  columnId: "#",
164
167
  columnDate: "Datum",
@@ -344,6 +347,8 @@ export function germanLabels(numberLocale: string): UiKitLabels {
344
347
  filter: "Filter",
345
348
  close: "Schließen",
346
349
  selectRow: "Zeile auswählen",
350
+ selectRows: "Zeilen auswählen",
351
+ cancelSelection: "Abbrechen",
347
352
  rowDetails: "Details",
348
353
  autoSize: "Spaltenbreiten anpassen",
349
354
  loading: "Wird geladen…",
@@ -534,6 +539,8 @@ export function germanLabels(numberLocale: string): UiKitLabels {
534
539
  // "Tab" is what German UIs say; "Registerkarte" reads like a 1990s manual.
535
540
  add: "Tab hinzufügen",
536
541
  remove: (tab) => `${tab} entfernen`,
542
+ more: "Weitere Tabs",
543
+ backToFirst: "Zurück zum ersten Tab",
537
544
  },
538
545
  appShell: {
539
546
  collapse: "Seitenleiste einklappen",
@@ -549,6 +556,7 @@ export function germanLabels(numberLocale: string): UiKitLabels {
549
556
  },
550
557
  pickerSheet: {
551
558
  close: "Schließen",
559
+ done: "Fertig",
552
560
  },
553
561
  dialogFrame: {
554
562
  close: "Schließen",
@@ -279,6 +279,9 @@ export interface TopBarLabels {
279
279
 
280
280
  export interface PickerSheetLabels {
281
281
  close: string;
282
+ /** The sticky footer button that closes a multi-select sheet once the rows are ticked
283
+ * (0.40) — the ticks are already applied, so it confirms rather than saves. */
284
+ done: string;
282
285
  }
283
286
 
284
287
  export interface SwipeableRowLabels {
@@ -76,6 +76,7 @@ export function uiKitLabelsEs(numberLocale = "es-ES"): UiKitLabels {
76
76
  feedbackStatus: {
77
77
  OPEN: "Abierto",
78
78
  READY: "Listo para implementar",
79
+ REWORK: "Corrección solicitada",
79
80
  IN_PROGRESS: "En curso",
80
81
  IN_EVALUATION: "En evaluación",
81
82
  NEEDS_LIVE_TEST: "Probar en producción",
@@ -113,11 +114,13 @@ export function uiKitLabelsEs(numberLocale = "es-ES"): UiKitLabels {
113
114
  myFeedback: "Mis comentarios",
114
115
  viewFeedback: "Ver comentarios",
115
116
  allFeedback: "Todos los comentarios",
117
+ discussion: "Debate de comentarios",
118
+ inbox: "Comentarios recibidos",
116
119
  },
117
120
  // 0.38.0 — docs/feedback-harmonization.md §9: the public pages and the two feedback
118
121
  // notification types. "Informe" for one report, so it never reads as "comentario".
119
122
  feedbackPublic: {
120
- title: "Todos los comentarios",
123
+ title: "Debate de comentarios",
121
124
  sort: "Ordenar",
122
125
  sortNewest: "Más recientes",
123
126
  sortVotes: "Más deseados",
@@ -149,7 +152,7 @@ export function uiKitLabelsEs(numberLocale = "es-ES"): UiKitLabels {
149
152
  attachUrl: "Adjuntar la URL de la página actual",
150
153
  },
151
154
  feedbackPage: {
152
- title: "Comentarios",
155
+ title: "Comentarios recibidos",
153
156
  myTitle: "Mis comentarios",
154
157
  columnId: "#",
155
158
  columnDate: "Fecha",
@@ -335,6 +338,8 @@ export function uiKitLabelsEs(numberLocale = "es-ES"): UiKitLabels {
335
338
  filter: "Filtrar",
336
339
  close: "Cerrar",
337
340
  selectRow: "Seleccionar fila",
341
+ selectRows: "Seleccionar filas",
342
+ cancelSelection: "Cancelar",
338
343
  rowDetails: "Detalles",
339
344
  autoSize: "Ajustar ancho de columnas",
340
345
  loading: "Cargando…",
@@ -521,6 +526,8 @@ export function uiKitLabelsEs(numberLocale = "es-ES"): UiKitLabels {
521
526
  tabs: {
522
527
  add: "Añadir pestaña",
523
528
  remove: (tab) => `Quitar ${tab}`,
529
+ more: "Más pestañas",
530
+ backToFirst: "Volver a la primera pestaña",
524
531
  },
525
532
  appShell: {
526
533
  collapse: "Contraer barra lateral",
@@ -536,6 +543,7 @@ export function uiKitLabelsEs(numberLocale = "es-ES"): UiKitLabels {
536
543
  },
537
544
  pickerSheet: {
538
545
  close: "Cerrar",
546
+ done: "Listo",
539
547
  },
540
548
  dialogFrame: {
541
549
  close: "Cerrar",
@@ -76,6 +76,7 @@ export function uiKitLabelsFr(numberLocale = "fr-FR"): UiKitLabels {
76
76
  feedbackStatus: {
77
77
  OPEN: "Ouvert",
78
78
  READY: "Prêt à implémenter",
79
+ REWORK: "Reprise demandée",
79
80
  IN_PROGRESS: "En cours",
80
81
  IN_EVALUATION: "En évaluation",
81
82
  NEEDS_LIVE_TEST: "À tester en production",
@@ -111,11 +112,13 @@ export function uiKitLabelsFr(numberLocale = "fr-FR"): UiKitLabels {
111
112
  myFeedback: "Mes retours",
112
113
  viewFeedback: "Voir les retours",
113
114
  allFeedback: "Tous les retours",
115
+ discussion: "Discussion des retours",
116
+ inbox: "Retours reçus",
114
117
  },
115
118
  // 0.38.0 — docs/feedback-harmonization.md §9: the public pages and the two feedback
116
119
  // notification types. "Retour" for a report, as `feedbackMenu`.
117
120
  feedbackPublic: {
118
- title: "Tous les retours",
121
+ title: "Discussion des retours",
119
122
  sort: "Trier",
120
123
  sortNewest: "Plus récents",
121
124
  sortVotes: "Plus demandés",
@@ -147,7 +150,7 @@ export function uiKitLabelsFr(numberLocale = "fr-FR"): UiKitLabels {
147
150
  attachUrl: "Joindre l’URL de la page actuelle",
148
151
  },
149
152
  feedbackPage: {
150
- title: "Retours",
153
+ title: "Retours reçus",
151
154
  myTitle: "Mes retours",
152
155
  columnId: "#",
153
156
  columnDate: "Date",
@@ -341,6 +344,8 @@ export function uiKitLabelsFr(numberLocale = "fr-FR"): UiKitLabels {
341
344
  filter: "Filtrer",
342
345
  close: "Fermer",
343
346
  selectRow: "Sélectionner la ligne",
347
+ selectRows: "Sélectionner des lignes",
348
+ cancelSelection: "Annuler",
344
349
  rowDetails: "Détails",
345
350
  autoSize: "Ajuster la largeur des colonnes",
346
351
  loading: "Chargement…",
@@ -529,6 +534,8 @@ export function uiKitLabelsFr(numberLocale = "fr-FR"): UiKitLabels {
529
534
  tabs: {
530
535
  add: "Ajouter un onglet",
531
536
  remove: (tab) => `Supprimer ${tab}`,
537
+ more: "Autres onglets",
538
+ backToFirst: "Retour au premier onglet",
532
539
  },
533
540
  appShell: {
534
541
  collapse: "Réduire la barre latérale",
@@ -544,6 +551,7 @@ export function uiKitLabelsFr(numberLocale = "fr-FR"): UiKitLabels {
544
551
  },
545
552
  pickerSheet: {
546
553
  close: "Fermer",
554
+ done: "Terminé",
547
555
  },
548
556
  dialogFrame: {
549
557
  close: "Fermer",
@@ -76,6 +76,7 @@ export function uiKitLabelsHu(numberLocale = "hu-HU"): UiKitLabels {
76
76
  feedbackStatus: {
77
77
  OPEN: "Nyitott",
78
78
  READY: "Megvalósításra kész",
79
+ REWORK: "Átdolgozás kérve",
79
80
  IN_PROGRESS: "Folyamatban",
80
81
  IN_EVALUATION: "Értékelés alatt",
81
82
  NEEDS_LIVE_TEST: "Élesben tesztelendő",
@@ -110,11 +111,13 @@ export function uiKitLabelsHu(numberLocale = "hu-HU"): UiKitLabels {
110
111
  myFeedback: "Visszajelzéseim",
111
112
  viewFeedback: "Visszajelzések megtekintése",
112
113
  allFeedback: "Összes visszajelzés",
114
+ discussion: "Visszajelzések megvitatása",
115
+ inbox: "Beérkezett visszajelzések",
113
116
  },
114
117
  // 0.38.0 — docs/feedback-harmonization.md §9: the public pages and the two feedback
115
118
  // notification types. A noun after a number stays singular in Hungarian.
116
119
  feedbackPublic: {
117
- title: "Összes visszajelzés",
120
+ title: "Visszajelzések megvitatása",
118
121
  sort: "Rendezés",
119
122
  sortNewest: "Legújabb",
120
123
  sortVotes: "Legkeresettebb",
@@ -146,7 +149,7 @@ export function uiKitLabelsHu(numberLocale = "hu-HU"): UiKitLabels {
146
149
  attachUrl: "Az aktuális oldal URL-jének csatolása",
147
150
  },
148
151
  feedbackPage: {
149
- title: "Visszajelzések",
152
+ title: "Beérkezett visszajelzések",
150
153
  myTitle: "Visszajelzéseim",
151
154
  columnId: "#",
152
155
  columnDate: "Dátum",
@@ -333,6 +336,8 @@ export function uiKitLabelsHu(numberLocale = "hu-HU"): UiKitLabels {
333
336
  filter: "Szűrés",
334
337
  close: "Bezárás",
335
338
  selectRow: "Sor kijelölése",
339
+ selectRows: "Sorok kijelölése",
340
+ cancelSelection: "Mégse",
336
341
  rowDetails: "Részletek",
337
342
  autoSize: "Oszlopszélességek igazítása",
338
343
  loading: "Betöltés…",
@@ -519,6 +524,8 @@ export function uiKitLabelsHu(numberLocale = "hu-HU"): UiKitLabels {
519
524
  tabs: {
520
525
  add: "Lap hozzáadása",
521
526
  remove: (tab) => `${tab} eltávolítása`,
527
+ more: "További lapok",
528
+ backToFirst: "Vissza az első lapra",
522
529
  },
523
530
  appShell: {
524
531
  collapse: "Oldalsáv összecsukása",
@@ -534,6 +541,7 @@ export function uiKitLabelsHu(numberLocale = "hu-HU"): UiKitLabels {
534
541
  },
535
542
  pickerSheet: {
536
543
  close: "Bezárás",
544
+ done: "Kész",
537
545
  },
538
546
  dialogFrame: {
539
547
  close: "Bezárás",
@@ -76,6 +76,7 @@ export function uiKitLabelsIt(numberLocale = "it-IT"): UiKitLabels {
76
76
  feedbackStatus: {
77
77
  OPEN: "Aperto",
78
78
  READY: "Pronto da implementare",
79
+ REWORK: "Rielaborazione richiesta",
79
80
  IN_PROGRESS: "In corso",
80
81
  IN_EVALUATION: "In valutazione",
81
82
  NEEDS_LIVE_TEST: "Da testare in produzione",
@@ -113,11 +114,13 @@ export function uiKitLabelsIt(numberLocale = "it-IT"): UiKitLabels {
113
114
  myFeedback: "I miei feedback",
114
115
  viewFeedback: "Visualizza feedback",
115
116
  allFeedback: "Tutti i feedback",
117
+ discussion: "Discussione sui feedback",
118
+ inbox: "Feedback ricevuti",
116
119
  },
117
120
  // 0.38.0 — docs/feedback-harmonization.md §9: the public pages and the two feedback
118
121
  // notification types. "Segnalazione" for one report; formal "Lei", as elsewhere.
119
122
  feedbackPublic: {
120
- title: "Tutti i feedback",
123
+ title: "Discussione sui feedback",
121
124
  sort: "Ordina",
122
125
  sortNewest: "Più recenti",
123
126
  sortVotes: "Più richiesti",
@@ -149,7 +152,7 @@ export function uiKitLabelsIt(numberLocale = "it-IT"): UiKitLabels {
149
152
  attachUrl: "Allega l’URL della pagina corrente",
150
153
  },
151
154
  feedbackPage: {
152
- title: "Feedback",
155
+ title: "Feedback ricevuti",
153
156
  myTitle: "I miei feedback",
154
157
  columnId: "#",
155
158
  columnDate: "Data",
@@ -337,6 +340,8 @@ export function uiKitLabelsIt(numberLocale = "it-IT"): UiKitLabels {
337
340
  filter: "Filtra",
338
341
  close: "Chiudi",
339
342
  selectRow: "Seleziona riga",
343
+ selectRows: "Seleziona righe",
344
+ cancelSelection: "Annulla",
340
345
  rowDetails: "Dettagli",
341
346
  autoSize: "Adatta larghezza colonne",
342
347
  loading: "Caricamento…",
@@ -524,6 +529,8 @@ export function uiKitLabelsIt(numberLocale = "it-IT"): UiKitLabels {
524
529
  tabs: {
525
530
  add: "Aggiungi scheda",
526
531
  remove: (tab) => `Rimuovi ${tab}`,
532
+ more: "Altre schede",
533
+ backToFirst: "Torna alla prima scheda",
527
534
  },
528
535
  appShell: {
529
536
  collapse: "Comprimi barra laterale",
@@ -539,6 +546,7 @@ export function uiKitLabelsIt(numberLocale = "it-IT"): UiKitLabels {
539
546
  },
540
547
  pickerSheet: {
541
548
  close: "Chiudi",
549
+ done: "Fine",
542
550
  },
543
551
  dialogFrame: {
544
552
  close: "Chiudi",
@@ -69,6 +69,7 @@ export function uiKitLabelsZh(numberLocale = "zh-CN"): UiKitLabels {
69
69
  feedbackStatus: {
70
70
  OPEN: "待处理",
71
71
  READY: "待实现",
72
+ REWORK: "已要求返工",
72
73
  IN_PROGRESS: "处理中",
73
74
  IN_EVALUATION: "评估中",
74
75
  NEEDS_LIVE_TEST: "待线上测试",
@@ -103,11 +104,13 @@ export function uiKitLabelsZh(numberLocale = "zh-CN"): UiKitLabels {
103
104
  myFeedback: "我的反馈",
104
105
  viewFeedback: "查看反馈",
105
106
  allFeedback: "全部反馈",
107
+ discussion: "反馈讨论",
108
+ inbox: "反馈收件箱",
106
109
  },
107
110
  // 0.38.0 — docs/feedback-harmonization.md §9: the public pages and the two feedback
108
111
  // notification types.
109
112
  feedbackPublic: {
110
- title: "全部反馈",
113
+ title: "反馈讨论",
111
114
  sort: "排序",
112
115
  sortNewest: "最新",
113
116
  sortVotes: "最多人想要",
@@ -139,7 +142,7 @@ export function uiKitLabelsZh(numberLocale = "zh-CN"): UiKitLabels {
139
142
  attachUrl: "附加当前页面 URL",
140
143
  },
141
144
  feedbackPage: {
142
- title: "反馈",
145
+ title: "反馈收件箱",
143
146
  myTitle: "我的反馈",
144
147
  columnId: "#",
145
148
  columnDate: "日期",
@@ -325,6 +328,8 @@ export function uiKitLabelsZh(numberLocale = "zh-CN"): UiKitLabels {
325
328
  filter: "筛选",
326
329
  close: "关闭",
327
330
  selectRow: "选择行",
331
+ selectRows: "选择多行",
332
+ cancelSelection: "取消",
328
333
  rowDetails: "详情",
329
334
  autoSize: "自动调整列宽",
330
335
  loading: "加载中…",
@@ -507,6 +512,8 @@ export function uiKitLabelsZh(numberLocale = "zh-CN"): UiKitLabels {
507
512
  add: "添加标签页",
508
513
  // Quoted, so the spacing rule holds whether the tab's name is Han or Latin.
509
514
  remove: (tab) => `移除“${tab}”`,
515
+ more: "更多标签页",
516
+ backToFirst: "返回第一个标签页",
510
517
  },
511
518
  appShell: {
512
519
  collapse: "收起侧边栏",
@@ -522,6 +529,7 @@ export function uiKitLabelsZh(numberLocale = "zh-CN"): UiKitLabels {
522
529
  },
523
530
  pickerSheet: {
524
531
  close: "关闭",
532
+ done: "完成",
525
533
  },
526
534
  dialogFrame: {
527
535
  close: "关闭",
@@ -108,7 +108,7 @@ export const DEFAULT_TOP_BAR_LABELS: TopBarLabels = {
108
108
  role: (value) => `Role: ${value}`,
109
109
  };
110
110
 
111
- export const DEFAULT_PICKER_SHEET_LABELS: PickerSheetLabels = { close: "Close" };
111
+ export const DEFAULT_PICKER_SHEET_LABELS: PickerSheetLabels = { close: "Close", done: "Done" };
112
112
 
113
113
  export const DEFAULT_SWIPEABLE_ROW_LABELS: SwipeableRowLabels = { actions: "Row actions" };
114
114
 
@@ -537,6 +537,15 @@ export function AppShell({
537
537
  <main
538
538
  className={cn(
539
539
  "relative flex-1 max-w-full overflow-x-clip pb-[calc(var(--app-nav-h,4rem)+1.5rem)] md:pb-0 md:min-h-0 md:overflow-y-auto md:[scrollbar-gutter:stable_both-edges]",
540
+ // The list page's fill (0.40, docs/page-layout-harmonization.md §1.3): while
541
+ // a `fillHeight` DataTable is inside, a flex column — a banner above the
542
+ // page keeps its own height and the page (a `FillHeight`) takes the rest,
543
+ // so `<main>` no longer overflows by the banner. Its children do not shrink
544
+ // (a banner of a fixed height or `overflow-hidden` would): the page grows
545
+ // into the rest from a zero basis, and a window too short for the page's
546
+ // floor scrolls `<main>`. Every other page lays out as before. Below `md`
547
+ // the document scrolls and nothing fills.
548
+ "md:has-[[data-fill-height]]:flex md:has-[[data-fill-height]]:flex-col md:has-[[data-fill-height]]:*:shrink-0",
540
549
  // Embedded there is no document scroll to lean on below `md` either.
541
550
  embedded && "min-h-0 overflow-y-auto",
542
551
  )}
@@ -0,0 +1,45 @@
1
+ import type { ComponentPropsWithRef } from "react";
2
+ import { cn } from "../lib/cn";
3
+
4
+ /**
5
+ * The list page's fill, for an element between AppShell's `<main>` and a `fillHeight`
6
+ * DataTable (0.40, docs/page-layout-harmonization.md §1.3): from `md` up, a flex column
7
+ * that takes the rest of its parent — only while such a table is inside
8
+ * (`has-[[data-fill-height]]`, the marker the table sets). Below `md`, and around
9
+ * anything else, nothing: so a shell column may carry it for every route.
10
+ *
11
+ * No `min-h-0`, on purpose: a flex item's automatic minimum is its content's, and that
12
+ * content counts the table's body at its 12rem floor, not at its rows. On a window too
13
+ * short for the page's header and the floor, the page keeps that height and `<main>`
14
+ * scrolls — with the page's own padding, which a `min-h-0` would push out of view.
15
+ *
16
+ * For a wrapper that is another component, or that merges other classes; otherwise
17
+ * use {@link FillHeight}.
18
+ */
19
+ export const FILL_HEIGHT_CLASS =
20
+ "md:has-[[data-fill-height]]:flex md:has-[[data-fill-height]]:flex-1 md:has-[[data-fill-height]]:flex-col";
21
+
22
+ /** A plain `div`'s props: `className` is merged after {@link FILL_HEIGHT_CLASS}, and
23
+ * `ref` reaches the `div`. */
24
+ export type FillHeightProps = ComponentPropsWithRef<"div">;
25
+
26
+ /**
27
+ * A wrapper between AppShell's `<main>` and a `fillHeight` DataTable: from `md`, a flex
28
+ * column that takes the rest of its parent — only while such a table is inside. Below
29
+ * `md`, and around anything else, a plain `div`.
30
+ *
31
+ * Every element on the way is one: the page's root, and any wrapper between it and the
32
+ * table (an `id` holder, a desktop-only wrapper — that one merges
33
+ * {@link FILL_HEIGHT_CLASS} with its own classes). The page's header above the table
34
+ * keeps its height; only the table's body scrolls.
35
+ *
36
+ * ```tsx
37
+ * <FillHeight className="py-4 md:p-6">
38
+ * <PageHeader title="Payees" />
39
+ * <DataTable fillHeight rows={rows} columns={columns} rowKey={(r) => r.id} />
40
+ * </FillHeight>
41
+ * ```
42
+ */
43
+ export function FillHeight({ className, ...props }: FillHeightProps) {
44
+ return <div {...props} className={cn(FILL_HEIGHT_CLASS, className)} />;
45
+ }
package/src/shell.ts CHANGED
@@ -10,6 +10,9 @@ export * from "./shell/role-switcher";
10
10
  export * from "./shell/topbar-action-menu";
11
11
  export * from "./shell/top-bar-brand";
12
12
  export * from "./shell/auth-layout";
13
+ // 0.40.0: the list page's fill (docs/page-layout-harmonization.md §1.3).
14
+ export { FillHeight, FILL_HEIGHT_CLASS } from "./shell/fill-height";
15
+ export type { FillHeightProps } from "./shell/fill-height";
13
16
  // 0.31.0: the settings and admin pages' shell (docs/settings-harmonization.md §3, §5).
14
17
  export { SettingsLayout, SETTINGS_SEARCH_THRESHOLD } from "./settings/settings-layout";
15
18
  export type { SettingsLayoutProps, SettingsLayoutWidth, SettingsDocumentTitleParts } from "./settings/settings-layout";